書評 「R MarkdownでWord文書を作ろう」

カテゴリ: r

RmdでWord本の再販が間近に迫っていますね.これは献本頂いた時にしたレビューの約束を果たす時!!

Rmdでこんなに完成したWordドキュメントを作れるんだ……! と感動できるので是非.

RmdでWordを考えておられる方は勇気付けられるこ間違いなしです.

こんな人にオススメ

平たく言えば,全Rmdユーザーですね.

RmdでWordを書きたい/書いている全ての方

Rmdに馴染みがない人でもこれ一冊で立派なWord出力ができるようになります.

Webでは 「R Markdownそのものの使い方」と 「Wordへの出力方法とそのTips」の 情報源が分散して存在しているケースが多いです.

情報が一箇所に纏まっていることの威力がよくわかります.

また同書は脚注の充実が素晴らしく, 参考URLがページ直下に存在しているので, 更なる情報を求める方にも優しいです. サポートページにリンク集も用意されてます(https://github.com/niszet/techbookfest5/blob/master/sanko.md).

RmdをWordに限らず使っている方で

YAMLをなんとなく使っている方

YAMLそのものの情報はWebに潤沢に存在しています.

しかし,Rmd利用を前提にYAMLの使い方をここまで網羅した書籍は商業誌にもないでしょう.

タイトルや著者を改行する方法について載っていればベストでした.

後に @niszet0 氏とやりとりして得たベストプラクティスは以下のように, バーティカルバーとPandocs Markdown記法を組み合わせるもの.

title: |
  バーティカルバー+改行後 \
  スペース2つでインデントしてタイトルを綴る. \
  改行したいところで
  バックスラッシュを挟めばOK. \
  改行したくない場合はバックスラッシュを入れない.
  Markdown記法が使えるので **強調**  *斜体* も自在.

相互参照したい方 (第7章)

bookdown::word_document2 を使えば公式に相互参照できるっぽいけどなんか貧弱……と思っていたら同書で指摘されてました.

pandoc-crossref フィルタと captioner パッケージを組み合わせた上手い運用方法が紹介されています.

大規模ドキュメントを作りたい方 (第8章)

多くの情報源ではドキュメントを複数のRmdに分割し,親Rmdの chunk オプションにて child = "hoge.Rmd" しましょうとして終わります,

しかし,章ごとに環境を分けようというのは目からウロコ (直前までの章で定義された変数を参照不可にする).

大規模になればなるほど,保守性の観点から言っても,章単位で再現性のある文章にするのは大事ですね.

メモリを節約したい場合は各Rmdファイルの冒頭で

rm(list=ls())

でもいいかなと思った. ls(all = TRUE) にするとドットから始まる隠し変数も削除されます. うまく利用すれば,captioner パッケージの利用などによる,章を跨いで共有する必要のある変数は削除しないで済みます. child を呼ぶ度に new.env したりパラメータを渡す必要もない. どうだろ……? (試していない)

手順書やチェックリストを作りたい方 (第9章)

Rmdであれもやりたいこれもやりたいという方はまずここと相互参照の話を見てみると良いと思います.

Pandocフィルタをもっと利用しなきゃなあと気付かせてくれます.

読んでからの私

基本的な業務報告書をRmdから出力できるようになりました! (ページ番号だけあとから弄ってます)

個人的になんとかしたいところは

  • 目次の次のページからページカウントを始めたい
  • 横向きページの扱い
    • 一部のページを横向きにしたい
    • ページ番号の位置は縦向きページと整合的にしたい
  • 縦長な表を同一ページに複数並べたい
    • ページ単位で段組を調整かな?

です.Generic raw attribute (6章17節) でできるか……? この辺りができれば一通りの業務で通用しそうな気がする.