Bagaimana cara menambahkan \ newpage di Rmarkdown dengan cara yang cerdas?

114

Saya ingin tahu apakah seseorang dapat menggunakan \newpageperintah LaTeX di R markdown v2 dengan cara yang berbeda dari ini:

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

Saya menghasilkan pdf_output. Jika any1 punya ide, jangan ragu untuk berkomentar :)! Terima kasih

Saya membuat pdf seperti ini:

---
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
---
Marcin Kosiński
sumber
Bagaimana Anda membuat keluaran PDF Anda?
Spacedman
Saya mengedit pertanyaan saya. Ada cara saya membuat pdf.
Marcin Kosiński
Dan kemudian paket / fungsi apa yang Anda gunakan? Atau apakah Anda hanya mengklik tombol di RStudio?
Spacedman
Apa bedanya? Paket atau fungsi saya tidak ada hubungannya dengan itu saya ingin menambahkan halaman baru di beberapa bagian kode.
Marcin Kosiński
Senang rasanya melihat alur kerja lengkap - ada berbagai cara untuk beralih dari penurunan harga ke PDF. Tanpa itu, kami menebak-nebak. Tebakan bagus @tonytonov
Spacedman

Jawaban:

177

Sederhana \newpageatau \pagebreakakan berhasil, misalnya

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

Solusi ini mengasumsikan Anda merajut PDF. Untuk HTML, Anda dapat mencapai efek serupa dengan menambahkan tag <P style="page-break-before: always">. Perhatikan bahwa Anda mungkin tidak akan melihat hentian halaman di browser Anda (HTML tidak memiliki halaman per se), tetapi tata letak pencetakan akan memilikinya.

tonytonov
sumber
Bisakah saya menutup topik?
Marcin Kosiński
2
Sama sama! Anda telah menerima jawabannya (tanda hijau); Itu adalah indikasi bahwa masalah telah terpecahkan. Cukup untuk pertanyaan ini, meskipun pengguna lain mungkin masih menambahkan jawaban atau komentar mereka. Di sini, di pertanyaan penutup SO adalah alat berbasis suara yang mengunci pertanyaan yang tidak terlalu bagus atau bahkan menghapusnya jika tidak sesuai. Pertanyaan Anda baik-baik saja, jadi Anda tidak perlu menutup atau menghapusnya sekarang, biarkan saja apa adanya.
tonytonov
Apakah itu berpengaruh saat merajut ke html? Apakah itu menyebabkan kesalahan?
gvrocha
Karena ini adalah pertanyaan tentang membuat halaman baru. Bagaimana Anda membuat halaman baru dalam keluaran html?
Marcin Kosiński
1
@ MarcinKosiński Anda dapat memasukkan tag HTML secara langsung: lihat edit untuk klarifikasi.
tonytonov
22

Dalam potongan inisialisasi saya mendefinisikan sebuah fungsi

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

Di bagian penurunan harga tempat saya ingin menyisipkan hentian halaman, saya mengetik

`r pagebreak()`
Billy 34
sumber
13

Anda dapat membuat pagebreak bersyarat merajut ke PDF. Ini berhasil untuk saya.

```{r, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex')}
cat('\\pagebreak')
```
Bravoking
sumber
Ini berfungsi dengan baik, membuat jeda halaman dalam PDF tetapi tidak menghasilkan apa pun dalam HTML (di mana jeda halaman tidak masuk akal). Sepertinya wort itu untuk memperbarui jawaban utama untuk menambahkan kemungkinan ini.
Magnus
1
{r, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex')} cat('\\pagebreak') menghasilkan 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$getbekerja dengan baik di konsol sekalipun. ?
keithpjolley
tambahkan echo = FALSEke opsi knitr untuk menghindari pernyataan cat('\\pagebreak')dalam file output.
Akronix
@Akronix Saya gunakan cat('\\pagebreak')dalam potongan dan ditambahkan echo = FALSEke opsi knitr, tetapi masih mendapatkan "## \ newpage" di pdf saya, tahu mengapa?
Benjamin Telkamp
1
```{r page break, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex'), echo = FALSE} cat('\\pagebreak') ```
Akronix