R StudioでRマークダウン付きのWord文書を書いています。私は多くのものを手に入れることができますが、現時点ではどのように改ページを取得できるのかわかりません。私は解決策を見つけましたが、レンダリングされたラテックス/ pdfドキュメントについてのみ、それは私の場合ではありません。
5番目のレベルのヘッダーブロック(#####
)とYAMLで定義されたdocxテンプレートを使用すると、より簡単な方法があります。
Microsoft Wordでheadingfive.docx
を作成した後、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
---
Rmd
ドキュメントで、YAMLヘッダーにreference_docx
を定義し、改ページ#####
を使用できるようになりました。
下記を参照してください。
https://www.r-bloggers.com/r-markdown-how-to-insert-page-breaks-in-a-ms-Word-document/
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つのラテックスマークアップを解釈できます。ジョエル
あなたがしようとしているのは、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に表示する目的で、本質的に空白のコンテンツを持つ「偽の」行を挿入する必要がある場合でも、そのスタイルを微調整します。
上記の@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"
]
---
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フォーマットオプションを使用できます。
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)上記のリンクのテンプレートはデフォルトのスタイル設定の一部を変更したため、元に戻す必要があります
自動化されたソリューションではありません。ただし、マークダウンドキュメントに「#####改ページ」というテキストを追加しています。次に、MS Wordでfind-replaceを使用して、テキスト「改ページ」を「^ m」(手動改ページ)に置き換えます。
私のソリューションはそれほど堅牢ではありませんが、私たちの何人かのために働くことができます。 Word文書の各レベル1タイトルの前に改ページが必要であると仮定して、yamlフィールドで使用されるフォーマットテンプレートでこれを定義しましたreference_docx:
。このドキュメントでは、タイトルの前に改ページを挿入するように見出し1形式(または同等のもの)を変更します。 RStudioでknitr(pandoc)でレンダリングされた最初のdocxでテンプレートを開始することを忘れないでください。