Inserting a page break within a code chunk in rmarkdown (converting to pdf)

后端 未结 2 1333
滥情空心
滥情空心 2021-02-05 08:03

I am using rmarkdown, pandoc and knitr to create a pdf including chunks of r code. Within a code chunk I have a for loop which prints a number of graphs and some statistical out

相关标签:
2条回答
  • 2021-02-05 08:33

    See below a reduced and reproducible example. The answer and some general remarks:

    • To dynamically create new pages or sections in a markdown document use results='asis' in the chunk options.
    • You have to add a linebreak (\n) after \\pagebreak or else "ValueForV" will be pasted directly after "\linebreak", which results in an Undefined control sequence error.
    • Make sure that \newpage and \pagebreak are in a separate line by using linebreaks \n before.
    • Escape \newpage and \pagebreak (i.e., \\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")
      }
      ```
      
    0 讨论(0)
  • 2021-02-05 08:46

    How to insert a page break within an Rstudio .Rmd code chunk that survives conversion to PDF:

    If the \newpage and \pagebreak latex macros aren't working for you, here's a workaround using HTML.

    For example:

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

    Produces this for me:

    The key ingredients is the print("<P style='page-break-before: always'>") and the {r, echo=FALSE, results='asis'} in the chunk header.

    0 讨论(0)
提交回复
热议问题