在Rmarkdown中添加HTML文档左侧的目录

时间:2017-05-08 18:46:02

标签: html css r knitr r-markdown

我试图在Rmarkdown生成的HTML文档中添加目录。首先,我找到了this answer,这似乎是一种简单的方法,在HTML文件中添加一个CSS文件,这个代码是这样的:

#TOC {
  position: fixed;
  left: 0;
  top: 0;
  width: 200px;
  height: 100%;
  overflow:auto;
}
body {
  max-width: 800px;
  margin: auto;
  margin-left:210px;
  line-height: 20px;
}

但我想从Rmarkdown修改CSS。为了解决我发现this other post的问题,如何添加自定义CSS标记。但这并不是我正在寻找的,也不知道如何以正确的方式将其与答案混合在一起。

我的代码如下:

---
title: "R"
output: html_document
toc: yes
runtime: shiny
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r results="asis"}
cat("TOC {
  position: fixed;
  left: 0;
  top: 0;
  width: 200px;
  height: 100%;
  overflow:auto;
}
body {
  max-width: 800px;
  margin: auto;
  margin-left:210px;
  line-height: 20px;
}")
```

我想我错过了一些重要的事情。提前谢谢!

2 个答案:

答案 0 :(得分:0)

first answe r的代码所示,您需要在YAML标题中添加这些代码,但是您需要注意空格:

title: "cssTest"
    output:
    html_document:
      css: custom.css
      toc: yes

然后,css文件应该是外部css文件。在您的Rmd代码之外。这是一个与Rmd文件位于同一目录中的文件,名为custom.css

答案 1 :(得分:0)

Hmisc 包在这方面非常好用,只需将以下内容添加到您的启动块中并运行它。它将在 html 中呈现:

hidingTOC(
buttonLabel = "Contents",
levels = 3,
tocSide = c("right", "left"),
buttonSide = c("right", "left"),
posCollapse = c("margin", "top", "bottom"),
hidden = FALSE
)

tocSide 指定您希望 TOC 位于哪一侧。有关更具体的文档,请访问:https://cran.r-project.org/web/packages/Hmisc/Hmisc.pdf