Introducción a Quarto

XII Congreso Colombiano de Botánica

Álex Espinosa Correa

Universidad de Antioquia

Bladimir Vera Marín

Universidad de Antioquia

Demostración

  • «Siempre lo hemos hecho así»



05:00

Proposito

Pasar de Word…

a Quarto

Actividad

  • Abrir RStudio
  • Si no ha clonado/descargado los archivos necesarios: https://github.com/geobota/etnobotanica-workshop.git
  • Abrir el proyecto de Rstudio etnobotanica-workshop.Rproj



05:00

Qué es Quarto

Quarto es un sistema open-source de publicación técnica y científica. Quarto es una interfaz de línea de comandos (CLI) que convierte formatos de texto plano (.qmd, .rmd, .md) o formatos mixtos (.ipynb/Jupyter notebook) en documentos estaticos o interactivos.

Quarto permite combinar en un mismo entorno texto y código para producir resultados elegantemente formateados como documentos, páginas web, entradas de blog, libros y más.

Represantación esquemática de Quarto. Allison Horst.

Por qué Quarto

  • Open-source
  • Un único framework
  • Sintaxis coherente
  • Multiplataforma, multiengine, multilenguaje, multilingüe
  • Mejor integración con IDEs (JupyterLab, RStudio, VScode)
  • Compatibilidad con formatos existentes (.Rmd, ipynb)
  • Integración más sencilla con filtros Lua
  • Más de 40 formatos de salida
  • Extensiones

Qué puedo hacer con Quarto: artículos

Qué puedo hacer con Quarto: dashboards

Qué puedo hacer con Quarto: libros

Qué puedo hacer con Quarto: presentaciones

Qué puedo hacer con Quarto: sitios web

Cómo funciona Quarto

Representación esquemática de cómo funciona Quarto. Allison Horst.

No es sólo R y RStudio

What You See Is What You Get (WYSIWYG)

What You See Is What You Mean (WYSIWYM)

Views Iceberg Traced by User:Jc86035, CC BY-SA 3.0, via Wikimedia Commons
---
title: "ggplot2 demo"
author: "Norah Jones"
date: "5/22/2021"
format: 
  html:
    fig-width: 8
    fig-height: 4
    code-fold: true
---

## Air Quality

@fig-airquality further explores the impact of temperature on ozone level.

```{r}
#| label: fig-airquality
#| fig-cap: "Temperature and ozone level."
#| warning: false

library(ggplot2)
ggplot(airquality, aes(Temp, Ozone)) + 
  geom_point() + 
  geom_smooth(method = "loess")
```

Resultado obtenido del código de la izquierda. Quarto

Integrated development environment (IDE)

Aplicación que proporciona servicios integrales para facilitar el desarrollo de software.

Renderizar y formatos

Tres formas de renderizar

  1. Utilizando el boton en RStudio

  1. Utilizando la consola de R
library(quarto)
quarto::quarto_render(input = "documento.qmd") # html por defecto
quarto::quarto_render(input = "documento.qmd", output_format = "pdf")
  1. Utilizando la terminal
quarto render document.qmd # html por defecto
quarto render document.qmd --to pdf

Más de 40 formatos de salida

  • html
  • pdf
  • typst
  • docx
  • odt
  • revealjs
  • pptx
  • dashboard
  • muchos más!

Actividad

  • Abrir pinguinos.qmd que se encuentra en la carpeta intro-quarto.
  • Renderizar el documento
  • Cambiar el nombre por el suyo y renderizar el documento
  • Inspeccionar los elemento del documento, realizar dos cambios y renderizar el documento.



05:00

Anatomía de un archivo .qmd

Los archivos de Quarto (.qmd) son archivos de texto plano conformado por:

Metadata (YAML)

format: html
engine: knitr
format: html
engine: jupyter

Código

```{r}
library(dplyr)
mtcars |> 
  group_by(cyl) |> 
  summarize(mean = mean(mpg))
```
```{python}
from siuba import *
(mtcars
  >> group_by(_.cyl)
  >> summarize(avg_mpg = _.mpg.mean()))
```

Texto

# Título 1
Esta es una frase con algo de **texto en negrita**, *texto en cursiva* y una 
![Descripción de la imagen](imagen.png){fig-alt=«Alt text para la imagen»}.

Metadata (YAML)

«Yet Another Markup Language» o “YAML Ain’t Markup Language” se utiliza para proporcionar metadatos a nivel de documento o proyecto.

  • Se coloca al principio del documento entre ---
  • Siempre en pares key: y value
  • Pueden anidarse
  • Quisquilloso con la sangría y espaciado
