12

我想\Sexpr{}在 \begin{document} 命令之后但 \maketitle 命令之前,在 LaTeX 文档的标题中使用 Knitr/Sweave 内联调用 ( )。内联 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 调用之前的代码(除了初始化之外),因此包含标题的内联代码段看起来像 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

4

1 回答 1

6

唔。以下文件对我有用:

\documentclass{article}
<<echo=FALSE>>=
x <- 5
@ 
\title{The number is \Sexpr{x^2}}
\begin{document}
\maketitle

Some stuff
\end{document}

在 Ubuntu 10.04 上使用 knitr 版本 0.8,通过knit2pdf("knitr_title.Rnw")... 在此处输入图像描述

于 2012-10-05T13:08:56.097 回答