在目录中的章节编号前添加单词“Chap”

在目录中的章节编号前添加单词“Chap”

我正在使用书籍类,我需要在目录中的章节编号前添加单词“Chap”。请记住,“Chap”应仅出现在我的章节编号之前,而不是出现在带星号的章节标题、索引、附录或目录中任何类似内容之前。
顺便说一句,我更喜欢使用书籍类代码,而不是使用包。
有人能帮我完成这个吗?
这是一个最小示例:

\documentclass{book}‎
‎\usepackage[nottoc]{tocbibind}‎‎
‎\begin{document}‎‎
‎\tableofcontents‎‎
‎\chapter{One‎}‎‎
‎\chapter{Two‎}‎‎‎‎
‎\section{B‎la}‎‎
‎\chapter*{B‎la 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 的图像:

在此处输入图片描述

相关内容