Rmarkdown / Bookdown: отдельная нумерация рисунков для дополнительного раздела

Некоторые виды документов, например журнальные статьи, часто имеют дополнительный раздел, в котором нумерация цифр отличается от основной части.

Например, в основной части у вас может быть рис. 1-5. Но затем, для дополнительного раздела, нумерация возобновляется как Рис S1, S2, S3 и т. Д.

Bookdown позволяет делать перекрестные ссылки (\@ref(fig:label) но я не уверен, как перезапустить нумерацию в отдельном разделе. Есть ли хороший способ сделать это?


person Alex    schedule 07.05.2018    source источник


Ответы (1)


Вы можете определить новую функцию LaTeX в заголовке YAML вашего .rmd файл следующим образом:

\newcommand{\beginsupplement}{
  \setcounter{table}{0}  
  \renewcommand{\thetable}{S\arabic{table}} 
  \setcounter{figure}{0} 
  \renewcommand{\thefigure}{S\arabic{figure}}
}

Затем введите \beginsupplement, когда вы будете готовы начать маркировать рисунки и таблицы с помощью S1, S2 ... и т. Д. Это решение отлично работает, если вы экспортируете только в PDF, поскольку оно использует команды LaTeX для форматирования вывода. Поэтому он не будет работать для выходных данных HTML или Word.

---
title: "title"
author:
- My Namington*
- '*\textit{[email protected]} \vspace{5mm}'
output: 
  bookdown::pdf_document2
fontsize: 12pt
header-includes: 
  \usepackage{float} \floatplacement{figure}{H} 
  \newcommand{\beginsupplement}{\setcounter{table}{0}  \renewcommand{\thetable}{S\arabic{table}} \setcounter{figure}{0} \renewcommand{\thefigure}{S\arabic{figure}}}
---

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


# Main text
Here is the main text of my paper, and a link to a normally-labelled Figure \@ref(fig:irisPlot).

```{r irisPlot, fig.cap="This is a figure caption."}

ggplot(iris, aes(Species, Sepal.Length, colour = Species)) + geom_jitter()
```

\newpage
# Supplementary material {-}

\beginsupplement


Here is the supplement, including a link to a figure prefixed with the letter S Figure \@ref(fig:irisPlot2).

```{r irisPlot2, echo=FALSE, fig.cap= "This is a supplementary figure caption."}
ggplot(iris, aes(Sepal.Width, Sepal.Length, colour = Species)) + 
    geom_point() + 
    stat_smooth(method = "lm")
```

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

person lukeholman    schedule 14.07.2018
comment
Я немного скорректировал ответ, чтобы использовать перекрестные ссылки с использованием bookdown и прояснить некоторые моменты (это не совсем оправдало мою публикацию его в качестве собственного ответа). bookdown.org/yihui/bookdown/cross-references.html - person Michael Harper; 22.07.2018
comment
Спасибо, Майк! Может быть, мой первый ответ будет принят :) - person lukeholman; 01.08.2018