knitr
とrmarkdown
を一緒に使用してWord文書を作成する場合、既存の文書を使用して出力のスタイルを設定できます。
たとえば、私のyamlヘッダーで:
output:
Word_document:
reference_docx: style.docx
fig_caption: TRUE
このスタイル内で、デフォルトのテーブルスタイルを作成しました。ここでの目標は、kable
テーブルを正しいスタイルで出力することです。
Word文書を編んでstyle.docxを使用すると、テーブルはテーブルに従って様式化されません。
これまでのところ、スタイルインスペクタの使用は役に立たなかったため、デフォルトのテーブルスタイルが修正するのに不適切なスタイルかどうかは不明です。
サンプルコード:
```{r kable}
n <- 100
x <- rnorm(n)
y <- 2*x + rnorm(n)
out <- lm(y ~ x)
library(knitr)
kable(summary(out)$coef, digits=2, caption = "Test Captions")
```
残念ながらテスト用にアップロードできる定型化されたドキュメントはありません。
TL; DR:rmarkdownおよびknitrからのテーブル出力を自動的にスタイル設定したい(kable経由)
更新:これまでのところ、docxの 'compact'スタイルを変更すると、テーブルのテキストコンテンツが自動的に変更されることがわかりました。
更新2:スタイルをさらに調査して作成した後、knitr
が段落スタイルにアクセスするのに問題がないようだとわかりました。ただし、テーブルスタイルはそのスタイルカテゴリの下にはなく、個人的なテストでは適用されないようです。
更新3:ReporteRs
パッケージに手を出しました-必要に応じてテーブルを作成できましたが、そのために必要な構文は面倒です。むしろ、スタイルが自動的に適用されます。
更新4: TableNormalスタイルを変更することも、Table Normalスタイルを設定することもできません。 XMLアプローチは、私たちが探しているものではありません。トリックを実行するVBAマクロがあり、可能であればそのプロセスを削除したいだけです。
これは、基本的に TableNormal
を推奨する答え 、 rmarkdown.rstudio.comのこの投稿 と、TableNormal
スタイルは、kable
によって生成されるようなテーブルをカスタマイズします。
[〜#〜] rmd [〜#〜]:
---
output:
Word_document
---
```{r}
knitr::kable(cars)
```
TableNormal
を選択し、目的のスタイルを定義します。私の実験ではほとんどのスタイルが機能しましたが、一部のスタイルは機能しませんでした。 (最初の列に色を追加し、最初の行を太字にすることは問題ありません。2行ごとに強調表示することは無視されました。)この回答の最後のスクリーンショットはこの手順を示しています。styles.docx
。参照DOCXを使用するようにRMDファイルのヘッダーを変更します( here を参照してください;インデントを台無しにしないでください-この間違いを見つけるのに10分かかりました)。
---
output:
Word_document:
reference_docx: styles.docx
---
再びDOCXに編む–スタイルが適用されます。
上記の手順に従うと、この出力が得られます。
そして、TableNormal
を定義するために使用されるテーブルスタイルダイアログのスクリーンショット。残念ながら、それはドイツ語ですが、おそらく誰かがそれの英語版を提供することができます:
これはほとんどのユーザー(私以外のユーザー)には機能しないようですので、これを体系的にテストすることをお勧めします。基本的に、間違っている可能性のある4つのステップがあります。
TableNormal
スタイルがDOCXに保存される方法の違い。したがって、上記の同じ最小限のRMD( Pastebinの完全なコード )を使用して、結果の開始位置がどこで異なるかを調べることをお勧めします。
TableNormal
が追加された同じドキュメント: reference.docx次のシステムで3つのファイルが生成されます:Windows 7/R 3.3.0/RStudio 0.99.896/pandoc 1.15.2/Office 2010。
Windows 7/R 3.2.4/RStudio 0.99.484/pandoc 1.13.1/Office 2010を搭載したシステムでも同じ結果が得られます。
最も可能性の高い犯人はpandocとOfficeのバージョンだと思います。残念ながら、現時点では他の構成をテストすることはできません。今、以下を見るのは面白いでしょう:それが機能しないユーザーのために、何が起こるか…
多くのユーザーがこれらのテストを実行することで、問題の原因を見つけることができるはずです。
TableNormal
も機能しません。
オランダ語版のWord 2016(Office 365)で、スタイルCompact
でテーブルをマークアップできることがわかりました。
入力(refdoc.docx
にはCompact
スタイルが含まれます):
---
title: "Titel"
subtitle: "Ondertitel"
author: "`r Sys.getenv('USERNAME')`"
output:
Word_document:
toc: true
toc_depth: 2
fig_width: 6.5
fig_height: 3.5
fig_caption: true
reference_docx: "refdoc.docx"
---
RMarkdown:
# Methoden {#methoden}
```{r}
kable(cars)
```
出力:
参照.docxで定義したデフォルトのテーブルスタイルを使用するようにWordの出力を取得できました。
「TableNormal」の代わりに、デフォルトのテーブルスタイルは「Table」でした。
ケールでrmarkdownを編むことでこれを発見しました。
---
date: "December 1, 2017"
output:
Word_document:
reference_docx: Template.docx
---
`r knitr::kable(source)`
次に、生成されたドキュメントのXMLを見て、デフォルトのスタイルを確認しました。
require(XML)
docx.file <- "generated_doc.docx"
## unzip the docx converted by Pandoc
system(paste("unzip", docx.file, "-d temp_dir"))
document.xml <- "temp_dir/Word/document.xml"
doc <- xmlParse(document.xml)
tblStyle <- getNodeSet(xmlRoot(doc), "//w:tblStyle")
tblStyle
「テーブル」スタイルを定義して、参照docxに色と境界線を配置しました。これはドキュメント全体で1つの標準的なテーブルスタイルに対して機能しますが、全体を通して異なるスタイルを使用する方法は見つかりませんでした。
これは、リファレンスドキュメントを開いて編集した後もそのままでした。