---
title: "El origen de las especies"
author: "Charles Darwin"
format: 
  html:
    toc: true
----

Quarto YAML Intelligence:
autocompletar

Quarto linting:
detección de errores

Markdown

Markdown es un formato de texto plano creado por John Gruber y Aaron Swartz, está diseñado para ser fácil de escribir y fácil de leer. Quarto se basa en Pandoc y utiliza su variante de Markdown, la cual es una versión ampliada y ligeramente revisada de la sintaxis Markdown de John Gruber.

Un documento con formato Markdown debería poder publicarse tal cual, como texto sin formato, sin que parezca que ha sido marcado con etiquetas o instrucciones de formato. John Gruber

Aaron Swartz (1986-2013) una de las personas más importantes en la historia de Internet. Fred Benenson / www.fredbenenson.com, CC BY 2.0.

Markdown: formato de texto

En Quarto se puede agregar texto en diferentes formatos.

Sintaxis básica

Markdown Salida
*cursiva*
cursiva
**negrilla**
negrilla
***cursiva y negrilla***
cursiva y negrilla
superíndice^2^
superíndice2
subíndice~2~
subíndice2
~~tachado~~
tachado
`código puro`
código puro

Markdown: párrafos

En Markdown los párrafos se construyen dejando una linea en blanco. De lo contrario, el salto de línea se trata como un espacio.

Lorem ipsum dolor sit amet,
consectetur adipiscing elit.

Sed do eiusmod tempor.

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Sed do eiusmod tempor.

Markdown: encabezados

En Quarto se pueden agregar hasta seis niveles de encabezados o títulos.

Markdown Salida
# Encabezado 1

Encabezado 1

## Encabezado 2

Encabezado 2

### Encabezado 3

Encabezado 3

#### Encabezado 4

Encabezado 4

##### Encabezado 5
Encabezado 5
###### Encabezado 6
Encabezado 6

Markdown: listas

Lista desordenada

Para los elementos de una lista desordenada se puede utilizar: *, -, o +.

Markdown

*   Elemento 1
    +   Elemento 1.1
        -   Elemento 1.1.1
    +   Elemento 1.2
*   Elemento 2

Salida

  • Elemento 1
    • Elemento 1.1
      • Elemento 1.1.1
    • Elemento 1.2
  • Elemento 2

Lista ordenada

Markdown

1.  Elemento 1
    i)  Elemento 1.1
        A.  Elemento 1.1.1
        A.  Elemento 1.1.2
    i)  Elemento 1.2
1.  Elemento 2

Salida

  1. Elemento 1
    1. Elemento 1.1
      1. Elemento 1.1.1
      2. Elemento 1.1.2
    2. Elemento 1.2
  2. Elemento 2

Markdown: enlaces e imágene

La sintaxis para agregar enlaces e imágenes e relativamente similar.

