如何以一种聪明的方式在Rmarkdown中添加\ newpage?


114

我想知道是否可以\newpage以一种不同于此的方式在R markdown v2中简单地使用LaTeX 命令:

```{r, results='asis', echo=FALSE}
cat("\\newpage")
```

我产生pdf_output。如果有任何想法,请不要犹豫:)!谢谢

我创建这样的pdf文件:

---
title: " "
author: " "
date: "2014"
output: 
   pdf_document:
      includes:
         in_header: naglowek.tex
      highlight: pygments
      toc: true
      toc_depth: 3
      number_sections: true
      keep_tex: true
---

您如何创建PDF输出?
Spacedman 2014年

我编辑了我的问题。这是我创建pdf的方式。
MarcinKosiński2014年

然后,您使用什么包/功能?还是只单击RStudio中的按钮?
Spacedman 2014年

有什么不同?我的程序包或函数与我想在代码的某些部分添加新页无关。
MarcinKosiński2014年

很高兴看到完整的工作流程-从markdown到PDF有多种选择。没有这个,我们在猜测。好猜@tonytonov
Spacedman 2014年

Answers:


177

简单\newpage\pagebreak将工作,例如

hello world
\newpage
```{r, echo=FALSE}
1+1
```
\pagebreak
```{r, echo=FALSE}
plot(1:10)
```

该解决方案假定您正在编织PDF。对于HTML,您可以通过添加标签实现类似的效果<P style="page-break-before: always">。请注意,您可能不会在浏览器中看到分页符(HTML本身没有页面),但是在打印布局中会显示分页符。


我可以以某种方式关闭主题吗?
MarcinKosiński2014年

2
别客气!您已经接受了答案(绿色标记);这表示问题已解决。尽管其他用户仍然可以添加他们的答案或评论,但这个问题就足够了。因此,SO 结案问题是一种基于投票的工具,可以锁定不太好的问题,如果不合适,甚至可以将其删除。您的问题很好,因此您不必立即关闭或删除该问题。
tonytonov 2014年

编织到html时有什么作用吗?它会导致任何错误吗?
gvrocha

因为这是关于创建新页面的问题。您将如何在html输出中创建一个新页面?
MarcinKosiński16年

1
@MarcinKosiński您可以直接插入HTML标签:有关说明,请参见edit。
tonytonov '16

22

在初始化块中,我定义一个函数

pagebreak <- function() {
  if(knitr::is_latex_output())
    return("\\newpage")
  else
    return('<div style="page-break-before: always;" />')
}

在我要插入分页符的markdown部分中,键入

`r pagebreak()`

13

您可以将分页符设置为编织为PDF的条件。这对我有用。

```{r, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex')}
cat('\\pagebreak')
```

这很有效,可以在PDF中创建分页符,但不会在HTML中输出任何内容(分页符没有意义)。似乎用它来更新主要答案以增加这种可能性。
马格努斯

1
{r, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex')} cat('\\pagebreak') Error in eval(x, envir = envir) : object 'opts_knit' not found Calls: <Anonymous> ... process_group.block -> call_block -> eval_lang -> eval -> eval Execution halted opts_knit$get虽然可以在控制台 中 正常工作。?
keithpjolley

添加 echo = FALSE到knitr选择只避免得到声明cat('\\pagebreak')输出文件。
Akronix

cat('\\pagebreak')在块中使用了@Akronix 并将其添加echo = FALSE到knitr opts中,但是在我的pdf中仍然得到“ ## \ newpage”,为什么?
本杰明·泰尔坎普

1
```{r page break, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex'), echo = FALSE} cat('\\pagebreak') ```
Akronix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.