Une extension de l’environment theorem de L^{A}TEX^{∗}

Frank Mittelbach Electronic Data Systems (Deutschland) GmbH Eisenstraße 56 D-65424 Rüsselsheim Federal Republic of Germany

Traduction française par Jean-Pierre Drucbert

31 octobre 2001

Résumé Les commandes décrites dans cette documentation fournissent une extension du mécanisme des théorèmes de L^{A}TEX. Cette extension est conçue pour satisfaire les exigences de divers journaux. Donc la présentation des « théorèmes » peut être manipulée en déterminant un « style ». Les commandes nécessaires sont décrites ci-dessous.

Préface à la version 2.2

Pour pouvoir être utilisé avec L^{A}TEX 2ε, ce package n’a pas eu besoin de changements fondamentaux. J’ai simplement modifié les messages engendrés pour que les styles d’affichage de théorèmes apparaissent avec la commande \listfiles, et j’ai purgé la section sur le nouveau schéma de sélection des fontes (NdT : New Font Selection Scheme, ou NFSS, en anglais) parce qu’il fait maintenant partie de L^{A}TEX.

Préface à la version 2.1

Cette version est identique à la version 2.0g décrite dans TUGboat 10#3 sauf pour quelques valeurs par défaut, qui dépendent maintenant du schéma de sélection des fontes utilisé.

Cela a été fait pour éviter des surprises désagréables si le nouveau schéma de sélection des fontes est en vigueur. Lire la section 3 et [1] pour les détails.

1 Introduction

Pour nos besoins présents, les « théorèmes » sont des énonciations étiquetées, souvent détachées du texte principal par un espace supplémentaire et un changement de fonte. Les théorèmes, corollaires, conjectures, définitions et remarques sont tous des instances de « théorèmes ». L’« en-tête » de ces structures est composé d’une étiquette (telle que Théorème ou Remarque) et d’un numéro qui « sérialise » un item dans la séquence des items de même étiquette.

∗Ce fichier a le numéro de version v2.2c, révisé le 1995/11/23.

Peu après l’introduction de L^{A}TEX à la « Fachbereich Mathematik » à Mainz (Mayence), le désir de pouvoir manipuler la présentation des « théorèmes » s’est fait sentir. À Mainz, les deux conventions suivantes sont devenues d’un usage général :

1. Le numéro d’un théorème est placé dans la marge.

2. Il y a une coupure de ligne à la fin de l’en-tête du théorème.

De plus, certains journaux demandent des formats différents selon le « genre de théorème » : par exemple, les remarques et définitions sont souvent composées en \upshape, tandis que \itshape est employé pour les théorèmes principaux.

Face à ces exigences, un environnement theorem a été développé à Mainz pour permettre la détermination séparée de la présentation des « ensembles de théorèmes », d’une façon comparable à \pagestyle.

2 Interface utilisateur

2.1 Définir de nouveaux ensembles de théorèmes

\newtheorem Comme dans la version L^{A}TEX originale, la commande \newtheorem définit un nouvel « ensemble de théorèmes » ou une nouvelle « structure de type théorème ». Deux arguments obligatoires nomment le nouvel environnement et donnent le texte à composer avec chaque instance du nouvel « ensemble », alors qu’un argument optionnel détermine comment cet « ensemble » est numéroté : \newtheorem{foo}{bar} L’ensemble de théorèmes foo (dont le nom est bar) uti-

lise son propre compteur.

\newtheorem{foo2}[foo]{bar2} L’ensemble de théorèmes foo2 (nom imprimé

bar2) utilise le même compteur que l’ensemble de théorèmes foo.

\newtheorem{foo3}{bar3}[section] L’ensemble de théorèmes foo3 (nom im-

primé bar3) est numéroté à l’intérieur de chaque valeur du compteur section, c’est-à-dire qu’à chaque nouvelle \section la numérotation recommence à 1, et que le numéro imprimé est formé du numéro de section et du numéro du théorème lui-même.

\theoremstyle De plus, la commande \theoremstyle peut définir la présentation (au sens mise en page) de divers ensembles de théorèmes, ou de tous. Il faut noter que tout ensemble de théorèmes défini par \newtheorem sera composé dans le \theoremstyle qui est celui courant au moment de la définition. Donc les définitions suivantes

    \theoremstyle{break}        \newtheorem{Cor}{Corollaire}
    \theoremstyle{plain}        \newtheorem{Exa}{Exemple}[section]

font finalement que l’ensemble Cor est mis en page dans le style break, alors que l’ensemble Exa et tous les suivants sont mis en page dans le style plain, à moins qu’une autre commande \theoremstyle suive. Bien que les définitions installées par \newtheorem soient globales, on peut aussi limiter la portée de \theoremstyle localement par des accolades de groupement.

\theorembodyfont Le choix de la fonte pour le corps du théorème est complètement indépendant du \theoremstyle choisi ; ceci s’est révélé très avantageux. Par exemple,

   {\theorembodyfont{\upshape}          \newtheorem{Rem}{Remarque}}

définit un ensemble de théorèmes Rem, qui sera composé en \upshape dans la présentation courante (qui dans notre exemple est plain). Comme pour \theoremstyle, la fonte \theorembodyfont choisie est celle courante lors de la commande \newtheorem. Si la fonte \theorembodyfont n’est pas spécifiée ou si vous définissez \theorembodyfont{}, alors la fonte utilisée sera celle définie par

le \theoremstyle.

\theoremheaderfont Il est aussi possible d’adapter la fonte utilisée pour les en-têtes de théorèmes. Ceci est, cependant, une déclaration globale et il devrait donc y avoir au plus une déclaration \theoremheaderfont dans le préambule^{1}.

