我在 R 中有以下文本:
Here is a Multinomial Logistic Regression:
$$
P(Y=k|X_1, X_2, ..., X_p) = \frac{e^{(\beta_{k0} + \beta_{k1}X_1 + \beta_{k2}X_2 + ... + \beta_{kp}X_p)}}{1 + \sum_{j=1}^{K-1} e^{(\beta_{j0} + \beta_{j1}X_1 + \beta_{j2}X_2 + ... + \beta_{jp}X_p)}}
$$
for $k = 1, 2, ..., K-1$, and
$$
P(Y=K|X_1, X_2, ..., X_p) = \frac{1}{1 + \sum_{j=1}^{K-1} e^{(\beta_{j0} + \beta_{j1}X_1 + \beta_{j2}X_2 + ... + \beta_{jp}X_p)}}
$$
Where :
$$
\beta =
\begin{bmatrix}
\beta_{10} & \beta_{11} & \beta_{12} & \ldots & \beta_{1p} \\
\beta_{20} & \beta_{21} & \beta_{22} & \ldots & \beta_{2p} \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
\beta_{(K-1)0} & \beta_{(K-1)1} & \beta_{(K-1)2} & \ldots & \beta_{(K-1)p}
\end{bmatrix}
$$
有什么方法可以将这种混合的英语/乳胶文本直接转换为 R 中的 PDF 文档吗?
我已经看到一些库/包可以完成部分工作 - 但是有一些直接的方法可以做到这一点吗?
例如
# imaginary function that converts text to pdf (while preserving spaces/indents):
latex_to_pdf_function(output = myfile.pdf, text = "Here is a Multinomial Logistic Regression:
$$
P(Y=k|X_1, X_2, ..., X_p) = \frac{e^{(\beta_{k0} + \beta_{k1}X_1 + \beta_{k2}X_2 + ... + \beta_{kp}X_p)}}{1 + \sum_{j=1}^{K-1} e^{(\beta_{j0} + \beta_{j1}X_1 + \beta_{j2}X_2 + ... + \beta_{jp}X_p)}}
$$ ..... ")
这不是超级简单,但这是可能的。首先,您可以编写一个处理相关输入的函数。你必须有一个序言和一个文档结尾 - 据我所知,你不能只渲染独立于上下文的乳胶文本。该函数可能如下所示 - 它使用可以更改的默认前导码和结束语:
latex_to_pdf_function <- function(
output = "myfile.pdf",
text = NULL,
preamble = NULL,
closing = NULL,
...){
if(is.null(preamble)){
pre <- "\\documentclass{article}\n\\usepackage{amsmath}\n\\usepackage{amssymb}\n\\begin{document}\n"
}
if(is.null(closing)){
closing <- "\\end{document}"
}
flnm <- gsub("\\.pdf?", "", output)
tf <- tempfile(flnm, fileext=".tex")
cat(pre, text, closing, sep="\n", file=tf)
tinytex::pdflatex(tf, pdf_file = output)
}
接下来,您必须定义输入文本。在这种情况下,我们需要使用
r"(...)"
结构来读入和管理原始字符串。这会将文本中的所有 \
转换为 \\
,以确保完成适当的转义。例如:
txt <- r"(
Here is a Multinomial Logistic Regression:
$$
P(Y=k|X_1, X_2, ..., X_p) = \\frac{e^{(\beta_{k0} + \beta_{k1}X_1 + \beta_{k2}X_2 + ... + \beta_{kp}X_p)}}{1 + \sum_{j=1}^{K-1} e^{(\beta_{j0} + \beta_{j1}X_1 + \beta_{j2}X_2 + ... + \beta_{jp}X_p)}}
$$
for $k = 1, 2, ..., K-1$, and
$$
P(Y=K|X_1, X_2, ..., X_p) = \frac{1}{1 + \sum_{j=1}^{K-1} e^{(\beta_{j0} + \beta_{j1}X_1 + \beta_{j2}X_2 + ... + \beta_{jp}X_p)}}
$$
Where :
$$
\beta =
\begin{bmatrix}
\beta_{10} & \beta_{11} & \beta_{12} & \ldots & \beta_{1p} \\
\beta_{20} & \beta_{21} & \beta_{22} & \ldots & \beta_{2p} \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
\beta_{(K-1)0} & \beta_{(K-1)1} & \beta_{(K-1)2} & \ldots & \beta_{(K-1)p}
\end{bmatrix}
$$)"
最后,我们可以使用该函数生成pdf:
latex_to_pdf_function(text = txt)
对我来说,这使得 R 的工作目录中的
myfile.pdf
包含以下内容: