Taille de la police de code dans Rmarkdown avec knitr et latex
dans knitr, l'option Taille fonctionne très bien dans un .Rnw
le fichier, le code suivant génère:
documentclass{article}
begin{document}
<<chunk1, size="huge">>=
summary(mtcars)
@
end{document}
cependant, Je ne peux pas le faire fonctionner à Rmarkdown. Le code suivant ne change pas la taille de la police, comme il l'a fait dans .rnw
fichier. La même chose se produit lorsque vous essayez de définir des options avec opts_chunk$set(size="huge")
.
c'Est le comportement attendu? Comment changer la taille de police du code? (Je veux dire en utilisant knitr options, non pas en ajoutant huge
avant le code)
---
title: "Untitled"
output: pdf_document
---
```{r, size="huge"}
summary(mtcars)
```
j'utilise RStudio Version 0.98.987, knitr 1.6 et rmarkdown 0.2.68.
3 réponses
ramasser l'idée de modifier un knitr crochet vous pouvez faire comme suit:
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)
})
cet extrait modifie le crochet par défaut. Il vérifie simplement si la taille de l'option chunk n'est pas égale à sa taille par défaut (normalsize
) et si oui, ajoute la valeur de options$size
à la sortie du morceau de code (y compris la source!) et ajoute \normalsize
pour revenir.
si vous voulez ajouter size="tiny"
à un morceau, alors toute la sortie générée par ce morceau sera imprimée que façon.
Tout ce que vous avez à faire est d'inclure cet extrait au début de votre document.
Par ce Gist, vous devez définir la taille de la police en utilisant css:
<style type="text/css">
body, td {
font-size: 14px;
}
code.r{
font-size: 20px;
}
pre {
font-size: 20px
}
</style>
code.r
va contrôler la taille de la police pour le code R repris du code chunk, alors que pre
s'appliquera à tout résultat R du code.
Un travail complet .Mdm fichier peut ressembler à:
---
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)
```
Le html résultant rendu sous la forme:
vous pouvez définir votre propre format de document en exportant quelque chose basé sur la fonction suivante à partir de votre paquet 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)
}
ceci définira un crochet knitr chunk size
qui mettra la commande latex appropriée avant le morceau, et \normalsize
après le morceau.
de toute façon, avec le R markdown suivant, vous pouvez vérifier si cela fonctionne:
---
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)
```
j'obtiens le résultat suivant de 'markdown:: render ():
Voir aussi la question que j'ai ouvert sur github: