Table des matières (tdesm) liée au md à l'aide de rmarkdown

quand j'utilise rmarkdown le paquet pour faire un Mdm dans un rapport de je peux inclure une table des matières par:

  md_document:
    toc: true  

Mais ils ne sont pas liés. Maintenant je peux le faire manuellement après avoir utilisé render en utilisant cette fonction j'ai créé:

rmarkdown::render("README.Rmd", "all") 

md_toc <- function(path = {(x <- dir())[tools::file_ext(x) == "md"]}){
    x <- suppressWarnings(readLines(path))
    inds <- 1:(which(!grepl("^s*-", x))[1] - 1)
    temp <- gsub("(^[ -]+)(.+)", "1", x[inds])
    content <- gsub("^[ -]+", "", x[inds])
    x[inds] <- sprintf("%s[%s](#%s)", temp, content, 
        gsub("[;/?:@&=+$,]", "", gsub("s", "-", tolower(content))))
    cat(paste(x, collapse = "n"), file = path)
}

md_toc()

cela fonctionne en relisant le fichier et en insérant manuellement les liens avec le formulaire [Section 1](#section-1).

y a-t-il une meilleure façon de faire le lien entre le MD toc et les sections?

j'ai ceci comme un GitHub repo si c'est plus facile, mais voici un MWE Mdm:

---
title: "testing_Rmd"
date: "`r format(Sys.time(), '%d %B, %Y')`"
output:
  html_document:
    toc: true
    theme: journal
    number_sections: true
  pdf_document:
    toc: true
    number_sections: true
  md_document:
    toc: true      
---


# Section 1

Stuff

# Section 2

More Stuff

## Random Stuff A

1 + 2

## Random Stuff B

```{r}
1 + 2
```

# Conclusion
18
demandé sur Tyler Rinker 2015-05-02 04:09:06

1 réponses

travailler à partir de post dans le groupe de discussion pandoc, est-ce que quelque chose comme ce travail pour vous?

supposons que la source est testTOC.Mdm...

```{r mdTOC, echo=FALSE}
mdTOC <- grepl("markdown", knitr::opts_knit$get("rmarkdown.pandoc.to") )
```

```{r, engine='bash', results='asis',echo=FALSE, eval=mdTOC}
# toc-template.txt is somewhere in the path and only contains a single line:: $toc$
pandoc --template=toc-template.txt --toc --to html --from markdown testTOC.Rmd |\
pandoc --to markdown --from html
```

Sorties::

-   [Section 1](#section-1)
-   [Section 2](#section-2)
    -   [Random Stuff A](#random-stuff-a)
    -   [Random Stuff B](#random-stuff-b)
-   [Conclusion](#conclusion)

donc vous voulez mettre toc: false dans L'en-tête YAML de ne pas le répéter.

1
répondu Thell 2015-06-08 18:30:39