Làm cách nào để thêm mục lục trong Rmarkdown?


88

Tôi đang sử dụng RStudio để viết các tài liệu đánh dấu và muốn thêm Mục lục (TOC) ở đầu tài liệu để người dùng có thể nhấp vào phần liên quan để đọc. Có một số ví dụ có liên quan trên rpubs nhưng bây giờ tôi dường như không thể tìm thấy chúng. Xin lưu ý rằng tôi không sử dụng pandocvà khá mới với Rmd& knitr. Có cách nào để thêm TOC mà không cần sử dụng pandockhông? Nếu sử dụng pandoclà phải thì những chức năng nào có liên quan?

BIÊN TẬP

Đây là một trang mẫu nhỏ:

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

Tôi đã thử chạy điều này trong RStudio v 0.98.864 và nó hoạt động! nhưng đáng buồn là nó không hoạt động trên 0,98.501 và 0,98.507. Tôi đang thực hiện luận án của mình trong 0.98.501 và sau khi cập nhật RStudio, một số phân tích của tôi không hoạt động. Vì vậy, tôi đã hoàn nguyên về 0,98,501. Tôi nên làm gì bây giờ? Tôi thực sự muốn TOC nhưng không làm tổn hại đến kết quả đầu ra của các phân tích khác.


2
Tôi tin rằng gói rmarkdown được sử dụng bởi Rstudio là một trình bao bọc xung quanh pandoc, vì vậy bạn có thể chuyển tùy chọn liên quan. Trong thực tế, toc: truetrong YAML vấn đề phía trước nên làm điều đó.
baptiste

1
thử thụt lề, làm theo các ví dụ trong rmarkdown.rstudio.com và cập nhật Rstudio nếu mọi thứ khác không thành công
baptiste

1
@umairdurrani Được rồi. mẫu không có bất kỳ tiêu đề nào. Bạn muốn gì trong mục lục?
MrFlick

1
cảm ơn @baptiste, tôi cũng gặp sự cố với điều này, nhưng việc thụt lề đã khắc phục đúng cách.
Alex

1
indenting thích hợp trong tiêu đề là chìa khóa
N Brouwer

Câu trả lời:


76

Cú pháp là

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

trong tài liệu . Đảm bảo rằng đây là phần đầu của tài liệu của bạn. Ngoài ra, hãy đảm bảo rằng tài liệu của bạn thực sự có tiêu đề, nếu không R không thể cho biết bạn muốn gì trong mục lục.


2
Đây là điều chính xác mà tôi đã đặt ở đầu tệp Rmd ​​(trước tiêu đề) và nhấp vào HTML đan. Tài liệu kết quả không có mục lục và được tạo ra mà không có bất kỳ lỗi nào. Có tùy chọn nào khác để thay đổi một số ở đâu không?
umair durrani,

2
Bây giờ tôi đã thử các phiên bản RStudio 0.98.501, .507 và .897 (bản phát hành xem trước), nhưng siêu dữ liệu này không hoạt động.
umair durrani,

1
@umairdurrani bạn có thể chỉnh sửa câu hỏi của mình để đưa vào một tài liệu mẫu nhỏ không phù hợp với bạn không. Bằng cách đó, chúng ta có thể thử điều tương tự để xem điều gì sẽ xảy ra.
MrFlick

63

Cú pháp với nhiều tùy chọn hơn:

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

4
Tôi nghĩ rằng đây là toc_depththay vìdepth
F. Prive

1
@ F.Privé Tôi đã viết câu trả lời này cách đây khoảng 1 năm. Không chắc liệu gói đã thực hiện những thay đổi này hay chưa. Cảm ơn đã cập nhật.
Manoj Kumar

Làm cách nào để thêm một lần nhấp vào mỗi phần để quay lại TOC? cảm ơn
Daniel

1
@Daniel - Hãy thử sử dụng liên kết liên kết HTML như: <a href="#top"> Back To Top </a>tại vị trí (các dòng mã) nơi bạn muốn nó xuất hiện. Hy vọng điều này hiệu quả.
Manoj Kumar

21

Nếu bạn đang sử dụng pdf_document, bạn có thể muốn thêm mục lục trong một trang mới, điều toc: truenày không cho phép. Nó đặt mục lục ngay sau tiêu đề, tác giả và ngày của tài liệu - vì nó nằm trong yaml.

Nếu bạn muốn có nó trong một trang mới, bạn phải sử dụng một số ngôn ngữ latex. Đây là những gì tôi đã làm.

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

Vì vậy, sau yaml (đoạn giữa ---), tôi đã thêm một trang mới bằng cách sử dụng \newpage, sau đó sử dụng mục lục \tableofcontents, danh sách các số liệu sử dụng \listoffigures, danh sách các bảng \listoftablesvà một trang mới trước mọi thứ khác.

Lưu ý, \vspace{3in}trong tiêu đề có thêm khoảng trống theo chiều dọc là 3 inch từ trên xuống trước khi in yaml (tiêu đề, v.v.).

Đọc thêm tại đây: https://www.sharelatex.com/learn/Table_of_contents

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.