【问题标题】:Stop knitr preamble in looped child .Rnw documents停止循环子 .Rnw 文档中的 knitr 序言
【发布时间】:2013-12-13 13:52:49
【问题描述】:

我正在循环一个子 .Rnw 文件,这样我就可以用不同的物种重复情节。不幸的是,knitr 的序言(我认为)在每个循环的开头都会重复,因此 .pdf 将无法编译。如果我手动删除.tex 文件中重复的序言,一切都很好。我有一种感觉,我错过了父母和孩子之间的一些联系,但找不到确切的位置。我正在使用 R-studio 和下面列出的文件。

main.Rnw:

\documentclass{article}
\begin{document}

<<>>=
some R stuff
@

<<runall, include =FALSE>>=
out<-c()
for(species in c('RH', "GU", "RA", "KI")){
out<- c(out, knit_child('spsummary.Rnw')
}
@

\Sexpr{paste(out, collapse='n')}
\end{document}

子文档 (spsummary.Rnw) 在每个物种上循环:

<<>>=
set_parent("main.Rnw")
@

<<>>=
more R stuff
@

\begin{table}
...
\end{table}

\clearpage
\newpage

【问题讨论】:

  • 这对我来说很好。

标签: r loops parent-child knitr sweave


【解决方案1】:

您可以从子文档中删除set_parent,因为您不想单独编译子文档。请参阅help 中的这句话:

子文档通常不完整——缺少的部分是 LaTeX 序言以及\begin{document}\end{document}。有时我们 可能想要编译这样的子文档,就好像它们是完整的一样 乳胶文件。我们唯一需要做的就是提取一个 来自父文档的适当序言并将其添加到该子文档 文档。函数set_parent() 启用此功能; [...] 然后 子文档的行为就像它有一个序言一样

【讨论】:

  • 感谢您的建议罗洛。我已尝试删除此声明,但我仍然在 .tex 文件中为每个物种(每个重复的孩子)获得序言。重复的序言是 knitr 的所有文本颜色和错误颜色(不是我指定的任何内容)。
【解决方案2】:

我终于回答了我自己的问题。

这是缺少反斜杠的简单案例。

父文档(主)的最后一行应为:

\Sexpr{paste(out, collapse='\n')}

在'n'之前有一个反斜杠

【讨论】:

    猜你喜欢
    • 2014-01-29
    • 1970-01-01
    • 2017-01-08
    • 2011-12-15
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多