在目录中设置零件编号和零件标题之间的空格

在目录中设置零件编号和零件标题之间的空格

我想将零件编号和零件标题之间的间距设置为特定长度,以便它们之间的水平间距始终相同。

我找到了一个关于回忆录类的解决方案,

在目录中的零件编号和零件标题之间添加空格

但这不适用于 scrreprt。

我知道我可以增加 tocnumwidth,但这会导致罗马编号部分的空间宽度不同。

以下是我的 MWE 及其结果:

\documentclass[openany,12pt]{scrreprt}

%-------Allgemeine Einstellungen--------------------
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

%------Verzeichnisse------------
\setcounter{tocdepth}{5} % fünf Ebenen statt drei im Inhaltsverzeichnis anzeigen
\setcounter{secnumdepth}{5} % fünf Ebenen sollen nummeriert werden

\usepackage{chngcntr}
\counterwithin*{chapter}{part}

%-------Verlinkungen-------
\usepackage[colorlinks]{hyperref} % Inhaltsverzeichnis anklickbar

\begin{document}

\clearpage
\pagenumbering{Roman} % römische Zahlen für Inhaltsverzeichnis etc.
\setcounter{page}{1} 
%----------Inhaltsverzeichnis
\tableofcontents

\pagenumbering{arabic} % Arabische Zahlen für den Inhalt

\part{Erster Teil}

\chapter{Erstes Kapitel}

\part{Zweiter Teil}

\chapter{Noch nen Kaptiel}

\part{Dritter Teil}

\chapter{Noch so ein Kaptiel}

\end{document}

蓝色标记的空间应具有相同的宽度。 蓝色标记的空间应具有相同的宽度

答案1

KOMA 通过 定义分段命令\DeclareSectionCommand。部分的默认定义是

\DeclareSectionCommand[%
  style=part,%
  level=\m@ne,%
  pagestyle=plain,%
  tocstyle=part,%
  toclevel=\m@ne,%
  tocindent=\z@,%
  tocnumwidth=2em%
]{part}

但是根据文档,您必须更改的长度tocnumwidth。这可以通过完成\RedeclareSectionCommand。但是您必须减去零件编号的宽度:

\documentclass[openany,12pt]{scrreprt}
\makeatletter
\newlength\parttocspacetemplength
 \newcommand\parttocspaceI[1]{%
   \sbox\@tempboxa{{#1}}%
   \setlength{\global\parttocspacetemplength}{\wd\@tempboxa}%
    \usebox\@tempboxa%
    } 

 \RedeclareSectionCommand[%
   tocentrynumberformat=\parttocspaceI,
   tocnumwidth=\dimexpr3em+\parttocspacetemplength\relax,%
 ]{part}
\makeatother

%-------Allgemeine Einstellungen--------------------
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

%------Verzeichnisse------------
\setcounter{tocdepth}{5} % fünf Ebenen statt drei im Inhaltsverzeichnis anzeigen
\setcounter{secnumdepth}{5} % fünf Ebenen sollen nummeriert werden

\usepackage{chngcntr}
\counterwithin*{chapter}{part}

%-------Verlinkungen-------
\usepackage[colorlinks]{hyperref} % Inhaltsverzeichnis anklickbar

\begin{document}

\clearpage
\pagenumbering{Roman} % römische Zahlen für Inhaltsverzeichnis etc.
\setcounter{page}{1} 
%----------Inhaltsverzeichnis
\tableofcontents

\pagenumbering{arabic} % Arabische Zahlen für den Inhalt

\part{Erster Teil}

\chapter{Erstes Kapitel}

\part{Zweiter Teil}

\chapter{Noch nen Kaptiel}

\part{Dritter Teil}

\chapter{Noch so ein Kaptiel}

\end{document}

在此处输入图片描述

答案2

另一种可能性是修补\addparttocentry

\usepackage{xpatch}
\xpatchcmd\addparttocentry
  {\addtocentrydefault{part}{#1}{#2}}
  {\ifstr{#1}{}
    {\addtocentrydefault{part}{#1}{#2}}%
    {\addtocentrydefault{part}{}{\texorpdfstring{#1\autodot\enskip}{}#2}}%
  }
  {}{\PatchFailed}
\RedeclareSectionCommand[
  tocnumwidth=0pt
]{part}

请注意,\pagenumbering将页码重置为 1。如果您在文档中使用此命令,请在\cleardoubleoddpage其前面插入。然后新的页码从新的右页开始。(在您的 MWE 中,它从目录的最后一页开始。)

\counterwithin包加载后另行使用hyperref。(在您的 MWE 中,目录中的所有章节条目都链接到“Erstes Kapitel”。)

\documentclass[%
  %open=any,% default for scrreprt and not needed for an onesided document
  12pt
]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\setcounter{tocdepth}{5}
\setcounter{secnumdepth}{5}

\usepackage{chngcntr}

\usepackage{xpatch}
\xpatchcmd\addparttocentry
  {\addtocentrydefault{part}{#1}{#2}}
  {\ifstr{#1}{}
    {\addtocentrydefault{part}{#1}{#2}}%
    {\addtocentrydefault{part}{}{\texorpdfstring{#1\autodot\enskip}{}#2}}%
  }
  {}{\PatchFailed}
\RedeclareSectionCommand[
  tocnumwidth=0pt
]{part}

\usepackage[colorlinks]{hyperref}
\counterwithin*{chapter}{part}% <- after hyperref is loaded

\begin{document}
%\cleardoubleoddpage% <- if there are pages before the Roman numbering
\pagenumbering{Roman}% <- resets the pagenumber to 1
\tableofcontents

\cleardoubleoddpage% <- added to ensure that the changed pagenumbering starts on a new right page
\pagenumbering{arabic}
\part{Erster Teil}
\chapter{Erstes Kapitel}

\part{Zweiter Teil}
\chapter{Noch nen Kapitel}

\part{Dritter Teil}
\chapter{Noch so ein Kapitel}

\end{document}

在此处输入图片描述

相关内容