6  Quarto - sistema de publicación técnica y científica

6.1 Trabajo previo

6.1.1 Lecturas

Quarto - Tutorial: Hello, Quarto. (s.f.). Recuperado 22 de agosto de 2022, de https://quarto.org/docs/get-started/hello/rstudio.html

Xie, Y., Allaire, J. J., & Grolemund, G. (2018). R Markdown: The definitive guide. CRC Press. https://bookdown.org/yihui/rmarkdown/

Xie, Y., Dervieux, C., & Riederer, E. (2020). R Markdown Cookbook. CRC Press. https://bookdown.org/yihui/rmarkdown-cookbook/

6.2 Resumen

Quarto es un sistema de publicación de documentos técnicos y científicos, basado en código abierto. Estos documentos combinan código en R, y sus salidas (ej. tablas, gráficos, mapas), con la sintaxis de Markdown.

6.3 Características generales

Quarto es un sistema de publicación de documentos técnicos y científicos, basado en código abierto. Entre sus principales capacidades están:

  • Crear contenido dinámico con los lenguajes R, Python, Julia y Observable.
  • Crear documentos Markdown de texto plano o cuadernos de notas de Jupyter.
  • Publicar artículos académicos, reportes, presentaciones, sitios web, blogs y libros en HTML, PDF, MS Word, ePub y otros formatos.
  • Crear contenido científico, incluyendo ecuaciones, citas bibliográficas, referencias cruzadas, figuras y otros elementos.

Quarto es la siguiente generación de R Markdown, un formato que permite insertar código R, y sus salidas, en documentos escritos en Markdown. R Markdown fue introducido por Yihui Xie en 2012, junto con el paquete knitr, cuyo propósito es facilitar la investigación reproducible en R a través de la programación literaria (literate programming), un paradigma de programación propuesto por Donald Knuth en 1984.

Los programas “literarios” (o “letrados”) están escritos como una exposición lógica en un lenguaje humano similar a la explicación de las fórmulas y ecuaciones empleadas para representar y resolver un problema en un texto de física o de matemáticas. En estos programas, se describe el análisis del problema, su solución y su implementación, intercalando código fuente entre los párrafos (y otros contenidos como imágenes, tablas, gráficos estadísticos y mapas), de forma similar a como en los textos de matemáticas se intercalan las fórmulas y las ecuaciones. La programación literaria puede mejorar enormemente un programa, ya que permite documentar ampliamente en qué consiste el problema a resolver, cómo se resuelve, cómo y por qué se adoptó cierto diseño, cómo se optimizó y cómo se implementó en un lenguaje de programación.

6.4 Anatomía de un documento Quarto

Un documento Quarto tiene tres tipos de contenido:

  • Metadatos en YAML.
  • Narrativa en Markdown.
  • Bloques de código en R (u otro lenguaje de programación).

6.4.1 Metadatos en YAML

Todo documento Quarto inicia con un encabezado en la sintaxis YAML (YAML Ain’t Markup Language), el cual contiene metadatos del documento como el título, el autor, la fecha de creación, el formato de salida y la estructura de la tabla de contenidos, entre muchos otros.

Un encabezado YAML comienza y termina con tres guiones (---) y contiene un conjunto de campos y valores de la forma:

---
campo01: valor01
campo02: valor02
campo0n: valor0n
---

Por ejemplo, un encabezado YAML típico puede ser el siguiente:

---
title: Mi primer documento Quarto
format: html
editor: visual
---

Los campos del encabezado pueden anidarse con sangrías de dos espacios como, por ejemplo:

---
format:
  html:
    toc: true
    toc_float: true
---

Los elementos de metadatos que pueden especificarse en el encabezado, pueden variar de acuerdo al formato de salida, como puede verse en los siguientes enlaces:

Existen elementos de metadatos para muchos otros formatos de salida (OpenOffice, ePub, presentaciones, wikis, etc.), como puede apreciarse en la Referencia de Quarto.

6.4.2 Narrativa en Markdown

La narrativa proporciona estructura y contenido al documento en la forma de encabezados, párrafos, enlaces y otros elementos de la sintaxis de Markdown.

6.4.3 Fragmentos de código en R (u otro lenguaje de programación)

Los bloques (chunks) de código en R se identifican con {r} y diferentes opciones identificadas con #|. Los bloques de otros lenguajes de programación se identifican con {python} y {julia}, por ejemplo.

El siguiente es un ejemplo de bloque de código en R y su salida:

```{r}
#| label: graficacion-cars
#| include: true
#| echo: false

plot(
  x = cars$speed,
  y = cars$dist,
  main = "Velocidad vs distancia de frenado",
  xlab = "Velocidad (MPH)",
  ylab = "Distancia (pies)"
)
```

La opción label se utiliza para etiquetar el bloque y la de include para especificar si se desea que el bloque y sus resultados se incluyan en el documento de salida.

6.5 ¿Cómo funciona Quarto?

Quarto se apoya en knitr y en Pandoc. knitr ejecuta el código en R (u otro lenguaje) y convierte los documentos a Markdown. Por su parte, Pandoc exporta los documentos Markdown al formato de salida deseado (ej. HTML, PDF, MS Word, MS PowerPoint). Este proceso se ilustra en la Figure 6.1.

Figure 6.1: Conversión de un documento Quarto (.qmd) a su formato de salida. Imagen de quarto.org.

6.6 Ejemplo de documento Quarto

Visualización de datos con funciones del paquete base de R.