tutorial - Tamaño de fuente del fragmento de código en Rmarkdown con knitr y látex
r markdown the definitive guide pdf (3)
Por esta Gist , tienes que definir el tamaño de la fuente usando css:
<style type="text/css">
body, td {
font-size: 14px;
}
code.r{
font-size: 20px;
}
pre {
font-size: 20px
}
</style>
code.r
controlará el tamaño de fuente para el código R que se hace eco del fragmento de código, mientras que pre
se aplicará a cualquier resultado de R del código.
Un archivo .Rmd de trabajo completo podría verse como:
---
title: "FontTest"
author: "Thomas Hopper"
date: "January 13,2016"
output: html_document
---
<style type="text/css">
body, td {
font-size: 14px;
}
code.r{
font-size: 20px;
}
pre {
font-size: 20px
}
</style>
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
```{r cars}
summary(cars)
```
El html resultante se procesa como:
En knitr, la opción de tamaño funciona bien en un archivo .Rnw
, el siguiente código genera:
/documentclass{article}
/begin{document}
<<chunk1, size="huge">>=
summary(mtcars)
@
/end{document}
Sin embargo, no puedo hacerlo funcionar en Rmarkdown. El siguiente código no cambia el tamaño de la fuente, como lo hizo en el archivo .rnw
. Lo mismo sucede cuando se intenta establecer opciones con opts_chunk$set(size="huge")
.
¿Es este el comportamiento esperado? ¿Cómo se cambia el tamaño de la fuente del código del fragmento? (Me refiero a usar las opciones de knitr, no agregando /huge
antes del código)
---
title: "Untitled"
output: pdf_document
---
```{r, size="huge"}
summary(mtcars)
```
Estoy usando RStudio versión 0.98.987, knitr 1.6 y rmarkdown 0.2.68.
Puede definir su propio formato de documento exportando algo basado en la siguiente función de su paquete my_package
:
my_report <- function(...) {
fmt <- rmarkdown::pdf_document(...)
fmt$knitr$knit_hooks$size = function(before, options, envir) {
if (before) return(paste0("/n //", options$size, "/n/n"))
else return("/n/n //normalsize /n")
}
return(fmt)
}
Esto definirá un size
gancho de fragmento de knitr que pondrá el comando de látex adecuado antes del fragmento, y /normalsize
después del fragmento.
De todos modos, con la siguiente rebaja de R puedes verificar si está funcionando:
---
output: my_package::my_report
---
Test text for comparison
```{r}
print(1)
```
The next code chunk has `size = ''tiny''` in the chunk options.
```{r, size = ''tiny''}
print(1)
```
Obtengo el siguiente resultado de `markdown :: render ():
Vea también el tema que abrí en github:
Retomando la idea de alterar un gancho knitr podemos hacer lo siguiente:
def.chunk.hook <- knitr::knit_hooks$get("chunk")
knitr::knit_hooks$set(chunk = function(x, options) {
x <- def.chunk.hook(x, options)
ifelse(options$size != "normalsize", paste0("//", options$size,"/n/n", x, "/n/n //normalsize"), x)
})
Este fragmento de código modifica el enlace de fragmento predeterminado. Simplemente verifica si el tamaño de la opción de trozo no es igual a su valor predeterminado ( normalsize
) y, de ser así, antepone el valor de options$size
a la salida del fragmento de código (¡incluyendo la fuente!) Y agrega //normalsize
para cambiar espalda.
Por lo tanto, si agrega size="tiny"
a un fragmento, toda la salida generada por este fragmento se imprimirá de esa manera.
Todo lo que tiene que hacer es incluir este fragmento al principio de su documento.