将LaTeX与R markdown和pandoc结合使用

3
我创建了一个R Markdown (RStudio)文档,希望将其输出为PDF,并与我的LaTeX文档的某些部分(例如第一页)合并。基本上,我想用R Markdown做一些事情(生成一些R输出),在LaTeX中写下一些内容,然后将这两个内容合并成一个PDF文档。
步骤如下: 1. 在R Markdown中生成所需的R输出。 2. 将LaTeX文档的第一页保存为单独的PDF文件。 3. 在R Markdown文档中使用LaTeX代码插入第二步中保存的PDF文件。 4. 使用R Markdown将两个文件合并到一个PDF文件中。
谢谢。

2
将Rmd生成TeX文件(pandoc -o stuff.tex stuff.rmd),并在LaTeX文档中使用\include{}命令引入它? - Ben Bolker
@Ben:这可能是一个选项,但我仍然想知道Rmd+tex=pdf是否可行。 - Maximilian
好的,您是否希望生成两个PDF文档并将它们合并? - Ben Bolker
2
你尝试过直接在.Rmd文件中编写LaTeX代码吗?通常pandoc会识别LaTeX代码,并在转换为PDF时使用它。我经常在我的.md/.Rmd文件中使用基本的LaTeX,包括换行、特殊符号、表格等等。 - Maxim.K
1
你可以使用pdfpages在latex中合并pdf。 - Thomas
显示剩余3条评论
1个回答

1
为了演示如何使用pdfpages package插入pdf页面,我首先使用pdf()命令创建一个包含四个页面的pdf文件。
.Rnw(Knitr)脚本如下:
\documentclass[a4paper]{article}
\usepackage[final]{pdfpages}
\usepackage[pagestyles]{titlesec}
\usepackage{hyperref}
\title{An example on how to add external pdf pages}
\begin{document}
\maketitle
\tableofcontents
\section{First section}
\subsection{First subsection}
This is an empty section with a chunk to create one pdf with four pages

<<mtcarsplot, echo = TRUE, eval = TRUE,  fig.show='hide'>>=
library(knitr) 
pdf(file="figure/mtcarsplot.pdf",onefile=TRUE)
ggplot(mpg, aes(drv, model)) +
      geom_point() +
      facet_grid(manufacturer ~ ., scales = "free", space = "free") +
      theme(strip.text.y = element_text(angle = 0))
ggplot(mtcars, aes(wt, mpg))+ geom_point(aes(colour=factor(cyl), size = qsec))
ggplot(mpg, aes(x=factor(cyl), y=hwy, fill=factor(cyl)))+ geom_violin(scale = "width")
mosaicplot(Titanic, color = TRUE)
dev.off()
@

\phantomsection
\addcontentsline{toc}{subsection}{Second subsection (phantom)}
\includepdf[pages={1-2,{},4},nup=2x2]{figure/mtcarsplot.pdf}

\end{document}

要插入外部文档的页面,请使用以下 HTML 代码:

\includepdf[<key=val>]{<filename>}

最简单的方法是使用\includepdf[pages=-],它将包含文档中的所有页面。
包含页面的代码为:
 \includepdf[pages={1-2,{},4}],nup=2x2]{figure/mtcarsplot.pdf}

{1-2,{},4}的意思是我包括了第1到2页,空白页,然后是第4页。

另一个命令是nup=2x2,在同一页中以两行两列的方式包含了四个页面。

通常将外部pdf包含为所创建文档的章节子章节非常有用,这可以通过以下方式完成:

\phantomsection
\addcontentsline{toc}{subsection}{Second subsection (phantom)}

输出显示四个页面在一页中,其中一个页面为空白,并带有包含虚拟章节的目录。

pdfpage_example


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接