Sun*_*Han 25
使用#####
YAML中定义的第五级头块()和docx模板有一种更简单的方法.
创建后,headingfive.docx
在Microsoft Word中,您可以选择Modify Style
的Heading 5
,然后选择Page break before
在Line 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/
小智 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中
您可以使用 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--->
在需要分页符时添加到文档中。
该包允许使用类似机制的各种文字格式选项。
这是一个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)