Saltar al contenido

Cómo cambiar el formato del título de la figura en bookdown

Este equipo de trabajo ha pasado mucho tiempo investigando soluciones a tu interrogante, te dejamos la respuesta así que nuestro objetivo es servirte de gran apoyo.

Solución:

Que yo sepa, no puede controlar los títulos de figuras / tablas para hacer lo que quiera con rmarkdown / bookdown. Puedes usar el paquete captioner para lograrlo, con una trampa: funciona bien con rmarkdown salidas, pero necesitará hacer un posprocesamiento con bookdown salidas. Aquí está el archivo Rmd que produce el estilo de título deseado:

---
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"))
```

Sin embargo, si cambia para usar la salida de bookdown :: word_document2, el título de la figura se convierte en "Figura 1: Figura S1. ...". No he encontrado una manera de suprimir "Figura 1:" y tengo que hacer un procesamiento posterior en mi salida para buscar y reemplazar todas las "Figura?:" Con "".

Siguiendo esta guía para configurar Word (.docx) estilo, podrías hacer fig. y tab. subtítulos en negrita, aunque toda la línea del título puede estar en negrita ... Quiero decir que tenemos una manera de crear un título en .docx a través de RMarkdown así automáticamente:

Figura S1: Estructura de rayos X monocristalino de un texto (1)

Sin embargo, todavía parece difícil hacer uno como este:

Figura S1: Estructura de rayos X monocristalino de un texto (1)

Me imagino que solo querrás poner en negrita "Figura / Tabla S1", no toda la línea de subtítulos. Sin embargo, si está interesado en formatear .docx archivo con Rmarkdown, puede consultar el enlace que agregué arriba y ver la siguiente descripción.

1. Tejer el .Rmd archivo @LmW. nos proporcionó para obtener el primer .docx producción.

Si tienes algún problema con captioner paquete, también puede utilizar el siguiente.

---
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. Establecer Image Caption y Table Caption como negrita.

En el primero .docx expediente,

  1. Seleccione una leyenda de imagen o una leyenda de tabla;
  2. Hazlo en negritaCtrl + B o Command + B);
  3. Haga clic en la esquina inferior derecha de Estilos instalándose Hogar pestaña. O presione Alt + Ctrl + Shift + S;
  4. Encontrar Image Caption o Table Caption;
  5. Haga clic en su menú desplegable y haga clic en Actualizar el título para que coincida con la selección.

Si ha realizado los pasos anteriores tanto en la imagen como en el título de la tabla, asegúrese de guardar el .docx archivar como word-styles-reference-01.docx en su directorio de trabajo.

Seleccionar una leyenda de imagen para ponerla en negrita

3. Tejer el .Rmd archivo agregando el reference_docx línea para conseguir tu final .docx producción.

Agregar reference_docx: word-styles-reference-01.docx debajo word_document: línea. Vea la línea 7 en el siguiente ejemplo.

---
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"))
```

Si bien no existe un método para diseñar prefijos de subtítulos de figuras a través de bookdown, es posible hacer esto aplicando un filtro Lua personalizado (que requiere pandoc 2.0 o posterior).

Suponiendo que está comenzando desde

Figura 1 Texto de la leyenda de la figura.

el siguiente filtro debe hacer lo que desee (consulte https://pandoc.org/lua-filters.html#inline para obtener opciones de formato adicionales):

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

(Asumiendo que img.caption[2] es el espacio en blanco entre Figure y el número y img.caption[4] es el espacio en blanco entre el número y el título)

Suponiendo que coloca este filtro en un archivo llamado figure_caption_patch.lua en el directorio de tu rmarkdown documento puede aplicarlo agregando un pandoc argumento en el asunto principal de YAML:

output:
  bookdown::word_document2:
    pandoc_args: ["--lua-filter", "figure_caption_patch.lua"]

Esto debería producir el estilo de subtítulo deseado.

Figura 1. Texto de la leyenda de la figura.

Nos puedes proteger nuestra publicación dejando un comentario y valorándolo te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *