【发布时间】:2012-09-26 15:14:56
【问题描述】:
我想在 \begin{document} 命令之后但 \maketitle 命令之前在 LaTeX 文档的标题中使用 Knitr/Sweave 内联调用 (\Sexpr{})。内嵌 R 代码将从我嵌入 LaTeX 的 R 脚本早期创建的 R 数据框中提取一两条信息。
我有几个 Knitr 块,它们创建了一个 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)
我还尝试在 \begin{document} 语句之前将 Knitr 块放在 LaTeX 代码的序言中。
但在 Knitr 中似乎忽略了放置在 LaTeX 中的 \maketitle 调用之前的代码(初始化除外),因此内联 sn-ps 包含的标题看起来像 Latex 的错误,它会停止输出。
我在 Knitr 文档中找不到任何关于在 LaTeX 文档的标题中包含内联代码的信息。
有什么想法吗?
好的:感谢下面@ben-bolker 的提示,找到了解决方案。 Ben 在输出到 RNW 文件之前使用 R 块的格式(在两步 Knitr 过程中:latex -> rnw -> pdf)。但是我一步将 LaTeX 文件编译为 PDF,而无需从 TeXShop 内部(在 Mac OSX 上)转到 RNW 文件。我发现我可以使用 RNW 分隔符 (>=) 和一步编译来让 Ben 的示例工作。但我不能混合使用通常的 LaTeX 块分隔符(%%begin.rcode 和 %% end.rcode)和 RNW 内联语句挂钩(\Sexpr{})。无论我如何摆弄,后者都不起作用。最终我发现 LaTeX 的正确内联钩子是 \\rinline{}。
在 Knitr 文档中并不清楚这是 LaTeX 所需的格式,我最终发现它主要归功于 Ben 的示例。最好的,彼得
更新 2 ...然后是 RTFM(或本例中的“备忘单”):http://cran.r-project.org/web/packages/knitr/vignettes/knitr-refcard.pdf
【问题讨论】:
-
\Sexpr{}可以在文档中的任何位置使用。如果它不起作用,一个最小的可重现示例在这里会有很大帮助。 -
最好将您找到的解决方案写成答案并保持问题不变。
-
您知道您可以在自己的答案中写出解决方案吗?