\theorempreskipamount Deux paramètres supplémentaires affectent l’espace vertical autour des envi-

\theorempostskipamount ronnements theorem : \theorempreskipamount et \theorempostskipamount dé-

finissent respectivement l’espacement avant et après un tel environnement. Ces paramètres (qui sont des longueurs) s’appliquent à tous les ensembles de théorèmes et peuvent être manipulés par les commandes sur longueurs habituelles. Ce sont des longueurs élastiques, (‘skips’), et donc peuvent comporter des parties

plus et minus.

Comme la définition des ensembles de théorèmes devrait — raisonnablement — être placée dans le préambule, nous ne la permettons que là. Il est donc possible de libérer la mémoire utilisée pour cela après \begin{document}, pour laisser de la place à d’autres applications.

2.2 Styles de théorèmes existants

À ce jour les styles suivants de théorèmes sont disponibles : plain Ce style de théorème émule la définition originale de L^{A}TEX, sauf

            qu’en plus les deux paramètres \theorem{post,pre}skipamount

sont utilisés.

break Dans ce style, l’en-tête du théorème est suivi d’une coupure de ligne. marginbreak Le numéro du théorème est placé dans la marge, et il y a une coupure

de ligne comme dans le style break.

changebreak Comme break, mais avec numéro et texte de l’en-tête intervertis. change Numéro et texte de l’en-tête intervertis, sans coupure de ligne. margin Le numéro est placé dans la marge, sans coupure de ligne. Tous les styles (sauf plain) choisissent \slshape comme \theorembodyfont par défaut.

2.3 Exemples

Étant donnés les ensembles de théorèmes ci-dessus Cor, Exa et Rem, supposons que le préambule contienne aussi les déclarations :

     \theoremstyle{marginbreak}   \newtheorem{Lem}[Cor]{Lemme}
     \theoremstyle{change}

1S’il est en fait nécessaire d’avoir différentes fontes pour les en-têtes, vous devez définir de nouveaux styles de théorèmes (en substituant la fonte désirée) ou spécifier l’information directement dans la déclaration \newtheorem (la méthode impropre).

     \theorembodyfont{\itshape}   \newtheorem{Def}[Cor]{D\'efinition}
     \theoremheaderfont{\scshape}

Alors voici quelques exemples typiques de la sortie composée résultant de leur utilisation.

Corollaire 1 Ceci est une phrase composée dans l’environnement theorem Cor.

Exemple 2.1 Ceci est une phrase composée dans l’environnement theorem Exa.

Remarque 1 Ceci est une phrase composée dans l’environnement theorem Rem.

2 Lemme (Ben User) Ceci est une phrase composée dans l’environnement theorem Lem.

3 Définition (Définition Très Impressionnante) Ceci est une phrase composée dans l’environnement theorem Def.

Les deux derniers exemples montrent l’effet de l’argument optionnel sur un environnement theorem (c’est le texte composé entre parenthèses).

3 Considérations spéciales

L’en-tête et le corps du théorème forment une même unité dans la réalisation. Ceci signifie que la fonte \theoremheaderfont héritera des caractéristiques de la fonte \theorembodyfont avec L^{A}TEX 2ε. Donc par exemple, si \theorembodyfont

est \itshape et \theoremheaderfont est \bfseries, la fonte sélectionnée pour

l’en-tête aura les caractéristiques ‘bold extended italic’ (italique gras-étendu). Si ce n’est pas ce que vous voulez, vous pouvez définir \theoremheaderfont avec quelque chose comme

      \theoremheaderfont{\normalfont\bfseries}

c’est-à-dire fournir explicitement toutes les informations nécessaires sur les fontes.

4 Remerciements

La publication de cet ensemble de commandes n’a été possible que grâce à l’aide de Christina Busse (traduisant le manuscrit en anglais), Joachim Pense (jouant le rôle de typographe), Chris Rowley (chapeautant tout) et de beaucoup d’autres qui ont apporté des suggestions très intéressantes.

Références

[1] M. Goossens, F. Mittelbach and A. Samarin. The L^{A}TEX Companion. Addison-Wesley, Reading, Massachusetts, 1994.

[2] Lamport, Leslie. latex.tex, version 2.09, date Feb. 1990.

Change History

v1.0

General : First draft. . . . . . . . . . . 1 v1.0a

General : ‘thistheoremstyle’ added. 1 v1.1a

General : New concept : redefine the internal L^{A}TEX commands ‘@xnthm’ etc. . . . . . . . . . . . . . 1

v1.1b

General : ‘theoremfont’ used to spe-

cify font. . . . . . . . . . . . . . . . . 1 v1.2a

General : ‘@endtheorem’ now glo-

bally defined. . . . . . . . . . . . . . 1 v1.2b

General : ‘newtheorem’ only allo-

wed in the preamble. . . . . . . . . 1 v1.3a

General : ‘theoremfont’ now a toks

register. . . . . . . . . . . . . . . . . . 1 v2.0a

General : New implementation and new documentation. . . . . . . . . 1 No layout changes but internal modifications old substyles won’t work. . . . . . . . . . . . . . . 1

v2.0b

General : ‘global’ used for all defi-

nitions. . . . . . . . . . . . . . . . . . . 1 v2.0c

General : Documentation translated to English. Thanks to LLL and Nina . . . . . . . . . . . . . . . . 1

v2.1a

General : Support for new font se-

lection. . . . . . . . . . . . . . . . . . . 1 v2.2a

General : Cleanup for LaTeX2e . . 1