【发布时间】:2022-11-26 12:26:13
【问题描述】:
我有一个 .Rmd 文件,我正在将其转换为 PDF。出于布局原因,我想在下一页显示我的代码块生成的输出图,即使它刚好适合下面。
通常与文本等一起使用
\pagebreak
但是我怎样才能通知代码块它应该在下一页显示它的输出呢? 感谢您的帮助!
【问题讨论】:
-
试试
\newpage
标签: r latex r-markdown page-break
我有一个 .Rmd 文件,我正在将其转换为 PDF。出于布局原因,我想在下一页显示我的代码块生成的输出图,即使它刚好适合下面。
通常与文本等一起使用
\pagebreak
但是我怎样才能通知代码块它应该在下一页显示它的输出呢? 感谢您的帮助!
【问题讨论】:
\newpage
标签: r latex r-markdown page-break
您可以编写一个 knitr 挂钩来设置一个块选项来执行此操作。
所以在这里我修改了源块钩子并创建了一个块选项next_page,如果是TRUE,该块的输出将在下一页上。
---
title: "Chunk Output in Next page"
output: pdf_document
date: "2022-11-25"
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown
```{r, include=FALSE}
library(knitr)
default_source_hook <- knit_hooks$get('source')
knit_hooks$set(
source = function(x, options) {
if(isTRUE(options$next_page)) {
paste0(default_source_hook(x, options),
"
\newpage
")
} else {
default_source_hook(x, options)
}
}
)
```
```{r, next_page=TRUE}
plot(mpg ~ disp, data = mtcars)
```
【讨论】:
source = function(x, options) { if(isTRUE(options$next_page)) { paste0(default_source_hook(x, options), "
\newpage
") } else { default_source_hook(x, options) } } 并将参数更改为采用逻辑 TRUE/FALSE,我认为它看起来会好得多。
我建议您将输出保存在文件 (png/jpeg/pdf) 中,然后使用 markdown 或 knitr 加载它。
这样的解决方案可以让您完全控制。
```{r}
png("NAME.png")
# your code to generate plot
dev.off()
然后加载图像
 或与
```{r echo=FALSE, out.width='100%', ...}
knitr::include_graphics('PATH/NAME.png')
【讨论】: