使用 knitr、beamer 和 /foreach 从 R 字符串变量生成 pdf 中唯一的章节标题

使用 knitr、beamer 和 /foreach 从 R 字符串变量生成 pdf 中唯一的章节标题

使用 R、knitr 和 beamer,我创建了一个 pdf,其中包含我们地区每所学校的图表。我使用 /foreach 循环中的 \includegraphics 命令读取每个图表。我想使用 R 变量“学校”为每所学校创建一个唯一的部分名称。我希望此部分名称出现在左侧目录中。相关代码如下。谢谢。

\foreach \i in {1,...,\Sexpr{length(school)}} {%
\section{\Sexpr{school[i]}}    %%% Here is where it is breaking down
\begin{frame}
    \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{plot_\i.pdf}
\end{frame}%
  }

答案1

您使用变量\i,它是 TeX 变量。问题是,R 对此一无所知。由于 R 在 TeX 之前运行,因此您的循环永远不会到达 R。

相反,您可以在 R 中创建循环。R 代码应该生成 TeX 代码。您需要在模式中输出结果asis,并抑制代码本身。

这对我有用:

<<echo=FALSE,results='asis'>>=
for (i in 1:length(school)) {  
  cat(paste("\\section{",school[i],"}\n",sep=""))
  cat("\\begin{frame}\n")
  cat(paste("\\includegraphics[width=\\textwidth,",
            "height=\\textheight,keepaspectratio]{plot_",
            i, ".pdf}\n", sep=""))
  cat("\\end{frame}\n")
}
@ 

每个都cat形成一个 TeX 行,包含在 TeX 文件中;块选项使代码对 TeX 不可见,并且结果按“原样”发送

相关内容