问题:
我有几个 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/