Wie füge ich ein Inhaltsverzeichnis in Rmarkdown hinzu?

85

Ich verwende RStudio zum Schreiben von Markdown-Dokumenten und möchte ein Inhaltsverzeichnis (TOC) über den Dokumenten hinzufügen, damit der Benutzer zum Lesen auf den entsprechenden Abschnitt klicken kann. Es gab einige relevante Beispiele für RPPs, aber jetzt kann ich sie scheinbar nicht finden. Bitte beachten Sie, dass ich & nicht benutze pandocund ziemlich neu in Rmd& bin knitr. Gibt es eine Möglichkeit, Inhaltsverzeichnisse ohne Verwendung hinzuzufügen pandoc? Wenn pandocis is must ist, welche Funktionen sind dann relevant?

BEARBEITEN

Hier ist eine kleine Beispielseite:

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

Ich habe versucht, dies in RStudio v 0.98.864 auszuführen, und es hat funktioniert! aber leider funktionierte es nicht bei 0.98.501 und 0.98.507. Ich arbeite an meiner Diplomarbeit in 0.98.501 und nach der Aktualisierung von RStudio haben einige meiner Analysen nicht funktioniert. Also kehrte ich zu 0,98,501 zurück. Was sollte ich jetzt tun? Ich möchte wirklich Inhaltsverzeichnisse, ohne jedoch die Ergebnisse anderer Analysen zu beeinträchtigen.

umair durrani
quelle
2
Ich glaube, das von Rstudio verwendete rmarkdown-Paket ist ein Wrapper um Pandoc, daher sollten Sie in der Lage sein, die entsprechende Option zu übergeben. In der Tat sollte es toc: truein der YAML-Front wichtig sein.
Täufer
1
Versuchen Sie einzurücken, folgen Sie den Beispielen in rmarkdown.rstudio.com und aktualisieren Sie Rstudio, wenn alles andere fehlschlägt
baptiste
1
@umairdurrani Ok. Das Beispiel hat keine Header. Was möchten Sie im Inhaltsverzeichnis haben?
MrFlick
1
danke @baptiste, ich hatte auch ein Problem damit, aber das Einrücken hat es richtig behoben.
Alex
1
Das richtige Einrücken in den Header ist der Schlüssel
N Brouwer

Antworten:

75

Die Syntax lautet

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

in der Dokumentation . Stellen Sie sicher, dass dies am Anfang Ihres Dokuments steht. Stellen Sie außerdem sicher, dass Ihr Dokument tatsächlich Überschriften enthält, da R sonst nicht sagen kann, was Sie im Inhaltsverzeichnis wünschen.

MrFlick
quelle
2
Dies ist genau das gleiche, was ich über die Rmd-Datei (vor dem Titel) gelegt und auf Strick-HTML geklickt habe. Das resultierende Dokument hat kein Inhaltsverzeichnis und wurde fehlerfrei erstellt. Gibt es eine andere Möglichkeit, wo etwas zu ändern?
Umair Durrani
2
Ich habe jetzt die RStudio-Versionen 0.98.501, .507 und .897 (Vorschau-Version) ausprobiert, aber diese Metadaten-Sache hat nicht funktioniert.
Umair Durrani
1
@umairdurrani können Sie Ihre Frage so bearbeiten, dass sie ein kleines Beispieldokument enthält, das für Sie nicht funktioniert. Auf diese Weise können wir genau das Gleiche versuchen, um zu sehen, was passiert.
MrFlick
62

Syntax mit mehr Optionen:

---
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
quelle
4
Ich denke, das ist toc_depthstattdepth
F. Privé
1
@ F.Privé Ich habe diese Antwort vor 1 Jahr geschrieben. Nicht sicher, ob das Paket diese Änderungen vorgenommen hat. Danke für Update.
Manoj Kumar
Wie füge ich in jedem Abschnitt einen Klick hinzu, um zum Inhaltsverzeichnis zurückzukehren? danke
Daniel
1
@Daniel - Versuchen Sie, Ankerlink-HTML zu verwenden, z. B.: <a href="#top"> Back To Top </a>An der Stelle (den Codezeilen), an der es angezeigt werden soll. Hoffe das funktioniert.
Manoj Kumar
19

Wenn Sie verwenden pdf_document, möchten Sie möglicherweise ein Inhaltsverzeichnis auf einer neuen Seite hinzufügen, was toc: truenicht zulässig ist. Das Inhaltsverzeichnis wird direkt nach dem Dokumenttitel, dem Autor und dem Datum eingefügt - da es in yaml ist.

Wenn Sie es auf einer neuen Seite haben möchten, müssen Sie eine Latexsprache verwenden. Hier ist was ich getan habe.

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

Also habe ich nach yaml (der Block zwischen ---) eine neue Seite mit \newpage, dann ein Inhaltsverzeichnis mit \tableofcontents, eine Liste mit Abbildungen \listoffigures, eine Liste mit Tabellen \listoftablesund eine neue Seite vor allem anderen hinzugefügt .

Beachten Sie, dass \vspace{3in}im Titel vor dem Drucken von Yaml (Titel usw.) ein vertikaler Abstand von 3 Zoll von oben hinzugefügt wird.

Lesen Sie hier mehr: https://www.sharelatex.com/learn/Table_of_contents

MSD
quelle