目录/回忆录 - 用章节号替换页码

目录/回忆录 - 用章节号替换页码

我无法弄清楚需要做什么才能替换标准回忆录中的页码\tableofcontents

使用标准\tableofcontents我得到:(其中 5 和 9 是页码)

1 章 .................. 5

2 另一章...... 9

目标是:

第1章

另一章...... 2

\renewcommand{\chapternumberline}[1]{}我发现会从内容左边删除章节号。

\renewcommand{\cftchapterformatpnum}[1]{}允许我修改零件编号,但我想我可能走错了方向?可能是描述格式的命令,只需删除页码并用输出章节号的代码替换该部分,但我还没有找到这一点。

答案1

可以定义\mempreaddchaptertotochook\mempostaddchaptertotochook钩子来防止将\addcontentsline页码写入到.aux文件中。

hyperref然而,由于 的特殊添加,此功能尚无法使用hyperref

\documentclass{memoir}



\let\origaddcontentsline\addcontentsline % Store the original definition of `\addcontentsline`

\renewcommand{\mempreaddchaptertotochook}{%
  \renewcommand{\addcontentsline}[3]{%
      \addtocontents{##1}{\protect\contentsline{##2}{##3}{\thechapter}}} % Use the chapter number, not the page number
}

\renewcommand{\mempostaddchaptertotochook}{%
  \let\addcontentsline\origaddcontentsline%  We've written the chapter entry to the toc, now switch back to the original version to get section etc. and other entries correctly!
}

\renewcommand{\chapternumberline}[1]{}

\usepackage{blindtext}

\begin{document}
\makeatletter
\tableofcontents
\chapter{My Chapter}
\blindtext[20]
\section{A section}
\blindtext
\chapter{Another Chapter}
\end{document}

答案2

我不确定这样做的目的是什么,但在这里你可以找到一个实现,并且也兼容hyperref

\documentclass{memoir}
\usepackage{blindtext} % just for the example

\usepackage{hyperref}

\makeatletter
\let\original@l@chapter\l@chapter
\renewcommand{\l@chapter}[2]{%
  \gdef\saved@chapter@number{}%
  \sbox\z@{\def\chapternumberline##1{\gdef\saved@chapter@number{##1}}#1}%
  \original@l@chapter{#1}{\saved@chapter@number}%
}
\let\chapternumberline\@gobble
\makeatother

\settocdepth{chapter} % only chapters in TOC

\begin{document}

\tableofcontents
\chapter{My Chapter}
\blindtext[20]
\section{A section}
\blindtext
\chapter{Another Chapter}
\end{document}

在此处输入图片描述

\l@chapter我在一个框中排版了 的第一个参数,重新定义\chapternumberline以便它保存自己的参数。这样的重新定义是本地的,但参数是本地保存的。然后我将保存的数字作为第二个参数传递给原始的\l@chapter,而\chapternumberline只是\@gobble在进行实际排版时。

相关内容