4.7 文書内の相互参照

相互参照 はあなたの文書を通して読者を誘導するのに役に立つ方法であり, R Markdown ではこれを自動的に行なえます. これは bookdown 本の Chapter 2 で既に説明されていますが, 以下で簡潔な説明をします.

相互参照を使用するにあたって, 以下が必要になります.

  • bookdown 出力フォーマット: 相互参照は基本となる rmarkdown パッケージでは直接提供されず, bookdown (Xie 2021a) による拡張機能として提供されています. よって YAML の output フィールドで bookdown のフォーマット (例: html_document2, pdf_document2, word_document2 など) を使用しなければなりません.

  • 図 (または表) に対するキャプション: キャプションのない図は単なる画像として直接埋め込まれるたあめ, 付番された図 (figure) にはなりません.

  • ラベルの設定されたコードチャンク: チャンクが生成した図を参照する識別子を提供してくれます.

これらの条件が整って初めて, テキスト内で \@ref(type:label) という構文を使って相互参照を作成できます. label はチャンクラベルであり, type は参照される環境 (例:, tab, fig, eqn) です. 以下に例を示します.

---
title: 図, 表, 数式を相互参照する
author: bookdown による生成
output:
  bookdown::pdf_document2:
    latex_engine: lualatex
  bookdown::html_document2: default
documentclass: ltjsarticle
---

図 \@ref(fig:cars-plot) を見よ.

```{r cars-plot, fig.cap="自動車のデータ", echo=FALSE}
par(mar = c(4, 4, .2, .1))
plot(cars)  # a scatterplot
```

次に数式\@ref(eq:mean) を見よ.

\begin{equation}
\bar{X} = \frac{\sum_{i=1}^n X_i}{n} (\#eq:mean)
\end{equation}

さらに表 \@ref(tab:mtcars) を見よ.

```{r mtcars, echo=FALSE}
knitr::kable(mtcars[1:5, 1:5], caption = "mtcars データ")
```

この文書の出力を図 4.2 に示します.

R Markdown 文書内の相互参照の例

図 4.2: R Markdown 文書内の相互参照の例

数式, 定理, 節の見出しにも相互参照することができます. これらのタイプの参照の方法は bookdown 本の 2.2, 2.6節でより詳しく説明されています.

参考文献

———. 2021a. Bookdown: Authoring Books and Technical Documents with r Markdown.