Bagaimana cara menambahkan daftar isi di Rmarkdown?

89

Saya menggunakan RStudio untuk menulis dokumen penurunan harga dan ingin menambahkan Daftar Isi (TOC) di atas dokumen sehingga pengguna dapat mengklik bagian yang relevan untuk membaca. Ada beberapa contoh yang relevan tentang rpub tetapi sekarang saya tidak dapat menemukannya. Harap dicatat bahwa saya tidak menggunakan pandocdan saya cukup baru dalam Rmd& knitr. Apakah ada cara untuk menambahkan TOC tanpa menggunakan pandoc? Jika menggunakan pandocharus maka fungsi mana yang relevan?

EDIT

Berikut adalah halaman contoh kecil:

---
title: "Sample Document"
output:
  html_document:
    toc: true
    theme: united
---

Header 1
---------------
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
    
## Header 2
When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
    
```{r}
summary(cars)
```

You can also embed plots, for example:

```{r, echo=FALSE}
plot(cars)
```
### Header 3
Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.

Saya mencoba menjalankan ini di RStudio v 0.98.864 dan berhasil! tapi sayangnya itu tidak berhasil pada 0.98.501 dan 0.98.507. Saya sedang mengerjakan tesis saya di 0.98.501 dan setelah memperbarui RStudio, beberapa analisis saya tidak berfungsi. Jadi, saya kembali ke 0.98.501. Apa yang harus saya lakukan sekarang? Saya benar-benar ingin TOC tetapi tanpa merusak hasil analisis lainnya.

umair durrani
sumber
2
Saya percaya paket rmarkdown yang digunakan oleh Rstudio adalah pembungkus pandoc, jadi Anda harus dapat memberikan opsi yang relevan. Bahkan, toc: truedi depan-materi YAML harus melakukannya.
baptiste
1
coba indentasi, ikuti contoh di rmarkdown.rstudio.com dan perbarui Rstudio jika semuanya gagal
baptiste
1
@umurrahir. sampel tidak memiliki tajuk apa pun. Apa yang Anda inginkan dari daftar isi?
MrFlick
1
terima kasih @baptiste, saya juga memiliki masalah dengan ini, tetapi membuat indentasi memperbaikinya dengan benar.
Alex
1
indentasi yang tepat di header adalah kuncinya
N Brouwer

Jawaban:

77

Sintaksnya adalah

---
title: "Sample Document"
output:
  html_document:
    toc: true
    theme: united
---

dalam dokumentasi . Pastikan ini ada di awal dokumen Anda. Juga pastikan dokumen Anda benar-benar memiliki tajuk jika tidak R tidak dapat memberi tahu apa yang Anda inginkan dalam daftar isi.

MrFlick
sumber
2
Ini adalah hal yang sama persis dengan yang saya letakkan di atas file Rmd (sebelum judul) dan mengklik rajutan HTML. Dokumen yang dihasilkan tidak memiliki daftar isi dan dibuat tanpa kesalahan apa pun. Apakah ada opsi lain untuk mengubah beberapa tempat?
umair durrani
2
Saya sekarang telah mencoba RStudio versi 0.98.501, .507 dan .897 (rilis pratinjau), tetapi metadata ini tidak berfungsi.
umair durrani
1
@umairdurrani dapatkah Anda mengedit pertanyaan Anda untuk menyertakan dokumen contoh kecil yang tidak sesuai untuk Anda. Dengan begitu kita dapat mencoba hal yang persis sama untuk melihat apa yang terjadi.
MrFlick
66

Sintaks dengan lebih banyak opsi:

---
title: "Planets"
author: "Manoj Kumar"
date: "`r format(Sys.time(), '%B %d, %Y')`"
output: 
  html_document:
    toc: true # table of content true
    toc_depth: 3  # upto three depths of headings (specified by #, ## and ###)
    number_sections: true  ## if you want number sections at each table header
    theme: united  # many options for theme, this one is my favorite.
    highlight: tango  # specifies the syntax highlighting style
    css: my.css   # you can add your custom css, should be in same folder
---
Manoj Kumar
sumber
4
Saya pikir ini toc_depthbukandepth
F. Privé
1
@ F.Privé Saya menulis jawaban ini sekitar 1 tahun yang lalu. Tidak yakin apakah paket telah membuat perubahan ini. Terima kasih atas pembaruannya.
Manoj Kumar
Bagaimana cara menambahkan klik di setiap bagian untuk kembali ke TOC? terima kasih
Daniel
1
@Daniel - Coba gunakan tautan jangkar HTML seperti: <a href="#top"> Back To Top </a>di lokasi (baris kode) di mana Anda ingin itu muncul. Semoga ini berhasil.
Manoj Kumar
22

Jika Anda menggunakan pdf_document, Anda mungkin ingin menambahkan daftar isi di halaman baru, yang toc: truetidak memungkinkan. Ini meletakkan daftar isi tepat setelah judul dokumen, penulis dan tanggal - karena ada di yaml.

Jika Anda ingin memilikinya di halaman baru, Anda harus menggunakan beberapa bahasa lateks. Inilah yang saya lakukan.

---
title: \vspace{3.5in}"Title"
author: "Name"
date: "`r Sys.Date()`"
output:
   pdf_document:
      fig_caption: true
      number_sections: true
---

\newpage # adds new page after title
\tableofcontents # adds table of contents
\listoffigures
\listoftables
\newpage

Jadi, setelah yaml (bagian antara ---), saya menambahkan halaman baru menggunakan \newpage , kemudian daftar isi menggunakan \tableofcontents, daftar gambar yang digunakan \listoffigures, daftar tabel \listoftables, dan halaman baru sebelum yang lainnya.

Perhatikan, \vspace{3in}dalam judul menambahkan spasi vertikal 3 inci dari atas sebelum mencetak yaml (judul, dll.).

Baca lebih lanjut di sini: https://www.sharelatex.com/learn/Table_of_contents

MSD
sumber