web-dev-qa-db-fra.com

Insertion d'un saut de page dans un bloc de code dans rmarkdown (conversion en pdf)

J'utilise rmarkdown, pandoc et knitr pour créer un pdf comprenant des morceaux de code r. Dans un morceau de code, j'ai une boucle for qui imprime un certain nombre de graphiques et une sortie statistique.

Je voudrais insérer un saut de page dans la boucle (pour apparaître dans la sortie pdf). Ce saut de page se produirait après l'impression de chaque graphique, pour garantir que chaque graphique est imprimé sur une page et la sortie statistique sur la suivante.

Je n'ai pas réussi à trouver un moyen d'inclure un saut de page dans mon bloc de code r. J'ai essayé cat("\\newpage") et cat("\\pagebreak") dans l'espoir qu'il serait reconnu par pandoc mais en vain (il est juste imprimé mot pour mot dans le pdf final).

Suggestions appréciées. Voici le code que j'ai jusqu'à présent:

```{r, echo =FALSE, message=FALSE, warning=FALSE, comment=NA, results='asis'}
library("markdown") 
library("rmarkdown") 
library("knitr")
library("ggplot2")
for (v in Values){

# read in file
testR <- read.csv(file.path, header=T)

print(ggplot(testR, aes(x=Time, y=Value, color=Batch)) + geom_point(size = 3) +
xlab ("Timepoint") +
ylab (v) +
scale_x_continuous(breaks=seq(0, 60, by=6)) +
ggtitle(paste("Scatterplot of Batches for ", v, sep="")))
ggsave(paste(timestamp, "__", 
       "Scatterplot of Batches for ", v, ".jpeg", sep = "")) 

cat("\\pagebreak")
writeLines(v)
writeLines("\n")
writeLines("\n Test for homogenity of slopes \n")
av1 <- aov(Value~Time*Batch, data=testR)
print(summary(av1))
}
```
17
Rachel

Voir ci-dessous un exemple réduit et reproductible. La réponse et quelques remarques générales:

  • Pour créer dynamiquement de nouvelles pages ou sections dans un document de démarque, utilisez results='asis' dans les options de bloc.
  • Vous devez ajouter un saut de ligne (\n) après \\pagebreak ou sinon "ValueForV" sera collé directement après "\linebreak", ce qui donne un Undefined control sequence Erreur.
  • Sois sûr que \newpage et \pagebreak sont sur une ligne distincte en utilisant des sauts de ligne \n avant.
  • Échapper \newpage et \pagebreak (c'est à dire., \\newpage, \\pagebreak).

    ---
    title: "test"
    output: pdf_document
    ---
    
    ```{r, echo=FALSE, results='asis'}
    for (i in 1:3) {
      print(ggplot2::qplot(i, i+1))
      cat("\n\n\\pagebreak\n")
      writeLines("ValueForV")
    }
    ```
    
28
Christoph

Comment insérer un saut de page dans un bloc de code Rstudio .Rmd qui survit à la conversion au format PDF:

Si les macros latex \newpage Et \pagebreak Ne fonctionnent pas pour vous, voici une solution de contournement utilisant HTML.

Par exemple:

---
title: "The Rent"
output:
  pdf_document: default
  html_document: default
---

# This is pre-chunk text.

```{r, echo=FALSE, results='asis'}
print("Now we're <b>inside the chunk</b>, using the power of HTML.<br><br><br>!")

print("As you can see from the following diagram")
cat("\n")
print("The rent...<br>")
print(plot(1:10))

print("<P style='page-break-before: always'>")    #forced new-page happens here.

print("<h1>Is too damned high!!</h1>")
writeLines("\n")
print("Finished")
cat("\n\n")
```
This is post chunk text.

Produit ceci pour moi:

enter image description here

Les ingrédients clés sont la print("<P style='page-break-before: always'>") et le {r, echo=FALSE, results='asis'} Dans l'en-tête du bloc.

3
Eric Leschinski