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 をレンダリング(変換)する方法があります。
- シングルセッション(Single document method)
knitr::knit()
を使って 1 つの Rmd を変換 する方法。- Cmd + Shift + K(RStudio の Knit ボタン)で実行される。
- 現在の Rmd ファイルのみを処理 し、Bookdown の参照機能(目次・章番号など)が 正しく動作しないことがある。
- マルチセッション(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()
を使うと良い