Aún más cosas con Quarto

(Web del curso aquí)

20 de mayo de 2024

Con Quarto se pueden hacer muu🙀uuchas más cosas aún!!!



Veamos algunas de ellas

7.0 Diferentes formatos de salida


  • El curso se ha centrado en la realización de documentos .html pero desde Quarto se pueden generar documentos en múltiples formatos.

  • Veamos aquí algunos de ellos!!!

7.1 Journal articles

  • Tenemos disponibles plantillas para generar, directamente desde Quarto, documentos en el formato adecuado para un conjunto de Journals.

Además del listado digamos oficial hay muchas más plantillas. Por ejemplo:

  • La extensión de Quarto apaquarto provee una template para crear documentos APA Style 7th Ed en .docx, .html. y .pdf. La web del proyecto está aquí.

  • La extensión: apaish permite crear documentos pdf en el estilo de la APA 7th ed. via Typst. Tiene varios tipos: manuscript, document, and Journal (Similar to the APA7 LaTeX package, but Typst produces them much faster and easier)

  • Extensión para journals de Taylor and Francis Template aquí

  • Extensión para publicar en arXiv aquí

Aún más plantillas

  • Aquí puedes buscar si alguien ha escrito ya la plantilla que necesitas.

  • Si nadie la ha escrito, igual este post te ayuda a crearla

Journal articles (más cosas)

Extensión: más sobre publicación en Journals desde Rmarkdown

  • If you want to type in markdown to create a document in the “APA 6th Ed”, I suggest using papaja

  • En Rmarkdown tenemos el paquete rticles con plantillas para generar documentos de un conjunto amplio de Journals


Extensión: más cosas sobre publicación en Journals desde Quarto

Tarea: Practicando con Journal articles

  • Primero vamos a generar un paper para JSS (Journal of Statistical Software), y después generaremos un artículo para Elsevier

El repo para la plantilla/extensión está aquí

  1. Instalar la extensión: hay que ejecutar en la Terminal:

    quarto use template quarto-journals/jss
  2. Ver qué se ha creado en el Qproject

  3. Procesar el archivo templates.qmd que se ha creado

  • El repo para la plantilla/extensión está aquí. Tiene muchas más variantes y opciones!!
  1. Instalar la extensión: hay que ejecutar en la Terminal:

    quarto use template quarto-journals/elsevier
  2. Ver qué se ha creado en el Qproject

  3. Procesar el archivo elsevier.qmd que se ha creado

  4. Hay muchas más opciones

7.2 Posters con Quarto

Ahora ya es posible hacer posters con Quarto, pero la gente estaba esperando hace tiempo. Por ejemplo:

  • Plantilla oficial de Quarto para un typst-poster. Se presentó en esta charla, concretamente hacia el minuto 6. En el minuto 8 cuenta un poco cómo trabajar con typst desde un documento .qmd.

  • David Schoch nos cuenta aquí que él hizo un póster con otra plantilla: aquí tienes el repo.


Extensión: Posters con Rmarkdown

Tarea: Creando un typst-Poster con Quarto


  • Vamos a generar un póster con la plantilla “oficial” creada por el equipo de Posit. Aquí tienes el repo.
  1. Para instalar la extensión y crear una plantilla hay que ejecutar en la Terminal:

    quarto use template quarto-ext/typst-templates/poster

    Durante el proceso nos pedirá un nombre para la carpeta donde crear la plantilla. Por ejemplo, puedes poner my-poster

  2. Tendrás que procesar/render el fichero ./my-poster/my-poster.qmd que se ha creado

7. 3 Curriculums con Quarto

  • Si te interesa el tema, lo mejor es leer este post de Álex Espinosa-Correa, en el que repasa algunas de las opciones disponibles y finalmente explica de forma muy detallada cómo crea su propia plantilla partiendo de quarto-cv

CV’s con Quarto

CV’s con Quarto (más cosas)

Convertir CV’s a Quarto

  • Tengo el CV en un .docx ¿puedo pasarlo a Quarto? Sí, aquí la explicación. Aconsejan pasarlo primero a Google doc’s

  • Para convertir un Google Doc en un Quarto book puedes usar el pkg quartificate


Extensión: CV’s con .Rmd

Tarea: Creando un CV-typst con Quarto


  • Vamos a generar un CV con la plantilla creada por Kazuharu Yanagimoto aquí tienes el repo.

