web-dev-qa-db-fra.com

Taille de la police du morceau de code dans Rmarkdown avec knitr et latex

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}

rnw

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

enter image description here

J'utilise RStudio version 0.98.987, knitr 1.6 et rmarkdown 0.2.68.

38
Carlos Cinelli

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.

22
Martin Schmelzer

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:

screenshot showing 20pt R code and 20pt R output

10
Tom

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

enter image description here

Voir aussi le problème que j'ai ouvert sur github:

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

6
Johannes Ranke
\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

1
Georgie Shimanovsky