Rmdのfig.capを図を生成するチャンク内にglueで書く

by
カテゴリ:
タグ:

Rmdのchunkオプションである fig.cap の評価は,チャンクの評価が終わってからです.この性質を利用すると,チャンク内にキャプションと図を同居させることが簡単になります.

更にglueパッケージを使うとほぼ,地のMarkdownを書いているくらいのノリでキャプションを書けるようになります.ただし, \ を使う場合はエスケープする必要があります.

**ここからキャプションです.**

 fig.capは,チャンクの評価終了後に評価されます.
従って,図を作るチャンクの中に,fig.capに与える文字列を持つ変数を作ることができます.

 また,長いキャプションは,ほどほどの長さで改行したいですね.
チャンクオプションは改行を許しませんが,チャンク内なら自在です.
paste() を使うと,

    paste(
    "AAA", 
    "BBB",
    "CCC"
    )

といった具合にコンマとダブルクオーテーションマークを多様する必要があります.
glueパッケージも使うと楽でいいですね.
キャプションとして必要かどうかはさておいて,マークダウン記法が許されます.
空白4つでコードブロック化もできます.

glueでは改行のために空白行を挟むらしいのですが,
knit時にMarkdown記法と勘違いされて,段落分けされてしまいます.

強制改行するには,スペース二つを  
末尾に置きましょう.

バックスラッシュ2つでバックスラッシュをエスケープしても
Pandoc Markdown風の改行にはならないみたいです.

**ここまでキャプションです.**

Figure 1: ここからキャプションです.

 fig.capは,チャンクの評価終了後に評価されます.従って,図を作るチャンクの中に,fig.capに与える文字列を持つ変数を作ることができます.

 また,長いキャプションは,ほどほどの長さで改行したいですね.チャンクオプションは改行を許しませんが,チャンク内なら自在です. paste() を使うと,

paste(
"AAA", 
"BBB",
"CCC"
)

といった具合にコンマとダブルクオーテーションマークを多様する必要があります. glueパッケージも使うと楽でいいですね.キャプションとして必要かどうかはさておいて,マークダウン記法が許されます.空白4つでコードブロック化もできます.

glueでは改行のために空白行を挟むらしいのですが, knit時にMarkdown記法と勘違いされて,段落分けされてしまいます.

強制改行するには,スペース二つを
末尾に置きましょう.

バックスラッシュ2つでバックスラッシュをエスケープしても Pandoc Markdown風の改行にはならないみたいです.

ここまでキャプションです.

以下ソース

```{r fig, fig.height = 1, fig.cap = cap}

cap <- glue::glue(
  '
  **ここからキャプションです.**

   fig.capは,チャンクの評価終了後に評価されます.
  従って,図を作るチャンクの中に,fig.capに与える文字列を持つ変数を作ることができます.

   また,長いキャプションは,ほどほどの長さで改行したいですね.
  チャンクオプションは改行を許しませんが,チャンク内なら自在です.
  paste() を使うと,

      paste(
      "AAA", 
      "BBB",
      "CCC"
      )

  といった具合にコンマとダブルクオーテーションマークを多様する必要があります.
  glueパッケージも使うと楽でいいですね.
  キャプションとして必要かどうかはさておいて,マークダウン記法が許されます.
  空白4つでコードブロック化もできます.

  glueでは改行のために空白行を挟むらしいのですが,
  knit時にMarkdown記法と勘違いされて,段落分けされてしまいます.

  強制改行するには,スペース二つを  
  末尾に置きましょう.

  バックスラッシュ2つ\\
  でバックスラッシュをエスケープしても
  Pandoc Markdown風の改行にはならないみたいです.

  **ここまでキャプションです.**
  '
)

plot(1)

```

Enjoy!