web-dev-qa-db-ja.com

ラテックスのtocに「付録」を表示するにはどうすればよいですか?

目次に「付録」という単語を表示するにはどうすればよいですか?現在、tocは次のようになっています。

1 ......
2 ......


A .....
B .....

私はそれがなりたいです:

1 ......
2 ......


付録A .....
付録B .....

私のラテックスソースファイルの構造は次のとおりです。

\ begin {document}
\目次
\include {...}
\include {...}
\付録
\include {...}
\include {...}
\end {ドキュメント}

20
chriss

これは、おそらく appendix package または memoir class を使用することで最も簡単に実現できます。

パッケージ化されたソリューションを使用したくない場合は、セクション作成コマンドをハックする必要があります。論文のためにこれを行う必要があるとき、私はreportクラスを複製し、マージンの女性が幸せになるまで編集しました。あなたが探しているのは、\addcontentslineマクロの定義です。

11
dmckee

この問題を解決する方法はいくつかあります。残念ながら、この段階ではハックしかありません。 1つの問題は、セクション番号 "A"を再定義してWord "Appendix"を含めると、目次のフォーマットが混乱することです。そのため、代わりに、番号なしでセクションを印刷し、「付録X」を手動で挿入する新しいセクションコマンドを定義しました。

ちょっと醜いですが、少なくともマークアップを変更しなくても機能します:)

\documentclass {article} 
 
\makeatletter 
\newcommand\appendix @ section [1] {%
\refstepcounter {section}%
\orig @ section * {付録\ @Alph\c @ section:#1}%
\addcontentsline {toc} {section} {Appendix\@Alph\c @ section:#1}% 
} 
\let\orig @ section\section 
\g @ addto @ macro\appendix {\ let\section\appendix @ section} 
\makeatother 
 
\begin {document} 
 
\tableofcontents 
 
\section {goo} 
\label {a } 
これは秒です〜\ ref {a} 
 
\section {har} 
\label {b} 
これは秒です〜\ ref {b} 
 
\appendix 
\section {ji} 
\label {c} 
これはapp〜\ ref {c}です
\subsection {me} 
これは正しく見えますか?
 
\end {document} 
12
Will Robertson

私の論文では、次のことを行いました。

\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に手動で行を追加したので、「付録X:...」がTOCに表示されます。次に、アスタリスクを使用して、TOCから実際のセクションコマンドを除外しました。

7
Andrew

付録パッケージは本当に良いシンプルなソリューションです。私の回答は、キリル文字やローマ数字などを使用して、章の番号付けスタイルを変更したい場合に役立ちます。付録の番号付けスタイルは、\ @ 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

私はLatexの専門家ではありません。また、このコードが他の何かを壊さないことを保証できません。

1

@Will Robertsonの回答に基づいて、以下のコードは同じことを定義しますが、章についても、[fancyhdrパッケージを使用するときにchapter*がヘッダーに追加されないという事実を修正します。

これでpreableのすべての問題が解決されます。

\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
0
Miguel