tutorial - Tabla de contenido vinculada(toc) en md usando rmarkdown
r markdown tutorial pdf (1)
Trabajando desde una publicación en el grupo de discusión pandoc, ¿algo como este trabajo para usted?
Supongamos que la fuente es testTOC.Rmd ...
```{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
```
Salidas ::
- [Section 1](#section-1)
- [Section 2](#section-2)
- [Random Stuff A](#random-stuff-a)
- [Random Stuff B](#random-stuff-b)
- [Conclusion](#conclusion)
Así que querrías establecer toc: false
en el encabezado YAML para no repetirlo.
Cuando uso el paquete rmarkdown para convertir un Rmd en un md puedo incluir un toc a través de:
md_document:
toc: true
Pero no están vinculados. Ahora puedo hacer esto manualmente después de usar render
con esta función que creé:
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()
Funciona al volver a leer el archivo e insertar manualmente los enlaces con el formulario [Section 1](#section-1)
.
¿Hay un mejor enfoque para hacer que el md toc enlace a las secciones?
Tengo esto como un repositorio de GitHub si es más fácil, pero aquí hay un MWE Rmd:
---
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