[latexrefman-commits] [SCM] latexrefman updated: r762 - trunk

vincentb1 at gnu.org.ua vincentb1 at gnu.org.ua
Sun Mar 29 13:02:48 CEST 2020


Author: vincentb1
Date: 2020-03-29 14:02:48 +0300 (Sun, 29 Mar 2020)
New Revision: 762

Modified:
   trunk/latex2e-fr.texi
Log:
Move nodes ?\194?\171?\194?\160\makeatletter & \makeatother?\194?\160?\194?\187 and ?\194?\171?\194?\160\@ifstar?\194?\160?\194?\187 to the same place as in English version.



Modified: trunk/latex2e-fr.texi
===================================================================
--- trunk/latex2e-fr.texi	2020-03-28 22:27:32 UTC (rev 761)
+++ trunk/latex2e-fr.texi	2020-03-29 11:02:48 UTC (rev 762)
@@ -593,7 +593,6 @@
 
 @menu
 * Déclaration: Declaration.          Changer la valeur ou la signification d'une commande.
-* \makeatletter et \makeatother: \makeatletter and \makeatother. Change la catégorie du caractère arobe.
 @end menu
 
 
@@ -606,387 +605,6 @@
 change le réglage de la numérotation des pages en passant de chiffres
 romains à des chiffres arabes.
 
