使用 scrbook,如何隐藏目录中除几章之外的所有章节的页码?

使用 scrbook,如何隐藏目录中除几章之外的所有章节的页码?

我想出版一本书,我们的出版中心风格指南建议目录采用以下样式规则:

  1. 书籍的每个章节和部分都必须在目录中有其条目。
  2. 如果书中章节没有任何部分,则必须在目录中显示页码,前面加上点,
  3. 如果书中章节有嵌套部分,则目录中必须只有其名称而没有页码。

因此,我想隐藏已编号章节的页码,只显示未编号章节的页码,例如简介和结论。

MWE 如下:

\documentclass[paper=a4, 
               fontsize=14pt, 
               DIV=calc,
               twoside=false,
               headings=small,
               numbers=endperiod,
               chapterentrydots=true,
               ]{scrbook}

\begin{document}

\tableofcontents

\chapter*{Introduction}\addcontentsline{toc}{chapter}{Introduction}
\newpage
\newpage
\chapter{Chapter without page number}
\section{Section One}


\end{document}

在此处输入图片描述

答案1

更新

使用 KOMA 3.20 版(或更新版本),可以为未编号的章节定义自己的目录样式。因此,这里有一个新建议,即隐藏所有编号章节的页码,并为目录中未编号的章节条目插入虚线。

\documentclass[paper=a4, 
               fontsize=14pt, 
               DIV=calc,
               twoside=false,
               headings=small,
               numbers=endperiod,
               ]{scrbook}[2016/05/10]% needs version 3.20 or newer

\RedeclareSectionCommand[
  tocpagenumberbox=\blankbox
]{chapter}
\newcommand\blankbox[1]{}% do nothing

\DeclareTOCStyleEntry[
  level=\chaptertocdepth,
  indent=0pt,
  numwidth=1.5em,
  linefill=\TOCLineLeaderFill
]{chapter}{unnumberedchapter}
\makeatletter
  \def\toclevel@unnumberedchapter{\chaptertocdepth}% needed if hyperref is used
\makeatother

\usepackage{xpatch}
\xpatchcmd{\addchaptertocentry}
  {\addtocentrydefault{chapter}{#1}{#2}}
  {\IfArgIsEmpty{#1}
    {\addtocentrydefault{unnumberedchapter}{#1}{#2}}
    {\addtocentrydefault{chapter}{#1}{#2}}%
  }{}{\PatchFailed}

%\usepackage{hyperref}
\begin{document}
\tableofcontents
\addchap{Introduction}
\chapter{Chapter}
\section{Section One}
\end{document}

在此处输入图片描述


原始答案

使用 KOMA-Script 类,您可以使用

\addchap{Introduction}

反而\chapter*{Introduction}\addcontentsline{toc}{chapter}{Introduction}

以下是隐藏页码的建议全部目录中的编号章节:

\documentclass[paper=a4, 
               fontsize=14pt, 
               DIV=calc,
               twoside=false,
               headings=small,
               numbers=endperiod,
               ]{scrbook}

\setkomafont{chapterentrypagenumber}{\nullfont}

\renewcommand\addchaptertocentry[2]{%
  \IfArgIsEmpty{#1}
    {\addtocontents{toc}
        {\protect\begingroup
          \protect\setkomafont{chapterentrypagenumber}{}%
          \protect\KOMAoptions{chapterentrydots}%
        }%
      \addtocentrydefault{chapter}{}{#2}%
      \addtocontents{toc}{\protect\endgroup}%
    }
    {\addtocentrydefault{chapter}{#1}{#2}}%
}

\begin{document}
\tableofcontents
\addchap{Introduction}
\chapter{Chapter without page number}
\section{Section One}
\end{document}

在此处输入图片描述

相关内容