如何在基于bookdown的R Markdown文档中添加多个目录?
bookdown插入双目录实现方案
第一步:配置全文总目录
首先在项目根目录的_output.yml中开启全局目录配置,即可生成覆盖全文的总目录,默认会渲染在文档开头位置。示例配置如下:
# 以gitbook(HTML)输出为例 bookdown::gitbook: toc: true toc_depth: 3 # 可自定义目录展示的章节深度 # 若使用PDF输出,配置逻辑一致 bookdown::pdf_book: toc: true toc_depth: 3
第二步:生成末尾附录专属目录
首先将所有附录章节统一放在# (APPENDIX) 附录 {-}标记之后,bookdown会自动为所有附录章节打上专属标识,方便筛选。根据输出格式选择对应实现方案:
- HTML格式输出
在文档末尾需要放置附录目录的位置,插入如下带results='asis'属性的R代码块,即可动态生成仅包含附录内容的目录:
# 筛选所有附录章节 all_chaps <- bookdown:::get_chapters() appendix_list <- all_chaps[grepl("^appendix-", names(all_chaps))] # 输出附录目录结构 cat("## 附录目录\n") for (idx in seq_along(appendix_list)) { chap_title <- appendix_list[[idx]]$title chap_href <- paste0("#", names(appendix_list)[idx]) cat(sprintf("- [%s](%s)\n", chap_title, chap_href)) }
- PDF格式输出
首先在项目的LaTeX前置文件preamble.tex中引入局部目录依赖包:
\usepackage{etoc}
之后在文档末尾需要放置附录目录的位置,插入如下LaTeX代码即可:
% 生成附录专属局部目录 \etocsettocstyle{\section*{附录目录}}{} \etocsetnexttocdepth{3} % 和全局目录深度保持一致即可,可自定义 \localtableofcontents \etocreset % 重置toc配置,避免影响后续内容
内容的提问来源于stack exchange,提问作者marin343
相关产品推荐
相关产品推荐

