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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:13:31