如何在由RStudio和markdown生成的word文档中添加分页符

Gio*_*ato 30 markdown r pandoc rstudio

我在R Studio中使用R markdown编写Word文档.我可以得到很多东西,但目前我还没弄清楚如何才能获得分页符.我找到了解决方案,但仅针对渲染的乳胶/ pdf文档,这不是我的情况.

Sun*_*Han 25

使用#####YAML中定义的第五级头块()和docx模板有一种更简单的方法.

创建后,headingfive.docx在Microsoft Word中,您可以选择Modify StyleHeading 5,然后选择Page break beforeLine and Page Breaks标签并保存headingfive.docx文件.

分页前

---
title: 'Making page break using fifth-level header block'
output: 
  word_document:
    reference_docx: headingfive.docx
---
Run Code Online (Sandbox Code Playgroud)

在您的Rmd文档中,您reference_docx在YAML标题中定义,现在您可以使用分页#####.

请看下面.

https://www.r-bloggers.com/r-markdown-how-to-insert-page-breaks-in-a-ms-word-document/

  • 从/基于博客链接发布片段可能会有所帮助; 这样,如果网站将来消失,答案仍然有用. (5认同)
  • 这种技术唯一的“其他”是下一页以空行开头;我相信这是无法避免的,因为它是带有“标题 5”样式的文本行,而不是您可以隐藏或摆脱的东西。我做得最好的是进一步格式化以减小字体大小,设置为白色,减少行距等。仍然只是一个空行。 (2认同)
  • 几年前我使用过这个技巧。更新允许使用 \newpage 跨核心文档输出类型工作。https://bookdown.org/yihui/rmarkdown-cookbook/pagebreaks.html (2认同)

JAl*_*len 15

在John MacFarlane和pandoc google小组的其他人的帮助下,我整理了一个过滤器来做到这一点.请参阅:https: //groups.google.com/forum/#!topic/pandoc-discuss/FzLrhk0vVbU简而言之,过滤器需要查找替换为openxml for pagebreak的内容.在这种情况下 \newpage 被替换为. <w:p><w:r><w:br w:type=\"page\"/></w:r></w:p> 这允许单个乳胶标记被解释为pdf和word输出.乔尔


小智 12

您要做的是在Pandoc生成的word文档中强制使用"分页符"或"新页面".我已经找到了在我的环境中执行此操作的方法,但我不确定它是否适用于所有环境.

我的环境:*R-studio/Pandoc/MS-WORD以"*.Rmd"文件开头并生成DOCX文件.

在我的RMD文件中,关键的想法是我已经创建了类似于TEMPLATE文档(MyFormattingDocument.docx)的内容,并且在该单词文档中我调整了STYLES,例如"标题1"和/或"标题2"和/或"脚注"或我想要调整的任何其他预定义样式.

(请参阅:http: //rmarkdown.rstudio.com/word_document_format.html#style-reference)以获取样式参考的说明以及如何在RMD文件中设置标题信息以指定参考文档.

在我的情况下SOOOO ...我在WORD中调整了"标题1"样式,在"标题1"的段落格式中包含一个强制的"分页前".在不同版本的Microsoft WORD中,你究竟如何强制每个"标题1"总是"分页"是不同的但是如果你按照WORD文档修改"标题1"样式那么每个"标题1"总是会有一个分页符号之前它.

那么......你将这个模板文件保存在你使用RMD文件的某个目录中......并且它被用作模板.文件的内容被忽略....所以不要担心...你可以将示例文本放在这个文件中并测试格式化是否全部有效......内容被忽略但是样式在新版本中使用将由RMD文件构建的word文档,然后每个"标题1"将在它之前休息.

注意:你可以使用任何具有PANDOC MARKUP一对一映射的样式来做同样的事情,这样你就可以只做所有"Heading 3"或者其他......只要看看你的RMD创建的DOCX是什么正在应用"STYLE",然后调整该样式,即使您需要插入一些基本上为空白内容的"假"行,只是为了强制样式出现在DOCX中


ano*_*red 7

您可以使用 R 包worded。这避免了对模板 word 文件的需要。请参阅https://github.com/davidgohel/worded

output参数需要设置为worded::rdocx_document并且您需要调用library(worded).

---
date: "2018-03-27"
author: "David Gohel"
title: "Document title"
output: 
  worded::rdocx_document
---

```{r setup, include=FALSE}
library(worded)
```
Run Code Online (Sandbox Code Playgroud)

然后,您可以<!---CHUNK_PAGEBREAK--->在需要分页符时添加到文档中。

该包允许使用类似机制的各种文字格式选项。


Noa*_*oss 5

这是一个R脚本,可以用作pandoc过滤器,用\pagebreak@ JAllen上面的答案替换LaTeX break()和单词分隔符.有了这个,您不需要编译pandoc脚本.由于您在R Markdown工作,我假设系统中有一个R可用.

#!/usr/bin/env Rscript

json_in <- file('stdin', 'r')
lat_newp <- '{"t":"RawBlock","c":["latex","\\\\newpage"]}'
doc_newp <- '{"t":"RawBlock","c":["openxml","<w:p><w:r><w:br w:type=\\"page\\"/></w:r></w:p>"]}'
ast <- paste(readLines(json_in, warn=FALSE), collapse="\n")
ast <- gsub(lat_newp, doc_newp, ast, fixed=TRUE)
write(ast, "")
Run Code Online (Sandbox Code Playgroud)

将其保存为page-break-filter.R类似的东西,并通过chmod +x page-break-filter.R在终端中运行使其可执行.

然后将此过滤器包含在R Markdown YAML中,如下所示:

---
title: "Title
author: "Author"
output:  
  word_document:
    pandoc_args: [
      "--filter", "/path/to/page-break-filter.R"
    ]
---
Run Code Online (Sandbox Code Playgroud)