- at node \makeatletter and \makeatother
- at subsection @code{\makeatletter} et @code{\makeatother}
-
-Synopsis :
-
- at example
-\makeatletter
-  ... définition de commande comprenant @@ dans leur nom ..
-\makeatother
- at end example
-
-Utilisé pour redéfinir des commandes internes de @LaTeX{}.
- at code{\makeatletter} a pour effet que le caractère arobase @code{@@} ait
-le code de catégorie des lettres, c.-à-d.@: 11.  @code{\makeatother}
-règle de code de catégorie de @code{@@} à 12, sa valeur d'origine.
-
-À mesure que chaque caractère est lu par @TeX{} pour @LaTeX{}, un code
-de catégorie lui est assigné. On appelle aussi ce code
- at cindex catcode
- at cindex code de catégorie de caractère
- at cindex catégorie, code de @dots{} de caractère
- at dfn{catcode} pour faire court.  Par exemple, la contre-oblique @code{\}
-reçoit le catcode 0i : celui-ci correspond aux caractères qui commencent une
-commande.  Ces deux commandes altèrent le catcode assigné à @code{@@}.
-
-Cette altération est nécessaire parce que beaucoup des commandes de
- at LaTeX{} utilisent @code{@@} dans leur nom, de manière à empêcher les
-utilisateurs de définir accidentellement une commande qui remplacerait
-l'une des commandes privées de @LaTeX{}.  Les noms de commandes
-consistent en un caractère de catégorie 0, d'ordinaire une
-contre-oblique, suivi de lettres, c'est-à-dire des caractères de
-catégorie 11 (à ceci près qu'un nom de commande peut aussi consister en un
-catactère de catégorie 0 suivi d'un seul symbole non-lettre). Ainsi, sous
-le régime par défaut de codes de catégorie, les commandes définies par
-l'utilisateur ne peuvent pas contenir de @code{@@}.  Mais
- at code{\makeatletter} et @code{\makeatother} permettent aux utilisateurs
-de définir et re-définir des commandes dont le nom comprend un
- at code{@@}.
-
-Ces commandes sont à utiliser dans le préambule d'un fichier @file{.tex}.
-Il ne faut pas les utiliser dans des fichiers @file{.sty} ou @file{.cls}
-puisque les commandes @code{\usepackage} et @code{\documentclass} règlent
-le code de catégorie de l'arobase à celui d'une lettre.
-
- at PkgIndex{macros2e}
-Pour une liste complète des macros contenant une arobase dans leur nom,
-voir le document @url{http://ctan.org/pkg/macros2e}. Ces macros sont
-surtout à l'intention des auteurs de classes et de paquetages. 
-
- at c xxxx TODO : ajouter une avertissement sur cet exemple.
-L'exemple ci-après est typique. Une commande
- at code{\these@@nomuniversite} se trouve dans le fichier de classe de
-l'utilisateur. L'utilisateur veut changer sa définition. Pour cela, il
-suffit d'insérer les trois lignes suivantes dans le préambule, avant le
- at code{\begin@{document@}} :
-
- at example
-\makeatletter
-\renewcommand@{\these@@nomuniversite@}@{Université Lyon III Jean Moulin@}
-\makeatother
- at end example
-
-
- at menu
-* \@@startsection:: Redéfinir les commandes de rubricage.
-* \@@ifstar:: Définir vos propres commandes étoilées.
- at end menu
-
-
- at node \@@startsection
- at subsubsection @code{\@@startsection}
-
-Synopsis :
-
- at example
-\@@startsection@{@var{nom}@}@{@var{niveau}@}@{@var{retrait}@}@{@var{avant}@}@{@var{après}@}@{@var{style}@}
- at end example
-
-Cette commande permet de redéfinir les commandes de rubricage telles que @code{\section} ou @code{\subsection}.
-
-Notez que le paquetage @file{titlesec} rend la manipulation du rubricage
-plus facile. De plus, bien que la plupart des exigences concernant les
-commandes de rubricage peuvent être remplies avec
- at code{\@@startsection}, ce n'est pas le cas de chacune d'entre elles.  Par exemple,
-dans les classes @LaTeX{} standards @code{book} et @code{report}, les
-commandes @code{\chapter} et @code{\report} ne sont pas construites de
-cette manière. Pour fabriquer une telle commande, il est possible
-d'utiliser la commande @code{\secdef}.
- at c xx define, and make a cross reference to, secdef.
-
-Techniquement, cette commande a la forme suivante :
- at example
-\@@startsection@{@var{nom}@}@{@var{niveau}@}@{@var{retrait}@}@{@var{avant}@}@{@var{après}@}@{@var{style}@}
-    *[@var{titretdm}]@{@var{titre}@}
- at end example
- at noindent de sorte que faire :
- at example
-\renewcommand@{\section@}@{\@@startsection@{@var{nom}@}@{@var{niveau}@}@{@var{retrait}@}%
-     @{@var{avant}@}@{@var{après}@}@{@var{style}@}@}
- at end example
- at noindent redéfinit @code{\section} en gardant sa forme standard d'appel
- at code{\section*[@var{titretdm}]@{@var{titre}@}}.  @xref{Sectioning} et
-les exemples plus bas.
-
-Expliquons le rôle des différents paramètres de cette commande :
-
- at table @var
-
- at item nom
- at anchor{\@@startsection/name} Nom du compteur (qui doit être défini
-séparément) utilisé pour numéroter les titres de rubrique. Ceux qui sont
-utilisés le plus communément sont @code{section}, @code{subsection}, ou
- at code{paragraph}. Dans ces trois cas, bien que le nom du compteur soit
-identique à celui de la commande elle-même, utiliser le même nom n'est pas
-exigé.
-
- at code{\the}@var{name} affiche le numéro de titre, et
- at code{\}@var{name}@code{mark} sert aux en-têtes de page.
-
- at item niveau
- at anchor{\@@startsection/level} Entier donnant la profondeur de la
-commande de rubricage, par exemple 0 pour @code{chapter} (ceci ne
-s'applique qu'aux classes standards @code{book} et @code{report}), 1
-pour @code{section}, 2 pour @code{subsection}, 3 pour
- at code{subsubsection}, 4 pour @code{paragraph} et 5 pour
- at code{subparagraph}.  Dans les classes @code{book} et @code{report},
-la rubrique @code{part} a pour niveau -1, alors que dans la classe @code{article},
-elle a pour niveau 0.
-
-Si @var{niveau} est inférieur ou égal à la valeur de @code{secnumdepth},
-alors les titres pour cette commande de rubricage sont numérotés. Par
-exemple : dans un @code{article}, si @code{secnumdepth} vaut 1, alors une
-commande @code{\section@{Introduction@}} produira en sortie une chaîne
-du type « @code{1 Introduction} », alors que
- at code{\subsection@{Historique@}} produira en sortie une chaîne sans
-numéro de préfixe : « @code{Historique} ». @xref{Sectioning/secnumdepth}.
-
-Si @var{niveau} est inférieur ou égal à la valeur de @code{tocdepth},
-alors la table des matières aura un article pour cette rubrique.  Par
-exemple, dans un @code{article}, si @code{tocdepth} vaut 1, la
-table des matières listera les @code{section}s, mais pas les
- at code{subsection}s.
-
-
- at item retrait
- at anchor{\@@startsection/indent}Une longueur donnant le renfoncement de
-toutes les lignes du titre par rapport à la marge. Pour un
-renfoncement nul, utilisez @code{0pt}.
- at c vous pouvez utiliser la macro @code{\z@@} définie à @code{0pt} pour
- at c que le code soit plus efficace
-Une valeur négative telle que @code{-1em} cause un débord du titre dans
-la marge.
-
- at item avant
- at anchor{\@@startsection/beforeskip} Longueur dont la valeur absolue est
-la longueur de l'espace vertical à insérer avant le titre de la
-rubrique. Cet espacement est ignoré si la rubrique commence au début
-d'une page.  Si en plus @var{avant} est négatif, alors le premier
-paragraphe suivant immédiatement le titre n'est pas renfoncé, s'il est
-positif ou nul il l'est. (Notez que l'opposé de @code{1pt plus 2pt
-minus 3pt} est @code{-1pt plus -2pt minus -3pt}).
-
-Par exemple si @var{avant} vaut @code{-3.5ex plus -1ex minus -0.2ex}
-alors pour commencer la nouvelle rubrique, @LaTeX{} ajoute environ 3,5
-fois la hauteur d'une lettre x en espace vertical, et le premier
-paragraphe de la rubrique n'est pas renfoncé.  Utiliser une longueur
-élastique, c.-à-d.@: comprenant @code{plus} et @code{minus}, est une
-bonne pratique ici car cela donne à @LaTeX{} plus de latitude lors de la
-fabrication de la page.
-
-La quantité totale d'espace vertical entre la ligne de base de la ligne
-précédant le titre de cette rubrique et la ligne de base du titre est
-la somme du @code{\parskip} dans la police du corps de texte, du
- at code{\baselineskip} de la police du titre, et de la valeur absolue de
-l'argument @var{avant}. Cet espace est typiquement élastique et peut se
-dilater ou se contracter.  (Si la rubrique commence en début d'une page
-de sorte que cet espace soit ignoré, alors la ligne de base du titre
-correspond à la ligne de base qu'aurait la première ligne de texte sur
-cette page si celle-ci commençait par du texte).
-
- at item après
- at anchor{\@@startsection/afterskip} Longueur. Lorsqu'elle est positive
-ou nulle, il s'agit de l'espace vertical à insérer après le titre de la
-rubrique. Lorsque elle est négative, alors le titre fait corps avec le
-paragraphe le suivant immédiatement. Dans ce cas la valeur absolue de
-la longueur donne l'espace horizontal entre la fin du titre et le début
-du paragraphe suivant.  (Notez que l'opposé de @code{1pt plus 2pt minus
-3pt} est @code{-1pt plus -2pt minus -3pt}).
-
-Comme c'est le cas avec @var{avant}, utiliser une longueur élastique
-avec des composantes @code{plus} et @code{minus} est une bonne pratique
-ici puisque elle donne à @LaTeX{} plus de latitude pour assembler la
-page.
-
-Si @var{après} est positif ou nul, la quantité totale d'espace
-vertical entre la ligne de base du titre de la rubrique et la ligne de
-base de la première ligne du paragraphe suivant est la somme du
- at code{\parskip} de la police du titre, de @code{\baselineskip} de la
-police du corps de texte, et de la valeur de @var{après}. Cet espace est
-typiquement élastique de sorte qu'il puisse se dilater ou se
-contracter.
-
-Notez que, du fait que le signe d'@var{après} contrôle que
-le titre soit indépendant ou non du texte qui le suit,
-vous ne pouvez pas utiliser un @var{après} négatif pour annuler une
-partie du @code{\parskip}.
-
- at item style
- at anchor{\@@startsection/style} Contrôle le style du titre : voir les
-exemples plus bas. Les commandes typiquement utilisées ici sont
- at code{\centering}, @code{\raggedright}, @code{\normalfont},
- at code{\hrule}, ou @code{\newpage}. La dernière commande au sein de
- at var{style} peut être une commande prenant un argument, telle que
- at code{\MakeUppercase} ou @code{\fbox}. Le titre de la rubrique est passé
-en argument à cette commande. Par exemple régler @var{style} à
- at code{\bfseries\MakeUppercase} a pour effet de produire des titres gras
-et en capitales.     
- at end table
-
- at b{EXEMPLES}
-
-Voici des exemples. Pour les utiliser, mettez-les soit au sein d'un
-fichier de paquetage ou de classe, soit dans le préambule d'un
-document @LaTeX{}, entre des commandes @code{\makeatletter} et
- at code{\makeatother} : en effet, le message d'erreur @code{You can't use
-`\spacefactor' in vertical mode.}  est le plus probable lorsque on
-oublie de faire cela.
-
- at xref{\makeatletter and \makeatother}.
-
-
- at b{Premier exemple}
-
-Ce code redéfinit la commande de rubricage @code{\section}
-pour qu'elle centre le titre et le mette en gras :
-
- at example
-\renewcommand\section@{%
-  \@@startsection@{section@}% @ref{\@@startsection/name, at var{nom}, at var{nom}}.
-  @{1@}% @ref{\@@startsection/level, at var{niveau}, at var{niveau}}.
-  @{0pt@}% @ref{\@@startsection/indent, at var{retrait}, at var{retrait}}.
-  @{-3.5ex plus -1ex minus -.2ex@}% @ref{\@@startsection/beforeskip, at var{avant}, at var{avant}}.
-  @{2.3ex plus.2ex@}% @ref{\@@startsection/afterskip, at var{après}, at var{après}}.
-  @{\centering\normalfont\Large\bfseries@}@}% @ref{\@@startsection/style, at var{style}, at var{style}}.
- at end example
-
-
- at b{Deuxième exemple}
-
-Ce code met les titres de @code{subsection} en petites capitales, et
-leur fait faire corps avec le paragraphe suivant.
-
- at example
-\renewcommand\subsection@{%
-  \@@startsection@{subsection@}%  @ref{\@@startsection/name, at var{nom}, at var{nom}}.
-    @{2@}% @ref{\@@startsection/level, at var{niveau}, at var{niveau}}.
-    @{0em@}% @ref{\@@startsection/indent, at var{retrait}, at var{retrait}}.
-    @{-1ex plus 0.1ex minus -0.05ex@}% @ref{\@@startsection/beforeskip, at var{avant}, at var{avant}}.
-    @{-1em plus 0.2em@}% @ref{\@@startsection/afterskip, at var{après}, at var{après}}.
-    @{\scshape@}% @ref{\@@startsection/style, at var{style}, at var{style}}.
-  @}
- at end example
-
- 
- at b{Troisième exemple}
-
-Les exemples précédents redéfinissaient les commandes de titre de
-rubriques existantes.  L'exemple suivant définit une nouvelle commande, illustrant la
-nécessité d'un compteur et de macros pour son affichage.
-
- at c From https://groups.google.com/forum/#!searchin/comp.text.tex/startsection%7Csort:relevance/comp.text.tex/sB-nTS-oL08/ZZeKYdG0llMJ
- at example
-\setcounter@{secnumdepth@}@{6@}% affiche les compteur justqu'à ce niveau
-\newcounter@{subsubparagraph@}[subparagraph]% compteur pour la
-                                          % numérotation
-\renewcommand@{\thesubsubparagraph@}%
-   @{\thesubparagraph.\@@arabic\c@@subsubparagraph@}% comment afficher
-                                                % la numérotation
-\newcommand@{\subsubparagraph@}@{\@@startsection
-                         @{subsubparagraph@}%
-                         @{6@}%
-                         @{0em@}%
-                         @{\baselineskip@}%
-                         @{0.5\baselineskip@}%
-                         @{\normalfont\normalsize@}@}
-\newcommand*\l@@subsubparagraph%
-  @{\@@dottedtocline@{6@}@{10em@}@{5em@}@}% pour la table des matières
-\newcommand@{\subsubparagraphmark@}[1]@{@}% pour les en-têtes de page
- at end example
-
-   
-
- at node \@@ifstar
- at subsubsection @code{\@@ifstar}
-
- at findex \@@ifstar
- at cindex commandes, variantes étoilées
- at cindex étoilées, variantes de commandes
-
-
- at c Inpirée des trucs & astuces de Manuel Pégourié-Gonnard
- at c (https://elzevir.fr/imj/latex/tips.html#stared)
-
-Vous l'avez sans doute remarqué, beaucoup d'environnements ou commandes
-standards de @LaTeX{} existent sous une variante étoilée. Vous pouvez avoir
-envie de reprendre cette idée quand vous définissez vos commandes et arguments.
-
-Si vous avez lu @ref{\newenvironment & \renewenvironment}, vous aurez compris
-que c'est immédiat pour les environnements car l'étoile est un caractère
-autorisé dans les noms d'environnements. Il vous suffit donc de faire
- at code{\newenvironment@{@var{monenv}@}} et
- at code{\newenvironment@{@var{monenv}*@}} avec les définitions souhaitées.
-
-Pour les commandes, c'est plus compliqué car l'étoile ne peut pas faire partie
-du nom de la commande. Il y aura donc une première commande, qui devra être
-capable de regarder si elle est ou non suivie d'une étoile et d'adapter son
-comportement en conséquence. Cette première commande ne pourra pas accepter
-d'argument, mais pourra faire appel à des commandes qui en acceptent. Par
-ailleurs, on utilise la commande @code{\@@ifstar} interne du noyau @LaTeX{} et
-vous pouvez vous reportez à « @ref{\makeatletter and \makeatother} » pour
-comprendre pourquoi cela implique l'usage d'un bloc
- at code{\makeatletter...\makeatother}.
-
-Dans cet exemple, on définit @code{\ciel} comme une commande avec un
-argument obligatoire et admettant une variante étoilée @code{\ciel*}
-également avec un argument obligatoire :
-
- at example
-\makeatletter
-\newcommand*\ciel@@starred[1]@{ciel #1 étoilé@}
-\newcommand*\ciel@@unstarred[1]@{ciel #1 non étoilé@}
-\newcommand\ciel@{\@@ifstar@{\ciel@@starred@}@{\ciel@@unstarred@}@}
-\makeatother
- at end example
-
- at noindent ainsi, @code{\ciel@{bleu@}} composera « ciel bleu non étoilé » tandis que
- at code{\ciel*@{nocturne@}} composera « ciel nocturne étoilé ».
-
-Notez que les commandes intermédiaires @code{\ciel@@starred} et
- at code{\ciel@@unstarred} comportent un @code{@@} dans leur nom ce qui est
-possible puisque elles apparaissent au sein d'un bloc
- at code{\makeatletter...\makeatother}. Ceci assure qu'elles ne puissent pas être
-utilisées directement dans le document. L'utilisation de @@ dans le nom
-comporte certes un risque de collision avec une commande interne du noyeau
- at LaTeX{}, mais une telle collision est facile à détecter et corriger car
- at code{\newcommand*@{\@var{cmd}@}} vérifie que si la commande @code{\@var{cmd}}
-n'est pas déjà définie et génère une erreur si c'est le cas.
-
-Voici un autre exemple, où la commande @code{\agentsecret} comporte deux
-arguments, tandis que sa variante étoilée @code{\agentsecret*} n'en présente qu'un seul :
-
- at example
-\makeatletter
-\newcommand*\agentsecret@@starred[1]@{\textsc@{#1@}@}
-\newcommand*\agentsecret@@unstarred[2]@{\textit@{#1@} \textsc@{#2@}@}
-\newcommand\agentsecret@{\@@ifstar@{\agentsecret@@starred@}
-@ @ @ @	@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @{\agentsecret@@unstarred@}@}
-\makeatother
- at end example
-
- at noindent Avec cette définition, la célèbre réplique de l'agent 007 :
-
- at example
-Je m'appelle \agentsecret*@{Bond@}, \agentsecret@{James@}@{Bond@}.
- at end example
-
- at noindent est équivalente à :
-
- at example
-Je m'appelle \textsc@{Bond@}, \textit@{James@} textsc@{Bond@}.
- at end example
-
-Un dernier mot :
-dans le nom d'une commande, l'étoile est comme une sorte d'argument optionnel.
-Ceci est différent des noms d'environnement, où l'étoile fait partie
-du nom lui-même, et peut donc être à n'importe quelle position !
-D'un point de vue purement @TeX{}nique il est donc possible de mettre un nombre indéfini
-d'espaces entre la commande et l'étoile. Ainsi @code{\agentsecret*@{Bond@}} et
- at code{\agentsecret *@{Bond@}} sont équivalents. Toutefois la pratique commune
-est de ne jamais insérer de tels espaces.
-
 @node Environment
 @section Les environnements
 
@@ -1288,7 +906,7 @@
 Au sein d'un fichier classe pour paquetate on peu utiliser l'arobe
 @code{@@} comme un caractère dans les noms de commande sans avoir à
 entourer le code contenant la commande en question par
- at code{\makeatletter} et @code{\makeatother}.  @xref{\makeatletter and
+ at code{\makeatletter} et @code{\makeatother}.  @xref{\makeatletter &
 \makeatother}. Ceci permet de créer des commandes que les utilisateurs
 ne risquent pas de redéfinir accidentellement. Une autre technique est
 de préfixer les commandes spécifiques à une classe ou paquetage avec une
@@ -6711,6 +6329,8 @@
 @menu
 * \newcommand & \renewcommand:: (Re)définir une nouvelle commande.
 * \providecommand::  Définir une commande, si le nom n'est pas utilsé.
+* \makeatletter et \makeatother: \makeatletter & \makeatother. Change la catégorie du caractère arobe.
+* \@@ifstar:: Définir vos propres commandes étoilées.
 * \newcounter:: Définir un nouveau compteur.
 * \newlength:: Définir une nouvelle longueur.
 * \newsavebox:: Définir une nouvelle boîte.
@@ -6865,6 +6485,386 @@
 effet. Ceci est particulièrement utile dans un fichier de style, ou dans
 tout fichier susceptible d'être chargé plus d'une fois.
         
+ at node \makeatletter & \makeatother
+ at section @code{\makeatletter} et @code{\makeatother}
+
+Synopsis :
+
+ at example
+\makeatletter
+  ... définition de commande comprenant @@ dans leur nom ..
+\makeatother
+ at end example
+
+Utilisé pour redéfinir des commandes internes de @LaTeX{}.
+ at code{\makeatletter} a pour effet que le caractère arobase @code{@@} ait
+le code de catégorie des lettres, c.-à-d.@: 11.  @code{\makeatother}
+règle de code de catégorie de @code{@@} à 12, sa valeur d'origine.
+
+À mesure que chaque caractère est lu par @TeX{} pour @LaTeX{}, un code
+de catégorie lui est assigné. On appelle aussi ce code
+ at cindex catcode
+ at cindex code de catégorie de caractère
+ at cindex catégorie, code de @dots{} de caractère
+ at dfn{catcode} pour faire court.  Par exemple, la contre-oblique @code{\}
+reçoit le catcode 0i : celui-ci correspond aux caractères qui commencent une
+commande.  Ces deux commandes altèrent le catcode assigné à @code{@@}.
+
+Cette altération est nécessaire parce que beaucoup des commandes de
+ at LaTeX{} utilisent @code{@@} dans leur nom, de manière à empêcher les
+utilisateurs de définir accidentellement une commande qui remplacerait
+l'une des commandes privées de @LaTeX{}.  Les noms de commandes
+consistent en un caractère de catégorie 0, d'ordinaire une
+contre-oblique, suivi de lettres, c'est-à-dire des caractères de
+catégorie 11 (à ceci près qu'un nom de commande peut aussi consister en un
+catactère de catégorie 0 suivi d'un seul symbole non-lettre). Ainsi, sous
+le régime par défaut de codes de catégorie, les commandes définies par
+l'utilisateur ne peuvent pas contenir de @code{@@}.  Mais
+ at code{\makeatletter} et @code{\makeatother} permettent aux utilisateurs
+de définir et re-définir des commandes dont le nom comprend un
+ at code{@@}.
+
+Ces commandes sont à utiliser dans le préambule d'un fichier @file{.tex}.
+Il ne faut pas les utiliser dans des fichiers @file{.sty} ou @file{.cls}
+puisque les commandes @code{\usepackage} et @code{\documentclass} règlent
+le code de catégorie de l'arobase à celui d'une lettre.
+
+ at PkgIndex{macros2e}
+Pour une liste complète des macros contenant une arobase dans leur nom,
+voir le document @url{http://ctan.org/pkg/macros2e}. Ces macros sont
+surtout à l'intention des auteurs de classes et de paquetages. 
+
+ at c xxxx TODO : ajouter une avertissement sur cet exemple.
+L'exemple ci-après est typique. Une commande
+ at code{\these@@nomuniversite} se trouve dans le fichier de classe de
+l'utilisateur. L'utilisateur veut changer sa définition. Pour cela, il
+suffit d'insérer les trois lignes suivantes dans le préambule, avant le
+ at code{\begin@{document@}} :
+
+ at example
+\makeatletter
+\renewcommand@{\these@@nomuniversite@}@{Université Lyon III Jean Moulin@}
+\makeatother
+ at end example
+
+
+ at menu
+* \@@startsection:: Redéfinir les commandes de rubricage.
+ at end menu
+
+
+ at node \@@startsection
+ at subsection @code{\@@startsection}
+
+Synopsis :
+
+ at example
+\@@startsection@{@var{nom}@}@{@var{niveau}@}@{@var{retrait}@}@{@var{avant}@}@{@var{après}@}@{@var{style}@}
+ at end example
+
+Cette commande permet de redéfinir les commandes de rubricage telles que @code{\section} ou @code{\subsection}.
+
+Notez que le paquetage @file{titlesec} rend la manipulation du rubricage
+plus facile. De plus, bien que la plupart des exigences concernant les
+commandes de rubricage peuvent être remplies avec
+ at code{\@@startsection}, ce n'est pas le cas de chacune d'entre elles.  Par exemple,
+dans les classes @LaTeX{} standards @code{book} et @code{report}, les
+commandes @code{\chapter} et @code{\report} ne sont pas construites de
+cette manière. Pour fabriquer une telle commande, il est possible
+d'utiliser la commande @code{\secdef}.
+ at c xx define, and make a cross reference to, secdef.
+
+Techniquement, cette commande a la forme suivante :
+ at example
+\@@startsection@{@var{nom}@}@{@var{niveau}@}@{@var{retrait}@}@{@var{avant}@}@{@var{après}@}@{@var{style}@}
+    *[@var{titretdm}]@{@var{titre}@}
+ at end example
+ at noindent de sorte que faire :
+ at example
+\renewcommand@{\section@}@{\@@startsection@{@var{nom}@}@{@var{niveau}@}@{@var{retrait}@}%
+     @{@var{avant}@}@{@var{après}@}@{@var{style}@}@}
+ at end example
+ at noindent redéfinit @code{\section} en gardant sa forme standard d'appel
+ at code{\section*[@var{titretdm}]@{@var{titre}@}}.  @xref{Sectioning} et
+les exemples plus bas.
+
+Expliquons le rôle des différents paramètres de cette commande :
+
+ at table @var
+
+ at item nom
+ at anchor{\@@startsection/name} Nom du compteur (qui doit être défini
+séparément) utilisé pour numéroter les titres de rubrique. Ceux qui sont
+utilisés le plus communément sont @code{section}, @code{subsection}, ou
+ at code{paragraph}. Dans ces trois cas, bien que le nom du compteur soit
+identique à celui de la commande elle-même, utiliser le même nom n'est pas
+exigé.
+
+ at code{\the}@var{name} affiche le numéro de titre, et
+ at code{\}@var{name}@code{mark} sert aux en-têtes de page.
+
+ at item niveau
+ at anchor{\@@startsection/level} Entier donnant la profondeur de la
+commande de rubricage, par exemple 0 pour @code{chapter} (ceci ne
+s'applique qu'aux classes standards @code{book} et @code{report}), 1
+pour @code{section}, 2 pour @code{subsection}, 3 pour
+ at code{subsubsection}, 4 pour @code{paragraph} et 5 pour
+ at code{subparagraph}.  Dans les classes @code{book} et @code{report},
+la rubrique @code{part} a pour niveau -1, alors que dans la classe @code{article},
+elle a pour niveau 0.
+
+Si @var{niveau} est inférieur ou égal à la valeur de @code{secnumdepth},
+alors les titres pour cette commande de rubricage sont numérotés. Par
+exemple : dans un @code{article}, si @code{secnumdepth} vaut 1, alors une
+commande @code{\section@{Introduction@}} produira en sortie une chaîne
+du type « @code{1 Introduction} », alors que
+ at code{\subsection@{Historique@}} produira en sortie une chaîne sans
+numéro de préfixe : « @code{Historique} ». @xref{Sectioning/secnumdepth}.
+
+Si @var{niveau} est inférieur ou égal à la valeur de @code{tocdepth},
+alors la table des matières aura un article pour cette rubrique.  Par
+exemple, dans un @code{article}, si @code{tocdepth} vaut 1, la
+table des matières listera les @code{section}s, mais pas les
+ at code{subsection}s.
+
+
+ at item retrait
+ at anchor{\@@startsection/indent}Une longueur donnant le renfoncement de
+toutes les lignes du titre par rapport à la marge. Pour un
+renfoncement nul, utilisez @code{0pt}.
+ at c vous pouvez utiliser la macro @code{\z@@} définie à @code{0pt} pour
+ at c que le code soit plus efficace
+Une valeur négative telle que @code{-1em} cause un débord du titre dans
+la marge.
+
+ at item avant
+ at anchor{\@@startsection/beforeskip} Longueur dont la valeur absolue est
+la longueur de l'espace vertical à insérer avant le titre de la
+rubrique. Cet espacement est ignoré si la rubrique commence au début
+d'une page.  Si en plus @var{avant} est négatif, alors le premier
+paragraphe suivant immédiatement le titre n'est pas renfoncé, s'il est
+positif ou nul il l'est. (Notez que l'opposé de @code{1pt plus 2pt
+minus 3pt} est @code{-1pt plus -2pt minus -3pt}).
+
+Par exemple si @var{avant} vaut @code{-3.5ex plus -1ex minus -0.2ex}
+alors pour commencer la nouvelle rubrique, @LaTeX{} ajoute environ 3,5
+fois la hauteur d'une lettre x en espace vertical, et le premier
+paragraphe de la rubrique n'est pas renfoncé.  Utiliser une longueur
+élastique, c.-à-d.@: comprenant @code{plus} et @code{minus}, est une
+bonne pratique ici car cela donne à @LaTeX{} plus de latitude lors de la
+fabrication de la page.
+
+La quantité totale d'espace vertical entre la ligne de base de la ligne
+précédant le titre de cette rubrique et la ligne de base du titre est
+la somme du @code{\parskip} dans la police du corps de texte, du
+ at code{\baselineskip} de la police du titre, et de la valeur absolue de
+l'argument @var{avant}. Cet espace est typiquement élastique et peut se
+dilater ou se contracter.  (Si la rubrique commence en début d'une page
+de sorte que cet espace soit ignoré, alors la ligne de base du titre
+correspond à la ligne de base qu'aurait la première ligne de texte sur
+cette page si celle-ci commençait par du texte).
+
+ at item après
+ at anchor{\@@startsection/afterskip} Longueur. Lorsqu'elle est positive
+ou nulle, il s'agit de l'espace vertical à insérer après le titre de la
+rubrique. Lorsque elle est négative, alors le titre fait corps avec le
+paragraphe le suivant immédiatement. Dans ce cas la valeur absolue de
+la longueur donne l'espace horizontal entre la fin du titre et le début
+du paragraphe suivant.  (Notez que l'opposé de @code{1pt plus 2pt minus
+3pt} est @code{-1pt plus -2pt minus -3pt}).
+
+Comme c'est le cas avec @var{avant}, utiliser une longueur élastique
+avec des composantes @code{plus} et @code{minus} est une bonne pratique
+ici puisque elle donne à @LaTeX{} plus de latitude pour assembler la
+page.
+
+Si @var{après} est positif ou nul, la quantité totale d'espace
+vertical entre la ligne de base du titre de la rubrique et la ligne de
+base de la première ligne du paragraphe suivant est la somme du
+ at code{\parskip} de la police du titre, de @code{\baselineskip} de la
+police du corps de texte, et de la valeur de @var{après}. Cet espace est
+typiquement élastique de sorte qu'il puisse se dilater ou se
+contracter.
+
+Notez que, du fait que le signe d'@var{après} contrôle que
+le titre soit indépendant ou non du texte qui le suit,
+vous ne pouvez pas utiliser un @var{après} négatif pour annuler une
+partie du @code{\parskip}.
+
+ at item style
+ at anchor{\@@startsection/style} Contrôle le style du titre : voir les
+exemples plus bas. Les commandes typiquement utilisées ici sont
+ at code{\centering}, @code{\raggedright}, @code{\normalfont},
+ at code{\hrule}, ou @code{\newpage}. La dernière commande au sein de
+ at var{style} peut être une commande prenant un argument, telle que
+ at code{\MakeUppercase} ou @code{\fbox}. Le titre de la rubrique est passé
+en argument à cette commande. Par exemple régler @var{style} à
+ at code{\bfseries\MakeUppercase} a pour effet de produire des titres gras
+et en capitales.     
+ at end table
+
+ at b{EXEMPLES}
+
+Voici des exemples. Pour les utiliser, mettez-les soit au sein d'un
+fichier de paquetage ou de classe, soit dans le préambule d'un
+document @LaTeX{}, entre des commandes @code{\makeatletter} et
+ at code{\makeatother} : en effet, le message d'erreur @code{You can't use
+`\spacefactor' in vertical mode.}  est le plus probable lorsque on
+oublie de faire cela.
+
+ at xref{\makeatletter & \makeatother}.
+
+
+ at b{Premier exemple}
+
+Ce code redéfinit la commande de rubricage @code{\section}
+pour qu'elle centre le titre et le mette en gras :
+
+ at example
+\renewcommand\section@{%
+  \@@startsection@{section@}% @ref{\@@startsection/name, at var{nom}, at var{nom}}.
+  @{1@}% @ref{\@@startsection/level, at var{niveau}, at var{niveau}}.
+  @{0pt@}% @ref{\@@startsection/indent, at var{retrait}, at var{retrait}}.
+  @{-3.5ex plus -1ex minus -.2ex@}% @ref{\@@startsection/beforeskip, at var{avant}, at var{avant}}.
+  @{2.3ex plus.2ex@}% @ref{\@@startsection/afterskip, at var{après}, at var{après}}.
+  @{\centering\normalfont\Large\bfseries@}@}% @ref{\@@startsection/style, at var{style}, at var{style}}.
+ at end example
+
+
+ at b{Deuxième exemple}
+
+Ce code met les titres de @code{subsection} en petites capitales, et
+leur fait faire corps avec le paragraphe suivant.
+
+ at example
+\renewcommand\subsection@{%
+  \@@startsection@{subsection@}%  @ref{\@@startsection/name, at var{nom}, at var{nom}}.
+    @{2@}% @ref{\@@startsection/level, at var{niveau}, at var{niveau}}.
+    @{0em@}% @ref{\@@startsection/indent, at var{retrait}, at var{retrait}}.
+    @{-1ex plus 0.1ex minus -0.05ex@}% @ref{\@@startsection/beforeskip, at var{avant}, at var{avant}}.
+    @{-1em plus 0.2em@}% @ref{\@@startsection/afterskip, at var{après}, at var{après}}.
+    @{\scshape@}% @ref{\@@startsection/style, at var{style}, at var{style}}.
+  @}
+ at end example
+
+ 
+ at b{Troisième exemple}
+
+Les exemples précédents redéfinissaient les commandes de titre de
+rubriques existantes.  L'exemple suivant définit une nouvelle commande, illustrant la
+nécessité d'un compteur et de macros pour son affichage.
+
+ at c From https://groups.google.com/forum/#!searchin/comp.text.tex/startsection%7Csort:relevance/comp.text.tex/sB-nTS-oL08/ZZeKYdG0llMJ
+ at example
+\setcounter@{secnumdepth@}@{6@}% affiche les compteur justqu'à ce niveau
+\newcounter@{subsubparagraph@}[subparagraph]% compteur pour la
+                                          % numérotation
+\renewcommand@{\thesubsubparagraph@}%
+   @{\thesubparagraph.\@@arabic\c@@subsubparagraph@}% comment afficher
+                                                % la numérotation
+\newcommand@{\subsubparagraph@}@{\@@startsection
+                         @{subsubparagraph@}%
+                         @{6@}%
+                         @{0em@}%
+                         @{\baselineskip@}%
+                         @{0.5\baselineskip@}%
+                         @{\normalfont\normalsize@}@}
+\newcommand*\l@@subsubparagraph%
+  @{\@@dottedtocline@{6@}@{10em@}@{5em@}@}% pour la table des matières
+\newcommand@{\subsubparagraphmark@}[1]@{@}% pour les en-têtes de page
+ at end example
+
+   
+
+ at node \@@ifstar
+ at section @code{\@@ifstar}
+
+ at findex \@@ifstar
+ at cindex commandes, variantes étoilées
+ at cindex étoilées, variantes de commandes
+
+
+ at c Inpirée des trucs & astuces de Manuel Pégourié-Gonnard
+ at c (https://elzevir.fr/imj/latex/tips.html#stared)
+
+Vous l'avez sans doute remarqué, beaucoup d'environnements ou commandes
+standards de @LaTeX{} existent sous une variante étoilée. Vous pouvez avoir
+envie de reprendre cette idée quand vous définissez vos commandes et arguments.
+
+Si vous avez lu @ref{\newenvironment & \renewenvironment}, vous aurez compris
+que c'est immédiat pour les environnements car l'étoile est un caractère
+autorisé dans les noms d'environnements. Il vous suffit donc de faire
+ at code{\newenvironment@{@var{monenv}@}} et
+ at code{\newenvironment@{@var{monenv}*@}} avec les définitions souhaitées.
+
+Pour les commandes, c'est plus compliqué car l'étoile ne peut pas faire partie
+du nom de la commande. Il y aura donc une première commande, qui devra être
+capable de regarder si elle est ou non suivie d'une étoile et d'adapter son
+comportement en conséquence. Cette première commande ne pourra pas accepter
+d'argument, mais pourra faire appel à des commandes qui en acceptent. Par
+ailleurs, on utilise la commande @code{\@@ifstar} interne du noyau @LaTeX{} et
+vous pouvez vous reportez à « @ref{\makeatletter & \makeatother} » pour
+comprendre pourquoi cela implique l'usage d'un bloc
+ at code{\makeatletter...\makeatother}.
+
+Dans cet exemple, on définit @code{\ciel} comme une commande avec un
+argument obligatoire et admettant une variante étoilée @code{\ciel*}
+également avec un argument obligatoire :
+
+ at example
+\makeatletter
+\newcommand*\ciel@@starred[1]@{ciel #1 étoilé@}
+\newcommand*\ciel@@unstarred[1]@{ciel #1 non étoilé@}
+\newcommand\ciel@{\@@ifstar@{\ciel@@starred@}@{\ciel@@unstarred@}@}
+\makeatother
+ at end example
+
+ at noindent ainsi, @code{\ciel@{bleu@}} composera « ciel bleu non étoilé » tandis que
+ at code{\ciel*@{nocturne@}} composera « ciel nocturne étoilé ».
+
+Notez que les commandes intermédiaires @code{\ciel@@starred} et
+ at code{\ciel@@unstarred} comportent un @code{@@} dans leur nom ce qui est
+possible puisque elles apparaissent au sein d'un bloc
+ at code{\makeatletter...\makeatother}. Ceci assure qu'elles ne puissent pas être
+utilisées directement dans le document. L'utilisation de @@ dans le nom
+comporte certes un risque de collision avec une commande interne du noyeau
+ at LaTeX{}, mais une telle collision est facile à détecter et corriger car
+ at code{\newcommand*@{\@var{cmd}@}} vérifie que si la commande @code{\@var{cmd}}
+n'est pas déjà définie et génère une erreur si c'est le cas.
+
+Voici un autre exemple, où la commande @code{\agentsecret} comporte deux
+arguments, tandis que sa variante étoilée @code{\agentsecret*} n'en présente qu'un seul :
+
+ at example
+\makeatletter
+\newcommand*\agentsecret@@starred[1]@{\textsc@{#1@}@}
+\newcommand*\agentsecret@@unstarred[2]@{\textit@{#1@} \textsc@{#2@}@}
+\newcommand\agentsecret@{\@@ifstar@{\agentsecret@@starred@}
+@ @ @ @	@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @{\agentsecret@@unstarred@}@}
+\makeatother
+ at end example
+
+ at noindent Avec cette définition, la célèbre réplique de l'agent 007 :
+
+ at example
+Je m'appelle \agentsecret*@{Bond@}, \agentsecret@{James@}@{Bond@}.
+ at end example
+
+ at noindent est équivalente à :
+
+ at example
+Je m'appelle \textsc@{Bond@}, \textit@{James@} textsc@{Bond@}.
+ at end example
+
+Un dernier mot :
+dans le nom d'une commande, l'étoile est comme une sorte d'argument optionnel.
+Ceci est différent des noms d'environnement, où l'étoile fait partie
+du nom lui-même, et peut donc être à n'importe quelle position !
+D'un point de vue purement @TeX{}nique il est donc possible de mettre un nombre indéfini
+d'espaces entre la commande et l'étoile. Ainsi @code{\agentsecret*@{Bond@}} et
+ at code{\agentsecret *@{Bond@}} sont équivalents. Toutefois la pratique commune
+est de ne jamais insérer de tels espaces.
+
 @node \newcounter
 @section @code{\newcounter} : allouer un compteur
 @findex \newcounter



More information about the latexrefman-commits mailing list.