20

如何使“附录”一词出现在目录中?现在 toc 看起来像这样:

1 ......  
2 ......  
.  
.  
A .....  
B ..... 

我希望它是:

1 ......  
2 ......  
.  
.  
Appendix A .....  
Appendix B ..... 

我的乳胶源文件结构是这样的:

\begin{document}  
\tableofcontents  
\include{...}  
\include{...}  
\appendix  
\include{...}  
\include{...}  
\end{document}  
4

5 回答 5

13

有几种方法可以解决这个问题;不幸的是,在这个阶段我只为你准备了一个技巧。一个问题是,如果我们重新定义节号“A”以包含“附录”一词,它会打乱目录的格式。因此,我刚刚定义了一个新的切片命令,它打印没有数字的部分并手动插入“附录 X”。

有点难看,但至少它无需更改任何标记即可工作:)

\documentclass{文章}

\makeatletter
\newcommand\appendix@section[1]{%
  \refstepcounter{节}%
  \orig@section*{附录 \@Alph\c@section: #1}%
  \addcontentsline{toc}{section}{附录 \@Alph\c@section: #1}%
}
\let\orig@section\section
\g@addto@macro\appendix{\let\section\appendix@section}
\makeatother

\开始{文档}

\目录

\section{咕}
\标签{一个}
这是秒~\ref{a}

\section{har}
\标签{b}
这是秒~\ref{b}

\附录
\section{ji}
\标签{c}
这是应用程序~\ref{c}
\小节{我}
这看起来对吗?

\结束{文档}
于 2009-04-05T00:11:07.723 回答
11

这可能最容易通过使用appendix 包memoir 类来实现。

如果您不想使用预打包的解决方案,则必须破解切片命令。当我需要为我的论文做这件事时,我克隆了report课程,并进行了编辑,直到我让边缘女士高兴为止。您正在寻找的是\addcontentsline宏的定义。

于 2009-04-04T17:02:29.830 回答
11

对于我的论文,我做了以下工作:

\appendix
\addcontentsline{toc}{section}{Appendix~\ref{app:scripts}: Training Scripts}
\section*{Sample Training Scripts}
\label{app:scripts}
Blah blah appendix content blah blah blah.

说明:我手动在 TOC 中添加了一行,因此我的 TOC 中会显示“附录 X:...”。然后我使用星号从 TOC 中排除了实际的部分命令。

于 2010-11-04T09:27:11.933 回答
1

附录包是非常好的和简单的解决方案。我的回答可能对想要更改章节编号样式的人有所帮助,例如,使用西里尔字母或罗马数字。附录编号样式在 \@resets@pp 命令中进行了硬编码(我在此处查看了源代码http://hal.in2p3.fr/docs/00/31/90/21/TEX/appendix.sty)。我通过简单地将这个命令重新定义为我自己的来解决它。只需将此代码添加到您的序言中:

\makeatletter

    \renewcommand{\@resets@pp}{\par
        \@ppsavesec
        \stepcounter{@pps}
        \setcounter{section}{0}

        \if@chapter@pp
            \setcounter{chapter}{0}
            \renewcommand\@chapapp{\appendixname}
            \gdef\thechapter{\Asbuk{chapter}} % changed
        \else
            \setcounter{subsection}{0}
            \gdef\thechapter{\Asbuk{section}} % changed
        \fi

        \if@pphyper
            \if@chapter@pp
                \renewcommand{\theHchapter}{\theH@pps.\Asbuk{chapter}} % changed
            \else
                \renewcommand{\theHsection}{\theH@pps.\Asbuk{section}} % changed
            \fi

            \def\Hy@chapapp{\appendixname}%
        \fi
    \restoreapp
}

\makeatother

因此,

Appendix A
Appendix B
Appendix C
...

将更改为

Appendix A
Appendix Б
Appendix В
... etc

我不是乳胶专家,我不能保证这段代码不会破坏其他东西。

于 2013-05-04T09:55:42.517 回答
0

根据@Will Robertson 的回答,下面的代码定义了相同的内容,但对于章节,并且还修复了使用包chapter*时不添加到标题的事实。fancyhdr

有了这个,所有的问题都解决了。

\makeatletter
\newcommand\appendix@chapter[1]{%
    \refstepcounter{chapter}%
    \def\app@ct{Appendix \@Alph\c@chapter: #1}
    \orig@chapter*{\app@ct}%
    \markboth{\MakeUppercase{\app@ct}}{\MakeUppercase{\app@ct}}
    \addcontentsline{toc}{chapter}{\app@ct}%
}
\let\orig@chapter\chapter
\g@addto@macro\appendix{\let\chapter\appendix@chapter}
\makeatother
于 2017-01-17T22:30:38.563 回答