Referenciación dinámica de notas al pie en rmarkdown / bookdown.
Estoy combinando varios archivos .Rmd en un solo documento grande usando bookdown
. Los archivos individuales contienen notas al pie, que comienzan con ^[1]
. Esto obviamente lleva a notas al pie duplicadas en el documento final, ya que bookdown no puede determinar a qué referencia pertenece cada nota al pie.
Como consecuencia, me pregunto si hay alguna forma de generar dinámicamente notas al pie cuando se renderiza el documento, pero no pude encontrar nada relacionado con eso en la documentación de bookdown.
Tengo esta solución de trabajo que utiliza una función personalizada:
---
title: "Untitled"
output:
html_document:
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
footnote.nr <- 0
footnote.counter <- function(){
footnote.nr <- footnote.nr + 1
.GlobalEnv$footnote.nr <- footnote.nr
return(footnote.nr)
}
```
Lorem ipsum.[^`r footnote.counter()`]
[^`r footnote.nr`]: Prueba
Lorem ipsum.[^`r footnote.counter()`]
[^`r footnote.nr`]: Prueba2
Sin embargo, esto resultaría en tener que adaptar todo el documento, lo cual sería igual de trabajoso que comenzar la numeración de las notas al pie desde cero (aunque probablemente sea menos propenso a errores). ¿Existen otras soluciones? También estaría bien si las notas al pie se muestran para cada capítulo individual, lo que significa que la primera nota al pie de cada capítulo comienza con un 1.
davy.ai
Una posible solución a este problema es usar el paquete
noteref
, que proporciona una forma de renumerar automáticamente las notas al pie en un documento. Para usarnoteref
en tu documentobookdown
, puedes agregarlo al campopreamble
en tu archivobookdown.yml
:Esto permitirá que
noteref
se utilice cuando tus archivos.Rmd
se rendericen a HTML o PDF.Para usar
noteref
en tus archivos.Rmd
individuales, puedes reemplazar la notación^[1]
de las notas al pie con la notación[@label]
, dondelabel
es un identificador único para cada nota al pie. Por ejemplo:En este ejemplo, la nota al pie está etiquetada como
fn1
en lugar de utilizar la notación^[1]
. Cuando tu documento se renderice,noteref
reemplazará la notación[@fn1]
con el número de nota al pie correspondiente, basándose en el orden de aparición de los identificadoreslabel
en tu documento.Si deseas reiniciar los números de las notas al pie en cada capítulo de tu documento
bookdown
, puedes usar la funciónnoteref_seq
del paquetenoteref
en combinación conknitr
para definir una nueva secuencia de números de notas al pie para cada capítulo. Por ejemplo:Capítulo 1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed et vehicula mauris. Sed feugiat ultricies purus, eget blandit justo fringilla vitae. Vivamus lobortis arcu vitae porttitor imperdiet. Sed maximus, elit vel mattis dignissim, elit est luctus dolor, eu interdum diam libero nec metus. Sed vel sapien ac metus consequat efficitur ac ut turpis. Sed sit amet magna eu metus hendrerit commodo. In sodales, neque vitae sollicitudin blandit, velit velit venenatis dolor, in sollicitudin eros turpis ut mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam non feugiat est, eget laoreet dolor. Ut in elit vel leo ornare fermentum nec ut ipsum. Nunc euismod nulla tortor, ut maximus est dignissim vel. Nullam vel dignissim orci. Praesent dictum ultricies arcu, et malesuada leo vestibulum a. Cras justo ex, imperdiet in sollicitudin quis, porttitor sit amet purus. Pellentesque nec neque nec ex imperdiet consectetur at a nulla. Nullam vel euismod tellus. [@fn1]
[@fn1]: Esta es una nota al pie en el capítulo 1.
Capítulo 2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed et vehicula mauris. Sed feugiat ultricies purus, eget blandit justo fringilla vitae. Vivamus lobortis arcu vitae porttitor imperdiet. Sed maximus, elit vel mattis dignissim, elit est luctus dolor, eu interdum diam libero nec metus. Sed vel sapien ac metus consequat efficitur ac ut turpis. Sed sit amet magna eu metus hendrerit commodo. In sodales, neque vitae sollicitudin blandit, velit velit venenatis dolor, in sollicitudin eros turpis ut mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam non feugiat est, eget laoreet dolor. Ut in elit vel leo ornare fermentum nec ut ipsum. Nunc euismod nulla tortor, ut maximus est dignissim vel. Nullam vel dignissim orci. Praesent dictum ultricies arcu, et malesuada leo vestibulum a. Cras justo ex, imperdiet in sollicitudin quis, porttitor sit amet purus. Pellentesque nec neque nec ex imperdiet consectetur at a nulla. Nullam vel euismod tellus. [@fn2]
[@fn2]: Esta es una nota al pie en el capítulo 2.
“`
En este ejemplo, definimos una nueva secuencia de números de notas al pie para cada capítulo usando la función
noteref_seq
, y usamosknitr
para definir una nueva sección para cada capítulo y reiniciar los números de notas al pie al comienzo de cada capítulo. Cuando se renderice tu documentobookdown
, deberías ver notas al pie etiquetadas secuencialmente dentro de cada capítulo, comenzando desde 1.