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}

rnw

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)
```

enter image description here

j'utilise RStudio Version 0.98.987, knitr 1.6 et rmarkdown 0.2.68.

30
demandé sur Carlos Cinelli 2014-09-03 17:59:32

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.

16
répondu Martin Schmelzer 2018-03-30 11:24:56

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:

screenshot showing 20pt R code and 20pt R output

11
répondu Tom 2016-01-14 00:52:02

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 ():

enter image description here

Voir aussi la question que j'ai ouvert sur github:

https://github.com/yihui/knitr/issues/1296

6
répondu Johannes Ranke 2016-10-11 06:13:26