如何在R Markdown中仅将toc_depth设置为2级目录?
如何在R Markdown HTML输出中仅显示2级目录
默认设置toc_depth: 2会同时包含1级和2级标题的目录项,要只保留2级目录,有两种实用方法:
方法1:用自定义CSS隐藏1级目录
这种方法最简单,直接在R Markdown文档中添加一段CSS代码,视觉上隐藏1级目录项,并调整2级项的缩进使其对齐:
<style> /* 隐藏所有1级目录条目 */ .tocify-item.level-1 { display: none; } /* 移除2级目录的默认缩进,让它对齐原1级位置 */ .tocify-item.level-2 { margin-left: 0; } </style>
把这段代码放在YAML配置块之后、正文内容之前即可。
方法2:用Pandoc Lua过滤器修改目录生成逻辑
如果需要从根源上移除1级标题的目录项(而非仅视觉隐藏),可以用Lua过滤器调整标题的层级和目录属性:
- 创建一个名为
toc-only-level2.lua的文件,写入以下内容:
function Header(el) -- 将2级标题提升为目录的顶级项 if el.level == 2 then el.level = 1 -- 让原1级标题不加入目录 elseif el.level == 1 then el.attributes["toc"] = "false" end return el end
- 在R Markdown的YAML配置中指定这个过滤器,并设置
toc_depth: 1:
--- title: "Habits" output: html_document: toc: true toc_depth: 1 pandoc_args: ["--lua-filter=toc-only-level2.lua"] ---
这样生成的目录只会包含原2级标题的条目,原1级标题不会出现在目录中。
内容的提问来源于stack exchange,提问作者prdel99
相关产品推荐
相关产品推荐

