我想使用 Knit/Sweave 内联调用(\Sexpr{}
) 在 LaTeX 文档的标题中,在 \begin{document} 命令之后但在 \maketitle 命令之前。内联 R 代码将从我嵌入 LaTeX 的 R 脚本早期创建的 R 数据帧中提取一两条信息。
我有几个 Knit 块,它们创建一个 data.frame,从中导出我想要放入标题中的信息。我尝试将这些块放在 LaTeX 的 \begin{document} 调用和 \title 代码之间,如下所示:
\documentclass
[LaTex Preamble]
\begin{document}
[%% Knitr chunks that initialize an R data-frame]
\title \Sexpr{--a snippet of R code that extracts an element from the data-frame --}
\maketitle
... (rest of the LaTeX document)
我还尝试将 Knit 块放入 LaTeX 代码的序言中,然后放在 \begin{document} 语句之前。
但在 Knit 中,似乎忽略了 LaTeX 中 \maketitle 调用之前放置的代码(初始化除外),因此内嵌代码片段包含的标题看起来像是 Latex 中的错误,并且它会停止输出。
我在 Knit 文档中找不到有关在 LaTeX 文档标题中包含内联代码的任何信息。
有任何想法吗?
好的:根据下面@ben-bolker 的提示找到了解决方案。 Ben 在输出到 RNW 文件之前使用 R 块的格式(在 2 步 Knit 过程中:latex -> rnw -> pdf)。但我一步将 LaTeX 文件编译为 PDF,而无需从 TeXShop(在 Mac OSX 上)内部转到 RNW 文件。我发现我可以使用 RNW 分隔符 (>=) 和一步编译让 Ben 的示例正常工作。但我无法混合使用通常的 LaTeX 块分隔符(%%begin.rcode 和 %% end.rcode)和 RNW 内联语句挂钩(\Sexpr{})。无论我如何摆弄,后者都不起作用。最终我发现 LaTeX 的正确内联钩子是\\林线{}.
Knit 文档中并不清楚这是 LaTeX 所需的格式,我最终找到它主要归功于 Ben 的示例。最好的,彼得
Update 2...然后是 RTFM(或本例中的“备忘单”):http://cran.r-project.org/web/packages/knitr/vignettes/knitr-refcard.pdf http://cran.r-project.org/web/packages/knitr/vignettes/knitr-refcard.pdf