Lorsque vous utilisez la comptabilité (document unique), les chiffres sont numérotés automatiquement comme:
Figure 1 Texte de la légende de la figure.
En chimie, la convention consiste à étiqueter les figures principales comme:
Figure 1. Texte de la légende de la figure.
et pour le document d'information justificatif:
Figure S1. Texte de la légende de la figure.
Aussi dans la référence de la figure dans le texte, nous avons besoin:
... comme le montre la figure 1, ...
le texte de référence ne doit donc pas être en gras.
Comment puis-je faire en sorte que bookdown (ou rmarkdown) produise des légendes de figures et de tableaux comme ceci: "Figure S1. Du texte." et "Tableau S1. Du texte." ?
J'ai besoin que ce soit au format MS Word.
Jusqu'à présent, j'ai essayé de modifier le document _bookdown.yml comme suit:
language:
label:
fig: "**Figure S**"
tab: "**Table S**"
Cela donne: Figure S 1 Du texte ... et la référence en ligne lors de l'utilisation:
Figure S\@ref(fig:Xray)
est la figure S1 qui est ok.
Voici un exemple minimal:
---
title: Supporting Information
subtitle: "Iron(I) etc"
author: "Some people here"
abstract: "Added the addresses here since there is no abstract in the SI"
output:
bookdown::Word_document2:
fig_caption: yes
toc: yes
toc_depth: 1
---
## Reaction of etc.
Some text (Figure S\@ref(fig:Xray)). Some text followed by a figure:
```{r Xray, fig.cap="Single-crystal X-ray structure of some text", echo=FALSE}
plot(cars)
```
Some text etc. followed by a table:
```{r DipUVvis, echo=FALSE, tab.cap="Table caption"}
df<-data.frame(Entry=c('AMM 51$3^a$','AMM 52^*a*^'),
Precat=c('[FeBr~2~(dpbz)~2~] (4.00)','[FeBr~2~(dpbz)~2~]
(2.00)'))
kable(head(df), format = "markdown")
```
Le code ci-dessus produit Figure S 1 dans la légende de la figure mais PAS Figure S1. (Notez qu'il est tout en gras et un point final à la fin).
À ma connaissance, vous ne pouvez pas contrôler les légendes des figures/tableaux pour faire ce que vous voulez avec rmarkdown/bookdown. Vous pouvez utiliser le package captioner
pour y parvenir, avec un hic: il fonctionne très bien avec les sorties rmarkdown
, mais vous devrez effectuer un post-traitement avec les sorties bookdown
. Voici le fichier Rmd qui produit le style de légende souhaité:
---
title: Supporting Information
subtitle: "Iron(I) etc"
author: "Some people here"
abstract: "Added the addresses here since there is no abstract in the SI"
output:
Word_document:
fig_caption: yes
---
```{r, include=F}
library(captioner)
tables <- captioner(prefix = "Table S", suffix = ". ", style="b", style_prefix=TRUE, auto_space = FALSE)
figures <- captioner(prefix = "Figure S", suffix = ". ", style="b", style_prefix=TRUE, auto_space = FALSE)
figures("Xray1", "Single-crystal X-ray structure of some text (1)", display=FALSE)
figures("Xray2", "Single-crystal X-ray structure of some text (2)", display=FALSE)
figures("Xray3", "Single-crystal X-ray structure of some text (3)", display=FALSE)
```
## Reaction of etc.
Some text. Some text followed by `r figures("Xray1", display="cite")`, which is the same figure as `r figures("Xray3", display="cite")` but comes after `r figures("Xray2", display="cite")`.
```{r Xray, fig.cap=figures("Xray1"), echo=FALSE}
plot(cars)
```
```{r Xray2, fig.cap=figures("Xray2"), echo=FALSE}
plot(cars)
```
```{r Xray3, fig.cap=figures("Xray3"), echo=FALSE}
plot(cars)
```
Some text etc. followed by `r tables("tab-DipUVvis", display="cite")`:
```{r DipUVvis, echo=FALSE}
df<-data.frame(Entry=c('AMM 51$3^a$','AMM 52^*a*^'),
Precat=c('[FeBr~2~(dpbz)~2~] (4.00)','[FeBr~2~(dpbz)~2~]
(2.00)'))
knitr::kable(head(df), caption=tables("tab-DipUVvis", "Table Caption"))
```
Cependant, si vous basculez pour utiliser la sortie bookdown :: Word_document2, la légende de la figure devient "Figure 1: Figure S1. ...". Je n'ai pas trouvé de moyen de supprimer "Figure 1:" et je dois effectuer un post-traitement dans ma sortie pour rechercher et remplacer tous les "Figure?:" Par "".
Bien qu'il n'y ait pas de méthode pour styliser les préfixes de légende des figures via bookdown
, il est possible de le faire en appliquant un filtre Lua personnalisé (qui nécessite pandoc
2.0 ou version ultérieure).
En supposant que vous partez de
Figure 1 Texte de la légende de la figure.
le filtre suivant devrait faire ce que vous voulez (voir https://pandoc.org/lua-filters.html#inline pour des options de formatage supplémentaires):
function Image (img)
img.caption[1] = pandoc.Strong(img.caption[1])
img.caption[3] = pandoc.Strong(img.caption[3])
img.caption[4] = pandoc.Strong(". ")
return img
end
(En admettant que img.caption[2]
est l'espace blanc entre Figure
et le nombre et img.caption[4]
est l'espace blanc entre le nombre et la légende)
En supposant que vous placez ce filtre dans un fichier appelé figure_caption_patch.lua
dans le répertoire de votre document rmarkdown
, vous pouvez l'appliquer en ajoutant un argument pandoc
dans la matière YAML:
output:
bookdown::Word_document2:
pandoc_args: ["--lua-filter", "figure_caption_patch.lua"]
Cela devrait donner le style de légende souhaité.
Figure 1. Texte de la légende de la figure.
Après ce guide pour définir Word (.docx
) style , vous pourriez faire fig. et tab. les légendes en gras, bien que toute la ligne de légende puisse être en gras ... Je veux dire que nous avons un moyen de créer une légende dans .docx
via RMarkdown comme ceci automatiquement:
Figure S1: Structure à rayons X monocristallin de certains textes (1)
Cependant, il semble toujours difficile d'en faire un comme ceci:
Figure S1 : Structure des rayons X monocristallins d'un texte (1)
J'imagine que vous ne voulez mettre en gras que la section " Figure/Tableau S1 ", pas toute la ligne de légende. Néanmoins, si vous êtes intéressé par la mise en forme .docx
fichier avec Rmarkdown, vous pouvez vérifier le lien que j'ai ajouté ci-dessus et voir la description suivante.
.Rmd
fichier @LmW. nous a fourni pour obtenir le premier .docx
production.Si vous avez un problème avec le package captioner
, vous pouvez également utiliser le suivant.
---
title: Supporting Information
subtitle: "Iron(I) etc"
author: "Some people here"
abstract: "Added the addresses here since there is no abstract in the SI"
output:
Word_document:
fig_caption: yes
---
```{r, include=F}
library(captioner)
#`captioner` package (Ver. 2.2.3) in my envionment returns the following error messages:
#Error in captioner(prefix = "Table S", suffix = ". ", style = "b", style_prefix = TRUE, :
# unused arguments (suffix = ". ", style = "b", style_prefix = TRUE)
#Error in captioner(prefix = "Figure S", suffix = ". ", style = "b", style_prefix = TRUE, :
# unused arguments (suffix = ". ", style = "b", style_prefix = TRUE)
#tables <- captioner(prefix = "Table S", suffix = ". ", style="b", style_prefix=TRUE, auto_space = FALSE)
#figures <- captioner(prefix = "Figure S", suffix = ". ", style="b", style_prefix=TRUE, auto_space = FALSE)
tables <- captioner(prefix = "Table S", auto_space = FALSE)
figures <- captioner(prefix = "Figure S", auto_space = FALSE)
figures("Xray1", "Single-crystal X-ray structure of some text (1)", display=FALSE)
figures("Xray2", "Single-crystal X-ray structure of some text (2)", display=FALSE)
figures("Xray3", "Single-crystal X-ray structure of some text (3)", display=FALSE)
```
## Reaction of etc.
Some text. Some text followed by `r figures("Xray1", display="cite")`, which is the same figure as `r figures("Xray3", display="cite")` but comes after `r figures("Xray2", display="cite")`.
```{r Xray, fig.cap=figures("Xray1"), echo=FALSE}
plot(cars)
```
```{r Xray2, fig.cap=figures("Xray2"), echo=FALSE}
plot(cars)
```
```{r Xray3, fig.cap=figures("Xray3"), echo=FALSE}
plot(cars)
```
Some text etc. followed by `r tables("tab-DipUVvis", display="cite")`:
```{r DipUVvis, echo=FALSE}
df<-data.frame(Entry=c('AMM 51$3^a$','AMM 52^*a*^'),
Precat=c('[FeBr~2~(dpbz)~2~] (4.00)','[FeBr~2~(dpbz)~2~]
(2.00)'))
knitr::kable(head(df), caption=tables("tab-DipUVvis", "Table Caption"))
```
Image Caption
et Table Caption
en gras.En premier .docx
fichier,
Ctrl
+ B
ou Command
+ B
);Alt
+ Ctrl
+ Shift
+ S
;Image Caption
ou Table Caption
;Si vous avez effectué les étapes ci-dessus dans l'image et la légende du tableau, veillez à enregistrer le .docx
fichier en tant que Word-styles-reference-01.docx
dans votre répertoire de travail.
.Rmd
fichier ajoutant le reference_docx
ligne pour obtenir votre finale .docx
production.Ajouter reference_docx: Word-styles-reference-01.docx
sous Word_document:
ligne. Voir la ligne 7 dans l'exemple suivant.
---
title: Supporting Information
subtitle: "Iron(I) etc"
author: "Some people here"
abstract: "Added the addresses here since there is no abstract in the SI"
output:
Word_document:
reference_docx: Word-styles-reference-01.docx
fig_caption: yes
---
```{r, include=F}
library(captioner)
#`captioner` package (Ver. 2.2.3) in my envionment returns the following error messages:
#Error in captioner(prefix = "Table S", suffix = ". ", style = "b", style_prefix = TRUE, :
# unused arguments (suffix = ". ", style = "b", style_prefix = TRUE)
#Error in captioner(prefix = "Figure S", suffix = ". ", style = "b", style_prefix = TRUE, :
# unused arguments (suffix = ". ", style = "b", style_prefix = TRUE)
#tables <- captioner(prefix = "Table S", suffix = ". ", style="b", style_prefix=TRUE, auto_space = FALSE)
#figures <- captioner(prefix = "Figure S", suffix = ". ", style="b", style_prefix=TRUE, auto_space = FALSE)
tables <- captioner(prefix = "Table S", auto_space = FALSE)
figures <- captioner(prefix = "Figure S", auto_space = FALSE)
figures("Xray1", "Single-crystal X-ray structure of some text (1)", display=FALSE)
figures("Xray2", "Single-crystal X-ray structure of some text (2)", display=FALSE)
figures("Xray3", "Single-crystal X-ray structure of some text (3)", display=FALSE)
```
## Reaction of etc.
Some text. Some text followed by `r figures("Xray1", display="cite")`, which is the same figure as `r figures("Xray3", display="cite")` but comes after `r figures("Xray2", display="cite")`.
```{r Xray, fig.cap=figures("Xray1"), echo=FALSE}
plot(cars)
```
```{r Xray2, fig.cap=figures("Xray2"), echo=FALSE}
plot(cars)
```
```{r Xray3, fig.cap=figures("Xray3"), echo=FALSE}
plot(cars)
```
Some text etc. followed by `r tables("tab-DipUVvis", display="cite")`:
```{r DipUVvis, echo=FALSE}
df<-data.frame(Entry=c('AMM 51$3^a$','AMM 52^*a*^'),
Precat=c('[FeBr~2~(dpbz)~2~] (4.00)','[FeBr~2~(dpbz)~2~]
(2.00)'))
knitr::kable(head(df), caption=tables("tab-DipUVvis", "Table Caption"))
```