打印单独的附录列表

打印单独的附录列表

我正在尝试打印论文的附录列表(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}}{}{}%

失败,因为我不再向目录添加任何内容。

我的方法:由于我正在使用titlesectocloft包,因此我尝试执行以下操作:

  1. appendix一旦发出命令,停止 ToC
  2. 使用以下方法启动附录的新计数器tocloft
  3. 使用<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}

在此处输入图片描述

相关内容