在Rmarkdown中使用captioner引用字幕时,字幕编号不按顺序排列

时间:2018-08-31 00:29:58

标签: r-markdown caption bookdown

我正在使用字幕(https://cran.r-project.org/web/packages/captioner/vignettes/using_captioner.html)在Rmarkdown中创建表标题-主要原因是因为我正在使用huxtable进行条件格式设置并导出到word。这是我发现的唯一具有编号字幕的编号。

我试图引用标题,但是当引用标题时,标题编号不是按顺序排列的,仅当table_nums(...,display =“ cite”)在表格之前时才使用。我试图提供表号的范围,它改变了最后一个表的号。如果在字幕后加上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,])
```

结果:enter image description here

1 个答案:

答案 0 :(得分:0)

一个(可怕的)解决方法是使用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代码,但是我希望从上至下读取一次文档,因此编号以先到先得的方式存储。因此,我不确定还有其他方法可以解决此问题,因为这将涉及某种预处理阶段。