web-dev-qa-db-fra.com

Comment changer le format de légende des figures dans la comptabilité

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.

Question

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.

Exemple/solution tentée

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).

18
AMM

À 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 "".

4
LmW.

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.

5
crsh

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.

1. Tricoter le .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"))
```

2. Définissez Image Caption et Table Caption en gras.

En premier .docx fichier,

  1. Sélectionnez une légende d'image ou une légende de tableau;
  2. Mettez-le en gras (Ctrl + B ou Command + B);
  3. Cliquez sur le coin inférieur droit du paramètre Styles dans l'onglet Accueil . Ou appuyez sur Alt + Ctrl + Shift + S;
  4. Trouver Image Caption ou Table Caption;
  5. Cliquez sur son menu déroulant et cliquez sur Mettre à jour le titre pour correspondre à la sélection .

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.

Selecting an image caption to make it bold

3. Tricoter le .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"))
```
5
Carlos Luis Rivera