Як додати \ 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

Приємно бачити повний робочий процес - є різні способи переходу від розмітки до 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;" />')
}

У частині розмітки, куди я хочу вставити розрив сторінки, я набираю

`r pagebreak()`

13

Ви можете зробити умовний перехід сторінки до в'язання у PDF. Це працювало для мене.

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

Це чудово працює, створює розрив сторінки в PDF, але нічого не виводить у HTML (де розриви сторінок не мають сенсу). Здається, сусло оновить основну відповідь, щоб додати цю можливість.
Магнус

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до опції вязання, щоб уникнути отримання заяви cat('\\pagebreak')у вихідному файлі.
Акронікс

@Akronix я використовував cat('\\pagebreak')фрагменти і додав echo = FALSEдо в'язального пристрою, але все ж отримую "## \ newpage" у своєму PDF, будь-яка ідея чому?
Бенджамін Телькамп

1
```{r page break, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex'), echo = FALSE} cat('\\pagebreak') ```
Акронікс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.