Остановить преамбулу knitr в зацикленных дочерних документах.
Я зацикливаю ребенка .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
2 ответа
Я наконец-то ответил на свой вопрос.
Это простой случай отсутствия обратной косой черты.
последняя, но одна строка родительского документа (основного) должна выглядеть так:
\Sexpr{paste(out, collapse='\n')}
с обратной косой чертой перед 'n'
Вы можете удалить set_parent
из документа вашего ребенка, потому что вы не хотите компилировать ребенка самостоятельно. Смотрите эту цитату из справки:
Дочерние документы часто являются неполными - отсутствующей частью является преамбула LaTeX, а также
\begin{document}
а также\end{document}
, Иногда мы можем захотеть скомпилировать такие дочерние документы, как если бы они были полными документами LaTeX. Единственное, что нам нужно сделать, - это извлечь соответствующую преамбулу из родительского документа и добавить ее в этот дочерний документ. Функцияset_parent()
включает эту функцию; [...] Тогда дочерний документ будет вести себя так, как если бы он имел преамбулу