我想在\ begin {document}命令之后但在\ maketitle命令之前使用LaTeX文档标题中的Knitr / Sweave内联调用(\Sexpr{}
)。内联R代码将从我在LaTeX中嵌入的R脚本中创建的R数据帧中提取一条或两条信息。
我有几个Knitr块创建了一个data.frame,我从中获取了我想要放入Title的信息。我尝试在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块的格式(在2步Knitr过程中:latex - > rnw - > pdf)。但我正在一步编译LaTeX文件,而不是从TeXShop内部(在Mac OSX上)转到RNW文件。我发现我可以让Ben的例子使用RNW分隔符(<>> =)和一步编译。但我无法混合通常的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
答案 0 :(得分:5)
嗯。以下文件适用于我:
\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")
...