在Rmarkdown文档中更改页面大小

时间:2016-04-28 10:20:28

标签: r knitr r-markdown

我有一个非常大的系统发育树,我非常想插入到我正在使用Rmarkdown和knitr编写的补充材料中。我不喜欢在页面上分割树木,我怀疑有人会打印出来,所以我想我只是在我生成的pdf中间有一个大页面。

问题是如何在A4文档中更改一页的页面大小?我是针对knitr的新手,我发现了全局纸张尺寸选项,但我很难找到设置Word中相应部分的方法。

(更新)嗨其他人有什么建议吗?我尝试了pdfpages包,但这似乎导致页面上同样小的数字,正在粘贴的pdf的大小,即如果我用20英寸的pdf数字然后将页面粘贴到使用\ includepdf然后我得到一个在20英寸20英寸的页面上有一个小得多的数字(与上面的\ eject示例相同)。看起来knitr或Latex强制图形具有特定的大小,而与页面大小无关。有任何想法吗?这是一个可重复的例子:

---
title: "Test"
output:
    pdf_document:
      latex_engine: xelatex
header-includes:
- \usepackage{pdfpages}
---

```{r setup, include=FALSE}
require(knitr)
knitr::opts_chunk$set(echo = FALSE,
                      warning=FALSE,
                      message=FALSE,
                      dev = 'pdf',
                      fig.align='center')
```

```{r mtcars, echo=FALSE}
library(ggplot2)
pdf("myplot.pdf", width=20, height=20)
ggplot(mtcars, aes(mpg, wt)) + geom_point()
dev.off()
```

#Here's some text on a normal page, the following page is bigger but has a tiny figure.

\newpage

\includepdf[fitpaper=true]{myplot.pdf}

2 个答案:

答案 0 :(得分:3)

你应该可以像这样使用\ejectpage

---
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.

When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

```{r cars}
summary(cars)
```

## Including Plots

You can also embed plots, for example:

```{r pressure, echo=FALSE}
plot(pressure)
```

Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.

\eject \pdfpagewidth=20in \pdfpageheight=20in
```{r mtcars}
library(ggplot2)

ggplot(mtcars, aes(mpg, wt)) + geom_point()
```
\eject \pdfpagewidth=210mm \pdfpageheight=297mm

Back

(由于某些原因,我只能记住A4高度,以mm为单位)

enter image description here

答案 1 :(得分:0)

在处理大型系统树时,我也面临着同样的困难。

基于hrbrmstr's answer,我想出了以下代码段。

诀窍是使knitr生成图形,但不立即将其包括在中间.tex中(因此fig.show="hide")。然后,由于图形路径是可预测的,因此可以在代码块后面插入一些乳胶。

但是,定位页码时不会考虑新的页面高度,因此它们倾向于打印在图像上。我试图多次克服这种行为,但最后我只是用\thispagestyle{empty}将其关闭。

---
output: pdf_document
---

```{r fig_name, fig.show="hide", fig.height=30, fig.width=7}
plot(1)
```

\clearpage

\thispagestyle{empty}

\pdfpageheight=33in

\begin{figure}[p]

\caption{This is your caption.}\label{fig:fig_name}

{\centering \includegraphics[height=30in, keepaspectratio]{main_files/figure-latex/fig_name-1} }

\end{figure}

\clearpage

\pdfpageheight=11in