这与我所寻找的有些相似,但不完全一样:如何使附录表现得像目录中的章节
我希望我的附录能够做到以下几点:
- 所有附录都包含在目录中的一章中
- 附录类似于章节,标记为 A、B、C 等。
- \ref 命令插入附录标签,而不是数字
- 附录在页眉中有其名称和标签,无需章节、节或其他标题。
最终的 ToC 看起来如下:
Some Chapter 1
Some section 1
Some Chapter 2
Some section 2
Appendices
Appendix A - Some name
Appendix B - Some name 2
etc.
目前,我只能通过手动添加内容行、使用幻像部分来获得正确的页码以及手动命名目录行和标题来重现此行为。这导致一个问题,即我的标签和参考资料使用数字而不是为计数器定义的字母。使用下面的命令,我必须手动定义每个附录的标题。
\refstepcounter{AppCounter}
\phantomsection\addcontentsline{toc}{section}{Appendix \Alph{AppCounter} - Some name}
\includegraphics ...
\label{app:appA}
使用附录包的另一个问题是,我无法弄清楚如何在没有章节/节的情况下添加附录标签。而且章节/节命令会将文本添加到页面,而这对我来说毫无用处。
答案1
以下是一个想法:
\newcommand{\startappendix}{%
\pagebreak%
\addcontentsline{toc}{chapter}{Appendices}%
\fancyhead[L]{{\bfseries Appendices}}%
\setcounter{section}{0}%
\renewcommand{\thesection}{\Alph{section}}%
}
\newenvironment{newappendix}[2]%
{\gdef\headername{#1}%
\phantomsection%
\refstepcounter{section}%
\addcontentsline{toc}{section}{Appendix \thesection~- #1}%
\label{app:#2}}
{\fancyhead[R]{Appendix \thesection~- \headername}
\newpage}
在您的序言中添加这两个命令。第一个命令应该在您想要启动附录时使用。第二个命令用于每次您想要更改当前附录的名称时。第一个参数是附录的名称,第二个参数是将添加到app:
标签前缀的内容。然后您可以\ref{app:<your second argument>}
在代码中的任何位置使用 来调用附录。
例子
以下是代码及其输出的简短示例
\documentclass{report}
\usepackage[demo]{graphicx}
\usepackage{hyperref}
\usepackage{fancyhdr}
\pagestyle{fancy}
\newcommand{\startappendix}{%
\pagebreak%
\addcontentsline{toc}{chapter}{Appendices}%
\fancyhead[L]{{\bfseries Appendices}}%
\setcounter{section}{0}%
\renewcommand{\thesection}{\Alph{section}}%
}
\newenvironment{newappendix}[2]%
{\gdef\headername{#1}%
\phantomsection%
\refstepcounter{section}%
\addcontentsline{toc}{section}{Appendix \thesection~- #1}%
\label{app:#2}}
{\fancyhead[R]{Appendix \thesection~- \headername}
\newpage}
\begin{document}
\tableofcontents
\chapter{One}
\section{One-one}
\startappendix
\begin{newappendix}{First}{1}
\includegraphics[width=12cm,height=15cm]{test}
\end{newappendix}
\begin{newappendix}{Second}{2}
\includegraphics[width=12cm,height=15cm]{test}
\end{newappendix}
\end{document}
编辑感谢 egreg 给出的第二条命令,我找到了另一种方法:
\fancyhead[R]{Appendix \rightmark}
\newcommand{\newappendix}[2]{%
\clearpage%
\phantomsection%
\refstepcounter{section}%
\addcontentsline{toc}{section}{Appendix \thesection~- #1}%
\markright{\thesection \ -- #1}%
\label{app:#2}
}
答案2
稍微修改了@Ludovic 发送的解决方案。
- 使用 \appendixpage 添加附录的标题页
- 从环境中移除了标签,因为 Sublime Text 和 LaTeXTools 无法从环境中解析它
- 重新排序元素以使超链接正常工作
- 使用附录包中的名称命令轻松更改所使用的值(针对不同的语言)
- 我添加的边距设置只是为了满足我的需求
以下是我最终使用的解决方案:
\newcommand{\startappendix}{%
\renewcommand{\appendixtocname}{Appendices}%
\renewcommand{\appendixname}{Appendix}%
\renewcommand{\appendixpagename}{Appendices}%
\cleardoublepage%
\appendixpage%
\fancyhead{}%
\fancyfoot{}%
\newgeometry{margin=2cm}%
\renewcommand{\headrulewidth}{0pt}%
\setlength{\headheight}{15pt}%
\fancyhead[L]{{\bfseries \appendixtocname}}%
\fancyfoot[C]{\thepage}%
\pagestyle{fancy}%
\setcounter{section}{0}%
\renewcommand{\thesection}{\Alph{section}}%
}
\newenvironment{newappendix}[1]%
{\gdef\headername{#1}%
\refstepcounter{section}%
\phantomsection\addcontentsline{toc}{section}{\appendixname \thesection~- \headername}%
}
{\fancyhead[R]{\appendixname~\thesection~- \headername}%
\cleardoublepage}