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))
}
```
Voir ci-dessous un exemple réduit et reproductible. La réponse et quelques remarques générales:
results='asis'
dans les options de bloc.\n
) après \\pagebreak
ou sinon "ValueForV"
sera collé directement après "\linebreak"
, ce qui donne un Undefined control sequence
Erreur.\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")
}
```
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:
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.