Kazuharu lo explica muy bien, pero:

  1. Para instalar la extensión y crear una plantilla hay que ejecutar en la Terminal:

    quarto use template kazuyanagimoto/quarto-awesomecv-typst

    Durante el proceso nos pedirá un nombre para la carpeta donde crear la plantilla. Por ejemplo, puedes poner my-cv

  2. Tendrás que procesar/render el fichero ./my-cv/cv.qmd que se ha creado

7.4 Más formatos con Quarto

Más formatos con Quarto (más cosas)


Extensión: Más formatos con Rmarkdown

Más formatos con Quarto (cosas de pdf)


Algunas plantillas para pdf

7.5 Trabajando con documentos WORD

  • A veces necesitamos trabajar con documentos Word 😿 … pero wait, Quarto nos puede ayudar con eso también 😎
  • La documentación oficial de Quarto sobre cómo trabajar con documentos Word la tienes aquí

  • Si no nos gusta el formato predeterminado de salida del .docx en Quarto, podemos usar una plantilla/template. Se explica aquí

Extensión: Más sobre .docx en Quarto

Si queremos hacer otro tipo de cosas con documentos .docx podemos usar las extensiones:

  • officedown: facilita el formateo de informe de Word desde R. Aquí un libro y dos posts: aquí, otro aquí

  • officer: The officer package lets R users manipulate Word (.docx) and PowerPoint (*.pptx) documents. In short, one can add images, tables and text into documents from R.

  • docxtractr: Extract Data Tables and Comments from Microsoft Word Documents. Aquí un post sobre su uso.

7.5 Trabajando con documentos WORD


Tarea: Creando .docx desde Quarto

  • Genera un .docx desde Quarto

Por ejemplo:

---
title: "My Document"
format:
  docx:
    toc: true
    number-sections: true
    highlight-style: github
---
  • Genera un .docx desde Quarto, pero usando una plantilla

Por ejemplo:

format:
  docx:
    reference-doc: custom-reference-doc.docx


  • Sí, pero ¿cómo se hace una plantilla? En la terminal hay que:
quarto pandoc -o custom-reference-doc.docx \
   --print-default-data-file reference.docx

Con Quarto AÚN se pueden hacer muu🙀uuchas más cosas!!



Veamos algunas de ellas

7.6 Diagramas (con Mermaid y Graphviz)

  • Quarto permite hacer diagramas con Mermaid y Graphviz. Lo que, según la documentación oficial, posibilita la creación de flowcharts, sequence diagrams, state diagrams, Gantt charts, and more usando una sintaxis (de texto) similar a Markdown.
  • Un ejemplo:


El código

```{mermaid}
flowchart LR
  qmd --> J([Jupyter])
  qmd --> K([knitr])
  J --> md
  K --> md
  md --> P([pandoc])
  P --> pdf
  P --> html
  P --> docx
```

El resultado:

flowchart LR
  qmd --> J([Jupyter])
  qmd --> K([knitr])
  J --> md
  K --> md
  md --> P([pandoc])
  P --> pdf
  P --> html
  P --> docx


7.6 Diagramas (con Mermaid y Graphviz)
  • Otro ejemplo
```{mermaid}
gantt
dateFormat  YYYY-MM-DD
title Adding GANTT diagram to mermaid
excludes weekdays 2014-01-10

section A section
Completed task            :done,    des1, 2014-01-06,2014-01-08
Active task               :active,  des2, 2014-01-09, 3d
Future task               :         des3, after des2, 5d
Future task2              :         des4, after des3, 5d
```

gantt
dateFormat  YYYY-MM-DD
title Adding GANTT diagram to mermaid
excludes weekdays 2014-01-10

section A section
Completed task            :done,    des1, 2014-01-06,2014-01-08
Active task               :active,  des2, 2014-01-09, 3d
Future task               :         des3, after des2, 5d
Future task2              :         des4, after des3, 5d


  • En los “mermaid diagramms”, se pueden utilizar themes en los. Documentación aquí

  • Ejemplos más complejos de Mermaid aquí

  • Ejemplos de GraphViz aquí


7.7 Countdown

  • Incluir un reloj para hacer cuentas atrás cuando pones un ejercicio a resolver en clase. Documentación aquí

Tarea: Incorporar un “countdown” a un documento .qmd

```{r}
# devtools::install_github("gadenbuie/countdown")
countdown::countdown(minutes = 0, seconds = 44)
```


  • Aquí otra extensión con otro formato de timer

