仅增加目录中特定部分的间距

仅增加目录中特定部分的间距

我有一篇包含一些章节、所有索引和附录的文本。当我在开头打印目录时,附录的标题太长,并且与标题重叠,如下所示: 在此处输入图片描述

我尝试用以下方法解决这个问题

\DeclareTOCStyleEntry[dynnumwidth=true]{tocline}{section}

但这会使每个数字的宽度都变成最大的数字宽度,看起来确实不太好看: 在此处输入图片描述

如您所见,第一个的间距现在长得令人难以置信。我知道标题都位于同一起点是有原因的,但对我来说这真的无关紧要,因为索引标题最终将两个章节(视觉上)分开。那么有没有办法告诉目录仅从特定点调整宽度?MWE:

\documentclass[pdftex,a4paper,halfparskip, 11pt]{scrartcl}
%\DeclareTOCStyleEntry[dynnumwidth=true]{tocline}{section} %Uncomment to active adjustment
\begin{document}
\tableofcontents
\newpage
\section{Normal section}
\renewcommand\thesection{Appendix~\Alph{section}}
\setcounter{section}{0}
\section{This is Appendix}
\end{document}

答案1

您的 MWE 发出警告:

Class scrartcl 警告:您使用了过时的选项halfparskip。使用此选项表示文档已过时,并且使用 更改兼容级别parskip=half,version=first, enabledeprecatedfontcommands可能会导致进一步的警告。如果您不想这样,只需将选项替换halfparskipparskip=half

为了避免出现警告并切换到version=first使用parskip=half

选项a4paper11pt是默认的,pdftex不需要选项。

不要重新定义\thesection。使用\appendix。之后重新定义并\sectionformat在TOC 中添加for 部分。\sectionmarkformat\appendixdynnumwidth

\appendix
\providecommand{\appendixname}{Appendix}
\newcommand{\entrywithprefixformat}[2]{#1\enskip#2}
\renewcommand{\sectionformat}{\appendixname~\thesection\autodot\enskip}
\renewcommand{\sectionmarkformat}{\appendixname~\thesection\autodot\enskip}
\addtocontents{toc}{%
  \protect\DeclareTOCStyleEntry[
    entrynumberformat=\protect\entrywithprefixformat{\appendixname},
    dynnumwidth
  ]{tocline}{section}
}

例子:

\documentclass[parskip=half]{scrartcl}% <- changed!!
\usepackage{blindtext}% only for dummy text

\providecommand{\appendixname}{Appendix}
\newcommand{\entrywithprefixformat}[2]{#1\enskip#2}

\AddToHook{cmd/appendix/after}{%
  \renewcommand{\sectionformat}{\appendixname~\thesection\autodot\enskip}%
  \renewcommand{\sectionmarkformat}{\appendixname~\thesection\autodot\enskip}%
  \addtocontents{toc}{%
    \protect\DeclareTOCStyleEntry[
      entrynumberformat=\protect\entrywithprefixformat{\appendixname},
      dynnumwidth
    ]{tocline}{section}%
  }%
}

\begin{document}
\tableofcontents
\clearpage
\blinddocument\blinddocument
\appendix
\blinddocument\blinddocument
\end{document}

在此处输入图片描述

还可以为附录中的章节定义自己的条目。

例子:

\documentclass[parskip=half]{scrartcl}% <- changed!!
\usepackage{blindtext}% only for dummy text

\providecommand{\appendixname}{Appendix}
\newcommand{\entrywithprefixformat}[2]{#1\enskip#2}
\DeclareTOCStyleEntry[
  level:=section,
  beforeskip:=section,
  indent:=section,
  numwidth:=section,
  dynnumwidth,
  entryformat=\usekomafont{sectionentry},
  entrynumberformat=\entrywithprefixformat{\appendixname}
]{tocline}{appendixsection}

\AddToHook{cmd/appendix/after}{%
  \renewcommand{\sectionformat}{\appendixname~\thesection\autodot\enskip}%
  \renewcommand{\sectionmarkformat}{\appendixname~\thesection\autodot\enskip}%
  \renewcommand{\addsectiontocentry}[2]{\addtocentrydefault{appendixsection}{#1}{#2}}%
}

\begin{document}
\tableofcontents
\clearpage
\blinddocument\blinddocument
\appendix
\blinddocument\blinddocument
\end{document}

结果和上面一样。

答案2

我简要地查看了该类,scrartcl但找不到如何实现您想要的功能。不幸的是,我scrartcl不喜欢该tocloft软件包,它提供了各种调整 ToC、LoF 和 LoT 的方法。这是article您的 MWE 版本。

[![% tocappspaceprob.tex  SE 642491

%\documentclass\[pdftex,a4paper,halfparskip, 11pt\]{scrartcl}
\documentclass\[pdftex,a4paper,halfparskip, 11pt\]{article}
%\DeclareTOCStyleEntry\[dynnumwidth=true\]{tocline}{section} %Uncomment to active adjustment
\usepackage{tocloft}
\begin{document}
\tableofcontents
\newpage
\section{Normal section}
\renewcommand\thesection{Appendix~\Alph{section}}
\setcounter{section}{0}

%%%%% increase space for Appendix ToC numbers
\addtocontents{toc}{\addtolength{\cftsecnumwidth}{5pc}}
\section{This is Appendix}
\end{document}][1]][1]

也许您可以在scrartcl手册中找到一些内容,使您能够更改特定类型的 ToC 条目的数字宽度。

在此处输入图片描述r.png

相关内容