[英]How to add a page break in word document generated by RStudio & markdown
我在 R Studio 中用 R markdown 編寫了一個 Word 文檔。 我可以獲得很多東西,但目前我不知道如何獲得分頁符。 我找到了解決方案,但僅適用於渲染的乳膠/pdf 文檔,這不是我的情況。
補充:要插入分頁\\newpage
,請使用\\newpage
用於格式,包括 LaTeX、HTML、Word 和 ODT。
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
后,您選擇Modify Style
Heading 5
Modify Style
,然后在headingfive.docx
Line and Page Breaks
選項卡中選擇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 group 其他人的幫助下,我組合了一個過濾器來執行此操作。 請參閱: https ://groups.google.com/forum/#!topic/pandoc-discuss/FzLrhk0vVbU 簡而言之,過濾器需要尋找一些東西來替換 openxml 以進行分頁。 在這種情況下, \\newpage
被替換為<w:p><w:r><w:br w:type=\\"page\\"/></w:r></w:p>
這允許要為 pdf 和 word 輸出解釋的單個乳膠標記。 喬爾
您要做的是在用 Pandoc 生成的 Word 文檔中強制“分頁”或“新頁面”。 我找到了一種在我的環境中執行此操作的方法,但我不確定它是否適用於所有環境。
我的環境: * R-studio / Pandoc / MS-WORD 以“*.Rmd”文件開頭並生成 DOCX 文件。
在我的 RMD 文件中,關鍵思想是我創建了類似於模板文檔 (MyFormattingDocument.docx) 的內容,在該 Word 文檔中,我針對“標題 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 一對一映射的樣式執行相同的操作,因此您可以只制作所有“標題 3”或其他任何內容......只需看看在您的 RMD 中創建的 DOCX 是什么正在應用“樣式”,然后調整該樣式,即使您需要插入一些具有基本空白內容的“假”行,只是為了強制樣式出現在 DOCX 中
這是一個 R 腳本,可用作 pandoc 過濾器,根據上面@Jallen 的回答,用分詞符替換 LaTeX 中斷符( \\pagebreak
)。 有了這個,你不需要編譯 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"
]
---
您可以使用 R 包worded
。 這避免了對模板 word 文件的需要。 請參閱https://github.com/davidgohel/worded 。
output
參數需要設置為worded::rdocx_document
並且您需要調用library(worded)
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)
```
然后,您可以在需要分頁<!---CHUNK_PAGEBREAK--->
將<!---CHUNK_PAGEBREAK--->
添加到您的文檔中。
該包允許使用類似機制的各種文字格式選項。
更新到 R 4.0.0 時, <!---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
R Markdown 1.16 引入了一項新功能,允許通過添加僅包含命令\\pagebreak
或\\newpage
的段落來插入\\pagebreak
:
Paragraph before page break.
\pagebreak
First paragraph on a new page.
另請參閱 R Markdown 手冊中的 分頁符部分。
它不是一個自動化的解決方案。 但是我一直在將文本“#####page break”添加到我的降價文檔中。 然后在 MS Word 中使用查找替換將文本“分頁符”替換為“^m”(手動分頁符)。
Sungpil 的文章很接近,但不太奏效。 這是我為此找到的最佳解決方案: https : //scriptsandstatistics.wordpress.com/2015/12/18/rmarkdown-how-to-inserts-page-breaks-in-a-ms-word-document/
更好的是,作者包含了 Word 模板來完成這項工作。 R-blogger 指向其模板的鏈接已損壞,並且標題格式錯誤。 我做的一些筆記:
1) 您可能需要在 Rmd 標頭中包含單詞模板的整個路徑,如下所示:
output:
word_document:
reference_docx: C:/workspace/myproject/mystyles.docx
2) 上面鏈接中的模板更改了一些默認樣式設置,因此您需要將它們更改回來
我的解決方案不是很健壯,但可以為我們中的一些人工作。 假設您需要在 word 文檔中的每個級別 1 標題之前分頁,我在 yaml 字段reference_docx:
使用的格式模板中定義了這一點。 在本文檔中,您修改標題 1 格式(或等效格式)以在標題前插入分頁符。 不要忘記使用 RStudio 中使用 knitr (pandoc) 渲染的第一個 docx 來啟動您的模板。
好的,我在 markdown 文檔中找到了這個。
水平規則/分頁符
三個或更多星號
***
或破折號---
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.