Cross-references, citas y bibliografía
Cross-references: el sistema básico
Quarto referencia cualquier elemento con @ + label. Tres reglas:
- El elemento debe tener un label con prefijo correcto.
- La referencia se hace en el texto con
@prefijo-nombre. - Quarto genera el número y el enlace automáticamente.
Prefijos válidos:
| Prefijo | Elemento |
|---|---|
fig- |
Figura |
tbl- |
Tabla |
eq- |
Ecuación |
sec- |
Sección |
lst- |
Listing de código |
thm-, lem-, def- |
Teorema, lema, definición |
Referenciar figuras
Con un chunk:
```{r}
#| label: fig-tendencia
#| fig-cap: "Tendencia de ventas mensuales 2024."
plot(datos$mes, datos$ventas)
```
Desde el texto:
La figura @fig-tendencia muestra una tendencia creciente.Output: “La figura Figura 1 muestra una tendencia creciente.” con enlace al elemento.
Para imágenes externas:
{#fig-pipeline}{#fig-pipeline} es el label. Mismo @fig-pipeline desde el texto.
Variantes útiles:
@fig-tendencia→ “Figura 1”-@fig-tendencia→ “1” (solo el número, sin prefijo)[@fig-tendencia; @fig-otra]→ “Figuras 1, 2” (múltiples)
Referenciar tablas
Idéntico al patrón de figuras, con tbl-:
```{r}
#| label: tbl-resumen
#| tbl-cap: "Resumen por grupo."
knitr::kable(resumen)
```
Desde el texto:
Como aparece en @tbl-resumen, los grupos difieren significativamente.Referenciar secciones
Las secciones se referencian añadiendo {#sec-xxx} al final del título:
## Resultados {#sec-resultados}
Texto...
## Discusión
Vemos en @sec-resultados que los datos confirman la hipótesis.number-sections: true en el YAML añade numeración automática a las secciones (necesario para que el @sec-... muestre “Sección 2.1” en vez de solo el título).
Referenciar ecuaciones
$$
y = \beta_0 + \beta_1 x + \varepsilon
$$ {#eq-regresion}
La ecuación @eq-regresion describe el modelo.Las ecuaciones se escriben en LaTeX entre $$ ... $$ (display) o $ ... $ (inline). El label va después de la ecuación.
Bibliografía con .bib
El sistema clásico de citas usa archivos BibTeX:
---
title: "Análisis sobre regulación de la expresión génica"
bibliography: references.bib
---Y en references.bib:
@article{love2014,
title = {Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2},
author = {Love, Michael I and Huber, Wolfgang and Anders, Simon},
journal = {Genome Biology},
volume = {15},
pages = {550},
year = {2014}
}
@book{wickham2023,
title = {R for Data Science},
author = {Wickham, Hadley and Çetinkaya-Rundel, Mine and Grolemund, Garrett},
year = {2023},
publisher = {O'Reilly}
}Citar en el texto
Sintaxis básica:
[@love2014] → (Love et al., 2014)
@love2014 → Love et al. (2014)
[-@love2014] → (2014)
[@love2014; @wickham2023] → (Love et al., 2014; Wickham et al., 2023)
[@love2014, p. 12] → (Love et al., 2014, p. 12)
[see @love2014] → (see Love et al., 2014)Quarto genera automáticamente la lista de referencias al final del documento.
Estilos de cita: CSL
El estilo de cita lo controla csl:
---
bibliography: references.bib
csl: nature.csl
---Estilos comunes (disponibles en github.com/citation-style-language/styles):
apa.csl: APA (psicología, ciencias sociales).nature.csl: Nature.cell.csl: Cell.vancouver.csl: biomedical.chicago-author-date.csl: humanidades.ieee.csl: ingeniería.
Descargar el .csl que quieras y referenciar en YAML. Sin csl:, Quarto usa Chicago author-date por defecto.
Insertar citas desde DOI: el atajo moderno
Para no escribir BibTeX a mano, RStudio y VS Code (con la extensión Quarto) tienen inserción visual de citas:
- En RStudio: Insert → Citation (Ctrl/Cmd+Shift+F8).
- En VS Code: paleta de comandos → Quarto: Insert Citation.
Pegas un DOI (10.1186/s13059-014-0550-8) y el sistema:
- Resuelve la cita vía CrossRef.
- Añade la entrada al
.bib. - Inserta
@love2014en el texto.
Es el flujo más eficiente para construir bibliografía mientras escribes. Termina con un .bib limpio sin tocarlo a mano.
Cita inline desde Pandoc
Quarto también soporta sintaxis Pandoc para citas inline sin .bib:
@doi:10.1186/s13059-014-0550-8Quarto resuelve el DOI al renderizar. Útil para citas puntuales sin gestionar .bib.
Bibliografía: secciones manuales
Por defecto la bibliografía aparece al final del documento. Si quieres ponerla en un sitio específico:
# Resultados {-}
Texto...
## Referencias {-}
::: {#refs}
:::{-} quita la numeración de la sección. ::: {#refs} es el contenedor donde se inyectan las referencias.
Notas al pie con ^[ ]
Para notas que no son citas:
Texto principal.^[Esto es una nota al pie inline.]O con clave separada:
Texto principal.[^nota1]
[^nota1]: Aquí va la nota.Ambas formas funcionan. La inline es más compacta para notas cortas. La de clave separada para notas largas.
Glosario y términos
Para textos largos donde defines términos:
glossary: glossary.yml# glossary.yml
- term: "RNA-seq"
definition: "Técnica de secuenciación masiva de transcriptos..."
- term: "DESeq2"
definition: "Paquete de Bioconductor para análisis diferencial..."Funciona con la extensión glossary instalada (quarto add quarto-ext/glossary). Las menciones del término en el texto se convierten en enlaces al glosario.
Convenciones que ayudan
- Una entrada
.bibpor publicación. Compartes el.bibentre proyectos. - Clave de cita memorable:
apellido + año(love2014,wickham2023). Más fácil que IDs aleatorios de Zotero. csl:consistente en el proyecto entero, no por documento.- Citas insertadas con el visual editor mejor que copiando BibTeX a mano. Menos errores tipográficos.
Integración con Zotero
Si gestionas referencias en Zotero:
- Instala el plugin Better BibTeX.
- Configura citation keys (
Wickham2023oapellido_año). - Exporta tu biblioteca como
references.bib(auto-export funciona en vivo). - En Quarto, Insert → Citation detecta Zotero corriendo y permite buscar dentro.
Es el setup ideal para gente que ya usa Zotero. La biblioteca permanece sincronizada con el .bib del proyecto.
Trampas habituales
- Cross-references sin prefijo.
{#tendencia}no funciona. Necesita{#fig-tendencia}. El prefijo es lo que identifica el tipo. - Citar sin
bibliography:en el YAML. Quarto no encuentra las entradas y deja@love2014literal en el output. El error es obvio si miras el resultado. @love2014conlove2014no en el.bib. Quarto avisa con warning pero deja la cita rota. Render con warnings habilitados para detectarlo.- Olvidar
number-sections: truecon@sec-. Sin numeración, la cross-reference muestra solo el título de la sección, no “Sección 2.1”. - CSL mal escrito o que no existe. El render falla. Verifica que el
.cslesté en el directorio del documento o usa la URL canónica.
En la siguiente entrega
Tienes el sistema de referencias. La siguiente entrega es parametrizar informes: el mismo .qmd con distintos parámetros (cliente, periodo, región) produce reports distintos automáticamente. Es lo que escala la producción de documentos del análisis ad-hoc al pipeline. Lo siguiente.