目录因 Koma Script 和 lstdoc 而损坏

目录因 Koma Script 和 lstdoc 而损坏

在我的示例文档中,Koma Script(使用版本 3.11a)和包之间似乎存在一些负面交互lstdoc。当我注释掉 MWE 时,它工作得很好,\usepackage{lstdoc}但当我包含它时,目录的格式就乱了。以下是示例文档:

\documentclass[
a4paper,
titlepage
]{scrbook}

\usepackage{lstdoc}

\begin{document}
\tableofcontents

\section{test1}
test test
\end{document}

输出lstdoc如下 在此处输入图片描述

而使用包含的包时会发生这种情况: 在此处输入图片描述

有没有办法解决这个问题?我想要这条线,因为我正在使用glossaries包的替代方案问题这需要lstdoc包。我注意到,如果使用,hyperref也会被拉进来,但单独使用不会引起任何问题。lstdochyperref

答案1

问题是lstdoc.sty重新定义了一些\l@...负责排版目录中各部分单元条目的命令系列。例如,\l@section在中定义lstdoc.sty

\newcommand*\l@section[2]{%
    \addpenalty\@secpenalty
    \addvspace{.25em \@plus\p@}%
    \setlength\@tempdima{1.5em}%
    \begingroup
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode
      \advance\leftskip\@tempdima
      \hskip -\leftskip
      #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
    \endgroup}

\l@section而in的定义scrbook.cls

\newcommand*\l@section{\bprot@dottedtocline{1}{1.5em}{2.3em}}

为了恢复原始定义,您可以将\l@...文档前言中的命令重新定义为 使用的命令scrbook.cls。例如:

\documentclass[a4paper,titlepage]{scrbook}
\usepackage{lstdoc}

\makeatletter
\renewcommand*\l@section{\bprot@dottedtocline{1}{1.5em}{2.3em}}
\makeatother

\begin{document}
\tableofcontents

\section{test1}
test test
\end{document}

生产

在此处输入图片描述

\l@...这是(直到彩色超链接)原始格式。对于与将进入目录的其他部分单元相对应的其他一些命令,以及由 lstdoc.sty 重新定义的 \l@... 命令,也必须进行类似的重新定义。

以下示例代码显示了获取从\chapter到 的ToC 条目的原始格式所必需的重新定义\subparagraph

\documentclass[a4paper,titlepage]{scrbook}
\usepackage{lstdoc}

% all sectional units will be numbered and will go to the ToC
\setcounter{secnumdepth}{5}
\setcounter{tocdepth}{5}

\makeatletter
\renewcommand*\l@section{\bprot@dottedtocline{1}{1.5em}{2.3em}}
\renewcommand*\l@subsection{\bprot@dottedtocline{2}{3.8em}{3.2em}}
\renewcommand*\l@subsubsection{\bprot@dottedtocline{3}{7.0em}{4.1em}}
\makeatother

\begin{document}
\tableofcontents

\chapter{Test Chapter}
\section{Test Section}
\subsection{Test Subsection}
\subsubsection{Test Subsubsection}
\paragraph{Test Paragraph}
\subparagraph{Test Subparagraph}

\end{document}

在此处输入图片描述

相关内容