Incluir ficheros de texto en blogdown

  • Otro post para recordar en el futuro la solución a un problema que me ha traído de cabeza recientemente.

  • El problema: tienes un fichero de texto (por ejemplo un fichero de código Matlab o un fichero fuente LaTeX) y quieres mostrar su contenido en un sitio web construido con blogdown. ¿Cuál es la forma de enlazar el fichero desde un bloque (chunk) de rmarkdown?

  • Solución: lo que voy a contar es un resumen de lo que aparece en esta página del minimal example website for the blogdown package. Los posibles errores, por supuesto, son míos. He probado varias de las soluciones que se proponen allí. Una solución que funciona pasa por tener esos ficheros alojados en la nube, usando servicios como Dropbox, Onedrive o incluso GitHub. Pero la que más me gusta por comodidad es la que utiliza la librería here de R. El esquema es este.

    • Queremos mostrar el contenido de un fichero de texto llamado prueba.txt.

    • Situamos ese fichero en una subcarpeta de la carpeta static. Concretamente en este ejemplo el fichero está alojado en static/carpeta1/carpeta2. Uso esta estructura de ejemplo para reflejar la posible organización de ficheros en el sitio web. Tal vez quieras tener una carpeta para tus ficheros de código, con subcarpetas para Matlab, python, etc; otro para ficheros de datos en distintos formatos (csv, xslx, etc.) , otro de imágenes,…

    • Ahora supongamos que estás escribiendo un post como este (o cualquier otra página de tu sitio web) y quieres mostrar el contenido de prueba.txt. Para ello usamos este chunk de rmarkdown (las opciones de la cabecera son importantes):

      ```{r echo=FALSE, comment='', message=FALSE}
      library(here)
      texto = readLines(here('static', 
                             'carpeta1',
                             'carpeta2', 
                             'prueba.txt'))
      cat(texto, sep = "\n")
      ```
    • El resultado es que el fichero de texto aparecerá insertado en tu post o página, como se ve aquí:

      linea1
      linea2
      linea3
Fernando San Segundo
Fernando San Segundo
Profesor Colaborador Asociado - Doctor

My research interests include Applied Mathematics, Data Analysis, Scientific Computation and Mathematical Modelling.

Related