Подтвердить что ты не робот

Подписи к рисункам, ссылки с использованием knitr и уценка на html

Я пишу Rmd файл, который обрабатывается knitr в HTML. Он содержит некоторые фрагменты R, которые генерируют цифры, которые сохраняются в виде URI данных в HTML.

1) Как добавить подпись к такому изображению? Я хотел бы иметь заголовок, который говорит что-то вроде "Рисунок 3: blah blah blah", где автоматически создается "3".

2) Как я могу позже ссылаться на это изображение, то есть "как вы видите на рисунке 3, бла-бла".

4b9b3361

Ответ 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")`

Ответ 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)