Fecha actual de YAML en rmarkdown
Me pregunto si hay algún truco para poner la fecha actual en la parte frontal YAML de un .rmd
documento que será procesado por knitr
el rmarkdown
paquete. Solía tener la siguiente línea en la parte superior de mis páginas wiki,
_baptiste, `r format(Sys.time(), "%d %B, %Y")`_
y se convertiría a baptiste, 03 de mayo de 2014 en la salida html. Ahora, me gustaría aprovechar el contenedor pandoc avanzado proporcionado por rmarkdown
, pero tener código r en el encabezado YAML no parece funcionar:
---
title: "Sample Document"
output:
html_document:
toc: true
theme: united
date: `r format(Sys.time(), "%d %B, %Y")`
author: baptiste
---
Error in yaml::yaml.load(front_matter) :
Scanner error: while scanning for the next token at line 6, column 7
found character that cannot start any token at line 6, column 7
Calls: <Anonymous> ... output_format_from_yaml_front_matter ->
parse_yaml_front_matter -> <Anonymous> -> .Call
¿Alguna solución?
Esto es un poco complicado, pero solo necesita hacer que el date
campo sea válido en YAML citando la expresión R en línea, por ejemplo
date: "`r format(Sys.time(), '%d %B, %Y')`"
Luego, el error de análisis desaparecerá y la fecha se generará en la salida de rebajas para que Pandoc pueda usar el valor de Sys.time()
.
Simplemente siguiendo a @Yihui. Curiosamente, he descubierto que:
'`r format(Sys.Date(), "%B %d, %Y")`'
funciona mejor que:
"`r format(Sys.Date(), '%B %d, %Y')`"
Para este último, RStudio elige cambiar las comillas externas '
cada vez que se cambia entre la salida HTML y PDF y, por lo tanto, se rompe el código.
O simplemente comillas simples o dobles y viceversa. Esto funciona bien.
---
title: "Sample Document"
output:
html_document:
toc: true
theme: united
date: '`r format(Sys.time(), "%d %B, %Y")`'
author: baptiste
---
Una solución alternativa es utilizar el brew
paquete y escribir el texto frontal de YAML como brew
plantilla.
---
title: "Sample Document"
output:
html_document:
toc: true
theme: united
date: <%= format(Sys.time(), "%d %B, %Y") %>
author: baptiste
---
Ahora puede usar una brew_n_render
función que preprocesaría el documento usando brew
y luego ejecutaría a través de rmarkdown
.
brew_n_render <- function(input, ...){
output_file <- gsub("\\.[R|r]md$", ".html", input)
brew::brew(input, 'temp.Rmd'); on.exit(unlink('temp.Rmd'))
rmarkdown::render('temp.Rmd', output_file = output_file)
}
Para que esto funcione con el KnitHTML
botón en RStudio, puede escribir un formato de salida personalizado que se utilizará automáticamente brew
como preprocesador. El uso brew
de preprocesamiento garantiza que los knitr
fragmentos de código de su documento no se modifiquen durante la etapa de preprocesamiento. Idealmente, el rmarkdown
paquete debería exponer los metadatos en su API y permitir a los usuarios ejecutarlos a través de una función personalizada.
Alternativamente, si utiliza el nuevo formato cuarto https://quarto.org . puedes hacer esto en el encabezado yaml de un archivo .qmd.
——-
title: title of my doc
date: today
format:
html:
theme: default
——-
Para formatear, consulte las opciones de formato aquí .
Como ejemplo,
date: 03/07/2005
date-format: long