将 knitr tex 文件嵌入到更大的 latex 文件中

将 knitr tex 文件嵌入到更大的 latex 文件中

关于如何在新的 knitr 文档中使用 Knitr 的 latex 输出、使用 Rstudio 和包含或输入并将一些块声明为子块,已经存在一些问题。

但是,如果我想使用外部 LaTeX 程序(例如 TeXStudio)中的简单 knitr 输出(例如 R xtable)来构建更大的项目,该怎么办?

例如,我可以创建一个 mytable.rnw 文件并生成这个简单的表

\documentclass{article}
\begin{document}

<<r table2, results='asis', message=T, echo=F>>=

library(xtable) 
print(
  xtable(
    head(iris),
    caption = 'Iris data'
  ),
  comment = FALSE,
  type = 'latex'
)

@

\end{document}

在此处输入图片描述

现在我想获取生成的 mytable.tex 文件并在同一文件夹中的 TexStudio 中更大的文档中使用它。

\documentclass{article}
\begin{document}
 First table:
 \include{mytable}
 Second table:
 \include{mytable}
\end{document}

(也许使用输入更好)
当我尝试编译它时,我收到许多错误:

Can be used only in preamble. \documentclass
Can be used only in preamble. \documentclass{article}\usepackage
Can be used only in preamble. ...ss{article}\usepackage[]{graphicx}\usepackage
Undefined control sequence. \definecolor
Can be used only in preamble. \usepackage
Undefined control sequence. \definecolor
Undefined control sequence. \definecolor
Undefined control sequence. \definecolor
Undefined control sequence. \definecolor
Can be used only in preamble. \usepackage
Can be used only in preamble. ...eExists{upquote.sty}{\usepackage{upquote}}{}
Can be used only in preamble. \begin{document}

我猜测问题出现的原因是 knitr 输出包含大量无法包含在文档主体内的前导信息,不仅包括 usepackage 指令,还包括大量有关颜色、表格等的微调信息...

正确的做法是什么?如何强制 Rstudio 的 knitr 仅输出正确的信息?
或者如何强制我的主要 latex 文档(来自 TexStudio)纠正问题?

如果我们必须多次执行此操作,是否有任何简单的方法可以将该前导码包含在主 tex 文档中,而无需逐一手动操作。
或者更糟糕的是,一些生成的输出可能包含不兼容的前导码。

答案1

另一种方法是使用“部分编译”。

  1. 创建myTable.Rnw没有序言的,只有 r-chunk
  2. 不要在 R-Studio 中进行编译(使用编译按钮),而是转到控制台(包含文件所在的工作目录)并输入

    图书馆(针织)

    编织(“myTable.Rnw”)

myTable.tex这将创建一个没有前言信息的文件,并且不会pdflatex在该.tex文件上运行或类似操作。

  1. 使用嵌入myTable.tex到主文档中\input{myTable.tex}

答案2

最简单的方法是将您的主文档也变成一个.Rnw文件,该文件首先只包含 LaTeX。

在主.Rnw文档中你可以做类似的事情

<<child="myTable.Rnw">>=
@

其中myTable.Rnw可以是任何.Rnw不包含标题信息的文件,例如没有documentclassbegin{document}/的示例文档\end{document}

当然,您也可以将 r-chunk 包含到myTable.Rnw主文档中(以及其他 r-chunk)。

相关内容