我正在使用书籍类,我需要在目录中的章节编号前添加单词“Chap”。请记住,“Chap”应仅出现在我的章节编号之前,而不是出现在带星号的章节标题、索引、附录或目录中任何类似内容之前。
顺便说一句,我更喜欢使用书籍类代码,而不是使用包。
有人能帮我完成这个吗?
这是一个最小示例:
\documentclass{book}
\usepackage[nottoc]{tocbibind}
\begin{document}
\tableofcontents
\chapter{One}
\chapter{Two}
\section{Bla}
\chapter*{Bla bla}
\addcontentsline{toc}{chapter}{bla bla}
\appendix
\chapter{App one}
\begin{thebibliography}{99}
\bibitem{bla}
bla
\end{thebibliography}
\end{document}
答案1
复制一份\@chapter
,然后重新定义\@chapter
,添加单词“Chap”;从单词不能出现的位置开始,恢复原来的含义\@chapter
:
\documentclass{book}
\makeatletter
\let\orig@chapter\@chapter
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}%
{Chap~\protect\numberline{\thechapter}#1}%
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\if@twocolumn
\@topnewpage[\@makechapterhead{#2}]%
\else
\@makechapterhead{#2}%
\@afterheading
\fi}
\makeatother
\begin{document}
\tableofcontents
\frontmatter
\chapter{Acknowledgements}
\mainmatter
\chapter{Test Chapter One}
\chapter{Test Chapter Two}
\makeatletter
\let\@chapter\orig@chapter
\makeatother
\appendix
\chapter{Test Appendix One}
\end{document}
生成的 ToC 的图像: