如何在基于Metropolis主题的Beamer幻灯片RMarkdown模板中添加带编号目录并保留原有格式
解决Metropolis主题Beamer幻灯片添加编号目录同时保留格式的问题
看起来你遇到的格式丢失问题,核心原因是配置加载顺序冲突:你通过includes:in_header引入的toc.tex会先于header-includes中的主题加载命令执行,导致目录模板设置被后续加载的Metropolis主题覆盖,甚至引发样式冲突丢失主题格式。
最简解决方案:整合配置到header-includes
不需要单独的toc.tex文件,直接把目录编号的设置放到header-includes里,并且放在主题加载命令之后,就能完美兼顾主题样式和编号目录。修改后的slides.rmd如下:
--- title: "Title" subtitle: "Subtitle" author: "Simon" institute: "RUB" date: "September 22, 2021" output: beamer_presentation: keep_md: true keep_tex: no latex_engine: xelatex slide_level: 2 # 定义作为幻灯片的标题层级 incremental: no header-includes: - \usetheme[numbering=fraction]{metropolis} - \definecolor{beaublue}{rgb}{0.74, 0.83, 0.9} - \setbeamertemplate{frame footer}{\tiny{\textcolor{beaublue}{Conference 56. Jahrestagung der DGSMP, 2021}}} # 新增编号目录的模板设置,放在主题加载之后 - \setbeamertemplate{section in toc}[sections numbered] - \setbeamertemplate{subsection in toc}[subsections numbered] - | \makeatletter \def\ps@titlepage{% \setbeamertemplate{footline}{} } \addtobeamertemplate{title page}{\thispagestyle{titlepage}}{} \makeatother --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = FALSE)
Content
\tableofcontents[]
Level I Test
Slide with Bullets
- Bullet 1
- Bullet 2
- Bullet 3
Slide with R Output
summary(cars)
### 为什么这样有效? 1. **加载顺序正确**:Metropolis主题先加载,之后的目录模板设置会覆盖主题默认的无编号目录样式,不会被主题设置反向覆盖。 2. **配置集中管理**:所有LaTeX预定义命令都放在`header-includes`里,避免多文件引入的顺序冲突,后续修改也更方便。 ### 如果你坚持要使用单独的`toc.tex`文件 如果一定要保留`toc.tex`,只需把`\usetheme[numbering=fraction]{metropolis}`移到`toc.tex`的最开头,确保主题先加载,再设置目录模板: `toc.tex`内容修改为: ```latex \usetheme[numbering=fraction]{metropolis} \setbeamertemplate{section in toc}[sections numbered] \setbeamertemplate{subsection in toc}[subsections numbered]
然后在slides.rmd中移除header-includes里的\usetheme命令,保留其他配置即可。
内容的提问来源于stack exchange,提问作者Simon Ress
相关产品推荐
相关产品推荐

