Нумерация титров не в последовательном порядке при цитировании титров с субтитром в Rmarkdown

Я использую субтитры (https://cran.r-project.org/web/packages/captioner/vignettes/using_captioner.html) для создания подписей к таблицам в Rmarkdown — основная причина в том, что я использую huxtable для условного форматирования и экспорта в слово. Это единственное, что я нашел с пронумерованными подписями.

Я пытался ссылаться на заголовки, но номер заголовка не в последовательном порядке при цитировании заголовков, а только в том случае, если table_nums(..., display="cite") находится перед таблицами. Я пытался указать диапазон номеров таблиц, и он изменил номер последней таблицы. I Номер не изменяется, если после подписи ставится r table_nums(' Third_cars_table',display = "cite"). Есть ли способ убедиться, что номера таблиц остаются в последовательном порядке? Я также был бы рад лучшему решению для пронумерованных подписей.

Воспроизводимый пример:

---
title: "Untitled"
output: bookdown::word_document2
---

```{r setup, include=FALSE}
library(captioner)
library(huxtable)
library(knitr)
library(pander)
table_nums <- captioner(prefix = "Table")
fig_nums <- captioner(prefix = "Figure")
knitr::opts_chunk$set(echo = TRUE)
```


## Description of tables
I am trying to put a description of tables 
and say that these results are shown table numbers ranging 
from the first table (`r table_nums('first_cars_table',display = "cite")`)
 to the last table (`r table_nums('third_cars_table',display = "cite")`)

```{r, results='asis',echo=FALSE,eval.after=TRUE}
tablecap1=cat(table_nums(name="first_cars_table",caption='First car table'))
kable((cars[1:5,]))

tablecap2=cat(table_nums(name="second_cars_table",caption='second car table'))
kable(cars[6:10,])

tablecap3=cat(table_nums(name="third_cars_table",caption='third car table'))
kable(cars[10:15,])
```

Результаты: введите здесь описание изображения


person Ricecakes    schedule 31.08.2018    source источник


Ответы (1)


(Ужасный) обходной путь - вручную указать порядок номеров, используя display = FALSE. Например, вставка следующего кода в начало документа обеспечит последовательную нумерацию t1-t5 независимо от того, где появляются таблицы или первые цитаты:

`r table_nums('t1', display = FALSE)`
`r table_nums('t2', display = FALSE)`
`r table_nums('t3', display = FALSE)`
`r table_nums('t4', display = FALSE)`
`r table_nums('t5', display = FALSE)`

Я не исследовал код captioner, но ожидаю, что документ читается сверху вниз один раз и, следовательно, нумерация сохраняется в порядке поступления. Таким образом, я не уверен, что есть какие-либо другие способы обойти это, поскольку это потребует какой-то стадии предварительной обработки.

person Alex    schedule 17.11.2020