Dans knitr, l'option de taille fonctionne correctement dans un fichier .Rnw
, 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 dans Rmarkdown. Le code suivant ne modifie pas la taille de la police, comme il l'a fait dans le fichier .rnw
. La même chose se produit lorsque vous essayez de définir des options avec opts_chunk$set(size="huge")
.
Est-ce le comportement attendu? Comment change-t-on la taille de la police du code de bloc? (Je veux dire en utilisant les options knitr, 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.
Reprenant l'idée de modifier un crochet knitr, nous pouvons faire ce qui 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 hook de bloc par défaut. Il vérifie simplement si la taille de l'option de bloc n'est pas égale à sa valeur par défaut (normalsize
) et si c'est le cas, ajoute la valeur de options$size
à la sortie du bloc de code (y compris la source!) et ajoute \\normalsize
pour revenir en arrière.
Donc, si vous ajoutez size="tiny"
à un bloc, alors toutes les sorties générées par ce bloc seront imprimées de cette 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
contrôlera la taille de la police du code R renvoyé par le bloc de code, tandis que pre
s'appliquera à tous les résultats R générés par le code.
Un fichier .Rmd complet et fonctionnel pourrait 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 code HTML résultant s'affiche comme suit:
Vous pouvez définir votre propre format de document en exportant quelque chose basé sur la fonction suivante à partir de votre package 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)
}
Cela définira un crochet de morceau knitr size
qui mettra la commande latex appropriée avant le morceau, et \normalsize
après le morceau.
Quoi qu'il en soit, avec la démarque R suivante, 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 le problème que j'ai ouvert sur github:
\tiny
```{r}
summary(mtcars)
```
\normalsize
les options disponibles pour la taille dans l'ordre décroissant sont:Huge
, huge
, LARGE
, Large
, large
, normalsize
, small
, footnotesize
, scriptsize
, tiny