LaTeX Beamer目录编号错位问题:通用修复方案技术问询
Beamer目录编号错位的通用修复方案
在Beamer的Aalborg主题中,当section编号为两位数及以上时,目录(TOC)里的subsection、subsubsection编号会与标题错位,且编号和标题的间距会缩小。这是因为原模板使用了固定的缩进和偏移数值,无法适配不同位数的编号宽度。
修复思路
放弃固定的em缩进值,改用固定宽度的盒子来容纳各级编号,确保不管编号是1位、2位还是更多位,标题都能从统一的位置开始,同时保持层级缩进的一致性。
修改后的完整代码
\documentclass[9pt,trans,xcolor={table},envcountsect]{beamer} % Plain \usefonttheme[onlymath]{serif} \usetheme[shownavsym,right]{Aalborg} \setbeamertemplate{navigation symbols}{\insertframenavigationsymbol \insertsectionnavigationsymbol \insertbackfindforwardnavigationsymbol} % Nav symbols \setbeamertemplate{section in toc}[sections numbered] % Automatic enumeration of sections \makeatletter \newcommand{\ShiftSectionNumber}[1]{% \beamer@tocsectionnumber=\numexpr#1+\beamer@tocsectionnumber} \makeatother % 修复后的subsection目录模板:用固定宽度盒子容纳编号,实现自适应对齐 \setbeamertemplate{subsection in toc}{% \leavevmode\leftskip=2.5em% 预留足够缩进空间 \makebox[2em][r]{\inserttocsectionnumber.\inserttocsubsectionnumber}% 编号右对齐,占用固定宽度 \hspace{0.5em}% 编号与标题的固定间距 \inserttocsubsection\par% } % 修复后的subsubsection目录模板 \setbeamertemplate{subsubsection in toc}{% \leavevmode\leftskip=5.5em% 三级标题缩进 \makebox[3em][r]{\inserttocsectionnumber.\inserttocsubsectionnumber.\inserttocsubsubsectionnumber}% \hspace{0.5em}% 固定间距 \inserttocsubsubsection\par% } \begin{document} \begin{frame} \frametitle{Overview} \tableofcontents \end{frame} \def \numbershift {0} % 调整section编号起始值 \ShiftSectionNumber{\numbershift} \addtocounter{section}{\numbershift} \section{First Section (1-digit section number)} \subsection{First Subsection} \subsubsection{First Subsubsection} \ShiftSectionNumber{8} \section{Second Section (2-digit section number)} \subsection{Second Subsection} \subsubsection{Second Subsubsection} \ShiftSectionNumber{89} \section{Third Section (3-digit section number)} \subsection{Third Subsection} \subsubsection{Third Subsubsection} \begin{frame}<+->{Misaligned indentation in TOC} Hello. \end{frame} \end{document}
关键修改说明
- 固定宽度盒子:使用
\makebox[宽度][对齐方式]{内容},让编号在固定宽度的盒子里右对齐([r]参数),不管编号是1位还是3位,盒子宽度不变,标题始终从同一位置开始。 - 统一间距:用
\hspace{0.5em}设置编号与标题的固定间距,避免因编号位数变化导致间距缩小。 - 层级缩进:调整
\leftskip的值来匹配盒子宽度,确保subsection、subsubsection的层级缩进清晰且统一。
这个方案无需手动调整数值,自动适配任意位数的section编号,彻底解决错位问题。
内容的提问来源于stack exchange,提问作者Peter Jensen
相关产品推荐
相关产品推荐

