latex - 在 Rstudio 中合并 rmarkdown 生成的 latex 文档,而无需手动删除序言

标签 latex rstudio knitr r-markdown pandoc

问题:

我有几个 Rmarkdown 文档代表我论文的不同部分(例如第 1 章结果,第 2 章结果),我想将这些文档的编织 latex 版本与其他 TeX 文件组合成一个主 TeX“论文”文档.问题是,当编织成 PDF 并将 TeX 文件包含在主 TeX 文档中时,Rstudio 会自动生成一堆序言,最终与我在 master.TeX 文档中的序言发生冲突。

不太理想的解决方法:

在将编织输出包含到 master.tex 文件之前,我一直在通过手动删除此序言来解决这个问题。

目前我的工作流程如下:

  • 在 YAML header 中将输出设置为 pdf_document,并将 keep_tex 选项设置为 true。
  • knitPDF 使用 Rstudio 按钮
  • 手动删除编织 TeX 文件开头的序言。
  • 使用\include 将文件包含到我的 master.tex 文件中{}

问题:

我想将 Rmd 转换为 LaTeX,而不必在将编织的 TeX 文件包含到主 TeX 文件之前手动删除序言。我该怎么做?

Sweave 不是一个选项:

我确信我可以通过使用 Sweave 来实现这一点,但是我喜欢 Rmarkdown 提供的输出格式的灵 active :我可以编织成 html 并在我编写时在浏览器中查看,以快速查看进度我的工作并确保没有错误,我也可以选择编织到word来与我只在word中工作的主管分享。然后,当我准备好将所有内容编译到我的主 LaTeX 文档中进行打印时,我可以在 Rstudio 中选择 knit to PDF 以获得 latex 输出。

最佳答案

后来我想出了一个解决方法:

create_latex <- function(f){
  knitr::knit(f, 'tmp-outputfile.md');
  newname <- paste0(tools::file_path_sans_ext(f), ".tex")
  mess <- paste('pandoc -f markdown -t latex -p -o', shQuote(newname),"tmp-outputfile.md")
  system(mess)}

上面的函数以Rmd文件作为输入,将文件编织成md,然后通过调用pandoc将其转换成TeX从命令行。

secret 成分在于 pandoc 调用......当使用 Rstudio 编织时,Rstudio 在编译 pdf 时必须调用 pandoc standalone -s 标志。这会生成一个“独立”文档,即包含 latex 序言的文档。当你想查看PDF时,这显然是必要的,但与我的需求冲突。

我正在寻求使用 knitr 从 Rmd 生成 latex “片段”,稍后可以将其合并到我的 latex 主文件中。所以解决方案只是创建一个省略 -s 独立标志的 pandoc 命令行调用。我通过在上述函数中使用 system() 从 R 调用 pandoc 来实现这一点。

希望这可以帮助遇到此问题的任何人,但如果我能够更改 Rstudio 的设置以避免打扰这个 hack,那就太好了。欢迎提出建议和反馈。

关于latex - 在 Rstudio 中合并 rmarkdown 生成的 latex 文档,而无需手动删除序言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31744576/

相关文章:

python - Plotly 无法在 Python 中的 Latex 标签中显示文本

r - 垂直对齐 kable 的列名

python - 如何使用epydoc生成pdf?

css - 如何使代码块输出在 quarto Revealjs 演示文稿中水平滚动

html - knitr/rmarkdown - 减少 html 文件大小

r - 为什么 which 和 Sys.which 返回不同的路径?

r - 在针织机中,没有用于平移for循环的输出

r - 从 R 源文件中提取注释,保留它们出现的函数

Latex:删除 parbox 之间的空间

html - "Page description language"和 "markup language"