Markdown Output
<https://quarto.org>
https://quarto.org
[Quarto](https://quarto.org)
Quarto
![Descripción](images/quarto_logo.png)

Descripción

Markdown: tablas

Quarto incluye características destinadas a facilitar la creación y personalización de tablas: especificar la alineación y el ancho de las columnas; proporcionar títulos y referencias cruzadas; generar tablas a partir de código. En Markdown las tablas pueden ser pipe tables o grid tables. Las tablas se pueden construir usando el Editor Visual o generadores https://www.tablesgenerator.com

Markdown

| Por defecto | Izquierda | Derecha | Centro |
|-------------|:----------|--------:|:------:|
| 12          | 12        |      12 |   12   |
| 123         | 123       |     123 |  123   |
| 1           | 1         |       1 |   1    |

: Demostración de pipe table.

Salida

Demostración de pipe table.
Por defecto Izquierda Derecha Centro
12 12 12 12
123 123 123 123
1 1 1 1
+-----------+-----------+--------------------------+
| Fruta     | Precio    | Ventajas                 |
+==========:+:=========:+:=========================+
| Banano    | $1.34     | - envoltorio incorporado |
|           |           | - color brillante        |
+-----------+-----------+--------------------------+

: Demostración de grid table.
Demostración de grid table.
Fruta Precio Ventajas
Banano $1.34
  • envoltorio incorporado
  • color brillante

Referencias cruzadas

Las referencias cruzadas facilitan a los lectores la navegación por el documento proporcionando referencias numeradas e hipervínculos a diversas entidades, como figuras y tablas. Toda entidad con la que se puedan establecer referencias cruzadas requiere una etiqueta (fig- y tbl-), un identificador único precedido de un tipo de referencia cruzada (fig-elemento y tbl-elemento).

![Istopipo de Quarto](images/quarto_logo.png){#fig-quarto}

La @fig-quarto muestra el isotipo de Quarto.
Figura 1: Isotipo de Quarto

La Figura 1 muestra el isotipo de Quarto.

Quarto tiene algunos prefijos reservados: fig, tbl, lst, tip, nte, wrn, imp, cau, thm, lem, cor, prp, cnj, def, exm, exr, sol, rem, eq, sec.

Es recomendable evitar el uso de guiones bajos _.

Citación

Quarto utiliza Pandoc para generar automáticamente citas y una bibliografía en varios estilos. Es necesario tener:

  • Un documento Quarto formateado con citas.

  • Una fuente de datos bibliográficos, por ejemplo un archivo BibLaTeX (.bib) o BibTeX (.bibtex).

  • Opcionalmente, un archivo CSL que especifique el formato a utilizar al generar las citas y la bibliografía.

El conjunto de datos flor Iris fue tomado por @anderson1936 y popularizado 
posteriormente [@fisher1936]. El conjunto de datos contiene 150 muestras de 
tres especies [@anderson1936; @fisher1936].

El conjunto de datos flor Iris fue tomado por Anderson (1936) y popularizado posteriormente (Fisher 1936). El conjunto de datos contiene 150 muestras de tres especies (Anderson 1936; Fisher 1936).

Referencias

Anderson, Edgar. 1936. «The species problem in Iris». Annals of the Missouri Botanical Garden 23 (3): 457. https://doi.org/10.2307/2394164.
Fisher, R. A. 1936. «The Use of Multiple Measurements in Taxonomic Problems». Annals of Eugenics 7 (2): 179-88. https://doi.org/10.1111/j.1469-1809.1936.tb02137.x.

Actividad

  • En pinguinos.qmd
  • Practicar la sintaxis de Markdown vista hasta ahora
    • enlaces
    • encabezados
    • formato de texto
    • imágenes
    • listas
    • tablas
    • referencias cruzadas
    • citación



15:00

Código

En Quarto el código puede insertarse en linea o como bloques de código (conocidos como chunks). Los chunks siempre se encuentran entre ```, mientras el código en linea se encuentra entre `. Para que el código sea ejecutable se ha de poner el nombre del lenguaje entre {}, ej. {r}. Si sólo se pone el nombre del lenguaje, el código no se ejecutará y se resaltará la sintaxis del lenguaje. Los chunks pueden tener opciones que se indican con un #| (hash pipe) y siguen la sintaxis del YAML.

```{r}
#| label: fig-ejemplo-chunk
#| fig-cap: "Descripción de la figura. Note el prefijo generado automáticamente"
#| fig-dpi: 300
#| output-location: column-fragment
#| code-line-numbers: "|1|2-8|2|3-4"

library(ggplot2)

iris |> 
  ggplot2::ggplot(
    ggplot2::aes(x = Petal.Length, y = Petal.Width)
  ) + 
  ggplot2::geom_point(
    ggplot2::aes(color = Species, shape = Species)
  ) + 
  ggplot2::geom_smooth(
    formula = y ~ x, method = "loess"
  ) + 
  ggplot2::theme_classic()
```
Figura 2: Descripción de la figura. Note el prefijo generado automáticamente

De opciones de chunk al YAML

Hay una gran variedad de opciones disponibles para personalizar la salida del código ejecutado. Todas estas opciones se pueden especificar globalmente (YAML) o por bloque de código.

---
title: "El origen de las especies"
format: html
---

```{r}
#| echo: true

pi + 1
```
---
title: "El origen de las especies"
format: html
execute:
  echo: true
---

```{r}
pi + 1
```

Opciones de ejecución

Las opciones disponibles para personalizar la salida incluyen:

Opción Descripción
eval Evalúa el fragmento de código (si es false, sólo muestra el código en la salida).
echo Incluye el código fuente en la salida.
output Incluye los resultados de ejecutar el código en la salida (true, false, o asis para indicar que la salida es markdown crudo)
warning Incluye advertencias en la salida.
error Incluye errores en la salida (esto implica que los errores de ejecución de código no detendrán el procesamiento del documento).
include Captura general para evitar que se incluya cualquier salida (código o resultados). Por ejemplo, include: false suprime toda la salida del bloque de código.

Actividad

  • En pinguinos.qmd
  • Practicar la opciones de ejecución



05:00

Demostración

  • Editor Visual de Quarto



15:00

Pausa



15:00