如何在R Markdown中同时设置浮动目录与开头目录?
当然可以同时拥有文档开头的静态目录和右侧的浮动目录啦!你之前报错,应该是不小心重复定义了toc参数(比如错误地在toc_float的子设置里又加了一遍toc: true)——其实在R Markdown的YAML配置里,toc和toc_float是html_document下两个独立的参数,合理设置根本不会冲突。
下面给你两种实用的实现方法,按需选就行:
方法一:自动生成双目录(推荐,适合长文档)
这个方法能让系统自动生成两个目录,只需要两步:
- 正确配置YAML元数据
保留toc: true(负责生成开头的静态目录)和toc_float(负责右侧浮动目录),注意不要重复写toc参数:--- title: "TEST" author: brettljausn date: January 15, 2018 output: html_document: toc: true # 开启静态开头目录 toc_float: # 开启右侧浮动目录 toc_collapsed: true toc_depth: 3 number_sections: true theme: lumen --- - 添加自定义CSS让静态目录显示
默认情况下,开启toc_float后,开头的静态目录会被主题CSS隐藏。我们只要加一小段CSS就能让它显示出来,还能顺便美化一下:
把这段代码块放在文档任意位置(建议末尾)就行,点击Knit后,你就能看到开头的静态目录和右侧的浮动目录同时存在啦!.toc { display: block !important; margin: 2em 0; padding: 1em; border: 1px solid #eee; border-radius: 4px; }
方法二:手动编写静态目录(适合短文档)
如果你的文档内容不多,也可以手动写开头的目录:
- 先把YAML里的
toc: true删掉,保留toc_float的设置 - 在文档最开头手动用Markdown列表写目录,比如:
这里的# 目录 - [R Markdown](#r-markdown) - [Including Plots](#including-plots)#r-markdown是标题的锚点,和你的章节标题对应(注意小写,空格换成短横线)。这种方式完全可控,但文档标题多了的话维护起来会有点麻烦。
内容的提问来源于stack exchange,提问作者f.lechleitner
相关产品推荐
相关产品推荐

