dynnumwidth%20%D0%BD%D0%B5%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82%20%D0%BD%D0%B0%D0%B4%D0%B5%D0%B6%D0%BD%D0%BE%20%D0%B2%20KOMA-Script.png)
СогласноДокументация KOMA-Script, опция dynnumwidth
в tocbasic
-style toclines
(которая является шаблоном для стилей, используемых командами секционирования KOMA-Script в таблице содержания) выполняет следующие действия:
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 Маркусу Кому, который подтвердил, что это работает не так, как задумано.
Как упоминалосьесдд, ошибка была исправлена впредварительная версия v3.22.2559. Из журнала изменений:
r2559 2016-12-02 09:03:11 +0100 кОм:
- scrkernel-tocstyle.dtx: отсутствует \relax, добавлено для исправления
функции dynnumwidth
поэтому в версии KOMA-Script v3.22 он исчезнет.