背景
A 昨天在 SO 上问了这个问题,因为它似乎更面向编程,但没有任何回复。也许这里有人知道?
我正在编写 Sweave 文档(LaTeX 和 R),我想在一些 R 注释中使用 LaTeX。本质上,我想这样做:
\documentclass{article}
\begin{document}
Some introduction
<<example>>=
## We will find all $k$ combinations:
## $k = C^n_N = \frac{N!}{(N - n)! \cdot n!}$
k <- factorial(N) / (factorial(N - n) * factorial(n))
@
Some other information.
\end{document}
并且具有$k$
和$k = C^n_N = \frac{N!}{(N - n)! \cdot n!}$
格式化,就像它们不在 R 代码块中一样。
minted
和包listings
都支持代码注释中的 LaTeX,但我不确定如何将其与 Sweave/knitr 结合使用。以下是包中的一个例子minted
,第 7 页:
问题
有没有办法将格式化的 LaTeX(数学)放入 Sweave 代码块的注释中?
答案1
不是注释,我建议用echo=F
选项隐藏,而是您在这里使用cat
或paste
在 LaTeX 文档中的 R 块内插入 LaTeX 块,以模拟在 LaTeX 中打印 R 注释,以及包含在标题中等。xtable
为此,您需要该选项results=tex
,并考虑到您需要将所有内容转换\
为\\
LaTeX 文本。
\documentclass{article}
\setlength{\parskip}{\bigskipamount}
\setlength{\parindent}{0pt}
\begin{document}
\SweaveOpts{concordance=TRUE}
Some introduction
{\sffamily
<<example,echo=F,results=tex>>=
cat("\\bigskip We will find all $k$ combinations:")
cat("\\[k = C^n_N = \\frac{N!}{(N - n)! \\cdot n!}\\]")
7 -> N
4 -> n
k <- factorial(N) / (factorial(N - n) * factorial(n))
cat("\\[k \\leftarrow factorial(N) / (factorial(N - n) * factorial(n))\\]")
cat("For $N=7$ and $n=4$ is:\\par")
k
@
}
Some other information.
\end{document}
话虽如此,总的来说,除了图表标签和/或一些单元格表之外,我发现这样做的好处不多。对于注释来说,在每个 R 块之前/之后使用纯 LaTeX 要容易得多,在需要时拆分 R 代码,或者充分利用\Sexpr{}
将 LaTeX 文本与上述块中先前计算的值混合在一起(例如,制作自动报告而不显示可怕的 R 输出)。