【问题标题】:Can I use a knitr inline expression in the title of a latex document?我可以在乳胶文档的标题中使用 knitr 内联表达式吗?
【发布时间】: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{} 可以在文档中的任何位置使用。如果它不起作用,一个最小的可重现示例在这里会有很大帮助。
  • 最好将您找到的解决方案写成答案并保持问题不变。
  • 您知道您可以在自己的答案中写出解决方案吗?

标签: r latex knitr


【解决方案1】:

嗯。以下文件适用于我:

\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") ...

【讨论】:

  • 谢谢,@ben-bolker。我已经为自己解决了这个问题,但主要是因为你的解决方案给了我一个提示。见上文。
猜你喜欢
  • 1970-01-01
  • 2014-12-03
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
相关资源
最近更新 更多