仅省略目录中章节标题的页码

仅省略目录中章节标题的页码

如何删除目录中章节标题的页码,而不删除序言页的页码?

例如,在我的目录中,

Acknowledgments               ii
table of contents            iii
...
abstract                    viii

Chapter
1 Chapter one                 1
  1.1 Section one             1
...
2 Chapter two                 2 
2.1 Section one               2 
... and so on...

如何在不触及序言页码的情况下删除与章节标题相关的第一个页码 1 或 2?

至于文档类,我正在使用\documentclass[doublelespace,tocchapterhead],以及.cls我认为最初调用的文件chicagothesis或类似的东西。

我曾尝试删除#2

\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par

但结果是,所有页眉的页码都被删除了。有什么办法可以控制吗?我不想使用tocloft包或etoolbox包。

答案1

下列应该适用于大多数文档类别,尽管没有实际的文档类别则很难测试。

您可以使用以下宏选择性地打开目录中的页码使用:\gobbletocpage\restoretocpage。前者重新定义\addtocontents,用 替换\thepage\relax实际上什么都不做),而后者将其恢复为\thepage

在此处输入图片描述

\documentclass{book}
\newcommand{\gobbletocpage}{%
  \renewcommand{\addcontentsline}[3]{%
    \addtocontents{##1}{\protect\contentsline{##2}{##3}{\relax}}}
}%
\newcommand{\restoretocpage}{%
  \renewcommand{\addcontentsline}[3]{%
    \addtocontents{##1}{\protect\contentsline{##2}{##3}{\thepage}}}
}%
\begin{document}
\tableofcontents
\chapter{A chapter}
\section{A section}
\section{A section}
\gobbletocpage
\section{A section}
\chapter{Another chapter}
\restoretocpage
\section{A section}
\section{A section}
\section{A section}
\end{document}

举例来说,在调用\gobbletocpage(第 1.3 节和第 2 章)之后,上述目录中没有页码,可以使用 进行恢复\restoretocpage


由于您可以访问.cls,请将您的定义\l@chapter(和一些周围的代码)替换为以下内容(第 182-219 行):

% Change style of printing chapters in ToC to match chapter headings.
\setcounter{secnumdepth}{3}% Always number up to \subsubsection
\setcounter{tocdepth}{2}% Include up to \subsection in ToC
\newcommand{\thechappagenum}{}% Empty page number for chapter
\newif\ifchappagenum\chappagenumtrue

\renewcommand*\l@chapter[2]{%
  \renewcommand{\thechappagenum}{\ifchappagenum#2\fi}% Include chapter page num based on \chappagenum boolean
  \typeout{\thechappagenum}
  \ifnum \c@tocdepth >\m@ne
    \addpenalty{-\@highpenalty}%
    \vskip .1cm \@plus \p@ %{the v-distance between the headings in the contents}
    \setlength\@tempdima{1.5em}% %{the distance between the number of the chapter and its title}
    \begingroup
           \parindent\z@ \rightskip \@pnumwidth
            \parfillskip -\@pnumwidth
      \leavevmode
      \advance \leftskip \@tempdima 
      \hskip  -\leftskip 
      \etchapterheadstyle{#1}\nobreak
% : The following 3 lines add dots to the chapter TOC listings
      \leaders\hbox{$\m@th
        \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
        mu$}\hfill
      \hfil \nobreak\hb@xt@\@pnumwidth{\hss \thechappagenum}\par
      \penalty\@highpenalty
    \endgroup
  \fi}
%---------------------------------------------------  
% The lines below responsible on the mechanism of removing pages numbers of selecting headers in ToC.
% We need to add the command \gobbletocpage in the preamble before the \include{chapter} to delete their page numbers in ToC. And,
% we need to add the command \restoretocpage to restore chapter page numbering in ToC
%---------------------------------------------------
\newcommand{\gobbletocpage}{%
  \addtocontents{toc}{\protect\chappagenumfalse}}%
\newcommand{\restoretocpage}{%
  \addtocontents{toc}{\protect\chappagenumtrue}}%
%---------------------------------------------------

以上定义了一个新的布尔“条件”,\ifchappagenum该条件被设置为false( \chappagenumfalse) by\gobbletocpagetrue( \chappagenumtrue) by \restoretocpage。所有这些都写入文件.toc,因为这是在没有任何知识的情况下/在文档其余部分之前处理的。

使用\gobbletocpage 您不想在目录中添加页码的章节,以及\restoretocpage 您想要恢复章节页码。可以修改此条件,并根据需要重新格式化章节目录条目(而不仅仅是页码)。以下是您的easythesis.cls在 MWE 中使用上述修改后:

在此处输入图片描述

\documentclass{easythesis}
\begin{document}
\tableofcontents
\chapter{A chapter}
\section{A section}
\section{A section}
\section{A section}
\gobbletocpage
\chapter{Another chapter}
\section{A section}
\section{A section}
\section{A section}
\end{document}

相关内容