Невозможность перекрестной ссылки на рисунки и таблицы с опцией `beamer_presentation` в` knitr`

Почему \@ref() нотация не работает с визуальным представлением?

Следующий вопрос может напомнить вам некоторые вопросы о перекрестных ссылках при создании PDF-документа, например this, но методы, представленные в ответы не помогли мне, когда я делаю проектор-презентации.

Теперь я запутался, потому что обозначения \@ref(fig:label-to-refer-figure) и \@ref(tab:label-to-refer-table) для ссылки на рисунок / таблицу не работают, когда я вяжу .Rmd файл с опцией output: beamer_presentation. Как показано на следующих изображениях, необработанные коды для перекрестной ссылки появляются в выведенном PDF-файле, и я не могу сослаться на номер рисунка / таблицы. Несмотря на то, что цитаты подходят даже в указанной среде, а также в текстовом поле, перекрестная ссылка для номера рисунка / таблицы не действует должным образом.

введите здесь описание изображения

введите здесь описание изображения

Моя среда

  • R версия 3.5.1 (02.07.2018)
  • Платформа: x86_64-w64-mingw32 / x64 (64-разрядная)
  • Работает под: Windows 10 x64 (сборка 17134)
  • knitr_1.20
  • rmarkdown_1.10
  • RStudio v1.2.1206 (предварительная версия) ‹- я предпочитаю это по этой причине

MWE

MWE, который я публикую здесь, создан из следующих источников: test-beamer.Rmd и myref.bib.

test-beamer.Rmd

---
title: "Test"
subtitle: |
  | subtitle,
  | with a line break
author: |
  | CLR
  | Rafael
institute: |
  | Now I'm here,
  | Now I'm there
date: "`r format(Sys.time(), '%Y/%b/%d')`" #English
output: 
  beamer_presentation:
    keep_tex: yes
    latex_engine: lualatex
    theme: "AnnArbor"
    colortheme: "dolphin"
    fonttheme: "structurebold"
    toc: true
    #toc_depth: 3
    #number_sections: TRUE
    fig_caption: TRUE
    dev: cairo_pdf
    #extra_dependencies: subfig
    citation_package: natbib
    slide_level: 2 
bibliography: bibs/myref.bib
biblio-style: apa
always_allow_html: yes
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```

## The only thing

With Table \@ref(tab:under-pressure-table), @test-master shows that Figure \@ref(fig:under-pressure) depicts...

## Slide with Bullets in which I want to refer a figure

- \@ref(fig:under-pressure)
- @test-master
- \@ref(tab:under-pressure-table)

## Slide with R Output

```{r cars, echo = TRUE}
summary(cars)
```

## Slide with Plot

```{r under-pressure, fig.cap='Under Pressure', fig.pos='h', out.width="0.75\\textwidth"}
plot(pressure)
```

## Slide with Table

```{r under-pressure-table, caption = "This is a table"}
knitr::kable(pressure)
```

## More extraordinary

With Table \@ref(tab:under-pressure-table), @test-master shows that Figure \@ref(fig:under-pressure) depicts...

РЕДАКТИРОВАТЬ: Я добавил fig.cap='Under Pressure', fig.pos='h', out.width="0.75\\textwidth" к блоку рисунка и caption = "This is a table" к knitr::kable(). Без этих кодов ни заголовок, ни номера таблиц / рисунков не отображаются вообще ... Однако проблема сохраняется даже после передачи их для всего файла .Rmd, если вы не выполните ответ @Yihui.

myref.bib

@master{test-master,
author = {Freddie Mercury and Brian May and John Deacon and Roger Taylor},
title = {Bohemian {R}hapsody: {W}e are the champions},
school = {{Queen}},
year = {2018},
address = {London}
}

person Carlos Luis Rivera    schedule 04.01.2019    source источник


Ответы (1)


Обозначение \@ref() используется только для резервирования. Чтобы перенести эту функцию в общие документы R Markdown, вы можете установить параметр base_format для определенного формата вывода bookdown, например,

output:
  bookdown::pdf_book:
    base_format: rmarkdown::beamer_presentation

См. раздел 3.4 книги bookdown. для подробностей.

Заполненный раздел yaml, который подходит для MWE этого вопроса, может быть таким:

---
title: "Test"
subtitle: |
  | subtitle,
  | with a line break
author: |
  | CLR
  | Rafael
institute: |
  | Now I'm here,
  | Now I'm there
date: "`r format(Sys.time(), '%Y/%b/%d')`" #English
output:
  bookdown::pdf_book:
    base_format: "function(..., number_sections) rmarkdown::beamer_presentation(...)"
    number_sections: true
    keep_tex: yes
    latex_engine: lualatex
    theme: "AnnArbor"
    colortheme: "dolphin"
    fonttheme: "structurebold"
    toc: true
    fig_caption: TRUE
    dev: cairo_pdf
    #extra_dependencies: subfig
    citation_package: natbib
    slide_level: 2     
bibliography: bibs/myref.bib
biblio-style: apa
always_allow_html: yes
---
person Yihui Xie    schedule 04.01.2019
comment
Как вы уже ответили на другой вопрос ранее, нам нужно написать base_format: "function(..., number_sections) rmarkdown::beamer_presentation(...)" вместо base_format: rmarkdown::beamer_presentation, чтобы избежать сообщения об ошибке, описанного здесь. Более того, логические переменные в number_sections после раздела base_format не влияют на результат: мы можем получить окончательный вывод в формате pdf независимо от того, что мы укажем, true или false в number_sections. - person Carlos Luis Rivera; 05.01.2019
comment
@Yihui: как будет выглядеть команда, чтобы повторить то же самое для ioslides, то есть включить ссылку на резервное копирование в слайды, созданные с помощью ioslides? Большое спасибо! - person mavericks; 13.02.2021