【问题标题】:Restart Figure Numbering for Appendix / Supplementary Material in bookdown重新开始为书籍中的附录/补充材料编号
【发布时间】:2025-12-22 00:35:11
【问题描述】:

我正在为需要补充材料的期刊撰写文章。我希望使用诸如SuppMat: 之类的唯一标签而不是默认的fig: 将图形和表格发送到此部分。如果没有,我可以使用默认的fig 标签,但我需要在文档的Supplementary Material部分重新编号。

我知道使用乳胶的一个答案(找到here)但我必须在导出到docx 时完成此操作。下面是一个使用officedown的可重现示例

---
output: 
  officedown::rdocx_document
---

```{r setup, include=FALSE}
pacman::p_load(knitr, officedown, officer)
knitr::opts_chunk$set(echo = FALSE,
                      eval = TRUE,
                      fig.cap = TRUE)
```

# Main Text

Please see Supplementary Figure \@ref(fig:appendix-fig1) and Figure \@ref(fig:main-fig1). 


```{r fig.id="main-fig1", fig.cap="This should be labelled **Figure 1**"}
barplot(1:5, col=1:5)
```

```{r tab.id="main-tab1", tab.cap="Main Text Table 1"}
head(mtcars)
```
\newpage

# Supplementary Materials {#SuppMat}

```{r fig.id="appendix-fig1", fig.cap="This figure should be labelled **Supplementary Figure 1**"}
barplot(1:5, col=1:5)
```

```{r tab.id="appendix-tab1", tab.cap="Should be labelled **Supplementary Table 1**"}
head(mtcars)
```

【问题讨论】:

    标签: r-markdown knitr bookdown officer officedown


    【解决方案1】:

    在搜索了多个论坛和几个小时后,我能够使用officedown 包提出一个解决方案。希望这可以帮助其他人。有关更多详细信息,请查看run_autonum 函数。

    ---
    output: officedown::rdocx_document
    ---
    
    ```{r setup, include=FALSE}
    pacman::p_load(officedown, officer, knitr)
    knitr::opts_chunk$set(echo = FALSE, fig.cap = TRUE)
    
    
    ft_base <- fp_text(font.family = "Cambria", font.size = 12, bold = TRUE)
    ft1 <- update(ft_base, shading.color='#EFEFEF', color = "red")
    ft2 <- update(ft_base, color = "#C32900")
    
    srcfile <- file.path( R.home("doc"), "html", "logo.jpg" )
    extimg <- external_img(src = srcfile, height = 1.06/5, width = 1.39/5)
    ```
    
    
    
    ## References
    
    This is a reference to an supplementary image caption whose number is Supplementary Figure \@ref(fig:faithfuld-plot) and \@ref(fig:supp-bar).
    
    Testing another figure with a barplot in Figure \@ref(fig:plotbar)
    
    ```{r fig.id="plotbar", fig.cap = "Main Figure"}
    barplot(1:8, col=1:2)
    ```
    
    ## Supplementary Material
    
    ```{r fig.id="faithfuld-plot"}
    knitr::include_graphics("images/MyImage.png") # Use your own figure here (I needed to test with knitr for my workflow)
    
    block_caption("First Appendix Figure",
                  style = "Figure",
                  autonum = run_autonum(seq_id = 'fig', 
                                        bkm = 'faithfuld-plot',
                                        pre_label = "Supplemental Figure ",
                                        start_at=1))
    ```
    
    ```{r fig.id="supp-bar"}
    barplot(1:8, col=1:2)
    
    block_caption("Second Appendix Figure",
                  style = "Figure",
                  autonum = run_autonum(seq_id = 'fig', 
                                        bkm = 'supp-bar',
                                        pre_label = "Supplemental Figure ",
                                        start_at= NULL))
    ```
    

    【讨论】: