จะเพิ่ม \ newpage ใน Rmarkdown ด้วยวิธีที่ชาญฉลาดได้อย่างไร?


114

ฉันสงสัยว่ามีใครสามารถใช้\newpageคำสั่งLaTeX ใน R markdown v2 ได้ด้วยวิธีอื่นนอกเหนือจากนี้:

```{r, results='asis', echo=FALSE}
cat("\\newpage")
```

ฉันสร้าง pdf_output หาก any1 มีความคิดโปรดอย่าลังเลที่จะแสดงความคิดเห็น :)! ขอบคุณ

ฉันสร้าง pdf ดังนี้:

---
title: " "
author: " "
date: "2014"
output: 
   pdf_document:
      includes:
         in_header: naglowek.tex
      highlight: pygments
      toc: true
      toc_depth: 3
      number_sections: true
      keep_tex: true
---

คุณกำลังสร้างเอาต์พุต PDF ของคุณอย่างไร?
Spacedman

ฉันแก้ไขคำถามของฉันแล้ว ฉันสร้าง pdf ได้อย่างไร
Marcin Kosiński

แล้วคุณใช้แพ็คเกจ / ฟังก์ชั่นอะไร? หรือคุณเพียงแค่คลิกปุ่มใน RStudio?
Spacedman

อะไรคือความแตกต่าง? แพ็คเกจหรือฟังก์ชันของฉันไม่มีส่วนเกี่ยวข้องกับการที่ฉันต้องการเพิ่มหน้าใหม่ในบางส่วนของโค้ด
Marcin Kosiński

ดีใจที่ได้เห็นขั้นตอนการทำงานที่สมบูรณ์ - มีหลายวิธีในการเปลี่ยนจาก markdown เป็น PDF หากไม่มีสิ่งนั้นเราก็คาดเดา เดาดี @tonytonov
Spacedman

คำตอบ:


177

เพียงแค่\newpageหรือ\pagebreakจะทำงานเช่น

hello world
\newpage
```{r, echo=FALSE}
1+1
```
\pagebreak
```{r, echo=FALSE}
plot(1:10)
```

วิธีนี้ถือว่าคุณกำลังถัก PDF เพื่อใช้ HTML <P style="page-break-before: always">คุณสามารถบรรลุผลที่คล้ายกันโดยการเพิ่มแท็ก โปรดทราบว่าคุณจะไม่เห็นตัวแบ่งหน้าในเบราว์เซอร์ของคุณ (HTML ไม่มีหน้าต่อหน้า) แต่จะมีเค้าโครงการพิมพ์


ฉันสามารถปิดหัวข้อได้หรือไม่?
Marcin Kosiński

2
ยินดี! คุณได้ยอมรับคำตอบแล้ว (เครื่องหมายสีเขียว); นั่นคือข้อบ่งชี้ว่าปัญหาได้รับการแก้ไขแล้ว คำถามนี้เพียงพอแล้วแม้ว่าผู้ใช้รายอื่นอาจยังคงเพิ่มคำตอบหรือความคิดเห็น คำถามปิดท้าย SO เป็นเครื่องมือที่ใช้ในการโหวตซึ่งจะล็อกคำถามที่ไม่ดีหรือแม้แต่ลบคำถามเหล่านั้นหากไม่เหมาะสม คำถามของคุณเรียบร้อยดีคุณจึงไม่จำเป็นต้องปิดหรือลบในตอนนี้เพียงปล่อยไว้ตามเดิม
tonytonov

มีผลอะไรไหมเมื่อถักเป็น html? มันทำให้เกิดข้อผิดพลาดหรือไม่?
gvrocha

เนื่องจากเป็นคำถามเกี่ยวกับการสร้างเพจใหม่ คุณจะสร้างเพจใหม่ในเอาต์พุต html ได้อย่างไร
Marcin Kosiński

1
@ MarcinKosińskiคุณสามารถแทรกแท็ก HTML ได้โดยตรง: ดูแก้ไขเพื่อความกระจ่าง
tonytonov

22

ในส่วนการเริ่มต้นฉันกำหนดฟังก์ชัน

pagebreak <- function() {
  if(knitr::is_latex_output())
    return("\\newpage")
  else
    return('<div style="page-break-before: always;" />')
}

ในส่วน markdown ที่ฉันต้องการแทรกตัวแบ่งหน้าฉันพิมพ์

`r pagebreak()`

13

คุณสามารถกำหนด pagebreak ตามเงื่อนไขในการถักเป็น PDF ได้ สิ่งนี้ได้ผลสำหรับฉัน

```{r, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex')}
cat('\\pagebreak')
```

วิธีนี้ใช้งานได้ดีสร้างตัวแบ่งหน้าใน PDF แต่ไม่แสดงผลอะไรเลยใน HTML (ซึ่งการแบ่งหน้าไม่สมเหตุสมผล) ดูเหมือนว่ามันจะอัปเดตคำตอบหลักเพื่อเพิ่มความเป็นไปได้นี้
Magnus

1
{r, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex')} cat('\\pagebreak') ผลลัพธ์ใน Error in eval(x, envir = envir) : object 'opts_knit' not found Calls: <Anonymous> ... process_group.block -> call_block -> eval_lang -> eval -> eval Execution halted opts_knit$getคอนโซลทำงานได้ดี ?
keithpjolley

เพิ่ม echo = FALSEไปยังตัวเลือก knitr เพื่อหลีกเลี่ยงการรับคำสั่งcat('\\pagebreak')ในไฟล์เอาต์พุต
Akronix

@Akronix ฉันใช้เป็นcat('\\pagebreak')ก้อนและเพิ่มecho = FALSEไปยังตัวเลือกของ knitr แต่ยังคงได้รับ "## \ newpage" ใน pdf ของฉันมีความคิดอย่างไร
Benjamin Telkamp

1
```{r page break, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex'), echo = FALSE} cat('\\pagebreak') ```
Akronix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.