Rmarkdown'a akıllı bir şekilde \ newpage nasıl eklenir?


114

\newpageR markdown v2'de LaTeX komutunu bundan farklı bir şekilde kullanıp kullanamayacağınızı merak ediyorum :

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

Pdf_output üretiyorum. Herhangi bir1 herhangi bir fikriniz varsa lütfen yorum yapmaktan çekinmeyin :)! Teşekkürler

Bunun gibi pdf oluşturuyorum:

---
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 çıktınızı nasıl oluşturuyorsunuz?
Spacedman

Sorumu düzenledim. Nasıl pdf oluşturuyorum.
Marcin Kosiński

Ve sonra hangi paketleri / fonksiyonları kullanıyorsunuz? Yoksa RStudio'da sadece düğmelere mi tıklıyorsunuz?
Spacedman

Fark ne? Paketlerimin veya işlevlerimin, kodun bazı bölümlerine yeni sayfa eklemek istediğimle hiçbir ilgisi yok.
Marcin Kosiński

Tam iş akışını görmek güzel - markdown'dan PDF'ye geçmenin çeşitli yolları var. O olmadan tahmin ediyoruz. İyi tahmin @tonytonov
Spacedman

Yanıtlar:


177

Basitçe \newpageveya \pagebreakişe yarayacak, örneğin

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

Bu çözüm, PDF ördüğünüzü varsayar. HTML için, bir etiket ekleyerek benzer bir etki elde edebilirsiniz <P style="page-break-before: always">. Tarayıcınızda büyük olasılıkla bir sayfa sonu görmeyeceğinizi unutmayın (HTML'lerin kendi başına sayfaları yoktur), ancak yazdırma düzeni buna sahip olacaktır.


Konuyu bir şekilde kapatabilir miyim?
Marcin Kosiński

2
Rica ederim! Cevabı zaten kabul ettiniz (yeşil işaret); bu sorunun çözüldüğünün göstergesidir. Bu soru için yeterlidir, ancak diğer kullanıcılar cevaplarını veya yorumlarını ekleyebilir. Burada SO'da kapanış soruları, çok iyi olmayan soruları kilitleyen ve hatta uygun değilse onları silen oy temelli bir araçtır. Sorunuz sorun değil, bu yüzden şimdi kapatmak veya silmek zorunda değilsiniz, olduğu gibi bırakın.
tonytonov

Html'ye örerken bunun herhangi bir etkisi var mı? Herhangi bir hataya neden olur mu?
gvrocha

Yeni bir sayfa oluşturmakla ilgili bir soru olduğu için. Html çıktısında yeni bir sayfayı nasıl yaratırsınız?
Marcin Kosiński

1
@ MarcinKosiński HTML etiketlerini doğrudan ekleyebilirsiniz: açıklama için düzenleme bölümüne bakın.
tonytonov

22

Başlatma yığınında bir işlev tanımlıyorum

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

Sayfa sonu eklemek istediğim markdown kısmına yazıyorum

`r pagebreak()`

13

Sayfa sonu koşulunu örmeye PDF olarak verebilirsiniz. Bu benim için çalıştı.

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

Bu harika çalışır, PDF'de bir sayfa sonu oluşturur, ancak HTML'de herhangi bir çıktı vermez (burada sayfa sonlarının bir anlamı yoktur). Bu olasılığı eklemek için ana yanıtı güncellemek gerekir.
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$getkonsolda iyi sonuç verir . ?
keithpjolley

echo = FALSEknitr'e ekle , ifadeyi cat('\\pagebreak')çıktı dosyasında almaktan kaçınmayı seçer .
Akronix

@Akronix Parçada kullandım cat('\\pagebreak')ve echo = FALSEörgü seçeneklerine ekledim, ancak yine de pdf'imde "## \ newpage" alıyorum, neden?
Benjamin Telkamp

1
```{r page break, results='asis', eval=(opts_knit$get('rmarkdown.pandoc.to') == 'latex'), echo = FALSE} cat('\\pagebreak') ```
Akronix
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.