我在R Studio中使用R markdown编写Word文档。我可以得到很多东西,但是目前我还没想出如何获取分页符。我找到了一些解决方案,但只适用于渲染的LaTeX/PDF文档,这不是我的情况。
添加:如需插入分页符,请在包括LaTeX、HTML、Word和ODT格式在内的各种格式中使用\newpage
。
https://bookdown.org/yihui/rmarkdown-cookbook/pagebreaks.html
Paragraph before page break.
\newpage
First paragraph on a new page.
先前:可以通过使用一个五级标题块(#####
)和在 YAML 中定义的 docx 模板来实现。
在 Microsoft Word 中创建 headingfive.docx
后,您选择 Heading 5
的 Modify Style
,然后在 Line and Page Breaks
选项卡中选择 Page break before
并保存 headingfive.docx
文件。
---
title: 'Making page break using fifth-level header block'
output:
word_document:
reference_docx: headingfive.docx
---
在你的Rmd
文档中,你需要在YAML头文件中定义reference_docx
,然后你就可以使用分页符 #####
。
请参见下面链接。
https://www.r-bloggers.com/r-markdown-how-to-insert-page-breaks-in-a-ms-word-document/
在John MacFarlane和pandoc的Google小组的其他成员的帮助下,我编写了一个过滤器来实现这一点。请参见:
https://groups.google.com/forum/#!topic/pandoc-discuss/FzLrhk0vVbU
简而言之,该过滤器需要查找要替换为分页符的内容。在本例中,\newpage
被替换为
<w:p><w:r><w:br w:type=\"page\"/></w:r></w:p>
这使得单个LaTeX标记可以用于PDF和Word输出。
Joel
注意:显然,您可以使用具有从PANDOC标记到样式的一对一映射的任何样式,因此您可以选择仅制作所有“标题3”或其他内容...只需查看您的RMD创建的DOCX中应用的“样式”,然后调整该样式,即使您需要插入一些“虚假”行,其中实际上没有内容,但目的是为了强制在DOCX中显示样式。
\pagebreak
)替换为单词分隔符,参考了 @JAllen 的回答。使用此脚本不需要编译 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, "")
将此文件保存为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"
]
---
Error running filter page-break-filter.R: Error in $: Failed reading: not a valid json value
。而且非常奇怪的是,每次我尝试渲染Rmd时,它都会删除page-break-filter.R
和一堆其他源文件。当我在YAML中不包括pandoc_args
时,这种情况不会发生。 - Oliver---
date: "2018-03-27"
author: "David Gohel"
title: "Document title"
output:
worded::rdocx_document
---
```{r setup, include=FALSE}
library(worded)
```
<!---CHUNK_PAGEBREAK--->
。devtools :: install_github("davidgohel / officedown")
从GitHub下载它。 - anotherfreddevtools::install_github("davidgohel/officedown")
安装失败:句柄已死
- sullijR Markdown 1.16引入了一项新功能,允许通过添加一个只包含命令\pagebreak
或\newpage
的段落来插入分页符:
Paragraph before page break.
\pagebreak
First paragraph on a new page.
查看R Markdown菜谱中分页一节。
<!---CHUNK_PAGEBREAK--->
解决方案不能再使用了。officer
包中的run_pagebreak()
函数,并结合officedown
包使用。---
output: word_document
---
```{r settings}
library(officedown)
library(officer)
```
Hello world on page 1
`r run_pagebreak()`
Hello world on page 2
output:
word_document:
reference_docx: C:/workspace/myproject/mystyles.docx
2) 上面链接中的模板更改了一些默认样式设置,因此您需要将它们改回来。
这不是自动化解决方案。但我一直在我的Markdown文档中添加文本“#####分页符”。然后在MS Word中使用查找替换功能,将文本“分页符”替换为“^m”(手动分页符)。
---
输出:
word_document:
reference_docx: "word_styles.docx"
---