Skip to content

Rmarkdown

Leer: http://geog.uoregon.edu/bartlein/courses/geog490/week05.html

RMarkdown thereby facilitates the concepts of “literate programming”, and “reproducible research” [...] which also allows others (including an original investigator after some time has passed) to reproduce a data analysis or other research result.

Generalidades: https://www.youtube.com/watch?v=uccEhThn0ls&list=PL5fd4SsfvECyYYiSW3ZreC5GqIq8FBocx&index=4

"Rmarkdown is probably the gratest document file format *ever*".

Template en mi paquete de utiles

Acáta: skeleton.tar.gz

Mi header para los notebooks

---
title: "Trabajo Final: Intro"
output:
  pdf_document:
    latex_engine: xelatex
    toc: true
    toc_depth: 2
    number_sections: true
  html_document:
    df_print: paged
    theme: flatly
    toc: yes
    toc_float: true
    toc_depth: 2
    number_sections: false
    smooth_scroll: false
    code_folding: hide
editor_options:
  chunk_output_type: console
author: Fulane de Tal
date: Diciembre 13, 2020
urlcolor: blue
---

Lo más útil de theme: flatly es que tiene "tab sets" para los gráficos: mútliples plots se pueden ver de a uno usando tabs con nombres (y que no queden simplemente apilados uno tras otro).

Se puede agregar esto para especificar otro knit output directory:

knit: (function(inputFile, encoding) {
  rmarkdown::render(inputFile, encoding = encoding, output_dir = "output/renders") })

El file auto completion de RStudio puede ser afectado por esa linea, realmente no sé. El "bug" de que no se puede cambiar el root path para el completion es irreproductible, a veces anda, a veces no.

Mi setup chunk

Suprime mensajes y hace que el "working directory" de los chunks sea el del proyecto (y no el del script, que es re molesto).

```{r setup}
knitr::opts_chunk$set(message = F)
# knitr::opts_chunk$set(cache = T)
knitr::opts_knit$set(root.dir = here::here())
```

Incluir imagenes

La imagen no aparece o está en blanco

Me pasaba que ciertas imágenes exportadas por magick en PNG no aparecían en el PDF final.

Resulta que por algún motivo se "enmascaran", y aunque están en el PDF no se pueden ver.

El parche es exportar la imagen en formato JPEG.

include_graphics no encuentra la imagen

Se puede probar ponerle error=F.

Con eso emparché este problema: https://github.com/yihui/knitr/issues/2171

Referenciar figuras

Bookdown

Hay que usar bookdown para renderear: https://bookdown.org/yihui/rmarkdown-cookbook/cross-ref.html

---
title: Cross-referencing figures, tables, and equations
author: Generated by bookdown
output:
  bookdown::html_document2: default
  bookdown::pdf_document2: default
---

No hay que usar guiones bajos "_" en el nombre de los chunks que incluyen figuras con include_graphics: https://stackoverflow.com/a/68697522

  • No: ```{r strip_magick_example, ...}
  • Si: ```{r strip-magick-example, ...}

Para referenciar una figura, usar \@ref(fig:strip-magick-example).

Quatro

Ver: https://quarto.org/docs/authoring/cross-references.html

LaTeX

Paquetes de xelatex en Arch

Si falta framed.sty, hay que instalar el paquete framed con el comando tlmgr:

  tlmgr install framed

En Arch hay que instalar un par de cosas y "arreglar" tlmgr para que funcione:

  sudo pacman -S texlive-core

  sudo nano /usr/share/texmf-dist/scripts/texlive/tlmgr.pl
  # Sustituir linea 66 por "$Master = "${Master}/../../..";"

  tlmgr init-usertree

  tlmgr install framed

Y crear alias en .bashrc y/o .zshrc:

  # TEXMFDIST=/usr/share/texmf-dist/
  alias tlmgr='/usr/share/texmf-dist/scripts/texlive/tlmgr.pl --usermode'

Leer:

Formulas quimicas

Para formulas quimicas hay que instalar (al menos):

  • chemformula
  • units (para nicefrac)
  • mhchem
  • chemgreek

Y usar este header:

header-includes:
- \usepackage[spanish]{babel}
- \usepackage{chemformula}
- \usepackage[version=4]{mhchem}

Y esta sintaxis:

\begin{equation}
  \ch{Cr2O7^{2-}_{(ac)} + 4 H2O} \rightleftharpoons \ch{2 HCrO4^{}_{(ac)}  }
\end{equation}

Errores de Latex

Too deeply nested

Ocurre cuando las listas estan "demasiado" anidadas, por ejemplo:

* respuesta
  * Cd
    * complejo
      * Cd
    * NH3
      * NH4
        * NH3
        * complejo
      * OH
        * H
  * OH
    * H

TinyTeX y Tablas lindas con Kable

---
title: "Knit to PDF example"
output: pdf_document
---

Install a LaTeX distribution:

* TinyTeX is recommended: https://bookdown.org/yihui/rmarkdown-cookbook/install-latex.html

```{r, eval=F}
tinytex::install_tinytex()
```

----

Default style:

```{r}
iris[1:5,]
```

----

Con `kable`:

```{r}
knitr::kable(iris[1:5,])
```

----

Usa por defecto la siguiente opción como formato:

```{r}
knitr:::kable_format()
```

> Yo prefiero "pipe".

Para setear "latex" o "pipe" como default en kable:

* https://bookdown.org/yihui/rmarkdown-cookbook/kable.html

```{r}
options(knitr.table.format = "pipe")

# o bien:

options(knitr.table.format = "latex")
```

```{r}
getOption("knitr.table.format")
```

----

Para setear kable como default en el documento entero, y no tener que usar kable() cada vez,
hay que editar el YAML header del .Rmd para que tenga esto:

```{yaml}
---
title: "Knit to PDF example"
output: 
  pdf_document:
    df_print: kable
---
```

Ver: https://bookdown.org/yihui/rmarkdown/html-document.html#data-frame-printing

----