我正在尝试打印论文的附录列表(LoA),与目录(ToC)分开。
我希望我的目录看起来像这样,深度达到小节(2?):
CONTENTS
CHAPTER
I. Introduction......1
1.1 Section title...1
1.1.1 Subsection...1
Appendices ..... 2
对于新页面上的 LoA,其深度为 0,因此:
APPENDICES
APPENDIX
A. Proof of Theorem 1...1
B. Proof of Theorem 2...1
我正在尝试使用类来实现这report
一点,这样我就可以使用从chapter
,section
命令中获得的层次结构来键入附录。这与定义一个自定义命令来插入附录内容相反myappendix
。(我意识到我只需要附录章节中的标题来制作 LoA,但我希望附录内容具有这样的结构。)
例如,这种方法可以解决我的问题:
\chapter{Introduction}
\section{Section title}
\subsection{Subsection}
% \begin{appendices} is also acceptable
\appendix
% Some settings are changed now
\chapter{Proof of Theorem 1}
\chapter{Proof of Theorem 2}
% \end{appendices} if environment is begun
而以下方法将不是:
\chapter{Introduction}
\section{Section title}
\subsection{Subsection}
\myappendix{Proof of Theorem 1}
\myappendix{Proof of Theorem 2}
我知道之前已经有人问过这个问题,但没有一个能完全解决我的问题。值得注意的是,此解决方案定义自定义附录命令;此解决方案定义两个自定义命令来维护一些层次结构,但我必须做更多的工作来处理将另一层(小节)纳入附录。
这条回复最接近我想要的:它确实给了我一个单独的 LoA,但它也为 ToC 添加了附录,而我不太清楚如何隐藏 ToC 中的所有内容。当我使用
\addcontentsline{toc}{\setcounter{tocdepth}{-1}}
线
\xpatchcmd{\@chapter}{\addcontentsline{toc}}{\addcontentsline{toa}}{}{}%
失败,因为我不再向目录添加任何内容。
我的方法:由于我正在使用titlesec
和tocloft
包,因此我尝试执行以下操作:
appendix
一旦发出命令,停止 ToC- 使用以下方法启动附录的新计数器
tocloft
- 使用
<after-code>
选项titlesec
,在每个之后添加内容行chapter
。
我的平均能量损失
\documentclass[a4paper]{report}
\usepackage{lipsum} % for arbitrary text
\usepackage{tocloft,etoolbox,titlesec}
\newcommand{\listappendixname}{List of Appendices}
\newlistof{appendix}{apc}{\listappendixname}
\makeatletter
\g@addto@macro{\appendix}{
\clearpage
\addcontentsline{toc}{chapter}{Appendices}
\addtocontents{toc}{\protect\setcounter{tocdepth}{-1}}
\titleformat
{\chapter}
[display]
{\huge\bfseries\filcenter}
{\Large \MakeUppercase{\@chapapp} \thechapter}
{1.5ex}{}
{\refstepcounter{appendix} \addcontentsline{apc}{appendix}{\protect{\@chapapp \thechapter}}}
}
\makeatother
\title{Title}
\author{Author}
\begin{document}
\maketitle
\tableofcontents
\clearpage
\listofappendix
\chapter{Introduction}
\lipsum[1]
\section{Section}
\lipsum[2]
\subsection{Subsection}
\lipsum[3]
\appendix
\chapter{Proof of Theorem One}
\lipsum[4]
\chapter{Proof of Theorem Two}
\lipsum[5]
\end{document}
产生以下 LoA:
List of Appendices
Appendix...... 5
它没有获得附录标题或编号,并且在第一个之后失败。
您能否帮助我获得单独的 LoA,以便我仍然可以使用 LaTeX 的chapter
、、section
... 层次结构?(我可以使用不同的包、book
类或除我的方法之外的任何方法。)
答案1
由于文件是通过异步写入进行的,因此摆弄起来\addcontentsline
可能比较棘手。\@writefile
.aux
我使用了另一种方法,让所有结构化命令执行它们应该执行的操作,写入toc
,但是,toc
文件句柄被复制到文件apc
中.aux
,并在环境结束后重新建立它appendices
。
\documentclass[a4paper]{report}
\usepackage{lipsum} % for arbitrary text
\usepackage{etoolbox}
\usepackage{appendix}
\usepackage{tocloft,titlesec}
\newcommand{\listappendixname}{List of Appendices}
\newlistof{appendix}{apc}{\listappendixname}
\makeatletter
\AtBeginEnvironment{appendices}{%
\clearpage
\addcontentsline{toc}{chapter}{Appendices}
\write\@auxout{%
\string\let\string\latex@tf@toc\string\tf@toc% Store the original `\tf@toc` file handle
\string\let\string\tf@toc\string\tf@apc%
}% Naughty trick
\titleformat
{\chapter}
[display]
{\huge\bfseries\filcenter}
{\Large \MakeUppercase{\@chapapp} \thechapter}
{1.5ex}{}
{}
}
\AtEndEnvironment{appendices}{%
\write\@auxout{%
\string\let\string\tf@toc\string\latex@tf@toc%
}% Naughty trick, restoring the old `\tf@toc` number, to be able to write stuff to the real `.toc` again.
}
\makeatother
\title{Title}
\author{Author}
\begin{document}
\maketitle
\tableofcontents
\clearpage
\listofappendix
\chapter{Introduction}
\lipsum[1]
\section{Section}
\lipsum[2]
\subsection{Subsection}
\lipsum[3]
\begin{appendices}
\chapter{Proof of Theorem One}
\lipsum[4]
\chapter{Proof of Theorem Two}
\lipsum[5]
\end{appendices}
\chapter{Foo stuff}
\end{document}