我希望附录标题能够以与章节相同的格式出现在目录中(我使用的是报告类),而不是像其他章节一样以相同的格式出现。但是,我不能只将其用于\section
每个附录,因为我希望它们在除目录之外的所有用途中都被视为章节。
我的 MWE(未指定其他包):
\documentclass[12pt,a4paper,final]{report}
\begin{document}
\tableofcontents
\pagebreak
% Chapters
\chapter{First Chapter}
\chapter{Second Chapter}
\chapter{Third Chapter}
\chapter{Fourth Chapter}
%Appendices
\appendix
\pagebreak % So that \addcontentsline is given the right page number
\addcontentsline{toc}{chapter}{Appendices}
\chapter{First Appendix}
\chapter{Second Appendix}
\chapter{Third Appendix}
\end{document}
这给了我一个如下所示的目录,其中每个附录(以及附加行“附录”)都被格式化为章节:
但是,我更希望它们以像章节一样的格式出现在目录中。我可以通过编辑目录文件手动生成此文件,例如更改以下行:
\contentsline {chapter}{\numberline {A}First Appendix}{6}
到:
\contentsline {section}{\numberline {A}First Appendix}{6}
以相同的方式编辑附录的每一行得到:
...这正是我想要的成品的样子。
显然,手动编辑.toc
文件是可行的,但并不理想(因为当我重新编译时它会被覆盖),而且说实话,这种简单的改变让我感觉必须是一种干净、自动地完成此操作的方法。我总是更喜欢“适当”(优雅)的解决方案。如果有人能帮助我“适当”地产生相同的结果,我将不胜感激。
注意:我已经找到了一些类似问题的解决方案,但没有一个能完全解决问题:
显而易见的解决方案是将附录设为章节,但这会改变它们在正文中的显示方式(我希望每个附录在所有情况下都被视为章节)。其他比 ToC。
我尝试使用
\chapter*{First Appendix}
后跟,\addcontentsline{toc}{section}{First Appendix}
但这样会删除正文和目录中的“编号”(或者说字母)。我更希望它仍然显示“附录 A”ETC。
答案1
这是一个解决\let\l@chapter\l@section
方案.toc
\documentclass[12pt,a4paper,final]{report}
\begin{document}
\tableofcontents
\pagebreak
% Chapters
\chapter{First Chapter}
\chapter{Second Chapter}
\chapter{Third Chapter}
\chapter{Fourth Chapter}
%Appendices
\appendix
\pagebreak % So that \addcontentsline is given the right page number
\addcontentsline{toc}{chapter}{Appendices}
\addtocontents{toc}{\protect\makeatletter}
\addtocontents{toc}{\string\let\string\l@chapter\string\l@section}
\addtocontents{toc}{\protect\makeatother}
\chapter{First Appendix}
\chapter{Second Appendix}
\chapter{Third Appendix}
\end{document}
答案2
这使用直接写入,.aux
从而依次产生\@writefile{toc}
。(这与\addtocontents
touhami 制作的方式类似)
问题是,使用这些section
东西时,附录章节会作为的部分出现chapter 4
,这可能不是我们真正想要的。
我认为,它也适用\numberline
于附录章节。
\documentclass[12pt,a4paper,final]{report}
\makeatletter
\let\origl@chapter\l@chapter
\newcommand{\redefinelchapter}{%
\@writefile{toc}{\let\l@chapter\l@section}
}
\newcommand{\switchtosectionline}{%
\immediate\write\@auxout{%
\string\redefinelchapter%
}%
}
\makeatother
\begin{document}
\tableofcontents
\pagebreak
% Chapters
\chapter{First Chapter}
\section{First section of First Chapter}
\chapter{Second Chapter}
\chapter{Third Chapter}
\chapter{Fourth Chapter}
%Appendices
\appendix
\pagebreak % So that \addcontentsline is given the right page number
% \addcontentsline{toc}{chapter}{Appendices}
\switchtosectionline
\chapter{First Appendix}
\chapter{Second Appendix}
\chapter{Third Appendix}
\end{document}
编辑一些改进版本
\documentclass[12pt,a4paper,final]{report}
\usepackage{xpatch}
\makeatletter
\xpretocmd{\appendix}{%
\clearpage%
\addcontentsline{toc}{chapter}{\appendixname}% Add the appendix to the Toc
% Replace the chapter stuff with section like toc - entries
\xpatchcmd{\@chapter}{%
\addcontentsline{toc}{chapter}%
}{%
\addcontentsline{toc}{section}%
}{\typeout{Patching of @chapter successful}}{}
}{\typeout{Appendix prepended}}{}
\makeatother
\begin{document}
\tableofcontents
\pagebreak
% Chapters
\chapter{First Chapter}
\section{First section of First Chapter}
\chapter{Second Chapter}
\chapter{Third Chapter}
\chapter{Fourth Chapter}
\appendix
\chapter{First Appendix}
\chapter{Second Appendix}
\chapter{Third Appendix}
\end{document}