web-dev-qa-db-fra.com

Comment faire apparaître 'appendix' en toc dans Latex?

Comment faire en sorte que "l'annexe" apparaisse dans la table des matières? En ce moment toc ressemble à ceci:

1 ......
2 ......
.
.
UNE .....
B .....

Je voudrais que ce soit:

1 ......
2 ......
.
.
Annexe A .....
Appendice B .....

Ma structure de fichier source latex ressemble à ceci:

\ begin {document}
\table des matières
\comprendre{...}
\comprendre{...}
\appendice
\comprendre{...}
\comprendre{...}
\end {document}

19
chriss

Ceci est probablement plus facilement réalisable en utilisant le package appendix , ou le memoir class .

Si vous ne souhaitez pas utiliser une solution préemballée, vous devrez Pirater les commandes de sectionnement. Lorsque j'ai eu besoin de faire cela pour ma thèse , J'ai cloné la classe report et édité jusqu'à ce que je rende heureuse La dame des marges. Vous recherchez la définition De la macro \addcontentsline

11
dmckee

Il y a plusieurs façons de résoudre ce problème; Malheureusement, je n'ai qu'un hack pour vous à ce stade. Un problème est que si nous redéfinissons le numéro de section "A" pour inclure le mot "Annexe", le formatage de la table des matières est perturbé. Au lieu de cela, je viens de définir une nouvelle commande de sectionnement qui imprime la section sans numéro et insère manuellement "Annexe X".

Un peu moche, mais au moins ça marche sans changer de balisage :)

\documentclass {article} 
 
\makeatletter 
\newcommand\appendix @ section [1] {% 
\refstepcounter {section}% [%] .____.]\orig @ section * {Annexe\@Alph\c @ section: # 1}% 
\addcontentsline {toc} {section} {Annexe\@Alph\c @ section: # 1}% 
} 
\let\orig @ section\section 
\g @ addto @ macro\appendix {\ let\section\appendix @ section} 
\makeeatother 
 
\begin {document} 
 
\table des matières 
 
\section {goo} 
\label {a } 
 C'est sec ~\ref {a}. 
 
\Section {har} 
\Label {b} 
 C'est sec ~\ref {b} 
 
\appendice 
\section {ji} 
\label {c} 
 Ceci est l'application ~\ref {c} 
\paragraph {me} 
 Cela vous semble-t-il correct? 
 
\end {document} 
11
Will Robertson

Pour ma thèse, j'ai fait ce qui suit:

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

Explication: J'ai ajouté manuellement une ligne à la table des matières afin que "Annexe X: ..." apparaisse dans ma table des matières. Ensuite, j'ai exclu la commande de section réelle de la table des matières en utilisant un astérisque.

7
Andrew

Le paquet annexe est vraiment une solution simple et bonne. Ma réponse peut être utile pour qui veut changer le style de numérotation des chapitres, par exemple, en utilisant l'alphabet cyrillique ou les chiffres romains. Le style de numérotation des annexes est codé en dur dans la commande\@ resets @ pp (j’ai cherché dans les sources ici http://hal.in2p3.fr/docs/00/31/90/21/TEX/appendix.sty ) . Je l'ai résolu en redéfinissant simplement cette commande sur la mienne. Ajoutez simplement ce code dans votre préambule:

\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

Par conséquent,

Appendix A
Appendix B
Appendix C
...

changera à

Appendix A
Appendix Б
Appendix В
... etc

Je ne suis pas un expert du latex et je ne peux pas garantir que ce code ne casse pas autre chose.

1

Basé sur la réponse de @Will Robertson, le code ci-dessous définit la même chose mais pour chapitre et corrige également le fait que chapter* n'ajoute pas à l'en-tête lors de l'utilisation du package fancyhdr.

Avec cela dans le prable, tous les problèmes sont résolus.

\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