首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Rstudio中合并rmarkdown生成的latex文档,而不必手动删除序言

在Rstudio中合并rmarkdown生成的latex文档,而不必手动删除序言
EN

Stack Overflow用户
提问于 2015-07-31 11:01:03
回答 2查看 2K关注 0票数 2

问题是:

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

不太理想的解决办法:

我一直在努力解决这个问题,在将编织的输出包含到master.tex文件之前,用手删除这个序言。

到目前为止,我的工作流程如下:

  • 在YAML标题中将输出设置为pdf_document,keep_tex选项设置为true。
  • 使用Rstudio按钮的knitPDF
  • 手工删除针织TeX文件开头的序言。
  • 使用\ include {}将这些文件包括到我的master.tex文件中

问题是:

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

瑞典不是一种选择:

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-01 04:53:27

下面是使用LaTeX包docmute的更简单的解决方案。

您的主Rmarkdown文档(例如main.Rmd)应该加载docmute包,并包含您的其他文件(例如part1.Rmdpart.Rmd),一旦编织并位于同一个目录中,\input\include如下所示:

代码语言:javascript
运行
复制
---
title: "Main"
output: pdf_document 
header-includes:
- \usepackage{docmute}
---
# Part 1
\input{part1.tex}
# Part 2
\input{part1.tex}

然后,您的其他文件只需要在YAML前端有一个keep_tex参数。如下所示:

代码语言:javascript
运行
复制
---
title: "Part 1"
output: 
  pdf_document:
    keep_tex: true
---

Something

这是:

代码语言:javascript
运行
复制
---
title: "Part 2"
output: 
  pdf_document:
    keep_tex: true
---

Something else

然后,您所需要做的就是在part*.Rmd之前编织main.Rmd,所有内容都将出现在main.texmain.pdf中。docmute包从输入.tex文件中删除前导,因此您需要确保输入文件中\begin{docunent}之前所需的内容也在main.Rmd中。

票数 3
EN

Stack Overflow用户

发布于 2015-08-01 03:10:25

从那以后,我想出了一个解决办法:

代码语言:javascript
运行
复制
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

秘密成分就在潘多克的电话里..。当使用Rstudio编织时,Rstudio在编译pdf时必须调用pandoc独立的-s标志。这将生成一个“独立”文档,即包含latex序言的文档。这显然是必要的,当你想要查看PDF,但与我的需要冲突。

相反,我正在寻找一个乳胶‘片段’从Rmd与针织品,可以在以后合并到我的主乳胶文件。因此,解决方案只是创建一个pandoc命令行调用,它省略了-s独立标志。我通过在上面的函数中使用system()从R调用pandoc实现了这一点。

希望这能帮助那些有这个问题的人,但如果我能够改变Rstudio的设置以避免被黑客攻击,那就太好了。欢迎提出建议和反馈意见。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31744576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档