Come aggiungere un sommario in Rmarkdown?


89

Sto usando RStudio per scrivere documenti di markdown e desidero aggiungere il sommario (TOC) all'inizio dei documenti in modo che l'utente possa fare clic sulla sezione pertinente per la lettura. C'erano alcuni esempi rilevanti su rpubs ma ora non riesco a trovarli. Tieni presente che non uso pandoce sono abbastanza nuovo per Rmd& knitr. C'è un modo per aggiungere sommari senza utilizzarli pandoc? Se usare pandocis must allora quali funzioni sono rilevanti?

MODIFICARE

Ecco una piccola pagina di esempio:

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

Ho provato a eseguirlo in RStudio v 0.98.864 e ha funzionato! ma purtroppo non ha funzionato su 0.98.501 e 0.98.507. Sto lavorando alla mia tesi in 0.98.501 e dopo aver aggiornato RStudio, alcune delle mie analisi non hanno funzionato. Quindi, sono tornato a 0.98.501. Cosa dovrei fare ora? Voglio davvero i TOC ma senza danneggiare i risultati di altre analisi.


2
Credo che il pacchetto rmarkdown utilizzato da Rstudio sia un wrapper per pandoc, quindi dovresti essere in grado di passare l'opzione pertinente. In effetti, toc: truenel frontespizio YAML dovrebbe farlo.
baptiste

1
prova a indentare , seguendo gli esempi in rmarkdown.rstudio.com e aggiornando Rstudio se tutto il resto fallisce
baptiste

1
@umairdurrani Ok. il campione non ha intestazioni. Cosa vuoi che ci sia nel sommario?
MrFlick

1
grazie @baptiste, ho avuto un problema anche con questo, ma il rientro lo ha risolto correttamente.
Alex

1
il rientro corretto nell'intestazione è la chiave
N Brouwer

Risposte:


77

La sintassi è

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

nella documentazione . Assicurati che sia all'inizio del documento. Assicurati anche che il tuo documento abbia effettivamente delle intestazioni altrimenti R non può dire cosa vuoi nel sommario.


2
Questa è esattamente la stessa cosa che ho inserito nel file Rmd (prima del titolo) e ho fatto clic su knit HTML. Il documento risultante non ha un sommario ed è stato creato senza errori. C'è qualche altra opzione per cambiare alcuni dove?
umair durrani

2
Ora ho provato le versioni di RStudio 0.98.501, .507 e .897 (versione di anteprima), ma questa cosa dei metadati non ha funzionato.
umair durrani

1
@umairdurrani puoi modificare la tua domanda per includere un piccolo documento di esempio che non funziona per te. In questo modo possiamo provare la stessa identica cosa per vedere cosa succede.
MrFlick

66

Sintassi con più opzioni:

---
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
Penso che questo sia toc_depthinvece didepth
F. Privé

1
@ F.Privé Ho scritto questa risposta circa 1 anno fa. Non sono sicuro che il pacchetto abbia apportato queste modifiche. Grazie per l'aggiornamento.
Manoj Kumar

Come aggiungere un clic in ciascuna sezione per tornare al sommario? grazie
Daniel

1
@Daniel - Prova a utilizzare il link di ancoraggio HTML come: <a href="#top"> Back To Top </a>nella posizione (le righe di codice) in cui desideri che appaia. Spero che funzioni.
Manoj Kumar

22

Se stai usando pdf_document, potresti voler aggiungere il sommario in una nuova pagina, cosa toc: trueche non consente. Mette il sommario subito dopo il titolo, l'autore e la data del documento, perché è in yaml.

Se vuoi averlo in una nuova pagina, devi usare un linguaggio latex. Ecco cosa ho fatto.

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

Quindi, dopo yaml (il pezzo tra ---), ho aggiunto una nuova pagina usando \newpage, poi un sommario usando \tableofcontents, un elenco di figure usando \listoffigures, un elenco di tabelle \listoftablese una nuova pagina prima di tutto il resto.

Nota, \vspace{3in}nel titolo aggiunge uno spazio verticale di 3 pollici dall'alto prima di stampare yaml (titolo, ecc.).

Maggiori informazioni qui: https://www.sharelatex.com/learn/Table_of_contents

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.