Отключить автоматическую нумерацию фигур в выводе pdf с помощью r markdown / knitr

Я пишу документ в R markdown (.rmd). Хотелось бы иметь возможность связать как Word, так и PDF-файлы. У меня проблемы с нумерацией цифр. При выводе в PDF числа автоматически нумерулись (через латексный вывод fig.lp?). Но в Word числа не нумеровались.

После долгих поисков я нашел код, который обеспечит нумерацию фигур в Word - но теперь я получаю двойную нумерацию страниц при вязании PDF. Я новичок, поэтому не могу вставить изображение. Но подпись к рисунку выглядит так:

Рисунок 1. Рисунок 1. Бла-бла-бла

Есть ли способ запретить автоматическую нумерацию PDF-файлов?

Аналогичный вопрос был задан здесь, но решения не было. Мой заголовок YAML и фрагмент нумерации рисунков включены ниже.

YAML:

output:
  pdf_document:
    fig_caption: yes
    keep_tex: yes
  word_document:
    fig_caption: yes

Код нумерации рисунков (можно найти через http://galahad.well.ox.ac.uk/repro/)

figRef <- local({
    tag <- numeric()
    created <- logical()
    used <- logical()
    function(label, caption, prefix = options("figcap.prefix"), 
        sep = options("figcap.sep"), prefix.highlight = options("figcap.prefix.highlight")) {
        i <- which(names(tag) == label)
        if (length(i) == 0) {
            i <- length(tag) + 1
            tag <<- c(tag, i)
            names(tag)[length(tag)] <<- label
            used <<- c(used, FALSE)
            names(used)[length(used)] <<- label
            created <<- c(created, FALSE)
            names(created)[length(created)] <<- label
        }
        if (!missing(caption)) {
            created[label] <<- TRUE
            paste0(prefix.highlight, prefix, " ", i, sep, prefix.highlight, 
                " ", caption)
        } else {
            used[label] <<- TRUE
            paste(prefix, tag[label])
        }
    }
})

затем это вызывается в параметрах чанка следующим образом:

```{r, echo=FALSE, message=FALSE, fig.width=6, fig.cap=figRef("Ex-Airfoil", "Example NACA Airfoil")}

person angie_s    schedule 08.01.2015    source источник
comment
Отличный вопрос. Жаль, что я могу дать только один балл.   -  person Dieter Menne    schedule 08.01.2015


Ответы (1)


Есть ли способ запретить автоматическую нумерацию для PDF?

Конечно. Добавьте переменную format для вашего выходного формата и обработчик для этого формата в figref. С предварительным выпуском RStudio вы можете использовать format <- knitr::opts_knit$get("out.format"), но с выпускной версией вам нужно будет установить его вручную.
Затем в figref() добавьте все, что вы хотите для вывода ...

    if ( format == "latex" ) return( caption )
    if (!missing(caption)) {
    --- >8 ---

Лично я бы использовал предварительную версию и оператор switch для обработки. По строкам https://stackoverflow.com/a/27321367/173985.

person Thell    schedule 21.01.2015