如何使用 \DeclareTOCStyleEntry 删除目录中的部分编号

如何使用 \DeclareTOCStyleEntry 删除目录中的部分编号

在我的例子中,零件标题不需要零件编号。我已经使用 \DeclareTOCStyleEntry and would like to remove the part number. using\nullfont` 解决了这个问题,但结果是缩进。用负缩进来抵消似乎不是一个好的解决方案。有什么更好的方法吗?

ps为什么不起作用\gobble

\documentclass{scrbook}
\KOMAoptions{paper=      
    128.5mm:198.4mm, %(5,06" x 7,91")  %ziel
    DIV=9,  %ziel kleines buch 
    fontsize=12pt,
}

%%%% Sprache
\usepackage[german]{babel}  %scheint 

%%%%% table of content
\setcounter{tocdepth}{0} %   1 gibt parts und chapter und sections

\DeclareTOCStyleEntry[
    indent=-2em,
    entryformat=\mdseries\Large,
    entrynumberformat=\nullfont, % \gobble,
    pagenumberformat=\normalfont\normalsize, 
    onstarthigherlevel=\vskip   ]{tocline}{part}
\DeclareTOCStyleEntry[
    indent=2em,
    pagenumberformat=\normalfont,
    beforeskip=1pt plus .2pt,
    entryformat=\normalfont
    ]{tocline}{chapter}

\begin{document}
    \frontmatter
        \tableofcontents
    \mainmatter
        \part{ Philosophie}
        \chapter{  \textit{Vom Schreiben}}
        \chapter{Zwei}
\end{document}

答案1

如果您不想让部分内容没有编号但在目录中有条目,那么您应该使用指令\addpart而不是\part\part*

缩进目录条目确实是糟糕的排版。

Ragarding gobble.gobble是目录条目的特定样式的名称。在您的示例中,您选择样式tocline。但是,koma 的参考手册会告诉您,还有更多样式可用。请记住,并非所有设置的选项DeclareTOCStyleEntry都适用于每种样式。手册中也对此进行了描述。

在下面的示例中,一些设置组合在一起以获得清晰的目录。

在此处输入图片

\documentclass[10pt]{scrbook}

\KOMAoptions{paper=      
    128.5mm:198.4mm, %(5,06" x 7,91")  %ziel
    DIV=9,  %ziel kleines buch 
    fontsize=11pt,
}

%%%% Sprache
\usepackage[german]{babel}  %scheint 
\usepackage{eqparbox}

\setkomafont{chapterentry}{\small}

%%%%% table of content
\setcounter{tocdepth}{0} %   1 gibt parts und chapter und sections

\DeclareTOCStyleEntry[
    % bad typography
    % indent           = -2em,
    entryformat       = {\sffamily\bfseries Part\hskip 2.5ex},
    beforeskip        = 2.25em plus 1pt,
    %entrynumberformat = \nullfont,
    %pagenumberformat  = \normalfont,
    pagenumberbox     = \phantom,
    %
    % onstartentry and onstarthigherlevel are not defined for
    % for 'tocline'
    %
    %onstarthigherlevel = \vskip,
    %onstartentry = Teil
]{tocline}{part}

\DeclareTOCStyleEntry[
    % bad typography
    % indent          = 2em,
    % pagenumberformat = \normalfont,
    beforeskip       = 1em plus 1pt,
    %entryformat      = \normalfont,
    linefill         = \dotfill
]{tocline}{chapter}

\renewcommand*\partpagestyle{empty}

\begin{document}

\frontmatter
\begingroup
    \setkomafont{chapter}{\large\bfseries\sffamily}
    \setkomafont{chapterentry}{\sffamily}
    %\setkomafont{disposition}{\sffamily\itshape}
    \tableofcontents
\endgroup
\mainmatter
\addpart{Philosophie}
\chapter{Vom Schreiben}
\chapter{Zwei}
\addpart{Kilosophie}
\chapter{Vom Schreiben}
\chapter{Zwei}

\end{document}

答案2

KOMA-Script 不提供\gobble- 因此它在您的 MWE 中未定义。

您真的只想删除目录中的部分编号,而不删除文档中的部分编号吗?那么您可以定义一个接受一个参数但不执行任何操作的新命令:

\newcommand*\hideentrynumber[1]{}

使用此宏作为选项的值entrynumberformat

entrynumberformat=\hideentrynumber

要删除为零件编号保留的空间,必须将数字宽度设置为 0pt:

numwidth=0pt

例子:

\documentclass{scrbook}
\KOMAoptions{
  paper=128.5mm:198.4mm,
  fontsize=12pt,
  DIV=9% last option -> recalculates typearea
}
\usepackage[german]{babel}% wirklich die alte Rechtschreibung?

\setcounter{tocdepth}{\chaptertocdepth}% only parts and chapters in ToC

\newcommand*\hideentrynumber[1]{}
\DeclareTOCStyleEntry[
    entryformat=\mdseries\Large,
    entrynumberformat=\hideentrynumber,
    numwidth=0pt,
    pagenumberformat=\normalfont\normalsize
  ]{tocline}{part}
\DeclareTOCStyleEntry[
    indent=1em,% decreased to 1em, but: do you really want to indent chapter entries?
    pagenumberformat=\normalfont,
    beforeskip=1pt plus .2pt,
    entryformat=\normalfont
    ]{tocline}{chapter}

\begin{document}
\layout
\frontmatter
\tableofcontents
\mainmatter
\part{Philosophie}
\chapter{\textit{Vom Schreiben}}
\chapter{Next Chapter}
\part{Next Part}
\chapter{Foo}
\chapter{Bar}
\end{document}

在此处输入图片描述

附加说明:我已删除,onstarthigherlevel=\vskip因为没有为跳过提供维度。但即使有类似的东西onstarthigherlevel=\vskip 1em,如果什么也不做:KOMA-Script 不提供比部分更低的级别,即部分的级别为 -1,并且没有 ToC 级别 ≤-2。也许你想改变beforeskip部分条目?默认是2.25em plus 1pt

相关内容