Rmarkdownに目次を追加するにはどうすればよいですか?


88

マークダウンドキュメントの作成にRStudioを使用しており、ユーザーが関連するセクションをクリックして読むことができるように、ドキュメントの上部に目次(TOC)を追加したいと考えています。rpubsにいくつかの関連する例がありましたが、今はそれらを見つけることができないようです。私は使用しておらずpandocRmd&はまったく新しいことに注意してくださいknitr。使用せずに目次を追加する方法はありますpandocか?使用するpandoc必要がある場合、どの機能が関連していますか?

編集

これが小さなサンプルページです:

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

これをRStudiov 0.98.864で実行してみましたが、機能しました。しかし残念ながら、0.98.501と0.98.507では機能しませんでした。0.98.501で論文に取り組んでいますが、RStudioを更新した後、一部の分析が機能しませんでした。それで、私は0.98.501に戻りました。私は今どうすればいい?私は本当に目次が欲しいのですが、他の分析の出力を損なうことはありません。


2
Rstudioで使用されるrmarkdownパッケージはpandocのラッパーであると思うので、関連するオプションを渡すことができるはずです。実際、toc: trueYAMLではフロントマターがそれを行う必要があります。
baptiste 2014年

1
例以下、インデントしてみてくださいrmarkdown.rstudio.com他のすべてが失敗した場合、更新Rstudio
バティスト

1
@umairdurraniわかりました。サンプルにはヘッダーがありません。あなたは目次に何になりたいですか?
MrFlick 2014年

1
@baptisteに感謝します。これにも問題がありましたが、インデントすると適切に修正されました。
アレックス

1
ヘッダーの適切なインデントが重要
N Brouwer 2016

回答:


76

構文は

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

のドキュメント。これがドキュメントの先頭にあることを確認してください。また、ドキュメントに実際にヘッダーがあることを確認してください。そうしないと、Rは目次に何が必要かを判断できません。


2
これは、Rmdファイルの上(タイトルの前)に配置してニットHTMLをクリックしたのとまったく同じです。結果のドキュメントには目次がなく、エラーなしで作成されました。どこかを変更する他のオプションはありますか?
umair durrani 2014年

2
RStudioバージョン0.98.501、.507、および.897(プレビューリリース)を試しましたが、このメタデータは機能しませんでした。
umair durrani 2014年

1
@umairdurraniは、質問を編集して、うまくいかない小さなサンプルドキュメントを含めることができます。そうすれば、まったく同じことを試して、何が起こるかを確認できます。
MrFlick 2014年

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.プリヴェ

1
@F.Privé私はこの答えを1年ほど前に書きました。パッケージがこれらの変更を行ったかどうかはわかりません。更新していただきありがとうございます。
マノジクマール2017

各セクションにクリックを追加して目次に戻るにはどうすればよいですか?ありがとう
ダニエル

1
@ Daniel-<a href="#top"> Back To Top </a>表示したい場所(コード行)で:などのアンカーリンクHTMLを使用してみてください。これがうまくいくことを願っています。
マノジクマール2018

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.