【问题标题】:Insert Pagebreak for Output after Code Chunk在代码块之后为输出插入分页符
【发布时间】:2022-11-26 12:26:13
【问题描述】:

我有一个 .Rmd 文件,我正在将其转换为 PDF。出于布局原因,我想在下一页显示我的代码块生成的输出图,即使它刚好适合下面。

通常与文本等一起使用

\pagebreak

但是我怎样才能通知代码块它应该在下一页显示它的输出呢? 感谢您的帮助!

【问题讨论】:

  • 试试\newpage

标签: r latex r-markdown page-break


【解决方案1】:

您可以编写一个 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,我认为它看起来会好得多。
  • @polkas,完成。谢谢!!
【解决方案2】:

我建议您将输出保存在文件 (png/jpeg/pdf) 中,然后使用 markdown 或 knitr 加载它。 这样的解决方案可以让您完全控制。

```{r}
png("NAME.png") 
# your code to generate plot 
dev.off()

然后加载图像

![LABEL](PATH/NAME.png) 或与

```{r echo=FALSE, out.width='100%', ...}
knitr::include_graphics('PATH/NAME.png')

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2021-06-04
    相关资源
    最近更新 更多