You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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过滤器调整标题的层级和目录属性:

  1. 创建一个名为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
  1. 在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:25:24