如何在 Sweave (R) 代码注释中呈现 LaTeX (数学)

如何在 Sweave (R) 代码注释中呈现 LaTeX (数学)

背景

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选项隐藏,而是您在这里使用catpaste 在 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 输出)。

相关内容