根据KOMA-Script 文档, -styledynnumwidth
中的选项(这是目录中 KOMA-Script 分段命令使用的样式的模板)执行以下操作:tocbasic
toclines
dynnumwidth=switch
:如果开关与样式一起处于活动状态tocline
,则忽略属性。取而代之的是,使用numwidth
上次 LaTeX 运行中检测到的最大数字宽度加上的值。numsep
但是,最大数字宽度的检测似乎并不可靠。考虑以下两个 MWE:
test_1.tex
:
\documentclass[american]{scrartcl}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\RedeclareSectionCommands[tocdynnumwidth]{section,subsection,subsubsection}
\begin{document}
\tableofcontents
\addsectiontocentry{Nr.~1}{Test1}
\addsectiontocentry{Nr.~2}{Test2}
\addsectiontocentry{Nr.~3}{Test3}
\addsectiontocentry{Number~4}{Test4 (long)}
\end{document}
输出:
test_2.tex
:
\documentclass[american]{scrartcl}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\RedeclareSectionCommands[tocdynnumwidth]{section,subsection,subsubsection}
\begin{document}
\tableofcontents
\addsectiontocentry{Nr.~1}{Test1}
\addsectiontocentry{Nr.~2}{Test2}
\addsectiontocentry{Number~3}{Test3 (long)}
\addsectiontocentry{Number~4}{Test4 (long)}
\end{document}
输出:
因此,如果我有三个或更多数字宽度较短的条目,dynnumwidth
则不会检测到较长的条目并选择numwidth
太小的值(MWE 1)。另一方面,如果有两个较短的数字宽度条目和两个较长的数字宽度条目,numwidth
则会确定正确的值(MWE 2)。这是错误还是我使用dynnumwidth
不正确?
我正在使用 TeX Live 2016/KOMA-Script v3.21。
答案1
我向 KOMA-Script 作者 Markus Kohm 提交了一个错误报告,他确认这并没有按预期运行。
正如所提到的埃塞克斯,该错误已在预发布 v3.22.2559. 来自更新日志:
r2559 2016-12-02 09:03:11 +0100千欧:
- scrkernel-tocstyle.dtx:缺少 \relax,以修复 dynnumwidth
功能
因此它将在 KOMA-Script 版本 v3.22 中消失。