(toc)dynnumwidth не работает надежно в KOMA-Script

(toc)dynnumwidth не работает надежно в KOMA-Script

СогласноДокументация 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}

Выход:

Первый MWE: <code>dynnumwidth</code> сломан

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}

Выход:

Второй MWE: <code>dynnumwidth</code> работает

Так что если у меня есть три или более записей с короткой шириной чисел, 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 он исчезнет.

Связанный контент