如何在Rmarkdown中添加目录?


88

我正在使用RStudio编写降价文档,并希望在文档顶部添加目录(TOC),以便用户可以单击相关部分进行阅读。在rpubs上有一些相关的例子,但是现在我似乎找不到它们。请注意,我不使用&是&的pandoc新手。有没有不用添加任何TOC的方法?如果必须使用,那么哪些功能是相关的?Rmdknitrpandocpandoc

编辑

这是一个小的示例页面:

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

我尝试在RStudio v 0.98.864中运行它,它确实有效!但遗憾的是,它在0.98.501和0.98.507上不起作用。我正在0.98.501中研究论文,并且在更新RStudio之后,我的某些分析不起作用。因此,我恢复为0.98.501。我现在应该怎么办?我确实想要TOC,但又不损害其他分析的结果。


2
我相信Rstudio使用的rmarkdown软件包是pandoc的包装,因此您应该能够传递相关选项。实际上,toc: true在YAML中,前者应该这样做。
2014年

1
尝试缩进,按照rmarkdown.rstudio.com中的示例进行操作,如果其他所有操作均失败,则更新Rstudio
baptiste

1
@umairdurrani好。该示例没有任何标题。您想成为目录中的什么?
MrFlick

1
谢谢@baptiste,我也有这个问题,但是缩进正确地解决了它。
Alex

1
标头中适当的缩进是关键
N Brouwer

Answers:


76

语法是

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

文档中。确保这是在文档的开头。还要确保您的文档实际上有标题,否则R不能在目录中告诉您想要的内容。


2
这与我放在Rmd文件顶部(标题之前)并单击编织HTML完全相同。生成的文档没有目录,并且创建时没有任何错误。还有其他选择可以在哪里更改吗?
2014年

2
我现在已经尝试了RStudio 0.98.501,.507和.897(预览版),但是此元数据没有用。
umair durrani 2014年

1
@umairdurrani您可以编辑问题以包含一个不适合您的小型示例文档。这样,我们可以尝试完全相同的事情来看看会发生什么。
MrFlick

63

带有更多选项的语法:

---
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
我认为这toc_depth不是depth
F.Privé17年

1
@F.Privé大约一年前,我写了这个答案。不知道软件包是否进行了这些更改。感谢更新。
Manoj Kumar

如何在每个部分中添加单击以返回到目录?谢谢
丹尼尔(Daniel)

1
@Daniel-尝试<a href="#top"> Back To Top </a>在您希望其出现的位置(代码行)使用锚链接HTML,例如:。希望这行得通。
Manoj Kumar

21

如果使用pdf_document,则可能需要在新页面中添加目录,这toc: true是不允许的。它会将目录直接放在文档标题,作者和日期之后-因为它在yaml中。

如果要在新页面中使用它,则必须使用某种乳胶语言。这是我所做的。

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

因此,在yaml(---之间的代码块)之后,我添加了使用的新页面\newpage,然后使用\tableofcontents了目录,使用\listoffigures的图列表,表的列表\listoftables以及新页面。

请注意,\vspace{3in}在标题中,在打印Yaml(标题等)之前,请从顶部开始增加3英寸的垂直空间。

在此处阅读更多信息:https : //www.sharelatex.com/learn/Table_of_contents

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.