Табличные перекрестные ссылки в Bookdown с выходом MS-Word?

Как сделать так, чтобы перекрестные ссылки таблиц работали в документе bookdown со всеми выходными форматами pdf, docx и html? Или, может быть, более конкретно, как я могу заставить перекрестные ссылки таблиц работать для flextables?

Ниже приведен минимальный рабочий пример. Вторая таблица, использующая kable(), помогает мне почти полностью. Проблема в том, что отрисовка таблицы в выводе docx совершенно непригодна (не в этом MWE, а в моем фактическом варианте использования). Я рассматривал создание таблицы условно, используя flextable для вывода docx и kable для вывода pdf и html. flextable хорошо выглядит в выводе docx. Но ссылки на таблицы не работают!

---
title: "A Book"
author: "Frida Gomam"
site: bookdown::bookdown_site
documentclass: book
output:
  bookdown::word_document2: default
  bookdown::pdf_book: default
  bookdown::gitbook: default
---

# Hello World

```{r setup, include=FALSE}
library(dplyr)
library(flextable)
```

<!--- this tabulates in docx and html output --->
```{r, test01, echo = FALSE, eval = !knitr::is_latex_output()}
mtcars %>%
  head() %>%
  flextable() %>%
  set_caption("My caption!") %>%
  autofit()
```

<!--- this reference does not work in any form of output --->
Trying to reference Table \@ref(tab:test01). 

<!--- this tabulates in pdf, docx, html output (but very ugly in docx output) --->
```{r, test02, echo = FALSE}
mtcars %>%
  head() %>%
  knitr::kable(caption = "Need a caption!")
```

<!--- this reference works in pdf, docx, html output --->
Trying to reference Table \@ref(tab:test02). 

person lowndrul    schedule 19.06.2019    source источник
comment
set_caption должен иметь эффект, так как новая версия flextable (0.5.5 скоро на кране). Тем не менее, bookdown нумерует каждое заголовок таблицы (начиная с Table: после или перед таблицей уценки), и flextable не может подключиться к этому процессу (я работаю над этим, но на данный момент у меня нет решения). То же самое относится и к гибкому HTML-выводу. Я бы хотел это решить, если есть идеи, будем рады   -  person David Gohel    schedule 25.06.2019
comment
Связанный вопрос: stackoverflow.com/questions/49676982 / проблема с github: github.com/rstudio/bookdown/issues/746   -  person Peter    schedule 09.03.2020


Ответы (1)


Добавьте tab.cap="Your Caption" в параметры отрезка вязального устройства:

```{r, test03, echo = FALSE, eval = !knitr::is_latex_output(), tab.cap="My flextable caption!"}
mtcars %>%
  head() %>%
  flextable() %>%
  autofit()
```

Reference to Table \@ref(tab:test03). 

Дополнительные параметры заголовков таблиц см. здесь.

Это также правильно добавляет числа в таблицы. Если вы хотите, чтобы заголовки таблиц имели формат, указанный в справочном документе, например заголовок таблицы или заголовок, вы можете указать tab.cap.style = "Table Caption".

person HBat    schedule 11.08.2020
comment
Имя чанка не должно содержать подчеркивания, иначе перекрестная ссылка не будет работать. - person Paul Rougieux; 01.09.2020