簡體   English   中英

如何在 RStudio & Markdown 生成的 Word 文檔中添加分頁符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM