Подписи к рисункам, ссылки с использованием knitr и уценка на html
Я пишу Rmd файл, который обрабатывается knitr в HTML. Он содержит некоторые фрагменты R, которые генерируют цифры, которые сохраняются в виде URI данных в HTML.
1) Как добавить подпись к такому изображению? Я хотел бы иметь заголовок, который говорит что-то вроде "Рисунок 3: blah blah blah", где автоматически создается "3".
2) Как я могу позже ссылаться на это изображение, то есть "как вы видите на рисунке 3, бла-бла".
Ответы
Ответ 1
- Вы можете создать числа цифр с помощью простого счетчика в R; см. один пример здесь. Проблема заключается в том, будет ли рендеринга уценки отображать для вас цифровую подпись: R Markdown v1 не будет, но v2 (на основе Pandoc) будет.
- Я не знаю. Не существует прямого способа вставить ярлык в качестве идентификатора для цифр, поэтому, вероятно, невозможно перекрещивать контрольные цифры с чистым Markdown. Как только у вас возникнут такие проблемы, подумайте (1), что мне действительно нужно? (2) если он предназначен для документа со сложной структурой, я думаю, что лучше использовать LaTeX напрямую (документы Rnw).
Ответ 2
Я опаздываю на вечеринку, но я хотел упомянуть небольшой пакет, который я недавно создал, чтобы сделать подписи к рисункам и перекрестные ссылки с помощью knitr
. Он называется kfigr
, и его можно установить с помощью devtools::install_github('mkoohafkan/kfigr')
. Он по-прежнему активно развивается, но основная функциональность есть. Не забудьте проверить виньетку, она показывает некоторые примеры использования и определяет некоторые крючки для подписи и привязки фигур (позже я могу выбрать импорт пакета knitr
и определить эти крючки при загрузке).
EDIT: kfigr теперь доступен на CRAN!
Ответ 3
Также очень поздно для партии я изменил предложение Yihuis здесь, которое он также связал выше, чтобы сделать ссылку.
```{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")`
Ответ 4
Один из способов сделать это можно описать здесь: http://rmflight.github.io/posts/2012/10/papersinRmd.html
Здесь описывается другая (но я не знаю, делает ли это ваш №2). http://gforge.se/2014/01/fast-track-publishing-using-knitr-part-iii/
Ответ 5
Другое решение:
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 caption")
"Figure 1: my pretty figure caption"
> fig_nums("my_pretty_figure", cite = TRUE)