Làm cách nào để thêm \ newpage trong Rmarkdown một cách thông minh?


114

Tôi tự hỏi liệu người ta có thể sử dụng \newpagelệnh LaTeX trong R markdown v2 theo cách khác không:

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

Tôi sản xuất pdf_output. Nếu any1 có bất kỳ ý tưởng xin đừng ngần ngại comment :)! Cảm ơn

Tôi tạo pdf như thế này:

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

Bạn đang tạo đầu ra PDF của mình như thế nào?
Spacedman

Tôi đã chỉnh sửa câu hỏi của mình. Đó là cách tôi tạo pdf.
Marcin Kosiński,

Và sau đó những gói / chức năng nào bạn sử dụng? Hay bạn chỉ cần nhấp vào các nút trong RStudio?
Spacedman,

Có gì khác biệt? Các gói hoặc chức năng của tôi không liên quan gì đến điều đó. Tôi muốn thêm trang mới vào một số phần của mã.
Marcin Kosiński,

Thật tuyệt khi thấy toàn bộ quy trình làm việc - có nhiều cách khác nhau để chuyển từ đánh dấu sang PDF. Nếu không có điều đó, chúng tôi đoán. Đoán tốt @tonytonov
Spacedman

Câu trả lời:


177

Đơn giản \newpagehoặc \pagebreaksẽ hoạt động, ví dụ:

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

Giải pháp này giả định bạn đang đan PDF. Đối với HTML, bạn có thể đạt được hiệu ứng tương tự bằng cách thêm thẻ <P style="page-break-before: always">. Lưu ý rằng bạn có thể sẽ không thấy ngắt trang trong trình duyệt của mình (HTML không có trang), nhưng bố cục in sẽ có ngắt trang.


Tôi có thể đóng chủ đề bằng cách nào đó không?
Marcin Kosiński

2
Không có gì! Bạn đã chấp nhận câu trả lời (dấu xanh); đó là dấu hiệu cho thấy vấn đề đã được giải quyết. Câu hỏi này là đủ, mặc dù những người dùng khác vẫn có thể thêm câu trả lời hoặc nhận xét của họ. Ở đây SO đóng câu hỏi là một công cụ dựa trên phiếu bầu để khóa những câu hỏi không tốt hoặc thậm chí xóa chúng nếu chúng không phù hợp. Câu hỏi của bạn là tốt, vì vậy bạn không cần phải đóng hoặc xóa nó bây giờ, chỉ cần để nguyên nó.
tonytonov

Điều đó có ảnh hưởng gì khi đan vào html không? Nó có gây ra lỗi gì không?
gvrocha

Vì nó là một câu hỏi về việc tạo một trang mới. Bạn sẽ tạo một trang mới trong đầu ra html như thế nào?
Marcin Kosiński

1
@ MarcinKosiński Bạn có thể chèn thẻ HTML trực tiếp: xem phần chỉnh sửa để rõ hơn.
tonytonov

22

Trong phần khởi tạo, tôi xác định một hàm

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

Trong phần đánh dấu nơi tôi muốn chèn ngắt trang, tôi nhập

`r pagebreak()`

13

Bạn có thể đặt dấu ngắt trang có điều kiện để đan thành PDF. Điều này đã làm việc cho tôi.

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

Điều này hoạt động tốt, tạo ngắt trang trong PDF nhưng không xuất ra bất kỳ thứ gì trong HTML (nơi ngắt trang không có ý nghĩa). Có vẻ như nó muốn cập nhật câu trả lời chính để thêm khả năng này.
Magnus

1
{r, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex')} cat('\\pagebreak') kết quả là 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$gethoạt động tốt trong bảng điều khiển. ?
keithpjolley, 29/09/18

thêm echo = FALSEvào các tùy chọn để tránh để lấy câu lệnh cat('\\pagebreak')trong tệp đầu ra.
Akronix

@Akronix Tôi đã sử dụng cat('\\pagebreak')trong đoạn và thêm vào echo = FALSEtùy chọn nội dung, nhưng vẫn nhận được "## \ newpage" trong pdf của mình, bạn có biết tại sao không?
Benjamin Telkamp

1
```{r page break, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex'), echo = FALSE} cat('\\pagebreak') ```
Akronix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.