【Bookdown】Placeholderが表示される問題

Bookdown

Bookdownを使ってPDFを作成している際に、テキストや図の一部が「Placeholder」と表示され、正しく出力されないことがあります。この問題の原因と解決方法について詳しく解説します。

症状

  • Bookdown で PDF を出力すると、一部の項目が 「Placeholder」 という文字列に置き換わる。
  • 本来ならば、第1章の下に本文が続くはずだが、「Placeholder」と表示されてしまう。

解決方法

同じような症状で困っている人がいたので、それを参考にします。

Bookdown pdf output only shows "placeholder"
I am writing my thesis in bookdown and notice that all the content of the chapter will not display if I use these codes#...

どうやら、RStudio の Cmd + Shift + K(Knit ボタン)を押すと、現在の Rmd ファイルだけ が処理され、Bookdown の機能が正しく適用されないようです。その結果、図表や目次の参照が適切に解決されず、「Placeholder」 という文字列が表示されるようです。

Cmd + Shift + K(Knit ボタン)を使う代わりに、Consoleペインで次のコマンドを使用すると良いようです。

bookdown::render_book("index.Rmd", "bookdown::pdf_book")

結果

  • 第1章の下に表示されていた「Placeholder」が消えて、本文が表示されるようになった。

因みに、Bookdownの練習に@kazutan(Maeda Kazuhiro)様のテンプレートを使用させていただきました。

Placeholder が表示される原因

Bookdown には、2 つの異なる方法で Rmd をレンダリング(変換)する方法があります。

  1. シングルセッション(Single document method)
    • knitr::knit() を使って 1 つの Rmd を変換 する方法。
    • Cmd + Shift + K(RStudio の Knit ボタン)で実行される。
    • 現在の Rmd ファイルのみを処理 し、Bookdown の参照機能(目次・章番号など)が 正しく動作しないことがある
  2. マルチセッション(Bookdown method)
    • bookdown::render_book() を使って Bookdown の全 Rmd を統合して変換 する方法。
    • index.Rmd を起点にして、_bookdown.yml に記載されたすべてのファイルを処理する。
    • 目次・クロスリファレンス(図・表・数式番号、章番号など)が正しく動作する
1.4 Two rendering approaches | bookdown: Authoring Books and Technical Documents with R Markdown
A guide to authoring books with R Markdown, including how to generate figures and tables, and insert cross-references, c...

つまり、Cmd + Shift + K(RStudio の Knit ボタン)でknitしていたのが原因のようでした。

まとめ

  • Cmd + Shift + K → 「今の Rmd だけを処理」 → Bookdown の機能は動かない
  • bookdown::render_book() → 「本全体を処理」 → Bookdown の目次・参照が正しく動く

Bookdown で PDF を作るなら、Cmd + Shift + K ではなく bookdown::render_book() を使うと良い

プロフィール
この記事を書いた人
Masa

植物の研究が好きで大学院まで進み、「植物生理」と「環境調節」をテーマに取り組んできました。研究の中でプログラミングの楽しさに目覚め、Rとmarkdownは人並みなレベルまで習得しました。

Masaをフォローする
Bookdown
Masaをフォローする
タイトルとURLをコピーしました