D.8 La plantilla por defecto en HTML

Como mencionamos en la sección ??, el formato de salida predeterminado para un documento Rmd en blogdown es blogdown::html_page. Este formato transfiere una plantilla HTML mínima a Pandoc de manera predeterminada:

Puede encontrar este archivo de plantilla a través de blogdown:::pkg_file('resources', 'template-minimal.html') en R, y esta ruta de archivo es el valor predeterminado del argumento template de html_page(). Puede cambiar esta plantilla predeterminada, pero debe entender qué se supone que debe hacer esta plantilla primero.

Si está familiarizado con las plantillas de Pandoc, debe tener en cuenta que esta no es una plantilla HTML completa, por ejemplo, no tiene las etiquetas <html>, <head>, o <body>. Eso es porque no necesitamos ni queremos que Pandoc nos devuelva un documento HTML completo. Lo principal que queremos que Pandoc haga es convertir nuestro documento Markdown a HTML, y darnos el cuerpo del documento HTML, que está en la variable de plantilla $body$. Una vez que tengamos el cuerpo, podemos pasarlo a Hugo, y Hugo usará su propia plantilla para incrustar el cuerpo y generar el documento HTML completo. Vamos a explicar esto con un ejemplo mínimo. Supongamos que tenemos un documento R Markdown foo.Rmd:

Primero se convierte a un archivo HTML foo.html a través de html_page(), y tenga en cuenta que los metadatos YAML se ignoran por ahora:

Luego blogdown leerá los metadatos YAML del archivo fuente Rmd e insertará los metadatos en el archivo HTML para que se convierta en:

Este es el archivo que Hugo debe recoger y eventualmente convertir a una página HTML de un sitio web. Como Pandoc procesó el cuerpo de Markdown para HTML, Hugo básicamente usará el HTML. Así es como eludimos el motor Markdown BlackFriday de Hugo.

Además de $body$, puede haber notado otras variables de plantilla de Pandoc como $header-includes$, $css$, $include-before$, $toc$, y $include-after$. Estas variables permiten personalizar el formato html_page. Por ejemplo, si desea generar una tabla de contenido y aplicar una hoja de estilo CSS adicional a una página determinada, puede establecer toc en true y pasar la ruta de la hoja de estilo al argumento css de html_page(), por ejemplo,