web-dev-qa-db-ja.com

RStudioとマークダウンで生成されたWord文書に改ページを追加する方法

R StudioでRマークダウン付きのWord文書を書いています。私は多くのものを手に入れることができますが、現時点ではどのように改ページを取得できるのかわかりません。私は解決策を見つけましたが、レンダリングされたラテックス/ pdfドキュメントについてのみ、それは私の場合ではありません。

30

5番目のレベルのヘッダーブロック(#####)とYAMLで定義されたdocxテンプレートを使用すると、より簡単な方法があります。

Microsoft Wordでheadingfive.docxを作成した後、Modify StyleHeading 5を選択し、Page break beforeタブでLine and Page Breaksを選択してheadingfive.docxを保存しますファイル。

Page break before

---
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/

24
Sungpil Han

GoogleのpandocグループのJohn MacFarlaneと他の人々の助けを借りて、これを行うフィルターを作成しました。ご覧ください: https://groups.google.com/forum/#!topic/pandoc-discuss/FzLrhk0vVb 要するに、フィルターは改ページのためにopenxmlに置き換えるものを探す必要があります。この場合、\newpage<w:p><w:r><w:br w:type=\"page\"/></w:r></w:p>に置き換えられます。これにより、pdf出力とWord出力の両方で1つのラテックスマークアップを解釈できます。ジョエル

15
JAllen

あなたがしようとしているのは、Pandocで生成されたWord文書で「改ページ」または「新しいページ」を強制することです。私の環境でこれを行う方法を見つけましたが、すべての環境で機能するかどうかはわかりません。

私の環境:*「* .Rmd」ファイルで始まり、DOCXファイルを生成するR-studio/Pandoc/MS-Word。

私のRMDファイルの重要なアイデアは、TEMPLATEドキュメント(MyFormattingDocument.docx)のように機能するものを作成し、そのWordドキュメントで「Heading 1」および/または「Heading 2」および/または「脚注」またはその他の事前定義されたスタイルを微調整します。

(これを参照してください: http://rmarkdown.rstudio.com/Word_document_format.html#style-reference )スタイル参照の説明と、参照文書を指定するためにRMDファイルにヘッダー情報を設定する方法について。

私の場合、SOOOO ... i Wordの「Heading 1」スタイルを微調整して、「Heading 1」の段落書式に強制的な「改ページ前」を含めます。すべての「Heading 1」を常に「Page Break」に強制する方法はMicrosoft Wordのバージョンによって異なりますが、Wordのドキュメントに従って「Heading 1」スタイルを変更すると、「Heading 1」の前に常に改ページが行われますそれ。

次に、このテンプレートファイルを、RMDファイルを使用して作業しているディレクトリに保存します。これはテンプレートとして使用されます。ファイルの内容は無視されます。..だから心配しないでください。このファイルにサンプルテキストを入れて、フォーマットがすべて機能することをテストできます。..コンテンツは無視されますが、スタイルは新しいファイルで使用されます。 RMDファイルによって作成されるWord文書です。..そして、すべての「見出し1」の前にブレークがあります。

注:PANDOC MARKUPから1対1のマッピングを持つスタイルで同じことを行うことができるので、代わりにすべての「Heading 3」などを作成できます。RMDで作成されたDOCXを見てください「スタイル」が適用され、スタイルを強制的にDOCXに表示する目的で、本質的に空白のコンテンツを持つ「偽の」行を挿入する必要がある場合でも、そのスタイルを微調整します。

12
Marc Epstein

上記の@JAllenの回答によると、LaTeXブレーク(\pagebreak)をワードブレークに置き換えるpandocフィルターとして使用できるRスクリプトがあります。これにより、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"
    ]
---
5
Noam Ross

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)
```
_

その後、改ページが必要なときにいつでも_<!---CHUNK_PAGEBREAK--->_をドキュメントに追加できます。

このパッケージでは、同様のメカニズムを使用して、さまざまなWordフォーマットオプションを使用できます。

2
anotherfred

Sungpilの記事は近かったが、うまくいかなかった。これは私がこのために見つけた最良の解決策でした: https://scriptsandstatistics.wordpress.com/2015/12/18/rmarkdown-how-to-inserts-page-breaks-in-a-ms-Word- document /

さらに良いことに、著者はこの作業を行うためにWordテンプレートを含めました。 R-bloggerのテンプレートへのリンクが壊れており、ヘッダーのフォーマットが間違っています。私が取ったいくつかのメモ:

1)次のように、Wordテンプレートへのパス全体をRmdヘッダーに含める必要がある場合があります。

output: 
    Word_document:
      reference_docx: C:/workspace/myproject/mystyles.docx

2)上記のリンクのテンプレートはデフォルトのスタイル設定の一部を変更したため、元に戻す必要があります

1
Odysseus Ithaca

自動化されたソリューションではありません。ただし、マークダウンドキュメントに「#####改ページ」というテキストを追加しています。次に、MS Wordでfind-replaceを使用して、テキスト「改ページ」を「^ m」(手動改ページ)に置き換えます。

0
m_abra

私のソリューションはそれほど堅牢ではありませんが、私たちの何人かのために働くことができます。 Word文書の各レベル1タイトルの前に改ページが必要であると仮定して、yamlフィールドで使用されるフォーマットテンプレートでこれを定義しましたreference_docx:。このドキュメントでは、タイトルの前に改ページを挿入するように見出し1​​形式(または同等のもの)を変更します。 RStudioでknitr(pandoc)でレンダリングされた最初のdocxでテンプレートを開始することを忘れないでください。

0
FabianUx