web-dev-qa-db-ja.com

rmarkdownのコードチャンク内に改ページを挿入する(pdfへの変換)

Rmarkdown、pandoc、knitrを使用して、rコードのチャンクを含むPDFを作成しています。コードチャンク内には、多数のグラフと統計出力を出力するforループがあります。

改ページをループに挿入したい(pdf出力に表示する)。このグラフは各グラフが印刷された後に発生し、各グラフが1ページに印刷され、統計出力が次のページに印刷されるようにします。

Rコードチャンクに改ページを含める方法を見つけることができませんでした。 cat("\\newpage")cat("\\pagebreak")を試してみましたが、pandocで認識されることを期待していますが、役に立ちません(最終的なPDFにそのまま印刷されています)。

提案に感謝します。ここに私がこれまでに持っているコードがあります:

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

以下の縮小された再現可能な例を参照してください。答えといくつかの一般的なコメント:

  • マークダウンドキュメントで新しいページまたはセクションを動的に作成するには、チャンクオプションでresults='asis'を使用します。
  • \nの後に改行(\\pagebreak)を追加する必要があります。そうしないと、"ValueForV"の直後に"\linebreak"が貼り付けられ、Undefined control sequenceエラーが発生します。
  • 前に改行\newpageを使用して、\pagebreak\nが別の行にあることを確認してください。
  • \newpage\pagebreak(つまり、\\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")
    }
    ```
    
27
Christoph

PDFへの変換に耐えるRstudio .Rmdコードチャンク内に改ページを挿入する方法:

_\newpage_および_\pagebreak_ latexマクロが機能しない場合は、HTMLを使用した回避策があります。

例えば:

_---
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.
_

私のためにこれを生成します:

enter image description here

重要な要素は、チャンクヘッダーのprint("<P style='page-break-before: always'>")および_{r, echo=FALSE, results='asis'}_です。

3
Eric Leschinski