将目录中的“第 A 章”更改为“附录 A” - 现有解决方案不起作用

将目录中的“第 A 章”更改为“附录 A” - 现有解决方案不起作用

我正在使用 \documentclass{harvard-thesis} 撰写论文

我对 TOC 的期望结果是:

Chapter 1. 
Chapter 2.
Appendix A.

我使用它在目录中的章节号前面包含单词“Chapter”:

\renewcommand{\cftchappresnum}{章节}

我的附录在目录中显示为“第 A 章”,而不是所需的“附录 A”:

>\appendix
>\renewcommand\chaptername{Appendix }
>\include{appendices/appendixA}

我已经应用了以下解决方案如何强制 Latex 将“附录 A 的名称”更改为“附录 A”将目录中的“第 A 章”更改为“附录 A”以及此补丁:

\makeatletter
\patchcmd{\@chapter}{\protect {Chapter }}{\ifappendix{Appendix }\else{Chapter 
}\fi}{}{}
\makeatother
\AtBeginEnvironment{appendices}{\appendixtrue}

这些都不起作用。我目前对 TOC 的结果是:

Chapter 1. 
Chapter 2.
Chapter A.

如果我注释掉包含“Chapter”的renewcommand,那么附录 A 将正确显示:

1. 
2.
Appendix A.

有人可以帮忙吗?

答案1

附录章节也被视为章节,具体因为这是写入文件的内容.toc。为了说明这一点,请考虑以下示例:

在此处输入图片描述

\documentclass{book}

\usepackage{tocloft}

\renewcommand{\cftchappresnum}{Chapter }
\setlength{\cftchapnumwidth}{6em}% Just for this example

\begin{document}

\tableofcontents

\chapter{A chapter}

\appendix

\chapter{An appendix}

\end{document}

.toc看起来是这样的:

\contentsline {chapter}{\numberline {1}A chapter}{3}
\contentsline {chapter}{\numberline {A}An appendix}{5}

请注意,每个\contentsline条目都与目录中的一个条目相对应,并且它们都会被考虑chapter

为了修复您的问题,您仍然可以\cftchappresnum在序言中更新,但在执行时立即写入此宏的更新\appendix。以下是您可以如何更新\appendix以自动执行此操作:

在此处输入图片描述

\documentclass{book}

\usepackage{tocloft}

\renewcommand{\cftchappresnum}{Chapter }
\setlength{\cftchapnumwidth}{7em}% Just for this example

\let\oldappendix\appendix
\renewcommand{\appendix}{%
  \oldappendix
  \addtocontents{toc} % Update \cftchappresnum within the .toc
    {\protect\renewcommand{\protect\cftchappresnum}{Appendix }}
}

\begin{document}

\tableofcontents

\chapter{A chapter}

\appendix

\chapter{An appendix}

\end{document}

现在你的.toc形象是:

\contentsline {chapter}{\numberline {1}A chapter}{3}
\renewcommand {\cftchappresnum }{Appendix }
\contentsline {chapter}{\numberline {A}An appendix}{5}

每个\contentsline条目仍然是一个chapter,但\cftchappresnum在适当的时间内进行了更新,.toc以打印Appendix附录\chapters 的前缀。

答案2

这有效!

\renewcommand{\appendixname}{Appendix}
\renewcommand{\appendixtocname}{Appendix}
\usepackage{tocloft,calc}

\renewcommand{\cftchappresnum}{\chaptername\space}
\setlength{\cftchapnumwidth}{2em}
\makeatletter
\g@addto@macro\appendix{%
\addtocontents{toc}{%
\protect\renewcommand{\protect\cftchappresnum}{\appendixname\space}%
}%
}
\makeatother

\renewcommand\thechapter{\Alph{chapter}}  
\renewcommand\thesection{\Alph{chapter}.\Roman{section}} 
\setcounter{chapter}{0}  

\include{chapters/chapter1}

\appendix
\renewcommand{\chaptername}{Appendix}
\include{appendices/appendixA}

相关内容