7.8 Crear un glosario de términos

  • El paquete glossary permite crear un glosario de términos al final de un documento .html y referenciar términos del glosario en el texto.
  • ¿Cómo? No he llegado a probarlo pero básicamente tienes que
     - crear el glosario de términos en un documento .yml,
     - proporcionar su ruta a la función glossary_path()
  • Para añadir un término al glosario:
glossary_add(term = "Ishi",
             def = "Ishi fue el nombre dado al último miembro de la tribu de los yahi de California, Estados Unidos. La palabra ishi significa hombre en idioma yahi."
  • Para referenciar palabras del glosario en el texto, se hace algo como:

Se considera a glossary::glossary("Ishi") el último nativo de la California septentrional que vivió fuera de la influencia de la cultura occidental. Su historia se popularizó a raíz de un libro de Theodora Kroeber, madre de Ursula K. Le Guin.

  • Además, puedes definir el estilo del glosario con glossary_style(). Por ejemplo:
glossary::glossary_path("psyteachr.yml")
glossary::glossary_style("purple", "underline")


7.9 Crear botones de descarga

  • Se trata de crear unos botoncitos (chulos!!) en nuestra web que sirvan para descargarse los documentos (o recursos) que queramos


  • Vamos a probar a hacer estos botones con la extensión downloadthis.


  • Para ello vamos a usar la documentación de la extensión y este post del blog del curso.

7.10 Extensiones

  • En el curso se habla de las extensiones. En las slides nº 5, concretamente aquí y en este post y en este otro

  • Aquí un post que cuenta como hacer extensiones

  • Por ejemplo podemos probar a usar la extensión fontawesome.


7.10 Extensiones: algunas extensiones chulas

  • code-fullscreen: permite que al pinchar en un bloque de código, este pase a estar a pantalla completa

  • nustshell: permite crear “expandable explanations”. Lo mejor es pinchar y ver los ejemplos

  • collapse-social-embeds: permite crear 6 tipos de nuevos callouts para social contents (Github gist, Twitter tweets, Mastodon toots, y vídeos de Loom, Vimeo y Youtube). Puedes ver un ejemplo aquí. Seguramente acabaré usándolo en el curso!!

  • downloadthis: permite crear botones de descargar muy chulos. Ya la hemos usado

  • pointer y quarto-spotlight: 2 extensiones para iluminar/agrandar el puntero del ratón en revealjs slides

  • line-highlight: similar a code-line-numbers pero ahora es para documentos html, no para RevealJs slides

  • webR: permite to run R code in the browser without the need for an R server to execute the code!!

  • Sverto: permite incorporar Svelte components that can seamlessly react to your ObservableJS code!!!

  • quarto-animate: permite crear unas animaciones muy “aparatosas”. Puedes ver un ejemplo aquí

7.11 Trucos CSS y SASS


  • En el improbable caso de que tengamos tiempo, veremos algunos trucos para tunear algunos aspectos de nuestros documentos y web/blog


  • Lo haríamos con este post del blog de “truqillos” del curso

AÚN 🙀 más cosas!!!



Ejemplos que se me han quedado en el tintero (quizás para otra edición)

7.12 Runing Stata in Quarto documents

Tampoco lo he probado, entre otras cosas porque no tengo Stata instalado, pero :


  • Podemos correr código de Stata en Quarto document: aquí se explica cómo usando un paquete de Phyton, pystata.


  • Stata Facade: una extensión de Quarto that hides the evidence of faking Stata dynamic content with Python code blocks and Stata cell magic.


7.13 Runing SPSS in Quarto documents


No he visto que sea posible correr SPSS code dentro de R, pero para que tenemos R GUI’s. Otra comparación de GUI’s. Un post sobre Jamovi

7.14 Shiny en Quarto

7.15 Queries to bibliographc databases

  • openalexR: “helps you interface with the OpenAlex API to retrieve bibliographic infomation about publications, authors, venues, institutions and concepts

  • rscielo: “offers functions to easily scrape bibliometric information from scientific journals and articles hosted on the Scileo Platform

  • JCRImpactFactor: “JCRImpactFactor: Journal Citation Reports (‘JCR’) Impact Factor by Clarivate Analytics”

  • Scrapping WOS

  • Bibliometrix: “bibliometrix package provides a set of tools for quantitative research in bibliometrics and scientometrics”

  • RISmed: A set of tools to extract bibliographic content from the National Center for Biotechnology Information (NCBI) databases, including PubMed.

7.15 Algunos ejemplitos