web-dev-qa-db-ja.com

図のキャプション、knitrを使用した参照、htmlへのマークダウン

KnitrによってHTMLに処理されるRmdファイルを作成しています。 HTMLにデータURIとして保存される図を生成するいくつかのRチャンクが含まれています。

1)このような画像にキャプションを追加するにはどうすればよいですか? 「図3:何とか何とか」というような、「3」が自動的に生成されるキャプションが欲しい。

2)後でこの画像を参照するには、「図3でわかるように、何とか何とか」。

37
Jack Tanner
  1. Rの単純なカウンターを使用して、数字を作成できます。 ここに1つの例 を参照してください。問題は、マークダウンレンダラーが図のキャプションをレンダリングするかどうかです。RMarkdown v1はレンダリングしませんが、 v2 (Pandocに基づく)はレンダリングします。
  2. 私は知らない。図の識別子​​としてラベルを挿入する直接的な方法はないため、純粋なMarkdownで図を相互参照することはおそらく不可能です。このような問題が発生したら、(1)本当に必要だと思いますか? (2)複雑な構造を持つドキュメントを意図している場合、LaTeX(Rnwドキュメント)を直接使用する方が良いと思います。
16
Yihui Xie

私はパーティーに遅れていますが、最近キャプションを付けてknitrと相互参照するために最近作成した小さなパッケージについて言及したかったのです。 kfigrと呼ばれ、devtools::install_github('mkoohafkan/kfigr')を使用してインストールできます。まだ活発に開発されていますが、主な機能はそこにあります。ビネットを必ずチェックしてください。いくつかの使用例を示し、図のキャプションとアンカーのフックを定義します(後でパッケージにknitrをインポートして、ロード時にそれらのフックを定義することもできます)。

編集:kfigrがCRANで利用可能になりました!

25
mikeck

また、パーティーに非常に遅れて、私はYihuisの提案を変更しました here

```{r functions, include=FALSE}
# A function for captioning and referencing images
fig <- local({
    i <- 0
    ref <- list()
    list(
        cap=function(refName, text) {
            i <<- i + 1
            ref[[refName]] <<- i
            paste("Figure ", i, ": ", text, sep="")
        },
        ref=function(refName) {
            ref[[refName]]
        })
})
```
```{r cars, echo=FALSE, fig.cap=fig$cap("cars", "Here you see some interesting stuff about cars and such.")}
plot(cars)
```

What you always wanted to know about cars is shown in figure `r fig$ref("cars")`
11
user3355146

これらの両方を実行する1つの方法をここで説明します。 http://rmflight.github.io/posts/2012/10/papersinRmd.html

もう1つはここで説明します(ただし、#2を実行するかどうかはわかりません)。 http://gforge.se/2014/01/fast-track-publishing-using-knitr-part-iii/

5
Tom

別の解決策:

https://github.com/adletaw/captioner

READMEから:

captioner() returns a captioner function for each set of figures, tables, etc. that you want to create. See the help files for more details.

For example:

> fig_nums <- captioner()

> fig_nums("my_pretty_figure", "my pretty figure's caption")

"Figure 1: my pretty figure's caption"

> fig_nums("my_pretty_figure", cite = TRUE)
2
Ed Hagen