diff options
author | Norbert Preining <norbert@preining.info> | 2020-01-05 03:00:30 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-01-05 03:00:30 +0000 |
commit | d703bc2777b69363e791c0ec50045947b1a399da (patch) | |
tree | 518c616bdf53da2c5dccf1bbd0a17ba14d4b7c7a /info/impatient/fr | |
parent | 46d85b2b8e0282e241f8a41c6c0cd190c495eab0 (diff) |
CTAN sync 202001050300
Diffstat (limited to 'info/impatient/fr')
-rw-r--r-- | info/impatient/fr/fbackm.tex | 206 | ||||
-rw-r--r-- | info/impatient/fr/fbook.tex | 100 | ||||
-rw-r--r-- | info/impatient/fr/fcapsule.tex | 2246 | ||||
-rw-r--r-- | info/impatient/fr/fconcept.tex | 8139 | ||||
-rw-r--r-- | info/impatient/fr/fcopyrgh.tex | 116 | ||||
-rw-r--r-- | info/impatient/fr/ferrors.tex | 618 | ||||
-rw-r--r-- | info/impatient/fr/ffrontm.tex | 164 | ||||
-rw-r--r-- | info/impatient/fr/fgenops.tex | 5668 | ||||
-rw-r--r-- | info/impatient/fr/findex.tex | 37 | ||||
-rw-r--r-- | info/impatient/fr/fmacros.tex | 4688 | ||||
-rw-r--r-- | info/impatient/fr/fmath.tex | 4352 | ||||
-rw-r--r-- | info/impatient/fr/fmodes.tex | 4159 | ||||
-rw-r--r-- | info/impatient/fr/fpages.tex | 2306 | ||||
-rw-r--r-- | info/impatient/fr/fparas.tex | 4302 | ||||
-rw-r--r-- | info/impatient/fr/fpreface.tex | 316 | ||||
-rw-r--r-- | info/impatient/fr/fread1st.tex | 92 | ||||
-rw-r--r-- | info/impatient/fr/ftips.tex | 2008 | ||||
-rw-r--r-- | info/impatient/fr/fusermacs.tex | 2336 |
18 files changed, 20911 insertions, 20942 deletions
diff --git a/info/impatient/fr/fbackm.tex b/info/impatient/fr/fbackm.tex index 58bb6aece6..dc9f1ee01f 100644 --- a/info/impatient/fr/fbackm.tex +++ b/info/impatient/fr/fbackm.tex @@ -1,103 +1,103 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-%
-% Backmatter.
-
-\input fmacros
-
-\ifcompletebook
- \noheadlinetrue\pagebreak
- \ifodd\pageno\else \noheadlinetrue\pagebreak \fi
-\fi
-
-\edgetabsfalse
-
-% About the authors.
-%
-\backsinkage
-\leftline{\sectionfonts \`a propos des auteurs}
-\vskip\belowsectionskip
-
-%\noindent
-Paul W. Abrahams, Sc.D., CCP, est consultant informatique et ancien
-pr\'esident de l'Association for Computing Machinery. Ses sp\'ecialit\'es
-sont la programmation de langage informatique, la conception,
-l'impl\'ementation de syst\`emes logiciels et l'\'ecriture technique. Il a
-re\c cu son doctorat de math\'ematiques du Massachusetts Institute of
-Technology en 1963, \'etudiant l'intelligence artificielle sous la tutelle
-de Marvin Minsky et John McCarthy. Il est un des concepteurs du premier
-syst\`eme {\sc LISP} et concepteur du syst\`eme {\sc CIMS PL/I},
-d\'evelopp\'e quand il \'etait professeur \`a l'universit\'e de New York.
-Plus r\'ecemment, il a con\c cu {\sc SPLASH}, un langage de programmation
-syst\`eme pour des hackers de logiciel. Paul r\'eside \`a Deerfield,
-Massachusetts, o\`u il \'ecrit, bidouille, fait de la randonn\'ee, chasse
-les champignons sauvages et \'ecoute de la musique classique.
-
-Kathryn A. Hargreaves a re\c cu son M.S. degree en informatique de
-l'universit\'e du Massachusetts, Boston, en ao\^ut 1989. Ses
-sp\'ecialit\'es sont la typographie num\'erique et la vision humaine. Elle
-a d\'evelopp\'e un ensemble de programmes pour produire une police
-num\'erique de haute qualit\'e et librement distribuable pour la Free
-Software Foundation et a \'egalement travaill\'e avec Robert~A. Morris en
-tant qu'Adjunct Research Associate. En 1986 elle a accompli le programme de
-r\'e-entr\'ee en informatique pour les femmes et les minorit\'es \`a
-l'universit\'e de Californie \`a Berkeley, o\`u elle a \'egalement
-travaill\'e dans le \TeX\ research group sous Michael Harrison. Elle a
-\'etudi\'e la conception de police de caract\`ere avec Don Adleta, Andr\'e
-G\"urtler, et Christian Mengelt \`a la Rhode Island School of Design.
-Typographe, elle a travaill\'e chez Headliners\slash Identicolor, \`a San
-Francisco, et chez Futur Studio, Los Angeles, deux soci\'et\'es
-typographiques majeures. Elle a obtenu \'egalement un M.F.A. en
-Peinture\slash Sculpture\slash Art Graphiques de l'universit\'e de
-Californie \`a Los Angeles. Kathy peint des aquarelles, con\c coit des
-polices, joue du piano et lit la critique de film f\'eministe.
-
-Comme Kathy, Karl Berry a re\c cu son M.S. degree en informatique \`a
-l'universit\'e du Massachusetts, Boston, en ao\^ut 1989. Il a \'egalement
-travaill\'e pour la Free Software Foundation, a fait de la recherche avec
-Morris et a \'etudi\'e avec Adleta, G\"urtler, et Mengelt. Il avait
-commenc\'e \`a travailler avec \TeX\ depuis 1983 et a install\'e et a
-maintenu le syst\`eme \TeX\ dans un certain nombre d'universit\'es. Il
-\'etait le mainteneur du syst\`eme Web2c d\'evelopp\'e par Tim Morgan
-pendant un certain nombre d'ann\'ees, parmi d'autres projets \TeX. Il est
-devenu pr\'esident du \TeX\ Users Group en 2003.
-\vfill\eject
-\noheadlinetrue\pagebreak
-
-
-% Colophon.
-%
-\backsinkage
-\leftline{\sectionfonts Colophon}
-\vskip\belowsectionskip
-
-%\noindent
-Ce livre a \'et\'e compos\'e en utilisant \TeX\ (naturellement),
-d\'evelopp\'e par Donald~E. Knuth. Le texte principal est compos\'e en
-Computer Modern, \'egalement con\c cu par Knuth. Les en-t\^etes du livre
-original ont \'et\'e compos\'ees en Zapf Humanist (la version Bitstream
-d'Optima), con\c cu par Hermann Zapf.
-
-Le papier \'etait du Amherst Ultra Matte 45 livres. L'impression et la
-reliure ont \'et\'e faits par Arcadia Graphics-Halliday. La sortie de
-photocomposeuse a \'et\'e produite \`a type 2000,~Inc., \`a Mill Valley,
-Californie. Les preuves ont \'et\'e faites sur une Apple LaserWriter plus
-et sur une Hewlett Packard LaserJet~II\null.
-
-Les r\'ef\'erences crois\'ees, l'indexage et la table des mati\`eres ont
-\'et\'e faits m\'ecaniquement, en utilisant les macros de la
-\chapterref{eplain} ainsi que des macros additionnelles \'ecrites
-sp\'ecialement pour ce livre. La production de l'index a \'et\'e
-r\'ealis\'ee par un programme additionnel \'ecrit en Icon.
-
-
-\noheadlinetrue
-\iftrue
- \pagebreak
- \printconceptpage
-\fi
-
-\byebye
-
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. +% +% Backmatter. + +\input fmacros + +\ifcompletebook + \noheadlinetrue\pagebreak + \ifodd\pageno\else \noheadlinetrue\pagebreak \fi +\fi + +\edgetabsfalse + +% About the authors. +% +\backsinkage +\leftline{\sectionfonts \`a propos des auteurs} +\vskip\belowsectionskip + +%\noindent +Paul W. Abrahams, Sc.D., CCP, est consultant informatique et ancien +pr\'esident de l'Association for Computing Machinery. Ses sp\'ecialit\'es +sont la programmation de langage informatique, la conception, +l'impl\'ementation de syst\`emes logiciels et l'\'ecriture technique. Il a +re\c cu son doctorat de math\'ematiques du Massachusetts Institute of +Technology en 1963, \'etudiant l'intelligence artificielle sous la tutelle +de Marvin Minsky et John McCarthy. Il est un des concepteurs du premier +syst\`eme {\sc LISP} et concepteur du syst\`eme {\sc CIMS PL/I}, +d\'evelopp\'e quand il \'etait professeur \`a l'universit\'e de New York. +Plus r\'ecemment, il a con\c cu {\sc SPLASH}, un langage de programmation +syst\`eme pour des hackers de logiciel. Paul r\'eside \`a Deerfield, +Massachusetts, o\`u il \'ecrit, bidouille, fait de la randonn\'ee, chasse +les champignons sauvages et \'ecoute de la musique classique. + +Kathryn A. Hargreaves a re\c cu son M.S. degree en informatique de +l'universit\'e du Massachusetts, Boston, en ao\^ut 1989. Ses +sp\'ecialit\'es sont la typographie num\'erique et la vision humaine. Elle +a d\'evelopp\'e un ensemble de programmes pour produire une police +num\'erique de haute qualit\'e et librement distribuable pour la Free +Software Foundation et a \'egalement travaill\'e avec Robert~A. Morris en +tant qu'Adjunct Research Associate. En 1986 elle a accompli le programme de +r\'e-entr\'ee en informatique pour les femmes et les minorit\'es \`a +l'universit\'e de Californie \`a Berkeley, o\`u elle a \'egalement +travaill\'e dans le \TeX\ research group sous Michael Harrison. Elle a +\'etudi\'e la conception de police de caract\`ere avec Don Adleta, Andr\'e +G\"urtler, et Christian Mengelt \`a la Rhode Island School of Design. +Typographe, elle a travaill\'e chez Headliners\slash Identicolor, \`a San +Francisco, et chez Futur Studio, Los Angeles, deux soci\'et\'es +typographiques majeures. Elle a obtenu \'egalement un M.F.A. en +Peinture\slash Sculpture\slash Art Graphiques de l'universit\'e de +Californie \`a Los Angeles. Kathy peint des aquarelles, con\c coit des +polices, joue du piano et lit la critique de film f\'eministe. + +Comme Kathy, Karl Berry a re\c cu son M.S. degree en informatique \`a +l'universit\'e du Massachusetts, Boston, en ao\^ut 1989. Il a \'egalement +travaill\'e pour la Free Software Foundation, a fait de la recherche avec +Morris et a \'etudi\'e avec Adleta, G\"urtler, et Mengelt. Il avait +commenc\'e \`a travailler avec \TeX\ depuis 1983 et a install\'e et a +maintenu le syst\`eme \TeX\ dans un certain nombre d'universit\'es. Il +\'etait le mainteneur du syst\`eme Web2c d\'evelopp\'e par Tim Morgan +pendant un certain nombre d'ann\'ees, parmi d'autres projets \TeX. Il est +devenu pr\'esident du \TeX\ Users Group en 2003. +\vfill\eject +\noheadlinetrue\pagebreak + + +% Colophon. +% +\backsinkage +\leftline{\sectionfonts Colophon} +\vskip\belowsectionskip + +%\noindent +Ce livre a \'et\'e compos\'e en utilisant \TeX\ (naturellement), +d\'evelopp\'e par Donald~E. Knuth. Le texte principal est compos\'e en +Computer Modern, \'egalement con\c cu par Knuth. Les en-t\^etes du livre +original ont \'et\'e compos\'ees en Zapf Humanist (la version Bitstream +d'Optima), con\c cu par Hermann Zapf. + +Le papier \'etait du Amherst Ultra Matte 45 livres. L'impression et la +reliure ont \'et\'e faits par Arcadia Graphics-Halliday. La sortie de +photocomposeuse a \'et\'e produite \`a type 2000,~Inc., \`a Mill Valley, +Californie. Les preuves ont \'et\'e faites sur une Apple LaserWriter plus +et sur une Hewlett Packard LaserJet~II\null. + +Les r\'ef\'erences crois\'ees, l'indexage et la table des mati\`eres ont +\'et\'e faits m\'ecaniquement, en utilisant les macros de la +\chapterref{eplain} ainsi que des macros additionnelles \'ecrites +sp\'ecialement pour ce livre. La production de l'index a \'et\'e +r\'ealis\'ee par un programme additionnel \'ecrit en Icon. + + +\noheadlinetrue +\iftrue + \pagebreak + \printconceptpage +\fi + +\byebye + diff --git a/info/impatient/fr/fbook.tex b/info/impatient/fr/fbook.tex index f1dc3ca071..0a1d2ac882 100644 --- a/info/impatient/fr/fbook.tex +++ b/info/impatient/fr/fbook.tex @@ -1,50 +1,50 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-% Top-level control.
-%
-% commentez la ligne suivante (\language=1) pour une compilation avec tex ou pdftex
-% elle n'est utilisée qu'avec bplain (ou pdfbplain)
-\language=1
-\input fmacros
-% Here we override part of the configuration
-% since we're doing a full run.
-\rewritetocfiletrue % always do a table of contents
-\xrefwarningtrue
-\completebooktrue
-\edgetabsfalse
-\input ffrontm
-% (not for web) \edgetabstrue
-\settabdepth{\bigtab}
-\input fusebook
-\input fusingtex
-\input fexamples
-\nextedgetab
-\input fconcept
-\nextedgetab
-\settabdepth{\smalltab}
-\input fparas
-\nextedgetab
-\input fpages
-\nextedgetab
-\input fmodes
-\nextedgetab
-\input fmath
-\nextedgetab
-\input fgenops
-\nextedgetab
-\settabdepth{\bigtab}
-\input ftips
-\input ferrors
-\input fusermacs
-\nextedgetab
-\input fcapsule
-\nextedgetab
-\backmatter
-\input fdl
-\input findex
-\edgetabsfalse
-\input fbackm
-
-\bye
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. +% Top-level control. +% +% commentez la ligne suivante (\language=1) pour une compilation avec tex ou pdftex +% elle n'est utilisée qu'avec bplain (ou pdfbplain) +\language=1 +\input fmacros +% Here we override part of the configuration +% since we're doing a full run. +\rewritetocfiletrue % always do a table of contents +\xrefwarningtrue +\completebooktrue +\edgetabsfalse +\input ffrontm +% (not for web) \edgetabstrue +\settabdepth{\bigtab} +\input fusebook +\input fusingtex +\input fexamples +\nextedgetab +\input fconcept +\nextedgetab +\settabdepth{\smalltab} +\input fparas +\nextedgetab +\input fpages +\nextedgetab +\input fmodes +\nextedgetab +\input fmath +\nextedgetab +\input fgenops +\nextedgetab +\settabdepth{\bigtab} +\input ftips +\input ferrors +\input fusermacs +\nextedgetab +\input fcapsule +\nextedgetab +\backmatter +\input fdl +\input findex +\edgetabsfalse +\input fbackm + +\bye diff --git a/info/impatient/fr/fcapsule.tex b/info/impatient/fr/fcapsule.tex index 0fdceeca20..dcea6a3924 100644 --- a/info/impatient/fr/fcapsule.tex +++ b/info/impatient/fr/fcapsule.tex @@ -1,1123 +1,1123 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-\chapter{Sommaire \linebreak des commandes}
-
-\chapterdef{capsule}
-
-Cette section contient des descriptions sur une ligne des commandes primitives de\TeX\
-et des commandes \TeX\ d\'efinies dans \plainTeX. Cela inclut les s\'equences de
-contr\^ole et les caract\`eres
-sp\'eciaux.
-Nous avons omis les commandes qui ne sont qu'\`a l'usage interne de la d\'efinition
-\plainTeX\ (\knuth{annexe~B}{}).
-Notez que les caract\`eres ordinaires
-comme `|a|' ou `|6|' sont aussi des commandes, et m\^eme les plus communes
-\seeconcept{caract\`ere}.
-
-Pour rendre la desciption la plus br\`eve possible, nous avons adopt\'e
-certaines conventions~:
-
-\ulist
-
-\li Un ast\'erisque devant une commande indique que la commande est une primitive,
-^^{primitive//commande} c'est-\`a-dire, construite dans le programme \TeX\
-\seeconcept{primitive}.
-
-\li Les mots ``musique'', ``ponctuation'', ``fonction'',
-``symbole'', ``relation'', ``d\'elimiteur'' ou ``op\'erateur'' dans une description de
-commande impliquent que la commande n'est l\'egale qu'en mode math\'ema\-tique.
-
-\li Le verbe ``afficher'' s'applique \`a l'information que \TeX\ envoit au ^{\logfile},
-sauf indication contraire. Si |\tracingonline| est positif, \TeX\ envoit \'egalement
-cette information sur le terminal. Nous utilisons le mot ``affichage'' pour nous
-r\'ef\'erer aux affichages math\'ema\-tiques (voir \xref{math\'ematique affich\'ee}),
-c'est-\`a-dire, \`a ce qui se trouve entre des |$$|.
-
-\li La phrase ``produit $x$'' indique que la commande composera
-$x$ et mettra le r\'esultat dans une bo\^\i te.
-Nous omettons parfois ``produit'' quand l'omission ne peut pas porter \`a
-confusion. Par exemple, nous d\'ecrivons |\alpha| comme ``lettre Grecque
-math\'ematique $\alpha$'' et non ``produit la lettre grecque math\'ematique $\alpha$''.
-\margin{Remove explanations of ``space'' and ``glue''}
-
-\endulist
-
-\begincapsum
-
-{\catcode `@ = \letter
-\caplineout {\\\visiblespace} {espace inter mot}*{\@space}}%
- {\catcode `\ =\other\ctsidxref{ }}
-\capcs ! {espace fin n\'egatif en math\'ematique}{}{\@shriek}
-\capcs " {accent tr\'ema en texte, comme dans \"o}{}{\@quote}
-\capactwo # {introduit un param\`etre de macro ou indique o\`u le texte
-source va dans un pr\'eambule d'alignement}{}{@msharp:@asharp}
-\capcs # {produit le caract\`ere \# de la police courante}{}{\@pound}
-\capac $ {commence ou finit une formule math\'ematique}{}{mathform}
-\capcs $ {produit le caract\`ere \$ de la police courante}{}{\@bucks}
-\capac % {commence un commentaire}*{commentaires}
-\capcs % {produit le caract\`ere \% de la police courante}{}{\@percent}
-\capac & {s\'epare les mod\`eles et les entr\'ees dans un alignement}{}{@and}
-\capcs & {produit le caract\`ere \& de la police courante}{}{\@and}
-\capac ' {symbole prime en math\'ematique, comme dans $p'$}{}{@prime}
-\capcs ' {accent aigu en texte, comme dans \'e}{}{\@prime}
-\capcs * {symbole multiplication qui autorise une coupure de ligne}{}{\@star}
-\capcs + {d\'ebut d'une ligne tabul\'ee}{}{\@plus}
-\capcs , {espace fin en math\'ematique}{}{\@comma}
-\capcs - {sp\'ecifie un point de c\'esure l\'egal}*{\@minus}
-\capcs . {accent point en texte, comme dans \.n}{}{\@dot}
-\capcs / {correction italique pour le caract\`ere pr\'ec\'edent}*{\@slash}
-\capcs ; {espace \'epaissi en math\'ematique}{}{\@semi}
-\capcs = {accent macron en texte, comme dans \=r}{}{\@equal}
-\capac \ {d\'ebute une s\'equence de contr\^ole}*{@backslash}
-\capcs > {espace moyen en math\'ematique}{}{\@greater}
-\capac ^ {produit une sous-formule sp\'ecifi\'ee en exposant}{}{@hat}
-\capcs ^ {accent circonflexe en texte, comme dans \^o}{}{\@hat}
-{\catcode `@ = \letter
-\caplineout {\twocarets L}{\'equivalent \`a la primitive |\\par|}
- {}{\@par}\ttidxref{^^L}
-\caplineout {\twocarets M}{une fin de ligne}*{@newline}\ttidxref{^^M}
-}%
-\capac _ {produit une sous-formule sp\'ecifi\'ee en indice}{}{@underscore}
-\capcs _ {soulignement~: \_}{}{\@underscore}
-%x \capac ` {in a \<number> context, \ascii\ code for character that follows}*{@lquote}
-\capcs ` {accent grave en texte, comme dans \`e}{}{\@lquote}
-\capac { {d\'ebute un groupe}{}{@lbrace}
-\capcs { {d\'elimiteur accolade ouvrante en math\'ematique~ $\{$}{}{\@lbrace}
-\capcs | {lignes parall\`eles en math\'ematique~: $\Vert$}{}{\@bar}
-\capac } {fin d'un groupe}{}{@rbrace}
-\capcs } {d\'elimiteur accolade fermante en math\'ematique~: $\}$}{}{\@rbrace}
-\capac ~ {espace inter-mot sur lequel une ligne ne sera pas coup\'ee}{}{@not}
-\capcs ~ {accent tilde en texte, comme dans \~a}{}{\@not}
-\capcs aa {lettre scandinave~: \aa}{}{}
-\capcs AA {lettre scandinave~: \AA}{}{}
-\capcs above {produit une fraction avec une barre d'\'epaisseur sp\'ecifi\'ee}*{}
-\capcs abovedisplayshortskip {ressort que \TeX\ ins\'ere avant un affichage quand la
- ligne pr\'ec\'edente d\'epasse l'indentation d'affichage, par
- d\'efaut 0\pt\ plus 3\pt}*{}
-\capcs abovedisplayskip {ressort que \TeX\ ins\'ere avant un affichage quand la
- ligne pr\'ec\'edente ne d\'epasse pas l'indentation d'affichage, par default 12\pt\
- plus 3\pt\ minus 9\pt}*{}
-\capcs abovewithdelims {produit une fraction avec une barre d'\'epaisseur sp\'ecifi\'ee
- et entour\'ee des d\'elimiteurs sp\'ecifi\'es}*{}
-\capcs accent {met l'accent sp\'ecifi\'e sur le caract\`ere suivant}*{}
-\capcs active {code de cat\'egorie pour des caract\`eres actifs, c'est-\`a-dire, le nombre $13$}{}{}
-\capcs acute {accent aigu en math\'ematique, comme dans $\acute x$}{}{}
-\capcs adjdemerits {d\'em\'erites additionnels pour une coupure de ligne qui seront mises dans
- des lignes adjacentes avec un espacement de mot incompatible, par d\'efaut~10000}*{}
-\capcs advance {ajoute un nombre \`a un registre |\\count|}*{}
-\capcs advancepageno {si |\\pageno| est positif, ajoute un~;
- s'il est n\'egatif, soustrait un}{}{}
-\capcs ae {ligature \ae}{}{}
-\capcs AE {ligature \AE}{}{}
-\capcs afterassignment {attend, pour d\'evelopper le token suivant, que
- l'assignement d'apr\`es soit effectu\'e}*{}
-\capcs aftergroup {attend, pour d\'evelopper le token suivant, la fin
- du groupe courant}*{}
-\capcs aleph {lettre h\'ebra\^\i que seule en math\'ematique~: $\aleph$}{}{}
-\capcstwo allowbreak {fait |\\penalty0|, c'est-\`a-dire, autorise une coupure de ligne ou
- de page l\`a o\`u elle ne devrait pas \^etre}{}{hallowbreak:vallowbreak}
-\capcs alpha {lettre math\'ematique grecque $\alpha$}{}{}
-\capcs amalg {op\'erateur d'amalgamation~: $\amalg$}{}{}
-\capcs angle {symbole d'angle~: $\angle$}{}{}
-\capcs approx {relation d'approximation~: $\approx$}{}{}
-\capcs arccos {fonction arc cosinus~: $\arccos$}{}{}
-\capcs arcsin {fonction arc sinus~: $\arcsin$}{}{}
-\capcs arctan {fonction arc tangente~: $\arctan$}{}{}
-\capcs arg {fonction argument (phase)~: $\arg$}{}{}
-\capcs arrowvert {partie verticale d'une double fl\`eche extensible}{}{}
-\capcs Arrowvert {partie verticale d'une fl\`eche simple extensible}{}{}
-\capcs ast {op\'erateur ast\'erisque~: $\ast$}{}{}
-\capcs asymp {relation asymptote~: $\asymp$}{}{}
-\capcs atop {produit une fraction sans barre de fraction}*{}
-\capcs atopwithdelims {produit une fraction sans barre de fraction et
- entour\'ee des d\'elimiteurs sp\'ecifi\'es}*{}
-\capcs b {accent barre du dessous en math\'ematique, comme dans $\b x$}{}{}
-\capcs backslash {symbole antislash~: $\backslash$}{}{}
-\capcs badness {la m\'ediocrit\'e du ressort mis dans la derni\`ere bo\^\i te
- fabriqu\'ee}*{}
-\capcs bar {accent barre en math\'ematique, comme dans $\bar x$}{}{}
-\capcs baselineskip {ressort pour la distance verticale normale entre une ligne de base
- et la suivante, par d\'efaut 12\pt}*{}
-\capcs batchmode {ne s'arr\^ete pas sur les erreurs et n'\'ecrit rien sur le terminal}*{}
-\capcs begingroup {d\'ebute un groupe termin\'e par |\\endgroup|}*{}
-\capcs beginsection {d\'ebute une subdivision majeure d'un document}{}%
- {\@beginsection}
-\capcs belowdisplayshortskip {ressort que \TeX\ ins\`ere apr\`es un affichage quand la
- ligne pr\'ec\'edente d\'epasse l'indentation de l'affichage,
- par d\'efaut 7\pt\ plus 0.3\pt\ minus 4\pt}*{}
-\capcs belowdisplayskip {ressort que \TeX\ ins\`ere apr\`es un affichage quand la
- ligne pr\'ec\'edente ne d\'epasse pas l'indentation de l'affichage,
- par d\'efaut 12\pt\ plus 3\pt\ minus 9\pt}*{}
-\capcs beta {lettre grecque math\'ematique $\beta$}{}{}
-\capcs bf {utilise le gras, c'est-\`a-dire, fait |\\tenbf\\fam=\\bffam|}{}{}
-\capcs bffam {famille grasse en math\'ematique}{}{}
-\capcs bgroup {caract\`ere de d\'ebut de groupe implicite}{}{}
-\capcs big {rend le d\'elimiteur sp\'ecifi\'e plus grand qu'\`a l'ordinaire, mais
- encore assez petit pour du texte}{}{}
-\capcs Big {rend le d\'elimiteur sp\'ecifi\'e haut de 11.5\pt}{}{}
-\capcs bigbreak {indique une coupure de page d\'esirable avec |\\penalty-200|
- et produit un ressort |\\bigskipamount|}{}{}
-\capcs bigcap {grand op\'erateur cap (non, cela ne produit pas une grande
- lettre capitale~!)~: $\bigcap$}{}{}
-\capcs bigcirc {grand op\'erateur cercle~: $\bigcirc$}{}{}
-\capcs bigcup {grand op\'erateur coupe~: $\bigcup$}{}{}
-\capcs bigg {rend le d\'elimiteur sp\'ecifi\'e haut de 14.5\pt}{}{}
-\capcs Bigg {rend le d\'elimiteur sp\'ecifi\'e haut de 17.5\pt}{}{}
-\capcs biggl {taille comme |\\bigg|, mais espac\'e comme une ouverture}{}{}
-\capcs Biggl {taille comme |\\Bigg|, mais espac\'e comme une ouverture}{}{}
-\capcs biggm {taille comme |\\bigg|, mais espac\'e comme une relation}{}{}
-\capcs Biggm {taille comme |\\Bigg|, mais espac\'e comme une relation}{}{}
-\capcs biggr {taille comme |\\bigg|, mais espac\'e comme une fermeture}{}{}
-\capcs Biggr {taille comme |\\Bigg|, mais espac\'e comme une fermeture}{}{}
-\capcs bigl {taille comme |\\big|, mais espac\'e comme une ouverture}{}{}
-\capcs Bigl {taille comme |\\Big|, mais espac\'e comme une ouverture}{}{}
-\capcs bigm {taille comme |\\big|, mais espac\'e comme une relation}{}{}
-\capcs Bigm {taille comme |\\Big|, mais espac\'e comme une relation}{}{}
-\capcs bigodot {grand op\'erateur cercle point\'e~: $\bigodot$}{}{}
-\capcs bigoplus {grand op\'erateur cercle plus~: $\bigoplus$}{}{}
-\capcs bigotimes {grand op\'erateur cercle multipli\'e~: $\bigotimes$}{}{}
-\capcs bigr {taille comme |\\big|, mais espac\'e comme une fermeture}{}{}
-\capcs Bigr {taille comme |\\Big|, mais espac\'e comme une fermeture}{}{}
-\capcs bigskip {produit un ressort |\\bigskipamount|}{}{}
-\capcs bigskipamount {ressort pour une grand saut vertical, par d\'efaut 12\pt\
- plus 4\pt\ minus 4\pt}{}{}
-\capcs bigsqcup {grand op\'erateur en coupe carr\'e~: $\bigsqcup$}{}{}
-\capcs bigtriangledown {op\'erateur en triangle pointant vers le bas~:
- $\bigtriangledown$}{}{}
-\capcs bigtriangleup {op\'erateur en triangle pointant vers le haut~: $\bigtriangleup$}{}{}
-\capcs biguplus {grand op\'erateur en coupe avec plus~: $\biguplus$}{}{}
-\capcs bigvee {grand op\'erateur logique ``ou''~: $\bigvee$}{}{}
-\capcs bigwedge {grand op\'erateur logique ``et''~: $\bigwedge$}{}{}
-\capcs binoppenalty {p\'enalit\'e suppl\'ementaire pour une coupure apr\`es un op\'erateur
- math\'ematique binaire, par d\'efaut~700}*{}
-\capcs bmod {op\'erateur modulus, comme dans $n \bmod 2$}{}{}
-\capcs bordermatrix {produit une matrice avec des labels de rang\'ees et de colonnes}{}{}
-\capcs bot {symbole du bas d'un treillis ~: $\bot$}{}{}
-\capcs botmark {le dernier \'el\'ement marqu\'e de la page qui vient d'\^etre mis en bo\^\i te}*{}
-\capcs bowtie {relation en n\oe ud papillon~: $\bowtie$}{}{}
-\capcs box {affiche la bo\^\i te d'un registre de bo\^\i te sp\'ecifi\'e
- dans la liste courante, et vide le registre}*{}
-\capcs boxmaxdepth {profondeur maximale des vbox, par d\'efaut |\\maxdimen|}*{}
-\capcs brace {|\char36 n\\brace k\char36| produit
- une notation entre accolade~: $n \brace k$}{}{}
-\capcs bracevert {morceau vertival d'une grande accolade extensible }{}{}
-\capcs brack {|\char36 n\\brack k\char36| produit une notation entre crochets~: $n \brack k$}{}{}
-\capcstwo break {fait |\\penalty-10000|, c'est-\`a-dire., force une coupure de ligne
- ou de page}{}{hbreak:vbreak}
-\capcs breve {accent bref en math\'ematique, comme dans $\breve x$}{}{}
-\capcs brokenpenalty {p\'enalit\'e pour une coupure de ligne sur un \'el\'ement discr\'etionnaire, par
- d\'efaut~100}*{}
-\capcs buildrel {produit une formule sp\'ecifi\'ee sur la relation sp\'ecifi\'e}{}{}
-\capcs bullet {operateur bullet ~: $\bullet$}{}{}
-\capcs bye {|\\vfill| la derni\`ere page avec de l'espace blanc, la |\\supereject|,
- et |\\end| l'ex\'ecution}{}{\@bye}
-\capcs c {accent c\'edille en texte, comme dans \c c}{}{}
-\capcs cal {utilise une police calligraphique pour des lettres capitales en math\'ematique,
- comme dans $\cal XYZ$}{}{}
-\capcs cap {op\'erateur cap~: $\cap$}{}{}
-\capcs cases {produit des cas en math\'ematique, comme dans $\bigl\{{\cdots\atop\cdots}$}{}{}
-\capcs catcode {le code de cat\'egorie d'un caract\`ere sp\'ecifi\'e}*{}
-\capcs cdot {op\'erateur point centr\'e~: $\cdot$}{}{}
-\capcs cdotp {ponctuation point centr\'e~: $\cdotp$}{}{}
-\capcs cdots {points centr\'es en math\'ematique~: $\cdots$}{}{}
-\capcs centerline {produit une ligne avec son texte centr\'e}{}{}
-\capcs char {produit le caract\`ere de la police courante avec le code
- sp\'ecifi\'e}*{}
-\capcs chardef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'ee comme \'etant un code de
- caract\`ere, un nombre entre 0 et $255$}*{}
-\capcs check {accent tch\`eque en math\'ematique, comme dans $\check x$}{}{}
-\capcs chi {lettre grecque math\'ematique $\chi$}{}{}
-\capcs choose {|\char36 n\\choose k\char36| produit une notation combinatoire~:
- $n \choose k$}{}{}
-\capcs circ {op\'eration cercle~: $\circ$}{}{}
-\capcs cleaders {produit une r\`eglure avec la moiti\'e de l'espace restant avant
- la premi\`ere bo\^\i te et l'autre moiti\'e apr\`es la derni\`ere}*{}
-\capcs cleartabs {efface toutes les tabulations pour des alignements tabul\'es}{}{}
-\capcs closein {ferme un flot d'entr\'ee sp\'ecifi\'e}*{}
-\capcs closeout {ferme un flot de sortie sp\'ecifi\'e}*{}
-\capcs clubpenalty {p\'enalit\'e additionnelle pour une ligne seule restante avant
- une coupure de page, par d\'efaut~150}*{}
-\capcs clubsuit {symbole tr\`efle~: $\clubsuit$}{}{}
-\capcs colon {symbole : en math\'ematique~: $:$}{}{}
-\capcs cong {relation congruence~: $\cong$}{}{}
-\capcs coprod {op\'erateur co-produit~: $\coprod$}{}{}
-\capcs copy {comme |\\box|, mais n'efface pas le registre}*{}
-\capcs copyright {marque de copyright~: \copyright}{}{}
-\capcs cos {fonction cosinus~: $\cos$}{}{}
-\capcs cosh {fonction cosinus hyperbolique~: $\cosh$}{}{}
-\capcs cot {fonction cotangente~: $\cot$}{}{}
-\capcs coth {fonction cotangente hyperbolique~: $\coth$}{}{}
-\capcs count {le registre entier sp\'ecifi\'e}*{}
-\capcs countdef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'ee comme \'etant un nombre
- correspondant \`a un registre |\\count|}*{}
-\capcs cr {termine une rang\'ee (ou une colonne) dans un alignement}*{}
-\capcs crcr {ne fait rien si la derni\`ere commande \'etait |\\cr| ou |\\noalign|~;
- autrement, \'equivalent \`a |\\cr|}*{}
-\capcs csc {fonction co-s\'ecante~: $\csc$}{}{}
-\capcs csname {d\'ebute un nom de s\'equence de contr\^ole devant \^etre termin\'e par |\\endcsname|}*{}
-\capcs cup {op\'erateur cup~: $\cup$}{}{}
-\capcs d {accent point en dessous en texte, comme dans \d r}{}{}
-\capcs dag {symbole dague en texte~: \dag}{}{}
-\capcs dagger {op\'erateur dague en math\'ematique~: $\dagger$}{}{}
-\capcs dashv {relation touren \`a droite~: $\dashv$}{}{}
-\capcs day {jour courant du mois, comme un nombre}*{}
-\capcs ddag {symbole double dague en texte~: \ddag}{}{}
-\capcs ddagger {op\'erateur double dague en math\'ematique~: $\ddagger$}{}{}
-\capcs ddot {accent deux points en math\'ematique~: $\ddot x$}{}{}
-\capcs ddots {points en diagonale en math\'ematique~: \smash{$\ddots$}}{}{}
-\capcs deadcycles {nombre d'initialisations d'|\\output| depuis le dernier
- |\\shipout|}*{}
-\capcs def {d\'efini une s\'equence de contr\^ole comme \'etant une macro}*{}
-\capcs defaulthyphenchar {code du caract\`ere de c\'esure par d\'efaut}*{}
-\capcs defaultskewchar {code caract\`ere accent par d\'efaut }*{}
-\capcs deg {fonction degr\'e~: $\deg$}{}{}
-\capcs delcode {le code d\'elimiteur d'un caract\`ere sp\'ecifi\'e}*{}
-\capcs delimiter {produit un d\'elimiteur sp\'ecifi\'e}*{}
-\capcs delimiterfactor {1000 fois le ratio de la taille minimum d'un
- d\'elimiteur par rapport \`a la taille qui recouvrirait compl\`etement la formule, par
- d\'efaut~901}*{}
-\capcs delimitershortfall {diff\'erence minimum entre une hauteur de formule et
- une hauteur de d\'elimiteur, par d\'efaut 5\pt}*{}
-\capcs delta {lettre grecque math\'ematique $\delta$}{}{}
-\capcs Delta {lettre grecque math\'ematique $\Delta$}{}{}
-\capcs det {fonction d\'eterminant~: $\det$}{}{}
-\capcs diamond {op\'erateur diamant~: $\diamond$}{}{}
-\capcs diamondsuit {symbole carr\'e~: $\diamondsuit$}{}{}
-\capcs dim {fonction dimension~: $\dim$}{}{}
-\capcs dimen {le registre de dimension sp\'ecifi\'e}*{}
-\capcs dimendef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'ee comme \'etant un nombre
- correspondant \`a un registre |\\dimen|}*{}
-\capcs discretionary {sp\'ecifie trois textes, les deux premiers pour avant et
- apr\`es une coupure de ligne, le troisi\`eme quand il n'y a pas de coupure de ligne}*{}
-\capcs displayindent {\TeX\ met ceci pour l'indentation d'un affichage}*{}
-\capcs displaylimits {place des limites sur et sous des op\'erateurs seulement en style
- d'affichage}*{}
-\capcs displaylines {produit un affichage multi-lignes sp\'ecifi\'e avec chaque
- ligne centr\'ee}{}{}
-\capcs displaystyle {utilise la taille displaystyle dans une formule}*{}
-\capcs displaywidowpenalty {p\'enalit\'e pour une ligne seule d\'ebutant une page
- juste avant un affichage, par d\'efaut~50}*{}
-\capcs displaywidth {\TeX\ met ceci pour la largeur d'un affichage}*{}
-\capcs div {op\'erateur division~: $\div$}{}{}
-\capcs divide {divise un registre |\\count| sp\'ecifi\'e par un entier sp\'ecifi\'e}*{}
-\capcs dot {accent point en math\'ematique, comme dans $\dot x$}{}{}
-\capcs doteq {relation d'\'egalit\'e point\'ee~: $\doteq$}{}{}
-\capcs dotfill {remplit un espace horizontal d\'elimit\'e avec des points}{}{}
-\capcs dots {ellipse pour des suites~: $x_1$, \dots, $x_n$}{}{}
-\capcs doublehyphendemerits {d\'em\'erites pour deux lignes cons\'ecutives se terminant
- par de c\'esures, par d\'efaut~10000}*{}
-\capcs downarrow {relation~: $\downarrow$}{}{}
-\capcs Downarrow {relation~: $\Downarrow$}{}{}
-\capcs downbracefill {remplit la hbox inclue avec une accolade vers le bas ~:
- \hbox to 3.5em{\downbracefill}}{}{}
-\capcs dp {profondeur de la bo\^\i te d'un registre de bo\^\i te sp\'ecifi\'e}*{}
-\capcs dump {termine l'ex\'ecution et produit un fichier de format}*{}
-\capcs edef {d\'efinit une s\'equence de contr\^ole comme \'etant une macro,
- d\'eveloppant imm\'ediatement le texte de remplacement}*{}
-\capcs egroup {caract\`ere de fin de groupe implicite}{}{}
-\capcs eject {termine le paragraphe courant et force une coupure de page,
- en \'etirant la page courante}{}{}
-\capcs ell {lettre ``l'' manuscrite en math\'ematique~: $\ell$}{}{}
-\capcs else {cas faux ou par d\'efaut pour une condition}*{\@else}
-\capcs emergencystretch {\'etirement suppl\'ementaire ajout\'e \`a toute ligne si
- |\\tol\-er\-ance| n'est pas satisfait}*{}
-\capcs empty {macro dont le d\'eveloppement ne fait rien}{}{}
-\capcs emptyset {symbole d'ensemble vide~: $\emptyset$}{}{}
-\capcs end {|\\output| la derni\`ere page et termine l'ex\'ecution}*{}
-\capcs endcsname {termine un nom de s\'equence de contr\^ole commenc\'e par
- |\\csname|}*{}
-\capcs endgraf {\'equivalent \`a la primitive |\\par|}{}{}
-\capcs endgroup {termine un groupe d\'ebut\'e par |\\begingroup|}*{}
-\capcs endinput {termine l'entr\'ee du fichier courant}*{}
-\capcs endinsert {fin d'insertion}{}{}
-\capcs endline {\'equivalent \`a la primitive |\\cr|}{}{}
-\capcs endlinechar {caract\`ere que \TeX\ ins\`ere \`a la fin de chaque ligne
- entr\'ee, par d\'efaut |\twocarets M|}*{}
-\capcs enskip {ressort horizontal de largeur \frac1/2\em}{}{}
-\capcs enspace {cr\'enage de \frac1/2\em}{}{}
-\capcs epsilon {lettre grecque math\'ematique $\epsilon$}{}{}
-\capcs eqalign {produit un affichage multi-lignes sp\'ecifi\'e dont les parties indiqu\'ees
- sont align\'ees verticalement}{}{}
-\capcs eqalignno {produit un affichage multi-lignes sp\'ecifi\'e
- avec des num\'eros d'\'equation dont les parties indiqu\'ees sont align\'ees verticalement}{}{}
-\capcs eqno {met un num\'ero d'\'equation sp\'ecifi\'e \`a droite d'un affichage}*{}
-\capcs equiv {relation d'\'equivalence~: $\equiv$}{}{}
-\capcs errhelp {liste de token dont le d\'eveloppement \TeX\ s'affiche quand l'utilisateur
- demande de l'aide en r\'eponse \`a un |\\errmessage|}*{}
-\capcs errmessage {donne un message d'erreur sp\'ecifi\'e}*{}
-\capcs errorcontextlines {le nombre de lignes de contexte que \TeX\
- affiche pour une erreur, par d\'efaut~5}*{}
-\capcs errorstopmode {stoppe pour une interaction sur des messages d'erreur}*{}
-\capcs escapechar {caract\`ere avec lequel \TeX\ pr\'ec\`ede les noms de s\'equence de contr\^ole
- qui sont affich\'es}*{}
-\capcs eta {lettre grecque math\'ematique $\eta$}{}{}
-\capcs everycr {liste de token que \TeX\ d\'eveloppe apr\`es un |\\cr| ou un |\\crcr|
- non suivi de |\\cr| ou de |\\noalign|}*{}
-\capcs everydisplay {liste de token que \TeX\ d\'eveloppe quand un affichage math\'ematique d\'ebute}*{}
-\capcs everyhbox {liste de token que \TeX\ d\'eveloppe quand une hbox d\'ebute}*{}
-\capcs everyjob {liste de token que \TeX\ d\'eveloppe quand une ex\'ecution d\'ebute}*{}
-\capcs everymath {liste de token que \TeX\ d\'eveloppe quand un texte en mode math\'ematique
- d\'ebute}*{}
-\capcs everypar {liste de token que \TeX\ d\'eveloppe quand un paragraphe d\'ebute}*{}
-\capcs everyvbox {liste de token que \TeX\ d\'eveloppe quand une vbox d\'ebute}*{}
-\capcs exhyphenpenalty {p\'enalit\'e suppl\'ementaire pour une coupure de ligne apr\`es
- une c\'esure explicite, par d\'efaut~50}*{}
-\capcs exists {symbole ``il existe''~: $\exists$}{}{}
-\capcs exp {fonction exponentielle~: $\exp$}{}{}
-\capcs expandafter {ne d\'eveloppe le token suivant qu'apr\`es d\'eveloppement du token
- le suivant}*{}
-\capcs fam {famille de police que \TeX\ utilise pour des caract\`eres de classe 7
- (c'est-\`a-dire, des variables) en mathi\'ematiques}*{}
-\capcs fi {termine une condition}*{\@fi}
-\capcs filbreak {force une coupure de page \`a moins que le texte contenant un autre |\\filbreak|
- convienne aussi sur la page}{}{}
-\capcs finalhyphendemerits {p\'enalit\'e pour l'avant-derni\`ere ligne coup\'ee sur une
- c\'esure, par d\'efaut~5000}*{}
-\capcs firstmark {premier \'el\'ement marqu\'e sur la page qui vient d'\^etre mise en bo\^\i te}*{}
-\capcs fivebf {utilise une police grasse en $5$ points, |cmbx5|}{}{}
-\capcs fivei {utilise une police math\'ematique italique en $5$ points, |cmmi5|}{}{}
-\capcs fiverm {utilise une police romaine en $5$ points, |cmr5|}{}{}
-\capcs fivesy {utilise une police de symbole en $5$ points, |cmsy5|}{}{}
-\capcs flat {symbole b\'emol en musique~: $\flat$}{}{}
-\capcs floatingpenalty {p\'enalit\'e pour des insertions qui sont s\'epar\'ees sur des
- pages, par d\'efaut~0}*{}
-\capcs fmtname {nom du format courant}{}{}
-\capcs fmtversion {num\'ero de version du format courant}{}{}
-\capcs folio {produit |\\pageno| comme des caract\`eres~;
- en chiffres romains s'il est n\'egatif}{}{}
-\capcs font {d\'efinit une s\'equence de contr\^ole sp\'ecifique pour s\'electionner une police}*{}
-\capcs fontdimen {un param\`etre sp\'ecifi\'e d'une police sp\'ecifi\'ee}*{}
-\capcs fontname {produit le nom de fichier d'une police sp\'ecifi\'ee en caract\`eres}*{}
-\capcs footline {liste de token qui produit une ligne en bas de chaque page}{}{}
-\capcs footnote {produit une note de pied de page sp\'ecifi\'ee
- avec une marque de r\'ef\'erence sp\'ecifi\'ee}{}{}
-\capcs forall {symbole ``pour tout''~: $\forall$}{}{}
-\capcs frenchspacing {rend l'espacement inter-mot ind\'ependant de la ponctuation}{}{}
-\capcs frown {relation frown~: $\frown$}{}{}
-\capcs futurelet {assigne le troisi\`eme token suivant \`a une s\'equence de contr\^ole
- sp\'ecifi\'ee, puis d\'eveloppe le deuxi\`eme token}*{}
-\capcs gamma {lettre grecque math\'ematique $\gamma$}{}{}
-\capcs Gamma {lettre grecque math\'ematique $\Gamma$}{}{}
-\capcs gcd {fonction plus grand d\'enominateur commun~: $\gcd$}{}{}
-\capcs gdef {\'equivalent \`a |\\global\\def|, c'est-\`a-dire, d\'efinit une macro globale}*{}
-\capcs ge {relation plus grand ou \'egal~: $\ge$}{}{}
-\capcs geq {\'equivalent \`a |\\ge|}{}{}
-\capcs gets {relation ''donne''~: $\gets$}{}{}
-\capcs gg {relation beaucoup plus grand que~: $\gg$}{}{}
-\capcs global {rend la d\'efinition suivante globale}*{}
-\capcs globaldefs {remplace le pr\'efixe|\\global| dans les assignements}*{}
-\capcs goodbreak {indique une coupure de page souhaitable avec |\\penalty-500|}{}{}
-\capcs grave {accent grave en math\'ematique, comme dans $\grave x$}{}{}
-\capcs H {accent tr\'ema hongrois en texte, comme dans \H o}{}{}
-\capcs halign {aligne du texte en colonnes}*{}
-\capcs hang {indente le paragraphe courant de |\\parindent|}{}{}
-\capcs hangafter {num\'ero de ligne d\'ebutant une indentation hanging}*{}
-\capcs hangindent {espace pour indentation hanging}*{}
-\capcs hat {accent circonflexe en math\'ematique, comme dans $\hat x$}{}{}
-\capcs hbadness {seuil de badness pour reporter une erreur "underfull or overfull
- hboxes", par d\'efaut 1000}*{}
-\capcs hbar {symbole math\'ematique~: $\hbar$}{}{}
-\capcs hbox {produit une hbox sp\'ecifi\'ee}*{}
-\capcs headline {liste de token qui produit la ligne en haut
- de chaque page}{}{}
-\capcs heartsuit {symbole c\oe ur~: $\heartsuit$}{}{}
-\capcs hfil {produit un ressort horizontal infiniment \'etirable}*{}
-\capcs hfill {produit un ressort horizontal encore plus infiniment \'etirable
- que celui produit par |\\hfil|}*{}
-\capcs hfilneg {produit un ressort horizontal n\'egatif infiniment \'etirable}*{}
-\capcs hfuzz {seuil pour reporter overfull hboxes, par d\'efaut
- 0.1\pt}*{}
-\capcs hglue {produit un ressort horizontal qui ne disparait pas sur des
- coupure de ligne}{}{}
-\capcs hidewidth {ignore la largeur d'une entr\'ee d'un alignement, pour qu'il
- l'\'etende au dehors de sa boite dans la direction de |\\hidewidth|}{}{}
-\capcs hoffset {offset horizontal relatif d'un pouce par rapport au bord gauche du papier}*{}
-\capcs holdinginserts {si positif, n'enl\`eve pas d'insertion de la
- page courante}*{}
-\capcs hom {fontion homologie~: $\hom$}{}{}
-\capcs hookleftarrow {relation~: $\hookleftarrow$}{}{}
-\capcs hookrightarrow {relation~: $\hookrightarrow$}{}{}
-\capcs hphantom {produit une formule invisible de hauteur et largeur z\'ero mais
- de largeur naturelle}{}{}
-\capcs hrule {produit un filet horizontal~; l\'egale seulement en mode vertical}*{}
-\capcs hrulefill {rempli un espace d\'elimit\'e d'un filet horizontal}{}{}
-\capcs hsize {longueur de ligne, par d\'efaut 6.5\thinspace in}*{}
-\capcs hskip {produit un ressort horizontal sp\'ecifi\'e}*{}
-\capcs hss {produit un ressort horizontal qui est infiniment \'etirable et
- infiniment r\'etr\'ecissable}*{}
-\capcs ht {la hauteur de la bo\^\i te d'un registre de bo\^\i te sp\'ecifi\'e}*{}
-\capcs hyphenation {ajoute des mots sp\'ecifi\'es au dictionnaire
- d'exception de c\'esure}*{}
-\capcs hyphenchar {le caract\`ere de c\'esure d'une police sp\'ecifi\'ee}*{}
-\capcs hyphenpenalty {p\'enalit\'e suppl\'ementaire pour une coupure de ligne sur une c\'esure, par
- d\'efaut~50}*{}
-\capcs i {lettre `\i' sans point \`a utiliser avec des accents}{}{}
-\capcs ialign {d\'ebute un |\\halign| avec le ressort |\\tabskip| \`a z\'ero et
- |\\everycr| vide}{}{}
-\capcs if {teste si deux tokens sp\'ecifi\'es ont le m\^eme code de caract\`ere}*{\@if}
-\capcs ifcase {d\'eveloppe un cas $n$ pour un valeur $n$ sp\'ecifi\'ee}*{\@ifcase}
-\capcs ifcat {teste si deux tokens sp\'ecifi\'es ont le m\^eme code de
- cat\'egorie}*{\@ifcat}
-\capcs ifdim {teste une relation sp\'ecifi\'ee entre deux dimensions }*{\@ifdim}
-\capcs ifeof {teste la fin d'un fichier sp\'ecifi\'e}*{\@ifeof}
-\capcs iff {relation si et seulement si~: $\iff$}{}{}
-\capcs iffalse {test qui est toujours faux}*{\@iffalse}
-\capcs ifhbox {teste si un registre de bo\^\i te sp\'ecifi\'e contient une hbox}*{\@ifhbox}
-\capcs ifhmode {teste si \TeX\ est dans un mode horizontal}*{\@ifhmode}
-\capcs ifinner {teste si \TeX\ est dans un mode interne}*{\@ifinner}
-\capcs ifmmode {teste si \TeX\ est dans un mode math\'ematique}*{\@ifmmode}
-\capcs ifnum {teste une relation sp\'ecifi\'ee entre deux nombres}*{\@ifnum}
-\capcs ifodd {teste si un nombre sp\'ecifi\'e est impair}*{\@ifodd}
-\capcs iftrue {test qui est toujours vrai}*{\@iftrue}
-\capcs ifvbox {teste si un registre de bo\^\i te sp\'ecifi\'e contient une vbox}*{\@ifvbox}
-\capcs ifvmode {teste si \TeX\ est dans un mode vertical}*{\@ifvmode}
-\capcs ifvoid {teste si un registre de bo\^\i te sp\'ecifi\'e est vide}*{\@ifvoid}
-\capcs ifx {teste si deux tokens sont les m\^emes, ou si
- deux macros ont les m\^emes d\'efinitions finales}*{\@ifx}
-\capcs ignorespaces {ignore tous les tokens espaces suivants}*{}
-\capcs Im {symbole d'une partie imaginaire d'un complexe~: $\Im$}{}{}
-\capcs imath {lettre `$\imath$' sans point \`a utiliser avec des accents math\'ematiques}{}{}
-\capcs immediate {effectue l'op\'eration de fichier sp\'ecifi\'ee sans d\'elai}*{}
-\capcs in {relation ``appartient \`a''~: $\in$}{}{}
-\capcs indent {produit une bo\^\i te vide de largeur |\\parindent| et entre
- en mode horizontal}*{}
-\capcs inf {fonction inf\'erieur~: $\inf$}{}{}
-\capcs infty {symbole infini~: $\infty$}{}{}
-\capcs input {commence \`a lire \`a partir d'un fichier sp\'ecifi\'e}*{}
-\capcs inputlineno {le num\'ero de ligne courante du fichier d'entr\'ee courant}*{}
-\capcs insert {produit une insertion d'une classe sp\'ecifi\'ee}*{}
-\capcs insertpenalties {somme des p\'enalit\'es des insertions}*{}
-\capcs int {symbole int\'egrale~: $\int$}{}{}
-\capcs interlinepenalty {p\'enalit\'e suppl\'ementaire pour une coupure de page
- entre des lignes d'un paragraphe, par d\'efaut~0}*{}
-\capcs iota {lettre grecque math\'ematique $\iota$}{}{}
-\capcs it {utilise des italiques, c'est-\`a-dire, fait |\\tenit\\fam=\\itfam|}{}{}
-\capcs item {d\'ebute un paragraphe avec une indentation accroch\'ee de |\\parindent|
- et pr\'ec\'ed\'ee d'un label sp\'ecifi\'e}{}{}
-\capcs itemitem {comme |\\item|, mais avec une indentation de |2\\parindent|}{}{}
-\capcs itfam {famille italique en math\'ematique}{}{}
-\capcs j {lettre `\j' sans point, pour utiliser avec des accents}{}{}
-\capcs jmath {lettre `$\jmath$' sans point, pour utiliser avec des accents math\'ematiques}{}{}
-\capcs jobname {nom de base du fichier par lequel \TeX\ a \'et\'e appel\'e}*{}
-\capcs jot {unit\'e de mesure for opening up displays}{}{}
-\capcs kappa {lettre grecque math\'ematique $\kappa$}{}{}
-\capcs ker {fonction kern~: $\ker$}{}{}
-\capcs kern {produit un montant d'espace sp\'ecifi\'e sur lequel
- une coupure n'est pas autoris\'ee}*{}
-\capcs l {lettre polonaise~: \l}{}{}
-\capcs L {lettre polonaise~: \L}{}{}
-\capcs lambda {lettre grecque math\'ematique $\lambda$}{}{}
-\capcs Lambda {lettre grecque math\'ematique $\Lambda$}{}{}
-\capcs land {op\'erateur logique ``et''~: $\land$}{}{}
-\capcs langle {left angle delimiter~: $\langle$}{}{}
-\capcs language {le jeu de patrons de c\'esure courant}*{}
-\capcs lastbox {retrouve et enl\`eve le dernier \'el\'ement de la liste courante, si c'est une
- bo\^\i te}*{}
-\capcs lastkern {retrouve le dernier \'el\'ement de la liste courante, si c'est un
- cr\'enage}*{}
-\capcs lastpenalty {enl`eve le dernier item de la liste courante, si c'est une p/'enalit\'e }*{}
-\capcs lastskip {enl\`eve le dernier item de la liste courante, si c'est une glue}*{}
-\capcs lbrace {d\'elimiteur accolade gauche~: $\lbrace$}{}{}
-\capcs lbrack {d\'elimiteur crochet gauche~: $\lbrack$}{}{}
-\capcs lccode {le code de caract\`ere pour la forme minuscule d'une lettre}*{}
-\capcs lceil {d\'elimiteur plafond gauche~: $\lceil$}{}{}
-\capcs ldotp {point sur la ligne de base comme ponctuation~: $\ldotp$}{}{}
-\capcs ldots {points sur la ligne de base en math\'ematique~: $\ldots$}{}{}
-\capcs le {relation inf\'erieur ou \'egal~: $\le$}{}{}
-\capcs leaders {remplit un espace horizontal ou vertical sp\'ecifi\'e en r\'ep\'etant un
- filet ou une bo\^\i te sp\'ecifi\'ee}*{}
-\capcs left {produit le d\'elimiteur sp\'ecifi\'e, en l'agrandissant pour couvrir la
- sous-formule suivante se finissant par |\\right|}*{}
-\capcs leftarrow {relation~: $\leftarrow$}{}{}
-\capcs Leftarrow {relation~: $\Leftarrow$}{}{}
-\capcs leftarrowfill {rempli la hbox contenante avec un |\\leftarrow|~:
- \hbox to 3.5em{\leftarrowfill}}{}{}
-\capcs leftharpoondown {relation~: $\leftharpoondown$}{}{}
-\capcs leftharpoonup {relation~: $\leftharpoonup$}{}{}
-\capcs lefthyphenmin {taille du plus petit fragment de mot que \TeX\ autorise
- avant une c\'esure en d\'ebut d'un mot, par d\'efaut~2}*{}
-\capcs leftline {produit une ligne avec son texte pouss\'e vers la marge de gauche}{}{}
-\capcs leftrightarrow {relation~: $\leftrightarrow$}{}{}
-\capcs Leftrightarrow {relation~: $\Leftrightarrow$}{}{}
-\capcs leftskip {ressort que \TeX\ ins\`ere \`a gauche de chaque ligne}*{}
-\capcs leq {\'equivalent \`a |\\le|}{}{}
-\capcs leqalignno {produit un affichage multi-ligne sp\'ecifi\'e avec des num\'eros d'\'equation
- \`a gauche dont les parties indiqu\'ees sont align\'ees verticalement}{}{}
-\capcs leqno {d\'epose un num\'ero d'\'equation sp\'ecifi\'e \`a gauche d'un affichage}*{}
-\capcs let {d\'efinit une s\'equence de contr\^ole comme \'etant le token suivant}*{}
-\capcs lfloor {d\'elimiteur plancher gauche~: $\lfloor$}{}{}
-\capcs lg {fonction logarithme~: $\lg$}{}{}
-\capcs lgroup {d\'elimiteur groupe gauche (la plus petite taille est montr\'ee ici)~:
- $\Big\lgroup$}{}{}
-\capcs lim {fonction limite~: $\lim$}{}{}
-\capcs liminf {fonction limite inf\'erieur~: $\liminf$}{}{}
-\capcs limits {place un exposant sur et un indice sous un
- grand op\'erateur}*{}
-\capcs limsup {fonction limite sup\'erieure~: $\limsup$}{}{}
-\capcs line {produit une ligne de caract\`eres justifi\'ee}{}{}
-\capcs linepenalty {p\'enalit\'e pour coupure de ligne ajout\'ee \`a chaque ligne,
- par d\'efaut~10}*{}
-\capcs lineskip {ressort vertical d'une ligne de base \`a la suivante si les
- lignes sont plus proche l'une de l'autre que |\\lineskiplimit|, par d\'efaut 1\pt}*{}
-\capcs lineskiplimit {seuil pour utiliser |\\lineskip| au lieu de |\\base\-line\-skip|, par d\'efaut 0\pt}*{}
-\capcs ll {relation beaucoup moins que~: $\ll$}{}{}
-\capcs llap {produit du texte (sans largeur) \`a partir de la gauche
- de la position courante}{}{}
-\capcs lmoustache {moiti\'e haute d'une grande accolade~: $\big\lmoustache$}{}{}
-\capcs ln {fonction logarithme naturel~: $\ln$}{}{}
-\capcs lnot {symbole logique ``non''~: $\lnot$}{}{}
-\capcs log {fonction logarithme~: $\log$}{}{}
-\capcs long {autorise des tokens |\\par| dans le(s) argument(s) de
- la d\'efinition suivante}*{}
-\capcs longleftarrow {relation~: $\longleftarrow$}{}{}
-\capcs Longleftarrow {relation~: $\Longleftarrow$}{}{}
-\capcs longleftrightarrow {relation~: $\longleftrightarrow$}{}{}
-\capcs Longleftrightarrow {relation~: $\Longleftrightarrow$}{}{}
-\capcs longmapsto {relation~: $\longmapsto$}{}{}
-\capcs longrightarrow {relation~: $\longrightarrow$}{}{}
-\capcs Longrightarrow {relation~: $\Longrightarrow$}{}{}
-\capcs loop {d\'ebute une boucle devant se finir par |\\repeat|}{}{}
-\capcs looseness {diff\'erence entre le nombre de lignes d'un paragraphe que vous
- voulez par rapport au nombre optimal}*{}
-\capcs lor {op\'erateur logique ``ou''~: $\lor$}{}{}
-\capcs lower {abaisse une bo\^\i te sp\'ecifi\'e d'un montant sp\'ecifi\'e}*{}
-\capcs lowercase {convertit les lettres capitales du texte sp\'ecifi\'e
- en minuscules}*{}
-\capcs lq {caract\`ere quote gauche pour du texte~: \lq}{}{}
-\capcs mag {$1000$ fois le ratio pour agrandir toutes les dimensions}*{}
-\capcs magnification {comme |\\mag|, mais n'agrandit pas la taille de la page}{}{}
-\capcs magstep {$1000 \cdot 1.2^n$ pour un $n$ sp\'ecifi\'e}{}{}
-\capcs magstephalf {$1000\cdot\sqrt{1.2}$}{}{}
-\capcs mapsto {relation~: $\mapsto$}{}{}
-\capcs mark {produit un \'el\'ement marqu\'e avec un texte sp\'ecifi\'e}*{}
-\capcs mathaccent {met un accent math\'ematique sp\'ecifi\'e sur le caract\`ere suivant}*{}
-\capcs mathbin {espace une sous-formule sp\'ecifi\'ee comme une op\'eration binaire}*{}
-\capcs mathchar {produit le caract\`ere math\'ematique de mathcode sp\'ecifi\'e}*{}
-\capcs mathchardef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'ee comme \'etant un mathcode,
- un nombre entre 0 et $2^{15}-1$}*{}
-\capcs mathchoice {s\'electionne une des quatre sous-formules math\'ematiques sp\'ecifi\'ees
- selon le style courant}*{}
-\capcs mathclose {espace une sous-formule sp\'ecifi\'ee comme un d\'elimiteur fermant}*{}
-\capcs mathcode {le mathcode d'un caract\`ere sp\'ecifi\'e}*{}
-\capcs mathinner {espace une sous-formule sp\'ecifi\'ee comme une formule interne, c'est-\`a-dire,
- une fraction}*{}
-\capcs mathop {espace une sous-formule sp\'ecifi\'ee comme un grand op\'erateur math\'ematique}*{}
-\capcs mathopen {espace une sous-formule sp\'ecifi\'ee comme un d\'elimiteur ouvrant}*{}
-\capcs mathord {espace une sous-formule sp\'ecifi\'ee comme un caract\`ere ordinaire}*{}
-\capcs mathpalette {produit un |\\mathchoice| qui d\'eveloppe une s\'equence de contr\^ole sp\'ecifi\'ee d\'ependant du style courant}{}{}
-\capcs mathpunct {espace une sous-formule sp\'ecifi\'ee comme une ponctuation}*{}
-\capcs mathrel {espace une sous-formule sp\'ecifi\'ee comme une relation}*{}
-\capcs mathstrut {produit une bo\^\i te invisible avec la hauteur et la largeur d'une
- parenth\`ese gauche et sans largeur}{}{}
-\capcs mathsurround {espace que \TeX\ ins\`ere avant et apr\`es les maths dans le texte}*{}
-\capcs matrix {produit une matrice sp\'ecifi\'ee}{}{}
-\capcs max {fonction maximum~: $\max$}{}{}
-\capcs maxdeadcycles {valeur de |\\deadcycles| sur laquelle \TeX\ se plaint,
- et utilise alors sa propre routine de sortie, par d\'efaut~25}*{}
-\capcs maxdepth {profondeur maximum de la bo\^\i te en bas d'une page,
- par d\'efaut 4\pt}*{}
-\capcs maxdimen {plus grande dimension acceptable par \TeX}{}{}
-\capcs meaning {produit la signification compr\'ehensible humainement d'un token
- sp\'ecifi\'e comme des caract\`eres}*{}
-\capcs medbreak {indique une coupure de page
- souhaitable avec |\\penalty-100| et produit un ressort |\\medskipamount|}{}{}
-\capcs medmuskip {ressort pour un espace math\'ematique moyen, par d\'efaut 4\mud\ plus 2\mud\
- minus 4\mud}*{}
-\capcs medskip {produit un ressort |\\medskipamount|}{}{}
-\capcs medskipamount {ressort pour un saut vertical moyen, par d\'efaut 6\pt
- plus 2\pt\ minus 2\pt}{}{}
-\capcs message {affiche le d\'eveloppement du texte sp\'ecifi\'e sur le terminal}*{}
-\capcs mid {middle relation~: $\mid$}{}{}
-\capcs midinsert {produit le texte sp\'ecifi\'e \`a la position courante si
- possible, sinon en haut de la page suivante}{}{}
-\capcs min {fonction minimum~: $\min$}{}{}
-\capcs mit {utilise des italiques math\'ematiques, c'est-\`a-dire, fait |\\fam=1|}{}{}
-\capcs mkern {produit un cr\'enage sp\'ecifi\'e en unit\'es |mu| en math\'ematique}*{}
-\capcs models {relation mod\`ele ~: $\models$}{}{}
-\capcs month {mois courant, comme un nombre}*{}
-\capcs moveleft {d\'eplace une bo\^\i te sp\'ecifi\'e \`a gauche d'un espace sp\'ecifi\'e~; l\'egal
- uniquement en mode vertical}*{}
-\capcs moveright {d\'eplace une bo\^\i te sp\'ecifi\'e \`a droite d'un espace sp\'ecifi\'e~; l\'egal
- uniquement en mode vertical}*{}
-\capcs mp {op\'erateur plus et moins~: $\mp$}{}{}
-\capcs mskip {produit un ressort sp\'ecifi\'e en unit\'es |mu| en math\'ematique}*{}
-\capcs mu {lettre grecque math\'ematique $\mu$}{}{}
-\capcs multiply {multiplie un registre |\\count| sp\'ecifi\'e par un entier
- sp\'ecifi\'e}*{}
-\capcs multispan {fait traverser l'entr\'ee d'alignement suivante un nombre sp\'ecifi\'e
- de colonnes (ou de rang\'ees)}{}{}
-\capcs muskip {le registre muglue sp\'ecifi\'e}*{}
-\capcs muskipdef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'e comme un nombre
- correspondant \`a un registre |\\muskip|}*{}
-\capcs nabla {symbole diff\'erence \`a l'envers~: $\nabla$}{}{}
-\capcs narrower {diminue les marges droite et gauche d'un |\\parindent|}{}{}
-\capcs natural {symbole naturel en musique~: $\natural$}{}{}
-\capcs nearrow {relation fl\`eche montante vers la droite~: $\nearrow$}{}{}
-\capcs ne {relation non \'egal~: $\ne$}{}{}
-\capcs neg {symbole logique ``non''~: $\neg$}{}{}
-\capcs negthinspace {kern $-\frac1/6$\em}{}{}
-\capcs neq {relation non \'egal~: $\neq$}{}{}
-\capcs newbox {r\'eserve et nomme un registre |\\box|}{}{\@newbox}
-\capcs newcount {r\'eserve et nomme un registre |\\count|}{}{\@newcount}
-\capcs newdimen {r\'eserve et nomme un registre |\\dimen|}{}{\@newdimen}
-\capcs newfam {r\'eserve et nomme une famille math\'ematique}{}{\@newfam}
-\capcs newhelp {nomme un message d'erreur sp\'ecifi\'e}{}{\@newhelp}
-\capcs newif {d\'efinit un nouveau test conditionel avec le nom sp\'ecifi\'e}{}{\@newif}
-\capcs newinsert {nomme une classe d'insertion et r\'eserve des registres
- |\\box|, |\\count|, |\\dimen| et |\\skip| correspondants}
- {}{\@newinsert}
-\capcs newlanguage {r\'eserve et nomme un |\\language|}{}{\@newlanguage}
-\capcs newlinechar {caract\`ere fin de ligne pour |\\write|, etc.}*{}
-\capcs newmuskip {r\'eserve et nomme un registre |\\muskip|}{}{\@newmuskip}
-\capcs newread {r\'eserve et nomme un flot d'entr\'ee}{}{\@newread}
-\capcs newskip {r\'eserve et nomme un registre |\\skip|}{}{\@newskip}
-\capcs newtoks {r\'eserve et nomme un registre |\\toks|}{}{\@newtoks}
-\capcs newwrite {r\'eserve et nomme un flot de sortie}{}{\@newwrite}
-\capcs ni {relation ``dans invers\'e''~: $\ni$}{}{}
-\capcs noalign {ins\`ere du mat\'eriel entre des rang\'ees (ou des colonnes) d'un
- alignement}*{}
-\capcs noboundary {inhibe des ligatures ou cr\'enages dues au |boundarychar| de la police
- courante}*{}
-\capcstwo nobreak {fait |\\penalty10000|, c'est-\`a-dire,
- inhibe une coupure de ligne ou de page}{}{hnobreak:vnobreak}
-\capcs noexpand {supprime le d\'eveloppement du token suivant}*{}
-\capcs noindent {entre en mode horizontal sans indenter le paragraphe}*{}
-\capcs nointerlineskip {inhibe le ressort inter-ligne avant la ligne suivante}{}{}
-\capcs nolimits {place un exposant et un indice apr\`es de grands op\'erateurs}*{}
-\capcs nonfrenchspacing {rend l'espacement inter-mot d\'ependant de la ponctuation}{}{}
-\capcs nonscript {inhibe tout ressort ou cr\'enage suivant
- en styles script et scriptscript}*{}
-\capcs nonstopmode {ne stoppe pas sur des erreurs, m\^eme celles relatives aux fichiers manquants}*{}
-\capcs nopagenumbers {inhibe l'impression des num\'eros de page, c'est-\`a-dire, fait
- |\\footline = {\\hfil}|}{}{}
-\capcs normalbaselines {met |\\baselineskip|, |\\line\-skip| et
- |\\line\-skip\-limit| aux valeurs normales pour la taille de la police courante}{}{}
-\capcs normalbaselineskip {valeur de |\\baselineskip| pour la
- taille de la police courante}{}{}
-\capcs normalbottom {rend la marge du bas identique de page en page}{}{}
-\capcs normallineskip {valeur de |\\lineskip| pour la taille de caract\`ere
- courante}{}{}
-\capcs normallineskiplimit {valeur de |\\lineskiplimit| pour la taille de caract\`ere
- courante}{}{}
-\capcs not {un |\\/| sans largeur pour construire des n\'egations de relation
- mat\'ematiques, comme dans $\not=$}{}{}
-\capcs notin {relation n'appartient pas~: $\notin$}{}{}
-\capcs nu {lettre grecque math\'ematique $\nu$}{}{}
-\capcs null {se d\'eveloppe en une bo\^\i te vide}{}{}
-\capcs nulldelimiterspace {espace produit par un d\'elimiteur nul, par
- d\'efaut 1.2\pt}*{}
-\capcs nullfont {police primitive sans characters}*{}
-\capcs number {produit un chiffre sp\'ecifi\'e en caract\`eres}*{}
-\capcs nwarrow {relation fl\`eche en haut vers la gauche~: $\nwarrow$}{}{}
-\capcs o {lettre danoise~: \o}{}{}
-\capcs O {lettre danoise~: \O}{}{}
-\capcs obeylines {rend chaque fin de ligne du fichier entr\'ee
- \'equivalente \`a |\\par|}{}{}
-\capcs obeyspaces {produit un espace dans la sortie pour chaque caract\`ere espace dans
- l'entr\'ee}{}{}
-\capcs odot {op\'eration point centr\'e~: $\odot$}{}{}
-\capcs oe {ligature \oe}{}{}
-\capcs OE {ligature \OE}{}{}
-\capcs offinterlineskip {inhibe le ressort inter-ligne \`a partir de maintenant}{}{}
-\capcs oint {op\'erateur contour int\'egral~: $\oint$}{}{}
-\capcs oldstyle {utilise des chiffres elz\'eviriens~: {\oldstyle1234567890}}{}{}
-\capcs omega {lettre grecque math\'ematique $\omega$}{}{}
-\capcs Omega {lettre grecque math\'ematique $\Omega$}{}{}
-\capcs ominus {op\'erateur moins dans un cercle~: $\ominus$}{}{}
-\capcs omit {saute un patron de colonne (ou de rang\'ee) dans un alignement}*{}
-\capcs openin {pr\'epare un flot d'entr\'ee sp\'ecifi\'e pour lire un fichier}*{}
-\capcs openout {pr\'epare un flot de sortie sp\'ecifi\'e pour \'ecrire dans un fichier}*{}
-\capcs openup {augmente |\\baselineskip|, |\\lineskip| et
- |\\lineskiplimit| d'un montant sp\'ecifi\'e}{}{}
-\capcs oplus {op\'erateur plus dans un cercle~: $\oplus$}{}{}
-\capcs or {s\'epare les cas d'un |\\ifcase|}*{\@or}
-\capcs oslash {op\'erateur divise dans un cercle~: $\oslash$}{}{}
-\capcs otimes {op\'erateur multiplie dans un cercle~: $\otimes$}{}{}
-\capcs outer {rend la d\'efinition de macro suivante ill\'egale dans des contextes dans
- lesquels des tokens sont absorb\'e \`a haute vitesse}*{}
-\capcs output {liste de token que \TeX\ d\'eveloppe quand il trouve une coupure de page}*{}
-\capcs outputpenalty {si la coupure de page arrive sur une p\'enalit\'e, la valeur
- de cette p\'enalit\'e~; sinon z\'ero}*{}
-\capcs over {produit une fraction avec une barre d'\'epaisseur par d\'efaut}*{}
-\capcs overbrace {produit une accolade recouvrant le haut d'une formule,
- comme dans $\overbrace{h+w}{}$}{}{}
-\capcs overfullrule {largeur de la r\'eglure d'un ``overfull box''}*{}
-\capcs overleftarrow {produit une fl\`eche vers la gauche recouvrant le haut d'une
- formule, comme dans $\overleftarrow{r+a}$}{}{}
-\capcs overline {produit une ligne recouvrant le haut d'une formule,
- comme dans~$\overline{2b}$}*{}
-\capcs overrightarrow {produit une fl\`eche vers la droite recouvrant le haut d'une
- formule, comme dans $\overrightarrow{i+t}$}{}{}
-\capcs overwithdelims {produit une fraction avec une barre d'\'epaisseur par d\'efaut
- et surmont\'ee des d\'elimiteurs sp\'ecifi\'es}*{}
-\capcs owns {relation appartient~: $\owns$}{}{}
-\capcs P {caract\`ere paragraphe en texte~: \P}{}{}
-\capcs pagedepth {\TeX\ met ceci \`a la profondeur courante de la page
- courante}*{}
-\capcs pagefilllstretch {\TeX\ met ceci au montant d'\'etirement |filll| sur
- la page courante}*{}
-\capcs pagefillstretch {\TeX\ met ceci au montant d'\'etirement |fill| sur
- la page courante}*{}
-\capcs pagefilstretch {\TeX\ met ceci au montant d'\'etirement |fil| sur
- la page courante}*{}
-\capcs pagegoal {\TeX\ met ceci \`a la hauteur d\'esir\'ee pour la page courante
- (c'est-\`a-dire, |\\vsize| quand la premi\`ere bo\^\i te est mise sur la page)}*{}
-\capcs pageinsert {produit le texte sp\'ecifi\'e sur la page suivante et utilise
- jusqu'a la page enti\`ere}{}{}
-\capcs pageno {le registre |\\count0|, qui contient le num\'ero de page
- (\'eventuellement n\'egatif)}{}{}
-\capcs pageshrink {\TeX\ met ceci au montant total de r\'etr\'ecissement
- sur la page courante}*{}
-\capcs pagestretch {\TeX\ met ceci au montant total d'\'etirement
- sur la page courante}*{}
-\capcs pagetotal {\TeX\ met ceci \`a la hauteur naturelle de la page
- courante}*{}
-\capcs par {finit un paragraphe et termine le mode horizontal}*{\@par}
-\capcs parallel {relation parall\`ele~: $\parallel$}{}{}
-\capcs parfillskip {ressort horizontal que \TeX\ ins\`ere \`a la fin d'un
- paragraphe}*{}
-\capcs parindent {espace horizontal que \TeX\ ins\`ere au d\'ebut d'un
- paragraphe}*{}
-\capcs parshape {sp\'ecifie la largeur et la longueur de chaque ligne
- dans le prochain paragraphe}*{}
-\capcs parskip {ressort vertical que \TeX\ ins\`ere avant un paragraphe}*{}
-\capcs partial {symbole d\'eriv\'ee partielle~: $\partial$}{}{}
-\capcs pausing {si positif, stoppe apr\`es avoir lu chaque ligne d'entr\'ee pour un
- remplacement possible}*{}
-\capcstwo penalty {produit une p\'enalit\'e (ou un bonus, si n\'egatif) pour couper
- une ligne ou une page ici}*{hpenalty:vpenalty}
-\capcs perp {relation perpendiculaire~: $\perp$}{}{}
-\capcs phantom {produit une formule invisible avec les
- dimensions d'une sous formule sp\'ecifi\'e}{}{}
-\capcs phi {lettre grecque math\'ematique $\phi$}{}{}
-\capcs Phi {lettre grecque math\'ematique $\Phi$}{}{}
-\capcs pi {lettre grecque math\'ematique $\pi$}{}{}
-\capcs Pi {lettre grecque math\'ematique $\Pi$}{}{}
-\capcs plainoutput {routine |\\output| de \plainTeX}{}{}
-\capcs pm {op\'erateur plus et moins~: $\pm$}{}{}
-\capcs pmatrix {produit une matrice entre parenth\`eses}{}{}
-\capcs pmod {notation modulo entre parenth\`eses \'a la fin d'une formule comme dans $x \equiv y+1 \pmod 2$}{}{}
-\capcs postdisplaypenalty {p\'enalit\'e suppl\'ementaire pour une coupure de ligne
- juste apr\`es un affichage, par d\'efaut~0}*{}
-\capcs Pr {fonction probabilit\'e~: $\Pr$}{}{}
-\capcs prec {relation pr\'ec\`ede~: $\prec$}{}{}
-\capcs preceq {relation pr\'ec\`ede ou \'egale~: $\preceq$}{}{}
-\capcs predisplaypenalty {p\'enalit\'e suppl\'ementaire pour une coupure de ligne juste
- avant un affichage, par d\'efaut~0}*{}
-\capcs predisplaysize {\TeX\ met ceci \`a la largeur de la
- ligne pr\'ecedant un affichage}*{}
-\capcs pretolerance {tol\'erance de m\'ediocrit\'e pour une coupure de ligne sans
- c\'esure, par d\'efaut~100}*{}
-\capcs prevdepth {profondeur de la derni\`ere bo\^\i te dans la liste verticale courante
- (sauf filet)}*{}
-\capcs prevgraf {\TeX\ met ceci au nombre de lignes dans le paragraphe en plus
- (en mode horizontal) ou dans le paragraphe pr\'ec\'edent (en mode vertical)}*{}
-\capcs prime {symbole prime math\'ematique, comme dans $r^\prime$}{}{}
-\capcs proclaim {d\'ebute un th\'eor\`eme, un lemme, une hypoth\`ese, $\ldots$}{}{\@proclaim}
-\capcs prod {grand op\'erateur produit~: $\prod$}{}{}
-\capcs propto {relation proportionnel \`a~: $\propto$}{}{}
-\capcs psi {lettre grecque math\'ematique $\psi$}{}{}
-\capcs Psi {lettre grecque math\'ematique $\Psi$}{}{}
-\capcs qquad {produit un ressort horizontal de largeur 2\em}{}{}
-\capcs quad {produit un ressort horizontal de largeur 1\em}{}{}
-\capcs radical {produit un symbole radical sp\'ecifi\'e}*{}
-\capcs raggedbottom {autorise la marge du bas \`a varier d'une page \`a l'autre}{}{}
-\capcs raggedright {autorise la marge droite \`a varier d'une ligne \`a l'autre}{}{}
-\capcs raise {abaisse une bo\^\i te sp\'ecifi\'ee d'un montant sp\'ecifi\'e}*{}
-\capcs rangle {d\'elimiteur angle fermant~: $\rangle$}{}{}
-\capcs rbrace {d\'elimiteur accolade fermante~: $\rbrace$}{}{}
-\capcs rbrack {d\'elimiteur crochet fermant~: $\rbrack$}{}{}
-\capcs rceil {d\'elimiteur plancher fermant~: $\rceil$}{}{}
-\capcs Re {symbole partie r\'eelle de complexe~: $\Re$}{}{}
-\capcs read {lit une ligne d'un flot d'entr\'ee sp\'ecifi\'e}*{}
-\capcs relax {ne fait rien}*{}
-\capcs relpenalty {p\'enalit\'e suppl\'ementaire pour une coupure apr\`es une relation,
- par d\'efaut~500}*{}
-\capcs repeat {termine une boucle d\'ebut\'ee avec |\\loop|}{}{\@repeat}
-\capcs rfloor {d\'elimiteur plafond fermant~: $\rfloor$}{}{}
-\capcs rgroup {d\'elimiteur de groupe fermant (la plus petite taille est montr\'ee ici)~:
- $\Big\rgroup$}{}{}
-\capcs rho {lettre grecque math\'ematique $\rho$}{}{}
-\capcs right {produit le d\'elimiteur sp\'ecifi\'e \`a l'extr\'emit\'e d'une
- sous-formule d\'ebut\'ee par |\\left|}*{}
-\capcs rightarrow {relation~: $\rightarrow$}{}{}
-\capcs Rightarrow {relation~: $\Rightarrow$}{}{}
-\capcs rightarrowfill {remplit une hbox avec un |\\rightarrow|~:
- \hbox to 3.5em{\rightarrowfill}}{}{}
-\capcs rightharpoondown {relation~: $\rightharpoondown$}{}{}
-\capcs rightharpoonup {relation~: $\rightharpoonup$}{}{}
-\capcs rightleftharpoons {relation~: $\rightleftharpoons$}{}{}
-\capcs rightline {produit une ligne avec son texte pouss\'e vers la marge droite}{}{}
-\capcs rightskip {ressort que \TeX\ ins\`ere \`a droite de chaque ligne}*{}
-\capcs righthyphenmin {taille du plus petit fragment de mot que \TeX\ autorise
- apr\`es une c\'esure \`a la fin d'un mot, par d\'efaut~3}*{}
-\capcs rlap {produit du texte (sans largeur) \`a partir de la droite
- de la position courante}{}{}
-\capcs rm {utilise des caract\`eres romains, c'est-\`a-dire, fait |\\tenrm\\fam=0|}{}{}
-\capcs rmoustache {moiti\'e basse d'une grande accolade~: $\big\rmoustache$}{}{}
-\capcs romannumeral {produit la repr\'esentation en chiffre romain minuscule d'un
- nombre sp\'ecifi\'e, en caract\`eres}{}{}
-\capcs root {produit une racine sp\'ecifi\'ee d'une sous-formule sp\'ecifi\'ee, comme dans
- $\root 3 \of 2$}{}{}
-\capcs rq {caract\`ere quote fermante en texte~: \rq}{}{}
-\capcs S {caract\`ere section en texte~: \S}{}{}
-\capcs sb {caract\`ere indice implicite}{}{}
-\capcs scriptfont {la police de style script dans une famille math\'ematique sp\'ecifi\'ee}*{}
-\capcs scriptscriptfont {la police de style scriptscript dans une famille math\'ematique
- sp\'ecifi\'ee}*{}
-\capcs scriptscriptstyle {utilise la taille de style scriptscript dans une formule}*{}
-\capcs scriptspace {espace suppl\'ementaire que \TeX\ cr\`ee apr\`es un exposant ou un
- indice, par d\'efaut 0.5\pt}*{}
-\capcs scriptstyle {utilise la taille de style script dans une formule}*{}
-\capcs scrollmode {ne stoppe pas sur les erreurs, mais stoppe sur les erreurs
- de fichiers manquants}*{}
-\capcs searrow {relation fl\`eche en bas \`a gauche~: $\searrow$}{}{}
-\capcs sec {fonction s\'ecante~: $\sec$}{}{}
-\capcs setbox {d\'efinit un registre de bo\^\i te sp\'ecifi\'e comme \'etant une bo\^\i te}*{}
-\capcs setlanguage {change un jeu de r\`egles de c\'esure sp\'ecifi\'e, mais
- ne change pas |\\language|}{*}{}
-\capcs setminus {operateur difference ~: $\setminus$}{}{}
-\capcs settabs {d\'efinit les tabulations pour un alignement tabul\'e}{}{}
-\capcs sevenbf {utilise une police grasse de $7$ points, |cmbx7|}{}{}
-\capcs seveni {utilise une police math\'ematique italique de $7$ points, |cmmi5|}{}{}
-\capcs sevenrm {utilise une police romaine de $7$ points, |cmr7|}{}{}
-\capcs sevensy {utilise une police symbole de $7$ points, |cmsy7|}{}{}
-\capcs sfcode {le code du facteur d'espace d'un caract\`ere sp\'ecifi\'e}*{}
-\capcs sharp {symbole di\`ese en musique~: $\sharp$}{}{}
-\capcs shipout {envoit une bo\^\i te vers le fichier |.dvi|}*{}
-\capcs show {montre, dans la log et
- sur le terminal, la signification d'un token sp\'ecifi\'e}*{}
-\capcs showbox {affiche le contenu d'un registre de bo\^\i te sp\'ecifi\'e}*{}
-\capcs showboxbreadth {nombre maximum d'\'el\'ements montr\'e sur chaque niveau imbriqu\'e,
- par d\'efaut~5}*{}
-\capcs showboxdepth {maximum de niveaux imbriqu\'es montr\'es, par d\'efaut~3}*{}
-\capcs showhyphens {montre, dans la log
- et sur le terminal, les c\'esures dans un texte sp\'ecifi\'e}{}{}
-\capcs showlists {affiche toutes les listes sur lequel il travaille}*{}
-\capcs showthe {montre, dans la log
- et sur le terminal, ce que |\\the| produira}*{}
-\capcs sigma {lettre grecque math\'ematique $\sigma$}{}{}
-\capcs Sigma {lettre grecque math\'ematique $\Sigma$}{}{}
-\capcs sim {relation similarit\'e~: $\sim$}{}{}
-\capcs simeq {relation similaire ou \'egal~: $\simeq$}{}{}
-\capcs sin {fonction sinus~: $\sin$}{}{}
-\capcs sinh {fonction sinus hyperbolique~: $\sinh$}{}{}
-\capcs skew {d\'eplace un accent sp\'ecifi\'e d'un montant sp\'ecifi\'e
- sur un caract\`ere accentu\'e sp\'ecifi\'e}{}{}
-\capcs skewchar {caract\`ere d'une police sp\'ecifi\'ee utilis\'e pour positionner des accents}*{}
-\capcs skip {le registre de ressort sp\'ecifi\'e}*{}
-\capcs skipdef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'ee comme \'etant un nombre
- correspondant \`a un registre |\\skip|}*{}
-\capcs sl {utilise des caract\`eres pench\'es, c'est-\`a-dire, fait |\\tensl\\fam=\\slfam|}{}{}
-\capcs slash {caract\`ere \slash\ autorisant une coupure de ligne}{}{}
-\capcs slfam {famille pench\'ee en math\'ematique}{}{}
-\capcs smallbreak {indique une coupure de page assez d\'esirable
- avec |\\penalty-50| et produit un ressort |\\smallskipamount|}{}{}
-\capcs smallint {petit symbole d'int\'egrale~: $\smallint$}{}{}
-\capcs smallskip {produit un ressort |\\smallskipamount|}{}{}
-\capcs smallskipamount {ressort pour un petit saut vertical, par d\'efaut 3\pt\
- plus 1\pt\ minus 1\pt}{}{}
-\capcs smash {produit une formule sans hauteur, ni profondeur}{}{}
-\capcs smile {relation smile~: $\smile$}{}{}
-\capcs sp {caract\`ere d'exposant implicite}{}{}
-\capcs space {produit un ressort inter-mot normal}{}{}
-\capcs spacefactor {modifie l'\'etirement et le r\'etr\'ecissement des ressorts inter-mot
- s'il diff\'erent de 1000}*{}
-\capcs spaceskip {si diff\'erent de z\'ero et |\\spacefactor|${}<2000$, surcharge
- le ressort inter-mot normal}*{}
-\capcs spadesuit {symbole pique~: $\spadesuit$}{}{}
-\capcs span {soit combine des entr\'ees dans un corps d'alignement body soit
- d\'eveloppe des tokens dans un pr\'eambule}*{}
-\capcs special {\'ecrit des tokens dans le fichier |.dvi| devant \^etre interpr\'et\'es par un
- programme de lecture de DVI}*{}
-\capcs splitbotmark {dernier \'el\'ement de marque dans une bo\^\i te r\'esultant de |\\vsplit|}*{}
-\capcs splitfirstmark {premier \'el\'ement de marque dans une bo\^\i te r\'esultant de
- |\\vsplit|}*{}
-\capcs splitmaxdepth {profondeur maximum d'une bo\^\i te r\'esultant de |\\vsplit|}*{}
-\capcs splittopskip {ressort que \TeX\ ins\`ere en haut d'une bo\^\i te r\'esultant de
- |\\vsplit|}*{}
-\capcs sqcap {op\'erateur square cap~: $\sqcap$}{}{}
-\capcs sqcup {op\'erateur square cup~: $\sqcup$}{}{}
-\capcs sqrt {produit une racine carr\'ee d'une sous-formule, comme dans $\sqrt 2$}{}{}
-\capcs sqsubseteq {relation square subset ou \'egal~: $\sqsubseteq$}{}{}
-\capcs sqsupseteq {relation square superset ou \'egal~: $\sqsupseteq$}{}{}
-\capcs ss {lettre allemande~: \ss}{}{}
-\capcs star {op\'erateur \'etoile~: $\star$}{}{}
-\capcs string {produit un token sp\'ecifi\'e, le plus souvent une s\'equence de
- contr\^ole, comme des caract\`eres}*{}
-\capcs strut {bo\^\i te sans largeur, mais de hauteur et profondeur d'une ligne standard,
- de ligne de base \`a ligne de base, dans la police courante}{}{}
-\capcs subset {relation subset~: $\subset$}{}{}
-\capcs subseteq {relation subset ou \'egal~: $\subseteq$}{}{}
-\capcs succ {relation successeur~: $\succ$}{}{}
-\capcs succeq {relation successeur ou \'egal~: $\succeq$}{}{}
-\capcs sum {grand op\'erateur de somme~: $\sum$}{}{}
-\capcs sup {fonction sup\'erieur~: $\sup$}{}{}
-\capcs supereject {force une coupure de page, et d\'echarge toutes les insertions}{}{}
-\capcs supset {relation superset~: $\supset$}{}{}
-\capcs supseteq {relation superset ou \'egal~: $\supseteq$}{}{}
-\capcs surd {symbole surd~: $\surd$}{}{}
-\capcs swarrow {relation fl\`eche en bas \`a gauche~: $\swarrow$}{}{}
-\capcs t {accent tie-after en texte, comme dans \t uu}{}{}
-\capcs tabalign {\'equivalent \`a |\\+|, sauf s'il n'est pas |\\outer|}{}{}
-\capcs tabskip {ressort entre colonnes (ou rang\'ees) d'un alignement}*{}
-\capcs tan {fonction tangente~: $\tan$}{}{}
-\capcs tanh {fonction tangente hyperbolique~: $\tanh$}{}{}
-\capcs tau {lettre grecque math\'ematique $\tau$}{}{}
-\capcs tenbf {utilise une police grasse de $10$ points, |cmbx10|}{}{}
-\capcs tenex {utilise une police d'extension math\'ematique de $10$ points, |cmex10|}{}{}
-\capcs teni {utilise une police italique math\'ematique de $10$ points, |cmmi10|}{}{}
-\capcs tenit {utilise une police italique de texte de $10$ points, |cmti10|}{}{}
-\capcs tenrm {utilise une police romaine de texte de $10$ points, |cmr10|}{}{}
-\capcs tensl {utilise une police romaine pench\'ee de $10$ points, |cmsl10|}{}{}
-\capcs tensy {utilise une police de symbole math\'ematique de $10$ points, |cmsy10|}{}{}
-\capcs tentt {utilise une police de machine \`a \'ecrire de $10$ points, |cmtt10|}{}{}
-\capcs TeX {produit le logo \TeX}{}{}
-\capcs textfont {la police de style dans une famille math\'ematique sp\'ecifi\'ee}*{}
-\capcs textindent {comme |\\item|, mais ne fait pas d'indentation associ\'ee}{}{}
-\capcs textstyle {utilise une taille textstyle dans une formule}*{}
-\capcs the {donne la valeur d'un token sp\'ecifi\'e}*{}
-\capcs theta {lettre grecque math\'ematique $\theta$}{}{}
-\capcs Theta {lettre grecque math\'ematique $\Theta$}{}{}
-\capcs thickmuskip {ressort pour une espace math\'ematique gras, par d\'efaut 5\mud\ plus 5\mud}*{}
-\capcs thinmuskip {ressort pour un espace math\'ematique fine, par d\'efaut 3\mud}*{}
-\capcs thinspace {cr\'enage de \frac1/6\em}{}{}
-\capcs tilde {accent tilde en math\'ematique, comme dans $\tilde x$}{}{}
-\capcs time {l'heure d'aujourd'hui, en minutes depuis minuit}*{}
-\capcs times {op\'erateur multipli\'e~: $\times$}{}{}
-\capcs toks {le registre de token sp\'ecifi\'e}*{}
-\capcs toksdef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'e comme \'etant un nombre
- correspondant \`a un registre |\\toks|}*{}
-\capcs tolerance {tol\'erance de m\'ediocrit\'e pour des coupures de ligne avec c\'esure}*{}
-\margin{{\tt\\topglue} command added~; recent addition to \TeX}
-\capcs to {relation mapping~: $\to$}{}{}
-\capcs top {symbole lattice top~: $\top$}{}{}
-\capcs topglue {produit un ressort vertical sp\'ecifi\'e en haut
- d'une page}{}{}
-\capcs topinsert {produit le texte sp\'ecifi\'e en haut d'une page}{}{}
-\capcs topmark {|\\botmark| avant que la page courante soit en bo\^\i te}*{}
-\capcs topskip {ressort entre la ligne de t\^ete et la premi\`ere ligne de texte
- sur une page, par d\'efaut 10\pt}*{}
-\capcs tracingall {d\'eclanche des traces maximal}{}{}
-\capcs tracingcommands {affiche l'ex\'ecution des commandes}*{}
-\capcs tracinglostchars {affiche les caract\`eres demand\'es, mais non
- d\'efinis}*{}
-\capcs tracingmacros {affiche les d\'eveloppements de macros}*{}
-\capcs tracingonline {montre les sorties de diagnostic sur le terminal aussi bien que
- dans le fichier log}*{}
-\capcs tracingoutput {affiche les contenus des bo\^\i tes sorties}*{}
-\capcs tracingpages {affiche les calculs de coupure de page}*{}
-\capcs tracingparagraphs {affiche les calculs de coupure de ligne}*{}
-\capcs tracingrestores {affiche les valeurs restaur\'ees \`a la fin
- d'un groupe}*{}
-\capcs tracingstats {affiche les statistiques d'utilisation de la m\'emoire}*{}
-\capcs triangle {symbole triangle~: $\triangle$}{}{}
-\capcs triangleleft {op\'erateur triangle gauche~: $\triangleleft$}{}{}
-\capcs triangleright {op\'erateur triangle droite~: $\triangleright$}{}{}
-\capcs tt {utilise des caract\`eres de machine \`a \'ecrire, c'est-\`a-dire, fait |\\tentt\\fam=\\ttfam|}{}{}
-\capcs ttfam {famille machine \`a \'ecrire en math\'ematique}{}{}
-\capcs ttraggedright {utilise des caract\`eres de machine \`a \'ecrire et autorise la marge
- droite des paragraphes \`a varier d'une ligne \`a l'autre}{}{}
-\capcs u {accent bref en texte, comme dans \u r}{}{}
-\capcs uccode {le code de caract\`ere de la forme capitale d'une lettre}*{}
-\capcs uchyph {si positif, laisse c\'esurer des mots qui commencent avec une
- lettre capitale}*{}
-\capcs underbar {souligne le texte sp\'ecifi\'e sans toucher les descendantes , comme dans \underbar{fog}}{}{}
-\capcs underbrace {produit une accolade couvrant le bas d'une formule, comme dans
- $\underbrace{x+x}{}$}{}{}
-\capcs underline {souligne une formule math\'ematique sous les descendantes, comme dans
- $\underline{x+y}$}*{}
-\capcs unhbox {d\'echarge le contenu de la bo\^\i te
- d'un registre de bo\^\i te sp\'ecifi\'e
- de la liste courante et vide le registre~; l\'egal en
- mode horizontal seulement}*{}
-\capcs unhcopy {comme |\\unhbox|, mais ne vide pas le registre}*{}
-\capcs unkern {si le dernier \'el\'ement de la liste courante est un cr\'enage, l'enl\`eve}*{}
-\capcs unpenalty {si le dernier \'el\'ement de la liste courante est une p\'enalit\'e, l'enl\`eve}*{}
-\capcs unskip {si le dernier \'el\'ement de la liste courante est un ressort, l'enl\`eve}*{}
-\capcs unvbox {d\'echarge le contenu de la bo\^\i te
- d'un registre de bo\^\i te sp\'ecifi\'e
- de la liste courante et vide le registre~; l\'egal en
- modes verticaux seulement}*{}
-\capcs unvcopy {comme |\\unvbox|, mais ne vide pas le registre}*{}
-\capcs uparrow {relation~: $\uparrow$}{}{}
-\capcs Uparrow {relation~: $\Uparrow$}{}{}
-\capcs upbracefill {fill enclosing hbox with an upwards facing brace~:
- \hbox to 3.5em{\upbracefill}}{}{}
-\capcs updownarrow {relation~: $\updownarrow$}{}{}
-\capcs Updownarrow {relation~: $\Updownarrow$}{}{}
-\capcs uplus {op\'erateur plus cupped~: $\uplus$}{}{}
-\capcs uppercase {convertit les lettres minuscules d'un texte sp\'ecifi\'e
- en capitales}*{}
-\capcs upsilon {lettre grecque math\'ematique $\upsilon$}{}{}
-\capcs Upsilon {lettre grecque math\'ematique $\Upsilon$}{}{}
-\capcs v {accent tch\`eque en texte, comme dans \v o}{}{}
-\capcs vadjust {produit du mat\'eriel en mode vertical apr\`es la ligne courante}*{}
-\capcs valign {aligne du texte dans des rang\'ees}*{}
-\capcs varepsilon {variante de la lettre grecque math\'ematique $\varepsilon$}{}{}
-\capcs varphi {variante de la lettre grecque math\'ematique $\varphi$}{}{}
-\capcs varpi {variante de la lettre grecque math\'ematique $\varpi$}{}{}
-\capcs varrho {variante de la lettre grecque math\'ematique $\varrho$}{}{}
-\capcs varsigma {variante de la lettre grecque $\varsigma$}{}{}
-\capcs vartheta {variante de la lettre grecque math\'ematique $\vartheta$}{}{}
-\capcs vbadness {badness threshold for reporting underfull or overfull
- vboxes, par d\'efaut~1000}*{}
-\capcs vbox {produit une vbox dont la ligne de base est celle de la bo\^\i te du haut
- incluse}*{}
-\capcs vcenter {centre le texte sp\'ecifi\'e sur l'axe math\'ematique}*{}
-\capcs vdash {symbole left turnstile~: $\vdash$}{}{}
-\capcs vdots {points verticaux en math\'ematique~: \smash{$\vdots$}}{}{}
-\capcs vec {accent vecteur en math\'ematique, comme dans $\vec x$}{}{}
-\capcs vee {op\'erateur ``ou'' logique~: $\vee$}{}{}
-\capcs vert {relation barre~: $\vert$}{}{}
-\capcs Vert {relation double barre~: $\Vert$}{}{}
-\capcs vfil {produit un ressort vertical infiniment \'etirable}*{}
-\capcs vfill {produit un ressort vertical encore plus infiniment \'etirable
- que celui produit par |\\vfil|}*{}
-\capcs vfilneg {produit un ressort vertical n\'egatif infiniment \'etirable}*{}
-\capcs vfootnote {produit une note de bas de page sp\'ecifi\'ee avec une marque
- de r\'ef\'erence sp\'ecifi\'ee, mais ne produit la marque de r\'ef\'erence dans le texte}{}{}
-\capcs vfuzz {seuil de d\'epassement pour dire overfull vboxes, par d\'efaut
- 0.1\pt}*{}
-\capcs vglue {produit un ressort vertical sp\'ecifi\'e
- qui ne disparait pas sur des coupures de page}{}{}
-\capcs voffset {offset vertical relatif d'un pouce par rapport au coin
- haut du papier}*{}
-\capcs vphantom {produit un formule invisible sans largeur mais de hauteur
- et profondeur naturelle}{}{}
-\capcs vrule {produit un filet vertical~; l\'egal seulement en modes horizontaux}*{}
-\capcs vsize {hauteur de page, par d\'efaut 8.9\thinspace in}*{}
-\capcs vskip {produit un ressort vertical sp\'ecifi\'e}*{}
-\capcs vsplit {coupe le contenu d'un registre de bo\^\i te sp\'ecifi\'ee
- de la hauteur sp\'ecifi\'e}*{}
-\capcs vss {produit un ressort vertical qui est infiniment \'etirable et
- infiniment r\'etr\'ecissable}*{}
-\capcs vtop {produit une vbox dont la ligne de base est celle de la bo\^\i te du haut englob\'ee}*{}
-\capcs wd {la largeur d'une bo\^\i te dans un registre de bo\^\i te sp\'ecifi\'e}*{}
-\capcs wedge {op\'erateur logique ``et''~: $\wedge$}{}{}
-\capcs widehat {accent math\'ematique, comme dans $\widehat {y+z+a}$}{}{}
-\capcs widetilde {accent math\'ematique $\widetilde {b+c+d}$}{}{}
-\capcs widowpenalty {p\'enalit\'e pour une ligne seule d\'ebutant une page,
- par d\'efaut~150}*{}
-\capcs wlog {|\\write| la liste de token sp\'ecifi\'ee dans le fichier log}{}{}
-\capcs wp {symbole Weierstra\ss\ `p'~: $\wp$}{}{}
-\capcs wr {op\'erateur produisant un ruban~: $\wr$}{}{}
-\capcs write {\'ecrit une ligne vers un flot de sortie sp\'ecifi\'e}*{}
-\capcs xdef {\'equivalent \`a |\\global\\edef|, c'est-\`a-dire, d\'efini globalement une
- macro, d\'eveloppant imm\'ediatement le texte de remplacement}*{}
-\capcs xi {lettre grecque math\'ematique $\xi$}{}{}
-\capcs Xi {lettre grecque math\'ematique $\Xi$}{}{}
-\capcs xleaders {produit des r\'eglures avec l'espace en trop \`a gauche redistribu\'e egalement}*{}
-\capcs xspaceskip {si diff\'erent de z\'ero et |\\spacefactor|${}\ge2000$,
- surcharge le ressort inter-mot normal}*{}
-\capcs year {l'ann\'ee courante, comme un nombre}*{}
-\capcs zeta {lettre grecque math\'ematique $\zeta$}{}{}
-
-\endcapsum
-\endchapter
-\byebye
-
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros +\chapter{Sommaire \linebreak des commandes} + +\chapterdef{capsule} + +Cette section contient des descriptions sur une ligne des commandes primitives de\TeX\ +et des commandes \TeX\ d\'efinies dans \plainTeX. Cela inclut les s\'equences de +contr\^ole et les caract\`eres +sp\'eciaux. +Nous avons omis les commandes qui ne sont qu'\`a l'usage interne de la d\'efinition +\plainTeX\ (\knuth{annexe~B}{}). +Notez que les caract\`eres ordinaires +comme `|a|' ou `|6|' sont aussi des commandes, et m\^eme les plus communes +\seeconcept{caract\`ere}. + +Pour rendre la desciption la plus br\`eve possible, nous avons adopt\'e +certaines conventions~: + +\ulist + +\li Un ast\'erisque devant une commande indique que la commande est une primitive, +^^{primitive//commande} c'est-\`a-dire, construite dans le programme \TeX\ +\seeconcept{primitive}. + +\li Les mots ``musique'', ``ponctuation'', ``fonction'', +``symbole'', ``relation'', ``d\'elimiteur'' ou ``op\'erateur'' dans une description de +commande impliquent que la commande n'est l\'egale qu'en mode math\'ema\-tique. + +\li Le verbe ``afficher'' s'applique \`a l'information que \TeX\ envoit au ^{\logfile}, +sauf indication contraire. Si |\tracingonline| est positif, \TeX\ envoit \'egalement +cette information sur le terminal. Nous utilisons le mot ``affichage'' pour nous +r\'ef\'erer aux affichages math\'ema\-tiques (voir \xref{math\'ematique affich\'ee}), +c'est-\`a-dire, \`a ce qui se trouve entre des |$$|. + +\li La phrase ``produit $x$'' indique que la commande composera +$x$ et mettra le r\'esultat dans une bo\^\i te. +Nous omettons parfois ``produit'' quand l'omission ne peut pas porter \`a +confusion. Par exemple, nous d\'ecrivons |\alpha| comme ``lettre Grecque +math\'ematique $\alpha$'' et non ``produit la lettre grecque math\'ematique $\alpha$''. +\margin{Remove explanations of ``space'' and ``glue''} + +\endulist + +\begincapsum + +{\catcode `@ = \letter +\caplineout {\\\visiblespace} {espace inter mot}*{\@space}}% + {\catcode `\ =\other\ctsidxref{ }} +\capcs ! {espace fin n\'egatif en math\'ematique}{}{\@shriek} +\capcs " {accent tr\'ema en texte, comme dans \"o}{}{\@quote} +\capactwo # {introduit un param\`etre de macro ou indique o\`u le texte +source va dans un pr\'eambule d'alignement}{}{@msharp:@asharp} +\capcs # {produit le caract\`ere \# de la police courante}{}{\@pound} +\capac $ {commence ou finit une formule math\'ematique}{}{mathform} +\capcs $ {produit le caract\`ere \$ de la police courante}{}{\@bucks} +\capac % {commence un commentaire}*{commentaires} +\capcs % {produit le caract\`ere \% de la police courante}{}{\@percent} +\capac & {s\'epare les mod\`eles et les entr\'ees dans un alignement}{}{@and} +\capcs & {produit le caract\`ere \& de la police courante}{}{\@and} +\capac ' {symbole prime en math\'ematique, comme dans $p'$}{}{@prime} +\capcs ' {accent aigu en texte, comme dans \'e}{}{\@prime} +\capcs * {symbole multiplication qui autorise une coupure de ligne}{}{\@star} +\capcs + {d\'ebut d'une ligne tabul\'ee}{}{\@plus} +\capcs , {espace fin en math\'ematique}{}{\@comma} +\capcs - {sp\'ecifie un point de c\'esure l\'egal}*{\@minus} +\capcs . {accent point en texte, comme dans \.n}{}{\@dot} +\capcs / {correction italique pour le caract\`ere pr\'ec\'edent}*{\@slash} +\capcs ; {espace \'epaissi en math\'ematique}{}{\@semi} +\capcs = {accent macron en texte, comme dans \=r}{}{\@equal} +\capac \ {d\'ebute une s\'equence de contr\^ole}*{@backslash} +\capcs > {espace moyen en math\'ematique}{}{\@greater} +\capac ^ {produit une sous-formule sp\'ecifi\'ee en exposant}{}{@hat} +\capcs ^ {accent circonflexe en texte, comme dans \^o}{}{\@hat} +{\catcode `@ = \letter +\caplineout {\twocarets L}{\'equivalent \`a la primitive |\\par|} + {}{\@par}\ttidxref{^^L} +\caplineout {\twocarets M}{une fin de ligne}*{@newline}\ttidxref{^^M} +}% +\capac _ {produit une sous-formule sp\'ecifi\'ee en indice}{}{@underscore} +\capcs _ {soulignement~: \_}{}{\@underscore} +%x \capac ` {in a \<number> context, \ascii\ code for character that follows}*{@lquote} +\capcs ` {accent grave en texte, comme dans \`e}{}{\@lquote} +\capac { {d\'ebute un groupe}{}{@lbrace} +\capcs { {d\'elimiteur accolade ouvrante en math\'ematique~ $\{$}{}{\@lbrace} +\capcs | {lignes parall\`eles en math\'ematique~: $\Vert$}{}{\@bar} +\capac } {fin d'un groupe}{}{@rbrace} +\capcs } {d\'elimiteur accolade fermante en math\'ematique~: $\}$}{}{\@rbrace} +\capac ~ {espace inter-mot sur lequel une ligne ne sera pas coup\'ee}{}{@not} +\capcs ~ {accent tilde en texte, comme dans \~a}{}{\@not} +\capcs aa {lettre scandinave~: \aa}{}{} +\capcs AA {lettre scandinave~: \AA}{}{} +\capcs above {produit une fraction avec une barre d'\'epaisseur sp\'ecifi\'ee}*{} +\capcs abovedisplayshortskip {ressort que \TeX\ ins\'ere avant un affichage quand la + ligne pr\'ec\'edente d\'epasse l'indentation d'affichage, par + d\'efaut 0\pt\ plus 3\pt}*{} +\capcs abovedisplayskip {ressort que \TeX\ ins\'ere avant un affichage quand la + ligne pr\'ec\'edente ne d\'epasse pas l'indentation d'affichage, par default 12\pt\ + plus 3\pt\ minus 9\pt}*{} +\capcs abovewithdelims {produit une fraction avec une barre d'\'epaisseur sp\'ecifi\'ee + et entour\'ee des d\'elimiteurs sp\'ecifi\'es}*{} +\capcs accent {met l'accent sp\'ecifi\'e sur le caract\`ere suivant}*{} +\capcs active {code de cat\'egorie pour des caract\`eres actifs, c'est-\`a-dire, le nombre $13$}{}{} +\capcs acute {accent aigu en math\'ematique, comme dans $\acute x$}{}{} +\capcs adjdemerits {d\'em\'erites additionnels pour une coupure de ligne qui seront mises dans + des lignes adjacentes avec un espacement de mot incompatible, par d\'efaut~10000}*{} +\capcs advance {ajoute un nombre \`a un registre |\\count|}*{} +\capcs advancepageno {si |\\pageno| est positif, ajoute un~; + s'il est n\'egatif, soustrait un}{}{} +\capcs ae {ligature \ae}{}{} +\capcs AE {ligature \AE}{}{} +\capcs afterassignment {attend, pour d\'evelopper le token suivant, que + l'assignement d'apr\`es soit effectu\'e}*{} +\capcs aftergroup {attend, pour d\'evelopper le token suivant, la fin + du groupe courant}*{} +\capcs aleph {lettre h\'ebra\^\i que seule en math\'ematique~: $\aleph$}{}{} +\capcstwo allowbreak {fait |\\penalty0|, c'est-\`a-dire, autorise une coupure de ligne ou + de page l\`a o\`u elle ne devrait pas \^etre}{}{hallowbreak:vallowbreak} +\capcs alpha {lettre math\'ematique grecque $\alpha$}{}{} +\capcs amalg {op\'erateur d'amalgamation~: $\amalg$}{}{} +\capcs angle {symbole d'angle~: $\angle$}{}{} +\capcs approx {relation d'approximation~: $\approx$}{}{} +\capcs arccos {fonction arc cosinus~: $\arccos$}{}{} +\capcs arcsin {fonction arc sinus~: $\arcsin$}{}{} +\capcs arctan {fonction arc tangente~: $\arctan$}{}{} +\capcs arg {fonction argument (phase)~: $\arg$}{}{} +\capcs arrowvert {partie verticale d'une double fl\`eche extensible}{}{} +\capcs Arrowvert {partie verticale d'une fl\`eche simple extensible}{}{} +\capcs ast {op\'erateur ast\'erisque~: $\ast$}{}{} +\capcs asymp {relation asymptote~: $\asymp$}{}{} +\capcs atop {produit une fraction sans barre de fraction}*{} +\capcs atopwithdelims {produit une fraction sans barre de fraction et + entour\'ee des d\'elimiteurs sp\'ecifi\'es}*{} +\capcs b {accent barre du dessous en math\'ematique, comme dans $\b x$}{}{} +\capcs backslash {symbole antislash~: $\backslash$}{}{} +\capcs badness {la m\'ediocrit\'e du ressort mis dans la derni\`ere bo\^\i te + fabriqu\'ee}*{} +\capcs bar {accent barre en math\'ematique, comme dans $\bar x$}{}{} +\capcs baselineskip {ressort pour la distance verticale normale entre une ligne de base + et la suivante, par d\'efaut 12\pt}*{} +\capcs batchmode {ne s'arr\^ete pas sur les erreurs et n'\'ecrit rien sur le terminal}*{} +\capcs begingroup {d\'ebute un groupe termin\'e par |\\endgroup|}*{} +\capcs beginsection {d\'ebute une subdivision majeure d'un document}{}% + {\@beginsection} +\capcs belowdisplayshortskip {ressort que \TeX\ ins\`ere apr\`es un affichage quand la + ligne pr\'ec\'edente d\'epasse l'indentation de l'affichage, + par d\'efaut 7\pt\ plus 0.3\pt\ minus 4\pt}*{} +\capcs belowdisplayskip {ressort que \TeX\ ins\`ere apr\`es un affichage quand la + ligne pr\'ec\'edente ne d\'epasse pas l'indentation de l'affichage, + par d\'efaut 12\pt\ plus 3\pt\ minus 9\pt}*{} +\capcs beta {lettre grecque math\'ematique $\beta$}{}{} +\capcs bf {utilise le gras, c'est-\`a-dire, fait |\\tenbf\\fam=\\bffam|}{}{} +\capcs bffam {famille grasse en math\'ematique}{}{} +\capcs bgroup {caract\`ere de d\'ebut de groupe implicite}{}{} +\capcs big {rend le d\'elimiteur sp\'ecifi\'e plus grand qu'\`a l'ordinaire, mais + encore assez petit pour du texte}{}{} +\capcs Big {rend le d\'elimiteur sp\'ecifi\'e haut de 11.5\pt}{}{} +\capcs bigbreak {indique une coupure de page d\'esirable avec |\\penalty-200| + et produit un ressort |\\bigskipamount|}{}{} +\capcs bigcap {grand op\'erateur cap (non, cela ne produit pas une grande + lettre capitale~!)~: $\bigcap$}{}{} +\capcs bigcirc {grand op\'erateur cercle~: $\bigcirc$}{}{} +\capcs bigcup {grand op\'erateur coupe~: $\bigcup$}{}{} +\capcs bigg {rend le d\'elimiteur sp\'ecifi\'e haut de 14.5\pt}{}{} +\capcs Bigg {rend le d\'elimiteur sp\'ecifi\'e haut de 17.5\pt}{}{} +\capcs biggl {taille comme |\\bigg|, mais espac\'e comme une ouverture}{}{} +\capcs Biggl {taille comme |\\Bigg|, mais espac\'e comme une ouverture}{}{} +\capcs biggm {taille comme |\\bigg|, mais espac\'e comme une relation}{}{} +\capcs Biggm {taille comme |\\Bigg|, mais espac\'e comme une relation}{}{} +\capcs biggr {taille comme |\\bigg|, mais espac\'e comme une fermeture}{}{} +\capcs Biggr {taille comme |\\Bigg|, mais espac\'e comme une fermeture}{}{} +\capcs bigl {taille comme |\\big|, mais espac\'e comme une ouverture}{}{} +\capcs Bigl {taille comme |\\Big|, mais espac\'e comme une ouverture}{}{} +\capcs bigm {taille comme |\\big|, mais espac\'e comme une relation}{}{} +\capcs Bigm {taille comme |\\Big|, mais espac\'e comme une relation}{}{} +\capcs bigodot {grand op\'erateur cercle point\'e~: $\bigodot$}{}{} +\capcs bigoplus {grand op\'erateur cercle plus~: $\bigoplus$}{}{} +\capcs bigotimes {grand op\'erateur cercle multipli\'e~: $\bigotimes$}{}{} +\capcs bigr {taille comme |\\big|, mais espac\'e comme une fermeture}{}{} +\capcs Bigr {taille comme |\\Big|, mais espac\'e comme une fermeture}{}{} +\capcs bigskip {produit un ressort |\\bigskipamount|}{}{} +\capcs bigskipamount {ressort pour une grand saut vertical, par d\'efaut 12\pt\ + plus 4\pt\ minus 4\pt}{}{} +\capcs bigsqcup {grand op\'erateur en coupe carr\'e~: $\bigsqcup$}{}{} +\capcs bigtriangledown {op\'erateur en triangle pointant vers le bas~: + $\bigtriangledown$}{}{} +\capcs bigtriangleup {op\'erateur en triangle pointant vers le haut~: $\bigtriangleup$}{}{} +\capcs biguplus {grand op\'erateur en coupe avec plus~: $\biguplus$}{}{} +\capcs bigvee {grand op\'erateur logique ``ou''~: $\bigvee$}{}{} +\capcs bigwedge {grand op\'erateur logique ``et''~: $\bigwedge$}{}{} +\capcs binoppenalty {p\'enalit\'e suppl\'ementaire pour une coupure apr\`es un op\'erateur + math\'ematique binaire, par d\'efaut~700}*{} +\capcs bmod {op\'erateur modulus, comme dans $n \bmod 2$}{}{} +\capcs bordermatrix {produit une matrice avec des labels de rang\'ees et de colonnes}{}{} +\capcs bot {symbole du bas d'un treillis ~: $\bot$}{}{} +\capcs botmark {le dernier \'el\'ement marqu\'e de la page qui vient d'\^etre mis en bo\^\i te}*{} +\capcs bowtie {relation en n\oe ud papillon~: $\bowtie$}{}{} +\capcs box {affiche la bo\^\i te d'un registre de bo\^\i te sp\'ecifi\'e + dans la liste courante, et vide le registre}*{} +\capcs boxmaxdepth {profondeur maximale des vbox, par d\'efaut |\\maxdimen|}*{} +\capcs brace {|\char36 n\\brace k\char36| produit + une notation entre accolade~: $n \brace k$}{}{} +\capcs bracevert {morceau vertival d'une grande accolade extensible }{}{} +\capcs brack {|\char36 n\\brack k\char36| produit une notation entre crochets~: $n \brack k$}{}{} +\capcstwo break {fait |\\penalty-10000|, c'est-\`a-dire., force une coupure de ligne + ou de page}{}{hbreak:vbreak} +\capcs breve {accent bref en math\'ematique, comme dans $\breve x$}{}{} +\capcs brokenpenalty {p\'enalit\'e pour une coupure de ligne sur un \'el\'ement discr\'etionnaire, par + d\'efaut~100}*{} +\capcs buildrel {produit une formule sp\'ecifi\'ee sur la relation sp\'ecifi\'e}{}{} +\capcs bullet {operateur bullet ~: $\bullet$}{}{} +\capcs bye {|\\vfill| la derni\`ere page avec de l'espace blanc, la |\\supereject|, + et |\\end| l'ex\'ecution}{}{\@bye} +\capcs c {accent c\'edille en texte, comme dans \c c}{}{} +\capcs cal {utilise une police calligraphique pour des lettres capitales en math\'ematique, + comme dans $\cal XYZ$}{}{} +\capcs cap {op\'erateur cap~: $\cap$}{}{} +\capcs cases {produit des cas en math\'ematique, comme dans $\bigl\{{\cdots\atop\cdots}$}{}{} +\capcs catcode {le code de cat\'egorie d'un caract\`ere sp\'ecifi\'e}*{} +\capcs cdot {op\'erateur point centr\'e~: $\cdot$}{}{} +\capcs cdotp {ponctuation point centr\'e~: $\cdotp$}{}{} +\capcs cdots {points centr\'es en math\'ematique~: $\cdots$}{}{} +\capcs centerline {produit une ligne avec son texte centr\'e}{}{} +\capcs char {produit le caract\`ere de la police courante avec le code + sp\'ecifi\'e}*{} +\capcs chardef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'ee comme \'etant un code de + caract\`ere, un nombre entre 0 et $255$}*{} +\capcs check {accent tch\`eque en math\'ematique, comme dans $\check x$}{}{} +\capcs chi {lettre grecque math\'ematique $\chi$}{}{} +\capcs choose {|\char36 n\\choose k\char36| produit une notation combinatoire~: + $n \choose k$}{}{} +\capcs circ {op\'eration cercle~: $\circ$}{}{} +\capcs cleaders {produit une r\`eglure avec la moiti\'e de l'espace restant avant + la premi\`ere bo\^\i te et l'autre moiti\'e apr\`es la derni\`ere}*{} +\capcs cleartabs {efface toutes les tabulations pour des alignements tabul\'es}{}{} +\capcs closein {ferme un flot d'entr\'ee sp\'ecifi\'e}*{} +\capcs closeout {ferme un flot de sortie sp\'ecifi\'e}*{} +\capcs clubpenalty {p\'enalit\'e additionnelle pour une ligne seule restante avant + une coupure de page, par d\'efaut~150}*{} +\capcs clubsuit {symbole tr\`efle~: $\clubsuit$}{}{} +\capcs colon {symbole : en math\'ematique~: $:$}{}{} +\capcs cong {relation congruence~: $\cong$}{}{} +\capcs coprod {op\'erateur co-produit~: $\coprod$}{}{} +\capcs copy {comme |\\box|, mais n'efface pas le registre}*{} +\capcs copyright {marque de copyright~: \copyright}{}{} +\capcs cos {fonction cosinus~: $\cos$}{}{} +\capcs cosh {fonction cosinus hyperbolique~: $\cosh$}{}{} +\capcs cot {fonction cotangente~: $\cot$}{}{} +\capcs coth {fonction cotangente hyperbolique~: $\coth$}{}{} +\capcs count {le registre entier sp\'ecifi\'e}*{} +\capcs countdef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'ee comme \'etant un nombre + correspondant \`a un registre |\\count|}*{} +\capcs cr {termine une rang\'ee (ou une colonne) dans un alignement}*{} +\capcs crcr {ne fait rien si la derni\`ere commande \'etait |\\cr| ou |\\noalign|~; + autrement, \'equivalent \`a |\\cr|}*{} +\capcs csc {fonction co-s\'ecante~: $\csc$}{}{} +\capcs csname {d\'ebute un nom de s\'equence de contr\^ole devant \^etre termin\'e par |\\endcsname|}*{} +\capcs cup {op\'erateur cup~: $\cup$}{}{} +\capcs d {accent point en dessous en texte, comme dans \d r}{}{} +\capcs dag {symbole dague en texte~: \dag}{}{} +\capcs dagger {op\'erateur dague en math\'ematique~: $\dagger$}{}{} +\capcs dashv {relation touren \`a droite~: $\dashv$}{}{} +\capcs day {jour courant du mois, comme un nombre}*{} +\capcs ddag {symbole double dague en texte~: \ddag}{}{} +\capcs ddagger {op\'erateur double dague en math\'ematique~: $\ddagger$}{}{} +\capcs ddot {accent deux points en math\'ematique~: $\ddot x$}{}{} +\capcs ddots {points en diagonale en math\'ematique~: \smash{$\ddots$}}{}{} +\capcs deadcycles {nombre d'initialisations d'|\\output| depuis le dernier + |\\shipout|}*{} +\capcs def {d\'efini une s\'equence de contr\^ole comme \'etant une macro}*{} +\capcs defaulthyphenchar {code du caract\`ere de c\'esure par d\'efaut}*{} +\capcs defaultskewchar {code caract\`ere accent par d\'efaut }*{} +\capcs deg {fonction degr\'e~: $\deg$}{}{} +\capcs delcode {le code d\'elimiteur d'un caract\`ere sp\'ecifi\'e}*{} +\capcs delimiter {produit un d\'elimiteur sp\'ecifi\'e}*{} +\capcs delimiterfactor {1000 fois le ratio de la taille minimum d'un + d\'elimiteur par rapport \`a la taille qui recouvrirait compl\`etement la formule, par + d\'efaut~901}*{} +\capcs delimitershortfall {diff\'erence minimum entre une hauteur de formule et + une hauteur de d\'elimiteur, par d\'efaut 5\pt}*{} +\capcs delta {lettre grecque math\'ematique $\delta$}{}{} +\capcs Delta {lettre grecque math\'ematique $\Delta$}{}{} +\capcs det {fonction d\'eterminant~: $\det$}{}{} +\capcs diamond {op\'erateur diamant~: $\diamond$}{}{} +\capcs diamondsuit {symbole carr\'e~: $\diamondsuit$}{}{} +\capcs dim {fonction dimension~: $\dim$}{}{} +\capcs dimen {le registre de dimension sp\'ecifi\'e}*{} +\capcs dimendef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'ee comme \'etant un nombre + correspondant \`a un registre |\\dimen|}*{} +\capcs discretionary {sp\'ecifie trois textes, les deux premiers pour avant et + apr\`es une coupure de ligne, le troisi\`eme quand il n'y a pas de coupure de ligne}*{} +\capcs displayindent {\TeX\ met ceci pour l'indentation d'un affichage}*{} +\capcs displaylimits {place des limites sur et sous des op\'erateurs seulement en style + d'affichage}*{} +\capcs displaylines {produit un affichage multi-lignes sp\'ecifi\'e avec chaque + ligne centr\'ee}{}{} +\capcs displaystyle {utilise la taille displaystyle dans une formule}*{} +\capcs displaywidowpenalty {p\'enalit\'e pour une ligne seule d\'ebutant une page + juste avant un affichage, par d\'efaut~50}*{} +\capcs displaywidth {\TeX\ met ceci pour la largeur d'un affichage}*{} +\capcs div {op\'erateur division~: $\div$}{}{} +\capcs divide {divise un registre |\\count| sp\'ecifi\'e par un entier sp\'ecifi\'e}*{} +\capcs dot {accent point en math\'ematique, comme dans $\dot x$}{}{} +\capcs doteq {relation d'\'egalit\'e point\'ee~: $\doteq$}{}{} +\capcs dotfill {remplit un espace horizontal d\'elimit\'e avec des points}{}{} +\capcs dots {ellipse pour des suites~: $x_1$, \dots, $x_n$}{}{} +\capcs doublehyphendemerits {d\'em\'erites pour deux lignes cons\'ecutives se terminant + par de c\'esures, par d\'efaut~10000}*{} +\capcs downarrow {relation~: $\downarrow$}{}{} +\capcs Downarrow {relation~: $\Downarrow$}{}{} +\capcs downbracefill {remplit la hbox inclue avec une accolade vers le bas ~: + \hbox to 3.5em{\downbracefill}}{}{} +\capcs dp {profondeur de la bo\^\i te d'un registre de bo\^\i te sp\'ecifi\'e}*{} +\capcs dump {termine l'ex\'ecution et produit un fichier de format}*{} +\capcs edef {d\'efinit une s\'equence de contr\^ole comme \'etant une macro, + d\'eveloppant imm\'ediatement le texte de remplacement}*{} +\capcs egroup {caract\`ere de fin de groupe implicite}{}{} +\capcs eject {termine le paragraphe courant et force une coupure de page, + en \'etirant la page courante}{}{} +\capcs ell {lettre ``l'' manuscrite en math\'ematique~: $\ell$}{}{} +\capcs else {cas faux ou par d\'efaut pour une condition}*{\@else} +\capcs emergencystretch {\'etirement suppl\'ementaire ajout\'e \`a toute ligne si + |\\tol\-er\-ance| n'est pas satisfait}*{} +\capcs empty {macro dont le d\'eveloppement ne fait rien}{}{} +\capcs emptyset {symbole d'ensemble vide~: $\emptyset$}{}{} +\capcs end {|\\output| la derni\`ere page et termine l'ex\'ecution}*{} +\capcs endcsname {termine un nom de s\'equence de contr\^ole commenc\'e par + |\\csname|}*{} +\capcs endgraf {\'equivalent \`a la primitive |\\par|}{}{} +\capcs endgroup {termine un groupe d\'ebut\'e par |\\begingroup|}*{} +\capcs endinput {termine l'entr\'ee du fichier courant}*{} +\capcs endinsert {fin d'insertion}{}{} +\capcs endline {\'equivalent \`a la primitive |\\cr|}{}{} +\capcs endlinechar {caract\`ere que \TeX\ ins\`ere \`a la fin de chaque ligne + entr\'ee, par d\'efaut |\twocarets M|}*{} +\capcs enskip {ressort horizontal de largeur \frac1/2\em}{}{} +\capcs enspace {cr\'enage de \frac1/2\em}{}{} +\capcs epsilon {lettre grecque math\'ematique $\epsilon$}{}{} +\capcs eqalign {produit un affichage multi-lignes sp\'ecifi\'e dont les parties indiqu\'ees + sont align\'ees verticalement}{}{} +\capcs eqalignno {produit un affichage multi-lignes sp\'ecifi\'e + avec des num\'eros d'\'equation dont les parties indiqu\'ees sont align\'ees verticalement}{}{} +\capcs eqno {met un num\'ero d'\'equation sp\'ecifi\'e \`a droite d'un affichage}*{} +\capcs equiv {relation d'\'equivalence~: $\equiv$}{}{} +\capcs errhelp {liste de token dont le d\'eveloppement \TeX\ s'affiche quand l'utilisateur + demande de l'aide en r\'eponse \`a un |\\errmessage|}*{} +\capcs errmessage {donne un message d'erreur sp\'ecifi\'e}*{} +\capcs errorcontextlines {le nombre de lignes de contexte que \TeX\ + affiche pour une erreur, par d\'efaut~5}*{} +\capcs errorstopmode {stoppe pour une interaction sur des messages d'erreur}*{} +\capcs escapechar {caract\`ere avec lequel \TeX\ pr\'ec\`ede les noms de s\'equence de contr\^ole + qui sont affich\'es}*{} +\capcs eta {lettre grecque math\'ematique $\eta$}{}{} +\capcs everycr {liste de token que \TeX\ d\'eveloppe apr\`es un |\\cr| ou un |\\crcr| + non suivi de |\\cr| ou de |\\noalign|}*{} +\capcs everydisplay {liste de token que \TeX\ d\'eveloppe quand un affichage math\'ematique d\'ebute}*{} +\capcs everyhbox {liste de token que \TeX\ d\'eveloppe quand une hbox d\'ebute}*{} +\capcs everyjob {liste de token que \TeX\ d\'eveloppe quand une ex\'ecution d\'ebute}*{} +\capcs everymath {liste de token que \TeX\ d\'eveloppe quand un texte en mode math\'ematique + d\'ebute}*{} +\capcs everypar {liste de token que \TeX\ d\'eveloppe quand un paragraphe d\'ebute}*{} +\capcs everyvbox {liste de token que \TeX\ d\'eveloppe quand une vbox d\'ebute}*{} +\capcs exhyphenpenalty {p\'enalit\'e suppl\'ementaire pour une coupure de ligne apr\`es + une c\'esure explicite, par d\'efaut~50}*{} +\capcs exists {symbole ``il existe''~: $\exists$}{}{} +\capcs exp {fonction exponentielle~: $\exp$}{}{} +\capcs expandafter {ne d\'eveloppe le token suivant qu'apr\`es d\'eveloppement du token + le suivant}*{} +\capcs fam {famille de police que \TeX\ utilise pour des caract\`eres de classe 7 + (c'est-\`a-dire, des variables) en mathi\'ematiques}*{} +\capcs fi {termine une condition}*{\@fi} +\capcs filbreak {force une coupure de page \`a moins que le texte contenant un autre |\\filbreak| + convienne aussi sur la page}{}{} +\capcs finalhyphendemerits {p\'enalit\'e pour l'avant-derni\`ere ligne coup\'ee sur une + c\'esure, par d\'efaut~5000}*{} +\capcs firstmark {premier \'el\'ement marqu\'e sur la page qui vient d'\^etre mise en bo\^\i te}*{} +\capcs fivebf {utilise une police grasse en $5$ points, |cmbx5|}{}{} +\capcs fivei {utilise une police math\'ematique italique en $5$ points, |cmmi5|}{}{} +\capcs fiverm {utilise une police romaine en $5$ points, |cmr5|}{}{} +\capcs fivesy {utilise une police de symbole en $5$ points, |cmsy5|}{}{} +\capcs flat {symbole b\'emol en musique~: $\flat$}{}{} +\capcs floatingpenalty {p\'enalit\'e pour des insertions qui sont s\'epar\'ees sur des + pages, par d\'efaut~0}*{} +\capcs fmtname {nom du format courant}{}{} +\capcs fmtversion {num\'ero de version du format courant}{}{} +\capcs folio {produit |\\pageno| comme des caract\`eres~; + en chiffres romains s'il est n\'egatif}{}{} +\capcs font {d\'efinit une s\'equence de contr\^ole sp\'ecifique pour s\'electionner une police}*{} +\capcs fontdimen {un param\`etre sp\'ecifi\'e d'une police sp\'ecifi\'ee}*{} +\capcs fontname {produit le nom de fichier d'une police sp\'ecifi\'ee en caract\`eres}*{} +\capcs footline {liste de token qui produit une ligne en bas de chaque page}{}{} +\capcs footnote {produit une note de pied de page sp\'ecifi\'ee + avec une marque de r\'ef\'erence sp\'ecifi\'ee}{}{} +\capcs forall {symbole ``pour tout''~: $\forall$}{}{} +\capcs frenchspacing {rend l'espacement inter-mot ind\'ependant de la ponctuation}{}{} +\capcs frown {relation frown~: $\frown$}{}{} +\capcs futurelet {assigne le troisi\`eme token suivant \`a une s\'equence de contr\^ole + sp\'ecifi\'ee, puis d\'eveloppe le deuxi\`eme token}*{} +\capcs gamma {lettre grecque math\'ematique $\gamma$}{}{} +\capcs Gamma {lettre grecque math\'ematique $\Gamma$}{}{} +\capcs gcd {fonction plus grand d\'enominateur commun~: $\gcd$}{}{} +\capcs gdef {\'equivalent \`a |\\global\\def|, c'est-\`a-dire, d\'efinit une macro globale}*{} +\capcs ge {relation plus grand ou \'egal~: $\ge$}{}{} +\capcs geq {\'equivalent \`a |\\ge|}{}{} +\capcs gets {relation ''donne''~: $\gets$}{}{} +\capcs gg {relation beaucoup plus grand que~: $\gg$}{}{} +\capcs global {rend la d\'efinition suivante globale}*{} +\capcs globaldefs {remplace le pr\'efixe|\\global| dans les assignements}*{} +\capcs goodbreak {indique une coupure de page souhaitable avec |\\penalty-500|}{}{} +\capcs grave {accent grave en math\'ematique, comme dans $\grave x$}{}{} +\capcs H {accent tr\'ema hongrois en texte, comme dans \H o}{}{} +\capcs halign {aligne du texte en colonnes}*{} +\capcs hang {indente le paragraphe courant de |\\parindent|}{}{} +\capcs hangafter {num\'ero de ligne d\'ebutant une indentation hanging}*{} +\capcs hangindent {espace pour indentation hanging}*{} +\capcs hat {accent circonflexe en math\'ematique, comme dans $\hat x$}{}{} +\capcs hbadness {seuil de badness pour reporter une erreur "underfull or overfull + hboxes", par d\'efaut 1000}*{} +\capcs hbar {symbole math\'ematique~: $\hbar$}{}{} +\capcs hbox {produit une hbox sp\'ecifi\'ee}*{} +\capcs headline {liste de token qui produit la ligne en haut + de chaque page}{}{} +\capcs heartsuit {symbole c\oe ur~: $\heartsuit$}{}{} +\capcs hfil {produit un ressort horizontal infiniment \'etirable}*{} +\capcs hfill {produit un ressort horizontal encore plus infiniment \'etirable + que celui produit par |\\hfil|}*{} +\capcs hfilneg {produit un ressort horizontal n\'egatif infiniment \'etirable}*{} +\capcs hfuzz {seuil pour reporter overfull hboxes, par d\'efaut + 0.1\pt}*{} +\capcs hglue {produit un ressort horizontal qui ne disparait pas sur des + coupure de ligne}{}{} +\capcs hidewidth {ignore la largeur d'une entr\'ee d'un alignement, pour qu'il + l'\'etende au dehors de sa boite dans la direction de |\\hidewidth|}{}{} +\capcs hoffset {offset horizontal relatif d'un pouce par rapport au bord gauche du papier}*{} +\capcs holdinginserts {si positif, n'enl\`eve pas d'insertion de la + page courante}*{} +\capcs hom {fontion homologie~: $\hom$}{}{} +\capcs hookleftarrow {relation~: $\hookleftarrow$}{}{} +\capcs hookrightarrow {relation~: $\hookrightarrow$}{}{} +\capcs hphantom {produit une formule invisible de hauteur et largeur z\'ero mais + de largeur naturelle}{}{} +\capcs hrule {produit un filet horizontal~; l\'egale seulement en mode vertical}*{} +\capcs hrulefill {rempli un espace d\'elimit\'e d'un filet horizontal}{}{} +\capcs hsize {longueur de ligne, par d\'efaut 6.5\thinspace in}*{} +\capcs hskip {produit un ressort horizontal sp\'ecifi\'e}*{} +\capcs hss {produit un ressort horizontal qui est infiniment \'etirable et + infiniment r\'etr\'ecissable}*{} +\capcs ht {la hauteur de la bo\^\i te d'un registre de bo\^\i te sp\'ecifi\'e}*{} +\capcs hyphenation {ajoute des mots sp\'ecifi\'es au dictionnaire + d'exception de c\'esure}*{} +\capcs hyphenchar {le caract\`ere de c\'esure d'une police sp\'ecifi\'ee}*{} +\capcs hyphenpenalty {p\'enalit\'e suppl\'ementaire pour une coupure de ligne sur une c\'esure, par + d\'efaut~50}*{} +\capcs i {lettre `\i' sans point \`a utiliser avec des accents}{}{} +\capcs ialign {d\'ebute un |\\halign| avec le ressort |\\tabskip| \`a z\'ero et + |\\everycr| vide}{}{} +\capcs if {teste si deux tokens sp\'ecifi\'es ont le m\^eme code de caract\`ere}*{\@if} +\capcs ifcase {d\'eveloppe un cas $n$ pour un valeur $n$ sp\'ecifi\'ee}*{\@ifcase} +\capcs ifcat {teste si deux tokens sp\'ecifi\'es ont le m\^eme code de + cat\'egorie}*{\@ifcat} +\capcs ifdim {teste une relation sp\'ecifi\'ee entre deux dimensions }*{\@ifdim} +\capcs ifeof {teste la fin d'un fichier sp\'ecifi\'e}*{\@ifeof} +\capcs iff {relation si et seulement si~: $\iff$}{}{} +\capcs iffalse {test qui est toujours faux}*{\@iffalse} +\capcs ifhbox {teste si un registre de bo\^\i te sp\'ecifi\'e contient une hbox}*{\@ifhbox} +\capcs ifhmode {teste si \TeX\ est dans un mode horizontal}*{\@ifhmode} +\capcs ifinner {teste si \TeX\ est dans un mode interne}*{\@ifinner} +\capcs ifmmode {teste si \TeX\ est dans un mode math\'ematique}*{\@ifmmode} +\capcs ifnum {teste une relation sp\'ecifi\'ee entre deux nombres}*{\@ifnum} +\capcs ifodd {teste si un nombre sp\'ecifi\'e est impair}*{\@ifodd} +\capcs iftrue {test qui est toujours vrai}*{\@iftrue} +\capcs ifvbox {teste si un registre de bo\^\i te sp\'ecifi\'e contient une vbox}*{\@ifvbox} +\capcs ifvmode {teste si \TeX\ est dans un mode vertical}*{\@ifvmode} +\capcs ifvoid {teste si un registre de bo\^\i te sp\'ecifi\'e est vide}*{\@ifvoid} +\capcs ifx {teste si deux tokens sont les m\^emes, ou si + deux macros ont les m\^emes d\'efinitions finales}*{\@ifx} +\capcs ignorespaces {ignore tous les tokens espaces suivants}*{} +\capcs Im {symbole d'une partie imaginaire d'un complexe~: $\Im$}{}{} +\capcs imath {lettre `$\imath$' sans point \`a utiliser avec des accents math\'ematiques}{}{} +\capcs immediate {effectue l'op\'eration de fichier sp\'ecifi\'ee sans d\'elai}*{} +\capcs in {relation ``appartient \`a''~: $\in$}{}{} +\capcs indent {produit une bo\^\i te vide de largeur |\\parindent| et entre + en mode horizontal}*{} +\capcs inf {fonction inf\'erieur~: $\inf$}{}{} +\capcs infty {symbole infini~: $\infty$}{}{} +\capcs input {commence \`a lire \`a partir d'un fichier sp\'ecifi\'e}*{} +\capcs inputlineno {le num\'ero de ligne courante du fichier d'entr\'ee courant}*{} +\capcs insert {produit une insertion d'une classe sp\'ecifi\'ee}*{} +\capcs insertpenalties {somme des p\'enalit\'es des insertions}*{} +\capcs int {symbole int\'egrale~: $\int$}{}{} +\capcs interlinepenalty {p\'enalit\'e suppl\'ementaire pour une coupure de page + entre des lignes d'un paragraphe, par d\'efaut~0}*{} +\capcs iota {lettre grecque math\'ematique $\iota$}{}{} +\capcs it {utilise des italiques, c'est-\`a-dire, fait |\\tenit\\fam=\\itfam|}{}{} +\capcs item {d\'ebute un paragraphe avec une indentation accroch\'ee de |\\parindent| + et pr\'ec\'ed\'ee d'un label sp\'ecifi\'e}{}{} +\capcs itemitem {comme |\\item|, mais avec une indentation de |2\\parindent|}{}{} +\capcs itfam {famille italique en math\'ematique}{}{} +\capcs j {lettre `\j' sans point, pour utiliser avec des accents}{}{} +\capcs jmath {lettre `$\jmath$' sans point, pour utiliser avec des accents math\'ematiques}{}{} +\capcs jobname {nom de base du fichier par lequel \TeX\ a \'et\'e appel\'e}*{} +\capcs jot {unit\'e de mesure for opening up displays}{}{} +\capcs kappa {lettre grecque math\'ematique $\kappa$}{}{} +\capcs ker {fonction kern~: $\ker$}{}{} +\capcs kern {produit un montant d'espace sp\'ecifi\'e sur lequel + une coupure n'est pas autoris\'ee}*{} +\capcs l {lettre polonaise~: \l}{}{} +\capcs L {lettre polonaise~: \L}{}{} +\capcs lambda {lettre grecque math\'ematique $\lambda$}{}{} +\capcs Lambda {lettre grecque math\'ematique $\Lambda$}{}{} +\capcs land {op\'erateur logique ``et''~: $\land$}{}{} +\capcs langle {left angle delimiter~: $\langle$}{}{} +\capcs language {le jeu de patrons de c\'esure courant}*{} +\capcs lastbox {retrouve et enl\`eve le dernier \'el\'ement de la liste courante, si c'est une + bo\^\i te}*{} +\capcs lastkern {retrouve le dernier \'el\'ement de la liste courante, si c'est un + cr\'enage}*{} +\capcs lastpenalty {enl`eve le dernier item de la liste courante, si c'est une p/'enalit\'e }*{} +\capcs lastskip {enl\`eve le dernier item de la liste courante, si c'est une glue}*{} +\capcs lbrace {d\'elimiteur accolade gauche~: $\lbrace$}{}{} +\capcs lbrack {d\'elimiteur crochet gauche~: $\lbrack$}{}{} +\capcs lccode {le code de caract\`ere pour la forme minuscule d'une lettre}*{} +\capcs lceil {d\'elimiteur plafond gauche~: $\lceil$}{}{} +\capcs ldotp {point sur la ligne de base comme ponctuation~: $\ldotp$}{}{} +\capcs ldots {points sur la ligne de base en math\'ematique~: $\ldots$}{}{} +\capcs le {relation inf\'erieur ou \'egal~: $\le$}{}{} +\capcs leaders {remplit un espace horizontal ou vertical sp\'ecifi\'e en r\'ep\'etant un + filet ou une bo\^\i te sp\'ecifi\'ee}*{} +\capcs left {produit le d\'elimiteur sp\'ecifi\'e, en l'agrandissant pour couvrir la + sous-formule suivante se finissant par |\\right|}*{} +\capcs leftarrow {relation~: $\leftarrow$}{}{} +\capcs Leftarrow {relation~: $\Leftarrow$}{}{} +\capcs leftarrowfill {rempli la hbox contenante avec un |\\leftarrow|~: + \hbox to 3.5em{\leftarrowfill}}{}{} +\capcs leftharpoondown {relation~: $\leftharpoondown$}{}{} +\capcs leftharpoonup {relation~: $\leftharpoonup$}{}{} +\capcs lefthyphenmin {taille du plus petit fragment de mot que \TeX\ autorise + avant une c\'esure en d\'ebut d'un mot, par d\'efaut~2}*{} +\capcs leftline {produit une ligne avec son texte pouss\'e vers la marge de gauche}{}{} +\capcs leftrightarrow {relation~: $\leftrightarrow$}{}{} +\capcs Leftrightarrow {relation~: $\Leftrightarrow$}{}{} +\capcs leftskip {ressort que \TeX\ ins\`ere \`a gauche de chaque ligne}*{} +\capcs leq {\'equivalent \`a |\\le|}{}{} +\capcs leqalignno {produit un affichage multi-ligne sp\'ecifi\'e avec des num\'eros d'\'equation + \`a gauche dont les parties indiqu\'ees sont align\'ees verticalement}{}{} +\capcs leqno {d\'epose un num\'ero d'\'equation sp\'ecifi\'e \`a gauche d'un affichage}*{} +\capcs let {d\'efinit une s\'equence de contr\^ole comme \'etant le token suivant}*{} +\capcs lfloor {d\'elimiteur plancher gauche~: $\lfloor$}{}{} +\capcs lg {fonction logarithme~: $\lg$}{}{} +\capcs lgroup {d\'elimiteur groupe gauche (la plus petite taille est montr\'ee ici)~: + $\Big\lgroup$}{}{} +\capcs lim {fonction limite~: $\lim$}{}{} +\capcs liminf {fonction limite inf\'erieur~: $\liminf$}{}{} +\capcs limits {place un exposant sur et un indice sous un + grand op\'erateur}*{} +\capcs limsup {fonction limite sup\'erieure~: $\limsup$}{}{} +\capcs line {produit une ligne de caract\`eres justifi\'ee}{}{} +\capcs linepenalty {p\'enalit\'e pour coupure de ligne ajout\'ee \`a chaque ligne, + par d\'efaut~10}*{} +\capcs lineskip {ressort vertical d'une ligne de base \`a la suivante si les + lignes sont plus proche l'une de l'autre que |\\lineskiplimit|, par d\'efaut 1\pt}*{} +\capcs lineskiplimit {seuil pour utiliser |\\lineskip| au lieu de |\\base\-line\-skip|, par d\'efaut 0\pt}*{} +\capcs ll {relation beaucoup moins que~: $\ll$}{}{} +\capcs llap {produit du texte (sans largeur) \`a partir de la gauche + de la position courante}{}{} +\capcs lmoustache {moiti\'e haute d'une grande accolade~: $\big\lmoustache$}{}{} +\capcs ln {fonction logarithme naturel~: $\ln$}{}{} +\capcs lnot {symbole logique ``non''~: $\lnot$}{}{} +\capcs log {fonction logarithme~: $\log$}{}{} +\capcs long {autorise des tokens |\\par| dans le(s) argument(s) de + la d\'efinition suivante}*{} +\capcs longleftarrow {relation~: $\longleftarrow$}{}{} +\capcs Longleftarrow {relation~: $\Longleftarrow$}{}{} +\capcs longleftrightarrow {relation~: $\longleftrightarrow$}{}{} +\capcs Longleftrightarrow {relation~: $\Longleftrightarrow$}{}{} +\capcs longmapsto {relation~: $\longmapsto$}{}{} +\capcs longrightarrow {relation~: $\longrightarrow$}{}{} +\capcs Longrightarrow {relation~: $\Longrightarrow$}{}{} +\capcs loop {d\'ebute une boucle devant se finir par |\\repeat|}{}{} +\capcs looseness {diff\'erence entre le nombre de lignes d'un paragraphe que vous + voulez par rapport au nombre optimal}*{} +\capcs lor {op\'erateur logique ``ou''~: $\lor$}{}{} +\capcs lower {abaisse une bo\^\i te sp\'ecifi\'e d'un montant sp\'ecifi\'e}*{} +\capcs lowercase {convertit les lettres capitales du texte sp\'ecifi\'e + en minuscules}*{} +\capcs lq {caract\`ere quote gauche pour du texte~: \lq}{}{} +\capcs mag {$1000$ fois le ratio pour agrandir toutes les dimensions}*{} +\capcs magnification {comme |\\mag|, mais n'agrandit pas la taille de la page}{}{} +\capcs magstep {$1000 \cdot 1.2^n$ pour un $n$ sp\'ecifi\'e}{}{} +\capcs magstephalf {$1000\cdot\sqrt{1.2}$}{}{} +\capcs mapsto {relation~: $\mapsto$}{}{} +\capcs mark {produit un \'el\'ement marqu\'e avec un texte sp\'ecifi\'e}*{} +\capcs mathaccent {met un accent math\'ematique sp\'ecifi\'e sur le caract\`ere suivant}*{} +\capcs mathbin {espace une sous-formule sp\'ecifi\'ee comme une op\'eration binaire}*{} +\capcs mathchar {produit le caract\`ere math\'ematique de mathcode sp\'ecifi\'e}*{} +\capcs mathchardef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'ee comme \'etant un mathcode, + un nombre entre 0 et $2^{15}-1$}*{} +\capcs mathchoice {s\'electionne une des quatre sous-formules math\'ematiques sp\'ecifi\'ees + selon le style courant}*{} +\capcs mathclose {espace une sous-formule sp\'ecifi\'ee comme un d\'elimiteur fermant}*{} +\capcs mathcode {le mathcode d'un caract\`ere sp\'ecifi\'e}*{} +\capcs mathinner {espace une sous-formule sp\'ecifi\'ee comme une formule interne, c'est-\`a-dire, + une fraction}*{} +\capcs mathop {espace une sous-formule sp\'ecifi\'ee comme un grand op\'erateur math\'ematique}*{} +\capcs mathopen {espace une sous-formule sp\'ecifi\'ee comme un d\'elimiteur ouvrant}*{} +\capcs mathord {espace une sous-formule sp\'ecifi\'ee comme un caract\`ere ordinaire}*{} +\capcs mathpalette {produit un |\\mathchoice| qui d\'eveloppe une s\'equence de contr\^ole sp\'ecifi\'ee d\'ependant du style courant}{}{} +\capcs mathpunct {espace une sous-formule sp\'ecifi\'ee comme une ponctuation}*{} +\capcs mathrel {espace une sous-formule sp\'ecifi\'ee comme une relation}*{} +\capcs mathstrut {produit une bo\^\i te invisible avec la hauteur et la largeur d'une + parenth\`ese gauche et sans largeur}{}{} +\capcs mathsurround {espace que \TeX\ ins\`ere avant et apr\`es les maths dans le texte}*{} +\capcs matrix {produit une matrice sp\'ecifi\'ee}{}{} +\capcs max {fonction maximum~: $\max$}{}{} +\capcs maxdeadcycles {valeur de |\\deadcycles| sur laquelle \TeX\ se plaint, + et utilise alors sa propre routine de sortie, par d\'efaut~25}*{} +\capcs maxdepth {profondeur maximum de la bo\^\i te en bas d'une page, + par d\'efaut 4\pt}*{} +\capcs maxdimen {plus grande dimension acceptable par \TeX}{}{} +\capcs meaning {produit la signification compr\'ehensible humainement d'un token + sp\'ecifi\'e comme des caract\`eres}*{} +\capcs medbreak {indique une coupure de page + souhaitable avec |\\penalty-100| et produit un ressort |\\medskipamount|}{}{} +\capcs medmuskip {ressort pour un espace math\'ematique moyen, par d\'efaut 4\mud\ plus 2\mud\ + minus 4\mud}*{} +\capcs medskip {produit un ressort |\\medskipamount|}{}{} +\capcs medskipamount {ressort pour un saut vertical moyen, par d\'efaut 6\pt + plus 2\pt\ minus 2\pt}{}{} +\capcs message {affiche le d\'eveloppement du texte sp\'ecifi\'e sur le terminal}*{} +\capcs mid {middle relation~: $\mid$}{}{} +\capcs midinsert {produit le texte sp\'ecifi\'e \`a la position courante si + possible, sinon en haut de la page suivante}{}{} +\capcs min {fonction minimum~: $\min$}{}{} +\capcs mit {utilise des italiques math\'ematiques, c'est-\`a-dire, fait |\\fam=1|}{}{} +\capcs mkern {produit un cr\'enage sp\'ecifi\'e en unit\'es |mu| en math\'ematique}*{} +\capcs models {relation mod\`ele ~: $\models$}{}{} +\capcs month {mois courant, comme un nombre}*{} +\capcs moveleft {d\'eplace une bo\^\i te sp\'ecifi\'e \`a gauche d'un espace sp\'ecifi\'e~; l\'egal + uniquement en mode vertical}*{} +\capcs moveright {d\'eplace une bo\^\i te sp\'ecifi\'e \`a droite d'un espace sp\'ecifi\'e~; l\'egal + uniquement en mode vertical}*{} +\capcs mp {op\'erateur plus et moins~: $\mp$}{}{} +\capcs mskip {produit un ressort sp\'ecifi\'e en unit\'es |mu| en math\'ematique}*{} +\capcs mu {lettre grecque math\'ematique $\mu$}{}{} +\capcs multiply {multiplie un registre |\\count| sp\'ecifi\'e par un entier + sp\'ecifi\'e}*{} +\capcs multispan {fait traverser l'entr\'ee d'alignement suivante un nombre sp\'ecifi\'e + de colonnes (ou de rang\'ees)}{}{} +\capcs muskip {le registre muglue sp\'ecifi\'e}*{} +\capcs muskipdef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'e comme un nombre + correspondant \`a un registre |\\muskip|}*{} +\capcs nabla {symbole diff\'erence \`a l'envers~: $\nabla$}{}{} +\capcs narrower {diminue les marges droite et gauche d'un |\\parindent|}{}{} +\capcs natural {symbole naturel en musique~: $\natural$}{}{} +\capcs nearrow {relation fl\`eche montante vers la droite~: $\nearrow$}{}{} +\capcs ne {relation non \'egal~: $\ne$}{}{} +\capcs neg {symbole logique ``non''~: $\neg$}{}{} +\capcs negthinspace {kern $-\frac1/6$\em}{}{} +\capcs neq {relation non \'egal~: $\neq$}{}{} +\capcs newbox {r\'eserve et nomme un registre |\\box|}{}{\@newbox} +\capcs newcount {r\'eserve et nomme un registre |\\count|}{}{\@newcount} +\capcs newdimen {r\'eserve et nomme un registre |\\dimen|}{}{\@newdimen} +\capcs newfam {r\'eserve et nomme une famille math\'ematique}{}{\@newfam} +\capcs newhelp {nomme un message d'erreur sp\'ecifi\'e}{}{\@newhelp} +\capcs newif {d\'efinit un nouveau test conditionel avec le nom sp\'ecifi\'e}{}{\@newif} +\capcs newinsert {nomme une classe d'insertion et r\'eserve des registres + |\\box|, |\\count|, |\\dimen| et |\\skip| correspondants} + {}{\@newinsert} +\capcs newlanguage {r\'eserve et nomme un |\\language|}{}{\@newlanguage} +\capcs newlinechar {caract\`ere fin de ligne pour |\\write|, etc.}*{} +\capcs newmuskip {r\'eserve et nomme un registre |\\muskip|}{}{\@newmuskip} +\capcs newread {r\'eserve et nomme un flot d'entr\'ee}{}{\@newread} +\capcs newskip {r\'eserve et nomme un registre |\\skip|}{}{\@newskip} +\capcs newtoks {r\'eserve et nomme un registre |\\toks|}{}{\@newtoks} +\capcs newwrite {r\'eserve et nomme un flot de sortie}{}{\@newwrite} +\capcs ni {relation ``dans invers\'e''~: $\ni$}{}{} +\capcs noalign {ins\`ere du mat\'eriel entre des rang\'ees (ou des colonnes) d'un + alignement}*{} +\capcs noboundary {inhibe des ligatures ou cr\'enages dues au |boundarychar| de la police + courante}*{} +\capcstwo nobreak {fait |\\penalty10000|, c'est-\`a-dire, + inhibe une coupure de ligne ou de page}{}{hnobreak:vnobreak} +\capcs noexpand {supprime le d\'eveloppement du token suivant}*{} +\capcs noindent {entre en mode horizontal sans indenter le paragraphe}*{} +\capcs nointerlineskip {inhibe le ressort inter-ligne avant la ligne suivante}{}{} +\capcs nolimits {place un exposant et un indice apr\`es de grands op\'erateurs}*{} +\capcs nonfrenchspacing {rend l'espacement inter-mot d\'ependant de la ponctuation}{}{} +\capcs nonscript {inhibe tout ressort ou cr\'enage suivant + en styles script et scriptscript}*{} +\capcs nonstopmode {ne stoppe pas sur des erreurs, m\^eme celles relatives aux fichiers manquants}*{} +\capcs nopagenumbers {inhibe l'impression des num\'eros de page, c'est-\`a-dire, fait + |\\footline = {\\hfil}|}{}{} +\capcs normalbaselines {met |\\baselineskip|, |\\line\-skip| et + |\\line\-skip\-limit| aux valeurs normales pour la taille de la police courante}{}{} +\capcs normalbaselineskip {valeur de |\\baselineskip| pour la + taille de la police courante}{}{} +\capcs normalbottom {rend la marge du bas identique de page en page}{}{} +\capcs normallineskip {valeur de |\\lineskip| pour la taille de caract\`ere + courante}{}{} +\capcs normallineskiplimit {valeur de |\\lineskiplimit| pour la taille de caract\`ere + courante}{}{} +\capcs not {un |\\/| sans largeur pour construire des n\'egations de relation + mat\'ematiques, comme dans $\not=$}{}{} +\capcs notin {relation n'appartient pas~: $\notin$}{}{} +\capcs nu {lettre grecque math\'ematique $\nu$}{}{} +\capcs null {se d\'eveloppe en une bo\^\i te vide}{}{} +\capcs nulldelimiterspace {espace produit par un d\'elimiteur nul, par + d\'efaut 1.2\pt}*{} +\capcs nullfont {police primitive sans characters}*{} +\capcs number {produit un chiffre sp\'ecifi\'e en caract\`eres}*{} +\capcs nwarrow {relation fl\`eche en haut vers la gauche~: $\nwarrow$}{}{} +\capcs o {lettre danoise~: \o}{}{} +\capcs O {lettre danoise~: \O}{}{} +\capcs obeylines {rend chaque fin de ligne du fichier entr\'ee + \'equivalente \`a |\\par|}{}{} +\capcs obeyspaces {produit un espace dans la sortie pour chaque caract\`ere espace dans + l'entr\'ee}{}{} +\capcs odot {op\'eration point centr\'e~: $\odot$}{}{} +\capcs oe {ligature \oe}{}{} +\capcs OE {ligature \OE}{}{} +\capcs offinterlineskip {inhibe le ressort inter-ligne \`a partir de maintenant}{}{} +\capcs oint {op\'erateur contour int\'egral~: $\oint$}{}{} +\capcs oldstyle {utilise des chiffres elz\'eviriens~: {\oldstyle1234567890}}{}{} +\capcs omega {lettre grecque math\'ematique $\omega$}{}{} +\capcs Omega {lettre grecque math\'ematique $\Omega$}{}{} +\capcs ominus {op\'erateur moins dans un cercle~: $\ominus$}{}{} +\capcs omit {saute un patron de colonne (ou de rang\'ee) dans un alignement}*{} +\capcs openin {pr\'epare un flot d'entr\'ee sp\'ecifi\'e pour lire un fichier}*{} +\capcs openout {pr\'epare un flot de sortie sp\'ecifi\'e pour \'ecrire dans un fichier}*{} +\capcs openup {augmente |\\baselineskip|, |\\lineskip| et + |\\lineskiplimit| d'un montant sp\'ecifi\'e}{}{} +\capcs oplus {op\'erateur plus dans un cercle~: $\oplus$}{}{} +\capcs or {s\'epare les cas d'un |\\ifcase|}*{\@or} +\capcs oslash {op\'erateur divise dans un cercle~: $\oslash$}{}{} +\capcs otimes {op\'erateur multiplie dans un cercle~: $\otimes$}{}{} +\capcs outer {rend la d\'efinition de macro suivante ill\'egale dans des contextes dans + lesquels des tokens sont absorb\'e \`a haute vitesse}*{} +\capcs output {liste de token que \TeX\ d\'eveloppe quand il trouve une coupure de page}*{} +\capcs outputpenalty {si la coupure de page arrive sur une p\'enalit\'e, la valeur + de cette p\'enalit\'e~; sinon z\'ero}*{} +\capcs over {produit une fraction avec une barre d'\'epaisseur par d\'efaut}*{} +\capcs overbrace {produit une accolade recouvrant le haut d'une formule, + comme dans $\overbrace{h+w}{}$}{}{} +\capcs overfullrule {largeur de la r\'eglure d'un ``overfull box''}*{} +\capcs overleftarrow {produit une fl\`eche vers la gauche recouvrant le haut d'une + formule, comme dans $\overleftarrow{r+a}$}{}{} +\capcs overline {produit une ligne recouvrant le haut d'une formule, + comme dans~$\overline{2b}$}*{} +\capcs overrightarrow {produit une fl\`eche vers la droite recouvrant le haut d'une + formule, comme dans $\overrightarrow{i+t}$}{}{} +\capcs overwithdelims {produit une fraction avec une barre d'\'epaisseur par d\'efaut + et surmont\'ee des d\'elimiteurs sp\'ecifi\'es}*{} +\capcs owns {relation appartient~: $\owns$}{}{} +\capcs P {caract\`ere paragraphe en texte~: \P}{}{} +\capcs pagedepth {\TeX\ met ceci \`a la profondeur courante de la page + courante}*{} +\capcs pagefilllstretch {\TeX\ met ceci au montant d'\'etirement |filll| sur + la page courante}*{} +\capcs pagefillstretch {\TeX\ met ceci au montant d'\'etirement |fill| sur + la page courante}*{} +\capcs pagefilstretch {\TeX\ met ceci au montant d'\'etirement |fil| sur + la page courante}*{} +\capcs pagegoal {\TeX\ met ceci \`a la hauteur d\'esir\'ee pour la page courante + (c'est-\`a-dire, |\\vsize| quand la premi\`ere bo\^\i te est mise sur la page)}*{} +\capcs pageinsert {produit le texte sp\'ecifi\'e sur la page suivante et utilise + jusqu'a la page enti\`ere}{}{} +\capcs pageno {le registre |\\count0|, qui contient le num\'ero de page + (\'eventuellement n\'egatif)}{}{} +\capcs pageshrink {\TeX\ met ceci au montant total de r\'etr\'ecissement + sur la page courante}*{} +\capcs pagestretch {\TeX\ met ceci au montant total d'\'etirement + sur la page courante}*{} +\capcs pagetotal {\TeX\ met ceci \`a la hauteur naturelle de la page + courante}*{} +\capcs par {finit un paragraphe et termine le mode horizontal}*{\@par} +\capcs parallel {relation parall\`ele~: $\parallel$}{}{} +\capcs parfillskip {ressort horizontal que \TeX\ ins\`ere \`a la fin d'un + paragraphe}*{} +\capcs parindent {espace horizontal que \TeX\ ins\`ere au d\'ebut d'un + paragraphe}*{} +\capcs parshape {sp\'ecifie la largeur et la longueur de chaque ligne + dans le prochain paragraphe}*{} +\capcs parskip {ressort vertical que \TeX\ ins\`ere avant un paragraphe}*{} +\capcs partial {symbole d\'eriv\'ee partielle~: $\partial$}{}{} +\capcs pausing {si positif, stoppe apr\`es avoir lu chaque ligne d'entr\'ee pour un + remplacement possible}*{} +\capcstwo penalty {produit une p\'enalit\'e (ou un bonus, si n\'egatif) pour couper + une ligne ou une page ici}*{hpenalty:vpenalty} +\capcs perp {relation perpendiculaire~: $\perp$}{}{} +\capcs phantom {produit une formule invisible avec les + dimensions d'une sous formule sp\'ecifi\'e}{}{} +\capcs phi {lettre grecque math\'ematique $\phi$}{}{} +\capcs Phi {lettre grecque math\'ematique $\Phi$}{}{} +\capcs pi {lettre grecque math\'ematique $\pi$}{}{} +\capcs Pi {lettre grecque math\'ematique $\Pi$}{}{} +\capcs plainoutput {routine |\\output| de \plainTeX}{}{} +\capcs pm {op\'erateur plus et moins~: $\pm$}{}{} +\capcs pmatrix {produit une matrice entre parenth\`eses}{}{} +\capcs pmod {notation modulo entre parenth\`eses \'a la fin d'une formule comme dans $x \equiv y+1 \pmod 2$}{}{} +\capcs postdisplaypenalty {p\'enalit\'e suppl\'ementaire pour une coupure de ligne + juste apr\`es un affichage, par d\'efaut~0}*{} +\capcs Pr {fonction probabilit\'e~: $\Pr$}{}{} +\capcs prec {relation pr\'ec\`ede~: $\prec$}{}{} +\capcs preceq {relation pr\'ec\`ede ou \'egale~: $\preceq$}{}{} +\capcs predisplaypenalty {p\'enalit\'e suppl\'ementaire pour une coupure de ligne juste + avant un affichage, par d\'efaut~0}*{} +\capcs predisplaysize {\TeX\ met ceci \`a la largeur de la + ligne pr\'ecedant un affichage}*{} +\capcs pretolerance {tol\'erance de m\'ediocrit\'e pour une coupure de ligne sans + c\'esure, par d\'efaut~100}*{} +\capcs prevdepth {profondeur de la derni\`ere bo\^\i te dans la liste verticale courante + (sauf filet)}*{} +\capcs prevgraf {\TeX\ met ceci au nombre de lignes dans le paragraphe en plus + (en mode horizontal) ou dans le paragraphe pr\'ec\'edent (en mode vertical)}*{} +\capcs prime {symbole prime math\'ematique, comme dans $r^\prime$}{}{} +\capcs proclaim {d\'ebute un th\'eor\`eme, un lemme, une hypoth\`ese, $\ldots$}{}{\@proclaim} +\capcs prod {grand op\'erateur produit~: $\prod$}{}{} +\capcs propto {relation proportionnel \`a~: $\propto$}{}{} +\capcs psi {lettre grecque math\'ematique $\psi$}{}{} +\capcs Psi {lettre grecque math\'ematique $\Psi$}{}{} +\capcs qquad {produit un ressort horizontal de largeur 2\em}{}{} +\capcs quad {produit un ressort horizontal de largeur 1\em}{}{} +\capcs radical {produit un symbole radical sp\'ecifi\'e}*{} +\capcs raggedbottom {autorise la marge du bas \`a varier d'une page \`a l'autre}{}{} +\capcs raggedright {autorise la marge droite \`a varier d'une ligne \`a l'autre}{}{} +\capcs raise {abaisse une bo\^\i te sp\'ecifi\'ee d'un montant sp\'ecifi\'e}*{} +\capcs rangle {d\'elimiteur angle fermant~: $\rangle$}{}{} +\capcs rbrace {d\'elimiteur accolade fermante~: $\rbrace$}{}{} +\capcs rbrack {d\'elimiteur crochet fermant~: $\rbrack$}{}{} +\capcs rceil {d\'elimiteur plancher fermant~: $\rceil$}{}{} +\capcs Re {symbole partie r\'eelle de complexe~: $\Re$}{}{} +\capcs read {lit une ligne d'un flot d'entr\'ee sp\'ecifi\'e}*{} +\capcs relax {ne fait rien}*{} +\capcs relpenalty {p\'enalit\'e suppl\'ementaire pour une coupure apr\`es une relation, + par d\'efaut~500}*{} +\capcs repeat {termine une boucle d\'ebut\'ee avec |\\loop|}{}{\@repeat} +\capcs rfloor {d\'elimiteur plafond fermant~: $\rfloor$}{}{} +\capcs rgroup {d\'elimiteur de groupe fermant (la plus petite taille est montr\'ee ici)~: + $\Big\rgroup$}{}{} +\capcs rho {lettre grecque math\'ematique $\rho$}{}{} +\capcs right {produit le d\'elimiteur sp\'ecifi\'e \`a l'extr\'emit\'e d'une + sous-formule d\'ebut\'ee par |\\left|}*{} +\capcs rightarrow {relation~: $\rightarrow$}{}{} +\capcs Rightarrow {relation~: $\Rightarrow$}{}{} +\capcs rightarrowfill {remplit une hbox avec un |\\rightarrow|~: + \hbox to 3.5em{\rightarrowfill}}{}{} +\capcs rightharpoondown {relation~: $\rightharpoondown$}{}{} +\capcs rightharpoonup {relation~: $\rightharpoonup$}{}{} +\capcs rightleftharpoons {relation~: $\rightleftharpoons$}{}{} +\capcs rightline {produit une ligne avec son texte pouss\'e vers la marge droite}{}{} +\capcs rightskip {ressort que \TeX\ ins\`ere \`a droite de chaque ligne}*{} +\capcs righthyphenmin {taille du plus petit fragment de mot que \TeX\ autorise + apr\`es une c\'esure \`a la fin d'un mot, par d\'efaut~3}*{} +\capcs rlap {produit du texte (sans largeur) \`a partir de la droite + de la position courante}{}{} +\capcs rm {utilise des caract\`eres romains, c'est-\`a-dire, fait |\\tenrm\\fam=0|}{}{} +\capcs rmoustache {moiti\'e basse d'une grande accolade~: $\big\rmoustache$}{}{} +\capcs romannumeral {produit la repr\'esentation en chiffre romain minuscule d'un + nombre sp\'ecifi\'e, en caract\`eres}{}{} +\capcs root {produit une racine sp\'ecifi\'ee d'une sous-formule sp\'ecifi\'ee, comme dans + $\root 3 \of 2$}{}{} +\capcs rq {caract\`ere quote fermante en texte~: \rq}{}{} +\capcs S {caract\`ere section en texte~: \S}{}{} +\capcs sb {caract\`ere indice implicite}{}{} +\capcs scriptfont {la police de style script dans une famille math\'ematique sp\'ecifi\'ee}*{} +\capcs scriptscriptfont {la police de style scriptscript dans une famille math\'ematique + sp\'ecifi\'ee}*{} +\capcs scriptscriptstyle {utilise la taille de style scriptscript dans une formule}*{} +\capcs scriptspace {espace suppl\'ementaire que \TeX\ cr\`ee apr\`es un exposant ou un + indice, par d\'efaut 0.5\pt}*{} +\capcs scriptstyle {utilise la taille de style script dans une formule}*{} +\capcs scrollmode {ne stoppe pas sur les erreurs, mais stoppe sur les erreurs + de fichiers manquants}*{} +\capcs searrow {relation fl\`eche en bas \`a gauche~: $\searrow$}{}{} +\capcs sec {fonction s\'ecante~: $\sec$}{}{} +\capcs setbox {d\'efinit un registre de bo\^\i te sp\'ecifi\'e comme \'etant une bo\^\i te}*{} +\capcs setlanguage {change un jeu de r\`egles de c\'esure sp\'ecifi\'e, mais + ne change pas |\\language|}{*}{} +\capcs setminus {operateur difference ~: $\setminus$}{}{} +\capcs settabs {d\'efinit les tabulations pour un alignement tabul\'e}{}{} +\capcs sevenbf {utilise une police grasse de $7$ points, |cmbx7|}{}{} +\capcs seveni {utilise une police math\'ematique italique de $7$ points, |cmmi5|}{}{} +\capcs sevenrm {utilise une police romaine de $7$ points, |cmr7|}{}{} +\capcs sevensy {utilise une police symbole de $7$ points, |cmsy7|}{}{} +\capcs sfcode {le code du facteur d'espace d'un caract\`ere sp\'ecifi\'e}*{} +\capcs sharp {symbole di\`ese en musique~: $\sharp$}{}{} +\capcs shipout {envoit une bo\^\i te vers le fichier |.dvi|}*{} +\capcs show {montre, dans la log et + sur le terminal, la signification d'un token sp\'ecifi\'e}*{} +\capcs showbox {affiche le contenu d'un registre de bo\^\i te sp\'ecifi\'e}*{} +\capcs showboxbreadth {nombre maximum d'\'el\'ements montr\'e sur chaque niveau imbriqu\'e, + par d\'efaut~5}*{} +\capcs showboxdepth {maximum de niveaux imbriqu\'es montr\'es, par d\'efaut~3}*{} +\capcs showhyphens {montre, dans la log + et sur le terminal, les c\'esures dans un texte sp\'ecifi\'e}{}{} +\capcs showlists {affiche toutes les listes sur lequel il travaille}*{} +\capcs showthe {montre, dans la log + et sur le terminal, ce que |\\the| produira}*{} +\capcs sigma {lettre grecque math\'ematique $\sigma$}{}{} +\capcs Sigma {lettre grecque math\'ematique $\Sigma$}{}{} +\capcs sim {relation similarit\'e~: $\sim$}{}{} +\capcs simeq {relation similaire ou \'egal~: $\simeq$}{}{} +\capcs sin {fonction sinus~: $\sin$}{}{} +\capcs sinh {fonction sinus hyperbolique~: $\sinh$}{}{} +\capcs skew {d\'eplace un accent sp\'ecifi\'e d'un montant sp\'ecifi\'e + sur un caract\`ere accentu\'e sp\'ecifi\'e}{}{} +\capcs skewchar {caract\`ere d'une police sp\'ecifi\'ee utilis\'e pour positionner des accents}*{} +\capcs skip {le registre de ressort sp\'ecifi\'e}*{} +\capcs skipdef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'ee comme \'etant un nombre + correspondant \`a un registre |\\skip|}*{} +\capcs sl {utilise des caract\`eres pench\'es, c'est-\`a-dire, fait |\\tensl\\fam=\\slfam|}{}{} +\capcs slash {caract\`ere \slash\ autorisant une coupure de ligne}{}{} +\capcs slfam {famille pench\'ee en math\'ematique}{}{} +\capcs smallbreak {indique une coupure de page assez d\'esirable + avec |\\penalty-50| et produit un ressort |\\smallskipamount|}{}{} +\capcs smallint {petit symbole d'int\'egrale~: $\smallint$}{}{} +\capcs smallskip {produit un ressort |\\smallskipamount|}{}{} +\capcs smallskipamount {ressort pour un petit saut vertical, par d\'efaut 3\pt\ + plus 1\pt\ minus 1\pt}{}{} +\capcs smash {produit une formule sans hauteur, ni profondeur}{}{} +\capcs smile {relation smile~: $\smile$}{}{} +\capcs sp {caract\`ere d'exposant implicite}{}{} +\capcs space {produit un ressort inter-mot normal}{}{} +\capcs spacefactor {modifie l'\'etirement et le r\'etr\'ecissement des ressorts inter-mot + s'il diff\'erent de 1000}*{} +\capcs spaceskip {si diff\'erent de z\'ero et |\\spacefactor|${}<2000$, surcharge + le ressort inter-mot normal}*{} +\capcs spadesuit {symbole pique~: $\spadesuit$}{}{} +\capcs span {soit combine des entr\'ees dans un corps d'alignement body soit + d\'eveloppe des tokens dans un pr\'eambule}*{} +\capcs special {\'ecrit des tokens dans le fichier |.dvi| devant \^etre interpr\'et\'es par un + programme de lecture de DVI}*{} +\capcs splitbotmark {dernier \'el\'ement de marque dans une bo\^\i te r\'esultant de |\\vsplit|}*{} +\capcs splitfirstmark {premier \'el\'ement de marque dans une bo\^\i te r\'esultant de + |\\vsplit|}*{} +\capcs splitmaxdepth {profondeur maximum d'une bo\^\i te r\'esultant de |\\vsplit|}*{} +\capcs splittopskip {ressort que \TeX\ ins\`ere en haut d'une bo\^\i te r\'esultant de + |\\vsplit|}*{} +\capcs sqcap {op\'erateur square cap~: $\sqcap$}{}{} +\capcs sqcup {op\'erateur square cup~: $\sqcup$}{}{} +\capcs sqrt {produit une racine carr\'ee d'une sous-formule, comme dans $\sqrt 2$}{}{} +\capcs sqsubseteq {relation square subset ou \'egal~: $\sqsubseteq$}{}{} +\capcs sqsupseteq {relation square superset ou \'egal~: $\sqsupseteq$}{}{} +\capcs ss {lettre allemande~: \ss}{}{} +\capcs star {op\'erateur \'etoile~: $\star$}{}{} +\capcs string {produit un token sp\'ecifi\'e, le plus souvent une s\'equence de + contr\^ole, comme des caract\`eres}*{} +\capcs strut {bo\^\i te sans largeur, mais de hauteur et profondeur d'une ligne standard, + de ligne de base \`a ligne de base, dans la police courante}{}{} +\capcs subset {relation subset~: $\subset$}{}{} +\capcs subseteq {relation subset ou \'egal~: $\subseteq$}{}{} +\capcs succ {relation successeur~: $\succ$}{}{} +\capcs succeq {relation successeur ou \'egal~: $\succeq$}{}{} +\capcs sum {grand op\'erateur de somme~: $\sum$}{}{} +\capcs sup {fonction sup\'erieur~: $\sup$}{}{} +\capcs supereject {force une coupure de page, et d\'echarge toutes les insertions}{}{} +\capcs supset {relation superset~: $\supset$}{}{} +\capcs supseteq {relation superset ou \'egal~: $\supseteq$}{}{} +\capcs surd {symbole surd~: $\surd$}{}{} +\capcs swarrow {relation fl\`eche en bas \`a gauche~: $\swarrow$}{}{} +\capcs t {accent tie-after en texte, comme dans \t uu}{}{} +\capcs tabalign {\'equivalent \`a |\\+|, sauf s'il n'est pas |\\outer|}{}{} +\capcs tabskip {ressort entre colonnes (ou rang\'ees) d'un alignement}*{} +\capcs tan {fonction tangente~: $\tan$}{}{} +\capcs tanh {fonction tangente hyperbolique~: $\tanh$}{}{} +\capcs tau {lettre grecque math\'ematique $\tau$}{}{} +\capcs tenbf {utilise une police grasse de $10$ points, |cmbx10|}{}{} +\capcs tenex {utilise une police d'extension math\'ematique de $10$ points, |cmex10|}{}{} +\capcs teni {utilise une police italique math\'ematique de $10$ points, |cmmi10|}{}{} +\capcs tenit {utilise une police italique de texte de $10$ points, |cmti10|}{}{} +\capcs tenrm {utilise une police romaine de texte de $10$ points, |cmr10|}{}{} +\capcs tensl {utilise une police romaine pench\'ee de $10$ points, |cmsl10|}{}{} +\capcs tensy {utilise une police de symbole math\'ematique de $10$ points, |cmsy10|}{}{} +\capcs tentt {utilise une police de machine \`a \'ecrire de $10$ points, |cmtt10|}{}{} +\capcs TeX {produit le logo \TeX}{}{} +\capcs textfont {la police de style dans une famille math\'ematique sp\'ecifi\'ee}*{} +\capcs textindent {comme |\\item|, mais ne fait pas d'indentation associ\'ee}{}{} +\capcs textstyle {utilise une taille textstyle dans une formule}*{} +\capcs the {donne la valeur d'un token sp\'ecifi\'e}*{} +\capcs theta {lettre grecque math\'ematique $\theta$}{}{} +\capcs Theta {lettre grecque math\'ematique $\Theta$}{}{} +\capcs thickmuskip {ressort pour une espace math\'ematique gras, par d\'efaut 5\mud\ plus 5\mud}*{} +\capcs thinmuskip {ressort pour un espace math\'ematique fine, par d\'efaut 3\mud}*{} +\capcs thinspace {cr\'enage de \frac1/6\em}{}{} +\capcs tilde {accent tilde en math\'ematique, comme dans $\tilde x$}{}{} +\capcs time {l'heure d'aujourd'hui, en minutes depuis minuit}*{} +\capcs times {op\'erateur multipli\'e~: $\times$}{}{} +\capcs toks {le registre de token sp\'ecifi\'e}*{} +\capcs toksdef {d\'efinit une s\'equence de contr\^ole sp\'ecifi\'e comme \'etant un nombre + correspondant \`a un registre |\\toks|}*{} +\capcs tolerance {tol\'erance de m\'ediocrit\'e pour des coupures de ligne avec c\'esure}*{} +\margin{{\tt\\topglue} command added~; recent addition to \TeX} +\capcs to {relation mapping~: $\to$}{}{} +\capcs top {symbole lattice top~: $\top$}{}{} +\capcs topglue {produit un ressort vertical sp\'ecifi\'e en haut + d'une page}{}{} +\capcs topinsert {produit le texte sp\'ecifi\'e en haut d'une page}{}{} +\capcs topmark {|\\botmark| avant que la page courante soit en bo\^\i te}*{} +\capcs topskip {ressort entre la ligne de t\^ete et la premi\`ere ligne de texte + sur une page, par d\'efaut 10\pt}*{} +\capcs tracingall {d\'eclanche des traces maximal}{}{} +\capcs tracingcommands {affiche l'ex\'ecution des commandes}*{} +\capcs tracinglostchars {affiche les caract\`eres demand\'es, mais non + d\'efinis}*{} +\capcs tracingmacros {affiche les d\'eveloppements de macros}*{} +\capcs tracingonline {montre les sorties de diagnostic sur le terminal aussi bien que + dans le fichier log}*{} +\capcs tracingoutput {affiche les contenus des bo\^\i tes sorties}*{} +\capcs tracingpages {affiche les calculs de coupure de page}*{} +\capcs tracingparagraphs {affiche les calculs de coupure de ligne}*{} +\capcs tracingrestores {affiche les valeurs restaur\'ees \`a la fin + d'un groupe}*{} +\capcs tracingstats {affiche les statistiques d'utilisation de la m\'emoire}*{} +\capcs triangle {symbole triangle~: $\triangle$}{}{} +\capcs triangleleft {op\'erateur triangle gauche~: $\triangleleft$}{}{} +\capcs triangleright {op\'erateur triangle droite~: $\triangleright$}{}{} +\capcs tt {utilise des caract\`eres de machine \`a \'ecrire, c'est-\`a-dire, fait |\\tentt\\fam=\\ttfam|}{}{} +\capcs ttfam {famille machine \`a \'ecrire en math\'ematique}{}{} +\capcs ttraggedright {utilise des caract\`eres de machine \`a \'ecrire et autorise la marge + droite des paragraphes \`a varier d'une ligne \`a l'autre}{}{} +\capcs u {accent bref en texte, comme dans \u r}{}{} +\capcs uccode {le code de caract\`ere de la forme capitale d'une lettre}*{} +\capcs uchyph {si positif, laisse c\'esurer des mots qui commencent avec une + lettre capitale}*{} +\capcs underbar {souligne le texte sp\'ecifi\'e sans toucher les descendantes , comme dans \underbar{fog}}{}{} +\capcs underbrace {produit une accolade couvrant le bas d'une formule, comme dans + $\underbrace{x+x}{}$}{}{} +\capcs underline {souligne une formule math\'ematique sous les descendantes, comme dans + $\underline{x+y}$}*{} +\capcs unhbox {d\'echarge le contenu de la bo\^\i te + d'un registre de bo\^\i te sp\'ecifi\'e + de la liste courante et vide le registre~; l\'egal en + mode horizontal seulement}*{} +\capcs unhcopy {comme |\\unhbox|, mais ne vide pas le registre}*{} +\capcs unkern {si le dernier \'el\'ement de la liste courante est un cr\'enage, l'enl\`eve}*{} +\capcs unpenalty {si le dernier \'el\'ement de la liste courante est une p\'enalit\'e, l'enl\`eve}*{} +\capcs unskip {si le dernier \'el\'ement de la liste courante est un ressort, l'enl\`eve}*{} +\capcs unvbox {d\'echarge le contenu de la bo\^\i te + d'un registre de bo\^\i te sp\'ecifi\'e + de la liste courante et vide le registre~; l\'egal en + modes verticaux seulement}*{} +\capcs unvcopy {comme |\\unvbox|, mais ne vide pas le registre}*{} +\capcs uparrow {relation~: $\uparrow$}{}{} +\capcs Uparrow {relation~: $\Uparrow$}{}{} +\capcs upbracefill {fill enclosing hbox with an upwards facing brace~: + \hbox to 3.5em{\upbracefill}}{}{} +\capcs updownarrow {relation~: $\updownarrow$}{}{} +\capcs Updownarrow {relation~: $\Updownarrow$}{}{} +\capcs uplus {op\'erateur plus cupped~: $\uplus$}{}{} +\capcs uppercase {convertit les lettres minuscules d'un texte sp\'ecifi\'e + en capitales}*{} +\capcs upsilon {lettre grecque math\'ematique $\upsilon$}{}{} +\capcs Upsilon {lettre grecque math\'ematique $\Upsilon$}{}{} +\capcs v {accent tch\`eque en texte, comme dans \v o}{}{} +\capcs vadjust {produit du mat\'eriel en mode vertical apr\`es la ligne courante}*{} +\capcs valign {aligne du texte dans des rang\'ees}*{} +\capcs varepsilon {variante de la lettre grecque math\'ematique $\varepsilon$}{}{} +\capcs varphi {variante de la lettre grecque math\'ematique $\varphi$}{}{} +\capcs varpi {variante de la lettre grecque math\'ematique $\varpi$}{}{} +\capcs varrho {variante de la lettre grecque math\'ematique $\varrho$}{}{} +\capcs varsigma {variante de la lettre grecque $\varsigma$}{}{} +\capcs vartheta {variante de la lettre grecque math\'ematique $\vartheta$}{}{} +\capcs vbadness {badness threshold for reporting underfull or overfull + vboxes, par d\'efaut~1000}*{} +\capcs vbox {produit une vbox dont la ligne de base est celle de la bo\^\i te du haut + incluse}*{} +\capcs vcenter {centre le texte sp\'ecifi\'e sur l'axe math\'ematique}*{} +\capcs vdash {symbole left turnstile~: $\vdash$}{}{} +\capcs vdots {points verticaux en math\'ematique~: \smash{$\vdots$}}{}{} +\capcs vec {accent vecteur en math\'ematique, comme dans $\vec x$}{}{} +\capcs vee {op\'erateur ``ou'' logique~: $\vee$}{}{} +\capcs vert {relation barre~: $\vert$}{}{} +\capcs Vert {relation double barre~: $\Vert$}{}{} +\capcs vfil {produit un ressort vertical infiniment \'etirable}*{} +\capcs vfill {produit un ressort vertical encore plus infiniment \'etirable + que celui produit par |\\vfil|}*{} +\capcs vfilneg {produit un ressort vertical n\'egatif infiniment \'etirable}*{} +\capcs vfootnote {produit une note de bas de page sp\'ecifi\'ee avec une marque + de r\'ef\'erence sp\'ecifi\'ee, mais ne produit la marque de r\'ef\'erence dans le texte}{}{} +\capcs vfuzz {seuil de d\'epassement pour dire overfull vboxes, par d\'efaut + 0.1\pt}*{} +\capcs vglue {produit un ressort vertical sp\'ecifi\'e + qui ne disparait pas sur des coupures de page}{}{} +\capcs voffset {offset vertical relatif d'un pouce par rapport au coin + haut du papier}*{} +\capcs vphantom {produit un formule invisible sans largeur mais de hauteur + et profondeur naturelle}{}{} +\capcs vrule {produit un filet vertical~; l\'egal seulement en modes horizontaux}*{} +\capcs vsize {hauteur de page, par d\'efaut 8.9\thinspace in}*{} +\capcs vskip {produit un ressort vertical sp\'ecifi\'e}*{} +\capcs vsplit {coupe le contenu d'un registre de bo\^\i te sp\'ecifi\'ee + de la hauteur sp\'ecifi\'e}*{} +\capcs vss {produit un ressort vertical qui est infiniment \'etirable et + infiniment r\'etr\'ecissable}*{} +\capcs vtop {produit une vbox dont la ligne de base est celle de la bo\^\i te du haut englob\'ee}*{} +\capcs wd {la largeur d'une bo\^\i te dans un registre de bo\^\i te sp\'ecifi\'e}*{} +\capcs wedge {op\'erateur logique ``et''~: $\wedge$}{}{} +\capcs widehat {accent math\'ematique, comme dans $\widehat {y+z+a}$}{}{} +\capcs widetilde {accent math\'ematique $\widetilde {b+c+d}$}{}{} +\capcs widowpenalty {p\'enalit\'e pour une ligne seule d\'ebutant une page, + par d\'efaut~150}*{} +\capcs wlog {|\\write| la liste de token sp\'ecifi\'ee dans le fichier log}{}{} +\capcs wp {symbole Weierstra\ss\ `p'~: $\wp$}{}{} +\capcs wr {op\'erateur produisant un ruban~: $\wr$}{}{} +\capcs write {\'ecrit une ligne vers un flot de sortie sp\'ecifi\'e}*{} +\capcs xdef {\'equivalent \`a |\\global\\edef|, c'est-\`a-dire, d\'efini globalement une + macro, d\'eveloppant imm\'ediatement le texte de remplacement}*{} +\capcs xi {lettre grecque math\'ematique $\xi$}{}{} +\capcs Xi {lettre grecque math\'ematique $\Xi$}{}{} +\capcs xleaders {produit des r\'eglures avec l'espace en trop \`a gauche redistribu\'e egalement}*{} +\capcs xspaceskip {si diff\'erent de z\'ero et |\\spacefactor|${}\ge2000$, + surcharge le ressort inter-mot normal}*{} +\capcs year {l'ann\'ee courante, comme un nombre}*{} +\capcs zeta {lettre grecque math\'ematique $\zeta$}{}{} + +\endcapsum +\endchapter +\byebye + diff --git a/info/impatient/fr/fconcept.tex b/info/impatient/fr/fconcept.tex index a1f8001ef3..b20f117cea 100644 --- a/info/impatient/fr/fconcept.tex +++ b/info/impatient/fr/fconcept.tex @@ -1,4069 +1,4070 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-\chapter{Concepts}
-
-\chapterdef{concepts}
-
-Cette partie du livre contient les d\'efinitions et explications des
-concepts que nous utilisons pour d\'ecrire \TeX. Les concepts comprennent
-les termes techniques que nous utilisons pour expliquer les commandes et
-des points importants qui ne sont vus nulle part ailleurs dans le livre
-
-Les concepts sont class\'es dans l'ordre alphab\'etique. La page de garde int\'erieure
-contient une liste compl\`ete des concepts et les pages o\`u ils sont expliqu\'es.
-Nous vous sugg\'erons de faire une copie de cette page int\'erieure et de la
-garder de cot\'e pour que vous puissiez identifier et regarder un concept non
-familier imm\'ediatement. Autant que possible, nous gardons notre
-terminologie coh\'erente avec celle de \texbook.\idxref{\texbook}
-
-\beginconcepts
-
-\conceptindex{alignements}
-\concept alignement
-
-\bix^^{tables}
-Un \defterm{alignement} est une construction pour aligner du mat\'e\-riel tel
-qu'un tableau, en colonne ou en rang\'ee. Pour former un alignement vous devez
-(a)~d\'ecrire le format des colonnes ou des rang\'ees et (b)~ dire \`a \TeX\ quel
-mat\'eriel va dans les colonnes ou les rang\'ees. Un alignement tabul\'e ou un
-alignement horizontal est organis\'e comme une suite de rang\'ees~; un alignement
-vertical est organis\'e comme une suite de colonnes. Nous d\'ecrirons d'abord
-les alignements tabul\'es et horizontaux et ensuite, plus bri\`evement, les
-alignements verticaux.
-
-Les alignements tabul\'es sont d\'efinis par \plainTeX. Ils sont plus simples
-mais moins flexibles que les alignements horizontaux. Ils diff\`erent
-principalement sur la fa\c con de d\'ecrire leurs formats.
-
-\bix^^|\settabs|
-\bix\ctsidxref{+}
-\bix\ctsidxref{cr}
-
-Pour construire un alignement tabul\'e vous devez tout d'abord former une
-commande |\settabs| \ctsref{\settabs} qui sp\'ecifie comment \TeX\ doit
-diviser l'es\-pace horizontal disponible en colonne, ensuite vous procurer
-une suite de rang\'ees \`a tabuler. Chaque rang\'ee consiste en une s\'equence de
-contr\^ole |\+| \ctsref{\@plus} suivi par une liste d'``entr\'ees'', c'est-\`a-dire
-des intersections rang\'ees\slash colonnes.
-^^{entr\'ee (colonne ou rang\'ee)}
-Des entr\'ees qui se suivent sur une rang\'ee sont s\'epar\'ees par une esperluette
-(|&|).
-\xrdef{@and}
-\ttidxref{&}
-La fin d'une rang\'ee est indiqu\'ee par ^|\cr| apr\`es sa derni\`ere entr\'ee.
-Si une rang\'ee a moins d'entr\'ees qu'il y a de colonnes dans l'alignement,
-\TeX\ rempli jusqu'\`a la fin la rang\'ee de blanc.
-
-Tant qu'il est pr\'ec\'ed\'e d'une commande |\settabs|, vous pouvez mettre une
-rang\'ee d'un alignement tabul\'e n'importe o\`u dans votre document. En particulier,
-vous pouvez mettre autres choses entre les rang\'ees d'aligne\-ments tabul\'es ou
-d\'ecrire plusieurs alignements tabul\'es avec un seul |\set!-tabs|. Voici un exemple
-d'alignement tabul\'e~:
-
-\xrdef{tabbedexample}\csdisplay
-{\hsize = 1.7 in \settabs 2 \columns
-\+cattle&herd\cr
-\+fish&school\cr
-\+lions&pride\cr}
-|
-La commande |\settabs 2 \columns| de cet exemple \ctsref{\settabs}
-demande \`a \TeX\ de produire deux colonnes de largeurs \'egales.
-La longueur de la ligne est de $1.7$ pouces.
-L'alignement compos\'e ressemble \`a ceci~:
-
-{\def\+{\tabalign}% so it isn't \outer.
-\vdisplay{%
-\hsize 1.7 in \settabs 2 \columns
-\+cattle&herd\cr
-\+fish&school\cr
-\+lions&pride\cr}
-}%
-
-\margin{Missing explanation added here.}
-Il y a une autre forme d'alignement tabul\'e dans lequel vous sp\'ecifiez les
-largeurs de colonne avec un exemple. La largeur de colonne de l'exemple
-d\'etermine les largeurs de colonne du reste de l'alignement~:
-\csdisplay
-{\settabs\+cattle\quad&school\cr
-\+cattle&herd\cr
-\+fish&school\cr
-\+lions&pride\cr}
-|
-Voici le r\'esultat~:
-{\def\+{\tabalign}% so it isn't \outer.
-\vdisplay{%
-\settabs\+cattle\quad&school\cr
-\+cattle&herd\cr
-\+fish&school\cr
-\+lions&pride\cr}
-}%
-
-\eix^^|\settabs|
-\eix\ctsidxref{+}
-\bix^^|\halign|
-Les alignements horizontaux sont construits avec |\halign| \ctsref\halign.
-\TeX\ ajuste la largeur des colonnes d'un alignement horizontal en fonction
-du contenu des colonnes. Quand \TeX\ rencontre la commande |\halign| qui
-d\'ebute un alignement horizontal, il examine d'abord toutes les rang\'ees de
-l'alignement pour voir quelle est la largeur des entr\'ees. Il fixe alors
-la largeur des colonnes pour accommoder les entr\'ees les plus larges dans ces
-colonnes.
-
-Un alignement horizontal g\'er\'e par |\halign| est constitu\'e d'un
-``\pix^{pr\'eam\-bule}'' qui indique le sch\'ema des rang\'ees suivi par les
-rang\'ees elles-m\^emes.
-\ulist
-\li Le pr\'eambule est constitu\'e d'une suite de \pix^{patron}s, un pour
-chaque colonne. Le patron d'une colonne sp\'ecifie comment le texte de cette
-colonne doit \^etre compos\'e. Chaque patron doit inclure un seul carac\-t\`ere |#|
-\ttidxref{#}\xrdef{@asharp}
-pour indiquer o\`u \TeX\ doit substituer le texte d'une entr\'ee dans le patron.
-Les patrons sont s\'epar\'es par une esperluette (|&|) \ttidxref{&} et la fin
-du pr\'eambule est indiqu\'ee par |\cr|. En procurant un patron appro\-pri\'e, vous
-pouvez obtenir des effets comme centrer une colonne, justifier une colonne
-\`a gauche ou \`a droite ou composer une colonne dans une \refterm{police}
-particuli\`ere.
-
-\li Les rang\'ees ont la m\^eme forme que dans l'alignement tabul\'e, sauf que
-vous ne mettez pas de |\+| au d\'ebut de chaque rang\'ee.
-Comme avant, des entr\'ees sont s\'epar\'ees par |&| et la fin d'une rang\'ee est
-indiqu\'ee par |\cr|.
-\TeX\ traite chaque entr\'ee comme un \refterm{groupe}, donc, chaque commande
-de changement de police ou autre \refterm{assignement} dans le patron de
-colonne ne prend effet que pour les entr\'ees de cette colonne.
-\endulist
-\noindent Le pr\'eambule et les rang\'ees doivent \^etre inclus entre les
-accolades qui suivent |\halign|. Chaque alignement |\halign| doit inclure
-son propre pr\'eambule.
-
-Par exemple, l'alignement horizontal~:
-\csdisplay
-\tabskip=2pc
-\halign{\hfil#\hfil &\hfil#\hfil &\hfil#\hfil \cr
- &&\it Table\cr
-\noalign{\kern -2pt}
- \it Creature&\it Victual&\it Position\cr
-\noalign{\kern 2pt}
- Alice&crumpet&left\cr
- Dormouse&muffin&middle\cr
- Hatter&tea&right\cr}
-|
-
-\noindent produit le r\'esultat~:
-
-\xrdef{halignexample}
-\vdisplay{%
-\tabskip=2pc \halign{\hfil#\hfil &\hfil#\hfil &\hfil#\hfil \cr
- &&\it Table\cr
-\noalign{\kern -2pt}
- \it Creature&\it Victual&\it Position\cr
-\noalign{\kern 2pt}
- Alice&crumpet&left\cr
- Dormouse&muffin&middle\cr
- Hatter&tea&right\cr}
-}%
-\noindent Le ^|\tabskip| \ctsref{\tabskip} de cet exemple
-demande \`a \TeX\ d'ins\'erer |2pc| de
-\refterm{ressort} entre les colonnes.
-La commande ^|\noalign| \ctsref{\noalign} d'ins\'erer
-du mat\'eriel de \refterm{mode vertical} entre deux rang\'ees.
-Dans cet exemple nous avons
-utilis\'e |\noalign| pour produire de l'espace suppl\'ementaire entre les
-rang\'ees de titre et les rang\'ees de donn\'ees, et aussi rapprocher ``Table''
-et ``Position''.
-(Vous pouvez aussi utiliser |\noalign| avant la premi\`ere rang\'ee ou apr\`es la
-derni\`ere.)
-\eix^^|\halign|
-
-Vous pouvez aussi construire un alignement vertical avec la commande ^|\valign|
-\ctsref{\valign}. Un alignement vertical est organis\'e comme une s\'erie de
-colonnes plut\^ot que comme une s\'erie de rang\'ees. Un alignement vertical suit
-les m\^eme r\`egles qu'un alignement horizontal sauf que le r\^ole des rang\'ees et
-des colonnes est invers\'e. Par exemple, l'alignement vertical~:
-
-\csdisplay
-{\hsize=0.6in \parindent=0pt
-\valign{#\strut&#\strut&#\strut\cr
- one&two&three\cr
- four&five&six\cr
- seven&eight&nine\cr
- ten&eleven\cr}}
-|
-\noindent produit~:
-\vdisplay{%
-{\hsize=0.6in \parindent=\listleftindent % Because lists and displays
- % are not indented just by \parindent.
-\valign{#\strut&#\strut&#\strut\cr
- one&two&three\cr
- four&five&six\cr
- seven&eight&nine\cr
- ten&eleven\cr}}
-}
-La commande ^|\strut| \ctsref{\strut} dans le patron est n\'ecessaire pour
-que les entr\'ees de chaque rang\'ee s'alignent proprement, c'est-\`a-dire,
-pour avoir une \refterm{ligne de base} commune et garder une distance
-uniforme entre les lignes de base.
-\eix\ctsidxref{cr}
-\eix^^{tables}
-
-\endconcept
-
-
-\concept {\anatomy}
-
-\texbook\ d\'ecrit la fa\c con dont {\TeX} compile ses sources en termes de
-``t\^aches digestives'' de \TeX---ses ``^{yeux}'', ``^{bouche}'',
-``^{\oesophage}'', ``^{estomac}'' et ``^{intestin}''. Savoir comment ces
-organes travaillent peut \^etre utile quand vous essayer de comprendre de subtils
-aspects du raisonnement de \TeX\ quand il dig\`ere un document.
-
-\ulist
-
-\li En utilisant ses ``\pix^{yeux}'', \TeX\ lit les \refterm{caract\`eres:caract\`ere} du
-^{fichier source} et les passe \`a sa bouche. Puisqu'un fichier source
-peut contenir des commandes ^|\input| \ctsref{\input},
-\TeX\ peut en effet d\'etourner son regard d'un fichier \`a l'autre.
-
-\li En utilisant sa ``\pix^{bouche}'', {\TeX} assemble les caract\`eres en
-\refterm{tokens:token} et les passe \`a son \oesophage.
-Chaque token est soit une \refterm{s\'equence de contr\^ole} ou un simple
-caract\`ere. Une s\'equence de contr\^ole commence toujours par un \refterm{caract\`ere
-d'\'echappement}. Notez que les espaces et les fins de ligne sont des caract\`eres
-de plein droit, de plus \TeX\ compresse une suite d'espaces en un seul token
-d'espace. Voir \knuth{pages~46--47}{56--58} pour les r\`egles avec lesquelles \TeX\
-assemble les caract\`eres en tokens.
-^^{tokens//assembl\'ee \`a partir de caract\`eres}
-
-\li En utilisant son ``\pix^{\oesophage}'', {\TeX} d\'eveloppe chaque macro, conditions, et
-^^{macros//d\'evelopp\'ees dans l'estomac de \TeX}
-^^{tokens//pass\'ee \`a l'estomac de \TeX}
-constructions similaires qu'il trouve (voir \knuth{pages~212--216}{249--253}) et passe
-la suite de \refterm{tokens:token} r\'esultante
-\`a l'estomac de \TeX. D\'evelopper un token
-peu faire appara\^\i tre d'autres tokens qui \`a leur tour ont besoin d'\^etre
-d\'evelopp\'es. {\TeX} parcourt ce d\'eveloppement de gauche \`a droite \`a moins
-que l'ordre soit modi\-fi\'e par
-une commande telle que |\expandafter| \ctsref{\expandafter}.
-En d'autres mots, l'\oe sophage de \TeX\ d\'eveloppe toujours le token le plus \`a
-gauche non-d\'evelopp\'e qu'il n'a pas encore envoy\'e vers l'estomac de \TeX.
-
-\li En utilisant son ``\pix^{estomac}'', {\TeX} ex\'ecute tous les groupes de token.
-Chaque groupe contient une commande primitive suivie par ses
-arguments, s'il y en a.
-La plupart des commandes sont de type ``compose ce caract\`ere'',
-dont leur groupe n'est constitu\'e que d'un token.
-Suivant les instructions donn\'ees par les commandes, l'estomac de
-\TeX\ assemble de plus en plus grandes unit\'es, d\'ebutant par des
-caract\`eres et finissant par des pages,
-et passe les pages \`a l'intestin de \TeX.
-^^{pages//assembl\'ees dans l'estomac de \TeX}
-L'estomac de \TeX\ ex\'ecute les taches de \refterm{coupure de ligne}---%
-^^{coupures de ligne}
-c'est-\`a-dire, couper chaque paragraphe en suite de lignes---%
-et de \refterm{coupure de page}---c'est-\`a-dire,
-couper une suite continue de lignes
-et autres mat\'eriels de mode vertical en pages.
-
-\li En utilisant ses ``\pix^{intestin}'', \TeX\ transforme les pages produites par son
-estomac en une forme destin\'ee \`a \^etre lue
-par d'autres program\-mes. Il envoit alors la sortie transform\'ee dans le
-\dvifile.
-^^{\dvifile//cr\'e\'e par l'intestin de \TeX}
-
-\endulist
-
-La plupart du temps, vous pouvez penser que les processus qui prennent place dans
-les yeux, bouches, \oesophage, estomac et intestin de \TeX\ ont lieu les uns apr\`es
-les autres. La v\'erit\'e en la mati\`ere est que des commandes ex\'ecut\'ees dans l'estomac
-de \TeX\ peuvent influencer les \'etapes suivantes de la digestion. Par exemple,
-quand l'estomac de \TeX\ rencontre la commande |\input| \ctsref{\input}, ses
-yeux commencent \`a lire un fichier diff\'erent~; quand l'estomac de \TeX\
-rencontre une commande |\catcode| \ctsref{\catcode} sp\'ecifiant un code de
-cat\'egorie pour le caract\`ere $c$, l'interpr\'etation de $c$ par la bouche de
-\TeX\ s'en trouve affect\'e. Et quand l'estomac de \TeX\ rencontre une d\'efinition
-de \refterm{macro}, les d\'eveloppements charg\'es dans l'\oe sophage de \TeX\
-sont eux aussi affect\'es.
-
-Vous pouvez comprendre comment les processus agissent les uns sur les autres
-en imaginant que chaque processus avale goul\^ument le
-rendu de son pr\'ed\'ecesseur d\`es qu'il devient disponible. Par
-exemple, une fois que l'estomac de \TeX\ a vu le dernier caract\`ere du
-nom de fichier dans une commande |\input|, \TeX\ fixe son regard
-imm\'ediatement sur le premier caract\`ere du fichier d'entr\'ee indiqu\'e.
-
-\endconcept
-
-%\pagebreak
-\conceptindex{arguments}
-\concept argument
-
-^^{commandes//arguments de}
-Un \defterm{argument} contient le texte pass\'e \`a une
-\refterm{commande}.
-Les arguments d'une commande compl\`etent la description de ce que
-la commande est suppos\'ee faire.
-La commande peut \^etre soit une commande \refterm{primitive}, soit une
-\refterm{macro}.
-
-Chaque commande primitive ^^{primitive//commande}
-a sa propre convention sur la forme de ses
-arguments. Par exemple, la suite de \refterm{tokens:token}~:
-
-\csdisplay
-\hskip 3pc plus 1em
-|
-consiste en la commande `|\hskip|' et les arguments
-`|3pc plus 1em|'. Mais si vous \'ecrivez~:
-
-\csdisplay
-\count11 3pc plus 1em
-|
-vous obtiendrez un effet enti\`erement diff\'erent.
-\TeX\ traitera `|\count11|' comme une commande avec un argument `|3|',
-suivi par les tokens de texte ordinaire `|pc plus 1em|'
-(parce que les registres de compteur attendent l'affectation d'un nombre)%
----probablement pas ce dont vous aviez
-intention. L'effet de la commande, donc, sera d'assigner
-$3$ au registre du compteur $11$ (voir la discussion sur ^|\count|,
-\xref\count).
-
-Les macros, d'un autre cot\'e, suivent toutes la m\^eme convention
-pour leurs arguments.
-^^{macros//arguments de}
-Chaque argument pass\'e \`a une macro
-correspond \`a un \refterm{param\`etre}
-^^{param\`etres//et arguments}
-dans la d\'efinition de cette
-macro. ^^{macros//param\`etres de}
-Un param\`etre de macro est soit ``d\'elimit\'e'', soit ``non d\'elimite''.
-La d\'efinition de la macro d\'etermine le nombre et la nature des param\`etres de la macro
-et donc le nombre et la nature des arguments de la macro.
-
-La diff\'erence entre un argument d\'elimit\'e et un argument non d\'elimit\'e tient
-\`a la fa\c con qu'a \TeX\ de d\'ecider o\`u se termine l'argument.
-^^{arguments d\'elimit\'es}
-^^{arguments non d\'elimit\'es}
-\ulist
-\li Un argument d\'elimit\'e est constitu\'e des tokens \`a partir du d\'ebut de
-l'argument jusqu'\`a, mais sans l'inclure, la suite de tokens particuliers
-qui servent comme d\'elimiteur pour cet argument. Le d\'elimiteur est sp\'ecifi\'e
-dans la d\'efinition de la macro. Ainsi, vous ajoutez un argument d\'elimit\'e \`a
-une macro en \'ecrivant l'argument lui-m\^eme, suivi par le d\'elimiteur. Un
-argument d\'elimit\'e peut \^etre vide, c'est-\`a-dire, ne pas avoir de texte du
-tout. Chaque accolade d'un argument d\'elimit\'e doit \^etre appair\'e
-correctement, c'est-\`a-dire, chaque accolade gauche doit avoir une accolade
-droite correspondante et vice versa.
-
-\li Un argument non d\'elimit\'e consiste en un token simple ou une suite de
-tokens entour\'e d'accolades, comme ceci~:
-`|{Here is {the} text.}|'. Malgr\'e les apparences, les accolades ext\'erieures
-ne forment pas un \refterm{groupe}---\TeX\ ne les utilise que pour
-d\'eterminer quel est l'argument. Chaque accolade interne, comme celles autour
-de `|the|', doivent \^etre appair\'ees correctement. Si vous faites une erreur
-et mettez trop d'accolades fermantes, \TeX\ se plaindra d'un `unexpected right brace'
-\TeX\ se plaindra aussi si vous mettez trop d'accolades ouvrantes, mais vous
-obtiendrez \emph{cette} plainte longtemps apr\`es l'endroit o\`u vous pensiez
-finir l'argument (voir \xref{mismatched}).
-\endulist
-\noindent
-Voir \conceptcit{macro} pour plus d'information sur les param\`etres et les
-arguments. Vous trouverez les r\`egles pr\'ecises concernant les arguments
-d\'elimit\'es et non d\'elimit\'es dans \knuth{pages~203--204}{237--239}.
-\endconcept
-
-
-\concept {ASCII}
-
-\defterm{\ascii} est l'abr\'eviation de ``American Standard Code for
-Information Interchange''. Il y a $256$ ^{caract\`eres} \ascii, chacun avec
-son propre num\'ero de code, mais seuls les~$128$ premiers
-ont \'et\'e standardis\'es. Vous pouvez trouver leur signification dans une ``table
-de codes'' \ascii\ comme celle de la \knuth{page~367}{425}.
-Les caract\`eres $32$--$126$ sont des ``caract\`eres imprimables'',
-^^{caract\`eres imprimables} comme les lettres, les chiffres et les signes de
-ponctuation. Les caract\`eres restants sont des ``^{caract\`eres de contr\^ole}''
-qui sont utilis\'es sp\'ecialement (dans l'industrie informatique, pas dans \TeX)
-pour contr\^oler les entr\'ees\slash sorties et les instruments de communication
-de donn\'ees.
-Par exemple, le code \ascii\ $84$ correspond \`a la lettre `T', tandis que
-le code \ascii\ $12$ correspond \`a la fonction ``form feed''
-(interpr\'et\'e par la plupart des imprimantes par ``commence une nouvelle page'').
-Bien que le standard \ascii\ sp\'ecifie des significations pour les caract\`eres de
-contr\^ole, beaucoup de fabricants d'\'equipements tels que modems et imprimantes
-ont utilis\'e les caract\`eres de contr\^ole pour des usages autres que le standard.
-
-La signification d'un caract\`ere dans \TeX\ est normalement li\'ee \`a sa signification
-dans le standard \ascii, et les \refterm{polices:police} qui contiennent
-des caract\`eres imprimables \ascii\ ont normalement ces caract\`eres aux m\^emes
-positions que leurs contreparties \ascii.
-Mais certaines polices, notamment celles utilis\'ees en math\'ematique, remplacent
-les caract\`eres imprimables \ascii\ par d'autres caract\`eres sans aucune relation
-avec les caract\`eres \ascii.
-Par exemple, La police Computer Modern math\'ematique
-^^{police Computer Modern}
-|cmsy10| a le symbole math\'ematique
-`{$\forall$}' \`a la place du chiffre \ascii\ `8'.
-
-
-\endconcept
-
-\conceptindex{assignements}
-\concept assignement
-
-Un \defterm{assignement} est une construction qui dit \`a \TeX\ d'assigner une
-valeur \`a un registre,
-^^{registres//assignement \`a des}
-\`a un de ces
-\refterm{param\`etres:param\`etre} internes,
-^^{param\`etres//assignements \`a des}
-\`a une entr\'ee dans une de ces tables internes
-ou \`a une \refterm{s\'equence de contr\^ole}. Quelques exemples d'assignements sont~:
-
-\csdisplay
-\tolerance = 2000
-\advance\count12 by 17
-\lineskip = 4pt plus 2pt
-\everycr = {\hskip 3pt \relax}
-\catcode\`@ = 11
-\let\graf = \par
-\font\myfont = cmbx12
-|
-
-Le premier assignement indique que \TeX\ doit assigner la valeur num\'e\-rique
-|2000| au param\`etre num\'erique |\tolerance|, c'est-\`a-dire, met la valeur de
-|\tolerance| \`a $2000$. Les autres assignements sont similaires. Le `|=|'
-et les espaces sont optionnels, donc vous pouvez aussi \'ecrire le premier
-assignement plus bri\`evement~:
-
-\csdisplay
-\tolerance2000
-|
-
-Voir \knuth{pages~276--277}{321--322} pour la syntaxe d\'etaill\'ee des assignements.
-\endconcept
-
-
-\conceptindex{\boites}
-\concept {\boites}
-
-Une \defterm{bo\^\i te} est un rectangle de mati\`ere \`a composer. Un simple
-\refterm{caract\`ere} est une bo\^\i te par lui-m\^eme, et une page enti\`ere est
-aussi une bo\^\i te. \TeX\ forme une page comme une suite de bo\^\i tes contenant
-des bo\^\i tes contenant des bo\^\i tes. La bo\^\i te sup\'erieure est la page elle-m\^eme,
-les bo\^\i tes inf\'erieures sont souvent de simples caract\`eres et de simples
-lignes sont des bo\^\i tes qui sont quelque part au milieu.
-
-\TeX\ effectue la plupart de ses activit\'es de construction de bo\^\i te implicitement quand il
-construit des paragraphes et des pages.
-Vous pouvez construire des bo\^\i tes explicitement
-en utilisant nombre de \refterm{commandes} de \TeX, notamment
-^|\hbox| \ctsref{\hbox},
-^|\vbox| \ctsref{\vbox} et
-^|\vtop| \ctsref{\vtop}.
-La commande ^|\hbox|
-construit une bo\^\i te en assemblant des plus petites bo\^\i tes horizontalement de gauche \`a droite~;
-il op\`ere sur une \refterm{liste horizontale} et donne
-une \refterm{hbox} ^^{hbox} (bo\^\i te horizontale).
-^^{listes horizontales}
-Les commandes ^|\vbox| et |\vtop|
-construisent une bo\^\i te en assemblant de plus petites bo\^\i tes verticalement de haut en bas~;
-^^{vbox}
-elles op\`erent sur une \refterm{liste verticale}
-et donnent une \refterm{vbox} ^^{vbox} (bo\^\i te verticale).
-^^{listes verticales}
-Ces listes horizontales et verticales peuvent ne pas inclure que des bo\^\i tes plus petites mais
-plusieurs autres sortes d'entit\'es, par exemple, un \refterm{ressort} et
-des cr\'enages.
-^^{cr\'enages//comme \'el\'ements de liste}
-
-Une bo\^\i te a une \refterm{hauteur}, une \refterm{profondeur} et une \refterm{largeur},
-^^{hauteur} ^^{profondeur} ^^{largeur}
-comme ceci~:
-\vdisplay{\offinterlineskip\sevenrm
- \halign{#&#&\kern3pt \hfil#\hfil\cr
- &\hrulefill\cr
- &\vrule
- \vtop to .7in{\vss \hbox to .9in{\hss ligne de base\hss}\vskip4pt}%
- \vrule
- &\labelledheight{.7in}{hauteur}\cr
- %
- \vbox to 0pt{
- \vss
- \hbox{point de r\'ef\'erence\hbox to 15pt{\rightarrowfill}%
- \hskip3pt}%
- \kern-4.5pt}&{\box\refpoint}\hrulefill\cr
- %
- \omit
- &\vrule\hfil\vrule
- &\labelledheight{.4in}{profondeur}\cr
- %
- &\hrulefill\cr
- %
- \noalign{\vskip3pt}%
- &\leftarrowfill { largeur }\rightarrowfill\cr
-}}
-
-^^{lignes de base}
-La \refterm{ligne de base} est comme une des
-lignes-guide claire d'un bloc de papier lign\'e.
-Les bo\^\i tes de lettres telles qu'un `g'
-s'\'etendent sous la ligne de base~; Les bo\^\i tes de lettres telles qu'un `h' ne le font pas.
-La hauteur d'une bo\^\i te est la distance par laquelle une bo\^\i te s'\'etend au-dessus de sa
-ligne de base, tandis que sa profondeur est la distance par laquelle elle s'\'etend sous sa
-ligne de base. \bix^^{point de r\'ef\'erence}
-Le \minref{point de r\'ef\'erence}
-d'une bo\^\i te est l'endroit o\`u sa ligne de base rejoint son cot\'e gauche.
-
-{\tighten
-\TeX\ construit une hbox $H$ d'une liste horizontale en d\'esignant un point
-de r\'ef\'erence pour $H$ et en enfilant les items dans la liste $H$ un par un
-de gauche \`a droite. chaque bo\^\i te de la liste est plac\'ee de telle fa\c con que
-sa ligne de base co\"\i ncide avec la ligne de base de $H$\kern-2pt, c'est-\`a-%
-dire que les bo\^\i tes la composant sont align\'ees horizontalement%
-\footnote{Si une bo\^\i te est hauss\'ee ou baiss\'ee avec ^|\raise| ou ^|\lower|,
-\TeX\ utilise son point de r\'ef\'erence avant le d\'eplacement quand il la
-place.}. La hauteur de $H$ est la hauteur de la bo\^\i te la plus grande de la
-liste, et la profondeur de $H$ est la profondeur de la bo\^\i te la plus
-profonde de la liste. La largeur de $H$ est la somme des largeurs de tous
-les items dans la liste. Si quelques-uns de ces items sont des
-\refterm{ressort}s et que \TeX\ a besoin de r\'etr\'ecir ou d'\'etirer le ressort, la
-largeur de $H$ sera plus large ou plus \'etroite en cons\'equence. Voir la
-\knuth{page~77}{90} pour les~d\'etails.
-\par}
-
-De m\^eme, \TeX\ construit une vbox $V$ d'une liste verticale en d\'esignant un
-point de r\'ef\'erence temporaire pour $V$ et ensuite en enfilant les items dans la
-liste $V$ un par un de haut en bas. Chaque bo\^\i te dans la liste est
-plac\'ee de telle fa\c con que leur point de r\'ef\'erence est align\'e verticalement avec le
-point de r\'ef\'erence de $V$\footnote{Si une bo\^\i te est d\'eplac\'ee \`a gauche
-ou \`a droite avec
-^|\moveleft| ou ^|\moveright|, \TeX\ utilise son point de r\'ef\'erence avant
-le d\'eplacement quand il la place.}. Quand chaque bo\^\i te autre que la premi\`ere est ajout\'ee \`a
-\Vcomma, \TeX\ met un \minref{ressort interligne} juste au-dessus d'elle. (Ce
-^{ressort interligne} n'a pas d'\'equivalent pour les hbox.) La largeur de $V$ est la
-largeur de la bo\^\i te la plus large de la liste, et les extensions verticales (hauteur
-plus profondeur) de $V$ est la somme des \'el\'ements verticaux \'etendus de tous les
-items de la liste.
-
-\bix^^|\vbox|
-\bix^^|\vtop|
-La diff\'erence entre |\vbox| et |\vtop| est sur leur fa\c con de partitionner
-l'extension verticale de $V$ en hauteur et en largeur.
-Le choix du point de r\'ef\'erence de $V$ d\'etermine cette partition.
-\ulist
-\li Pour |\vbox|, \TeX\ place le point de r\'ef\'erence sur une ligne
-horizontale avec le point de r\'ef\'erence du dernier composant bo\^\i te ou trait
-de \Vcomma, sauf que si la derni\`ere bo\^\i te (ou le dernier trait) est
-suivie d'un ressort ou d'un cr\'enage, \TeX\ place le point de r\'ef\'erence tout en
-bas de $V$%
-\footnote{La profondeur est limit\'ee par le param\`etre
-^|\boxmaxdepth| \ctsref{\boxmaxdepth}.}.
-
-\li Pour |\vtop|, \TeX\ place le point de r\'ef\'erence sur une ligne horizontale
-avec le point de r\'ef\'erence du premier composant bo\^\i te ou trait de \Vcomma,
-sauf que si la premi\`ere bo\^\i te (ou le premier trait)
-est pr\'ec\'ed\'ee par un ressort ou un cr\'enage, \TeX\ place
-le point de r\'ef\'erence tout en haut de \Vperiod.
-
-\endulist
-\noindent
-A proprement parler, alors, |\vbox| met le point de r\'ef\'erence pr\`es du haut
-du vbox et |\vtop| le met pr\`es du haut.
-Quand vous voulez aligner une rang\'ee de vbox pour que leur sommet
-s'aligne horizontalement,
-vous utiliserez normalement |\vtop| plut\^ot que |\vbox|.
-Voir les \knuth{pages~78 et 80--81}{91 et 94--95} pour les
-d\'etails sur comment \TeX\ construit des vbox.
-\eix^^|\vbox|
-\eix^^|\vtop|
-\eix^^{point de r\'ef\'erence}
-
-Vous avez une certaine libert\'e dans la construction de bo\^\i tes. Le mat\'eriel
-\`a composer
-dans une bo\^\i te peut s'\'etendre au-del\`a des bords de la bo\^\i te comme il le fait
-pour certaines lettres (pour la plupart italiques ou pench\'ees). Les composants
-bo\^\i tes des grandes bo\^\i tes peuvent se chevaucher.
-Une bo\^\i te peut avoir une largeur, une profondeur ou une hauteur n\'egative,
-des bo\^\i tes comme celles-ci ne sont pas souvent utiles.
-
-Vous pouvez sauvegarder une bo\^\i te dans un \refterm{registre} de bo\^\i te et la rappeler plus tard.
-Avant d'utiliser un registre de bo\^\i te,
-^^{registres de \boite}
-Vous devez la r\'eserver et lui donner un nom
-avec la commande ^|\newbox| \ctsref{\@newbox}. Voir
-\conceptcit{registre} pour plus d'information sur les registres de bo\^\i tes.
-\endconcept
-
-
-\conceptindex{caract\`eres}
-\concept caract\`ere
-
-{\tighten
-\TeX\ travaille avec des \defterm{caract\`eres} provenant de deux contex\-tes~:
-des caract\`eres du source, quand il lit et des caract\`eres de sortie,
-quand il compose. \TeX\ transforme la plupart des caract\`eres saisis dans
-le caract\`ere de sortie qui lui correspond. Par exemple, il transforme
-normalement la lettre saisie `|h|' en `h' compos\'e dans la police courante.
-Ce n'est pas le cas, n\'eanmoins, pour un caract\`ere saisi tel que `|$|' qui
-a une signification sp\'eciale.
-\par}
-
-\TeX\ obtient ses caract\`eres saisis en les lisant \`a partir du fichier source
-(ou de votre terminal) et en d\'eveloppant les \refterm{macros:macro}. Ce
-sont les seuls moyens par lesquels \TeX\ puisse acqu\'erir un caract\`ere saisi.
-Chaque caract\`ere d'entr\'ee a un num\'ero de code correspondant \`a sa position
-dans la table de code \refterm{\ascii}. ^^{\ascii}
-Par exemple, la lettre `|T|' a le code \ascii~$84$.
-
-Quand \TeX\ lit un caract\`ere, il lui attache un \refterm{code de cat\'egorie}.
-^^{codes de cat\'egorie//attach\'e pendant l'entr\'ee}
-Le code de cat\'egorie affecte la fa\c con dont \TeX\ interpr\`ete le caract\`ere
-une fois qu'il a \'et\'e lu. \TeX\ d\'etermine (et se souvient) des codes de
-cat\'egorie des caract\`eres d'une macro quand il lit sa d\'efinition. Comme \TeX\
-lit les caract\`eres avec ses yeux \seeconcept{\anatomy} il fait quelques
-``filtrages'' comme condenser des suites de caract\`eres espace en un espace
-seul. Voir les \knuth{pages~46--48}{56--59} pour les d\'etails de ce filtrage.
-
-Les ``^{caract\`eres de contr\^ole}'' \ascii\ ont les codes $0$--$31$ et $127$--$255$.
-Ils ne sont pas visualisables ou provoquent des choses \'etranges si vous essayez
-de les afficher.
-N\'eanmoins, on en a parfois besoin dans les sources \TeX, donc \TeX\ a une
-fa\c con sp\'eciale de les noter.
-\xrdef{twocarets}
-Si vous saisissez `|^^|$c$', o\`u $c$ est n'importe quel caract\`ere, vous obtenez
-le caract\`ere dont le code \ascii\ est soit plus grand soit plus petit de $64$
-que le code \ascii\ de $c$.
-La plus grande valeur de code acceptable en utilisant cette notation est $127$
-donc la notation n'est pas ambigu\"e.
-Trois instances particu\-li\`erement communes de cette notation sont
-`|^^M|' (le caract\`ere \ascii\ \asciichar{retour}),
-`|^^J|' (le caract\`ere \ascii\ \asciichar{saut\ de\ page}) et
-`|^^I|' (le caract\`ere \ascii\ \asciichar{tabulation\ horizontale}).
-\ttidxref{^^M}\ttidxref{^^J}\ttidxref{^^I}
-
-{\tighten
-\TeX\ a aussi une autre notation pour indiquer la valeur des codes \ascii\
-qui fonctionne pour tous les codes de caract\`ere de $0$ \`a $255$.
-\xrdef{hexchars}
-Si vous saisissez `|^^|$xy$', o\`u $x$ et $y$ sont des ^{chiffres
-hexad\'ecimaux} `|0123456789abcdef|', vous obtenez le caract\`ere dont le
-code est sp\'ecifi\'e. Des lettres minuscules sont n\'ecessaires ici.
-\TeX\ opte pour l'interpr\'etation des ``chiffres hexad\'ecimaux'' quand il
-a le choix, donc vous ne devez pas faire suivre un caract\`ere comme `|^^a|'
-par un chiffre hexad\'ecimal minuscule---si vous le faites, vous aurez la
-mauvaise interpr\'etation.
-Si vous avez besoin d'utiliser cette notation, vous trouverez pratique
-d'avoir une table des codes \ascii.
-\par}
-
-Un caract\`ere de sortie est un caract\`ere de composition.
-Une commande qui produit un caract\`ere de sortie signifie
-``produit une \refterm{bo\^\i te} contenant un caract\`ere num\'ero $n$ dans
-la \refterm{police} courante'', o\`u $n$ est d\'etermin\'e par la commande.
-\TeX\ produit votre document compos\'e en combinant de telles bo\^\i tes avec
-d'autres \'el\'ements typographiques et les arrange sur la page.
-
-Un caract\`ere d'entr\'ee dont le code de cat\'egorie est $11$ (^{lettre}) ou
-$12$ (autre)
-^^{autres caract\`eres}
-agit comme une commande pour produire le caract\`ere de sortie correspondant.
-En plus, vous pouvez demander \`a \TeX\ de produire un carac\-t\`ere $n$ en
-entrant la commande `|\char |$n$' \ctsref{\char}, ^^|\char| o\`u $n$ est un
-\refterm{nombre} entre $0$ et $255$. Les commandes `|h|',
-|\char`h| et |\char104| ont toutes le m\^eme effet. ($104$ est le
-code \ascii\ de `h'.)
-
-\endconcept
-
-
-\conceptindex{caract\`eres actifs}
-\concept {caract\`ere actif}
-
-Un \defterm{caract\`ere actif} est un \refterm{caract\`ere} poss\'edant une
-d\'efinition, c'est-\`a-dire, une d\'efinition de macro, qui lui est associ\'ee.
-^^{macros//nomm\'ees par des caract\`eres actifs}
-Vous pouvez penser \`a un caract\`ere actif comme \`a une s\'equence de contr\^ole
-d'un type sp\'ecial. Quand \TeX\ rencontre un caract\`ere actif, il ex\'ecute la
-d\'efinition associ\'ee avec le caract\`ere. Si \TeX\ rencontre un caract\`ere actif
-qui n'a pas de d\'efinition associ\'ee, il se plaindra d'un ``undefined control
-sequence''.
-
-Un caract\`ere actif a un \refterm{code de cat\'egorie} \`a $13$ (la valeur
-d'^|\active|).
-Pour d\'efinir un caract\`ere actif, vous devez d'abord
-utiliser la commande ^|\catcode|
-\ctsref{\catcode} pour le rendre actif
-et ensuite donner la d\'efini\-tion du caract\`ere, en utilisant
-une commande comme |\def|, |\let| ou |\chardef|.
-La d\'efinition d'un caract\`ere actif a la m\^eme forme que
-la d\'efinition d'une \refterm{s\'equence de contr\^ole}.
-^^{codes de cat\'egorie//de caract\`eres actifs}
-Si vous essayez de d\'efinir la macro pour un caract\`ere actif
-avant d'avoir rendu le caract\`ere actif, \TeX\ se plaindra d'un
-"missing control sequence".
-
-Par exemple, le caract\`ere tilde (|~|) est d\'efini comme un caract\`ere
-actif dans \plainTeX. Il
-produit un espace entre deux mots mais relie ces mots pour que
-\TeX\ ne transforme pas cet espace en \refterm{coupure de ligne}.
-\refterm{\PlainTeX:\plainTeX} d\'efinit `|~|' par les commandes~:
-
-\csdisplay
-\catcode `~ = \active \def~{\penalty10000\!visiblespace}
-|
-(|\penalty| inhibe une coupure de ligne et `|\!visiblespace|'
-ins\`ere un espace.)
-\endconcept
-
-
-\concept {caract\`ere d'\'echappement}
-
-Un \defterm{caract\`ere d'\'echappement} introduit une s\'equence de contr\^ole.
-Le caract\`ere d'\'echappement dans \refterm{\plainTeX} est l'antislash (|\|).
-\indexchar \
-Vous pouvez changer le caract\`ere d'\'echappement de $c_1$ vers $c_2$
-en r\'eassignant les codes de cat\'egorie de $c_1$ et $c_2$
-avec la commande ^|\catcode| \ctsref{\catcode}.
-Vous pouvez aussi d\'efinir des caract\`eres d'\'echap\-pement additionnels de la m\^eme fa\c con.
-Si vous voulez composer du mat\'e\-riel contenant des caract\`eres d'\'echappement litt\'eraux,
-vous devez
-soit
-(a) d\'efinir une s\'equence de contr\^ole qui transforme le caract\`ere d'\'echap\-pe\-ment imprim\'e soit
-(b) changer temporairement son code de cat\'egorie, en utilisant la
-m\'ethode montr\'ee en \xrefpg{verbatim}. La d\'efinition~:
-
-\csdisplay
-\def\\{$\backslash$}
-|
-est un moyen de cr\'eer une s\'equence de contr\^ole qui le transforme en `$\backslash$'
-(un antislash compos\'e dans une police math\'ematique).
-
-Vous pouvez utiliser le param\`etre ^|\escapechar| \ctsref{\escapechar} pour sp\'ecifier
-comment le caract\`ere de contr\^ole est repr\'esent\'e dans des s\'equences de contr\^ole
-synth\'etis\'ees,
-c'est-\`a-dire, celles cr\'e\'ees par |\string| et |\message|.
-
-
-\endconcept
-
-
-\concept {c\'esure}
-
-\TeX\ c\'esure les mots automatiquement en compilant votre document.
-\TeX\ n'est pas un acharn\'e de l'insertion de c\'esure, pr\'ef\'erant trouver \`a la
-place une bonne coupure de ligne en ajustant l'espace entre les mots et en
-d\'epla\c cant les mots d'une ligne \`a l'autre.
-\TeX\ est assez intelligent pour comprendre les c\'esures qui sont d\'ej\`a dans
-les mots
-
-Vous pouvez contr\^oler les c\'esures de \TeX\ de plusieurs fa\c cons~:
-\ulist
-\li Vous pouvez dire \`a \TeX\ d'autoriser une c\'esure \`a un endroit particulier
-en ins\'erant une c\'esure optionnelle
-^^{c\'esures optionnelles}
-avec la commande ^|\-| \ctsref{\@minus}.
-\li Vous pouvez dire \`a \TeX\ comment couper des mots particuliers dans votre
-document avec la commande ^|\hyphenation| \ctsref{\hyphenation}.
-\li Vous pouvez englober un mot dans une \refterm{hbox} pour emp\^echer \TeX\
-de le couper.
-\li Vous pouvez fixer la valeur des p\'enalit\'es comme avec |\hyphen!-pe!-nalty|
-\ctsref\hyphenpenalty.
-\endulist
-\noindent Si un mot contient une c\'esure explicite ou optionnelle,
-\TeX\ ne le coupera jamais ailleurs.
-\endconcept
-
-
-\concept classe
-
-La \defterm{classe} d'un \refterm{caract\`ere} sp\'ecifie le r\^ole de ce caract\`ere
-dans les formules math\'ematiques. La classe d'un caract\`ere est encod\'ee dans son
-\refterm{mathcode}. ^^{mathcodes//classe encod\'ee en} Par exemple, le
-signe \'egal `|=|' est dans la classe $3$ (Relation). \TeX\ utilise sa
-connaissance de classe de caract\`ere pour d\'ecider combien d'espace mettre
-entre diff\'erents composants d'une formule math\'ematique. \margin{clarifying
-material added} Par exemple, voici une formule math\'ematique affich\'ee comme
-\TeX\ l'im\-prime normalement et avec la classe de chaque caract\`ere modifi\'e
-al\'eatoi\-rement~:
-$$\strut a+(b-a)=a \qquad
- \mathopen{a}\mathord{+}\mathrel{(}\mathclose{b}\mathclose{-}
- \mathop{a}\mathopen{)}\mathord{=}\mathopen{a}$$
-
-Voir \xrefpg\mathord\ de ce livre pour une liste des classes et la
-\knuth{page~154}{180} pour leurs significations.
-
-\endconcept
-
-
-\conceptindex{codes de cat\'egorie}
-\concept {codes de cat\'egorie}
-
-Le \defterm{code de cat\'egorie} d'un \refterm{caract\`ere} d\'etermine le r\^ole
-de ce caract\`ere dans \TeX.
-^^{caract\`eres//code de cat\'egorie}
-Par exemple, \TeX\ assigne un certain r\^ole aux
-lettres, un autre au caract\`ere espace, et ainsi de suite. \TeX\ attache un
-code \`a chaque caract\`ere qu'il lit. Quand \TeX\ lit la
-lettre `|r|', par exemple, il lui attache normalement
-le code de cat\'egorie $11$ (lettre).
-Pour de simples applications \TeX\ vous n'avez pas \`a vous pr\'eoccuper des
-codes de cat\'egorie, mais ils deviennent importants quand vous essayez
-des effets sp\'eciaux.
-
-Les codes de cat\'egorie ne s'appliquent qu'aux caract\`eres que \TeX\ lit dans les
-fichiers source. Une fois qu'un caract\`ere a pass\'e l'^{\oesophage} de \TeX\
-\seeconcept{\anatomy} et a \'et\'e interpr\'et\'e, son code de cat\'egorie ne
-sert plus. Un caract\`ere que vous produisez avec la commande ^|\char|
-\ctsref{\char} n'a pas de code de cat\'egorie parce que |\char|
-est une instruction pour que \TeX\ produise un certain caract\`ere d'une
-certaine \refterm{police}. Par exemple, le code ^{\ascii} pour `|\|'
-(le caract\`ere d'\'echappement usuel) est $92$. Si
-vous saisissez `|\char92 grok|', Ce n'est \emph{pas} \'equivalent \`a |\grok|.
-\`a la place il demande \`a \TeX\ de
-composer `$c$grok', o\`u $c$ est le caract\`ere en position $92$
-de la table de code de la police courante.
-
-Vous pouvez utiliser la commande ^|\catcode| \ctsref{\catcode} pour r\'eassigner le
-code de cat\'egorie de tout caract\`ere. En changeant les code de cat\'egorie vous
-pouvez changer les r\^oles de caract\`eres vari\'es. Par exemple, si vous saisissez
-`|\catcode`\@ = 11|', le code de cat\'egorie du signe arrose (|@|) sera celui
-d'une ``lettre''. Vous pourrez alors avoir `|@|' dans le nom d'une s\'equence de
-contr\^ole.
-
-Voici une liste des codes de cat\'egorie tels qu'ils sont d\'efinis dans
-\refterm{\plainTeX} (voir \xref{twocarets} pour une explication de la
-notation |^^|),
-ainsi que les caract\`eres de chaque cat\'egorie~:
-
-\xrdef{catcodes}
-\vskip\abovedisplayskip
-%k \vskip 0pt plus 2pt % to fix bad page break
-{%k \interlinepenalty = 10000
-\halign{\indent\hfil\strut#&\qquad#\hfil\cr
-\it Code&\it Signification\cr
-\noalign{\vskip\tinyskipamount}
-0&Caract\`ere d'\'echappement \quad |\| ^^{caract\`ere d'\'echappement//code de cat\'egorie}
- {\recat!ttidxref[\//code de cat\'egorie]]
- \cr
-1&D\'ebut d'un groupe \quad |{| ^^{groupes}
- {\recat!ttidxref[{//code de cat\'egorie]]
- \cr
-2&Fin d'un groupe \quad |}|
- {\recat!ttidxref[}//code de cat\'egorie]]
- \cr
-3&basculement en math\'ematique \quad |$| ^^{basculement en math\'ematique}
- {\recat!ttidxref[$//code de cat\'egorie]]
- \cr
-4&Alignement tab \quad |&| ^^{tabulations} ^^{alignements//caract\`ere tabulation pour}
- \ttidxref{&//code de cat\'egorie} \cr
-5&Fin d'une ligne \quad |^^M| \tequiv \ascii\ \asciichar{retour chariot}
- ^^{fin de ligne} \ttidxref{^^M//code de cat\'egorie}\cr
-6&Param\`etre de macro \quad |#|
- ^^{macros//param\`etres de}
- ^^{param\`etres//indiqu\'es par \b\tt\#\e}
- \ttidxref{#//code de cat\'egorie} \cr
-7&Exposant \quad |^| et |^^K| ^^{exposants}
- \ttidxref{^^K}
- \ttidxref{^//code de cat\'egorie} \cr
-8&Indice \quad |_| et |^^A| ^^{indices}
- \ttidxref{^^A}
- \ttidxref{_//code de cat\'egorie} \cr
-9&caract\`ere ignor\'e \quad |^^@| \tequiv \ascii\ \asciichar{nul}
- ^^{caract\`eres ignor\'es} \indexchar ^^@ \cr
-10&Espace \quad \visiblespace\ et |^^I| \tequiv \ascii\
- \asciichar{tabulation}
- ^^{tabulation horizontale}
- ^^{caract\`eres espaces//code de cat\'egorie} \indexchar ^^I
- {\recat!ttidxref[ ]]
- \cr
-11&Lettre \quad |A| \dots |Z| et |a| \dots |z| ^^{lettre}\cr
-12&Autres caract\`eres \quad (tout ce qui n'est pas ci-dessus ou ci-dessous)
- ^^{autres caract\`eres}\cr
-13&Caract\`ere actif \quad |~| et |^^L| \tequiv\ascii\ \asciichar{saut\ de\ page}
- ^^{caract\`eres actifs} ^^{retour chariot} \indexchar ~ \indexchar ^^L \cr
-14&Caract\`ere de commentaire \quad |%| ^^{commentaires}
- {\recat!ttidxref[%//code de cat\'egorie]]
- \cr
-15&Caract\`ere invalide \quad |^^?| \tequiv \ascii\ \asciichar{suppression}
- ^^{caract\`eres invalides} \indexchar ^^? \cr
-}}
-\vskip\belowdisplayskip
-%k \vskip 0pt plus 2pt % to fix bad page break
-
-\noindent Mise \`a part ceux des cat\'egories $11$--$13$,
-tous les caract\`eres d'une cat\'egorie particuli\`ere produisent le m\^eme effet.
-\margin{Misleading material removed.}
-Par exemple, supposez
-que vous saisissiez~:
-\csdisplay
-\catcode`\[ = 1 \catcode`\] = 2
-|
-Alors les caract\`eres crochets droits et gauches deviennent \'equivalents aux caract\`eres de
-d\'ebut et de fin d'un groupe, les caract\`eres accolades droites et gauches.
-Avec ces d\'efinitions `|[a b]|'
-est un groupe valide, ainsi que \hbox{`|[a b}|'} et~\hbox{`|{a b]|'}.
-
-Les caract\`eres des cat\'egories $11$ (lettre) et $12$
-(autres caract\`eres) agis\-sent comme des \refterm{commandes:commande}
-qui signifient
-``produit une \refterm{bo\^\i te} contenant ce caract\`ere
-compos\'e dans la police courante''.
-La seule distinction entre les lettres et les ``autres'' caract\`eres est
-que les lettres peuvent appara\^\i tre dans des \refterm{mots de contr\^ole} mais
-pas les ``autres'' caract\`eres.
-
-Un caract\`ere de cat\'egorie $13$ (actif) agit comme une s\'equence de contr\^o\-le
-\`a lui tout seul. \TeX\ se plaint s'il rencontre un caract\`ere actif qui n'est
-pas associ\'e avec une d\'efinition.
-^^{caract\`eres actifs}
-
-Si \TeX\ rencontre un caract\`ere invalide ^^{caract\`eres invalides} (cat\'egorie $15$)
-dans votre source, il s'en plaindra.
-
-Les caract\`eres `|^^K|' et `|^^A|' ont \'et\'e inclus dans les cat\'egories
-$8$ (indice) et $9$ (exposant), m\^eme si ces significations
-ne suivent pas l'interpr\'etation du standard \refterm{\ascii}.
-C'est parce que certains claviers, tout du moins certains \`a
-l'universit\'e de Stanford d'o\`u \TeX\ est originaire, n'ont pas
-de touche fl\`eche vers le bas et fl\`eche vers le haut qui g\'en\`erent ces caract\`eres.
-\ttidxref{^^A}
-\ttidxref{^^K}
-
-Il y a une subtilit\'e sur la fa\c con dont \TeX\ assigne les codes de cat\'egories
-qui peut vous d\'eboussoler si vous ne la connaissez pas. \TeX\ a parfois
-besoin de rechercher un caract\`ere deux fois quand il fait un survol initial~:
-la premi\`ere fois pour la fin d'une pr\'ec\'edente construction, c'est-\`a-dire,
-une s\'equence de contr\^ole et ensuite pour transformer ce caract\`ere en token.
-\TeX\ n'a pas besoin d'assigner le code de cat\'egorie avant d'avoir vu le
-\emph{second} caract\`ere. Par exemple~:
-
-\csdisplay
-\def\foo{\catcode`\$ = 11 }% Make $ be a letter.
-\foo$ % Produces a `$'.
-\foo$ % Undefined control sequence `foo$'.
-|
-\noindent
-Ce bout de code \TeX\ produit `\$' dans la sortie. Quand \TeX\ voit le
-`|$|' sur la seconde ligne, il recherche la fin du nom d'une s\'equence de
-contr\^ole. Puisque le `|$|' n'est pas encore une lettre, il marque la fin de
-`|\foo|'. Ensuite, \TeX\ d\'eveloppe la macro `|\foo|' et change le code de
-cat\'egorie de `|$|' en $11$ (lettre). Alors, \TeX\ lit le `|$|' ``pour de
-vrai''. Puisque `|$|' est maintenant une lettre, \TeX\ produit une bo\^\i te
-contenant le caract\`ere `|$|' de la police courante. Quand \TeX\ voit la
-troisi\`eme ligne, il traite `|$|' comme une lettre et donc consid\`ere qu'elle
-fait partie du nom de la s\'equence de contr\^ole. Avec comme r\'esultat qu'il se
-plaint d'un ``undefined control sequence |\foo$|''.
-
-\TeX\ se comporte de cette fa\c con m\^eme lorsque le caract\`ere de
-terminaison est une fin de ligne. Par exemple, supposez que la macro
-|\fum| active le caract\`ere de fin de ligne. Alors si |\fum|
-appara\^\i t sur une ligne $\ell$ elle-m\^eme, \TeX\ interpr\'etera
-d'abord la fin de la ligne $\ell$ comme la fin de la s\'equence de
-contr\^ole |\fum| et ensuite \emph{r\'einterpr\'etera} la fin de la
-ligne de $\ell$ comme un caract\`ere actif.
-
-\endconcept
-
-
-\conceptindex{commandes}
-\concept commande
-
-Une \defterm{commande} demande \`a \TeX\ de faire une certaine action.
-Chaque \refterm{token} qui atteint l'estomac de \TeX\seeconcept{\anatomy}
-agit comme une commande, sauf celui qui fait partie des arguments d'une
-autre commande (voir dessous).
-^^{tokens//comme commandes}
-Une commande peut \^etre appel\'ee par une
-\refterm{s\'equence de contr\^ole}, par un \refterm{caract\`ere actif} ou par un
-caract\`ere ordinaire. Il peut sembler bizarre que \TeX\ traite un carac\-t\`ere
-ordinaire comme une commande, mais en fait c'est ce qu'il fait~:
-Quand \TeX\ voit
-un caract\`ere ordinaire
-il construit une \refterm{bo\^\i te} contenant ce caract\`ere compos\'e dans
-la police courante.
-
-Une commande peut avoir des arguments.
-Les arguments d'une commande sont de simples tokens ou
-groupes de tokens qui compl\`etent la description de ce que
-la commande est suppos\'ee faire.
-Par exemple, la commande `|\vskip 1in|' demande \`a \TeX\ de sauter
-$1$ pouce verticalement. Elle a un argument `|1in|',
-qui est constitu\'e de trois tokens.
-La description de ce que |\vskip| est suppos\'ee faire serait incompl\`ete
-sans sp\'ecifier de combien elle est suppos\'ee sauter.
-Les tokens dans les arguments d'une commande ne sont pas consid\'er\'es
-eux-m\^emes comme des commandes.
-
-Quelques exemples de diff\'erentes sortes de commandes de \TeX\ sont~:
-\ulist\compact
-\li Des caract\`eres ordinaires, comme `|W|', qui demande \`a \TeX\
-de produire une bo\^\i te contenant un `W' compos\'e.
-\li Des commandes de modification de police,
-telles que |\bf|, qui commence une composition en gras
-\li Des accents, tels que |\`|, qui produit un accent grave comme dans `\`e'
-\li Des symboles sp\'eciaux et des ligatures, comme |\P| (\P) et |\ae| (\ae)
-\li Des param\`etres, tels que |\parskip|, le montant du ressort que
-\TeX\ met entre les paragraphes
-\li des symboles math\'ematiques, tels que |\alpha| ($\alpha$) et |\in| ($\in$)
-\li Des op\'erateurs math\'ematiques, tels que |\over|, qui produit une fraction
-\endulist
-\endconcept
-
-
-\concept {constantes d\'ecimales}
-
-See \conceptcit{nombre}.
-\endconcept
-
-\concept {construction de page}
-
-Voir \conceptcit{page}.
-\endconcept
-
-
-\conceptindex{coupures de ligne}
-\concept {coupure de ligne}
-
-Une \defterm{coupure de ligne} est un endroit dans votre document o\`u \TeX\
-termine une ligne quand il compose un paragraphe. Quand \TeX\ compile votre
-document, il collecte le contenu de chaque paragraphe dans une \refterm{liste
-horizontale}. Quand il a collect\'e un paragraphe entier, il analyse la liste
-pour trouver ce qu'il consid\`ere comme \'etant les meilleures coupures de ligne
-possibles. \TeX\ associe des ``^{d\'em\'erites}'' avec diff\'erents sympt\^omes de
-coupure de ligne non attractive---des lignes ayant trop ou trop peu d'espace
-entre les mots, des lignes cons\'ecutives se terminant par des c\'esures, et
-ainsi de suite. Il choisit alors les coupures de lignes de mani\`ere \`a minimiser
-le nombre total de d\'em\'erites. Voir les \knuth{pages~96--101}{112--118} pour une
-description compl\`ete des r\`egles de coupure de ligne de \TeX.
-
-Vous pouvez contr\^oler le choix des coupures de ligne de \TeX\ de plusieurs mani\`eres~:
-\ulist
-
-\li vous pouvez ins\'erer une \refterm{p\'enalit\'e} (\xref{hpenalty}) quelque part
-dans la liste horizontale que \TeX\ construit quand il forme un paragraphe.
-^^{p\'enalit\'es//en listes horizontales}
-Une p\'enalit\'e
-positive d\'ecourage \TeX\ de couper la ligne \`a cet endroit, tandis qu'une
-p\'enalit\'e n\'egative---un bonus, en quelque sorte---encourage \TeX\ \`a couper
-la ligne \`a cet endroit. Une p\'enalit\'e de $10000$ ou plus emp\^eche une coupure de
-ligne, tandis qu'une p\'enalit\'e de $-10000$ ou moins force une coupure de ligne.
-Vous pouvez obtenir les m\^emes effets avec les commandes ^|\break| et
-^|\nobreak| (voir \pp\xrefn{hbreak} et~\xrefn{hnobreak}).
-
-\li Vous pouvez dire \`a \TeX\ d'autoriser une c\'esure \`a un endroit particulier
-en ins\'erant une c\'esure optionnelle
-^^{c\'esures optionnelles}
-avec la commande |\-| \ctsref{\@minus}, ou
-sinon en contr\^olant comment \TeX\ met des c\'esures dans votre document \seeconcept
-{c\'esure}.
-^^|\-//sur une coupure de ligne|
-
-\li Vous pouvez dire \`a \TeX\ d'autoriser une coupure de ligne apr\`es un
-(/) ^{slash} entre
-deux mots en ins\'erant un ^|\slash| \ctsref{\slash}
-entre eux, par exemple, `|fur!-longs\slash fortnight|'.
-
-\li Vous pouvez dire \`a \TeX\ de ne pas couper une ligne entre deux mots particuliers en
-ins\'erant une ^{punaise} (|~|) entre ces mots.
-^^|~//sur une coupure de ligne|
-
-\li Vous pouvez ajuster les p\'enalit\'es associ\'ees avec les coupures de ligne en
-assignant des valeurs diff\'erentes aux \refterm{param\`etres:param\`etre} de coupures de ligne de \TeX.
-
-\li Vous pouvez englober un mot ou une s\'equence de mots dans une \refterm{hbox},
-emp\^echant ainsi \TeX\ de couper la ligne o\`u que cela soit dans l'hbox.
-^^{hbox//contr\^oler des coupures de lignes}
-\endulist
-
-Il est pratique de savoir o\`u \TeX\ peut couper une ligne~:
-\ulist
-\li sur un ressort, sous r\'eserve que~:
-\olist
-\li l'objet pr\'ec\'edant le ressort est un des suivants~:
-une bo\^\i te, un objet optionnel (par exemple, une c\'esure optionnelle),
-la fin d'une formule math\'ematique,
-un \'el\'ement extraordinaire,
-ou du mat\'eriel vertical produit par |\mark|, |\vadjust|
-ou |\insert|
-\li Le ressort ne fait pas partie d'une formule math\'ematique
-\endolist
-\noindent
-Quand \TeX\ coupe une ligne sur un ressort, il fait la coupure du cot\'e gauche
-de l'espace du ressort et oublie le reste du ressort.
-\li sur un cr\'enage qui est imm\'ediatement suivi par un ressort,
-\`a condition que ce cr\'enage ne soit pas dans une formule math\'ematique
-\li \`a la fin d'une formule math\'ematique qui est imm\'ediatement suivie par un ressort
-\li sur une p\'enalit\'e, m\^eme dans une formule math\'ematique
-\li sur une c\'esure optionnelle
-\endulist
-Quand \TeX\ coupe une ligne, il efface toute s\'equence de ressort, cr\'enage et
-p\'enalit\'e qui suivent le point de coupure.
-Si une telle s\'equence est suivie par le d\'ebut d'une formule math\'ematique, il
-efface aussi tout cr\'enage produit au d\'ebut de la formule.
-\endconcept
-
-
-\conceptindex{coupures de page}
-\concept {coupure de page}
-
-Une \defterm{coupure de page} est un endroit dans votre document o\`u \TeX\
-termine une page et (sauf \`a la fin du document) en commence une nouvelle.
-Voir \conceptcit{page} pour le processus que \TeX\ traverse pour choisir
-une coupure de page.
-
-Vous pouvez contr\^oler le choix de coupure de page de \TeX\ de plusieurs fa\c cons~:
-\ulist
-\li Vous pouvez ins\'erer une p\'enalit\'e (\xref{vpenalty})
-^^{p\'enalit\'es//en listes verticales}
-entre deux \'el\'ements de la liste verticale principale. Une p\'enalit\'e positive
-d\'ecourage \TeX\ de couper la page \`a cet endroit, tandis qu'une p\'enalit\'e
-n\'egative---un bonus, autrement dit---%
-encourage \TeX\ de couper la page \`a cet endroit. Une p\'enalit\'e de $10000$
-ou plus pr\'evient une coupure de page, tandis qu'une p\'enalit\'e de $-10000$ ou
-moins force une coupure de page. Vous pouvez obtenir le m\^eme effet avec les
-commandes |\break| et |\nobreak| \ctsref{vbreak}.
-
-\li Vous pouvez ajuster les p\'enalit\'es associ\'ees aux coupures de page
-en assignant diff\'erentes valeurs aux \refterm{param\`etres:param\`etre} de
-coupure de page de \TeX.
-
-\li Vous pouvez englober une suite de paragraphes ou autres \'el\'ements dans
-la liste verticale principale avec une \refterm{vbox}, ceci emp\^eche \TeX\ de
-couper la page n'importe o\`u dans la suite.
-\endulist
-
-Une fois que \TeX\ a choisi une coupure de page, il place la portion
-de la liste verticale principale qui pr\'ec\`ede la coupure en |\box255|.
-Il appelle alors la \refterm{routine de sortie} courante pour ex\'ecuter |\box255|
-et \'eventuellement envoyer son contenu dans le \dvifile.
-^^{\dvifile//mat\'eriel de la routine de sortie}
-La routine de sortie doit aussi inclure des \refterm{insertions}, telles
-que des notes de pied de page, que \TeX\ a accumul\'e en ex\'ecutant la page.
-
-Il est utile de conna\^\i tre les endroits o\`u \TeX\ peut couper une page~:
-\ulist
-\li Sur le ressort, \`a condition que l'\'el\'ement pr\'ec\'edent le ressort soit
-une bo\^\i te, un \'el\'ement extraordinaire, une marque ou une insertion.
-Quand \TeX\ coupe une page sur un ressort, il fait la coupure devant
-l'espace du ressort et oublie le reste du ressort.
-\li Sur un cr\'enage qui est imm\'ediatement suivi par un ressort.
-\li Sur une p\'enalit\'e, vraisemblablement entre les lignes d'un paragraphe.
-\endulist
-Quand \TeX\ coupe une page, il efface toute s\'equence de ressort, cr\'enages et \'el\'ements
-de p\'enalit\'e qui suivent le point de coupure.
-
-
-\endconcept
-
-
-\conceptindex{cr\'enages}
-\concept cr\'enage
-
-^^{espacement//ajuster avec des cr\'enages}
-Un \defterm{cr\'enage} indique un changement de l'espacement normal entre
-les \'el\'ements d'une liste horizontale ou verticale.
-Un cr\'enage peut \^etre soit positif, soit n\'egatif. En
-mettant un cr\'enage positif entre deux \'el\'ements, vous les \'eloignez du
-montant du cr\'enage. en mettant un cr\'enage positif entre deux \'el\'ements,
-vous les rapprochez du montant du cr\'enage. Par exemple, ce texte~:
-\csdisplay
-11\quad 1\kern1pt 1\quad 1\kern-.75pt 1
-|
-produit des paires de lettres qui ressemblent \`a ceci~:
-\display{11\quad 1\kern1pt 1\quad 1\kern-.75pt 1}
-Vous pouvez utiliser des cr\'enages en mode vertical pour ajuster l'espace
-entre des paires de lignes particuli\`eres.
-
-Un cr\'enage de taille $d$ est tr\`es similaire \`a un \'el\'ement \refterm{ressort}
-qui a une taille $d$ sans \'etirement ni r\'etr\'ecissement. Le cr\'enage et le ressort
-ins\`erent ou enl\`event de l'espace entre deux \'el\'ements voisins. La diff\'erence
-essentielle est que \TeX\ consid\`ere deux bo\^\i tes n'ayant qu'un cr\'enage entre
-elles comme \'etant li\'ees. Cela fait que, \TeX\ ne coupe pas une ligne ou une
-page sur un cr\'enage sauf si le cr\'enage est imm\'ediatement suivi d'un ressort.
-Garder cette diff\'erence \`a l'esprit quand vous choisissez d'utiliser un
-cr\'enage ou un \'el\'ement ressort pour un usage particulier.
-
-\TeX\ ins\`ere automatiquement des cr\'enages entre des paires particuli\`eres de
-lettres adjacentes, ajustant ainsi l'espace entre ces lettres et mettant en
-valeur l'apparence de votre document compos\'e.
-Par exemple, la police Computer Modern romaine de $10$ points contient un
-cr\'enage pour la paire `To' qui remet le cot\'e gauche du `o' sous le `T'.
-Sans le cr\'enage, vous obtiendriez \hbox{``T{o}p''} au lieu de ``Top''---
-la diff\'erence est l\'eg\`ere mais visible.
-Le fichier de m\'etrique
-(^{\tfmfile})
-de chaque \refterm{police} sp\'ecifie le placement et la taille des cr\'enages
-que \TeX\ ins\`ere automatiquement quand il met du texte dans cette~police.
-\margin{paragraph deleted to save space; most of the material was
-already in this section.}
-
-\endconcept
-
-
-\conceptindex{dimensions}
-\concept dimension
-
-Une \defterm{dimension} sp\'ecifie une distance, c'est, une mesure lin\'eaire
-d'espace. Vous utilisez des dimensions pour sp\'ecifier des tailles de choses, comme les grandeurs
-d'une ligne. Les imprimeurs dans les pays de langue Anglaise mesurent traditionnellement
-les distances en points et en picas, tandis que les imprimeurs d'Europe continentale
-mesurent traditionnellement les distances en points Didot et en ciceros.
-Vous pouvez utiliser ces mesures ou d'autres, comme les pouces, qui peuvent
-vous \^etre plus familier. Les ^{unit\'es de mesure} ind\'ependantes des polices
-que \TeX\ comprend sont~:
-
-\xrdef{dimdefs}
-\nobreak\vskip\abovedisplayskip
-\halign{\indent\hfil\tt #\qquad&#\hfil\cr
-pt&^{point} (72.27 points = 1 pouce)\cr
-pc&^{pica} (1 pica = 12 points)\cr
-bp&big point (72 gros points = 1 pouce)\cr
-in&^{pouce}\cr
-cm&^{centim\`etre} (2.54 centim\`etres = 1 pouce)\cr
-mm&^{millim\`etre} (10 millim\`etres = 1 centim\`etre)\cr
-dd&^{\didotpt} (1157 {\didotpt}s = 1238 points)\cr
-cc&^{cic\'ero} (1 cicero = 12 points Didot)\cr
-sp&^{point d'\'echelle} (65536 points d'\'echelle = 1 point)\cr
-}
-\vskip\belowdisplayskip
-
-Deux unit\'es de mesure suppl\'ementaires sont associ\'ees avec chaque police~: `^|ex|',
-une mesure verticale correspondant habituellement \`a la hauteur de la lettre `x'
-de la police et `^|em|', une mesure
-horizontale habituellement \'egale \`a la taille du point de la police et
-environ la largeur de la lettre `M' de la police. Finalement,
-\TeX\ procure trois unit\'e de mesure ``infinies''~: `^|fil|', `^|fill|' et
-`^|filll|', dans l'ordre de force croissant.
-
-Une dimension est \'ecrite comme un ^{facteur}, c'est-\`a-dire, un multiplieur,
-suivi par une unit\'e de mesure.
-^^{unit\'es de mesure}
-Le facteur peut \^etre soit un \refterm{nombre} entier, soit
-une \refterm{constante d\'ecimale} contenant un point d\'ecimal
-ou une virgule d\'ecimale.
-Le facteur peut \^etre pr\'ec\'ed\'e par un signe plus ou moins, donc une dimension
-peut \^etre positive ou n\'egative.
-^^{dimensions//n\'egatives}
-L'unit\'e de mesure doit \^etre l\`a, m\^eme si le nombre est
-z\'ero. Des espaces entre le nombre et l'unit\'e de mesure sont permis
-mais facultatifs. Vous trouverez une d\'efinition pr\'ecise d'une
-dimension sur la \knuth{page~270}{315}. Voici quelques exemples de dimensions~:
-
-\csdisplay
-5.9in 0pt -2,5 pc 2fil
-|
-La derni\`ere repr\'esente un ordre de distance infinie.
-
-Une distance infinie \'ecrase toute distance finie ou toute distance infinie
-plus l\'eg\`ere. Si vous additionnez |10in| \`a |.001fil|, vous obtiendrez |.001fil|~; si vous additionnez
-|2fil| \`a |-1fill| vous aurez |-1fill|~; et ainsi de suite.
-\TeX\ n'accepte des distances infinies que quand
-vous avez sp\'ecifi\'e l'\refterm{\'etirement} et le \refterm{r\'etr\'ecissement}
-du \refterm{ressort}.
-
-\TeX\ multiplie toutes les dimensions de votre document par un
-facteur de \refterm{magnification} $f/1000$,
-o\`u $f$ est la valeur du param\`etre ^|\mag|.
-^^{magnification}
-Puisque la valeur par d\'efaut de
-|\mag| est $1000$, le cas normal est que votre document est
-compos\'e comme sp\'ecifi\'e. Vous pouvez sp\'ecifier une dimension comme elle sera
-mesur\'ee dans le document final ind\'ependamment d'une magnification en mettant
-`|true|' devant l'unit\'e. Par exemple, `|\kern 8 true pt|'
-produit un cr\'enage de $8$ points quelle que soit la magnification.
-\endconcept
-
-
-\concept {disposition de page}
-
-\bix^^{marges}
-\bix^^{ent\^etes}
-\bix^^{pieds de page}
-Quand vous concevez un document, vous devez d\'ecider de son
-\defterm{ajustement de page}~: la taille de la page, les marges des
-quatre cot\'es, les ent\^etes et pieds de page, s'il y en a, qui
-apparaissent en haut et en bas de la page et la taille de l'espace
-entre le corps du texte et l'ent\^ete ou le pied de page. \TeX\ en
-d\'efinit par d\'efaut. Il d\'efinit une page de $8 \frac1/2$
-par $11$ pouces avec des marges d'approximativement un pouce de
-chaque cot\'e, sans ent\^ete et avec un pied de page constitu\'e d'un
-num\'ero de page centr\'e.
-
-Les marges sont d\'etermin\'ees conjointement par les quatre param\`etres
-^|\hoffset|, ^|\voffset|, ^|\hsize| et ^|\vsize| (voir
-``marges'', \xrefpg{marges},
-pour des conseils sur la fa\c con de les ajuster).
-\eix^^{marges}
-L'ent\^ete consiste normalement en une simple ligne qui appara\^\i t en haut de chaque
-page, dans l'aire de la marge du haut. Vous pouvez la d\'efinir en assignant
-une liste de \refterm{token} dans le param\`etre ^|\headline| (\xref{\headline}).
-Similairement,
-le pied de page consiste normalement en une simple ligne qui appara\^\i t en bas de chaque
-page, dans l'aire de la marge du bas. Vous pouvez la d\'efinir en assignant
-une liste de \refterm{token} dans le param\`etre ^|\footline| (\xref{\footline}).
-Par exemple, l'entr\'ee~:
-\csdisplay
-\headline = {Baby's First Document\dotfill Page\folio}
-\footline = {\hfil}
-|
-produit une ligne d'ent\^ete comme celle-ci sur chaque page~:
-\vdisplay{
-\dimen0 = \hsize
-\advance \dimen0 by -\parindent
-\hbox to \dimen0{Baby's First Document\dotfill Page 19}}
-\noindent
-et aucune ligne de pied de page.
-
-Vous pouvez utiliser des marques pour placer le sujet d'une section de texte
-courante dans l'ent\^ete ou le pied de page.
-^^{marques//avec ent\^etes ou pieds de page}
-Voir \conceptcit{marque} pour une explication sur comment faire cela.
-\eix^^{ent\^etes}
-\eix^^{pieds de page}
-\endconcept
-
-\conceptindex{d\'elimiteurs}
-\concept d\'elimiteur
-
-Un \defterm{d\'elimiteur} est un caract\`ere mis comme fronti\`ere visible d'une
-formule math\'ematique. La propri\'et\'e essentielle d'un d\'elimiteur est que \TeX\
-peut ajuster sa taille par rapport \`a la taille verticale (\refterm{hauteur}
-plus \refterm{profondeur}) de la sous-formule.
-De plus, \TeX\ n'ex\'ecute d'ajustement que si le d\'elimiteur
-appara\^\i t dans un ``contexte de d\'elimiteur'', plus pr\'ecis\'ement, comme argument
-d'une des commandes ^|\left|,
-^|\right|,
-|\overwith!-delims|,
-|\atop!-with!-delims|,
-ou |\above!-with!-delims|
-^^|\overwithdelims|
-^^|\atopwithdelims|
-^^|abovewithdelims|
-\margin{Footnote deleted}
-(voir les \pp\xrefn{\overwithdelims},~\xrefn{\left}).
-Les contextes de d\'elimiteur incluent aussi tout \refterm{argument}
-\`a une \refterm{macro} qui utilise l'argument dans un contexte de d\'elimiteur.
-
-Par exemple, les parenth\`eses gauches et droites sont des d\'elimiteurs.
-Si vous utilisez des ^{parenth\`eses} dans un contexte de d\'elimiteur autour
-d'une formule, \TeX\ rend les parenth\`eses assez grandes pour entourer la
-\refterm{bo\^\i te} qui contient la formule (\`a condition que les
-\refterm{polices:police} que vous utilisez aient des parenth\`eses assez grandes).
-Par exemple~:
-\csdisplay
-$$ \left( a \over b \right) $$
-|
-donne~:
-\centereddisplays $$\left (a \over b \right ) $$
-Ici \TeX\ a rendu les parenth\`eses assez grandes pour s'accorder \`a la fraction.
-Mais si vous \'ecrivez, \`a la place~:
-\csdisplay
-$$({a \over b})$$
-|
-vous aurez~:
-$$({a \over b})$$
-Puisque les parenth\`eses ne sont pas dans un contexte de d\'elimiteur, elles ne
-sont \emph{pas} \'elargies.
-
-Les d\'elimiteurs vont par paires~:
-un d\'elimiteur ouvrant \`a la gauche de la sous-formule
-et un d\'elimiteur fermant \`a sa droite.
-Vous pouvez choisir explicitement une hauteur plus grande pour un
-d\'elimiteur avec les commandes |\bigl|, ^|\bigr|, et leurs
-pendantes \ctsref{\bigl}\footnote
-{\PlainTeX\ d\'efini les diff\'erentes commandes |\big| en utilisant |\left|
-et |\right| pour obtenir un contexte de d\'elimiteur. Il r\`egle la taille en
-construisant une formule vide de la hauteur d\'esir\'ee.}.
-Par exemple, pour avoir la
-formule affich\'ee~:
-$$\bigl(f(x) - x \bigr) \bigl(f(y) - y \bigr)$$
-
-\noindent dans laquelle les parenth\`eses externes sont un peu plus grandes
-que leurs internes, vous devez \'ecrire~:
-
-\csdisplay
-$$\bigl( f(x) - x \bigr) \bigl( f(y) - y \bigr)$$
-|
-
-Les $22$ d\'elimiteurs \plainTeX, montr\'es \`a leur taille normale, sont~:
-\display{%
-$( \>) \>[ \>] \>\{ \>\}
-\>\lfloor \>\rfloor \>\lceil \>\rceil
-\>\langle \>\rangle \>/ \>\backslash
-\>\vert \>\Vert
-\>\uparrow \>\downarrow \>\updownarrow
-\>\Uparrow \>\Downarrow \>\Updownarrow$}
-^^|)| ^^|)| ^^|[| ^^|]| ^^|\lbrack| ^^|\rbrack|
-^^|\{| ^^|\}| ^^|\lbrace| ^^|\rbrace|
-^^|\lfloor| ^^|\rfloor| ^^|\lceil| ^^|\rceil|
-^^|\langle| ^^|\rangle| ^^|/| ^^|\backslash|
-^^|\vert| ^^|\Vert|
-^^|\uparrow| ^^|\downarrow| ^^|\updownarrow|
-^^|\Uparrow| ^^|\Downarrow| ^^|\Updownarrow|
-\noindent
-Voici les plus grandes tailles fournies explicitement par \plainTeX\
- (les versions |\Biggl|, |\Biggr|, etc.)~:
-\nobreak\vskip .5\abovedisplayskip
-\display{%
-$\Biggl( \>\Biggr) \>\Biggl[ \>\Biggr]
-\>\Biggl\{ \>\Biggr\} \>\Biggl\lfloor \>\Biggr\rfloor
-\>\Biggl\lceil \>\Biggr\rceil
-\>\Biggl\langle \>\Biggr\rangle
-\>\Biggm/ \>\Biggm\backslash
-\>\Biggm\vert \>\Biggm\Vert
-\>\Biggm\uparrow \>\Biggm\downarrow \>\Biggm\updownarrow
-\>\Biggm\Uparrow \>\Biggm\Downarrow \>\Biggm\Updownarrow$}
-\vskip .5\belowdisplayskip
-\noindent
-Les d\'elimiteurs (sauf pour `|(|', `|)|', et
-`|/|')
-sont les symboles list\'es sur les
-pages~\xrefn{\lbrace}--\xrefn{\Uparrow}.
-Ils sont list\'es \`a un seul endroit sur la \knuth{page~146}{170--171}.
-
-Un d\'elimiteur peut appartenir \`a n'importe quelle classe.
-^^{classe//d'un d\'elimiteur}
-Pour un d\'elimiteur que vous agrandissez avec
-|\bigl|, |\bigr|, etc., la classe est d\'etermin\'ee par la commande~:
-``opener'' pour les commandes-|l|, ``closer'' pour les commandes-|r|,
-``relation'' pour les commandes-|m|, et ``ordinary symbol'' pour les
-commandes-|g|,
-c'est-\`a-dire, |\Big|.
-
-Vous pouvez obtenir un d\'elimiteur de deux diff\'erentes mani\`eres~:
-\olist
-\li Vous pouvez rendre un caract\`ere d\'elimiteur en lui assignant un
-codes de d\'elimiteur non n\'egatif
-\bix^^{codes d\'elimiteurs}
-(voir plus bas) avec la commande ^|\delcode| (\xref\delcode).
-N\'eanmoins le caract\`ere n'agit comme d\'elimiteur que si vous l'utilisez dans un
-contexte de d\'elimiteur\footnote{%
-Il est possible d'utiliser un caract\`ere avec un code de d\'elimiteur non n\'egatif
-dans un contexte o\`u il n'est pas un d\'elimiteur. Dans ce cas \TeX\ ne fait pas
-la recherche~; \`a la place, il utilise simplement le caract\`ere de fa\c con ordinaire
-(voir la \knuth{page~156}{181--282}).}.
-\li Vous pouvez produire un d\'elimiteur explicitement avec la commande
-^|\delimiter|
-(\xref\delimiter), en analogie avec la mani\`ere par laquelle vous pouvez produire un
-caract\`ere ordinaire avec la commande |\char| ou un caract\`ere math\'ematique
-avec la commande |\mathchar|.
-La commande |\delimiter| utilise les m\^emes code de d\'elimiteur que ceux utilis\'es
-dans une entr\'ee de table
-|\delcode|, mais avec un chiffre suppl\'ementaire devant pour indiquer une
-classe.
-Il est rare d'utiliser |\delimiter| en dehors d'une d\'efinition de macro.
-\endolist
-
-Un code de d\'elimiteur dit \`a
-\TeX\ comment chercher un caract\`ere de sortie appropri\'e pour repr\'esenter
-un d\'elimiteur.
-Les r\`egles de cette recherche sont assez compliqu\'ees
-(voir les \knuth{pages~156 et 442}{181--282 et 506--507}).
-Une compr\'ehension compl\`ete de ces r\`egles requiert des connaissances
-sur l'organisation des ^{fichiers de m\'etriques} des polices, un sujet qui n'est pas seulement en dehors
-de l'objectif de ce livre mais \'egalement en dehors de l'objectif de \texbook.
-
-En r\'esum\'e la recherche travaille comme cela. Le code de d\'elimiteur sp\'ecifie un
-``petit'' caract\`ere de sortie et un ``grand'' caract\`ere de sortie en
-fournissant une position dans la \refterm{police} et une \refterm{famille} de
-police pour chacun
-(see \xref\delcode).
-En utilisant cette information, \TeX\ peut trouver (ou construire)
-de plus en plus grandes versions du d\'elimiteur. \TeX\ essaye d'abord
-diff\'erentes tailles (de la petite \`a la grande)
-du ``petit'' caract\`ere dans la ``petite'' police
-et ensuite
-diff\'erentes tailles (l\`a aussi de la petite \`a la grande)
-du ``grand'' caract\`ere dans la ``grande'' police,
-en cherchant un dont la hauteur plus la profondeur soit suffisamment grande.
-Si aucun de ces caract\`eres trouv\'e n'est assez
-grand, il utilise le plus grand.
-Il est possible que
-le petit caract\`ere, le grand caract\`ere, ou les deux ait \'et\'e laiss\'e non
-sp\'ecifi\'e
-(indiqu\'e par un z\'ero dans la partie appropri\'ee du code de d\'elimiteur).
-Si seulement un caract\`ere
-a \'et\'e sp\'ecifi\'e, \TeX\ l'utilise. Si aucun ne l'a \'et\'e,
-il remplace le d\'elimiteur par un espace de largeur ^|\nulldelimiterspace|.
-\eix^^{codes d\'elimiteurs}
-
-\endconcept
-
-
-\concept d\'em\'erites
-
-\TeX\ utilise des \refterm{d\'em\'erites} comme une mesure de combien une ligne n'est pas d\'esirable
-quand il coupe un paragraphe en lignes \seeconcept{coupure de ligne}.
-^^{coupures de ligne//d\'em\'erites pour}
-Les d\'em\'erites d'une ligne sont affect\'es par la \refterm{m\'ediocrit\'e} de la ligne
-et par les \refterm{p\'enalit\'es:p\'enalit\'e} associ\'ees avec la ligne.
-^^{m\'ediocrit\'e}
-Le but de \TeX\ dans le choix d'un arrangement particulier de lignes est de
-minimiser le total des
-d\'em\'erites pour le paragraphe, qu'il calcule en additionnant les d\'em\'erites
-des lignes individuelles.
-voir les \knuth{pages~97--98}{114--115} pour les d\'etails sur comment \TeX\
-coupe un paragraphe en lignes.
-\TeX\ n'utilise pas de d\'em\'erites quand il choisit des coupures de page~;
-\`a la place, il utilise
-une mesure similaire appel\'ee le ``co\^ut'' d'une coupure de page particuli\`ere.
-\endconcept
-
-\conceptindex{\elements}
-\concept \'el\'ement
-
-Le terme \defterm{\'el\'ement} est souvent utilis\'e pour faire r\'ef\'erence \`a un composant
-d'une liste horizontale, verticale ou math\'ematique, c'est-\`a-dire, une liste d'\'el\'ements que
-\TeX\ construit quand il est dans un mode horizontal, vertical ou math\'ematique.
-\endconcept
-
-
-\concept {\elementextra}
-
-Un \defterm{\'el\'ement extraordinaire} est un \'el\'ement d'information qui
-dit \`a \TeX\ d'effectuer une action
-qui n'entre pas dans le sch\'ema ordinaire des choses.
-un \'el\'ement extraordinaire peut appara\^\i tre dans une liste horizontale ou
-verticale, comme une bo\^\i te ou un \'el\'ement ressort.
-\TeX\ compose un \'el\'ement extraordinaire
-comme une \refterm{bo\^\i te} de largeur, hauteur et profondeur \`a z\'ero---en d'autres
-termes, une bo\^\i te qui ne contient rien et n'occupe pas d'espace.
-
-Trois sortes d'\'el\'ements extraordinaires sont construits dans \TeX~:
-\ulist
-\li Les commandes |\openout|, |\closeout| et |\write|
-(\p\xrefn{\openout})
-% (2nd) removed \xref to \write, since it's on the same page
-produisent un \'el\'ement extraordinaire pour agir sur un fichier de sortie.
-^^|\openout//\elementextra\ produit par|
-^^|\write//\elementextra\ produit par|
-^^|\closeout//\elementextra\ produit par|
-\TeX\ diff\`ere l'op\'eration jusqu'a ce qu'il envoit la prochaine page
-dans le {\dvifile}
-^^{\dvifile//\elementextra\ en}
-(\`a moins que l'op\'eration soit pr\'ec\'ed\'ee par ^|\immediate|).
-\TeX\ utilise un \'el\'ement extraordinaire pour ces commandes parce qu'elles
- n'ont rien \`a faire avec ce qu'il compose quand il les rencontre.
-\li La commande ^|\special| \ctsref{\special} demande \`a \TeX\
-d'ins\'erer un certain texte directement dans le \dvifile.
-comme avec la commande |\write|, \TeX\ diff\`ere l'op\'eration jusqu'a ce
-qu'il envoit la prochaine page dans le {\dvifile}
-^^{\dvifile//mat\'eriel ins\'er\'e par \b\tt\\special\e}
-Une utilisation typique de |\special| serait de
-nommer un fichier graphique que le driver d'affichage pourrait incorporer dans
-votre sortie finale.
-\li Quand vous changez de langage avec les commandes ^|\language| ou ^|\setlanguage|
-\ctsref{\language},
-\TeX\ ins\`ere un \'el\'ement extraordinaire qui l'instruit de l'usage d'un
-certain jeu de r\`egle de c\'esure \`a suivre quand il coupe un paragraphe
-en lignes.
-\endulist
-\noindent
-Une impl\'ementation particuli\`ere de \TeX\ peut procurer des \'el\'ements extraordinaires additionnels.
-\endconcept
-
-
-\conceptindex{ent\^etes}
-\concept ent\^ete
-
-Un \defterm{ent\^ete} est un mat\'eriel que \TeX\ met en haut de chaque page,
-au-dessus du texte de cette page. L'ent\^ete pour un simple rapport
-peut \^etre constitu\'e du titre du cot\'e gauche de la page et du
-texte ``Page $n$'' du cot\'e droite de la page.
-D'habitude, un ent\^ete est constitu\'e d'une seule ligne, que vous pouvez mettre en
-assignant une liste de tokens \`a ^|\headline| \ctsref\headline.
-L'ent\^ete par d\'efaut de \plainTeX\ est \`a blanc.
-Il est aussi possible de produire des ent\^ete multiligne~ (voir \xrefpg{bighead})
-\endconcept
-
-
-\concept espace
-
-Vous pouvez demander \`a \TeX\ de mettre un \defterm{espace} entre deux \'el\'ements de
-plusieurs fa\c cons~:
-
-\olist
-^^{fin de ligne}
-\li Vous pouvez \'ecrire quelque chose que \TeX\ traite comme un \refterm{token}
-espace~: un ou plusieurs caract\`eres blancs, La fin d'une ligne (le
-caract\`ere fin de ligne agit comme un espace) ou toute \refterm{commande} qui
-se d\'eveloppe en token espace. \TeX\ g\'en\'eralement traite plusieurs
-espaces cons\'ecutifs comme \'equivalent \`a un seul, en incluant le cas o\`u
-les espaces comprennent une seule fin de ligne. (Une ligne vide
-indique la fin d'un paragraphe~; il fait que \TeX\ g\'en\`ere un token |\par|.)
-^^|\par//d'une ligne vide|
-\TeX\ ajuste la taille de cette sorte d'espace en fonction de la longueur
-requise par le contexte.
-
-^^{ressort//cr\'eer de l'espace avec}
-\li Vous pouvez \'ecrire une commande de saut qui produit le ressort
-que vous sp\'ecifiez dans la commande. Le ressort peut
-s'\refterm{\'etirer} ou se \refterm{r\'etr\'ecir},
-produisant plus ou moins d'espace. Vous pouvez avoir un ressort vertical
-comme un ressort horizontal. Le ressort dispara\^\i t \`a chaque fois qu'il
-est apr\`es une coupure de ligne ou de page.
-
-^^{cr\'enages//cr\'eer de l'espace avec}
-\li Vous pouvez \'ecrire un \refterm{cr\'enage}. Un cr\'enage produit un montant
- d'espace fixe qui ne s'\'etire ni se r\'etr\'ecit et ne dispara\^\i t pas sur un
-une coupure de ligne ou de page (\`a moins d'\^etre suivie imm\'ediatement par
-ressort). L'usage le plus courant du cr\'enage est d'\'etablir une relation
-spatiale fixe entre deux \refterm{bo\^\i te}s adjacentes.
-\endolist
-
-Le ressort et les cr\'enages peuvent avoir des valeurs n\'egatives.
-Un ressort n\'egatif ou un cr\'enage n\'egatif
-entre des \'el\'ements adjacents rapproche ces \'el\'ements l'un de l'autre.
-\endconcept
-
-
-\concept {\etirement}
-
-Voir \conceptcit{ressort}.
-\endconcept
-
-
-\concept famille
-
-Une \defterm{famille} est un groupe de trois \refterm{polices:police} reli\'ees utilis\'ees
-quand \TeX\ est en \refterm{mode math\'ematique}.
-^^{polices//familles de}
-En dehors du mode math\'ematique, les familles
-n'ont aucun effet. Les trois polices d'une famille sont utilis\'ees pour les symboles normaux
-(\refterm{taille de texte}), indices et exposants (\refterm{taille script})
-et sous-indices, sur-exposants, etc.\
-(\refterm{taille scriptscript}).
-^^{taille texte}
-^^{taille script}
-^^{taille scriptscript}
-Par exemple, le nombre `|2|' compos\'e dans ces trois polices vous donnera
-`$2$', `$\scriptstyle 2$' et `$\scriptscriptstyle 2$' (en \plainTeX).
-Normalement vous fixerez les trois polices d'une famille \`a diff\'erentes
-tailles du m\^eme type de police, mais rien ne vous emp\^eche d'utiliser des
-types diff\'erents pour les trois polices ni d'utiliser la m\^eme police
-deux fois dans une famille.
-
-{\tighten
-TeX\ procure jusqu'a seize familles, num\'erot\'ees de $0$ \`a $15$. Par
-exemple, la famille $0$ en \refterm{\plainTeX} consiste en roman $10$ points
-pour le texte, roman $7$ points pour le script et roman $5$ points pour le
-scriptscript.
-^^{\plainTeX//familles de police en}
-\PlainTeX\ d\'efini aussi la famille $1$ qui est constitu\'ee des polices
-math\'ematiques italiques et r\'eserve les familles $2$ et $3$ pour respectivement
-les ^{symboles sp\'eciaux} et les ^{extensions math\'ematiques}\footnote{Les
-familles $2$ et $3$ sont sp\'eciales en ce que leurs fichiers de m\'etriques de
-police doivent inclure des param\`etres pour l'espacement math\'ematique.}. Si
-vous devez d\'efinir une famille vous m\^eme, vous devrez utiliser la commande
-^|\newfam| \ctsref{\@newfam} pour avoir le num\'ero d'une famille qui n'est
-pas utilis\'ee et les commandes ^|\textfont|, ^|\scriptfont| and
-^|\scriptscriptfont| commands \ctsref{\scriptscriptfont} pour assigner des
-polices \`a cette famille.
-\par}
-
-\endconcept
-
-
-\conceptindex{fichiers}
-\concept fichier
-
-Un \defterm{fichier} est un flot d'information que \TeX\ interpr\`ete ou
-cr\'ee. Des fichiers sont g\'er\'es par le ^{syst\`eme d'exploitation} qui supervise votre
-ex\'ecution de \TeX. \TeX\ manipule des fichiers dans quatre contextes diff\'erents~:
-\olist
-\li Un ``^{fichier source}'' est celui que \TeX\ lit avec ses ``yeux''
-\seeconcept{\anatomy} et interpr\`ete en accord avec ses r\`egles ordinaires.
-Votre fichier d'entr\'ee primaire---celui que vous sp\'ecifiez apr\`es `|**|' ou
-sur la ligne de commande quand vous
-invoquez \TeX---est un fichier source, et ainsi pour tout fichier que vous
-appelez avec une commande ^|\input| \ctsref \input.
-
-\li Un ``^{fichier r\'esultat}'' est celui qui contient les r\'esultats de
-l'ex\'ecution de \TeX. \TeX\ cr\'ee deux fichiers r\'esultat~: Le
-\dvifile\ et le fichier .log.
-^^{\dvifile//comme un fichier r\'esultat}
-^^{\logfile//comme un fichier r\'esultat}
-Le \dvifile\ contient l'information n\'ecessaire pour imprimer votre document.
-Le fichier
-.log contient un enregistrement de ce qui s'est pass\'e pendant l'ex\'ecution,
-incluant tout message d'erreur que \TeX\ a g\'en\'er\'e.
-Si votre fichier source primaire s'appelle
-|screed.tex|, vos \dvifiles\ et log se nommeront |screed.dvi|
-et |screed.log|\footnote{C'est la convention usuelle, mais
-des impl\'ementations particuli\`eres de \TeX\ sont libres de changer cela.}.
-
-\li Pour lire un fichier avec la commande ^|\read|
-\ctsref{\read} vous devez associer le fichier avec un flot d'entr\'ee.
-^^{flots d'entr\'ee//lire avec \b\tt\\read\e}
-Vous pouvez avoir jusqu'a $16$ flots d'entr\'ee actifs
-\`a la fois, num\'erot\'es de $0$ \`a $15$.
-La commande |\read| lit un seul fichier et le fait avec la valeur d'une
-\refterm{s\'equence de contr\^ole} d\'esign\'ee, donc lire avec
-|\read| est tr\`es diff\'erent de lire avec ^|\input| (qui apporte un
-fichier entier).
-\TeX\ prend tout flot d'entre qui n'est pas num\'erot\'e entre
-$0$ et $15$ comme r\'ef\'erence au terminal,
-donc `|\read16|', disons, lit la prochaine ligne que vous saisissez sur le
-terminal.
-
-\li Pour \'ecrire dans un fichier avec la commande |\write|
-\ctsref \write\ vous devez associer le fichier
-avec un flot de sortie.
-^^|\write//flot d'entr\'ee pour|
-^^{flots de sortie}
-Vous pouvez avoir jusqu'a $16$ flots de sortie actifs
-\`a la fois, num\'erot\'es de $0$ \`a $15$.
-Les flots d'entr\'ee et de sortie sont ind\'ependants.
-Tout ce qui est envoy\'e vers un flot de sortie avec un num\'ero n\'egatif va vers le
-fichier log~; tout ce qui est envoy\'e vers un flot de sortie avec un num\'ero
-sup\'erieur \`a $15$
-va \`a la fois vers le fichier log et le terminal.
-Ainsi `|\write16|', disons, \'ecrit une ligne sur le terminal et aussi envoit
-cette ligne vers le fichier~log.
-
-\endolist
-
-Vous devez ouvrir un fichier de flot avant de pouvoir l'utiliser.
-Un fichier de flot d'entr\'ee est ouvert avec une commande ^|\openin|
-\ctsref \openin\ et un fichier de flot de sortie est ouvert avec une
-commande ^|\openout| \ctsref\openout.
-Par propret\'e,
-vous devez fermer un fichier de flot quand vous en avez fini avec lui, n\'eanmoins
-\TeX\ le fera \`a la fin du traitement si vous ne l'avez pas fait.
-Les deux commandes pour fermer un fichier de flot sont ^|\closein| \ctsref\closein\
-et ^|\closeout| \ctsref\closeout.
-Un avantage de fermer un flot quand vous en avez fini avec lui
-est que vous pouvez r\'eutiliser le flot pour un autre fichier.
-Ceci peut \^etre essentiel quand vous lisez un longue suite de fichiers.
-
-De plus vous pouvez assigner des num\'eros vous-m\^eme aux flots d'entr\'ee et de sortie,
-Il est pr\'ef\'erable de le faire avec les commandes ^|\newread| et
-^|\newwrite| \ctsref{\@newwrite}.
-Vous pouvez avoir plus d'un flot associ\'e avec un seul fichier,
-mais vous aurez des salet\'es (probablement non diagnostiqu\'e) \`a moins que tous les flots
-soit des flots d'entr\'ee. Associer plus d'un flot avec un fichier d'entr\'ee
-peut-\^etre utile quand vous voulez utiliser le m\^eme fichier d'entr\'ee pour deux
-usages diff\'erents.
-
-D'habitude, \TeX\ diff\`ere les actions d'ouverture, d'\'ecriture et de fermeture
-d'un flot de sortie jusqu'a ce qu'il enregistre une page avec ^|\shipout|
-(voir la \knuth{page~227}{266}
-pour les d\'etails). Cette propri\'et\'e s'applique m\^eme aux messages \'ecrits sur le
-terminal avec |\write|. Mais vous pouvez demander \`a \TeX\ de faire une action
-sur un flot de sortie imm\'ediatement en faisant pr\'ec\'eder la commande d'action de
-^|\immediate| \ctsref\immediate. Par exemple~:
-\csdisplay
-\immediate\write16{Do not pass GO!! Do not collect $200!!}
-|
-\endconcept
-
-
-\concept {fichier format}
-
-{\tighten
-Un \defterm{fichier format} est un fichier qui contient une image de
-la m\'emoire de \TeX\ sous la forme dans laquelle il peut \^etre recharg\'e rapidement.
-Un fichier format peut \^etre cr\'e\'e avec la commande ^|\dump| \ctsref\dump.
-L'image contient un enregistrement complet
-des d\'efinitions (de \refterm{polices:police}, \refterm{macros:macro}, etc.)
-qui \'etaient pr\'esentes quand le dump a \'et\'e effectu\'e.
-En utilisant ^|virtex|, un forme sp\'eciale ``vierge'' de \TeX,
-vous pouvez recharger le fichier format \`a haute vitesse et
-continuer avec le m\^eme \'etat dans lequel \'etait \TeX\ au moment du dump.
-L'avantage du fichier format sur un fichier d' entr\'ee ordinaire
-contenant la m\^eme information est que \TeX\ peut la charger beaucoup plus
-vite.
-\par}
-
-Des fichiers de format doivent \^etre cr\'e\'es par ^|initex|, une
-forme sp\'eciale de \TeX\ \'ecrite \`a cette intention.
-Ni |virtex|, ni |initex| n'ont d'outils autres que les primitives
-construites dans le programme \TeX\ lui-m\^eme.
-
-Une forme ^{pr\'echarg\'ee} de \TeX\ est celle qui a un fichier format conforme
-charg\'e et est pr\^et \`a accepter l'entr\'ee de l'utilisateur.
-La forme de \TeX\ qui se nomme |tex|
-a souvent les d\'efinitions \plainTeX\ pr\'echarg\'ees.
-(\PlainTeX\ est normalement fourni sous deux autres formes~:
-comme une fichier de format et comme une fichier source de \TeX.
-Dans certains environnements, |tex| est \'equivalent \`a appeler |virtex|
-et charge alors |plain|.)
-Cr\'eer des formes pr\'echarg\'ees de \TeX\ n\'ecessite un programme sp\'ecial~;
-il ne peut pas \^etre fait en n'utilisant que les outils de \TeX\ lui-m\^eme.
-
-\endconcept
-
-
-\concept {fichier log}
-
-Voir \conceptcit{fichier}.
-\endconcept
-
-
-\conceptindex{filets}
-\concept filets
-
-Un \defterm{filet} est un rectangle plein noir.
-Un filet, comme une \refterm{bo\^\i te},
-a une \refterm{largeur}, une \refterm{hauteur} et une \refterm{profondeur}.
-La dimension verticale du rectangle
-est la somme de sa hauteur et de sa profondeur.
-Une ligne droite horizontale ou verticale est un cas sp\'ecial de filet.
-
-\bix^^{filets horizontaux}
-\bix^^{filets verticaux}
-\bix^^|\hrule|
-\bix^^|\vrule|
-Un filet peut \^etre soit horizontal, soit vertical. La distinction entre un
-filet horizontal et un vertical diff\`ere selon la fa\c con de produire le
-filet, un filet vertical peut \^etre court et \'epais (et donc ressembler
-\`a une ligne horizontale), tandis qu'un filet horizontal peut \^etre grand et maigre
-(et donc ressembler \`a une ligne verticale). La notion de filet de \TeX\ est
-plus g\'en\'erale que celle des typographes, qui pensent \`a un filet comme \`a une ligne
-et ne veulent habituellement pas appeler filet une bo\^\i te noire carr\'ee.
-
-Vous pouvez produire un filet horizontal en utilisant la commande
-|\hrule| et un filet vertical en utilisant
-la commande |\vrule| \ctsref{\vrule}.
-Par exemple, la s\'equence de contr\^ole |\hrule| par elle-m\^eme
-produit un filet fin qui traverse la page, comme ceci~:
-
-{\offinterlineskip
-\nobreak\medskip
-\hrule
-\medskip}
-
-La commande `|\vrule height .25in|' produit un filet vertical
-qui s'allonge de $.25$~pouces sur la page comme ceci~:
-\nobreak\vskip \abovedisplayskip
-\leftline{\vrule height .25in}
-\vskip \belowdisplayskip
-
-Il y a deux diff\'erences entre les filets horizontaux et verticaux~:
-\olist
-\li Pour un filet horizontal, \TeX\ prend comme largeur par d\'efaut la largeur
-de la plus petite \refterm{bo\^\i te} ou \refterm{alignement} qui l'englobe.
-Pour un filet vertical, \TeX\ prend comme hauteur et profondeur par d\'efaut
-de la m\^eme fa\c con. (Le
-d\'efaut est la taille que vous obtenez si vous ne donnez pas de taille explicitement
-pour cette dimension.)
-
-^^{listes horizontales//filet en}
-^^{listes verticales//filet en}
-\li
-{\tighten
-Un filet horizontal est un \'el\'ement fondamentalement vertical qui ne peut participer
-\`a une \refterm{liste horizontale}, tandis qu'un filet vertical est un \'el\'ement
-horizontal qui ne peut participer \`a une \refterm{liste verticale}.
-Cette propri\'et\'e peut sembler \'etrange d'un premier abord, mais il y a une
-bonne raison \`a cela~:
-Un filet horizontal s'\'etend visuellement de gauche \`a droite et donc s\'epare des
-\'el\'ements d'une liste verticale, tandis qu'un filet vertical s'\'etend visuellement
-de haut en bas et ainsi s\'epare des \'el\'ements d'une liste horizontale.
-%(Look at the rules that are shown above.)
-\par}
-\endolist
-
-{\tighten
-Si vous construisez un filet avec trois dimensions explicites,
-cela donnera la m\^eme chose que vous fassiez un filet horizontal ou vertical.
-Par exemple, la commande `|\vrule height1pt depth2pt width3in|' produit ce
-filet au look horizontal~:
-\par}
-
-{\offinterlineskip
-\nobreak\medskip\nobreak\vskip3pt
-\leftline{\vrule height1pt depth2pt width3in}
-\medskip}
-
-Vous trouverez un \'etat pr\'ecis du traitement des filets de \TeX\ dans les
-\knuth{pages~221--222}{259--260}.
-\eix^^{filets horizontaux}
-\eix^^{filets verticaux}
-\eix^^|\hrule|
-\eix^^|\vrule|
-\endconcept
-
-
-\conceptindex{flots d'entr\'ee}
-\concept {flots d'entr\'ee}
-
-Voir \conceptcit{fichier}.
-\endconcept
-
-
-\conceptindex{flots de sortie}
-\concept {flots de sortie}
-
-\margin{This concept was out of order.}
-Voir \conceptcit{fichier}.
-\endconcept
-
-
-\concept global
-
-Une d\'efinition \defterm{globale} est effective
-jusqu'a la fin du
-document ou jusqu'a ce qu'elle soit \'ecras\'ee par une autre d\'efinition,
-m\^eme quand elle appara\^\i t dans un \refterm{groupe}.
-Ainsi une d\'efinition globale n'est pas affect\'ee par les fronti\`eres de groupe.
-Vous pouvez rendre n'importe quelle d\'efinition globale en la pr\'efixant avec la
-commande |\global| \ctsref{\global} a moins que ^|\globaldefs| \ctsref\globaldefs{}
-soit n\'egatif.
-^^|\global|
-
-Il y a un moyen sp\'ecial de rendre une d\'efinition de \refterm{macro} globale.
-^^{macros//globale}
-Normalement vous d\'efinissez une macro en utilisant soit la commande |\def|
-soit la commande |\edef| \ctsref{\edef}.
-^^|\edef//rendre global|
-^^|\def//rendre global|
-Si vous utilisez |\gdef| ou |\xdef|
-au lieu de |\def| et |\edef| respectivement, la d\'efinition de macro sera
-globale. Parce que, `^|\gdef|' est \'equivalent \`a `|\global\def|' et
-`^|\xdef|' est \'equivalent \`a `|\global\edef|'.
-\endconcept
-
-
-\conceptindex{groupes}
-\concept groupe
-
-Un \defterm{groupe} est une partie de votre manuscrit que \TeX\ traite comme
-une unit\'e.
-Vous indiquez un groupe en l'entourant avec les accolades
-`|{|' et `|}|' (ou tout autre caract\`ere avec le
-\refterm{code de cat\'egorie} appropri\'e).
-^^|{//d\'ebuter un groupe|
-^^|}//terminer un groupe|
-
-La plus importante propri\'et\'e d'un groupe est que toute d\'efinition
-ou assignation non globale que vous faites dans un groupe dispara\^\i t quand
-le groupe se termine. Par exemple, si vous \'ecrivez~:
-
-\csdisplay
-Please don't pour {\it any} more tea into my hat.
-|
-La \refterm{s\'equence de contr\^ole} |\it| demande \`a \TeX\ de mettre le mot
-`|any|' en police italique mais n'affecte pas le reste du texte.
-Comme autre exemple, si vous utilisez le param\`etre |\hsize|
-\ctsref{\hsize} pour changer la longueur de la ligne dans un groupe, la longueur de ligne
-retourne \`a sa valeur pr\'ec\'edente un fois que \TeX\ est sorti du groupe.
-
-Les groupes sont aussi pratiques comme moyen de contr\^oler l'espace\-ment.
-Par exemple, si vous saisissez~:
-
-\csdisplay
-\TeX for the Impatient and the Outpatient too.
-|
-\noindent
-vous aurez~:
-\display{%
-\TeX for the Impatient and the Outpatient too.
-}
-\noindent
-puisque la s\'equence de contr\^ole |\TeX| (qui produit le logo \TeX)
-absorbe l'espace qui le suit.
-vous voulez probablement ceci~:
-\display{%
-{\TeX} for the Impatient and the Outpatient too.
-}
-\noindent
-Une mani\`ere d'obtenir ceci est d'englober `|\TeX|' dans un groupe~:
-\csdisplay
-{\TeX} for the Impatient and the Outpatient too.
-|
-L'accolade droite emp\^eche la s\'equence de contr\^ole d'absorber l'espace.
-\endconcept
-
-
-\concept hauteur
-
-La \defterm{hauteur} d'une \refterm{bo\^\i te} est la distance \`a laquelle la bo\^\i te
-s'\'etend au dessus de sa \refterm{ligne de base}.
-^^{\boites//hauteur de}
-\endconcept
-
-
-\conceptindex{hbox}
-\concept hbox
-
-Une \defterm{hbox} (bo\^\i te horizontale) est une \refterm{bo\^\i te} que \TeX\
-construit en plaquant les articles d'une \refterm{liste horizontale} l'un
-apr\`es l'autre, de la gauche vers la droite.
-^^{listes horizontales//hbox form\'es \`a partir de}
-Une hbox, prise comme unit\'e, n'est ni
-fondamentalement horizontale ni fondamentalement verticale, c'est-\`a-dire,
-qu'elle peut appara\^\i tre comme un
-article soit d'une liste horizontale soit d'une \refterm{liste verticale}.
-Vous pouvez construire une hbox avec la commande |\hbox| \ctsref{\hbox}.
-\endconcept
-
-
-\conceptindex{insertions}
-\concept insertion
-
-\looseness = -1
-Une \defterm{insertion} est une liste verticale contenant du mat\'eriel devant
-\^etre ins\'er\'e sur une page quand \TeX\ a fini de construire cette page\footnote
-{\tighten
-\TeX\ lui-m\^eme n'ins\`ere pas le mat\'eriel---il rend juste le mat\'eriel accessible
-\`a la routine de sortie, qui est alors responsable de la transf\'erer sur la
-page compos\'ee.
-^^{routine de sortie//insertions, traitement de}
-Le seul effet imm\'ediat de la commande ^|\insert|
-\ctsref{\insert} est de changer les calculs de coupure de page de \TeX\ pour
-qu'il laisse de la place sur la page pour le mat\'eriel \`a ins\'erer. Plus tard,
-quand \TeX\ coupera r\'eellement la page, il divisera le mat\'eriel \`a ins\'erer en
-deux groupes~: le mat\'eriel qui passe sur la page courante et le mat\'eriel qui
-ne passe pas.
-^^{coupures de page//insertions sur des}
-Le mat\'eriel qui passe sur la page est plac\'e dans des registres de bo\^\i te, un
-par insertion et le mat\'eriel qui ne passe pas est transf\'er\'e sur la page
-suivante.
-Cette proc\'edure autorise \TeX\ \`a faire des choses comme distribuer des parties
-d'une longue note de pied de page sur plusieurs pages cons\'ecutives.}. Des
-exemples de telles insertions sont les notes de pied de page et les figures.
-Les commandes \refterm{\plainTeX} pour cr\'eer des insertions sont
-^|\footnote|, ^|\topinsert|, |\mid!-insert|,
-^^|\midinsert|
-et ^|\pageinsert|, aussi bien que la commande primitive ^|\insert|
-elle-m\^eme (\pp\xrefn\footnote--\xrefn{endofinsert}).
-Le m\'ecanisme de \TeX\ pour manipuler des insertions est plus compliqu\'e~;
-voir les \knuth{pages~122--125}{142--146} pour les d\'etails.
-\endconcept
-
-
-\concept largeur
-
-^^{\boites//largeur de}
-La \defterm{largeur} d'une \refterm{bo\^\i te} est le montant d'espace horizontal
-qu'il occupe, c'est-\`a-dire, la distance de son cot\'e gauche \`a son cot\'e droit.
-Le mat\'eriel compos\'e dans une bo\^\i te peut \^etre plus large que la bo\^\i te elle-m\^eme.
-\endconcept
-
-
-
-\conceptindex{ligatures}
-\concept ligature
-
-Une \defterm{ligature} est un simple caract\`ere qui remplace une
-s\'e\-quence particuli\`ere de caract\`eres adjacents dans un document compos\'e.
-Par exemple, le mot `|office|' est compos\'e \hbox{``office''} et non
-\hbox{``of{f}ice''}, par les syst\`emes de composition de haute qualit\'e.
-La connaissance des ligatures est construite dans les \refterm{polices:police}
-que vous utilisez, donc vous n'avez rien \`a faire pour que \TeX\
-les produise. (Vous pouvez emp\^echer la ligature d'``office'', comme nous
-l'avons dit plus t\^ot, en saisissant `|of{f}ice|' dans votre entr\'ee.)
-\TeX\ est aussi capable d'utiliser son m\'ecanisme de ligature pour composer
-la premi\`ere ou la derni\`ere lettre d'un mot diff\'eremment de la m\^eme lettre
-qui appara\^\i t au milieu d'un mot
-Vous pouvez emp\^echer cet effet (si vous le rencontrez) en utilisant la
-commande ^|\noboundary| (\xref\noboundary).
-
-Parfois, vous aurez besoin d'une ligature d'une langue europ\'eenne.
-^^{langues europ\'eennes}
-\TeX\ ne les produit pas automatiquement sauf si vous utilisez une police
-dessin\'ee pour cette langue. Un certain nombre de ces ligatures, par exemple,
-\AE, sont accessible par une commande
-(voir ``Lettres et ligatures pour alphabets europ\'eens'',
-\xref{fornlets}).
-\endconcept
-
-
-\conceptindex{lignes de base}
-\concept ligne de base
-
-La \defterm{ligne de base} d'une \refterm{bo\^\i te} est une ligne imaginaire qui traverse
-la bo\^\i te.
-^^{\boites//lignes de base de}
-Quand \TeX\
-assemble les bo\^\i tes d'une \refterm{liste horizontale} en une bo\^\i te plus grande,
-il aligne les bo\^\i tes de la liste pour que leurs lignes de base co\"\i ncident.
-Par analogie, pensez que vous \'ecrivez sur un bloc de papier lign\'e. Chaque lettre
-que vous \'ecrivez a
-une ligne de base implicite.
-Pour aligner les lettres horizontalement,
-vous les placez sur le bloc pour que leurs lignes de base
-s'ajustent avec les lignes-guides claires imprim\'ees sur le bloc.
-
-Une bo\^\i te peut et souvent doit s'\'etendre sous sa ligne de base.
-Par exemple, la lettre `g' s'\'etend sous la ligne de base de sa bo\^\i te parce
-qu'elle a une descendante (la boucle du dessous du `g').
-\endconcept
-
-
-\conceptindex{listes}
-\concept liste
-
-Une \defterm{liste} est une s\'equence d'\refterm{\'el\'ements:\'el\'ement}
-(\refterm{bo\^\i tes:bo\^\i te}, \refterm{ressorts:ressort}, \refterm{cr\'enages:cr\'enage}, etc.)
-cela comprend tout le contenu d'une hbox, d'une vbox
-ou d'une formule math\'ematique.
-Voir \conceptcit{liste horizontale}, \conceptcit{liste verticale}.
-
-\endconcept
-
-
-\conceptindex{listes horizontales}
-\concept {liste horizontale}
-
-Une \defterm{liste horizontale} est une liste d'articles
-que \TeX\ a produit quand il \'etait dans un de ses
-\refterm{modes horizontaux:mode horizontal}, c'est-\`a-dire, en assemblant
-soit un paragraphe soit une hbox. Voir ``mode horizontal'' ci-dessous.
-\endconcept
-
-
-\conceptindex{listes verticales}
-\concept {liste verticale}
-
-Une \defterm{liste verticale} est une liste d'\'el\'ements que \TeX\ a produit quand il
-\'etait dans une de ses modes vertical, c'est-\`a-dire, en assemblant soit une
-\refterm{vbox} soit une page. Vois ``mode vertical'' ci-dessous.
-
-\endconcept
-
-
-\conceptindex{macros}
-\concept macro
-
-{% Use a brace here so that definitions of explanatory macros remain local.
-% The closing brace is at the end of the concept.
-Une \defterm{macro} est une d\'efinition qui donne un nom \`a un mod\`ele de texte
-d'entr\'ee de \TeX\footnote{Plus pr\'ecis\'ement, la d\'efinition donne un nom
-\`a une s\'equence de tokens.}. Le nom peut \^etre soit une \refterm{s\'equence de
-contr\^ole} soit un \refterm{caract\`ere actif}. Le mod\`ele est appel\'e le
-``texte de remplacement''. La commande primaire pour d\'efinir des macros est
-la s\'equence de contr\^ole |\def|.
-
-\def\arctheta{\cos \theta + i \sin \theta}
-Comme exemple simple, supposez que vous ayez un document dans lequel
-la s\'equence `$\cos \theta + i \sin \theta$' appara\^\i t plusieurs fois.
-Au lieu de l'\'ecrire \`a chaque fois, vous pouvez d\'efinir une macro pour cela~:
-\csdisplay
-\def\arctheta{\cos \theta + i \sin \theta}
-|
-Maintenant \`a chaque fois que vous avez besoin de cette s\'equence, vous pouvez
-simplement ``appeler'' la macro en \'ecrivant `|\arctheta|' et vous l'aurez.
-Par exemple, `|$e^{\arctheta}$|' vous donnera `$e^{\arctheta}$'.
-
-\bix^^{macros//param\`etres de}
-Mais la r\'eelle puissance des macros tient au fait qu'une macro peut avoir des
-param\`etres. Quand vous appelez une macro qui a des param\`etres, vous fournissez
-des arguments qui se substituent \`a ces param\`etres. Par exemple, supposez
-que vous \'ecrivez~:
-\pix\indexchar #
-\def\arc#1{\cos #1 + i \sin #1}
-\csdisplay
-\def\arc#1{\cos #1 + i \sin #1}
-|
-
-La notation |#1| \xrdef{@msharp} d\'esigne le premier param\`etre
-de la macro, qui dans ce cas n'a qu'un param\`etre. Vous pouvez maintenant
-produire une forme similaire, telle que `$\arc{2t}$', avec l'appel de macro
-`|\arc{2t}|'.
-
-Plus g\'en\'eralement, une macro peut avoir jusqu'a neuf param\`etres, que vous
-d\'esignez par `|#1|', `|#2|', etc\null. dans la d\'efinition de la macro. \TeX\
-fourni deux types de param\`etres~: les param\`etres d\'elimit\'es et les param\`etres
-non d\'elimit\'es. Bri\`evement, un param\`etre d\'elimit\'e a un \refterm{argument} qui
-est d\'elimit\'e ou termin\'e par une s\'equence sp\'ecifique de tokens (le d\'elimiteur),
-tandis qu'un param\`etre non d\'elimit\'e a un argument qui n'a pas besoin de
-d\'elimiteur pour le terminer.
-Premi\`erement, nous expliquerons comment fonctionnent les macros quand elles
-n'ont que des param\`etres non d\'elimit\'es, et ensuite, nous expliquerons comment
-elles fonctionnent quand elles ont des param\`etres d\'elimit\'es.
-
-^^{param\`etres//non d\'elimit\'es}
-Si une macro n'a que des param\`etres non d\'elimit\'es, ces param\`etres doivent appara\^\i tre
-l'un apr\`es l'autre dans la d\'efinition de macro \emph{sans rien entre
-eux ou entre le dernier param\`etre et l'accolade gauche au d\'ebut du
-texte de remplacement}.
-Un appel d'une telle macro consiste en le nom de la macro suivi par
-les arguments de l'appel, un pour chaque param\`etre. Chaque argument est
-soit~:
-
-\ulist \compact
-\li un \refterm{token} simple autre qu'un accolade gauche ou droite ou
-
-\li une s\'equence de tokens englob\'e entre une accolade gauche et
-une accolade droite correspondante\footnote{L'argument peut avoir des paires
-d'accolades englobantes et chacune de ces paires peut d\'esigner soit
-un \refterm{groupe} soit un autre argument de macro.}.
-\endulist
-
-Quand \TeX\ rencontre une macro, il d\'eveloppe la macro dans son \oe so\-phage
-\seeconcept{\anatomy}
-en substituant chaque argument par le param\`etre correspondant
-dans le texte de remplacement. Le texte r\'esultant peut contenir d'autres
-appels de macro. Quand \TeX\ rencontre un tel appel de macro imbriqu\'e, il
-d\'eveloppe cet appel imm\'ediatement sans regarder ce qui suit l'appel
-\footnote{En terminologie informatique, le d\'eveloppement est ``profondeur
-d'abord'' plut\^ot que ``largeur d'abord''. Notez que vous pouvez modifier l'ordre
-du d\'eveloppement avec des commandes telles que |\expandafter|.}. Quand
-l'\oesophage de \TeX\ tombe sur une \refterm{commande} \refterm{primitive}
-qui ne peut \^etre d\'evelopp\'ee plus loin, \TeX\ passe cette commande \`a l'estomac
-de \TeX. L'ordre de d\'eveloppement est parfois critique, donc de fa\c con \`a vous
-aider \`a le comprendre, nous vous donnons un exemple de \TeX\ au travail.
-
-Supposez que vous procurez \`a \TeX\ l'entr\'ee suivante~:
-\csdisplay
-\def\a#1#2{\b#2#1\kern 2pt #1}
-\def\b{bb}
-\def\c{\char49 cc}
-\def\d{dd}
-\a\c{e\d} % Call on \a.
-|
-Alors l'argument correspondant \`a |#1| est |\c|,
-et l'argument correspondant \`a |#2| est |e\d|.
-\TeX\ d\'eveloppe l'appel de macro d'apr\`es les \'etapes suivantes~:
-
-{\vskip\abovedisplayskip\obeylines % ugly
-|\b e\d\c\kern 2pt \c|
-|bbe\d\c\kern 2pt \c|
-|\d\c\kern 2pt \c|\quad(`|b|', `|b|', `|e|' envoy\'es vers l'estomac)
-|dd\c\kern 2pt \c|
-|\c\kern 2pt \c|\quad(`|d|', `|d|' envoy\'es vers l'estomac)
-|\char49 cc\kern 2pt \c|
-|\c|\quad(`|\char|', `|4|', `|9|', `|c|', `|c|', %
-`|\kern|', `|2|', `|p|', `|t|' envoy\'es vers l'estomac)
-|\char49 cc|
-(`|\char49|', `|c|', `|c|' envoy\'es vers l'estomac)
-\vskip\belowdisplayskip}
-
-\noindent Notez que les lettres `|b|', `|c|', `|d|' et `|e|' et les
-s\'equences de contr\^ole `|\kern|' et `|\char|' sont toutes des commandes
-primitives qui ne peuvent \^etre d\'evelopp\'ees.
-
-\bix^^{param\`etres//d\'elimit\'es}
-Une macro peut aussi avoir des ``param\`etres d\'elimit\'es'', qui peuvent \^etre m\'elang\'es avec
-des non d\'elimit\'es dans toutes les combinaisons. L'id\'ee d'un param\`etre
-d\'elimit\'e est que \TeX\ trouve l'argument correspondant en recherchant
-une certaine s\'equence de tokens qui marquent la fin de l'argument---le
-d\'elimiteur. Cela fait, quand \TeX\ recherche un tel argument, il
-prend comme argument tout les tokens \`a partir de la position courante de \TeX\
-mais sans inclure le d\'elimiteur.
-
-Vous indiquez un param\`etre d\'elimit\'e en \'ecrivant `|#|$n$' ($n$
-doit \^etre entre $0$
-et $9$) suivi par un ou plusieurs tokens qui agissent comme le d\'elimiteur.
-Le d\'elimiteur s'\'etend jusqu'au prochain `|#|' ou `|{|'---qui ont un sens
-car `|#|' d\'ebute un autre param\`etre et `|{|' le texte de remplacement.
-
-Le d\'elimiteur ne peut \^etre `|#|' ou `|{|', donc vous pouvez appeler un param\`etre
-d\'elimit\'e \`a partir d'un non d\'elimit\'e en recherchant ce qui le suit.
-
-Si le caract\`ere apr\`es le param\`etre est `|#|' ou `|{|', vous avez un
-param\`etre non d\'elimit\'e~; autrement il sera d\'elimit\'e. Notez
-la diff\'erence dans les arguments pour les deux sortes de param\`etres---un
-param\`etre non d\'elimit\'e est d\'esign\'e soit par un simple token, soit par une
-s\'equence de tokens englob\'es entre des accolades, tandis qu'un param\`etre
-d\'elimit\'e est d\'esign\'e par n'importe quel nombre de tokens, m\^eme aucun.
-
-Un exemple de macro utilisant deux param\`etres d\'elimit\'es est~:
-\def\diet#1 #2.{On #1 we eat #2!}
-\csdisplay
-\def\diet#1 #2.{On #1 we eat #2!!}
-|
-Ici le premier param\`etre est d\'elimit\'e par un simple espace et le
-second param\`etre est d\'elimit\'e par un point. Si vous saisissez~:
-\csdisplay
-\diet Tuesday turnips.
-|
-vous obtiendrez le texte ``\diet Tuesday turnips.''.
-Mais si les tokens d\'elimitants sont englob\'es dans un groupe, \TeX\
-ne les consid\`ere pas d\'elimit\'es. Donc si vous \'ecrivez~:
-\csdisplay
-\diet {Sunday mornings} pancakes.
-|
-vous obtiendrez le texte `\diet {Sunday mornings} pancakes.'
-m\^eme s'il y a un espace entre `|Sunday|' et `|morning|'.
-Quand vous utilisez un espace comme d\'elimiteur,
-un caract\`ere fin de ligne d\'elimite aussi normalement l'argument
-car \TeX\ convertit la fin de ligne en espace avant que le m\'ecanisme de
-macro ne le voit.
-\eix^^{param\`etres//d\'elimit\'es}
-\eix^^{macros//param\`etres de}
-
-Il arrivera que vous ayez \`a d\'efinir une macro qui ait `|#|' comme caract\`ere
-significatif. Vous aurez plus de chance d'avoir besoin de faire cela quand
-vous d\'efinirez une macro qui \`a son tour d\'efinit une seconde macro. Comment
-faire \`a propos des param\`etres de la seconde macro sans mettre \TeX\
-dans la confusion~? La r\'eponse est que vous saisissez deux `|#|' pour chacun
-de ceux que vous voulez quand la premi\`ere macro est d\'evelopp\'ee. Par exemple,
-supposons que vous \'ecriviez la d\'efinition de macro~:
-\def\first#1{\def\second##1{#1/##1}}
-\csdisplay
-\def\first#1{\def\second##1{#1/##1}}
-|
-Alors l'appel `|\first{One}|' d\'efini `|\second|' comme~:
-\csdisplay
-\def\second#1{One/#1}
-|
-et l'appel cons\'ecutif `|\second{Two}|' produit le texte
-\def\second#1{One/#1}%
-`\second {Two}'.
-
-Un certain nombre de commandes fournissent des moyens suppl\'emen\-taires pour d\'efinir des macros
-(voir pp.~\xrefn{mac1}--\xrefn{mac2}).
-Pour les r\`egles com\-pl\`etes concernant les macros, voir le \knuth{chapitre~20}{}
-}% close brace at the start of the `macro' concept.
-\endconcept
-
-
-\concept magnification
-
-Quand \TeX\ compose un document, il multiplie toutes les dimensions
-par un facteur de
-\refterm{magnification} $f/1000$,
-o\`u $f$ est la valeur du param\`etre ^|\mag| \ctsref\mag.
-Puisque la valeur par d\'efaut de |\mag| est $1000$, le cas normal est que
-votre document est compos\'e comme il est sp\'ecifi\'e.
-Augmenter la magnification est souvent utile quand vous composez un document
-qui sera r\'eduit photographiquement.
-
-Vous pouvez aussi appliquer de la magnification sur une seule \refterm{police}
-pour avoir une version plus petite ou plus grande de cette police que sa
-``^{taille d'origine}''. Vous
-devez procurer au driver d'impression un ^{fichier de forme}
-\seeconcept{police} pour
-chaque magnification de police que vous utilisez---%
-a moins que la police ne soit construite dans votre imprimante et que votre driver
-d'impression la connaisse.
-Quand vous d\'efinissez une police avec la commande
-|\font| \ctsref{\font}, vous pouvez sp\'ecifier une magnification avec
-le mot `|scaled|'. Par exemple~:
-
-\csdisplay
-\font\largerbold = cmbx10 scaled 2000
-|
-d\'efinit `|\largerbold|' comme une police qui est
-deux fois plus grande que |cmbx10| (Computer Modern
-Grasse Etendue en $10$ points) et a les formes de caract\`ere
-uniform\'ement agrandies d'un facteur de~$2$.
-
-De nombreux centres informatiques trouvent pratique de fournir des polices
-agrandies par un ratio
-de $1.2$, correspondant \`a des valeurs de magnification de $1200$, $1440$, etc.
-\TeX\ a des noms sp\'eciaux pour ces valeurs~:
-^^|\magstep|
-`|\magstep1|' pour $1200$,
-`|\magstep2|' pour $1440$, et ainsi de suite jusqu'a `|\magstep5|'.
-La valeur sp\'eciale `^|\magstephalf|' correspond \`a une magnification de $\sqrt{1.2}$, qui
-est visuellement \`a mi-chemin entre `|\magstep0|' (pas de magnification) et
-`|\magstep1|'. Par exemple~:
-
-\csdisplay
-\font\bigbold = cmbx10 scaled \magstephalf
-|
-
-Vous pouvez sp\'ecifier une \refterm{dimension} comme elle sera
-mesur\'ee dans le document final ind\'ependamment des magnifications en mettant
-`^|true|' devant l'unit\'e. Par exemple, `|\kern 8 true pt|'
-produit un cr\'enage de $8$ points quelque soit la magnification.
-
-\endconcept
-
-\concept marges
-
-Les \refterm{marges}
-d'une page d\'efinissent un rectangle qui normalement
-contient la mati\`ere imprim\'ee sur la page.
-Vous pouvez demander \`a \TeX\ d'imprimer du mat\'eriel en dehors de ce rectangle,
-mais uniquement en demandant des actions explicites qui d\'eplacent le mat\'eriel
-\`a cet endroit. \TeX\ consid\`ere les ent\^etes et les pieds de page comme \'etant
-en dehors des marges.
-
-Le rectangle est d\'efini en fonction de son coin en haut \`a gauche, de sa largeur, et
-de sa profondeur. L'emplacement du coin en haut \`a gauche est d\'efini par
-les param\`etres ^|\hoffset|
-et ^|\voffset|
-\ctsref\voffset. L'usage est de placer ce coin \`a un pouce du haut
-et \`a un pouce du bord gauche de la page, correspondant \`a une valeur de
-z\'ero pour |\hoffset| et |\voffset|%
-\footnote{Il nous semble qu'il s'agisse d'une convention bizarre.
-Il aurait \'et\'e plus naturel d'avoir le point $(0,0)$
-pour |\hoffset| et |\voffset| dans le coin en haut \`a gauche du
-papier et d'avoir leur valeur par d\'efaut \`a un pouce.}.
-La largeur du rectangle est donn\'e par ^|\hsize| et la profondeur par ^|\vsize|.
-
-Les implications de ces conventions sont~:
-\ulist\compact
-\li La marge gauche est donn\'ee par |\hoffset|\tplus|1in|.
-\li La marge droite est donn\'ee par la largeur du papier moins
- |\hoffset|\tplus|1in|\tplus|\hsize|.
-\li La marge du haut est donn\'ee par |\voffset|\tplus|1in|.
-\li La marge du bas est donn\'ee par la longueur du papier moins
- |\voff!-set|\tplus|1in|\tplus|\vsize|.
-\endulist
-A partir de ces informations vous pouvez voir quels param\`etres vous devez
-changer pour modifier les marges.
-
-Chaque changement que vous faites \`a |\hoffset|, |\voffset| ou |\vsize| prendra
-effet la prochaine fois que \TeX\ d\'ebutera une page. En d'autres termes, si vous
-les changez dans une page, le changement n'affectera que la page \emph{suivante}.
-Si vous changez |\hsize|, le changement deviendra effectif imm\'ediatement.
-\endconcept
-
-
-\conceptindex{marques}
-\concept marque
-
-Une \defterm{marque} est un \'el\'ement que vous pouvez ins\'erer dans une
-liste horizontale, verticale ou math\'ematique et plus tard la retrouver dans
-votre routine de sortie. Les marques sont utiles pour des usages tels que
-garder une trace des sujets apparents dans des ent\^etes de page.
-Chaque marque a une liste de tokens---le ``^{texte de marque}''---associ\'e avec elle.
-La commande ^|\mark| \ctsref{\mark} attend une telle liste de token
-comme son argument, et attend un \'el\'ement contenant cette liste de token (apr\`es
-expansion) pour toute liste que \TeX\ est en train de construire.
-Les commandes ^|\topmark|, ^|\firstmark| et ^|\botmark|
-\ctsref{\topmark} peuvent \^etre utilis\'ees pour retrouver diverses marques sur une page.
-Ces commandes sont le plus souvent utilis\'ees dans les ent\^etes et les pieds de page.
-^^{pieds de page//marques utilis\'es en}
-^^{ent\^etes//marques utilis\'es en}
-
-\margin{This example of {\tt\\mark} replaces the previous explanatory
-paragraph.}
-Voici un exemple simplifi\'e.
-Supposez que vous d\'efinissiez une macro d'ent\^ete de section comme suit~:
-\csdisplay
-\def\section#1{\medskip{\bf#1}\smallskip\mark{#1}}
-% #1 is the name of the section
-|
-^^|\mark|
-Cette macro, quand elle est appel\'ee, produira un ent\^ete de section en caract\`eres gras et
-enregistrera aussi le nom de la section comme marque.
-Vous pouvez maintenant d\'efinir l'ent\^ete de chaque page imprim\'ee
-comme suit~:
-\csdisplay
-\headline = {\ifodd\pageno \hfil\botmark\quad\folio
- \else \folio\quad\firstmark\hfil \fi}
-|
-Chaque page paire (celle de gauche) aura maintenant le num\'ero de page suivi par
-le nom de la premi\`ere section de cette page, tandis que chaque page impaire (celle de droite)
-aura le num\'ero de page suivi du nom de la derni\`ere section de cette page.
-Les cas sp\'eciaux, par exemple, pas de section commen\c cant sur une page,
-s'afficheront g\'en\'eralement correctement gr\^ace \`a la mani\`ere dont travaillent
-^|\firstmark| et ^|\botmark|.
-
-Quand vous partagez une page en utilisant la commande |\vsplit| \ctsref{\vsplit} vous
-pouvez retrouver les textes de la premi\`ere et de la derni\`ere marque de la
-portion non partag\'ee avec les commandes ^|\splitfirstmark| et ^|\splitbotmark|
-\ctsref{\splitfirstmark}.
-
-Voir les \knuth{pages~258--260}{302--305} pour une explication plus pr\'ecise sur la
-fa\c con de cr\'eer et retrouver des marques.
-\endconcept
-
-
-\conceptindex{mathcodes}
-\concept mathcode
-
-Un \defterm{mathcode} est un nombre que \TeX\ utilise pour identifier et
-d\'ecrire un caract\`ere math\'ematique,
-^^{caract\`eres math\'ematiques//d\'ecrits par mathcodes}
-c'est-\`a-dire, un caract\`ere qui a un
-r\^ole particulier dans une formule math\'ematique. Un mathcode
-transmet trois sortes
-d'informations sur un caract\`ere~: sa position dans la \refterm{police}, sa
-\refterm{famille} et sa \refterm{classe}.
-Chacun des $256$ caract\`eres entr\'es possibles
-a un mathcode, qui est d\'efini par le programme \TeX\
-mais peut \^etre chang\'e.
-
-^^{famille//comme partie de mathcode}
-\TeX\ a seize familles de police, num\'erot\'ees $0$--$15$. Chaque
-famille con\-tient trois polices~: une pour la \refterm{taille texte}, une pour
-la \refterm{taille script} et une pour la \refterm{taille scriptscript}. \TeX\
-choisi la taille d'un caract\`ere particulier et donc sa police,
-en fonction du contexte. La classe d'un caract\`ere sp\'ecifie son r\^ole
-dans une formule (voir la \knuth{page~154}{180}). Par exemple, le signe \'egal `|=|'
-est dans la classe $3$ (relation). \TeX\ utilise sa connaissance des classes
-de caract\`eres quand il d\'ecide combien d'espace mettre entre diff\'erents
-composants d'une formule math\'ematique.
-
-La meilleure fa\c con de comprendre ce que sont les mathcodes est de voir comment
-\TeX\ les utilise. Nous montrons ce que \TeX\ fait avec un
-token de caract\`ere $t$ de \refterm{code de cat\'egorie}~11 ou~12 dans une
-formule math\'ematique~:
-
-\olist\compact
-\li Il recherche le mathcode du caract\`ere.
-\li Il d\'etermine une famille $f$ \`a partir du mathcode.
-\li Il d\'etermine la taille $s$ \`a partir du contexte.
-\li Il s\'electionne une police $F$ en prenant la police de taille $s$ dans la famille $f$.
-\li Il d\'etermine un num\'ero de caract\`ere $n$ \`a partir du mathcode.
-\li Il s\'electionne comme caract\`ere $c$ devant \^etre compos\'e le caract\`ere
-\`a la position $n$ de la police $F$.
-\li Il ajuste l'espacement autour de $c$ en fonction de la classe de $t$ et
-du contexte ambiant.
-\li Il compose le caract\`ere $c$.
-\endolist
-
-La d\'ependance du contexte dans les \'etapes
-(3) et (7) implique que \TeX\ ne peut pas composer un caract\`ere math\'ematique
-tant qu'il n'a pas vu toute la formule contenant le
-caract\`ere math\'ematique. Par exemple, dans la formule
-`|$a\over b$|', \TeX\ ne sait pas quelle taille aura le `|a|' tant qu'il
-n'aura pas vu le |\over|.
-
-{\tighten
-Le mathcode d'un caract\`ere est encod\'e en fonction de la formule $4096c
-+ 256f + n$, o\`u $c$ est la classe du caract\`ere, $f$ sa
-\refterm{famille} et $n$ son code de \refterm{caract\`ere \ascii} dans
-la famille. Vous pouvez changer l'interpr\'etation de \TeX\ pour un caract\`ere entr\'e
-dans un mode math\'ematique en assignant une valeur \`a la table d'entr\'ee des ^|\mathcode|
-\ctsref{\mathcode} pour ce
-caract\`ere. Le caract\`ere doit avoir un
-\refterm{code de cat\'egorie} \`a $11$ (lettre) ou $12$ (autre) pour que \TeX\
-recherche son |\mathcode|.
-}\par
-
-^^{famille//variable}
-Vous pouvez d\'efinir un caract\`ere math\'ematique pour avoir une famille ``variable'' en
-lui donnant une classe de $7$. A chaque fois que \TeX\ rencontre ce caract\`ere dans une
-formule math\'ematique, il prend la famille du caract\`ere comme \'etant la valeur
-courante du param\`etre |\fam| \ctsref{\fam}. Une famille variable vous autorise
-\`a sp\'ecifier la police de texte ordinaire dans une formule math\'ematique. Par
-exemple, si le caract\`ere romain est dans la famille $0$, l'assignement
-|\fam = 0|
-fera que le texte ordinaire d'une formule math\'ematique sera mis en type romain
-au lieu d'autre chose comme du type math\'ematique italique. Si la valeur de
-|\fam| n'est pas dans la fourchette de $0$ \`a $15$, \TeX\ prend la valeur \`a
-$0$, ainsi le rendu des classes $0$ et $7$ est \'equivalent.
-\TeX\ fixe |\fam| \`a $-1$ a chaque fois qu'il entre en mode math\'ematique.
-\endconcept
-
-
-\conceptindex {math\'ematiques affich\'ees}
-\concept {math\'ematique affich\'ee}
-
-Le terme \defterm{math\'ematique affich\'ee} fait r\'ef\'e\-rence aux formules math\'ematiques que \TeX\
-place sur une ligne seule avec de l'espace suppl\'ementaire dessus et dessous
-pour le s\'eparer du texte l'environnant.
-Une formule math\'ematique affich\'ee est entour\'ee de `|$$|'.
-\ttidxref{$$}
-\TeX\ lit les math\'ematiques affich\'ees dans le \refterm{mode} math\'ematiques affich\'ees.
-\endconcept
-
-
-\concept m\'ediocrit\'e
-
-La \defterm{m\'ediocrit\'e} d'une ligne mesure combien les tailles des espaces
-inter-mot ^^{espacement inter-mots} de la ligne d\'evient de leurs valeurs
-naturelles, c'est-\`a-dire, des valeurs sp\'ecifi\'ees dans les
-\refterm{polices:police} utilis\'ees dans la ligne. Plus grande est la
-d\'eviation, plus grande est la m\'ediocrit\'e. Similairement, la m\'ediocrit\'e d'une
-page est une mesure de combien les espaces entre les bo\^\i tes qui dessinent
-la page d\'evient de leurs valeurs id\'eales. (Ordinairement, la plupart de ces
-bo\^\i tes sont des lignes simples de paragraphes.)
-
-Plus pr\'ecis\'ement, la m\'ediocrit\'e mesure de combien le \refterm{ressort}
-associ\'e avec ces espaces doit s'\'etirer ou se r\'etr\'ecir pour remplir la
-ligne ou la page exactement. \TeX\ calcule la m\'ediocrit\'e comme
-approximativement $100$ fois le cube du ratio par lequel il doit \'etirer ou
-r\'etr\'ecir le ressort pour composer une ligne ou une page de la taille d\'esir\'ee.
-^^{coupures de ligne//m\'ediocrit\'e pour}^^{coupures de page//m\'ediocrit\'e pour} Par exemple,
-\'etirer le ressort par deux fois son \'etat d'\'etirement signifie un ratio de
-$2$ et une m\'ediocrit\'e de $800$~; la r\'etr\'ecir de moiti\'e son \'etat de r\'etr\'ecissement
-signifie un ratio de $.5$ et une m\'ediocrit\'e de $13$. \TeX\ traite une m\'ediocrit\'e
-sup\'erieure \`a $10000$ comme \'etant \'egale \`a $10000$.
-
-\TeX\ utilise la m\'ediocrit\'e d'une ligne quand il coupe un paragraphe en lignes
-\seeconcept{coupure de ligne}. Il utilise cette information en deux \'etapes~:
-
-\olist
-\li Quand \TeX\ choisi des coupures de ligne,
-il acceptera \'eventuellement des lignes dont la m\'ediocrit\'e est inf\'erieure ou \'egale \`a
-la valeur de |\tole!-rance| (\xref \tolerance). Si \TeX\ ne peut pas diminuer la conception
-d'une ligne dont la m\'ediocrit\'e d\'epasse cette valeur,
-il lui mettra un ``underfull ou overfull \refterm{hbox}''.
-\TeX\ ne mettra
-un ``overfull ou underfull hbox'' qu'en dernier ressort, c'est-\`a-dire, seulement s'il n'y a
-pas d'autre moyen de d\'ecouper le paragraphe en lignes.
-\li En assumant que toutes les lignes sont tol\'erablement mauvaises, \TeX\ utilise la m\'ediocrit\'e des lignes
-pour \'evaluer les diff\'erents moyens de couper le paragraphe en lignes.
-Durant cette \'evaluation il associe des ``d\'em\'erites'' avec chaque ligne potentielle.
-La m\'ediocrit\'e augmente le nombre de \refterm{d\'em\'erites}.
-\TeX\ alors
-coupe le paragraphe en lignes d'une fa\c con qui minimise
-le total des d\'em\'erites pour le paragraphe.
-Plus
-souvent \TeX\ arrange le paragraphe pour minimiser la m\'ediocrit\'e de la
-ligne la pire. Voir \knuth{pages~97--98}{114--115} pour les d\'etails comment \TeX\
-coupe un paragraphe en lignes.
-\endolist
-
-La proc\'edure de \TeX\ pour assembler une s\'equence de lignes et autres mati\`eres en modes verticaux
-en pages est similaire \`a sa proc\'edure de coupure de ligne.
-De toutes fa\c cons, assembler des pages n'est pas aussi compliqu\'e parce que
-\TeX\ ne consid\`ere qu'une page \`a la fois
-quand il cherche des coupures de page.
-Donc la seule d\'ecision qu'il doit prendre est o\`u finir la page courante.
-De plus, quand \TeX\ choisit des coupures de ligne il en
-consid\`ere plusieurs simultan\'ement.
-(La plupart des traitements de texte choisissent des coupures de ligne une \`a la fois,
-et donc ne font pas un aussi bon boulot que celui que fait \TeX\.)
-Voir \knuth{pages~111--113}{129--131} pour les d\'etails sur comment \TeX\ choisit ses
-coupures de page.
-\endconcept
-
-
-\conceptindex{modes}
-\concept mode
-
-Quand \TeX\ dig\`ere votre entr\'ee dans son estomac \seeconcept{\anatomy},
-il est dans un des six \defterm{modes}~:
-\ulist\compact
-\li ^{mode horizontal ordinaire} (assemblage d'un paragraphe)
-\li ^{mode horizontal restreint} (assemblage d'une \refterm{hbox})
-\li ^{mode vertical ordinaire} (assemblage d'une page)
-\li ^{mode vertical restreint} (assemblage d'une \refterm{vbox})
-\li ^{mode math\'ematique de texte} (assemblage d'une formule apparaissant dans du texte)
-\li ^{mode math\'ematique hors-texte}
-(assemblage d'une formule apparaissant sur une ligne seule)
-^^{mode horizontal}^^{mode vertical}^^{mode math\'ematique}
-\endulist
-Le mode d\'ecrit une sorte d'entit\'e que \TeX\ rassemble.
-
-Parce que vous pouvez encastrer une sorte d'entit\'e avec une autre, c'est-\`a-dire, une vbox
-dans une formule, \TeX\ garde trace non seulement d'un mode mais d'une
-liste enti\`ere de modes (ce qu'un informaticien appelle une ``pile'').
-Supposez que \TeX\ soit en mode $M$ et rencontre quelque chose qui le
-met dans une nouveau mode \Mprimeperiod. Quand il termine son travail dans
-le mode \Mprimecomma, il reprend ce qu'il faisait dans le mode \Mperiod.
-
-\endconcept
-
-
-\concept {mode horizontal}
-
-^^{hbox//mode horizontal pour}
-Quand \TeX\ assemble un paragraphe ou une \refterm{hbox}, il est dans un
-des deux \defterm{modes horizontaux}~: le ^{mode horizontal ordinaire}
-pour assembler des paragraphes et le ^{mode horizontal restreint} pour
-assembler des bo\^\i tes horizontales. A chaque fois que \TeX\ est dans un mode horizontal
-son estomac \seeconcept{\anatomy} construit une \refterm{liste horizontale}
-d'articles (bo\^\i tes, ressort, p\'enalit\'es, etc.).
-\TeX\ compose les articles dans la liste
-l'un apr\`es l'autre, de gauche \`a droite.
-
-Une liste horizontale ne peut contenir aucun
-article produit par des commandes verticales internes, par exemple, |\vskip|.
-^^{listes horizontales//ne peuvent contenir de commandes verticales}
-
-\ulist
-\li Si \TeX\ assemble une liste horizontale dans le mode horizontal ordinaire et
-rencontre une commande verticale interne, \TeX\ termine le paragraphe et
-entre dans le \refterm{mode vertical}.
-
-\li Si \TeX\ assemble une liste horizontale dans le mode horizontal
-interne et rencontre une commande verticale interne, il rousp\`ete.
-\endulist
-
-Deux commandes que vous pensez d'abord horizontales internes
-sont en fait verticales internes~: |\halign| \ctsref{\halign}
-et |\hrule| \ctsref{\hrule}.
-^^|\hrule//vertical par nature|
-^^|\halign//vertical par nature|
-voir la \knuth{page~286}{332} pour une liste
-des commandes verticales internes.
-
-{\tighten
-Vous devez faire attention \`a une subtile mais importante propri\'et\'e du mode
-horizontal interne~: \emph{vous ne pouvez pas entrer en mode horizontal interne
-quand vous \^etes en mode horizontal normal}. Ce que cela signifie en pratique
-est que quand \TeX\ assemble une hbox il n'appr\'ehendera pas un texte en
-paragraphe, c'est-\`a-dire, du texte pour lequel il ferait une \refterm{coupure
-de ligne}. Vous pouvez contourner cette restriction en englobant le texte en
-paragraphe dans une \refterm{vbox} \`a l'int\'erieur de l'hbox. la m\^eme m\'ethode
-marche si vous voulez mettre, disons un \refterm{alignement} horizontal dans
-un~hbox.
-}% end scope of tighten
-
-\endconcept
-
-
-\concept {mode math\'ematique}
-
-{\tighten
-Un \defterm{mode math\'ematique} est un \refterm{mode} dans lequel \TeX\
-construit une formule math\'ematique. \TeX\ a deux modes math\'ematiques diff\'erents~: Le
-^{mode math\'ematique de texte} construit une formule devant \^etre englob\'ee dans une ligne de texte,
-tanfis que le ^{mode math\'ematique d'affichage} construit une formule devant
-appara\^\i tre seul sur une ligne. Vous indiquez le mode math\'ematique de texte
-en englobant la formule entre |$| et dans le mode math\'ematique d'affichage en
-englobant la formule entre |$$|.
-%\TeX\ will accept most \refterm{commands:command} in
-%math mode. If it encounters a command in math mode that doesn't make
-%sense in a formula, it will complain.
-Une propri\'et\'e importante des deux modes math\'ematiques est que les
-\emph{espace saisis ne comptent pas}. Voir les
-\knuth{pages~290--293}{338--342} pour des d\'etails sur la fa\c con dont \TeX\ r\'epond aux
-diff\'erentes commandes en mode math\'ematique.
-\par}
-
-\endconcept
-
-
-\concept {mode ordinaire}
-
-Le \defterm{mode ordinaire} est le \refterm{mode} dans lequel est \TeX\ quand
-il assemble un paragraphe en lignes ou assemble des lignes
-en une page. Voir \conceptcit{mode horizontal}, \conceptcit{mode vertical}.
-\endconcept
-
-
-\concept {mode restreint}
-
-Le \defterm{mode restreint} est le \refterm{mode} dans lequel est \TeX\ quand
-il assemble une \refterm{hbox} ou une \refterm{vbox}.
-Nous suivons \texbook\ dans l'utilisation du terme ``mode vertical interne''
-pour ce que vous vous attendez \^etre un ``mode vertical restreint''.
-Voir \conceptcit{mode horizontal} et \conceptcit{mode vertical}.
-\endconcept
-
-
-\concept {mode vertical}
-
-^^{vbox//mode vertical pour} Quand \TeX\ assemble soit une
-\refterm{vbox} soit la liste verticale principale dont les pages sont d\'eriv\'ees,
-il est dans un des deux \defterm{modes verticaux}~: le ^{mode vertical ordinaire}
-pour assembler la liste verticale principale et le ^{mode vertical restreint}
-pour assembler les vbox. A chaque fois que \TeX\ est en mode vertical
-son estomac \seeconcept{\anatomy} construit une \refterm{liste verticale}
-d'\'el\'ements (bo\^\i tes, ressort, p\'enalit\'es, etc.).
-\TeX\ compose les \'el\'ements de la liste
-l'un apr\`es l'autre, de haut en bas.
-
-Une liste verticale ne peut pas contenir tous les \'el\'ements produits par
-des commandes fondamentalement horizontales, c'est-\`a-dire,
-^^{listes verticales//ne peuvent contenir de commandes horizontales}
-|\hskip| ou un caract\`ere ordinaire (pas un espace)
-\footnote{\TeX\ \emph{ignore} tout caract\`ere espace
-qu'il rencontre quand il est dans un mode vertical.}.
-
-\ulist
-\li Si \TeX\ assemble une liste verticale dans le mode vertical ordinaire et
-rencontre une commande fondamentalement horizontale, il bascule vers le
-\refterm{mode horizontal} ordinaire.
-\li Si \TeX\ assemble une liste verticale dans le mode vertical interne et
-rencontre une commande fondamentalement horizontale, il rousp\`ete.
-\endulist
-
-Deux commandes auxquelles vous devez penser en premier qu'elles sont fondamentalement verticales sont
-en fait fondamentalement horizontales~: |\valign| \ctsref{\valign} et |\vrule|
-\ctsref{\vrule}.
-^^|\valign//horizontal par nature|
-^^|\vrule//horizontal par nature|
-Voir la \knuth{page~283}{329} pour une liste des commandes
-fondamentalement horizontales.
-
-Il est particuli\`erement important d'avoir conscience que \TeX\ consid\`ere un
-caract\`ere ordinaire autre qu'un espace comme \'etant fondamentalement horizontal.
-Si \TeX\ d\'ebute soudainement un nouveau paragraphe quand vous ne vous y
-attendez pas une cause vraisemblable est un caract\`ere que \TeX\ a rencontr\'e
-en \'etant en mode vertical. Vous pouvez convaincre \TeX\ de ne pas traiter ce
-caract\`ere comme fondamentalement horizontal en l'englobant dans une
-\refterm{hbox} puisque la commande |\hbox|, malgr\'e son nom, n'est ni
-fondamentalement horizontale ni fondamentalement verticale.
-\endconcept
-
-
-\conceptindex{mots de contr\^ole}
-\concept {mot de contr\^ole}
-
-Un \defterm{mot de contr\^ole} est une \refterm{s\'equence de contr\^ole} qui
-est constitu\'e d'un \refterm{caract\`ere d'\'echappement} suivi d'une ou plusieurs
-lettres\footnote{Une ``lettre'' ici a la strict signification d'un
-caract\`ere de code de cat\'egorie $11$.}.
-\TeX\
-ignore tout espace ou fin de ligne qui suit un mot de contr\^ole, sauf pour
-noter qu'ils terminent le mot de contr\^ole.
-^^{caract\`ere d'\'echappement}
-\endconcept
-
-
-\concept muglue
-
-Une \defterm{muglue} est une sorte de \refterm{ressort}
-que vous ne pouvez utiliser que dans les formules math\'ematiques.
-Elle est mesur\'ee en ^|mu| (\refterm{unit\'es math\'ematiques:unit\'e
-math\'ematique}).
-^^{unit\'es math\'ematiques}^^{ressort//math\'ematique}
-Une |mu| est \'egale \`a \frac1/{18} em, o\`u
-la taille d'un em est prise de la \refterm{famille} 2 des polices math\'ematiques.
-\TeX\ ajuste automatiquement la taille de la muglue en fonction du contexte.
-Par exemple, une taille de ressort de |2mu| est normalement plus petite dans un
-sous-script que dans un texte ordinaire.
-Vous devez utiliser la commande ^|\mskip| pour produire une muglue.
-Par exemple, `|\mskip 4mu plus 5mu|' produit un ressort math\'ematique avec un
-espace naturel de quatre |mu| et un \refterm{\'etirement} de cinq |mu|.
-
-\endconcept
-
-
-\conceptindex{noms de fichier}
-\concept {nom de fichier}
-
-Un \defterm{nom de fichier} nomme un
-\refterm{fichier} qui est connu du ^{syst\`eme d'exploitation}
-qui
-supervise votre ex\'ecution de \TeX. La syntaxe d'un nom de fichier ne doit \emph{pas}
-suivre les r\`egles usuelles de la syntaxe de \TeX\ et en fait est diff\'erente
-selon les diff\'erentes impl\'emen\-ta\-tions de \TeX.
-En particulier, la plupart des impl\'ementations de \TeX\ consid\`erent un nom de fichier
-comme \'etant
-termin\'e par un blanc ou une fin de ligne. Ainsi \TeX\ est susceptible de
-mal interpr\'eter `|{\input chapter2}|'
-en prenant l'accolade droite comme partie du nom de fichier.
-Comme r\`egle g\'en\'erale, vous devez faire suivre un nom de fichier d'un blanc ou
-d'une fin de ligne comme dans `|{\input chapter2!visiblespace}|'.
-
-\endconcept
-
-
-\conceptindex{nombres}
-\concept nombre
-
-En \TeX, un \defterm{nombre} est un entier positif ou n\'egatif.
-Vous pouvez \'ecrire un nombre en \TeX\ de quatre fa\c cons diff\'erentes~:
-\olist\compact
-\li comme un entier d\'ecimal ordinaire, par exemple, |52|
-\li comme un nombre octal, par exemple, |'14| ^^{nombres octaux}
-\li comme un nombre hexad\'ecimal, par exemple, |"FF0| ^^{nombres hexad\'ecimaux}
-\li comme le code d'un \refterm{caract\`ere \ascii}, par exemple, |`)|
-ou |`\)|
-\endolist
-\noindent
-Chacune de ces formes peut \^etre pr\'ec\'ed\'ee par `|+|' ou `|-|'.
-
-Un nombre octal ne peut avoir que les chiffres |0|--|7|.
-^^{nombres octaux}
-Un nombre hexa\-d\'ecimal peut avoir les chiffres |0|--|9| et
-|A|--|F|, repr\'esentant
-les valeurs de $0$ \`a $15$.
-^^{nombres hexad\'ecimaux}
-Vous ne pouvez, h\'elas, utiliser de lettres minuscules quand vous \'ecrivez un nombre hexad\'ecimal.
-Si vous voulez des explications sur les nombres octaux et hexad\'ecimaux,
-vous en trouverez dans les \knuth{pages~43--44}{53--54}.
-
-Un nombre d\'ecimal, octal ou hexad\'ecimal
-se termine au premier caract\`ere qui ne peut faire partie du nombre.
-Ainsi un nombre d\'ecimal se termine quand \TeX\ voit, disons, une lettre,
-tandis qu'une lettre entre `|A|' et `|F|' ne terminera pas un nombre hexad\'ecimal.
-Vous pouvez terminer un nombre avec un ou plusieurs espaces et normalement,
-\TeX\ les ignorera\footnote{
-Quand vous d\'efinissez une macro qui se termine par un nombre, vous devez
-toujours mettre un espace apr\`es ce nombre~; autrement, \TeX\ pourrait combiner
-ce nombre avec autre chose.}.
-
-La quatri\`eme forme ci-dessus sp\'ecifie un nombre comme le code
-\minref{\ascii} d'un caract\`ere.
-^^{caract\`eres//codes \ascii\ pour}
-\TeX\ ignore les espaces apr\`es cette forme de nombre aussi.
-Vous pouvez \'ecrire un nombre de cette forme soit comme |`|$c$ soit comme |`\|$c$.
-La seconde forme, bien que plus longue, a l'avantage que vous pouvez l'utiliser
-avec \emph{tout} caract\`ere, m\^eme `|\|', `|%|', ou `|^^M|'.
-En revanche, il y a un inconv\'enient plut\^ot technique~: quand \TeX\ d\'eveloppe
-une s\'equence de tokens pour une commande telle que |\edef| ou |\write|,
-^^|\edef//expansion de {\tt\\'\it c} en|
-^^|\write//expansion de {\tt\\'\it c} en|
-des occurrences de `|\|$c$' repr\'esentant un nombre sera aussi d\'evelopp\'ee
- si elle peut l'\^etre.
-C'est rarement l'effet que vous d\'esirez.
-
-Ce qui suit sont des repr\'esentations valides du nombre d\'ecimal
-$78$~:
-\csdisplay
-78 +078 "4E '116 `N `\N
-|
-
-
-Vous ne pouvez utiliser un nombre dans du texte par lui-m\^eme car un nombre n'est pas
-une commande.
-N\'eanmoins, vous pouvez ins\'erer la forme d\'ecimale d'un nombre dans du texte
-en mettant une commande ^|\number| (\xref\number) devant lui
-ou la forme num\'erique romaine en mettant une commande ^|\romannumeral|
-devant lui.
-
-Vous pouvez aussi utiliser des ^{constantes d\'ecimales},
-par exemple, des nombres avec une partie fractionnaire,
-pour sp\'ecifier des dimensions \seeconcept{dimension}.
-Une constante d\'ecimale a un ^{point d\'ecimal}, qui peut \^etre
-le premier caract\`ere de la constante. Vous pouvez utiliser une
-virgule au lieu d'un point pour repr\'esenter le point d\'ecimal.
-Une constante d\'ecimale peut \^etre pr\'ec\'ed\'ee par un signe plus ou moins.
-Ainsi `|.5in|',
-`|-3.22pt|' et `|+1,5\baselineskip|' sont des dimensions valides.
-Vous ne pouvez, par contre, utiliser de constantes d\'ecimales
-dans tous les contextes \emph{autres} comme la partie ``facteur'' d'une dimension,
-c'est-\`a-dire, son multiplicateur.
-
-
-\endconcept
-
-
-\concept outer
-
-\bix^^{macros//outer}
-Une macro \defterm{outer} est une macro que vous ne pouvez utiliser dans
-certains contextes o\`u \TeX\ assemble des tokens \`a grande vitesse.
-Le but de rendre une commande outer est d'obliger \TeX\ \`a g\'en\'erer
-des erreurs avant d'aller trop loin.
-Quand vous d\'efinissez une macro, vous pouvez la rendre outer avec la commande
-^|\outer| \ctsref\outer.
-
-Vous ne pouvez utiliser de macro outer dans aucun des contextes suivants~:
-\ulist\compact
-\li comme argument d'une macro
-\li dans le texte param\`etre ou le texte de remplacement d'une d\'efinition
-\li dans le pr\'eambule d'un alignement
-\li dans la partie non ex\'ecut\'ee d'un test conditionnel
-\endulist
-\noindent
-Un contexte outer est un contexte dans lequel vous pouvez utiliser une
-macro outer, c'est-\`a-dire c'est tout contexte autre que ceux list\'es ci-dessus.
-
-Par exemple, l'entr\'ee suivante sera une utilisation interdite d'une macro outer
-\csdisplay
-\leftline{\proclaim Assertion 2. That which is not inner
- is outer.}
-|
-La macro |\proclaim| (\xref{\@proclaim}) est d\'efinie en \plainTeX\
-comme \'etant outer, mais elle est utilis\'ee ici comme un macro argument \`a
- |\leftline|.
-\eix^^{macros//outer}
-
-\endconcept
-
-
-\conceptindex{pages}
-\concept page
-
-\TeX\ compile un document en assemblant des \defterm{pages} une par une
-et en les passant \`a la routine de sortie.
-Quand il lit votre document, \TeX\ maintient une liste des lignes
-et d'autres \'el\'ements \`a placer sur la page. (Les lignes sont normalement des
-hbox.) Cette liste est appel\'ee la ``^{liste verticale principale}''.
-P\'eriodiquement \TeX\ rentre dans un processus appel\'e ``devoir du
-^{constructeur de page}''.
-Les \'el\'ements ajout\'es \`a la liste verticale principale entre les devoirs
-du constructeur de page sont appel\'e ``^{contributions r\'ecentes}''.
-
-Le constructeur de page examine d'abord la liste verticale principale pour voir si elle
-a besoin de d\'eposer une page maintenant, soit parce que les \'el\'ements sur la liste
-verticale principale ne tiennent pas sur la page, soit parce que un \'el\'ement
-sp\'ecifique, tel que |\eject| \ctsref\eject, demande \`a \TeX\ de finir la page.
-S'il n'est pas n\'ecessaire de d\'eposer une page, alors le constructeur de page
-est fait pour la prochaine fois.
-
-Autrement, le constructeur de page analyse la liste verticale principale pour
-trouver ce qu'il consid\`ere comme \'etant la meilleure coupure de page possible.
-Il associe des p\'enalit\'es avec plusieurs types de coupure de page peu attirantes---une
-coupure qui laisse une ligne isol\'ee en haut ou en bas de la page, une coupure
-juste avant un affichage math\'ematique, et ainsi de suite. Il choisit alors
-la coupure de page la moins ch\`ere
-o\`u le co\^ut d'une coupure est augment\'e de toute p\'enalit\'e associ\'ee avec cette
-coupure et par la m\'ediocrit\'e de la page qui en r\'esulte
-(voir la \knuth{page~111}{130} pour la formule du co\^ut). S'il trouve plusieurs
-coupures de page de co\^ut identique, il choisit la derni\`ere.
-
-{\tighten
-Une fois que le constructeur de page a choisi une coupure de page,
-il place les \'el\'ements de la liste qui sont avant cette coupure
-dans la ^|\box255| et garde le reste pour la page suivante.
-Il appelle alors la routine de sortie. |\box255| agit comme une bo\^\i te
-aux lettres, avec le constructeur de page comme exp\'editeur et la routine de
-sortie comme destinataire.
-Ordinairement la routine de sortie traite la |\box255|, ajoute
-d'autres \'el\'ements, comme des insertions, ent\^ete et pieds de page \`a la page et
-envoit la page vers le \dvifile\
-^^{\dvifile//mat\'eriel de la routine de sortie}
-avec une commande |\shipout|.
-(Des routines de sortie sp\'ecialis\'ees peuvent agir diff\'eremment.)
-Du point de vue de \TeX, il importe peu que la routine de sortie envoie
-la page ou non~;
-La seule
-responsabilit\'e de la routine de sortie est de traiter la |\box255| d'une fa\c con
-ou d'une autre.
-\par}
-
-{\tighten
-Il est important de r\'ealiser que le meilleur endroit pour couper une page
-n'est pas n\'ecessairement le dernier endroit possible pour couper la page.
-Des p\'enalit\'es et autres consid\'erations peuvent faire que la coupure de page
-ait lieu plus t\^ot. De plus, \TeX\ appr\'ehende les \'el\'ements de la liste verticale
-principale en batch, pas seulement un par un. Les lignes d'un paragraphe sont
-un exemple d'un tel batch. Pour ces raisons, le constructeur de page garde
-des \'el\'ements sous le coude quand il coupe une page. Ces \'el\'ements mis en r\'eserve
-forment alors le d\'ebut de la liste verticale principale de la page suivante
-(vraisemblablement au milieu d'un batch). Parce que des \'el\'ements sont d\'eplac\'es
-d'une page \`a une autre, vous pouvez \^etre s\^ur que quand \TeX\ ex\'ecute l'entr\'ee,
-le num\'ero de la page courante refl\`ete la page sur laquelle la sortie correspondante
-appara\^\i tra. Voir les \knuth{pages~110--114}{128--133} pour une description compl\`ete
-des r\`egles de coupure de page de \TeX.
-\par}
-
-\endconcept
-
-
-\conceptindex{paragraphes}
-\concept paragraphe
-
-Intuitivement, un \defterm{paragraphe} est une suite de lignes de saisie
-se terminant par une ligne blanche, une commande |\par| \ctsref{\@par}
-^^|\par//terminer un paragraphe avec|
-ou par une commande intrins\`equement verticale, telle que |\vskip|.
-Plus pr\'ecis\'ement, un paragraphe est une s\'equence de commandes que \TeX\ ex\'ecute
-en mode horizontal restreint.
-Quand \TeX\ a collect\'e un paragraphe entier, il le transforme en une s\'equence de
-lignes en choisissant les coupures de ligne \seeconcept{coupure de ligne}.
-Le r\'esultat est une liste de hbox avec ressort, p\'enalit\'e interligne
-et mat\'eriel vertical imbriqu\'e entre.
-Chaque hbox est une simple ligne et le ressort est le ressort inter-ligne.
-
-%\eject
-\TeX\ d\'ebute un paragraphe quand il est dans un mode vertical et
-rencontre une commande fondamentalement horizontale.
-En particulier, il est en mode vertical juste apr\`es avoir termin\'e un
-paragraphe, donc le mat\'eriel horizontal sur la ligne suivant une ligne
-blanche d\'ebute le paragraphe suivant de mani\`ere naturelle.
-Il y a plusieurs types de commandes fondamentalement horizontales, mais le
-type le plus commun est un caract\`ere ordinaire, c'est-\`a-dire, une lettre.
-
-\looseness = -1
-Les commandes ^|\indent| et ^|\noindent|
-(\pp\xrefn{\indent},~\xrefn{\noindent})
-sont aussi des commandes fondamentalement horizontales qui demandent \`a
-\TeX\ d'in\-denter ou non le d\'ebut d'un paragraphe.
-Toute autre commande horizontale en mode vertical
-fait que \TeX\ fait un |\indent| implicite.
-Une fois que \TeX\ a commenc\'e un paragraphe, il est en mode horizontal ordinaire.
-Il commence par suivre toutes commandes situ\'ees dans ^|\everypar|.
-Il commence alors \`a collecter des \'el\'ements pour le paragraphe jusqu'a
-ce qu'il re\c coive un signal de la fin du paragraphe.
-A la fin du paragraphe il r\'einitialise les param\`etres de formation de
-paragraphe ^|\parshape|, |\hang!-indent|,
-^^|\hangindent|
-et ^|\looseness|.
-
-\TeX\ traduit normalement une ligne blanche par |\par|.
-Il ins\`ere aussi
-un |\par| dans l'entr\'ee chaque fois, en mode horizontal, qu'il
-rencontre une commande intrins\`equement verticale.
-Donc finalement la chose qui termine un paragraphe est toujours une commande |\par|.
-
-Quand \TeX\ re\c coit une commande |\par|, il compl\`ete d'abord\footnote{%
-Plus pr\'ecis\'ement, il ex\'ecute les commandes~:
-\csdisplay
-\unskip \penalty10000 \hskip\parfillskip
-|
-apportant ainsi les \'el\'ements de ces commandes
-\`a la fin de la liste horizontale courante.}
-le paragraphe sur lequel il travaille.
-Il coupe alors le paragraphe en lignes,
-ajoute la liste r\'esultante d'\'el\'ements dans la liste verticale englobante
-et ex\'ecute le constructeur de page
-(dans le cas o\`u la liste verticale englobante est la liste verticale principale).
-Si le paragraphe se termine par une commande intrins\`equement verticale,
-\TeX\ ex\'ecute alors cette commande.
-
-\endconcept
-
-\conceptindex{param\`etres}
-\concept param\`etre
-
-Le terme \defterm{param\`etre} a deux significations diff\'erentes---il peut faire
-r\'ef\'erence soit \`a un param\`etre de \TeX, soit \`a un param\`etre de macro.
-
-Un param\`etre de \TeX\ est une \refterm{s\'equence de contr\^ole} qui nomme
-une valeur.
-La valeur d'un param\`etre peut \^etre un \refterm{nombre}, une \refterm{dimension},
-un montant de \refterm{ressort}, de muglue ou une \refterm{liste de tokens}.
-Par exemple, le param\`etre ^|\parindent|
-sp\'ecifie la distance que \TeX\ saute au d\'ebut d'un paragraphe indent\'e.
-
-Vous pouvez utiliser la s\'equence de contr\^ole d'un param\`etre soit pour r\'etablir la valeur
-du param\`etre soit pour fixer cette valeur. \TeX\ interpr\`ete la s\'equence de contr\^ole
-comme une requ\^ete pour une valeur si elle appara\^\i t dans un contexte o\`u une valeur est attendue,
-et comme un \refterm{assignement} autrement.
-^^{assignements}
-Par exemple~:
-\csdisplay
-\hskip\parindent
-|
-produit un \refterm{ressort} horizontal dont la taille naturelle est donn\'ee
-par |\par!-indent|,
-tandis que~:
-\csdisplay
-\parindent = 2pc % (ou \parindent 2pc)
-|
-fixe |\parindent| \`a une longueur de deux picas. L'assignement~:
-\csdisplay
-\parindent = 1.5\parindent
-|
-utilise |\parindent| des deux fa\c cons. Son effet est de multiplier la valeur de
-|\parindent| par $1.5$.
-
-Vous pouvez penser \`a un param\`etre comme \`a un \refterm{registre} construit.
-^^{registres//param\`etres comme}
-Vous trouverez la liste de tous les param\`etres de \TeX\ dans les \knuth{pages~272--275}{317--318}.
-
-Un param\`etre de \refterm{macro} est un endroit qui garde la place du texte
-qui est branch\'e dans la d\'efinition d'une macro. Voir \conceptcit{macro}
-pour plus d'informations sur ce type de param\`etre.
-
-\endconcept
-
-
-\conceptindex{penalties}
-\concept p\'enalit\'e
-
-Une \defterm{p\'enalit\'e} est un \'el\'ement que vous pouvez inclure dans une
-liste horizontale, verticale ou math\'ematique
-pour d\'ecourager \TeX\ de couper la liste
-\`a cet endroit ou encourager \TeX\ de couper la liste ici.
-^^{listes horizontales//p\'enalit\'es dans}
-^^{listes verticales//p\'enalit\'es dans}
-Une p\'enalit\'e positive indique un mauvais point de coupure, tandis qu'une
-p\'enalit\'e n\'egative indique un bon point de coupure.
-Couper une liste horizontale ordinaire
-produit une \refterm{coupure de ligne}, tandis que couper une liste
-verticale ordinaire produit
-une \refterm{coupure de page}.
-(Une p\'enalit\'e n'a aucun effet en \refterm{mode} horizontal restreint ou
-vertical interne.)
-
-Vous pouvez utiliser la commande
-|\penalty| (\pp\xrefn{hpenalty},~\xrefn{vpenalty})
-pour ins\'erer une p\'enalit\'e explicitement.
-Une p\'enalit\'e de $10000$ ou plus emp\^eche une coupure, tandis qu'une p\'enalit\'e de
-$-10000$ ou moins force une coupure.
-\endconcept
-
-
-\conceptindex{pieds de page}
-\concept {pied de page}
-
-Un \defterm{pied de page} est du mat\'eriel que \TeX\ met en bas de chaque page,
-sous le texte de cette page.
-Le pied de page par d\'efaut en \plainTeX\ est un num\'ero de page centr\'e.
-D'habitude un pied de page consiste en une ligne simple, que vous pouvez
-d\'efinir en assignant une liste de tokens \`a ^|\footline| \ctsref\footline.
-Voir \xrefpg{bighead} pour une m\'ethode de production de pied de page multi-ligne.
-
-\endconcept
-
-%k \vskip 0pt plus 2pt % to solve page break problem
-
-%\eject
-\concept {\plainTeX}
-
-\defterm{\PlainTeX} est le format de \TeX\ d\'ecrit dans ce
-livre et dans \texbook. \PlainTeX\ est une partie du syst\`eme \TeX\ standard,
-donc des documents qui n'utilisent que les am\'enagements de \plainTeX\ peuvent
-facilement \^etre transf\'er\'es d'une installation vers une autre sans
-difficult\'e.
-
-\PlainTeX\ est constitu\'e de commandes \refterm{primitive}s auxquelles se joignent
-une large collection de macros et
-autres d\'efinitions. Ces d\'efinitions additionnelles sont d\'ecrites dans
-l'\knuth{annexe~B}{}. Vous pourrez aussi les trouver dans le fichier |plain.tex|
-quelque part sur votre syst\`eme informatique.
-\endconcept
-
-
-\concept {point de r\'ef\'erence}
-
-^^{lignes de base}
-^^{\boites//point de r\'ef\'erence de}
-Le \defterm{point de r\'ef\'erence} d'une \refterm{bo\^\i te} est le point o\`u le
-cot\'e gauche de la bo\^\i te est en intersection avec sa \refterm{ligne de base}.
-Quand \TeX\ ex\'ecute une \refterm{liste horizontale} ou
-\refterm{verticale:liste verticale}, il utilise les points de r\'ef\'erence
-des bo\^\i tes dans la liste pour aligner ces bo\^\i tes horizontalement ou
-verticalement \seeconcept{\boites}.
-\endconcept
-
-\conceptindex{polices}
-\concept police
-
-Une \defterm{police} en \TeX\ est une collection de jusqu'a $256$ caract\`eres
-de sortie, ayant normalement les m\^emes design, style (romain,
-italique, gras, condens\'e, etc.),
-et taille\footnote{\PlainTeX\ utilise une police sp\'eciale
-pour construire les ^{symboles math\'ematiques} pour lesquelles les caract\`eres
-ont diff\'erentes tailles. D'autres polices sp\'eciales sont souvent utiles pour
-des applications comme le composition de ^{logos}.}.
-La ^{police Computer Modern} qui est fournie
-g\'en\'eralement avec \TeX\ n'a que $128$ caract\`eres. Le colophon sur la
-derni\`ere page de ce livre d\'ecrit les polices que nous avons utilis\'ees pour composer
-ce livre.
-
-Par exemple, voici l'alphabet en police romaine Palatino de $10$ points~:
-^^{police Palatino}
-\vskip\abovedisplayskip{\narrower\tenpal
-\noindent ABCDEFGHIJKLMNOPQRSTUVWXYZ\hfil\break
-abcdefghijklmnopqrstuvwxyz\par
-}\vskip\belowdisplayskip
-\noindent
-et le voici dans la police Computer Modern Grasse \'etendue de $12$
-point~:
-^^{police Computer Modern}
-\vskip\abovedisplayskip{\narrower\font\twelvebf=cmbx12\twelvebf
-\noindent ABCDEFGHIJKLMNOPQRSTUVWXYZ\hfil\break
-abcdefghijklmnopqrstuvwxyz\par
-}\vskip\belowdisplayskip
-Les caract\`eres d'une police sont num\'erot\'es.
-La num\'erotation s'accorde normalement avec la num\'erotation ^{\ascii}
-pour les caract\`eres existants dans le jeu de caract\`eres \ascii.
-La table de code de chaque police indique \`a quoi ressemble le caract\`ere
-avec le code $n$ dans cette police.
-Certaines polices, comme celles utilis\'ees pour les symboles math\'ematiques, n'ont pas
-de lettres. Vous pouvez produire une \refterm{bo\^\i te} contenant le
-caract\`ere num\'erot\'e $n$, compos\'e dans la police courante, en \'ecrivant `|\char |$n$'
- \ctsref{\char}.
-
-Pour utiliser une police dans votre document,
-vous devez d'abord la nommer avec une s\'equence de contr\^ole et la charger. Alors vous
-pourrez la s\'electionner en saisissant
-cette s\'equence de contr\^ole quand vous voulez l'utiliser.
-\PlainTeX\ procure un certain nombre de polices d\'ej\`a nomm\'ees et~charg\'ees.
-
-Vous nommez et chargez une police comme une simple op\'eration, avec une
-commande comme `|\font\twelvebf=cmbx12|'. Ici, `|\twelvebf|' est la s\'equence
-de contr\^ole que vous utilisez pour nommer la police et `|cmbx12|' identifie
-le fichier de m\'etrique de la police |cmbx12.tfm| sur votre syst\`eme de
-fichier. Vous pouvez alors commencer \`a utiliser la police en saisissant
-`|\twelvebf|'. Apr\`es cela, la police sera effective jusqu'a ce que soit
-(a)~vous s\'electionnez une autre police, (b)~vous terminez le \refterm{groupe}
- dans lequel vous avez commenc\'e avec la police. Par exemple,
-la saisie~:
-
-\csdisplay
-{\twelvebf white rabbits like carrots}
-|
-fera que la police |cmbx12| ne sera effective que pour le texte
-`|white rabbits like carrots|'.
-
-Vous pouvez utiliser \TeX\ avec d'autres polices que Computer Modern
-(regardez l'exemple sur \xrefpg{palatino} et les ent\^etes de page).
-Les fichiers de telles polices doivent \^etre install\'es sur votre syst\`eme
-de fichier \`a une place o\`u \TeX\ puisse les trouver. \TeX\ et ses programmes
-compagnons ont g\'en\'eralement besoin de deux fichiers pour chaque police~:
-un pour les m\'etriques (|cmbx12.tfm|,
-^^{\tfmfile}
-par exemple) et un autre pour la forme
-des caract\`eres (|cmbx12.pk|, par exemple).
-\TeX\ lui-m\^eme n'utilise que les fichiers de m\'etriques.
-Un autre programme, le pilote de p\'eriph\'erique,
-^^{drivers de p\'eriph\'erique}
-convertit le \dvifile\
-^^{\dvifile//convertit par driver}
-produit par \TeX\ en une forme que votre imprimante
-ou autre p\'eriph\'erique de sortie puisse interpr\'eter. Le pilote
-utilise le fichier de forme (s'il existe).
-
-Le fichier de m\'etrique de la police contient l'information dont \TeX\ \`a
-besoin pour allouer de l'espace pour chaque caract\`ere compos\'e.
-Ainsi il inclut la taille de chaque caract\`ere, les ligatures et cr\'enages
-qui modifient les suites de caract\`eres adjacents, et ainsi de suite.
-Ce que le fichier de m\'etrique n'inclut \emph{pas} sont les informations
-sur les formes des caract\`eres de la police.
-
-{\tighten
-Le fichier de forme (pixel) \xrdef{shape}
-^^{fichier de pixel}^^{fichier de forme}
-peut \^etre de diff\'erents
-formats. La partie d'extension du nom (la partie apr\`es le point)
-informe le pilote sur le format dans lequel est le fichier de forme.
-Par exemple,
-|cmbx12.pk| ^^{\pkfile} est le fichier de forme de la police |cmbx12| en
-format compress\'e, tandis que |cmbx12.gf| ^^{\gffile} est le fichier de forme
-pour la police |cmbx12| en format de police g\'en\'erique.
-Un fichier de forme peut ne pas \^etre n\'ecessaire pour une police r\'esidente dans votre
-p\'eriph\'erique de sortie.
-\par}
-
-\endconcept
-
-
-\concept {primitive}
-
-Une \refterm{commande} \defterm{primitive} est une commande dont la d\'efini\-tion
-est construite dans le programme informatique \TeX.
-Au contraire, une commande qui n'est pas une
-primitive est d\'efinie par une \refterm{macro} ou un autre format de
-d\'efinition \'ecrit en \TeX. Les commandes dans \refterm{\plainTeX}
-sont constitu\'ees de commandes primitives auxquelles se joignent
-d'autres commandes d\'efinies en termes de
-primitives.
-\endconcept
-
-
-\concept profondeur
-
-^^{\boites//profondeur de}
-La \defterm{profondeur} d'une \refterm{bo\^\i te} est la distance par laquelle
-la bo\^\i te s'\'etend sous sa \refterm{ligne de base}.
-\endconcept
-
-
-\conceptindex{registres}
-\concept registre
-
-Un \defterm{registre} est une place nomm\'ee pour stocker une valeur.
-C'est plus comme une variable dans un langage de programmation.
-\TeX\ a cinq sortes de registres, comme montr\'e dans le tableau suivant~:
-
-\vdisplay{\tabskip 10pt\halign{\tt #\hfil &#\hfil\cr
-{\it Type de registre}&{\it Contenus}\cr
-box&une \refterm{bo\^\i te} \idxref{registres de \boite}\cr
-count&une \refterm{nombre} \idxref{registres de compteur}\cr
-dimen&une \refterm{dimension} \idxref{registres de dimension}\cr
-muskip&\refterm{muglue} \idxref{registres de muglue}\cr
-skip&\refterm{ressort} \idxref{registres de ressort}\cr
-toks&un \refterm{token} list\idxref{registres de token}\cr}}
-
-Les registres de chaque type sont num\'erot\'es de $0$ \`a $255$.
-Vous pouvez acc\'eder au registre $n$ de cat\'egorie $c$ en utilisant la forme `|\|$cn$',
-c'est-\`a-dire, |\muskip192|.
-Vous pouvez utiliser un registre
-n'importe o\`u cette information de type appropri\'e est appel\'ee. Par
-exemple, vous pouvez utiliser |\count12|
-dans tout contexte appelant un nombre ou |\skip0|
-dans tout contexte appelant un ressort.
-
-Vous mettez de l'information dans un registre en y \refterm{assignant:assignment}
-quelque chose~:
-
-\csdisplay
-\setbox3 = \hbox{lagomorphs are not mesomorphs}
-\count255 = -1
-|
-Le premier assignement construit une hbox et l'assigne au
-registre de bo\^\i te~$3$.
-Vous pouvez
-ensuite utiliser `|\box3|' partout o\`u une bo\^\i te est appel\'ee et vous obtiendrez
-cette hbox\footnote{Mais faites attention~: utiliser un registre de bo\^\i te
-la vide aussi donc son contenu devient vide. Les autres sortes de
-registres n'ont pas cet mani\`ere de r\'eagir. Vous pouvez utiliser la commande |\copy|
-\ctsref{\copy} pour conserver le contenu d'un registre de bo\^\i te sans
-le vider.}.
-Le second assignement assigne $-1$ au registre de compteur~$255$.
-
-Un registre d'un type donn\'e, par exemple, un registre de ressort, r\'eagit comme
-un param\`etre de ce type.
-^^{param\`etres//comme registres}
-Vous retrouvez sa valeur ou la lui assignez
-comme vous le feriez avec un \refterm{param\`etre}.
-Quelques param\`etres de \TeX, par exemple, |\pageno|,
-sont impl\'ement\'es comme des registres.
-
-\PlainTeX\
-utilise plein de registres pour son propre usage, donc vous ne devez pas
-simplement prendre un num\'ero de registre arbitraire
-quand vous avez besoin d'un registre. \`A la place, vous devez demander
-\`a \TeX\ de r\'eserver un registre en utilisant une des commandes
-^|\newbox|, ^|\newcount|, ^|\newdimen|, ^|\newmuskip|, ^|\newskip|
-ou ^|\newtoks|
-\ctsref{\@newbox}. Ces com\-man\-des sont outer, donc vous ne pouvez
-pas les utiliser dans une d\'efinition de macro.
-Si vous le pouviez,
-vous utiliseriez un registre \`a chaque fois que la macro serait appel\'ee et
-probablement d\'epasseriez le nombre de
-registres rapidement.
-
-Quoiqu'il en soit, vous pouvez, avec pr\'ecaution utiliser tout registre temporairement
-dans un \refterm{groupe}, m\^eme un que \TeX\ utilise pour autre chose.
-Quand \TeX\ a fini d'ex\'ecuter les commandes dans un groupe,
-il retrouve le contenu de tous les registres
-dans l'\'etat o\`u ils \'etaient avant de commencer \`a ex\'ecuter le groupe.
-Quand vous utilisez un registre num\'erot\'e explicitement dans un groupe,
-vous devez \^etre sur que le registre n'est modifi\'e par aucune
-\refterm{macro}
-que vous pourriez appeler dans le groupe.
-Soyez sp\'ecialement attentif
-quand vous utilisez des registres arbitraires dans un groupe qui appelle des macros
-que vous n'avez pas \'ecrit vous-m\^eme.
-
-{\tighten
-\TeX\ r\'eserve certains registres \`a des t\^aches sp\'eciales~: de |\count0| \`a
-|\count9| pour des informations de num\'erotation de page et
-^^{num\'erotation de page}
-^|\box255| pour le contenu
-d'une page juste avant qu'elle soit offerte \`a la \refterm{routine de sortie}.
-Les registres |\dimen0|--|\dimen9|, |\skip0|--|\skip9|,
-|\muskip0|--|\mu!-skip9| et |\box0|--|\box9| ainsi que
-les |255| registres de bo\^\i te autres que |\box255|
-sont g\'en\'eralement utilisables comme registre ``brouillon''.
-Aussi \plainTeX\ ne procure qu'un registre brouillon, |\count255|, pour
-des compteurs.
-Voir les \knuth{pages~122 et 346}{141--142 et 402} pour des conventions \`a suivre
-pour choisir des num\'eros de registre.
-\par}
-
-Vous pouvez examiner le contenu des registres lors d'une ex\'ecution
-avec la commande ^|\showthe| \ctsref\showthe, par exemple, `|\showthe\dimen0|'.
-\endconcept
-
-
-\concept r\'eglures
-
-Vous pouvez utiliser des \refterm{r\'eglures} pour remplir un espace avec des
-copies d'un mod\`ele, c'est-\`a-dire, mettre des points r\'ep\'et\'es entre un titre et
-un num\'ero de page dans une table des mati\`eres.
-Une r\'eglure est une copie simple d'un mod\`ele.
-La sp\'ecification des r\'eglures contient trois parties d'information.
-\olist\compact
-\li ce qu'est une r\'eglure seule
-\li combien d'espace doit \^etre rempli
-\li comment les copies du mod\`ele doivent \^etre arrang\'ees dans l'espace
-\endolist
-
-\bix^^|\leaders|
-\bix^^|\cleaders|
-\bix^^|\xleaders|
-{\tighten
-\TeX\ poss\`ede trois commandes pour sp\'ecifier des r\'eglures~:
-|\leaders|, |\cleaders| et |\xleaders| (\xref\leaders).
-L'\refterm{argument} de chaque commande sp\'e\-ci\-fie la r\'eglure.
-La commande doit \^etre suivie d'un \refterm{ressort}. La taille du ressort
-sp\'ecifie combien d'espace doit \^etre rempli. Le choix de la commande d\'etermine
-comment les r\'eglures sont arrang\'ees dans l'espace.}
-
-Voici un exemple montrant comment les |\leaders| travaillent~:
-\csdisplay
-\def\dotting{\leaders\hbox to 1em{\hfil.\hfil}\hfil}
-\line{The Political Process\dotting 18}
-\line{Bail Bonds\dotting 26}
-|
-Ici, nous avons plac\'e les r\'eglures et leur ressort associ\'e dans une d\'efinition
-de \refterm{macro} pour pouvoir les utiliser facilement \`a deux endroits.
-Cette entr\'ee produit~:
-
-\vdisplay{\advance\hsize by -\parindent
-\def\dotting{\leaders\hbox to 1em{\hfil{.}\hfil}\hfill}%
-\line{The Political Process{\dotting}18}
-\line{Bail Bonds{\dotting}26}
-}
-
-La \refterm{hbox} suivant |\leaders| sp\'ecifie
-la r\'eglure, soit, une hbox d'1\em\ de large contenant un point en son
-centre.
-L'espace est rempli avec des copies de cette bo\^\i te,
-effectivement remplies
-de points dont les centres sont s\'epar\'es de 1\em.
-Le |\hfil| suivant (celui \`a la fin de la d\'efinition de macro) est
-un ressort qui sp\'ecifie l'espace \`a remplir.
-Dans ce cas, c'est l'espace n\'ecessaire pour remplir la ligne.
-en choisissant |\leaders| plut\^ot que |\cleaders| ou |\xleaders|, nous nous
-assurons que les points des diff\'erentes lignes soient align\'es entre eux.
-
-En g\'en\'eral, l'espace \`a remplir agit comme une fen\^etre pour les copies
-r\'ep\'et\'ees de r\'eglures. \TeX\ ins\`ere autant de copies que possible, mais de
-l'espace est habituellement laiss\'e---soit parce que les r\'eglures s'arr\^etent
-dans la fen\^etre, soit parce que la largeur de la fen\^etre n'est pas un multiple
-exact de la largeur de la r\'eglure.
-La diff\'erence entre les trois commandes est dans leur fa\c con d'arranger les
-r\'eglures dans la fen\^etre et comment elles distribuent l'espace perdu.
-
-\ulist
-\li Pour |\leaders|, \TeX\ produit d'abord une rang\'ee de copies de la r\'eglure.
-Il aligne alors le d\'ebut de cette rang\'ee avec l'extr\'emit\'e gauche de la bo\^\i te
-la plus interne $B$ qui contient le r\'esultat de la commande |\leaders|.
-Dans les deux lignes d'exemple ci-dessous, $B$ est une bo\^\i te produite par |\line|.
-Ces r\'eglures qui rentrent enti\`erement dans la fen\^etre sont plac\'ees dans $B$,
-et l'espace restant aux extr\`e\-mit\'ees gauche et droite est laiss\'e vide.
-L'image est comme ceci~:
-\vdisplay{%
-\def\dotting{\leaders\hbox to 1em{\hfil{.}\hfil}\hfill}%
-\def\pp{The Political Process}
-\line{\dotting}
-\line{\hphantom\pp\hfil$\Downarrow$\hfil\hphantom{18}}
-\vskip 4pt
-\setbox0 = \hbox{\pp}
-\setbox1 = \hbox{18}
-\dimen0 = \hsize \advance\dimen0 by -\wd0 \advance \dimen0 by -\wd1
-\advance\dimen0 by -0.8pt
-\hbadness=10000
-\line{\pp
- \vrule\vbox{\hrule width \dimen0\vskip 2pt
- \hbox to \dimen0{\hfil window\strut\hfil}
- \vskip 2pt\hrule width \dimen0}%
- \vrule 18}
-\line{\hphantom\pp\hfil$\Downarrow$\hfil\hphantom{18}}
-\vskip 2pt
-\line{\pp{\dotting}18}
-}
-\vskip\medskipamount
-{\tighten
-\noindent
-Cette proc\'edure assure que dans les deux lignes d'exemple de la page pr\'ec\'edente,
-les points des deux lignes soient align\'es verticalement (puisque les
-\refterm{points de r\'ef\'erence:point de r\'ef\'erence} des hbox produites par
-|\line| sont align\'es verticalement).
-\par}
-
-\li Pour |\cleaders|, \TeX\ centre les r\'eglures dans la fen\^etre
-en divisant l'espace perdu entre les deux extr\'emit\'es de la fen\^etre.
-L'espace perdu est toujours inf\'erieur \`a la largeur d'une seule r\'eglure.
-
-\li Pour |\xleaders|, \TeX\ distribue l'espace perdu de chaque cot\'e dans la
-fen\^etre. En d'autres mots, si l'espace perdu est $w$ et que la r\'eglure se
-r\'ep\`ete $n$ fois, \TeX\ met un espace de largeur $w/(n+1)$ entre les r\'eglures
-adjacente et \`a deux extr\'emit\'es des r\'eglures.
-L'effet est habituellement d'\'etaler les r\'eglures un petit peu. L'espace
-perdu pour |\xleaders|, comme celui de |\cleaders|, est toujours inf\'erieur
-\`a la largeur d'une r\'eglure seule.
-\endulist
-
-Jusqu'ici, nous supposions que les r\'eglures consistaient en hbox arrang\'ees
-horizontalement. Deux variations sont possibles~:
-\olist
-\li Vous pouvez utiliser une r\`egle \`a la place d'une hbox pour la r\'eglure.
-\TeX\ rend la r\`egle aussi large que possible pour s'\'etendre au del\`a du
-ressort (et les trois commandes sont \'equivalentes).
-\li Vous pouvez produire des r\'eglures verticales qui traversent la page en
-les incluant dans une \refterm{liste verticale} au lieu d'une \refterm{liste
-horizontale}. Dans ce cas vous avez besoin de ressort vertical apr\`es les
-r\'eglures.
-\endolist
-\noindent
-Voir les \knuth{pages~223--225}{261--263} pour les r\`egles pr\'ecises que \TeX\ utilise
-en composant des r\'eglures.
-\eix^^|\leaders|
-\eix^^|\cleaders|
-\eix^^|\xleaders|
-\endconcept
-
-
-\concept ressort
-
-\bix^^{\etirement}
-\bix^^{r\'etr\'ecissement}
-Le \defterm{ressort} est de l'espace blanc qui peut se r\'etr\'ecir ou s'\'etirer.
-Le ressort donne \`a \TeX\ la flexibilit\'e dont il a besoin pour produire
-des documents impeccables.
-Le ressort existe en deux types~: le ressort horizontal et le ressort vertical.
-Le ressort horizontal appara\^\i t dans des \refterm{listes horizontales: liste horizontale},
-tandis que le ressort vertical appara\^\i t dans des \refterm{listes verticales:liste verticale}.
-^^{listes horizontales}
-^^{listes verticales}
-Vous
-pouvez produire un ressort soit implicitement, c'est-\`a-dire, avec un espace inter-mot, soit
-explicitement, c'est-\`a-dire, avec la commande ^|\hskip|.
-^^{espace//inter-mots}
-\TeX\ lui-m\^eme produit beaucoup de ressorts
-en composant votre document.
-Nous ne d\'ecrirons que le ressort horizontal---le ressort vertical \'etant analogue.
-
-Quand \TeX\ assemble une liste de bo\^\i tes et de ressorts en grande
-quantit\'e,
-^^{\boites//ressort avec}
-il ajuste la taille des ressorts pour garder les espaces demand\'ees d'unit\'e
-de largeur. Par exemple, \TeX\ s'assure que la ^{marge de droite} d'une page
-est uniforme en ajustant les ressorts horizontaux des lignes.
-Similairement, il s'assure que les diff\'erentes pages ont la
-m\^eme ^{marge du bas}
-en ajustant les ressorts entre les blocs de texte comme des paragraphes et
-des affichages math\'ematiques
-(o\`u le changement est probablement moins remarquable).
-
-Un ressort a un espacement naturel---la taille qu'il ``veut avoir''.
-Le ressort a aussi deux autres attributs~: son \refterm{\'etirement} et son
-\refterm{r\'etr\'ecissement}. Vous pouvez produire un montant sp\'ecifique de ressort
-horizontal avec la \refterm{commande} ^|\hskip| \ctsref{\hskip}. La commande
-|\hskip 6pt plus 2pt minus 3pt|
-produit un ressort horizontal dont la taille naturelle
-est de $6$ points, l'\'etirement de $2$ points et le r\'etr\'ecissement
-$3$ points. Similairement, vous pouvez produire un montant sp\'ecifique de ressort vertical
-avec la commande ^|\vskip| commande \ctsref{\vskip}.
-
-Le meilleur moyen de comprendre ce qui s'\'etire et ce qui se r\'etr\'ecit
-et de voir un exemple de ressort au travail.
-Supposez que vous construisez un \refterm{hbox} de trois bo\^\i tes et deux ressorts,
-comme dans l'image~:
-\gluepicture
- 29 {\picbox 4 \gluebox 6 4 1 6 \picbox 5 \gluebox 10 8 3 10 \picbox 4 }
-\noindent
-L'unit\'e de mesure ici peut \^etre en points, en millim\`etres, etc.
-Si le hbox est autoris\'e \`a assumer sa largeur naturelle, alors chaque ressort
-de la bo\^\i te assume aussi sa largeur naturelle. La largeur totale du hbox est
-alors la somme des largeurs de ses parties, soit, $29$ unit\'es.
-
-Ensuite, supposez que le hbox doit \^etre plus large que $29$ unit\'es, disons
-$35$ unit\'es. Cela
-peut arriver, par exemple, si le hbox doit occuper une ligne enti\`ere
-et que la largeur de la ligne soit de $35$ unit\'es.
-Puisque les bo\^\i tes ne peuvent changer leurs largeurs,
-\TeX\ produit l'espace suppl\'ementaire n\'ecessaire en rendant les ressorts plus larges.
-L'image maintenant ressemble \`a ceci~:
-\gluepicture
- 35 {\picbox 4 \gluebox 6 4 2 8 \picbox 5 \gluebox 10 8 6 14 \picbox 4 }
-Les ressorts ne deviennent pas plus larges de mani\`ere \'egale~;
-ils deviennent plus large en proportion de leur \'etirement.
-Puisque le second ressort
-a deux fois plus d'\'etirement que le premier,
-il devient plus large de quatre unit\'es tandis que le premier devient plus large de
-seulement deux unit\'es.
-Le ressort peut s'\'etirer autant que n\'ecessaire, n\'eanmoins, \TeX\ rechigne
-\`a l'\'etirer au del\`a du montant d'\'etirement donn\'e dans sa d\'efinition.
-
-Finalement, supposez que le hbox doive se rapprocher de $29$ unit\'es \`a, disons
-$25$ unit\'es. Dans ce cas \TeX\ r\'etr\'ecit les ressorts.
-L'image ressemble \`a ceci~:
-\gluepicture
- 25 {\picbox 4 \gluebox 6 4 2 5 \picbox 5 \gluebox 10 8 6 7 \picbox 4 }
-Les ressorts deviennent plus proches en proportion de leur r\'etr\'e\-cis\-sement.
-Le premier ressort devient plus \'etroit d'une unit\'e, tandis que le second
-r\'etr\'ecit de trois unit\'es. Le ressort ne peut pas se r\'etr\'ecir
-d'une distance inf\'erieure au montant de r\'etr\'ecissement donn\'e dans sa d\'efinition
-m\^eme si la distance \`a laquelle il peut se r\'etr\'ecir est sans
-limite. Sur ce point important l'\'etirement et le r\'etr\'ecissement r\'eagissent
-diff\'eremment.
-
-Une bonne r\`egle \`a suivre pour le ressort est de fixer sa taille normale au
-montant d'espace qui va le mieux, l'\'etirement au montant d'espace le plus grand
-que \TeX\ puisse ajouter avant que le document devienne mauvais et le
-r\'etr\'ecissement au montant d'espace le plus grand que \TeX\ puisse enlever
-avant que le document commence \`a devenir mauvais. Vous pouvez devoir fixer
-les valeurs par exp\'erimentation.
-
-Vous pouvez produire un ressort \'etirable \`a l'infini en sp\'ecifiant son
-\'etirement en unit\'es de `^|fil|', `^|fill|' ou `^|filll|'. Le ressort mesur\'e en
-`|fill|' est infiniment plus \'etirable que le ressort mesur\'e en `|fil|' et
-le ressort mesur\'e en `|filll|' est infiniment plus \'etirable que le ressort mesur\'e
-en `|fill|'. Vous n'aurez que tr\`es rarement besoin de ressort `|filll|'. Un ressort
-s'\'etirant de |2fil| s'\'etire deux fois plus qu'un ressort s'\'etirant de |1fil|,
-et de m\^eme pour les autres sortes de ressorts \'etirables infiniment.
-
-Quand \TeX\ apporte un espace suppl\'ementaire en plus d'un ressort,
-celui infiniment \'etirable, s'il y en a, en prend la totalit\'e.
-Le ressort infiniment \'etirable est particuli\`erement pratique pour
-cadrer du texte \`a gauche, \`a droite ou centr\'e.
-
-\ulist\compact
-\li Pour faire un texte ^{cadr\'e \`a gauche}, mettez un ressort horizontal
-infiniment \'etirable \`a sa droite.
-Ce ressort consommera tout l'espace suppl\'ementaire possible sur la ligne.
-Vous pouvez utiliser la commande ^|\leftline| \ctsref{\leftline}
-ou la commande |\raggedright| \ctsref{\raggedright} pour faire cela.
-\li Pour faire un texte ^{cadr\'e \`a droite}, mettez un ressort horizontal
-infiniment \'etirable \`a sa gauche. Comme ci-dessus
-ce ressort consommera tout l'espace suppl\'ementaire possible sur la ligne.
-Vous pouvez utiliser la commande ^|\rightline| \ctsref{\rightline}
-pour faire cela.
-\li Pour faire du ^{texte centr\'e}, mettez un ressort horizontal
-infiniment \'etirable de chaque cot\'e.
-Ces deux ressorts diviseront tout l'espace suppl\'ementaire de la ligne
-\'egalement entre eux.
-Vous pouvez utiliser la commande ^|\centerline| \ctsref{\centerline} pour faire cela.
-\endulist
-
-Vous pouvez aussi sp\'ecifier un ressort r\'etr\'ecissable infiniment
-^^{ressort//infiniment \'etirable}
-de la m\^eme mani\`ere. Un ressort r\'etr\'ecissable infiniment peut agir comme espace n\'egatif.
-Notez que |fil|, etc., ne peuvent \^etre utilis\'es que pour sp\'ecifier l'\'etirement
-et le r\'etr\'ecissement du ressort---Ils ne peuvent \^etre utilis\'es pour sp\'ecifier
-sa taille normale.
-\eix^^{\etirement}
-\eix^^{r\'etr\'ecissement}
-\endconcept
-
-
-\concept {ressort inter-ligne}
-
-Le \defterm{ressort inter-ligne} est le ressort que \TeX\ ins\`ere au d\'ebut de chaque
-\refterm{bo\^\i te} dans une \refterm{liste verticale} sauf pour la premi\`ere.
-Le ressort inter-ligne est normalement sp\'ecifi\'ee de fa\c con \`a maintenir une
-distance constante entre les lignes de base des bo\^\i tes.
-Sa valeur est d\'etermin\'ee conjointement par les param\`etres ^|\baselineskip|,
-^|\lineskip| et ^|\lineskiplimit| \ctsref{\baselineskip}.
-\endconcept
-
-
-\conceptindex {r\'etr\'ecissements}
-\concept {r\'etr\'ecissement}
-
-Voir \conceptcit{ressort}.
-\endconcept
-
-
-\concept {routine de sortie}
-
-Quand \TeX\ a accumul\'e
-au moins assez de mat\'e\-riel pour remplir une page, il choisi un point d'arr\^et
-et place le mat\'eriel situ\'e avant le point d'arr\^et en |\box255|. Il appelle
-alors la \defterm{routine de sortie} courante, qui compile le mat\'eriel et
-l'envoie \'eventuellement dans le \dvifile.
-^^{\dvifile//mat\'eriel de la routine de sortie}
-La routine de sortie peut faire d'autres actions, comme ins\'erer des ent\^etes,
-des pieds de page et des notes de pieds de page.
-\refterm{\PlainTeX:\plainTeX} procure
-une routine de sortie par d\'efaut qui ins\`ere un num\'ero de page centr\'e
-en bas de chaque page.
-En procurant une routine de sortie diff\'erente vous pouvez cr\'eer des
-effets tels que des sortie en double colonnes.
-Vous pouvez imaginer les routines de sortie comme ayant une seule responsabilit\'e~:
-disposer le mat\'eriel en |\box255| d'une fa\c con ou d'une autre.
-
-La routine de sortie courante est d\'efinie par la valeur de ^|\output|
-\ctsref{\output}, qui est une liste de \refterm{tokens:token}. Quand \TeX\
-est pr\^et \`a produire une page, il d\'eveloppe simplement la liste de tokens.
-
-Vous pouvez faire quelque simples changements aux actions de la routine de
-sortie de \plainTeX\ sans la modifier r\'eellement. Par exemple, en assignant
-une liste de \refterm{tokens:token} \`a |\headline| ou
-|\footline| \ctsref{\footline} vous pouvez faire que \TeX\ produise un ent\^ete
-ou un pied de page diff\'erent de l'ordinaire.
-
-La routine de sortie est aussi responsable pour collecter
-toutes \refterm{insertions:insertion}~; en combinant ces insertions et
-toutes ``d\'ecorations'' telles que ent\^etes et pieds de page avec
-les contenus principaux de la page et empaqu\`ete tout ce mat\'eriel
-dans une bo\^\i te~; et \'eventuellement envoyer cette bo\^\i te dans
-le \dvifile\
-^^{\dvifile//mat\'eriel de la routine de sortie}
-avec la commande ^|\shipout|\ctsref{\shipout}.
-Bien que cela soit ce que fait une routine de sortie le plus souvent,
-une routine de sortie d'usage sp\'ecial peut agir diff\'eremment.
-\endconcept
-
-
-\conceptindex{s\'equences de contr\^ole}
-\concept {s\'equence de contr\^ole}
-
-Une \defterm{S\'equence de contr\^ole} est un nom pour une \refterm{command}e \TeX.
-Une s\'equence de contr\^ole commence par un ^{caract\`ere d'\'echappement},
-habituellement un antislash (|\|).
-\indexchar \
-Une s\'equence de contr\^ole prend une des deux formes~:
-
-\ulist
-
-\li Un \refterm{mot de contr\^ole} est une S\'equence de contr\^ole constitu\'ee
-d'un \refterm{caract\`ere d'\'echappement} suivi par une ou plusieurs lettres.
-^^{mots de contr\^ole}
-Le mot de contr\^ole se termine quand \TeX\ voit une non-lettre. Par exemple,
-quand \TeX\ lit
-`\hbox{|\hfill!visiblespace,!visiblespace!.the|}', il voit six
-\refterm{tokens:token}~:
-Les s\'equences de contr\^ole `|\hfill|', virgule, espace, `|t|', `|h|', `|e|'.
-L'espace apr\`es `|\hfill|' termine la s\'equence de contr\^ole et
-est absorb\'ee par \TeX\ quand il lit la s\'equence de contr\^ole.
-(Pour le texte `|\hfill,!visiblespace!.the|', d'un autre cot\'e,
-La virgule termine aussi la s\'equence de contr\^ole et compte comme un caract\`ere
-de bon aloi.)
-
-\li Un \refterm{symbole de contr\^ole}
-^^{symboles de contr\^ole}
-est une s\'equence de contr\^ole constitu\'ee d'un
-^{caract\`ere d'\'echappement} suivi par n'importe caract\`ere autre qu'une lettre---%
-m\^eme un espace ou une fin de ligne.
-Un symbole de contr\^ole est auto-d\'elimit\'e, c'est-\`a-dire, \TeX\ sait o\`u il termine sans
-devoir regarder le caract\`ere qui le suit.
-Le caract\`ere apr\`es un symbole de contr\^ole n'est jamais absorb\'e par le
-symbole de contr\^ole.
-\endulist
-\noindent Voir \xrefpg{espace} pour plus d'information sur les espaces apr\`es
-des s\'equences de contr\^ole.
-
-\TeX\ procure une grand nombre de s\'equences de contr\^ole pr\'ed\'efinies. Les
-s\'equences de contr\^ole \refterm{primitives} sont construites dans le programme
-informatique \TeX\ et donc, sont accessibles sous toutes les formes de \TeX.
-^^{primitive//s\'equence de contr\^ole}
-D'autres s\'equences de contr\^ole sont fournies par \refterm{\plainTeX}, la
-forme de \TeX\ d\'ecrite dans ce livre
-
-Vous pouvez augmenter des s\'equences de contr\^ole pr\'ed\'efinies avec celles de
-votre cru, en utilisant des commandes telles que ^|\def| et ^|\let| pour les
-d\'efinir. La \chapterref{eplain} de ce livre contient une collection de
-d\'efinitions de s\'equence de contr\^ole que vous pouvez trouver utile. De plus,
-votre syst\`eme informatique peut vous rendre capable de cr\'eer une collection
-de macros \TeX\ d\'evelopp\'ees localement.
-\endconcept
-
-
-\conceptindex{struts}
-\concept strut
-
-{\tighten
-Un \defterm{strut} est une \refterm{bo\^\i te} invisible
-^^{\boites//invisible}
-dont la largeur est \`a z\'ero et dont la hauteur et la profondeur sont l\'eg\`erement
-sup\'erieure \`a celle d'une ligne de texte ``normale'' dans le contexte.
-Les struts sont pratiques pour obtenir un espacement vertical uniforme quand
-l'espacement de ligne usuel de \TeX, par exemple, dans une formule math\'ematique
-ou dans un alignement horizontal o\`u vous sp\'ecifiez ^|\offinterlineskip|.
-Parce qu'un strut est plus haut et plus profond que tout autre chose sur sa ligne,
-il d\'etermine la hauteur et la profondeur de la ligne.
-Vous pouvez produire un strut avec la commande ^|\strut| \ctsref{\strut} ou
-la commande ^|\mathstrut| \ctsref\mathstrut.
-Vous pouvez utiliser |\strut| n'importe o\`u, mais vous ne pouvez utiliser
-|\mathstrut| que quand \TeX\ est en \refterm{mode} math\'ematique.
-Un strut dans \plainTeX\ a une hauteur de 8.5\pt\ et une profondeur de 3.5\pt,
-tandis qu'un strut math\'ematique \`a la hauteur et la profondeur d'une
-parenth\`ese ouvrante du \refterm{style} courant (donc il est plus petit pour
-des indices ou des exposants).
-\par}
-
-Voici un exemple montrant comment vous devriez utiliser un strut~:
-\csdisplay
-\vbox{\hsize = 3in \raggedright
- \strut Here is the first of two paragraphs that we're
- setting in a much narrower line length.\strut}
-\vbox{\hsize = 3in \raggedright
- \strut Here is the second of two paragraphs that we're
- setting in a much narrower line length.\strut}
-|
-Cette entr\'ee donne~:
-\display{\vbox{
-\vbox{\hsize = 3in \raggedright
-\strut Here is the first of two paragraphs that we're setting
-in a much narrower line length.\strut}
-\vbox{\hsize = 3in \raggedright
-\strut Here is the second of two paragraphs that we're setting
-in a much narrower line length.\strut}
-}}
-\noindent
-Sans les struts la \refterm{vbox} serait trop rapproch\'ee.
-Similairement, dans la formule~:
-\csdisplay
-$\overline{x\mathstrut} \otimes \overline{t\mathstrut}$
-|
-Les struts math\'ematiques font que les deux barres sont mises \`a la m\^eme hauteur m\^eme
-si le `$x$' et le `$t$' ont des hauteurs diff\'erentes~:
-\display{
-$\overline{x\mathstrut} \otimes \overline{t\mathstrut}$
-}
-\vskip -\belowdisplayskip
-\endconcept
-%\nobreak
-
-\conceptindex{styles}
-\concept {style}
-
-Le mat\'eriel d'une formule math\'ematique est mis dans un des huit \defterm{styles},
-d\'ependant du contexte. Conna\^\i tre les styles peut \^etre utile si vous voulez
-mettre une partie d'une formule dans une taille de caract\`ere diff\'erente de
-celle que \TeX\ a choisi en fonction de ses r\`egles usuelles.
-
-%\eject
-Les quatre styles primaires sont~:
-
-\vdisplay{%
-\halign{\refterm{# style}\hfil&\hskip .25in(#)\hfil\cr
-display&formules affich\'ees sur une ligne seule\cr
-text&formules englob\'ees dans du texte ordinaire\cr
-script&exposants et indices\cr
-scriptscript&indices d'indices, etc.\cr
-}}
-
-Les quatre autres styles sont dits ^{variantes \'etroites}. Dans ces variantes
-les exposants ne sont pas mont\'es aussi haut que normalement et donc la formule
-n\'ecessite moins d'espace vertical qu'ils le devraient. Voir les \knuth{pages~140--141}{164--165}
-pour les d\'etails sur la fa\c con de \TeX\ de s\'electionner le style.
-
-\TeX\ choisit une taille de caract\`ere en fonction du style~:
-
-\ulist\compact
-^^{style d'affichage}^^{style texte}
-\li Le style d'affichage et le style texte sont mis en \refterm{taille texte}, comme
-`$\rm ceci$'.
-
-^^{style script}
-\li le style script est mis en \refterm{taille script}, comme `$\scriptstyle
-\rm ceci$'.
-
-^^{style scriptscript}
-\li le style scriptscript est mis en \refterm{taille scriptscript}, comme
-`$\scriptscriptstyle \rm ceci$'.
-\endulist
-
-Voir \conceptcit{famille} pour plus d'informations \`a propos de ces trois tailles.
-
-\TeX\ n'a pas de style ``scriptscriptscript'' parce qu'un tel style
-serait souvent mis dans une taille de caract\`ere trop petite \`a lire. \TeX\
-par cons\'equent met les indices, exposants, etc. de troisi\`eme ordre en utilisant le
-style scriptscript.
-
-Parfois vous pourrez trouver que \TeX\ a mis une formule dans un style diff\'erent
-de celui que vous pr\'ef\'erez. Vous pouvez passer outre le choix de \TeX\ avec les
-commandes ^|\textstyle|, ^|\displaystyle|, ^|\scriptstyle| et ^|\scriptscriptstyle|
-\ctsref{\textstyle}.
-\endconcept
-
-
-\conceptindex{symboles de contr\^ole}
-\concept {symbole de contr\^ole}
-
-Un \defterm{symbole de contr\^ole} est une \refterm{s\'equence de contr\^ole} qui
-est constitu\'ee d'un \refterm{caract\`ere d'\'echappement} suivi d'un caract\`ere
-autre qu'une lettre---m\^eme un espace et une fin de ligne.
-^^{caract\`ere d'\'echappement}
-\endconcept
-
-
-\concept {taille script}
-
-Une \defterm{taille script} d\'ecrit une des trois
-\refterm{polices:police} reli\'ees dans une famille.
-^^{famille//taille script en}
-Une taille script est plus petite que la \refterm{taille texte} mais plus
-grande que la
-\refterm{taille scriptscript}. \TeX\ utilise la taille script pour les
-indices et les exposants, aussi bien que pour les num\'erateurs et les
-d\'enominateurs de fractions dans du texte.
-\endconcept
-
-
-\concept {taille scriptscript}
-
-Une \defterm{taille scriptscript} d\'ecrit la plus petite taille des trois
-\refterm{polices:police} reli\'ees dans une famille.
-^^{famille//taille scriptscript en}
-\TeX\ utilise la \refterm{taille scriptscript} pour des indices, exposants,
-num\'erateurs et d\'enominateurs de second rang. Par exemple, \TeX\ utilisera
-la taille scriptscript pour un indice d'indice ou pour un exposant d'exposant.
-\endconcept
-
-
-\concept {taille texte}
-
-La \defterm{taille texte} d\'ecrit la plus grande des trois
-\refterm{polices:police} li\'ees dans une \refterm{famille}.
-^^{famille//taille texte en}
-\TeX\ utilise la taille texte pour des symboles ordinaires apparaissant en
-\refterm{mode math\'ematique}.
-\endconcept
-
-
-\conceptindex{tests conditionnels}
-\concept {test conditionnel}
-
-Un \defterm{test conditionnel} est une commande qui teste si une condition est
-vraie ou non et
-demande \`a \TeX\ soit de d\'evelopper soit de sauter du texte, selon le cas.
-La forme g\'en\'erale d'une test conditionnel est soit~:
-\display{
-{\tt \\if}$\alpha$\<true text>{\tt \\else}\<false text>{\tt \\fi}}
-^^|\else|^^|\fi|
-\noindent soit~:\hfil\
-\display{
-{\tt \\if}$\alpha$\<true text>{\tt \\fi}}
-\noindent o\`u $\alpha$ sp\'ecifie le test particulier.
-Par exemple, |\ifvmode| teste la condition que \TeX\
-soit actuellement dans un \refterm{mode vertical}.
-Si la condition est vraie, \TeX\ d\'eveloppe \<true text>.
-Si la condition est fausse, \TeX\ d\'eveloppe \<false text> (s'il est pr\'esent).
-Les tests conditionnels sont interpr\'et\'es dans l'\oesophage\ de \TeX
-\seeconcept{\anatomy}, donc tous les \minref{token}s d\'eveloppables dans
-le texte interpr\'et\'e ne sont d\'evelopp\'es qu'apr\`es que le test n'ait \'et\'e r\'esolu.
-Les diff\'erents tests conditionnels sont expliqu\'es dans
-\headcit{Tests conditionnels}{conds}.
-
-\endconcept
-
-
-\concept {\TeXMeX}
-
-(a)~Une vari\'et\'e de \TeX\ utilis\'ee pour composer des math\'e\-matiques dans les
-pays d'Am\'erique Centrale.
-(b)~Une cuisine tr\`es \'epic\'ee appr\'e\-ci\'ee par les \TeX\-ni\-ciens d'^{El Paso}.
-\endconcept
-
-
-\conceptindex{justification}
-\concept {texte justifi\'e}
-
-Du \defterm{texte justifi\'e} est du texte qui a \'et\'e compos\'e pour que les
-deux marges soit align\'ees. Du texte non justifi\'e, d'un autre cot\'e, a \'et\'e compos\'e
-avec des marges ``d\'echir\'ees'' d'un ou des deux cot\'es.
-Les documents saisis sur les vieilles machines \`a \'ecrire ont la plupart du temps
-des marges droites d\'echir\'ees.
-Bien que les documents produits par \TeX\ soient justifi\'es par d\'efaut, vous
-pouvez si vous voulez produire des documents (ou des suites de lignes) qui
-ont la marge ^{droite}---ou ^{gauche d\'echir\'ee}.
-Vous pouvez aussi demander \`a \TeX\ de centrer un suite de lignes, ce qui rend
-les deux marges d\'echir\'ees.
-^^{texte centr\'e}
-Vous pouvez utiliser les commandes
-^|\leftskip|, ^|\rightskip| et ^|\raggedright|
-(\pp \xrefn{\leftskip},~\xrefn{\raggedright}) pour cela.
-
-Quand \TeX\ produit du texte justifi\'e, il a normalement besoin de r\'e\-tr\'ecir ou
-d'\'etirer les ressorts de chaque ligne pour que les marges soient align\'ees.
-Quand \TeX\ produit du texte non justifi\'e, d'un autre cot\'e, il laisse les ressorts
-de chaque ligne \`a leur taille naturelle.
-Beaucoup de typographes pr\'ef\`erent le texte non justifi\'e parce que son espacement
-inter-mot est plus uniforme.
-\endconcept
-
-
-\concept {texte math\'ematique}
-
-Nous utilisons le terme \defterm{texte math\'ematique} pour faire r\'ef\'erence
-\`a une formule math\'ematique mise dans une ligne de texte, c'est-\`a-dire,
-entour\'ee de |$|.
-\ttidxref{$}
-\TeX\ met du texte math\'ematique dans le \refterm{mode} texte math\'ematique .
-\endconcept
-
-
-\conceptindex{tokens}
-\concept token
-
-Un \defterm{token} est soit un simple caract\`ere attach\'e \`a un
-\refterm{code de cat\'egorie} ou une \refterm{s\'equence de contr\^ole}.
-\TeX\ lit les caract\`eres d'un fichier en utilisant ses yeux \seeconcept{\anatomy}
-et groupe les caract\`eres en tokens en utilisant sa bouche. Quand un token
-atteint l'estomac de \TeX, \TeX\ l'interpr\`ete comme une \refterm{commande}
-\`a moins qu'il fasse partie d'un argument d'une commande pr\'ec\'edente.
-\endconcept
-
-
-\conceptindex{unit\'es de mesure}
-\concept {unit\'e de mesure}
-
-Voir \conceptcit{dimension}.
-\endconcept
-
-
-\conceptindex{unit\'es math\'ematiques}
-\concept {unit\'e math\'ematique}
-
-Une \defterm{unit\'e math\'ematique}, cod\'ee `|mu|', est une unit\'e de distance
-utilis\'ee pour sp\'ecifier un \refterm{ressort} dans les formules math\'e\-matiques. Voir
-le \conceptcit{muglue}.
-\endconcept
-
-
-\conceptindex{vbox}
-\concept vbox
-
-^^{listes verticales//vbox form\'ees \`a partir de}
-Une \defterm{vbox} (bo\^\i te verticale) est une \refterm{bo\^\i te} que \TeX\ construit
-en pla\c cant les \'el\'ements d'une \refterm{liste verticale} l'une apr\`es l'autre, de haut
-en bas. Une vbox, prise en tant qu'unit\'e, n'est ni fondamentalement horizontale
-ni fondamentalement verticale, c'est-\`a-dire, elle peut appara\^\i tre comme un \'el\'ement
-soit d'une liste verticale soit d'une \refterm{liste horizontale}. Vous
-pouvez construire une vbox avec les commandes ^|\vbox| ou ^|\vtop| \ctsref{\vtop}.
-La diff\'erence est que pour |\vbox|, le \refterm{point de r\'ef\'erence} de la
-vbox construite est d\'eriv\'e de celui du dernier (et souvent plus bas)
-\'el\'ement constituant la liste, mais pour |\vtop|, c'est celui du premier
-(et normalement plus haut) \'el\'ement constituant la liste.
-\endconcept
-
-
-\endconcepts
-
-\endchapter
-\byebye
-
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros +\chapter{Concepts} + +\chapterdef{concepts} + +Cette partie du livre contient les d\'efinitions et explications des +concepts que nous utilisons pour d\'ecrire \TeX. Les concepts comprennent +les termes techniques que nous utilisons pour expliquer les commandes et +des points importants qui ne sont vus nulle part ailleurs dans le livre + +Les concepts sont class\'es dans l'ordre alphab\'etique. La page de garde int\'erieure +contient une liste compl\`ete des concepts et les pages o\`u ils sont expliqu\'es. +Nous vous sugg\'erons de faire une copie de cette page int\'erieure et de la +garder de cot\'e pour que vous puissiez identifier et regarder un concept non +familier imm\'ediatement. Autant que possible, nous gardons notre +terminologie coh\'erente avec celle de \texbook.\idxref{\texbook} + +\beginconcepts + +\conceptindex{alignements} +\concept alignement + +\bix^^{tables} +Un \defterm{alignement} est une construction pour aligner du mat\'e\-riel tel +qu'un tableau, en colonne ou en rang\'ee. Pour former un alignement vous devez +(a)~d\'ecrire le format des colonnes ou des rang\'ees et (b)~ dire \`a \TeX\ quel +mat\'eriel va dans les colonnes ou les rang\'ees. Un alignement tabul\'e ou un +alignement horizontal est organis\'e comme une suite de rang\'ees~; un alignement +vertical est organis\'e comme une suite de colonnes. Nous d\'ecrirons d'abord +les alignements tabul\'es et horizontaux et ensuite, plus bri\`evement, les +alignements verticaux. + +Les alignements tabul\'es sont d\'efinis par \plainTeX. Ils sont plus simples +mais moins flexibles que les alignements horizontaux. Ils diff\`erent +principalement sur la fa\c con de d\'ecrire leurs formats. + +\bix^^|\settabs| +\bix\ctsidxref{+} +\bix\ctsidxref{cr} + +Pour construire un alignement tabul\'e vous devez tout d'abord former une +commande |\settabs| \ctsref{\settabs} qui sp\'ecifie comment \TeX\ doit +diviser l'es\-pace horizontal disponible en colonne, ensuite vous procurer +une suite de rang\'ees \`a tabuler. Chaque rang\'ee consiste en une s\'equence de +contr\^ole |\+| \ctsref{\@plus} suivi par une liste d'``entr\'ees'', c'est-\`a-dire +des intersections rang\'ees\slash colonnes. +^^{entr\'ee (colonne ou rang\'ee)} +Des entr\'ees qui se suivent sur une rang\'ee sont s\'epar\'ees par une esperluette +(|&|). +\xrdef{@and} +\ttidxref{&} +La fin d'une rang\'ee est indiqu\'ee par ^|\cr| apr\`es sa derni\`ere entr\'ee. +Si une rang\'ee a moins d'entr\'ees qu'il y a de colonnes dans l'alignement, +\TeX\ rempli jusqu'\`a la fin la rang\'ee de blanc. + +Tant qu'il est pr\'ec\'ed\'e d'une commande |\settabs|, vous pouvez mettre une +rang\'ee d'un alignement tabul\'e n'importe o\`u dans votre document. En particulier, +vous pouvez mettre autres choses entre les rang\'ees d'aligne\-ments tabul\'es ou +d\'ecrire plusieurs alignements tabul\'es avec un seul |\set!-tabs|. Voici un exemple +d'alignement tabul\'e~: + +\xrdef{tabbedexample}\csdisplay +{\hsize = 1.7 in \settabs 2 \columns +\+cattle&herd\cr +\+fish&school\cr +\+lions&pride\cr} +| +La commande |\settabs 2 \columns| de cet exemple \ctsref{\settabs} +demande \`a \TeX\ de produire deux colonnes de largeurs \'egales. +La longueur de la ligne est de $1.7$ pouces. +L'alignement compos\'e ressemble \`a ceci~: + +{\def\+{\tabalign}% so it isn't \outer. +\vdisplay{% +\hsize 1.7 in \settabs 2 \columns +\+cattle&herd\cr +\+fish&school\cr +\+lions&pride\cr} +}% + +\margin{Missing explanation added here.} +Il y a une autre forme d'alignement tabul\'e dans lequel vous sp\'ecifiez les +largeurs de colonne avec un exemple. La largeur de colonne de l'exemple +d\'etermine les largeurs de colonne du reste de l'alignement~: +\csdisplay +{\settabs\+cattle\quad&school\cr +\+cattle&herd\cr +\+fish&school\cr +\+lions&pride\cr} +| +Voici le r\'esultat~: +{\def\+{\tabalign}% so it isn't \outer. +\vdisplay{% +\settabs\+cattle\quad&school\cr +\+cattle&herd\cr +\+fish&school\cr +\+lions&pride\cr} +}% + +\eix^^|\settabs| +\eix\ctsidxref{+} +\bix^^|\halign| +Les alignements horizontaux sont construits avec |\halign| \ctsref\halign. +\TeX\ ajuste la largeur des colonnes d'un alignement horizontal en fonction +du contenu des colonnes. Quand \TeX\ rencontre la commande |\halign| qui +d\'ebute un alignement horizontal, il examine d'abord toutes les rang\'ees de +l'alignement pour voir quelle est la largeur des entr\'ees. Il fixe alors +la largeur des colonnes pour accommoder les entr\'ees les plus larges dans ces +colonnes. + +Un alignement horizontal g\'er\'e par |\halign| est constitu\'e d'un +``\pix^{pr\'eam\-bule}'' qui indique le sch\'ema des rang\'ees suivi par les +rang\'ees elles-m\^emes. +\ulist +\li Le pr\'eambule est constitu\'e d'une suite de \pix^{patron}s, un pour +chaque colonne. Le patron d'une colonne sp\'ecifie comment le texte de cette +colonne doit \^etre compos\'e. Chaque patron doit inclure un seul carac\-t\`ere |#| +\ttidxref{#}\xrdef{@asharp} +pour indiquer o\`u \TeX\ doit substituer le texte d'une entr\'ee dans le patron. +Les patrons sont s\'epar\'es par une esperluette (|&|) \ttidxref{&} et la fin +du pr\'eambule est indiqu\'ee par |\cr|. En procurant un patron appro\-pri\'e, vous +pouvez obtenir des effets comme centrer une colonne, justifier une colonne +\`a gauche ou \`a droite ou composer une colonne dans une \refterm{police} +particuli\`ere. + +\li Les rang\'ees ont la m\^eme forme que dans l'alignement tabul\'e, sauf que +vous ne mettez pas de |\+| au d\'ebut de chaque rang\'ee. +Comme avant, des entr\'ees sont s\'epar\'ees par |&| et la fin d'une rang\'ee est +indiqu\'ee par |\cr|. +\TeX\ traite chaque entr\'ee comme un \refterm{groupe}, donc, chaque commande +de changement de police ou autre \refterm{assignement} dans le patron de +colonne ne prend effet que pour les entr\'ees de cette colonne. +\endulist +\noindent Le pr\'eambule et les rang\'ees doivent \^etre inclus entre les +accolades qui suivent |\halign|. Chaque alignement |\halign| doit inclure +son propre pr\'eambule. + +Par exemple, l'alignement horizontal~: +\csdisplay +\tabskip=2pc +\halign{\hfil#\hfil &\hfil#\hfil &\hfil#\hfil \cr + &&\it Table\cr +\noalign{\kern -2pt} + \it Creature&\it Victual&\it Position\cr +\noalign{\kern 2pt} + Alice&crumpet&left\cr + Dormouse&muffin&middle\cr + Hatter&tea&right\cr} +| + +\noindent produit le r\'esultat~: + +\xrdef{halignexample} +\vdisplay{% +\tabskip=2pc \halign{\hfil#\hfil &\hfil#\hfil &\hfil#\hfil \cr + &&\it Table\cr +\noalign{\kern -2pt} + \it Creature&\it Victual&\it Position\cr +\noalign{\kern 2pt} + Alice&crumpet&left\cr + Dormouse&muffin&middle\cr + Hatter&tea&right\cr} +}% +\noindent Le ^|\tabskip| \ctsref{\tabskip} de cet exemple +demande \`a \TeX\ d'ins\'erer |2pc| de +\refterm{ressort} entre les colonnes. +La commande ^|\noalign| \ctsref{\noalign} d'ins\'erer +du mat\'eriel de \refterm{mode vertical} entre deux rang\'ees. +Dans cet exemple nous avons +utilis\'e |\noalign| pour produire de l'espace suppl\'ementaire entre les +rang\'ees de titre et les rang\'ees de donn\'ees, et aussi rapprocher ``Table'' +et ``Position''. +(Vous pouvez aussi utiliser |\noalign| avant la premi\`ere rang\'ee ou apr\`es la +derni\`ere.) +\eix^^|\halign| + +Vous pouvez aussi construire un alignement vertical avec la commande ^|\valign| +\ctsref{\valign}. Un alignement vertical est organis\'e comme une s\'erie de +colonnes plut\^ot que comme une s\'erie de rang\'ees. Un alignement vertical suit +les m\^eme r\`egles qu'un alignement horizontal sauf que le r\^ole des rang\'ees et +des colonnes est invers\'e. Par exemple, l'alignement vertical~: + +\csdisplay +{\hsize=0.6in \parindent=0pt +\valign{#\strut&#\strut&#\strut\cr + one&two&three\cr + four&five&six\cr + seven&eight&nine\cr + ten&eleven\cr}} +| + +\noindent produit~: +\vdisplay{% +{\hsize=0.6in \parindent=\listleftindent % Because lists and displays + % are not indented just by \parindent. +\valign{#\strut&#\strut&#\strut\cr + one&two&three\cr + four&five&six\cr + seven&eight&nine\cr + ten&eleven\cr}} +} +La commande ^|\strut| \ctsref{\strut} dans le patron est n\'ecessaire pour +que les entr\'ees de chaque rang\'ee s'alignent proprement, c'est-\`a-dire, +pour avoir une \refterm{ligne de base} commune et garder une distance +uniforme entre les lignes de base. +\eix\ctsidxref{cr} +\eix^^{tables} + +\endconcept + + +\concept {\anatomy} + +\texbook\ d\'ecrit la fa\c con dont {\TeX} compile ses sources en termes de +``t\^aches digestives'' de \TeX---ses ``^{yeux}'', ``^{bouche}'', +``^{\oesophage}'', ``^{estomac}'' et ``^{intestin}''. Savoir comment ces +organes travaillent peut \^etre utile quand vous essayer de comprendre de subtils +aspects du raisonnement de \TeX\ quand il dig\`ere un document. + +\ulist + +\li En utilisant ses ``\pix^{yeux}'', \TeX\ lit les \refterm{caract\`eres:caract\`ere} du +^{fichier source} et les passe \`a sa bouche. Puisqu'un fichier source +peut contenir des commandes ^|\input| \ctsref{\input}, +\TeX\ peut en effet d\'etourner son regard d'un fichier \`a l'autre. + +\li En utilisant sa ``\pix^{bouche}'', {\TeX} assemble les caract\`eres en +\refterm{tokens:token} et les passe \`a son \oesophage. +Chaque token est soit une \refterm{s\'equence de contr\^ole} ou un simple +caract\`ere. Une s\'equence de contr\^ole commence toujours par un \refterm{caract\`ere +d'\'echappement}. Notez que les espaces et les fins de ligne sont des caract\`eres +de plein droit, de plus \TeX\ compresse une suite d'espaces en un seul token +d'espace. Voir \knuth{pages~46--47}{56--58} pour les r\`egles avec lesquelles \TeX\ +assemble les caract\`eres en tokens. +^^{tokens//assembl\'ee \`a partir de caract\`eres} + +\li En utilisant son ``\pix^{\oesophage}'', {\TeX} d\'eveloppe chaque macro, conditions, et +^^{macros//d\'evelopp\'ees dans l'estomac de \TeX} +^^{tokens//pass\'ee \`a l'estomac de \TeX} +constructions similaires qu'il trouve (voir \knuth{pages~212--216}{249--253}) et passe +la suite de \refterm{tokens:token} r\'esultante +\`a l'estomac de \TeX. D\'evelopper un token +peu faire appara\^\i tre d'autres tokens qui \`a leur tour ont besoin d'\^etre +d\'evelopp\'es. {\TeX} parcourt ce d\'eveloppement de gauche \`a droite \`a moins +que l'ordre soit modi\-fi\'e par +une commande telle que |\expandafter| \ctsref{\expandafter}. +En d'autres mots, l'\oe sophage de \TeX\ d\'eveloppe toujours le token le plus \`a +gauche non-d\'evelopp\'e qu'il n'a pas encore envoy\'e vers l'estomac de \TeX. + +\li En utilisant son ``\pix^{estomac}'', {\TeX} ex\'ecute tous les groupes de token. +Chaque groupe contient une commande primitive suivie par ses +arguments, s'il y en a. +La plupart des commandes sont de type ``compose ce caract\`ere'', +dont leur groupe n'est constitu\'e que d'un token. +Suivant les instructions donn\'ees par les commandes, l'estomac de +\TeX\ assemble de plus en plus grandes unit\'es, d\'ebutant par des +caract\`eres et finissant par des pages, +et passe les pages \`a l'intestin de \TeX. +^^{pages//assembl\'ees dans l'estomac de \TeX} +L'estomac de \TeX\ ex\'ecute les taches de \refterm{coupure de ligne}---% +^^{coupures de ligne} +c'est-\`a-dire, couper chaque paragraphe en suite de lignes---% +et de \refterm{coupure de page}---c'est-\`a-dire, +couper une suite continue de lignes +et autres mat\'eriels de mode vertical en pages. + +\li En utilisant ses ``\pix^{intestin}'', \TeX\ transforme les pages produites par son +estomac en une forme destin\'ee \`a \^etre lue +par d'autres program\-mes. Il envoit alors la sortie transform\'ee dans le +\dvifile. +^^{\dvifile//cr\'e\'e par l'intestin de \TeX} + +\endulist + +La plupart du temps, vous pouvez penser que les processus qui prennent place dans +les yeux, bouches, \oesophage, estomac et intestin de \TeX\ ont lieu les uns apr\`es +les autres. La v\'erit\'e en la mati\`ere est que des commandes ex\'ecut\'ees dans l'estomac +de \TeX\ peuvent influencer les \'etapes suivantes de la digestion. Par exemple, +quand l'estomac de \TeX\ rencontre la commande |\input| \ctsref{\input}, ses +yeux commencent \`a lire un fichier diff\'erent~; quand l'estomac de \TeX\ +rencontre une commande |\catcode| \ctsref{\catcode} sp\'ecifiant un code de +cat\'egorie pour le caract\`ere $c$, l'interpr\'etation de $c$ par la bouche de +\TeX\ s'en trouve affect\'e. Et quand l'estomac de \TeX\ rencontre une d\'efinition +de \refterm{macro}, les d\'eveloppements charg\'es dans l'\oe sophage de \TeX\ +sont eux aussi affect\'es. + +Vous pouvez comprendre comment les processus agissent les uns sur les autres +en imaginant que chaque processus avale goul\^ument le +rendu de son pr\'ed\'ecesseur d\`es qu'il devient disponible. Par +exemple, une fois que l'estomac de \TeX\ a vu le dernier caract\`ere du +nom de fichier dans une commande |\input|, \TeX\ fixe son regard +imm\'ediatement sur le premier caract\`ere du fichier d'entr\'ee indiqu\'e. + +\endconcept + +%\pagebreak +\conceptindex{arguments} +\concept argument + +^^{commandes//arguments de} +Un \defterm{argument} contient le texte pass\'e \`a une +\refterm{commande}. +Les arguments d'une commande compl\`etent la description de ce que +la commande est suppos\'ee faire. +La commande peut \^etre soit une commande \refterm{primitive}, soit une +\refterm{macro}. + +Chaque commande primitive ^^{primitive//commande} +a sa propre convention sur la forme de ses +arguments. Par exemple, la suite de \refterm{tokens:token}~: + +\csdisplay +\hskip 3pc plus 1em +| +consiste en la commande `|\hskip|' et les arguments +`|3pc plus 1em|'. Mais si vous \'ecrivez~: + +\csdisplay +\count11 3pc plus 1em +| +vous obtiendrez un effet enti\`erement diff\'erent. +\TeX\ traitera `|\count11|' comme une commande avec un argument `|3|', +suivi par les tokens de texte ordinaire `|pc plus 1em|' +(parce que les registres de compteur attendent l'affectation d'un nombre)% +---probablement pas ce dont vous aviez +intention. L'effet de la commande, donc, sera d'assigner +$3$ au registre du compteur $11$ (voir la discussion sur ^|\count|, +\xref\count). + +Les macros, d'un autre cot\'e, suivent toutes la m\^eme convention +pour leurs arguments. +^^{macros//arguments de} +Chaque argument pass\'e \`a une macro +correspond \`a un \refterm{param\`etre} +^^{param\`etres//et arguments} +dans la d\'efinition de cette +macro. ^^{macros//param\`etres de} +Un param\`etre de macro est soit ``d\'elimit\'e'', soit ``non d\'elimite''. +La d\'efinition de la macro d\'etermine le nombre et la nature des param\`etres de la macro +et donc le nombre et la nature des arguments de la macro. + +La diff\'erence entre un argument d\'elimit\'e et un argument non d\'elimit\'e tient +\`a la fa\c con qu'a \TeX\ de d\'ecider o\`u se termine l'argument. +^^{arguments d\'elimit\'es} +^^{arguments non d\'elimit\'es} +\ulist +\li Un argument d\'elimit\'e est constitu\'e des tokens \`a partir du d\'ebut de +l'argument jusqu'\`a, mais sans l'inclure, la suite de tokens particuliers +qui servent comme d\'elimiteur pour cet argument. Le d\'elimiteur est sp\'ecifi\'e +dans la d\'efinition de la macro. Ainsi, vous ajoutez un argument d\'elimit\'e \`a +une macro en \'ecrivant l'argument lui-m\^eme, suivi par le d\'elimiteur. Un +argument d\'elimit\'e peut \^etre vide, c'est-\`a-dire, ne pas avoir de texte du +tout. Chaque accolade d'un argument d\'elimit\'e doit \^etre appair\'e +correctement, c'est-\`a-dire, chaque accolade gauche doit avoir une accolade +droite correspondante et vice versa. + +\li Un argument non d\'elimit\'e consiste en un token simple ou une suite de +tokens entour\'e d'accolades, comme ceci~: +`|{Here is {the} text.}|'. Malgr\'e les apparences, les accolades ext\'erieures +ne forment pas un \refterm{groupe}---\TeX\ ne les utilise que pour +d\'eterminer quel est l'argument. Chaque accolade interne, comme celles autour +de `|the|', doivent \^etre appair\'ees correctement. Si vous faites une erreur +et mettez trop d'accolades fermantes, \TeX\ se plaindra d'un `unexpected right brace' +\TeX\ se plaindra aussi si vous mettez trop d'accolades ouvrantes, mais vous +obtiendrez \emph{cette} plainte longtemps apr\`es l'endroit o\`u vous pensiez +finir l'argument (voir \xref{mismatched}). +\endulist +\noindent +Voir \conceptcit{macro} pour plus d'information sur les param\`etres et les +arguments. Vous trouverez les r\`egles pr\'ecises concernant les arguments +d\'elimit\'es et non d\'elimit\'es dans \knuth{pages~203--204}{237--239}. +\endconcept + + +\concept {ASCII} + +\defterm{\ascii} est l'abr\'eviation de ``American Standard Code for +Information Interchange''. Il y a $256$ ^{caract\`eres} \ascii, chacun avec +son propre num\'ero de code, mais seuls les~$128$ premiers +ont \'et\'e standardis\'es. Vous pouvez trouver leur signification dans une ``table +de codes'' \ascii\ comme celle de la \knuth{page~367}{425}. +Les caract\`eres $32$--$126$ sont des ``caract\`eres imprimables'', +^^{caract\`eres imprimables} comme les lettres, les chiffres et les signes de +ponctuation. Les caract\`eres restants sont des ``^{caract\`eres de contr\^ole}'' +qui sont utilis\'es sp\'ecialement (dans l'industrie informatique, pas dans \TeX) +pour contr\^oler les entr\'ees\slash sorties et les instruments de communication +de donn\'ees. +Par exemple, le code \ascii\ $84$ correspond \`a la lettre `T', tandis que +le code \ascii\ $12$ correspond \`a la fonction ``form feed'' +(interpr\'et\'e par la plupart des imprimantes par ``commence une nouvelle page''). +Bien que le standard \ascii\ sp\'ecifie des significations pour les caract\`eres de +contr\^ole, beaucoup de fabricants d'\'equipements tels que modems et imprimantes +ont utilis\'e les caract\`eres de contr\^ole pour des usages autres que le standard. + +La signification d'un caract\`ere dans \TeX\ est normalement li\'ee \`a sa signification +dans le standard \ascii, et les \refterm{polices:police} qui contiennent +des caract\`eres imprimables \ascii\ ont normalement ces caract\`eres aux m\^emes +positions que leurs contreparties \ascii. +Mais certaines polices, notamment celles utilis\'ees en math\'ematique, remplacent +les caract\`eres imprimables \ascii\ par d'autres caract\`eres sans aucune relation +avec les caract\`eres \ascii. +Par exemple, La police Computer Modern math\'ematique +^^{police Computer Modern} +|cmsy10| a le symbole math\'ematique +`{$\forall$}' \`a la place du chiffre \ascii\ `8'. + + +\endconcept + +\conceptindex{assignements} +\concept assignement + +Un \defterm{assignement} est une construction qui dit \`a \TeX\ d'assigner une +valeur \`a un registre, +^^{registres//assignement \`a des} +\`a un de ces +\refterm{param\`etres:param\`etre} internes, +^^{param\`etres//assignements \`a des} +\`a une entr\'ee dans une de ces tables internes +ou \`a une \refterm{s\'equence de contr\^ole}. Quelques exemples d'assignements sont~: + +\csdisplay +\tolerance = 2000 +\advance\count12 by 17 +\lineskip = 4pt plus 2pt +\everycr = {\hskip 3pt \relax} +\catcode\`@ = 11 +\let\graf = \par +\font\myfont = cmbx12 +| + +Le premier assignement indique que \TeX\ doit assigner la valeur num\'e\-rique +|2000| au param\`etre num\'erique |\tolerance|, c'est-\`a-dire, met la valeur de +|\tolerance| \`a $2000$. Les autres assignements sont similaires. Le `|=|' +et les espaces sont optionnels, donc vous pouvez aussi \'ecrire le premier +assignement plus bri\`evement~: + +\csdisplay +\tolerance2000 +| + +Voir \knuth{pages~276--277}{321--322} pour la syntaxe d\'etaill\'ee des assignements. +\endconcept + + +\conceptindex{\boites} +\concept {\boites} + +Une \defterm{bo\^\i te} est un rectangle de mati\`ere \`a composer. Un simple +\refterm{caract\`ere} est une bo\^\i te par lui-m\^eme, et une page enti\`ere est +aussi une bo\^\i te. \TeX\ forme une page comme une suite de bo\^\i tes contenant +des bo\^\i tes contenant des bo\^\i tes. La bo\^\i te sup\'erieure est la page elle-m\^eme, +les bo\^\i tes inf\'erieures sont souvent de simples caract\`eres et de simples +lignes sont des bo\^\i tes qui sont quelque part au milieu. + +\TeX\ effectue la plupart de ses activit\'es de construction de bo\^\i te implicitement quand il +construit des paragraphes et des pages. +Vous pouvez construire des bo\^\i tes explicitement +en utilisant nombre de \refterm{commandes} de \TeX, notamment +^|\hbox| \ctsref{\hbox}, +^|\vbox| \ctsref{\vbox} et +^|\vtop| \ctsref{\vtop}. +La commande ^|\hbox| +construit une bo\^\i te en assemblant des plus petites bo\^\i tes horizontalement de gauche \`a droite~; +il op\`ere sur une \refterm{liste horizontale} et donne +une \refterm{hbox} ^^{hbox} (bo\^\i te horizontale). +^^{listes horizontales} +Les commandes ^|\vbox| et |\vtop| +construisent une bo\^\i te en assemblant de plus petites bo\^\i tes verticalement de haut en bas~; +^^{vbox} +elles op\`erent sur une \refterm{liste verticale} +et donnent une \refterm{vbox} ^^{vbox} (bo\^\i te verticale). +^^{listes verticales} +Ces listes horizontales et verticales peuvent ne pas inclure que des bo\^\i tes plus petites mais +plusieurs autres sortes d'entit\'es, par exemple, un \refterm{ressort} et +des cr\'enages. +^^{cr\'enages//comme \'el\'ements de liste} + +Une bo\^\i te a une \refterm{hauteur}, une \refterm{profondeur} et une \refterm{largeur}, +^^{hauteur} ^^{profondeur} ^^{largeur} +comme ceci~: +\vdisplay{\offinterlineskip\sevenrm + \halign{#&#&\kern3pt \hfil#\hfil\cr + &\hrulefill\cr + &\vrule + \vtop to .7in{\vss \hbox to .9in{\hss ligne de base\hss}\vskip4pt}% + \vrule + &\labelledheight{.7in}{hauteur}\cr + % + \vbox to 0pt{ + \vss + \hbox{point de r\'ef\'erence\hbox to 15pt{\rightarrowfill}% + \hskip3pt}% + \kern-4.5pt}&{\box\refpoint}\hrulefill\cr + % + \omit + &\vrule\hfil\vrule + &\labelledheight{.4in}{profondeur}\cr + % + &\hrulefill\cr + % + \noalign{\vskip3pt}% + &\leftarrowfill { largeur }\rightarrowfill\cr +}} + +^^{lignes de base} +La \refterm{ligne de base} est comme une des +lignes-guide claire d'un bloc de papier lign\'e. +Les bo\^\i tes de lettres telles qu'un `g' +s'\'etendent sous la ligne de base~; Les bo\^\i tes de lettres telles qu'un `h' ne le font pas. +La hauteur d'une bo\^\i te est la distance par laquelle une bo\^\i te s'\'etend au-dessus de sa +ligne de base, tandis que sa profondeur est la distance par laquelle elle s'\'etend sous sa +ligne de base. \bix^^{point de r\'ef\'erence} +Le \minref{point de r\'ef\'erence} +d'une bo\^\i te est l'endroit o\`u sa ligne de base rejoint son cot\'e gauche. + +{\tighten +\TeX\ construit une hbox $H$ d'une liste horizontale en d\'esignant un point +de r\'ef\'erence pour $H$ et en enfilant les items dans la liste $H$ un par un +de gauche \`a droite. chaque bo\^\i te de la liste est plac\'ee de telle fa\c con que +sa ligne de base co\"\i ncide avec la ligne de base de $H$\kern-2pt, c'est-\`a-% +dire que les bo\^\i tes la composant sont align\'ees horizontalement% +\footnote{Si une bo\^\i te est hauss\'ee ou baiss\'ee avec ^|\raise| ou ^|\lower|, +\TeX\ utilise son point de r\'ef\'erence avant le d\'eplacement quand il la +place.}. La hauteur de $H$ est la hauteur de la bo\^\i te la plus grande de la +liste, et la profondeur de $H$ est la profondeur de la bo\^\i te la plus +profonde de la liste. La largeur de $H$ est la somme des largeurs de tous +les items dans la liste. Si quelques-uns de ces items sont des +\refterm{ressort}s et que \TeX\ a besoin de r\'etr\'ecir ou d'\'etirer le ressort, la +largeur de $H$ sera plus large ou plus \'etroite en cons\'equence. Voir la +\knuth{page~77}{90} pour les~d\'etails. +\par} + +De m\^eme, \TeX\ construit une vbox $V$ d'une liste verticale en d\'esignant un +point de r\'ef\'erence temporaire pour $V$ et ensuite en enfilant les items dans la +liste $V$ un par un de haut en bas. Chaque bo\^\i te dans la liste est +plac\'ee de telle fa\c con que leur point de r\'ef\'erence est align\'e verticalement avec le +point de r\'ef\'erence de $V$\footnote{Si une bo\^\i te est d\'eplac\'ee \`a gauche +ou \`a droite avec +^|\moveleft| ou ^|\moveright|, \TeX\ utilise son point de r\'ef\'erence avant +le d\'eplacement quand il la place.}. Quand chaque bo\^\i te autre que la premi\`ere est ajout\'ee \`a +\Vcomma, \TeX\ met un \minref{ressort interligne} juste au-dessus d'elle. (Ce +^{ressort interligne} n'a pas d'\'equivalent pour les hbox.) La largeur de $V$ est la +largeur de la bo\^\i te la plus large de la liste, et les extensions verticales (hauteur +plus profondeur) de $V$ est la somme des \'el\'ements verticaux \'etendus de tous les +items de la liste. + +\bix^^|\vbox| +\bix^^|\vtop| +La diff\'erence entre |\vbox| et |\vtop| est sur leur fa\c con de partitionner +l'extension verticale de $V$ en hauteur et en largeur. +Le choix du point de r\'ef\'erence de $V$ d\'etermine cette partition. +\ulist +\li Pour |\vbox|, \TeX\ place le point de r\'ef\'erence sur une ligne +horizontale avec le point de r\'ef\'erence du dernier composant bo\^\i te ou trait +de \Vcomma, sauf que si la derni\`ere bo\^\i te (ou le dernier trait) est +suivie d'un ressort ou d'un cr\'enage, \TeX\ place le point de r\'ef\'erence tout en +bas de $V$% +\footnote{La profondeur est limit\'ee par le param\`etre +^|\boxmaxdepth| \ctsref{\boxmaxdepth}.}. + +\li Pour |\vtop|, \TeX\ place le point de r\'ef\'erence sur une ligne horizontale +avec le point de r\'ef\'erence du premier composant bo\^\i te ou trait de \Vcomma, +sauf que si la premi\`ere bo\^\i te (ou le premier trait) +est pr\'ec\'ed\'ee par un ressort ou un cr\'enage, \TeX\ place +le point de r\'ef\'erence tout en haut de \Vperiod. + +\endulist +\noindent +A proprement parler, alors, |\vbox| met le point de r\'ef\'erence pr\`es du haut +du vbox et |\vtop| le met pr\`es du haut. +Quand vous voulez aligner une rang\'ee de vbox pour que leur sommet +s'aligne horizontalement, +vous utiliserez normalement |\vtop| plut\^ot que |\vbox|. +Voir les \knuth{pages~78 et 80--81}{91 et 94--95} pour les +d\'etails sur comment \TeX\ construit des vbox. +\eix^^|\vbox| +\eix^^|\vtop| +\eix^^{point de r\'ef\'erence} + +Vous avez une certaine libert\'e dans la construction de bo\^\i tes. Le mat\'eriel +\`a composer +dans une bo\^\i te peut s'\'etendre au-del\`a des bords de la bo\^\i te comme il le fait +pour certaines lettres (pour la plupart italiques ou pench\'ees). Les composants +bo\^\i tes des grandes bo\^\i tes peuvent se chevaucher. +Une bo\^\i te peut avoir une largeur, une profondeur ou une hauteur n\'egative, +des bo\^\i tes comme celles-ci ne sont pas souvent utiles. + +Vous pouvez sauvegarder une bo\^\i te dans un \refterm{registre} de bo\^\i te et la rappeler plus tard. +Avant d'utiliser un registre de bo\^\i te, +^^{registres de \boite} +Vous devez la r\'eserver et lui donner un nom +avec la commande ^|\newbox| \ctsref{\@newbox}. Voir +\conceptcit{registre} pour plus d'information sur les registres de bo\^\i tes. +\endconcept + + +\conceptindex{caract\`eres} +\concept caract\`ere + +{\tighten +\TeX\ travaille avec des \defterm{caract\`eres} provenant de deux contex\-tes~: +des caract\`eres du source, quand il lit et des caract\`eres de sortie, +quand il compose. \TeX\ transforme la plupart des caract\`eres saisis dans +le caract\`ere de sortie qui lui correspond. Par exemple, il transforme +normalement la lettre saisie `|h|' en `h' compos\'e dans la police courante. +Ce n'est pas le cas, n\'eanmoins, pour un caract\`ere saisi tel que `|$|' qui +a une signification sp\'eciale. +\par} + +\TeX\ obtient ses caract\`eres saisis en les lisant \`a partir du fichier source +(ou de votre terminal) et en d\'eveloppant les \refterm{macros:macro}. Ce +sont les seuls moyens par lesquels \TeX\ puisse acqu\'erir un caract\`ere saisi. +Chaque caract\`ere d'entr\'ee a un num\'ero de code correspondant \`a sa position +dans la table de code \refterm{\ascii}. ^^{\ascii} +Par exemple, la lettre `|T|' a le code \ascii~$84$. + +Quand \TeX\ lit un caract\`ere, il lui attache un \refterm{code de cat\'egorie}. +^^{codes de cat\'egorie//attach\'e pendant l'entr\'ee} +Le code de cat\'egorie affecte la fa\c con dont \TeX\ interpr\`ete le caract\`ere +une fois qu'il a \'et\'e lu. \TeX\ d\'etermine (et se souvient) des codes de +cat\'egorie des caract\`eres d'une macro quand il lit sa d\'efinition. Comme \TeX\ +lit les caract\`eres avec ses yeux \seeconcept{\anatomy} il fait quelques +``filtrages'' comme condenser des suites de caract\`eres espace en un espace +seul. Voir les \knuth{pages~46--48}{56--59} pour les d\'etails de ce filtrage. + +Les ``^{caract\`eres de contr\^ole}'' \ascii\ ont les codes $0$--$31$ et $127$--$255$. +Ils ne sont pas visualisables ou provoquent des choses \'etranges si vous essayez +de les afficher. +N\'eanmoins, on en a parfois besoin dans les sources \TeX, donc \TeX\ a une +fa\c con sp\'eciale de les noter. +\xrdef{twocarets} +Si vous saisissez `|^^|$c$', o\`u $c$ est n'importe quel caract\`ere, vous obtenez +le caract\`ere dont le code \ascii\ est soit plus grand soit plus petit de $64$ +que le code \ascii\ de $c$. +La plus grande valeur de code acceptable en utilisant cette notation est $127$ +donc la notation n'est pas ambigu\"e. +Trois instances particu\-li\`erement communes de cette notation sont +`|^^M|' (le caract\`ere \ascii\ \asciichar{retour}), +`|^^J|' (le caract\`ere \ascii\ \asciichar{saut\ de\ page}) et +`|^^I|' (le caract\`ere \ascii\ \asciichar{tabulation\ horizontale}). +\ttidxref{^^M}\ttidxref{^^J}\ttidxref{^^I} + +{\tighten +\TeX\ a aussi une autre notation pour indiquer la valeur des codes \ascii\ +qui fonctionne pour tous les codes de caract\`ere de $0$ \`a $255$. +\xrdef{hexchars} +Si vous saisissez `|^^|$xy$', o\`u $x$ et $y$ sont des ^{chiffres +hexad\'ecimaux} `|0123456789abcdef|', vous obtenez le caract\`ere dont le +code est sp\'ecifi\'e. Des lettres minuscules sont n\'ecessaires ici. +\TeX\ opte pour l'interpr\'etation des ``chiffres hexad\'ecimaux'' quand il +a le choix, donc vous ne devez pas faire suivre un caract\`ere comme `|^^a|' +par un chiffre hexad\'ecimal minuscule---si vous le faites, vous aurez la +mauvaise interpr\'etation. +Si vous avez besoin d'utiliser cette notation, vous trouverez pratique +d'avoir une table des codes \ascii. +\par} + +Un caract\`ere de sortie est un caract\`ere de composition. +Une commande qui produit un caract\`ere de sortie signifie +``produit une \refterm{bo\^\i te} contenant un caract\`ere num\'ero $n$ dans +la \refterm{police} courante'', o\`u $n$ est d\'etermin\'e par la commande. +\TeX\ produit votre document compos\'e en combinant de telles bo\^\i tes avec +d'autres \'el\'ements typographiques et les arrange sur la page. + +Un caract\`ere d'entr\'ee dont le code de cat\'egorie est $11$ (^{lettre}) ou +$12$ (autre) +^^{autres caract\`eres} +agit comme une commande pour produire le caract\`ere de sortie correspondant. +En plus, vous pouvez demander \`a \TeX\ de produire un carac\-t\`ere $n$ en +entrant la commande `|\char |$n$' \ctsref{\char}, ^^|\char| o\`u $n$ est un +\refterm{nombre} entre $0$ et $255$. Les commandes `|h|', +|\char`h| et |\char104| ont toutes le m\^eme effet. ($104$ est le +code \ascii\ de `h'.) + +\endconcept + + +\conceptindex{caract\`eres actifs} +\concept {caract\`ere actif} + +Un \defterm{caract\`ere actif} est un \refterm{caract\`ere} poss\'edant une +d\'efinition, c'est-\`a-dire, une d\'efinition de macro, qui lui est associ\'ee. +^^{macros//nomm\'ees par des caract\`eres actifs} +Vous pouvez penser \`a un caract\`ere actif comme \`a une s\'equence de contr\^ole +d'un type sp\'ecial. Quand \TeX\ rencontre un caract\`ere actif, il ex\'ecute la +d\'efinition associ\'ee avec le caract\`ere. Si \TeX\ rencontre un caract\`ere actif +qui n'a pas de d\'efinition associ\'ee, il se plaindra d'un ``undefined control +sequence''. + +Un caract\`ere actif a un \refterm{code de cat\'egorie} \`a $13$ (la valeur +d'^|\active|). +Pour d\'efinir un caract\`ere actif, vous devez d'abord +utiliser la commande ^|\catcode| +\ctsref{\catcode} pour le rendre actif +et ensuite donner la d\'efini\-tion du caract\`ere, en utilisant +une commande comme |\def|, |\let| ou |\chardef|. +La d\'efinition d'un caract\`ere actif a la m\^eme forme que +la d\'efinition d'une \refterm{s\'equence de contr\^ole}. +^^{codes de cat\'egorie//de caract\`eres actifs} +Si vous essayez de d\'efinir la macro pour un caract\`ere actif +avant d'avoir rendu le caract\`ere actif, \TeX\ se plaindra d'un +"missing control sequence". + +Par exemple, le caract\`ere tilde (|~|) est d\'efini comme un caract\`ere +actif dans \plainTeX. Il +produit un espace entre deux mots mais relie ces mots pour que +\TeX\ ne transforme pas cet espace en \refterm{coupure de ligne}. +\refterm{\PlainTeX:\plainTeX} d\'efinit `|~|' par les commandes~: + +\csdisplay +\catcode `~ = \active \def~{\penalty10000\!visiblespace} +| +(|\penalty| inhibe une coupure de ligne et `|\!visiblespace|' +ins\`ere un espace.) +\endconcept + + +\concept {caract\`ere d'\'echappement} + +Un \defterm{caract\`ere d'\'echappement} introduit une s\'equence de contr\^ole. +Le caract\`ere d'\'echappement dans \refterm{\plainTeX} est l'antislash (|\|). +\indexchar \ +Vous pouvez changer le caract\`ere d'\'echappement de $c_1$ vers $c_2$ +en r\'eassignant les codes de cat\'egorie de $c_1$ et $c_2$ +avec la commande ^|\catcode| \ctsref{\catcode}. +Vous pouvez aussi d\'efinir des caract\`eres d'\'echap\-pement additionnels de la m\^eme fa\c con. +Si vous voulez composer du mat\'e\-riel contenant des caract\`eres d'\'echappement litt\'eraux, +vous devez +soit +(a) d\'efinir une s\'equence de contr\^ole qui transforme le caract\`ere d'\'echap\-pe\-ment imprim\'e soit +(b) changer temporairement son code de cat\'egorie, en utilisant la +m\'ethode montr\'ee en \xrefpg{verbatim}. La d\'efinition~: + +\csdisplay +\def\\{$\backslash$} +| +est un moyen de cr\'eer une s\'equence de contr\^ole qui le transforme en `$\backslash$' +(un antislash compos\'e dans une police math\'ematique). + +Vous pouvez utiliser le param\`etre ^|\escapechar| \ctsref{\escapechar} pour sp\'ecifier +comment le caract\`ere de contr\^ole est repr\'esent\'e dans des s\'equences de contr\^ole +synth\'etis\'ees, +c'est-\`a-dire, celles cr\'e\'ees par |\string| et |\message|. + + +\endconcept + + +\concept {c\'esure} + +\TeX\ c\'esure les mots automatiquement en compilant votre document. +\TeX\ n'est pas un acharn\'e de l'insertion de c\'esure, pr\'ef\'erant trouver \`a la +place une bonne coupure de ligne en ajustant l'espace entre les mots et en +d\'epla\c cant les mots d'une ligne \`a l'autre. +\TeX\ est assez intelligent pour comprendre les c\'esures qui sont d\'ej\`a dans +les mots + +Vous pouvez contr\^oler les c\'esures de \TeX\ de plusieurs fa\c cons~: +\ulist +\li Vous pouvez dire \`a \TeX\ d'autoriser une c\'esure \`a un endroit particulier +en ins\'erant une c\'esure optionnelle +^^{c\'esures optionnelles} +avec la commande ^|\-| \ctsref{\@minus}. +\li Vous pouvez dire \`a \TeX\ comment couper des mots particuliers dans votre +document avec la commande ^|\hyphenation| \ctsref{\hyphenation}. +\li Vous pouvez englober un mot dans une \refterm{hbox} pour emp\^echer \TeX\ +de le couper. +\li Vous pouvez fixer la valeur des p\'enalit\'es comme avec |\hyphen!-pe!-nalty| +\ctsref\hyphenpenalty. +\endulist +\noindent Si un mot contient une c\'esure explicite ou optionnelle, +\TeX\ ne le coupera jamais ailleurs. +\endconcept + + +\concept classe + +La \defterm{classe} d'un \refterm{caract\`ere} sp\'ecifie le r\^ole de ce caract\`ere +dans les formules math\'ematiques. La classe d'un caract\`ere est encod\'ee dans son +\refterm{mathcode}. ^^{mathcodes//classe encod\'ee en} Par exemple, le +signe \'egal `|=|' est dans la classe $3$ (Relation). \TeX\ utilise sa +connaissance de classe de caract\`ere pour d\'ecider combien d'espace mettre +entre diff\'erents composants d'une formule math\'ematique. \margin{clarifying +material added} Par exemple, voici une formule math\'ematique affich\'ee comme +\TeX\ l'im\-prime normalement et avec la classe de chaque caract\`ere modifi\'e +al\'eatoi\-rement~: +$$\strut a+(b-a)=a \qquad + \mathopen{a}\mathord{+}\mathrel{(}\mathclose{b}\mathclose{-} + \mathop{a}\mathopen{)}\mathord{=}\mathopen{a}$$ + +Voir \xrefpg\mathord\ de ce livre pour une liste des classes et la +\knuth{page~154}{180} pour leurs significations. + +\endconcept + + +\conceptindex{codes de cat\'egorie} +\concept {codes de cat\'egorie} + +Le \defterm{code de cat\'egorie} d'un \refterm{caract\`ere} d\'etermine le r\^ole +de ce caract\`ere dans \TeX. +^^{caract\`eres//code de cat\'egorie} +Par exemple, \TeX\ assigne un certain r\^ole aux +lettres, un autre au caract\`ere espace, et ainsi de suite. \TeX\ attache un +code \`a chaque caract\`ere qu'il lit. Quand \TeX\ lit la +lettre `|r|', par exemple, il lui attache normalement +le code de cat\'egorie $11$ (lettre). +Pour de simples applications \TeX\ vous n'avez pas \`a vous pr\'eoccuper des +codes de cat\'egorie, mais ils deviennent importants quand vous essayez +des effets sp\'eciaux. + +Les codes de cat\'egorie ne s'appliquent qu'aux caract\`eres que \TeX\ lit dans les +fichiers source. Une fois qu'un caract\`ere a pass\'e l'^{\oesophage} de \TeX\ +\seeconcept{\anatomy} et a \'et\'e interpr\'et\'e, son code de cat\'egorie ne +sert plus. Un caract\`ere que vous produisez avec la commande ^|\char| +\ctsref{\char} n'a pas de code de cat\'egorie parce que |\char| +est une instruction pour que \TeX\ produise un certain caract\`ere d'une +certaine \refterm{police}. Par exemple, le code ^{\ascii} pour `|\|' +(le caract\`ere d'\'echappement usuel) est $92$. Si +vous saisissez `|\char92 grok|', Ce n'est \emph{pas} \'equivalent \`a |\grok|. +\`a la place il demande \`a \TeX\ de +composer `$c$grok', o\`u $c$ est le caract\`ere en position $92$ +de la table de code de la police courante. + +Vous pouvez utiliser la commande ^|\catcode| \ctsref{\catcode} pour r\'eassigner le +code de cat\'egorie de tout caract\`ere. En changeant les code de cat\'egorie vous +pouvez changer les r\^oles de caract\`eres vari\'es. Par exemple, si vous saisissez +`|\catcode`\@ = 11|', le code de cat\'egorie du signe arrose (|@|) sera celui +d'une ``lettre''. Vous pourrez alors avoir `|@|' dans le nom d'une s\'equence de +contr\^ole. + +Voici une liste des codes de cat\'egorie tels qu'ils sont d\'efinis dans +\refterm{\plainTeX} (voir \xref{twocarets} pour une explication de la +notation |^^|), +ainsi que les caract\`eres de chaque cat\'egorie~: + +\xrdef{catcodes} +\vskip\abovedisplayskip +%k \vskip 0pt plus 2pt % to fix bad page break +{%k \interlinepenalty = 10000 +\halign{\indent\hfil\strut#&\qquad#\hfil\cr +\it Code&\it Signification\cr +\noalign{\vskip\tinyskipamount} +0&Caract\`ere d'\'echappement \quad |\| ^^{caract\`ere d'\'echappement//code de cat\'egorie} + {\recat!ttidxref[\//code de cat\'egorie]] + \cr +1&D\'ebut d'un groupe \quad |{| ^^{groupes} + {\recat!ttidxref[{//code de cat\'egorie]] + \cr +2&Fin d'un groupe \quad |}| + {\recat!ttidxref[}//code de cat\'egorie]] + \cr +3&basculement en math\'ematique \quad |$| ^^{basculement en math\'ematique} + {\recat!ttidxref[$//code de cat\'egorie]] + \cr +4&Alignement tab \quad |&| ^^{tabulations} ^^{alignements//caract\`ere tabulation pour} + \ttidxref{&//code de cat\'egorie} \cr +5&Fin d'une ligne \quad |^^M| \tequiv \ascii\ \asciichar{retour chariot} + ^^{fin de ligne} \ttidxref{^^M//code de cat\'egorie}\cr +6&Param\`etre de macro \quad |#| + ^^{macros//param\`etres de} + ^^{param\`etres//indiqu\'es par \b\tt\#\e} + \ttidxref{#//code de cat\'egorie} \cr +7&Exposant \quad |^| et |^^K| ^^{exposants} + \ttidxref{^^K} + \ttidxref{^//code de cat\'egorie} \cr +8&Indice \quad |_| et |^^A| ^^{indices} + \ttidxref{^^A} + \ttidxref{_//code de cat\'egorie} \cr +9&caract\`ere ignor\'e \quad |^^@| \tequiv \ascii\ \asciichar{nul} + ^^{caract\`eres ignor\'es} \indexchar ^^@ \cr +10&Espace \quad \visiblespace\ et |^^I| \tequiv \ascii\ + \asciichar{tabulation} + ^^{tabulation horizontale} + ^^{caract\`eres espaces//code de cat\'egorie} \indexchar ^^I + {\recat!ttidxref[ ]] + \cr +11&Lettre \quad |A| \dots |Z| et |a| \dots |z| ^^{lettre}\cr +12&Autres caract\`eres \quad (tout ce qui n'est pas ci-dessus ou ci-dessous) + ^^{autres caract\`eres}\cr +13&Caract\`ere actif \quad |~| et |^^L| \tequiv\ascii\ \asciichar{saut\ de\ page} + ^^{caract\`eres actifs} ^^{retour chariot} \indexchar ~ \indexchar ^^L \cr +14&Caract\`ere de commentaire \quad |%| ^^{commentaires} + {\recat!ttidxref[%//code de cat\'egorie]] + \cr +15&Caract\`ere invalide \quad |^^?| \tequiv \ascii\ \asciichar{suppression} + ^^{caract\`eres invalides} \indexchar ^^? \cr +}} +\vskip\belowdisplayskip +%k \vskip 0pt plus 2pt % to fix bad page break + +\noindent Mise \`a part ceux des cat\'egories $11$--$13$, +tous les caract\`eres d'une cat\'egorie particuli\`ere produisent le m\^eme effet. +\margin{Misleading material removed.} +Par exemple, supposez +que vous saisissiez~: +\csdisplay +\catcode`\[ = 1 \catcode`\] = 2 +| +Alors les caract\`eres crochets droits et gauches deviennent \'equivalents aux caract\`eres de +d\'ebut et de fin d'un groupe, les caract\`eres accolades droites et gauches. +Avec ces d\'efinitions `|[a b]|' +est un groupe valide, ainsi que \hbox{`|[a b}|'} et~\hbox{`|{a b]|'}. + +Les caract\`eres des cat\'egories $11$ (lettre) et $12$ +(autres caract\`eres) agis\-sent comme des \refterm{commandes:commande} +qui signifient +``produit une \refterm{bo\^\i te} contenant ce caract\`ere +compos\'e dans la police courante''. +La seule distinction entre les lettres et les ``autres'' caract\`eres est +que les lettres peuvent appara\^\i tre dans des \refterm{mots de contr\^ole} mais +pas les ``autres'' caract\`eres. + +Un caract\`ere de cat\'egorie $13$ (actif) agit comme une s\'equence de contr\^o\-le +\`a lui tout seul. \TeX\ se plaint s'il rencontre un caract\`ere actif qui n'est +pas associ\'e avec une d\'efinition. +^^{caract\`eres actifs} + +Si \TeX\ rencontre un caract\`ere invalide ^^{caract\`eres invalides} (cat\'egorie $15$) +dans votre source, il s'en plaindra. + +Les caract\`eres `|^^K|' et `|^^A|' ont \'et\'e inclus dans les cat\'egories +$8$ (indice) et $9$ (exposant), m\^eme si ces significations +ne suivent pas l'interpr\'etation du standard \refterm{\ascii}. +C'est parce que certains claviers, tout du moins certains \`a +l'universit\'e de Stanford d'o\`u \TeX\ est originaire, n'ont pas +de touche fl\`eche vers le bas et fl\`eche vers le haut qui g\'en\`erent ces caract\`eres. +\ttidxref{^^A} +\ttidxref{^^K} + +Il y a une subtilit\'e sur la fa\c con dont \TeX\ assigne les codes de cat\'egories +qui peut vous d\'eboussoler si vous ne la connaissez pas. \TeX\ a parfois +besoin de rechercher un caract\`ere deux fois quand il fait un survol initial~: +la premi\`ere fois pour la fin d'une pr\'ec\'edente construction, c'est-\`a-dire, +une s\'equence de contr\^ole et ensuite pour transformer ce caract\`ere en token. +\TeX\ n'a pas besoin d'assigner le code de cat\'egorie avant d'avoir vu le +\emph{second} caract\`ere. Par exemple~: + +\csdisplay +\def\foo{\catcode`\$ = 11 }% Make $ be a letter. +\foo$ % Produces a `$'. +\foo$ % Undefined control sequence `foo$'. +| +\noindent +Ce bout de code \TeX\ produit `\$' dans la sortie. Quand \TeX\ voit le +`|$|' sur la seconde ligne, il recherche la fin du nom d'une s\'equence de +contr\^ole. Puisque le `|$|' n'est pas encore une lettre, il marque la fin de +`|\foo|'. Ensuite, \TeX\ d\'eveloppe la macro `|\foo|' et change le code de +cat\'egorie de `|$|' en $11$ (lettre). Alors, \TeX\ lit le `|$|' ``pour de +vrai''. Puisque `|$|' est maintenant une lettre, \TeX\ produit une bo\^\i te +contenant le caract\`ere `|$|' de la police courante. Quand \TeX\ voit la +troisi\`eme ligne, il traite `|$|' comme une lettre et donc consid\`ere qu'elle +fait partie du nom de la s\'equence de contr\^ole. Avec comme r\'esultat qu'il se +plaint d'un ``undefined control sequence |\foo$|''. + +\TeX\ se comporte de cette fa\c con m\^eme lorsque le caract\`ere de +terminaison est une fin de ligne. Par exemple, supposez que la macro +|\fum| active le caract\`ere de fin de ligne. Alors si |\fum| +appara\^\i t sur une ligne $\ell$ elle-m\^eme, \TeX\ interpr\'etera +d'abord la fin de la ligne $\ell$ comme la fin de la s\'equence de +contr\^ole |\fum| et ensuite \emph{r\'einterpr\'etera} la fin de la +ligne de $\ell$ comme un caract\`ere actif. + +\endconcept + + +\conceptindex{commandes} +\concept commande + +Une \defterm{commande} demande \`a \TeX\ de faire une certaine action. +Chaque \refterm{token} qui atteint l'estomac de \TeX\seeconcept{\anatomy} +agit comme une commande, sauf celui qui fait partie des arguments d'une +autre commande (voir dessous). +^^{tokens//comme commandes} +Une commande peut \^etre appel\'ee par une +\refterm{s\'equence de contr\^ole}, par un \refterm{caract\`ere actif} ou par un +caract\`ere ordinaire. Il peut sembler bizarre que \TeX\ traite un carac\-t\`ere +ordinaire comme une commande, mais en fait c'est ce qu'il fait~: +Quand \TeX\ voit +un caract\`ere ordinaire +il construit une \refterm{bo\^\i te} contenant ce caract\`ere compos\'e dans +la police courante. + +Une commande peut avoir des arguments. +Les arguments d'une commande sont de simples tokens ou +groupes de tokens qui compl\`etent la description de ce que +la commande est suppos\'ee faire. +Par exemple, la commande `|\vskip 1in|' demande \`a \TeX\ de sauter +$1$ pouce verticalement. Elle a un argument `|1in|', +qui est constitu\'e de trois tokens. +La description de ce que |\vskip| est suppos\'ee faire serait incompl\`ete +sans sp\'ecifier de combien elle est suppos\'ee sauter. +Les tokens dans les arguments d'une commande ne sont pas consid\'er\'es +eux-m\^emes comme des commandes. + +Quelques exemples de diff\'erentes sortes de commandes de \TeX\ sont~: +\ulist\compact +\li Des caract\`eres ordinaires, comme `|W|', qui demande \`a \TeX\ +de produire une bo\^\i te contenant un `W' compos\'e. +\li Des commandes de modification de police, +telles que |\bf|, qui commence une composition en gras +\li Des accents, tels que |\`|, qui produit un accent grave comme dans `\`e' +\li Des symboles sp\'eciaux et des ligatures, comme |\P| (\P) et |\ae| (\ae) +\li Des param\`etres, tels que |\parskip|, le montant du ressort que +\TeX\ met entre les paragraphes +\li des symboles math\'ematiques, tels que |\alpha| ($\alpha$) et |\in| ($\in$) +\li Des op\'erateurs math\'ematiques, tels que |\over|, qui produit une fraction +\endulist +\endconcept + + +\concept {constantes d\'ecimales} + +See \conceptcit{nombre}. +\endconcept + +\concept {construction de page} + +Voir \conceptcit{page}. +\endconcept + + +\conceptindex{coupures de ligne} +\concept {coupure de ligne} + +Une \defterm{coupure de ligne} est un endroit dans votre document o\`u \TeX\ +termine une ligne quand il compose un paragraphe. Quand \TeX\ compile votre +document, il collecte le contenu de chaque paragraphe dans une \refterm{liste +horizontale}. Quand il a collect\'e un paragraphe entier, il analyse la liste +pour trouver ce qu'il consid\`ere comme \'etant les meilleures coupures de ligne +possibles. \TeX\ associe des ``^{d\'em\'erites}'' avec diff\'erents sympt\^omes de +coupure de ligne non attractive---des lignes ayant trop ou trop peu d'espace +entre les mots, des lignes cons\'ecutives se terminant par des c\'esures, et +ainsi de suite. Il choisit alors les coupures de lignes de mani\`ere \`a minimiser +le nombre total de d\'em\'erites. Voir les \knuth{pages~96--101}{112--118} pour une +description compl\`ete des r\`egles de coupure de ligne de \TeX. + +Vous pouvez contr\^oler le choix des coupures de ligne de \TeX\ de plusieurs mani\`eres~: +\ulist + +\li vous pouvez ins\'erer une \refterm{p\'enalit\'e} (\xref{hpenalty}) quelque part +dans la liste horizontale que \TeX\ construit quand il forme un paragraphe. +^^{p\'enalit\'es//en listes horizontales} +Une p\'enalit\'e +positive d\'ecourage \TeX\ de couper la ligne \`a cet endroit, tandis qu'une +p\'enalit\'e n\'egative---un bonus, en quelque sorte---encourage \TeX\ \`a couper +la ligne \`a cet endroit. Une p\'enalit\'e de $10000$ ou plus emp\^eche une coupure de +ligne, tandis qu'une p\'enalit\'e de $-10000$ ou moins force une coupure de ligne. +Vous pouvez obtenir les m\^emes effets avec les commandes ^|\break| et +^|\nobreak| (voir \pp\xrefn{hbreak} et~\xrefn{hnobreak}). + +\li Vous pouvez dire \`a \TeX\ d'autoriser une c\'esure \`a un endroit particulier +en ins\'erant une c\'esure optionnelle +^^{c\'esures optionnelles} +avec la commande |\-| \ctsref{\@minus}, ou +sinon en contr\^olant comment \TeX\ met des c\'esures dans votre document \seeconcept +{c\'esure}. +^^|\-//sur une coupure de ligne| + +\li Vous pouvez dire \`a \TeX\ d'autoriser une coupure de ligne apr\`es un +(/) ^{slash} entre +deux mots en ins\'erant un ^|\slash| \ctsref{\slash} +entre eux, par exemple, `|fur!-longs\slash fortnight|'. + +\li Vous pouvez dire \`a \TeX\ de ne pas couper une ligne entre deux mots particuliers en +ins\'erant une ^{punaise} (|~|) entre ces mots. +^^|~//sur une coupure de ligne| + +\li Vous pouvez ajuster les p\'enalit\'es associ\'ees avec les coupures de ligne en +assignant des valeurs diff\'erentes aux \refterm{param\`etres:param\`etre} de coupures de ligne de \TeX. + +\li Vous pouvez englober un mot ou une s\'equence de mots dans une \refterm{hbox}, +emp\^echant ainsi \TeX\ de couper la ligne o\`u que cela soit dans l'hbox. +^^{hbox//contr\^oler des coupures de lignes} +\endulist + +Il est pratique de savoir o\`u \TeX\ peut couper une ligne~: +\ulist +\li sur un ressort, sous r\'eserve que~: +\olist +\li l'objet pr\'ec\'edant le ressort est un des suivants~: +une bo\^\i te, un objet optionnel (par exemple, une c\'esure optionnelle), +la fin d'une formule math\'ematique, +un \'el\'ement extraordinaire, +ou du mat\'eriel vertical produit par |\mark|, |\vadjust| +ou |\insert| +\li Le ressort ne fait pas partie d'une formule math\'ematique +\endolist +\noindent +Quand \TeX\ coupe une ligne sur un ressort, il fait la coupure du cot\'e gauche +de l'espace du ressort et oublie le reste du ressort. +\li sur un cr\'enage qui est imm\'ediatement suivi par un ressort, +\`a condition que ce cr\'enage ne soit pas dans une formule math\'ematique +\li \`a la fin d'une formule math\'ematique qui est imm\'ediatement suivie par un ressort +\li sur une p\'enalit\'e, m\^eme dans une formule math\'ematique +\li sur une c\'esure optionnelle +\endulist +Quand \TeX\ coupe une ligne, il efface toute s\'equence de ressort, cr\'enage et +p\'enalit\'e qui suivent le point de coupure. +Si une telle s\'equence est suivie par le d\'ebut d'une formule math\'ematique, il +efface aussi tout cr\'enage produit au d\'ebut de la formule. +\endconcept + + +\conceptindex{coupures de page} +\concept {coupure de page} + +Une \defterm{coupure de page} est un endroit dans votre document o\`u \TeX\ +termine une page et (sauf \`a la fin du document) en commence une nouvelle. +Voir \conceptcit{page} pour le processus que \TeX\ traverse pour choisir +une coupure de page. + +Vous pouvez contr\^oler le choix de coupure de page de \TeX\ de plusieurs fa\c cons~: +\ulist +\li Vous pouvez ins\'erer une p\'enalit\'e (\xref{vpenalty}) +^^{p\'enalit\'es//en listes verticales} +entre deux \'el\'ements de la liste verticale principale. Une p\'enalit\'e positive +d\'ecourage \TeX\ de couper la page \`a cet endroit, tandis qu'une p\'enalit\'e +n\'egative---un bonus, autrement dit---% +encourage \TeX\ de couper la page \`a cet endroit. Une p\'enalit\'e de $10000$ +ou plus pr\'evient une coupure de page, tandis qu'une p\'enalit\'e de $-10000$ ou +moins force une coupure de page. Vous pouvez obtenir le m\^eme effet avec les +commandes |\break| et |\nobreak| \ctsref{vbreak}. + +\li Vous pouvez ajuster les p\'enalit\'es associ\'ees aux coupures de page +en assignant diff\'erentes valeurs aux \refterm{param\`etres:param\`etre} de +coupure de page de \TeX. + +\li Vous pouvez englober une suite de paragraphes ou autres \'el\'ements dans +la liste verticale principale avec une \refterm{vbox}, ceci emp\^eche \TeX\ de +couper la page n'importe o\`u dans la suite. +\endulist + +Une fois que \TeX\ a choisi une coupure de page, il place la portion +de la liste verticale principale qui pr\'ec\`ede la coupure en |\box255|. +Il appelle alors la \refterm{routine de sortie} courante pour ex\'ecuter |\box255| +et \'eventuellement envoyer son contenu dans le \dvifile. +^^{\dvifile//mat\'eriel de la routine de sortie} +La routine de sortie doit aussi inclure des \refterm{insertions}, telles +que des notes de pied de page, que \TeX\ a accumul\'e en ex\'ecutant la page. + +Il est utile de conna\^\i tre les endroits o\`u \TeX\ peut couper une page~: +\ulist +\li Sur le ressort, \`a condition que l'\'el\'ement pr\'ec\'edent le ressort soit +une bo\^\i te, un \'el\'ement extraordinaire, une marque ou une insertion. +Quand \TeX\ coupe une page sur un ressort, il fait la coupure devant +l'espace du ressort et oublie le reste du ressort. +\li Sur un cr\'enage qui est imm\'ediatement suivi par un ressort. +\li Sur une p\'enalit\'e, vraisemblablement entre les lignes d'un paragraphe. +\endulist +Quand \TeX\ coupe une page, il efface toute s\'equence de ressort, cr\'enages et \'el\'ements +de p\'enalit\'e qui suivent le point de coupure. + + +\endconcept + + +\conceptindex{cr\'enages} +\concept cr\'enage + +^^{espacement//ajuster avec des cr\'enages} +Un \defterm{cr\'enage} indique un changement de l'espacement normal entre +les \'el\'ements d'une liste horizontale ou verticale. +Un cr\'enage peut \^etre soit positif, soit n\'egatif. En +mettant un cr\'enage positif entre deux \'el\'ements, vous les \'eloignez du +montant du cr\'enage. en mettant un cr\'enage positif entre deux \'el\'ements, +vous les rapprochez du montant du cr\'enage. Par exemple, ce texte~: +\csdisplay +11\quad 1\kern1pt 1\quad 1\kern-.75pt 1 +| +produit des paires de lettres qui ressemblent \`a ceci~: +\display{11\quad 1\kern1pt 1\quad 1\kern-.75pt 1} +Vous pouvez utiliser des cr\'enages en mode vertical pour ajuster l'espace +entre des paires de lignes particuli\`eres. + +Un cr\'enage de taille $d$ est tr\`es similaire \`a un \'el\'ement \refterm{ressort} +qui a une taille $d$ sans \'etirement ni r\'etr\'ecissement. Le cr\'enage et le ressort +ins\`erent ou enl\`event de l'espace entre deux \'el\'ements voisins. La diff\'erence +essentielle est que \TeX\ consid\`ere deux bo\^\i tes n'ayant qu'un cr\'enage entre +elles comme \'etant li\'ees. Cela fait que, \TeX\ ne coupe pas une ligne ou une +page sur un cr\'enage sauf si le cr\'enage est imm\'ediatement suivi d'un ressort. +Garder cette diff\'erence \`a l'esprit quand vous choisissez d'utiliser un +cr\'enage ou un \'el\'ement ressort pour un usage particulier. + +\TeX\ ins\`ere automatiquement des cr\'enages entre des paires particuli\`eres de +lettres adjacentes, ajustant ainsi l'espace entre ces lettres et mettant en +valeur l'apparence de votre document compos\'e. +Par exemple, la police Computer Modern romaine de $10$ points contient un +cr\'enage pour la paire `To' qui remet le cot\'e gauche du `o' sous le `T'. +Sans le cr\'enage, vous obtiendriez \hbox{``T{o}p''} au lieu de ``Top''--- +la diff\'erence est l\'eg\`ere mais visible. +Le fichier de m\'etrique +(^{\tfmfile}) +de chaque \refterm{police} sp\'ecifie le placement et la taille des cr\'enages +que \TeX\ ins\`ere automatiquement quand il met du texte dans cette~police. +\margin{paragraph deleted to save space; most of the material was +already in this section.} + +\endconcept + + +\conceptindex{dimensions} +\concept dimension + +Une \defterm{dimension} sp\'ecifie une distance, c'est, une mesure lin\'eaire +d'espace. Vous utilisez des dimensions pour sp\'ecifier des tailles de choses, comme les grandeurs +d'une ligne. Les imprimeurs dans les pays de langue Anglaise mesurent traditionnellement +les distances en points et en picas, tandis que les imprimeurs d'Europe continentale +mesurent traditionnellement les distances en points Didot et en ciceros. +Vous pouvez utiliser ces mesures ou d'autres, comme les pouces, qui peuvent +vous \^etre plus familier. Les ^{unit\'es de mesure} ind\'ependantes des polices +que \TeX\ comprend sont~: + +\xrdef{dimdefs} +\nobreak\vskip\abovedisplayskip +\halign{\indent\hfil\tt #\qquad&#\hfil\cr +pt&^{point} (72.27 points = 1 pouce)\cr +pc&^{pica} (1 pica = 12 points)\cr +bp&big point (72 gros points = 1 pouce)\cr +in&^{pouce}\cr +cm&^{centim\`etre} (2.54 centim\`etres = 1 pouce)\cr +mm&^{millim\`etre} (10 millim\`etres = 1 centim\`etre)\cr +dd&^{\didotpt} (1157 {\didotpt}s = 1238 points)\cr +cc&^{cic\'ero} (1 cicero = 12 points Didot)\cr +sp&^{point d'\'echelle} (65536 points d'\'echelle = 1 point)\cr +} +\vskip\belowdisplayskip + +Deux unit\'es de mesure suppl\'ementaires sont associ\'ees avec chaque police~: `^|ex|', +une mesure verticale correspondant habituellement \`a la hauteur de la lettre `x' +de la police et `^|em|', une mesure +horizontale habituellement \'egale \`a la taille du point de la police et +environ la largeur de la lettre `M' de la police. Finalement, +\TeX\ procure trois unit\'e de mesure ``infinies''~: `^|fil|', `^|fill|' et +`^|filll|', dans l'ordre de force croissant. + +Une dimension est \'ecrite comme un ^{facteur}, c'est-\`a-dire, un multiplieur, +suivi par une unit\'e de mesure. +^^{unit\'es de mesure} +Le facteur peut \^etre soit un \refterm{nombre} entier, soit +une \refterm{constante d\'ecimale} contenant un point d\'ecimal +ou une virgule d\'ecimale. +Le facteur peut \^etre pr\'ec\'ed\'e par un signe plus ou moins, donc une dimension +peut \^etre positive ou n\'egative. +^^{dimensions//n\'egatives} +L'unit\'e de mesure doit \^etre l\`a, m\^eme si le nombre est +z\'ero. Des espaces entre le nombre et l'unit\'e de mesure sont permis +mais facultatifs. Vous trouverez une d\'efinition pr\'ecise d'une +dimension sur la \knuth{page~270}{315}. Voici quelques exemples de dimensions~: + +\csdisplay +5.9in 0pt -2,5 pc 2fil +| +La derni\`ere repr\'esente un ordre de distance infinie. + +Une distance infinie \'ecrase toute distance finie ou toute distance infinie +plus l\'eg\`ere. Si vous additionnez |10in| \`a |.001fil|, vous obtiendrez |.001fil|~; si vous additionnez +|2fil| \`a |-1fill| vous aurez |-1fill|~; et ainsi de suite. +\TeX\ n'accepte des distances infinies que quand +vous avez sp\'ecifi\'e l'\refterm{\'etirement} et le \refterm{r\'etr\'ecissement} +du \refterm{ressort}. + +\TeX\ multiplie toutes les dimensions de votre document par un +facteur de \refterm{magnification} $f/1000$, +o\`u $f$ est la valeur du param\`etre ^|\mag|. +^^{magnification} +Puisque la valeur par d\'efaut de +|\mag| est $1000$, le cas normal est que votre document est +compos\'e comme sp\'ecifi\'e. Vous pouvez sp\'ecifier une dimension comme elle sera +mesur\'ee dans le document final ind\'ependamment d'une magnification en mettant +`|true|' devant l'unit\'e. Par exemple, `|\kern 8 true pt|' +produit un cr\'enage de $8$ points quelle que soit la magnification. +\endconcept + + +\concept {disposition de page} + +\bix^^{marges} +\bix^^{ent\^etes} +\bix^^{pieds de page} +Quand vous concevez un document, vous devez d\'ecider de son +\defterm{ajustement de page}~: la taille de la page, les marges des +quatre cot\'es, les ent\^etes et pieds de page, s'il y en a, qui +apparaissent en haut et en bas de la page et la taille de l'espace +entre le corps du texte et l'ent\^ete ou le pied de page. \TeX\ en +d\'efinit par d\'efaut. Il d\'efinit une page de $8 \frac1/2$ +par $11$ pouces avec des marges d'approximativement un pouce de +chaque cot\'e, sans ent\^ete et avec un pied de page constitu\'e d'un +num\'ero de page centr\'e. + +Les marges sont d\'etermin\'ees conjointement par les quatre param\`etres +^|\hoffset|, ^|\voffset|, ^|\hsize| et ^|\vsize| (voir +``marges'', \xrefpg{marges}, +pour des conseils sur la fa\c con de les ajuster). +\eix^^{marges} +L'ent\^ete consiste normalement en une simple ligne qui appara\^\i t en haut de chaque +page, dans l'aire de la marge du haut. Vous pouvez la d\'efinir en assignant +une liste de \refterm{token} dans le param\`etre ^|\headline| (\xref{\headline}). +Similairement, +le pied de page consiste normalement en une simple ligne qui appara\^\i t en bas de chaque +page, dans l'aire de la marge du bas. Vous pouvez la d\'efinir en assignant +une liste de \refterm{token} dans le param\`etre ^|\footline| (\xref{\footline}). +Par exemple, l'entr\'ee~: +\csdisplay +\headline = {Baby's First Document\dotfill Page\folio} +\footline = {\hfil} +| +produit une ligne d'ent\^ete comme celle-ci sur chaque page~: +\vdisplay{ +\dimen0 = \hsize +\advance \dimen0 by -\parindent +\hbox to \dimen0{Baby's First Document\dotfill Page 19}} +\noindent +et aucune ligne de pied de page. + +Vous pouvez utiliser des marques pour placer le sujet d'une section de texte +courante dans l'ent\^ete ou le pied de page. +^^{marques//avec ent\^etes ou pieds de page} +Voir \conceptcit{marque} pour une explication sur comment faire cela. +\eix^^{ent\^etes} +\eix^^{pieds de page} +\endconcept + +\conceptindex{d\'elimiteurs} +\concept d\'elimiteur + +Un \defterm{d\'elimiteur} est un caract\`ere mis comme fronti\`ere visible d'une +formule math\'ematique. La propri\'et\'e essentielle d'un d\'elimiteur est que \TeX\ +peut ajuster sa taille par rapport \`a la taille verticale (\refterm{hauteur} +plus \refterm{profondeur}) de la sous-formule. +De plus, \TeX\ n'ex\'ecute d'ajustement que si le d\'elimiteur +appara\^\i t dans un ``contexte de d\'elimiteur'', plus pr\'ecis\'ement, comme argument +d'une des commandes ^|\left|, +^|\right|, +|\overwith!-delims|, +|\atop!-with!-delims|, +ou |\above!-with!-delims| +^^|\overwithdelims| +^^|\atopwithdelims| +^^|abovewithdelims| +\margin{Footnote deleted} +(voir les \pp\xrefn{\overwithdelims},~\xrefn{\left}). +Les contextes de d\'elimiteur incluent aussi tout \refterm{argument} +\`a une \refterm{macro} qui utilise l'argument dans un contexte de d\'elimiteur. + +Par exemple, les parenth\`eses gauches et droites sont des d\'elimiteurs. +Si vous utilisez des ^{parenth\`eses} dans un contexte de d\'elimiteur autour +d'une formule, \TeX\ rend les parenth\`eses assez grandes pour entourer la +\refterm{bo\^\i te} qui contient la formule (\`a condition que les +\refterm{polices:police} que vous utilisez aient des parenth\`eses assez grandes). +Par exemple~: +\csdisplay +$$ \left( a \over b \right) $$ +| +donne~: +\centereddisplays $$\left (a \over b \right ) $$ +Ici \TeX\ a rendu les parenth\`eses assez grandes pour s'accorder \`a la fraction. +Mais si vous \'ecrivez, \`a la place~: +\csdisplay +$$({a \over b})$$ +| +vous aurez~: +$$({a \over b})$$ +Puisque les parenth\`eses ne sont pas dans un contexte de d\'elimiteur, elles ne +sont \emph{pas} \'elargies. + +Les d\'elimiteurs vont par paires~: +un d\'elimiteur ouvrant \`a la gauche de la sous-formule +et un d\'elimiteur fermant \`a sa droite. +Vous pouvez choisir explicitement une hauteur plus grande pour un +d\'elimiteur avec les commandes |\bigl|, ^|\bigr|, et leurs +pendantes \ctsref{\bigl}\footnote +{\PlainTeX\ d\'efini les diff\'erentes commandes |\big| en utilisant |\left| +et |\right| pour obtenir un contexte de d\'elimiteur. Il r\`egle la taille en +construisant une formule vide de la hauteur d\'esir\'ee.}. +Par exemple, pour avoir la +formule affich\'ee~: +$$\bigl(f(x) - x \bigr) \bigl(f(y) - y \bigr)$$ + +\noindent dans laquelle les parenth\`eses externes sont un peu plus grandes +que leurs internes, vous devez \'ecrire~: + +\csdisplay +$$\bigl( f(x) - x \bigr) \bigl( f(y) - y \bigr)$$ +| + +Les $22$ d\'elimiteurs \plainTeX, montr\'es \`a leur taille normale, sont~: +\display{% +$( \>) \>[ \>] \>\{ \>\} +\>\lfloor \>\rfloor \>\lceil \>\rceil +\>\langle \>\rangle \>/ \>\backslash +\>\vert \>\Vert +\>\uparrow \>\downarrow \>\updownarrow +\>\Uparrow \>\Downarrow \>\Updownarrow$} +^^|)| ^^|)| ^^|[| ^^|]| ^^|\lbrack| ^^|\rbrack| +^^|\{| ^^|\}| ^^|\lbrace| ^^|\rbrace| +^^|\lfloor| ^^|\rfloor| ^^|\lceil| ^^|\rceil| +^^|\langle| ^^|\rangle| ^^|/| ^^|\backslash| +^^|\vert| ^^|\Vert| +^^|\uparrow| ^^|\downarrow| ^^|\updownarrow| +^^|\Uparrow| ^^|\Downarrow| ^^|\Updownarrow| +\noindent +Voici les plus grandes tailles fournies explicitement par \plainTeX\ + (les versions |\Biggl|, |\Biggr|, etc.)~: +\nobreak\vskip .5\abovedisplayskip +\display{% +$\Biggl( \>\Biggr) \>\Biggl[ \>\Biggr] +\>\Biggl\{ \>\Biggr\} \>\Biggl\lfloor \>\Biggr\rfloor +\>\Biggl\lceil \>\Biggr\rceil +\>\Biggl\langle \>\Biggr\rangle +\>\Biggm/ \>\Biggm\backslash +\>\Biggm\vert \>\Biggm\Vert +\>\Biggm\uparrow \>\Biggm\downarrow \>\Biggm\updownarrow +\>\Biggm\Uparrow \>\Biggm\Downarrow \>\Biggm\Updownarrow$} +\vskip .5\belowdisplayskip +\noindent +Les d\'elimiteurs (sauf pour `|(|', `|)|', et +`|/|') +sont les symboles list\'es sur les +pages~\xrefn{\lbrace}--\xrefn{\Uparrow}. +Ils sont list\'es \`a un seul endroit sur la \knuth{page~146}{170--171}. + +Un d\'elimiteur peut appartenir \`a n'importe quelle classe. +^^{classe//d'un d\'elimiteur} +Pour un d\'elimiteur que vous agrandissez avec +|\bigl|, |\bigr|, etc., la classe est d\'etermin\'ee par la commande~: +``opener'' pour les commandes-|l|, ``closer'' pour les commandes-|r|, +``relation'' pour les commandes-|m|, et ``ordinary symbol'' pour les +commandes-|g|, +c'est-\`a-dire, |\Big|. + +Vous pouvez obtenir un d\'elimiteur de deux diff\'erentes mani\`eres~: +\olist +\li Vous pouvez rendre un caract\`ere d\'elimiteur en lui assignant un +codes de d\'elimiteur non n\'egatif +\bix^^{codes d\'elimiteurs} +(voir plus bas) avec la commande ^|\delcode| (\xref\delcode). +N\'eanmoins le caract\`ere n'agit comme d\'elimiteur que si vous l'utilisez dans un +contexte de d\'elimiteur\footnote{% +Il est possible d'utiliser un caract\`ere avec un code de d\'elimiteur non n\'egatif +dans un contexte o\`u il n'est pas un d\'elimiteur. Dans ce cas \TeX\ ne fait pas +la recherche~; \`a la place, il utilise simplement le caract\`ere de fa\c con ordinaire +(voir la \knuth{page~156}{181--282}).}. +\li Vous pouvez produire un d\'elimiteur explicitement avec la commande +^|\delimiter| +(\xref\delimiter), en analogie avec la mani\`ere par laquelle vous pouvez produire un +caract\`ere ordinaire avec la commande |\char| ou un caract\`ere math\'ematique +avec la commande |\mathchar|. +La commande |\delimiter| utilise les m\^emes code de d\'elimiteur que ceux utilis\'es +dans une entr\'ee de table +|\delcode|, mais avec un chiffre suppl\'ementaire devant pour indiquer une +classe. +Il est rare d'utiliser |\delimiter| en dehors d'une d\'efinition de macro. +\endolist + +Un code de d\'elimiteur dit \`a +\TeX\ comment chercher un caract\`ere de sortie appropri\'e pour repr\'esenter +un d\'elimiteur. +Les r\`egles de cette recherche sont assez compliqu\'ees +(voir les \knuth{pages~156 et 442}{181--282 et 506--507}). +Une compr\'ehension compl\`ete de ces r\`egles requiert des connaissances +sur l'organisation des ^{fichiers de m\'etriques} des polices, un sujet qui n'est pas seulement en dehors +de l'objectif de ce livre mais \'egalement en dehors de l'objectif de \texbook. + +En r\'esum\'e la recherche travaille comme cela. Le code de d\'elimiteur sp\'ecifie un +``petit'' caract\`ere de sortie et un ``grand'' caract\`ere de sortie en +fournissant une position dans la \refterm{police} et une \refterm{famille} de +police pour chacun +(see \xref\delcode). +En utilisant cette information, \TeX\ peut trouver (ou construire) +de plus en plus grandes versions du d\'elimiteur. \TeX\ essaye d'abord +diff\'erentes tailles (de la petite \`a la grande) +du ``petit'' caract\`ere dans la ``petite'' police +et ensuite +diff\'erentes tailles (l\`a aussi de la petite \`a la grande) +du ``grand'' caract\`ere dans la ``grande'' police, +en cherchant un dont la hauteur plus la profondeur soit suffisamment grande. +Si aucun de ces caract\`eres trouv\'e n'est assez +grand, il utilise le plus grand. +Il est possible que +le petit caract\`ere, le grand caract\`ere, ou les deux ait \'et\'e laiss\'e non +sp\'ecifi\'e +(indiqu\'e par un z\'ero dans la partie appropri\'ee du code de d\'elimiteur). +Si seulement un caract\`ere +a \'et\'e sp\'ecifi\'e, \TeX\ l'utilise. Si aucun ne l'a \'et\'e, +il remplace le d\'elimiteur par un espace de largeur ^|\nulldelimiterspace|. +\eix^^{codes d\'elimiteurs} + +\endconcept + + +\concept d\'em\'erites + +\TeX\ utilise des \refterm{d\'em\'erites} comme une mesure de combien une ligne n'est pas d\'esirable +quand il coupe un paragraphe en lignes \seeconcept{coupure de ligne}. +^^{coupures de ligne//d\'em\'erites pour} +Les d\'em\'erites d'une ligne sont affect\'es par la \refterm{m\'ediocrit\'e} de la ligne +et par les \refterm{p\'enalit\'es:p\'enalit\'e} associ\'ees avec la ligne. +^^{m\'ediocrit\'e} +Le but de \TeX\ dans le choix d'un arrangement particulier de lignes est de +minimiser le total des +d\'em\'erites pour le paragraphe, qu'il calcule en additionnant les d\'em\'erites +des lignes individuelles. +voir les \knuth{pages~97--98}{114--115} pour les d\'etails sur comment \TeX\ +coupe un paragraphe en lignes. +\TeX\ n'utilise pas de d\'em\'erites quand il choisit des coupures de page~; +\`a la place, il utilise +une mesure similaire appel\'ee le ``co\^ut'' d'une coupure de page particuli\`ere. +\endconcept + +\conceptindex{\elements} +\concept \'el\'ement + +Le terme \defterm{\'el\'ement} est souvent utilis\'e pour faire r\'ef\'erence \`a un composant +d'une liste horizontale, verticale ou math\'ematique, c'est-\`a-dire, une liste d'\'el\'ements que +\TeX\ construit quand il est dans un mode horizontal, vertical ou math\'ematique. +\endconcept + + +\concept {\elementextra} + +Un \defterm{\'el\'ement extraordinaire} est un \'el\'ement d'information qui +dit \`a \TeX\ d'effectuer une action +qui n'entre pas dans le sch\'ema ordinaire des choses. +un \'el\'ement extraordinaire peut appara\^\i tre dans une liste horizontale ou +verticale, comme une bo\^\i te ou un \'el\'ement ressort. +\TeX\ compose un \'el\'ement extraordinaire +comme une \refterm{bo\^\i te} de largeur, hauteur et profondeur \`a z\'ero---en d'autres +termes, une bo\^\i te qui ne contient rien et n'occupe pas d'espace. + +Trois sortes d'\'el\'ements extraordinaires sont construits dans \TeX~: +\ulist +\li Les commandes |\openout|, |\closeout| et |\write| +(\p\xrefn{\openout}) +% (2nd) removed \xref to \write, since it's on the same page +produisent un \'el\'ement extraordinaire pour agir sur un fichier de sortie. +^^|\openout//\elementextra\ produit par| +^^|\write//\elementextra\ produit par| +^^|\closeout//\elementextra\ produit par| +\TeX\ diff\`ere l'op\'eration jusqu'a ce qu'il envoit la prochaine page +dans le {\dvifile} +^^{\dvifile//\elementextra\ en} +(\`a moins que l'op\'eration soit pr\'ec\'ed\'ee par ^|\immediate|). +\TeX\ utilise un \'el\'ement extraordinaire pour ces commandes parce qu'elles + n'ont rien \`a faire avec ce qu'il compose quand il les rencontre. +\li La commande ^|\special| \ctsref{\special} demande \`a \TeX\ +d'ins\'erer un certain texte directement dans le \dvifile. +comme avec la commande |\write|, \TeX\ diff\`ere l'op\'eration jusqu'a ce +qu'il envoit la prochaine page dans le {\dvifile} +^^{\dvifile//mat\'eriel ins\'er\'e par \b\tt\\special\e} +Une utilisation typique de |\special| serait de +nommer un fichier graphique que le driver d'affichage pourrait incorporer dans +votre sortie finale. +\li Quand vous changez de langage avec les commandes ^|\language| ou ^|\setlanguage| +\ctsref{\language}, +\TeX\ ins\`ere un \'el\'ement extraordinaire qui l'instruit de l'usage d'un +certain jeu de r\`egle de c\'esure \`a suivre quand il coupe un paragraphe +en lignes. +\endulist +\noindent +Une impl\'ementation particuli\`ere de \TeX\ peut procurer des \'el\'ements extraordinaires additionnels. +\endconcept + + +\conceptindex{ent\^etes} +\concept ent\^ete + +Un \defterm{ent\^ete} est un mat\'eriel que \TeX\ met en haut de chaque page, +au-dessus du texte de cette page. L'ent\^ete pour un simple rapport +peut \^etre constitu\'e du titre du cot\'e gauche de la page et du +texte ``Page $n$'' du cot\'e droite de la page. +D'habitude, un ent\^ete est constitu\'e d'une seule ligne, que vous pouvez mettre en +assignant une liste de tokens \`a ^|\headline| \ctsref\headline. +L'ent\^ete par d\'efaut de \plainTeX\ est \`a blanc. +Il est aussi possible de produire des ent\^ete multiligne~ (voir \xrefpg{bighead}) +\endconcept + + +\concept espace + +Vous pouvez demander \`a \TeX\ de mettre un \defterm{espace} entre deux \'el\'ements de +plusieurs fa\c cons~: + +\olist +^^{fin de ligne} +\li Vous pouvez \'ecrire quelque chose que \TeX\ traite comme un \refterm{token} +espace~: un ou plusieurs caract\`eres blancs, La fin d'une ligne (le +caract\`ere fin de ligne agit comme un espace) ou toute \refterm{commande} qui +se d\'eveloppe en token espace. \TeX\ g\'en\'eralement traite plusieurs +espaces cons\'ecutifs comme \'equivalent \`a un seul, en incluant le cas o\`u +les espaces comprennent une seule fin de ligne. (Une ligne vide +indique la fin d'un paragraphe~; il fait que \TeX\ g\'en\`ere un token |\par|.) +^^|\par//d'une ligne vide| +\TeX\ ajuste la taille de cette sorte d'espace en fonction de la longueur +requise par le contexte. + +^^{ressort//cr\'eer de l'espace avec} +\li Vous pouvez \'ecrire une commande de saut qui produit le ressort +que vous sp\'ecifiez dans la commande. Le ressort peut +s'\refterm{\'etirer} ou se \refterm{r\'etr\'ecir}, +produisant plus ou moins d'espace. Vous pouvez avoir un ressort vertical +comme un ressort horizontal. Le ressort dispara\^\i t \`a chaque fois qu'il +est apr\`es une coupure de ligne ou de page. + +^^{cr\'enages//cr\'eer de l'espace avec} +\li Vous pouvez \'ecrire un \refterm{cr\'enage}. Un cr\'enage produit un montant + d'espace fixe qui ne s'\'etire ni se r\'etr\'ecit et ne dispara\^\i t pas sur un +une coupure de ligne ou de page (\`a moins d'\^etre suivie imm\'ediatement par +ressort). L'usage le plus courant du cr\'enage est d'\'etablir une relation +spatiale fixe entre deux \refterm{bo\^\i te}s adjacentes. +\endolist + +Le ressort et les cr\'enages peuvent avoir des valeurs n\'egatives. +Un ressort n\'egatif ou un cr\'enage n\'egatif +entre des \'el\'ements adjacents rapproche ces \'el\'ements l'un de l'autre. +\endconcept + + +\concept {\etirement} + +Voir \conceptcit{ressort}. +\endconcept + + +\concept famille + +Une \defterm{famille} est un groupe de trois \refterm{polices:police} reli\'ees utilis\'ees +quand \TeX\ est en \refterm{mode math\'ematique}. +^^{polices//familles de} +En dehors du mode math\'ematique, les familles +n'ont aucun effet. Les trois polices d'une famille sont utilis\'ees pour les symboles normaux +(\refterm{taille de texte}), indices et exposants (\refterm{taille script}) +et sous-indices, sur-exposants, etc.\ +(\refterm{taille scriptscript}). +^^{taille texte} +^^{taille script} +^^{taille scriptscript} +Par exemple, le nombre `|2|' compos\'e dans ces trois polices vous donnera +`$2$', `$\scriptstyle 2$' et `$\scriptscriptstyle 2$' (en \plainTeX). +Normalement vous fixerez les trois polices d'une famille \`a diff\'erentes +tailles du m\^eme type de police, mais rien ne vous emp\^eche d'utiliser des +types diff\'erents pour les trois polices ni d'utiliser la m\^eme police +deux fois dans une famille. + +{\tighten +TeX\ procure jusqu'a seize familles, num\'erot\'ees de $0$ \`a $15$. Par +exemple, la famille $0$ en \refterm{\plainTeX} consiste en roman $10$ points +pour le texte, roman $7$ points pour le script et roman $5$ points pour le +scriptscript. +^^{\plainTeX//familles de police en} +\PlainTeX\ d\'efini aussi la famille $1$ qui est constitu\'ee des polices +math\'ematiques italiques et r\'eserve les familles $2$ et $3$ pour respectivement +les ^{symboles sp\'eciaux} et les ^{extensions math\'ematiques}\footnote{Les +familles $2$ et $3$ sont sp\'eciales en ce que leurs fichiers de m\'etriques de +police doivent inclure des param\`etres pour l'espacement math\'ematique.}. Si +vous devez d\'efinir une famille vous m\^eme, vous devrez utiliser la commande +^|\newfam| \ctsref{\@newfam} pour avoir le num\'ero d'une famille qui n'est +pas utilis\'ee et les commandes ^|\textfont|, ^|\scriptfont| and +^|\scriptscriptfont| commands \ctsref{\scriptscriptfont} pour assigner des +polices \`a cette famille. +\par} + +\endconcept + + +\conceptindex{fichiers} +\concept fichier + +Un \defterm{fichier} est un flot d'information que \TeX\ interpr\`ete ou +cr\'ee. Des fichiers sont g\'er\'es par le ^{syst\`eme d'exploitation} qui supervise votre +ex\'ecution de \TeX. \TeX\ manipule des fichiers dans quatre contextes diff\'erents~: +\olist +\li Un ``^{fichier source}'' est celui que \TeX\ lit avec ses ``yeux'' +\seeconcept{\anatomy} et interpr\`ete en accord avec ses r\`egles ordinaires. +Votre fichier d'entr\'ee primaire---celui que vous sp\'ecifiez apr\`es `|**|' ou +sur la ligne de commande quand vous +invoquez \TeX---est un fichier source, et ainsi pour tout fichier que vous +appelez avec une commande ^|\input| \ctsref \input. + +\li Un ``^{fichier r\'esultat}'' est celui qui contient les r\'esultats de +l'ex\'ecution de \TeX. \TeX\ cr\'ee deux fichiers r\'esultat~: Le +\dvifile\ et le fichier .log. +^^{\dvifile//comme un fichier r\'esultat} +^^{\logfile//comme un fichier r\'esultat} +Le \dvifile\ contient l'information n\'ecessaire pour imprimer votre document. +Le fichier +.log contient un enregistrement de ce qui s'est pass\'e pendant l'ex\'ecution, +incluant tout message d'erreur que \TeX\ a g\'en\'er\'e. +Si votre fichier source primaire s'appelle +|screed.tex|, vos \dvifiles\ et log se nommeront |screed.dvi| +et |screed.log|\footnote{C'est la convention usuelle, mais +des impl\'ementations particuli\`eres de \TeX\ sont libres de changer cela.}. + +\li Pour lire un fichier avec la commande ^|\read| +\ctsref{\read} vous devez associer le fichier avec un flot d'entr\'ee. +^^{flots d'entr\'ee//lire avec \b\tt\\read\e} +Vous pouvez avoir jusqu'a $16$ flots d'entr\'ee actifs +\`a la fois, num\'erot\'es de $0$ \`a $15$. +La commande |\read| lit un seul fichier et le fait avec la valeur d'une +\refterm{s\'equence de contr\^ole} d\'esign\'ee, donc lire avec +|\read| est tr\`es diff\'erent de lire avec ^|\input| (qui apporte un +fichier entier). +\TeX\ prend tout flot d'entre qui n'est pas num\'erot\'e entre +$0$ et $15$ comme r\'ef\'erence au terminal, +donc `|\read16|', disons, lit la prochaine ligne que vous saisissez sur le +terminal. + +\li Pour \'ecrire dans un fichier avec la commande |\write| +\ctsref \write\ vous devez associer le fichier +avec un flot de sortie. +^^|\write//flot d'entr\'ee pour| +^^{flots de sortie} +Vous pouvez avoir jusqu'a $16$ flots de sortie actifs +\`a la fois, num\'erot\'es de $0$ \`a $15$. +Les flots d'entr\'ee et de sortie sont ind\'ependants. +Tout ce qui est envoy\'e vers un flot de sortie avec un num\'ero n\'egatif va vers le +fichier log~; tout ce qui est envoy\'e vers un flot de sortie avec un num\'ero +sup\'erieur \`a $15$ +va \`a la fois vers le fichier log et le terminal. +Ainsi `|\write16|', disons, \'ecrit une ligne sur le terminal et aussi envoit +cette ligne vers le fichier~log. + +\endolist + +Vous devez ouvrir un fichier de flot avant de pouvoir l'utiliser. +Un fichier de flot d'entr\'ee est ouvert avec une commande ^|\openin| +\ctsref \openin\ et un fichier de flot de sortie est ouvert avec une +commande ^|\openout| \ctsref\openout. +Par propret\'e, +vous devez fermer un fichier de flot quand vous en avez fini avec lui, n\'eanmoins +\TeX\ le fera \`a la fin du traitement si vous ne l'avez pas fait. +Les deux commandes pour fermer un fichier de flot sont ^|\closein| \ctsref\closein\ +et ^|\closeout| \ctsref\closeout. +Un avantage de fermer un flot quand vous en avez fini avec lui +est que vous pouvez r\'eutiliser le flot pour un autre fichier. +Ceci peut \^etre essentiel quand vous lisez un longue suite de fichiers. + +De plus vous pouvez assigner des num\'eros vous-m\^eme aux flots d'entr\'ee et de sortie, +Il est pr\'ef\'erable de le faire avec les commandes ^|\newread| et +^|\newwrite| \ctsref{\@newwrite}. +Vous pouvez avoir plus d'un flot associ\'e avec un seul fichier, +mais vous aurez des salet\'es (probablement non diagnostiqu\'e) \`a moins que tous les flots +soit des flots d'entr\'ee. Associer plus d'un flot avec un fichier d'entr\'ee +peut-\^etre utile quand vous voulez utiliser le m\^eme fichier d'entr\'ee pour deux +usages diff\'erents. + +D'habitude, \TeX\ diff\`ere les actions d'ouverture, d'\'ecriture et de fermeture +d'un flot de sortie jusqu'a ce qu'il enregistre une page avec ^|\shipout| +(voir la \knuth{page~227}{266} +pour les d\'etails). Cette propri\'et\'e s'applique m\^eme aux messages \'ecrits sur le +terminal avec |\write|. Mais vous pouvez demander \`a \TeX\ de faire une action +sur un flot de sortie imm\'ediatement en faisant pr\'ec\'eder la commande d'action de +^|\immediate| \ctsref\immediate. Par exemple~: +\csdisplay +\immediate\write16{Do not pass GO!! Do not collect $200!!} +| +\endconcept + + +\concept {fichier format} + +{\tighten +Un \defterm{fichier format} est un fichier qui contient une image de +la m\'emoire de \TeX\ sous la forme dans laquelle il peut \^etre recharg\'e rapidement. +Un fichier format peut \^etre cr\'e\'e avec la commande ^|\dump| \ctsref\dump. +L'image contient un enregistrement complet +des d\'efinitions (de \refterm{polices:police}, \refterm{macros:macro}, etc.) +qui \'etaient pr\'esentes quand le dump a \'et\'e effectu\'e. +En utilisant ^|virtex|, un forme sp\'eciale ``vierge'' de \TeX, +vous pouvez recharger le fichier format \`a haute vitesse et +continuer avec le m\^eme \'etat dans lequel \'etait \TeX\ au moment du dump. +L'avantage du fichier format sur un fichier d' entr\'ee ordinaire +contenant la m\^eme information est que \TeX\ peut la charger beaucoup plus +vite. +\par} + +Des fichiers de format doivent \^etre cr\'e\'es par ^|initex|, une +forme sp\'eciale de \TeX\ \'ecrite \`a cette intention. +Ni |virtex|, ni |initex| n'ont d'outils autres que les primitives +construites dans le programme \TeX\ lui-m\^eme. + +Une forme ^{pr\'echarg\'ee} de \TeX\ est celle qui a un fichier format conforme +charg\'e et est pr\^et \`a accepter l'entr\'ee de l'utilisateur. +La forme de \TeX\ qui se nomme |tex| +a souvent les d\'efinitions \plainTeX\ pr\'echarg\'ees. +(\PlainTeX\ est normalement fourni sous deux autres formes~: +comme une fichier de format et comme une fichier source de \TeX. +Dans certains environnements, |tex| est \'equivalent \`a appeler |virtex| +et charge alors |plain|.) +Cr\'eer des formes pr\'echarg\'ees de \TeX\ n\'ecessite un programme sp\'ecial~; +il ne peut pas \^etre fait en n'utilisant que les outils de \TeX\ lui-m\^eme. + +\endconcept + + +\concept {fichier log} + +Voir \conceptcit{fichier}. +\endconcept + + +\conceptindex{filets} +\concept filets + +Un \defterm{filet} est un rectangle plein noir. +Un filet, comme une \refterm{bo\^\i te}, +a une \refterm{largeur}, une \refterm{hauteur} et une \refterm{profondeur}. +La dimension verticale du rectangle +est la somme de sa hauteur et de sa profondeur. +Une ligne droite horizontale ou verticale est un cas sp\'ecial de filet. + +\bix^^{filets horizontaux} +\bix^^{filets verticaux} +\bix^^|\hrule| +\bix^^|\vrule| +Un filet peut \^etre soit horizontal, soit vertical. La distinction entre un +filet horizontal et un vertical diff\`ere selon la fa\c con de produire le +filet, un filet vertical peut \^etre court et \'epais (et donc ressembler +\`a une ligne horizontale), tandis qu'un filet horizontal peut \^etre grand et maigre +(et donc ressembler \`a une ligne verticale). La notion de filet de \TeX\ est +plus g\'en\'erale que celle des typographes, qui pensent \`a un filet comme \`a une ligne +et ne veulent habituellement pas appeler filet une bo\^\i te noire carr\'ee. + +Vous pouvez produire un filet horizontal en utilisant la commande +|\hrule| et un filet vertical en utilisant +la commande |\vrule| \ctsref{\vrule}. +Par exemple, la s\'equence de contr\^ole |\hrule| par elle-m\^eme +produit un filet fin qui traverse la page, comme ceci~: + +{\offinterlineskip +\nobreak\medskip +\hrule +\medskip} + +La commande `|\vrule height .25in|' produit un filet vertical +qui s'allonge de $.25$~pouces sur la page comme ceci~: +\nobreak\vskip \abovedisplayskip +\leftline{\vrule height .25in} +\vskip \belowdisplayskip + +Il y a deux diff\'erences entre les filets horizontaux et verticaux~: +\olist +\li Pour un filet horizontal, \TeX\ prend comme largeur par d\'efaut la largeur +de la plus petite \refterm{bo\^\i te} ou \refterm{alignement} qui l'englobe. +Pour un filet vertical, \TeX\ prend comme hauteur et profondeur par d\'efaut +de la m\^eme fa\c con. (Le +d\'efaut est la taille que vous obtenez si vous ne donnez pas de taille explicitement +pour cette dimension.) + +^^{listes horizontales//filet en} +^^{listes verticales//filet en} +\li +{\tighten +Un filet horizontal est un \'el\'ement fondamentalement vertical qui ne peut participer +\`a une \refterm{liste horizontale}, tandis qu'un filet vertical est un \'el\'ement +horizontal qui ne peut participer \`a une \refterm{liste verticale}. +Cette propri\'et\'e peut sembler \'etrange d'un premier abord, mais il y a une +bonne raison \`a cela~: +Un filet horizontal s'\'etend visuellement de gauche \`a droite et donc s\'epare des +\'el\'ements d'une liste verticale, tandis qu'un filet vertical s'\'etend visuellement +de haut en bas et ainsi s\'epare des \'el\'ements d'une liste horizontale. +%(Look at the rules that are shown above.) +\par} +\endolist + +{\tighten +Si vous construisez un filet avec trois dimensions explicites, +cela donnera la m\^eme chose que vous fassiez un filet horizontal ou vertical. +Par exemple, la commande `|\vrule height1pt depth2pt width3in|' produit ce +filet au look horizontal~: +\par} + +{\offinterlineskip +\nobreak\medskip\nobreak\vskip3pt +\leftline{\vrule height1pt depth2pt width3in} +\medskip} + +Vous trouverez un \'etat pr\'ecis du traitement des filets de \TeX\ dans les +\knuth{pages~221--222}{259--260}. +\eix^^{filets horizontaux} +\eix^^{filets verticaux} +\eix^^|\hrule| +\eix^^|\vrule| +\endconcept + + +\conceptindex{flots d'entr\'ee} +\concept {flots d'entr\'ee} + +Voir \conceptcit{fichier}. +\endconcept + + +\conceptindex{flots de sortie} +\concept {flots de sortie} + +\margin{This concept was out of order.} +Voir \conceptcit{fichier}. +\endconcept + + +\concept global + +Une d\'efinition \defterm{globale} est effective +jusqu'a la fin du +document ou jusqu'a ce qu'elle soit \'ecras\'ee par une autre d\'efinition, +m\^eme quand elle appara\^\i t dans un \refterm{groupe}. +Ainsi une d\'efinition globale n'est pas affect\'ee par les fronti\`eres de groupe. +Vous pouvez rendre n'importe quelle d\'efinition globale en la pr\'efixant avec la +commande |\global| \ctsref{\global} a moins que ^|\globaldefs| \ctsref\globaldefs{} +soit n\'egatif. +^^|\global| + +Il y a un moyen sp\'ecial de rendre une d\'efinition de \refterm{macro} globale. +^^{macros//globale} +Normalement vous d\'efinissez une macro en utilisant soit la commande |\def| +soit la commande |\edef| \ctsref{\edef}. +^^|\edef//rendre global| +^^|\def//rendre global| +Si vous utilisez |\gdef| ou |\xdef| +au lieu de |\def| et |\edef| respectivement, la d\'efinition de macro sera +globale. Parce que, `^|\gdef|' est \'equivalent \`a `|\global\def|' et +`^|\xdef|' est \'equivalent \`a `|\global\edef|'. +\endconcept + + +\conceptindex{groupes} +\concept groupe + +Un \defterm{groupe} est une partie de votre manuscrit que \TeX\ traite comme +une unit\'e. +Vous indiquez un groupe en l'entourant avec les accolades +`|{|' et `|}|' (ou tout autre caract\`ere avec le +\refterm{code de cat\'egorie} appropri\'e). +^^|{//d\'ebuter un groupe| +^^|}//terminer un groupe| + +La plus importante propri\'et\'e d'un groupe est que toute d\'efinition +ou assignation non globale que vous faites dans un groupe dispara\^\i t quand +le groupe se termine. Par exemple, si vous \'ecrivez~: + +\csdisplay +Please don't pour {\it any} more tea into my hat. +| +La \refterm{s\'equence de contr\^ole} |\it| demande \`a \TeX\ de mettre le mot +`|any|' en police italique mais n'affecte pas le reste du texte. +Comme autre exemple, si vous utilisez le param\`etre |\hsize| +\ctsref{\hsize} pour changer la longueur de la ligne dans un groupe, la longueur de ligne +retourne \`a sa valeur pr\'ec\'edente un fois que \TeX\ est sorti du groupe. + +Les groupes sont aussi pratiques comme moyen de contr\^oler l'espace\-ment. +Par exemple, si vous saisissez~: + +\csdisplay +\TeX for the Impatient and the Outpatient too. +| +\noindent +vous aurez~: +\display{% +\TeX for the Impatient and the Outpatient too. +} +\noindent +puisque la s\'equence de contr\^ole |\TeX| (qui produit le logo \TeX) +absorbe l'espace qui le suit. +vous voulez probablement ceci~: +\display{% +{\TeX} for the Impatient and the Outpatient too. +} +\noindent +Une mani\`ere d'obtenir ceci est d'englober `|\TeX|' dans un groupe~: +\csdisplay +{\TeX} for the Impatient and the Outpatient too. +| +L'accolade droite emp\^eche la s\'equence de contr\^ole d'absorber l'espace. +\endconcept + + +\concept hauteur + +La \defterm{hauteur} d'une \refterm{bo\^\i te} est la distance \`a laquelle la bo\^\i te +s'\'etend au dessus de sa \refterm{ligne de base}. +^^{\boites//hauteur de} +\endconcept + + +\conceptindex{hbox} +\concept hbox + +Une \defterm{hbox} (bo\^\i te horizontale) est une \refterm{bo\^\i te} que \TeX\ +construit en plaquant les articles d'une \refterm{liste horizontale} l'un +apr\`es l'autre, de la gauche vers la droite. +^^{listes horizontales//hbox form\'es \`a partir de} +Une hbox, prise comme unit\'e, n'est ni +fondamentalement horizontale ni fondamentalement verticale, c'est-\`a-dire, +qu'elle peut appara\^\i tre comme un +article soit d'une liste horizontale soit d'une \refterm{liste verticale}. +Vous pouvez construire une hbox avec la commande |\hbox| \ctsref{\hbox}. +\endconcept + + +\conceptindex{insertions} +\concept insertion + +\looseness = -1 +Une \defterm{insertion} est une liste verticale contenant du mat\'eriel devant +\^etre ins\'er\'e sur une page quand \TeX\ a fini de construire cette page\footnote +{\tighten +\TeX\ lui-m\^eme n'ins\`ere pas le mat\'eriel---il rend juste le mat\'eriel accessible +\`a la routine de sortie, qui est alors responsable de la transf\'erer sur la +page compos\'ee. +^^{routine de sortie//insertions, traitement de} +Le seul effet imm\'ediat de la commande ^|\insert| +\ctsref{\insert} est de changer les calculs de coupure de page de \TeX\ pour +qu'il laisse de la place sur la page pour le mat\'eriel \`a ins\'erer. Plus tard, +quand \TeX\ coupera r\'eellement la page, il divisera le mat\'eriel \`a ins\'erer en +deux groupes~: le mat\'eriel qui passe sur la page courante et le mat\'eriel qui +ne passe pas. +^^{coupures de page//insertions sur des} +Le mat\'eriel qui passe sur la page est plac\'e dans des registres de bo\^\i te, un +par insertion et le mat\'eriel qui ne passe pas est transf\'er\'e sur la page +suivante. +Cette proc\'edure autorise \TeX\ \`a faire des choses comme distribuer des parties +d'une longue note de pied de page sur plusieurs pages cons\'ecutives.}. Des +exemples de telles insertions sont les notes de pied de page et les figures. +Les commandes \refterm{\plainTeX} pour cr\'eer des insertions sont +^|\footnote|, ^|\topinsert|, |\mid!-insert|, +^^|\midinsert| +et ^|\pageinsert|, aussi bien que la commande primitive ^|\insert| +elle-m\^eme (\pp\xrefn\footnote--\xrefn{endofinsert}). +Le m\'ecanisme de \TeX\ pour manipuler des insertions est plus compliqu\'e~; +voir les \knuth{pages~122--125}{142--146} pour les d\'etails. +\endconcept + + +\concept largeur + +^^{\boites//largeur de} +La \defterm{largeur} d'une \refterm{bo\^\i te} est le montant d'espace horizontal +qu'il occupe, c'est-\`a-dire, la distance de son cot\'e gauche \`a son cot\'e droit. +Le mat\'eriel compos\'e dans une bo\^\i te peut \^etre plus large que la bo\^\i te elle-m\^eme. +\endconcept + + + +\conceptindex{ligatures} +\concept ligature + +Une \defterm{ligature} est un simple caract\`ere qui remplace une +s\'e\-quence particuli\`ere de caract\`eres adjacents dans un document compos\'e. +Par exemple, le mot `|office|' est compos\'e \hbox{``office''} et non +\hbox{``of{f}ice''}, par les syst\`emes de composition de haute qualit\'e. +La connaissance des ligatures est construite dans les \refterm{polices:police} +que vous utilisez, donc vous n'avez rien \`a faire pour que \TeX\ +les produise. (Vous pouvez emp\^echer la ligature d'``office'', comme nous +l'avons dit plus t\^ot, en saisissant `|of{f}ice|' dans votre entr\'ee.) +\TeX\ est aussi capable d'utiliser son m\'ecanisme de ligature pour composer +la premi\`ere ou la derni\`ere lettre d'un mot diff\'eremment de la m\^eme lettre +qui appara\^\i t au milieu d'un mot +Vous pouvez emp\^echer cet effet (si vous le rencontrez) en utilisant la +commande ^|\noboundary| (\xref\noboundary). + +Parfois, vous aurez besoin d'une ligature d'une langue europ\'eenne. +^^{langues europ\'eennes} +\TeX\ ne les produit pas automatiquement sauf si vous utilisez une police +dessin\'ee pour cette langue. Un certain nombre de ces ligatures, par exemple, +\AE, sont accessible par une commande +(voir ``Lettres et ligatures pour alphabets europ\'eens'', +\xref{fornlets}). +\endconcept + + +\conceptindex{lignes de base} +\concept ligne de base + +La \defterm{ligne de base} d'une \refterm{bo\^\i te} est une ligne imaginaire qui traverse +la bo\^\i te. +^^{\boites//lignes de base de} +Quand \TeX\ +assemble les bo\^\i tes d'une \refterm{liste horizontale} en une bo\^\i te plus grande, +il aligne les bo\^\i tes de la liste pour que leurs lignes de base co\"\i ncident. +Par analogie, pensez que vous \'ecrivez sur un bloc de papier lign\'e. Chaque lettre +que vous \'ecrivez a +une ligne de base implicite. +Pour aligner les lettres horizontalement, +vous les placez sur le bloc pour que leurs lignes de base +s'ajustent avec les lignes-guides claires imprim\'ees sur le bloc. + +Une bo\^\i te peut et souvent doit s'\'etendre sous sa ligne de base. +Par exemple, la lettre `g' s'\'etend sous la ligne de base de sa bo\^\i te parce +qu'elle a une descendante (la boucle du dessous du `g'). +\endconcept + + +\conceptindex{listes} +\concept liste + +Une \defterm{liste} est une s\'equence d'\refterm{\'el\'ements:\'el\'ement} +(\refterm{bo\^\i tes:bo\^\i te}, \refterm{ressorts:ressort}, \refterm{cr\'enages:cr\'enage}, etc.) +cela comprend tout le contenu d'une hbox, d'une vbox +ou d'une formule math\'ematique. +Voir \conceptcit{liste horizontale}, \conceptcit{liste verticale}. + +\endconcept + + +\conceptindex{listes horizontales} +\concept {liste horizontale} + +Une \defterm{liste horizontale} est une liste d'articles +que \TeX\ a produit quand il \'etait dans un de ses +\refterm{modes horizontaux:mode horizontal}, c'est-\`a-dire, en assemblant +soit un paragraphe soit une hbox. Voir ``mode horizontal'' ci-dessous. +\endconcept + + +\conceptindex{listes verticales} +\concept {liste verticale} + +Une \defterm{liste verticale} est une liste d'\'el\'ements que \TeX\ a produit quand il +\'etait dans une de ses modes vertical, c'est-\`a-dire, en assemblant soit une +\refterm{vbox} soit une page. Vois ``mode vertical'' ci-dessous. + +\endconcept + + +\conceptindex{macros} +\concept macro + +{% Use a brace here so that definitions of explanatory macros remain local. +% The closing brace is at the end of the concept. +Une \defterm{macro} est une d\'efinition qui donne un nom \`a un mod\`ele de texte +d'entr\'ee de \TeX\footnote{Plus pr\'ecis\'ement, la d\'efinition donne un nom +\`a une s\'equence de tokens.}. Le nom peut \^etre soit une \refterm{s\'equence de +contr\^ole} soit un \refterm{caract\`ere actif}. Le mod\`ele est appel\'e le +``texte de remplacement''. La commande primaire pour d\'efinir des macros est +la s\'equence de contr\^ole |\def|. + +\def\arctheta{\cos \theta + i \sin \theta} +Comme exemple simple, supposez que vous ayez un document dans lequel +la s\'equence `$\cos \theta + i \sin \theta$' appara\^\i t plusieurs fois. +Au lieu de l'\'ecrire \`a chaque fois, vous pouvez d\'efinir une macro pour cela~: +\csdisplay +\def\arctheta{\cos \theta + i \sin \theta} +| +Maintenant \`a chaque fois que vous avez besoin de cette s\'equence, vous pouvez +simplement ``appeler'' la macro en \'ecrivant `|\arctheta|' et vous l'aurez. +Par exemple, `|$e^{\arctheta}$|' vous donnera `$e^{\arctheta}$'. + +\bix^^{macros//param\`etres de} +Mais la r\'eelle puissance des macros tient au fait qu'une macro peut avoir des +param\`etres. Quand vous appelez une macro qui a des param\`etres, vous fournissez +des arguments qui se substituent \`a ces param\`etres. Par exemple, supposez +que vous \'ecrivez~: +\pix\indexchar # +\def\arc#1{\cos #1 + i \sin #1} +\csdisplay +\def\arc#1{\cos #1 + i \sin #1} +| + +La notation |#1| \xrdef{@msharp} d\'esigne le premier param\`etre +de la macro, qui dans ce cas n'a qu'un param\`etre. Vous pouvez maintenant +produire une forme similaire, telle que `$\arc{2t}$', avec l'appel de macro +`|\arc{2t}|'. + +Plus g\'en\'eralement, une macro peut avoir jusqu'a neuf param\`etres, que vous +d\'esignez par `|#1|', `|#2|', etc\null. dans la d\'efinition de la macro. \TeX\ +fourni deux types de param\`etres~: les param\`etres d\'elimit\'es et les param\`etres +non d\'elimit\'es. Bri\`evement, un param\`etre d\'elimit\'e a un \refterm{argument} qui +est d\'elimit\'e ou termin\'e par une s\'equence sp\'ecifique de tokens (le d\'elimiteur), +tandis qu'un param\`etre non d\'elimit\'e a un argument qui n'a pas besoin de +d\'elimiteur pour le terminer. +Premi\`erement, nous expliquerons comment fonctionnent les macros quand elles +n'ont que des param\`etres non d\'elimit\'es, et ensuite, nous expliquerons comment +elles fonctionnent quand elles ont des param\`etres d\'elimit\'es. + +^^{param\`etres//non d\'elimit\'es} +Si une macro n'a que des param\`etres non d\'elimit\'es, ces param\`etres doivent appara\^\i tre +l'un apr\`es l'autre dans la d\'efinition de macro \emph{sans rien entre +eux ou entre le dernier param\`etre et l'accolade gauche au d\'ebut du +texte de remplacement}. +Un appel d'une telle macro consiste en le nom de la macro suivi par +les arguments de l'appel, un pour chaque param\`etre. Chaque argument est +soit~: + +\ulist \compact +\li un \refterm{token} simple autre qu'un accolade gauche ou droite ou + +\li une s\'equence de tokens englob\'e entre une accolade gauche et +une accolade droite correspondante\footnote{L'argument peut avoir des paires +d'accolades englobantes et chacune de ces paires peut d\'esigner soit +un \refterm{groupe} soit un autre argument de macro.}. +\endulist + +Quand \TeX\ rencontre une macro, il d\'eveloppe la macro dans son \oe so\-phage +\seeconcept{\anatomy} +en substituant chaque argument par le param\`etre correspondant +dans le texte de remplacement. Le texte r\'esultant peut contenir d'autres +appels de macro. Quand \TeX\ rencontre un tel appel de macro imbriqu\'e, il +d\'eveloppe cet appel imm\'ediatement sans regarder ce qui suit l'appel +\footnote{En terminologie informatique, le d\'eveloppement est ``profondeur +d'abord'' plut\^ot que ``largeur d'abord''. Notez que vous pouvez modifier l'ordre +du d\'eveloppement avec des commandes telles que |\expandafter|.}. Quand +l'\oesophage de \TeX\ tombe sur une \refterm{commande} \refterm{primitive} +qui ne peut \^etre d\'evelopp\'ee plus loin, \TeX\ passe cette commande \`a l'estomac +de \TeX. L'ordre de d\'eveloppement est parfois critique, donc de fa\c con \`a vous +aider \`a le comprendre, nous vous donnons un exemple de \TeX\ au travail. + +Supposez que vous procurez \`a \TeX\ l'entr\'ee suivante~: +\csdisplay +\def\a#1#2{\b#2#1\kern 2pt #1} +\def\b{bb} +\def\c{\char49 cc} +\def\d{dd} +\a\c{e\d} % Call on \a. +| +Alors l'argument correspondant \`a |#1| est |\c|, +et l'argument correspondant \`a |#2| est |e\d|. +\TeX\ d\'eveloppe l'appel de macro d'apr\`es les \'etapes suivantes~: + +{\vskip\abovedisplayskip\obeylines % ugly +|\b e\d\c\kern 2pt \c| +|bbe\d\c\kern 2pt \c| +|\d\c\kern 2pt \c|\quad(`|b|', `|b|', `|e|' envoy\'es vers l'estomac) +|dd\c\kern 2pt \c| +|\c\kern 2pt \c|\quad(`|d|', `|d|' envoy\'es vers l'estomac) +|\char49 cc\kern 2pt \c| +|\c|\quad(`|\char|', `|4|', `|9|', `|c|', `|c|', % +`|\kern|', `|2|', `|p|', `|t|' envoy\'es vers l'estomac) +|\char49 cc| +(`|\char49|', `|c|', `|c|' envoy\'es vers l'estomac) +\vskip\belowdisplayskip} + +\noindent Notez que les lettres `|b|', `|c|', `|d|' et `|e|' et les +s\'equences de contr\^ole `|\kern|' et `|\char|' sont toutes des commandes +primitives qui ne peuvent \^etre d\'evelopp\'ees. + +\bix^^{param\`etres//d\'elimit\'es} +Une macro peut aussi avoir des ``param\`etres d\'elimit\'es'', qui peuvent \^etre m\'elang\'es avec +des non d\'elimit\'es dans toutes les combinaisons. L'id\'ee d'un param\`etre +d\'elimit\'e est que \TeX\ trouve l'argument correspondant en recherchant +une certaine s\'equence de tokens qui marquent la fin de l'argument---le +d\'elimiteur. Cela fait, quand \TeX\ recherche un tel argument, il +prend comme argument tout les tokens \`a partir de la position courante de \TeX\ +mais sans inclure le d\'elimiteur. + +Vous indiquez un param\`etre d\'elimit\'e en \'ecrivant `|#|$n$' ($n$ +doit \^etre entre $0$ +et $9$) suivi par un ou plusieurs tokens qui agissent comme le d\'elimiteur. +Le d\'elimiteur s'\'etend jusqu'au prochain `|#|' ou `|{|'---qui ont un sens +car `|#|' d\'ebute un autre param\`etre et `|{|' le texte de remplacement. + +Le d\'elimiteur ne peut \^etre `|#|' ou `|{|', donc vous pouvez appeler un param\`etre +d\'elimit\'e \`a partir d'un non d\'elimit\'e en recherchant ce qui le suit. + +Si le caract\`ere apr\`es le param\`etre est `|#|' ou `|{|', vous avez un +param\`etre non d\'elimit\'e~; autrement il sera d\'elimit\'e. Notez +la diff\'erence dans les arguments pour les deux sortes de param\`etres---un +param\`etre non d\'elimit\'e est d\'esign\'e soit par un simple token, soit par une +s\'equence de tokens englob\'es entre des accolades, tandis qu'un param\`etre +d\'elimit\'e est d\'esign\'e par n'importe quel nombre de tokens, m\^eme aucun. + +Un exemple de macro utilisant deux param\`etres d\'elimit\'es est~: +\def\diet#1 #2.{On #1 we eat #2!} +\csdisplay +\def\diet#1 #2.{On #1 we eat #2!!} +| +Ici le premier param\`etre est d\'elimit\'e par un simple espace et le +second param\`etre est d\'elimit\'e par un point. Si vous saisissez~: +\csdisplay +\diet Tuesday turnips. +| +vous obtiendrez le texte ``\diet Tuesday turnips.''. +Mais si les tokens d\'elimitants sont englob\'es dans un groupe, \TeX\ +ne les consid\`ere pas d\'elimit\'es. Donc si vous \'ecrivez~: +\csdisplay +\diet {Sunday mornings} pancakes. +| +vous obtiendrez le texte `\diet {Sunday mornings} pancakes.' +m\^eme s'il y a un espace entre `|Sunday|' et `|morning|'. +Quand vous utilisez un espace comme d\'elimiteur, +un caract\`ere fin de ligne d\'elimite aussi normalement l'argument +car \TeX\ convertit la fin de ligne en espace avant que le m\'ecanisme de +macro ne le voit. +\eix^^{param\`etres//d\'elimit\'es} +\eix^^{macros//param\`etres de} + +Il arrivera que vous ayez \`a d\'efinir une macro qui ait `|#|' comme caract\`ere +significatif. Vous aurez plus de chance d'avoir besoin de faire cela quand +vous d\'efinirez une macro qui \`a son tour d\'efinit une seconde macro. Comment +faire \`a propos des param\`etres de la seconde macro sans mettre \TeX\ +dans la confusion~? La r\'eponse est que vous saisissez deux `|#|' pour chacun +de ceux que vous voulez quand la premi\`ere macro est d\'evelopp\'ee. Par exemple, +supposons que vous \'ecriviez la d\'efinition de macro~: +\def\first#1{\def\second##1{#1/##1}} +\csdisplay +\def\first#1{\def\second##1{#1/##1}} +| +Alors l'appel `|\first{One}|' d\'efini `|\second|' comme~: +\csdisplay +\def\second#1{One/#1} +| +et l'appel cons\'ecutif `|\second{Two}|' produit le texte +\def\second#1{One/#1}% +`\second {Two}'. + +Un certain nombre de commandes fournissent des moyens suppl\'emen\-taires pour d\'efinir des macros +(voir pp.~\xrefn{mac1}--\xrefn{mac2}). +Pour les r\`egles com\-pl\`etes concernant les macros, voir le \knuth{chapitre~20}{} +}% close brace at the start of the `macro' concept. +\endconcept + + +\concept magnification + +Quand \TeX\ compose un document, il multiplie toutes les dimensions +par un facteur de +\refterm{magnification} $f/1000$, +o\`u $f$ est la valeur du param\`etre ^|\mag| \ctsref\mag. +Puisque la valeur par d\'efaut de |\mag| est $1000$, le cas normal est que +votre document est compos\'e comme il est sp\'ecifi\'e. +Augmenter la magnification est souvent utile quand vous composez un document +qui sera r\'eduit photographiquement. + +Vous pouvez aussi appliquer de la magnification sur une seule \refterm{police} +pour avoir une version plus petite ou plus grande de cette police que sa +``^{taille d'origine}''. Vous +devez procurer au driver d'impression un ^{fichier de forme} +\seeconcept{police} pour +chaque magnification de police que vous utilisez---% +a moins que la police ne soit construite dans votre imprimante et que votre driver +d'impression la connaisse. +Quand vous d\'efinissez une police avec la commande +|\font| \ctsref{\font}, vous pouvez sp\'ecifier une magnification avec +le mot `|scaled|'. Par exemple~: + +\csdisplay +\font\largerbold = cmbx10 scaled 2000 +| +d\'efinit `|\largerbold|' comme une police qui est +deux fois plus grande que |cmbx10| (Computer Modern +Grasse Etendue en $10$ points) et a les formes de caract\`ere +uniform\'ement agrandies d'un facteur de~$2$. + +De nombreux centres informatiques trouvent pratique de fournir des polices +agrandies par un ratio +de $1.2$, correspondant \`a des valeurs de magnification de $1200$, $1440$, etc. +\TeX\ a des noms sp\'eciaux pour ces valeurs~: +^^|\magstep| +`|\magstep1|' pour $1200$, +`|\magstep2|' pour $1440$, et ainsi de suite jusqu'a `|\magstep5|'. +La valeur sp\'eciale `^|\magstephalf|' correspond \`a une magnification de $\sqrt{1.2}$, qui +est visuellement \`a mi-chemin entre `|\magstep0|' (pas de magnification) et +`|\magstep1|'. Par exemple~: + +\csdisplay +\font\bigbold = cmbx10 scaled \magstephalf +| + +Vous pouvez sp\'ecifier une \refterm{dimension} comme elle sera +mesur\'ee dans le document final ind\'ependamment des magnifications en mettant +`^|true|' devant l'unit\'e. Par exemple, `|\kern 8 true pt|' +produit un cr\'enage de $8$ points quelque soit la magnification. + +\endconcept + +\concept marges + +Les \refterm{marges} +d'une page d\'efinissent un rectangle qui normalement +contient la mati\`ere imprim\'ee sur la page. +Vous pouvez demander \`a \TeX\ d'imprimer du mat\'eriel en dehors de ce rectangle, +mais uniquement en demandant des actions explicites qui d\'eplacent le mat\'eriel +\`a cet endroit. \TeX\ consid\`ere les ent\^etes et les pieds de page comme \'etant +en dehors des marges. + +Le rectangle est d\'efini en fonction de son coin en haut \`a gauche, de sa largeur, et +de sa profondeur. L'emplacement du coin en haut \`a gauche est d\'efini par +les param\`etres ^|\hoffset| +et ^|\voffset| +\ctsref\voffset. L'usage est de placer ce coin \`a un pouce du haut +et \`a un pouce du bord gauche de la page, correspondant \`a une valeur de +z\'ero pour |\hoffset| et |\voffset|% +\footnote{Il nous semble qu'il s'agisse d'une convention bizarre. +Il aurait \'et\'e plus naturel d'avoir le point $(0,0)$ +pour |\hoffset| et |\voffset| dans le coin en haut \`a gauche du +papier et d'avoir leur valeur par d\'efaut \`a un pouce.}. +La largeur du rectangle est donn\'e par ^|\hsize| et la profondeur par ^|\vsize|. + +Les implications de ces conventions sont~: +\ulist\compact +\li La marge gauche est donn\'ee par |\hoffset|\tplus|1in|. +\li La marge droite est donn\'ee par la largeur du papier moins + |\hoffset|\tplus|1in|\tplus|\hsize|. +\li La marge du haut est donn\'ee par |\voffset|\tplus|1in|. +\li La marge du bas est donn\'ee par la longueur du papier moins + |\voff!-set|\tplus|1in|\tplus|\vsize|. +\endulist +A partir de ces informations vous pouvez voir quels param\`etres vous devez +changer pour modifier les marges. + +Chaque changement que vous faites \`a |\hoffset|, |\voffset| ou |\vsize| prendra +effet la prochaine fois que \TeX\ d\'ebutera une page. En d'autres termes, si vous +les changez dans une page, le changement n'affectera que la page \emph{suivante}. +Si vous changez |\hsize|, le changement deviendra effectif imm\'ediatement. +\endconcept + + +\conceptindex{marques} +\concept marque + +Une \defterm{marque} est un \'el\'ement que vous pouvez ins\'erer dans une +liste horizontale, verticale ou math\'ematique et plus tard la retrouver dans +votre routine de sortie. Les marques sont utiles pour des usages tels que +garder une trace des sujets apparents dans des ent\^etes de page. +Chaque marque a une liste de tokens---le ``^{texte de marque}''---associ\'e avec elle. +La commande ^|\mark| \ctsref{\mark} attend une telle liste de token +comme son argument, et attend un \'el\'ement contenant cette liste de token (apr\`es +expansion) pour toute liste que \TeX\ est en train de construire. +Les commandes ^|\topmark|, ^|\firstmark| et ^|\botmark| +\ctsref{\topmark} peuvent \^etre utilis\'ees pour retrouver diverses marques sur une page. +Ces commandes sont le plus souvent utilis\'ees dans les ent\^etes et les pieds de page. +^^{pieds de page//marques utilis\'es en} +^^{ent\^etes//marques utilis\'es en} + +\margin{This example of {\tt\\mark} replaces the previous explanatory +paragraph.} +Voici un exemple simplifi\'e. +Supposez que vous d\'efinissiez une macro d'ent\^ete de section comme suit~: +\csdisplay +\def\section#1{\medskip{\bf#1}\smallskip\mark{#1}} +% #1 is the name of the section +| +^^|\mark| +Cette macro, quand elle est appel\'ee, produira un ent\^ete de section en caract\`eres gras et +enregistrera aussi le nom de la section comme marque. +Vous pouvez maintenant d\'efinir l'ent\^ete de chaque page imprim\'ee +comme suit~: +\csdisplay +\headline = {\ifodd\pageno \hfil\botmark\quad\folio + \else \folio\quad\firstmark\hfil \fi} +| +Chaque page paire (celle de gauche) aura maintenant le num\'ero de page suivi par +le nom de la premi\`ere section de cette page, tandis que chaque page impaire (celle de droite) +aura le num\'ero de page suivi du nom de la derni\`ere section de cette page. +Les cas sp\'eciaux, par exemple, pas de section commen\c cant sur une page, +s'afficheront g\'en\'eralement correctement gr\^ace \`a la mani\`ere dont travaillent +^|\firstmark| et ^|\botmark|. + +Quand vous partagez une page en utilisant la commande |\vsplit| \ctsref{\vsplit} vous +pouvez retrouver les textes de la premi\`ere et de la derni\`ere marque de la +portion non partag\'ee avec les commandes ^|\splitfirstmark| et ^|\splitbotmark| +\ctsref{\splitfirstmark}. + +Voir les \knuth{pages~258--260}{302--305} pour une explication plus pr\'ecise sur la +fa\c con de cr\'eer et retrouver des marques. +\endconcept + + +\conceptindex{mathcodes} +\concept mathcode + +Un \defterm{mathcode} est un nombre que \TeX\ utilise pour identifier et +d\'ecrire un caract\`ere math\'ematique, +^^{caract\`eres math\'ematiques//d\'ecrits par mathcodes} +c'est-\`a-dire, un caract\`ere qui a un +r\^ole particulier dans une formule math\'ematique. Un mathcode +transmet trois sortes +d'informations sur un caract\`ere~: sa position dans la \refterm{police}, sa +\refterm{famille} et sa \refterm{classe}. +Chacun des $256$ caract\`eres entr\'es possibles +a un mathcode, qui est d\'efini par le programme \TeX\ +mais peut \^etre chang\'e. + +^^{famille//comme partie de mathcode} +\TeX\ a seize familles de police, num\'erot\'ees $0$--$15$. Chaque +famille con\-tient trois polices~: une pour la \refterm{taille texte}, une pour +la \refterm{taille script} et une pour la \refterm{taille scriptscript}. \TeX\ +choisi la taille d'un caract\`ere particulier et donc sa police, +en fonction du contexte. La classe d'un caract\`ere sp\'ecifie son r\^ole +dans une formule (voir la \knuth{page~154}{180}). Par exemple, le signe \'egal `|=|' +est dans la classe $3$ (relation). \TeX\ utilise sa connaissance des classes +de caract\`eres quand il d\'ecide combien d'espace mettre entre diff\'erents +composants d'une formule math\'ematique. + +La meilleure fa\c con de comprendre ce que sont les mathcodes est de voir comment +\TeX\ les utilise. Nous montrons ce que \TeX\ fait avec un +token de caract\`ere $t$ de \refterm{code de cat\'egorie}~11 ou~12 dans une +formule math\'ematique~: + +\olist\compact +\li Il recherche le mathcode du caract\`ere. +\li Il d\'etermine une famille $f$ \`a partir du mathcode. +\li Il d\'etermine la taille $s$ \`a partir du contexte. +\li Il s\'electionne une police $F$ en prenant la police de taille $s$ dans la famille $f$. +\li Il d\'etermine un num\'ero de caract\`ere $n$ \`a partir du mathcode. +\li Il s\'electionne comme caract\`ere $c$ devant \^etre compos\'e le caract\`ere +\`a la position $n$ de la police $F$. +\li Il ajuste l'espacement autour de $c$ en fonction de la classe de $t$ et +du contexte ambiant. +\li Il compose le caract\`ere $c$. +\endolist + +La d\'ependance du contexte dans les \'etapes +(3) et (7) implique que \TeX\ ne peut pas composer un caract\`ere math\'ematique +tant qu'il n'a pas vu toute la formule contenant le +caract\`ere math\'ematique. Par exemple, dans la formule +`|$a\over b$|', \TeX\ ne sait pas quelle taille aura le `|a|' tant qu'il +n'aura pas vu le |\over|. + +{\tighten +Le mathcode d'un caract\`ere est encod\'e en fonction de la formule $4096c ++ 256f + n$, o\`u $c$ est la classe du caract\`ere, $f$ sa +\refterm{famille} et $n$ son code de \refterm{caract\`ere \ascii} dans +la famille. Vous pouvez changer l'interpr\'etation de \TeX\ pour un caract\`ere entr\'e +dans un mode math\'ematique en assignant une valeur \`a la table d'entr\'ee des ^|\mathcode| +\ctsref{\mathcode} pour ce +caract\`ere. Le caract\`ere doit avoir un +\refterm{code de cat\'egorie} \`a $11$ (lettre) ou $12$ (autre) pour que \TeX\ +recherche son |\mathcode|. +}\par + +^^{famille//variable} +Vous pouvez d\'efinir un caract\`ere math\'ematique pour avoir une famille ``variable'' en +lui donnant une classe de $7$. A chaque fois que \TeX\ rencontre ce caract\`ere dans une +formule math\'ematique, il prend la famille du caract\`ere comme \'etant la valeur +courante du param\`etre |\fam| \ctsref{\fam}. Une famille variable vous autorise +\`a sp\'ecifier la police de texte ordinaire dans une formule math\'ematique. Par +exemple, si le caract\`ere romain est dans la famille $0$, l'assignement +|\fam = 0| +fera que le texte ordinaire d'une formule math\'ematique sera mis en type romain +au lieu d'autre chose comme du type math\'ematique italique. Si la valeur de +|\fam| n'est pas dans la fourchette de $0$ \`a $15$, \TeX\ prend la valeur \`a +$0$, ainsi le rendu des classes $0$ et $7$ est \'equivalent. +\TeX\ fixe |\fam| \`a $-1$ a chaque fois qu'il entre en mode math\'ematique. +\endconcept + + +\conceptindex {math\'ematiques affich\'ees} +\concept {math\'ematique affich\'ee} + +Le terme \defterm{math\'ematique affich\'ee} fait r\'ef\'e\-rence aux formules math\'ematiques que \TeX\ +place sur une ligne seule avec de l'espace suppl\'ementaire dessus et dessous +pour le s\'eparer du texte l'environnant. +Une formule math\'ematique affich\'ee est entour\'ee de `|$$|'. +\ttidxref{$$} +\TeX\ lit les math\'ematiques affich\'ees dans le \refterm{mode} math\'ematiques affich\'ees. +\endconcept + + +\concept m\'ediocrit\'e + +La \defterm{m\'ediocrit\'e} d'une ligne mesure combien les tailles des espaces +inter-mot ^^{espacement inter-mots} de la ligne d\'evient de leurs valeurs +naturelles, c'est-\`a-dire, des valeurs sp\'ecifi\'ees dans les +\refterm{polices:police} utilis\'ees dans la ligne. Plus grande est la +d\'eviation, plus grande est la m\'ediocrit\'e. Similairement, la m\'ediocrit\'e d'une +page est une mesure de combien les espaces entre les bo\^\i tes qui dessinent +la page d\'evient de leurs valeurs id\'eales. (Ordinairement, la plupart de ces +bo\^\i tes sont des lignes simples de paragraphes.) + +Plus pr\'ecis\'ement, la m\'ediocrit\'e mesure de combien le \refterm{ressort} +associ\'e avec ces espaces doit s'\'etirer ou se r\'etr\'ecir pour remplir la +ligne ou la page exactement. \TeX\ calcule la m\'ediocrit\'e comme +approximativement $100$ fois le cube du ratio par lequel il doit \'etirer ou +r\'etr\'ecir le ressort pour composer une ligne ou une page de la taille d\'esir\'ee. +^^{coupures de ligne//m\'ediocrit\'e pour}^^{coupures de page//m\'ediocrit\'e pour} Par exemple, +\'etirer le ressort par deux fois son \'etat d'\'etirement signifie un ratio de +$2$ et une m\'ediocrit\'e de $800$~; la r\'etr\'ecir de moiti\'e son \'etat de r\'etr\'ecissement +signifie un ratio de $.5$ et une m\'ediocrit\'e de $13$. \TeX\ traite une m\'ediocrit\'e +sup\'erieure \`a $10000$ comme \'etant \'egale \`a $10000$. + +\TeX\ utilise la m\'ediocrit\'e d'une ligne quand il coupe un paragraphe en lignes +\seeconcept{coupure de ligne}. Il utilise cette information en deux \'etapes~: + +\olist +\li Quand \TeX\ choisi des coupures de ligne, +il acceptera \'eventuellement des lignes dont la m\'ediocrit\'e est inf\'erieure ou \'egale \`a +la valeur de |\tole!-rance| (\xref \tolerance). Si \TeX\ ne peut pas diminuer la conception +d'une ligne dont la m\'ediocrit\'e d\'epasse cette valeur, +il lui mettra un ``underfull ou overfull \refterm{hbox}''. +\TeX\ ne mettra +un ``overfull ou underfull hbox'' qu'en dernier ressort, c'est-\`a-dire, seulement s'il n'y a +pas d'autre moyen de d\'ecouper le paragraphe en lignes. +\li En assumant que toutes les lignes sont tol\'erablement mauvaises, \TeX\ utilise la m\'ediocrit\'e des lignes +pour \'evaluer les diff\'erents moyens de couper le paragraphe en lignes. +Durant cette \'evaluation il associe des ``d\'em\'erites'' avec chaque ligne potentielle. +La m\'ediocrit\'e augmente le nombre de \refterm{d\'em\'erites}. +\TeX\ alors +coupe le paragraphe en lignes d'une fa\c con qui minimise +le total des d\'em\'erites pour le paragraphe. +Plus +souvent \TeX\ arrange le paragraphe pour minimiser la m\'ediocrit\'e de la +ligne la pire. Voir \knuth{pages~97--98}{114--115} pour les d\'etails comment \TeX\ +coupe un paragraphe en lignes. +\endolist + +La proc\'edure de \TeX\ pour assembler une s\'equence de lignes et autres mati\`eres en modes verticaux +en pages est similaire \`a sa proc\'edure de coupure de ligne. +De toutes fa\c cons, assembler des pages n'est pas aussi compliqu\'e parce que +\TeX\ ne consid\`ere qu'une page \`a la fois +quand il cherche des coupures de page. +Donc la seule d\'ecision qu'il doit prendre est o\`u finir la page courante. +De plus, quand \TeX\ choisit des coupures de ligne il en +consid\`ere plusieurs simultan\'ement. +(La plupart des traitements de texte choisissent des coupures de ligne une \`a la fois, +et donc ne font pas un aussi bon boulot que celui que fait \TeX\.) +Voir \knuth{pages~111--113}{129--131} pour les d\'etails sur comment \TeX\ choisit ses +coupures de page. +\endconcept + + +\conceptindex{modes} +\concept mode + +Quand \TeX\ dig\`ere votre entr\'ee dans son estomac \seeconcept{\anatomy}, +il est dans un des six \defterm{modes}~: +\ulist\compact +\li ^{mode horizontal ordinaire} (assemblage d'un paragraphe) +\li ^{mode horizontal restreint} (assemblage d'une \refterm{hbox}) +\li ^{mode vertical ordinaire} (assemblage d'une page) +\li ^{mode vertical restreint} (assemblage d'une \refterm{vbox}) +\li ^{mode math\'ematique de texte} (assemblage d'une formule apparaissant dans du texte) +\li ^{mode math\'ematique hors-texte} +(assemblage d'une formule apparaissant sur une ligne seule) +^^{mode horizontal}^^{mode vertical}^^{mode math\'ematique} +\endulist +Le mode d\'ecrit une sorte d'entit\'e que \TeX\ rassemble. + +Parce que vous pouvez encastrer une sorte d'entit\'e avec une autre, c'est-\`a-dire, une vbox +dans une formule, \TeX\ garde trace non seulement d'un mode mais d'une +liste enti\`ere de modes (ce qu'un informaticien appelle une ``pile''). +Supposez que \TeX\ soit en mode $M$ et rencontre quelque chose qui le +met dans une nouveau mode \Mprimeperiod. Quand il termine son travail dans +le mode \Mprimecomma, il reprend ce qu'il faisait dans le mode \Mperiod. + +\endconcept + + +\concept {mode horizontal} + +^^{hbox//mode horizontal pour} +Quand \TeX\ assemble un paragraphe ou une \refterm{hbox}, il est dans un +des deux \defterm{modes horizontaux}~: le ^{mode horizontal ordinaire} +pour assembler des paragraphes et le ^{mode horizontal restreint} pour +assembler des bo\^\i tes horizontales. A chaque fois que \TeX\ est dans un mode horizontal +son estomac \seeconcept{\anatomy} construit une \refterm{liste horizontale} +d'articles (bo\^\i tes, ressort, p\'enalit\'es, etc.). +\TeX\ compose les articles dans la liste +l'un apr\`es l'autre, de gauche \`a droite. + +Une liste horizontale ne peut contenir aucun +article produit par des commandes verticales internes, par exemple, |\vskip|. +^^{listes horizontales//ne peuvent contenir de commandes verticales} + +\ulist +\li Si \TeX\ assemble une liste horizontale dans le mode horizontal ordinaire et +rencontre une commande verticale interne, \TeX\ termine le paragraphe et +entre dans le \refterm{mode vertical}. + +\li Si \TeX\ assemble une liste horizontale dans le mode horizontal +interne et rencontre une commande verticale interne, il rousp\`ete. +\endulist + +Deux commandes que vous pensez d'abord horizontales internes +sont en fait verticales internes~: |\halign| \ctsref{\halign} +et |\hrule| \ctsref{\hrule}. +^^|\hrule//vertical par nature| +^^|\halign//vertical par nature| +voir la \knuth{page~286}{332} pour une liste +des commandes verticales internes. + +{\tighten +Vous devez faire attention \`a une subtile mais importante propri\'et\'e du mode +horizontal interne~: \emph{vous ne pouvez pas entrer en mode horizontal interne +quand vous \^etes en mode horizontal normal}. Ce que cela signifie en pratique +est que quand \TeX\ assemble une hbox il n'appr\'ehendera pas un texte en +paragraphe, c'est-\`a-dire, du texte pour lequel il ferait une \refterm{coupure +de ligne}. Vous pouvez contourner cette restriction en englobant le texte en +paragraphe dans une \refterm{vbox} \`a l'int\'erieur de l'hbox. la m\^eme m\'ethode +marche si vous voulez mettre, disons un \refterm{alignement} horizontal dans +un~hbox. +}% end scope of tighten + +\endconcept + + +\concept {mode math\'ematique} + +{\tighten +Un \defterm{mode math\'ematique} est un \refterm{mode} dans lequel \TeX\ +construit une formule math\'ematique. \TeX\ a deux modes math\'ematiques diff\'erents~: Le +^{mode math\'ematique de texte} construit une formule devant \^etre englob\'ee dans une ligne de texte, +tanfis que le ^{mode math\'ematique d'affichage} construit une formule devant +appara\^\i tre seul sur une ligne. Vous indiquez le mode math\'ematique de texte +en englobant la formule entre |$| et dans le mode math\'ematique d'affichage en +englobant la formule entre |$$|. +%\TeX\ will accept most \refterm{commands:command} in +%math mode. If it encounters a command in math mode that doesn't make +%sense in a formula, it will complain. +Une propri\'et\'e importante des deux modes math\'ematiques est que les +\emph{espace saisis ne comptent pas}. Voir les +\knuth{pages~290--293}{338--342} pour des d\'etails sur la fa\c con dont \TeX\ r\'epond aux +diff\'erentes commandes en mode math\'ematique. +\par} + +\endconcept + + +\concept {mode ordinaire} + +Le \defterm{mode ordinaire} est le \refterm{mode} dans lequel est \TeX\ quand +il assemble un paragraphe en lignes ou assemble des lignes +en une page. Voir \conceptcit{mode horizontal}, \conceptcit{mode vertical}. +\endconcept + + +\concept {mode restreint} + +Le \defterm{mode restreint} est le \refterm{mode} dans lequel est \TeX\ quand +il assemble une \refterm{hbox} ou une \refterm{vbox}. +Nous suivons \texbook\ dans l'utilisation du terme ``mode vertical interne'' +pour ce que vous vous attendez \^etre un ``mode vertical restreint''. +Voir \conceptcit{mode horizontal} et \conceptcit{mode vertical}. +\endconcept + + +\concept {mode vertical} + +^^{vbox//mode vertical pour} Quand \TeX\ assemble soit une +\refterm{vbox} soit la liste verticale principale dont les pages sont d\'eriv\'ees, +il est dans un des deux \defterm{modes verticaux}~: le ^{mode vertical ordinaire} +pour assembler la liste verticale principale et le ^{mode vertical restreint} +pour assembler les vbox. A chaque fois que \TeX\ est en mode vertical +son estomac \seeconcept{\anatomy} construit une \refterm{liste verticale} +d'\'el\'ements (bo\^\i tes, ressort, p\'enalit\'es, etc.). +\TeX\ compose les \'el\'ements de la liste +l'un apr\`es l'autre, de haut en bas. + +Une liste verticale ne peut pas contenir tous les \'el\'ements produits par +des commandes fondamentalement horizontales, c'est-\`a-dire, +^^{listes verticales//ne peuvent contenir de commandes horizontales} +|\hskip| ou un caract\`ere ordinaire (pas un espace) +\footnote{\TeX\ \emph{ignore} tout caract\`ere espace +qu'il rencontre quand il est dans un mode vertical.}. + +\ulist +\li Si \TeX\ assemble une liste verticale dans le mode vertical ordinaire et +rencontre une commande fondamentalement horizontale, il bascule vers le +\refterm{mode horizontal} ordinaire. +\li Si \TeX\ assemble une liste verticale dans le mode vertical interne et +rencontre une commande fondamentalement horizontale, il rousp\`ete. +\endulist + +Deux commandes auxquelles vous devez penser en premier qu'elles sont fondamentalement verticales sont +en fait fondamentalement horizontales~: |\valign| \ctsref{\valign} et |\vrule| +\ctsref{\vrule}. +^^|\valign//horizontal par nature| +^^|\vrule//horizontal par nature| +Voir la \knuth{page~283}{329} pour une liste des commandes +fondamentalement horizontales. + +Il est particuli\`erement important d'avoir conscience que \TeX\ consid\`ere un +caract\`ere ordinaire autre qu'un espace comme \'etant fondamentalement horizontal. +Si \TeX\ d\'ebute soudainement un nouveau paragraphe quand vous ne vous y +attendez pas une cause vraisemblable est un caract\`ere que \TeX\ a rencontr\'e +en \'etant en mode vertical. Vous pouvez convaincre \TeX\ de ne pas traiter ce +caract\`ere comme fondamentalement horizontal en l'englobant dans une +\refterm{hbox} puisque la commande |\hbox|, malgr\'e son nom, n'est ni +fondamentalement horizontale ni fondamentalement verticale. +\endconcept + + +\conceptindex{mots de contr\^ole} +\concept {mot de contr\^ole} + +Un \defterm{mot de contr\^ole} est une \refterm{s\'equence de contr\^ole} qui +est constitu\'e d'un \refterm{caract\`ere d'\'echappement} suivi d'une ou plusieurs +lettres\footnote{Une ``lettre'' ici a la strict signification d'un +caract\`ere de code de cat\'egorie $11$.}. +\TeX\ +ignore tout espace ou fin de ligne qui suit un mot de contr\^ole, sauf pour +noter qu'ils terminent le mot de contr\^ole. +^^{caract\`ere d'\'echappement} +\endconcept + + +\concept muglue + +Une \defterm{muglue} est une sorte de \refterm{ressort} +que vous ne pouvez utiliser que dans les formules math\'ematiques. +Elle est mesur\'ee en ^|mu| (\refterm{unit\'es math\'ematiques:unit\'e +math\'ematique}). +^^{unit\'es math\'ematiques}^^{ressort//math\'ematique} +Une |mu| est \'egale \`a \frac1/{18} em, o\`u +la taille d'un em est prise de la \refterm{famille} 2 des polices math\'ematiques. +\TeX\ ajuste automatiquement la taille de la muglue en fonction du contexte. +Par exemple, une taille de ressort de |2mu| est normalement plus petite dans un +sous-script que dans un texte ordinaire. +Vous devez utiliser la commande ^|\mskip| pour produire une muglue. +Par exemple, `|\mskip 4mu plus 5mu|' produit un ressort math\'ematique avec un +espace naturel de quatre |mu| et un \refterm{\'etirement} de cinq |mu|. + +\endconcept + + +\conceptindex{noms de fichier} +\concept {nom de fichier} + +Un \defterm{nom de fichier} nomme un +\refterm{fichier} qui est connu du ^{syst\`eme d'exploitation} +qui +supervise votre ex\'ecution de \TeX. La syntaxe d'un nom de fichier ne doit \emph{pas} +suivre les r\`egles usuelles de la syntaxe de \TeX\ et en fait est diff\'erente +selon les diff\'erentes impl\'emen\-ta\-tions de \TeX. +En particulier, la plupart des impl\'ementations de \TeX\ consid\`erent un nom de fichier +comme \'etant +termin\'e par un blanc ou une fin de ligne. Ainsi \TeX\ est susceptible de +mal interpr\'eter `|{\input chapter2}|' +en prenant l'accolade droite comme partie du nom de fichier. +Comme r\`egle g\'en\'erale, vous devez faire suivre un nom de fichier d'un blanc ou +d'une fin de ligne comme dans `|{\input chapter2!visiblespace}|'. + +\endconcept + + +\conceptindex{nombres} +\concept nombre + +En \TeX, un \defterm{nombre} est un entier positif ou n\'egatif. +Vous pouvez \'ecrire un nombre en \TeX\ de quatre fa\c cons diff\'erentes~: +\olist\compact +\li comme un entier d\'ecimal ordinaire, par exemple, |52| +\li comme un nombre octal, par exemple, |'14| ^^{nombres octaux} +\li comme un nombre hexad\'ecimal, par exemple, |"FF0| ^^{nombres hexad\'ecimaux} +\li comme le code d'un \refterm{caract\`ere \ascii}, par exemple, |`)| +ou |`\)| +\endolist +\noindent +Chacune de ces formes peut \^etre pr\'ec\'ed\'ee par `|+|' ou `|-|'. + +Un nombre octal ne peut avoir que les chiffres |0|--|7|. +^^{nombres octaux} +Un nombre hexa\-d\'ecimal peut avoir les chiffres |0|--|9| et +|A|--|F|, repr\'esentant +les valeurs de $0$ \`a $15$. +^^{nombres hexad\'ecimaux} +Vous ne pouvez, h\'elas, utiliser de lettres minuscules quand vous \'ecrivez un nombre hexad\'ecimal. +Si vous voulez des explications sur les nombres octaux et hexad\'ecimaux, +vous en trouverez dans les \knuth{pages~43--44}{53--54}. + +Un nombre d\'ecimal, octal ou hexad\'ecimal +se termine au premier caract\`ere qui ne peut faire partie du nombre. +Ainsi un nombre d\'ecimal se termine quand \TeX\ voit, disons, une lettre, +tandis qu'une lettre entre `|A|' et `|F|' ne terminera pas un nombre hexad\'ecimal. +Vous pouvez terminer un nombre avec un ou plusieurs espaces et normalement, +\TeX\ les ignorera\footnote{ +Quand vous d\'efinissez une macro qui se termine par un nombre, vous devez +toujours mettre un espace apr\`es ce nombre~; autrement, \TeX\ pourrait combiner +ce nombre avec autre chose.}. + +La quatri\`eme forme ci-dessus sp\'ecifie un nombre comme le code +\minref{\ascii} d'un caract\`ere. +^^{caract\`eres//codes \ascii\ pour} +\TeX\ ignore les espaces apr\`es cette forme de nombre aussi. +Vous pouvez \'ecrire un nombre de cette forme soit comme |`|$c$ soit comme |`\|$c$. +La seconde forme, bien que plus longue, a l'avantage que vous pouvez l'utiliser +avec \emph{tout} caract\`ere, m\^eme `|\|', `|%|', ou `|^^M|'. +En revanche, il y a un inconv\'enient plut\^ot technique~: quand \TeX\ d\'eveloppe +une s\'equence de tokens pour une commande telle que |\edef| ou |\write|, +^^|\edef//expansion de {\tt\\'\it c} en| +^^|\write//expansion de {\tt\\'\it c} en| +des occurrences de `|\|$c$' repr\'esentant un nombre sera aussi d\'evelopp\'ee + si elle peut l'\^etre. +C'est rarement l'effet que vous d\'esirez. + +Ce qui suit sont des repr\'esentations valides du nombre d\'ecimal +$78$~: +\csdisplay +78 +078 "4E '116 `N `\N +| + + +Vous ne pouvez utiliser un nombre dans du texte par lui-m\^eme car un nombre n'est pas +une commande. +N\'eanmoins, vous pouvez ins\'erer la forme d\'ecimale d'un nombre dans du texte +en mettant une commande ^|\number| (\xref\number) devant lui +ou la forme num\'erique romaine en mettant une commande ^|\romannumeral| +devant lui. + +Vous pouvez aussi utiliser des ^{constantes d\'ecimales}, +par exemple, des nombres avec une partie fractionnaire, +pour sp\'ecifier des dimensions \seeconcept{dimension}. +Une constante d\'ecimale a un ^{point d\'ecimal}, qui peut \^etre +le premier caract\`ere de la constante. Vous pouvez utiliser une +virgule au lieu d'un point pour repr\'esenter le point d\'ecimal. +Une constante d\'ecimale peut \^etre pr\'ec\'ed\'ee par un signe plus ou moins. +Ainsi `|.5in|', +`|-3.22pt|' et `|+1,5\baselineskip|' sont des dimensions valides. +Vous ne pouvez, par contre, utiliser de constantes d\'ecimales +dans tous les contextes \emph{autres} comme la partie ``facteur'' d'une dimension, +c'est-\`a-dire, son multiplicateur. + + +\endconcept + + +\concept outer + +\bix^^{macros//outer} +Une macro \defterm{outer} est une macro que vous ne pouvez utiliser dans +certains contextes o\`u \TeX\ assemble des tokens \`a grande vitesse. +Le but de rendre une commande outer est d'obliger \TeX\ \`a g\'en\'erer +des erreurs avant d'aller trop loin. +Quand vous d\'efinissez une macro, vous pouvez la rendre outer avec la commande +^|\outer| \ctsref\outer. + +Vous ne pouvez utiliser de macro outer dans aucun des contextes suivants~: +\ulist\compact +\li comme argument d'une macro +\li dans le texte param\`etre ou le texte de remplacement d'une d\'efinition +\li dans le pr\'eambule d'un alignement +\li dans la partie non ex\'ecut\'ee d'un test conditionnel +\endulist +\noindent +Un contexte outer est un contexte dans lequel vous pouvez utiliser une +macro outer, c'est-\`a-dire c'est tout contexte autre que ceux list\'es ci-dessus. + +Par exemple, l'entr\'ee suivante sera une utilisation interdite d'une macro outer +\csdisplay +\leftline{\proclaim Assertion 2. That which is not inner + is outer.} +| +La macro |\proclaim| (\xref{\@proclaim}) est d\'efinie en \plainTeX\ +comme \'etant outer, mais elle est utilis\'ee ici comme un macro argument \`a + |\leftline|. +\eix^^{macros//outer} + +\endconcept + + +\conceptindex{pages} +\concept page + +\TeX\ compile un document en assemblant des \defterm{pages} une par une +et en les passant \`a la routine de sortie. +Quand il lit votre document, \TeX\ maintient une liste des lignes +et d'autres \'el\'ements \`a placer sur la page. (Les lignes sont normalement des +hbox.) Cette liste est appel\'ee la ``^{liste verticale principale}''. +P\'eriodiquement \TeX\ rentre dans un processus appel\'e ``devoir du +^{constructeur de page}''. +Les \'el\'ements ajout\'es \`a la liste verticale principale entre les devoirs +du constructeur de page sont appel\'e ``^{contributions r\'ecentes}''. + +Le constructeur de page examine d'abord la liste verticale principale pour voir si elle +a besoin de d\'eposer une page maintenant, soit parce que les \'el\'ements sur la liste +verticale principale ne tiennent pas sur la page, soit parce que un \'el\'ement +sp\'ecifique, tel que |\eject| \ctsref\eject, demande \`a \TeX\ de finir la page. +S'il n'est pas n\'ecessaire de d\'eposer une page, alors le constructeur de page +est fait pour la prochaine fois. + +Autrement, le constructeur de page analyse la liste verticale principale pour +trouver ce qu'il consid\`ere comme \'etant la meilleure coupure de page possible. +Il associe des p\'enalit\'es avec plusieurs types de coupure de page peu attirantes---une +coupure qui laisse une ligne isol\'ee en haut ou en bas de la page, une coupure +juste avant un affichage math\'ematique, et ainsi de suite. Il choisit alors +la coupure de page la moins ch\`ere +o\`u le co\^ut d'une coupure est augment\'e de toute p\'enalit\'e associ\'ee avec cette +coupure et par la m\'ediocrit\'e de la page qui en r\'esulte +(voir la \knuth{page~111}{130} pour la formule du co\^ut). S'il trouve plusieurs +coupures de page de co\^ut identique, il choisit la derni\`ere. + +{\tighten +Une fois que le constructeur de page a choisi une coupure de page, +il place les \'el\'ements de la liste qui sont avant cette coupure +dans la ^|\box255| et garde le reste pour la page suivante. +Il appelle alors la routine de sortie. |\box255| agit comme une bo\^\i te +aux lettres, avec le constructeur de page comme exp\'editeur et la routine de +sortie comme destinataire. +Ordinairement la routine de sortie traite la |\box255|, ajoute +d'autres \'el\'ements, comme des insertions, ent\^ete et pieds de page \`a la page et +envoit la page vers le \dvifile\ +^^{\dvifile//mat\'eriel de la routine de sortie} +avec une commande |\shipout|. +(Des routines de sortie sp\'ecialis\'ees peuvent agir diff\'eremment.) +Du point de vue de \TeX, il importe peu que la routine de sortie envoie +la page ou non~; +La seule +responsabilit\'e de la routine de sortie est de traiter la |\box255| d'une fa\c con +ou d'une autre. +\par} + +{\tighten +Il est important de r\'ealiser que le meilleur endroit pour couper une page +n'est pas n\'ecessairement le dernier endroit possible pour couper la page. +Des p\'enalit\'es et autres consid\'erations peuvent faire que la coupure de page +ait lieu plus t\^ot. De plus, \TeX\ appr\'ehende les \'el\'ements de la liste verticale +principale en batch, pas seulement un par un. Les lignes d'un paragraphe sont +un exemple d'un tel batch. Pour ces raisons, le constructeur de page garde +des \'el\'ements sous le coude quand il coupe une page. Ces \'el\'ements mis en r\'eserve +forment alors le d\'ebut de la liste verticale principale de la page suivante +(vraisemblablement au milieu d'un batch). Parce que des \'el\'ements sont d\'eplac\'es +d'une page \`a une autre, vous pouvez \^etre s\^ur que quand \TeX\ ex\'ecute l'entr\'ee, +le num\'ero de la page courante refl\`ete la page sur laquelle la sortie correspondante +appara\^\i tra. Voir les \knuth{pages~110--114}{128--133} pour une description compl\`ete +des r\`egles de coupure de page de \TeX. +\par} + +\endconcept + + +\conceptindex{paragraphes} +\concept paragraphe + +Intuitivement, un \defterm{paragraphe} est une suite de lignes de saisie +se terminant par une ligne blanche, une commande |\par| \ctsref{\@par} +^^|\par//terminer un paragraphe avec| +ou par une commande intrins\`equement verticale, telle que |\vskip|. +Plus pr\'ecis\'ement, un paragraphe est une s\'equence de commandes que \TeX\ ex\'ecute +en mode horizontal restreint. +Quand \TeX\ a collect\'e un paragraphe entier, il le transforme en une s\'equence de +lignes en choisissant les coupures de ligne \seeconcept{coupure de ligne}. +Le r\'esultat est une liste de hbox avec ressort, p\'enalit\'e interligne +et mat\'eriel vertical imbriqu\'e entre. +Chaque hbox est une simple ligne et le ressort est le ressort inter-ligne. + +%\eject +\TeX\ d\'ebute un paragraphe quand il est dans un mode vertical et +rencontre une commande fondamentalement horizontale. +En particulier, il est en mode vertical juste apr\`es avoir termin\'e un +paragraphe, donc le mat\'eriel horizontal sur la ligne suivant une ligne +blanche d\'ebute le paragraphe suivant de mani\`ere naturelle. +Il y a plusieurs types de commandes fondamentalement horizontales, mais le +type le plus commun est un caract\`ere ordinaire, c'est-\`a-dire, une lettre. + +\looseness = -1 +Les commandes ^|\indent| et ^|\noindent| +(\pp\xrefn{\indent},~\xrefn{\noindent}) +sont aussi des commandes fondamentalement horizontales qui demandent \`a +\TeX\ d'in\-denter ou non le d\'ebut d'un paragraphe. +Toute autre commande horizontale en mode vertical +fait que \TeX\ fait un |\indent| implicite. +Une fois que \TeX\ a commenc\'e un paragraphe, il est en mode horizontal ordinaire. +Il commence par suivre toutes commandes situ\'ees dans ^|\everypar|. +Il commence alors \`a collecter des \'el\'ements pour le paragraphe jusqu'a +ce qu'il re\c coive un signal de la fin du paragraphe. +A la fin du paragraphe il r\'einitialise les param\`etres de formation de +paragraphe ^|\parshape|, |\hang!-indent|, +^^|\hangindent| +et ^|\looseness|. + +\TeX\ traduit normalement une ligne blanche par |\par|. +Il ins\`ere aussi +un |\par| dans l'entr\'ee chaque fois, en mode horizontal, qu'il +rencontre une commande intrins\`equement verticale. +Donc finalement la chose qui termine un paragraphe est toujours une commande |\par|. + +Quand \TeX\ re\c coit une commande |\par|, il compl\`ete d'abord\footnote{% +Plus pr\'ecis\'ement, il ex\'ecute les commandes~: +\csdisplay +\unskip \penalty10000 \hskip\parfillskip +| +apportant ainsi les \'el\'ements de ces commandes +\`a la fin de la liste horizontale courante.} +le paragraphe sur lequel il travaille. +Il coupe alors le paragraphe en lignes, +ajoute la liste r\'esultante d'\'el\'ements dans la liste verticale englobante +et ex\'ecute le constructeur de page +(dans le cas o\`u la liste verticale englobante est la liste verticale principale). +Si le paragraphe se termine par une commande intrins\`equement verticale, +\TeX\ ex\'ecute alors cette commande. + +\endconcept + +\conceptindex{param\`etres} +\concept param\`etre + +Le terme \defterm{param\`etre} a deux significations diff\'erentes---il peut faire +r\'ef\'erence soit \`a un param\`etre de \TeX, soit \`a un param\`etre de macro. + +Un param\`etre de \TeX\ est une \refterm{s\'equence de contr\^ole} qui nomme +une valeur. +La valeur d'un param\`etre peut \^etre un \refterm{nombre}, une \refterm{dimension}, +un montant de \refterm{ressort}, de muglue ou une \refterm{liste de tokens}. +Par exemple, le param\`etre ^|\parindent| +sp\'ecifie la distance que \TeX\ saute au d\'ebut d'un paragraphe indent\'e. + +Vous pouvez utiliser la s\'equence de contr\^ole d'un param\`etre soit pour r\'etablir la valeur +du param\`etre soit pour fixer cette valeur. \TeX\ interpr\`ete la s\'equence de contr\^ole +comme une requ\^ete pour une valeur si elle appara\^\i t dans un contexte o\`u une valeur est attendue, +et comme un \refterm{assignement} autrement. +^^{assignements} +Par exemple~: +\csdisplay +\hskip\parindent +| +produit un \refterm{ressort} horizontal dont la taille naturelle est donn\'ee +par |\par!-indent|, +tandis que~: +\csdisplay +\parindent = 2pc % (ou \parindent 2pc) +| +fixe |\parindent| \`a une longueur de deux picas. L'assignement~: +\csdisplay +\parindent = 1.5\parindent +| +utilise |\parindent| des deux fa\c cons. Son effet est de multiplier la valeur de +|\parindent| par $1.5$. + +Vous pouvez penser \`a un param\`etre comme \`a un \refterm{registre} construit. +^^{registres//param\`etres comme} +Vous trouverez la liste de tous les param\`etres de \TeX\ dans les \knuth{pages~272--275}{317--318}. + +Un param\`etre de \refterm{macro} est un endroit qui garde la place du texte +qui est branch\'e dans la d\'efinition d'une macro. Voir \conceptcit{macro} +pour plus d'informations sur ce type de param\`etre. + +\endconcept + + +\conceptindex{penalties} +\concept p\'enalit\'e + +Une \defterm{p\'enalit\'e} est un \'el\'ement que vous pouvez inclure dans une +liste horizontale, verticale ou math\'ematique +pour d\'ecourager \TeX\ de couper la liste +\`a cet endroit ou encourager \TeX\ de couper la liste ici. +^^{listes horizontales//p\'enalit\'es dans} +^^{listes verticales//p\'enalit\'es dans} +Une p\'enalit\'e positive indique un mauvais point de coupure, tandis qu'une +p\'enalit\'e n\'egative indique un bon point de coupure. +Couper une liste horizontale ordinaire +produit une \refterm{coupure de ligne}, tandis que couper une liste +verticale ordinaire produit +une \refterm{coupure de page}. +(Une p\'enalit\'e n'a aucun effet en \refterm{mode} horizontal restreint ou +vertical interne.) + +Vous pouvez utiliser la commande +|\penalty| (\pp\xrefn{hpenalty},~\xrefn{vpenalty}) +pour ins\'erer une p\'enalit\'e explicitement. +Une p\'enalit\'e de $10000$ ou plus emp\^eche une coupure, tandis qu'une p\'enalit\'e de +$-10000$ ou moins force une coupure. +\endconcept + + +\conceptindex{pieds de page} +\concept {pied de page} + +Un \defterm{pied de page} est du mat\'eriel que \TeX\ met en bas de chaque page, +sous le texte de cette page. +Le pied de page par d\'efaut en \plainTeX\ est un num\'ero de page centr\'e. +D'habitude un pied de page consiste en une ligne simple, que vous pouvez +d\'efinir en assignant une liste de tokens \`a ^|\footline| \ctsref\footline. +Voir \xrefpg{bighead} pour une m\'ethode de production de pied de page multi-ligne. + +\endconcept + +%k \vskip 0pt plus 2pt % to solve page break problem + +%\eject +\concept {\plainTeX} + +\defterm{\PlainTeX} est le format de \TeX\ d\'ecrit dans ce +livre et dans \texbook. \PlainTeX\ est une partie du syst\`eme \TeX\ standard, +donc des documents qui n'utilisent que les am\'enagements de \plainTeX\ peuvent +facilement \^etre transf\'er\'es d'une installation vers une autre sans +difficult\'e. + +\PlainTeX\ est constitu\'e de commandes \refterm{primitive}s auxquelles se joignent +une large collection de macros et +autres d\'efinitions. Ces d\'efinitions additionnelles sont d\'ecrites dans +l'\knuth{annexe~B}{}. Vous pourrez aussi les trouver dans le fichier |plain.tex| +quelque part sur votre syst\`eme informatique. +\endconcept + + +\concept {point de r\'ef\'erence} + +^^{lignes de base} +^^{\boites//point de r\'ef\'erence de} +Le \defterm{point de r\'ef\'erence} d'une \refterm{bo\^\i te} est le point o\`u le +cot\'e gauche de la bo\^\i te est en intersection avec sa \refterm{ligne de base}. +Quand \TeX\ ex\'ecute une \refterm{liste horizontale} ou +\refterm{verticale:liste verticale}, il utilise les points de r\'ef\'erence +des bo\^\i tes dans la liste pour aligner ces bo\^\i tes horizontalement ou +verticalement \seeconcept{\boites}. +\endconcept + +\conceptindex{polices} +\concept police + +Une \defterm{police} en \TeX\ est une collection de jusqu'a $256$ caract\`eres +de sortie, ayant normalement les m\^emes design, style (romain, +italique, gras, condens\'e, etc.), +et taille\footnote{\PlainTeX\ utilise une police sp\'eciale +pour construire les ^{symboles math\'ematiques} pour lesquelles les caract\`eres +ont diff\'erentes tailles. D'autres polices sp\'eciales sont souvent utiles pour +des applications comme le composition de ^{logos}.}. +La ^{police Computer Modern} qui est fournie +g\'en\'eralement avec \TeX\ n'a que $128$ caract\`eres. Le colophon sur la +derni\`ere page de ce livre d\'ecrit les polices que nous avons utilis\'ees pour composer +ce livre. + +Par exemple, voici l'alphabet en police romaine Palatino de $10$ points~: +^^{police Palatino} +\vskip\abovedisplayskip{\narrower\tenpal +\noindent ABCDEFGHIJKLMNOPQRSTUVWXYZ\hfil\break +abcdefghijklmnopqrstuvwxyz\par +}\vskip\belowdisplayskip +\noindent +et le voici dans la police Computer Modern Grasse \'etendue de $12$ +point~: +^^{police Computer Modern} +\vskip\abovedisplayskip{\narrower\font\twelvebf=cmbx12\twelvebf +\noindent ABCDEFGHIJKLMNOPQRSTUVWXYZ\hfil\break +abcdefghijklmnopqrstuvwxyz\par +}\vskip\belowdisplayskip +Les caract\`eres d'une police sont num\'erot\'es. +La num\'erotation s'accorde normalement avec la num\'erotation ^{\ascii} +pour les caract\`eres existants dans le jeu de caract\`eres \ascii. +La table de code de chaque police indique \`a quoi ressemble le caract\`ere +avec le code $n$ dans cette police. +Certaines polices, comme celles utilis\'ees pour les symboles math\'ematiques, n'ont pas +de lettres. Vous pouvez produire une \refterm{bo\^\i te} contenant le +caract\`ere num\'erot\'e $n$, compos\'e dans la police courante, en \'ecrivant `|\char |$n$' + \ctsref{\char}. + +Pour utiliser une police dans votre document, +vous devez d'abord la nommer avec une s\'equence de contr\^ole et la charger. Alors vous +pourrez la s\'electionner en saisissant +cette s\'equence de contr\^ole quand vous voulez l'utiliser. +\PlainTeX\ procure un certain nombre de polices d\'ej\`a nomm\'ees et~charg\'ees. + +Vous nommez et chargez une police comme une simple op\'eration, avec une +commande comme `|\font\twelvebf=cmbx12|'. Ici, `|\twelvebf|' est la s\'equence +de contr\^ole que vous utilisez pour nommer la police et `|cmbx12|' identifie +le fichier de m\'etrique de la police |cmbx12.tfm| sur votre syst\`eme de +fichier. Vous pouvez alors commencer \`a utiliser la police en saisissant +`|\twelvebf|'. Apr\`es cela, la police sera effective jusqu'a ce que soit +(a)~vous s\'electionnez une autre police, (b)~vous terminez le \refterm{groupe} + dans lequel vous avez commenc\'e avec la police. Par exemple, +la saisie~: + +\csdisplay +{\twelvebf white rabbits like carrots} +| +fera que la police |cmbx12| ne sera effective que pour le texte +`|white rabbits like carrots|'. + +Vous pouvez utiliser \TeX\ avec d'autres polices que Computer Modern +(regardez l'exemple sur \xrefpg{palatino} et les ent\^etes de page). +Les fichiers de telles polices doivent \^etre install\'es sur votre syst\`eme +de fichier \`a une place o\`u \TeX\ puisse les trouver. \TeX\ et ses programmes +compagnons ont g\'en\'eralement besoin de deux fichiers pour chaque police~: +un pour les m\'etriques (|cmbx12.tfm|, +^^{\tfmfile} +par exemple) et un autre pour la forme +des caract\`eres (|cmbx12.pk|, par exemple). +\TeX\ lui-m\^eme n'utilise que les fichiers de m\'etriques. +Un autre programme, le pilote de p\'eriph\'erique, +^^{drivers de p\'eriph\'erique} +convertit le \dvifile\ +^^{\dvifile//convertit par driver} +produit par \TeX\ en une forme que votre imprimante +ou autre p\'eriph\'erique de sortie puisse interpr\'eter. Le pilote +utilise le fichier de forme (s'il existe). + +Le fichier de m\'etrique de la police contient l'information dont \TeX\ \`a +besoin pour allouer de l'espace pour chaque caract\`ere compos\'e. +Ainsi il inclut la taille de chaque caract\`ere, les ligatures et cr\'enages +qui modifient les suites de caract\`eres adjacents, et ainsi de suite. +Ce que le fichier de m\'etrique n'inclut \emph{pas} sont les informations +sur les formes des caract\`eres de la police. + +{\tighten +Le fichier de forme (pixel) \xrdef{shape} +^^{fichier de pixel}^^{fichier de forme} +peut \^etre de diff\'erents +formats. La partie d'extension du nom (la partie apr\`es le point) +informe le pilote sur le format dans lequel est le fichier de forme. +Par exemple, +|cmbx12.pk| ^^{\pkfile} est le fichier de forme de la police |cmbx12| en +format compress\'e, tandis que |cmbx12.gf| ^^{\gffile} est le fichier de forme +pour la police |cmbx12| en format de police g\'en\'erique. +Un fichier de forme peut ne pas \^etre n\'ecessaire pour une police r\'esidente dans votre +p\'eriph\'erique de sortie. +\par} + +\endconcept + + +\concept {primitive} + +Une \refterm{commande} \defterm{primitive} est une commande dont la d\'efini\-tion +est construite dans le programme informatique \TeX. +Au contraire, une commande qui n'est pas une +primitive est d\'efinie par une \refterm{macro} ou un autre format de +d\'efinition \'ecrit en \TeX. Les commandes dans \refterm{\plainTeX} +sont constitu\'ees de commandes primitives auxquelles se joignent +d'autres commandes d\'efinies en termes de +primitives. +\endconcept + + +\concept profondeur + +^^{\boites//profondeur de} +La \defterm{profondeur} d'une \refterm{bo\^\i te} est la distance par laquelle +la bo\^\i te s'\'etend sous sa \refterm{ligne de base}. +\endconcept + + +\conceptindex{registres} +\concept registre + +Un \defterm{registre} est une place nomm\'ee pour stocker une valeur. +C'est plus comme une variable dans un langage de programmation. +\TeX\ a cinq sortes de registres, comme montr\'e dans le tableau suivant~: + +\vdisplay{\tabskip 10pt\halign{\tt #\hfil &#\hfil\cr +{\it Type de registre}&{\it Contenus}\cr +box&une \refterm{bo\^\i te} \idxref{registres de \boite}\cr +count&une \refterm{nombre} \idxref{registres de compteur}\cr +dimen&une \refterm{dimension} \idxref{registres de dimension}\cr +muskip&\refterm{muglue} \idxref{registres de muglue}\cr +skip&\refterm{ressort} \idxref{registres de ressort}\cr +toks&un \refterm{token} list\idxref{registres de token}\cr}} + +Les registres de chaque type sont num\'erot\'es de $0$ \`a $255$. +Vous pouvez acc\'eder au registre $n$ de cat\'egorie $c$ en utilisant la forme `|\|$cn$', +c'est-\`a-dire, |\muskip192|. +Vous pouvez utiliser un registre +n'importe o\`u cette information de type appropri\'e est appel\'ee. Par +exemple, vous pouvez utiliser |\count12| +dans tout contexte appelant un nombre ou |\skip0| +dans tout contexte appelant un ressort. + +Vous mettez de l'information dans un registre en y \refterm{assignant:assignment} +quelque chose~: + +\csdisplay +\setbox3 = \hbox{lagomorphs are not mesomorphs} +\count255 = -1 +| +Le premier assignement construit une hbox et l'assigne au +registre de bo\^\i te~$3$. +Vous pouvez +ensuite utiliser `|\box3|' partout o\`u une bo\^\i te est appel\'ee et vous obtiendrez +cette hbox\footnote{Mais faites attention~: utiliser un registre de bo\^\i te +la vide aussi donc son contenu devient vide. Les autres sortes de +registres n'ont pas cet mani\`ere de r\'eagir. Vous pouvez utiliser la commande |\copy| +\ctsref{\copy} pour conserver le contenu d'un registre de bo\^\i te sans +le vider.}. +Le second assignement assigne $-1$ au registre de compteur~$255$. + +Un registre d'un type donn\'e, par exemple, un registre de ressort, r\'eagit comme +un param\`etre de ce type. +^^{param\`etres//comme registres} +Vous retrouvez sa valeur ou la lui assignez +comme vous le feriez avec un \refterm{param\`etre}. +Quelques param\`etres de \TeX, par exemple, |\pageno|, +sont impl\'ement\'es comme des registres. + +\PlainTeX\ +utilise plein de registres pour son propre usage, donc vous ne devez pas +simplement prendre un num\'ero de registre arbitraire +quand vous avez besoin d'un registre. \`A la place, vous devez demander +\`a \TeX\ de r\'eserver un registre en utilisant une des commandes +^|\newbox|, ^|\newcount|, ^|\newdimen|, ^|\newmuskip|, ^|\newskip| +ou ^|\newtoks| +\ctsref{\@newbox}. Ces com\-man\-des sont outer, donc vous ne pouvez +pas les utiliser dans une d\'efinition de macro. +Si vous le pouviez, +vous utiliseriez un registre \`a chaque fois que la macro serait appel\'ee et +probablement d\'epasseriez le nombre de +registres rapidement. + +Quoiqu'il en soit, vous pouvez, avec pr\'ecaution utiliser tout registre temporairement +dans un \refterm{groupe}, m\^eme un que \TeX\ utilise pour autre chose. +Quand \TeX\ a fini d'ex\'ecuter les commandes dans un groupe, +il retrouve le contenu de tous les registres +dans l'\'etat o\`u ils \'etaient avant de commencer \`a ex\'ecuter le groupe. +Quand vous utilisez un registre num\'erot\'e explicitement dans un groupe, +vous devez \^etre sur que le registre n'est modifi\'e par aucune +\refterm{macro} +que vous pourriez appeler dans le groupe. +Soyez sp\'ecialement attentif +quand vous utilisez des registres arbitraires dans un groupe qui appelle des macros +que vous n'avez pas \'ecrit vous-m\^eme. + +{\tighten +\TeX\ r\'eserve certains registres \`a des t\^aches sp\'eciales~: de |\count0| \`a +|\count9| pour des informations de num\'erotation de page et +^^{num\'erotation de page} +^|\box255| pour le contenu +d'une page juste avant qu'elle soit offerte \`a la \refterm{routine de sortie}. +Les registres |\dimen0|--|\dimen9|, |\skip0|--|\skip9|, +|\muskip0|--|\mu!-skip9| et |\box0|--|\box9| ainsi que +les |255| registres de bo\^\i te autres que |\box255| +sont g\'en\'eralement utilisables comme registre ``brouillon''. +Aussi \plainTeX\ ne procure qu'un registre brouillon, |\count255|, pour +des compteurs. +Voir les \knuth{pages~122 et 346}{141--142 et 402} pour des conventions \`a suivre +pour choisir des num\'eros de registre. +\par} + +Vous pouvez examiner le contenu des registres lors d'une ex\'ecution +avec la commande ^|\showthe| \ctsref\showthe, par exemple, `|\showthe\dimen0|'. +\endconcept + + +\concept r\'eglures + +Vous pouvez utiliser des \refterm{r\'eglures} pour remplir un espace avec des +copies d'un mod\`ele, c'est-\`a-dire, mettre des points r\'ep\'et\'es entre un titre et +un num\'ero de page dans une table des mati\`eres. +Une r\'eglure est une copie simple d'un mod\`ele. +La sp\'ecification des r\'eglures contient trois parties d'information. +\olist\compact +\li ce qu'est une r\'eglure seule +\li combien d'espace doit \^etre rempli +\li comment les copies du mod\`ele doivent \^etre arrang\'ees dans l'espace +\endolist + +\bix^^|\leaders| +\bix^^|\cleaders| +\bix^^|\xleaders| +{\tighten +\TeX\ poss\`ede trois commandes pour sp\'ecifier des r\'eglures~: +|\leaders|, |\cleaders| et |\xleaders| (\xref\leaders). +L'\refterm{argument} de chaque commande sp\'e\-ci\-fie la r\'eglure. +La commande doit \^etre suivie d'un \refterm{ressort}. La taille du ressort +sp\'ecifie combien d'espace doit \^etre rempli. Le choix de la commande d\'etermine +comment les r\'eglures sont arrang\'ees dans l'espace.} + +Voici un exemple montrant comment les |\leaders| travaillent~: +\csdisplay +\def\dotting{\leaders\hbox to 1em{\hfil.\hfil}\hfil} +\line{The Political Process\dotting 18} +\line{Bail Bonds\dotting 26} +| +Ici, nous avons plac\'e les r\'eglures et leur ressort associ\'e dans une d\'efinition +de \refterm{macro} pour pouvoir les utiliser facilement \`a deux endroits. +Cette entr\'ee produit~: + +\vdisplay{\advance\hsize by -\parindent +\def\dotting{\leaders\hbox to 1em{\hfil{.}\hfil}\hfill}% +\line{The Political Process{\dotting}18} +\line{Bail Bonds{\dotting}26} +} + +La \refterm{hbox} suivant |\leaders| sp\'ecifie +la r\'eglure, soit, une hbox d'1\em\ de large contenant un point en son +centre. +L'espace est rempli avec des copies de cette bo\^\i te, +effectivement remplies +de points dont les centres sont s\'epar\'es de 1\em. +Le |\hfil| suivant (celui \`a la fin de la d\'efinition de macro) est +un ressort qui sp\'ecifie l'espace \`a remplir. +Dans ce cas, c'est l'espace n\'ecessaire pour remplir la ligne. +en choisissant |\leaders| plut\^ot que |\cleaders| ou |\xleaders|, nous nous +assurons que les points des diff\'erentes lignes soient align\'es entre eux. + +En g\'en\'eral, l'espace \`a remplir agit comme une fen\^etre pour les copies +r\'ep\'et\'ees de r\'eglures. \TeX\ ins\`ere autant de copies que possible, mais de +l'espace est habituellement laiss\'e---soit parce que les r\'eglures s'arr\^etent +dans la fen\^etre, soit parce que la largeur de la fen\^etre n'est pas un multiple +exact de la largeur de la r\'eglure. +La diff\'erence entre les trois commandes est dans leur fa\c con d'arranger les +r\'eglures dans la fen\^etre et comment elles distribuent l'espace perdu. + +\ulist +\li Pour |\leaders|, \TeX\ produit d'abord une rang\'ee de copies de la r\'eglure. +Il aligne alors le d\'ebut de cette rang\'ee avec l'extr\'emit\'e gauche de la bo\^\i te +la plus interne $B$ qui contient le r\'esultat de la commande |\leaders|. +Dans les deux lignes d'exemple ci-dessous, $B$ est une bo\^\i te produite par |\line|. +Ces r\'eglures qui rentrent enti\`erement dans la fen\^etre sont plac\'ees dans $B$, +et l'espace restant aux extr\`e\-mit\'ees gauche et droite est laiss\'e vide. +L'image est comme ceci~: +\vdisplay{% +\def\dotting{\leaders\hbox to 1em{\hfil{.}\hfil}\hfill}% +\def\pp{The Political Process} +\line{\dotting} +\line{\hphantom\pp\hfil$\Downarrow$\hfil\hphantom{18}} +\vskip 4pt +\setbox0 = \hbox{\pp} +\setbox1 = \hbox{18} +\dimen0 = \hsize \advance\dimen0 by -\wd0 \advance \dimen0 by -\wd1 +\advance\dimen0 by -0.8pt +\hbadness=10000 +\line{\pp + \vrule\vbox{\hrule width \dimen0\vskip 2pt + \hbox to \dimen0{\hfil window\strut\hfil} + \vskip 2pt\hrule width \dimen0}% + \vrule 18} +\line{\hphantom\pp\hfil$\Downarrow$\hfil\hphantom{18}} +\vskip 2pt +\line{\pp{\dotting}18} +} +\vskip\medskipamount +{\tighten +\noindent +Cette proc\'edure assure que dans les deux lignes d'exemple de la page pr\'ec\'edente, +les points des deux lignes soient align\'es verticalement (puisque les +\refterm{points de r\'ef\'erence:point de r\'ef\'erence} des hbox produites par +|\line| sont align\'es verticalement). +\par} + +\li Pour |\cleaders|, \TeX\ centre les r\'eglures dans la fen\^etre +en divisant l'espace perdu entre les deux extr\'emit\'es de la fen\^etre. +L'espace perdu est toujours inf\'erieur \`a la largeur d'une seule r\'eglure. + +\li Pour |\xleaders|, \TeX\ distribue l'espace perdu de chaque cot\'e dans la +fen\^etre. En d'autres mots, si l'espace perdu est $w$ et que la r\'eglure se +r\'ep\`ete $n$ fois, \TeX\ met un espace de largeur $w/(n+1)$ entre les r\'eglures +adjacente et \`a deux extr\'emit\'es des r\'eglures. +L'effet est habituellement d'\'etaler les r\'eglures un petit peu. L'espace +perdu pour |\xleaders|, comme celui de |\cleaders|, est toujours inf\'erieur +\`a la largeur d'une r\'eglure seule. +\endulist + +Jusqu'ici, nous supposions que les r\'eglures consistaient en hbox arrang\'ees +horizontalement. Deux variations sont possibles~: +\olist +\li Vous pouvez utiliser une r\`egle \`a la place d'une hbox pour la r\'eglure. +\TeX\ rend la r\`egle aussi large que possible pour s'\'etendre au del\`a du +ressort (et les trois commandes sont \'equivalentes). +\li Vous pouvez produire des r\'eglures verticales qui traversent la page en +les incluant dans une \refterm{liste verticale} au lieu d'une \refterm{liste +horizontale}. Dans ce cas vous avez besoin de ressort vertical apr\`es les +r\'eglures. +\endolist +\noindent +Voir les \knuth{pages~223--225}{261--263} pour les r\`egles pr\'ecises que \TeX\ utilise +en composant des r\'eglures. +\eix^^|\leaders| +\eix^^|\cleaders| +\eix^^|\xleaders| +\endconcept + + +\concept ressort + +\bix^^{\etirement} +\bix^^{r\'etr\'ecissement} +Le \defterm{ressort} est de l'espace blanc qui peut se r\'etr\'ecir ou s'\'etirer. +Le ressort donne \`a \TeX\ la flexibilit\'e dont il a besoin pour produire +des documents impeccables. +Le ressort existe en deux types~: le ressort horizontal et le ressort vertical. +Le ressort horizontal appara\^\i t dans des \refterm{listes horizontales: liste horizontale}, +tandis que le ressort vertical appara\^\i t dans des \refterm{listes verticales:liste verticale}. +^^{listes horizontales} +^^{listes verticales} +Vous +pouvez produire un ressort soit implicitement, c'est-\`a-dire, avec un espace inter-mot, soit +explicitement, c'est-\`a-dire, avec la commande ^|\hskip|. +^^{espace//inter-mots} +\TeX\ lui-m\^eme produit beaucoup de ressorts +en composant votre document. +Nous ne d\'ecrirons que le ressort horizontal---le ressort vertical \'etant analogue. + +Quand \TeX\ assemble une liste de bo\^\i tes et de ressorts en grande +quantit\'e, +^^{\boites//ressort avec} +il ajuste la taille des ressorts pour garder les espaces demand\'ees d'unit\'e +de largeur. Par exemple, \TeX\ s'assure que la ^{marge de droite} d'une page +est uniforme en ajustant les ressorts horizontaux des lignes. +Similairement, il s'assure que les diff\'erentes pages ont la +m\^eme ^{marge du bas} +en ajustant les ressorts entre les blocs de texte comme des paragraphes et +des affichages math\'ematiques +(o\`u le changement est probablement moins remarquable). + +Un ressort a un espacement naturel---la taille qu'il ``veut avoir''. +Le ressort a aussi deux autres attributs~: son \refterm{\'etirement} et son +\refterm{r\'etr\'ecissement}. Vous pouvez produire un montant sp\'ecifique de ressort +horizontal avec la \refterm{commande} ^|\hskip| \ctsref{\hskip}. La commande +|\hskip 6pt plus 2pt minus 3pt| +produit un ressort horizontal dont la taille naturelle +est de $6$ points, l'\'etirement de $2$ points et le r\'etr\'ecissement +$3$ points. Similairement, vous pouvez produire un montant sp\'ecifique de ressort vertical +avec la commande ^|\vskip| commande \ctsref{\vskip}. + +Le meilleur moyen de comprendre ce qui s'\'etire et ce qui se r\'etr\'ecit +et de voir un exemple de ressort au travail. +Supposez que vous construisez un \refterm{hbox} de trois bo\^\i tes et deux ressorts, +comme dans l'image~: +\gluepicture + 29 {\picbox 4 \gluebox 6 4 1 6 \picbox 5 \gluebox 10 8 3 10 \picbox 4 } +\noindent +L'unit\'e de mesure ici peut \^etre en points, en millim\`etres, etc. +Si le hbox est autoris\'e \`a assumer sa largeur naturelle, alors chaque ressort +de la bo\^\i te assume aussi sa largeur naturelle. La largeur totale du hbox est +alors la somme des largeurs de ses parties, soit, $29$ unit\'es. + +Ensuite, supposez que le hbox doit \^etre plus large que $29$ unit\'es, disons +$35$ unit\'es. Cela +peut arriver, par exemple, si le hbox doit occuper une ligne enti\`ere +et que la largeur de la ligne soit de $35$ unit\'es. +Puisque les bo\^\i tes ne peuvent changer leurs largeurs, +\TeX\ produit l'espace suppl\'ementaire n\'ecessaire en rendant les ressorts plus larges. +L'image maintenant ressemble \`a ceci~: +\gluepicture + 35 {\picbox 4 \gluebox 6 4 2 8 \picbox 5 \gluebox 10 8 6 14 \picbox 4 } +Les ressorts ne deviennent pas plus larges de mani\`ere \'egale~; +ils deviennent plus large en proportion de leur \'etirement. +Puisque le second ressort +a deux fois plus d'\'etirement que le premier, +il devient plus large de quatre unit\'es tandis que le premier devient plus large de +seulement deux unit\'es. +Le ressort peut s'\'etirer autant que n\'ecessaire, n\'eanmoins, \TeX\ rechigne +\`a l'\'etirer au del\`a du montant d'\'etirement donn\'e dans sa d\'efinition. + +Finalement, supposez que le hbox doive se rapprocher de $29$ unit\'es \`a, disons +$25$ unit\'es. Dans ce cas \TeX\ r\'etr\'ecit les ressorts. +L'image ressemble \`a ceci~: +\gluepicture + 25 {\picbox 4 \gluebox 6 4 2 5 \picbox 5 \gluebox 10 8 6 7 \picbox 4 } +Les ressorts deviennent plus proches en proportion de leur r\'etr\'e\-cis\-sement. +Le premier ressort devient plus \'etroit d'une unit\'e, tandis que le second +r\'etr\'ecit de trois unit\'es. Le ressort ne peut pas se r\'etr\'ecir +d'une distance inf\'erieure au montant de r\'etr\'ecissement donn\'e dans sa d\'efinition +m\^eme si la distance \`a laquelle il peut se r\'etr\'ecir est sans +limite. Sur ce point important l'\'etirement et le r\'etr\'ecissement r\'eagissent +diff\'eremment. + +Une bonne r\`egle \`a suivre pour le ressort est de fixer sa taille normale au +montant d'espace qui va le mieux, l'\'etirement au montant d'espace le plus grand +que \TeX\ puisse ajouter avant que le document devienne mauvais et le +r\'etr\'ecissement au montant d'espace le plus grand que \TeX\ puisse enlever +avant que le document commence \`a devenir mauvais. Vous pouvez devoir fixer +les valeurs par exp\'erimentation. + +Vous pouvez produire un ressort \'etirable \`a l'infini en sp\'ecifiant son +\'etirement en unit\'es de `^|fil|', `^|fill|' ou `^|filll|'. Le ressort mesur\'e en +`|fill|' est infiniment plus \'etirable que le ressort mesur\'e en `|fil|' et +le ressort mesur\'e en `|filll|' est infiniment plus \'etirable que le ressort mesur\'e +en `|fill|'. Vous n'aurez que tr\`es rarement besoin de ressort `|filll|'. Un ressort +s'\'etirant de |2fil| s'\'etire deux fois plus qu'un ressort s'\'etirant de |1fil|, +et de m\^eme pour les autres sortes de ressorts \'etirables infiniment. + +Quand \TeX\ apporte un espace suppl\'ementaire en plus d'un ressort, +celui infiniment \'etirable, s'il y en a, en prend la totalit\'e. +Le ressort infiniment \'etirable est particuli\`erement pratique pour +cadrer du texte \`a gauche, \`a droite ou centr\'e. + +\ulist\compact +\li Pour faire un texte ^{cadr\'e \`a gauche}, mettez un ressort horizontal +infiniment \'etirable \`a sa droite. +Ce ressort consommera tout l'espace suppl\'ementaire possible sur la ligne. +Vous pouvez utiliser la commande ^|\leftline| \ctsref{\leftline} +ou la commande |\raggedright| \ctsref{\raggedright} pour faire cela. +\li Pour faire un texte ^{cadr\'e \`a droite}, mettez un ressort horizontal +infiniment \'etirable \`a sa gauche. Comme ci-dessus +ce ressort consommera tout l'espace suppl\'ementaire possible sur la ligne. +Vous pouvez utiliser la commande ^|\rightline| \ctsref{\rightline} +pour faire cela. +\li Pour faire du ^{texte centr\'e}, mettez un ressort horizontal +infiniment \'etirable de chaque cot\'e. +Ces deux ressorts diviseront tout l'espace suppl\'ementaire de la ligne +\'egalement entre eux. +Vous pouvez utiliser la commande ^|\centerline| \ctsref{\centerline} pour faire cela. +\endulist + +Vous pouvez aussi sp\'ecifier un ressort r\'etr\'ecissable infiniment +^^{ressort//infiniment \'etirable} +de la m\^eme mani\`ere. Un ressort r\'etr\'ecissable infiniment peut agir comme espace n\'egatif. +Notez que |fil|, etc., ne peuvent \^etre utilis\'es que pour sp\'ecifier l'\'etirement +et le r\'etr\'ecissement du ressort---Ils ne peuvent \^etre utilis\'es pour sp\'ecifier +sa taille normale. +\eix^^{\etirement} +\eix^^{r\'etr\'ecissement} +\endconcept + + +\concept {ressort inter-ligne} + +Le \defterm{ressort inter-ligne} est le ressort que \TeX\ ins\`ere au d\'ebut de chaque +\refterm{bo\^\i te} dans une \refterm{liste verticale} sauf pour la premi\`ere. +Le ressort inter-ligne est normalement sp\'ecifi\'ee de fa\c con \`a maintenir une +distance constante entre les lignes de base des bo\^\i tes. +Sa valeur est d\'etermin\'ee conjointement par les param\`etres ^|\baselineskip|, +^|\lineskip| et ^|\lineskiplimit| \ctsref{\baselineskip}. +\endconcept + + +\conceptindex {r\'etr\'ecissements} +\concept {r\'etr\'ecissement} + +Voir \conceptcit{ressort}. +\endconcept + + +\concept {routine de sortie} + +Quand \TeX\ a accumul\'e +au moins assez de mat\'e\-riel pour remplir une page, il choisi un point d'arr\^et +et place le mat\'eriel situ\'e avant le point d'arr\^et en |\box255|. Il appelle +alors la \defterm{routine de sortie} courante, qui compile le mat\'eriel et +l'envoie \'eventuellement dans le \dvifile. +^^{\dvifile//mat\'eriel de la routine de sortie} +La routine de sortie peut faire d'autres actions, comme ins\'erer des ent\^etes, +des pieds de page et des notes de pieds de page. +\refterm{\PlainTeX:\plainTeX} procure +une routine de sortie par d\'efaut qui ins\`ere un num\'ero de page centr\'e +en bas de chaque page. +En procurant une routine de sortie diff\'erente vous pouvez cr\'eer des +effets tels que des sortie en double colonnes. +Vous pouvez imaginer les routines de sortie comme ayant une seule responsabilit\'e~: +disposer le mat\'eriel en |\box255| d'une fa\c con ou d'une autre. + +La routine de sortie courante est d\'efinie par la valeur de ^|\output| +\ctsref{\output}, qui est une liste de \refterm{tokens:token}. Quand \TeX\ +est pr\^et \`a produire une page, il d\'eveloppe simplement la liste de tokens. + +Vous pouvez faire quelque simples changements aux actions de la routine de +sortie de \plainTeX\ sans la modifier r\'eellement. Par exemple, en assignant +une liste de \refterm{tokens:token} \`a |\headline| ou +|\footline| \ctsref{\footline} vous pouvez faire que \TeX\ produise un ent\^ete +ou un pied de page diff\'erent de l'ordinaire. + +La routine de sortie est aussi responsable pour collecter +toutes \refterm{insertions:insertion}~; en combinant ces insertions et +toutes ``d\'ecorations'' telles que ent\^etes et pieds de page avec +les contenus principaux de la page et empaqu\`ete tout ce mat\'eriel +dans une bo\^\i te~; et \'eventuellement envoyer cette bo\^\i te dans +le \dvifile\ +^^{\dvifile//mat\'eriel de la routine de sortie} +avec la commande ^|\shipout|\ctsref{\shipout}. +Bien que cela soit ce que fait une routine de sortie le plus souvent, +une routine de sortie d'usage sp\'ecial peut agir diff\'eremment. +\endconcept + + +\conceptindex{s\'equences de contr\^ole} +\concept {s\'equence de contr\^ole} + +Une \defterm{S\'equence de contr\^ole} est un nom pour une \refterm{command}e \TeX. +Une s\'equence de contr\^ole commence par un ^{caract\`ere d'\'echappement}, +habituellement un antislash (|\|). +\indexchar \ +Une s\'equence de contr\^ole prend une des deux formes~: + +\ulist + +\li Un \refterm{mot de contr\^ole} est une S\'equence de contr\^ole constitu\'ee +d'un \refterm{caract\`ere d'\'echappement} suivi par une ou plusieurs lettres. +^^{mots de contr\^ole} +Le mot de contr\^ole se termine quand \TeX\ voit une non-lettre. Par exemple, +quand \TeX\ lit +`\hbox{|\hfill!visiblespace,!visiblespace!.the|}', il voit six +\refterm{tokens:token}~: +Les s\'equences de contr\^ole `|\hfill|', virgule, espace, `|t|', `|h|', `|e|'. +L'espace apr\`es `|\hfill|' termine la s\'equence de contr\^ole et +est absorb\'ee par \TeX\ quand il lit la s\'equence de contr\^ole. +(Pour le texte `|\hfill,!visiblespace!.the|', d'un autre cot\'e, +La virgule termine aussi la s\'equence de contr\^ole et compte comme un caract\`ere +de bon aloi.) + +\li Un \refterm{symbole de contr\^ole} +^^{symboles de contr\^ole} +est une s\'equence de contr\^ole constitu\'ee d'un +^{caract\`ere d'\'echappement} suivi par n'importe caract\`ere autre qu'une lettre---% +m\^eme un espace ou une fin de ligne. +Un symbole de contr\^ole est auto-d\'elimit\'e, c'est-\`a-dire, \TeX\ sait o\`u il termine sans +devoir regarder le caract\`ere qui le suit. +Le caract\`ere apr\`es un symbole de contr\^ole n'est jamais absorb\'e par le +symbole de contr\^ole. +\endulist +\noindent Voir \xrefpg{espace} pour plus d'information sur les espaces apr\`es +des s\'equences de contr\^ole. + +\TeX\ procure une grand nombre de s\'equences de contr\^ole pr\'ed\'efinies. Les +s\'equences de contr\^ole \refterm{primitives} sont construites dans le programme +informatique \TeX\ et donc, sont accessibles sous toutes les formes de \TeX. +^^{primitive//s\'equence de contr\^ole} +D'autres s\'equences de contr\^ole sont fournies par \refterm{\plainTeX}, la +forme de \TeX\ d\'ecrite dans ce livre + +Vous pouvez augmenter des s\'equences de contr\^ole pr\'ed\'efinies avec celles de +votre cru, en utilisant des commandes telles que ^|\def| et ^|\let| pour les +d\'efinir. La \chapterref{eplain} de ce livre contient une collection de +d\'efinitions de s\'equence de contr\^ole que vous pouvez trouver utile. De plus, +votre syst\`eme informatique peut vous rendre capable de cr\'eer une collection +de macros \TeX\ d\'evelopp\'ees localement. +\endconcept + + +\conceptindex{struts} +\concept strut + +{\tighten +Un \defterm{strut} est une \refterm{bo\^\i te} invisible +^^{\boites//invisible} +dont la largeur est \`a z\'ero et dont la hauteur et la profondeur sont l\'eg\`erement +sup\'erieure \`a celle d'une ligne de texte ``normale'' dans le contexte. +Les struts sont pratiques pour obtenir un espacement vertical uniforme quand +l'espacement de ligne usuel de \TeX, par exemple, dans une formule math\'ematique +ou dans un alignement horizontal o\`u vous sp\'ecifiez ^|\offinterlineskip|. +Parce qu'un strut est plus haut et plus profond que tout autre chose sur sa ligne, +il d\'etermine la hauteur et la profondeur de la ligne. +Vous pouvez produire un strut avec la commande ^|\strut| \ctsref{\strut} ou +la commande ^|\mathstrut| \ctsref\mathstrut. +Vous pouvez utiliser |\strut| n'importe o\`u, mais vous ne pouvez utiliser +|\mathstrut| que quand \TeX\ est en \refterm{mode} math\'ematique. +Un strut dans \plainTeX\ a une hauteur de 8.5\pt\ et une profondeur de 3.5\pt, +tandis qu'un strut math\'ematique \`a la hauteur et la profondeur d'une +parenth\`ese ouvrante du \refterm{style} courant (donc il est plus petit pour +des indices ou des exposants). +\par} + +Voici un exemple montrant comment vous devriez utiliser un strut~: +\csdisplay +\vbox{\hsize = 3in \raggedright + \strut Here is the first of two paragraphs that we're + setting in a much narrower line length.\strut} +\vbox{\hsize = 3in \raggedright + \strut Here is the second of two paragraphs that we're + setting in a much narrower line length.\strut} +| +Cette entr\'ee donne~: +\display{\vbox{ +\vbox{\hsize = 3in \raggedright +\strut Here is the first of two paragraphs that we're setting +in a much narrower line length.\strut} +\vbox{\hsize = 3in \raggedright +\strut Here is the second of two paragraphs that we're setting +in a much narrower line length.\strut} +}} +\noindent +Sans les struts la \refterm{vbox} serait trop rapproch\'ee. +Similairement, dans la formule~: +\csdisplay +$\overline{x\mathstrut} \otimes \overline{t\mathstrut}$ +| +Les struts math\'ematiques font que les deux barres sont mises \`a la m\^eme hauteur m\^eme +si le `$x$' et le `$t$' ont des hauteurs diff\'erentes~: +\display{ +$\overline{x\mathstrut} \otimes \overline{t\mathstrut}$ +} +\vskip -\belowdisplayskip +\endconcept +%\nobreak + +\conceptindex{styles} +\concept {style} + +Le mat\'eriel d'une formule math\'ematique est mis dans un des huit \defterm{styles}, +d\'ependant du contexte. Conna\^\i tre les styles peut \^etre utile si vous voulez +mettre une partie d'une formule dans une taille de caract\`ere diff\'erente de +celle que \TeX\ a choisi en fonction de ses r\`egles usuelles. + +%\eject +Les quatre styles primaires sont~: + +\vdisplay{% +\halign{\refterm{# style}\hfil&\hskip .25in(#)\hfil\cr +display&formules affich\'ees sur une ligne seule\cr +text&formules englob\'ees dans du texte ordinaire\cr +script&exposants et indices\cr +scriptscript&indices d'indices, etc.\cr +}} + +Les quatre autres styles sont dits ^{variantes \'etroites}. Dans ces variantes +les exposants ne sont pas mont\'es aussi haut que normalement et donc la formule +n\'ecessite moins d'espace vertical qu'ils le devraient. Voir les \knuth{pages~140--141}{164--165} +pour les d\'etails sur la fa\c con de \TeX\ de s\'electionner le style. + +\TeX\ choisit une taille de caract\`ere en fonction du style~: + +\ulist\compact +^^{style d'affichage}^^{style texte} +\li Le style d'affichage et le style texte sont mis en \refterm{taille texte}, comme +`$\rm ceci$'. + +^^{style script} +\li le style script est mis en \refterm{taille script}, comme `$\scriptstyle +\rm ceci$'. + +^^{style scriptscript} +\li le style scriptscript est mis en \refterm{taille scriptscript}, comme +`$\scriptscriptstyle \rm ceci$'. +\endulist + +Voir \conceptcit{famille} pour plus d'informations \`a propos de ces trois tailles. + +\TeX\ n'a pas de style ``scriptscriptscript'' parce qu'un tel style +serait souvent mis dans une taille de caract\`ere trop petite \`a lire. \TeX\ +par cons\'equent met les indices, exposants, etc. de troisi\`eme ordre en utilisant le +style scriptscript. + +Parfois vous pourrez trouver que \TeX\ a mis une formule dans un style diff\'erent +de celui que vous pr\'ef\'erez. Vous pouvez passer outre le choix de \TeX\ avec les +commandes ^|\textstyle|, ^|\displaystyle|, ^|\scriptstyle| et ^|\scriptscriptstyle| +\ctsref{\textstyle}. +\endconcept + + +\conceptindex{symboles de contr\^ole} +\concept {symbole de contr\^ole} + +Un \defterm{symbole de contr\^ole} est une \refterm{s\'equence de contr\^ole} qui +est constitu\'ee d'un \refterm{caract\`ere d'\'echappement} suivi d'un caract\`ere +autre qu'une lettre---m\^eme un espace et une fin de ligne. +^^{caract\`ere d'\'echappement} +\endconcept + + +\concept {taille script} + +Une \defterm{taille script} d\'ecrit une des trois +\refterm{polices:police} reli\'ees dans une famille. +^^{famille//taille script en} +Une taille script est plus petite que la \refterm{taille texte} mais plus +grande que la +\refterm{taille scriptscript}. \TeX\ utilise la taille script pour les +indices et les exposants, aussi bien que pour les num\'erateurs et les +d\'enominateurs de fractions dans du texte. +\endconcept + + +\concept {taille scriptscript} + +Une \defterm{taille scriptscript} d\'ecrit la plus petite taille des trois +\refterm{polices:police} reli\'ees dans une famille. +^^{famille//taille scriptscript en} +\TeX\ utilise la \refterm{taille scriptscript} pour des indices, exposants, +num\'erateurs et d\'enominateurs de second rang. Par exemple, \TeX\ utilisera +la taille scriptscript pour un indice d'indice ou pour un exposant d'exposant. +\endconcept + + +\concept {taille texte} + +La \defterm{taille texte} d\'ecrit la plus grande des trois +\refterm{polices:police} li\'ees dans une \refterm{famille}. +^^{famille//taille texte en} +\TeX\ utilise la taille texte pour des symboles ordinaires apparaissant en +\refterm{mode math\'ematique}. +\endconcept + + +\conceptindex{tests conditionnels} +\concept {test conditionnel} + +Un \defterm{test conditionnel} est une commande qui teste si une condition est +vraie ou non et +demande \`a \TeX\ soit de d\'evelopper soit de sauter du texte, selon le cas. +La forme g\'en\'erale d'une test conditionnel est soit~: +\display{ +{\tt \\if}$\alpha$\<true text>{\tt \\else}\<false text>{\tt \\fi}} +^^|\else|^^|\fi| +\noindent soit~:\hfil\ +\display{ +{\tt \\if}$\alpha$\<true text>{\tt \\fi}} +\noindent o\`u $\alpha$ sp\'ecifie le test particulier. +Par exemple, |\ifvmode| teste la condition que \TeX\ +soit actuellement dans un \refterm{mode vertical}. +Si la condition est vraie, \TeX\ d\'eveloppe \<true text>. +Si la condition est fausse, \TeX\ d\'eveloppe \<false text> (s'il est pr\'esent). +Les tests conditionnels sont interpr\'et\'es dans l'\oesophage\ de \TeX +\seeconcept{\anatomy}, donc tous les \minref{token}s d\'eveloppables dans +le texte interpr\'et\'e ne sont d\'evelopp\'es qu'apr\`es que le test n'ait \'et\'e r\'esolu. +Les diff\'erents tests conditionnels sont expliqu\'es dans +\headcit{Tests conditionnels}{conds}. + +\endconcept + + +\concept {\TeXMeX} + +(a)~Une vari\'et\'e de \TeX\ utilis\'ee pour composer des math\'e\-matiques dans les +pays d'Am\'erique Centrale. +(b)~Une cuisine tr\`es \'epic\'ee appr\'e\-ci\'ee par les \TeX\-ni\-ciens d'^{El Paso}. +\endconcept + + +\conceptindex{justification} +\concept {texte justifi\'e} + +Du \defterm{texte justifi\'e} est du texte qui a \'et\'e compos\'e pour que les +deux marges soit align\'ees. Du texte non justifi\'e, d'un autre cot\'e, a \'et\'e compos\'e +avec des marges ``d\'echir\'ees'' d'un ou des deux cot\'es. +Les documents saisis sur les vieilles machines \`a \'ecrire ont la plupart du temps +des marges droites d\'echir\'ees. +Bien que les documents produits par \TeX\ soient justifi\'es par d\'efaut, vous +pouvez si vous voulez produire des documents (ou des suites de lignes) qui +ont la marge ^{droite}---ou ^{gauche d\'echir\'ee}. +Vous pouvez aussi demander \`a \TeX\ de centrer un suite de lignes, ce qui rend +les deux marges d\'echir\'ees. +^^{texte centr\'e} +Vous pouvez utiliser les commandes +^|\leftskip|, ^|\rightskip| et ^|\raggedright| +(\pp \xrefn{\leftskip},~\xrefn{\raggedright}) pour cela. + +Quand \TeX\ produit du texte justifi\'e, il a normalement besoin de r\'e\-tr\'ecir ou +d'\'etirer les ressorts de chaque ligne pour que les marges soient align\'ees. +Quand \TeX\ produit du texte non justifi\'e, d'un autre cot\'e, il laisse les ressorts +de chaque ligne \`a leur taille naturelle. +Beaucoup de typographes pr\'ef\`erent le texte non justifi\'e parce que son espacement +inter-mot est plus uniforme. +\endconcept + + +\concept {texte math\'ematique} + +Nous utilisons le terme \defterm{texte math\'ematique} pour faire r\'ef\'erence +\`a une formule math\'ematique mise dans une ligne de texte, c'est-\`a-dire, +entour\'ee de |$|. +\ttidxref{$} +\TeX\ met du texte math\'ematique dans le \refterm{mode} texte math\'ematique . +\endconcept + + +\conceptindex{tokens} +\concept token + +Un \defterm{token} est soit un simple caract\`ere attach\'e \`a un +\refterm{code de cat\'egorie} ou une \refterm{s\'equence de contr\^ole}. +\TeX\ lit les caract\`eres d'un fichier en utilisant ses yeux \seeconcept{\anatomy} +et groupe les caract\`eres en tokens en utilisant sa bouche. Quand un token +atteint l'estomac de \TeX, \TeX\ l'interpr\`ete comme une \refterm{commande} +\`a moins qu'il fasse partie d'un argument d'une commande pr\'ec\'edente. +\endconcept + + +\conceptindex{unit\'es de mesure} +\concept {unit\'e de mesure} + +Voir \conceptcit{dimension}. +\endconcept + + +\conceptindex{unit\'es math\'ematiques} +\concept {unit\'e math\'ematique} + +Une \defterm{unit\'e math\'ematique}, cod\'ee `|mu|', est une unit\'e de distance +utilis\'ee pour sp\'ecifier un \refterm{ressort} dans les formules math\'e\-matiques. Voir +le \conceptcit{muglue}. +\endconcept + + +\conceptindex{vbox} +\concept vbox + +^^{listes verticales//vbox form\'ees \`a partir de} +Une \defterm{vbox} (bo\^\i te verticale) est une \refterm{bo\^\i te} que \TeX\ construit +en pla\c cant les \'el\'ements d'une \refterm{liste verticale} l'une apr\`es l'autre, de haut +en bas. Une vbox, prise en tant qu'unit\'e, n'est ni fondamentalement horizontale +ni fondamentalement verticale, c'est-\`a-dire, elle peut appara\^\i tre comme un \'el\'ement +soit d'une liste verticale soit d'une \refterm{liste horizontale}. Vous +pouvez construire une vbox avec les commandes ^|\vbox| ou ^|\vtop| \ctsref{\vtop}. +La diff\'erence est que pour |\vbox|, le \refterm{point de r\'ef\'erence} de la +vbox construite est d\'eriv\'e de celui du dernier (et souvent plus bas) +\'el\'ement constituant la liste, mais pour |\vtop|, c'est celui du premier +(et normalement plus haut) \'el\'ement constituant la liste. +\endconcept + + +\endconcepts + +\endchapter +\byebye + diff --git a/info/impatient/fr/fcopyrgh.tex b/info/impatient/fr/fcopyrgh.tex index 4ec44d918a..15534a78d5 100644 --- a/info/impatient/fr/fcopyrgh.tex +++ b/info/impatient/fr/fcopyrgh.tex @@ -1,58 +1,58 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-
-
-% Copyright page.
-%
-\noheadlinetrue
-\sinkage
-
-\noindent `\TeX' est une marque d\'epos\'ee de the American Mathematical Society.
-
-\noindent `\Metafont' est une marque d\'epos\'ee d'Addison-Wesley Publishing Company.
-
-\bigskip
-\noindent Ce livre, \thisbook, contient le tutorial et l'information
-de r\'ef\'erence sur tous les dispositifs de plain \TeX\ et des
-primitives de \TeX.
-
-\bigskip
-
-\noindent Copyright \copyright{} 2003 Paul~W. Abrahams,
-Kathryn~A. Hargreaves, and Karl Berry.
-
-\bigskip
-
-\noindent Copyright \copyright{} 2004 Marc Chaudemanche pour la
-traduction.
-[Note du traducteur : Je tiens \`a remercier chaleureusement Claude Hiebel
-pour la relecture et les nombreuses corrections apport\'ees]
-
-\bigskip
-\noindent Permission vous est donn\'ee de copier, distribuer et/ou
-modifier ce docu\-ment selon les termes de la Licence GNU Free
-Documentation License, Version 1.1 ou ult\'erieure publi\'ee par la
-Free Software Foundation~; avec les sections inalt\'erables
-suivantes~:
-
-
-\medskip\noindent
-Selon les termes de la GFDL, n'importe qui est autoris\'e \`a modifier
-et redistribuer ce document, et nous esp\'erons que d'autres le
-trouveront assez utile pour le faire. Cela inclut les traductions,
-vers d'autres langues \'etrang\`eres ou d'autres formats informatiques.
-
-\medskip\noindent
-Dans notre interpr\'etation de la GFDL, vous pouvez aussi extraire du
-texte de ce livre pour l'utiliser dans un nouveau document, \`a
-condition que ce nouveau document soit \'egalement sous la GFDL et que
-les bonnes accr\'editations soit donn\'ees (conform\'ement \`a la
-licence).
-
-
-\pagebreak
-\byebye
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros + + +% Copyright page. +% +\noheadlinetrue +\sinkage + +\noindent `\TeX' est une marque d\'epos\'ee de the American Mathematical Society. + +\noindent `\Metafont' est une marque d\'epos\'ee d'Addison-Wesley Publishing Company. + +\bigskip +\noindent Ce livre, \thisbook, contient le tutorial et l'information +de r\'ef\'erence sur tous les dispositifs de plain \TeX\ et des +primitives de \TeX. + +\bigskip + +\noindent Copyright \copyright{} 2003 Paul~W. Abrahams, +Kathryn~A. Hargreaves, and Karl Berry. + +\bigskip + +\noindent Copyright \copyright{} 2004 Marc Chaudemanche pour la +traduction. +[Note du traducteur : Je tiens \`a remercier chaleureusement Claude Hiebel +pour la relecture et les nombreuses corrections apport\'ees] + +\bigskip +\noindent Permission vous est donn\'ee de copier, distribuer et/ou +modifier ce docu\-ment selon les termes de la Licence GNU Free +Documentation License, Version 1.1 ou ult\'erieure publi\'ee par la +Free Software Foundation~; avec les sections inalt\'erables +suivantes~: + + +\medskip\noindent +Selon les termes de la GFDL, n'importe qui est autoris\'e \`a modifier +et redistribuer ce document, et nous esp\'erons que d'autres le +trouveront assez utile pour le faire. Cela inclut les traductions, +vers d'autres langues \'etrang\`eres ou d'autres formats informatiques. + +\medskip\noindent +Dans notre interpr\'etation de la GFDL, vous pouvez aussi extraire du +texte de ce livre pour l'utiliser dans un nouveau document, \`a +condition que ce nouveau document soit \'egalement sous la GFDL et que +les bonnes accr\'editations soit donn\'ees (conform\'ement \`a la +licence). + + +\pagebreak +\byebye diff --git a/info/impatient/fr/ferrors.tex b/info/impatient/fr/ferrors.tex index 6131acf0e0..9d086cc117 100644 --- a/info/impatient/fr/ferrors.tex +++ b/info/impatient/fr/ferrors.tex @@ -1,309 +1,309 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-\chapter{Comprendre les \linebreak messages d'erreur}
-
-\chapterdef{errors}
-
-%\codefuzz = 4pc % for this chapter only (in scope of \chapter)
-\bix^^{messages d'erreur}
-L'interpr\'etation des messages d'erreur de \TeX\ peut parfois \^etre
-compar\'ee \`a aller chez votre m\'edecin avec la sensation d'\^etre
-fatigu\'e et obtenir, en r\'eponse, une analyse de votre chimie sanguine.
-C'est probablement l'explication de votre d\'etresse, mais il n'est pas
-facile de la d\'ecrire. Quelques r\`egles simples vous feront aller plus
-loin en vous aidant \`a comprendre les messages d'erreur de \TeX\ et \`a en
-obtenir d'avantage.
-
-Votre premier objectif sera de comprendre ce que vous avez fait pour que
-\TeX\ se plaigne. Le second (si vous travaillez interactivement) sera de
-d\'eceler le plus d'erreurs que vous pouvez en une seule fois.
-
-Regardons un exemple. Supposez que votre source contienne la ligne~:
-\csdisplay
-We skip \quid a little bit.
-|
-Vous pensiez saisir `|\quad|', mais vous avez tap\'e `|\quid|' \`a la
-place. Voici la r\'eponse que vous obtiendrez de \TeX\~:
-\csdisplay !!
-Undefined control sequence.
-l.291 We skip \quid
- a little bit.
-?
-|
-Ce message appara\^\i tra sur votre terminal et dans votre \logfile.
-^^{fichier log//message d'erreur} La premi\`ere ligne, qui commence
-toujours par un point d'exclamation (|!!|), vous indique ce qu'est le
-probl\`eme. Les deux derni\`eres lignes avant le prompt `|?|'(qui sont,
-dans ce cas-ci, \'egalement, les deux lignes suivantes) vous indiquent o\`u
-\'etait \TeX\ quand il a trouv\'e l'erreur. Il a trouv\'e l'erreur sur la
-ligne $291$ du fichier source courant, et la coupure entre les deux lignes
-de message indiquent la position pr\'ecise de \TeX\ dans la ligne $291$, \`a
-savoir, juste apr\`es |\quid|. Le fichier source courant est celui juste
-apr\`es la parenth\`ese gauche la plus r\'ecemment ouverte dans le r\'esultat
-de votre ex\'ecution sur votre terminal (voir les \xref{infiles}).
-
-Cette erreur particuli\`ere, un ``undefined control sequence'', est l'une
-des plus communes que vous puissiez obtenir. Si vous r\'epondez au prompt
-par un autre~`|?| ', \TeX\ affichera le message suivant~:
-
-{\hfuzz = 2in
-\csdisplay
-Type <return> to proceed, S to scroll future error messages,
-R to run without stopping, Q to run quietly,
-I to insert something, E to edit your file,
-1 or ... or 9 to ignore the next 1 to 9 tokens of input,
-H for help, X to quit.
-|
-}%
-Voici ce que signifient ces propositions~:
-\ulist
-\li Si vous saisissez \asciichar{return}, \TeX\ continuera \`a traiter
-votre document. Dans ce cas, il ignorera juste le |\quid|.
-\li Si vous saisissez `|S|' (ou `|s|'---majuscule et minuscule sont
-\'equivalentes ici), \TeX\ traitera votre document sans s'arr\^eter,
-\emph{sauf} s'il rencontre un fichier absent. Les messages d'erreur
-continueront \`a appara\^\i tre sur votre terminal et dans le \logfile.
-\li Si vous saisissez `|R|' ou `|r|', vous obtiendrez le m\^eme effet que
-pour `|S|', sauf que \TeX\ ne s'arr\^etera pas pour les fichiers manquants.
-\li Si vous saisissez `|Q|' ou `|q|', \TeX\ continuera \`a traiter votre
-document mais ne s'arr\^etera pas pour des erreurs ni ne les montrera sur
-votre terminal. Les erreurs appara\^\i tront toujours dans le \logfile.
-\li Si vous saisissez `|X|' ou `|x|', \TeX\ nettoiera ce qu'il peut au
-mieux, jettera la page sur laquelle il travaillait et stoppera. Vous pourrez
-imprimer ou regarder les pages que \TeX\ a d\'ej\`a trait\'ees.
-\li Si vous saisissez `|E|' ou `|e|', \TeX\ nettoiera et se terminera comme
-il le fait pour `|X|' ou `|x|' et entrera alors dans votre \'editeur de
-texte, vous pla\c cant sur la ligne incorrecte. (tous les syst\`emes ne
-supportent pas cette option.)
-\li Si vous saisissez `|H|' ou `|h|', vous obtiendrez une autre explication
-de l'erreur montr\'ee sur votre terminal et probablement du conseil sur
-quoi faire \`a son sujet. Cette explication appara\^\i tra \'egalement dans
-votre \logfile. Pour le ``undefined control sequence'' ci-dessus, vous
-obtiendrez~:
-
-{\hfuzz = 2in
-\csdisplay
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-|
-}
-\li Si vous saisissez `|?|', vous recevrez encore ce m\^eme message.
-\endulist
-\noindent
-Les deux autres solutions de rechange, saisir `|I|' ou un petit nombre
-entier, fournissent des moyen de demander \`a \TeX de revenir en \ arri\`ere
-pour que votre erreur ne cause pas d'autres erreurs plus tard dans
-votre document~:
-
-\ulist
-\li Si vous saisissez `|I|' ou `|i|' suivi de texte, alors \TeX\ ins\'erera
-ce texte comme s'il s'\'etait produit juste apr\`es le point d'erreur, au
-niveau les plus secrets o\`u \TeX \ travaille. Dans le cas de l'exemple
-ci-dessus, cela signifie \`a la position de \TeX\ dans votre source
-original, c'est-\`a-dire, juste apr\`es `|\quid|'. Plus tard vous verrez un
-exemple qui montre la diff\'erence entre ins\'erer quelque chose au niveau
-les plus secrets et l'ins\'erer dans votre source original. Dans l'exemple
-ci-dessus d'``undefined control sequence'', si vous saisissez~:
-\csdisplay
-I\quad
-|
-\TeX\ effectuera la commande |\quad| et produira un espace cadratin
-l\`a o\`u vous avez eu l'intention d'avoir un.
-\li Si vous saisissez un nombre entier positif inf\'erieur \`a $100$ (pas
-inf\'erieur \`a $10$ comme le message le sugg\`ere maladroitement), \TeX\
-supprimera ce nombre de tokens du niveau les plus secrets o\`u il
-travaille. (si vous saisissez un nombre entier sup\'erieur ou \'egal \`a
-$100$, \TeX\ supprimera $10$ tokens~!)
-\endulist
-
-Voici un autre exemple d'erreur commune~:
-\csdisplay
-Skip across \hskip 3cn by 3 centimeters.
-|
-Le message d'erreur pour ceci est~:
-\csdisplay
-!! Illegal unit of measure (pt inserted).
-<to be read again>
- c
-<to be read again>
- n
-l.340 Skip across \hskip 3cn
- by 3 centimeters.
-|
-^^|<to be read again>|
-Dans ce cas, \TeX\ a vu que `|3|' est suivi par quelque chose qui n'est pas
-une unit\'e de mesure reconnue, et ainsi suppose que l'unit\'e de mesure est
-le point. \TeX\ relira le token `|cn|' et l'ins\'erera dans votre saisie,
-ce qui n'est pas ce que vous voulez. Dans ce cas, vous pouvez obtenir un
-meilleur r\'esultat en saisissant d'abord `|2|' pour reculer avant `|cn|'.
-Vous recevrez le message~:
-\csdisplay
-<recently read> n
-
-l.340 Skip across \hskip 3cn
- by 3 centimeters.
-|
-
-Maintenant vous pouvez saisir `|I\hskip 3cm|' pour obtenir le saut que vous
-vouliez (en plus du saut de |3pt| que vous avez d\'ej\`a obtenu).\footnote{en
-saisissant `|I\unskip\hskip 3cm|' vous pouvez vous d\'ebarrasser du saut de
-|3pt|.}
-
-Si vous saisissez quelque chose qui n'est valide qu'en mode math\'ema\-tique,
-\TeX\ s'orientera vers le mode math\'ematique pour vous que ce soit ce que
-vous avez vraiment voulu ou non. Par exemple~:
-\csdisplay
-So \spadesuit s are trumps.
-|
-Voici le message d'erreur de \TeX\~:
-\csdisplay
-!! Missing $ inserted.
-<inserted text>
- $
-<to be read again>
- \spadesuit
-l.330 So \spadesuit
- s are trumps.
-|
-Puisque le symbole |\spadesuit| n'est permis qu'en mode math\'ematique,
-\TeX\ a ins\'er\'e un `|$|' devant lui. Apr\`es que \TeX\ ait ins\'er\'e un
-token, il se place \emph{devant} ce token, dans ce cas, le `|$|', pr\^et
-\`a le lire. saisir `|2|' fera que \TeX\ sautera le `|$|' et le token
-`|\spadesuit|', le laissant pr\^et \`a traiter le `|s|' de
-`|s are trumps|'. Si vous laissez juste \TeX\ continuer, il
-composera `|s are trumps|' en mode math\'ematique.
-
-Voici un exemple o\`u le diagnostic d'erreur de \TeX\ est compl\`etement
-erron\'e~:
-\csdisplay
-\hbox{One \vskip 1in two.}
-|
-Le message d'erreur est~:
-\csdisplay
-!! Missing } inserted.
-<inserted text>
- }
-<to be read again>
- \vskip
-l.29 \hbox{One \vskip
- 1in two.}
-|
-^^|<inserted text>|
-Le probl\`eme est que vous ne pouvez pas utiliser |\vskip| quand \TeX\ est
-en mode horizontal restreint, c'est-\`a-dire, en construisant un hbox. Mais
-au lieu de rejeter le |\vskip|, \TeX\ a ins\'er\'e une accolade droite devant
-lui afin d'essayer de fermer le hbox. Si vous acceptez la correction de \TeX,
-\TeX\ se plaindra encore quand il arrivera plus tard \`a l'accolade droite
-correcte. Il se plaindra \'egalement \`a propos de tout ce qui pr\'ec\`ede cette
-accolade droite et qui n'est pas permis en mode vertical. Ces plaintes
-r\'ep\'etitives seront particuli\`erement embrouillantes parce que les
-erreurs qu'elles indiquent sont fausses, elles sont le r\'esultat des effets
-propag\'es de l'insertion inad\'equate de l'accolade droite. Votre meilleur
-pari est de saisir `|5|', et de sauter apr\`es tous les tokens de `|}\vskip 1in|'.
-
-Voici un exemple similaire dans lequel le message d'erreur est plus long
-que ce que nous avons vus jusqu'ici~:
-\csdisplay
-\leftline{Skip \smallskip a little further.} But no more.
-|
-L'erreur ici est que |\smallskip| ne fonctionne qu'en mode vertical.
-Le message d'erreur est quelque chose comme~:
-\csdisplay
-!! Missing } inserted.
-<inserted text>
- }
-<to be read again>
- \vskip
-\smallskip ->\vskip
- \smallskipamount
-<argument> Skip \smallskip
- a little further.
-\leftline #1->\line {#1
- \hss }
-l.93 ...Skip \smallskip a little further.}
- But no more.
-|
-Les messages d'erreur ici vous donnent un tour d'horizon des macros qui sont
-utilis\'ees dans l'impl\'ementation de |\leftline| dans \plainTeX---des
-macros sur lesquelles vous ne vous inqui\'etez probablement pas. La premi\`ere
-ligne vous indique que \TeX\ pr\'evoit de traiter le probl\`eme en
-ins\'erant une accolade droite. \TeX\ n'a pas encore r\'eellement lu
-l'accolade droite, ainsi vous pouvez la supprimer si vous le choisissez.
-Chaque composant du message apr\`es la premi\`ere ligne (celle avec le `!')
-occupe une paire de lignes. Voici ce que signifient les paires de lignes
-successives~:
-\olist
-\li La premi\`ere paire indique que \TeX\ a ins\'er\'e, mais pas encore lu, une
-accolade droite~:
-\li La paire suivante indique qu'apr\`es avoir lu l'accolade droite, \TeX\
-relira un `|\vskip|' (obtenue de la macro d\'efinition du |\smallskip|).
-\li La troisi\`eme paire indique que \TeX\ d\'eveloppait la macro
-|\smallskip| quand il a trouv\'e l'erreur. Ces deux lignes montrent
-\'egalement la d\'efinition de |\smallskip| et indiquent o\`u \TeX\ est
-parvenu en d\'evelop\-pant et en ex\'ecutant cette d\'efinition.
-Sp\'ecifiquement, il a juste essay\'e sans succ\`es d'ex\'ecuter la
-commande |\vskip|. En g\'en\'eral, une ligne diagnostic qui commence par
-une commande suivie de `|->|' indique que \TeX\ a d\'evelopp\'e et
-ex\'ecut\'e une macro de ce nom.
-\li La quatri\`eme paire indique que \TeX\ traitait un argument de macro
-quand il a trouv\'e le |\smallskip| et indique \'egalement la position de
-\TeX\ du fait de l'argument, c'est-\`a-dire, qu'il a juste trait\'e le
-|\smallskip| (sans succ\`es). En regardant vers la prochaine paire de
-lignes nous pouvons voir que l'argument a \'et\'e pass\'e \`a |\leftline|.
-\li La cinqui\`eme paire indique que \TeX\ d\'eveloppait la macro
-|\leftline| quand il a trouv\'e l'erreur. Dans cet exemple l'erreur s'est
-produite pendant que \TeX\ \'etait en train d'interpr\'eter plusieurs
-d\'efinitions de macro \`a diff\'erents degr\'es de d\'eveloppement. Sa
-position apr\`es |#1| indique que la derni\`ere chose qu'il ait vu \'etait le
-premier (et dans ce cas-ci le seul) argument de |\leftline|.
-\li La derni\`ere paire indique o\`u \TeX\ est plac\'e dans votre fichier
-source. Notez que cette position est bien au del\`a de la position o\`u il
-a ins\`er\'e l'accolade droite et relu le `|\vskip|'. C'est parce que \TeX\
-a d\'ej\`a lu tout l'argument du |\leftline| de votre fichier source,
-m\^eme s'il n'a trait\'e qu'une partie de cet argument. Les points au
-d\'ebut de la paire indiquent qu'une partie pr\'ec\'edente de la ligne
-source n'est pas montr\'ee. Cette partie pr\'ec\'edente, en fait, inclut la
-commande |\leftline| qui a rendu le |\vskip| ill\'egal.
-\endolist
-\noindent
-Dans un long message comme ceci, vous ne trouverez g\'en\'eralement utiles
-que la premi\`ere ligne et la derni\`ere paire de lignes~; mais cela aide
-parfois de savoir ce que sont les autres lignes. N'importe quel texte que
-vous ins\'ererez ou effacerez sera ins\'er\'e ou supprim\'e au niveau les
-plus secrets. Dans cet exemple l'insertion ou la suppression se produira
-juste avant l'accolade droite ins\'er\'ee. Notez en particulier que dans ce
-cas-ci, \TeX \ met tout texte que vous pourriez ins\'erer, \emph{non} dans
-votre texte source mais dans une d\'efinition de macro plusieurs niveaux
-plus bas. (naturellement, la d\'efinition de macro originale n'est pas
-modifi\'ee.)
-
-Vous pouvez employer la commande ^|\errorcontextlines|
-\ctsref{\errorcontextlines} pour limiter le nombre de paires de lignes de
-contexte d'erreur que \TeX\ produit. Si vous n'\^etes pas int\'eress\'e par
-toute l'information que \TeX\ vous fournit, vous pouvez placer |\error!-
-contextlines| \`a $0$. Cela vous ne donnera que les premi\`eres et
-derni\`eres paires de lignes.
-
-En conclusion, nous mentionnerons deux autres indicateurs qui peuvent
-appara\^\i tre au d\'ebut d'une paire de lignes de message d'erreur~:
-\ulist
-\li ^|<output>| indique que \TeX\ \'etait au milieu de sa routine de sortie
-quand cette erreur s'est produite.
-\li ^|<write>| indique que \TeX\ \'etait en train d'ex\'ecuter une commande
-|\write| quand cette erreur s'est produite. \TeX\ d\'etectera une telle
-erreur quand il fera r\'eellement le |\write| (pendant un |\shipout|), et
-non quand il rencontre le |\write|.
-\endulist
-
-
-\eix^^{messages d'erreur}
-\endchapter
-\byebye
-
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros +\chapter{Comprendre les \linebreak messages d'erreur} + +\chapterdef{errors} + +%\codefuzz = 4pc % for this chapter only (in scope of \chapter) +\bix^^{messages d'erreur} +L'interpr\'etation des messages d'erreur de \TeX\ peut parfois \^etre +compar\'ee \`a aller chez votre m\'edecin avec la sensation d'\^etre +fatigu\'e et obtenir, en r\'eponse, une analyse de votre chimie sanguine. +C'est probablement l'explication de votre d\'etresse, mais il n'est pas +facile de la d\'ecrire. Quelques r\`egles simples vous feront aller plus +loin en vous aidant \`a comprendre les messages d'erreur de \TeX\ et \`a en +obtenir d'avantage. + +Votre premier objectif sera de comprendre ce que vous avez fait pour que +\TeX\ se plaigne. Le second (si vous travaillez interactivement) sera de +d\'eceler le plus d'erreurs que vous pouvez en une seule fois. + +Regardons un exemple. Supposez que votre source contienne la ligne~: +\csdisplay +We skip \quid a little bit. +| +Vous pensiez saisir `|\quad|', mais vous avez tap\'e `|\quid|' \`a la +place. Voici la r\'eponse que vous obtiendrez de \TeX\~: +\csdisplay !! +Undefined control sequence. +l.291 We skip \quid + a little bit. +? +| +Ce message appara\^\i tra sur votre terminal et dans votre \logfile. +^^{fichier log//message d'erreur} La premi\`ere ligne, qui commence +toujours par un point d'exclamation (|!!|), vous indique ce qu'est le +probl\`eme. Les deux derni\`eres lignes avant le prompt `|?|'(qui sont, +dans ce cas-ci, \'egalement, les deux lignes suivantes) vous indiquent o\`u +\'etait \TeX\ quand il a trouv\'e l'erreur. Il a trouv\'e l'erreur sur la +ligne $291$ du fichier source courant, et la coupure entre les deux lignes +de message indiquent la position pr\'ecise de \TeX\ dans la ligne $291$, \`a +savoir, juste apr\`es |\quid|. Le fichier source courant est celui juste +apr\`es la parenth\`ese gauche la plus r\'ecemment ouverte dans le r\'esultat +de votre ex\'ecution sur votre terminal (voir les \xref{infiles}). + +Cette erreur particuli\`ere, un ``undefined control sequence'', est l'une +des plus communes que vous puissiez obtenir. Si vous r\'epondez au prompt +par un autre~`|?| ', \TeX\ affichera le message suivant~: + +{\hfuzz = 2in +\csdisplay +Type <return> to proceed, S to scroll future error messages, +R to run without stopping, Q to run quietly, +I to insert something, E to edit your file, +1 or ... or 9 to ignore the next 1 to 9 tokens of input, +H for help, X to quit. +| +}% +Voici ce que signifient ces propositions~: +\ulist +\li Si vous saisissez \asciichar{return}, \TeX\ continuera \`a traiter +votre document. Dans ce cas, il ignorera juste le |\quid|. +\li Si vous saisissez `|S|' (ou `|s|'---majuscule et minuscule sont +\'equivalentes ici), \TeX\ traitera votre document sans s'arr\^eter, +\emph{sauf} s'il rencontre un fichier absent. Les messages d'erreur +continueront \`a appara\^\i tre sur votre terminal et dans le \logfile. +\li Si vous saisissez `|R|' ou `|r|', vous obtiendrez le m\^eme effet que +pour `|S|', sauf que \TeX\ ne s'arr\^etera pas pour les fichiers manquants. +\li Si vous saisissez `|Q|' ou `|q|', \TeX\ continuera \`a traiter votre +document mais ne s'arr\^etera pas pour des erreurs ni ne les montrera sur +votre terminal. Les erreurs appara\^\i tront toujours dans le \logfile. +\li Si vous saisissez `|X|' ou `|x|', \TeX\ nettoiera ce qu'il peut au +mieux, jettera la page sur laquelle il travaillait et stoppera. Vous pourrez +imprimer ou regarder les pages que \TeX\ a d\'ej\`a trait\'ees. +\li Si vous saisissez `|E|' ou `|e|', \TeX\ nettoiera et se terminera comme +il le fait pour `|X|' ou `|x|' et entrera alors dans votre \'editeur de +texte, vous pla\c cant sur la ligne incorrecte. (tous les syst\`emes ne +supportent pas cette option.) +\li Si vous saisissez `|H|' ou `|h|', vous obtiendrez une autre explication +de l'erreur montr\'ee sur votre terminal et probablement du conseil sur +quoi faire \`a son sujet. Cette explication appara\^\i tra \'egalement dans +votre \logfile. Pour le ``undefined control sequence'' ci-dessus, vous +obtiendrez~: + +{\hfuzz = 2in +\csdisplay +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. +| +} +\li Si vous saisissez `|?|', vous recevrez encore ce m\^eme message. +\endulist +\noindent +Les deux autres solutions de rechange, saisir `|I|' ou un petit nombre +entier, fournissent des moyen de demander \`a \TeX de revenir en \ arri\`ere +pour que votre erreur ne cause pas d'autres erreurs plus tard dans +votre document~: + +\ulist +\li Si vous saisissez `|I|' ou `|i|' suivi de texte, alors \TeX\ ins\'erera +ce texte comme s'il s'\'etait produit juste apr\`es le point d'erreur, au +niveau les plus secrets o\`u \TeX \ travaille. Dans le cas de l'exemple +ci-dessus, cela signifie \`a la position de \TeX\ dans votre source +original, c'est-\`a-dire, juste apr\`es `|\quid|'. Plus tard vous verrez un +exemple qui montre la diff\'erence entre ins\'erer quelque chose au niveau +les plus secrets et l'ins\'erer dans votre source original. Dans l'exemple +ci-dessus d'``undefined control sequence'', si vous saisissez~: +\csdisplay +I\quad +| +\TeX\ effectuera la commande |\quad| et produira un espace cadratin +l\`a o\`u vous avez eu l'intention d'avoir un. +\li Si vous saisissez un nombre entier positif inf\'erieur \`a $100$ (pas +inf\'erieur \`a $10$ comme le message le sugg\`ere maladroitement), \TeX\ +supprimera ce nombre de tokens du niveau les plus secrets o\`u il +travaille. (si vous saisissez un nombre entier sup\'erieur ou \'egal \`a +$100$, \TeX\ supprimera $10$ tokens~!) +\endulist + +Voici un autre exemple d'erreur commune~: +\csdisplay +Skip across \hskip 3cn by 3 centimeters. +| +Le message d'erreur pour ceci est~: +\csdisplay +!! Illegal unit of measure (pt inserted). +<to be read again> + c +<to be read again> + n +l.340 Skip across \hskip 3cn + by 3 centimeters. +| +^^|<to be read again>| +Dans ce cas, \TeX\ a vu que `|3|' est suivi par quelque chose qui n'est pas +une unit\'e de mesure reconnue, et ainsi suppose que l'unit\'e de mesure est +le point. \TeX\ relira le token `|cn|' et l'ins\'erera dans votre saisie, +ce qui n'est pas ce que vous voulez. Dans ce cas, vous pouvez obtenir un +meilleur r\'esultat en saisissant d'abord `|2|' pour reculer avant `|cn|'. +Vous recevrez le message~: +\csdisplay +<recently read> n + +l.340 Skip across \hskip 3cn + by 3 centimeters. +| + +Maintenant vous pouvez saisir `|I\hskip 3cm|' pour obtenir le saut que vous +vouliez (en plus du saut de |3pt| que vous avez d\'ej\`a obtenu).\footnote{en +saisissant `|I\unskip\hskip 3cm|' vous pouvez vous d\'ebarrasser du saut de +|3pt|.} + +Si vous saisissez quelque chose qui n'est valide qu'en mode math\'ema\-tique, +\TeX\ s'orientera vers le mode math\'ematique pour vous que ce soit ce que +vous avez vraiment voulu ou non. Par exemple~: +\csdisplay +So \spadesuit s are trumps. +| +Voici le message d'erreur de \TeX\~: +\csdisplay +!! Missing $ inserted. +<inserted text> + $ +<to be read again> + \spadesuit +l.330 So \spadesuit + s are trumps. +| +Puisque le symbole |\spadesuit| n'est permis qu'en mode math\'ematique, +\TeX\ a ins\'er\'e un `|$|' devant lui. Apr\`es que \TeX\ ait ins\'er\'e un +token, il se place \emph{devant} ce token, dans ce cas, le `|$|', pr\^et +\`a le lire. saisir `|2|' fera que \TeX\ sautera le `|$|' et le token +`|\spadesuit|', le laissant pr\^et \`a traiter le `|s|' de +`|s are trumps|'. Si vous laissez juste \TeX\ continuer, il +composera `|s are trumps|' en mode math\'ematique. + +Voici un exemple o\`u le diagnostic d'erreur de \TeX\ est compl\`etement +erron\'e~: +\csdisplay +\hbox{One \vskip 1in two.} +| +Le message d'erreur est~: +\csdisplay +!! Missing } inserted. +<inserted text> + } +<to be read again> + \vskip +l.29 \hbox{One \vskip + 1in two.} +| +^^|<inserted text>| +Le probl\`eme est que vous ne pouvez pas utiliser |\vskip| quand \TeX\ est +en mode horizontal restreint, c'est-\`a-dire, en construisant un hbox. Mais +au lieu de rejeter le |\vskip|, \TeX\ a ins\'er\'e une accolade droite devant +lui afin d'essayer de fermer le hbox. Si vous acceptez la correction de \TeX, +\TeX\ se plaindra encore quand il arrivera plus tard \`a l'accolade droite +correcte. Il se plaindra \'egalement \`a propos de tout ce qui pr\'ec\`ede cette +accolade droite et qui n'est pas permis en mode vertical. Ces plaintes +r\'ep\'etitives seront particuli\`erement embrouillantes parce que les +erreurs qu'elles indiquent sont fausses, elles sont le r\'esultat des effets +propag\'es de l'insertion inad\'equate de l'accolade droite. Votre meilleur +pari est de saisir `|5|', et de sauter apr\`es tous les tokens de `|}\vskip 1in|'. + +Voici un exemple similaire dans lequel le message d'erreur est plus long +que ce que nous avons vus jusqu'ici~: +\csdisplay +\leftline{Skip \smallskip a little further.} But no more. +| +L'erreur ici est que |\smallskip| ne fonctionne qu'en mode vertical. +Le message d'erreur est quelque chose comme~: +\csdisplay +!! Missing } inserted. +<inserted text> + } +<to be read again> + \vskip +\smallskip ->\vskip + \smallskipamount +<argument> Skip \smallskip + a little further. +\leftline #1->\line {#1 + \hss } +l.93 ...Skip \smallskip a little further.} + But no more. +| +Les messages d'erreur ici vous donnent un tour d'horizon des macros qui sont +utilis\'ees dans l'impl\'ementation de |\leftline| dans \plainTeX---des +macros sur lesquelles vous ne vous inqui\'etez probablement pas. La premi\`ere +ligne vous indique que \TeX\ pr\'evoit de traiter le probl\`eme en +ins\'erant une accolade droite. \TeX\ n'a pas encore r\'eellement lu +l'accolade droite, ainsi vous pouvez la supprimer si vous le choisissez. +Chaque composant du message apr\`es la premi\`ere ligne (celle avec le `!') +occupe une paire de lignes. Voici ce que signifient les paires de lignes +successives~: +\olist +\li La premi\`ere paire indique que \TeX\ a ins\'er\'e, mais pas encore lu, une +accolade droite~: +\li La paire suivante indique qu'apr\`es avoir lu l'accolade droite, \TeX\ +relira un `|\vskip|' (obtenue de la macro d\'efinition du |\smallskip|). +\li La troisi\`eme paire indique que \TeX\ d\'eveloppait la macro +|\smallskip| quand il a trouv\'e l'erreur. Ces deux lignes montrent +\'egalement la d\'efinition de |\smallskip| et indiquent o\`u \TeX\ est +parvenu en d\'evelop\-pant et en ex\'ecutant cette d\'efinition. +Sp\'ecifiquement, il a juste essay\'e sans succ\`es d'ex\'ecuter la +commande |\vskip|. En g\'en\'eral, une ligne diagnostic qui commence par +une commande suivie de `|->|' indique que \TeX\ a d\'evelopp\'e et +ex\'ecut\'e une macro de ce nom. +\li La quatri\`eme paire indique que \TeX\ traitait un argument de macro +quand il a trouv\'e le |\smallskip| et indique \'egalement la position de +\TeX\ du fait de l'argument, c'est-\`a-dire, qu'il a juste trait\'e le +|\smallskip| (sans succ\`es). En regardant vers la prochaine paire de +lignes nous pouvons voir que l'argument a \'et\'e pass\'e \`a |\leftline|. +\li La cinqui\`eme paire indique que \TeX\ d\'eveloppait la macro +|\leftline| quand il a trouv\'e l'erreur. Dans cet exemple l'erreur s'est +produite pendant que \TeX\ \'etait en train d'interpr\'eter plusieurs +d\'efinitions de macro \`a diff\'erents degr\'es de d\'eveloppement. Sa +position apr\`es |#1| indique que la derni\`ere chose qu'il ait vu \'etait le +premier (et dans ce cas-ci le seul) argument de |\leftline|. +\li La derni\`ere paire indique o\`u \TeX\ est plac\'e dans votre fichier +source. Notez que cette position est bien au del\`a de la position o\`u il +a ins\`er\'e l'accolade droite et relu le `|\vskip|'. C'est parce que \TeX\ +a d\'ej\`a lu tout l'argument du |\leftline| de votre fichier source, +m\^eme s'il n'a trait\'e qu'une partie de cet argument. Les points au +d\'ebut de la paire indiquent qu'une partie pr\'ec\'edente de la ligne +source n'est pas montr\'ee. Cette partie pr\'ec\'edente, en fait, inclut la +commande |\leftline| qui a rendu le |\vskip| ill\'egal. +\endolist +\noindent +Dans un long message comme ceci, vous ne trouverez g\'en\'eralement utiles +que la premi\`ere ligne et la derni\`ere paire de lignes~; mais cela aide +parfois de savoir ce que sont les autres lignes. N'importe quel texte que +vous ins\'ererez ou effacerez sera ins\'er\'e ou supprim\'e au niveau les +plus secrets. Dans cet exemple l'insertion ou la suppression se produira +juste avant l'accolade droite ins\'er\'ee. Notez en particulier que dans ce +cas-ci, \TeX \ met tout texte que vous pourriez ins\'erer, \emph{non} dans +votre texte source mais dans une d\'efinition de macro plusieurs niveaux +plus bas. (naturellement, la d\'efinition de macro originale n'est pas +modifi\'ee.) + +Vous pouvez employer la commande ^|\errorcontextlines| +\ctsref{\errorcontextlines} pour limiter le nombre de paires de lignes de +contexte d'erreur que \TeX\ produit. Si vous n'\^etes pas int\'eress\'e par +toute l'information que \TeX\ vous fournit, vous pouvez placer |\error!- +contextlines| \`a $0$. Cela vous ne donnera que les premi\`eres et +derni\`eres paires de lignes. + +En conclusion, nous mentionnerons deux autres indicateurs qui peuvent +appara\^\i tre au d\'ebut d'une paire de lignes de message d'erreur~: +\ulist +\li ^|<output>| indique que \TeX\ \'etait au milieu de sa routine de sortie +quand cette erreur s'est produite. +\li ^|<write>| indique que \TeX\ \'etait en train d'ex\'ecuter une commande +|\write| quand cette erreur s'est produite. \TeX\ d\'etectera une telle +erreur quand il fera r\'eellement le |\write| (pendant un |\shipout|), et +non quand il rencontre le |\write|. +\endulist + + +\eix^^{messages d'erreur} +\endchapter +\byebye + diff --git a/info/impatient/fr/ffrontm.tex b/info/impatient/fr/ffrontm.tex index 4ec5dbd10f..83980b52e2 100644 --- a/info/impatient/fr/ffrontm.tex +++ b/info/impatient/fr/ffrontm.tex @@ -1,82 +1,82 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-%
-% Front matter.
-
-\input fmacros
-
-
-% Frontmatter is numbered i, ii, ...
-\pageno = -1
-
-% Bastard title.
-%
-% \sinkage
-\leftline{\chapterfonts \TeX\ pour l'Impatient}
-
-\noheadlinetrue\pagebreak
-
-
-% Title spread.
-%
-%(title page, lhs)
-%\noheadlinetrue\pagebreak
-\blankpage
-
-%(title page, rhs)
-%\noheadlinetrue\pagebreak
-\blankpage
-
-
-\input fcopyrgh
-\noheadlinetrue
-
-
-% Dedication.
-%
-\sinkage
-{\it \flushright
- Pour Jodi.
- ---{\sc p.w.a.}
-
- \`a la m\'emoire de mon p\`ere,
- qui a eu foi en moi.
- ---{\sc k.a.h.}
-
- Pour Dan.
- ---{\sc k.b.}
-}
-\pagebreak
-
-% From here on, the convention is that every frontchapter does its own
-% ending pagebreak and encloses its fonts in a group if necessary.
-
-% The preface should start on a right-hand page.
-
-\blankpage
-\input fpreface
-
-% Contents.
-%
-% We never want to empty the file after doing the brief contents.
-%
-\rewritetocfilefalse
-%
-\blankpage
-\frontchapter{Table des mati\`eres\linebreak abr\'eg\'ee}
-
-\shortcontents
-
-
-\ifcompletebook \global\rewritetocfiletrue \fi
-
-\frontchapter{Table des mati\`eres}
-
-\contents
-
-\blankpage
-\input fread1st
-
-\byebye
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. +% +% Front matter. + +\input fmacros + + +% Frontmatter is numbered i, ii, ... +\pageno = -1 + +% Bastard title. +% +% \sinkage +\leftline{\chapterfonts \TeX\ pour l'Impatient} + +\noheadlinetrue\pagebreak + + +% Title spread. +% +%(title page, lhs) +%\noheadlinetrue\pagebreak +\blankpage + +%(title page, rhs) +%\noheadlinetrue\pagebreak +\blankpage + + +\input fcopyrgh +\noheadlinetrue + + +% Dedication. +% +\sinkage +{\it \flushright + Pour Jodi. + ---{\sc p.w.a.} + + \`a la m\'emoire de mon p\`ere, + qui a eu foi en moi. + ---{\sc k.a.h.} + + Pour Dan. + ---{\sc k.b.} +} +\pagebreak + +% From here on, the convention is that every frontchapter does its own +% ending pagebreak and encloses its fonts in a group if necessary. + +% The preface should start on a right-hand page. + +\blankpage +\input fpreface + +% Contents. +% +% We never want to empty the file after doing the brief contents. +% +\rewritetocfilefalse +% +\blankpage +\frontchapter{Table des mati\`eres\linebreak abr\'eg\'ee} + +\shortcontents + + +\ifcompletebook \global\rewritetocfiletrue \fi + +\frontchapter{Table des mati\`eres} + +\contents + +\blankpage +\input fread1st + +\byebye diff --git a/info/impatient/fr/fgenops.tex b/info/impatient/fr/fgenops.tex index 179e17a50f..2ca0acac59 100644 --- a/info/impatient/fr/fgenops.tex +++ b/info/impatient/fr/fgenops.tex @@ -1,2834 +1,2834 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-\chapter {Commandes pour \linebreak des op\'erations g\'en\'erales}
-
-\chapterdef{general}
-
-Cette section couvre
-des ^{caract\'eristiques de programmation} de \TeX\ et
-toutes autres choses qui ne rentrent pas dans les cat\'egories
-de commandes des chapitres pr\'ec\'edents.
-Pour une explication des conventions utilis\'ees dans cette section,
-voir \headcit{Descriptions des commandes}{cmddesc}.
-
-\begindescriptions
-
-%==========================================================================
-\section {Nommer et modifier des polices}
-
-\begindesc
-\bix^^{polices//nommer et modifier}
-\cts font {}
-\aux\cts font {\<s\'equence de contr\^ole> = \<nom de police>}
-\aux\cts font {\<s\'equence de contr\^ole> = \<nom de police> {\bt scaled} \<nombre>}
-\aux\cts font {\<s\'equence de contr\^ole> = \<nom de police> {\bt at} \<dimension>}
-\explain
-Utilis\'ee seule, la s\'equence de contr\^ole |\font| d\'esigne la police courante.
-|\font| n'est pas une vraie commande quand elle est utilis\'ee seule,
-puis\-qu'elle ne peut alors appara\^\i tre que comme argument d'une autre commande.
-
-Pour les trois autres formes de |\font|,
-\<nom de police> nomme un jeu de fichier qui d\'efinit une police.
-Ces formes de |\font| sont des commandes. Chacune de ces formes a deux
-effets~:
-{\tighten
-\olist
-\li Elle d\'efinit \<s\'equence de contr\^ole> comme un nom qui s\'electionne
-la police \<nom de police>, \'eventuellement magnifi\'ee (voir plus bas).
-\li Elle demande \`a \TeX\ de charger le fichier de m\'etriques
-^^{fichiers de m\'etriques} de la police (^{\tfmfile}) pour \<nom de
-police>.
-\endolist
-}% end tighten
-
-\noindent
-Le nom d'un fichier de police indique normalement sa taille de dessin.
-Par exemple, |cmr10| indique Computer Modern romain avec une
-taille de dessin de $10$ points.
-La taille des dessins d'une police est enregistr\'ee dans ses fichiers de m\'etriques.
-
-Si ni |scaled| \<nombre> ni |at| \<dimension>
-n'est pr\'esent, la police est utilis\'ee
-\`a sa taille de dessin---la taille pour laquelle elle est normalement faite.
-Autrement, une version magnifi\'ee de la police est charg\'ee~:
-\ulist
-\li Si |scaled| \<nombre>
-est pr\'esent, la police est magnifi\'ee d'un facteur de $\hbox{\<nombre>}/1000$.
-\li Si |at| \<dimension> est pr\'esent, la police est
-agrandie de \<dimension> en la magnifiant
-par $\hbox{\<dimension>}/ds$, o\`u $ds$ est la taille de dessin de
-\<nom de police>.
-\<dimension> et $ds$ sont toujours donn\'es en points.
-\endulist
-\noindent
-Des magnifications de moins que $1$ sont possibles~; Elles r\'eduisent la taille.
-
-Vous devez habituellement fournir un fichier de formes (\xref{shape}) pour chaque
-magnification de police que vous chargez.
-N\'eanmoins, certains ^{pilotes de p\'eriph\'eriques} peuvent utiliser des polices
-qui sont r\'esidentes dans une imprimante. ^^{polices r\'esidentes}
-De telles polices n'ont pas besoin de fichiers de formes.
-
-Voir \conceptcit{police} et
-\conceptcit{magnification} pour plus d'informa\-tion.
-
-\example
-\font\tentt = cmtt10
-\font\bigttfont = cmtt10 scaled \magstep2
-\font\eleventtfont = cmtt10 at 11pt
-First we use {\tentt regular CM typewriter}.
-Then we use {\eleventtfont eleven-point CM typewriter}.
-Finally we use {\bigttfont big CM typewriter}.
-|
-\produces
-\font\regttfont = cmtt10
-\font\bigttfont = cmtt10 scaled \magstep 2
-\font\eleventtfont = cmtt10 at 11pt
-First we use {\regttfont regular CM typewriter}.
-Then we use {\eleventtfont eleven-point CM typewriter}.
-Finally we use {\bigttfont big CM typewriter}.
-\endexample
-\enddesc
-
-\begindesc
-\cts fontdimen {\<nombre> \<police>\param{dimension}}
-\explain
-^^{polices//param\`etres de}
-Ce param\`etre sp\'ecifie des dimensions vari\'ees associ\'ees avec
-la police nomm\'ee par la s\'equence de contr\^ole \<police>
-(\`a distinguer de \<font\-name> qui nomme les fichiers de police).
-Des valeurs de ces param\`etres sont sp\'ecifi\'es dans les fichiers de m\'etriques
-pour \<police>, mais vous pouvez
-r\'eparer ou changer leurs valeurs pendant une ex\'ecution de \TeX.
-Les nombres et significations de ces param\`etres sont~:
-\display{\halign{\hfil#\hfil\quad&#\hfil\cr
-\it Nombre&\it Signification\cr
-\noalign{\vskip 1\jot}%
-1&inclinaison par point\cr
-2&espace inter-mot\cr
-3&\'etirement inter-mot\cr
-4&r\'etr\'ecissement inter-mot\cr
-5&hauteur de x (taille d'un |1ex|)\cr
-6&largeur de cadratin (taille d'un |1em|)\cr
-7&espace suppl\'ementaire\cr}}
-\noindent
-\TeX\ utilise l'inclinaison par point pour positionner des accents.
-Il utilise aussi les param\`etres inter-mot pour produire des espaces inter-mots
-(voir |\spaceskip|, \xref\spaceskip) et le param\`etre d'espace suppl\'ementaire
-pour l'espa\-ce additionel apr\`es une virgule (voir |\xspaceskip|,
-\xref\xspaceskip).
-Les valeurs de ces param\`etres pour les
-polices \plainTeX\ sont \'enum\'er\'ees dans la \knuth{page~433}{497}.
-Les polices de symboles math\'ematiques ont $15$ param\`etres additionnels,
-dont nous ne parlerons pas ici.
-
-Attention~:
-les assignements de ces param\`etres \emph{ne} sont \emph{pas} d\'efaits \`a la fin
-d'un groupe.
-Si vous voulez changer ces param\`etres localement, vous devrez
-sauvegarder et restaurer leurs valeurs originales explicitement.
-\example
-Here's a line printed normally.\par
-\fontdimen2\font = 3\fontdimen2\font
-% Triple the interword spacing.
-\noindent Here's a really spaced-out line.
-|
-\produces
-Here's a line printed normally.\par
-\dimen0 = \fontdimen2\font % to undo global assignment
-\fontdimen2\font = 3\fontdimen2\font
-% triple the interword spacing
-\noindent Here's a really spaced-out line.
-\fontdimen2\font = \dimen0
-\endexample
-\enddesc
-
-\begindesc
-\cts magnification {{\bt =} \<nombre>}
-\cts mag {\param{nombre}}
-\explain
-\margin{{\tt\\mag} and {\tt\\magnification} combined.}
-Un assignement de |\magnification| \'etablit
-le ``^{facteur d'\'echelle}'' $f$ qui d\'etermine
-le ratio de \minref{magnification} de votre document \seeconcept{magnification}.
-L'assignation de |\magni!-fication| doit appara\^\i tre avant que la premi\`ere page
-de votre document ait \'et\'e envoy\'ee.
-
-L'assignement met $f$ \`a \<nombre> et met
-aussi |\hsize| et |\vsize|
-^^|\hsize//d\'etermin\'e par {\tt\\magnification}|
-^^|\vsize//d\'etermin\'e par {\tt\\magnification}|
-respectivement \`a |6.5true in| et |8.9true in|,
-Les valeurs appropri\'ees pour une page $8 \frac1/2$-%
-par-$11$-pouce.
-$f$ doit \^etre entre $0$ et $32768$.
-Le ratio \minref{magnification} du
-document est $f/1000$.
-Un facteur d'\'echelle
-de $1000$ procure une unit\'e de magnification, c'est-\`a-dire, il laisse
-la taille de votre document inchang\'ee.
-Il est d'usage d'utiliser des puissances de $1.2$ comme facteur d'\'echelle et
-la plupart des librairies de polices sont bas\'ees sur de tels facteurs. Vous
-pouvez utiliser les commandes ^|\magstep| et ^|\magstephalf| pour sp\'ecifier
-des magnifications par ces facteurs.
-
-|\magnification| n'est pas un param\`etre. Vous ne pouvez pas l'utiliser
-pour \emph{r\'ecuperer} le facteur d'\'echelle. Si vous \'ecrivez quelque chose comme
-|\dimen0 = \mag!-nifi!-cation|, \TeX\ s'en plaindra.
-
-Le param\`etre |\mag| contient le facteur d'\'echelle.
-Changer la valeur de |\mag| retaille les dimensions de la page, ce qui n'est pas
-ce que vous voulez habituellement.
-Aussi, il est pr\'ef\'erable de changer la magnification en
-l'assignant \`a |\magnification| plut\^ot qu'\`a |\mag|.
-
-\example
-\magnification = \magstep2
-% magnify fonts by 1.44 (=1.2x1.2)
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts magstep {\<nombre>}
-\explain
-Cette commande d\'eveloppe le ratio de \minref{magnification} demand\'e pour
-magnifier tout dans votre document
-(autre que des dimensions |true|)
-par $1.2^r$, o\`u $r$ est
-la valeur de \<nombre>. \<nombre> doit \^etre entre $0$ et $5$.
-\example
-\magnification = \magstep1 % Magnify by ratio of 1.2.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts magstephalf {}
-\explain
-Cette commande d\'eveloppe le ratio de \minref{magnification} demand\'e pour
-magnifier tout dans votre document
-(autre que des dimensions |true|)
-par $\sqrt{1.2}$,
-c'est-\`a-dire, \`a mi chemin entre $1$ et $1.2$.
-\example
-\magnification = \magstephalf
-|
-\endexample
-\eix^^{polices//nommer et modifier}
-\enddesc
-
-%==========================================================================
-\section {Convertir l'information en tokens}
-
-\subsection {Nombres}
-
-\begindesc
-\xrdef{convert}
-\bix^^{nombres//convertir en caract\`eres}
-%
-\cts number {\<nombre>}
-\explain
-Cette commande produit la repr\'esentation d'un \minref{nombre}
-comme une s\'e\-quence de
-\minref{token}s de caract\`ere. Le nombre peut \^etre un entier explicite,
-un param\`etre \<nombre> ou un registre \<nombre>.
-\example
-\number 24 \quad \count13 = -10000 \number\count13
-|
-\produces
-\number 24 \quad \count13 = -10000 \number\count13
-\endexample
-\enddesc
-
-\begindesc
-^^{chiffres romain}
-\easy\cts romannumeral {\<nombre>}
-\explain
-Cette commande produit la repr\'esentation num\'erique romaine d'un \minref{nom\-bre}
-comme une s\'equence de
-\minref{token}s de caract\`ere. Le nombre peut \^etre un entier explicite,
-un param\`etre \<nombre> ou un registre \<nombre>.
-Si le nombre est z\'ero ou n\'egatif, |\romannumeral| ne produit
-pas de tokens.
-\example
-\romannumeral 24 \quad (\romannumeral -16)\quad
-\count13 = 6000 \romannumeral\count13
-|
-\produces
-\romannumeral 24 \quad (\romannumeral -16)\quad
-\count13 = 6000 \romannumeral\count13
-\endexample
-
-\eix^^{nombres//convertir en caract\`eres}
-\enddesc
-
-%==========================================================================
-\subsection {Information environmentale}
-
-\begindesc
-^^{heure du jour}
-\cts time {\param{nombre}}
-\explain
-\TeX\ met ce param\`etre au
-nombre de minutes qui se sont d\'eroul\'ees depuis minuit (du jour courant).
-A neuf heures, par exemple, |\time| est \`a $720$.
-Cette commande et les trois suivantes utilisent l'heure et la date
-enregistr\'ee dans votre ordinateur.
-\TeX\ les r\'ecup\`ere juste une fois, au d\'ebut de votre ex\'ecution, donc |\time|
-\`a la fin de l'ex\'ecution \`a toujours la m\^eme valeur que |\time| au
-d\'ebut de l'ex\'ecution (\`a moins que vous l'ayez chang\'ee explicitement).
-\enddesc
-
-\bix^^{date}
-\begindesc
-\cts day {\param{nombre}}
-\explain
-\TeX\ met ce param\`etre au jour courant du mois. c'est
-un nombre entre $1$ et $31$.
-|\day| est mis au d\'ebut de votre ex\'ecution (voir les commentaires sur
-|\time| ci-dessus).
-\enddesc
-
-\begindesc
-\cts month {\param{nombre}}
-\explain
-\TeX\ met ce param\`etre au mois courant. C'est
-un nombre entre $1$ et $12$.
-|\month| est mis au d\'ebut de votre ex\'ecution (voir les commentaires sur
-|\time| ci-dessus).
-\enddesc
-
-\begindesc
-\cts year {\param{nombre}}
-\explain
-\TeX\ met ce param\`etre \`a l'ann\'ee courante ({apr\`es \sc J.-C.}).
-C'est un nombre tel que $2004$.
-|\year| est mis au d\'ebut de votre ex\'ecution (voir les commentaires sur
-|\time| ci-dessus).
-
-\eix^^{date}
-\enddesc
-
-\begindesc
-^^{num\'ero de version}
-\cts fmtname {}
-\cts fmtversion {}
-\explain
-Ces commandes produisent le nom et le num\'ero de version
-du format \TeX,
-c'est-\`a-dire \minref{\plainTeX} ou ^{\LaTeX}, que vous utilisez.
-\example
-This book was produced with the \fmtname\ format,
-version~\fmtversion.
-|
-\produces
-This book was produced with the \fmtname\ format,
-version~\fmtversion.
-\endexample
-\enddesc
-
-\begindesc
-\cts jobname {}
-\explain
-Cette commande produit le nom de base
-du fichier avec lequel \TeX\ \`a \'et\'e invoqu\'e.
-Par exemple, si votre fichier d'entr\'ee principal est |hatter.tex|,
-|\jobname| se d\'eveloppera en |hatter|.
-|\jobname| est plus pratique quand vous
-cr\'eez un fichier auxiliaire devant \^etre associ\'e avec un document.
-^^{fichiers auxiliaires}
-\example
-\newwrite\indexfile \openout\indexfile = \jobname.idx
-% For input file `hatter.tex', open index file `hatter.idx'.
-|
-\endexample\enddesc
-
-%==========================================================================
-\subsection {Valeurs des variables}
-
-\begindesc
-\cts meaning {\<token>}
-\explain
-^^{tokens//montrer la signification de}
-Cette commande produit
-la signification de \<token>. Elle est pratique pour diagnostiquer en sortie.
-Vous pouvez utiliser la commande ^|\the| (\xref\the) d'une mani\`ere similaire
-pour obtenir l'information sur les valeurs des \minref{registre}s et autres
-entit\'es de \TeX.
-\example
-[{\tt \meaning\eject}] [\meaning\tenrm] [\meaning Y]
-|
-\produces
-[{\tt \meaning\eject}] [\meaning\tenrm] [\meaning Y]
-\endexample\enddesc
-
-\begindesc
-\cts string {\<s\'equence de contr\^ole>}
-\explain
-^^{s\'equences de contr\^ole//convertir en chaines}
-Cette commande produit
-les caract\`eres qui forment le nom \<s\'equence de contr\^ole>,
-en incluant le \minref{caract\`ere d'\'echappement}.
-Le caract\`ere d'\'echap\-pement est repr\'esent\'e par la valeur courante de
-^|\escapechar|.
-^^{caract\`ere d'\'echappement//repr\'esent\'e par \b\tt\\escapechar\e}
-\TeX\ donne les caract\`eres dans la liste d'un code de cat\'egorie de $12$ (outre).
-
-Vous pouvez proc\'eder \`a l'op\'eration inverse avec
-la commande ^|\csname| (\xref \csname),
-qui transforme une chaine en une s\'equence de contr\^ole.
-\example
-the control sequence {\tt \string\bigbreak}
-|
-\produces
-the control sequence {\tt \string\bigbreak}
-\endexample\enddesc
-
-\begindesc
-\cts escapechar {\param{nombre}}
-\explain
-Ce param\`etre sp\'ecifie le code \ascii\ \minrefs{\ascii} du
-caract\`ere que \TeX\ utilise pour repr\'esenter le \minref{caract\`ere d'\'echappement}
-^^{caract\`ere d'\'echappement//repr\'esent\'e par \b\tt\\escapechar\e}
-quand il
-convertit un nom de s\'equence de contr\^ole en une s\'equence de tokens de caract\`ere.
-Cette conversion \`a lieu quand vous utilisez la commande |\string| et aussi quand
-\TeX\ produit des messages de diagnostic. La valeur par d\'efaut du caract\`ere
-d'\'echappement est $92$, la code de caract\`ere {\ascii} pour un ^{backslash}.
-Si |\escapechar| n'est pas dans la fourchette $0$--$255$,
-\TeX\ n'inclut pas de caract\`ere d'\'echappement dans le r\'esultat de la conversion.
-\example
-\escapechar = `!!
-the control sequence {\tt \string\bigbreak}
-|
-\produces
-\escapechar = `!
-the control sequence {\tt \string\bigbreak}
-\endexample
-\enddesc
-
-\begindesc
-\cts fontname {\<police>}
-\explain
-^^{polices//noms de}
-Cette commande produit le nom de fichier
-pour la \<police>. Le nom de fichier est le \<font\-name> qui a \'et\'e utilis\'e
-pour d\'efinir \<police>.
-\example
-\font\myfive=cmr5 [\fontname\myfive]
-|
-\produces
-\font\myfive=cmr5 [\fontname\myfive]
-\endexample
-\enddesc
-
-
-%==========================================================================
-\section {Groupement}
-
-\begindesc
-\bix^^{groupes}
-%
-\cts begingroup {}
-\cts endgroup {}
-\explain
-Ces deux commandes d\'ebutent et terminent un \minref{groupe}.
-Un |\begingroup| ne s'accorde pas avec une accolade droite,
-ni un |\endgroup| avec une accolade gauche.
-
-\TeX\ traite |\begingroup| et |\endgroup| comme tout autre
-\minref{s\'equence de contr\^ole} quand il scanne son entr\'ee. En particulier,
-vous pouvez d\'efinir une \minref{macro} qui contient un |\begingroup|
-mais pas de |\endgroup|, et inversement.
-^^{macros//utiliser \b\tt\\begingroup\e\ et \b\tt\\endgroup\e\ dans des}
-Cette technique est souvent pratique
-quand vous d\'efinissez des paires de macros, une qui \'etablit
-un environnement et l'autre qui termine cet environnement.
-Vous ne pouvez, de plus, pas utiliser |\begingroup| et |\endgroup| comme
-substituts pour des
-accolades autres que celles qui entourent un groupe.
-\example
-\def\a{One \begingroup \it two }
-\def\enda{\endgroup four}
-\a three \enda
-|
-\produces
-\def\a{One \begingroup \it two }
-\def\enda{\endgroup four}
-\a three \enda
-\endexample
-\enddesc
-
-\begindesc
-\makecolumns 4/2:
-\easy%
-\ctsact { \xrdef{@lbrace}
-\cts bgroup {}
-\ctsact } \xrdef{@rbrace}
-\cts egroup {}
-\explain
-Les accolades gauches et droites sont des commandes qui d\'ebutent et terminent un
-\minref{groupe}.
-Les \minref{s\'equences de contr\^ole} |\bgroup| et |\egroup| sont \'equivalentes
-\`a `|{|' et `|}|', sauf que
-\TeX\ traite |\bgroup| et |\egroup| comme tout autre
-\minref{s\'equence de contr\^ole} quand il scanne son entr\'ee.
-
-|\bgroup| et |\egroup| peuvent \^etre pratiques quand vous
-d\'efinissez des paires de macros, une dans laquelle
-d\'ebute une construction d\'elimit\'ee par accolade (pas n\'ecessairement un groupe)
-et l'autre dans laquelle ce termine cette construction.
-^^{macros//utiliser \b\tt\\bgroup\e\ et \b\tt\\egroup\e\ dans des}
-Vous ne pouvez pas d\'efinir de telles macros en utilisant des accolades ordinaires---si vous essayez,
-vos d\'efinitions de macro contiendront des accolades non appair\'ees
-et seront de ce fait inacceptables par \TeX.
-Normalement vous ne devez utilisez ces commandes que quand vous ne pouvez utiliser
-d'accolades ordinaires.
-
-\example
-Braces define the {\it boundaries\/} of a group.
-|
-\produces
-Braces define the {\it boundaries\/} of a group.
-\nextexample
-\def\a{One \vbox\bgroup}
-% You couldn't use { instead of \bgroup here because
-% TeX would not recognize the end of the macro
-\def\enda#1{{#1\egroup} two}
-% This one is a little tricky, since the \egroup actually
-% matches a left brace and the following right brace
-% matches the \bgroup. But it works!!
-\a \enda{\hrule width 1in}
-|
-\produces
-\def\a{One \vbox\bgroup}
-% You couldn't use { instead of \bgroup here because
-% TeX would not recognize the end of the macro
-\def\enda#1{{#1\egroup} two}
-% This one is a little tricky, since the \egroup actually
-% matches a left brace and the following right brace
-% matches the \bgroup. But it works!
-\a \enda{\hrule width 1in}
-\endexample
-\enddesc
-
-\begindesc
-\cts global {}
-\explain
-Cette commande rend la d\'efinition
-ou l'\minref{assignement} suivant \minref{global} \seeconcept{global}
-pour qu'il devienne effectif ind\'ependamment des fronti\`eres du \minref{groupe}.
-Vous pouvez appliquer un pr\'efix |\global| \`a toute sorte de d\'efinition
-ou \minref{assignement},
-en incluant une d\'efinition de \minref{macro} ou un assignement de \minref{registre}.
-\example
-{\global\let\la = \leftarrow}
-$a \la b$
-|
-\produces
-% for safety's sake we fake this one!
-\let\la = \leftarrow
-$a \la b$
-\endexample
-\enddesc
-
-\begindesc
-\cts globaldefs {\param{nombre}}
-\explain
-Ce param\`etre contr\^ole si \TeX\ prend ou non des d\'efinitions
-et autres assignements comme \'etant
-\minref{globaux}~:
-\ulist
-\li Si |\globaldefs| est \`a z\'ero (comme il l'est par d\'efaut), une d\'efinition est globale
-si et seulement si il est pr\'ec\'ed\'e par |\global| soit explicitement soit implicitement.
-(Les commandes ^|\gdef| et ^|\xdef| (\xref\gdef) ont un pr\'efixe
-|\global| implicite).
-\li Si |\globaldefs| est sup\'erieur \`a z\'ero, tout assignement et
-d\'efinition est implicitement pr\'efix\'e par ^|\global|.
-\li Si |\globaldefs| est inf\'erieur \`a z\'ero, tout pr\'efixe ^|\global| est ignor\'e.
-\endulist
-\enddesc
-
-\begindesc
-\margin{Order of {\tt\\aftergroup} and {\tt\\afterassignment} changed.}
-\cts aftergroup {\<token>}
-\explain
-Quand \TeX\ rencontre cette commande dans une entr\'ee,
-il sauve \<token>.
-Apr\`es la fin du \minref{groupe} courant,
-il r\'eins\`ere \<token> dans l'entr\'ee et le d\'eveloppe.
-Si un groupe contient plusieurs |\aftergroup|s, les tokens correspondants
-sont \emph{tous} ins\'er\'es suivant la fin du groupe, dans l'ordre
-dans lequel ils apparaissent \`a l'origine.
-
-L'exemple qui suit vous montre comment vous pouvez utiliser |\after!-group|
-pour diff\'erer le traitement d'un token que vous avez g\'en\'er\'e dans un
-\minref{test conditionnel}.
-\example
-\def\neg{negative} \def\pos{positive}
-% These definitions are needed because \aftergroup applies
-% to a single token, not to a sequence of tokens or even
-% to a brace-delimited text.
-\def\arith#1{Is $#1>0$? \begingroup
- \ifnum #1>-1 Yes\aftergroup\pos
- \else No\aftergroup\neg\fi
- , it's \endgroup. }
-\arith 2
-\arith {-1}
-|
-\produces
-\def\neg{negative} \def\pos{positive}
-% These definitions are needed because \aftergroup applies
-% to a single token, not a sequence of tokens or even
-% a group.
-\def\arith#1{Is $#1>0$? \begingroup
- \ifnum #1>-1 Yes\aftergroup\pos
- \else No\aftergroup\neg\fi
- , it's \endgroup. }
-\arith 2
-\arith {-1}
-\endexample
-\eix^^{groupes}
-\enddesc
-
-\begindesc
-\cts afterassignment {\<token>}
-\explain
-Quand \TeX\ rencontre cette commande il sauve \<token> dans un endroit sp\'ecial.
-Apr\`es qu'il ait ex\'ecut\'e l'\minref{assignment} suivant, il ins\`ere
-\<token> dans l'entr\'ee et le d\'eveloppe. Si vous appelez |\afterassignment|
-plus d'une fois avant un assignement, seul le dernier appel a un effet.
-Une utilisation de |\afterassignment|
-est dans l'\'ecriture de \minref{macro}s pour des commandes devant \^etre \'ecrites
-sous la forme d'assignements, comme dans l'exemple suivant.
-
-Voir la \knuth{page~279}{325} pour un description pr\'ecise
-du fonctionnement d'|\afterassignment|.
-\example
-\def\setme{\afterassignment\setmeA\count255}
-\def\setmeA{$\number\count255\advance\count255 by 10
- +10=\number\count255$}
-Some arithmetic: \setme = 27
-% After expanding \setme, TeX sets \count255 to 27 and
-% then calls \setmeA.
-|
-\produces
-\def\setme{\afterassignment\setmeA\count255}
-\def\setmeA{$\number\count255\advance\count255 by 10
-+10=\number\count255$}
-Some arithmetic: \setme = 27
-% After expanding \setme, TeX sets \count255 to 27 and
-% then calls \setmeA.
-\endexample
-\enddesc
-
-
-%==========================================================================
-\section {Macros}
-
-%==========================================================================
-\subsection {D\'efinir des macros}
-
-\begindesc
-\bix^^{macros}
-\bix^^{macros//d\'efinir des}
-\xrdef{mac1}% begin the section on macros
-%
-\cts def {\<s\'equence de contr\^ole> \<texte de param\`etre> \rqbraces{\<texte de remplacement>}}
-\explain
-Cette commande d\'efinit \<s\'equence de contr\^ole> comme une \minref{macro} avec les
-\<texte de param\`etre> et \<texte de remplacement> sp\'ecifi\'es.
-Voir \xrefpg{macro} pour une explication compl\`ete sur la fa\c con d'\'ecrire une
-d\'efinition de macro.
-\example
-\def\add#1+#2=?{#1+#2&=
- \count255=#1 \advance\count255 by #2 \number\count255\cr}
-$$\eqalign{
- \add 27+9=?
- \add -5+-8=?}$$
-|
-\dproduces
-\def\add#1+#2=?{#1+#2&=
- \count255=#1 \advance\count255 by #2 \number\count255\cr}
-$$\eqalign{
- \add 27+9=?
- \add -5+-8=?}$$
-\endexample
-\enddesc
-
-\begindesc
-\cts edef {\<s\'equence de contr\^ole> \<texte de param\`etre> \rqbraces{\<texte de remplacement>}}
-\explain
-Cette commande d\'efinit une macro de la m\^eme mani\`ere g\'en\'erale que |\def|.
-La diff\'erence est que \TeX\ d\'eveloppe le \<texte de remplacement>
-d'un |\edef| imm\'ediatement (mais sans rien ex\'ecuter).
-Ainsi toutes d\'efini\-tions du \<texte de remplacement> sont d\'evelopp\'ees, mais
-des assignements et commandes qui produisent des choses telles que bo\^\i tes et
-des ressorts sont laiss\'es tels quels. Par exemple, une commande |\hbox| dans
-le \<texte de remplacement> d'un |\edef| reste comme une commande et n'est pas
-transform\'ee en une bo\^\i te quand \TeX\ ex\'ecute la d\'efinition.
-Il n'est pas toujours \'evident de savoir ce qui est d\'evelopp\'e et ce qui ne l'est pas, mais vous
-trouverez une liste compl\`ete des s\'equences de contr\^ole d\'eveloppables sur les
-\knuth{pages~212--215}{249--252}.
-
-Vous pouvez inhiber le d\'eveloppement d'une s\'equence de contr\^ole qui devrait
-\^etre d\'evelopp\'ee en utilisant |\no!-expand| (\xref\noexpand). ^^|\noexpand|
-Vous pouvez diff\'erer le d\'eveloppement d'une s\'equence de contr\^ole en utilisant la commande
-^|\expandafter| (\xref\expandafter).
-
-Les commandes |\write|, |\message|, |\errmessage|, |\wlog| et |\csname|
-d\'eveloppent leurs
-listes de token en utilisant les m\^eme r\`egles que |\edef| utilise pour d\'evelopper son
-texte de remplacement.
-^^|\write//d\'evelopp\'e par les r\`egles d'{\tt\\edef}|
-^^|\message//d\'evelopp\'e par les r\`egles d'{\tt\\edef}|
-^^|\errmessage//d\'evelopp\'e par les r\`egles d'{\tt\\edef}|
-^^|\wlog//d\'evelopp\'e par les r\`egles d'{\tt\\edef}|
-^^|\csname//d\'evelopp\'e par les r\`egles d'{\tt\\edef}|
-\example
-\def\aa{xy} \count255 = 1
-\edef\bb{w\ifnum \count255 > 0\aa\fi z}
-% equivalent to \def\bb{wxyz}
-\def\aa{} \count255 = 0 % leaves \bb unaffected
-\bb
-|
-\produces
-\def\aa{xy} \count255 = 1
-\edef\bb{w\ifnum \count255 > 0\aa\fi z}
-% equivalent to \def\bb{wxyz}
-\def\aa{} \count255 = 0 % leaves \bb unaffected
-\bb
-\endexample
-\enddesc
-
-\begindesc
-\cts gdef {\<s\'equence de contr\^ole> \<texte de param\`etre> \rqbraces{\<texte de remplacement>}}
-\explain
-Cette commande est \'equivalente \`a |\global\def|.
-\enddesc
-
-\begindesc
-\cts xdef {\<s\'equence de contr\^ole> \<texte de param\`etre> \rqbraces{\<texte de remplacement>}}
-\explain
-Cette commande est \'equivalente \`a |\global\edef|.
-\enddesc
-
-\begindesc
-\cts long {}
-\explain
-Cette commande est utilis\'ee comme pr\'efixe d'une d\'efinition de \minref{macro}.
-Elle dit \`a \TeX\ que les arguments de la macro peuvent inclure
-des tokens |\par| (\xref{\@par}), qui indiquent normalement la fin d'un paragraphe.
-^^|\par//dans des arguments de macro|
-Si \TeX\
-essaye de d\'evelopper une macro d\'efinie sans |\long| et qu'un des arguments
-de la macro comprend un token |\par|,
-\TeX\ se plaindra par un ``runaway argument''. Le but
-de ce comportement est de vous fournir des protections contre des arguments de
-macro non termin\'es.
-|\long| vous donne un moyen d'outrepasser la protection.
-\example
-\long\def\aa#1{\par\hrule\smallskip#1\par\smallskip\hrule}
-\aa{This is the first line.\par
-This is the second line.}
-% without \long, TeX would complain
-|
-\produces
-\medskip
-\long\def\aa#1{\par\hrule\smallskip#1\par\smallskip\hrule}
-\aa{This is the first line.\par
-This is the second line.}
-% without \long, TeX would complain
-\endexample
-\enddesc
-
-\begindesc
-\cts outer {}
-\explain
-\null ^^{outer}
-Cette commande est utilis\'ee comme pr\'efixe d'une d\'efinition de \minref{macro}.
-Elle dit \`a \TeX\ que la macro est externe (\xref{outer})
-et ne peut pas \^etre utilis\'ee dans certains contextes.
-Si la macro est utilis\'ee dans un contexte interdit, \TeX\ se plaindra.
-
-\example
-\outer\def\chapterhead#1{%
- \eject\topglue 2in \centerline{\bf #1}\bigskip}
-% Using \chapterhead in a forbidden context causes an
-% error message.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts chardef {\<s\'equence de contr\^ole>=\<charcode>}
-\explain
-^^{caract\`eres//d\'efinis par \b\tt\\chardef\e}
-Cette commande d\'efinit \<s\'equence de contr\^ole>
-comme \'etant \<charcode>.
-Bien que |\chardef| soit plus souvent utilis\'ee pour d\'efinir des caract\`eres, vous pouvez aussi
-l'utiliser pour donner un nom \`a un nombre dans la fourchette $0$--$255$ m\^eme
-quand vous n'utilisez pas ce nombre comme un code de caract\`ere.
-\example
-\chardef\percent = `\% 21\percent, {\it 19\percent}
-% Get the percent character in roman and in italic
-|
-\produces
-\chardef\percent = `\%
-21\percent, {\it 19\percent}
-% You'll get the percent character in roman and in italic
-\endexample
-\enddesc
-
-\begindesc
-^^{caract\`eres math\'ematiques}
-^^{mathcodes}
-\cts mathchardef {\<s\'equence de contr\^ole>=\<mathcode>}
-\explain
-Cette commande d\'efinit la \<s\'equence de contr\^ole> comme un caract\`ere math\'ematique
-avec le \minrefs{mathcode}\<mathcode> donn\'e.
-La s\'equence de contr\^ole ne sera l\'egale qu'en mode math\'ematique.
-\example
-\mathchardef\alphachar = "010B % As in plain TeX.
-$\alphachar$
-|
-\produces
-\mathchardef\alphachar = "010B % As in plain TeX.
-$\alphachar$
-\endexample
-\eix^^{macros//d\'efinir des}
-\enddesc
-
-%==========================================================================
-\subsection {Autre d\'efinitions}
-
-\begindesc
-\cts let {\<s\'equence de contr\^ole> = \<token>}
-\explain
-^^{s\'equences de contr\^ole//d\'efinies avec \b\tt\\let\e}
-\minrefs{token}
-Cette commande fait que
-\<s\'equence de contr\^ole> prend la signification actuelle de \<token>.
-M\^eme si vous red\'efinissez \<token> plus tard, la signification de \<s\'equence de contr\^ole>
-ne changera pas. Bien que \<token> soit le plus souvent une s\'equence de contr\^ole,
-il peut aussi \^etre un token de \minref{caract\`ere}.
-\enddesc
-
-\begindesc
-\cts futurelet {\<s\'equence de contr\^ole> \<token$_1$> \<token$_2$>}
-\explain
-Cette commande dit \`a \TeX\ de donner \`a \<token$_2$> la signification de
-\<s\'equence de contr\^ole> (comme elle le serait avec |\let|) et ensuite
-d'ex\'ecu\-ter \<token$_1$> et \<token$_2$> normalement.
-|\futurelet| est pratique \`a la fin d'une d\'efinition de macro
-parce qu'elle vous donne un moyen de regarder au-del\`a du token que \TeX\
-est en train d'ex\'ecuter avant de continuer.
-\example
-\def\predict#1{\toks0={#1}\futurelet\next\printer}
-% \next will acquire the punctuation mark after the
-% argument to \predict
-\def\printer#1{A \punc\ lies ahead for \the\toks0. }
-\def\punc{%
- \ifx\next;semicolon\else
- \ifx\next,comma\else
- ``\next''\fi\fi}
-\predict{March}; \predict{April}, \predict{July}/
-|
-\produces
-\def\predict#1{\toks0={#1}\futurelet\next\printer}
-\def\printer#1{A \punc\ lies ahead for \the\toks0. }
-\def\punc{%
- \ifx\next;semicolon\else
- \ifx\next,comma\else
- ``\next''\fi\fi
- }
-\predict{March};
-\predict{April},
-\predict{July}/
-\endexample
-\enddesc
-
-\begindesc
-\cts csname {\<liste de token> {\bt \\endcsname}}
-\xrdef{\endcsname}
-\explain
-Cette commande produit une s\'equence de contr\^ole \`a partir de \<liste de token>.
-Elle procure un moyen de synth\'etiser des s\'equences de contr\^ole,
-en incluant celles que vous ne pouvez normalement pas \'ecrire.
-\<liste de token> peut elle-m\^eme inclure des s\'equences de contr\^ole~:
-elle est d\'eveloppable de la m\^eme mani\`ere que le texte de remplacement d'une
-d\'efinition |\edef| (\xref\edef).
-Si le d\'eveloppement final
-produit quelque chose qui n'est pas un caract\`ere, \TeX\ se plaindra.
-|\csname| transforme une liste de tokens en s\'equence de contr\^ole~;
-vous pouvez faire l'inverse avec ^|\string| \ctsref\string.
-\example
-\def\capTe{Te}
-This book purports to be about \csname\capTe X\endcsname.
-|
-\produces
-\def\capTe{Te}
-This book purports to be about \csname\capTe X\endcsname.
-\endexample
-\enddesc
-
-%==========================================================================
-\subsection {Contr\^oler le d\'eveloppement}
-
-\begindesc
-\bix^^{macros//contr\^oler leur d\'eveloppement}
-\cts expandafter {\<token$_1$> \<token$_2$>}
-\explain
-Cette commande dit \`a \TeX\ de d\'evelopper \<token$_1$> en accord avec ses r\`egles
-de d\'eveloppement de \minref{macro} \emph{apr\`es} avoir d\'evelopp\'e \<token$_2$>
-d'un niveau. C'est pratique quand \<token$_1$> est quelque chose comme `|{|'
-^^|{//avec {\tt\\expandafter}|
-ou ^|\string| qui inhibe les expansions de \<token$_2$>,
-mais que vous voulez d\'evelopper \<token$_2$> quand m\^eme.
-\example
-\def\aa{xyz}
-\tt % Use this font so `\' prints that way.
-[\string\aa] [\expandafter\string\aa]
-[\expandafter\string\csname TeX\endcsname]
-|
-\produces
-\def\aa{xyz}
-\tt
-[\string\aa] [\expandafter\string\aa]
-[\expandafter\string\csname TeX\endcsname]
-\endexample
-\enddesc
-
-\begindesc
-\cts noexpand {\<token>}
-\explain
-Cette commande demande \`a \TeX\ de
-supprimer le d\'eveloppement de \<token> si \<token> est une
-\minref{s\'equence de contr\^ole} qui peut \^etre d\'evelopp\'ee.
-Si \<token> ne peut pas \^etre d\'evelopp\'ee, c'est-\`a-dire, si c'est une lettre,
-\TeX\ agit comme si le |\noexpand| n'\'etait pas l\`a
-et ex\'ecute \<token> normalement.
-En d'autres mots le d\'eveloppement de `|\noexpand|\<token>'
-est simplement \<token> quoi que \<token> devienne.
-\example
-\def\bunny{rabbit}
-\edef\magic{Pull the \noexpand\bunny\ out of the hat!! }
-% Without \noexpand, \bunny would always be replaced
-% by `rabbit'
-\let\oldbunny=\bunny \def\bunny{lagomorph} \magic
-\let\bunny=\oldbunny \magic
-|
-\produces
-\def\bunny{rabbit}
-\edef\magic{Pull the \noexpand\bunny\ out of the hat! }
-% Without \noexpand, \bunny would always be replaced
-% by `rabbit'
-\let\oldbunny=\bunny \def\bunny{lagomorph} \magic
-\let\bunny=\oldbunny \magic
-\endexample
-\enddesc
-
-\begindesc
-\cts the {\<token>}
-\explain
-Cette commande se d\'eveloppe g\'en\'eralement en une liste de tokens de \minref{caract\`ere}s
-que repr\'esente \<token>. \<token> peut \^etre parmi ce qui suit~:
-
-\ulist\compact
-\li un \minref{param\`etre} \TeX, par exemple, |\parindent| ou |\deadcycles|
-^^{param\`etres//utiliser \b\tt\\the\e\ avec}
-\li un \minref{registre}, par exemple, |\count0|
-^^{registres//avec \b\tt\\the\e}
-\margin{Item for special registers removed}
-\li un code associ\'e avec un caract\`ere entr\'e, par exemple, |\catcode`(|
-\li un param\`etre de police, par exemple, |\fontdimen3\sevenbf|
-\li le ^|\hyphenchar| ou le ^|\skewchar| d'une police,
-|\skewchar\teni|, par exemple
-\li ^|\lastpenalty|, ^|\lastskip| ou ^|\lastkern| (valeurs d\'eriv\'ees du
-der\-nier \'el\'ement d'une liste horizontale \minrefs{horizontal list}
-ou \minref{liste verticale} courante)
-\li une s\'equence de contr\^ole d\'efinie par ^|\chardef| ou
-^|\mathchardef|
-\endulist
-
-\noindent
-De plus, |\the| peut d\'evelopper des tokens non-caract\`ere dans les deux cas
-suivants~:
-\ulist\compact
-\li |\the| \<police>, qui d\'eveloppe la s\'equence de contr\^ole la plus r\'ecem\-ment
-d\'efinie qui s\'electionne la m\^eme police que la s\'equence de contr\^o\-le \<police>
-\li |\the| \<variable de token>, qui d\'eveloppe une copie de la valeur de la
-variable, par exemple, |\the\everypar|
-\endulist
-
-Voir les \knuth{pages~214--215}{251} pour une description plus d\'etaill\'ee de ce que
-|\the| fait selon les cas.
-\example
-The vertical size is currently \the\vsize.
-The category code of `(' is \the\catcode `(.
-|
-\produces
-The vertical size is currently \the\vsize.
-The category code of `(' is \the\catcode `(.
-\endexample
-\enddesc
-
-{\tighten
-\see \headcit{Convertir l'information en tokens}{convert} ainsi que la commande
-|\showthe| (\xref\showthe).
-\par}
-
-\eix^^{macros//contr\^oler leur d\'eveloppement}
-
-%==========================================================================
-\subsection {Tests conditionnels}
-
-\begindesc
-\xrdef{conds}
-\bix^^{tests conditionnels}
-%
-\ctspecial if {\<token$_1$> \<token$_2$>}\ctsxrdef{@if}
-\explain
-{\emergencystretch=1em
-Cette commande teste si \<token$_1$> et \<token$_2$>
-ont le m\^eme code de \minref{caract\`ere}, ind\'ependamment de leurs
-\minref{codes de cat\'egorie}.
-Avant d'ex\'ecuter le test, \TeX\ d\'eveloppe les tokens suivant le |\if|
-jusqu'\`a ce qu'il obtienne deux tokens qui ne peuvent se d\'evelopper plus.
-Ces deux tokens deviennent \<token$_1$> et \<token$_2$>.
-Le d\'eveloppement
-inclut le remplacement d'une s\'equence de contr\^ole |\let| \'egale \`a un token de caract\`ere
-par ce token de caract\`ere.
-Une \minref{s\'equence de contr\^ole} qui ne peut plus se d\'evelopper est
-consid\'er\'ee comme ayant un code de caract\`ere $256$.\par}
-\example
-\def\first{abc}
-\if\first true\else false\fi;
-% ``c'' is left over from the expansion of \first.
-% It lands in the unexecuted ``true'' part.
-\if a\first\ true\else false\fi;
-% Here ``bc'' is left over from the expansion of \first
-\if \hbox\relax true\else false\fi
-% Unexpandable control sequences test equal with ``if''
-|
-\produces
-\def\first{abc}
-\if\first true\else false\fi;
-% ``c'' is left over from the expansion of \first.
-% It lands in the unexecuted ``true'' part.
-\if a\first\ true\else false\fi;
-% Here ``bc'' is left over from the expansion of \first
-\if \hbox\relax true\else false\fi
-% Unexpandable control sequences test equal with ``if''
-\endexample
-\enddesc
-
-\begindesc
-\ctspecial ifcat {\<token$_1$> \<token$_2$>}\ctsxrdef{@ifcat}
-\explain
-^^{codes de cat\'egorie//tester}
-Cette commande teste si \<token$_1$> et \<token$_2$>
-ont le m\^eme \minref{code de cat\'ego\-rie}.
-Avant d'ex\'ecuter le test, \TeX\ d\'eveloppe les tokens suivant le |\if|
-jusqu'a ce qu'il obtienne deux tokens qui ne puissent plus se d\'evelopper.
-Ces deux tokens deviennent \<token$_1$> et \<token$_2$>.
-Le d\'eveloppement
-inclut le remplacement d'une s\'equence de contr\^ole |\let| \'egale \`a un token de caract\`ere
-par ce token de caract\`ere.
-Une \minref{s\'equence de contr\^ole} qui ne peut plus se d\'evelopper est
-consid\'er\'ee comme ayant un code de caract\`ere $16$.
-\example
-\ifcat axtrue\else false\fi;
-\ifcat ]}true\else false\fi;
-\ifcat \hbox\day true\else false\fi;
-\def\first{12345}
-\ifcat (\first true\else false\fi
-% ``2345'' lands in the true branch of the test
-|
-\produces
-\ifcat axtrue\else false\fi;
-\ifcat ]}true\else false\fi;
-\ifcat \hbox\day true\else false\fi;
-\def\first{12345}
-\ifcat (\first true\else false\fi
-% ``2345'' lands in the true branch of the test
-\endexample
-\enddesc
-
-\begindesc
-\ctspecial ifx {\<token$_1$> \<token$_2$>}\ctsxrdef{@ifx}
-\explain
-Cette commande teste si \<token$_1$> et \<token$_2$> s'accordent.
-Contrairement \`a |\if| et |\ifcat|, |\ifx| \emph{ne} d\'eveloppe \emph{pas} les tokens
-suivant |\ifx|, donc \<token$_1$> et \<token$_2$> sont les deux
-tokens imm\'ediatement apr\`es |\ifx|.
-Il y a trois cas~:
-\olist
-\li Si un token est une \minref{macro} et pas l'autre,
-les tokens ne s'accordent pas.
-\li Si aucun token n'est une macro, Les tokens s'accordent si~:
-\olist
-\li les deux tokens sont des caract\`eres (ou des s\'equences de contr\^ole d\'ecrivant des caract\`eres) et
-que leurs codes de \minref{caract\`ere} et de \minref{cat\'egorie} s'accordent, ou
-\li Les deux tokens font r\'ef\'erence \`a la m\^eme commande \TeX, police, etc.
-\endolist
-\li Si les deux tokens sont des macros, les tokens s'accordent si~:
-\olist\compact
-\li leurs d\'eveloppements de ``premier niveau'', c'est-\`a-dire,
-leurs textes de remplacement, sont identiques, et
-\li Ils ont le m\^eme statut concernant ^|\long| (\xref\long)
-et ^|\outer| (\xref\outer).
-\endolist
-Notez en particulier que \emph{deux s\'equences de contr\^ole non d\'efinies
-s'accordent}.
-\endolist
-\noindent
-Ce teste est g\'en\'eralement plus utile que |\if|.
-\example
-\ifx\alice\rabbit true\else false\fi;
-% true since neither \rabbit nor \alice is defined
-\def\a{a}%
-\ifx a\a true\else false\fi;
-% false since one token is a macro and the other isn't
-\def\first{\a}\def\second{\aa}\def\aa{a}%
-\ifx \first\second true\else false\fi;
-% false since top level expansions aren't the same
-\def\third#1:{(#1)}\def\fourth#1?{(#1)}%
-\ifx\third\fourth true\else false\fi
-% false since parameter texts differ
-|
-\produces
-\ifx\alice\rabbit true\else false\fi;
-% true since neither \rabbit nor \alice is defined
-\def\a{a}%
-\ifx a\a true\else false\fi;
-% false since one token is a macro and the other isn't
-\def\first{\a}\def\second{\aa}\def\aa{a}%
-\ifx \first\second true\else false\fi;
-% false since top level expansions aren't the same
-\def\third#1:{(#1)}\def\fourth#1?{(#1)}%
-\ifx\third\fourth true\else false\fi
-% false since parameter texts differ
-\endexample
-\enddesc
-
-\begindesc
-\ctspecial ifnum {\<number$_1$> \<relation> \<number$_2$>}\ctsxrdef{@ifnum}
-\explain
-^^{nombres//comparer}
-Cette commande teste si \<number$_1$> et \<number$_2$>
-satisfont \<relation>, qui peut \^etre soit `|<|', `|=|' ou `|>|'.
-Les nombres peuvent \^etre des constantes telles que |127|, des registres de compteur tels que
-|\pageno| ou |\count22| ou des param\`etres num\'eriques tels que |\hbadness|.
-Avant d'ex\'ecuter le test, \TeX\ d\'eveloppe les tokens suivant le |\ifnum|
-jusqu'a ce qu'il obtienne une s\'equence de tokens ayant la forme \<number$_1$>
-\<relation> \<number$_2$> suivi par un token
-qui ne peut \^etre une partie de \<number$_2$>.
-\example
-\count255 = 19 \ifnum \count255 > 12 true\else false\fi
-|
-\produces
-\count255 = 19 \ifnum \count255 > 12 true\else false\fi
-\endexample
-\enddesc
-
-\begindesc
-\ctspecial ifodd {\<nombre>}\ctsxrdef{@ifodd}
-\explain
-^^{nombres//tester la parit\'e}
-Cette commande teste si \<nombre> est impair.
-Avant d'ex\'ecuter le test, \TeX\ d\'eveloppe les tokens suivant le |\ifodd|
-jusqu'a ce qu'il obtienne une s\'equence de tokens ayant la forme \<nombre>,
-suivi par un token qui ne peut \^etre une partie de \<nombre>.
-\example
-\count255 = 19
-\ifodd 5 true\else false\fi
-|
-\produces
-\ifodd 5 true\else false\fi
-\endexample
-\enddesc
-
-\begindesc
-\ctspecial ifdim {\<dimen$_1$> \<relation> \<dimen$_2$>}\ctsxrdef{@ifdim}
-\explain
-^^{dimensions//comparer}
-Cette commande teste si \<dimen$_1$> et \<dimen$_2$>
-satisfont \<relation>, qui doit \^etre soit `|<|', `|=|' ou `|>|'.
-Les dimensions peuvent \^etre des constantes telles que |1in|, des registres de dimension
-tels que |\dimen6| ou des para\-m\`etres de dimension tels que |\parindent|.
-Avant d'ex\'ecuter le test, \TeX\ d\'eveloppe les tokens suivant le |\ifdim|
-jusqu'a ce qu'il obtienne une s\'equence de tokens ayant la forme
-\<dimen$_1$> \<relation> \<dimen$_2$>
-suivi par un token qui ne peut \^etre une partie de \<dimen$_2$>.
-
-\example
-\dimen0 = 1000pt \ifdim \dimen0 > 3in true\else false\fi
-|
-\produces
-\dimen0 = 1000pt \ifdim \dimen0 > 3in true\else false\fi
-\endexample
-\enddesc
-
-\begindesc
-\ctspecial ifhmode {}\ctsxrdef{@ifhmode}
-\ctspecial ifvmode {}\ctsxrdef{@ifvmode}
-\ctspecial ifmmode {}\ctsxrdef{@ifmmode}
-\ctspecial ifinner {}\ctsxrdef{@ifinner}
-\explain
-^^{mode horizontal//tester}
-^^{mode vertical//tester}
-^^{mode math\'ematique//tester}
-^^{mode restreint//tester}
-Ces commandes testent dans quel \minref{mode} est \TeX~:
-\ulist
-\li |\ifhmode| est vrai si \TeX\ est en mode horizontal ordinaire ou r\'eduit.
-\li |\ifvmode| est vrai si \TeX\ est en mode vertical ordinaire ou interne.
-\li |\ifmmode| est vrai si \TeX\ est en mode math\'ematique de texte ou d'affichage.
-\li |\ifinner| est vrai si \TeX\ est dans un mode ``interne''~:
-horizontal r\'eduit, vertical interne ou math\'ematique de texte.
-\endulist
-\example
-\def\modes{{\bf
- \ifhmode
- \ifinner IH\else H\fi
- \else\ifvmode
- \ifinner \hbox{IV}\else \hbox{V}\fi
- \else\ifmmode \hbox{M}\else
- error\fi\fi\fi}}
-Formula $\modes$; then \modes,
- \hbox{next \modes\ and \vbox{\modes}}.
-\par\modes
-|
-\produces
-\def\modes{{\bf
- \ifhmode
- \ifinner IH\else H\fi
- \else\ifvmode
- \ifinner \hbox{IV}\fi
- \else\ifmmode \hbox{M}\else
- error\fi\fi\fi}}
-Formula $\modes$; then \modes,
- \hbox{next \modes\ and \vbox{\modes}}.
-\par\noindent{\bf V} % sorry folks, we have to fake this one
-\endexample
-\enddesc
-
-\begindesc
-\ctspecial ifhbox {\<registre>}\ctsxrdef{@ifhbox}
-\ctspecial ifvbox {\<registre>}\ctsxrdef{@ifvbox}
-\ctspecial ifvoid {\<registre>}\ctsxrdef{@ifvoid}
-\explain
-^^{hbox//tester}
-^^{vbox//tester}
-^^{\boites//tester si elle est vide}
-Ces commandes testent le contenu du
-registre de bo\^\i te num\'ero \<reg\-ister>.
-Soit \<registre> \`a $n$. Alors~:
-\ulist
-\li |\ifhbox| est vrai si |\box|$\,n$ est une \minref{hbox}.
-\li |\ifvbox| est vrai si |\box|$\,n$ est une \minref{vbox}.
-\li |\ifvoid| est vrai si |\box|$\,n$ est vide, c'est-\`a-dire, ne contient pas
-de bo\^\i te.
-\endulist
-\example
-\setbox0 = \vbox{} % empty but not void
-\setbox1 = \hbox{a}
-\setbox2 = \box1 % makes box1 void
-\ifvbox0 true\else false\fi;
-\ifhbox2 true\else false\fi;
-\ifvoid1 true\else false\fi
-|
-\produces
-\setbox0 = \vbox{}
-\setbox1 = \hbox{a}
-\setbox2 = \box1 % empties box1
-\ifvbox0 true\else false\fi;
-\ifhbox2 true\else false\fi;
-\ifvoid1 true\else false\fi
-\endexample
-\enddesc
-
-\begindesc
-\ctspecial ifeof {\<nombre>}\ctsxrdef{@ifeof}
-\explain
-^^{fin de fichier, tester}
-\minrefs{file}
-Cette commande teste un flux d'entr\'ee de fin de fichier.
-Elle est vraie si le flux d'entr\'ee \<nombre> n'a pas \'et\'e ouvert,
-ou a \'et\'e ouvert et que le fichier associ\'e a \'et\'e enti\`erement lu
-(ou n'existe pas).
-\enddesc
-
-\begindesc
-\ctspecial ifcase
-{\<nombre>\<texte du cas$_0$> {\bt \\or }\<texte du cas$_1$> {\bt \\or}
- $\ldots$ {\bt \\or} \<texte du cas$_n$>\hfil\break
-\hglue 3pc{\bt \\else} \<texte alternatif> {\bt \\fi}}
-\ctsxrdef{@ifcase}
-\ctsxrdef{@or}
-\explain
-^^{test de cas}
-Cette commande introduit un test avec des cas multiples num\'erot\'es.
-Si \<nom\-bre> a la valeur $k$, \TeX\ d\'eveloppera \<texte de cas$_k$> s'il
-existe et \<texte alternatif> autrement. Vous pouvez omettre le |\else|---%
-dans ce cas, \TeX\ ne d\'eveloppera rien si aucun des cas n'est satisfait.
-\example
-\def\whichday#1{\ifcase #1<day 0>\or Sunday\or Monday%
- \or Tuesday\or Wednesday\or Thursday\or Friday%
- \or Saturday\else Nonday\fi
- \ is day \##1. }
-\whichday2 \whichday3 \whichday9
-|
-\produces
-\def\whichday#1{\ifcase #1<day 0>\or Sunday\or Monday%
- \or Tuesday\or Wednesday\or Thursday\or Friday%
- \or Saturday\else Nonday\fi
- \ is day \##1. }
-\whichday2 \whichday3 \whichday9
-\endexample
-\enddesc
-
-\begindesc
-\ctspecial iftrue {}\ctsxrdef{@iftrue}
-\ctspecial iffalse {}\ctsxrdef{@iffalse}
-\explain
-Ces commandes sont \'equivalentes \`a des tests qui sont toujours vrai ou toujours
-faux. Le principal usage de ces commandes est de d\'efinir des macros qui gardent
-trace du r\'esultat d'un test.
-\example
-\def\isbigger{\let\bigger=\iftrue}
-\def\isnotbigger{\let\bigger=\iffalse}
-% These \let's MUST be buried in macros!! If they aren't,
-% TeX erroneously tries to match them with \fi.
-\def\test#1#2{\ifnum #1>#2 \isbigger\else\isnotbigger\fi}
-\test{3}{6}
-\bigger$3>6$\else$3\le6$\fi
-|
-\produces
-\def\isbigger{\let\bigger=\iftrue}
-\def\isnotbigger{\let\bigger=\iffalse}
-% These \let's MUST be buried in macros!
-% If they aren't, TeX erroneously tries to match them with \fi
-\def\test#1#2{\ifnum #1>#2 \isbigger\else\isnotbigger\fi}
-\test{3}{6}
-\bigger$3>6$\else$3\le6$\fi
-\endexample
-\enddesc
-
-\begindesc
-\ctspecial else {} \ctsxrdef{@else}
-\explain
-Cette commande introduit l'alternative ``faux'' d'un test conditionel.
-\enddesc
-
-\begindesc
-\ctspecial fi {} \ctsxrdef{@fi}
-\explain
-Cette commande termine le texte d'un test conditionel.
-\enddesc
-
-\begindesc
-\ctspecial newif {{\bt \\if}\<nom de test>}\ctsxrdef{@newif}
-\explain
-Cette commande nomme un trio de s\'equence de contr\^ole avec comme noms |\alpha!-true|,
-|\alphafalse|,
-et |\ifalpha|, o\`u |alpha| est \<test name>.
-Vous pouvez les utiliser pour d\'efinir vos propres tests en
-cr\'eant une variable logique qui enregistre des informations
-true\slash false:
-\ulist\compact
-\li |\alphatrue| met la variable logique |alpha| \`a vrai.
-\li |\alphafalse| met la variable logique |alpha| \`a faux
-\li |\ifalpha| est un test conditionnel qui est vrai si la variable logique
-|alpha| est vraie et faux autrement.
-\endulist
-La variable logique |alpha| n'existe pas r\'eellement, mais \TeX\ agit comme
-si elle l'\'etait. Apr\`es |\newif\ifalpha|, la variable logique est initialis\'ee
-\`a faux.
-
-|\newif| est un commande externe, donc vous ne pouvez l'utiliser dans une d\'efinition
-de macro.
-\example
-\newif\iflong \longtrue
-\iflong Rabbits have long ears.
-\else Rabbits don't have long ears.\fi
-|
-\produces
-\newif\iflong
-\longtrue
-\iflong Rabbits have long ears.\else Rabbits don't have long ears.\fi
-\endexample
-\eix^^{tests conditionnels}
-\enddesc
-
-
-%==========================================================================
-\subsection {Actions r\'ep\'et\'ees}
-
-{\def\test{{\bt \\if}$\Omega$}%
-\begindesc
-\bix^^{actions r\'ep\'et\'ees}
-\bix^^{boucles}
-\cts loop {$\alpha$ {\test} $\beta$ {\bt \\repeat}}
-\ctspecial repeat {}\ctsxrdef{@repeat}
-\explain
-Ces commandes procurent une construction de boucle pour \TeX.
-Ici, $\alpha$ et $\beta$ sont des s\'equences de commandes arbitraires
-et \test\ est un des tests conditionnels d\'ecrites dans
-\headcit{Tests conditionnels}{conds}.
-Le |\repeat| r\'ep\`ete le |\fi| correspondant au test,
-donc vous n'aurez pas besoin d'\'ecrire un |\fi| explicite pour terminer le test.
-Ni, malheureusement, associer un |\else| au test.
-Si vous voulez utiliser le test dans le sens oppos\'e, vous devez
-r\'earranger le test ou
-d\'efinir un test auxiliaire avec |\newif| (voir au-dessus) et utiliser ce
-test dans le sens que vous voulez (voir le second exemple ci-dessous).
-
-\TeX\ d\'eveloppe |\loop| comme suit~:
-\olist
-\li $\alpha$ est d\'evelopp\'e.
-\li {\test} est ex\'ecut\'e. Si le r\'esultat est faux, la boucle est termin\'ee.
-\li $\beta$ est d\'evelopp\'e.
-\li Le cycle est r\'ep\'et\'e.
-\endolist
-\example
-\count255 = 6
-\loop
- \number\count255\
- \ifnum\count255 > 0
- \advance\count255 by -1
-\repeat
-|
-\produces
-\count255 = 6
-\loop
- \number\count255\
- \ifnum\count255 > 0
- \advance\count255 by -1
-\repeat
-\nextexample
-\newif\ifnotdone % \newif uses \count255 in its definition
-\count255=6
-\loop
- \number\count255\
- \ifnum\count255 < 1 \notdonefalse\else\notdonetrue\fi
- \ifnotdone
- \advance\count255 by -1
-\repeat
-|
-\produces
-\newif\ifnotdone
-\count255=6
-\loop
- \number\count255\
- \ifnum\count255 < 1 \notdonefalse\else\notdonetrue\fi
- \ifnotdone
- \advance\count255 by -1
-\repeat
-%
-\eix^^{actions r\'ep\'et\'ees}
-\eix^^{boucles}
-%
-\endexample
-\enddesc
-} % end scope of definition of \test
-
-%==========================================================================
-\subsection {Ne rien faire}
-
-\begindesc
-\cts relax {}
-\explain
-Cette commande demande \`a \TeX\ de ne rien faire. C'est utile dans un contexte o\`u
-vous devez procurer une commande mais il n'y a rien que vous voulez que \TeX\ fasse.
-\example
-\def\medspace{\hskip 12pt\relax}
-% The \relax guards against the possibility that
-% The next tokens are `plus' or `minus'.
-|
-
-\endexample
-\enddesc
-
-\begindesc
-\cts empty {}
-\explain
-Cette commande se d\'eveloppe en aucun tokens du tout.
-Elle diff\`ere de |\relax| car elle dispara\^\i t apr\`es un d\'eveloppement de macro.
-%
-\xrdef{mac2}% end the section on macros
-\eix^^{macros}
-\enddesc
-
-%==========================================================================
-\section {Registres}
-
-%==========================================================================
-\subsection {Utiliser des registres}
-
-\begindesc
-\bix^^{registres}
-\makecolumns 11/2:
-\cts count {\<registre> {\bt =} \<nombre>}
-\cts dimen {\<registre> {\bt =} \<dimen>}
-\cts skip {\<registre> {\bt =} \<glue>}
-\cts muskip {\<registre> {\bt =} \<muglue>}
-\cts toks {\<registre> {\bt =} \<token variable>}
-\aux\cts toks {\<registre> {\bt =} \rqbraces{\<list. de tok.>}}
-\aux\cts count {\<registre>}
-\aux\cts dimen {\<registre>}
-\aux\cts skip {\<registre>}
-\aux\cts muskip {\<registre>}
-\aux\cts toks {\<registre>}
-\explain
-^^{assignements//de registres}
-Les six premi\`eres commandes list\'ees ici assignent quelque chose \`a un registre.
-Les |=| dans les assignations sont optionnels.
-Les cinq s\'equences de contr\^ole restantes ne sont pas de vraies commandes
-car elles n'apparais\-sent que comme partie d'un argument.
-Elles pr\'ecisent le contenu des registres sp\'ecifi\'es.
-Bien que vous ne puissiez utiliser ces s\'equences de contr\^ole elles-m\^eme comme commandes
-dans un texte, vous pouvez utili\-ser ^|\the| pour les convertir en texte
-et ainsi pouvoir composer leurs valeurs.
-
-Vous pouvez nommer et r\'eserver de nouveaux registres
-avec la commande ^|\newcount| et ses relatifs
-(\xref{\@newcount}).
-Utiliser ces commandes est un moyen s\^ur d'obtenir des registres qui
-ne sont pas cens\'es avoir d'usages conflictuels.
-
-^^{registres count}
-Un registre |\count| contient un entier, qui peut \^etre soit positif soit
-n\'egatif.
-Des entiers peuvent \^etre aussi grands que vous n'aurez probablement jamais besoin qu'ils soient.\footnote
-{Voici le seul exercice du livre~: trouvez le plus grand entier
-que \TeX\ acceptera.}
-\TeX\ utilise les registres compteur $0$--$9$ pour garder trace des
-num\'eros de page (voir la \knuth{page~119}{139}).
-|\count255| est le seul registre compteur possible pour une utilisation
-sans r\'eservation.
-\example
-\count255 = 17 \number\count255
-|
-\produces
-\count255 = 17 \number\count255
-\endexample
-
-\medskip\noindent
-^^{registre dimension}
-Un registre |\dimen| contient une dimension.
-Les registres de |\dimen0| \`a |\dimen255| sont possibles
-pour un brouillon.
-
-\example
-\dimen0 = 2.5in
-\hbox to \dimen0{$\Leftarrow$\hfil$\Rightarrow$}
-|
-\produces
-\dimen0 = 2.5in
-\hbox to \dimen0{$\Leftarrow$\hfil$\Rightarrow$}
-\doruler{\8\8\8}3{in}
-\endexample
-
-\medskip\noindent
-^^{registres skip}
-Un registre |\skip| contient les dimensions de ressort.
-Diff\'erent d'un registre |\dimen|, il
-enregistre un montant d'\'etirement et de r\'etr\'ecissement autant qu'une taille naturelle.
-Les registres de |\skip0| \`a |\skip9| et |\skip255| peuvent \^etre
-utilis\'es sans r\'eservation.
-
-\example
-\skip2 = 2in
-$\Rightarrow$\hskip \skip2 $\Leftarrow$
-|
-\produces
-\skip2 = 2in
-$\Rightarrow$\hskip \skip2 $\Leftarrow$\par
-\noindent\hphantom{$\Rightarrow$}\ruler{\8\8}2{in}
-\endexample
-
-\medskip\noindent
-^^{registres muskip}
-Un registre |\muskip| est comme un registre |\skip|,
-mais le ressort qu'il contient est toujours mesur\'ee en ^|mu|
-\seeconcept{unit\'e math\'ematique}.
-La taille d'un |mu| d\'epend de la police courante.
-Par exemple, elle est normalement un peu
-plus petite dans un exposant que dans un texte ordinaire.
-Les registres de |\muskip0| \`a |\muskip9| et |\muskip255| peuvent \^etre
-utilis\'es sans r\'eservation.
-
-\example
-\muskip0 = 24mu % An em and a half, no stretch or shrink.
-$\mathop{a \mskip\muskip0 b}\limits^{a \mskip\muskip0 b}$
-% Note the difference in spacing.
-|
-\produces
-\muskip0 = 24mu % an em and a half
-$\mathop{a \mskip\muskip0 b}\limits^{a \mskip\muskip0 b}$
-% Note the difference in spacing
-\endexample
-
-\medskip\noindent
-^^{registres token}
-Vous pouvez assigner soit un token variable
-(un registre ou un param\`etre) ou une liste de token
-\`a un registre |\toks|.
-Quand vous assignez une liste de token \`a un registre de token,
-les tokens de la liste de token \emph{ne} sont \emph{pas} d\'evelopp\'es.
-
-Une fois que les tokens d'une liste de token ont \'et\'e ins\'er\'es dans un texte
-en utilisant ^|\the|, ils sont
-d\'evelopp\'es comme des tokens qui seraient lus directement.
-Ils ont les codes de cat\'egorie qu'ils ont re\c cus quand \TeX\ les \`a vu
-une premi\`ere fois dans la~\hbox{source}.
-
-\example
-\toks0 = {the \oystereaters\ were at the seashore}
-% This assignment doesn't expand \oystereaters.
-\def\oystereaters{Walrus and Carpenter}
-\toks1 = \toks0
-% the same tokens are now in \toks0 and \toks1
-Alice inquired as to whether \the\toks1.
-|
-\produces
-\toks0 = {the \oystereaters\ were at the seashore}
-% This assignment doesn't expand \oystereaters
-\def\oystereaters{Walrus and Carpenter}
-\toks1 = \toks0
-% the same tokens are now in \toks0 and \toks1
-Alice inquired as to whether \the\toks1.
-\endexample
-\enddesc
-
-\begindesc
-\cts maxdimen {}
-\explain
-^^{dimensions//maximum}
-Cette s\'equence de contr\^ole d\'esigne une \<dimen> qui est la
-plus grande dimension acceptable par \TeX\ (environ 4,50 m\`etres).
-Ce n'est pas une vraie commande parce qu'elle ne peut appara\^\i tre
-que comme partie d'un argument d'une autre commande.
-\example
-\maxdepth = \maxdimen % Remove restrictions on \maxdepth.
-|
-\endexample
-\enddesc
-
-\see |\advance| (\xref\advance), |\multiply|,
-|\divide| (\xref\divide), |\set!-box|, |\box| (\xref\box).
-
-%==========================================================================
-\subsection {Nommer et r\'eserver des registres, etc.}
-
-\begindesc
-\bix^^{registres//r\'eserver}
-\makecolumns 11/2:
-\ctspecial newcount \ctsxrdef{@newcount}
-\ctspecial newdimen \ctsxrdef{@newdimen}
-\ctspecial newskip \ctsxrdef{@newskip}
-\ctspecial newmuskip \ctsxrdef{@newmuskip}
-\ctspecial newtoks \ctsxrdef{@newtoks}
-\ctspecial newbox \ctsxrdef{@newbox}
-\ctspecial newread \ctsxrdef{@newread}
-\ctspecial newwrite \ctsxrdef{@newwrite}
-\ctspecial newfam \ctsxrdef{@newfam}
-\ctspecial newinsert \ctsxrdef{@newinsert}
-\ctspecial newlanguage \ctsxrdef{@newlanguage}
-\explain
-Ces commandes
-r\'eservent et nomment une entit\'e du type indiqu\'e~:
-\ulist
-{\tolerance = 5000
-\fontdimen3\the\font = 2\fontdimen3\the\font % allow spaces to stretch more
-\li |\new!-count|, |\newdimen|, |\newskip|, |\new!-mu!-skip|, |\new!-toks|,
-et |\new!-box| r\'eservent chacun un \minref{registre} du type indiqu\'e.
-}
-^^{registres count//r\'eserv\'es par \b\tt\\newcount\e}
-^^{registres de dimension//r\'eserv\'es par \b\tt\\newdimen\e}
-^^{registres skip//r\'eserv\'es par \b\tt\\newskip\e}
-^^{registres muskip//r\'eserv\'es par \b\tt\\newmuskip\e}
-^^{registres token//r\'eserv\'es par \b\tt\\newtoks\e}
-^^{registres de \boite//r\'eserv\'es par \b\tt\\newbox\e}
-\li |\newread| et |\newwrite| r\'eservent un flot d'entr\'ee et
-de sortie \minrefs{input stream}\minrefs{output stream}
-respectivement.
-^^{flots d'entr\'ee//r\'eserv\'es par \b\tt\\newread\e}
-^^{flots de sortie//r\'eserv\'es par \b\tt\\newwrite\e}
-\li |\newfam| r\'eserve une \minref{famille} de police math\'ematique.
-^^{famille//r\'eserv\'ee par \b\tt\\newfam\e}
-\li |\newinsert| r\'eserve un caract\`ere d'insertion.
-(R\'eserver un caract\`ere d'insertion entra\^\i ne r\'eserver plusieurs registres diff\'erents.)
-^^{insertions//num\'eros r\'eserv\'es par \b\tt\\newinsert\e}
-\li |\newlanguage| r\'eserve un jeu de motifs de c\'esure.
-\endulist
-Vous devez utiliser ces commandes \`a chaque fois que vous avez besoin d'une
-de ces entit\'es, dans une r\'egion tr\`es locale,
-pour \'eviter des conflits de num\'erotation.
-
-Il y a une diff\'erence importante entre ces commandes~:
-\ulist
-\li Les s\'equences de contr\^ole d\'efinies par
-|\newcount|, |\newdimen|, |\newskip|, |\newmuskip| et |\newtoks|
-d\'esignent chacune une entit\'e du type appropri\'e.
-Par exemple, apr\`es la commande~:
-\csdisplay
-\newdimen\listdimen
-|
-la s\'equence de contr\^ole |\listdimen| peut \^etre utilis\'ee comme une dimension.
-\li Les s\'equences de contr\^ole d\'efinies par
-|\newbox|, |\newread|, |\new!-write|, |\newfam|, |\newinsert|
-et |\newlanguage| \'evaluent chacune
-le \emph{num\'ero} d'une entit\'e du type appropri\'e.
-Par exemple, apr\`es la commande~:
-\csdisplay
-\newbox\figbox
-|
-La s\'equence de contr\^ole |\figbox| doit \^etre utilis\'ee en conjonction avec
-une commande de type |\box|, par exemple~:
-\csdisplay
-\setbox\figbox = \vbox{!dots}
-|
-\endulist
-\enddesc
-
-\begindesc
-\cts countdef {\<s\'equence de contr\^ole> {\bt =} \<registre>}
-\cts dimendef {\<s\'equence de contr\^ole> {\bt =} \<registre>}
-\cts skipdef {\<s\'equence de contr\^ole> {\bt =} \<registre>}
-\cts muskipdef {\<s\'equence de contr\^ole> {\bt =} \<registre>}
-\cts toksdef {\<s\'equence de contr\^ole> {\bt =} \<registre>}
-\explain
-Ces commandes d\'efinissent \<s\'equence de contr\^ole> pour faire r\'ef\'erence au
-\minref{registre} de la cat\'egorie indiqu\'ee dont le num\'ero est \<registre>.
-Normalement vous devez utiliser les commandes du groupe pr\'ec\'edent
-(|\newcount|, etc.) en pr\'ef\'erence \`a ces commandes pour \'eviter
-des conflits de num\'ero. Les commandes du groupe pr\'ec\'edent sont
-d\'efinies en termes de commandes \hbox{de ce groupe}.
-\example
-\countdef\hatters = 19 % \hatters now refers to \count19
-\toksdef\hares = 200 % \hares now refers to \toks200
-|
-\endexample
-\enddesc
-
-\see |\newif| (\xref{\@newif}), |\newhelp| (\xref{\@newhelp}).
-\eix^^{registres//r\'eserver}
-
-%==========================================================================
-\subsection {Faire de l'arithm\'etique dans des registres}
-
-\begindesc
-\bix^^{arithm\'etique}
-\bix^^{registres//arithm\'etique dans des}
-%
-\cts advance {\<registre compteur> {\bt by} \<nombre>}
-\aux\cts advance {\<registre dimension> {\bt by} \<dimension>}
-\aux\cts advance {\<registre saut> {\bt by} \<ressort>}
-\aux\cts advance {\<registre muskip> {\bt by} \<muglue>}
-\explain
-Ces commandes ajoutent une quantit\'e compatible a un registre. Pour \<ressort>
-ou \<muglue> les trois composants (valeur naturelle, \'etirement et r\'etr\'ecissement)
-\minrefs{glue} sont ajout\'es.
-Toutes les quantit\'es peuvent \^etre n\'egatives.
-Pour ces calculs
-(et autres assignements en fait), \<ressort> peut \^etre converti en une
-\<dimension> en enlevant l'\'etirement et le r\'etr\'ecissement et une \<dimension>
-peut \^etre convertie en \<nombre> en prenant sa valeur en points d'\'echelle
-\seeconcept{dimension}.
-Vous pouvez omettre le mot |by| dans ces commandes---\TeX\ les comprendra quand
-m\^eme.
-\example
-\count0 = 18 \advance\count0 by -1 \number\count0\par
-\skip0 = .5in \advance\skip0 by 0in plus 1in % add stretch
-\hbox to 2in{a\hskip\skip0 b}
-|
-\produces
-\count0 = 18 \advance\count0 by -1 \number\count0\par
-\skip0 = .5in \advance\skip0 by 0in plus 1in % add stretch
-\hbox to 2in{a\hskip\skip0 b}
-\doruler{\8\8}2{in}
-\endexample
-\enddesc
-
-\begindesc
-\cts multiply {\<registre> {\bt by} \<nombre>}
-\cts divide {\<registre> {\bt by} \<nombre>}
-\explain
-Ces commandes multiplient et divisent la valeur de \<registre>
-par \<nombre> (qui peut \^etre n\'egatif).
-Le registre peut \^etre un registre ^|\count|, ^|\dimen|, ^|\skip|
-ou ^|\muskip|.
-Pour un registre ^|\skip| ou ^|\muskip| (\xref\skip),
-les trois composantes du \minref{ressort} du registre sont modifi\'es.
-Vous pouvez omettre le mot |by| dans ces commandes---\TeX\ les comprendra quand
-m\^eme.
-
-Vous pouvez aussi obtenir un multiple d'une \<dimension> en la pr\'ec\'edant par un \<nombre>
-\minrefs{number}
-ou une constante d\'ecimale, par exemple,
-|-2.5\dimen2|.
-Vous pouvez aussi utiliser cette notation pour des \<ressort>, mais attention---le r\'esultat
-est une \<dimension>, pas un \<ressort>.
-Ainsi |2\baselineskip| donne une \<dimension> qui est deux fois la taille naturelle
-de |\baselineskip|, sans \'etirement ni r\'etr\'ecissement.
-\example
-\count0 = 9\multiply \count0 by 8 \number\count0 ;
-\divide \count0 by 12 \number\count0 \par
-\skip0 = 20pt plus 2pt minus 3pt \multiply \skip0 by 3
-Multiplied value of skip0 is \the\skip0.\par
-\dimen0 = .5in \multiply\dimen0 by 6
-\hbox to \dimen0{a\hfil b}
-|
-\produces
-\count0 = 9\multiply \count0 by 8 \number\count0 ;
-\divide \count0 by 12 \number\count0 \par
-\skip0 = 20pt plus 2pt minus 3pt \multiply \skip0 by 3
-Multiplied value of skip0 is \the\skip0.\par
-\dimen0 = .5in \multiply\dimen0 by 6
-\hbox to \dimen0{a\hfil b}
-\doruler{\8\8\8}3{in}
-\endexample
-
-\eix^^{arithm\'etique}
-\eix^^{registres//arithm\'etique dans des}
-\eix^^{registres}
-\enddesc
-
-%==========================================================================
-\section {Terminer l'ex\'ecution}
-
-\begindesc
-^^{fin d'ex\'ecution}
-\easy\ctspecial bye \ctsxrdef{@bye}
-\explain
-Cette commande dit \`a \TeX\ de remplir et produire la derni\`ere page, d'imprimer
-toutes les \minref{insertion}s en suspens et de terminer l'ex\'ecution.
-C'est le moyen usuel de terminer votre fichier source.
-\enddesc
-
-\begindesc
-\cts end {}
-\explain
-Cette commande dit \`a \TeX\ de produire la derni\`ere page et de terminer l'ex\'ecution.
-Elle ne remplit pas la page,
-donc il est pr\'ef\'erable d'utiliser |\bye| plut\^ot que |\end|.
-\enddesc
-
-%==========================================================================
-\section {Entr\'ee et sortie}
-
-%==========================================================================
-\subsection {Op\'erations sur des fichiers d'entr\'ee}
-
-\begindesc
-\bix^^{fichiers}
-\bix^^{fichiers d'entr\'ee}
-\easy\cts input {\<nom de fichier>}
-\explain
-\minrefs{file}\minrefs{file name}
-Cette commande demande \`a \TeX\ de lire son entr\'ee \`a partir du fichier \<nom de fichier>.
-Quand ce fichier est \'epuis\'e, \TeX\ retourne lire \`a partir du source d'entr\'ee
-pr\'ec\'edent. Vous pouvez inclure des fichiers d'entr\'ee sur autant de niveaux que vous voulez
-(dans les limites du raisonnable).
-
-Quand vous saisissez un grand document, c'est souvent une bonne id\'ee de
-structurer votre fichier principal comme une suite de commandes |\input| faisant r\'ef\'erence
-aux parties subsidiaires du document. De cette fa\c con, vous pouvez ex\'ecuter les
-parties individuelles facilement quand vous travaillez sur des \'epreuves. C'est aussi une bonne
-pratique de mettre toutes vos d\'efinitions de \minref{macro} dans un fichier s\'epar\'e et
-appeler ce fichier avec une commande |\input| comme premi\`ere action de votre
-fichier principal.
-
-\TeX\ utilise des r\`egles diff\'erentes pour balayer les noms de fichier que
-pour lire les \minref{token}s en g\'en\'eral (voir \xref{nom de fichier}).
-Si votre impl\'ementation attend des noms de fichier avec extensions (habituellement
-pr\'ec\'ed\'ees par un point), alors \TeX\ procure l'extension par d\'efaut |.tex|.
-\example
-\input macros.tex
-\input chap1 % equivalent to chap1.tex
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts endinput {}
-\explain
-Cette commande dit \`a \TeX\ d'arr\^eter de lire l'entr\'ee du fichier courant
-quand il rencontrera la prochaine fin de ligne.
-\enddesc
-
-\begindesc
-\cts inputlineno {}
-\explain
-Cette commande donne un nombre (pas une cha\^\i ne) donnant le num\'ero de ligne
-de la ligne courante, devant \^etre le num\'ero qui appara\^\i trait dans un message d'erreur
-si une erreur arrive \`a cette endroit.
-\enddesc
-
-\begindesc
-\cts openin {\<nombre> {\bt =} \<nom de fichier>}
-\explain
-Cette commande demande \`a \TeX\ d'ouvrir le fichier nomm\'e \<nom de fichier>
-et de le rendre lisible via le flot d'entr\'ee d\'esign\'e par \<nombre>.
-^^{flots d'entr\'ee//ouverture}
-\<nombre> doit \^etre entre $0$ et $15$.
-Une fois que vous avez ouvert un fichier et l'avez connect\'e \`a un flot d'entr\'ee,
-vous pouvez lire le fichier en utilisant la commande |\read|
-avec le num\'ero du flot d'entr\'ee.
-
-vous pouvez associer plus d'un flot d'entr\'ee avec le m\^eme
-fichier. vous pouvez alors lire \`a plusieurs positions diff\'erentes dans
-le fichier, une pour chaque flot d'entr\'ee.
-
-Vous devez allouer les num\'eros de flots pour |\openin| en utilisant
-|\new!-read| (\xref{\@newread}).
-\example
-\newread\auxfile \openin\auxfile = addenda.aux
-% \auxfile now denotes the number of this opening
-% of addenda.aux.
-|
-\endexample
-\enddesc
-
-\begindesc%\secondprinting{\vglue-.5\baselineskip\vskip0pt}
-\cts closein {\<nombre>}
-\explain
-Cette commande demande \`a \TeX\ de fermer le \minref{flot d'entr\'ee} num\'erot\'e
-\<nombre>, c'est-\`a-dire,
-clore l'association entre le flot d'entr\'ee et son fichier.
-Le flot d'entr\'ee avec ce num\'ero devient alors disponible pour \^etre utilis\'e avec un
-fichier diff\'erent.
-Vous devez fermer un flot d'entr\'ee une fois que vous avez fini d'utiliser son fichier.
-\example
-\closein\auxfile
-|
-\endexample
-\enddesc
-
-\begindesc%\secondprinting{\vglue-.5\baselineskip\vskip0pt}
-\cts read {\<nombre> {\bt to} \<s\'equence de contr\^ole>}
-\explain
-^^{flots d'entr\'ee//lecture avec \b\tt\\read\e}
-^^{lire un fichier}
-Cette commande demande \`a \TeX\ de lire une ligne du fichier
-associ\'e avec le \minref{flot d'entr\'ee}
-d\'esign\'e par \<nombre> et assigne les tokens de cette ligne \`a
-\<s\'equence de contr\^ole>. La \minref{s\'equence de contr\^ole} devient alors une
-\minref{macro} sans param\`etre. Aucun d\'eveloppement de macro ne prend place
-durant l'op\'eration de lecture. Si la ligne contient des accolades ouvrantes
-non appair\'ees, \TeX\ lira des lignes suppl\'ementaires jusqu'a ce que les accolades
-soient toutes referm\'ees. Si \TeX\ atteint la fin du fichier sans fermer toutes les
-accolades, il se plaindra.
-
-Si \<nombre> est plus grand que $15$ ou n'a pas \'et\'e associ\'e avec un fichier
-en utilisant ^|\openin|, \TeX\ affichera l'incitation `\<s\'equence de contr\^ole> |=|'
-sur votre terminal et attendra que vous saisissiez une ligne d'entr\'ee.
-Il assignera alors la ligne d'entr\'ee \`a \<s\'equence de contr\^ole>.
-Si \<nombre> est inf\'erieur \`a z\'ero, il lira une ligne d'entr\'ee de votre
-terminal mais omettra l'incitation.
-\example
-\read\auxfile to \holder
-% Expanding \holder will produce the line just read.
-|
-\endexample
-\eix^^{fichiers d'entr\'ee}
-\enddesc
-
-%\secondprinting{\vfill\eject}
-
-
-%==========================================================================
-\subsection {Op\'erations sur des fichiers de sortie}
-
-\bix^^{fichiers de sortie}
-\begindesc
-\cts openout {\<nombre> {\bt =} \<nom de fichier>}
-\explain
-^^{flots de sortie//ouverture}
-Cette commande demande \`a \TeX\ d'ouvrir le fichier nomm\'e \<nom de fichier>
-et de le rendre disponible pour l'\'ecriture via le \minref{flux de sortie}
-d\'esign\'e par \<nombre>.
-\<nombre> doit \^etre entre $0$ et $15$.
-Une fois que vous avez ouvert un fichier et l'avez connect\'e \`a un flot de sortie,
-vous pouvez \'ecrire dans le fichier en utilisant la commande |\write|
-avec le num\'ero du flot de sortie.
-
-Un |\openout| g\'en\`ere un \'el\'ement extraordinaire qui devient une partie d'une bo\^\i te.
-Le |\openout| ne prend pas effet avant que \TeX\ n'envoit cette bo\^\i te
-dans le \dvifile,
-\`a moins que vous ayez fait pr\'ec\'eder |\openout| de ^|\immediate|.
-
-\TeX\ ne se plaindra pas si vous associez plus d'un flux de sortie avec le
-m\^eme fichier, mais vous aurez un sacr\'e bazar dans le fichier si vous essayez~!
-
-Vous devez allouer des num\'eros de flux pour |\openout| en utilisant
-|\newwrite| (\xref{\@newwrite}).
-\example
-\newwrite\auxfile \openout\auxfile = addenda.aux
-% \auxfile now denotes the number of this opening
-% of addenda.aux.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts closeout {\<nombre>}
-\explain
-^^{flots de sortie//fermeture}
-Cette commande demande \`a \TeX\ de fermer le \minref{flot de sortie} num\'erot\'e
-\<nombre>. c'est-\`a-dire,
-cesser l'association entre le flot de sortie et son fichier.
-Le flot de sortie avec ce num\'ero devient alors disponible pour \^etre utilis\'e avec
-un fichier diff\'erent.
-Vous devez fermer un flot de sortie une fois que vous avez fini d'utiliser son fichier.
-
-Un |\closeout| g\'en\`ere un \'el\'ement extraordinaire qui devient une partie d'une bo\^\i te.
-Le |\closeout| ne prend pas effet avant que \TeX\ n'envoit pas cette bo\^\i te
-dans le \dvifile,
-\`a moins que vous ayez fait pr\'ec\'eder |\closeout| de ^|\immediate|.
-\example
-\closeout\auxfile
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts write {\<nombre> \rqbraces{\<liste de token>}}
-\explain
-^^{flots de sortie//\'ecriture}
-^^{\ecrire\ un fichier}
-Cette commande demande \`a \TeX\ d'\'ecrire \<liste de token> dans le fichier
-associ\'e avec le \minref{flot de sortie}
-d\'esign\'e par \<nombre>.
-Il g\'en\`ere un \'el\'ement extraordinaire qui devient une partie d'une bo\^\i te.
-L'\'ecriture actuelle ne prend pas de place tant que \TeX\ n'envoie cette bo\^\i te
-dans le \dvifile,
-\`a moins que vous pr\'ec\'ediez le |\write| par ^|\immediate|.
-
-Pour un |\write| qui n'est pas imm\'ediat, \TeX\ ne d\'eveloppe pas de macros de
-\<liste de token> tant que la liste de token n'est pas \'ecrite dans le fichier.
-Les d\'eveloppements de macro suivent les m\^emes r\`egles que |\edef| (\xref\edef).
-En particulier, toute s\'equence de contr\^ole qui n'est pas le
-nom d'une macro est \'ecrite comme un
-^|\escapechar| suivi par le nom de la s\'equence de contr\^ole
-et un espace. tous les tokens `|#|'
-de \<liste de token> sont doubl\'es, c'est-\`a-dire, \'ecrits comme `|##|'.
-
-Si \<nombre> n'est pas dans la fourchette de $0$ \`a $15$, \TeX\ \'ecrit
-\<liste de token> dans le fichier log.
-^^{fichier log//\'ecrit par \b\tt\\write\e}
-Si \<nombre> est sup\'erieur \`a $15$ ou n'est pas associ\'e avec un flot de
-sortie, \TeX\ \'ecrit aussi \<liste de token> sur le terminal.
-\example
-\def\aa{a a}
-\write\auxfile{\hbox{$x#y$} \aa}
-% Writes the string `\hbox {$x##y$} a a' to \auxfile.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts immediate {}
-\explain
-Cette commande doit pr\'ec\'eder un |\openout|, un |\closeout| ou un |\write|.
-^^|\write//avec {\tt\\immediate}|
-^^|\openout//avec {\tt\\immediate}|
-^^|\closeout//avec {\tt\\immediate}|
-Elle demande \`a \TeX\ d'ex\'ecuter l'op\'eration de fichier sp\'ecifi\'ee sans d\'elai.
-\example
-\immediate\write 16{I'm stuck!!}
-% has the same effect as \message
-|
-\endexample\enddesc
-
-\begindesc
-\cts special {\rqbraces{\<liste de token>}}
-\explain
-Cette commande demande \`a \TeX\
-d'\'ecrire \<liste de token> directement dans le \dvifile\ quand il enverra
-une page.
-Une utilisation typique de |\special| sera de dire au driver d'impression d'incorporer
-le contenu d'un fichier graphique nomm\'e dans la page de sortie.
-^^{drivers de p\'eriph\'erique//instructions par \b\tt\\special\e}
-La commande |\special| produit un \'el\'ement extraordinaire qui associe
-\<liste de token> avec une position particuli\`ere sur la page, plus pr\'ecis\'ement,
-la position qu'une bo\^\i te de taille nulle aurait eu si un telle bo\^\i te
-serait apparue \`a la place de la commande |\special|.
-Toute utilisation que vous devez faire de |\special| d\'epend strictement des
-^{drivers d'impression} que vous avez \`a votre disposition.
-\example
-\special{graphic expic}
-% Display the graphics file `expic' here.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts newlinechar {\param{nombre}}
-\explain
-Ce param\`etre contient un caract\`ere qui indique une nouvelle ligne sur la
-sortie. Quand \TeX\ rencontre ce caract\`ere
-en lisant l'argument d'une commande
-|\write|, |\message| ou
-|\errmessage|, il d\'ebute une nouvelle ligne.
-Si |\newlinechar| n'est pas dans la fourchette $0$--$255$,
-Il n'y a aucun caract\`ere indiquant
-une nouvelle ligne en sortie.
-\PlainTeX\ met |\newlinechar| \`a $-1$.
-\example
-\newlinechar = `\^^J
-\message{This message appears^^Jon two lines.}
-|
-\logproduces
-This message appears
-on two lines.
-|
-\endexample
-\enddesc
-
-\see |\newread|, |\newwrite| (\xref{\@newwrite}).
-\eix^^{fichiers}
-\eix^^{fichiers de sortie}
-
-%==========================================================================
-\subsection {Interpr\'eter des caract\`eres entr\'es}
-
-\begindesc
-\cts catcode {\<charcode> \tblentry{nombre}}
-\explain
-^^{codes de cat\'egorie//en table de \b\tt\\catcode\e}
-Cette entr\'ee de table contient le \minref{code de cat\'egorie} du caract\`ere
-dont le code \ascii\ est \<charcode>.
-Les codes de cat\'egorie sont list\'es dans la \xrefpg{catcodes}.
-En changeant le code de cat\'egorie d'un caract\`ere vous pouvez demande \`a \TeX\ de traiter
-ce caract\`ere diff\'eremment.
-\example
-\catcode `\[ = 1 \catcode `\] = 2
-% Make [ and ] act like left and right braces.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts active {}
-\explain
-Cette commande contient le
-code de cat\'egorie pour un caract\`ere actif, soit, le nombre $13$.
-\example
-\catcode `\@ = \active % Make @ an active character.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts mathcode {\<charcode> \tblentry{nombre}}
-\explain
-Cette entr\'ee de table contient le \minref{mathcode} du caract\`ere
-dont le code \ascii\ est \<charcode> \seeconcept{mathcode}.
-Le mathcode sp\'ecifie l'interpr\'etation du caract\`ere en mode math\'ematique.
-\example
-\mathcode\> = "313E % as in plain TeX
-% The > character has class 3 (relation), family 1 (math
-% italic), and character code "3E
-|
-\endexample
-\enddesc
-
-\begindesc
-\margin{{\tt\\delcode} was explained in two places. This explanation
-combines them. (The other place was in the math section.)}
-\cts delcode {\<charcode>\tblentry{number}}
-\explain
-^^{codes d\'elimiteurs}
-Cette entr\'ee de table sp\'ecifie le code \minref{delimiter} pour le caract\`ere entr\'ee
-dont le code \ascii\ est \<charcode>.
-Le code d\'elimiteur dit \`a \TeX\ comment trouver le meilleur caract\`ere de sortie utiliser
-pour composer le caract\`ere d'entr\'ee indiqu\'e comme d\'elimiteur.
-
-\<nombre> est normalement \'ecrit en notation hexad\'ecimale.
-Supposez que \<nombre> soit le nombre hexad\'ecimal $s_1s_2s_3\,
-l_1l_2l_3$. Alors, quand le caract\`ere est utilis\'e comme un d\'elimiteur,
-\TeX\ prend le caract\`ere ayant une petite variante
-$s_1s_2s_3$ et une grande variante $l_1l_2l_3$. Ici $s_1s_2s_3$ indique
-le caract\`ere math\'ematique trouv\'e en position $s_2s_3$ de la famille $s_1$ et
-de m\^eme pour $l_1l_2l_3$. C'est la m\^eme convention que celle
-utilis\'ee pour ^|\mathcode| (\xref \mathcode),
-sauf que |\mathcode| sp\'ecifie aussi une classe.
-\example
-\delcode `( = "028300 % As in plain TeX.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts endlinechar {\param{nombre}}
-\explain
-Ce param\`etre
-contient le code de caract\`ere pour le caract\`ere que
-\TeX\ attend \`a la fin de chaque ligne d'entr\'ee.
-^^{ligne d'entr\'ee}
-Une valeur qui ne serait pas dans le fourchette $0$--$255$
-indique qu'aucun caract\`ere ne doit \^etre attendu.
-\PlainTeX\ laisse |\end!-line!-char| \`a
-|`\^^M| (le code {\ascii} pour \asciichar{return}).
-\enddesc
-
-\begindesc
-\cts ignorespaces {}
-\explain
-Cette commande demande \`a \TeX\ de lire et de d\'evelopper des tokens jusqu'\`a ce qu'il en trouve
-un qui ne soit pas un \minref{token} espace, ignorant tous les tokens espace
-qu'il trouve autrement.
-|\ignorespaces| est souvent pratique \`a la fin d'une \minref{macro} comme un moyen
-de rendre la macro insensible \`a tout espace ou fin de ligne
-qui peut suivre son propre appel.
-(Une ligne vide apr\`es |\ignorespaces| continue \`a produire un token |\par|,
-de tout fa\c con.)
-\example
-\def\aa#1{yes #1\ignorespaces}
-\aa{may}
-be
-|
-\produces
-\def\aa#1{yes #1\ignorespaces}
-\aa{may}
-be
-\endexample
-\enddesc
-
-%==========================================================================
-\section {Contr\^oler l'interaction avec \TeX}
-
-\begindesc
-\bix^^{contr\^oler \TeX}
-\bix^^{ex\'ecuter \TeX}
-\cts errorstopmode {}
-\explain
-Cette commande demande \`a \TeX\
-de stopper pour une interaction \`a chaque fois qu'il trouve une erreur.
-C'est le mode op\'eratoire normal.
-\enddesc
-
-\begindesc
-\cts scrollmode {}
-\explain
-Cette commande demande \`a \TeX\
-de ne pas stopper pour le plupart des erreurs,
-mais de continuer \`a afficher les messages d'erreur sur votre terminal.
-Saisir `|S|' ou `|s|' en r\'eponse \`a un message d'erreur vous met
-en mode scroll.
-\enddesc
-
-\begindesc
-\cts nonstopmode {}
-\explain
-Cette commande demande \`a \TeX\
-de ne pas stopper pour des erreurs, m\^eme celles r\'eclamant des fichiers qu'il
-ne peut trouver, mais de continuer \`a afficher les messages d'erreur sur votre terminal.
-Saisir `|R|' ou `|r|' en r\'eponse \`a un message d'erreur vous met
-en mode nonstop.
-\enddesc
-
-\begindesc
-\cts batchmode {}
-\explain
-Cette commande demande \`a \TeX\
-de ne pas stopper pour des erreurs et de supprimer toute sortie sur votre terminal.
-Saisir `|Q|' ou `|q|' en r\'eponse \`a un message d'erreur vous met
-en mode batch.
-\enddesc
-
-\begindesc
-\cts pausing {\param{nombre}}
-\explain
-Si ce param\`etre est sup\'erieur \`a z\'ero, \TeX\ s'arr\^etera
-\`a chaque ligne d'entr\'ee pour vous donner une opportunit\'e de
-la remplacer par une ligne diff\'erente. Si vous saisissez une modification,
-\TeX\ utilisera cette ligne au lieu de l'originale~; si vous r\'epondez
-par \asciichar{return}, \TeX\ utilisera l'originale.
-
-Mettre |\pausing| \`a $1$ peut \^etre pratique comme moyen de patcher un document quand
-\TeX\ l'ex\'ecute. Par exemple,
-vous pouvez utiliser cette facilit\'e pour ins\'erer des commandes ^|\show| (voir plus loin).
-\eix^^{ex\'ecuter \TeX}
-\eix^^{contr\^oler \TeX}
-\enddesc
-
-%==========================================================================
-\section {Aide au diagnostic}
-
-\subsection{Afficher des donn\'ees internes}
-
-\begindesc
-\bix^^{tracer}
-\bix^^{debugger}
-\bix^^{aides au diagnostique}
-\cts show {\<token>}
-\cts showthe {\<argument>}
-\cts showbox {\<nombre>}
-\cts showlists {}
-\explain
-Ces commandes enregistrent de l'information dans le fichier log de votre ex\'ecution \TeX~:
-\ulist
-\li |\show| enregistre la signification de \<token>.\minrefs{token}
-^^{tokens//affich\'es par \b\tt\\show\e}
-\li |\showthe| enregistre
- quels tokens seront produit par
-|\the| \<arg\-u\-ment> (voir \xref \the).
-\li |\showbox| enregistre le contenu du \minref{registre} de la \minref{bo\^\i te}
-num\'erot\'e \<nom\-bre>.
-Le nombre de
-points affich\'es dans la log indique le nombre de
-niveaux d'inclusion de bo\^\i tes internes.
-\li |\showlists| enregistre
-le contenu de chaque liste que \TeX\ est en train de construire.
-(les listes sont empil\'ees les unes sur les autres.)
-Voir les \knuth{pages~88--89}{103} pour plus d'information sur l'interpr\'etation
-de la sortie de |\showlists|.
-\endulist
-Pour |\show| et |\showthe|, \TeX\ affiche aussi l'information sur votre
-^{terminal}.
-Pour |\showbox| et |\showlists|, \TeX\ n'affiche l'information sur votre
-terminal que
-si ^|\tracingonline| (\xref \tracingonline) est sup\'erieur \`a z\'ero~;
-si ^|\tracingonline| est \`a z\'ero ou moins (le cas par d\'efaut),
-l'information n'est pas affich\'ee.
-
-\`A chaque fois que \TeX\ rencontre une commande de type |\show| il
-stoppe pour un interaction. La requ\^ete d'interaction ne doit \emph{pas}
-indiquer une erreur, mais doit vous donner l'opportunit\'e de demander \`a \TeX\ de
-vous montrer autre chose. Si vous ne voulez pas voir autre chose, pressez juste
-\asciichar{return}.
-
-Vous pouvez contr\^oler la quantit\'e de sortie produite par |\showbox| en mettant
-|\show!-box!-breadth| et |\show!-box!-depth| (\xref\showboxbreadth).
-^^|\showboxbreadth| ^^|\showboxdepth|
-Ces param\`etres ont des valeurs par d\'efaut \`a $5$ et $3$ respectivement,
-C'est pourquoi
-juste cinq \'el\'ements apparaissent pour chaque bo\^\i te d\'ecrite
-dans la sortie de log ci-dessous. (Le `|..etc.|' indique des \'el\'ements additionnels
-des bo\^\i tes qui ne sont pas affich\'es.)
-\example
-\show a
-\show \hbox
-\show \medskip
-\show &
-|
-\logproduces
-> the letter a.
-> \hbox=\hbox.
-> \medskip=macro:
-->\vskip \medskipamount .
-> alignment tab character &.
-|
-\nextexample
-\showthe\medskipamount
-\toks27={\hbox{Joe's\quad\ Diner}}
-\showthe\toks27
-|
-\logproduces
-> 6.0pt plus 2.0pt minus 2.0pt.
-> \hbox {Joe's\quad \ Diner}.
-|
-\nextexample
-\setbox 3=\vbox{\hbox{A red dog.}\hrule A black cat.}
-\showbox 3
-|
-\logproduces
-> \box3=
-\vbox(16.23332+0.0)x53.05565
-.\hbox(6.94444+1.94444)x46.41675
-..\tenrm A
-..\glue 3.33333 plus 1.66498 minus 1.11221
-..\tenrm r
-..\tenrm e
-..\tenrm d
-..etc.
-.\rule(0.4+0.0)x*
-.\hbox(6.94444+0.0)x53.05565
-..\tenrm A
-..\glue 3.33333 plus 1.66498 minus 1.11221
-..\tenrm b
-..\tenrm l
-..\tenrm a
-..etc.
-|
-\endexample
-\vfil\eject
-\example
-\vbox{A \hbox
- {formula
- $x \over y\showlists$}}
-|
-\logproduces
-### math mode entered at line 3
-\mathord
-.\fam1 y
-this will be denominator of:
-\fraction, thickness = default
-\\mathord
-\.\fam1 x
-### restricted horizontal mode entered at line 2
-\tenrm f
-\tenrm o
-\tenrm r
-\tenrm m
-\kern-0.27779
-\tenrm u
-\tenrm l
-\tenrm a
-\glue 3.33333 plus 1.66666 minus 1.11111
-spacefactor 1000
-### horizontal mode entered at line 1
-\hbox(0.0+0.0)x20.0
-\tenrm A
-\glue 3.33333 plus 1.66498 minus 1.11221
-spacefactor 999
-### internal vertical mode entered at line 1
-prevdepth ignored
-### vertical mode entered at line 0
-prevdepth ignored
-|
-\endexample
-\enddesc
-
-\see |\showboxbreadth|, |\showboxdepth| \ctsref\showboxbreadth.
-
-\subsection{Sp\'ecifier ce qui est trac\'e}
-
-\begindesc
-\cts tracingonline {\param{nombre}}
-\explain
-Si ce param\`etre est sup\'erieur \`a z\'ero,
-\TeX\ affichera les r\'esultats de la trace
-(en incluant ^|\showbox| et ^|\showlists|)
-sur votre terminal en plus de les enregistrer dans le fichier log.
-\enddesc
-
-\begindesc
-\cts tracingcommands {\param{nombre}}
-\explain
-Si ce param\`etre est \'egal \`a $1$ ou plus,
-\TeX\ enregistrera dans le fichier log plus de commandes qu'il ex\'ecute.
-Si ^|\tracingonline| est plus grand que z\'ero, cette information appara\^\i tra aussi
-sur votre terminal.
-composer le premier caract\`ere d'un mot compte comme une commande,
-mais (dans le but de la trace seulement)
-les actions de composition des caract\`eres suivants
-et de toute ponctuation les suivant
-ne compte pas comme des commandes.
-Si |\tracingcommands| est \`a $2$ ou plus,
-\TeX\ enregistrera aussi des commandes qui sont d\'evelopp\'ees
-plut\^ot qu'ex\'ecut\'ees, par exemple, des tests conditionnels et leurs r\'esultats.
-\example
-\tracingcommands = 1 If $x+y>0$ we quit.\par
-On the other hand, \tracingcommands = 0
-|
-\logproduces
-{vertical mode: the letter I}
-{horizontal mode: the letter I}
-{blank space }
-{math shift character $}
-{math mode: the letter x}
-{the character +}
-{the letter y}
-{the character >}
-{the character 0}
-{math shift character $}
-{horizontal mode: blank space }
-{the letter w}
-{blank space }
-{the letter q}
-{blank space }
-{\par}
-{vertical mode: the letter O}
-{horizontal mode: the letter O}
-{blank space }
-{the letter t}
-{blank space }
-{the letter o}
-{blank space }
-{the letter h}
-{blank space }
-{\tracingcommands}
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts tracinglostchars {\param{nombre}}
-\explain
-Si ce param\`etre est plus grand que z\'ero,
-\TeX\ enregistrera une indication dans le fichier log \`a chaque fois
-qu'il d\'elaissera un caract\`ere de sortie parce que ce caract\`ere n'existe pas
-dans la police courante.
-Si ^|\tracingonline| est plus grand que z\'ero, cette information appara\^\i tra aussi
-sur votre terminal.
-\PlainTeX\ le met par d\'efaut \`a $1$ (contrairement aux autres).
-\example
-\tracinglostchars = 1
-A {\nullfont few} characters.
-|
-\logproduces
-Missing character: There is no f in font nullfont!!
-Missing character: There is no e in font nullfont!!
-Missing character: There is no w in font nullfont!!
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts tracingmacros {\param{nombre}}
-\explain
-Si ce param\`etre est \`a $1$ ou plus,
-\TeX\ enregistrera dans le fichier log le d\'eveloppement et les arguments
-de toutes les macros qu'il ex\'ecute.
-^^{macros//tracer des}
-Si |\tracingmacros| est \`a $2$ ou plus,
-\TeX\ enregistrera, en plus,
-tout d\'eveloppement de listes de \minref{token} telles que
-|\output| or |\everycr|.
-Si ^|\tracingonline| est plus grand que z\'ero, cette information appara\^\i tra aussi
-sur votre terminal.
-\example
-\def\a{first \b, then \c}
-\def\b{b} \def\c{c}
-\tracingmacros = 2
-Call \a once.
-|
-\logproduces
-\a ->first \b , then \c
-
-\b ->b
-
-\c ->c
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts tracingoutput {\param{nombre}}
-\explain
-Si ce param\`etre est sup\'erieur \`a z\'ero,
-\TeX\ enregistrera dans le fichier log le contenu de toutes les bo\^\i tes qu'il
-envoit dans le \dvifile.
-^^{\dvifile//\boite\ enregistr\'e dans le fichier}
-Si ^|\tracingonline| est sup\'erieur \`a z\'ero, cette information appara\^\i tra aussi
-sur votre terminal.
-Le nombre de
-points affich\'e dans la log indique le nombre de
-niveaux d'inclusion de bo\^\i tes sur cette ligne.
-Vous pouvez contr\^oler la quantit\'e de trace en fixant
-^|\showboxbreadth| et ^|\showboxdepth| (\xref\showboxbreadth).
-
-mettre |\tracingoutput| \`a $1$ peut \^etre tr\`es pratique quand vous essayez
-de d\'eterminer pourquoi vous obtenez un ^{espace suppl\'ementaire} sur une page.
-
-\example
-% This is the entire file.
-\tracingoutput = 1 \nopagenumbers
-One-line page. \bye
-|
-\logproduces
-Completed box being shipped out [1]
-\vbox(667.20255+0.0)x469.75499
-.\vbox(0.0+0.0)x469.75499, glue set 13.99998fil
-..\glue -22.5
-..\hbox(8.5+0.0)x469.75499, glue set 469.75499fil
-...\vbox(8.5+0.0)x0.0
-...\glue 0.0 plus 1.0fil
-..\glue 0.0 plus 1.0fil minus 1.0fil
-.\vbox(643.20255+0.0)x469.75499, glue set 631.2581fill
-..\glue(\topskip) 3.05556
-..\hbox(6.94444+1.94444)x469.75499, glue set 386.9771fil
-...\hbox(0.0+0.0)x20.0
-...\tenrm O
-...\tenrm n
-...\tenrm e
-...\tenrm -
-...etc.
-..\glue 0.0 plus 1.0fil
-..\glue 0.0 plus 1.0fill
-.\glue(\baselineskip) 24.0
-.\hbox(0.0+0.0)x469.75499, glue set 469.75499fil
-..\glue 0.0 plus 1.0fil
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts tracingpages {\param{nombre}}
-\explain
-Si ce param\`etre est sup\'erieur \`a z\'ero,
-\TeX\ enregistrera dans le fichier log ses calculs sur le co\^ut des
-diff\'erentes coupures de page qu'il essaie.
-^^{coupures de page//tracer}
-Si |\tracing!-online| ^^|\tracingonline|
-est sup\'erieur \`a z\'ero, cette information appara\^\i tra aussi
-sur votre terminal.
-\TeX\ produit une ligne de cette sortie
-\`a chaque fois qu'il commence \`a placer une bo\^\i te ou une \minref{insertion}
-sur la liste de page courante, et aussi \`a chaque fois qu'il ex\'ecute une
-point de coupure potentiel pour la page.
-Examiner cette sortie peut \^etre utile quand vous essayez de d\'eterminer
-la cause d'une mauvaise coupure de page.
-Voir les \knuth{pages~112--114}{130--133} pour une illustration et une explication de
-cette sortie.
-
-Certaines distributions de \TeX\ ignorent la valeur de |\tracingpages|
-ainsi elles peuvent s'ex\'ecuter plus rapidement.
-Si vous devez utiliser ce param\`etre, soyez certain d'utiliser une distribution qui
-lui r\'epond.
-\enddesc
-
-\begindesc
-\cts tracingparagraphs {\param{nombre}}
-\explain
-Si ce param\`etre est sup\'erieur \`a z\'ero,
-\TeX\ enregistrera dans le fichier log ses calculs sur le co\^ut des
-diff\'erentes coupures de ligne qu'il essaie.
-^^{coupures de ligne//tracer}
-Si ^|\tracingonline|
-est sup\'erieur \`a z\'ero, cette information appara\^\i tra aussi
-sur votre terminal.
-\TeX\ produit cette sortie quand il atteint la fin de chaque paragraphe.
-Voir les \knuth{pages~98--99}{115--116} pour une illustration et une explication de
-cette sortie.
-
-Certaines distributions de \TeX\ ignorent la valeur de |\tracing!-para!-graphs|
-ainsi elles peuvent s'ex\'ecuter plus rapidement.
-Si vous devez utiliser ce param\`etre, soyez certain d'utiliser une distribution qui
-lui r\'epond.
-\enddesc
-
-\begindesc
-\cts tracingrestores {\param{nombre}}
-\explain
-Si ce param\`etre est sup\'erieur \`a z\'ero,
-\TeX\ enregistrera dans le fichier log les valeurs qu'il restitue quand il
-rencontre la fin d'un \minref{groupe}.
-Si ^|\tracingonline|
-est sup\'erieur \`a z\'ero, cette information appara\^\i tra aussi
-sur votre terminal.
-
-Certaines distributions de \TeX\ ignorent la valeur de |\tracing!-restores|
-ainsi elles peuvent s'ex\'ecuter plus rapidement.
-Si vous devez utiliser ce param\`etre, soyez certain d'utiliser une distribution qui
-lui r\'epond.
-\enddesc
-
-\begindesc
-\cts tracingstats {\param{nombre}}
-\explain
-Si ce param\`etre est \`a $1$ ou plus, \TeX\ incluera
-un rapport sur les ressources qu'il utilise pour ex\'ecuter votre travail
-(voir la \knuth{page~300}{350--351} pour une liste et l'explication de ces ressources).
-Du reste, si |\tracingstats| est \`a $2$ ou plus,
-\TeX\ fera un rapport sur ses utilisations de m\'emoire \`a chaque fois qu'il fera un
-^|\shipout| (\xref \shipout) pour une page.
-Le rapport appara\^\i t \`a la fin du fichier log.
-^^{fichier log//tracer des statistiques dans le}
-Si ^|\tracingonline| est sup\'erieur \`a z\'ero, cette information appara\^\i tra aussi
-sur votre terminal.
-Si vous avez des probl\`emes avec \TeX\ d\'epassant une de ses
-capacit\'es, l'information procur\'ee par |\tracingstats| peut vous aider \`a
-mettre le doigt sur la cause de vos difficult\'es.
-
-Certaines distributions de \TeX\ ignorent la valeur de |\tracingstats|
-ainsi elles peuvent s'ex\'ecuter plus rapidement.
-Si vous devez utiliser ce param\`etre, soyez certain d'utiliser une distribution qui
-lui r\'epond.
-
-L'exemple suivant montre un extrait de
-la sortie de trace que vous obtenez sur une distribution
-de \TeX. Elle peut \^etre diff\'erente sur d'autres distributions.
-{\codefuzz = 1in
-\example
-\tracingstats=1
-|
-\logproduces
-Here is how much of TeX's memory you used:
- 4 strings out of 5540
- 60 string characters out of 72328
- 5956 words of memory out of 262141
- 921 multiletter control sequences out of 9500
- 14794 words of font info for 50 fonts, out of 72000 for 255
- 14 hyphenation exceptions out of 607
- 7i,4n,1p,68b,22s stack positions out of 300i,40n,60p,3000b,4000s
-|
-\endexample
-}% end scope of codefuzz
-\enddesc
-
-\begindesc
-\cts tracingall {}
-\explain
-Cette commande demande \`a \TeX\ de
-brancher toutes les formes de trace disponibles.
-Elle met aussi ^|\tracingonline| \`a $1$ pour que la sortie de trace apparaisse
-sur votre terminal.
-\enddesc
-
-\begindesc
-\cts showboxbreadth {\param{nombre}}
-\explain
-Ce param\`etre sp\'ecifie le nombre maximum d'\'el\'ements de liste
-que \TeX\ affiche pour un niveau d'une bo\^\i te quand il produit
-la sortie pour ^|\showbox| ou ^|\tracingoutput|.
-\PlainTeX\ met |\showboxbreadth| \`a $5$.
-\enddesc
-
-\begindesc
-\cts showboxdepth {\param{nombre}}
-\explain
-Ce param\`etre sp\'ecifie le
-niveau de la plus profonde liste que \TeX\ affiche quand
-il produit la sortie pour ^|\showbox| ou ^|\showlists|.
-\PlainTeX\ met |\showboxdepth| \`a $3$.
-\eix^^{tracer}
-\eix^^{debugger}
-\eix^^{aides au diagnostique}
-\enddesc
-
-%==========================================================================
-\subsection {Envoyer des messages}
-
-\begindesc
-\bix^^{messages, envoyer}
-\bix^^{messages d'erreur}
-\cts message {\rqbraces{\<liste de token>}}
-\cts errmessage {\rqbraces{\<liste de token>}}
-\explain
-Cette commande affiche le message donn\'e par \<liste de token> sur votre
-terminal et l'entre aussi dans la log. Toutes les \minref{macro}s du
-message sont d\'evelopp\'ees, mais aucune commande n'est ex\'ecut\'ee. C'est la m\^eme r\`egle
-que \TeX\ utilise pour |\edef| (\xref \edef).
-
-Pour |\errmessage|, \TeX\ fait une pause
-de la m\^eme fa\c con qu'il le ferait pour un de ses propres messages d'erreur
-et affiche les tokens |\errhelp| si vous demandez de l'aide.
-
-Vous pouvez g\'en\'erer des messages multi-ligne en utilisant le caract\`ere ^|\newlinechar|
-(\xref \newlinechar).
-\example
-\message{Starting a new section.}
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts wlog {\rqbraces{\<liste de token>}}
-\explain
-Cette commande \'ecrit \<liste de token> dans le fichier log.
-^^{fichier log//\'ecrire par \b\tt\\wlog\e}
-\minrefs{log file}
-\TeX\ d\'eveloppe \<liste de token> en accord avec les m\^emes r\`egles qu'il utilise
-pour |\edef| (\xref\edef).
-\example
-\wlog{Take two aspirins and call me in the morning.}
-|
-\logproduces
-Take two aspirins and call me in the morning.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts errhelp {\param{liste de token}}
-\explain
-Ce param\`etre contient la liste de token que \TeX\ affiche
-quand vous demandez de l'aide en r\'eponse \`a une commande |\errmessage|.
-Nous vous recommandons quand
-vous g\'en\'erez un message d'erreur avec |\errmessage|, de
-mettre |\errhelp| \`a une cha\^\i ne qui d\'ecrit la nature de
-l'erreur et utiliser |\newhelp| pour produire cette cha\^\i ne.
-Vous pouvez utiliser le caract\`ere ^|\newlinechar| pour produire des messages multi-ligne.
-\enddesc
-
-\begindesc
-\ctspecial newhelp \ctsxrdef{@newhelp} {\<s\'equence de contr\^ole>
- \rqbraces{\<texte d'aide>}}
-\explain
-Cette commande assigne le ^{message d'aide} donn\'e par \<texte d'aide> \`a
-\<s\'equence de contr\^ole>. Il procure un moyen efficace de d\'efinir
-le ^{texte d'aide} qui compl\`ete un message d'erreur.
-Avant d'\'emettre le message d'erreur avec la commande |\errmessage|,
-vous devez assigner \<s\'equence de contr\^ole> \`a ^|\errhelp|. Le texte d'aide
-appara\^\i tra alors si l'utilisateur saisi `|H|'
-ou `|h|' en r\'eponse au message d'erreur.
-\example
-\newhelp\pain{Your input includes a token that I find^^J
- to be offensive. Don't bother me again with this^^J
- document until you've removed it.}
-\errhelp = \pain \newlinechar = `\^^J
-% ^^J will start a new line
-\errmessage{I do not appreciate receiving this token}
-|
-\logproduces
-!! I do not appreciate receiving this token.
-l.8 ...t appreciate receiving this token.}
-
-? H
-\Your input includes a token that I find
- to be offensive. Don't bother me again with this
- document until you've removed it.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts errorcontextlines {\param{nombre}}
-\explain
-Ce param\`etre d\'etermine le nombre de paires de lignes de contexte,
-sans compter la premi\`ere et la derni\`ere, que \TeX\ imprime quand il
-rencontre une erreur. En le mettant \`a $0$ vous pouvez vous d\'ebarrasser de longs
-messages d'erreur.
-Vous pouvez forcer le contexte entier en saisissant quelque chose comme~:
-\csdisplay
-I\errorcontextlines=100\oops
-|
-en r\'eponse \`a une erreur,
-puisque la s\'equence de contr\^ole non d\'efinie |\oops| causera une autre erreur.
-\PlainTeX\ met |\error!-context!-lines| \`a $5$.
-\enddesc
-
-\see |\write| (\xref \write), |\escapechar| (\xref \escapechar).
-\eix^^{messages, envoyer}
-\eix^^{messages d'erreur}
-
-%==========================================================================
-\section {Initialiser \TeX}
-
-\begindesc
-\cts dump {}
-\explain
-Cette commande, qui ne doit pas appara\^\i tre \`a l'int\'erieur d'un groupe, met en
-r\'eserve le contenu de la m\'emoire de \TeX\ dans un ^{fichier format} (\xref{fichier format}).
-En utilisant ^|virtex|, une forme sp\'eciale ``vierge'' de \TeX,
-vous pouvez alors recharger le fichier format \`a grande vitesse et
-continuer dans le m\^eme \'etat que \TeX\ \'etait au moment du dump.
-|\dump| termine aussi une ex\'ecution. Puisque |\dump| ne peut \^etre utilis\'e
-qu'avec ^|initex|, pas en format de production de \TeX, elle n'est utile qu'aux
-gens qui installent \TeX.
-\enddesc
-
-\begindesc
-\cts everyjob {\param{liste de token}}
-\explain
-Ce param\`etre contient une liste de \minref{token} que \TeX\ d\'eveloppe au
-d\'ebut de chaque ex\'ecution. Parce qu'un assignement \`a |\everyjob| ne peut affecter
-l'ex\'ecution courante (au moment o\`u vous avez fait l'assignement, c'est d\'ej\`a trop
-tard), elle n'est utile qu'ux gens qui pr\'eparent des fichiers de format.
-\enddesc
-
-
-\enddescriptions \endchapter \byebye
-
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros +\chapter {Commandes pour \linebreak des op\'erations g\'en\'erales} + +\chapterdef{general} + +Cette section couvre +des ^{caract\'eristiques de programmation} de \TeX\ et +toutes autres choses qui ne rentrent pas dans les cat\'egories +de commandes des chapitres pr\'ec\'edents. +Pour une explication des conventions utilis\'ees dans cette section, +voir \headcit{Descriptions des commandes}{cmddesc}. + +\begindescriptions + +%========================================================================== +\section {Nommer et modifier des polices} + +\begindesc +\bix^^{polices//nommer et modifier} +\cts font {} +\aux\cts font {\<s\'equence de contr\^ole> = \<nom de police>} +\aux\cts font {\<s\'equence de contr\^ole> = \<nom de police> {\bt scaled} \<nombre>} +\aux\cts font {\<s\'equence de contr\^ole> = \<nom de police> {\bt at} \<dimension>} +\explain +Utilis\'ee seule, la s\'equence de contr\^ole |\font| d\'esigne la police courante. +|\font| n'est pas une vraie commande quand elle est utilis\'ee seule, +puis\-qu'elle ne peut alors appara\^\i tre que comme argument d'une autre commande. + +Pour les trois autres formes de |\font|, +\<nom de police> nomme un jeu de fichier qui d\'efinit une police. +Ces formes de |\font| sont des commandes. Chacune de ces formes a deux +effets~: +{\tighten +\olist +\li Elle d\'efinit \<s\'equence de contr\^ole> comme un nom qui s\'electionne +la police \<nom de police>, \'eventuellement magnifi\'ee (voir plus bas). +\li Elle demande \`a \TeX\ de charger le fichier de m\'etriques +^^{fichiers de m\'etriques} de la police (^{\tfmfile}) pour \<nom de +police>. +\endolist +}% end tighten + +\noindent +Le nom d'un fichier de police indique normalement sa taille de dessin. +Par exemple, |cmr10| indique Computer Modern romain avec une +taille de dessin de $10$ points. +La taille des dessins d'une police est enregistr\'ee dans ses fichiers de m\'etriques. + +Si ni |scaled| \<nombre> ni |at| \<dimension> +n'est pr\'esent, la police est utilis\'ee +\`a sa taille de dessin---la taille pour laquelle elle est normalement faite. +Autrement, une version magnifi\'ee de la police est charg\'ee~: +\ulist +\li Si |scaled| \<nombre> +est pr\'esent, la police est magnifi\'ee d'un facteur de $\hbox{\<nombre>}/1000$. +\li Si |at| \<dimension> est pr\'esent, la police est +agrandie de \<dimension> en la magnifiant +par $\hbox{\<dimension>}/ds$, o\`u $ds$ est la taille de dessin de +\<nom de police>. +\<dimension> et $ds$ sont toujours donn\'es en points. +\endulist +\noindent +Des magnifications de moins que $1$ sont possibles~; Elles r\'eduisent la taille. + +Vous devez habituellement fournir un fichier de formes (\xref{shape}) pour chaque +magnification de police que vous chargez. +N\'eanmoins, certains ^{pilotes de p\'eriph\'eriques} peuvent utiliser des polices +qui sont r\'esidentes dans une imprimante. ^^{polices r\'esidentes} +De telles polices n'ont pas besoin de fichiers de formes. + +Voir \conceptcit{police} et +\conceptcit{magnification} pour plus d'informa\-tion. + +\example +\font\tentt = cmtt10 +\font\bigttfont = cmtt10 scaled \magstep2 +\font\eleventtfont = cmtt10 at 11pt +First we use {\tentt regular CM typewriter}. +Then we use {\eleventtfont eleven-point CM typewriter}. +Finally we use {\bigttfont big CM typewriter}. +| +\produces +\font\regttfont = cmtt10 +\font\bigttfont = cmtt10 scaled \magstep 2 +\font\eleventtfont = cmtt10 at 11pt +First we use {\regttfont regular CM typewriter}. +Then we use {\eleventtfont eleven-point CM typewriter}. +Finally we use {\bigttfont big CM typewriter}. +\endexample +\enddesc + +\begindesc +\cts fontdimen {\<nombre> \<police>\param{dimension}} +\explain +^^{polices//param\`etres de} +Ce param\`etre sp\'ecifie des dimensions vari\'ees associ\'ees avec +la police nomm\'ee par la s\'equence de contr\^ole \<police> +(\`a distinguer de \<font\-name> qui nomme les fichiers de police). +Des valeurs de ces param\`etres sont sp\'ecifi\'es dans les fichiers de m\'etriques +pour \<police>, mais vous pouvez +r\'eparer ou changer leurs valeurs pendant une ex\'ecution de \TeX. +Les nombres et significations de ces param\`etres sont~: +\display{\halign{\hfil#\hfil\quad&#\hfil\cr +\it Nombre&\it Signification\cr +\noalign{\vskip 1\jot}% +1&inclinaison par point\cr +2&espace inter-mot\cr +3&\'etirement inter-mot\cr +4&r\'etr\'ecissement inter-mot\cr +5&hauteur de x (taille d'un |1ex|)\cr +6&largeur de cadratin (taille d'un |1em|)\cr +7&espace suppl\'ementaire\cr}} +\noindent +\TeX\ utilise l'inclinaison par point pour positionner des accents. +Il utilise aussi les param\`etres inter-mot pour produire des espaces inter-mots +(voir |\spaceskip|, \xref\spaceskip) et le param\`etre d'espace suppl\'ementaire +pour l'espa\-ce additionel apr\`es une virgule (voir |\xspaceskip|, +\xref\xspaceskip). +Les valeurs de ces param\`etres pour les +polices \plainTeX\ sont \'enum\'er\'ees dans la \knuth{page~433}{497}. +Les polices de symboles math\'ematiques ont $15$ param\`etres additionnels, +dont nous ne parlerons pas ici. + +Attention~: +les assignements de ces param\`etres \emph{ne} sont \emph{pas} d\'efaits \`a la fin +d'un groupe. +Si vous voulez changer ces param\`etres localement, vous devrez +sauvegarder et restaurer leurs valeurs originales explicitement. +\example +Here's a line printed normally.\par +\fontdimen2\font = 3\fontdimen2\font +% Triple the interword spacing. +\noindent Here's a really spaced-out line. +| +\produces +Here's a line printed normally.\par +\dimen0 = \fontdimen2\font % to undo global assignment +\fontdimen2\font = 3\fontdimen2\font +% triple the interword spacing +\noindent Here's a really spaced-out line. +\fontdimen2\font = \dimen0 +\endexample +\enddesc + +\begindesc +\cts magnification {{\bt =} \<nombre>} +\cts mag {\param{nombre}} +\explain +\margin{{\tt\\mag} and {\tt\\magnification} combined.} +Un assignement de |\magnification| \'etablit +le ``^{facteur d'\'echelle}'' $f$ qui d\'etermine +le ratio de \minref{magnification} de votre document \seeconcept{magnification}. +L'assignation de |\magni!-fication| doit appara\^\i tre avant que la premi\`ere page +de votre document ait \'et\'e envoy\'ee. + +L'assignement met $f$ \`a \<nombre> et met +aussi |\hsize| et |\vsize| +^^|\hsize//d\'etermin\'e par {\tt\\magnification}| +^^|\vsize//d\'etermin\'e par {\tt\\magnification}| +respectivement \`a |6.5true in| et |8.9true in|, +Les valeurs appropri\'ees pour une page $8 \frac1/2$-% +par-$11$-pouce. +$f$ doit \^etre entre $0$ et $32768$. +Le ratio \minref{magnification} du +document est $f/1000$. +Un facteur d'\'echelle +de $1000$ procure une unit\'e de magnification, c'est-\`a-dire, il laisse +la taille de votre document inchang\'ee. +Il est d'usage d'utiliser des puissances de $1.2$ comme facteur d'\'echelle et +la plupart des librairies de polices sont bas\'ees sur de tels facteurs. Vous +pouvez utiliser les commandes ^|\magstep| et ^|\magstephalf| pour sp\'ecifier +des magnifications par ces facteurs. + +|\magnification| n'est pas un param\`etre. Vous ne pouvez pas l'utiliser +pour \emph{r\'ecuperer} le facteur d'\'echelle. Si vous \'ecrivez quelque chose comme +|\dimen0 = \mag!-nifi!-cation|, \TeX\ s'en plaindra. + +Le param\`etre |\mag| contient le facteur d'\'echelle. +Changer la valeur de |\mag| retaille les dimensions de la page, ce qui n'est pas +ce que vous voulez habituellement. +Aussi, il est pr\'ef\'erable de changer la magnification en +l'assignant \`a |\magnification| plut\^ot qu'\`a |\mag|. + +\example +\magnification = \magstep2 +% magnify fonts by 1.44 (=1.2x1.2) +| +\endexample +\enddesc + +\begindesc +\cts magstep {\<nombre>} +\explain +Cette commande d\'eveloppe le ratio de \minref{magnification} demand\'e pour +magnifier tout dans votre document +(autre que des dimensions |true|) +par $1.2^r$, o\`u $r$ est +la valeur de \<nombre>. \<nombre> doit \^etre entre $0$ et $5$. +\example +\magnification = \magstep1 % Magnify by ratio of 1.2. +| +\endexample +\enddesc + +\begindesc +\cts magstephalf {} +\explain +Cette commande d\'eveloppe le ratio de \minref{magnification} demand\'e pour +magnifier tout dans votre document +(autre que des dimensions |true|) +par $\sqrt{1.2}$, +c'est-\`a-dire, \`a mi chemin entre $1$ et $1.2$. +\example +\magnification = \magstephalf +| +\endexample +\eix^^{polices//nommer et modifier} +\enddesc + +%========================================================================== +\section {Convertir l'information en tokens} + +\subsection {Nombres} + +\begindesc +\xrdef{convert} +\bix^^{nombres//convertir en caract\`eres} +% +\cts number {\<nombre>} +\explain +Cette commande produit la repr\'esentation d'un \minref{nombre} +comme une s\'e\-quence de +\minref{token}s de caract\`ere. Le nombre peut \^etre un entier explicite, +un param\`etre \<nombre> ou un registre \<nombre>. +\example +\number 24 \quad \count13 = -10000 \number\count13 +| +\produces +\number 24 \quad \count13 = -10000 \number\count13 +\endexample +\enddesc + +\begindesc +^^{chiffres romain} +\easy\cts romannumeral {\<nombre>} +\explain +Cette commande produit la repr\'esentation num\'erique romaine d'un \minref{nom\-bre} +comme une s\'equence de +\minref{token}s de caract\`ere. Le nombre peut \^etre un entier explicite, +un param\`etre \<nombre> ou un registre \<nombre>. +Si le nombre est z\'ero ou n\'egatif, |\romannumeral| ne produit +pas de tokens. +\example +\romannumeral 24 \quad (\romannumeral -16)\quad +\count13 = 6000 \romannumeral\count13 +| +\produces +\romannumeral 24 \quad (\romannumeral -16)\quad +\count13 = 6000 \romannumeral\count13 +\endexample + +\eix^^{nombres//convertir en caract\`eres} +\enddesc + +%========================================================================== +\subsection {Information environmentale} + +\begindesc +^^{heure du jour} +\cts time {\param{nombre}} +\explain +\TeX\ met ce param\`etre au +nombre de minutes qui se sont d\'eroul\'ees depuis minuit (du jour courant). +A neuf heures, par exemple, |\time| est \`a $720$. +Cette commande et les trois suivantes utilisent l'heure et la date +enregistr\'ee dans votre ordinateur. +\TeX\ les r\'ecup\`ere juste une fois, au d\'ebut de votre ex\'ecution, donc |\time| +\`a la fin de l'ex\'ecution \`a toujours la m\^eme valeur que |\time| au +d\'ebut de l'ex\'ecution (\`a moins que vous l'ayez chang\'ee explicitement). +\enddesc + +\bix^^{date} +\begindesc +\cts day {\param{nombre}} +\explain +\TeX\ met ce param\`etre au jour courant du mois. c'est +un nombre entre $1$ et $31$. +|\day| est mis au d\'ebut de votre ex\'ecution (voir les commentaires sur +|\time| ci-dessus). +\enddesc + +\begindesc +\cts month {\param{nombre}} +\explain +\TeX\ met ce param\`etre au mois courant. C'est +un nombre entre $1$ et $12$. +|\month| est mis au d\'ebut de votre ex\'ecution (voir les commentaires sur +|\time| ci-dessus). +\enddesc + +\begindesc +\cts year {\param{nombre}} +\explain +\TeX\ met ce param\`etre \`a l'ann\'ee courante ({apr\`es \sc J.-C.}). +C'est un nombre tel que $2004$. +|\year| est mis au d\'ebut de votre ex\'ecution (voir les commentaires sur +|\time| ci-dessus). + +\eix^^{date} +\enddesc + +\begindesc +^^{num\'ero de version} +\cts fmtname {} +\cts fmtversion {} +\explain +Ces commandes produisent le nom et le num\'ero de version +du format \TeX, +c'est-\`a-dire \minref{\plainTeX} ou ^{\LaTeX}, que vous utilisez. +\example +This book was produced with the \fmtname\ format, +version~\fmtversion. +| +\produces +This book was produced with the \fmtname\ format, +version~\fmtversion. +\endexample +\enddesc + +\begindesc +\cts jobname {} +\explain +Cette commande produit le nom de base +du fichier avec lequel \TeX\ \`a \'et\'e invoqu\'e. +Par exemple, si votre fichier d'entr\'ee principal est |hatter.tex|, +|\jobname| se d\'eveloppera en |hatter|. +|\jobname| est plus pratique quand vous +cr\'eez un fichier auxiliaire devant \^etre associ\'e avec un document. +^^{fichiers auxiliaires} +\example +\newwrite\indexfile \openout\indexfile = \jobname.idx +% For input file `hatter.tex', open index file `hatter.idx'. +| +\endexample\enddesc + +%========================================================================== +\subsection {Valeurs des variables} + +\begindesc +\cts meaning {\<token>} +\explain +^^{tokens//montrer la signification de} +Cette commande produit +la signification de \<token>. Elle est pratique pour diagnostiquer en sortie. +Vous pouvez utiliser la commande ^|\the| (\xref\the) d'une mani\`ere similaire +pour obtenir l'information sur les valeurs des \minref{registre}s et autres +entit\'es de \TeX. +\example +[{\tt \meaning\eject}] [\meaning\tenrm] [\meaning Y] +| +\produces +[{\tt \meaning\eject}] [\meaning\tenrm] [\meaning Y] +\endexample\enddesc + +\begindesc +\cts string {\<s\'equence de contr\^ole>} +\explain +^^{s\'equences de contr\^ole//convertir en chaines} +Cette commande produit +les caract\`eres qui forment le nom \<s\'equence de contr\^ole>, +en incluant le \minref{caract\`ere d'\'echappement}. +Le caract\`ere d'\'echap\-pement est repr\'esent\'e par la valeur courante de +^|\escapechar|. +^^{caract\`ere d'\'echappement//repr\'esent\'e par \b\tt\\escapechar\e} +\TeX\ donne les caract\`eres dans la liste d'un code de cat\'egorie de $12$ (outre). + +Vous pouvez proc\'eder \`a l'op\'eration inverse avec +la commande ^|\csname| (\xref \csname), +qui transforme une chaine en une s\'equence de contr\^ole. +\example +the control sequence {\tt \string\bigbreak} +| +\produces +the control sequence {\tt \string\bigbreak} +\endexample\enddesc + +\begindesc +\cts escapechar {\param{nombre}} +\explain +Ce param\`etre sp\'ecifie le code \ascii\ \minrefs{\ascii} du +caract\`ere que \TeX\ utilise pour repr\'esenter le \minref{caract\`ere d'\'echappement} +^^{caract\`ere d'\'echappement//repr\'esent\'e par \b\tt\\escapechar\e} +quand il +convertit un nom de s\'equence de contr\^ole en une s\'equence de tokens de caract\`ere. +Cette conversion \`a lieu quand vous utilisez la commande |\string| et aussi quand +\TeX\ produit des messages de diagnostic. La valeur par d\'efaut du caract\`ere +d'\'echappement est $92$, la code de caract\`ere {\ascii} pour un ^{backslash}. +Si |\escapechar| n'est pas dans la fourchette $0$--$255$, +\TeX\ n'inclut pas de caract\`ere d'\'echappement dans le r\'esultat de la conversion. +\example +\escapechar = `!! +the control sequence {\tt \string\bigbreak} +| +\produces +\escapechar = `! +the control sequence {\tt \string\bigbreak} +\endexample +\enddesc + +\begindesc +\cts fontname {\<police>} +\explain +^^{polices//noms de} +Cette commande produit le nom de fichier +pour la \<police>. Le nom de fichier est le \<font\-name> qui a \'et\'e utilis\'e +pour d\'efinir \<police>. +\example +\font\myfive=cmr5 [\fontname\myfive] +| +\produces +\font\myfive=cmr5 [\fontname\myfive] +\endexample +\enddesc + + +%========================================================================== +\section {Groupement} + +\begindesc +\bix^^{groupes} +% +\cts begingroup {} +\cts endgroup {} +\explain +Ces deux commandes d\'ebutent et terminent un \minref{groupe}. +Un |\begingroup| ne s'accorde pas avec une accolade droite, +ni un |\endgroup| avec une accolade gauche. + +\TeX\ traite |\begingroup| et |\endgroup| comme tout autre +\minref{s\'equence de contr\^ole} quand il scanne son entr\'ee. En particulier, +vous pouvez d\'efinir une \minref{macro} qui contient un |\begingroup| +mais pas de |\endgroup|, et inversement. +^^{macros//utiliser \b\tt\\begingroup\e\ et \b\tt\\endgroup\e\ dans des} +Cette technique est souvent pratique +quand vous d\'efinissez des paires de macros, une qui \'etablit +un environnement et l'autre qui termine cet environnement. +Vous ne pouvez, de plus, pas utiliser |\begingroup| et |\endgroup| comme +substituts pour des +accolades autres que celles qui entourent un groupe. +\example +\def\a{One \begingroup \it two } +\def\enda{\endgroup four} +\a three \enda +| +\produces +\def\a{One \begingroup \it two } +\def\enda{\endgroup four} +\a three \enda +\endexample +\enddesc + +\begindesc +\makecolumns 4/2: +\easy% +\ctsact { \xrdef{@lbrace} +\cts bgroup {} +\ctsact } \xrdef{@rbrace} +\cts egroup {} +\explain +Les accolades gauches et droites sont des commandes qui d\'ebutent et terminent un +\minref{groupe}. +Les \minref{s\'equences de contr\^ole} |\bgroup| et |\egroup| sont \'equivalentes +\`a `|{|' et `|}|', sauf que +\TeX\ traite |\bgroup| et |\egroup| comme tout autre +\minref{s\'equence de contr\^ole} quand il scanne son entr\'ee. + +|\bgroup| et |\egroup| peuvent \^etre pratiques quand vous +d\'efinissez des paires de macros, une dans laquelle +d\'ebute une construction d\'elimit\'ee par accolade (pas n\'ecessairement un groupe) +et l'autre dans laquelle ce termine cette construction. +^^{macros//utiliser \b\tt\\bgroup\e\ et \b\tt\\egroup\e\ dans des} +Vous ne pouvez pas d\'efinir de telles macros en utilisant des accolades ordinaires---si vous essayez, +vos d\'efinitions de macro contiendront des accolades non appair\'ees +et seront de ce fait inacceptables par \TeX. +Normalement vous ne devez utilisez ces commandes que quand vous ne pouvez utiliser +d'accolades ordinaires. + +\example +Braces define the {\it boundaries\/} of a group. +| +\produces +Braces define the {\it boundaries\/} of a group. +\nextexample +\def\a{One \vbox\bgroup} +% You couldn't use { instead of \bgroup here because +% TeX would not recognize the end of the macro +\def\enda#1{{#1\egroup} two} +% This one is a little tricky, since the \egroup actually +% matches a left brace and the following right brace +% matches the \bgroup. But it works!! +\a \enda{\hrule width 1in} +| +\produces +\def\a{One \vbox\bgroup} +% You couldn't use { instead of \bgroup here because +% TeX would not recognize the end of the macro +\def\enda#1{{#1\egroup} two} +% This one is a little tricky, since the \egroup actually +% matches a left brace and the following right brace +% matches the \bgroup. But it works! +\a \enda{\hrule width 1in} +\endexample +\enddesc + +\begindesc +\cts global {} +\explain +Cette commande rend la d\'efinition +ou l'\minref{assignement} suivant \minref{global} \seeconcept{global} +pour qu'il devienne effectif ind\'ependamment des fronti\`eres du \minref{groupe}. +Vous pouvez appliquer un pr\'efix |\global| \`a toute sorte de d\'efinition +ou \minref{assignement}, +en incluant une d\'efinition de \minref{macro} ou un assignement de \minref{registre}. +\example +{\global\let\la = \leftarrow} +$a \la b$ +| +\produces +% for safety's sake we fake this one! +\let\la = \leftarrow +$a \la b$ +\endexample +\enddesc + +\begindesc +\cts globaldefs {\param{nombre}} +\explain +Ce param\`etre contr\^ole si \TeX\ prend ou non des d\'efinitions +et autres assignements comme \'etant +\minref{globaux}~: +\ulist +\li Si |\globaldefs| est \`a z\'ero (comme il l'est par d\'efaut), une d\'efinition est globale +si et seulement si il est pr\'ec\'ed\'e par |\global| soit explicitement soit implicitement. +(Les commandes ^|\gdef| et ^|\xdef| (\xref\gdef) ont un pr\'efixe +|\global| implicite). +\li Si |\globaldefs| est sup\'erieur \`a z\'ero, tout assignement et +d\'efinition est implicitement pr\'efix\'e par ^|\global|. +\li Si |\globaldefs| est inf\'erieur \`a z\'ero, tout pr\'efixe ^|\global| est ignor\'e. +\endulist +\enddesc + +\begindesc +\margin{Order of {\tt\\aftergroup} and {\tt\\afterassignment} changed.} +\cts aftergroup {\<token>} +\explain +Quand \TeX\ rencontre cette commande dans une entr\'ee, +il sauve \<token>. +Apr\`es la fin du \minref{groupe} courant, +il r\'eins\`ere \<token> dans l'entr\'ee et le d\'eveloppe. +Si un groupe contient plusieurs |\aftergroup|s, les tokens correspondants +sont \emph{tous} ins\'er\'es suivant la fin du groupe, dans l'ordre +dans lequel ils apparaissent \`a l'origine. + +L'exemple qui suit vous montre comment vous pouvez utiliser |\after!-group| +pour diff\'erer le traitement d'un token que vous avez g\'en\'er\'e dans un +\minref{test conditionnel}. +\example +\def\neg{negative} \def\pos{positive} +% These definitions are needed because \aftergroup applies +% to a single token, not to a sequence of tokens or even +% to a brace-delimited text. +\def\arith#1{Is $#1>0$? \begingroup + \ifnum #1>-1 Yes\aftergroup\pos + \else No\aftergroup\neg\fi + , it's \endgroup. } +\arith 2 +\arith {-1} +| +\produces +\def\neg{negative} \def\pos{positive} +% These definitions are needed because \aftergroup applies +% to a single token, not a sequence of tokens or even +% a group. +\def\arith#1{Is $#1>0$? \begingroup + \ifnum #1>-1 Yes\aftergroup\pos + \else No\aftergroup\neg\fi + , it's \endgroup. } +\arith 2 +\arith {-1} +\endexample +\eix^^{groupes} +\enddesc + +\begindesc +\cts afterassignment {\<token>} +\explain +Quand \TeX\ rencontre cette commande il sauve \<token> dans un endroit sp\'ecial. +Apr\`es qu'il ait ex\'ecut\'e l'\minref{assignment} suivant, il ins\`ere +\<token> dans l'entr\'ee et le d\'eveloppe. Si vous appelez |\afterassignment| +plus d'une fois avant un assignement, seul le dernier appel a un effet. +Une utilisation de |\afterassignment| +est dans l'\'ecriture de \minref{macro}s pour des commandes devant \^etre \'ecrites +sous la forme d'assignements, comme dans l'exemple suivant. + +Voir la \knuth{page~279}{325} pour un description pr\'ecise +du fonctionnement d'|\afterassignment|. +\example +\def\setme{\afterassignment\setmeA\count255} +\def\setmeA{$\number\count255\advance\count255 by 10 + +10=\number\count255$} +Some arithmetic: \setme = 27 +% After expanding \setme, TeX sets \count255 to 27 and +% then calls \setmeA. +| +\produces +\def\setme{\afterassignment\setmeA\count255} +\def\setmeA{$\number\count255\advance\count255 by 10 ++10=\number\count255$} +Some arithmetic: \setme = 27 +% After expanding \setme, TeX sets \count255 to 27 and +% then calls \setmeA. +\endexample +\enddesc + + +%========================================================================== +\section {Macros} + +%========================================================================== +\subsection {D\'efinir des macros} + +\begindesc +\bix^^{macros} +\bix^^{macros//d\'efinir des} +\xrdef{mac1}% begin the section on macros +% +\cts def {\<s\'equence de contr\^ole> \<texte de param\`etre> \rqbraces{\<texte de remplacement>}} +\explain +Cette commande d\'efinit \<s\'equence de contr\^ole> comme une \minref{macro} avec les +\<texte de param\`etre> et \<texte de remplacement> sp\'ecifi\'es. +Voir \xrefpg{macro} pour une explication compl\`ete sur la fa\c con d'\'ecrire une +d\'efinition de macro. +\example +\def\add#1+#2=?{#1+#2&= + \count255=#1 \advance\count255 by #2 \number\count255\cr} +$$\eqalign{ + \add 27+9=? + \add -5+-8=?}$$ +| +\dproduces +\def\add#1+#2=?{#1+#2&= + \count255=#1 \advance\count255 by #2 \number\count255\cr} +$$\eqalign{ + \add 27+9=? + \add -5+-8=?}$$ +\endexample +\enddesc + +\begindesc +\cts edef {\<s\'equence de contr\^ole> \<texte de param\`etre> \rqbraces{\<texte de remplacement>}} +\explain +Cette commande d\'efinit une macro de la m\^eme mani\`ere g\'en\'erale que |\def|. +La diff\'erence est que \TeX\ d\'eveloppe le \<texte de remplacement> +d'un |\edef| imm\'ediatement (mais sans rien ex\'ecuter). +Ainsi toutes d\'efini\-tions du \<texte de remplacement> sont d\'evelopp\'ees, mais +des assignements et commandes qui produisent des choses telles que bo\^\i tes et +des ressorts sont laiss\'es tels quels. Par exemple, une commande |\hbox| dans +le \<texte de remplacement> d'un |\edef| reste comme une commande et n'est pas +transform\'ee en une bo\^\i te quand \TeX\ ex\'ecute la d\'efinition. +Il n'est pas toujours \'evident de savoir ce qui est d\'evelopp\'e et ce qui ne l'est pas, mais vous +trouverez une liste compl\`ete des s\'equences de contr\^ole d\'eveloppables sur les +\knuth{pages~212--215}{249--252}. + +Vous pouvez inhiber le d\'eveloppement d'une s\'equence de contr\^ole qui devrait +\^etre d\'evelopp\'ee en utilisant |\no!-expand| (\xref\noexpand). ^^|\noexpand| +Vous pouvez diff\'erer le d\'eveloppement d'une s\'equence de contr\^ole en utilisant la commande +^|\expandafter| (\xref\expandafter). + +Les commandes |\write|, |\message|, |\errmessage|, |\wlog| et |\csname| +d\'eveloppent leurs +listes de token en utilisant les m\^eme r\`egles que |\edef| utilise pour d\'evelopper son +texte de remplacement. +^^|\write//d\'evelopp\'e par les r\`egles d'{\tt\\edef}| +^^|\message//d\'evelopp\'e par les r\`egles d'{\tt\\edef}| +^^|\errmessage//d\'evelopp\'e par les r\`egles d'{\tt\\edef}| +^^|\wlog//d\'evelopp\'e par les r\`egles d'{\tt\\edef}| +^^|\csname//d\'evelopp\'e par les r\`egles d'{\tt\\edef}| +\example +\def\aa{xy} \count255 = 1 +\edef\bb{w\ifnum \count255 > 0\aa\fi z} +% equivalent to \def\bb{wxyz} +\def\aa{} \count255 = 0 % leaves \bb unaffected +\bb +| +\produces +\def\aa{xy} \count255 = 1 +\edef\bb{w\ifnum \count255 > 0\aa\fi z} +% equivalent to \def\bb{wxyz} +\def\aa{} \count255 = 0 % leaves \bb unaffected +\bb +\endexample +\enddesc + +\begindesc +\cts gdef {\<s\'equence de contr\^ole> \<texte de param\`etre> \rqbraces{\<texte de remplacement>}} +\explain +Cette commande est \'equivalente \`a |\global\def|. +\enddesc + +\begindesc +\cts xdef {\<s\'equence de contr\^ole> \<texte de param\`etre> \rqbraces{\<texte de remplacement>}} +\explain +Cette commande est \'equivalente \`a |\global\edef|. +\enddesc + +\begindesc +\cts long {} +\explain +Cette commande est utilis\'ee comme pr\'efixe d'une d\'efinition de \minref{macro}. +Elle dit \`a \TeX\ que les arguments de la macro peuvent inclure +des tokens |\par| (\xref{\@par}), qui indiquent normalement la fin d'un paragraphe. +^^|\par//dans des arguments de macro| +Si \TeX\ +essaye de d\'evelopper une macro d\'efinie sans |\long| et qu'un des arguments +de la macro comprend un token |\par|, +\TeX\ se plaindra par un ``runaway argument''. Le but +de ce comportement est de vous fournir des protections contre des arguments de +macro non termin\'es. +|\long| vous donne un moyen d'outrepasser la protection. +\example +\long\def\aa#1{\par\hrule\smallskip#1\par\smallskip\hrule} +\aa{This is the first line.\par +This is the second line.} +% without \long, TeX would complain +| +\produces +\medskip +\long\def\aa#1{\par\hrule\smallskip#1\par\smallskip\hrule} +\aa{This is the first line.\par +This is the second line.} +% without \long, TeX would complain +\endexample +\enddesc + +\begindesc +\cts outer {} +\explain +\null ^^{outer} +Cette commande est utilis\'ee comme pr\'efixe d'une d\'efinition de \minref{macro}. +Elle dit \`a \TeX\ que la macro est externe (\xref{outer}) +et ne peut pas \^etre utilis\'ee dans certains contextes. +Si la macro est utilis\'ee dans un contexte interdit, \TeX\ se plaindra. + +\example +\outer\def\chapterhead#1{% + \eject\topglue 2in \centerline{\bf #1}\bigskip} +% Using \chapterhead in a forbidden context causes an +% error message. +| +\endexample +\enddesc + +\begindesc +\cts chardef {\<s\'equence de contr\^ole>=\<charcode>} +\explain +^^{caract\`eres//d\'efinis par \b\tt\\chardef\e} +Cette commande d\'efinit \<s\'equence de contr\^ole> +comme \'etant \<charcode>. +Bien que |\chardef| soit plus souvent utilis\'ee pour d\'efinir des caract\`eres, vous pouvez aussi +l'utiliser pour donner un nom \`a un nombre dans la fourchette $0$--$255$ m\^eme +quand vous n'utilisez pas ce nombre comme un code de caract\`ere. +\example +\chardef\percent = `\% 21\percent, {\it 19\percent} +% Get the percent character in roman and in italic +| +\produces +\chardef\percent = `\% +21\percent, {\it 19\percent} +% You'll get the percent character in roman and in italic +\endexample +\enddesc + +\begindesc +^^{caract\`eres math\'ematiques} +^^{mathcodes} +\cts mathchardef {\<s\'equence de contr\^ole>=\<mathcode>} +\explain +Cette commande d\'efinit la \<s\'equence de contr\^ole> comme un caract\`ere math\'ematique +avec le \minrefs{mathcode}\<mathcode> donn\'e. +La s\'equence de contr\^ole ne sera l\'egale qu'en mode math\'ematique. +\example +\mathchardef\alphachar = "010B % As in plain TeX. +$\alphachar$ +| +\produces +\mathchardef\alphachar = "010B % As in plain TeX. +$\alphachar$ +\endexample +\eix^^{macros//d\'efinir des} +\enddesc + +%========================================================================== +\subsection {Autre d\'efinitions} + +\begindesc +\cts let {\<s\'equence de contr\^ole> = \<token>} +\explain +^^{s\'equences de contr\^ole//d\'efinies avec \b\tt\\let\e} +\minrefs{token} +Cette commande fait que +\<s\'equence de contr\^ole> prend la signification actuelle de \<token>. +M\^eme si vous red\'efinissez \<token> plus tard, la signification de \<s\'equence de contr\^ole> +ne changera pas. Bien que \<token> soit le plus souvent une s\'equence de contr\^ole, +il peut aussi \^etre un token de \minref{caract\`ere}. +\enddesc + +\begindesc +\cts futurelet {\<s\'equence de contr\^ole> \<token$_1$> \<token$_2$>} +\explain +Cette commande dit \`a \TeX\ de donner \`a \<token$_2$> la signification de +\<s\'equence de contr\^ole> (comme elle le serait avec |\let|) et ensuite +d'ex\'ecu\-ter \<token$_1$> et \<token$_2$> normalement. +|\futurelet| est pratique \`a la fin d'une d\'efinition de macro +parce qu'elle vous donne un moyen de regarder au-del\`a du token que \TeX\ +est en train d'ex\'ecuter avant de continuer. +\example +\def\predict#1{\toks0={#1}\futurelet\next\printer} +% \next will acquire the punctuation mark after the +% argument to \predict +\def\printer#1{A \punc\ lies ahead for \the\toks0. } +\def\punc{% + \ifx\next;semicolon\else + \ifx\next,comma\else + ``\next''\fi\fi} +\predict{March}; \predict{April}, \predict{July}/ +| +\produces +\def\predict#1{\toks0={#1}\futurelet\next\printer} +\def\printer#1{A \punc\ lies ahead for \the\toks0. } +\def\punc{% + \ifx\next;semicolon\else + \ifx\next,comma\else + ``\next''\fi\fi + } +\predict{March}; +\predict{April}, +\predict{July}/ +\endexample +\enddesc + +\begindesc +\cts csname {\<liste de token> {\bt \\endcsname}} +\xrdef{\endcsname} +\explain +Cette commande produit une s\'equence de contr\^ole \`a partir de \<liste de token>. +Elle procure un moyen de synth\'etiser des s\'equences de contr\^ole, +en incluant celles que vous ne pouvez normalement pas \'ecrire. +\<liste de token> peut elle-m\^eme inclure des s\'equences de contr\^ole~: +elle est d\'eveloppable de la m\^eme mani\`ere que le texte de remplacement d'une +d\'efinition |\edef| (\xref\edef). +Si le d\'eveloppement final +produit quelque chose qui n'est pas un caract\`ere, \TeX\ se plaindra. +|\csname| transforme une liste de tokens en s\'equence de contr\^ole~; +vous pouvez faire l'inverse avec ^|\string| \ctsref\string. +\example +\def\capTe{Te} +This book purports to be about \csname\capTe X\endcsname. +| +\produces +\def\capTe{Te} +This book purports to be about \csname\capTe X\endcsname. +\endexample +\enddesc + +%========================================================================== +\subsection {Contr\^oler le d\'eveloppement} + +\begindesc +\bix^^{macros//contr\^oler leur d\'eveloppement} +\cts expandafter {\<token$_1$> \<token$_2$>} +\explain +Cette commande dit \`a \TeX\ de d\'evelopper \<token$_1$> en accord avec ses r\`egles +de d\'eveloppement de \minref{macro} \emph{apr\`es} avoir d\'evelopp\'e \<token$_2$> +d'un niveau. C'est pratique quand \<token$_1$> est quelque chose comme `|{|' +^^|{//avec {\tt\\expandafter}| +ou ^|\string| qui inhibe les expansions de \<token$_2$>, +mais que vous voulez d\'evelopper \<token$_2$> quand m\^eme. +\example +\def\aa{xyz} +\tt % Use this font so `\' prints that way. +[\string\aa] [\expandafter\string\aa] +[\expandafter\string\csname TeX\endcsname] +| +\produces +\def\aa{xyz} +\tt +[\string\aa] [\expandafter\string\aa] +[\expandafter\string\csname TeX\endcsname] +\endexample +\enddesc + +\begindesc +\cts noexpand {\<token>} +\explain +Cette commande demande \`a \TeX\ de +supprimer le d\'eveloppement de \<token> si \<token> est une +\minref{s\'equence de contr\^ole} qui peut \^etre d\'evelopp\'ee. +Si \<token> ne peut pas \^etre d\'evelopp\'ee, c'est-\`a-dire, si c'est une lettre, +\TeX\ agit comme si le |\noexpand| n'\'etait pas l\`a +et ex\'ecute \<token> normalement. +En d'autres mots le d\'eveloppement de `|\noexpand|\<token>' +est simplement \<token> quoi que \<token> devienne. +\example +\def\bunny{rabbit} +\edef\magic{Pull the \noexpand\bunny\ out of the hat!! } +% Without \noexpand, \bunny would always be replaced +% by `rabbit' +\let\oldbunny=\bunny \def\bunny{lagomorph} \magic +\let\bunny=\oldbunny \magic +| +\produces +\def\bunny{rabbit} +\edef\magic{Pull the \noexpand\bunny\ out of the hat! } +% Without \noexpand, \bunny would always be replaced +% by `rabbit' +\let\oldbunny=\bunny \def\bunny{lagomorph} \magic +\let\bunny=\oldbunny \magic +\endexample +\enddesc + +\begindesc +\cts the {\<token>} +\explain +Cette commande se d\'eveloppe g\'en\'eralement en une liste de tokens de \minref{caract\`ere}s +que repr\'esente \<token>. \<token> peut \^etre parmi ce qui suit~: + +\ulist\compact +\li un \minref{param\`etre} \TeX, par exemple, |\parindent| ou |\deadcycles| +^^{param\`etres//utiliser \b\tt\\the\e\ avec} +\li un \minref{registre}, par exemple, |\count0| +^^{registres//avec \b\tt\\the\e} +\margin{Item for special registers removed} +\li un code associ\'e avec un caract\`ere entr\'e, par exemple, |\catcode`(| +\li un param\`etre de police, par exemple, |\fontdimen3\sevenbf| +\li le ^|\hyphenchar| ou le ^|\skewchar| d'une police, +|\skewchar\teni|, par exemple +\li ^|\lastpenalty|, ^|\lastskip| ou ^|\lastkern| (valeurs d\'eriv\'ees du +der\-nier \'el\'ement d'une liste horizontale \minrefs{horizontal list} +ou \minref{liste verticale} courante) +\li une s\'equence de contr\^ole d\'efinie par ^|\chardef| ou +^|\mathchardef| +\endulist + +\noindent +De plus, |\the| peut d\'evelopper des tokens non-caract\`ere dans les deux cas +suivants~: +\ulist\compact +\li |\the| \<police>, qui d\'eveloppe la s\'equence de contr\^ole la plus r\'ecem\-ment +d\'efinie qui s\'electionne la m\^eme police que la s\'equence de contr\^o\-le \<police> +\li |\the| \<variable de token>, qui d\'eveloppe une copie de la valeur de la +variable, par exemple, |\the\everypar| +\endulist + +Voir les \knuth{pages~214--215}{251} pour une description plus d\'etaill\'ee de ce que +|\the| fait selon les cas. +\example +The vertical size is currently \the\vsize. +The category code of `(' is \the\catcode `(. +| +\produces +The vertical size is currently \the\vsize. +The category code of `(' is \the\catcode `(. +\endexample +\enddesc + +{\tighten +\see \headcit{Convertir l'information en tokens}{convert} ainsi que la commande +|\showthe| (\xref\showthe). +\par} + +\eix^^{macros//contr\^oler leur d\'eveloppement} + +%========================================================================== +\subsection {Tests conditionnels} + +\begindesc +\xrdef{conds} +\bix^^{tests conditionnels} +% +\ctspecial if {\<token$_1$> \<token$_2$>}\ctsxrdef{@if} +\explain +{\emergencystretch=1em +Cette commande teste si \<token$_1$> et \<token$_2$> +ont le m\^eme code de \minref{caract\`ere}, ind\'ependamment de leurs +\minref{codes de cat\'egorie}. +Avant d'ex\'ecuter le test, \TeX\ d\'eveloppe les tokens suivant le |\if| +jusqu'\`a ce qu'il obtienne deux tokens qui ne peuvent se d\'evelopper plus. +Ces deux tokens deviennent \<token$_1$> et \<token$_2$>. +Le d\'eveloppement +inclut le remplacement d'une s\'equence de contr\^ole |\let| \'egale \`a un token de caract\`ere +par ce token de caract\`ere. +Une \minref{s\'equence de contr\^ole} qui ne peut plus se d\'evelopper est +consid\'er\'ee comme ayant un code de caract\`ere $256$.\par} +\example +\def\first{abc} +\if\first true\else false\fi; +% ``c'' is left over from the expansion of \first. +% It lands in the unexecuted ``true'' part. +\if a\first\ true\else false\fi; +% Here ``bc'' is left over from the expansion of \first +\if \hbox\relax true\else false\fi +% Unexpandable control sequences test equal with ``if'' +| +\produces +\def\first{abc} +\if\first true\else false\fi; +% ``c'' is left over from the expansion of \first. +% It lands in the unexecuted ``true'' part. +\if a\first\ true\else false\fi; +% Here ``bc'' is left over from the expansion of \first +\if \hbox\relax true\else false\fi +% Unexpandable control sequences test equal with ``if'' +\endexample +\enddesc + +\begindesc +\ctspecial ifcat {\<token$_1$> \<token$_2$>}\ctsxrdef{@ifcat} +\explain +^^{codes de cat\'egorie//tester} +Cette commande teste si \<token$_1$> et \<token$_2$> +ont le m\^eme \minref{code de cat\'ego\-rie}. +Avant d'ex\'ecuter le test, \TeX\ d\'eveloppe les tokens suivant le |\if| +jusqu'a ce qu'il obtienne deux tokens qui ne puissent plus se d\'evelopper. +Ces deux tokens deviennent \<token$_1$> et \<token$_2$>. +Le d\'eveloppement +inclut le remplacement d'une s\'equence de contr\^ole |\let| \'egale \`a un token de caract\`ere +par ce token de caract\`ere. +Une \minref{s\'equence de contr\^ole} qui ne peut plus se d\'evelopper est +consid\'er\'ee comme ayant un code de caract\`ere $16$. +\example +\ifcat axtrue\else false\fi; +\ifcat ]}true\else false\fi; +\ifcat \hbox\day true\else false\fi; +\def\first{12345} +\ifcat (\first true\else false\fi +% ``2345'' lands in the true branch of the test +| +\produces +\ifcat axtrue\else false\fi; +\ifcat ]}true\else false\fi; +\ifcat \hbox\day true\else false\fi; +\def\first{12345} +\ifcat (\first true\else false\fi +% ``2345'' lands in the true branch of the test +\endexample +\enddesc + +\begindesc +\ctspecial ifx {\<token$_1$> \<token$_2$>}\ctsxrdef{@ifx} +\explain +Cette commande teste si \<token$_1$> et \<token$_2$> s'accordent. +Contrairement \`a |\if| et |\ifcat|, |\ifx| \emph{ne} d\'eveloppe \emph{pas} les tokens +suivant |\ifx|, donc \<token$_1$> et \<token$_2$> sont les deux +tokens imm\'ediatement apr\`es |\ifx|. +Il y a trois cas~: +\olist +\li Si un token est une \minref{macro} et pas l'autre, +les tokens ne s'accordent pas. +\li Si aucun token n'est une macro, Les tokens s'accordent si~: +\olist +\li les deux tokens sont des caract\`eres (ou des s\'equences de contr\^ole d\'ecrivant des caract\`eres) et +que leurs codes de \minref{caract\`ere} et de \minref{cat\'egorie} s'accordent, ou +\li Les deux tokens font r\'ef\'erence \`a la m\^eme commande \TeX, police, etc. +\endolist +\li Si les deux tokens sont des macros, les tokens s'accordent si~: +\olist\compact +\li leurs d\'eveloppements de ``premier niveau'', c'est-\`a-dire, +leurs textes de remplacement, sont identiques, et +\li Ils ont le m\^eme statut concernant ^|\long| (\xref\long) +et ^|\outer| (\xref\outer). +\endolist +Notez en particulier que \emph{deux s\'equences de contr\^ole non d\'efinies +s'accordent}. +\endolist +\noindent +Ce teste est g\'en\'eralement plus utile que |\if|. +\example +\ifx\alice\rabbit true\else false\fi; +% true since neither \rabbit nor \alice is defined +\def\a{a}% +\ifx a\a true\else false\fi; +% false since one token is a macro and the other isn't +\def\first{\a}\def\second{\aa}\def\aa{a}% +\ifx \first\second true\else false\fi; +% false since top level expansions aren't the same +\def\third#1:{(#1)}\def\fourth#1?{(#1)}% +\ifx\third\fourth true\else false\fi +% false since parameter texts differ +| +\produces +\ifx\alice\rabbit true\else false\fi; +% true since neither \rabbit nor \alice is defined +\def\a{a}% +\ifx a\a true\else false\fi; +% false since one token is a macro and the other isn't +\def\first{\a}\def\second{\aa}\def\aa{a}% +\ifx \first\second true\else false\fi; +% false since top level expansions aren't the same +\def\third#1:{(#1)}\def\fourth#1?{(#1)}% +\ifx\third\fourth true\else false\fi +% false since parameter texts differ +\endexample +\enddesc + +\begindesc +\ctspecial ifnum {\<number$_1$> \<relation> \<number$_2$>}\ctsxrdef{@ifnum} +\explain +^^{nombres//comparer} +Cette commande teste si \<number$_1$> et \<number$_2$> +satisfont \<relation>, qui peut \^etre soit `|<|', `|=|' ou `|>|'. +Les nombres peuvent \^etre des constantes telles que |127|, des registres de compteur tels que +|\pageno| ou |\count22| ou des param\`etres num\'eriques tels que |\hbadness|. +Avant d'ex\'ecuter le test, \TeX\ d\'eveloppe les tokens suivant le |\ifnum| +jusqu'a ce qu'il obtienne une s\'equence de tokens ayant la forme \<number$_1$> +\<relation> \<number$_2$> suivi par un token +qui ne peut \^etre une partie de \<number$_2$>. +\example +\count255 = 19 \ifnum \count255 > 12 true\else false\fi +| +\produces +\count255 = 19 \ifnum \count255 > 12 true\else false\fi +\endexample +\enddesc + +\begindesc +\ctspecial ifodd {\<nombre>}\ctsxrdef{@ifodd} +\explain +^^{nombres//tester la parit\'e} +Cette commande teste si \<nombre> est impair. +Avant d'ex\'ecuter le test, \TeX\ d\'eveloppe les tokens suivant le |\ifodd| +jusqu'a ce qu'il obtienne une s\'equence de tokens ayant la forme \<nombre>, +suivi par un token qui ne peut \^etre une partie de \<nombre>. +\example +\count255 = 19 +\ifodd 5 true\else false\fi +| +\produces +\ifodd 5 true\else false\fi +\endexample +\enddesc + +\begindesc +\ctspecial ifdim {\<dimen$_1$> \<relation> \<dimen$_2$>}\ctsxrdef{@ifdim} +\explain +^^{dimensions//comparer} +Cette commande teste si \<dimen$_1$> et \<dimen$_2$> +satisfont \<relation>, qui doit \^etre soit `|<|', `|=|' ou `|>|'. +Les dimensions peuvent \^etre des constantes telles que |1in|, des registres de dimension +tels que |\dimen6| ou des para\-m\`etres de dimension tels que |\parindent|. +Avant d'ex\'ecuter le test, \TeX\ d\'eveloppe les tokens suivant le |\ifdim| +jusqu'a ce qu'il obtienne une s\'equence de tokens ayant la forme +\<dimen$_1$> \<relation> \<dimen$_2$> +suivi par un token qui ne peut \^etre une partie de \<dimen$_2$>. + +\example +\dimen0 = 1000pt \ifdim \dimen0 > 3in true\else false\fi +| +\produces +\dimen0 = 1000pt \ifdim \dimen0 > 3in true\else false\fi +\endexample +\enddesc + +\begindesc +\ctspecial ifhmode {}\ctsxrdef{@ifhmode} +\ctspecial ifvmode {}\ctsxrdef{@ifvmode} +\ctspecial ifmmode {}\ctsxrdef{@ifmmode} +\ctspecial ifinner {}\ctsxrdef{@ifinner} +\explain +^^{mode horizontal//tester} +^^{mode vertical//tester} +^^{mode math\'ematique//tester} +^^{mode restreint//tester} +Ces commandes testent dans quel \minref{mode} est \TeX~: +\ulist +\li |\ifhmode| est vrai si \TeX\ est en mode horizontal ordinaire ou r\'eduit. +\li |\ifvmode| est vrai si \TeX\ est en mode vertical ordinaire ou interne. +\li |\ifmmode| est vrai si \TeX\ est en mode math\'ematique de texte ou d'affichage. +\li |\ifinner| est vrai si \TeX\ est dans un mode ``interne''~: +horizontal r\'eduit, vertical interne ou math\'ematique de texte. +\endulist +\example +\def\modes{{\bf + \ifhmode + \ifinner IH\else H\fi + \else\ifvmode + \ifinner \hbox{IV}\else \hbox{V}\fi + \else\ifmmode \hbox{M}\else + error\fi\fi\fi}} +Formula $\modes$; then \modes, + \hbox{next \modes\ and \vbox{\modes}}. +\par\modes +| +\produces +\def\modes{{\bf + \ifhmode + \ifinner IH\else H\fi + \else\ifvmode + \ifinner \hbox{IV}\fi + \else\ifmmode \hbox{M}\else + error\fi\fi\fi}} +Formula $\modes$; then \modes, + \hbox{next \modes\ and \vbox{\modes}}. +\par\noindent{\bf V} % sorry folks, we have to fake this one +\endexample +\enddesc + +\begindesc +\ctspecial ifhbox {\<registre>}\ctsxrdef{@ifhbox} +\ctspecial ifvbox {\<registre>}\ctsxrdef{@ifvbox} +\ctspecial ifvoid {\<registre>}\ctsxrdef{@ifvoid} +\explain +^^{hbox//tester} +^^{vbox//tester} +^^{\boites//tester si elle est vide} +Ces commandes testent le contenu du +registre de bo\^\i te num\'ero \<reg\-ister>. +Soit \<registre> \`a $n$. Alors~: +\ulist +\li |\ifhbox| est vrai si |\box|$\,n$ est une \minref{hbox}. +\li |\ifvbox| est vrai si |\box|$\,n$ est une \minref{vbox}. +\li |\ifvoid| est vrai si |\box|$\,n$ est vide, c'est-\`a-dire, ne contient pas +de bo\^\i te. +\endulist +\example +\setbox0 = \vbox{} % empty but not void +\setbox1 = \hbox{a} +\setbox2 = \box1 % makes box1 void +\ifvbox0 true\else false\fi; +\ifhbox2 true\else false\fi; +\ifvoid1 true\else false\fi +| +\produces +\setbox0 = \vbox{} +\setbox1 = \hbox{a} +\setbox2 = \box1 % empties box1 +\ifvbox0 true\else false\fi; +\ifhbox2 true\else false\fi; +\ifvoid1 true\else false\fi +\endexample +\enddesc + +\begindesc +\ctspecial ifeof {\<nombre>}\ctsxrdef{@ifeof} +\explain +^^{fin de fichier, tester} +\minrefs{file} +Cette commande teste un flux d'entr\'ee de fin de fichier. +Elle est vraie si le flux d'entr\'ee \<nombre> n'a pas \'et\'e ouvert, +ou a \'et\'e ouvert et que le fichier associ\'e a \'et\'e enti\`erement lu +(ou n'existe pas). +\enddesc + +\begindesc +\ctspecial ifcase +{\<nombre>\<texte du cas$_0$> {\bt \\or }\<texte du cas$_1$> {\bt \\or} + $\ldots$ {\bt \\or} \<texte du cas$_n$>\hfil\break +\hglue 3pc{\bt \\else} \<texte alternatif> {\bt \\fi}} +\ctsxrdef{@ifcase} +\ctsxrdef{@or} +\explain +^^{test de cas} +Cette commande introduit un test avec des cas multiples num\'erot\'es. +Si \<nom\-bre> a la valeur $k$, \TeX\ d\'eveloppera \<texte de cas$_k$> s'il +existe et \<texte alternatif> autrement. Vous pouvez omettre le |\else|---% +dans ce cas, \TeX\ ne d\'eveloppera rien si aucun des cas n'est satisfait. +\example +\def\whichday#1{\ifcase #1<day 0>\or Sunday\or Monday% + \or Tuesday\or Wednesday\or Thursday\or Friday% + \or Saturday\else Nonday\fi + \ is day \##1. } +\whichday2 \whichday3 \whichday9 +| +\produces +\def\whichday#1{\ifcase #1<day 0>\or Sunday\or Monday% + \or Tuesday\or Wednesday\or Thursday\or Friday% + \or Saturday\else Nonday\fi + \ is day \##1. } +\whichday2 \whichday3 \whichday9 +\endexample +\enddesc + +\begindesc +\ctspecial iftrue {}\ctsxrdef{@iftrue} +\ctspecial iffalse {}\ctsxrdef{@iffalse} +\explain +Ces commandes sont \'equivalentes \`a des tests qui sont toujours vrai ou toujours +faux. Le principal usage de ces commandes est de d\'efinir des macros qui gardent +trace du r\'esultat d'un test. +\example +\def\isbigger{\let\bigger=\iftrue} +\def\isnotbigger{\let\bigger=\iffalse} +% These \let's MUST be buried in macros!! If they aren't, +% TeX erroneously tries to match them with \fi. +\def\test#1#2{\ifnum #1>#2 \isbigger\else\isnotbigger\fi} +\test{3}{6} +\bigger$3>6$\else$3\le6$\fi +| +\produces +\def\isbigger{\let\bigger=\iftrue} +\def\isnotbigger{\let\bigger=\iffalse} +% These \let's MUST be buried in macros! +% If they aren't, TeX erroneously tries to match them with \fi +\def\test#1#2{\ifnum #1>#2 \isbigger\else\isnotbigger\fi} +\test{3}{6} +\bigger$3>6$\else$3\le6$\fi +\endexample +\enddesc + +\begindesc +\ctspecial else {} \ctsxrdef{@else} +\explain +Cette commande introduit l'alternative ``faux'' d'un test conditionel. +\enddesc + +\begindesc +\ctspecial fi {} \ctsxrdef{@fi} +\explain +Cette commande termine le texte d'un test conditionel. +\enddesc + +\begindesc +\ctspecial newif {{\bt \\if}\<nom de test>}\ctsxrdef{@newif} +\explain +Cette commande nomme un trio de s\'equence de contr\^ole avec comme noms |\alpha!-true|, +|\alphafalse|, +et |\ifalpha|, o\`u |alpha| est \<test name>. +Vous pouvez les utiliser pour d\'efinir vos propres tests en +cr\'eant une variable logique qui enregistre des informations +true\slash false: +\ulist\compact +\li |\alphatrue| met la variable logique |alpha| \`a vrai. +\li |\alphafalse| met la variable logique |alpha| \`a faux +\li |\ifalpha| est un test conditionnel qui est vrai si la variable logique +|alpha| est vraie et faux autrement. +\endulist +La variable logique |alpha| n'existe pas r\'eellement, mais \TeX\ agit comme +si elle l'\'etait. Apr\`es |\newif\ifalpha|, la variable logique est initialis\'ee +\`a faux. + +|\newif| est un commande externe, donc vous ne pouvez l'utiliser dans une d\'efinition +de macro. +\example +\newif\iflong \longtrue +\iflong Rabbits have long ears. +\else Rabbits don't have long ears.\fi +| +\produces +\newif\iflong +\longtrue +\iflong Rabbits have long ears.\else Rabbits don't have long ears.\fi +\endexample +\eix^^{tests conditionnels} +\enddesc + + +%========================================================================== +\subsection {Actions r\'ep\'et\'ees} + +{\def\test{{\bt \\if}$\Omega$}% +\begindesc +\bix^^{actions r\'ep\'et\'ees} +\bix^^{boucles} +\cts loop {$\alpha$ {\test} $\beta$ {\bt \\repeat}} +\ctspecial repeat {}\ctsxrdef{@repeat} +\explain +Ces commandes procurent une construction de boucle pour \TeX. +Ici, $\alpha$ et $\beta$ sont des s\'equences de commandes arbitraires +et \test\ est un des tests conditionnels d\'ecrites dans +\headcit{Tests conditionnels}{conds}. +Le |\repeat| r\'ep\`ete le |\fi| correspondant au test, +donc vous n'aurez pas besoin d'\'ecrire un |\fi| explicite pour terminer le test. +Ni, malheureusement, associer un |\else| au test. +Si vous voulez utiliser le test dans le sens oppos\'e, vous devez +r\'earranger le test ou +d\'efinir un test auxiliaire avec |\newif| (voir au-dessus) et utiliser ce +test dans le sens que vous voulez (voir le second exemple ci-dessous). + +\TeX\ d\'eveloppe |\loop| comme suit~: +\olist +\li $\alpha$ est d\'evelopp\'e. +\li {\test} est ex\'ecut\'e. Si le r\'esultat est faux, la boucle est termin\'ee. +\li $\beta$ est d\'evelopp\'e. +\li Le cycle est r\'ep\'et\'e. +\endolist +\example +\count255 = 6 +\loop + \number\count255\ + \ifnum\count255 > 0 + \advance\count255 by -1 +\repeat +| +\produces +\count255 = 6 +\loop + \number\count255\ + \ifnum\count255 > 0 + \advance\count255 by -1 +\repeat +\nextexample +\newif\ifnotdone % \newif uses \count255 in its definition +\count255=6 +\loop + \number\count255\ + \ifnum\count255 < 1 \notdonefalse\else\notdonetrue\fi + \ifnotdone + \advance\count255 by -1 +\repeat +| +\produces +\newif\ifnotdone +\count255=6 +\loop + \number\count255\ + \ifnum\count255 < 1 \notdonefalse\else\notdonetrue\fi + \ifnotdone + \advance\count255 by -1 +\repeat +% +\eix^^{actions r\'ep\'et\'ees} +\eix^^{boucles} +% +\endexample +\enddesc +} % end scope of definition of \test + +%========================================================================== +\subsection {Ne rien faire} + +\begindesc +\cts relax {} +\explain +Cette commande demande \`a \TeX\ de ne rien faire. C'est utile dans un contexte o\`u +vous devez procurer une commande mais il n'y a rien que vous voulez que \TeX\ fasse. +\example +\def\medspace{\hskip 12pt\relax} +% The \relax guards against the possibility that +% The next tokens are `plus' or `minus'. +| + +\endexample +\enddesc + +\begindesc +\cts empty {} +\explain +Cette commande se d\'eveloppe en aucun tokens du tout. +Elle diff\`ere de |\relax| car elle dispara\^\i t apr\`es un d\'eveloppement de macro. +% +\xrdef{mac2}% end the section on macros +\eix^^{macros} +\enddesc + +%========================================================================== +\section {Registres} + +%========================================================================== +\subsection {Utiliser des registres} + +\begindesc +\bix^^{registres} +\makecolumns 11/2: +\cts count {\<registre> {\bt =} \<nombre>} +\cts dimen {\<registre> {\bt =} \<dimen>} +\cts skip {\<registre> {\bt =} \<glue>} +\cts muskip {\<registre> {\bt =} \<muglue>} +\cts toks {\<registre> {\bt =} \<token variable>} +\aux\cts toks {\<registre> {\bt =} \rqbraces{\<list. de tok.>}} +\aux\cts count {\<registre>} +\aux\cts dimen {\<registre>} +\aux\cts skip {\<registre>} +\aux\cts muskip {\<registre>} +\aux\cts toks {\<registre>} +\explain +^^{assignements//de registres} +Les six premi\`eres commandes list\'ees ici assignent quelque chose \`a un registre. +Les |=| dans les assignations sont optionnels. +Les cinq s\'equences de contr\^ole restantes ne sont pas de vraies commandes +car elles n'apparais\-sent que comme partie d'un argument. +Elles pr\'ecisent le contenu des registres sp\'ecifi\'es. +Bien que vous ne puissiez utiliser ces s\'equences de contr\^ole elles-m\^eme comme commandes +dans un texte, vous pouvez utili\-ser ^|\the| pour les convertir en texte +et ainsi pouvoir composer leurs valeurs. + +Vous pouvez nommer et r\'eserver de nouveaux registres +avec la commande ^|\newcount| et ses relatifs +(\xref{\@newcount}). +Utiliser ces commandes est un moyen s\^ur d'obtenir des registres qui +ne sont pas cens\'es avoir d'usages conflictuels. + +^^{registres count} +Un registre |\count| contient un entier, qui peut \^etre soit positif soit +n\'egatif. +Des entiers peuvent \^etre aussi grands que vous n'aurez probablement jamais besoin qu'ils soient.\footnote +{Voici le seul exercice du livre~: trouvez le plus grand entier +que \TeX\ acceptera.} +\TeX\ utilise les registres compteur $0$--$9$ pour garder trace des +num\'eros de page (voir la \knuth{page~119}{139}). +|\count255| est le seul registre compteur possible pour une utilisation +sans r\'eservation. +\example +\count255 = 17 \number\count255 +| +\produces +\count255 = 17 \number\count255 +\endexample + +\medskip\noindent +^^{registre dimension} +Un registre |\dimen| contient une dimension. +Les registres de |\dimen0| \`a |\dimen255| sont possibles +pour un brouillon. + +\example +\dimen0 = 2.5in +\hbox to \dimen0{$\Leftarrow$\hfil$\Rightarrow$} +| +\produces +\dimen0 = 2.5in +\hbox to \dimen0{$\Leftarrow$\hfil$\Rightarrow$} +\doruler{\8\8\8}3{in} +\endexample + +\medskip\noindent +^^{registres skip} +Un registre |\skip| contient les dimensions de ressort. +Diff\'erent d'un registre |\dimen|, il +enregistre un montant d'\'etirement et de r\'etr\'ecissement autant qu'une taille naturelle. +Les registres de |\skip0| \`a |\skip9| et |\skip255| peuvent \^etre +utilis\'es sans r\'eservation. + +\example +\skip2 = 2in +$\Rightarrow$\hskip \skip2 $\Leftarrow$ +| +\produces +\skip2 = 2in +$\Rightarrow$\hskip \skip2 $\Leftarrow$\par +\noindent\hphantom{$\Rightarrow$}\ruler{\8\8}2{in} +\endexample + +\medskip\noindent +^^{registres muskip} +Un registre |\muskip| est comme un registre |\skip|, +mais le ressort qu'il contient est toujours mesur\'ee en ^|mu| +\seeconcept{unit\'e math\'ematique}. +La taille d'un |mu| d\'epend de la police courante. +Par exemple, elle est normalement un peu +plus petite dans un exposant que dans un texte ordinaire. +Les registres de |\muskip0| \`a |\muskip9| et |\muskip255| peuvent \^etre +utilis\'es sans r\'eservation. + +\example +\muskip0 = 24mu % An em and a half, no stretch or shrink. +$\mathop{a \mskip\muskip0 b}\limits^{a \mskip\muskip0 b}$ +% Note the difference in spacing. +| +\produces +\muskip0 = 24mu % an em and a half +$\mathop{a \mskip\muskip0 b}\limits^{a \mskip\muskip0 b}$ +% Note the difference in spacing +\endexample + +\medskip\noindent +^^{registres token} +Vous pouvez assigner soit un token variable +(un registre ou un param\`etre) ou une liste de token +\`a un registre |\toks|. +Quand vous assignez une liste de token \`a un registre de token, +les tokens de la liste de token \emph{ne} sont \emph{pas} d\'evelopp\'es. + +Une fois que les tokens d'une liste de token ont \'et\'e ins\'er\'es dans un texte +en utilisant ^|\the|, ils sont +d\'evelopp\'es comme des tokens qui seraient lus directement. +Ils ont les codes de cat\'egorie qu'ils ont re\c cus quand \TeX\ les \`a vu +une premi\`ere fois dans la~\hbox{source}. + +\example +\toks0 = {the \oystereaters\ were at the seashore} +% This assignment doesn't expand \oystereaters. +\def\oystereaters{Walrus and Carpenter} +\toks1 = \toks0 +% the same tokens are now in \toks0 and \toks1 +Alice inquired as to whether \the\toks1. +| +\produces +\toks0 = {the \oystereaters\ were at the seashore} +% This assignment doesn't expand \oystereaters +\def\oystereaters{Walrus and Carpenter} +\toks1 = \toks0 +% the same tokens are now in \toks0 and \toks1 +Alice inquired as to whether \the\toks1. +\endexample +\enddesc + +\begindesc +\cts maxdimen {} +\explain +^^{dimensions//maximum} +Cette s\'equence de contr\^ole d\'esigne une \<dimen> qui est la +plus grande dimension acceptable par \TeX\ (environ 4,50 m\`etres). +Ce n'est pas une vraie commande parce qu'elle ne peut appara\^\i tre +que comme partie d'un argument d'une autre commande. +\example +\maxdepth = \maxdimen % Remove restrictions on \maxdepth. +| +\endexample +\enddesc + +\see |\advance| (\xref\advance), |\multiply|, +|\divide| (\xref\divide), |\set!-box|, |\box| (\xref\box). + +%========================================================================== +\subsection {Nommer et r\'eserver des registres, etc.} + +\begindesc +\bix^^{registres//r\'eserver} +\makecolumns 11/2: +\ctspecial newcount \ctsxrdef{@newcount} +\ctspecial newdimen \ctsxrdef{@newdimen} +\ctspecial newskip \ctsxrdef{@newskip} +\ctspecial newmuskip \ctsxrdef{@newmuskip} +\ctspecial newtoks \ctsxrdef{@newtoks} +\ctspecial newbox \ctsxrdef{@newbox} +\ctspecial newread \ctsxrdef{@newread} +\ctspecial newwrite \ctsxrdef{@newwrite} +\ctspecial newfam \ctsxrdef{@newfam} +\ctspecial newinsert \ctsxrdef{@newinsert} +\ctspecial newlanguage \ctsxrdef{@newlanguage} +\explain +Ces commandes +r\'eservent et nomment une entit\'e du type indiqu\'e~: +\ulist +{\tolerance = 5000 +\fontdimen3\the\font = 2\fontdimen3\the\font % allow spaces to stretch more +\li |\new!-count|, |\newdimen|, |\newskip|, |\new!-mu!-skip|, |\new!-toks|, +et |\new!-box| r\'eservent chacun un \minref{registre} du type indiqu\'e. +} +^^{registres count//r\'eserv\'es par \b\tt\\newcount\e} +^^{registres de dimension//r\'eserv\'es par \b\tt\\newdimen\e} +^^{registres skip//r\'eserv\'es par \b\tt\\newskip\e} +^^{registres muskip//r\'eserv\'es par \b\tt\\newmuskip\e} +^^{registres token//r\'eserv\'es par \b\tt\\newtoks\e} +^^{registres de \boite//r\'eserv\'es par \b\tt\\newbox\e} +\li |\newread| et |\newwrite| r\'eservent un flot d'entr\'ee et +de sortie \minrefs{input stream}\minrefs{output stream} +respectivement. +^^{flots d'entr\'ee//r\'eserv\'es par \b\tt\\newread\e} +^^{flots de sortie//r\'eserv\'es par \b\tt\\newwrite\e} +\li |\newfam| r\'eserve une \minref{famille} de police math\'ematique. +^^{famille//r\'eserv\'ee par \b\tt\\newfam\e} +\li |\newinsert| r\'eserve un caract\`ere d'insertion. +(R\'eserver un caract\`ere d'insertion entra\^\i ne r\'eserver plusieurs registres diff\'erents.) +^^{insertions//num\'eros r\'eserv\'es par \b\tt\\newinsert\e} +\li |\newlanguage| r\'eserve un jeu de motifs de c\'esure. +\endulist +Vous devez utiliser ces commandes \`a chaque fois que vous avez besoin d'une +de ces entit\'es, dans une r\'egion tr\`es locale, +pour \'eviter des conflits de num\'erotation. + +Il y a une diff\'erence importante entre ces commandes~: +\ulist +\li Les s\'equences de contr\^ole d\'efinies par +|\newcount|, |\newdimen|, |\newskip|, |\newmuskip| et |\newtoks| +d\'esignent chacune une entit\'e du type appropri\'e. +Par exemple, apr\`es la commande~: +\csdisplay +\newdimen\listdimen +| +la s\'equence de contr\^ole |\listdimen| peut \^etre utilis\'ee comme une dimension. +\li Les s\'equences de contr\^ole d\'efinies par +|\newbox|, |\newread|, |\new!-write|, |\newfam|, |\newinsert| +et |\newlanguage| \'evaluent chacune +le \emph{num\'ero} d'une entit\'e du type appropri\'e. +Par exemple, apr\`es la commande~: +\csdisplay +\newbox\figbox +| +La s\'equence de contr\^ole |\figbox| doit \^etre utilis\'ee en conjonction avec +une commande de type |\box|, par exemple~: +\csdisplay +\setbox\figbox = \vbox{!dots} +| +\endulist +\enddesc + +\begindesc +\cts countdef {\<s\'equence de contr\^ole> {\bt =} \<registre>} +\cts dimendef {\<s\'equence de contr\^ole> {\bt =} \<registre>} +\cts skipdef {\<s\'equence de contr\^ole> {\bt =} \<registre>} +\cts muskipdef {\<s\'equence de contr\^ole> {\bt =} \<registre>} +\cts toksdef {\<s\'equence de contr\^ole> {\bt =} \<registre>} +\explain +Ces commandes d\'efinissent \<s\'equence de contr\^ole> pour faire r\'ef\'erence au +\minref{registre} de la cat\'egorie indiqu\'ee dont le num\'ero est \<registre>. +Normalement vous devez utiliser les commandes du groupe pr\'ec\'edent +(|\newcount|, etc.) en pr\'ef\'erence \`a ces commandes pour \'eviter +des conflits de num\'ero. Les commandes du groupe pr\'ec\'edent sont +d\'efinies en termes de commandes \hbox{de ce groupe}. +\example +\countdef\hatters = 19 % \hatters now refers to \count19 +\toksdef\hares = 200 % \hares now refers to \toks200 +| +\endexample +\enddesc + +\see |\newif| (\xref{\@newif}), |\newhelp| (\xref{\@newhelp}). +\eix^^{registres//r\'eserver} + +%========================================================================== +\subsection {Faire de l'arithm\'etique dans des registres} + +\begindesc +\bix^^{arithm\'etique} +\bix^^{registres//arithm\'etique dans des} +% +\cts advance {\<registre compteur> {\bt by} \<nombre>} +\aux\cts advance {\<registre dimension> {\bt by} \<dimension>} +\aux\cts advance {\<registre saut> {\bt by} \<ressort>} +\aux\cts advance {\<registre muskip> {\bt by} \<muglue>} +\explain +Ces commandes ajoutent une quantit\'e compatible a un registre. Pour \<ressort> +ou \<muglue> les trois composants (valeur naturelle, \'etirement et r\'etr\'ecissement) +\minrefs{glue} sont ajout\'es. +Toutes les quantit\'es peuvent \^etre n\'egatives. +Pour ces calculs +(et autres assignements en fait), \<ressort> peut \^etre converti en une +\<dimension> en enlevant l'\'etirement et le r\'etr\'ecissement et une \<dimension> +peut \^etre convertie en \<nombre> en prenant sa valeur en points d'\'echelle +\seeconcept{dimension}. +Vous pouvez omettre le mot |by| dans ces commandes---\TeX\ les comprendra quand +m\^eme. +\example +\count0 = 18 \advance\count0 by -1 \number\count0\par +\skip0 = .5in \advance\skip0 by 0in plus 1in % add stretch +\hbox to 2in{a\hskip\skip0 b} +| +\produces +\count0 = 18 \advance\count0 by -1 \number\count0\par +\skip0 = .5in \advance\skip0 by 0in plus 1in % add stretch +\hbox to 2in{a\hskip\skip0 b} +\doruler{\8\8}2{in} +\endexample +\enddesc + +\begindesc +\cts multiply {\<registre> {\bt by} \<nombre>} +\cts divide {\<registre> {\bt by} \<nombre>} +\explain +Ces commandes multiplient et divisent la valeur de \<registre> +par \<nombre> (qui peut \^etre n\'egatif). +Le registre peut \^etre un registre ^|\count|, ^|\dimen|, ^|\skip| +ou ^|\muskip|. +Pour un registre ^|\skip| ou ^|\muskip| (\xref\skip), +les trois composantes du \minref{ressort} du registre sont modifi\'es. +Vous pouvez omettre le mot |by| dans ces commandes---\TeX\ les comprendra quand +m\^eme. + +Vous pouvez aussi obtenir un multiple d'une \<dimension> en la pr\'ec\'edant par un \<nombre> +\minrefs{number} +ou une constante d\'ecimale, par exemple, +|-2.5\dimen2|. +Vous pouvez aussi utiliser cette notation pour des \<ressort>, mais attention---le r\'esultat +est une \<dimension>, pas un \<ressort>. +Ainsi |2\baselineskip| donne une \<dimension> qui est deux fois la taille naturelle +de |\baselineskip|, sans \'etirement ni r\'etr\'ecissement. +\example +\count0 = 9\multiply \count0 by 8 \number\count0 ; +\divide \count0 by 12 \number\count0 \par +\skip0 = 20pt plus 2pt minus 3pt \multiply \skip0 by 3 +Multiplied value of skip0 is \the\skip0.\par +\dimen0 = .5in \multiply\dimen0 by 6 +\hbox to \dimen0{a\hfil b} +| +\produces +\count0 = 9\multiply \count0 by 8 \number\count0 ; +\divide \count0 by 12 \number\count0 \par +\skip0 = 20pt plus 2pt minus 3pt \multiply \skip0 by 3 +Multiplied value of skip0 is \the\skip0.\par +\dimen0 = .5in \multiply\dimen0 by 6 +\hbox to \dimen0{a\hfil b} +\doruler{\8\8\8}3{in} +\endexample + +\eix^^{arithm\'etique} +\eix^^{registres//arithm\'etique dans des} +\eix^^{registres} +\enddesc + +%========================================================================== +\section {Terminer l'ex\'ecution} + +\begindesc +^^{fin d'ex\'ecution} +\easy\ctspecial bye \ctsxrdef{@bye} +\explain +Cette commande dit \`a \TeX\ de remplir et produire la derni\`ere page, d'imprimer +toutes les \minref{insertion}s en suspens et de terminer l'ex\'ecution. +C'est le moyen usuel de terminer votre fichier source. +\enddesc + +\begindesc +\cts end {} +\explain +Cette commande dit \`a \TeX\ de produire la derni\`ere page et de terminer l'ex\'ecution. +Elle ne remplit pas la page, +donc il est pr\'ef\'erable d'utiliser |\bye| plut\^ot que |\end|. +\enddesc + +%========================================================================== +\section {Entr\'ee et sortie} + +%========================================================================== +\subsection {Op\'erations sur des fichiers d'entr\'ee} + +\begindesc +\bix^^{fichiers} +\bix^^{fichiers d'entr\'ee} +\easy\cts input {\<nom de fichier>} +\explain +\minrefs{file}\minrefs{file name} +Cette commande demande \`a \TeX\ de lire son entr\'ee \`a partir du fichier \<nom de fichier>. +Quand ce fichier est \'epuis\'e, \TeX\ retourne lire \`a partir du source d'entr\'ee +pr\'ec\'edent. Vous pouvez inclure des fichiers d'entr\'ee sur autant de niveaux que vous voulez +(dans les limites du raisonnable). + +Quand vous saisissez un grand document, c'est souvent une bonne id\'ee de +structurer votre fichier principal comme une suite de commandes |\input| faisant r\'ef\'erence +aux parties subsidiaires du document. De cette fa\c con, vous pouvez ex\'ecuter les +parties individuelles facilement quand vous travaillez sur des \'epreuves. C'est aussi une bonne +pratique de mettre toutes vos d\'efinitions de \minref{macro} dans un fichier s\'epar\'e et +appeler ce fichier avec une commande |\input| comme premi\`ere action de votre +fichier principal. + +\TeX\ utilise des r\`egles diff\'erentes pour balayer les noms de fichier que +pour lire les \minref{token}s en g\'en\'eral (voir \xref{nom de fichier}). +Si votre impl\'ementation attend des noms de fichier avec extensions (habituellement +pr\'ec\'ed\'ees par un point), alors \TeX\ procure l'extension par d\'efaut |.tex|. +\example +\input macros.tex +\input chap1 % equivalent to chap1.tex +| +\endexample +\enddesc + +\begindesc +\cts endinput {} +\explain +Cette commande dit \`a \TeX\ d'arr\^eter de lire l'entr\'ee du fichier courant +quand il rencontrera la prochaine fin de ligne. +\enddesc + +\begindesc +\cts inputlineno {} +\explain +Cette commande donne un nombre (pas une cha\^\i ne) donnant le num\'ero de ligne +de la ligne courante, devant \^etre le num\'ero qui appara\^\i trait dans un message d'erreur +si une erreur arrive \`a cette endroit. +\enddesc + +\begindesc +\cts openin {\<nombre> {\bt =} \<nom de fichier>} +\explain +Cette commande demande \`a \TeX\ d'ouvrir le fichier nomm\'e \<nom de fichier> +et de le rendre lisible via le flot d'entr\'ee d\'esign\'e par \<nombre>. +^^{flots d'entr\'ee//ouverture} +\<nombre> doit \^etre entre $0$ et $15$. +Une fois que vous avez ouvert un fichier et l'avez connect\'e \`a un flot d'entr\'ee, +vous pouvez lire le fichier en utilisant la commande |\read| +avec le num\'ero du flot d'entr\'ee. + +vous pouvez associer plus d'un flot d'entr\'ee avec le m\^eme +fichier. vous pouvez alors lire \`a plusieurs positions diff\'erentes dans +le fichier, une pour chaque flot d'entr\'ee. + +Vous devez allouer les num\'eros de flots pour |\openin| en utilisant +|\new!-read| (\xref{\@newread}). +\example +\newread\auxfile \openin\auxfile = addenda.aux +% \auxfile now denotes the number of this opening +% of addenda.aux. +| +\endexample +\enddesc + +\begindesc%\secondprinting{\vglue-.5\baselineskip\vskip0pt} +\cts closein {\<nombre>} +\explain +Cette commande demande \`a \TeX\ de fermer le \minref{flot d'entr\'ee} num\'erot\'e +\<nombre>, c'est-\`a-dire, +clore l'association entre le flot d'entr\'ee et son fichier. +Le flot d'entr\'ee avec ce num\'ero devient alors disponible pour \^etre utilis\'e avec un +fichier diff\'erent. +Vous devez fermer un flot d'entr\'ee une fois que vous avez fini d'utiliser son fichier. +\example +\closein\auxfile +| +\endexample +\enddesc + +\begindesc%\secondprinting{\vglue-.5\baselineskip\vskip0pt} +\cts read {\<nombre> {\bt to} \<s\'equence de contr\^ole>} +\explain +^^{flots d'entr\'ee//lecture avec \b\tt\\read\e} +^^{lire un fichier} +Cette commande demande \`a \TeX\ de lire une ligne du fichier +associ\'e avec le \minref{flot d'entr\'ee} +d\'esign\'e par \<nombre> et assigne les tokens de cette ligne \`a +\<s\'equence de contr\^ole>. La \minref{s\'equence de contr\^ole} devient alors une +\minref{macro} sans param\`etre. Aucun d\'eveloppement de macro ne prend place +durant l'op\'eration de lecture. Si la ligne contient des accolades ouvrantes +non appair\'ees, \TeX\ lira des lignes suppl\'ementaires jusqu'a ce que les accolades +soient toutes referm\'ees. Si \TeX\ atteint la fin du fichier sans fermer toutes les +accolades, il se plaindra. + +Si \<nombre> est plus grand que $15$ ou n'a pas \'et\'e associ\'e avec un fichier +en utilisant ^|\openin|, \TeX\ affichera l'incitation `\<s\'equence de contr\^ole> |=|' +sur votre terminal et attendra que vous saisissiez une ligne d'entr\'ee. +Il assignera alors la ligne d'entr\'ee \`a \<s\'equence de contr\^ole>. +Si \<nombre> est inf\'erieur \`a z\'ero, il lira une ligne d'entr\'ee de votre +terminal mais omettra l'incitation. +\example +\read\auxfile to \holder +% Expanding \holder will produce the line just read. +| +\endexample +\eix^^{fichiers d'entr\'ee} +\enddesc + +%\secondprinting{\vfill\eject} + + +%========================================================================== +\subsection {Op\'erations sur des fichiers de sortie} + +\bix^^{fichiers de sortie} +\begindesc +\cts openout {\<nombre> {\bt =} \<nom de fichier>} +\explain +^^{flots de sortie//ouverture} +Cette commande demande \`a \TeX\ d'ouvrir le fichier nomm\'e \<nom de fichier> +et de le rendre disponible pour l'\'ecriture via le \minref{flux de sortie} +d\'esign\'e par \<nombre>. +\<nombre> doit \^etre entre $0$ et $15$. +Une fois que vous avez ouvert un fichier et l'avez connect\'e \`a un flot de sortie, +vous pouvez \'ecrire dans le fichier en utilisant la commande |\write| +avec le num\'ero du flot de sortie. + +Un |\openout| g\'en\`ere un \'el\'ement extraordinaire qui devient une partie d'une bo\^\i te. +Le |\openout| ne prend pas effet avant que \TeX\ n'envoit cette bo\^\i te +dans le \dvifile, +\`a moins que vous ayez fait pr\'ec\'eder |\openout| de ^|\immediate|. + +\TeX\ ne se plaindra pas si vous associez plus d'un flux de sortie avec le +m\^eme fichier, mais vous aurez un sacr\'e bazar dans le fichier si vous essayez~! + +Vous devez allouer des num\'eros de flux pour |\openout| en utilisant +|\newwrite| (\xref{\@newwrite}). +\example +\newwrite\auxfile \openout\auxfile = addenda.aux +% \auxfile now denotes the number of this opening +% of addenda.aux. +| +\endexample +\enddesc + +\begindesc +\cts closeout {\<nombre>} +\explain +^^{flots de sortie//fermeture} +Cette commande demande \`a \TeX\ de fermer le \minref{flot de sortie} num\'erot\'e +\<nombre>. c'est-\`a-dire, +cesser l'association entre le flot de sortie et son fichier. +Le flot de sortie avec ce num\'ero devient alors disponible pour \^etre utilis\'e avec +un fichier diff\'erent. +Vous devez fermer un flot de sortie une fois que vous avez fini d'utiliser son fichier. + +Un |\closeout| g\'en\`ere un \'el\'ement extraordinaire qui devient une partie d'une bo\^\i te. +Le |\closeout| ne prend pas effet avant que \TeX\ n'envoit pas cette bo\^\i te +dans le \dvifile, +\`a moins que vous ayez fait pr\'ec\'eder |\closeout| de ^|\immediate|. +\example +\closeout\auxfile +| +\endexample +\enddesc + +\begindesc +\cts write {\<nombre> \rqbraces{\<liste de token>}} +\explain +^^{flots de sortie//\'ecriture} +^^{\ecrire\ un fichier} +Cette commande demande \`a \TeX\ d'\'ecrire \<liste de token> dans le fichier +associ\'e avec le \minref{flot de sortie} +d\'esign\'e par \<nombre>. +Il g\'en\`ere un \'el\'ement extraordinaire qui devient une partie d'une bo\^\i te. +L'\'ecriture actuelle ne prend pas de place tant que \TeX\ n'envoie cette bo\^\i te +dans le \dvifile, +\`a moins que vous pr\'ec\'ediez le |\write| par ^|\immediate|. + +Pour un |\write| qui n'est pas imm\'ediat, \TeX\ ne d\'eveloppe pas de macros de +\<liste de token> tant que la liste de token n'est pas \'ecrite dans le fichier. +Les d\'eveloppements de macro suivent les m\^emes r\`egles que |\edef| (\xref\edef). +En particulier, toute s\'equence de contr\^ole qui n'est pas le +nom d'une macro est \'ecrite comme un +^|\escapechar| suivi par le nom de la s\'equence de contr\^ole +et un espace. tous les tokens `|#|' +de \<liste de token> sont doubl\'es, c'est-\`a-dire, \'ecrits comme `|##|'. + +Si \<nombre> n'est pas dans la fourchette de $0$ \`a $15$, \TeX\ \'ecrit +\<liste de token> dans le fichier log. +^^{fichier log//\'ecrit par \b\tt\\write\e} +Si \<nombre> est sup\'erieur \`a $15$ ou n'est pas associ\'e avec un flot de +sortie, \TeX\ \'ecrit aussi \<liste de token> sur le terminal. +\example +\def\aa{a a} +\write\auxfile{\hbox{$x#y$} \aa} +% Writes the string `\hbox {$x##y$} a a' to \auxfile. +| +\endexample +\enddesc + +\begindesc +\cts immediate {} +\explain +Cette commande doit pr\'ec\'eder un |\openout|, un |\closeout| ou un |\write|. +^^|\write//avec {\tt\\immediate}| +^^|\openout//avec {\tt\\immediate}| +^^|\closeout//avec {\tt\\immediate}| +Elle demande \`a \TeX\ d'ex\'ecuter l'op\'eration de fichier sp\'ecifi\'ee sans d\'elai. +\example +\immediate\write 16{I'm stuck!!} +% has the same effect as \message +| +\endexample\enddesc + +\begindesc +\cts special {\rqbraces{\<liste de token>}} +\explain +Cette commande demande \`a \TeX\ +d'\'ecrire \<liste de token> directement dans le \dvifile\ quand il enverra +une page. +Une utilisation typique de |\special| sera de dire au driver d'impression d'incorporer +le contenu d'un fichier graphique nomm\'e dans la page de sortie. +^^{drivers de p\'eriph\'erique//instructions par \b\tt\\special\e} +La commande |\special| produit un \'el\'ement extraordinaire qui associe +\<liste de token> avec une position particuli\`ere sur la page, plus pr\'ecis\'ement, +la position qu'une bo\^\i te de taille nulle aurait eu si un telle bo\^\i te +serait apparue \`a la place de la commande |\special|. +Toute utilisation que vous devez faire de |\special| d\'epend strictement des +^{drivers d'impression} que vous avez \`a votre disposition. +\example +\special{graphic expic} +% Display the graphics file `expic' here. +| +\endexample +\enddesc + +\begindesc +\cts newlinechar {\param{nombre}} +\explain +Ce param\`etre contient un caract\`ere qui indique une nouvelle ligne sur la +sortie. Quand \TeX\ rencontre ce caract\`ere +en lisant l'argument d'une commande +|\write|, |\message| ou +|\errmessage|, il d\'ebute une nouvelle ligne. +Si |\newlinechar| n'est pas dans la fourchette $0$--$255$, +Il n'y a aucun caract\`ere indiquant +une nouvelle ligne en sortie. +\PlainTeX\ met |\newlinechar| \`a $-1$. +\example +\newlinechar = `\^^J +\message{This message appears^^Jon two lines.} +| +\logproduces +This message appears +on two lines. +| +\endexample +\enddesc + +\see |\newread|, |\newwrite| (\xref{\@newwrite}). +\eix^^{fichiers} +\eix^^{fichiers de sortie} + +%========================================================================== +\subsection {Interpr\'eter des caract\`eres entr\'es} + +\begindesc +\cts catcode {\<charcode> \tblentry{nombre}} +\explain +^^{codes de cat\'egorie//en table de \b\tt\\catcode\e} +Cette entr\'ee de table contient le \minref{code de cat\'egorie} du caract\`ere +dont le code \ascii\ est \<charcode>. +Les codes de cat\'egorie sont list\'es dans la \xrefpg{catcodes}. +En changeant le code de cat\'egorie d'un caract\`ere vous pouvez demande \`a \TeX\ de traiter +ce caract\`ere diff\'eremment. +\example +\catcode `\[ = 1 \catcode `\] = 2 +% Make [ and ] act like left and right braces. +| +\endexample +\enddesc + +\begindesc +\cts active {} +\explain +Cette commande contient le +code de cat\'egorie pour un caract\`ere actif, soit, le nombre $13$. +\example +\catcode `\@ = \active % Make @ an active character. +| +\endexample +\enddesc + +\begindesc +\cts mathcode {\<charcode> \tblentry{nombre}} +\explain +Cette entr\'ee de table contient le \minref{mathcode} du caract\`ere +dont le code \ascii\ est \<charcode> \seeconcept{mathcode}. +Le mathcode sp\'ecifie l'interpr\'etation du caract\`ere en mode math\'ematique. +\example +\mathcode\> = "313E % as in plain TeX +% The > character has class 3 (relation), family 1 (math +% italic), and character code "3E +| +\endexample +\enddesc + +\begindesc +\margin{{\tt\\delcode} was explained in two places. This explanation +combines them. (The other place was in the math section.)} +\cts delcode {\<charcode>\tblentry{number}} +\explain +^^{codes d\'elimiteurs} +Cette entr\'ee de table sp\'ecifie le code \minref{delimiter} pour le caract\`ere entr\'ee +dont le code \ascii\ est \<charcode>. +Le code d\'elimiteur dit \`a \TeX\ comment trouver le meilleur caract\`ere de sortie utiliser +pour composer le caract\`ere d'entr\'ee indiqu\'e comme d\'elimiteur. + +\<nombre> est normalement \'ecrit en notation hexad\'ecimale. +Supposez que \<nombre> soit le nombre hexad\'ecimal $s_1s_2s_3\, +l_1l_2l_3$. Alors, quand le caract\`ere est utilis\'e comme un d\'elimiteur, +\TeX\ prend le caract\`ere ayant une petite variante +$s_1s_2s_3$ et une grande variante $l_1l_2l_3$. Ici $s_1s_2s_3$ indique +le caract\`ere math\'ematique trouv\'e en position $s_2s_3$ de la famille $s_1$ et +de m\^eme pour $l_1l_2l_3$. C'est la m\^eme convention que celle +utilis\'ee pour ^|\mathcode| (\xref \mathcode), +sauf que |\mathcode| sp\'ecifie aussi une classe. +\example +\delcode `( = "028300 % As in plain TeX. +| +\endexample +\enddesc + +\begindesc +\cts endlinechar {\param{nombre}} +\explain +Ce param\`etre +contient le code de caract\`ere pour le caract\`ere que +\TeX\ attend \`a la fin de chaque ligne d'entr\'ee. +^^{ligne d'entr\'ee} +Une valeur qui ne serait pas dans le fourchette $0$--$255$ +indique qu'aucun caract\`ere ne doit \^etre attendu. +\PlainTeX\ laisse |\end!-line!-char| \`a +|`\^^M| (le code {\ascii} pour \asciichar{return}). +\enddesc + +\begindesc +\cts ignorespaces {} +\explain +Cette commande demande \`a \TeX\ de lire et de d\'evelopper des tokens jusqu'\`a ce qu'il en trouve +un qui ne soit pas un \minref{token} espace, ignorant tous les tokens espace +qu'il trouve autrement. +|\ignorespaces| est souvent pratique \`a la fin d'une \minref{macro} comme un moyen +de rendre la macro insensible \`a tout espace ou fin de ligne +qui peut suivre son propre appel. +(Une ligne vide apr\`es |\ignorespaces| continue \`a produire un token |\par|, +de tout fa\c con.) +\example +\def\aa#1{yes #1\ignorespaces} +\aa{may} +be +| +\produces +\def\aa#1{yes #1\ignorespaces} +\aa{may} +be +\endexample +\enddesc + +%========================================================================== +\section {Contr\^oler l'interaction avec \TeX} + +\begindesc +\bix^^{contr\^oler \TeX} +\bix^^{ex\'ecuter \TeX} +\cts errorstopmode {} +\explain +Cette commande demande \`a \TeX\ +de stopper pour une interaction \`a chaque fois qu'il trouve une erreur. +C'est le mode op\'eratoire normal. +\enddesc + +\begindesc +\cts scrollmode {} +\explain +Cette commande demande \`a \TeX\ +de ne pas stopper pour le plupart des erreurs, +mais de continuer \`a afficher les messages d'erreur sur votre terminal. +Saisir `|S|' ou `|s|' en r\'eponse \`a un message d'erreur vous met +en mode scroll. +\enddesc + +\begindesc +\cts nonstopmode {} +\explain +Cette commande demande \`a \TeX\ +de ne pas stopper pour des erreurs, m\^eme celles r\'eclamant des fichiers qu'il +ne peut trouver, mais de continuer \`a afficher les messages d'erreur sur votre terminal. +Saisir `|R|' ou `|r|' en r\'eponse \`a un message d'erreur vous met +en mode nonstop. +\enddesc + +\begindesc +\cts batchmode {} +\explain +Cette commande demande \`a \TeX\ +de ne pas stopper pour des erreurs et de supprimer toute sortie sur votre terminal. +Saisir `|Q|' ou `|q|' en r\'eponse \`a un message d'erreur vous met +en mode batch. +\enddesc + +\begindesc +\cts pausing {\param{nombre}} +\explain +Si ce param\`etre est sup\'erieur \`a z\'ero, \TeX\ s'arr\^etera +\`a chaque ligne d'entr\'ee pour vous donner une opportunit\'e de +la remplacer par une ligne diff\'erente. Si vous saisissez une modification, +\TeX\ utilisera cette ligne au lieu de l'originale~; si vous r\'epondez +par \asciichar{return}, \TeX\ utilisera l'originale. + +Mettre |\pausing| \`a $1$ peut \^etre pratique comme moyen de patcher un document quand +\TeX\ l'ex\'ecute. Par exemple, +vous pouvez utiliser cette facilit\'e pour ins\'erer des commandes ^|\show| (voir plus loin). +\eix^^{ex\'ecuter \TeX} +\eix^^{contr\^oler \TeX} +\enddesc + +%========================================================================== +\section {Aide au diagnostic} + +\subsection{Afficher des donn\'ees internes} + +\begindesc +\bix^^{tracer} +\bix^^{debugger} +\bix^^{aides au diagnostique} +\cts show {\<token>} +\cts showthe {\<argument>} +\cts showbox {\<nombre>} +\cts showlists {} +\explain +Ces commandes enregistrent de l'information dans le fichier log de votre ex\'ecution \TeX~: +\ulist +\li |\show| enregistre la signification de \<token>.\minrefs{token} +^^{tokens//affich\'es par \b\tt\\show\e} +\li |\showthe| enregistre + quels tokens seront produit par +|\the| \<arg\-u\-ment> (voir \xref \the). +\li |\showbox| enregistre le contenu du \minref{registre} de la \minref{bo\^\i te} +num\'erot\'e \<nom\-bre>. +Le nombre de +points affich\'es dans la log indique le nombre de +niveaux d'inclusion de bo\^\i tes internes. +\li |\showlists| enregistre +le contenu de chaque liste que \TeX\ est en train de construire. +(les listes sont empil\'ees les unes sur les autres.) +Voir les \knuth{pages~88--89}{103} pour plus d'information sur l'interpr\'etation +de la sortie de |\showlists|. +\endulist +Pour |\show| et |\showthe|, \TeX\ affiche aussi l'information sur votre +^{terminal}. +Pour |\showbox| et |\showlists|, \TeX\ n'affiche l'information sur votre +terminal que +si ^|\tracingonline| (\xref \tracingonline) est sup\'erieur \`a z\'ero~; +si ^|\tracingonline| est \`a z\'ero ou moins (le cas par d\'efaut), +l'information n'est pas affich\'ee. + +\`A chaque fois que \TeX\ rencontre une commande de type |\show| il +stoppe pour un interaction. La requ\^ete d'interaction ne doit \emph{pas} +indiquer une erreur, mais doit vous donner l'opportunit\'e de demander \`a \TeX\ de +vous montrer autre chose. Si vous ne voulez pas voir autre chose, pressez juste +\asciichar{return}. + +Vous pouvez contr\^oler la quantit\'e de sortie produite par |\showbox| en mettant +|\show!-box!-breadth| et |\show!-box!-depth| (\xref\showboxbreadth). +^^|\showboxbreadth| ^^|\showboxdepth| +Ces param\`etres ont des valeurs par d\'efaut \`a $5$ et $3$ respectivement, +C'est pourquoi +juste cinq \'el\'ements apparaissent pour chaque bo\^\i te d\'ecrite +dans la sortie de log ci-dessous. (Le `|..etc.|' indique des \'el\'ements additionnels +des bo\^\i tes qui ne sont pas affich\'es.) +\example +\show a +\show \hbox +\show \medskip +\show & +| +\logproduces +> the letter a. +> \hbox=\hbox. +> \medskip=macro: +->\vskip \medskipamount . +> alignment tab character &. +| +\nextexample +\showthe\medskipamount +\toks27={\hbox{Joe's\quad\ Diner}} +\showthe\toks27 +| +\logproduces +> 6.0pt plus 2.0pt minus 2.0pt. +> \hbox {Joe's\quad \ Diner}. +| +\nextexample +\setbox 3=\vbox{\hbox{A red dog.}\hrule A black cat.} +\showbox 3 +| +\logproduces +> \box3= +\vbox(16.23332+0.0)x53.05565 +.\hbox(6.94444+1.94444)x46.41675 +..\tenrm A +..\glue 3.33333 plus 1.66498 minus 1.11221 +..\tenrm r +..\tenrm e +..\tenrm d +..etc. +.\rule(0.4+0.0)x* +.\hbox(6.94444+0.0)x53.05565 +..\tenrm A +..\glue 3.33333 plus 1.66498 minus 1.11221 +..\tenrm b +..\tenrm l +..\tenrm a +..etc. +| +\endexample +\vfil\eject +\example +\vbox{A \hbox + {formula + $x \over y\showlists$}} +| +\logproduces +### math mode entered at line 3 +\mathord +.\fam1 y +this will be denominator of: +\fraction, thickness = default +\\mathord +\.\fam1 x +### restricted horizontal mode entered at line 2 +\tenrm f +\tenrm o +\tenrm r +\tenrm m +\kern-0.27779 +\tenrm u +\tenrm l +\tenrm a +\glue 3.33333 plus 1.66666 minus 1.11111 +spacefactor 1000 +### horizontal mode entered at line 1 +\hbox(0.0+0.0)x20.0 +\tenrm A +\glue 3.33333 plus 1.66498 minus 1.11221 +spacefactor 999 +### internal vertical mode entered at line 1 +prevdepth ignored +### vertical mode entered at line 0 +prevdepth ignored +| +\endexample +\enddesc + +\see |\showboxbreadth|, |\showboxdepth| \ctsref\showboxbreadth. + +\subsection{Sp\'ecifier ce qui est trac\'e} + +\begindesc +\cts tracingonline {\param{nombre}} +\explain +Si ce param\`etre est sup\'erieur \`a z\'ero, +\TeX\ affichera les r\'esultats de la trace +(en incluant ^|\showbox| et ^|\showlists|) +sur votre terminal en plus de les enregistrer dans le fichier log. +\enddesc + +\begindesc +\cts tracingcommands {\param{nombre}} +\explain +Si ce param\`etre est \'egal \`a $1$ ou plus, +\TeX\ enregistrera dans le fichier log plus de commandes qu'il ex\'ecute. +Si ^|\tracingonline| est plus grand que z\'ero, cette information appara\^\i tra aussi +sur votre terminal. +composer le premier caract\`ere d'un mot compte comme une commande, +mais (dans le but de la trace seulement) +les actions de composition des caract\`eres suivants +et de toute ponctuation les suivant +ne compte pas comme des commandes. +Si |\tracingcommands| est \`a $2$ ou plus, +\TeX\ enregistrera aussi des commandes qui sont d\'evelopp\'ees +plut\^ot qu'ex\'ecut\'ees, par exemple, des tests conditionnels et leurs r\'esultats. +\example +\tracingcommands = 1 If $x+y>0$ we quit.\par +On the other hand, \tracingcommands = 0 +| +\logproduces +{vertical mode: the letter I} +{horizontal mode: the letter I} +{blank space } +{math shift character $} +{math mode: the letter x} +{the character +} +{the letter y} +{the character >} +{the character 0} +{math shift character $} +{horizontal mode: blank space } +{the letter w} +{blank space } +{the letter q} +{blank space } +{\par} +{vertical mode: the letter O} +{horizontal mode: the letter O} +{blank space } +{the letter t} +{blank space } +{the letter o} +{blank space } +{the letter h} +{blank space } +{\tracingcommands} +| +\endexample +\enddesc + +\begindesc +\cts tracinglostchars {\param{nombre}} +\explain +Si ce param\`etre est plus grand que z\'ero, +\TeX\ enregistrera une indication dans le fichier log \`a chaque fois +qu'il d\'elaissera un caract\`ere de sortie parce que ce caract\`ere n'existe pas +dans la police courante. +Si ^|\tracingonline| est plus grand que z\'ero, cette information appara\^\i tra aussi +sur votre terminal. +\PlainTeX\ le met par d\'efaut \`a $1$ (contrairement aux autres). +\example +\tracinglostchars = 1 +A {\nullfont few} characters. +| +\logproduces +Missing character: There is no f in font nullfont!! +Missing character: There is no e in font nullfont!! +Missing character: There is no w in font nullfont!! +| +\endexample +\enddesc + +\begindesc +\cts tracingmacros {\param{nombre}} +\explain +Si ce param\`etre est \`a $1$ ou plus, +\TeX\ enregistrera dans le fichier log le d\'eveloppement et les arguments +de toutes les macros qu'il ex\'ecute. +^^{macros//tracer des} +Si |\tracingmacros| est \`a $2$ ou plus, +\TeX\ enregistrera, en plus, +tout d\'eveloppement de listes de \minref{token} telles que +|\output| or |\everycr|. +Si ^|\tracingonline| est plus grand que z\'ero, cette information appara\^\i tra aussi +sur votre terminal. +\example +\def\a{first \b, then \c} +\def\b{b} \def\c{c} +\tracingmacros = 2 +Call \a once. +| +\logproduces +\a ->first \b , then \c + +\b ->b + +\c ->c +| +\endexample +\enddesc + +\begindesc +\cts tracingoutput {\param{nombre}} +\explain +Si ce param\`etre est sup\'erieur \`a z\'ero, +\TeX\ enregistrera dans le fichier log le contenu de toutes les bo\^\i tes qu'il +envoit dans le \dvifile. +^^{\dvifile//\boite\ enregistr\'e dans le fichier} +Si ^|\tracingonline| est sup\'erieur \`a z\'ero, cette information appara\^\i tra aussi +sur votre terminal. +Le nombre de +points affich\'e dans la log indique le nombre de +niveaux d'inclusion de bo\^\i tes sur cette ligne. +Vous pouvez contr\^oler la quantit\'e de trace en fixant +^|\showboxbreadth| et ^|\showboxdepth| (\xref\showboxbreadth). + +mettre |\tracingoutput| \`a $1$ peut \^etre tr\`es pratique quand vous essayez +de d\'eterminer pourquoi vous obtenez un ^{espace suppl\'ementaire} sur une page. + +\example +% This is the entire file. +\tracingoutput = 1 \nopagenumbers +One-line page. \bye +| +\logproduces +Completed box being shipped out [1] +\vbox(667.20255+0.0)x469.75499 +.\vbox(0.0+0.0)x469.75499, glue set 13.99998fil +..\glue -22.5 +..\hbox(8.5+0.0)x469.75499, glue set 469.75499fil +...\vbox(8.5+0.0)x0.0 +...\glue 0.0 plus 1.0fil +..\glue 0.0 plus 1.0fil minus 1.0fil +.\vbox(643.20255+0.0)x469.75499, glue set 631.2581fill +..\glue(\topskip) 3.05556 +..\hbox(6.94444+1.94444)x469.75499, glue set 386.9771fil +...\hbox(0.0+0.0)x20.0 +...\tenrm O +...\tenrm n +...\tenrm e +...\tenrm - +...etc. +..\glue 0.0 plus 1.0fil +..\glue 0.0 plus 1.0fill +.\glue(\baselineskip) 24.0 +.\hbox(0.0+0.0)x469.75499, glue set 469.75499fil +..\glue 0.0 plus 1.0fil +| +\endexample +\enddesc + +\begindesc +\cts tracingpages {\param{nombre}} +\explain +Si ce param\`etre est sup\'erieur \`a z\'ero, +\TeX\ enregistrera dans le fichier log ses calculs sur le co\^ut des +diff\'erentes coupures de page qu'il essaie. +^^{coupures de page//tracer} +Si |\tracing!-online| ^^|\tracingonline| +est sup\'erieur \`a z\'ero, cette information appara\^\i tra aussi +sur votre terminal. +\TeX\ produit une ligne de cette sortie +\`a chaque fois qu'il commence \`a placer une bo\^\i te ou une \minref{insertion} +sur la liste de page courante, et aussi \`a chaque fois qu'il ex\'ecute une +point de coupure potentiel pour la page. +Examiner cette sortie peut \^etre utile quand vous essayez de d\'eterminer +la cause d'une mauvaise coupure de page. +Voir les \knuth{pages~112--114}{130--133} pour une illustration et une explication de +cette sortie. + +Certaines distributions de \TeX\ ignorent la valeur de |\tracingpages| +ainsi elles peuvent s'ex\'ecuter plus rapidement. +Si vous devez utiliser ce param\`etre, soyez certain d'utiliser une distribution qui +lui r\'epond. +\enddesc + +\begindesc +\cts tracingparagraphs {\param{nombre}} +\explain +Si ce param\`etre est sup\'erieur \`a z\'ero, +\TeX\ enregistrera dans le fichier log ses calculs sur le co\^ut des +diff\'erentes coupures de ligne qu'il essaie. +^^{coupures de ligne//tracer} +Si ^|\tracingonline| +est sup\'erieur \`a z\'ero, cette information appara\^\i tra aussi +sur votre terminal. +\TeX\ produit cette sortie quand il atteint la fin de chaque paragraphe. +Voir les \knuth{pages~98--99}{115--116} pour une illustration et une explication de +cette sortie. + +Certaines distributions de \TeX\ ignorent la valeur de |\tracing!-para!-graphs| +ainsi elles peuvent s'ex\'ecuter plus rapidement. +Si vous devez utiliser ce param\`etre, soyez certain d'utiliser une distribution qui +lui r\'epond. +\enddesc + +\begindesc +\cts tracingrestores {\param{nombre}} +\explain +Si ce param\`etre est sup\'erieur \`a z\'ero, +\TeX\ enregistrera dans le fichier log les valeurs qu'il restitue quand il +rencontre la fin d'un \minref{groupe}. +Si ^|\tracingonline| +est sup\'erieur \`a z\'ero, cette information appara\^\i tra aussi +sur votre terminal. + +Certaines distributions de \TeX\ ignorent la valeur de |\tracing!-restores| +ainsi elles peuvent s'ex\'ecuter plus rapidement. +Si vous devez utiliser ce param\`etre, soyez certain d'utiliser une distribution qui +lui r\'epond. +\enddesc + +\begindesc +\cts tracingstats {\param{nombre}} +\explain +Si ce param\`etre est \`a $1$ ou plus, \TeX\ incluera +un rapport sur les ressources qu'il utilise pour ex\'ecuter votre travail +(voir la \knuth{page~300}{350--351} pour une liste et l'explication de ces ressources). +Du reste, si |\tracingstats| est \`a $2$ ou plus, +\TeX\ fera un rapport sur ses utilisations de m\'emoire \`a chaque fois qu'il fera un +^|\shipout| (\xref \shipout) pour une page. +Le rapport appara\^\i t \`a la fin du fichier log. +^^{fichier log//tracer des statistiques dans le} +Si ^|\tracingonline| est sup\'erieur \`a z\'ero, cette information appara\^\i tra aussi +sur votre terminal. +Si vous avez des probl\`emes avec \TeX\ d\'epassant une de ses +capacit\'es, l'information procur\'ee par |\tracingstats| peut vous aider \`a +mettre le doigt sur la cause de vos difficult\'es. + +Certaines distributions de \TeX\ ignorent la valeur de |\tracingstats| +ainsi elles peuvent s'ex\'ecuter plus rapidement. +Si vous devez utiliser ce param\`etre, soyez certain d'utiliser une distribution qui +lui r\'epond. + +L'exemple suivant montre un extrait de +la sortie de trace que vous obtenez sur une distribution +de \TeX. Elle peut \^etre diff\'erente sur d'autres distributions. +{\codefuzz = 1in +\example +\tracingstats=1 +| +\logproduces +Here is how much of TeX's memory you used: + 4 strings out of 5540 + 60 string characters out of 72328 + 5956 words of memory out of 262141 + 921 multiletter control sequences out of 9500 + 14794 words of font info for 50 fonts, out of 72000 for 255 + 14 hyphenation exceptions out of 607 + 7i,4n,1p,68b,22s stack positions out of 300i,40n,60p,3000b,4000s +| +\endexample +}% end scope of codefuzz +\enddesc + +\begindesc +\cts tracingall {} +\explain +Cette commande demande \`a \TeX\ de +brancher toutes les formes de trace disponibles. +Elle met aussi ^|\tracingonline| \`a $1$ pour que la sortie de trace apparaisse +sur votre terminal. +\enddesc + +\begindesc +\cts showboxbreadth {\param{nombre}} +\explain +Ce param\`etre sp\'ecifie le nombre maximum d'\'el\'ements de liste +que \TeX\ affiche pour un niveau d'une bo\^\i te quand il produit +la sortie pour ^|\showbox| ou ^|\tracingoutput|. +\PlainTeX\ met |\showboxbreadth| \`a $5$. +\enddesc + +\begindesc +\cts showboxdepth {\param{nombre}} +\explain +Ce param\`etre sp\'ecifie le +niveau de la plus profonde liste que \TeX\ affiche quand +il produit la sortie pour ^|\showbox| ou ^|\showlists|. +\PlainTeX\ met |\showboxdepth| \`a $3$. +\eix^^{tracer} +\eix^^{debugger} +\eix^^{aides au diagnostique} +\enddesc + +%========================================================================== +\subsection {Envoyer des messages} + +\begindesc +\bix^^{messages, envoyer} +\bix^^{messages d'erreur} +\cts message {\rqbraces{\<liste de token>}} +\cts errmessage {\rqbraces{\<liste de token>}} +\explain +Cette commande affiche le message donn\'e par \<liste de token> sur votre +terminal et l'entre aussi dans la log. Toutes les \minref{macro}s du +message sont d\'evelopp\'ees, mais aucune commande n'est ex\'ecut\'ee. C'est la m\^eme r\`egle +que \TeX\ utilise pour |\edef| (\xref \edef). + +Pour |\errmessage|, \TeX\ fait une pause +de la m\^eme fa\c con qu'il le ferait pour un de ses propres messages d'erreur +et affiche les tokens |\errhelp| si vous demandez de l'aide. + +Vous pouvez g\'en\'erer des messages multi-ligne en utilisant le caract\`ere ^|\newlinechar| +(\xref \newlinechar). +\example +\message{Starting a new section.} +| +\endexample +\enddesc + +\begindesc +\cts wlog {\rqbraces{\<liste de token>}} +\explain +Cette commande \'ecrit \<liste de token> dans le fichier log. +^^{fichier log//\'ecrire par \b\tt\\wlog\e} +\minrefs{log file} +\TeX\ d\'eveloppe \<liste de token> en accord avec les m\^emes r\`egles qu'il utilise +pour |\edef| (\xref\edef). +\example +\wlog{Take two aspirins and call me in the morning.} +| +\logproduces +Take two aspirins and call me in the morning. +| +\endexample +\enddesc + +\begindesc +\cts errhelp {\param{liste de token}} +\explain +Ce param\`etre contient la liste de token que \TeX\ affiche +quand vous demandez de l'aide en r\'eponse \`a une commande |\errmessage|. +Nous vous recommandons quand +vous g\'en\'erez un message d'erreur avec |\errmessage|, de +mettre |\errhelp| \`a une cha\^\i ne qui d\'ecrit la nature de +l'erreur et utiliser |\newhelp| pour produire cette cha\^\i ne. +Vous pouvez utiliser le caract\`ere ^|\newlinechar| pour produire des messages multi-ligne. +\enddesc + +\begindesc +\ctspecial newhelp \ctsxrdef{@newhelp} {\<s\'equence de contr\^ole> + \rqbraces{\<texte d'aide>}} +\explain +Cette commande assigne le ^{message d'aide} donn\'e par \<texte d'aide> \`a +\<s\'equence de contr\^ole>. Il procure un moyen efficace de d\'efinir +le ^{texte d'aide} qui compl\`ete un message d'erreur. +Avant d'\'emettre le message d'erreur avec la commande |\errmessage|, +vous devez assigner \<s\'equence de contr\^ole> \`a ^|\errhelp|. Le texte d'aide +appara\^\i tra alors si l'utilisateur saisi `|H|' +ou `|h|' en r\'eponse au message d'erreur. +\example +\newhelp\pain{Your input includes a token that I find^^J + to be offensive. Don't bother me again with this^^J + document until you've removed it.} +\errhelp = \pain \newlinechar = `\^^J +% ^^J will start a new line +\errmessage{I do not appreciate receiving this token} +| +\logproduces +!! I do not appreciate receiving this token. +l.8 ...t appreciate receiving this token.} + +? H +\Your input includes a token that I find + to be offensive. Don't bother me again with this + document until you've removed it. +| +\endexample +\enddesc + +\begindesc +\cts errorcontextlines {\param{nombre}} +\explain +Ce param\`etre d\'etermine le nombre de paires de lignes de contexte, +sans compter la premi\`ere et la derni\`ere, que \TeX\ imprime quand il +rencontre une erreur. En le mettant \`a $0$ vous pouvez vous d\'ebarrasser de longs +messages d'erreur. +Vous pouvez forcer le contexte entier en saisissant quelque chose comme~: +\csdisplay +I\errorcontextlines=100\oops +| +en r\'eponse \`a une erreur, +puisque la s\'equence de contr\^ole non d\'efinie |\oops| causera une autre erreur. +\PlainTeX\ met |\error!-context!-lines| \`a $5$. +\enddesc + +\see |\write| (\xref \write), |\escapechar| (\xref \escapechar). +\eix^^{messages, envoyer} +\eix^^{messages d'erreur} + +%========================================================================== +\section {Initialiser \TeX} + +\begindesc +\cts dump {} +\explain +Cette commande, qui ne doit pas appara\^\i tre \`a l'int\'erieur d'un groupe, met en +r\'eserve le contenu de la m\'emoire de \TeX\ dans un ^{fichier format} (\xref{fichier format}). +En utilisant ^|virtex|, une forme sp\'eciale ``vierge'' de \TeX, +vous pouvez alors recharger le fichier format \`a grande vitesse et +continuer dans le m\^eme \'etat que \TeX\ \'etait au moment du dump. +|\dump| termine aussi une ex\'ecution. Puisque |\dump| ne peut \^etre utilis\'e +qu'avec ^|initex|, pas en format de production de \TeX, elle n'est utile qu'aux +gens qui installent \TeX. +\enddesc + +\begindesc +\cts everyjob {\param{liste de token}} +\explain +Ce param\`etre contient une liste de \minref{token} que \TeX\ d\'eveloppe au +d\'ebut de chaque ex\'ecution. Parce qu'un assignement \`a |\everyjob| ne peut affecter +l'ex\'ecution courante (au moment o\`u vous avez fait l'assignement, c'est d\'ej\`a trop +tard), elle n'est utile qu'ux gens qui pr\'eparent des fichiers de format. +\enddesc + + +\enddescriptions \endchapter \byebye + diff --git a/info/impatient/fr/findex.tex b/info/impatient/fr/findex.tex deleted file mode 100644 index af5c31d469..0000000000 --- a/info/impatient/fr/findex.tex +++ /dev/null @@ -1,37 +0,0 @@ -% This is part of the book TeX for the Impatient. -% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. -% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. -% See file fdl.tex for copying conditions. - -\input fmacros -\chapter{Index} - -\par -\kern-\baselineskip - -\noindent Dans les entr\'ees de cet index, un num\'ero de page en italique indique une entr\'ee principale ou une d\'efinition. - -\par -% Let's try to collect indexing cross-references here. -% -\idxsee{marques diacritiques}{accents} -\idxsee{tracer des lignes}{filets} -\idxsee{drivers}{drivers de p\'eriph\'erique} -\idxsee{yeux}{\anatomy} -\idxsee{langues \'etrang\`eres}{langues europ\'eennes} -\idxsee{intestin}{\anatomy} -\idxsee{bouche}{\anatomy} -\idxsee{paragraphes//indenter}{indentation} -%\idxsee{macros r\'ecursives}{macros, r\'ecursive} -\idxsee{estomac}{\anatomy} -\idxsee{tables}{alignements} -\beginindex - -\let\+ = 0 % This can't occur in a macro... - -\input fbook.sdx - -\endindex - -\endchapter -\byebye diff --git a/info/impatient/fr/fmacros.tex b/info/impatient/fr/fmacros.tex index 04740d0e3d..4bc83b5ea1 100644 --- a/info/impatient/fr/fmacros.tex +++ b/info/impatient/fr/fmacros.tex @@ -1,2345 +1,2345 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-%
-% Macros for typesetting TeX for the Impatient.
-%
-% These macros are being distributed without any warranty whatsoever.
-% The level of commentary is that which we, the authors, found necessary
-% for our own purposes.
-%
-% ==========================================================================
-%
-% The macros use the term `chapter' for what in the book is called
-% a `section', `section' for the book's `subsection', etc. For purposes of
-% defining macros it's convenient to think of the book as divided into
-% chapters, but because of the nonsequential nature of the book we don't
-% want to tell the readers that they are reading chapters.
-%\language2
-% An embedded file should end with \byebye.
-%
-%%%%%%%%%%%%%%% COULEUR %%%%%%%%%%%%%%%%%%%%%%
-\input ifpdf.sty
-\ifpdf
-\def\Red{\pdfliteral{0 1 1 0 k}}
-\def\Blue{\pdfliteral{1 1 0 0 k}}
-\def\Green{\pdfliteral{1 0 1 0 k}}
-\def\RawSienna{\pdfliteral{0 0.72 1 0.45 k}}
-\def\Black{\pdfliteral{0 0 0 1 k}}
-\else
-\def\Red{\special{color rgb 1. 0 0}}
-\def\Blue{\special{color rgb 0 0 1.}}
-\def\Green{\special{color rgb 0 1. 0}}
-\def\RawSienna{\special{color rgb 0.63 0.32 0.18}}
-\def\Black{\special{color rgb 0 0 0}}
-\fi
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\begingroup
-\ifx \macsin\relax
- % In frontm.tex, we do \input macros several times, and we still want
- % the \byebye at the end to end the job.
- % So we \input inside a group in frontm, and make the assignment to
- % \endinput local.
- \aftergroup\let\aftergroup\byebye\aftergroup\endinput
- \aftergroup\endinput % Don't read this file again.
-\else
- \global\let\byebye = \end
- \global\let\macsin = \relax
-\fi
-\endgroup
-
-% This must come before config.tex.
-\input eplain
-
-% Define configuration switches and then read their values.
-%
-\newif\ifcenterpage \centerpagetrue
-\newif\ifcompletebook
-\newif\iffinal % true for the 2000dpi copy
-\newif\ifmsdos
-\newif\ifedgetabs \edgetabstrue
-\newif\ifdvi \dvitrue % true if we want a .dvi file
-
-%\xrefwarningfalse
-
-% The config file contains settings for flags, e.g.,
-% \completebookfalse
-% It can be empty as long as it exists.
-\input config
-\ifcompletebook \else\rewritetocfilefalse \fi
-\edef\tempfile{\ifmsdos g:temp \else x \fi}
-\ifx\setmodes\undefined\else\setmodes\fi % modify from command line input
-
-% Certain defaults are forced by certain others.
-%
-\iffinal \centerpagetrue \edgetabstrue\fi
-
-% Initial definitions. (These should come before \input fonts.)
-%
-\catcode`\@ = \letter % For the macro file only.
-
-% We don't want register allocation information in the log,
-% so we redefine the relevant macro from plain.tex.
-
-\def\alloc@#1#2#3#4#5{\global\advance\count1#1 by 1
- \ch@ck#1#4#2%
- \allocationnumber=\count1#1 \global#3#5=\allocationnumber
-}
-
-% The fonts. This should come before defining the new character control
-% sequences that follow.
-%
-\input fonts
-
-\hyphenation{script-script base-line-skip no-base-line-skip line-skip
- line-skip-limit max-dead-cycles output-penalty no-inter-line-skip
- show-box-depth show-box-breadth if-hmode if-vmode if-mmode
- back-spaces back-space par-indent tracing-on-line}
-
-{
- \catcode`\| = 0
- \catcode`\\ = \other
- |global|let|bsc = \ % \bsc is a true backslash character.
-}
-
-\let\\ = \bsc
-
-\def\bslash{$\backslash$} % backslash suitable for printing
-\let\shriek = !
-\let\vbar = |
-{
- \catcode `\[ = 1 \catcode `\] = 2
- \catcode `\{ = \other \catcode `\} = \other
- \global\let\lbracechar = {
- \global\let\rbracechar = }
-]
-\def\blbrace{{\bt \{}}
-\def\brbrace{{\bt \}}}
-
-{
- \catcode`\ =\other% Notice no spaces at beginning of next line.
-\gdef\otherspace{ }
-}
-
-\let\mathlbrace = \{ \let\mathrbrace = \}
-{
- \catcode `\[ = 1 \catcode `\] = 2
- \catcode `\{ = \other \catcode `\} = \other
- \gdef\{[\ifmmode\mathlbrace\else [\bt {]\fi]
- \gdef\}[\ifmmode\mathrbrace\else [\bt }]\fi]
-]
-
-
-% These are for debugging (less drastically than \tracingall or \loggingall).
-%
-\def\tron{\tracingmacros=2 \tracingcommands=2 \tracingonline=1}
-\def\troff{\tracingmacros=0 \tracingcommands=0}
-
-% \pagebreak should always cause a break, even if the resulting
-% page is empty.
-%
-\def\pagebreak{\null\vfill\eject}
-
-% \linebreak causes a line break in chapter headings, but outside of that
-% context we don't want it to do anything.
-%
-\let\linebreak = \relax
-
-
-% Parameters.
-%
-\parskip = 0pt plus 0.3pt
-\newdimen\codefuzz \codefuzz = 10pt % for \csdisplay, \example
-\hbadness = 4000
-\vbadness = 8000
-\hfuzz = 0.1pt % as in plain TeX
-\vfuzz = 0.1pt % as in plain TeX
-\exhyphenpenalty = 0 % we don't mind these
-\widowpenalty = 10000 % these are very bad
-\clubpenalty = 10000 % these are very bad too
-
-% Page margins.
-%
-% Note that the \newdimens can't be within an \if or a \def
-% because \newdimen is an \outer macro (thanks to DEK).
-%
-\newdimen\insidemargin \newdimen\outsidemargin
-\newdimen\topmargin \newdimen\bottommargin
-\newdimen\headmargin
-\newdimen\totalwidth \newdimen\totalheight
-\newdimen\oddoffset \newdimen\evenoffset
-\newif\ifnoheadline
-
-% \totalwidth and \totalheight are the actual trim size of the book.
-% \insidemargin, \outsidemargin, \topmargin, and \bottommargin are margins
-% with respect to the pages of the book, not the draft 8 1/2 x 11 pages.
-%
-
-% This makes it so that we only have to cut twice on a page.
-% 8.5" = 51.19125pc exactly.
-% \totalwidth should = \outsidemargin + \insidemargin + \hsize.
-%
-%\totalwidth = 7.375in % 44.4159375pc = 7 3/8".
-\totalwidth = 18.7325cm % 44.4159375pc = 7 3/8".
-\outsidemargin = 8pc
-\insidemargin = 10pc
-\hsize = \totalwidth
-\advance \hsize by -\outsidemargin
-\advance \hsize by -\insidemargin
-% \hsize should now be 26.4159375pc
-
-% Now that we know \hsize, we can set \parfillskip to eliminate (most)
-% widows.
-%
-\parfillskip = .75\hsize plus .06\hsize minus .75\hsize
-
-
-% \oddoffset and \evenoffset are the \hoffset values needed to
-% align the left edge of the virtual page with the left edge of the
-% draft paper (not the left edge of the book pages).
-%
-% The -1in below comes from the default margin, which the DVI driver must
-% set at 1in. Odd pages are on the left, even on the right.
-%
-% First, align the left edge of the virtual page with the left edge of the
-% draft page.
-%
-\oddoffset = -1in
-\advance\oddoffset by \insidemargin
-%
-\evenoffset = -1in
-\advance\evenoffset by \outsidemargin
-
-% For centered pages, move the virtual page right by half the trim width.
-%
-\ifcenterpage
-% \dimen0 = 8.5in
- \dimen0 = 21cm
- \advance\dimen0 by -\totalwidth
- \divide\dimen0 by 2
- \advance\oddoffset by \dimen0
- \advance\evenoffset by \dimen0
-
-% For uncentered even-numbered pages, align the right edge of the virtual
-% page with the right edge of the draft paper so that we can remove the trim
-% of two-sided pages with a single cut.
-%
-\else
-% \advance\evenoffset by 8.5in
- \advance\evenoffset by 21cm
- \advance\evenoffset by -\totalwidth
-\fi
-
-\hoffset = \oddoffset % First page is numbered one.
-
-% Now for the vertical, which is simpler, since it doesn't vary from
-% page to page.
-% 11" = 66.2475pc exactly.
-% \totalheight should = \topmargin + \bottommargin + \vsize.
-%
-%\totalheight = 9.25in % 9 1/4" = 55.708125pc
-\totalheight = 24.39cm % 9 1/4" = 55.708125pc
-\topmargin = 6pc % Distance from top of page to baseline of text line 1
-\bottommargin = 6pc % Distance from last line to bottom of page.
-\topskip = 2pc % Distance from top of \box255 to baseline of text line 1
-% \vsize Distance from top of \box255 to last line of text.
-% \headmargin Distance from top of \box255 to top of page
-% We'll place the headline just above \box255
-
-\headmargin = \topmargin \advance \headmargin by -\topskip
-
-\vsize = \totalheight
-\advance \vsize by -\headmargin
-\advance \vsize by -\bottommargin
-% \vsize should now be 46.708125pc
-
-\voffset = -1in % align top of logical page with top of physical page
-\advance \voffset by \headmargin
-\ifcenterpage
-% \dimen0 = 11in
- \dimen0 = 29cm
- \advance\dimen0 by -\totalheight
- \divide\dimen0 by 2
- \advance\voffset by \dimen0
-\fi
-
-\topskip = 2pc % Distance from headline to first line of text.
-
-
-% Other formatting parameters.
-%
-% The basic increments we'll use in the layout.
-%
-\def\setskip#1 = #2 {%
- \dimen0 = #2\baselineskip
- \csname #1skipamount\endcsname =
- \dimen0 plus .33\dimen0 minus .25\dimen0
- \ignorespaces
-}
-\newskip\greaterskipamount
-\newskip\greatskipamount
-\newskip\biggerskipamount
-\newskip\medbigskipamount
-\newskip\medsmallskipamount
-\newskip\tinyskipamount
-
-\setskip greater = 2.5
-\setskip great = 2.0
-\setskip bigger = 1.5
-\setskip big = 1.0
-\setskip medbig = .75
-\setskip med = .5
-\setskip medsmall = .375
-\setskip small = .25
-\setskip tiny = .125
-
-\parindent = 1em
-\newdimen\normalindent \normalindent = \parindent
-
-\footnotemarkseparation = .16666em
-
-\abovelistskip = \smallskipamount
-\interitemskip = \tinyskipamount
-\belowlistskip = \smallskipamount
-\listleftindent = \parindent
-
-% Displays involve text and math. We don't want as much flexibility in
-% the glue as plain.tex sets.
-%
-\abovedisplayskip = \medsmallskipamount
-\abovedisplayshortskip = 0pt plus 2pt
-\belowdisplayskip = \medsmallskipamount
-\belowdisplayshortskip = \belowdisplayskip
-
-\newskip\intercapsuleskip \intercapsuleskip = .75\tinyskipamount plus 0.4pt
-\newdimen\capsulehangindent \capsulehangindent = 2pc
-
-\newskip\aboveconceptskip \aboveconceptskip = \bigskipamount
-
-
-\newskip\abovesectionskip \abovesectionskip = \greaterskipamount
-% No stretch or shrink below heads, according to A-W.
-\newskip\belowsectionskip \belowsectionskip = 1\biggerskipamount
-
-\newskip\abovesubsectionskip \abovesubsectionskip = \greatskipamount
-\newskip\belowsubsectionskip \belowsubsectionskip = 1\bigskipamount
-
-\newskip\abovedescriptionskip \abovedescriptionskip = \biggerskipamount
-\newskip\belowdescriptionskip \belowdescriptionskip = \medskipamount
-
-\newskip\explainskip \explainskip = \tinyskipamount
-\newskip\exampleskip \exampleskip = \smallskipamount
-
-\def\interexampleskip{\vskip\medsmallskipamount}
-\def\tinyskip{\vskip\tinyskipamount}
-
-% Space in which a symbol is shown in a columnated list of commands.
-\newdimen\symbolspace \symbolspace = 14pt
-
-% \colsindent is the indentation before material arranged in columns and
-% displayed, as in the list of Greek letters.
-\newskip\colsindent \colsindent = \parindent
-
-% The indentation for page lists in the index that don't fit on one line.
-\newdimen\indexpageindent \indexpageindent = 1pc
-
-% The indentation for subsidiary entries in the index. (Should be less
-% than \indexpageindent.)
-\newdimen\indexlevelindent \indexlevelindent = .5pc
-
-\newskip\codebaselineskip \codebaselineskip = \baselineskip
-
-% Fill the previous page with blank space before a command.
-%
-\def\cmdbreak{\par\nobreak\vfil\penalty 1000\vfilneg\par}
-
-% Penalties.
-%
-\newcount\conceptpenalty \conceptpenalty = -1500
-\newcount\intercmdnamepenalty \intercmdnamepenalty = 300
-\newcount\@intercmdnamepenalty \@intercmdnamepenalty = \intercmdnamepenalty
-
-
-
-% The output routine.
-%
-\output = {%
- \onepageout
- %
- % Odd pages are right-hand pages.
- %
- % Note \pageno has been incremented when we get here -- it now refers
- % to the page number of the page about to be typeset, not the page
- % that we just shipped out.
- %
- \ifodd\pageno % \onepageout advances \pageno.
- \global\hoffset = \oddoffset
- \global\intercmdnamepenalty = 10000
- \else
- \global\hoffset = \evenoffset
- \global\intercmdnamepenalty = \@intercmdnamepenalty
- \fi
-}
-
-\ifdvi\else\output={%
- \setbox0=\box255\deadcycles=0
- \advancepageno
- \global\advance \truepage by 1
- \ifnum\outputpenalty>-20000\else \dosupereject \fi
- }
-\fi
-
-\def\onepageout{%
- \shipout\vbox{%
- \offinterlineskip % The page should have vertically abutting boxes.
- \ifodd\pageno
- \cropmargin = \insidemargin
- \else
- \cropmargin = \outsidemargin
- \fi
- \addcropmarks % Does not affect the position.
- \ifcenterpage \addtruepage \fi
- %
- \ifedgetabs \ifodd\pageno \ifnoheadline\else
- \edgetabs % Does not affect the position.
- \fi\fi\fi
- %
- \vbox to 0pt{\vskip-\headmargin \vskip-3.5pc
- \rightline{\sevenrm\timestamp}\vss}%
- %
- \smash{\line{\the\headline}}% Simplified \makeheadline.
- \pagebody
- \vskip 2\normalbaselineskip
- % The footline is needed on one page (for an example).
- \line{\the\footline}%
- }%
- % Now the rest from \plainoutput:
- \advancepageno
- \global\advance\truepage by 1
- \ifnum\outputpenalty>-20000\else \dosupereject \fi
-}
-
-\footline = {\hfil}
-
-% The headline always includes the name of the current chapter. This
-% goes on the inside. If more information, such as the concept we're
-% explaining, is included, it goes on the outside.
-%
-\headline = {%
- % Produce the timestamp
- \ifnoheadline
- \hfil
- \global\noheadlinefalse
- \else
- \let\\ = \ignorespaces
- \ifodd \pageno % Right-hand page.
- {\tenit \firstmark}\hfil {\tenbf \folio}%
- \else % Left-hand page.
- {\tenbf \folio}%
- \hfil
- {\tenit
- \chaptername
- \ifnum\pageno>0\ifback\else
- \quad $\backslash$\quad\S\the\chapterno
- \fi\fi
- }%
- \fi
- \fi
-}
-
-% Sizes for cropmarks:
-%
-\newdimen\cropthick \cropthick = 0.4pt
-\newdimen\crophsize \crophsize = 1pc
-\newdimen\cropvsize \cropvsize = 1pc
-\newdimen\cropoffset \cropoffset = .0625in
-
-% Each of the following macros generates a quarter of a cropmark as
-% a zero-size box at the center point of the cropmark.
-% We want the cropmarks to be centered with respect to their thicknesses.
-
-\def\vcropdown {\hbox to 0pt{%
- \kern -.5\cropthick
- \vbox to 0pt{%
- \vskip \cropoffset
- \hrule width\cropthick depth\cropvsize height0pt
- \vss}%
- \kern -.5\cropthick}%
-}
-
-\def\vcropup {\hbox to 0pt{%
- \kern -.5\cropthick
- \vbox to 0pt{%
- \vss
- \hrule width\cropthick depth\cropvsize height0pt
- \vskip \cropoffset}%
- \kern -.5\cropthick}%
-}
-
-\def\hcropright{\rlap{\kern\cropoffset\smash{%
- \vrule width\crophsize depth .5\cropthick height .5\cropthick}}}
-
-\def\hcropleft{\llap{\smash{%
- \vrule width\crophsize depth .5\cropthick height .5\cropthick}%
- \kern\cropoffset}}
-
-% \cropmargin will be set to the left margin on the current page.
-%
-\newdimen\cropmargin
-\def\cropline#1{\moveleft\cropmargin\hbox to \totalwidth{#1}}
-
-% \addcropmarks adds the cropmarks to a page while leaving everything else
-% alone. It assumes we're positioned at the top of the page.
-
-\def\addcropmarks{%
- \vbox to 0pt{%
- \offinterlineskip % contextually redundant but precautionary
- \vskip -\headmargin % to get to logical top of page
- \ifcenterpage
- \cropline{\hcropleft\vcropup \hfil \vcropup\hcropright}
- \else
- \cropline{\hfil \vcropdown}%
- \fi
- \vskip\totalheight
- \ifcenterpage
- \cropline{\hcropleft\vcropdown \hfil \vcropdown\hcropright}%
- \else
- \cropline{\hcropright\hfil\hcropleft\vcropup\vcropdown\hcropright}%
- \fi
- \vss
-}}
-
-% \addtruepage adds a small page number near the upper right cropmark.
-%
-\newcount\truepage \truepage = 1
-\def\addtruepage{%
- \vbox to 0pt{\vskip -\headmargin\vskip -2pc
- \moveleft\cropmargin\hbox to \totalwidth{%
- \twelvebf
- \quad\TeX\ pour l'Impatient\hss
- N\raise 3.3pt\hbox{o} \the\truepage\quad}%
- \vss}%
-}
-
-
-% The mark information is output by \markinfo.
-%
-% We can use a different mark, e.g., a shorter heading, by calling
-% \changemark.
-%
-\newtoks\shortmark \shortmark = {}
-\newif\ifchangemark
-
-\def\markinfo#1{%
- \ifchangemark
- \mark{\the\shortmark}\changemarkfalse
- \else
- \mark{#1}%
- \fi
-}
-
-\def\changemark#1{\shortmark = {#1}\changemarktrue}
-
-
-% ``Tabs'' down the side of the book.
-% Say \nextedgetab to move the thing down to the next.
-% Say \edgetabsfalse to turn them off.
-%
-\newcount\numtabs \numtabs = 7
-\newdimen\edgetabjump \edgetabjump = 0pt
-\def\nextedgetab{%
- \advance\edgetabjump by \edgetabdepth
-}
-
-\def\settabdepth#1{%
- \edgetabdepth = #1
- \setbox\tabbox = \vbox to \edgetabdepth{%
- \leaders
- \vbox{\vskip \edgespacing
- \hrule width\edgetabwidth height0pt depth\edgethick}%
- \vfil}
-}
-
-\newskip\bigtab \newskip\smalltab
-\newskip\edgetabdepth
-\newbox\tabbox
-
-\bigtab = \totalheight \divide\bigtab by \numtabs
-\smalltab = .4\bigtab % five smalls make two bigs
-
-\newdimen\edgetabin \edgetabin = .25in
-\newdimen\edgetabbleed \edgetabbleed = .25in
-\newdimen\edgetabwidth
- \edgetabwidth = \edgetabin
- \advance \edgetabwidth by \edgetabbleed
-\newdimen\edgethick \edgethick = 1.2pt % line thickness
-\newdimen\edgespacing \edgespacing = .0pt % line spacing
-
-
-\def\edgetabs{\vbox to 0pt{%
- \vskip-\headmargin
- \vskip\edgetabjump
- \hbox{%
- \hskip \hsize
- \hskip\outsidemargin
- \hskip-\edgetabin
- \copy\tabbox
- }%
- \vss
-}}
-
-
-% We can simplify \pagecontents (which is called by \pagebody) somewhat,
-% since we don't have \topinserts.
-%
-\def\pagecontents{%
- \unvbox255 % The main page contents.
- %
- \ifvoid\footins\else % Footnotes are present.
- \vskip\skip\footins
- \footnoterule
- \unvbox\footins
- \fi
-}
-
-
-% The command chapters had a mini-index at the bottom of right-hand
-% pages. These definitions are the way to put entries into it.
-%
-% \minref generates a reference for the mini-index, and prints the
-% reference on the page, also.
-%
-\def\minref#1{%
- #1% Print it on the page.
- % That's it, now.
-}
-
-% Mini-index entry without printing the argument on the page.
-% Just ignore the argument now.
-%
-\def\minrefs#1{%
- \ignorespaces
-}
-
-% This is used for producing the concept mini-index.
-%
-\def\minrefsdelim#1\endmark{\minrefs{#1}}
-
-% One last insertion-oriented thing:
-% we always want numbered footnotes, as defined in eplain.
-% We'll do them in 8-point type.
-%
-\let\@plainfootnote = \footnote
-\let\footnote = \numberedfootnote
-\everyfootnote = {\footnotefonts}
-
-
-% The \margin macro produces a marginal note at the same level as its call.
-% It should only be used in a paragraph or in the main vertical list.
-% It is nullified when we're printing the final copy.
-%
-\def\margin#1{%
- \ifhmode
- \vadjust{\printmarginnote{#1}}%
- \else
- \dimen0 = \prevdepth
- \prevdepth = -1000pt
- \printmarginnote{#1}%
- \prevdepth = \dimen0
- \fi
- \ignorespaces
-}
-
-\def\printmarginnote#1{%
- \hbox to 0pt{%
- \hskip 1.1\hsize
- \vbox to 0pt{%
- \everypar = {}% Don't inherit hanging indentation.
- \hsize = 1in \rightskip = 0pt plus 1fil \noindent \sevenrm
- \let\tt = \eighttt
- \parfillskip = 0pt plus 1fil
- \baselineskip = 8pt #1%
- \vss
- }%
- \hss
- }%
-}
-
-%\iffinal
-\iftrue
- \def\margin#1{\ignorespaces}
-\fi
-
-
-% Stuff to preserve page breaks inserted for the 2nd printing.
-% This macro takes one ``argument''.
-%
-\def\secondprinting{\afterassignment\finishsecondprinting \toks0 = }
-\def\finishsecondprinting{\the\toks0}
-
-
-
-% Parts of the book.
-%
-%
-% Chapters.
-%
-\let\chaptername = \empty
-\newcount\chapterno
-
-\def\chaprule{\vrule depth3\baselineskip height1.5pc width1pt}
-
-% Chapter openings should not have headlines.
-% The text of each chapter starts on a right-hand page in the final
-% book. The facing page has an illustration. This means that if the
-% previous chapter ended on a left-hand (i.e., even) page, we have to
-% eject an extra blank page.
-%
-\outer\def\chapter#1 \par{%
- \ifcompletebook % Don't do the blank pages for proof copies.
- \blankpage % the illustration page
- % The first real chapter starts on page 1.
- \ifnum\pageno < 0 \pageno = 1 \fi
- \fi
- %
- \def\chaptername{ #1\Black}%
- \advance\chapterno by 1
- %
- \setbox0 = \hbox{\Blue\chapternumeralfont
- \kern1pt
- \expandafter\kernchapno\the\chapterno\empty
- \kern3pt}%
- \vglue 0pt % But we get a \topskip of 2pc now.
- \nointerlineskip
- \leftline{%
- \ifback\else
- \vtop{%
- \copy0
- \vskip6pt
- \hrule width\wd0 height2.2pc
- }%
- \kern 16pt
- \fi
- \chapterfonts % to get \baselineskip now
- \chaprule
- \kern 6pt
- \vtop{%
- \def\linebreak{\hfil\break}%
- \noindent \chaptername}%
- }%
- \vskip 6pc plus.5pc minus.5pc
- \noheadlinetrue
- \toks0=\expandafter{\chaptername}
- \edef\writechaptertoc{%
- \noexpand\writenumberedtocentry{chapter}{\the\toks0}{\the\chapterno}%
- }%
- \writechaptertoc
- %
- % Use chaptername as first A-head (or only one).
- \mark{\chaptername}%
- \footnotenumber = 0 % Number footnotes from 1 in each chapter.
- \beginit{CHAPTER}%
- \noindent
- \ignorespaces
-}
-
-\def\endchapter{%
- \mark{\chaptername}% Use chapter name on last blank recto page
- \vfil\eject % be sure everything's out before testing for recto
- \ifodd\pageno
- \message{Le chapitre se termine sur une page paire.}%
- \blankpage
- \fi
- \endit{CHAPTER}%
-}
-%
-% \blankpage creates a blank page with no headline.
-% In the final book, it just advances the page number.
-% For the web edition, the blank pages serve no purpose except to keep
-% the indexing correct. I didn't want to rerun the index.
-%
-\def\blankpage{%
- \iffinal
- \advancepageno
- \global \advance \truepage by 1
- \else
- \noheadlinetrue\pagebreak
- \fi
-}
-
-% This hokey little macro kerns between the numerals in the chapter
-% number. We want to kern more between `11' then otherwise; also, we
-% want to remove the extra space before the chapter number, and after
-% `11'.
-%
-\def\kernchapno#1#2{%
- \ifx\empty#2\else \kern-3pt \fi
- #1%
- \ifx\empty#2\else
- \if1#2%
- \kern-.1em
- \else
- \kern-.05em
- \fi
- \fi
- #2%
- \if 1#2\kern-.1em\fi
-}
-
-% Sections.
-%
-\newif\ifheading % Avoid breaking after a heading.
-
-% get section numbers for the fdl only, since it has internal references.
-\let\fdlkludge=\empty
-
-% The heading flag is turned on by headings and turned off
-% at the start of a description.
-%
-\outer\def\section#1 \par{%
- \par % be sure we're in vertical mode
- \saveskip = \lastskip % will be 0 if no skip
- \cmdbreak
- \combineskips\abovesectionskip
- \dimen0 = 2.5\baselineskip \advance\dimen0 by -\topskip
- \vskip -\dimen0
- \vglue \dimen0
- %
- {\sectionfonts \leftline{\fdlkludge\Red #1\Black}}%
- %
- \markinfo{#1}%
- \writetocentry{section}{#1}%
- \nobreak
- % Don't go into horizontal mode within the command descriptions.
- %
- \vskip\belowsectionskip
- \ifcommands \else \noindent \fi
- \headingtrue
- \everypar = {\headingfalse \global\everypar = {}}%
- % only gets executed for \par in horizontal mode
- \ignorespaces
-}
-
-
-% Subsections. We don't want a break at the glue if we were preceded by
-% a \nobreak.
-%
-\def\subsection#1 \par{%
- \par % be sure we're in vertical mode
- \saveskip = \lastskip % will be 0 if no skip
- \ifheading % Did we just have \section?
- \nobreak
- \fi
- \combineskips\abovesubsectionskip
- \dimen0 = 2.5\baselineskip \advance\dimen0 by -\topskip
- \vskip -\dimen0
- \vglue \dimen0
- %
- {\subsectionfonts
- \leftline{\vrule width.5em height1.2ex depth.2ex \enspace \RawSienna #1\Black}}%
- \writetocentry{subsection}{#1}%
- \nobreak
- % Don't go into horizontal mode within the command descriptions.
- \vskip\belowsubsectionskip
- \ifcommands \else \noindent \fi
- \headingtrue
- \everypar = {\headingfalse \global\everypar = {}}%
- % only gets executed for \par in horizontal mode
- \ignorespaces
-}
-
-% \combineskips combines the current skip (#1) with the previous skip
-% (which must be in \saveskip), and effectively skips by the larger of
-% the two.
-%
-\newskip\saveskip
-\def\combineskips#1{\ifdim\saveskip<#1\vskip-\saveskip \vskip#1\fi}
-
-
-
-% List macros.
-%
-
-% We want to use different names than eplain.
-%
-\let\ulist = \unorderedlist
-\let\endulist = \endunorderedlist
-%
-\let\olist = \numberedlist
-\let\endolist = \endnumberedlist
-
-\let\compact = \listcompact
-
-% The \noindent here keeps us from getting indentation on the first line.
-% It also makes the display into a `short' display, FYI.
-% The \belowdisplayskip and \abovedisplayskip glue are inserted by the
-% display.
-%
-\long\def\display#1{%
- \ifvmode \noindent \fi
- $$\vtop{\everypar = {}\hsize = \displaywidth
- \parfillskip = 0pt plus 1fil % don't worry about widows
- \noindent #1\par\global\savedepth = \prevdepth}$$%
- \endgraf
- \prevdepth = \savedepth
-}
-
-% \vdisplay is like \display, except it's for vertical mode material. Use it
-% to avoid an unwanted initial lineskip.
-%
-\long\def\vdisplay#1{%
- \ifvmode \noindent \fi
- $$\vtop{\everypar = {}\hsize = \displaywidth
- \parfillskip = 0pt plus 1fil % don't worry about widows
- #1\par\global\savedepth = \prevdepth}$$%
- \endgraf
- \prevdepth = \savedepth
-}
-
-
-
-% Indexing.
-% Derived from Knuth's manmac macros.
-%
-\newwrite\index
-
-\immediate\openout\index = \jobname.idx
-\newif\ifsilent
-
-% We need ^ to be active temporarily, while we define it.
-%
-{ \catcode`\^ = \active
-%
-\gdef^{%
- \ifmmode
- \let \nextaction = \sp
- \else
- \let \nextaction = \beginindexref
- \begingroup
- \catcode `| = \other \catcode `^ = \other
- \fi
- \nextaction
-}}
-
-\def\beginindexref{\futurelet\next\checksilence}
-
-{% And for here, we need ^ to be deactivated
-\catcode `^ = \other
-
-\gdef\checksilence{%
- \if ^\next
- \silenttrue \let\nextaction = \secondhat
- \else
- \silentfalse \let\nextaction = \checkbar
- \fi
- \nextaction
-}
-
-% Eat the `^' that we saw would be the next token.
-%
-\gdef\secondhat^{\checkbar}
-
-} % end scope where ^ is \other
-
-\def\checkbar{\futurelet\next\iswitch}
-
-% Here we start reading the text of the actual index entry;
-% we've determined whether it's silent or not.
-%
-% We handle the following cases:
-% ^{alpha} and ^^{alpha}
-% ^|alpha| and ^^|alpha|
-% ^|\alpha| and ^^|\alpha|
-%
-% When this is called, \next is either `|' or `{'.
-%
-\def\iswitch{%
- \ifx |\next
- \let \nextaction = \checkbackslash
- \else
- \let \nextaction = \normalidx
- \fi
- \nextaction
-}
-
-\def\checkbackslash|{%
- % within |...| we allow anything (but another |)
- \deactivate \catcode `\ = \other
- \futurelet\next\litidx
-}
-
-% The thing after the ^ is a |. We have further checking to do -- is
-% the next character a \?
-%
-{ % reverse \ and /
-\catcode`\/ = 0
-\catcode`\\ = \other
-/gdef/litidx{%
- /if \/next
- /expandafter/litidxA
- /else
- /expandafter/litidxB
- /fi
-}
-
-% The thing being indexed starts with a \.
-%
-/gdef/litidxA \#1|{%
- /ctsidxref{#1}%
- /litidxswitch{/\#1}%
-}
-
-% The thing being indexed is just a word.
-%
-/gdef/litidxB #1|{%
- /ttidxref{#1}%
- /litidxswitch{#1}%
-}
-}% end reversal of \ and /
-
-% The thing after the ^ is not a |.
-%
-\def\normalidx#1{%
- \ifsilent
- \aftergroup\ignorespaces
- \else
- #1%
- \fi
- \idxref{#1}%
- \endgroup % group started by \iswitch.
-}
-
-\def\litidxswitch#1{%
- \ifsilent
- \aftergroup\ignorespaces
- \else
- {\tt #1}%
- \fi
- \endgroup % group started by \iswitch.
-}
-
-
-
-% Indexing macros for external use.
-
-% \idxref generates an index entry for #1. If #1 contains any control
-% sequences, they are treated literally.
-%
-\def\idxref#1{\indexwrite{#1}N\ignorespaces}
-
-
-% For creating an index entry for control space.
-{\catcode `\ =\other
-\gdef\blankidxref{\ctsidxref{ }}
-}
-
-% I removed this macro from eplain because \csname works as well, but
-% since the macros below are already written to use it ...
-\def\@tokstostring#1{\@ttsA#1 \@ttsmarkA}%
-\let\tokstostring=\@tokstostring
-\def\@ttsA#1 #2\@ttsmarkA{%
- \@ifempty{#1}\else
- \@ttsB #1\@ttsmarkB
- \@ifempty{#2}\else
- \@spacesub\@ttsA#2\@ttsmarkA
- \fi
- \fi
-}%
-\def\@ttsB#1{%
- \ifx #1\@ttsmarkB\else
- \string #1%
- \expandafter\@ttsB
- \fi
-}%
-\def\@ttsmarkB{\@ttsmarkB}% should never be expanded
-%
-\def\@spacesub{+}%
-\let\spacesub = \@spacesub
-%
-\def\@ifempty#1{\@@ifempty #1\@emptymarkA\@emptymarkB}%
-\def\@@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}%
-\def\@emptymarkA{\@emptymarkA}% Again, so \ifx won't complain.
-
-% #1 is the index term, #2 is the reference as in
-% Diacritical mark, see accent.
-
-\def\idxsee#1#2{%
- \begingroup
- \def\spacesub{\otherspace}%
- \edef\nextaction{\write\index{\tokstostring{#1}::N::*\tokstostring{#2}}}%
- \nextaction
- \ignorespaces
-\endgroup}
-
-
-% \ttidxref generates an index entry for #1 in the program font.
-% If #1 contains any control sequences, they are treated literally.
-%
-\def\ttidxref#1{\indexwrite{#1}T\ignorespaces}
-
-
-% \ctsidxref generates an index entry for a control sequence. #1
-% should not have a preceding backslash, so that the proper call for
-% indexing \alpha is \ctsidxref{alpha}.
-%
-\def\ctsidxref #1{\indexwrite{#1}C\ignorespaces}
-
-% \indexchar is needed to generate index entries for three especially
-% difficult single characters: {, }, and \. They are blank-delimited.
-%
-\def\indexchar{\begingroup \deactivate \indexcharA}
-\def\indexcharA#1 {\indexwrite{#1}T\endgroup}
-
-% \pix indicates that the next index entry is a principal one.
-%
-\newif\ifpix
-\def\pix{\global\pixtrue}
-
-% \bix and \eix indicate that the next index entry begins or ends a
-% range of pages.
-%
-\newif\ifbix \def\bix{\bixtrue}
-\newif\ifeix \def\eix{\eixtrue}
-
-% #1 is the text of the entry, #2 is N (normal), T (typewriter) or
-% C (control sequence) or `cs' for now.
-%
-\def\indexwrite#1#2{\begingroup
- \def\spacesub{\otherspace}%
- \edef\tts{\tokstostring{#1}}%
- \edef\nextaction{\write\index{\tts::#2::\noexpand\number\noexpand\pageno
- \ifbix B\fi\ifeix E\fi\ifpix P\fi}}%
- \nextaction
- \global\pixfalse \global\bixfalse \global\eixfalse
-\endgroup}
-
-{\catcode `\^ = \other \gdef\twocarets{^^}}
-
-
-% For generating index entries with weird characters, we need to deactivate
-% them: { } blank \ and substitute [ ] ! for { } \ . \recat does this.
-% It should be enclosed in a group (which must end in `]').
-\def\recat{%
- \aftergroup\ignorespaces
- \catcode `\! = 0 \catcode `[ = 1 \catcode `] = 2
- \catcode `\ = \other \deactivate
-}
-
-
-
-% Macros for the front matter.
-%
-% Space at the top of the frontmatter pages.
-%
-\def\sinkage{\vglue 7pc \relax}
-
-% And at the top of the backmatter pages.
-%
-\def\backsinkage{\vglue 2pc \relax}
-
-% \frontchapter doesn't care if we're on an even page or an odd page.
-%
-\def\frontchapter#1 \par{%
- \def\chaptername{ #1}%
- \leftline{%
- \chapterfonts
- \chaprule
- \kern 6pt
- \vtop{%
- \def\linebreak{\hfil\break}%
- \noindent \Blue\chaptername\Black}%
- }%
- \vskip 4pc
- \noheadlinetrue
- % Use chaptername as first A-head (or only one)
- \mark{\chaptername}%
- \noheadlinetrue
- \noindent \ignorespaces
-}
-
-
-% We are called from inside a group, so we can redefine the \toc... macros.
-%
-\def\shortcontents{{%
- \firsttoctrue
- \backfalse
- \shorttocfonts
- \let\tocchapterentry = \shorttocchapter
- \let\tocsectionentry = \gobblethree
- \let\tocsubsectionentry = \gobblethree
- \halign{\hfil\strut##&\strut ##\hfil\cr
- \readtocfile
- \crcr}}%
- \pagebreak
- \global\backfalse
-}
-
-% #1 is the chapter name, #2 the chapter number, #3 the page number.
-%
-\def\shorttocchapter#1#2#3{%
- \ifback\else#2\quad $\backslash$\quad\fi\qquad
- \raise3pt\hbox{\vrule height2pt width4pt depth2pt}$\,\,$#3\cr
-}
-
-% Yes, we read the entire contents (several pages) as one alignment.
-%
-\def\contents{{%
- \firsttoctrue
- \backfalse
- \tocfonts
- \interlinepenalty = 100
- \halign{\hfil\strut##&\strut ##\hfil\cr
- \readtocfile
- \crcr}}%
- \pagebreak
- % We want to end the contents on a recto page, even if it's blank
- \ifodd\pageno\pagebreak\fi % leaves us on an even page.
- \global\backfalse
-}
-
-\newif\iffirsttoc
-
-\def\tocchapterentry#1#2#3{%
- \iffirsttoc
- \global\firsttocfalse
- \else
- \noalign{\penalty-1000 \bigskip\smallskip}%
- \fi
- %
- \ifback\else\bf#2\quad $\backslash$\quad\fi
- &\bf#1\qquad\raise3pt\hbox{\vrule height2pt width4pt depth2pt}%
- $\,\,$#3\cr
- \noalign{\nobreak\vskip2pt}%
-}
-
-\def\tocsectionentry#1#2#3{%
- \noalign{\penalty-500 \vskip\medsmallskipamount}%
- &\it #1\quad \openbox$\,\,$\rm #3\cr
-}
-
-\def\tocsubsectionentry#1#2#3{%
- &\qquad #1\quad $\cdot\,$#3\cr
-}
-
-\def\openbox{\ht0 = 1.75pt \dp0 = 1.75pt \wd0 = 3.5pt
- \raise 2.75pt \makeblankbox{.2pt}{.2pt}%
-}
-
-\newif\ifback
-% \ifback is true when we're doing the table of contents and are about
-% to do the back matter. It is also true just before we do the back matter
-% chapters (really, only the index).
-%
-\def\backmatter{\write\tocfile{\noexpand\setback}\backtrue}
-\def\setback{\noalign{\bigskip\global\backtrue}}
-
-
-
-% Macros for the examples chapter.
-%
-% \doexamples is called with the name of the examples file
-% Each example is ended by ::: (including the last one)
-% A line starting with ~ is executed in the output (without the ~)
-% but dropped from the input.
-%
-% Within the input, ! is an escape character, but {} are not recognized.
-% This provides a limited control sequence capability, which is sufficient
-% for delimited macros and therefore for cross-references (see \xrefdelim).
-% !! stands for !.
-%
-\def\endmark{:::}
-
-\newif\ifnotatend \newif\ifnotatendfile \newif\iftildeline
-\newread\exfileA \newread\exfileB \newwrite\exfileC
-\newcount\examplenumber
-
-\def\doexamples#1{%
- % Here we assume that two read-only openings of the same file are OK.
- \immediate\openin\exfileA = #1
- \immediate\openin\exfileB = #1
- \loop
- \advance\examplenumber by 1
- \reader
- \ifx\holder\empty \notatendfilefalse \else \notatendfiletrue \fi
- \ifnotatendfile
- \dooneexample
- \repeat
-}
-
-
-% We want control sequences to be executed as the input of each example
-% is formatted, but we don't want to execute them for the output of each
-% example until we generate that output with an \input command.
-% Therefore, we treat ! differently for \holder, which produces example
-% input, and \holderA, which produces example output.
-%
-% We can't say \global\immediate\read, but \immediate is implied with \read.
-%
-\def\reader{{\deactivate
- \catcode`\! = \other % To execute control sequences on \input.
- \catcode`\^^M = 9 \global\read\exfileA to \holder
- %
- \catcode`\! = 0 % To execute control sequences right away.
- \obeyspaces \global\read\exfileB to \holderA
- }%
-}
-
-\def\dooneexample{{%
- % We want to mention \! in one of the examples:
- \edef\examplenum{\numbername\examplenumber}%
-
- \immediate\openout\exfileC = \tempfile
-
- \catcode`\| = \other % No literal code in these examples.
- \chardef\! = `\! % !! means a literal ! character.
-
-
- % Collect the input page, as it is to be printed, in a box
- % At the same time, write out each line to \exfileC
- % We make the box 0pt tall to avoid problems with overfull pages.
- \setbox\xmpinput = \vbox to 0pt{%
- %
- \baselineskip = \codebaselineskip
- \loop
- \ifx\endmark\holder \notatendfalse \else\notatendtrue \fi
- \ifnotatend
- \expandafter\tildecheck\holder \empty \marker
- \iftildeline\else
- \leftline{\tt\frenchspacing \holderA \thinspace}%
- \immediate\write\exfileC{\holder}%
- \fi
- \reader
- \repeat
- \vss % reduce height to 0pt
- }% end \vtop
-
- \immediate\closeout\exfileC
-
- {%
- \maxdepth = \maxdimen % allow long input
- \vfill\eject
- \catcode`\! = 0
- \restoreplainTeX
- {%
- \let\eject = \relax \input\tempfile
- % Every example ends with \bye, but \bye is disabled in the main text.
- \vfill\par\penalty-10000
- \global\footline = {\hfil}%
- }%
- \box\xmpinput
- }%
-}}
-
-{
- \catcode `\~ = \other % So the \ifx works.
- \gdef\tildecheck#1#2\marker{%
- \ifx #1~%
- \immediate\write\exfileC {#2}\tildelinetrue
- \else
- \tildelinefalse
- \fi
- }
-}
-
-% This definition is more or less repeated verbatim in the first example
-% in xmptext.tex.
-%
-\def\xmpheader #1/#2{%
- {\exampletitlefonts \leftline{Exemple #1~:\quad \bi#2}}%
- \vglue .5\baselineskip
- \count255 = \pageno
- \xdef\examplepage{\number\count255}%
- \markinfo{Exemple #1~: #2}
- \ifrewritetocfile
- \write\tocfile{\string\tocsectionentry{#2}{}{\examplepage}}%
- \fi
-}
-% Let's number examples automatically; it makes it easier to move them
-% around and add new ones.
-
-\def\xmpnum{\number\examplenumber}
-
-\newbox\xmpinput
-
-
-% \negthin lets us put `\!' in examples.
-
-\def\negthin{\ifmmode \mskip-\thinmuskip \else \char`\\ \char`\! \fi}
-
-\def\xmpheaddef{voir \xref{xmphead}}
-
-\def\restoreplainTeX{%
- % Restore plain TeX's parameters (except for \hsize and \hoffset).
- \parindent = 20pt
- \parskip = 0pt plus 1pt
- \parfillskip = 0pt plus 1fil
- \hfuzz = 0.1pt
- \hbadness = 1000
- \abovedisplayskip=12pt plus 3pt minus 9pt
- \abovedisplayshortskip=0pt plus 3pt
- \belowdisplayskip=12pt plus 3pt minus 9pt
- \belowdisplayshortskip=7pt plus 3pt minus 4pt
- \everymath = {}%
- \everydisplay = {}%
- \centereddisplays
- \let\vfootnote = \@plainvfootnote
- \let\footnote = \@plainfootnote
- \let\tenrm = \oldtenrm
- \textfont0 = \tenrm
- \rm
- \ignorespaces
-}%
-
-
-
-% Macros for the concepts chapter.
-%
-%
-% Start off the chapter.
-%
-\def\beginconcepts{\openout\conceptfile = \jobname.ccs }
-\def\endconcepts{\closeout\conceptfile}
-
-\newwrite\conceptfile
-
-% \concept produces a concept heading and also generates a crossreference
-% suitable for the mini-index. It even works for concepts with several words
-% or containing control sequences like `\ascii'.
-%
-\def\concept#1 \par{%
- \par%\vfill\eject
- %k \cmdbreak
- \penalty\conceptpenalty\vskip\aboveconceptskip
- %k \vskip 0pt plus 1pt % allow a little more stretch
- \noindent
- % generate the index entry
- \ifconceptindex \else \global\indextoks = {\idxref{#1}}\fi
- \conceptindexfalse
- \pix\bix\the\indextoks
- %
- {\bt \let\it=\bti \unskip\null \RawSienna\bf #1.\Black\hskip1em plus.2em minus.2em }%
- \markinfo{#1}%
- \xrdef{#1}%
- \write\conceptfile{\string\doconcept{#1}{\number\pageno}}%
- \beginit{CONCEPT}%
- \nobreak
- \ignorespaces
-}
-
-\def\endconcept{%
- \par % always go to vertical mode here
- \eix\the\indextoks
- \endit{CONCEPT}%
- \ignorespaces
-}
-
-\def\doconcept#1#2{\hbox{#1\quad #2}}
-
-% Sometimes we want to index a concept under some other name than the
-% concept name, e.g., indexing `delimiter' as `delimiters'. The
-% \conceptindex macro lets us do this.
-%
-\newif\ifconceptindex
-\newtoks\indextoks
-\def\conceptindex#1{%
- \conceptindextrue
- \global\indextoks = {\idxref{#1}}%
- \ignorespaces
-}
-
-
-% Commands for cross-referencing within the concepts chapter.
-% Each refterm has the form {a} or {a:b}, where b is the term to
-% actually reference (e.g., \refterm{\PlainTeX:\plainTeX}).
-%
-\def\refterm#1{%
- \reftermA #1:\endmark % Parse the stuff.
- \expandafter\minrefsdelim\termtoref\endmark
- \relax % Cancel the \ignorespaces.
-}%
-\def\reftermA#1:{\reftermfirst{#1}\futurelet\next\reftermB}
-\def\reftermB#1\endmark{\ifx\endmark \next \else \reftermsecond#1\fi}
-
-\def\reftermfirst#1{#1\def\termtoref{#1}}
-\def\reftermsecond#1:{\def\termtoref{#1}}%
-
-% The defining sentence for a concept.
-%
-\def\defterm#1{{\it #1\/}}
-
-
-% This macro prints the single page that will go on the back cover.
-%
-\def\printconceptpage{%
- % Make sure this is considered an odd page.
- \ifodd\pageno\else\blankpage\fi
- \noheadlinetrue
- \advance\hsize by 2pc
- \vglue2pc % Plus a \topskip of 2pc.
- {\sectionfonts \leftline{Liste des concepts}}%
- \vskip\belowsectionskip
- {\conceptpagefonts
- \parindent=0pt
- \makecolumns 94/3:
- \input \jobname.ccs
- \vfil
- % Put the `logo' at the bottom of the page.
- \rightline{\thisbook}%
- }%
- \eject
-}
-
-
-
-% Macros for the commands chapters.
-%
-% \ifcommands is true when we're within \begindescriptions ...
-
-\newif\ifcommands
-
-
-% \begindescriptions should be called to start the actual control sequences.
-%
-\outer\def\begindescriptions{\beginit{DESCRIPTIONS}%
- % The following definitions are local to this chapter.
- %
- \let\example = \commandexample
- \let\endexample = \endcommandexample
- \interlinepenalty = 50
- %
- \commandstrue
- \ignorespaces
-}
-
-% The \endgroup that \enddescriptions does must come after the page
-% break, so the last page of descriptions will get a mini-index.
-%
-\def\enddescriptions{%
- \vskip -\lastskip % undo the skip created by \enddesc
- \endit{DESCRIPTIONS}%
- \ignorespaces
-}
-
-
-% Begin or end the description of a control sequence or group thereof.
-%
-\def\begindesc{%
- \par % force vertical mode
- \saveskip = \lastskip % will be 0 if no skip
- \ifheading % Did we just have \section or \subsection?
- \nobreak
- \else
- \cmdbreak
- \fi
- \combineskips\abovedescriptionskip
- \headingfalse
- \beginit{DESCRIPTION}%
- \beginit{COMMANDS}%
- % Each command name is set as a paragraph (for reasons I don't
- % remember, \leftline doesn't work because of the way the manuscript
- % was typed), and so \clubpenalty will be the penalty at the
- % interline glue (see p.96).
- \clubpenalty = \intercmdnamepenalty
- \parfillskip = 0pt plus 1fil
- \ignorespaces
-}
-
-\def\enddesc{%
- \nobreak % if we need a break, we'll get it from the next group opener
- \vskip\belowdescriptionskip
- \endit{DESCRIPTION}%
- \ignorespaces
-}
-
-% Begin the explanation of a control sequence. Don't break at the
-% space above the explanation, or the interline glue before the first line.
-%
-\def\explain{%
- \par
- \endit{COMMANDS}%
- \nobreak \vskip\explainskip
- \interlinepenalty = 50
- \nobreak \noindent
- \ignorespaces
-}
-
-% Here is how \example looks in the text:
-% \example
-% ...
-% |
-% \produces
-% ...
-% \endexample
-%
-% repeated an indefinite number of times.
-%
-% We want to set the code of an example in a box so as to prevent it from
-% being broken across pages. By using \vtop we assure that the code is the
-% right distance from the `Example:' line. In order to keep the `produces:'
-% the right distance from the last code line, we save the depth of that code
-% line and then fool TeX into thinking that the \vtop has that depth by
-% assigning it to \prevdepth. If we didn't do this, the last line of the code
-% would be too close to the `produces:' (as indeed it was in earlier versions
-% of the book.
-%
-\newdimen\savedepth
-
-{\makeactive|
-\gdef\commandexample{% a.k.a. \example, inside \begindescriptions.
- \cmdbreak\vskip\exampleskip
- \leftline{\it Exemple~:}%
- \nobreak % At the interline glue.
- \beginit{EXAMPLE}%
- \parfillskip = 0pt plus 1fil
- \hbox\bgroup\hskip\parindent\vtop\bgroup
- \begincs
- \let | = \endcode
- \advance\hsize by -\parindent
- \parindent = 0pt
- \bgroup\obeywhitespace
-}}%
-
-\def\endcode{%
- \egroup % end \obeywhitespace group
- \par\global\savedepth=\prevdepth
- \egroup % end inner \vbox
- \egroup % end outer \hbox
- \prevdepth = \savedepth
- \ignorespaces
-}
-
-% \dproduces should be used when the following material is a math
-% display.
-%
-\newif\ifexampledisplay
-\def\dproduces{\global\exampledisplaytrue \produces}
-
-\newif\ifproduces
-
-% \produces puts its material into a vbox so it won't be broken.
-% The material starts in VERTICAL MODE! It uses the plainTeX conventions
-% except that \parindent is 0pt.
-
-\def\produces{%
- \producestrue
- \ifodd\pageno \par \nobreak \else \cmdbreak\fi
- \vskip\tinyskipamount
- \noindent {\it produit\ifexamplelog\ dans la log\examplelogfalse\fi~:}%
- \vadjust{\nobreak}% At the interline glue.
- \ifexampledisplay
- \centereddisplays
- \else
- \par\nobreak
- \advance\hsize by -\parindent
- \savedepth = \prevdepth
- \nointerlineskip
- \hbox\bgroup\hskip\normalindent
- \vtop\bgroup \restoreplainTeX \parindent = 0pt
- \prevdepth = \savedepth
- \fi
-}%
-
-% we need another ``produces'' form for when a command puts things in
-% the log. In this case, the produces text also ends with a |.
-%
-\newif\ifexamplelog
-{\makeactive|
-\gdef\logproduces{\examplelogtrue\produces
- \begincs
- \def |{\endcode\producesfalse}%
- % Every line is set as a paragraph, so we get one \parindent for free.
- % But we also did \advance\leftskip in \produces, so now we have two.
- % We only want one.
- \advance\leftskip by -\parindent
- \bgroup\obeywhitespace
-}}%
-
-\def\nextexample{\endexample\interexampleskip\example}
-
-\def\endcommandexample{%
- \par % force vertical mode, set previous paragraph
- \ifproduces \ifexampledisplay \global\exampledisplayfalse \else
- \global\savedepth = \prevdepth
- \egroup % Matches the \vtop in either the \produces or the \example.
- \egroup % Matches the \hbox in \producesbox.
- \global\producesfalse
- \par
- \prevdepth = \savedepth
- \fi\fi
- \endit{EXAMPLE}%
- \ignorespaces
-}
-
-\def\see{%
- \ifodd\pageno\nobreak\fi % don't put at the top of a verso page
- \vskip -\lastskip % should be \belowdescriptionskip
- \bigskip
- \noindent
- {\tenbi \spaceskip = 3.33pt plus 2pt minus 1.1pt
- \parfillskip = 0pt plus 1fil
- Voir aussi~: %k \hskip 1em plus .5em minus .25em
- }%
- \ignorespaces
-}%
-
-
-\newif\ifxref \xreftrue
-
-% \aux acts as a prefix to a \cts command, specifying that a
-% cross-reference should not be generated.
-%
-\def\aux{\xreffalse}
-
-% So does \easy, which prints a hand, pointing at the control sequence.
-% (The hand font doesn't define an em.)
-%
-\newif\ifeasy
-\let\easy = \easytrue
-\def\testeasy{\ifeasy\llap{\hand\ \kern 6pt}\easyfalse\fi}
-
-% \cts typesets the beginning of a control sequence description, and
-% generates an index entry and cross-reference definition for it. The
-% control sequence name must be delimited by a blank, since there may be
-% parameters that follow. The control sequence name can contain special
-% characters; they are deactivated. The initial \ must be omitted.
-%
-\def\cts{\begingroup \deactivate \ctsA}
-\def\ctsA#1 {\endgroup \ctsB{#1}}
-\def\ctsB#1#2{%
- \ctsbasic{\\#1}{#2}%
- \ifxref \ctsxrdef{#1}\else \xreftrue \fi
- \pix\ctsidxref{#1}%
-}
-
-% \ctsx is like \cts, but separates the control sequence name and the
-% text by more space. (`x' for `extra')
-%
-\def\ctsx{\begingroup \deactivate \ctsxA}
-\def\ctsxA#1 {\endgroup \ctsxB{#1}}
-\def\ctsxB#1#2{%
- \ctsbasic{\\#1}{\quad #2}%
- \ifxref \ctsxrdef{#1}\else \xreftrue \fi
- \pix\ctsidxref{#1}%
-}
-
-
-% \ctscol is like \cts, but doesn't start a new paragraph. It's used in
-% in columns of cs's and their explanations.
-%
-\def\ctscol#1 #2{%
- {\bt \\#1}\quad #2%
- \ifxref \ctsxrdef{#1}\else \xreftrue \fi
- \pix\ctsidxref{#1}%
-}
-
-% \ctsbasic does the actual printing of a cs name. It's needed on its
-% own for `\ '. It does not generate any index or cross-reference
-% entries. #1 is the command name, #2 some (possibly empty) text to go
-% next to it.
-%
-\def\ctsbasic#1#2{%
- \par
- \nobreak % At the \parskip glue the \noindent will produce.
- \noindent\testeasy {{\bt #1}\space #2}%
-}
-
-% \ctsxrdef generates a control sequence cross-reference definition.
-% For example, `\ctsxrdef{@star}' generates a cross-reference definition
-% for `\@star'.
-%
-\def\ctsxrdef#1{\expandafter\xrdef\csname#1\endcsname}
-
-% \ctsact prints an active character #1 and generates an index entry
-% for it. #1 is blank-delimited. \ctsact does not generate a
-% cross-reference definition.
-%
-\def\ctsact{\begingroup \deactivate \ctsactA}
-\def\ctsactA#1 {\endgroup
- \ctsbasic{#1}{}%
- \pix\ttidxref{#1}}
-
-% \ctspecial prints a control sequence #1 and generates an index
-% entry for it. #1 is blank-delimited. \ctspecial does not
-% automatically generate a cross-reference definition, and so it's used
-% for things like \newbox and \%.
-%
-\def\ctspecial{\begingroup \deactivate \ctspecialA}
-\def\ctspecialA#1 {\endgroup
- \ctsbasic{\\#1}{}%
- \pix\ctsidxref{#1}%
-}
-
-% \ctspecialx is like \ctspecial, but leaves more space after its
-% argument. We want ` and ' to come from cmtt, instead of Optima, so we
-% call \mapquotes before reading the argument. This only affects the \`
-% and \' descriptions.
-%
-\def\ctspecialx{\begingroup \deactivate \mapquotes \ctspecialxA}
-\def\ctspecialxA#1 {\endgroup
- \ctsbasic{\\#1}{}\quad
- \pix\ctsidxref{#1}%
-}
-
-% \ctsdisplay has a blank-delimited argument consisting of a control
-% sequence such as alpha. It produces $\alpha$ followed by \alpha.
-%
-\def\ctsdisplay#1 {\basicdisplay {$\csname #1\endcsname$}{\\#1}%
- \ifxref\ctsxrdef{#1}\else\xreftrue\fi \pix\ctsidxref {#1}}
-
-% \ctsdoubledisplay has a blank-delimited argument consisting of a
-% control sequence such as bigvee. It produces $\bigvee$ and
-% $\big\bigvee$ followed by \bigvee.
-%
-\def\ctsdoubledisplay#1 {
- {%
- \symbolspace = 42pt
- \basicdisplay{$\csname #1\endcsname\quad
- \displaystyle\csname #1\endcsname$\ddstrut}%
- {\\#1}%
- }%
- \ifxref\ctsxrdef{#1}\else\xreftrue\fi
- \pix\ctsidxref{#1}%
-}
-\def\ddstrut{\vrule width0pt height15pt depth11pt}
-
-% \ctsydisplay displays a control symbol. #1 is a single character,
-% which may be active. #2 is the cross-reference label,
-% blank-delimited.
-%
-\def\ctsydisplay{\begingroup \deactivate\catcode`\|=\other \ctsydisplayA}
-\def\ctsydisplayA#1 #2 {\endgroup
- \basicdisplay{$\csname\string#1\endcsname$}{\\#1}%
- \ifxref \ctsxrdef{#2}\else \xreftrue \fi
- \pix\ctsidxref{#1}%
-}
-
-% \actdisplay displays an active character. #1 is the character, and
-% #2 is the cross-reference label, blank-delimited.
-%
-\def\actdisplay{\begingroup\catcode `\|=\other\actdisplayA}
-\def\actdisplayA#1 #2 {\endgroup
- \basicdisplay{$#1$}{\string#1}%
- \ifxref \xrdef{#2}\else \xreftrue \fi
- \pix\ttidxref{#1}%
-}
-
-% \basicdisplay does the actual typesetting of a control sequence name.
-% for inside displays.
-%
-\def\basicdisplay#1#2{\testeasy\hbox to \symbolspace{#1\hfil}{\bt #2}}
-
-% Printing parameter and table entry headings.
-%
-\def\param#1{\printparam{#1}{param\`etre}}
-\def\tblentry#1{\printparam{#1}{\'el\'ement de table}}
-\def\printparam#1#2{\hskip1.5em [\kern3pt \<#1> #2\kern2pt]}
-
-% Required braces.
-%
-\def\rqbraces#1{\{\hskip2pt#1\hskip2pt\}}
-
-% Printing rulers.
-%
-\def\1{\vrule height 0pt depth 2pt}
-\def\2{\vrule height 0pt depth 4pt}
-\def\3{\vrule height 0pt depth 6pt}
-\def\4{\vrule height 0pt depth 8pt}
-\def\ruler#1#2#3{{$\vcenter{\hrule\hbox{\4#1}}\,\,\rm#2\,{#3}$}}
-\def\doruler{\par \noindent\ruler}
-\def\tick#1{\hbox to .125in{\hfil#1}}
-\def\8{\tick\1\tick\2\tick\1\tick\3\tick\1\tick\2\tick\1\tick\4}
-
-% Macros for the capsule summary chapter.
-%
-\def\begincapsum{\beginit{CAPSULE SUMMARY}%
- \let\bt = \tentt
- \bigskip
-}
-
-\def\endcapsum{\endit{CAPSULE SUMMARY}}
-
-\newbox\@primitivebox \setbox\@primitivebox = \hbox{\tt *}
-\newif\ifcs
-
-\def\capline{\begingroup \deactivate\catcode `\| = \other \caplineA}
-\def\caplineA#1 {\endgroup
- \begingroup
- \catcode `@ = \letter % for constructing labels
- \caplineB{#1}%
-}
-
-% Parameters of \caplineB:
-% #1 name of control sequence
-% #2 description
-% #3 * or empty
-% #4 xref or xref1:xref2 or empty
-
-\def\caplineB#1#2#3#4{%
- \ifempty {#4}\temptrue\else\tempfalse\fi
- % \iftemp needed to avoid \if ... \else ... \fi nesting problems
- \ifcs
- \toks0 = {\caplineout{\\#1}{#2}{#3}}%
- \iftemp
- \toks1 = \expandafter{\csname #1\endcsname}%
- \else
- \toks1 = {#4}%
- \fi
- \edef\nextaction{\the\toks0 {\the\toks1}}%
- \nextaction
- \ctsidxref {#1}%
- \else
- % The \space makes one-character entries line up nicely.
- \caplineout{\space #1}{#2}{#3}{#4}%
- \ttidxref {#1}%
- \fi
- \endgroup
-}
-
-\newif\iftemp
-
-
-% In a few cases we have two cross-references for a single control
-% sequence.
-%
-\newif\ifcstwo
-
-\def\capac{\cstwofalse\csfalse\capline}
-\def\capactwo{\cstwotrue\csfalse\capline}
-\def\capcs{\cstwofalse\cstrue\capline}
-\def\capcstwo{\cstwotrue\cstrue\capline}
-
-% \caplineout produces an output line (or several lines) for the capsule
-% summary. #1 is the command text, #2 is the description, #3 is either * or
-% empty, and #4 is the cross-reference label.
-%
-\def\caplineout#1#2#3#4{%
- \setbox0 = \ifempty {#3}\box\voidb@x \else \copy\@primitivebox\fi
- \vskip\intercapsuleskip
- % If we use \vbox here, a multi-line summary at the top of a page
- % will cause \topskip to disappear.
- %
- \vtop{\noindent \hangindent = \capsulehangindent
- \spaceskip = 3.33pt plus 2pt minus 1.5pt
- \rightskip = 0pt plus 4em % a little more stretch
- \parfillskip = 0pt plus 1fil
- \llap{\box0}{\bt #1}% Bold typewriter for the cs name.
- \quad \hskip 0pt plus 1pt minus 1pt
- #2\unskip\
- (\ifcstwo \tworefs #4:\else \xref{#4}\fi)%
- }%
- \par
-}
-
-\def\tworefs#1:#2:{\xref{#1}, \xref{#2}}
-
-
-
-% Macros for printing the index.
-%
-% Set up to print it.
-%
-\def\beginindex{%
- \doublecolumns
- \beginit{THE INDEX}
- \markinfo{\chaptername}%
- \indexfonts
- \parindent = 0pt
- \def\pp##1{{\it ##1}} % Principal entry.
- \def\c{,\thinspace\allowbreak}%
-% \def\ic{,\quad}
- \def\ic{\quad}
- \def\see##1{.\quad{\it Voir} ##1 }
- \def\seealso##1{\hfil\break{\it Voir aussi} ##1 }
- \let\r = \romannumeral
-
- \raggedright
-}
-
-\def\endindex{\endit{THE INDEX}\singlecolumn}
-
-
-% #1 is the level of this index entry minus 1 (i.e., 0 for a main
-% entry), #2 is the index term, #3 is the kind of term
-% (T for ttfont, C for control sequence, N for normal), and
-% #4 is the list of pages. The page list can have \pp (principal
-% entry)in it, and each page is separated by \c.
-%
-\def\indexentry#1#2#3#4{%
- \beginit{INDEX ENTRY}%
- \leftskip = #1\indexpageindent
- \par
- \leavevmode
- \hangindent = \indexlevelindent
- \ifx #3T%
- {\tt #2}% Typewriter.
- \else \ifx #3C%
- {\tt \llap{\\}#2}% Control sequence.
- \else
- % in normal entries, \b and \e enclose a group. ({ and } don't work.)
- {\let \b = \bgroup \let \e = \egroup #2}%
- \fi\fi
- #4% The list of pages.
- \par
- \endit{INDEX ENTRY}%
-}
-
-% Nah, let's forget printing the initial.
-%
-\def\indexgroup#1{%
- \bigskip
-}
-
-
-
-% Code formatting.
-%
-%
-% Turn off normally special characters.
-%
-\def\deactivate{%
- \catcode`\\ = \other \catcode`\{ = \other \catcode`\} = \other
- \catcode`\$ = \other \catcode`\& = \other \catcode`\# = \other
- \catcode`\% = \other \catcode`\~ = \other \catcode`\^ = \other
- \catcode`\_ = \other
-}
-
-% It is convenient to have |...| mean print the ... verbatim, except for !.
-% (But | should just be a vertical bar in math mode.) This should be
-% used only for inline code; returns inside |...| become spaces.
-%
-\catcode`\| = \active
-\def|{%
- \ifmmode
- \vert
- \else
- \begingroup
- \obeyspaces
- \begincs
- \let| = \endgroup
- \fi
-}
-
-% \csdisplay is similar, but it inserts glue before and after.
-% It also is ended by |, so we have to redefine that.
-%
-\def\csdisplay{%
- \par
- \nobreak % don't break above displays
- \vskip\abovedisplayskip
- \begingroup
- \interlinepenalty = 10000
- \obeywhitespace
- \begincs
- \def|{\endgroup\vskip\belowdisplayskip \noindent\ignorespaces}%
-}
-
-% \begincs does the setup for verbatim printing. It does not confine
-% its effects to a group.
-%
-\def\begincs{%
- \hfuzz = \codefuzz
- \parfillskip = 0pt plus 1fil
- \parskip = 0pt % don't stretch interparagraph space within code displays
- \catcode`\! = 0
- \let\! = \exclam
- \let\| = \verticalbar
- \let\$ = $%
- \let\. = \empty % Use !. to end a control sequence to be executed.
- \def\-{\discretionary{-}{}{}}% but allow explicit discretionary hyphens
- \tt \deactivate
-}
-
-
-\chardef\exclam = `\!
-\chardef\verticalbar = `\|
-
-% In math mode we want vertical bars and exclamation points to be
-% regular characters again.
-%
-\everymath = {\setmathchars}
-\everydisplay = {\setmathchars}
-\leftdisplays
-
-\def\setmathchars{%
- \catcode`\| = \other \catcode`\! = \other
- \let\{ = \lbrace \let\} = \rbrace
-}
-
-
-
-
-% Some miscellanous macros.
-%
-\def\anatomy{Anato\-mie de \TeX}
-\def\ascii{{\ninerm ASCII}}
-\def\asciichar#1{$\langle \rm #1\rangle$}
-\def\bblfile{fichier~{\tt .bbl}}
-\def\bblfiles{fichiers~{\tt .bbl}}
-\def\bibfile{fichier~{\tt .bib}}
-\def\bibfiles{fichiers~{\tt .bib}}
-\def\boite{bo\^\i te}
-\def\boites{bo\^\i tes}
-\def\bstfile{fichier~{\tt .bst}}
-\def\bstfiles{fichiers~{\tt .bst}}
-\def\didotpt{point did\^ot}
-\def\dvifile{fi\-chier~{\tt .dvi}}
-\def\dvifiles{fi\-chiers~{\tt .dvi}}
-\def\ecrire{\'ecrire} % pour le tri de l'index
-\def\editeur{\'editeur de texte} % pour le tri de l'index
-\def\elements{\'el\'ements} % pour le tri de l'index
-\def\elementextra{\'el\'ement extraordinaire} % pour le tri de l'index
-\def\enumerations{\'enum\'erations} % pour le tri de l'index
-\def\equations{\'equations} % pour le tri de l'index
-\def\etirement{\'etirement} % pour le tri de l'index
-\def\em{\thinspace {\rm em}}
-\def\emph#1{{\it #1}\itcorr} % Emphasize.
-\def\ftp{{\tt ftp}}
-\def\gffile{fichier~{\tt .gf}}
-\def\gffiles{fichiers~{\tt .gf}}
-\def\hand{{\handfont +}}
-\def\ifatest{{\tt \\if} test}
-\chardef\inches = "7D
-\def\knuth#1#2{#1 de \texbook\ et
-\def\tempa{#2}% Merci Joss !
-\ifx\tempa\empty\else
-#2
-\fi
-de la tra\-duc\-tion fran\-\c caise}
-\def\logfile{fichier~{\tt .log}}
-\let\Metafont = \MF
-\def\Mperiod.{$M$\kern-1.6pt.}
-\def\Mprimecomma,{$M'$\kern-3.5pt,}
-\def\Mprimeperiod.{$M'$\kern-2.5pt.}
-\def\mud{\thinspace {\rm mu}} % can't use \mu; it'a a Greek letter!
-\def\newTeX{nou\-veau \TeX}
-\def\oesophage{\oe sophage}
-\def\p{p.\thinspace}
-\def\pkfile{fichier~{\tt .pk}}
-\def\pkfiles{fichiers~{\tt .pk}}
-\def\plainTeX{plain \TeX}
-\def\PlainTeX{Plain \TeX}
-\def\pp{p\p}
-\def\pt{\thinspace {\rm pt}}
-\def\pxlfile{fichier~{\tt .pxl}}
-\def\pxlfiles{fichiers~{\tt .pxl}}
-\def\tequiv{\unskip $\>\equiv\>$} % equivalence in text
-\def\texbook{{\sl The \TeX book}\itcorr}
-\let\tex@ = \TeX
-\def\TeX{\tex@\null}
-\def\TeXMeX{\TeX\ M\kern-.11em\lower .5ex\hbox{E}\kern-.125em X\null}%
-\def\tfmfile{fichier~{\tt .tfm}}
-\def\tfmfiles{fichiers~{\tt .tfm}}
-\def\thisbook{{\sl\TeX\ pour l'Impatient\/}}
-\let\ths = \thinspace
-\def\tminus{\unskip\allowbreak $\>-\>$\allowbreak} % minus in text
-\def\tplus{\unskip\allowbreak $\>+\>$\allowbreak} % plus in text
-\def\TUG{\TeX{} Users Group}
-\def\Vcomma,{$V$\kern-2pt,}
-\def\visiblespace{{\tentt \char'040}}
-\def\Vperiod.{$V$\kern-2pt.}
-\let\vs=\visiblespace
-\def\xrefpg#1{page~\xrefn{#1}}
-
-% \tighten attempts to shorten the number of lines occupied by a paragraph.
-\def\tighten{\looseness=-1
- \spaceskip = .9\fontdimen2\font plus \fontdimen3\font
- minus 1.1\fontdimen4\font
-}
-
-% \itcorr can be used at the end of a macro that puts its argument in
-% italics in order to produce an italic correction just when it's needed.
-% It won't look inside a following macro call, however.
-
-\def\itcorr{\futurelet\next\itcorrA}
-\def\itcorrA{\ifx.\next\else\ifx,\next\else\/\fi\fi}
-
-
-% Arrange N items in three columns.
-% A right brace is needed at the end of the list to match the \bgroup.
-%
-\def\threecolumns{\nobreak\vskip\abovedisplayskip\dothreecolumns}
-
-\def\dothreecolumns#1 {\bgroup
- \parindent = 0pt
- \makecolumns #1/3:
-}
-
-% We don't want to make < an active character because then it cannot be used
-% in \ifnum tests. So, \<foo> denotes a nonterminal `foo'.
-%
-\def\<#1>{$\langle${\rm\it \kern-.2pt #1\kern.65pt}$\rangle$}
-
-\let\beginit = \environment
-\let\endit = \endenvironment
-
-\def\eatpar#1\par{}
-
-% \needspace breaks out the page if there's less than #1 left on it.
-
-\def\needspace#1{%
- \saveskip = \lastskip
- \par % force vertical mode
- \vfil
- \penalty 1000
- \vskip #1
- \penalty9999
- \par % exercise the page builder
- \vskip -#1 plus -1fil
- \vskip -\saveskip \vskip \saveskip % to restore \lastskip
-}
-
-
-
-
-% Expanded cross-referencing for various parts of the books.
-%
-
-% Sometimes it is clearer to refer to a cross-reference as a control
-% sequence.
-%
-\def\ctsref{\begingroup \catcode`\@ = \letter \@ctsref}
-\def\@ctsref#1{(\xref{#1})\endgroup}
-
-\def\xrefdelim[#1]{page~\xrefn{#1}} % this form doesn't need braces
-
-% This command comes at the beginning of chapters, after the \chapter
-% command and before the text. Hence the \par in the template
-% and the \noindent
-%
-\def\chapterdef#1#2\par{%
- \@writeaux{%
- \string\gdef\expandafter\string
- \csname#1_C\endcsname{\the\chapterno}}%
- \noindent
-}
-
-\def\chapternum#1{%
- \def\csn{#1_C}%
- \expandafter\ifx\csname\csn\endcsname \relax
- \expandafter\def\csname\csn\endcsname{`#1'}%
- \ifxrefwarning
- \message{Chapitre `#1' indéfini.}%
- \fi
- \fi
- \csname\csn\endcsname
-}
-
-\def\chapterref#1{section~\chapternum{#1}}
-
-\def\headcit#1#2{``{\rm #1}'' (\xref{#2})}
-
-\def\conceptcit#1{\headcit{#1}{#1}}
-
-\def\seeconcept#1{(voir ``{\rm #1}'', \xref{#1})}
-
-%\def\seeheadcon#1#2{(voir ``{\rm #1}'', \xref{#2})}
-
-
-
-
-% Special types of pictures.
-%
-% Glue pictures:
-%
-\newdimen\glueboxwidth
-\newdimen\boxdepth \boxdepth = 3.5pc
-\newskip\underlabel \underlabel= .1\boxdepth % space under `width n'.
-\def\squeezeglue{\glueboxwidth = .725\glueboxwidth}
-
-\def\labelledbox#1 #2 #3{\vtop{%
- \hrule
- \hbox{%
- \vrule
- \hbox to #1{\hfil \vbox to #2{\vfil#3\vskip\underlabel}\hfil}%
- \vrule
- }%
- \hrule
-}}%
-
-% Make a picture of a box.
-%
-\def\picbox#1 {%
- \glueboxwidth = #1pc \squeezeglue
- \vtop{%
- \hbox to \glueboxwidth{\strut \hfil {\it box}\hfil}%
- \labelledbox % Have to have spaces after the arguments.
- {\glueboxwidth}
- {\boxdepth}
- {\halign{\hfil##\hfil\cr width #1\cr}}%
- }%
-}
-
-% And of glue.
-%
-\def\gluebox#1 #2 #3 #4 {\vtop{%
- \glueboxwidth = #4pc \squeezeglue
- \hbox to \glueboxwidth{\strut \hfil {\it glue}\hfil}%
- \nointerlineskip
- \kern2pt % to move the brace down a bit
- \hbox{$\overbrace{\hbox{\hskip\glueboxwidth}}$}%
- \kern-3pt % The \overbrace puts in 3pt below itself.
- \nointerlineskip
- \vbox to \boxdepth{%
- \hsize = \glueboxwidth
- \vskip 2pt
- \advance\baselineskip by -2pt
- \centerline{\strut size #1}%
- \centerline{stretch #2}%
- \centerline{shrink #3}%
- \centerline{width #4}%
- \vss
- }%
- \kern 1.5pt % I don't know why this is needed.
- \nointerlineskip
- \hbox{$\underbrace{\hbox{\hskip\glueboxwidth}}$}%
-}}
-
-\def\gluepicture#1 #2{{\ninerm
- \medskip
- \vtop{%
- \setbox0 = \hbox{#2}% The glue and box pictures.
- \glueboxwidth = \wd0
- \leftline{\box0}%
- \kern 6pt
- \hbox to \glueboxwidth{\leftarrowfill{ width #1 }\rightarrowfill}%
- }%
- \medskip
-}}
-
-% Box pictures.
-%
-% Set up a `reference point' and the macro for a labelled height, for use
-% in forming pictures of boxes.
-%
-\newbox\refpoint
-
-\setbox\refpoint = \vbox to 0pt{%
- \kern-2.6pt
- \hbox to 0pt{\kern-2.2pt $\bullet$\hss}
- \vss
-}%
-
-\def\labelledheight#1#2{%
-\vtop to #1{\offinterlineskip
- \setbox0=\hbox{#2}\skip0=\wd0
- \hbox to \skip0{\hss\tenex\char"78\hss}\kern-4pt
- {\cleaders\hbox to \skip0{\hss\tenex\char"3F\hss}\vfil}%
- \vskip1pt\box0\vskip1pt
- {\cleaders\hbox to \skip0{\hss\tenex\char"3F\hss}\vfil}%
- \kern -6pt\boxmaxdepth 0pt\hbox to \skip0{\hss\tenex\char"79\hss}}}
-
-
-
-% Paul's updates -- no longer needed; we have converged.
-%
-%\input paulmacs
-
-% Read the cross-reference definitions.
-%
-\readauxfile
-
-\catcode`\@ = \other % Make @ an `other' character again.
-\catcode`\^ = \active % Make ^'s do indexing outside of math mode.
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. +% +% Macros for typesetting TeX for the Impatient. +% +% These macros are being distributed without any warranty whatsoever. +% The level of commentary is that which we, the authors, found necessary +% for our own purposes. +% +% ========================================================================== +% +% The macros use the term `chapter' for what in the book is called +% a `section', `section' for the book's `subsection', etc. For purposes of +% defining macros it's convenient to think of the book as divided into +% chapters, but because of the nonsequential nature of the book we don't +% want to tell the readers that they are reading chapters. +%\language2 +% An embedded file should end with \byebye. +% +%%%%%%%%%%%%%%% COULEUR %%%%%%%%%%%%%%%%%%%%%% +\input ifpdf.sty +\ifpdf +\def\Red{\pdfliteral{0 1 1 0 k}} +\def\Blue{\pdfliteral{1 1 0 0 k}} +\def\Green{\pdfliteral{1 0 1 0 k}} +\def\RawSienna{\pdfliteral{0 0.72 1 0.45 k}} +\def\Black{\pdfliteral{0 0 0 1 k}} +\else +\def\Red{\special{color rgb 1. 0 0}} +\def\Blue{\special{color rgb 0 0 1.}} +\def\Green{\special{color rgb 0 1. 0}} +\def\RawSienna{\special{color rgb 0.63 0.32 0.18}} +\def\Black{\special{color rgb 0 0 0}} +\fi +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begingroup +\ifx \macsin\relax + % In frontm.tex, we do \input macros several times, and we still want + % the \byebye at the end to end the job. + % So we \input inside a group in frontm, and make the assignment to + % \endinput local. + \aftergroup\let\aftergroup\byebye\aftergroup\endinput + \aftergroup\endinput % Don't read this file again. +\else + \global\let\byebye = \end + \global\let\macsin = \relax +\fi +\endgroup + +% This must come before config.tex. +\input eplain + +% Define configuration switches and then read their values. +% +\newif\ifcenterpage \centerpagetrue +\newif\ifcompletebook +\newif\iffinal % true for the 2000dpi copy +\newif\ifmsdos +\newif\ifedgetabs \edgetabstrue +\newif\ifdvi \dvitrue % true if we want a .dvi file + +%\xrefwarningfalse + +% The config file contains settings for flags, e.g., +% \completebookfalse +% It can be empty as long as it exists. +\input config +\ifcompletebook \else\rewritetocfilefalse \fi +\edef\tempfile{\ifmsdos g:temp \else x \fi} +\ifx\setmodes\undefined\else\setmodes\fi % modify from command line input + +% Certain defaults are forced by certain others. +% +\iffinal \centerpagetrue \edgetabstrue\fi + +% Initial definitions. (These should come before \input fonts.) +% +\catcode`\@ = \letter % For the macro file only. + +% We don't want register allocation information in the log, +% so we redefine the relevant macro from plain.tex. + +\def\alloc@#1#2#3#4#5{\global\advance\count1#1 by 1 + \ch@ck#1#4#2% + \allocationnumber=\count1#1 \global#3#5=\allocationnumber +} + +% The fonts. This should come before defining the new character control +% sequences that follow. +% +\input fonts + +\hyphenation{script-script base-line-skip no-base-line-skip line-skip + line-skip-limit max-dead-cycles output-penalty no-inter-line-skip + show-box-depth show-box-breadth if-hmode if-vmode if-mmode + back-spaces back-space par-indent tracing-on-line} + +{ + \catcode`\| = 0 + \catcode`\\ = \other + |global|let|bsc = \ % \bsc is a true backslash character. +} + +\let\\ = \bsc + +\def\bslash{$\backslash$} % backslash suitable for printing +\let\shriek = ! +\let\vbar = | +{ + \catcode `\[ = 1 \catcode `\] = 2 + \catcode `\{ = \other \catcode `\} = \other + \global\let\lbracechar = { + \global\let\rbracechar = } +] +\def\blbrace{{\bt \{}} +\def\brbrace{{\bt \}}} + +{ + \catcode`\ =\other% Notice no spaces at beginning of next line. +\gdef\otherspace{ } +} + +\let\mathlbrace = \{ \let\mathrbrace = \} +{ + \catcode `\[ = 1 \catcode `\] = 2 + \catcode `\{ = \other \catcode `\} = \other + \gdef\{[\ifmmode\mathlbrace\else [\bt {]\fi] + \gdef\}[\ifmmode\mathrbrace\else [\bt }]\fi] +] + + +% These are for debugging (less drastically than \tracingall or \loggingall). +% +\def\tron{\tracingmacros=2 \tracingcommands=2 \tracingonline=1} +\def\troff{\tracingmacros=0 \tracingcommands=0} + +% \pagebreak should always cause a break, even if the resulting +% page is empty. +% +\def\pagebreak{\null\vfill\eject} + +% \linebreak causes a line break in chapter headings, but outside of that +% context we don't want it to do anything. +% +\let\linebreak = \relax + + +% Parameters. +% +\parskip = 0pt plus 0.3pt +\newdimen\codefuzz \codefuzz = 10pt % for \csdisplay, \example +\hbadness = 4000 +\vbadness = 8000 +\hfuzz = 0.1pt % as in plain TeX +\vfuzz = 0.1pt % as in plain TeX +\exhyphenpenalty = 0 % we don't mind these +\widowpenalty = 10000 % these are very bad +\clubpenalty = 10000 % these are very bad too + +% Page margins. +% +% Note that the \newdimens can't be within an \if or a \def +% because \newdimen is an \outer macro (thanks to DEK). +% +\newdimen\insidemargin \newdimen\outsidemargin +\newdimen\topmargin \newdimen\bottommargin +\newdimen\headmargin +\newdimen\totalwidth \newdimen\totalheight +\newdimen\oddoffset \newdimen\evenoffset +\newif\ifnoheadline + +% \totalwidth and \totalheight are the actual trim size of the book. +% \insidemargin, \outsidemargin, \topmargin, and \bottommargin are margins +% with respect to the pages of the book, not the draft 8 1/2 x 11 pages. +% + +% This makes it so that we only have to cut twice on a page. +% 8.5" = 51.19125pc exactly. +% \totalwidth should = \outsidemargin + \insidemargin + \hsize. +% +%\totalwidth = 7.375in % 44.4159375pc = 7 3/8". +\totalwidth = 18.7325cm % 44.4159375pc = 7 3/8". +\outsidemargin = 8pc +\insidemargin = 10pc +\hsize = \totalwidth +\advance \hsize by -\outsidemargin +\advance \hsize by -\insidemargin +% \hsize should now be 26.4159375pc + +% Now that we know \hsize, we can set \parfillskip to eliminate (most) +% widows. +% +\parfillskip = .75\hsize plus .06\hsize minus .75\hsize + + +% \oddoffset and \evenoffset are the \hoffset values needed to +% align the left edge of the virtual page with the left edge of the +% draft paper (not the left edge of the book pages). +% +% The -1in below comes from the default margin, which the DVI driver must +% set at 1in. Odd pages are on the left, even on the right. +% +% First, align the left edge of the virtual page with the left edge of the +% draft page. +% +\oddoffset = -1in +\advance\oddoffset by \insidemargin +% +\evenoffset = -1in +\advance\evenoffset by \outsidemargin + +% For centered pages, move the virtual page right by half the trim width. +% +\ifcenterpage +% \dimen0 = 8.5in + \dimen0 = 21cm + \advance\dimen0 by -\totalwidth + \divide\dimen0 by 2 + \advance\oddoffset by \dimen0 + \advance\evenoffset by \dimen0 + +% For uncentered even-numbered pages, align the right edge of the virtual +% page with the right edge of the draft paper so that we can remove the trim +% of two-sided pages with a single cut. +% +\else +% \advance\evenoffset by 8.5in + \advance\evenoffset by 21cm + \advance\evenoffset by -\totalwidth +\fi + +\hoffset = \oddoffset % First page is numbered one. + +% Now for the vertical, which is simpler, since it doesn't vary from +% page to page. +% 11" = 66.2475pc exactly. +% \totalheight should = \topmargin + \bottommargin + \vsize. +% +%\totalheight = 9.25in % 9 1/4" = 55.708125pc +\totalheight = 24.39cm % 9 1/4" = 55.708125pc +\topmargin = 6pc % Distance from top of page to baseline of text line 1 +\bottommargin = 6pc % Distance from last line to bottom of page. +\topskip = 2pc % Distance from top of \box255 to baseline of text line 1 +% \vsize Distance from top of \box255 to last line of text. +% \headmargin Distance from top of \box255 to top of page +% We'll place the headline just above \box255 + +\headmargin = \topmargin \advance \headmargin by -\topskip + +\vsize = \totalheight +\advance \vsize by -\headmargin +\advance \vsize by -\bottommargin +% \vsize should now be 46.708125pc + +\voffset = -1in % align top of logical page with top of physical page +\advance \voffset by \headmargin +\ifcenterpage +% \dimen0 = 11in + \dimen0 = 29cm + \advance\dimen0 by -\totalheight + \divide\dimen0 by 2 + \advance\voffset by \dimen0 +\fi + +\topskip = 2pc % Distance from headline to first line of text. + + +% Other formatting parameters. +% +% The basic increments we'll use in the layout. +% +\def\setskip#1 = #2 {% + \dimen0 = #2\baselineskip + \csname #1skipamount\endcsname = + \dimen0 plus .33\dimen0 minus .25\dimen0 + \ignorespaces +} +\newskip\greaterskipamount +\newskip\greatskipamount +\newskip\biggerskipamount +\newskip\medbigskipamount +\newskip\medsmallskipamount +\newskip\tinyskipamount + +\setskip greater = 2.5 +\setskip great = 2.0 +\setskip bigger = 1.5 +\setskip big = 1.0 +\setskip medbig = .75 +\setskip med = .5 +\setskip medsmall = .375 +\setskip small = .25 +\setskip tiny = .125 + +\parindent = 1em +\newdimen\normalindent \normalindent = \parindent + +\footnotemarkseparation = .16666em + +\abovelistskip = \smallskipamount +\interitemskip = \tinyskipamount +\belowlistskip = \smallskipamount +\listleftindent = \parindent + +% Displays involve text and math. We don't want as much flexibility in +% the glue as plain.tex sets. +% +\abovedisplayskip = \medsmallskipamount +\abovedisplayshortskip = 0pt plus 2pt +\belowdisplayskip = \medsmallskipamount +\belowdisplayshortskip = \belowdisplayskip + +\newskip\intercapsuleskip \intercapsuleskip = .75\tinyskipamount plus 0.4pt +\newdimen\capsulehangindent \capsulehangindent = 2pc + +\newskip\aboveconceptskip \aboveconceptskip = \bigskipamount + + +\newskip\abovesectionskip \abovesectionskip = \greaterskipamount +% No stretch or shrink below heads, according to A-W. +\newskip\belowsectionskip \belowsectionskip = 1\biggerskipamount + +\newskip\abovesubsectionskip \abovesubsectionskip = \greatskipamount +\newskip\belowsubsectionskip \belowsubsectionskip = 1\bigskipamount + +\newskip\abovedescriptionskip \abovedescriptionskip = \biggerskipamount +\newskip\belowdescriptionskip \belowdescriptionskip = \medskipamount + +\newskip\explainskip \explainskip = \tinyskipamount +\newskip\exampleskip \exampleskip = \smallskipamount + +\def\interexampleskip{\vskip\medsmallskipamount} +\def\tinyskip{\vskip\tinyskipamount} + +% Space in which a symbol is shown in a columnated list of commands. +\newdimen\symbolspace \symbolspace = 14pt + +% \colsindent is the indentation before material arranged in columns and +% displayed, as in the list of Greek letters. +\newskip\colsindent \colsindent = \parindent + +% The indentation for page lists in the index that don't fit on one line. +\newdimen\indexpageindent \indexpageindent = 1pc + +% The indentation for subsidiary entries in the index. (Should be less +% than \indexpageindent.) +\newdimen\indexlevelindent \indexlevelindent = .5pc + +\newskip\codebaselineskip \codebaselineskip = \baselineskip + +% Fill the previous page with blank space before a command. +% +\def\cmdbreak{\par\nobreak\vfil\penalty 1000\vfilneg\par} + +% Penalties. +% +\newcount\conceptpenalty \conceptpenalty = -1500 +\newcount\intercmdnamepenalty \intercmdnamepenalty = 300 +\newcount\@intercmdnamepenalty \@intercmdnamepenalty = \intercmdnamepenalty + + + +% The output routine. +% +\output = {% + \onepageout + % + % Odd pages are right-hand pages. + % + % Note \pageno has been incremented when we get here -- it now refers + % to the page number of the page about to be typeset, not the page + % that we just shipped out. + % + \ifodd\pageno % \onepageout advances \pageno. + \global\hoffset = \oddoffset + \global\intercmdnamepenalty = 10000 + \else + \global\hoffset = \evenoffset + \global\intercmdnamepenalty = \@intercmdnamepenalty + \fi +} + +\ifdvi\else\output={% + \setbox0=\box255\deadcycles=0 + \advancepageno + \global\advance \truepage by 1 + \ifnum\outputpenalty>-20000\else \dosupereject \fi + } +\fi + +\def\onepageout{% + \shipout\vbox{% + \offinterlineskip % The page should have vertically abutting boxes. + \ifodd\pageno + \cropmargin = \insidemargin + \else + \cropmargin = \outsidemargin + \fi + \addcropmarks % Does not affect the position. + \ifcenterpage \addtruepage \fi + % + \ifedgetabs \ifodd\pageno \ifnoheadline\else + \edgetabs % Does not affect the position. + \fi\fi\fi + % + \vbox to 0pt{\vskip-\headmargin \vskip-3.5pc + \rightline{\sevenrm\timestamp}\vss}% + % + \smash{\line{\the\headline}}% Simplified \makeheadline. + \pagebody + \vskip 2\normalbaselineskip + % The footline is needed on one page (for an example). + \line{\the\footline}% + }% + % Now the rest from \plainoutput: + \advancepageno + \global\advance\truepage by 1 + \ifnum\outputpenalty>-20000\else \dosupereject \fi +} + +\footline = {\hfil} + +% The headline always includes the name of the current chapter. This +% goes on the inside. If more information, such as the concept we're +% explaining, is included, it goes on the outside. +% +\headline = {% + % Produce the timestamp + \ifnoheadline + \hfil + \global\noheadlinefalse + \else + \let\\ = \ignorespaces + \ifodd \pageno % Right-hand page. + {\tenit \firstmark}\hfil {\tenbf \folio}% + \else % Left-hand page. + {\tenbf \folio}% + \hfil + {\tenit + \chaptername + \ifnum\pageno>0\ifback\else + \quad $\backslash$\quad\S\the\chapterno + \fi\fi + }% + \fi + \fi +} + +% Sizes for cropmarks: +% +\newdimen\cropthick \cropthick = 0.4pt +\newdimen\crophsize \crophsize = 1pc +\newdimen\cropvsize \cropvsize = 1pc +\newdimen\cropoffset \cropoffset = .0625in + +% Each of the following macros generates a quarter of a cropmark as +% a zero-size box at the center point of the cropmark. +% We want the cropmarks to be centered with respect to their thicknesses. + +\def\vcropdown {\hbox to 0pt{% + \kern -.5\cropthick + \vbox to 0pt{% + \vskip \cropoffset + \hrule width\cropthick depth\cropvsize height0pt + \vss}% + \kern -.5\cropthick}% +} + +\def\vcropup {\hbox to 0pt{% + \kern -.5\cropthick + \vbox to 0pt{% + \vss + \hrule width\cropthick depth\cropvsize height0pt + \vskip \cropoffset}% + \kern -.5\cropthick}% +} + +\def\hcropright{\rlap{\kern\cropoffset\smash{% + \vrule width\crophsize depth .5\cropthick height .5\cropthick}}} + +\def\hcropleft{\llap{\smash{% + \vrule width\crophsize depth .5\cropthick height .5\cropthick}% + \kern\cropoffset}} + +% \cropmargin will be set to the left margin on the current page. +% +\newdimen\cropmargin +\def\cropline#1{\moveleft\cropmargin\hbox to \totalwidth{#1}} + +% \addcropmarks adds the cropmarks to a page while leaving everything else +% alone. It assumes we're positioned at the top of the page. + +\def\addcropmarks{% + \vbox to 0pt{% + \offinterlineskip % contextually redundant but precautionary + \vskip -\headmargin % to get to logical top of page + \ifcenterpage + \cropline{\hcropleft\vcropup \hfil \vcropup\hcropright} + \else + \cropline{\hfil \vcropdown}% + \fi + \vskip\totalheight + \ifcenterpage + \cropline{\hcropleft\vcropdown \hfil \vcropdown\hcropright}% + \else + \cropline{\hcropright\hfil\hcropleft\vcropup\vcropdown\hcropright}% + \fi + \vss +}} + +% \addtruepage adds a small page number near the upper right cropmark. +% +\newcount\truepage \truepage = 1 +\def\addtruepage{% + \vbox to 0pt{\vskip -\headmargin\vskip -2pc + \moveleft\cropmargin\hbox to \totalwidth{% + \twelvebf + \quad\TeX\ pour l'Impatient\hss + N\raise 3.3pt\hbox{o} \the\truepage\quad}% + \vss}% +} + + +% The mark information is output by \markinfo. +% +% We can use a different mark, e.g., a shorter heading, by calling +% \changemark. +% +\newtoks\shortmark \shortmark = {} +\newif\ifchangemark + +\def\markinfo#1{% + \ifchangemark + \mark{\the\shortmark}\changemarkfalse + \else + \mark{#1}% + \fi +} + +\def\changemark#1{\shortmark = {#1}\changemarktrue} + + +% ``Tabs'' down the side of the book. +% Say \nextedgetab to move the thing down to the next. +% Say \edgetabsfalse to turn them off. +% +\newcount\numtabs \numtabs = 7 +\newdimen\edgetabjump \edgetabjump = 0pt +\def\nextedgetab{% + \advance\edgetabjump by \edgetabdepth +} + +\def\settabdepth#1{% + \edgetabdepth = #1 + \setbox\tabbox = \vbox to \edgetabdepth{% + \leaders + \vbox{\vskip \edgespacing + \hrule width\edgetabwidth height0pt depth\edgethick}% + \vfil} +} + +\newskip\bigtab \newskip\smalltab +\newskip\edgetabdepth +\newbox\tabbox + +\bigtab = \totalheight \divide\bigtab by \numtabs +\smalltab = .4\bigtab % five smalls make two bigs + +\newdimen\edgetabin \edgetabin = .25in +\newdimen\edgetabbleed \edgetabbleed = .25in +\newdimen\edgetabwidth + \edgetabwidth = \edgetabin + \advance \edgetabwidth by \edgetabbleed +\newdimen\edgethick \edgethick = 1.2pt % line thickness +\newdimen\edgespacing \edgespacing = .0pt % line spacing + + +\def\edgetabs{\vbox to 0pt{% + \vskip-\headmargin + \vskip\edgetabjump + \hbox{% + \hskip \hsize + \hskip\outsidemargin + \hskip-\edgetabin + \copy\tabbox + }% + \vss +}} + + +% We can simplify \pagecontents (which is called by \pagebody) somewhat, +% since we don't have \topinserts. +% +\def\pagecontents{% + \unvbox255 % The main page contents. + % + \ifvoid\footins\else % Footnotes are present. + \vskip\skip\footins + \footnoterule + \unvbox\footins + \fi +} + + +% The command chapters had a mini-index at the bottom of right-hand +% pages. These definitions are the way to put entries into it. +% +% \minref generates a reference for the mini-index, and prints the +% reference on the page, also. +% +\def\minref#1{% + #1% Print it on the page. + % That's it, now. +} + +% Mini-index entry without printing the argument on the page. +% Just ignore the argument now. +% +\def\minrefs#1{% + \ignorespaces +} + +% This is used for producing the concept mini-index. +% +\def\minrefsdelim#1\endmark{\minrefs{#1}} + +% One last insertion-oriented thing: +% we always want numbered footnotes, as defined in eplain. +% We'll do them in 8-point type. +% +\let\@plainfootnote = \footnote +\let\footnote = \numberedfootnote +\everyfootnote = {\footnotefonts} + + +% The \margin macro produces a marginal note at the same level as its call. +% It should only be used in a paragraph or in the main vertical list. +% It is nullified when we're printing the final copy. +% +\def\margin#1{% + \ifhmode + \vadjust{\printmarginnote{#1}}% + \else + \dimen0 = \prevdepth + \prevdepth = -1000pt + \printmarginnote{#1}% + \prevdepth = \dimen0 + \fi + \ignorespaces +} + +\def\printmarginnote#1{% + \hbox to 0pt{% + \hskip 1.1\hsize + \vbox to 0pt{% + \everypar = {}% Don't inherit hanging indentation. + \hsize = 1in \rightskip = 0pt plus 1fil \noindent \sevenrm + \let\tt = \eighttt + \parfillskip = 0pt plus 1fil + \baselineskip = 8pt #1% + \vss + }% + \hss + }% +} + +%\iffinal +\iftrue + \def\margin#1{\ignorespaces} +\fi + + +% Stuff to preserve page breaks inserted for the 2nd printing. +% This macro takes one ``argument''. +% +\def\secondprinting{\afterassignment\finishsecondprinting \toks0 = } +\def\finishsecondprinting{\the\toks0} + + + +% Parts of the book. +% +% +% Chapters. +% +\let\chaptername = \empty +\newcount\chapterno + +\def\chaprule{\vrule depth3\baselineskip height1.5pc width1pt} + +% Chapter openings should not have headlines. +% The text of each chapter starts on a right-hand page in the final +% book. The facing page has an illustration. This means that if the +% previous chapter ended on a left-hand (i.e., even) page, we have to +% eject an extra blank page. +% +\outer\def\chapter#1 \par{% + \ifcompletebook % Don't do the blank pages for proof copies. + \blankpage % the illustration page + % The first real chapter starts on page 1. + \ifnum\pageno < 0 \pageno = 1 \fi + \fi + % + \def\chaptername{ #1\Black}% + \advance\chapterno by 1 + % + \setbox0 = \hbox{\Blue\chapternumeralfont + \kern1pt + \expandafter\kernchapno\the\chapterno\empty + \kern3pt}% + \vglue 0pt % But we get a \topskip of 2pc now. + \nointerlineskip + \leftline{% + \ifback\else + \vtop{% + \copy0 + \vskip6pt + \hrule width\wd0 height2.2pc + }% + \kern 16pt + \fi + \chapterfonts % to get \baselineskip now + \chaprule + \kern 6pt + \vtop{% + \def\linebreak{\hfil\break}% + \noindent \chaptername}% + }% + \vskip 6pc plus.5pc minus.5pc + \noheadlinetrue + \toks0=\expandafter{\chaptername} + \edef\writechaptertoc{% + \noexpand\writenumberedtocentry{chapter}{\the\toks0}{\the\chapterno}% + }% + \writechaptertoc + % + % Use chaptername as first A-head (or only one). + \mark{\chaptername}% + \footnotenumber = 0 % Number footnotes from 1 in each chapter. + \beginit{CHAPTER}% + \noindent + \ignorespaces +} + +\def\endchapter{% + \mark{\chaptername}% Use chapter name on last blank recto page + \vfil\eject % be sure everything's out before testing for recto + \ifodd\pageno + \message{Le chapitre se termine sur une page paire.}% + \blankpage + \fi + \endit{CHAPTER}% +} +% +% \blankpage creates a blank page with no headline. +% In the final book, it just advances the page number. +% For the web edition, the blank pages serve no purpose except to keep +% the indexing correct. I didn't want to rerun the index. +% +\def\blankpage{% + \iffinal + \advancepageno + \global \advance \truepage by 1 + \else + \noheadlinetrue\pagebreak + \fi +} + +% This hokey little macro kerns between the numerals in the chapter +% number. We want to kern more between `11' then otherwise; also, we +% want to remove the extra space before the chapter number, and after +% `11'. +% +\def\kernchapno#1#2{% + \ifx\empty#2\else \kern-3pt \fi + #1% + \ifx\empty#2\else + \if1#2% + \kern-.1em + \else + \kern-.05em + \fi + \fi + #2% + \if 1#2\kern-.1em\fi +} + +% Sections. +% +\newif\ifheading % Avoid breaking after a heading. + +% get section numbers for the fdl only, since it has internal references. +\let\fdlkludge=\empty + +% The heading flag is turned on by headings and turned off +% at the start of a description. +% +\outer\def\section#1 \par{% + \par % be sure we're in vertical mode + \saveskip = \lastskip % will be 0 if no skip + \cmdbreak + \combineskips\abovesectionskip + \dimen0 = 2.5\baselineskip \advance\dimen0 by -\topskip + \vskip -\dimen0 + \vglue \dimen0 + % + {\sectionfonts \leftline{\fdlkludge\Red #1\Black}}% + % + \markinfo{#1}% + \writetocentry{section}{#1}% + \nobreak + % Don't go into horizontal mode within the command descriptions. + % + \vskip\belowsectionskip + \ifcommands \else \noindent \fi + \headingtrue + \everypar = {\headingfalse \global\everypar = {}}% + % only gets executed for \par in horizontal mode + \ignorespaces +} + + +% Subsections. We don't want a break at the glue if we were preceded by +% a \nobreak. +% +\def\subsection#1 \par{% + \par % be sure we're in vertical mode + \saveskip = \lastskip % will be 0 if no skip + \ifheading % Did we just have \section? + \nobreak + \fi + \combineskips\abovesubsectionskip + \dimen0 = 2.5\baselineskip \advance\dimen0 by -\topskip + \vskip -\dimen0 + \vglue \dimen0 + % + {\subsectionfonts + \leftline{\vrule width.5em height1.2ex depth.2ex \enspace \RawSienna #1\Black}}% + \writetocentry{subsection}{#1}% + \nobreak + % Don't go into horizontal mode within the command descriptions. + \vskip\belowsubsectionskip + \ifcommands \else \noindent \fi + \headingtrue + \everypar = {\headingfalse \global\everypar = {}}% + % only gets executed for \par in horizontal mode + \ignorespaces +} + +% \combineskips combines the current skip (#1) with the previous skip +% (which must be in \saveskip), and effectively skips by the larger of +% the two. +% +\newskip\saveskip +\def\combineskips#1{\ifdim\saveskip<#1\vskip-\saveskip \vskip#1\fi} + + + +% List macros. +% + +% We want to use different names than eplain. +% +\let\ulist = \unorderedlist +\let\endulist = \endunorderedlist +% +\let\olist = \numberedlist +\let\endolist = \endnumberedlist + +\let\compact = \listcompact + +% The \noindent here keeps us from getting indentation on the first line. +% It also makes the display into a `short' display, FYI. +% The \belowdisplayskip and \abovedisplayskip glue are inserted by the +% display. +% +\long\def\display#1{% + \ifvmode \noindent \fi + $$\vtop{\everypar = {}\hsize = \displaywidth + \parfillskip = 0pt plus 1fil % don't worry about widows + \noindent #1\par\global\savedepth = \prevdepth}$$% + \endgraf + \prevdepth = \savedepth +} + +% \vdisplay is like \display, except it's for vertical mode material. Use it +% to avoid an unwanted initial lineskip. +% +\long\def\vdisplay#1{% + \ifvmode \noindent \fi + $$\vtop{\everypar = {}\hsize = \displaywidth + \parfillskip = 0pt plus 1fil % don't worry about widows + #1\par\global\savedepth = \prevdepth}$$% + \endgraf + \prevdepth = \savedepth +} + + + +% Indexing. +% Derived from Knuth's manmac macros. +% +\newwrite\index + +\immediate\openout\index = \jobname.idx +\newif\ifsilent + +% We need ^ to be active temporarily, while we define it. +% +{ \catcode`\^ = \active +% +\gdef^{% + \ifmmode + \let \nextaction = \sp + \else + \let \nextaction = \beginindexref + \begingroup + \catcode `| = \other \catcode `^ = \other + \fi + \nextaction +}} + +\def\beginindexref{\futurelet\next\checksilence} + +{% And for here, we need ^ to be deactivated +\catcode `^ = \other + +\gdef\checksilence{% + \if ^\next + \silenttrue \let\nextaction = \secondhat + \else + \silentfalse \let\nextaction = \checkbar + \fi + \nextaction +} + +% Eat the `^' that we saw would be the next token. +% +\gdef\secondhat^{\checkbar} + +} % end scope where ^ is \other + +\def\checkbar{\futurelet\next\iswitch} + +% Here we start reading the text of the actual index entry; +% we've determined whether it's silent or not. +% +% We handle the following cases: +% ^{alpha} and ^^{alpha} +% ^|alpha| and ^^|alpha| +% ^|\alpha| and ^^|\alpha| +% +% When this is called, \next is either `|' or `{'. +% +\def\iswitch{% + \ifx |\next + \let \nextaction = \checkbackslash + \else + \let \nextaction = \normalidx + \fi + \nextaction +} + +\def\checkbackslash|{% + % within |...| we allow anything (but another |) + \deactivate \catcode `\ = \other + \futurelet\next\litidx +} + +% The thing after the ^ is a |. We have further checking to do -- is +% the next character a \? +% +{ % reverse \ and / +\catcode`\/ = 0 +\catcode`\\ = \other +/gdef/litidx{% + /if \/next + /expandafter/litidxA + /else + /expandafter/litidxB + /fi +} + +% The thing being indexed starts with a \. +% +/gdef/litidxA \#1|{% + /ctsidxref{#1}% + /litidxswitch{/\#1}% +} + +% The thing being indexed is just a word. +% +/gdef/litidxB #1|{% + /ttidxref{#1}% + /litidxswitch{#1}% +} +}% end reversal of \ and / + +% The thing after the ^ is not a |. +% +\def\normalidx#1{% + \ifsilent + \aftergroup\ignorespaces + \else + #1% + \fi + \idxref{#1}% + \endgroup % group started by \iswitch. +} + +\def\litidxswitch#1{% + \ifsilent + \aftergroup\ignorespaces + \else + {\tt #1}% + \fi + \endgroup % group started by \iswitch. +} + + + +% Indexing macros for external use. + +% \idxref generates an index entry for #1. If #1 contains any control +% sequences, they are treated literally. +% +\def\idxref#1{\indexwrite{#1}N\ignorespaces} + + +% For creating an index entry for control space. +{\catcode `\ =\other +\gdef\blankidxref{\ctsidxref{ }} +} + +% I removed this macro from eplain because \csname works as well, but +% since the macros below are already written to use it ... +\def\@tokstostring#1{\@ttsA#1 \@ttsmarkA}% +\let\tokstostring=\@tokstostring +\def\@ttsA#1 #2\@ttsmarkA{% + \@ifempty{#1}\else + \@ttsB #1\@ttsmarkB + \@ifempty{#2}\else + \@spacesub\@ttsA#2\@ttsmarkA + \fi + \fi +}% +\def\@ttsB#1{% + \ifx #1\@ttsmarkB\else + \string #1% + \expandafter\@ttsB + \fi +}% +\def\@ttsmarkB{\@ttsmarkB}% should never be expanded +% +\def\@spacesub{+}% +\let\spacesub = \@spacesub +% +\def\@ifempty#1{\@@ifempty #1\@emptymarkA\@emptymarkB}% +\def\@@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}% +\def\@emptymarkA{\@emptymarkA}% Again, so \ifx won't complain. + +% #1 is the index term, #2 is the reference as in +% Diacritical mark, see accent. + +\def\idxsee#1#2{% + \begingroup + \def\spacesub{\otherspace}% + \edef\nextaction{\write\index{\tokstostring{#1}::N::*\tokstostring{#2}}}% + \nextaction + \ignorespaces +\endgroup} + + +% \ttidxref generates an index entry for #1 in the program font. +% If #1 contains any control sequences, they are treated literally. +% +\def\ttidxref#1{\indexwrite{#1}T\ignorespaces} + + +% \ctsidxref generates an index entry for a control sequence. #1 +% should not have a preceding backslash, so that the proper call for +% indexing \alpha is \ctsidxref{alpha}. +% +\def\ctsidxref #1{\indexwrite{#1}C\ignorespaces} + +% \indexchar is needed to generate index entries for three especially +% difficult single characters: {, }, and \. They are blank-delimited. +% +\def\indexchar{\begingroup \deactivate \indexcharA} +\def\indexcharA#1 {\indexwrite{#1}T\endgroup} + +% \pix indicates that the next index entry is a principal one. +% +\newif\ifpix +\def\pix{\global\pixtrue} + +% \bix and \eix indicate that the next index entry begins or ends a +% range of pages. +% +\newif\ifbix \def\bix{\bixtrue} +\newif\ifeix \def\eix{\eixtrue} + +% #1 is the text of the entry, #2 is N (normal), T (typewriter) or +% C (control sequence) or `cs' for now. +% +\def\indexwrite#1#2{\begingroup + \def\spacesub{\otherspace}% + \edef\tts{\tokstostring{#1}}% + \edef\nextaction{\write\index{\tts::#2::\noexpand\number\noexpand\pageno + \ifbix B\fi\ifeix E\fi\ifpix P\fi}}% + \nextaction + \global\pixfalse \global\bixfalse \global\eixfalse +\endgroup} + +{\catcode `\^ = \other \gdef\twocarets{^^}} + + +% For generating index entries with weird characters, we need to deactivate +% them: { } blank \ and substitute [ ] ! for { } \ . \recat does this. +% It should be enclosed in a group (which must end in `]'). +\def\recat{% + \aftergroup\ignorespaces + \catcode `\! = 0 \catcode `[ = 1 \catcode `] = 2 + \catcode `\ = \other \deactivate +} + + + +% Macros for the front matter. +% +% Space at the top of the frontmatter pages. +% +\def\sinkage{\vglue 7pc \relax} + +% And at the top of the backmatter pages. +% +\def\backsinkage{\vglue 2pc \relax} + +% \frontchapter doesn't care if we're on an even page or an odd page. +% +\def\frontchapter#1 \par{% + \def\chaptername{ #1}% + \leftline{% + \chapterfonts + \chaprule + \kern 6pt + \vtop{% + \def\linebreak{\hfil\break}% + \noindent \Blue\chaptername\Black}% + }% + \vskip 4pc + \noheadlinetrue + % Use chaptername as first A-head (or only one) + \mark{\chaptername}% + \noheadlinetrue + \noindent \ignorespaces +} + + +% We are called from inside a group, so we can redefine the \toc... macros. +% +\def\shortcontents{{% + \firsttoctrue + \backfalse + \shorttocfonts + \let\tocchapterentry = \shorttocchapter + \let\tocsectionentry = \gobblethree + \let\tocsubsectionentry = \gobblethree + \halign{\hfil\strut##&\strut ##\hfil\cr + \readtocfile + \crcr}}% + \pagebreak + \global\backfalse +} + +% #1 is the chapter name, #2 the chapter number, #3 the page number. +% +\def\shorttocchapter#1#2#3{% + \ifback\else#2\quad $\backslash$\quad\fi\qquad + \raise3pt\hbox{\vrule height2pt width4pt depth2pt}$\,\,$#3\cr +} + +% Yes, we read the entire contents (several pages) as one alignment. +% +\def\contents{{% + \firsttoctrue + \backfalse + \tocfonts + \interlinepenalty = 100 + \halign{\hfil\strut##&\strut ##\hfil\cr + \readtocfile + \crcr}}% + \pagebreak + % We want to end the contents on a recto page, even if it's blank + \ifodd\pageno\pagebreak\fi % leaves us on an even page. + \global\backfalse +} + +\newif\iffirsttoc + +\def\tocchapterentry#1#2#3{% + \iffirsttoc + \global\firsttocfalse + \else + \noalign{\penalty-1000 \bigskip\smallskip}% + \fi + % + \ifback\else\bf#2\quad $\backslash$\quad\fi + &\bf#1\qquad\raise3pt\hbox{\vrule height2pt width4pt depth2pt}% + $\,\,$#3\cr + \noalign{\nobreak\vskip2pt}% +} + +\def\tocsectionentry#1#2#3{% + \noalign{\penalty-500 \vskip\medsmallskipamount}% + &\it #1\quad \openbox$\,\,$\rm #3\cr +} + +\def\tocsubsectionentry#1#2#3{% + &\qquad #1\quad $\cdot\,$#3\cr +} + +\def\openbox{\ht0 = 1.75pt \dp0 = 1.75pt \wd0 = 3.5pt + \raise 2.75pt \makeblankbox{.2pt}{.2pt}% +} + +\newif\ifback +% \ifback is true when we're doing the table of contents and are about +% to do the back matter. It is also true just before we do the back matter +% chapters (really, only the index). +% +\def\backmatter{\write\tocfile{\noexpand\setback}\backtrue} +\def\setback{\noalign{\bigskip\global\backtrue}} + + + +% Macros for the examples chapter. +% +% \doexamples is called with the name of the examples file +% Each example is ended by ::: (including the last one) +% A line starting with ~ is executed in the output (without the ~) +% but dropped from the input. +% +% Within the input, ! is an escape character, but {} are not recognized. +% This provides a limited control sequence capability, which is sufficient +% for delimited macros and therefore for cross-references (see \xrefdelim). +% !! stands for !. +% +\def\endmark{:::} + +\newif\ifnotatend \newif\ifnotatendfile \newif\iftildeline +\newread\exfileA \newread\exfileB \newwrite\exfileC +\newcount\examplenumber + +\def\doexamples#1{% + % Here we assume that two read-only openings of the same file are OK. + \immediate\openin\exfileA = #1 + \immediate\openin\exfileB = #1 + \loop + \advance\examplenumber by 1 + \reader + \ifx\holder\empty \notatendfilefalse \else \notatendfiletrue \fi + \ifnotatendfile + \dooneexample + \repeat +} + + +% We want control sequences to be executed as the input of each example +% is formatted, but we don't want to execute them for the output of each +% example until we generate that output with an \input command. +% Therefore, we treat ! differently for \holder, which produces example +% input, and \holderA, which produces example output. +% +% We can't say \global\immediate\read, but \immediate is implied with \read. +% +\def\reader{{\deactivate + \catcode`\! = \other % To execute control sequences on \input. + \catcode`\^^M = 9 \global\read\exfileA to \holder + % + \catcode`\! = 0 % To execute control sequences right away. + \obeyspaces \global\read\exfileB to \holderA + }% +} + +\def\dooneexample{{% + % We want to mention \! in one of the examples: + \edef\examplenum{\numbername\examplenumber}% + + \immediate\openout\exfileC = \tempfile + + \catcode`\| = \other % No literal code in these examples. + \chardef\! = `\! % !! means a literal ! character. + + + % Collect the input page, as it is to be printed, in a box + % At the same time, write out each line to \exfileC + % We make the box 0pt tall to avoid problems with overfull pages. + \setbox\xmpinput = \vbox to 0pt{% + % + \baselineskip = \codebaselineskip + \loop + \ifx\endmark\holder \notatendfalse \else\notatendtrue \fi + \ifnotatend + \expandafter\tildecheck\holder \empty \marker + \iftildeline\else + \leftline{\tt\frenchspacing \holderA \thinspace}% + \immediate\write\exfileC{\holder}% + \fi + \reader + \repeat + \vss % reduce height to 0pt + }% end \vtop + + \immediate\closeout\exfileC + + {% + \maxdepth = \maxdimen % allow long input + \vfill\eject + \catcode`\! = 0 + \restoreplainTeX + {% + \let\eject = \relax \input\tempfile + % Every example ends with \bye, but \bye is disabled in the main text. + \vfill\par\penalty-10000 + \global\footline = {\hfil}% + }% + \box\xmpinput + }% +}} + +{ + \catcode `\~ = \other % So the \ifx works. + \gdef\tildecheck#1#2\marker{% + \ifx #1~% + \immediate\write\exfileC {#2}\tildelinetrue + \else + \tildelinefalse + \fi + } +} + +% This definition is more or less repeated verbatim in the first example +% in xmptext.tex. +% +\def\xmpheader #1/#2{% + {\exampletitlefonts \leftline{Exemple #1~:\quad \bi#2}}% + \vglue .5\baselineskip + \count255 = \pageno + \xdef\examplepage{\number\count255}% + \markinfo{Exemple #1~: #2} + \ifrewritetocfile + \write\tocfile{\string\tocsectionentry{#2}{}{\examplepage}}% + \fi +} +% Let's number examples automatically; it makes it easier to move them +% around and add new ones. + +\def\xmpnum{\number\examplenumber} + +\newbox\xmpinput + + +% \negthin lets us put `\!' in examples. + +\def\negthin{\ifmmode \mskip-\thinmuskip \else \char`\\ \char`\! \fi} + +\def\xmpheaddef{voir \xref{xmphead}} + +\def\restoreplainTeX{% + % Restore plain TeX's parameters (except for \hsize and \hoffset). + \parindent = 20pt + \parskip = 0pt plus 1pt + \parfillskip = 0pt plus 1fil + \hfuzz = 0.1pt + \hbadness = 1000 + \abovedisplayskip=12pt plus 3pt minus 9pt + \abovedisplayshortskip=0pt plus 3pt + \belowdisplayskip=12pt plus 3pt minus 9pt + \belowdisplayshortskip=7pt plus 3pt minus 4pt + \everymath = {}% + \everydisplay = {}% + \centereddisplays + \let\vfootnote = \@plainvfootnote + \let\footnote = \@plainfootnote + \let\tenrm = \oldtenrm + \textfont0 = \tenrm + \rm + \ignorespaces +}% + + + +% Macros for the concepts chapter. +% +% +% Start off the chapter. +% +\def\beginconcepts{\openout\conceptfile = \jobname.ccs } +\def\endconcepts{\closeout\conceptfile} + +\newwrite\conceptfile + +% \concept produces a concept heading and also generates a crossreference +% suitable for the mini-index. It even works for concepts with several words +% or containing control sequences like `\ascii'. +% +\def\concept#1 \par{% + \par%\vfill\eject + %k \cmdbreak + \penalty\conceptpenalty\vskip\aboveconceptskip + %k \vskip 0pt plus 1pt % allow a little more stretch + \noindent + % generate the index entry + \ifconceptindex \else \global\indextoks = {\idxref{#1}}\fi + \conceptindexfalse + \pix\bix\the\indextoks + % + {\bt \let\it=\bti \unskip\null \RawSienna\bf #1.\Black\hskip1em plus.2em minus.2em }% + \markinfo{#1}% + \xrdef{#1}% + \write\conceptfile{\string\doconcept{#1}{\number\pageno}}% + \beginit{CONCEPT}% + \nobreak + \ignorespaces +} + +\def\endconcept{% + \par % always go to vertical mode here + \eix\the\indextoks + \endit{CONCEPT}% + \ignorespaces +} + +\def\doconcept#1#2{\hbox{#1\quad #2}} + +% Sometimes we want to index a concept under some other name than the +% concept name, e.g., indexing `delimiter' as `delimiters'. The +% \conceptindex macro lets us do this. +% +\newif\ifconceptindex +\newtoks\indextoks +\def\conceptindex#1{% + \conceptindextrue + \global\indextoks = {\idxref{#1}}% + \ignorespaces +} + + +% Commands for cross-referencing within the concepts chapter. +% Each refterm has the form {a} or {a:b}, where b is the term to +% actually reference (e.g., \refterm{\PlainTeX:\plainTeX}). +% +\def\refterm#1{% + \reftermA #1:\endmark % Parse the stuff. + \expandafter\minrefsdelim\termtoref\endmark + \relax % Cancel the \ignorespaces. +}% +\def\reftermA#1:{\reftermfirst{#1}\futurelet\next\reftermB} +\def\reftermB#1\endmark{\ifx\endmark \next \else \reftermsecond#1\fi} + +\def\reftermfirst#1{#1\def\termtoref{#1}} +\def\reftermsecond#1:{\def\termtoref{#1}}% + +% The defining sentence for a concept. +% +\def\defterm#1{{\it #1\/}} + + +% This macro prints the single page that will go on the back cover. +% +\def\printconceptpage{% + % Make sure this is considered an odd page. + \ifodd\pageno\else\blankpage\fi + \noheadlinetrue + \advance\hsize by 2pc + \vglue2pc % Plus a \topskip of 2pc. + {\sectionfonts \leftline{Liste des concepts}}% + \vskip\belowsectionskip + {\conceptpagefonts + \parindent=0pt + \makecolumns 94/3: + \input \jobname.ccs + \vfil + % Put the `logo' at the bottom of the page. + \rightline{\thisbook}% + }% + \eject +} + + + +% Macros for the commands chapters. +% +% \ifcommands is true when we're within \begindescriptions ... + +\newif\ifcommands + + +% \begindescriptions should be called to start the actual control sequences. +% +\outer\def\begindescriptions{\beginit{DESCRIPTIONS}% + % The following definitions are local to this chapter. + % + \let\example = \commandexample + \let\endexample = \endcommandexample + \interlinepenalty = 50 + % + \commandstrue + \ignorespaces +} + +% The \endgroup that \enddescriptions does must come after the page +% break, so the last page of descriptions will get a mini-index. +% +\def\enddescriptions{% + \vskip -\lastskip % undo the skip created by \enddesc + \endit{DESCRIPTIONS}% + \ignorespaces +} + + +% Begin or end the description of a control sequence or group thereof. +% +\def\begindesc{% + \par % force vertical mode + \saveskip = \lastskip % will be 0 if no skip + \ifheading % Did we just have \section or \subsection? + \nobreak + \else + \cmdbreak + \fi + \combineskips\abovedescriptionskip + \headingfalse + \beginit{DESCRIPTION}% + \beginit{COMMANDS}% + % Each command name is set as a paragraph (for reasons I don't + % remember, \leftline doesn't work because of the way the manuscript + % was typed), and so \clubpenalty will be the penalty at the + % interline glue (see p.96). + \clubpenalty = \intercmdnamepenalty + \parfillskip = 0pt plus 1fil + \ignorespaces +} + +\def\enddesc{% + \nobreak % if we need a break, we'll get it from the next group opener + \vskip\belowdescriptionskip + \endit{DESCRIPTION}% + \ignorespaces +} + +% Begin the explanation of a control sequence. Don't break at the +% space above the explanation, or the interline glue before the first line. +% +\def\explain{% + \par + \endit{COMMANDS}% + \nobreak \vskip\explainskip + \interlinepenalty = 50 + \nobreak \noindent + \ignorespaces +} + +% Here is how \example looks in the text: +% \example +% ... +% | +% \produces +% ... +% \endexample +% +% repeated an indefinite number of times. +% +% We want to set the code of an example in a box so as to prevent it from +% being broken across pages. By using \vtop we assure that the code is the +% right distance from the `Example:' line. In order to keep the `produces:' +% the right distance from the last code line, we save the depth of that code +% line and then fool TeX into thinking that the \vtop has that depth by +% assigning it to \prevdepth. If we didn't do this, the last line of the code +% would be too close to the `produces:' (as indeed it was in earlier versions +% of the book. +% +\newdimen\savedepth + +{\makeactive| +\gdef\commandexample{% a.k.a. \example, inside \begindescriptions. + \cmdbreak\vskip\exampleskip + \leftline{\it Exemple~:}% + \nobreak % At the interline glue. + \beginit{EXAMPLE}% + \parfillskip = 0pt plus 1fil + \hbox\bgroup\hskip\parindent\vtop\bgroup + \begincs + \let | = \endcode + \advance\hsize by -\parindent + \parindent = 0pt + \bgroup\obeywhitespace +}}% + +\def\endcode{% + \egroup % end \obeywhitespace group + \par\global\savedepth=\prevdepth + \egroup % end inner \vbox + \egroup % end outer \hbox + \prevdepth = \savedepth + \ignorespaces +} + +% \dproduces should be used when the following material is a math +% display. +% +\newif\ifexampledisplay +\def\dproduces{\global\exampledisplaytrue \produces} + +\newif\ifproduces + +% \produces puts its material into a vbox so it won't be broken. +% The material starts in VERTICAL MODE! It uses the plainTeX conventions +% except that \parindent is 0pt. + +\def\produces{% + \producestrue + \ifodd\pageno \par \nobreak \else \cmdbreak\fi + \vskip\tinyskipamount + \noindent {\it produit\ifexamplelog\ dans la log\examplelogfalse\fi~:}% + \vadjust{\nobreak}% At the interline glue. + \ifexampledisplay + \centereddisplays + \else + \par\nobreak + \advance\hsize by -\parindent + \savedepth = \prevdepth + \nointerlineskip + \hbox\bgroup\hskip\normalindent + \vtop\bgroup \restoreplainTeX \parindent = 0pt + \prevdepth = \savedepth + \fi +}% + +% we need another ``produces'' form for when a command puts things in +% the log. In this case, the produces text also ends with a |. +% +\newif\ifexamplelog +{\makeactive| +\gdef\logproduces{\examplelogtrue\produces + \begincs + \def |{\endcode\producesfalse}% + % Every line is set as a paragraph, so we get one \parindent for free. + % But we also did \advance\leftskip in \produces, so now we have two. + % We only want one. + \advance\leftskip by -\parindent + \bgroup\obeywhitespace +}}% + +\def\nextexample{\endexample\interexampleskip\example} + +\def\endcommandexample{% + \par % force vertical mode, set previous paragraph + \ifproduces \ifexampledisplay \global\exampledisplayfalse \else + \global\savedepth = \prevdepth + \egroup % Matches the \vtop in either the \produces or the \example. + \egroup % Matches the \hbox in \producesbox. + \global\producesfalse + \par + \prevdepth = \savedepth + \fi\fi + \endit{EXAMPLE}% + \ignorespaces +} + +\def\see{% + \ifodd\pageno\nobreak\fi % don't put at the top of a verso page + \vskip -\lastskip % should be \belowdescriptionskip + \bigskip + \noindent + {\tenbi \spaceskip = 3.33pt plus 2pt minus 1.1pt + \parfillskip = 0pt plus 1fil + Voir aussi~: %k \hskip 1em plus .5em minus .25em + }% + \ignorespaces +}% + + +\newif\ifxref \xreftrue + +% \aux acts as a prefix to a \cts command, specifying that a +% cross-reference should not be generated. +% +\def\aux{\xreffalse} + +% So does \easy, which prints a hand, pointing at the control sequence. +% (The hand font doesn't define an em.) +% +\newif\ifeasy +\let\easy = \easytrue +\def\testeasy{\ifeasy\llap{\hand\ \kern 6pt}\easyfalse\fi} + +% \cts typesets the beginning of a control sequence description, and +% generates an index entry and cross-reference definition for it. The +% control sequence name must be delimited by a blank, since there may be +% parameters that follow. The control sequence name can contain special +% characters; they are deactivated. The initial \ must be omitted. +% +\def\cts{\begingroup \deactivate \ctsA} +\def\ctsA#1 {\endgroup \ctsB{#1}} +\def\ctsB#1#2{% + \ctsbasic{\\#1}{#2}% + \ifxref \ctsxrdef{#1}\else \xreftrue \fi + \pix\ctsidxref{#1}% +} + +% \ctsx is like \cts, but separates the control sequence name and the +% text by more space. (`x' for `extra') +% +\def\ctsx{\begingroup \deactivate \ctsxA} +\def\ctsxA#1 {\endgroup \ctsxB{#1}} +\def\ctsxB#1#2{% + \ctsbasic{\\#1}{\quad #2}% + \ifxref \ctsxrdef{#1}\else \xreftrue \fi + \pix\ctsidxref{#1}% +} + + +% \ctscol is like \cts, but doesn't start a new paragraph. It's used in +% in columns of cs's and their explanations. +% +\def\ctscol#1 #2{% + {\bt \\#1}\quad #2% + \ifxref \ctsxrdef{#1}\else \xreftrue \fi + \pix\ctsidxref{#1}% +} + +% \ctsbasic does the actual printing of a cs name. It's needed on its +% own for `\ '. It does not generate any index or cross-reference +% entries. #1 is the command name, #2 some (possibly empty) text to go +% next to it. +% +\def\ctsbasic#1#2{% + \par + \nobreak % At the \parskip glue the \noindent will produce. + \noindent\testeasy {{\bt #1}\space #2}% +} + +% \ctsxrdef generates a control sequence cross-reference definition. +% For example, `\ctsxrdef{@star}' generates a cross-reference definition +% for `\@star'. +% +\def\ctsxrdef#1{\expandafter\xrdef\csname#1\endcsname} + +% \ctsact prints an active character #1 and generates an index entry +% for it. #1 is blank-delimited. \ctsact does not generate a +% cross-reference definition. +% +\def\ctsact{\begingroup \deactivate \ctsactA} +\def\ctsactA#1 {\endgroup + \ctsbasic{#1}{}% + \pix\ttidxref{#1}} + +% \ctspecial prints a control sequence #1 and generates an index +% entry for it. #1 is blank-delimited. \ctspecial does not +% automatically generate a cross-reference definition, and so it's used +% for things like \newbox and \%. +% +\def\ctspecial{\begingroup \deactivate \ctspecialA} +\def\ctspecialA#1 {\endgroup + \ctsbasic{\\#1}{}% + \pix\ctsidxref{#1}% +} + +% \ctspecialx is like \ctspecial, but leaves more space after its +% argument. We want ` and ' to come from cmtt, instead of Optima, so we +% call \mapquotes before reading the argument. This only affects the \` +% and \' descriptions. +% +\def\ctspecialx{\begingroup \deactivate \mapquotes \ctspecialxA} +\def\ctspecialxA#1 {\endgroup + \ctsbasic{\\#1}{}\quad + \pix\ctsidxref{#1}% +} + +% \ctsdisplay has a blank-delimited argument consisting of a control +% sequence such as alpha. It produces $\alpha$ followed by \alpha. +% +\def\ctsdisplay#1 {\basicdisplay {$\csname #1\endcsname$}{\\#1}% + \ifxref\ctsxrdef{#1}\else\xreftrue\fi \pix\ctsidxref {#1}} + +% \ctsdoubledisplay has a blank-delimited argument consisting of a +% control sequence such as bigvee. It produces $\bigvee$ and +% $\big\bigvee$ followed by \bigvee. +% +\def\ctsdoubledisplay#1 { + {% + \symbolspace = 42pt + \basicdisplay{$\csname #1\endcsname\quad + \displaystyle\csname #1\endcsname$\ddstrut}% + {\\#1}% + }% + \ifxref\ctsxrdef{#1}\else\xreftrue\fi + \pix\ctsidxref{#1}% +} +\def\ddstrut{\vrule width0pt height15pt depth11pt} + +% \ctsydisplay displays a control symbol. #1 is a single character, +% which may be active. #2 is the cross-reference label, +% blank-delimited. +% +\def\ctsydisplay{\begingroup \deactivate\catcode`\|=\other \ctsydisplayA} +\def\ctsydisplayA#1 #2 {\endgroup + \basicdisplay{$\csname\string#1\endcsname$}{\\#1}% + \ifxref \ctsxrdef{#2}\else \xreftrue \fi + \pix\ctsidxref{#1}% +} + +% \actdisplay displays an active character. #1 is the character, and +% #2 is the cross-reference label, blank-delimited. +% +\def\actdisplay{\begingroup\catcode `\|=\other\actdisplayA} +\def\actdisplayA#1 #2 {\endgroup + \basicdisplay{$#1$}{\string#1}% + \ifxref \xrdef{#2}\else \xreftrue \fi + \pix\ttidxref{#1}% +} + +% \basicdisplay does the actual typesetting of a control sequence name. +% for inside displays. +% +\def\basicdisplay#1#2{\testeasy\hbox to \symbolspace{#1\hfil}{\bt #2}} + +% Printing parameter and table entry headings. +% +\def\param#1{\printparam{#1}{param\`etre}} +\def\tblentry#1{\printparam{#1}{\'el\'ement de table}} +\def\printparam#1#2{\hskip1.5em [\kern3pt \<#1> #2\kern2pt]} + +% Required braces. +% +\def\rqbraces#1{\{\hskip2pt#1\hskip2pt\}} + +% Printing rulers. +% +\def\1{\vrule height 0pt depth 2pt} +\def\2{\vrule height 0pt depth 4pt} +\def\3{\vrule height 0pt depth 6pt} +\def\4{\vrule height 0pt depth 8pt} +\def\ruler#1#2#3{{$\vcenter{\hrule\hbox{\4#1}}\,\,\rm#2\,{#3}$}} +\def\doruler{\par \noindent\ruler} +\def\tick#1{\hbox to .125in{\hfil#1}} +\def\8{\tick\1\tick\2\tick\1\tick\3\tick\1\tick\2\tick\1\tick\4} + +% Macros for the capsule summary chapter. +% +\def\begincapsum{\beginit{CAPSULE SUMMARY}% + \let\bt = \tentt + \bigskip +} + +\def\endcapsum{\endit{CAPSULE SUMMARY}} + +\newbox\@primitivebox \setbox\@primitivebox = \hbox{\tt *} +\newif\ifcs + +\def\capline{\begingroup \deactivate\catcode `\| = \other \caplineA} +\def\caplineA#1 {\endgroup + \begingroup + \catcode `@ = \letter % for constructing labels + \caplineB{#1}% +} + +% Parameters of \caplineB: +% #1 name of control sequence +% #2 description +% #3 * or empty +% #4 xref or xref1:xref2 or empty + +\def\caplineB#1#2#3#4{% + \ifempty {#4}\temptrue\else\tempfalse\fi + % \iftemp needed to avoid \if ... \else ... \fi nesting problems + \ifcs + \toks0 = {\caplineout{\\#1}{#2}{#3}}% + \iftemp + \toks1 = \expandafter{\csname #1\endcsname}% + \else + \toks1 = {#4}% + \fi + \edef\nextaction{\the\toks0 {\the\toks1}}% + \nextaction + \ctsidxref {#1}% + \else + % The \space makes one-character entries line up nicely. + \caplineout{\space #1}{#2}{#3}{#4}% + \ttidxref {#1}% + \fi + \endgroup +} + +\newif\iftemp + + +% In a few cases we have two cross-references for a single control +% sequence. +% +\newif\ifcstwo + +\def\capac{\cstwofalse\csfalse\capline} +\def\capactwo{\cstwotrue\csfalse\capline} +\def\capcs{\cstwofalse\cstrue\capline} +\def\capcstwo{\cstwotrue\cstrue\capline} + +% \caplineout produces an output line (or several lines) for the capsule +% summary. #1 is the command text, #2 is the description, #3 is either * or +% empty, and #4 is the cross-reference label. +% +\def\caplineout#1#2#3#4{% + \setbox0 = \ifempty {#3}\box\voidb@x \else \copy\@primitivebox\fi + \vskip\intercapsuleskip + % If we use \vbox here, a multi-line summary at the top of a page + % will cause \topskip to disappear. + % + \vtop{\noindent \hangindent = \capsulehangindent + \spaceskip = 3.33pt plus 2pt minus 1.5pt + \rightskip = 0pt plus 4em % a little more stretch + \parfillskip = 0pt plus 1fil + \llap{\box0}{\bt #1}% Bold typewriter for the cs name. + \quad \hskip 0pt plus 1pt minus 1pt + #2\unskip\ + (\ifcstwo \tworefs #4:\else \xref{#4}\fi)% + }% + \par +} + +\def\tworefs#1:#2:{\xref{#1}, \xref{#2}} + + + +% Macros for printing the index. +% +% Set up to print it. +% +\def\beginindex{% + \doublecolumns + \beginit{THE INDEX} + \markinfo{\chaptername}% + \indexfonts + \parindent = 0pt + \def\pp##1{{\it ##1}} % Principal entry. + \def\c{,\thinspace\allowbreak}% +% \def\ic{,\quad} + \def\ic{\quad} + \def\see##1{.\quad{\it Voir} ##1 } + \def\seealso##1{\hfil\break{\it Voir aussi} ##1 } + \let\r = \romannumeral + + \raggedright +} + +\def\endindex{\endit{THE INDEX}\singlecolumn} + + +% #1 is the level of this index entry minus 1 (i.e., 0 for a main +% entry), #2 is the index term, #3 is the kind of term +% (T for ttfont, C for control sequence, N for normal), and +% #4 is the list of pages. The page list can have \pp (principal +% entry)in it, and each page is separated by \c. +% +\def\indexentry#1#2#3#4{% + \beginit{INDEX ENTRY}% + \leftskip = #1\indexpageindent + \par + \leavevmode + \hangindent = \indexlevelindent + \ifx #3T% + {\tt #2}% Typewriter. + \else \ifx #3C% + {\tt \llap{\\}#2}% Control sequence. + \else + % in normal entries, \b and \e enclose a group. ({ and } don't work.) + {\let \b = \bgroup \let \e = \egroup #2}% + \fi\fi + #4% The list of pages. + \par + \endit{INDEX ENTRY}% +} + +% Nah, let's forget printing the initial. +% +\def\indexgroup#1{% + \bigskip +} + + + +% Code formatting. +% +% +% Turn off normally special characters. +% +\def\deactivate{% + \catcode`\\ = \other \catcode`\{ = \other \catcode`\} = \other + \catcode`\$ = \other \catcode`\& = \other \catcode`\# = \other + \catcode`\% = \other \catcode`\~ = \other \catcode`\^ = \other + \catcode`\_ = \other +} + +% It is convenient to have |...| mean print the ... verbatim, except for !. +% (But | should just be a vertical bar in math mode.) This should be +% used only for inline code; returns inside |...| become spaces. +% +\catcode`\| = \active +\def|{% + \ifmmode + \vert + \else + \begingroup + \obeyspaces + \begincs + \let| = \endgroup + \fi +} + +% \csdisplay is similar, but it inserts glue before and after. +% It also is ended by |, so we have to redefine that. +% +\def\csdisplay{% + \par + \nobreak % don't break above displays + \vskip\abovedisplayskip + \begingroup + \interlinepenalty = 10000 + \obeywhitespace + \begincs + \def|{\endgroup\vskip\belowdisplayskip \noindent\ignorespaces}% +} + +% \begincs does the setup for verbatim printing. It does not confine +% its effects to a group. +% +\def\begincs{% + \hfuzz = \codefuzz + \parfillskip = 0pt plus 1fil + \parskip = 0pt % don't stretch interparagraph space within code displays + \catcode`\! = 0 + \let\! = \exclam + \let\| = \verticalbar + \let\$ = $% + \let\. = \empty % Use !. to end a control sequence to be executed. + \def\-{\discretionary{-}{}{}}% but allow explicit discretionary hyphens + \tt \deactivate +} + + +\chardef\exclam = `\! +\chardef\verticalbar = `\| + +% In math mode we want vertical bars and exclamation points to be +% regular characters again. +% +\everymath = {\setmathchars} +\everydisplay = {\setmathchars} +\leftdisplays + +\def\setmathchars{% + \catcode`\| = \other \catcode`\! = \other + \let\{ = \lbrace \let\} = \rbrace +} + + + + +% Some miscellanous macros. +% +\def\anatomy{Anato\-mie de \TeX} +\def\ascii{{\ninerm ASCII}} +\def\asciichar#1{$\langle \rm #1\rangle$} +\def\bblfile{fichier~{\tt .bbl}} +\def\bblfiles{fichiers~{\tt .bbl}} +\def\bibfile{fichier~{\tt .bib}} +\def\bibfiles{fichiers~{\tt .bib}} +\def\boite{bo\^\i te} +\def\boites{bo\^\i tes} +\def\bstfile{fichier~{\tt .bst}} +\def\bstfiles{fichiers~{\tt .bst}} +\def\didotpt{point did\^ot} +\def\dvifile{fi\-chier~{\tt .dvi}} +\def\dvifiles{fi\-chiers~{\tt .dvi}} +\def\ecrire{\'ecrire} % pour le tri de l'index +\def\editeur{\'editeur de texte} % pour le tri de l'index +\def\elements{\'el\'ements} % pour le tri de l'index +\def\elementextra{\'el\'ement extraordinaire} % pour le tri de l'index +\def\enumerations{\'enum\'erations} % pour le tri de l'index +\def\equations{\'equations} % pour le tri de l'index +\def\etirement{\'etirement} % pour le tri de l'index +\def\em{\thinspace {\rm em}} +\def\emph#1{{\it #1}\itcorr} % Emphasize. +\def\ftp{{\tt ftp}} +\def\gffile{fichier~{\tt .gf}} +\def\gffiles{fichiers~{\tt .gf}} +\def\hand{{\handfont +}} +\def\ifatest{{\tt \\if} test} +\chardef\inches = "7D +\def\knuth#1#2{#1 de \texbook\ et +\def\tempa{#2}% Merci Joss ! +\ifx\tempa\empty\else +#2 +\fi +de la tra\-duc\-tion fran\-\c caise} +\def\logfile{fichier~{\tt .log}} +\let\Metafont = \MF +\def\Mperiod.{$M$\kern-1.6pt.} +\def\Mprimecomma,{$M'$\kern-3.5pt,} +\def\Mprimeperiod.{$M'$\kern-2.5pt.} +\def\mud{\thinspace {\rm mu}} % can't use \mu; it'a a Greek letter! +\def\newTeX{nou\-veau \TeX} +\def\oesophage{\oe sophage} +\def\p{p.\thinspace} +\def\pkfile{fichier~{\tt .pk}} +\def\pkfiles{fichiers~{\tt .pk}} +\def\plainTeX{plain \TeX} +\def\PlainTeX{Plain \TeX} +\def\pp{p\p} +\def\pt{\thinspace {\rm pt}} +\def\pxlfile{fichier~{\tt .pxl}} +\def\pxlfiles{fichiers~{\tt .pxl}} +\def\tequiv{\unskip $\>\equiv\>$} % equivalence in text +\def\texbook{{\sl The \TeX book}\itcorr} +\let\tex@ = \TeX +\def\TeX{\tex@\null} +\def\TeXMeX{\TeX\ M\kern-.11em\lower .5ex\hbox{E}\kern-.125em X\null}% +\def\tfmfile{fichier~{\tt .tfm}} +\def\tfmfiles{fichiers~{\tt .tfm}} +\def\thisbook{{\sl\TeX\ pour l'Impatient\/}} +\let\ths = \thinspace +\def\tminus{\unskip\allowbreak $\>-\>$\allowbreak} % minus in text +\def\tplus{\unskip\allowbreak $\>+\>$\allowbreak} % plus in text +\def\TUG{\TeX{} Users Group} +\def\Vcomma,{$V$\kern-2pt,} +\def\visiblespace{{\tentt \char'040}} +\def\Vperiod.{$V$\kern-2pt.} +\let\vs=\visiblespace +\def\xrefpg#1{page~\xrefn{#1}} + +% \tighten attempts to shorten the number of lines occupied by a paragraph. +\def\tighten{\looseness=-1 + \spaceskip = .9\fontdimen2\font plus \fontdimen3\font + minus 1.1\fontdimen4\font +} + +% \itcorr can be used at the end of a macro that puts its argument in +% italics in order to produce an italic correction just when it's needed. +% It won't look inside a following macro call, however. + +\def\itcorr{\futurelet\next\itcorrA} +\def\itcorrA{\ifx.\next\else\ifx,\next\else\/\fi\fi} + + +% Arrange N items in three columns. +% A right brace is needed at the end of the list to match the \bgroup. +% +\def\threecolumns{\nobreak\vskip\abovedisplayskip\dothreecolumns} + +\def\dothreecolumns#1 {\bgroup + \parindent = 0pt + \makecolumns #1/3: +} + +% We don't want to make < an active character because then it cannot be used +% in \ifnum tests. So, \<foo> denotes a nonterminal `foo'. +% +\def\<#1>{$\langle${\rm\it \kern-.2pt #1\kern.65pt}$\rangle$} + +\let\beginit = \environment +\let\endit = \endenvironment + +\def\eatpar#1\par{} + +% \needspace breaks out the page if there's less than #1 left on it. + +\def\needspace#1{% + \saveskip = \lastskip + \par % force vertical mode + \vfil + \penalty 1000 + \vskip #1 + \penalty9999 + \par % exercise the page builder + \vskip -#1 plus -1fil + \vskip -\saveskip \vskip \saveskip % to restore \lastskip +} + + + + +% Expanded cross-referencing for various parts of the books. +% + +% Sometimes it is clearer to refer to a cross-reference as a control +% sequence. +% +\def\ctsref{\begingroup \catcode`\@ = \letter \@ctsref} +\def\@ctsref#1{(\xref{#1})\endgroup} + +\def\xrefdelim[#1]{page~\xrefn{#1}} % this form doesn't need braces + +% This command comes at the beginning of chapters, after the \chapter +% command and before the text. Hence the \par in the template +% and the \noindent +% +\def\chapterdef#1#2\par{% + \@writeaux{% + \string\gdef\expandafter\string + \csname#1_C\endcsname{\the\chapterno}}% + \noindent +} + +\def\chapternum#1{% + \def\csn{#1_C}% + \expandafter\ifx\csname\csn\endcsname \relax + \expandafter\def\csname\csn\endcsname{`#1'}% + \ifxrefwarning + \message{Chapitre `#1' indéfini.}% + \fi + \fi + \csname\csn\endcsname +} + +\def\chapterref#1{section~\chapternum{#1}} + +\def\headcit#1#2{``{\rm #1}'' (\xref{#2})} + +\def\conceptcit#1{\headcit{#1}{#1}} + +\def\seeconcept#1{(voir ``{\rm #1}'', \xref{#1})} + +%\def\seeheadcon#1#2{(voir ``{\rm #1}'', \xref{#2})} + + + + +% Special types of pictures. +% +% Glue pictures: +% +\newdimen\glueboxwidth +\newdimen\boxdepth \boxdepth = 3.5pc +\newskip\underlabel \underlabel= .1\boxdepth % space under `width n'. +\def\squeezeglue{\glueboxwidth = .725\glueboxwidth} + +\def\labelledbox#1 #2 #3{\vtop{% + \hrule + \hbox{% + \vrule + \hbox to #1{\hfil \vbox to #2{\vfil#3\vskip\underlabel}\hfil}% + \vrule + }% + \hrule +}}% + +% Make a picture of a box. +% +\def\picbox#1 {% + \glueboxwidth = #1pc \squeezeglue + \vtop{% + \hbox to \glueboxwidth{\strut \hfil {\it box}\hfil}% + \labelledbox % Have to have spaces after the arguments. + {\glueboxwidth} + {\boxdepth} + {\halign{\hfil##\hfil\cr width #1\cr}}% + }% +} + +% And of glue. +% +\def\gluebox#1 #2 #3 #4 {\vtop{% + \glueboxwidth = #4pc \squeezeglue + \hbox to \glueboxwidth{\strut \hfil {\it glue}\hfil}% + \nointerlineskip + \kern2pt % to move the brace down a bit + \hbox{$\overbrace{\hbox{\hskip\glueboxwidth}}$}% + \kern-3pt % The \overbrace puts in 3pt below itself. + \nointerlineskip + \vbox to \boxdepth{% + \hsize = \glueboxwidth + \vskip 2pt + \advance\baselineskip by -2pt + \centerline{\strut size #1}% + \centerline{stretch #2}% + \centerline{shrink #3}% + \centerline{width #4}% + \vss + }% + \kern 1.5pt % I don't know why this is needed. + \nointerlineskip + \hbox{$\underbrace{\hbox{\hskip\glueboxwidth}}$}% +}} + +\def\gluepicture#1 #2{{\ninerm + \medskip + \vtop{% + \setbox0 = \hbox{#2}% The glue and box pictures. + \glueboxwidth = \wd0 + \leftline{\box0}% + \kern 6pt + \hbox to \glueboxwidth{\leftarrowfill{ width #1 }\rightarrowfill}% + }% + \medskip +}} + +% Box pictures. +% +% Set up a `reference point' and the macro for a labelled height, for use +% in forming pictures of boxes. +% +\newbox\refpoint + +\setbox\refpoint = \vbox to 0pt{% + \kern-2.6pt + \hbox to 0pt{\kern-2.2pt $\bullet$\hss} + \vss +}% + +\def\labelledheight#1#2{% +\vtop to #1{\offinterlineskip + \setbox0=\hbox{#2}\skip0=\wd0 + \hbox to \skip0{\hss\tenex\char"78\hss}\kern-4pt + {\cleaders\hbox to \skip0{\hss\tenex\char"3F\hss}\vfil}% + \vskip1pt\box0\vskip1pt + {\cleaders\hbox to \skip0{\hss\tenex\char"3F\hss}\vfil}% + \kern -6pt\boxmaxdepth 0pt\hbox to \skip0{\hss\tenex\char"79\hss}}} + + + +% Paul's updates -- no longer needed; we have converged. +% +%\input paulmacs + +% Read the cross-reference definitions. +% +\readauxfile + +\catcode`\@ = \other % Make @ an `other' character again. +\catcode`\^ = \active % Make ^'s do indexing outside of math mode. \def\np{\vfill\eject}
\ No newline at end of file diff --git a/info/impatient/fr/fmath.tex b/info/impatient/fr/fmath.tex index 59089d532d..b2be1b8a48 100644 --- a/info/impatient/fr/fmath.tex +++ b/info/impatient/fr/fmath.tex @@ -1,2176 +1,2176 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-\chapter {Commandes pour \linebreak composer des \linebreak formules math\'ematiques}
-
-\bix^^{math\'ematiques}
-\chapterdef{math}
-
-Cette section couvre les commandes pour construire des formules math\'e\-matiques.
-Pour une explication des conventions utilis\'ees dans cette section,
-voir \headcit{Description des commandes}{cmddesc}.
-
-\begindescriptions
-%==========================================================================
-\section {Parties simples de formules}
-
-%==========================================================================
-\subsection {Lettres grecques}
-
-\begindesc
-\bix^^{lettres grecques}
-\dothreecolumns 40
-\easy\ctsdisplay alpha {}
-\ctsdisplay beta {}
-\ctsdisplay chi {}
-\ctsdisplay delta {}
-\ctsdisplay Delta {}
-\ctsdisplay epsilon {}
-\ctsdisplay varepsilon {}
-\ctsdisplay eta {}
-\ctsdisplay gamma {}
-\ctsdisplay Gamma {}
-\ctsdisplay iota {}
-\ctsdisplay kappa {}
-\ctsdisplay lambda {}
-\ctsdisplay Lambda {}
-\ctsdisplay mu {}
-\ctsdisplay nu {}
-\ctsdisplay omega {}
-\ctsdisplay Omega {}
-\ctsdisplay phi {}
-\ctsdisplay varphi {}
-\ctsdisplay Phi {}
-\ctsdisplay pi {}
-\ctsdisplay varpi {}
-\ctsdisplay Pi {}
-\ctsdisplay psi {}
-\ctsdisplay Psi {}
-\ctsdisplay rho {}
-\ctsdisplay varrho {}
-\ctsdisplay sigma {}
-\ctsdisplay varsigma {}
-\ctsdisplay Sigma {}
-\ctsdisplay tau {}
-\ctsdisplay theta {}
-\ctsdisplay vartheta {}
-\ctsdisplay Theta {}
-\ctsdisplay upsilon {}
-\ctsdisplay Upsilon {}
-\ctsdisplay xi {}
-\ctsdisplay Xi {}
-\ctsdisplay zeta {}
-\egroup
-\explain
-Ces commandes produisent les lettres grecques appropri\'ees aux math\'e\-matiques.
-Vous ne pouvez les utiliser que dans une formule math\'ema\-tique, ainsi si vous
-avez besoin d'une lettre grecque dans du texte ordinaire, vous devez l'englober
-entre des signes dollar (|$|). \TeX\ n'a pas de commandes pour des lettres
-grecques qui ressemblent \`a leurs contre-parties romaines, puisque vous pouvez
-les obtenir en employant ces contre-parties romaines. Par exemple, vous pouvez
-obtenir un ^{omicron} minuscule dans une formule en \'ecrivant la lettre `o',
-c'est-\`a-dire, `|{\rm o}|' ou un ^{beta} majuscule (`B') en \'ecrivant `|{\rm B}|'.
-
-Ne confondez pas les lettres suivantes~:
-\ulist \compact
-\li |\upsilon| (`$\upsilon$'), |{\rm v}| (`v'), et |\nu| (`$\nu$').
-\li |\varsigma| (`$\varsigma$') and |\zeta| (`$\zeta$').
-\endulist
-
-Vous pouvez obtenir des lettres grecques capitales inclin\'ees en utilisant
-la \minref{police} math\'ematique italique (|\mit|).
-
-\TeX \ traite les lettres grecques comme des symboles ordinaires quand
-il calcule combien d'espace mettre autour d'eux.
-
-\example
-If $\rho$ and $\theta$ are both positive, then $f(\theta)
--{\mit \Gamma}_{\theta} < f(\rho)-{\mit \Gamma}_{\rho}$.
-|
-\produces
-If $\rho$ and $\theta$ are both positive, then
-$f(\theta)-{\mit \Gamma}_{\theta} < f(\rho)-{\mit \Gamma}_{\rho}$.
-\endexample
-\eix^^{lettres grecques}
-\enddesc
-
-%==========================================================================
-\subsection {Divers Symboles math\'ematiques ordinaires}
-
-\begindesc
-\xrdef{specsyms}
-\dothreecolumns 34
-\easy\ctsdisplay infty {}
-\ctsdisplay Re {}
-\ctsdisplay Im {}
-\ctsdisplay angle {}
-\ctsdisplay triangle {}
-\ctsdisplay backslash {}
-\ctsdisplay vert {}
-\ctsydisplay | @bar {}
-\ctsdisplay Vert {}
-\ctsdisplay emptyset {}
-\ctsdisplay bot {}
-\ctsdisplay top {}
-\ctsdisplay exists {}
-\ctsdisplay forall {}
-\ctsdisplay hbar {}
-\ctsdisplay ell {}
-\ctsdisplay aleph {}
-\ctsdisplay imath {}
-\ctsdisplay jmath {}
-\ctsdisplay nabla {}
-\ctsdisplay neg {}
-\ctsdisplay lnot {}
-\actdisplay ' @prime \ (apostrophe)
-\ctsdisplay prime {}
-\ctsdisplay partial {}
-\ctsdisplay surd {}
-\ctsdisplay wp {}
-\ctsdisplay flat {}
-\ctsdisplay sharp {}
-\ctsdisplay natural {}
-\ctsdisplay clubsuit {}
-\ctsdisplay diamondsuit {}
-\ctsdisplay heartsuit {}
-\ctsdisplay spadesuit {}
-\egroup
-\explain
-^^{symboles musicaux} ^^{couleurs de carte \`a jouer}
-Ces commandes produisent des symboles vari\'es. On les appelle
-``^{symboles ordinaires}'' pour les distinguer des autres classes de
-symboles comme les relations. Vous ne pouvez utiliser un
-symbole ordinaire que dans une formule math\'ematique,
-donc si vous avez besoin d'un symbole ordinaire dans du texte ordinaire
-vous devez l'englober entre des signes dollar (|$|).
-
-Les commandes |\imath| et |\jmath| sont utiles quand vous devez mettre un
-accent sur un `$i$' ou un `$j$'.
-
-Une apostrophe (|'|) est un raccourci pour \'ecrire un |\prime| en exposant. (La
-commande |\prime| de son c\^ot\'e, g\'en\`ere un gros prime laid.)
-
-Les commandes |\!|| et ^|\Vert| sont synonymes, comme
-le sont les commandes ^|\neg| et ^|\lnot|.
-\margin{explanation of {\tt\\vert} added}
-La commande |\vert| produit le m\^eme r\'esultat que `|!||'.
-\indexchar |
-
-Les symboles produits par |\backslash|, |\vert| et |\Vert|
-sont des \minref{d\'eli\-mi\-teur}s. ces symboles peuvent \^etre produit en grandes taille
-en utilisant ^|\bigm| etc.\ (\xref \bigm).
-
-\example
-The Knave of $\heartsuit$s, he stole some tarts.
-|
-\produces
-The Knave of $\heartsuit$s, he stole some tarts.
-\nextexample
-If $\hat\imath < \hat\jmath$ then $i' \leq j^\prime$.
-|
-\produces
-If $\hat\imath < \hat\jmath$ then $i' \leq j^\prime$.
-\nextexample
-$${{x-a}\over{x+a}}\biggm\backslash{{y-b}\over{y+b}}$$
-|
-\dproduces
-$${{x-a}\over{x+a}}\biggm\backslash{{y-b}\over{y+b}}$$
-\endexample
-\enddesc
-
-%==========================================================================
-\subsection {Op\'erations binaires}
-
-\begindesc
-\bix^^{op\'erations}
-\xrdef{binops}
-\dothreecolumns 34
-\easy\ctsdisplay vee {}
-\ctsdisplay wedge {}
-\ctsdisplay amalg {}
-\ctsdisplay cap {}
-\ctsdisplay cup {}
-\ctsdisplay uplus {}
-\ctsdisplay sqcap {}
-\ctsdisplay sqcup {}
-\ctsdisplay dagger {}
-\ctsdisplay ddagger {}
-\ctsdisplay land {}
-\ctsdisplay lor {}
-\ctsdisplay cdot {}
-\ctsdisplay diamond {}
-\ctsdisplay bullet {}
-\ctsdisplay circ {}
-\ctsdisplay bigcirc {}
-\ctsdisplay odot {}
-\ctsdisplay ominus {}
-\ctsdisplay oplus {}
-\ctsdisplay oslash {}
-\ctsdisplay otimes {}
-\ctsdisplay pm {}
-\ctsdisplay mp {}
-\ctsdisplay triangleleft {}
-\ctsdisplay triangleright {}
-\ctsdisplay bigtriangledown {}
-\ctsdisplay bigtriangleup {}
-\ctsdisplay ast {}
-\ctsdisplay star {}
-\ctsdisplay times {}
-\ctsdisplay div {}
-\ctsdisplay setminus {}
-\ctsdisplay wr {}
-\egroup
-\explain
-Ces commandes produisent les symboles pour diff\'erentes op\'erations binaires.
-Les op\'erations binaires sont une des \minref{classe}s des symboles math\'e\-matiques de \TeX.
-\TeX\ met diff\'erents montants d'espace autour de dif\-f\'e\-rentes classes de symboles
-math\'ematiques. Quand \TeX\ a besoin de couper une ligne de texte dans une formule math\'ematique,
-\minrefs{line break} il devra placer la coupure apr\`es une op\'eration binaire---mais seulement si
-l'op\'eration est \`a un niveau sup\'erieur \`a la formule, c'est-\`a-dire, non incluse dans un groupe.
-
-En plus de ces commandes, \TeX\ traite \'egalement `|+|' et `|-|'
-en tant qu'op\'erations binaires. Il consid\`ere `|/|' comme un symbole ordinaire,
-en d\'epit du fait que, math\'ematiquement, ce soit une op\'eration binaire,
-parce qu'il semble mieux avec moins d'espace autour de lui.
-
-\example
-$$z = x \div y \quad \hbox{if and only if} \quad
-z \times y = x \;\hbox{and}\; y \neq 0$$
-|
-\dproduces
-$$z = x \div y \quad \hbox{if and only if} \quad
-z \times y = x \;\hbox{and}\; y \neq 0$$
-\endexample
-\enddesc
-
-\begindesc
-\ctspecial * \ctsxrdef{@star}
-\explain
-La commande |\*| indique un symbole de multiplication optionnel
-($\times$), qui est une op\'eration binaire. Ce symbole de multiplication
-agit comme une c\'esure optionnelle quand il appara\^\i t dans une formule dans un
-texte\minrefs{texte math\'ematique}. Cela \'etant, \TeX\ ne composera le symbole |\times|
-\emph{que} si la formule doit \^etre coup\'ee en ce point.
-Il n'y a aucun point en utilisant |\*| dans des formules affich\'ees \minrefs{math\'ematique
-affich\'ee} car \TeX\ ne coupe jamais de formules affich\'ees de lui-m\^eme.
-
-\example
-Let $c = a\*b$. In the case that $c=0$ or $c=1$, let
-$\Delta$ be $(\hbox{the smallest $q$})\*(\hbox{the
-largest $q$})$ in the set of approximate $\tau$-values.
-|
-\produces
-Let $c = a\*b$. In the case that $c=0$ or $c=1$, let
-$\Delta$ be $(\hbox{the smallest $q$})\*(\hbox{the
-largest $q$})$ in the set of approximate $\tau$-values.
-
-\eix^^{op\'erations}
-\endexample
-\enddesc
-
-%==========================================================================
-\subsection {Relations}
-
-\begindesc
-\xrdef {relations}
-\bix^^{relations}
-\dothreecolumns 39
-\easy\ctsdisplay asymp {}
-\ctsdisplay cong {}
-\ctsdisplay dashv {}
-\ctsdisplay vdash {}
-\ctsdisplay perp {}
-\ctsdisplay mid {}
-\ctsdisplay parallel {}
-\ctsdisplay doteq {}
-\ctsdisplay equiv {}
-\ctsdisplay ge {}
-\ctsdisplay geq {}
-\ctsdisplay le {}
-\ctsdisplay leq {}
-\ctsdisplay gg {}
-\ctsdisplay ll {}
-\ctsdisplay models {}
-\ctsdisplay ne {}
-\ctsdisplay neq {}
-\ctsdisplay notin {}
-\ctsdisplay in {}
-\ctsdisplay ni {}
-\ctsdisplay owns {}
-\ctsdisplay prec {}
-\ctsdisplay preceq {}
-\ctsdisplay succ {}
-\ctsdisplay succeq {}
-\ctsdisplay bowtie {}
-\ctsdisplay propto {}
-\ctsdisplay approx {}
-\ctsdisplay sim {}
-\ctsdisplay simeq {}
-\ctsdisplay frown {}
-\ctsdisplay smile {}
-\ctsdisplay subset {}
-\ctsdisplay subseteq {}
-\ctsdisplay supset {}
-\ctsdisplay supseteq {}
-\ctsdisplay sqsubseteq {}
-\ctsdisplay sqsupseteq {}
-\egroup
-\explain
-Ces commandes produisent des symboles pour diff\'erentes relations.
-Les relations sont une des \minref{classe}s des symboles math\'ematiques.
-\TeX\ met diff\'erents montants d'espace autour de diff\'erentes classes de symboles
-math\'ematiques.
-Quand \TeX\ a besoin de couper une ligne de texte dans une formule math\'ematique,
-\minrefs{line break} il devra placer la coupure apr\`es une relation---mais seulement si
-l'op\'eration est \`a un niveau sup\'erieur \`a la formule, c'est-\`a-dire, non incluse dans un groupe.
-
-En plus des commandes list\'ees ici, \TeX\ traite `^|=|' et les
-commandes ``fl\`eche'' (\xref{arrows}) comme des relations.
-
-Certaines relations ont plus d'une commande que vous pouvez utiliser
-pour les produire~:
-\ulist \compact
-\li `$\ge$' (|\ge| et |\geq|).
-\li `$\le$' (|\le| et |\leq|).
-\li `$\ne$' (|\ne|, |\neq| et |\not=|).
-\li `$\ni$' (|\ni| et |\owns|).
-\endulist
-
-\xrdef{\not}
-Vous pouvez produire des relations n\'egatives en les pr\'efixant avec |\not|, comme cela~:
-
-\nobreak
-\threecolumns 21
-\basicdisplay {$\not\asymp$}{\\not\\asymp}\ctsidxref{asymp}
-\basicdisplay {$\not\cong$}{\\not\\cong}\ctsidxref{cong}
-\basicdisplay {$\not\equiv$}{\\not\\equiv}\ctsidxref{equiv}
-\basicdisplay {$\not=$}{\\not=}\ttidxref{=}
-\basicdisplay {$\not\ge$}{\\not\\ge}\ctsidxref{ge}
-\basicdisplay {$\not\geq$}{\\not\\geq}\ctsidxref{geq}
-\basicdisplay {$\not\le$}{\\not\\le}\ctsidxref{le}
-\basicdisplay {$\not\leq$}{\\not\\leq}\ctsidxref{leq}
-\basicdisplay {$\not\prec$}{\\not\\prec}\ctsidxref{prec}
-\basicdisplay {$\not\preceq$}{\\not\\preceq}\ctsidxref{preceq}
-\basicdisplay {$\not\succ$}{\\not\\succ}\ctsidxref{succ}
-\basicdisplay {$\not\succeq$}{\\not\\succeq}\ctsidxref{succeq}
-\basicdisplay {$\not\approx$}{\\not\\approx}\ctsidxref{approx}
-\basicdisplay {$\not\sim$}{\\not\\sim}\ctsidxref{sim}
-\basicdisplay {$\not\simeq$}{\\not\\simeq}\ctsidxref{simeq}
-\basicdisplay {$\not\subset$}{\\not\\subset}\ctsidxref{subset}
-\basicdisplay {$\not\subseteq$}{\\not\\subseteq}\ctsidxref{subseteq}
-\basicdisplay {$\not\supset$}{\\not\\supset}\ctsidxref{supset}
-\basicdisplay {$\not\supseteq$}{\\not\\supseteq}\ctsidxref{supseteq}
-\basicdisplay {$\not\sqsubseteq$}{\\not\\sqsubseteq}%
- \ctsidxref{sqsubseteq}
-\basicdisplay {$\not\sqsupseteq$}{\\not\\sqsupseteq}%
- \ctsidxref{sqsupseteq}
-\egroup
-
-\example
-We can show that $AB \perp AC$, and that
-$\triangle ABF \not\sim \triangle ACF$.
-|
-\produces
-We can show that $AB \perp AC$, and that
-$\triangle ABF \not\sim \triangle ACF$.
-
-\eix^^{relations}
-\endexample
-\enddesc
-
-%==========================================================================
-\subsection {D\'elimiteurs gauches et droits}
-
-\begindesc
-\bix^^{d\'elimiteurs}
-%
-\dothreecolumns 12
-\easy\ctsdisplay lbrace {}
-\ctsydisplay { @lbrace {}
-\ctsdisplay rbrace {}
-\ctsydisplay } @rbrace {}
-\ctsdisplay lbrack {}
-\ctsdisplay rbrack {}
-\ctsdisplay langle {}
-\ctsdisplay rangle {}
-\ctsdisplay lceil {}
-\ctsdisplay rceil {}
-\ctsdisplay lfloor {}
-\ctsdisplay rfloor {}
-\egroup
-\explain
-Ces commandes produisent des \minref{d\'elimiteur}s gauches et droits.
-Les math\'e\-maticiens utilisent les d\'elimiteurs pour indiquer les fronti\`eres entre les parties
-d'une formule. Les d\'elimiteurs gauches sont aussi appel\'es ``^{ouvrant}s'' et
-les d\'elimiteurs droits sont aussi appel\'es ``^{fermant}s''. Ouvrants et Fermants
-sont deux des \minref{classe}s de symboles math\'ematiques de \TeX. \TeX\ met
-diff\'erents montants d'espace autour des diff\'erentes \minref{classe}s de symboles math\'ematiques.
-Vous devriez vous attendre \`a ce que l'espacement que \TeX\ met autour des ouvrants et
-des fermants soit sym\'etrique, mais en fait, il ne l'est pas.
-
-Certains d\'elimiteurs gauches et droits ont plus d'une commande utilisable pour les produire~:
-
-\ulist\compact
-\li `$\{$' (|\lbrace| and |\{|)
-\li `$\}$' (|\rbrace| and |\}|)
-\li `$[$' (|\lbrack| and `|[|')
-\li `$]$' (|\rbrack| and `|]|')
-\endulist
-\noindent vous pouvez aussi utiliser les caract\`eres crochets gauches et droits
-(sous toutes ses formes) en dehors du mode math\'ematique.
-
-En plus de ces commandes, \TeX\ traite `|(|' comme un d\'elimiteur gauche
-et `|)|' comme un d\'elimiteur droit.
-
-Vous pouvez laisser \TeX\
-choisir la taille d'un d\'elimiteur en utilisant |\left| et |\right| (\xref\left).
-Alternativement,
-vous pouvez obtenir un d\'eli\-miteur d'une taille sp\'ecifique en utilisant une des commandes |\big|$x$
-(voir |\big| et al., \xref{\big}).
-
-\example
-The set $\{\,x \mid x>0\,\}$ is empty.
-|
-\produces
-The set $\{\,x \mid x>0\,\}$ is empty.
-
-\eix^^{d\'elimiteurs}
-\endexample
-\enddesc
-
-%==========================================================================
-\subsection {Fl\`eches}
-
-\begindesc
-\bix^^{fl\`eches}
-\xrdef{arrows}
-%
-{\symbolspace=24pt \makecolumns 34/2:
-\easy%
-\ctsdisplay leftarrow {}
-\ctsdisplay gets {}
-\ctsdisplay Leftarrow {}
-\ctsdisplay rightarrow {}
-\ctsdisplay to {}
-\ctsdisplay Rightarrow {}
-\ctsdisplay leftrightarrow {}
-\ctsdisplay Leftrightarrow {}
-\ctsdisplay longleftarrow {}
-\ctsdisplay Longleftarrow {}
-\ctsdisplay longrightarrow {}
-\ctsdisplay Longrightarrow {}
-\ctsdisplay longleftrightarrow {}
-\ctsdisplay Longleftrightarrow {}
-\basicdisplay {$\Longleftrightarrow$}{\\iff}\pix\ctsidxref{iff}\xrdef{\iff}
-\ctsdisplay hookleftarrow {}
-\ctsdisplay hookrightarrow {}
-\ctsdisplay leftharpoondown {}
-\ctsdisplay rightharpoondown {}
-\ctsdisplay leftharpoonup {}
-\ctsdisplay rightharpoonup {}
-\ctsdisplay rightleftharpoons {}
-\ctsdisplay mapsto {}
-\ctsdisplay longmapsto {}
-\ctsdisplay downarrow {}
-\ctsdisplay Downarrow {}
-\ctsdisplay uparrow {}
-\ctsdisplay Uparrow {}
-\ctsdisplay updownarrow {}
-\ctsdisplay Updownarrow {}
-\ctsdisplay nearrow {}
-\ctsdisplay searrow {}
-\ctsdisplay nwarrow {}
-\ctsdisplay swarrow {}
-}
-\explain
-Ces commandes procurent des fl\`eches de diff\'erentes sortes. Elles
-sont class\'ees parmi les relations (\xref{relations}).
-Les fl\`eches verticales de la liste sont aussi des \minref{d\'elimiteur}s, donc vous pouvez les rendre
-plus grandes en utilisant |\big| et al.\ (\xref \big).
-
-La commande |\iff| diff\`ere de |\Longleftrightarrow| parce qu'elle
-produit un espace suppl\'ementaire \`a gauche et \`a droite de la fl\`eche.
-
-Vous pouvez placer des symboles ou d'autres l\'egendes au dessus des fl\`eche gauches et droite
-avec |\buildrel| (\xref \buildrel).
-
-\example
-$$f(x)\mapsto f(y) \iff x \mapsto y$$
-|
-\dproduces
-$$f(x)\mapsto f(y) \iff x \mapsto y$$
-
-\eix^^{fl\`eches}
-\endexample
-\enddesc
-
-%==========================================================================
-\subsection {Fonctions math\'ematiques nomm\'ees}
-
-\begindesc
-\xrdef{namedfns}
-\bix^^{fonctions, noms de}
-{\symbolspace = 36pt
-\threecolumns 32
-\easy\ctsdisplay cos {}
-\ctsdisplay sin {}
-\ctsdisplay tan {}
-\ctsdisplay cot {}
-\ctsdisplay csc {}
-\ctsdisplay sec {}
-\ctsdisplay arccos {}
-\ctsdisplay arcsin {}
-\ctsdisplay arctan {}
-\ctsdisplay cosh {}
-\ctsdisplay coth {}
-\ctsdisplay sinh {}
-\ctsdisplay tanh {}
-\ctsdisplay det {}
-\ctsdisplay dim {}
-\ctsdisplay exp {}
-\ctsdisplay ln {}
-\ctsdisplay log {}
-\ctsdisplay lg {}
-\ctsdisplay arg {}
-\ctsdisplay deg {}
-\ctsdisplay gcd {}
-\ctsdisplay hom {}
-\ctsdisplay ker {}
-\ctsdisplay inf {}
-\ctsdisplay sup {}
-\ctsdisplay lim {}
-\ctsdisplay liminf {}
-\ctsdisplay limsup {}
-\ctsdisplay max {}
-\ctsdisplay min {}
-\ctsdisplay Pr {}
-\egroup}
-\explain
-Ces commandes mettent les noms de diff\'erentes fonctions math\'ematiques
-en type romain, comme \`a l'accoutum\'ee.
-Si vous appliquez un exposant ou un indice sur une de ces commandes,
-\TeX\ le composera dans la plupart des cas \`a l'endroit usuel.
-En style d'affichage, \TeX\ compose les exposants et les indices
-de |\det|, |\gcd|, |\inf|, |\lim|, |\liminf|,
-|\limsup|, |\max|, |\min|, |\Pr| et |\sup|
-comme s'ils \'etaient des limites,
-c'est-\`a-dire, directement au-dessus ou directement au-dessous du nom de la fonction.
-
-\example
-$\cos^2 x + \sin^2 x = 1\qquad\max_{a \in A} g(a) = 1$
-|
-\produces
-$\cos^2 x + \sin^2 x = 1\qquad\max_{a \in A} g(a) = 1$
-\endexample
-\enddesc
-
-\begindesc
-\cts bmod {}
-\explain
-Cette commande produit une op\'eration binaire pour indiquer un ^{modulo}
-dans une formule.
-\example
-$$x = (y+1) \bmod 2$$
-|
-\dproduces
-$$x = (y+1) \bmod 2$$
-\endexample
-\enddesc
-
-\begindesc
-\cts pmod {}
-\explain
-Cette commande procure une notation pour indiquer un ^{modulo} entre parenth\`eses
-\`a la fin d'une formule.
-\example
-$$x \equiv y+1 \pmod 2$$
-|
-\dproduces
-$$x \equiv y+1 \pmod 2$$
-
-\eix^^{fonctions, noms de}
-\endexample
-\enddesc
-
-%==========================================================================
-\subsection {Grands op\'erateurs}
-
-\begindesc
-\bix^^{op\'erateurs//grands}
-\threecolumns 15
-\easy\ctsdoubledisplay bigcap {}
-\ctsdoubledisplay bigcup {}
-\ctsdoubledisplay bigodot {}
-\ctsdoubledisplay bigoplus {}
-\ctsdoubledisplay bigotimes {}
-\ctsdoubledisplay bigsqcup {}
-\ctsdoubledisplay biguplus {}
-\ctsdoubledisplay bigvee {}
-\ctsdoubledisplay bigwedge {}
-\ctsdoubledisplay coprod {}
-{\symbolspace = 42pt\basicdisplay {\hskip 26pt$\smallint$}%
- {\\smallint}\ddstrut}%
- \xrdef{\smallint} \pix\ctsidxref{smallint}
-\ctsdoubledisplay int {}
-\ctsdoubledisplay oint {}
-\ctsdoubledisplay prod {}
-\ctsdoubledisplay sum {}
-}
-\explain
-Ces commandes produisent diff\'erents grands symboles d'op\'erateur.
-\TeX\ produit la plus petite taille quand il est en \minrefs{mode math\'ematique}
-^{style texte} et les plus grandes tailles quand il est en ^{style d'affichage}.
-Les Op\'erateurs sont une des \minref{classe}s de symboles math\'ematiques de \TeX.
-\TeX\ met diff\'erents montants d'espace
-autour des diff\'erentes classes de symboles math\'ematiques.
-
-Les grands symboles d'op\'erateur avec `|big|' dans leurs noms sont diff\'e\-rents
-des op\'erations binaires correspondantes (voir \xref{binops}) comme
-|\cap| ($\cap$) puisqu'ils apparaissent habituellement au d\'ebut
-d'une formule. \TeX\ utilise des espacements diff\'erents pour un grand op\'erateur
-et pour une op\'eration binaire.
-
-Ne confondez pas `$\sum$' (|\sum|) avec `$\Sigma$'^^|\Sigma| (|\Sigma|)
-ou `$\prod$' (|\prod|) avec `$\Pi$' ^^|\Pi| (|\Pi|).
-|\Sigma| et |\Pi| produisent les lettres grecques capitales, qui sont plus petites et
-ont une apparence diff\'erente.
-
-Un grand op\'erateur peut avoir des ^{limites}. La limite la plus basse est sp\'ecifi\'ee comme un indice
-et la plus haute comme un exposant.
-
-\example
-$$\bigcap_{k=1}^r (a_k \cup b_k)$$
-|
-\dproduces
-$$\bigcap_{k=1}^r (a_k \cup b_k)$$
-\endexample
-\interexampleskip
-\example
-$${\int_0^\pi \sin^2 ax\,dx} = {\pi \over 2}$$
-|
-\dproduces
-$${\int_0^\pi \sin^2 ax\,dx} = {\pi \over 2}$$
-\endexample
-\enddesc
-
-\begindesc
-\cts limits {}
-\explain
-Quand il est en style texte, \TeX\ place normalement les limites apr\`es un grand op\'erateur.
-Cette commande demande \`a \TeX\ de placer
-les limites sur et sous un grand op\'erateur plut\^ot qu'apr\`es lui.
-
-Si vous sp\'ecifiez plusieurs commandes |\limits|, |\nolimits|,
-et |\dis!-play!-limits|, seule la derni\`ere sera prise en compte.
-
-\example
-Suppose that $\bigcap\limits_{i=1}^Nq_i$ contains at least
-two elements.
-|
-\produces
-Suppose that $\bigcap\limits_{i=1}^Nq_i$ contains at least
-two elements.
-\endexample
-\enddesc
-
-\begindesc
-\cts nolimits {}
-\explain
-Quand il est en style d'affichage, \TeX\ place normalement les limites sur et sous un grand op\'erateur.
-(L'op\'erateur |\int| est une exception---\TeX\
-place les limites pour |\int| apr\`es l'op\'erateur dans tous les cas.)
-^^|\int//limites apr\`es|
-Cette commande demande \`a \TeX\ de placer
-les limites apr\`es un grand op\'erateur plut\^ot que sur et sous lui.
-
-Si vous sp\'ecifiez plusieurs commandes |\limits|, |\nolimits|,
-et |\dis!-play!-limits|, seule la derni\`ere sera prise en compte.
-
-\example
-$$\bigcap\nolimits_{i=1}^Nq_i$$
-|
-\dproduces
-$$\bigcap\nolimits_{i=1}^Nq_i$$
-\endexample
-\enddesc
-
-\begindesc
-\cts displaylimits {}
-\explain
-Cette commande demande \`a \TeX\ de
-suivre ses r\`egles normales pour le placement des limites~:
-\olist\compact
-\li Les limites de ^|\int| sont plac\'ees apr\`es l'op\'erateur.
-\li Les limites des autres grands op\'erateurs sont plac\'ees apr\`es
-l'op\'era\-teur en style texte.
-\li Les limites des autres grands op\'erateurs sont plac\'ees sur et sous
-l'op\'erateur en style d'affichage.
-\endolist
-Il est habituellement plus simple d'utiliser |\limits| ou |\nolimits|
-pour produire un effet sp\'ecifique, mais |\display!-limits| est parfois
-utile dans les d\'efinitions de \minref{macro}.
-
-Notez que \plainTeX\ d\'efinit ^|\int| comme une macro qui comprend |\no!-limits|,
-donc |\int\displaylimits| en style de texte restaure la convention de |\limits|.
-
-Si vous sp\'ecifiez plusieurs commandes |\limits|, |\nolimits|,
-et |\dis!-play!-limits|, seule la derni\`ere sera prise en compte.
-
-\example
-$$a(\lambda) = {1 \over {2\pi}} \int\displaylimits
-_{-\infty}^{+\infty} f(x)e^{-i\lambda x}\,dx$$
-|
-\dproduces
-$$a(\lambda) = {1 \over {2\pi}} \int\displaylimits
-_{-\infty}^{+\infty} f(x)e^{-i\lambda x}\,dx$$
-
-\eix^^{op\'erateurs//grands}
-\endexample
-\enddesc
-
-
-%==========================================================================
-\subsection {Ponctuation}
-
-\begindesc
-\bix^^{ponctuation et formules de math.}
-\cts cdotp {}
-\cts ldotp {}
-\explain
-Ces deux commandes produisent respectivement un point centr\'e et un point
-positionn\'e sur la \minref{ligne de base}. Elles ne sont valides qu'en
-\minref{mode} math\'ematique. \TeX\ les traite comme de la ponctuation, ne mettant aucun espace suppl\'ementaire devant
-elles mais en ajoutant un petit en plus apr\`es elles.
-En contrepartie, \TeX\ met un montant d'espace \'egal des deux cot\'es
-d'un point centr\'e g\'en\'er\'e par la commande ^|\cdot| (\xref \cdot).
-\example
-$x \cdotp y \quad x \ldotp y \quad x \cdot y$
-|
-\produces
-$x \cdotp y \quad x \ldotp y \quad x \cdot y$
-\endexample
-\enddesc
-
-\begindesc
-\cts colon {}
-\explain
-Cette commande produit une symbole de ponctuation deux-points.
-Elle n'est valide qu'en mode math\'ematique.
-La diff\'erence entre |\colon| et le caract\`ere deux-points (|:|) est que
-`|:|' est un op\'erateur, donc \TeX\ met une espace suppl\'ementaire \`a sa gauche tandis qu'il
-ne met pas d'espace suppl\'ementaire \`a la gauche de |\colon|.
-\example
-$f \colon t \quad f : t$
-|
-\produces
-$f \colon t \quad f : t$
-
-\eix^^{ponctuation et formules de math.}
-\endexample
-\enddesc
-
-
-%==========================================================================
-%\secondprinting{\vfill\eject\null\vglue-30pt\vskip0pt}
-\section {Puissances et indices}
-
-\begindesc
-\margin{Two groups of commands have been combined here.}
-\bix^^{exposants}
-\bix^^{indices}
-%\secondprinting{\vglue-12pt}
-\makecolumns 4/2:
-\easy\ctsact _ \xrdef{@underscore} {\<argument>}
-\cts sb {\<argument>}
-\ctsact ^ \xrdef{@hat} {\<argument>}
-\cts sp {\<argument>}
-%\secondprinting{\vglue-4pt}
-\explain
-Les commandes de chaque colonne sont \'equivalentes. Les commandes de la premi\`ere
-colonne composent \<argument> comme un indice et celle de la seconde
-colonne composent \<argument> comme une puissance. Les commandes |\sb| et |\sp|
-sont principalement utiles si vous travaillez sur un terminal sur lequel manque un
-signe soulign\'e ou de puissance ou si vous avez red\'efini `|_|' or `|^|' et avez besoin
-d'acc\'eder \`a sa d\'efinition originale. Ces commandes sont aussi utilis\'ees pour
-mettre des limites inf\'erieures ou sup\'erieures sur des sommes ou des int\'egrales. ^^{limites
-inf\'erieures} ^^{limites sup\'erieures}
-
-Si une puissance ou un indice n'est pas un \minref{token} seul, vous devez
-l'englober dans un \minref{groupe}. \TeX\ ne met pas de priorit\'e aux puissances
-ou aux indices, donc il rejettera des formules telles que |a_i_j|, |a^i^j| ou
-|a^i_j|.
-
-Les puissances et les indices sont normalement compos\'es en ^{style script} ou
-en ^{style scriptscript} s'il sont de second ordre, c'est-\`a-dire, un indice d'un
-indice ou une puissance d'une puissance. Vous pouvez mettre \emph{tout}
-texte d'une formule math\'ematique en \minref{style}script ou scriptscript avec
-les commandes ^|\scriptstyle| et ^|\scriptscriptstyle| (\xref
-\scriptscriptstyle).
-
-Vous pouvez appliquer une puissance ou un indice \`a toutes les commandes qui
-produisent des fonctions math\'ematiques nomm\'ees en caract\`ere romain (voir
-\xref{namedfns}). Dans certain cas (voyez encore \xref{namedfns}) la
-puissance ou l'indice appara\^\i t directement sur ou sous la fonction
-nomm\'ee comme montr\'e dans les exemples de ^|\lim| et de ^|\det| ci-dessous.
-
-\example
-$x_3 \quad t_{\max} \quad a_{i_k} \quad \sum_{i=1}^n{q_i}
- \quad x^3\quad e^{t \cos\theta}\quad r^{x^2}\quad
- \int_0^\infty{f(x)\,dx}$
-$$\lim_{x\leftarrow0}f(x)\qquad\det^{z\in A}\qquad\sin^2t$$
-|
-\produces
-%\secondprinting{\divide\abovedisplayskip by 2}
-$x_3 \quad t_{\max} \quad a_{i_k} \quad \sum_{i=1}^n{q_i}
- \quad x^3\quad e^{t \cos\theta}\quad r^{x^2}\quad
- \int_0^\infty{f(x)\,dx}$
-$$\lim_{x \leftarrow 0} f(x)\qquad
- \det^{z \in A}\qquad \sin^2 t$$
-
-\eix^^{exposants}
-\eix^^{indices}
-\endexample
-\enddesc
-
-%\secondprinting{\vfill\eject}
-
-%==========================================================================
-\subsection {Choisir et utiliser des mod\`eles}
-
-\begindesc
-\bix^^{styles}
-\cts textstyle {}
-\cts scriptstyle {}
-\cts scriptscriptstyle {}
-\cts displaystyle {}
-\explain
-^^{style texte} ^^{style script} ^^{style scriptscript} ^^{style d'affichage}
-Ces commandes forcent le \minref{style} normal et par cons\'equent la
-police que \TeX\ utilise pour composer une formule. Comme les
-commandes de choix de police telles que |\it|, elles sont effectives
-jusqu'\`a la fin du groupe les contenant.
-Elles sont utiles quand le choix de style de \TeX\ est inappropri\'e pour la formule
-que vous essayez de composer.
-\example
-$t+{\scriptstyle t + {\scriptscriptstyle t}}$
-|
-\produces
-$t+{\scriptstyle t + {\scriptscriptstyle t}}$
-\endexample
-\enddesc
-
-
-\begindesc
-\cts mathchoice {%
- \rqbraces{\<math$_1$>}
- \rqbraces{\<math$_2$>}
- \rqbraces{\<math$_3$>}
- \rqbraces{\<math$_4$>}}
-\explain
-Cette commande demande \`a \TeX\ de composer une des sous-formules
-\<math$_1$>, \<math$_2$>, \<math$_3$> ou \<math$_4$>, en faisant son choix
-selon le \minref{style} courant.
-Ainsi, si \TeX\ est en
-style d'affichage il compose |\math!-choice| comme \<math$_1$>~; en style texte il la compose
-comme \<math$_2$>~; en style script il la compose comme \<math$_3$>~;
-et en style scriptscript il la compose comme \<math$_4$>.
-\example
-\def\mc{{\mathchoice{D}{T}{S}{SS}}}
-The strange formula $\mc_{\mc_\mc}$ illustrates a
-mathchoice.
-|
-\produces
-\def\mc{{\mathchoice{D}{T}{S}{SS}}}
-The strange formula $\mc_{\mc_\mc}$ illustrates a
-mathchoice.
-\endexample
-\enddesc
-
-\begindesc
-\cts mathpalette {\<argument$_1$> \<argument$_2$>}
-\explain
-^^{symboles math\'ematiques}
-Cette commande procure un moyen simple de
-produire une construction math\'ematique qui marche dans les quatre \minref{style}s.
-Pour l'utiliser, vous devrez normalement d\'efinir une macro suppl\'ementaire,
-que nous appellerons |\build|.
-L'appel de |\math!-palette| pourra alors avoir la forme
-|\mathpalette|\allowbreak|\build|\<argument>.
-
-|\build| teste dans quel style est \TeX\ et compose \<argu\-ment> en cons\'e\-quence.
-Il peut \^etre d\'efini pour avoir deux param\`etres.
-Quand vous appelez |\math!-palette|, il appellera \`a son tout |\build|,
-avec |#1| une
-commande qui s\'electionne le style courant et |#2| un \<argument>.
-Ainsi, dans la d\'efinition de |\build| vous pouvez composer quelque chose
-dans le style courant en le faisant pr\'ec\'eder de `|#1|'.
-Voir la \knuth{page~360}{417--418} pour des exemples d'utilisation de |\mathpalette|
-et la \knuth{page~151}{177} pour plus d'explication sur son fonctionnement.
-
-\eix^^{styles}
-\enddesc
-
-%==========================================================================
-\section {Symboles compos\'es}
-
-%==========================================================================
-\subsection {Accents math\'ematiques}
-
-\begindesc
-\xrdef{mathaccent}
-^^{accents}
-^^{math\'ematiques//accents}
-%
-\easy\ctsx acute {^{accent aigu} comme dans $\acute x$}
-\ctsx b {^{accent barre dessous} comme dans $\b x$}
-\ctsx bar {^{accent barre} comme dans $\bar x$}
-\ctsx breve {^{accent bref} comme dans $\breve x$}
-\ctsx check {^{accent tch\`eque} comme dans $\check x$}
-\ctsx ddot {^{accent double point} comme dans $\ddot x$}
-\ctsx dot {^{accent point} comme dans $\dot x$}
-\ctsx grave {^{accent grave} comme dans $\grave x$}
-\ctsx hat {^{accent circonflexe} comme dans $\hat x$}
-\ctsx widehat {^{accent circonflexe large} comme dans $\widehat {x+y}$}
-\ctsx tilde {^{accent tilde} comme dans $\tilde x$}
-\ctsx widetilde {^{accent tilde large} comme dans $\widetilde {z+a}$}
-\ctsx vec {^{accent vecteur} comme dans $\vec x$}
-\explain
-Ces commandes produisent des accents dans les formules math\'e\-matiques.
-Vous devrez normalement laisser un espace apr\`es chacune d'entre elles.
-Un accent large peut s'appliquer \`a une sous-formule comportant plusieurs caract\`eres~;
-\TeX\ centrera l'accent sur la sous-formule.
-Les autres accents ne sont applicables qu'a des caract\`eres simples.
-
-\example
-$\dot t^n \qquad \widetilde{v_1 + v_2}$
-|
-\produces
-$\dot t^n \qquad \widetilde{v_1 + v_2}$
-\endexample
-
-\begindesc
-\cts mathaccent {\<mathcode>}
-\explain
-Cette commande demande \`a \TeX\ de composer un accent math\'ematique
-dont la famille et le code de caract\`ere sont donn\'es par \<mathcode>. (\TeX\ ignore
-la classe du \minref{mathcode}.)
-Voir l'\knuth{annexe~G}{} pour les d\'etails sur la mani\`ere dont \TeX\ positionne de tels accents.
-La fa\c con usuelle d'utiliser |\mathaccent| est de le mettre dans une d\'efinition de macro
-que donne un nom \`a l'accent math\'ematique.
-\example
-\def\acute{\mathaccent "7013}
-|
-\endexample
-\enddesc
-
-\see ``Accents'' (\xref {accents}).
-\enddesc
-
-%==========================================================================
-\subsection {Fractions et autres op\'erations empil\'ees}
-
-\begindesc
-\bix^^{fractions}
-\bix^^{sous-formules empil\'ees}
-\easy\cts over {}
-\cts atop {}
-\cts above {\<dimension>}
-\cts choose {}
-\cts brace {}
-\cts brack {}
-\explain
-{\def\fri{\<formula$_1$>}%
-\def\frii{\<formula$_2$>}%
-Ces commandes empilent une sous-formule sur une autre. Nous expliquerons comment
-marche |\over| et lui relierons ensuite les autres commandes.
-
-|\over| est la commande que vous utilisez normalement pour produire une fraction.
-^^{fractions//produites par \b\tt\\over\e}
-Si vous \'ecrivez quelque chose sous une des formes suivantes~:
-\csdisplay
-$$!fri\over!frii$$
-$!fri\over!frii$
-\left!<delim>!fri\over!frii\right!<delim>
-{!fri\over!frii}
-|
-vous obtiendrez une fraction avec un num\'erateur \fri\ et un d\'eno\-minateur \<for\-mu\-la$_2$>,
-c'est-\`a-dire, \fri\ sur \frii.
-Dans la premi\`ere de ces trois
-formes, le |\over| n'est pas implicitement contenu dans un groupe~;
-il absorbe
-tout ce qui est \`a sa gauche et \`a sa droite jusqu'a ce qu'il trouve une fronti\`ere,
-\`a savoir, le d\'ebut ou la fin d'un groupe.
-
-Vous ne pouvez pas utiliser |\over| ou une autre de ces commandes de ce groupe
-plus d'une fois dans une formule.
-Ainsi une formule telle que~:
-\csdisplay
-$$a \over n \choose k$$
-|
-n'est pas l\'egale.
-Ce n'est pas une s\'ev\`ere restriction parce que
-vous pouvez toujours englober une de ces commandes entre accolades.
-La raison de cette restriction est que si vous avez deux de ces commandes
-dans une seule formule, \TeX\ ne saura pas comment les grouper.
-
-Les autres commandes sont similaires \`a |\over|, avec les exceptions suivantes~:
-\ulist\compact
-\li |\atop| omet la barre de fraction.
-\li |\above| procure une barre de fraction d'\'epaisseur \<dimension>.
-\li |\choose|
-omet la barre de fraction et englobe la construction entre parenth\`eses.
-(Elle est appel\'ee ``choose'' parce que $n \choose k$ est la notation pour le
-nombre de fa\c cons de choisir $k$ choses parmi $n$.)
-\li |\brace| omet la barre de fraction et englobe la construction entre accolades.
-\li |\brack|
-omet la barre de fraction et englobe la construction entre crochets.
-\endulist
-}%
-\example
-$${n+1 \over n-1} \qquad {n+1 \atop n-1} \qquad
- {n+1 \above 2pt n-1} \qquad {n+1 \choose n-1} \qquad
- {n+1 \brace n-1} \qquad {n+1 \brack n-1}$$
-|
-\dproduces
-$${n+1 \over n-1} \qquad {n+1 \atop n-1} \qquad
- {n+1 \above 2pt n-1} \qquad {n+1 \choose n-1} \qquad
- {n+1 \brace n-1} \qquad {n+1 \brack n-1}$$
-\endexample
-\enddesc
-
-\begindesc
-\cts overwithdelims {\<delim$_1$> \<delim$_2$>}
-\cts atopwithdelims {\<delim$_1$> \<delim$_2$>}
-\cts abovewithdelims {\<delim$_1$> \<delim$_2$> \<dimension>}
-\explain
-Chacune de ces commandes superpose une sous-formule sur une autre et
-entoure le r\'esultat avec \<delim$_1$> \`a gauche et
-\<delim$_2$> \`a droite. Ces commandes suivent les m\^eme r\`egles que
-|\over|, |\atop| et |\above|. Le \<dimension> dans |\abovewithdelims|
-sp\'ecifie l'\'epaisseur de la barre de fraction.
-\example
-$${m \overwithdelims () n}\qquad
- {m \atopwithdelims !|!| n}\qquad
- {m \abovewithdelims \{\} 2pt n}$$
-|
-\dproduces
-$${m \overwithdelims () n}\qquad
- {m \atopwithdelims || n}\qquad
- {m \abovewithdelims \{\} 2pt n}$$
-\endexample
-\enddesc
-
-\begindesc
-\cts cases {}
-\explain
-^^{combinaisons, notation pour des}
-Cette commande produit la forme math\'ematique qui d\'ecrit un choix entre
-plusieurs cas.
-Chaque cas a deux parties, s\'epar\'ees par `|&|'.
-\TeX\ traite la premi\`ere partie comme une formule math\'ematique
-et la seconde partie comme du texte ordinaire. Chaque
-cas doit \^etre suivi par |\cr|.
-
-\example
-$$g(x,y) = \cases{f(x,y),&if $x<y$\cr
- f(y,x),&if $x>y$\cr
- 0,&otherwise.\cr}$$
-|
-\dproduces
-$$g(x,y) = \cases{f(x,y),&if $x<y$\cr
- f(y,x),&if $x>y$\cr
- 0,&otherwise.\cr}$$
-\endexample
-\enddesc
-
-\begindesc
-\cts underbrace {\<argument>}
-\cts overbrace {\<argument>}
-\cts underline {\<argument>}
-\cts overline {\<argument>}
-\cts overleftarrow {\<argument>}
-\cts overrightarrow {\<argument>}
-\explain
-Ces commandes placent des ^{accolades}, des lignes ou des ^{fl\`eches} extensibles
-sur ou sous la sous-formule donn\'ee par \<argument>.
-\TeX\ fera cette construction aussi large que n\'ecessaire pour
-le contexte.
-Quand \TeX\ produit les accolades, lignes ou fl\`eches \'etendues, il ne consid\`ere
-que les dimensions de la \minref{bo\^\i te} contenant \<argument>.
-Si vous utilisez plus d'une de ces commandes dans une seule formule, les
-accolades, lignes ou fl\`eches qu'elle produira
-pourront ne pas s'aligner proprement les unes avec les autres.
-Vous pouvez utiliser la commande |\mathstrut| (\xref \mathstrut)
-pour contourner cette difficult\'e.
-\example
-$$\displaylines{
-\underbrace{x \circ y}\qquad \overbrace{x \circ y}\qquad
-\underline{x \circ y}\qquad \overline{x \circ y}\qquad
-\overleftarrow{x \circ y}\qquad
-\overrightarrow{x \circ y}\cr
-{\overline r + \overline t}\qquad
-{\overline {r \mathstrut} + \overline {t \mathstrut}}\cr
-}$$
-|
-\dproduces
-$$\displaylines{
-\underbrace{x \circ y}\qquad \overbrace{x \circ y}\qquad
-\underline{x \circ y}\qquad \overline{x \circ y}\qquad
-\overleftarrow{x \circ y}\qquad
-\overrightarrow{x \circ y}\cr
-{\overline r + \overline t}\qquad
-{\overline {r \mathstrut} + \overline {t \mathstrut}}\cr
-}$$
-\endexample
-\enddesc
-
-\begindesc%\secondprinting{\vglue-.5\baselineskip\vskip0pt}
-\cts buildrel {\<formule> {\bt \\over} \<relation>}
-\explain
-^^{relations//mettre des formules sur des}
-Cette commande produit une \minref{bo\^\i te} dans laquelle \<formula>
-est plac\'e sur \<relation>. \TeX\ traite le r\'esultat comme une relation
-en ce qui concerne l'espacement \seeconcept{classe}.
-\example
-$\buildrel \rm def \over \equiv$
-|
-\produces
-$\buildrel \rm def \over \equiv$
-
-\eix^^{fractions}
-\eix^^{sous-formules empil\'ees}
-\endexample
-\enddesc
-
-%\secondprinting{\vfill\eject}
-
-
-%==========================================================================
-\subsection {Points}
-
-\begindesc
-\bix^^{points}
-\easy\cts ldots {}
-\cts cdots {}
-\explain
-Ces commandes produisent trois ^{points} align\'es. Pour |\ldots|, les points
-sont sur la ligne de base~; pour |\cdots|, les points sont centr\'es en respectant
-les axes (voir l'explication de |\vcenter|, \xref\vcenter).
-
-\example
-$t_1 + t_2 + \cdots + t_n \qquad x_1,x_2, \ldots\,, x_r$
-|
-\produces
-$t_1 + t_2 + \cdots + t_n \qquad x_1,x_2, \ldots\,, x_r$
-\endexample
-\enddesc
-
-\begindesc
-\easy\cts vdots {}
-\explain
-Cette commande produit trois points verticaux.
-\example
-$$\eqalign{f(\alpha_1)& = f(\beta_1)\cr
- \noalign{\kern -4pt}%
- &\phantom{a}\vdots\cr % moves the dots right a bit
- f(\alpha_k)& = f(\beta_k)\cr}$$
-|
-\dproduces
-$$\eqalign{f(\alpha_1)& = f(\beta_1)\cr
- \noalign{\kern -4pt}%
- &\phantom{a}\vdots\cr
- f(\alpha_k)& = f(\beta_k)\cr}$$
-\endexample
-\enddesc
-
-\begindesc
-\cts ddots {}
-\explain
-Cette commande produit trois points sur une diagonale.
-Son usage le plus commun est d'indiquer une r\'ep\'etition le long de la diagonale d'une matrice.
-\example
-$$\pmatrix{0&\ldots&0\cr
- \vdots&\ddots&\vdots\cr
- 0&\ldots&0\cr}$$
-|
-\dproduces
-$$\pmatrix{0&\ldots&0\cr
- \vdots&\ddots&\vdots\cr
- 0&\ldots&0\cr}$$
-
-\eix^^{points}
-\endexample
-\enddesc
-
-\see |\dots| \ctsref\dots.
-
-%==========================================================================
-\subsection {D\'elimiteurs}
-
-\begindesc
-\bix^^{d\'elimiteurs}
-%
-\cts lgroup {}
-\cts rgroup {}
-\explain
-Ces commandes produisent de grandes ^{parenth\`eses} gauches et droites
-qui sont d\'efinies comme des \minref{d\'elimiteur}s ouvrants et fermants.
-La plus grande taille disponible pour ces d\'elimiteurs est |\Big|.
-Si vous utilisez des tailles plus petites, vous obtiendrez des caract\`eres \'etranges.
-\example
-$$\lgroup\dots\rgroup\qquad\bigg\lgroup\dots\bigg\rgroup$$
-|
-\dproduces
-$$\lgroup\dots\rgroup\qquad\bigg\lgroup\dots\bigg\rgroup$$
-\endexample
-\enddesc
-
-\begindesc
-\margin{{\tt\\vert} and {\tt\\Vert} were explained elsewhere.}
-\easy\cts left {}
-\cts right {}
-\explain
-Ces commandes doivent \^etre employ\'ees ensemble selon le mod\`ele~:
-\display
-{{\bt \\left} \<delim$_1$> \<subformula> {\bt \\right} \<delim$_2$>}
-Cette construction demande \`a \TeX\ de produire \<subformula>,
-entour\'ee des \minref{d\'elimiteur}s \<delim$_1$> et \<delim$_2$>.
-La taille verticale des d\'elimiteurs est ajust\'ee pour correspondre \`a la
-taille verticale (hauteur plus profondeur) de \<subformula>. \<delim$_1$> et
-\<delim$_2$> n'ont pas besoin de correspondre.
-Par exemple, vous pouvez utiliser `|]|' comme d\'elimiteur gauche
-et `|(|' comme d\'elimiteur droite dans une utilisation simple de |\left|
-et |\right|.
-
-|\left| et |\right| ont la propri\'et\'e importante de d\'efinir un
-groupe, c'est-\`a-dire, qu'ils agissent comme des accolades gauches et droite. cette propri\'et\'e de
-groupement est particuli\`erement utile quand vous mettez ^|\over| (\xref{\over}) ou
-une commande similaire entre |\left| et |\right|, car vous n'avez pas besoin
-de mettre d'accolades autour de la fraction construite par |\over|.
-
-Si vous voulez un d\'elimiteur gauche mais pas le droit, vous pouvez utiliser `|.|' \`a
-la place du d\'elimiteur que vous ne voulez pas et il se transformera en espace blanc
-(de largeur ^|\nulldelimiterspace|).
-\example
-$$\left\Vert\matrix{a&b\cr c&d\cr}\right\Vert
- \qquad \left\uparrow q_1\atop q_2\right.$$
-|
-\dproduces
-$$\left\Vert\matrix{a&b\cr c&d\cr}\right\Vert
- \qquad \left\uparrow q_1\atop q_2\right.$$
-\endexample
-\enddesc
-
-\begindesc
-\cts delimiter {\<nombre>}
-\explain
-Cette commande produit un d\'elimiteur dont les caract\'eristiques sont donn\'ees par
-\<number>. \<number> est normalement \'ecrit en notation hexa\-d\'ecimale.
-Vous pouvez utiliser la commande |\delimiter| \`a la place d'un caract\`ere dans tout contexte
-o\`u \TeX\ attend un d\'elimiteur (bien que la commande soit rarement
-employ\'ee en dehors d'une d\'efinition de macro).
-Supposez que \<number> soit le nombre hexad\'ecimal $cs_1s_2s_3
-l_1l_2l_3$. Alors \TeX\ prendra le d\'elimiteur ayant
-la \minref{classs} $c$, la petite variante
-$s_1s_2s_3$ et la grande variante $l_1l_2l_3$. Ici $s_1s_2s_3$ indique
-le caract\`ere math\'ematique trouv\'e en position $s_2s_3$ de la famille $s_1$ et
-de m\^eme pour $l_1l_2l_3$. C'est la m\^eme convention que celle
-utilis\'ee pour ^|\mathcode| (\xref\mathcode).
-\example
-\def\vert{\delimiter "026A30C} % As in plain TeX.
-|
-\endexample
-\enddesc
-
-
-\begindesc
-\margin{{\tt\\delcode} was explained in two places. The
-combined explanation is now in `General operations'.}
-\cts delimiterfactor {\param{nombre}}
-\cts delimitershortfall {\param{nombre}}
-\explain
-^^{d\'elimiteurs//hauteur des}
-Ces deux param\`etres signalent \`a \TeX\ comment la hauteur d'un \minref{d\'elimiteur}
-doit \^etre reli\'ee \`a la taille verticale de la sous-formule
-\`a laquelle le d\'elimi\-teur est associ\'e.
-|\delimiterfactor| donne le ratio minimum
-de la taille du d\'elimiteur par rapport \`a la taille verticale de la sous-formule et
-|\deli!-mitershortfall| donne le maximum par lequel la hauteur du
-d\'elimiteur sera r\'eduite pour correspondre \`a la taille verticale de la sous-formule.
-
-Supposez que la \minref{bo\^\i te} contenant la sous-formule
-ait une hauteur $h$ et une profondeur $d$ et $y=2\,\max(h,d)$.
-soit la valeur de |\delimiterfactor| $f$ et la valeur de
-|\delimitershortfall| $\delta$.
-Alors \TeX\ prend la taille de d\'elimiteur minimum \'etant au moins $y \cdot
-f/1000$ et au moins $y-\delta$. En particulier, si |\delimiterfactor|
-est exactement \`a $1000$ alors \TeX\ essayera de faire un d\'elimiteur au moins aussi grand
-que la formule \`a laquelle il est attach\'e.
-Voir les \knuth{pages~152 et~446 (R\`egle 19)}{pages~178 et~511 (R\`egle 19)}
-pour les d\'etail exacts sur la fa\c con dont \TeX\ utilise ces param\`etres.
-\PlainTeX\ met |\delimiter!-factor| \`a $901$ et
-|\delimiter!-shortfall| \`a |5pt|.
-\enddesc
-
-\see |\delcode| (\xref\delcode), |\vert|, |\Vert|
-et |\backslash| (\xref\vert).
-\eix^^{d\'elimiteurs}
-
-%==========================================================================
-\subsection {Matrices}
-
-\begindesc
-\cts matrix
- {{\bt \rqbraces{\<ligne> \\cr $\ldots$ \<ligne> \\cr}}}
-\cts pmatrix
- {{\bt \rqbraces{\<ligne> \\cr $\ldots$ \<ligne> \\cr}}}
-\cts bordermatrix
- {{\bt \rqbraces{\<ligne> \\cr $\ldots$ \<ligne> \\cr}}}
-\explain
-Chacune de ces trois commandes produit une ^{matrice}.
-Les \'el\'ements de chaque rang\'e de la matrice entr\'ee
-sont s\'epar\'es par `|&|' et chaque rang\'e est \`a son tour termin\'ee
-par |\cr|.
-(C'est la m\^eme forme que celle utilis\'ee pour un
-\minref{alignement}.)
-Les commandes diff\`erent de la mani\`ere suivante~:
-\ulist\compact
-\li |\matrix| produit une matrice sans aucun entourage ou \minref{d\'elimiteur}s ins\'er\'es.
-\li |\pmatrix| produit une matrice entour\'ee par des parenth\`eses.
-\li |\bordermatrix| produit une matrice dans laquelle la premi\`ere rang\'ee et la premi\`ere
-colonne sont trait\'ees comme des labels. (Le premier \'el\'ement de la premi\`ere rang\'ee est
-habituellement laiss\'e \`a blanc.) Le reste de la matrice est englob\'ee dans
-des parenth\`eses.
-\endulist
-\TeX\ peut rendre les parenth\`eses de |\pmatrix| et de |\bordermatrix| aussi larges que
-n\'ecessaire en ins\'erant des extensions verticales. Si vous voulez une matrice
-entour\'ee par des d\'elimiteurs autres que des paren\-th\`eses, vous devez utiliser
-|\matrix| en conjugaison avec |\left| et |\right| (\xref \left).
-
-\example
-$$\displaylines{
- \matrix{t_{11}&t_{12}&t_{13}\cr
- t_{21}&t_{22}&t_{23}\cr
- t_{31}&t_{32}&t_{33}\cr}\qquad
-\left\{\matrix{t_{11}&t_{12}&t_{13}\cr
- t_{21}&t_{22}&t_{23}\cr
- t_{31}&t_{32}&t_{33}\cr}\right\}\cr
-\pmatrix{t_{11}&t_{12}&t_{13}\cr
- t_{21}&t_{22}&t_{23}\cr
- t_{31}&t_{32}&t_{33}\cr}\qquad
-\bordermatrix{&c_1&c_2&c_3\cr
- r_1&t_{11}&t_{12}&t_{13}\cr
- r_2&t_{21}&t_{22}&t_{23}\cr
- r_3&t_{31}&t_{32}&t_{33}\cr}\cr}$$
-|
-\dproduces
-$$\displaylines{
- \matrix{t_{11}&t_{12}&t_{13}\cr
- t_{21}&t_{22}&t_{23}\cr
- t_{31}&t_{32}&t_{33}\cr}\qquad
-\left\{\matrix{t_{11}&t_{12}&t_{13}\cr
- t_{21}&t_{22}&t_{23}\cr
- t_{31}&t_{32}&t_{33}\cr}\right\}\cr
-\pmatrix{t_{11}&t_{12}&t_{13}\cr
- t_{21}&t_{22}&t_{23}\cr
- t_{31}&t_{32}&t_{33}\cr}\qquad
-\bordermatrix{&c_1&c_2&c_3\cr
- r_1&t_{11}&t_{12}&t_{13}\cr
- r_2&t_{21}&t_{22}&t_{23}\cr
- r_3&t_{31}&t_{32}&t_{33}\cr}\cr}$$
-\endexample
-\enddesc
-
-%==========================================================================
-\subsection {Racines et radicaux}
-
-\begindesc
-\easy\cts sqrt {\<argument>}
-\explain
-Cette commande produit la notation pour la racine carr\'ee de \<argument>.
-\example
-$$x = {-b\pm\sqrt{b^2-4ac} \over 2a}$$
-|
-\dproduces
-$$x = {-b\pm\sqrt{b^2-4ac} \over 2a}$$
-\endexample
-\enddesc
-
-\begindesc
-\easy\cts root {\<argument$_1$> {\bt \\of} \<argument$_2$>}
-\explain
-Cette commande produit la notation pour une racine de \<argument$_2$> o\`u l'ordre
-est donn\'e par \<argument$_1$>.
-\example
-$\root \alpha \of {r \cos \theta}$
-|
-\produces
-$\root \alpha \of {r \cos \theta}$
-\endexample
-\enddesc
-
-\begindesc
-\cts radical {\<nombre>}
-\explain
-Cette commande produit un signe radical
-dont les caract\'eristiques sont donn\'ees par
-\<nombre>. Elle utilise la m\^eme repr\'esentation que le code d\'elimiteur
-^^{codes d\'elimiteurs}
-dans la commande ^|\delcode| (\xref \delcode).
-
-\example
-\def\sqrt{\radical "270370} % as in plain TeX
-|
-\endexample
-\enddesc
-
-%==========================================================================
-\section {Num\'eros d'\'equation}
-
-\begindesc
-\easy\cts eqno {}
-\cts leqno {}
-\explain
-Ces commandes attachent un num\'ero d'\'equation \`a une formule affich\'ee.
-|\eqno| met le num\'ero d'\'equation \`a droite et |\leqno| le met \`a gauche.
-Les commandes doivent \^etre mises \`a la fin de la formule.
-Si vous avez un affichage multi-ligne et voulez num\'eroter plus d'une ligne,
-utilisez les commandes |\eq!-alignno| ou |\leq!-alignno|
-(\xref \eqalignno).
-
-Ces commandes ne sont valides qu'en mode math\'ematique affich\'e.
-
-\example
-$$e^{i\theta} = \cos \theta + i \sin \theta\eqno{(11)}$$
-|
-\produces
-$$e^{i\theta} = \cos \theta + i \sin \theta\eqno{(11)}$$
-\endexample
-\example
-$$\cos^2 \theta + \sin^2 \theta = 1\leqno{(12)}$$
-|
-\produces
-\abovedisplayskip = -\baselineskip
-$$\cos^2 \theta + \sin^2 \theta = 1\leqno{(12)}$$
-\endexample
-\enddesc
-
-
-%==========================================================================
-\section {Affichages multi-ligne}
-
-\begindesc
-\bix^^{affichages//multi-ligne}
-\cts displaylines
- {{\bt \rqbraces{\<ligne>\ths\\cr$\ldots$\<ligne>\ths\\cr}}}
-\explain
-Cette commande produit un affichage math\'ematique multi-ligne dans lequel chaque ligne est
-centr\'ee ind\'ependamment des autres lignes.
-Vous pouvez utiliser la commande |\noalign| (\xref \noalign) pour changer le montant
-d'espace entre deux lignes d'un affichage multi-ligne.
-
-Si vous voulez attacher des num\'eros d'\'equation \`a certaines ou toutes les \'equations
-dans un affichage math\'ematique multi-ligne, vous devez utiliser |\eqalignno| ou
-|\leqalignno|.
-\example
-$$\displaylines{(x+a)^2 = x^2+2ax+a^2\cr
- (x+a)(x-a) = x^2-a^2\cr}$$
-|
-\dproduces\centereddisplays
-$$\displaylines{
-(x+a)^2 = x^2+2ax+a^2\cr
-(x+a)(x-a) = x^2-a^2\cr
-}$$
-\endexample
-\enddesc
-
-\begindesc
-\cts eqalign {}
- {{\bt \rqbraces{\<ligne> \\cr $\ldots$ \<ligne> \\cr}}}
-\cts eqalignno {}
- {{\bt \rqbraces{\<ligne> \\cr $\ldots$ \<ligne> \\cr}}}
-\cts leqalignno {}
- {{\bt \rqbraces{\<ligne> \\cr $\ldots$ \<ligne> \\cr}}}
-\explain
-^^{num\'eros d'\'equation}
-Ces commandes produisent un affichage math\'ematique multi-ligne
-dans lequel certaines parties correspondantes des lignes sont align\'ees verticalement.
-Les commandes |\eqalignno| et |\leqalignno| vous laissent aussi
-apporter des num\'eros d'\'equation pour certaines ou toutes les lignes.
-|\eqalignno| met les num\'eros d'\'equation \`a droite et
-|\leqalignno| les met \`a gauche.
-
-Chaque ligne dans l'affichage est termin\'ee par |\cr|. Chacune des parties devant \^etre align\'ee
-(le plus souvent un signe \'egal) est pr\'ec\'ed\'ee par
-`|&|'. Un `|&|' pr\'ec\`ede aussi chaque num\'ero d'\'equation, qui est donn\'e \`a la fin d'une ligne.
-Vous pouvez mettre plus d'une de ces commandes dans un seul affichage pour
-produire plusieurs groupes d'\'equation. Dans ce cas, seuls les groupes les plus \`a droite
-ou les plus \`a gauche peuvent \^etre produits avec |\eqalignno| ou |\leqalignno|.
-
-Vous pouvez utiliser la commande |\noalign| (\xref \noalign) pour changer le montant
-d'espace entre deux lignes d'un affichage multi-ligne.
-\example
-$$\left\{\eqalign{f_1(t) &= 2t\cr f_2(t) &= t^3\cr
- f_3(t) &= t^2-1\cr}\right\}
- \left\{\eqalign{g_1(t) &= t\cr g_2(t) &= 1}\right\}$$
-|
-\dproduces
-$$\left\{\eqalign{f_1(t) &= 2t\cr f_2(t) &= t^3\cr
- f_3(t) &= t^2-1\cr}\right\}
-\left\{\eqalign{g_1(t) &= t\cr g_2(t) &= 1}\right\}$$
-\nextexample
-$$\eqalignno{
-\sigma^2&=E(x-\mu)^2&(12)\cr
- &={1 \over n}\sum_{i=0}^n (x_i - \mu)^2&\cr
- &=E(x^2)-\mu^2\cr}$$
-|
-\produces
-\abovedisplayskip = -\baselineskip
-$$\eqalignno{
-\sigma^2&=E(x-\mu)^2&(12)\cr
- &={1 \over n}\sum_{i=0}^n (x_i - \mu)^2&\cr
- &=E(x^2)-\mu^2\cr}$$
-\nextexample
-$$\leqalignno{
-\sigma^2&=E(x-\mu)^2&(6)\cr
- &=E(x^2)-\mu^2&(7)\cr}$$
-|
-\produces
-\abovedisplayskip = -\baselineskip
-$$\leqalignno{
-\sigma^2&=E(x-\mu)^2&(6)\cr
- &=E(x^2)-\mu^2&(7)\cr}$$
-\nextexample
-$$\eqalignno{
- &(x+a)^2 = x^2+2ax+a^2&(19)\cr
- &(x+a)(x-a) = x^2-a^2\cr}$$
-% same effect as \displaylines but with an equation number
-|
-\dproduces
-$$\eqalignno{
-&(x+a)^2 = x^2+2ax+a^2&(19)\cr
-&(x+a)(x-a) = x^2-a^2\cr
-}$$
-% same effect as \displaylines but with an equation number
-
-\eix^^{affichages//multi-ligne}
-\endexample
-\enddesc
-
-%==========================================================================
-\section {Polices dans des formules math\'ematiques}
-
-\begindesc
-^^{polices}
-\xrdef{mathfonts}
-%
-\easy\ctsx cal {utilise une police calligraphique majuscule}
-\ctsx mit {utilise une police math\'ematique italique}
-\ctsx oldstyle {utilise une police de chiffres elz\'eviriens}
-\explain
-Ces commandes demandent \`a \TeX\ de composer le texte suivant dans la police
-sp\'ecifi\'ee. Vous ne pouvez les utiliser qu'en \minref{mode math\'ematique}.
-La commande |\mit| est utile pour produire des ^{lettres grecques} capitales pench\'ees.
-Vous pouvez aussi utiliser les commandes donn\'ees dans
-\headcit{S\'electionner des polices}{selfont} pour changer des polices en mode math\'ematique.
-\example
-${\cal XYZ} \quad
-{\mit AaBb\Gamma \Delta \Sigma} \quad
-{\oldstyle 0123456789}$
-|
-\produces
-${\cal XYZ} \quad
-{\mit AaBb\Gamma \Delta \Sigma} \quad
-{\oldstyle 0123456789}$
-\endexample
-\enddesc
-
-^^{styles de caract\`ere}
-\begindesc
-\ctsx itfam {famille de type italique}
-\ctsx bffam {famille de type grasse}
-\ctsx slfam {famille de type pench\'ee}
-\ctsx ttfam {famille de type machine \`a \'ecrire}
-\explain
-Ces commandes d\'efinissent des familles de type \minrefs{family} devant \^etre utilis\'ees en
-\minref{mode math\'ematique}. Leur principale utilisation est dans la d\'efinition des commandes
-|\it|, |\bf|, |\sl| et |\tt| pour qu'elles puissent fonctionner en mode math\'ematique.
-\enddesc
-
-\begindesc
-\cts fam {\param{nombre}}
-\explain
-Quand \TeX\ est en \minref{mode math\'ematique}, il compose normalement un caract\`ere
-en utilisant la ^^{classe} de famille de police donn\'ee dans son \minref{mathcode}.
-^^{famille//donn\'ee par \b\tt\\fam\e}
-Cependant, quand \TeX\ est en mode math\'ematique et rencontre un caract\`ere dont
-la \minref{classe} est $7$ (Variable), il compose ce caract\`ere en utilisant
-la \minref{famille} de police donn\'ee par la valeur de |\fam|, \`a condition que la
-valeur de |\fam| soit entre $0$ et $15$.
-Si la valeur de |\fam| n'est pas dans cette intervalle, \TeX\ utilise la famille du
-mathcode du caract\`ere comme dans le cas ordinaire.
-\TeX\ met |\fam| \`a $-1$ \`a chaque fois qu'il entre en mode math\'ematique.
-En dehors du mode math\'ematique, |\fam| n'a pas d'effet.
-
-En assignant une valeur \`a
-|\fam| vous pouvez changer la fa\c con dont \TeX\ compose des caract\`eres ordinaires
-tels que des variables.
-Par exemple, en mettant |\fam| \`a |\ttfam|, vous demandez \`a \TeX\ de composer
-des variables en utilisant une police de machine \`a \'ecrire.
-\PlainTeX\ d\'efinit |\tt| comme une \minref{macro} qui, entre autres choses,
-met |\fam| \`a |\ttfam|.
-\example
-\def\bf{\fam\bffam\tenbf} % As in plain TeX.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts textfont {\<family>\param{fontname}}
-\cts scriptfont {\<family>\param{fontname}}
-\cts scriptscriptfont {\<family>\param{fontname}}
-\explain
-^^{style texte}
-^^{style script}
-^^{style scriptscript}
-Chacun de ces param\`etres sp\'ecifie la police que \TeX\ utilise pour
-composer le \minref{style} indiqu\'e dans la \minref{famille} indiqu\'ee.
-Ces choix n'ont aucun effet en dehors du \minref{mode math\'ematique}.
-\example
-\scriptfont2 = \sevensy % As in plain TeX.
-|
-\endexample
-\enddesc
-
-\see ``Type styles'' (\xref{seltype}).
-%==========================================================================
-\section {Construire des symboles math\'ematiques}
-
-%==========================================================================
-\subsection {Rendre des d\'elimiteurs plus grands}
-
-\begindesc
-\makecolumns 16/4:
-\easy\cts big {}
-\cts bigl {}
-\cts bigm {}
-\cts bigr {}
-\cts Big {}
-\cts Bigl {}
-\cts Bigm {}
-\cts Bigr {}
-\cts bigg {}
-\cts biggl {}
-\cts biggm {}
-\cts biggr {}
-\cts Bigg {}
-\cts Biggl {}
-\cts Biggm {}
-\cts Biggr {}
-\explain
-^^{d\'elimiteurs//\'elargis}
-Ces commandes rendent des \minref{d\'elimiteur}s plus grands que leur taille normale.
-Les commandes dans les quatre colonnes
-produisent successivement de plus grandes tailles. La diff\'erence entre |\big|,
-|\bigl|, |\bigr| et |\bigm| est en relation avec la \minref{classe} du
-d\'elimiteur agrandi~:
-\ulist\compact
-\li |\big| produit un symbole ordinaire.
-\li |\bigl| produit un symbole ouvrant.
-\li |\bigr| produit un symbole fermant.
-\li |\bigm| produit un symbole de relation.
-\endulist
-\noindent
-\TeX\ utilise la classe d'un symbole pour d\'ecider combien d'espace mettre
-autour de ce symbole.
-
-Ces commandes, contrairement \`a |\left| et |\right|,
-ne d\'efinissent \emph{pas} un groupe.
-
-\example
-$$(x) \quad \bigl(x\bigr) \quad \Bigl(x\Bigr) \quad
- \biggl(x\biggr) \quad \Biggl(x\Biggr)\qquad
-[x] \quad \bigl[x\bigr] \quad \Bigl[x\Bigr] \quad
- \biggl[x\biggr] \quad \Biggl[x\Biggr]$$
-|
-\dproduces
-$$(x) \quad \bigl(x\bigr) \quad \Bigl(x\Bigr) \quad
-\biggl(x\biggr) \quad \Biggl(x\Biggr)\qquad
-[x] \quad \bigl[x\bigr] \quad \Bigl[x\Bigr] \quad
-\biggl[x\biggr] \quad \Biggl[x\Biggr]$$
-\endexample
-\enddesc
-
-%==========================================================================
-\subsection {Parties de grands symboles}
-
-\begindesc
-\cts downbracefill {}
-\cts upbracefill {}
-\explain
-Ces commandes produisent respectivement des ^{accolades horizontales}
-et extensibles dirig\'ees vers le haut et vers le bas. ^^{accolades}
-\TeX \ rendra les accolades aussi larges que n\'ecessaire.
-Ces commandes
-sont utilis\'ees dans les d\'efinitions de ^|\overbrace| et de ^|\underbrace|
-(\xref \overbrace).
-\example
-$$\hbox to 1in{\downbracefill} \quad
- \hbox to 1in{\upbracefill}$$
-|
-\dproduces
-$$\hbox to 1in{\downbracefill} \quad
- \hbox to 1in{\upbracefill}$$
-\endexample
-\enddesc
-
-\begindesc
-\cts arrowvert {}
-\cts Arrowvert {}
-\cts lmoustache {}
-\cts rmoustache {}
-\cts bracevert {}
-\explain
-Ces commandes produisent des portions de certains grands
-d\'elimiteurs
-^^{d\'elimiteurs//parties de}
-qui peuvent eux-m\^eme \^etre utilis\'es comme d\'elimiteurs.
-Elles font r\'ef\'e\-rence aux caract\`eres de la police math\'ematique ^|cmex10|.
-\example
-$$\cdots \Big\arrowvert \cdots \Big\Arrowvert \cdots
- \Big\lmoustache \cdots \Big\rmoustache \cdots
- \Big\bracevert \cdots$$
-|
-\dproduces
-$$\cdots \Big\arrowvert \cdots \Big\Arrowvert \cdots
- \Big\lmoustache \cdots \Big\rmoustache \cdots
- \Big\bracevert \cdots$$
-\endexample
-\enddesc
-
-
-%==========================================================================
-\section {Aligner des parties d'une formule}
-
-%==========================================================================
-\subsection {Aligner des accents}
-
-\begindesc
-\bix^^{accents//aligner des}
-\cts skew {\<nombre> \<argument$_1$> \<argument$_2$>}
-\explain
-Cette commande d\'eplace l'accent \<argument$_1$> de
-\<number> \minref{unit\'es math\'e\-matiques} vers la droite de sa position normale
-en respectant \<argu\-ment$_2$>.
-L'utilisation la plus commune de cette commande est pour
-modifier la position d'un accent qui se trouve plac\'e sur
-un autre accent.
-\example
-$$\skew 2\bar{\bar z}\quad\skew 3\tilde{\tilde y}\quad
- \skew 4\tilde{\hat x}$$
-|
-\dproduces
-$$\skew 2\bar{\bar z}\quad\skew 3\tilde{\tilde y}\quad
- \skew 4\tilde{\hat x}$$
-\endexample
-\enddesc
-
-\begindesc
-\cts skewchar {\<font>\param{number}}
-\explain
-Le |\skewchar| d'une police
-est le caract\`ere dans la police dont les cr\'enages,
-d\'efinis dans le fichier de m\'etrique de la police, d\'eterminent les positions
-des accents math\'ematiques. Cela dit, supposez que \TeX\ applique un accent math\'ematique
-au caract\`ere `|x|'. \TeX\ regarde si la paire de caract\`eres
-`|x\skewchar|' a un cr\'enage~; si oui, il d\'eplace l'accent d'un montant de
-ce cr\'enage. L'algorithme complet que \TeX\ utilise pour positionner les accents
-math\'ematiques (qui d\'eterminent beaucoup d'autres choses) se trouve dans l'\knuth{annexe~G}{}.
-
-Si la valeur de |\skewchar| n'est pas dans l'intervalle $0$--$255$,
-\TeX\ prend une valeur de cr\'enage \`a z\'ero.
-
-Notez que \<font> est une s\'equence de contr\^ole
-qui nomme une police, pas un \<nom de police> qui nomme des fichiers de police.
-Attention~:
-un assignement de |\skewchar| n'est \emph{pas} enlev\'e \`a la fin d'un groupe.
-Si vous voulez changer |\skewchar| localement, vous devrez sauvegarder et
-restaurer sa valeur originale explicitement.
-\enddesc
-
-\begindesc
-\cts defaultskewchar {\param{number}}
-\explain
-Quand \TeX\ lit le fichier de m\'etriques
-^^{fichier de m\'etriques//caract\`ere oblique par d\'efaut dans le}
-pour une police en r\'eponse \`a une
-commande ^|\font|, il met le ^|\skewchar| de la police
-dans |\default!-skewchar|.
-Si la valeur de |\default!-skewchar| n'est
-pas dans l'intervalle $0$--$255$, \TeX\ n'assigne aucun caract\`ere oblique
-par d\'efaut.
-\PlainTeX\ met |\defaultskewchar| \`a $-1$, et il est normalement pr\'ef\'erable
-de le laisser ainsi.
-\margin{Misleading example deleted.}
-\eix^^{accents//aligner des}
-\enddesc
-
-%==========================================================================
-\subsection {Aligner du mat\'eriel verticalement}
-
-\begindesc
-\cts vcenter {\rqbraces{\<mat\'eriel en mode vertical>}}
-\ctsbasic {\\vcenter to \<dimension> \rqbraces{\<mat\'eriel en mode vertical>}}{}
-\ctsbasic {\\vcenter spread \<dimension> \rqbraces{\<mat\'eriel en mode vertical>}}{}
-\explain
-Toutes les formules math\'ematiques ont un
-``^{axe}'' invisible que \TeX\ traite comme une sorte de
-ligne de centrage horizontale pour cette formule.
-Par exemple, l'axe d'une formule constitu\'ee d'une
-fraction est au centre de la barre de fraction.
-La commande |\vcenter| demande \`a \TeX\ de placer le \<mat\'eriel en mode vertical>
-dans une \minref{vbox} et de centrer la vbox
-en respectant l'axe de la formule qu'il est en train de construire.
-
-La premi\`ere forme de la commande
-centre le mat\'eriel comme donn\'e. Les deuxi\`emes et troisi\`emes
-formes \'elargissent ou r\'etr\'ecissent le mat\'eriel verticalement comme dans la
-commande |\vbox| (\xref \vbox).
-
-\example
-$${n \choose k} \buildrel \rm def \over \equiv \>
-\vcenter{\hsize 1.5 in \noindent the number of
-combinations of $n$ things taken $k$ at a time}$$
-|
-\dproduces
-$${n \choose k} \buildrel \rm def \over \equiv \>
-\vcenter{\hsize 1.5 in \noindent the number of
-combinations of $n$ things taken $k$ at a time}$$
-\endexample
-\enddesc
-
-%==========================================================================
-\section {Produire des espaces}
-
-%==========================================================================
-\subsection {Espaces math\'ematiques de largeur fixe}
-
-\begindesc
-\bix^^{espace//dans des formules math\'ematiques}
-\ctspecial ! \ctsxrdef{@shriek}
-\ctspecial , \ctsxrdef{@comma}
-\ctspecial > \ctsxrdef{@greater}
-\ctspecial ; \ctsxrdef{@semi}
-\explain
-Ces commandes produisent des montants vari\'es d'^{espace suppl\'ementaire} dans des formules. Elles
-sont d\'efinies en termes d'\minref{unit\'es math\'ematiques}, donc \TeX\ ajuste
-le montant d'espace en accord avec le \minref{style} courant.
-\ulist
-\li |\!!| produit un espace fin n\'egatif, c'est-\`a-dire, qu'il r\'eduit l'espace
-entre ses sous-formules voisines du montant d'un espace fin.
-\li |\,| produit un espace fin.
-\li |\>| produit un espace moyen.
-\li |\;| produit un espace large.
-\endulist
-\example
-$$00\quad0\!!0\quad0\,0\quad0\>0\quad0\;0\quad
-{\scriptstyle 00\quad0\!!0\quad0\,0\quad0\>0\quad0\;0}$$
-|
-\dproduces
-$$00\quad0\!0\quad0\,0\quad0\>0\quad0\;0\quad
-{\scriptstyle 00\quad0\!0\quad0\,0\quad0\>0\quad0\;0}$$
-\endexample
-\enddesc
-
-\begindesc
-\cts thinmuskip {\param{muglue}}
-\cts medmuskip {\param{muglue}}
-\cts thickmuskip {\param{muglue}}
-\explain
-Ces param\`etres d\'efinissent des espaces fins, moyens et larges en
-mode math\'ematique.
-\example
-$00\quad0\mskip\thinmuskip0\quad0\mskip\medmuskip0
- \quad0\mskip\thickmuskip0$
-|
-\produces
-$00\quad0\mskip\thinmuskip0\quad0\mskip\medmuskip0
- \quad0\mskip\thickmuskip0$
-\endexample
-\enddesc
-
-\begindesc
-\cts jot {\param{dimension}}
-\explain
-Ce param\`etre d\'efinit une distance \'egale \`a trois points (\`a moins que
-vous le changiez).
-Le |\jot| est une unit\'e de mesure pratique pour ouvrir des affichages math\'ematiques.
-\enddesc
-
-%==========================================================================
-\subsection {Espaces math\'ematiques de largeur variable}
-
-\begindesc
-\cts mkern {\<mudimen>}
-\explain
-^^{cr\'enages//dans des formules math\'ematiques}
-Cette commande
-produit un \minref{cr\'enage}, c'est-\`a-dire, un espace blanc, de largeur \<mudimen>.
-Le cr\'enage est mesur\'e
-en \minref{unit\'es math\'ematiques}, qui varie en fonction du style.
-Hormis son unit\'e de la mesure, cette commande se comporte comme
-|\kern| (\xref \kern) le fait en mode horizontal.
-
-\example
-$0\mkern13mu 0 \qquad {\scriptscriptstyle 0 \mkern13mu 0}$
-|
-\produces
-$0\mkern13mu 0 \qquad {\scriptscriptstyle 0 \mkern13mu 0}$
-\endexample
-\enddesc
-
-\begindesc
-\cts mskip {\<mudimen$_1$> {\bt plus} \<mudimen$_2$> {\bt minus}
- \<mudimen$_3$>}
-\explain
-^^{ressort}
-Cette commande produit un \minref{ressort} horizontal
-qui a une largeur naturelle \<mu\-dimen$_1$>, s'\'etire de \<mudimen$_2$>
-et se r\'etr\'ecit de \<mudimen$_3$>.
-Le ressort est mesur\'e en \minref{unit\'es math\'ematiques}, qui varie en fonction
-du style. Hormis son unit\'e de mesure, cette commande se comporte
-comme |\hskip| (\xref \hskip).
-
-\example
-$0\mskip 13mu 0 \quad {\scriptscriptstyle 0 \mskip 13mu 0}$
-|
-\produces
-$0\mskip 13mu 0 \quad {\scriptscriptstyle 0 \mskip 13mu 0}$
-\endexample
-\enddesc
-
-\begindesc
-\cts nonscript {}
-\explain
-Quand \TeX\ est en train de composer en \minref{style} script ou
-scriptscript et rencontre cette commande
-imm\'ediatement devant d'un ressort ou d'un cr\'enage,
-il supprime le ressort ou le cr\'enage.
-|\nonscript| n'a pas d'effet dans les autres styles.
-
-Cette commande fournit une mani\`ere de ``resserrer'' l'espacement dans
-les styles script et scriptscript, qui sont g\'en\'eralement faits dans une
-police plus petite. Elle est peu utile en dehors des d\'efinitions de macro.
-\example
-\def\ab{a\nonscript\; b}
-$\ab^{\ab}$
-|
-\produces
-\def\ab{a\nonscript\; b}
-$\ab^{\ab}$
-\endexample
-\enddesc
-
-\see |\kern| (\xref\kern), |\hskip| (\xref\hskip).
-\eix^^{espace//dans des formules math\'ematiques}
-
-
-%==========================================================================
-\subsection {param\`etres d'espacement pour les affichages}
-
-\begindesc
-\bix^^{affichages//param\`etres d'espacement pour}
-\cts displaywidth {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie la largeur maximum que
-\TeX\ alloue pour un affichage math\'ematique. Si \TeX\ ne peut pas mettre l'affichage
-dans un espace de cette largeur, il fait un ``overfull \minref{hbox}''
-et se plaint.
-\TeX\ met la valeur de |\displaywidth| quand il rencontre le `|$$|'
-qui d\'ebute l'affichage. Cette valeur initiale est
-|\hsize| (\xref \hsize) \`a moins qu'elle soit modifi\'ee par des
-changements de la forme du paragraphe.
-Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etaill\'ee de ce param\`etre.
-\enddesc
-
-\begindesc
-\cts displayindent {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie l'espace par lequel \TeX\ indente un
-affichage math\'e\-matique.
-\TeX\ met la valeur de |\displayindent| quand il rencontre le `|$$|'
-qui d\'ebute l'affichage. Normalement la valeur initiale est z\'ero,
-mais si la forme du paragraphe indique que l'affichage doit \^etre
-d\'ecal\'e d'un montant $s$,
-\TeX\ mettra |\displayindent| \`a $s$.
-Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etaill\'ee de ce param\`etre.
-\enddesc
-
-\begindesc
-\cts predisplaysize {\param{dimension}}
-\explain
-\TeX\ met ce param\`etre \`a la largeur de la ligne pr\'ec\'edant
-un affichage math\'ematique.
-\TeX\ utilise |\predisplaysize| pour d\'eterminer si l'affi\-chage
-d\'ebute ou non \`a
-gauche d'o\`u la ligne pr\'ec\'edente se termine, c'est-\`a-dire, s'il
-recouvre visuellement ou non la ligne pr\'ec\'edente.
-S'il la recouvre, il utilise les ressorts |\abovedisplayskip| et
-|\belowdisplayskip| en mettant l'affichage~;
-autrement il utilise les ressorts |\abovedisplay!-shortskip| et
-|\belowdisplay!-shortskip|.
-Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etaill\'ee de ce param\`etre.
-\enddesc
-
-\begindesc
-\cts abovedisplayskip {\param{ressort}}
-\explain
-Ce param\`etre sp\'ecifie le montant de ressort vertical que
-\TeX\ ins\`ere avant un affichage quand l'affichage d\'ebute
-\`a gauche d'o\`u la ligne pr\'ec\'edente se termine, c'est-\`a-dire, quand il recouvre
-visuellement la ligne pr\'ec\'edente.
-\PlainTeX\ met |\abovedisplayskip| \`a |12pt plus3pt minus9pt|.
-Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etaill\'ee de ce param\`etre.
-\enddesc
-
-\begindesc
-\cts belowdisplayskip {\param{ressort}}
-\explain
-Ce param\`etre sp\'ecifie le montant de ressort vertical que
-\TeX\ ins\`ere apr\`es un affichage quand l'affichage d\'ebute
-\`a gauche d'o\`u la ligne pr\'ec\'edente se termine, c'est-\`a-dire, quand il recouvre
-visuellement la ligne pr\'ec\'edente.
-\PlainTeX\ met |\belowdisplay!-skip| \`a |12pt plus3pt minus9pt|.
-Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etaill\'ee de ce param\`etre.
-\enddesc
-
-\begindesc
-\cts abovedisplayshortskip {\param{ressort}}
-\explain
-Ce param\`etre sp\'ecifie le montant de ressort vertical que
-\TeX\ ins\`ere avant un affichage quand l'affichage d\'ebute
-\`a droite d'o\`u la ligne pr\'ec\'edente se termine, c'est-\`a-dire, quand il ne recouvre
-pas visuellement la ligne pr\'ec\'edente.
-\PlainTeX\ met |\abovedisplay!-shortskip| \`a |0pt plus3pt|.
-Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etail\-l\'ee de ce param\`etre.
-\enddesc
-
-\begindesc
-\cts belowdisplayshortskip {\param{ressort}}
-\explain
-Ce param\`etre sp\'ecifie le montant de ressort vertical que
-\TeX\ ins\`ere apr\`es un affichage quand l'affichage d\'ebute
-\`a droite d'o\`u la ligne pr\'ec\'edente se termine, c'est-\`a-dire, quand il ne recouvre
-pas visuellement la ligne pr\'ec\'edente.
-\PlainTeX\ met |\belowdisplay!-shortskip| \`a |7pt plus3pt minus4pt|.
-Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etaill\'ee de ce param\`etre.
-\eix^^{affichages//param\`etres d'espacement pour}
-\enddesc
-
-
-%==========================================================================
-\subsection {autres param\`etres d'espacement pour les math\'ematiques}
-
-\begindesc
-\cts mathsurround {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie le montant d'espace que \TeX\
-ins\`ere avant et apr\`es une formule math\'ematique en mode texte (c'est-\`a-dire, une formule
-entour\'ee de |$| simples). Voir la \knuth{page~162}{190} pour plus de d\'etails sur
-son comportement.
-\PlainTeX\ laisse |\mathsurround| \`a |0pt|.
-\enddesc
-
-\begindesc
-\cts nulldelimiterspace {\param{dimension}}
-\explain
-^^{d\'elimiteurs//nuls, espace pour}
-Ce param\`etre sp\'ecifie la largeur de
-l'espace produit par un \minref{d\'elimiteur} nul.
-\PlainTeX\ met |\nulldelimiterspace| \`a |1.2pt|.
-\enddesc
-
-\begindesc
-\cts scriptspace {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie le montant d'espace que \TeX\
-ins\`ere avant et apr\`es un exposant ou un indice.
-La commande |\nonscript| (\xref\nonscript) ^^|\nonscript|
-apr\`es un exposant ou un indice annule cet espace.
-\PlainTeX\ met |\script!-space| \`a |0.5pt|.
-\enddesc
-
-%==========================================================================
-\section {Cat\'egoriser des constructions math\'ematiques}
-
-\begindesc
-\makecolumns 7/2:
-\cts mathord {}
-\cts mathop {}
-\cts mathbin {}
-\cts mathrel {}
-\cts mathopen {}
-\cts mathclose {}
-\cts mathpunct {}
-\explain
-Ces commandes demandent \`a \TeX\ de traiter la construction qui suit comme appartenant
-\`a une ^{classe} particuli\`ere (voir la \knuth{page~154}{179--180} pour la d\'efinition
-des classes). Elles sont list\'ees ici dans l'ordre des num\'eros de classe,
-de $0$ \`a $6$.
-Leur effet primaire est d'ajuster l'espace\-ment autour de la construction
-comme \'etant celui de la classe indiqu\'ee.
-
-\example
-$\mathop{\rm minmax}\limits_{t \in A \cup B}\,t$
-% By treating minmax as a math operator, we can get TeX to
-% put something underneath it.
-|
-\produces
-$\mathop{\rm minmax}\limits_{t \in A \cup B}\,t$
-\endexample
-\enddesc
-
-\begindesc
-\cts mathinner {}
-\explain
-Cette command demande \`a \TeX\ de traiter la construction qui suit
-comme un ``formule interne'', c'est-\`a-dire, une fraction, pour l'espacement.
-Elle ressemble aux commandes de classe donn\'ees ci-dessus.
-\enddesc
-
-%==========================================================================
-\section {Actions sp\'eciales pour des formules math\'ematiques}
-
-\begindesc
-\cts everymath {\param{liste de token}}
-\cts everydisplay {\param{liste de token}}
-\explain
-^^{affichages//actions pour chaque affichage}
-Ces param\`etres sp\'ecifient des listes de \minref{token} que \TeX\ ins\`ere
-au d\'ebut de toute formule math\'ematique d'affichage ou de texte, respectivement.
-Vous pouvez prendre des mesures sp\'eciales au d\'ebut de chaque formule math\'ematique
-en assignant ces actions \`a |\everymath| ou \`a |\everydis!-play|. N'oubliez pas que
-si vous voulez que les deux genres de formules soient affect\'es, vous devez mettre
-les \emph{deux} param\`etres.
-\example
-\everydisplay={\heartsuit\quad}
-\everymath = {\clubsuit}
-$3$ is greater than $2$ for large values of $3$.
-$$4>3$$
-|
-\produces
-\everydisplay={\heartsuit\quad}
-\everymath = {\clubsuit}
-$3$ is greater than $2$ for large values of $3$.
-$$4>3$$
-\endexample
-\enddesc
-
-\enddescriptions
-\eix^^{math\'ematiques}
-\endchapter
-\byebye
-
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros +\chapter {Commandes pour \linebreak composer des \linebreak formules math\'ematiques} + +\bix^^{math\'ematiques} +\chapterdef{math} + +Cette section couvre les commandes pour construire des formules math\'e\-matiques. +Pour une explication des conventions utilis\'ees dans cette section, +voir \headcit{Description des commandes}{cmddesc}. + +\begindescriptions +%========================================================================== +\section {Parties simples de formules} + +%========================================================================== +\subsection {Lettres grecques} + +\begindesc +\bix^^{lettres grecques} +\dothreecolumns 40 +\easy\ctsdisplay alpha {} +\ctsdisplay beta {} +\ctsdisplay chi {} +\ctsdisplay delta {} +\ctsdisplay Delta {} +\ctsdisplay epsilon {} +\ctsdisplay varepsilon {} +\ctsdisplay eta {} +\ctsdisplay gamma {} +\ctsdisplay Gamma {} +\ctsdisplay iota {} +\ctsdisplay kappa {} +\ctsdisplay lambda {} +\ctsdisplay Lambda {} +\ctsdisplay mu {} +\ctsdisplay nu {} +\ctsdisplay omega {} +\ctsdisplay Omega {} +\ctsdisplay phi {} +\ctsdisplay varphi {} +\ctsdisplay Phi {} +\ctsdisplay pi {} +\ctsdisplay varpi {} +\ctsdisplay Pi {} +\ctsdisplay psi {} +\ctsdisplay Psi {} +\ctsdisplay rho {} +\ctsdisplay varrho {} +\ctsdisplay sigma {} +\ctsdisplay varsigma {} +\ctsdisplay Sigma {} +\ctsdisplay tau {} +\ctsdisplay theta {} +\ctsdisplay vartheta {} +\ctsdisplay Theta {} +\ctsdisplay upsilon {} +\ctsdisplay Upsilon {} +\ctsdisplay xi {} +\ctsdisplay Xi {} +\ctsdisplay zeta {} +\egroup +\explain +Ces commandes produisent les lettres grecques appropri\'ees aux math\'e\-matiques. +Vous ne pouvez les utiliser que dans une formule math\'ema\-tique, ainsi si vous +avez besoin d'une lettre grecque dans du texte ordinaire, vous devez l'englober +entre des signes dollar (|$|). \TeX\ n'a pas de commandes pour des lettres +grecques qui ressemblent \`a leurs contre-parties romaines, puisque vous pouvez +les obtenir en employant ces contre-parties romaines. Par exemple, vous pouvez +obtenir un ^{omicron} minuscule dans une formule en \'ecrivant la lettre `o', +c'est-\`a-dire, `|{\rm o}|' ou un ^{beta} majuscule (`B') en \'ecrivant `|{\rm B}|'. + +Ne confondez pas les lettres suivantes~: +\ulist \compact +\li |\upsilon| (`$\upsilon$'), |{\rm v}| (`v'), et |\nu| (`$\nu$'). +\li |\varsigma| (`$\varsigma$') and |\zeta| (`$\zeta$'). +\endulist + +Vous pouvez obtenir des lettres grecques capitales inclin\'ees en utilisant +la \minref{police} math\'ematique italique (|\mit|). + +\TeX \ traite les lettres grecques comme des symboles ordinaires quand +il calcule combien d'espace mettre autour d'eux. + +\example +If $\rho$ and $\theta$ are both positive, then $f(\theta) +-{\mit \Gamma}_{\theta} < f(\rho)-{\mit \Gamma}_{\rho}$. +| +\produces +If $\rho$ and $\theta$ are both positive, then +$f(\theta)-{\mit \Gamma}_{\theta} < f(\rho)-{\mit \Gamma}_{\rho}$. +\endexample +\eix^^{lettres grecques} +\enddesc + +%========================================================================== +\subsection {Divers Symboles math\'ematiques ordinaires} + +\begindesc +\xrdef{specsyms} +\dothreecolumns 34 +\easy\ctsdisplay infty {} +\ctsdisplay Re {} +\ctsdisplay Im {} +\ctsdisplay angle {} +\ctsdisplay triangle {} +\ctsdisplay backslash {} +\ctsdisplay vert {} +\ctsydisplay | @bar {} +\ctsdisplay Vert {} +\ctsdisplay emptyset {} +\ctsdisplay bot {} +\ctsdisplay top {} +\ctsdisplay exists {} +\ctsdisplay forall {} +\ctsdisplay hbar {} +\ctsdisplay ell {} +\ctsdisplay aleph {} +\ctsdisplay imath {} +\ctsdisplay jmath {} +\ctsdisplay nabla {} +\ctsdisplay neg {} +\ctsdisplay lnot {} +\actdisplay ' @prime \ (apostrophe) +\ctsdisplay prime {} +\ctsdisplay partial {} +\ctsdisplay surd {} +\ctsdisplay wp {} +\ctsdisplay flat {} +\ctsdisplay sharp {} +\ctsdisplay natural {} +\ctsdisplay clubsuit {} +\ctsdisplay diamondsuit {} +\ctsdisplay heartsuit {} +\ctsdisplay spadesuit {} +\egroup +\explain +^^{symboles musicaux} ^^{couleurs de carte \`a jouer} +Ces commandes produisent des symboles vari\'es. On les appelle +``^{symboles ordinaires}'' pour les distinguer des autres classes de +symboles comme les relations. Vous ne pouvez utiliser un +symbole ordinaire que dans une formule math\'ematique, +donc si vous avez besoin d'un symbole ordinaire dans du texte ordinaire +vous devez l'englober entre des signes dollar (|$|). + +Les commandes |\imath| et |\jmath| sont utiles quand vous devez mettre un +accent sur un `$i$' ou un `$j$'. + +Une apostrophe (|'|) est un raccourci pour \'ecrire un |\prime| en exposant. (La +commande |\prime| de son c\^ot\'e, g\'en\`ere un gros prime laid.) + +Les commandes |\!|| et ^|\Vert| sont synonymes, comme +le sont les commandes ^|\neg| et ^|\lnot|. +\margin{explanation of {\tt\\vert} added} +La commande |\vert| produit le m\^eme r\'esultat que `|!||'. +\indexchar | + +Les symboles produits par |\backslash|, |\vert| et |\Vert| +sont des \minref{d\'eli\-mi\-teur}s. ces symboles peuvent \^etre produit en grandes taille +en utilisant ^|\bigm| etc.\ (\xref \bigm). + +\example +The Knave of $\heartsuit$s, he stole some tarts. +| +\produces +The Knave of $\heartsuit$s, he stole some tarts. +\nextexample +If $\hat\imath < \hat\jmath$ then $i' \leq j^\prime$. +| +\produces +If $\hat\imath < \hat\jmath$ then $i' \leq j^\prime$. +\nextexample +$${{x-a}\over{x+a}}\biggm\backslash{{y-b}\over{y+b}}$$ +| +\dproduces +$${{x-a}\over{x+a}}\biggm\backslash{{y-b}\over{y+b}}$$ +\endexample +\enddesc + +%========================================================================== +\subsection {Op\'erations binaires} + +\begindesc +\bix^^{op\'erations} +\xrdef{binops} +\dothreecolumns 34 +\easy\ctsdisplay vee {} +\ctsdisplay wedge {} +\ctsdisplay amalg {} +\ctsdisplay cap {} +\ctsdisplay cup {} +\ctsdisplay uplus {} +\ctsdisplay sqcap {} +\ctsdisplay sqcup {} +\ctsdisplay dagger {} +\ctsdisplay ddagger {} +\ctsdisplay land {} +\ctsdisplay lor {} +\ctsdisplay cdot {} +\ctsdisplay diamond {} +\ctsdisplay bullet {} +\ctsdisplay circ {} +\ctsdisplay bigcirc {} +\ctsdisplay odot {} +\ctsdisplay ominus {} +\ctsdisplay oplus {} +\ctsdisplay oslash {} +\ctsdisplay otimes {} +\ctsdisplay pm {} +\ctsdisplay mp {} +\ctsdisplay triangleleft {} +\ctsdisplay triangleright {} +\ctsdisplay bigtriangledown {} +\ctsdisplay bigtriangleup {} +\ctsdisplay ast {} +\ctsdisplay star {} +\ctsdisplay times {} +\ctsdisplay div {} +\ctsdisplay setminus {} +\ctsdisplay wr {} +\egroup +\explain +Ces commandes produisent les symboles pour diff\'erentes op\'erations binaires. +Les op\'erations binaires sont une des \minref{classe}s des symboles math\'e\-matiques de \TeX. +\TeX\ met diff\'erents montants d'espace autour de dif\-f\'e\-rentes classes de symboles +math\'ematiques. Quand \TeX\ a besoin de couper une ligne de texte dans une formule math\'ematique, +\minrefs{line break} il devra placer la coupure apr\`es une op\'eration binaire---mais seulement si +l'op\'eration est \`a un niveau sup\'erieur \`a la formule, c'est-\`a-dire, non incluse dans un groupe. + +En plus de ces commandes, \TeX\ traite \'egalement `|+|' et `|-|' +en tant qu'op\'erations binaires. Il consid\`ere `|/|' comme un symbole ordinaire, +en d\'epit du fait que, math\'ematiquement, ce soit une op\'eration binaire, +parce qu'il semble mieux avec moins d'espace autour de lui. + +\example +$$z = x \div y \quad \hbox{if and only if} \quad +z \times y = x \;\hbox{and}\; y \neq 0$$ +| +\dproduces +$$z = x \div y \quad \hbox{if and only if} \quad +z \times y = x \;\hbox{and}\; y \neq 0$$ +\endexample +\enddesc + +\begindesc +\ctspecial * \ctsxrdef{@star} +\explain +La commande |\*| indique un symbole de multiplication optionnel +($\times$), qui est une op\'eration binaire. Ce symbole de multiplication +agit comme une c\'esure optionnelle quand il appara\^\i t dans une formule dans un +texte\minrefs{texte math\'ematique}. Cela \'etant, \TeX\ ne composera le symbole |\times| +\emph{que} si la formule doit \^etre coup\'ee en ce point. +Il n'y a aucun point en utilisant |\*| dans des formules affich\'ees \minrefs{math\'ematique +affich\'ee} car \TeX\ ne coupe jamais de formules affich\'ees de lui-m\^eme. + +\example +Let $c = a\*b$. In the case that $c=0$ or $c=1$, let +$\Delta$ be $(\hbox{the smallest $q$})\*(\hbox{the +largest $q$})$ in the set of approximate $\tau$-values. +| +\produces +Let $c = a\*b$. In the case that $c=0$ or $c=1$, let +$\Delta$ be $(\hbox{the smallest $q$})\*(\hbox{the +largest $q$})$ in the set of approximate $\tau$-values. + +\eix^^{op\'erations} +\endexample +\enddesc + +%========================================================================== +\subsection {Relations} + +\begindesc +\xrdef {relations} +\bix^^{relations} +\dothreecolumns 39 +\easy\ctsdisplay asymp {} +\ctsdisplay cong {} +\ctsdisplay dashv {} +\ctsdisplay vdash {} +\ctsdisplay perp {} +\ctsdisplay mid {} +\ctsdisplay parallel {} +\ctsdisplay doteq {} +\ctsdisplay equiv {} +\ctsdisplay ge {} +\ctsdisplay geq {} +\ctsdisplay le {} +\ctsdisplay leq {} +\ctsdisplay gg {} +\ctsdisplay ll {} +\ctsdisplay models {} +\ctsdisplay ne {} +\ctsdisplay neq {} +\ctsdisplay notin {} +\ctsdisplay in {} +\ctsdisplay ni {} +\ctsdisplay owns {} +\ctsdisplay prec {} +\ctsdisplay preceq {} +\ctsdisplay succ {} +\ctsdisplay succeq {} +\ctsdisplay bowtie {} +\ctsdisplay propto {} +\ctsdisplay approx {} +\ctsdisplay sim {} +\ctsdisplay simeq {} +\ctsdisplay frown {} +\ctsdisplay smile {} +\ctsdisplay subset {} +\ctsdisplay subseteq {} +\ctsdisplay supset {} +\ctsdisplay supseteq {} +\ctsdisplay sqsubseteq {} +\ctsdisplay sqsupseteq {} +\egroup +\explain +Ces commandes produisent des symboles pour diff\'erentes relations. +Les relations sont une des \minref{classe}s des symboles math\'ematiques. +\TeX\ met diff\'erents montants d'espace autour de diff\'erentes classes de symboles +math\'ematiques. +Quand \TeX\ a besoin de couper une ligne de texte dans une formule math\'ematique, +\minrefs{line break} il devra placer la coupure apr\`es une relation---mais seulement si +l'op\'eration est \`a un niveau sup\'erieur \`a la formule, c'est-\`a-dire, non incluse dans un groupe. + +En plus des commandes list\'ees ici, \TeX\ traite `^|=|' et les +commandes ``fl\`eche'' (\xref{arrows}) comme des relations. + +Certaines relations ont plus d'une commande que vous pouvez utiliser +pour les produire~: +\ulist \compact +\li `$\ge$' (|\ge| et |\geq|). +\li `$\le$' (|\le| et |\leq|). +\li `$\ne$' (|\ne|, |\neq| et |\not=|). +\li `$\ni$' (|\ni| et |\owns|). +\endulist + +\xrdef{\not} +Vous pouvez produire des relations n\'egatives en les pr\'efixant avec |\not|, comme cela~: + +\nobreak +\threecolumns 21 +\basicdisplay {$\not\asymp$}{\\not\\asymp}\ctsidxref{asymp} +\basicdisplay {$\not\cong$}{\\not\\cong}\ctsidxref{cong} +\basicdisplay {$\not\equiv$}{\\not\\equiv}\ctsidxref{equiv} +\basicdisplay {$\not=$}{\\not=}\ttidxref{=} +\basicdisplay {$\not\ge$}{\\not\\ge}\ctsidxref{ge} +\basicdisplay {$\not\geq$}{\\not\\geq}\ctsidxref{geq} +\basicdisplay {$\not\le$}{\\not\\le}\ctsidxref{le} +\basicdisplay {$\not\leq$}{\\not\\leq}\ctsidxref{leq} +\basicdisplay {$\not\prec$}{\\not\\prec}\ctsidxref{prec} +\basicdisplay {$\not\preceq$}{\\not\\preceq}\ctsidxref{preceq} +\basicdisplay {$\not\succ$}{\\not\\succ}\ctsidxref{succ} +\basicdisplay {$\not\succeq$}{\\not\\succeq}\ctsidxref{succeq} +\basicdisplay {$\not\approx$}{\\not\\approx}\ctsidxref{approx} +\basicdisplay {$\not\sim$}{\\not\\sim}\ctsidxref{sim} +\basicdisplay {$\not\simeq$}{\\not\\simeq}\ctsidxref{simeq} +\basicdisplay {$\not\subset$}{\\not\\subset}\ctsidxref{subset} +\basicdisplay {$\not\subseteq$}{\\not\\subseteq}\ctsidxref{subseteq} +\basicdisplay {$\not\supset$}{\\not\\supset}\ctsidxref{supset} +\basicdisplay {$\not\supseteq$}{\\not\\supseteq}\ctsidxref{supseteq} +\basicdisplay {$\not\sqsubseteq$}{\\not\\sqsubseteq}% + \ctsidxref{sqsubseteq} +\basicdisplay {$\not\sqsupseteq$}{\\not\\sqsupseteq}% + \ctsidxref{sqsupseteq} +\egroup + +\example +We can show that $AB \perp AC$, and that +$\triangle ABF \not\sim \triangle ACF$. +| +\produces +We can show that $AB \perp AC$, and that +$\triangle ABF \not\sim \triangle ACF$. + +\eix^^{relations} +\endexample +\enddesc + +%========================================================================== +\subsection {D\'elimiteurs gauches et droits} + +\begindesc +\bix^^{d\'elimiteurs} +% +\dothreecolumns 12 +\easy\ctsdisplay lbrace {} +\ctsydisplay { @lbrace {} +\ctsdisplay rbrace {} +\ctsydisplay } @rbrace {} +\ctsdisplay lbrack {} +\ctsdisplay rbrack {} +\ctsdisplay langle {} +\ctsdisplay rangle {} +\ctsdisplay lceil {} +\ctsdisplay rceil {} +\ctsdisplay lfloor {} +\ctsdisplay rfloor {} +\egroup +\explain +Ces commandes produisent des \minref{d\'elimiteur}s gauches et droits. +Les math\'e\-maticiens utilisent les d\'elimiteurs pour indiquer les fronti\`eres entre les parties +d'une formule. Les d\'elimiteurs gauches sont aussi appel\'es ``^{ouvrant}s'' et +les d\'elimiteurs droits sont aussi appel\'es ``^{fermant}s''. Ouvrants et Fermants +sont deux des \minref{classe}s de symboles math\'ematiques de \TeX. \TeX\ met +diff\'erents montants d'espace autour des diff\'erentes \minref{classe}s de symboles math\'ematiques. +Vous devriez vous attendre \`a ce que l'espacement que \TeX\ met autour des ouvrants et +des fermants soit sym\'etrique, mais en fait, il ne l'est pas. + +Certains d\'elimiteurs gauches et droits ont plus d'une commande utilisable pour les produire~: + +\ulist\compact +\li `$\{$' (|\lbrace| and |\{|) +\li `$\}$' (|\rbrace| and |\}|) +\li `$[$' (|\lbrack| and `|[|') +\li `$]$' (|\rbrack| and `|]|') +\endulist +\noindent vous pouvez aussi utiliser les caract\`eres crochets gauches et droits +(sous toutes ses formes) en dehors du mode math\'ematique. + +En plus de ces commandes, \TeX\ traite `|(|' comme un d\'elimiteur gauche +et `|)|' comme un d\'elimiteur droit. + +Vous pouvez laisser \TeX\ +choisir la taille d'un d\'elimiteur en utilisant |\left| et |\right| (\xref\left). +Alternativement, +vous pouvez obtenir un d\'eli\-miteur d'une taille sp\'ecifique en utilisant une des commandes |\big|$x$ +(voir |\big| et al., \xref{\big}). + +\example +The set $\{\,x \mid x>0\,\}$ is empty. +| +\produces +The set $\{\,x \mid x>0\,\}$ is empty. + +\eix^^{d\'elimiteurs} +\endexample +\enddesc + +%========================================================================== +\subsection {Fl\`eches} + +\begindesc +\bix^^{fl\`eches} +\xrdef{arrows} +% +{\symbolspace=24pt \makecolumns 34/2: +\easy% +\ctsdisplay leftarrow {} +\ctsdisplay gets {} +\ctsdisplay Leftarrow {} +\ctsdisplay rightarrow {} +\ctsdisplay to {} +\ctsdisplay Rightarrow {} +\ctsdisplay leftrightarrow {} +\ctsdisplay Leftrightarrow {} +\ctsdisplay longleftarrow {} +\ctsdisplay Longleftarrow {} +\ctsdisplay longrightarrow {} +\ctsdisplay Longrightarrow {} +\ctsdisplay longleftrightarrow {} +\ctsdisplay Longleftrightarrow {} +\basicdisplay {$\Longleftrightarrow$}{\\iff}\pix\ctsidxref{iff}\xrdef{\iff} +\ctsdisplay hookleftarrow {} +\ctsdisplay hookrightarrow {} +\ctsdisplay leftharpoondown {} +\ctsdisplay rightharpoondown {} +\ctsdisplay leftharpoonup {} +\ctsdisplay rightharpoonup {} +\ctsdisplay rightleftharpoons {} +\ctsdisplay mapsto {} +\ctsdisplay longmapsto {} +\ctsdisplay downarrow {} +\ctsdisplay Downarrow {} +\ctsdisplay uparrow {} +\ctsdisplay Uparrow {} +\ctsdisplay updownarrow {} +\ctsdisplay Updownarrow {} +\ctsdisplay nearrow {} +\ctsdisplay searrow {} +\ctsdisplay nwarrow {} +\ctsdisplay swarrow {} +} +\explain +Ces commandes procurent des fl\`eches de diff\'erentes sortes. Elles +sont class\'ees parmi les relations (\xref{relations}). +Les fl\`eches verticales de la liste sont aussi des \minref{d\'elimiteur}s, donc vous pouvez les rendre +plus grandes en utilisant |\big| et al.\ (\xref \big). + +La commande |\iff| diff\`ere de |\Longleftrightarrow| parce qu'elle +produit un espace suppl\'ementaire \`a gauche et \`a droite de la fl\`eche. + +Vous pouvez placer des symboles ou d'autres l\'egendes au dessus des fl\`eche gauches et droite +avec |\buildrel| (\xref \buildrel). + +\example +$$f(x)\mapsto f(y) \iff x \mapsto y$$ +| +\dproduces +$$f(x)\mapsto f(y) \iff x \mapsto y$$ + +\eix^^{fl\`eches} +\endexample +\enddesc + +%========================================================================== +\subsection {Fonctions math\'ematiques nomm\'ees} + +\begindesc +\xrdef{namedfns} +\bix^^{fonctions, noms de} +{\symbolspace = 36pt +\threecolumns 32 +\easy\ctsdisplay cos {} +\ctsdisplay sin {} +\ctsdisplay tan {} +\ctsdisplay cot {} +\ctsdisplay csc {} +\ctsdisplay sec {} +\ctsdisplay arccos {} +\ctsdisplay arcsin {} +\ctsdisplay arctan {} +\ctsdisplay cosh {} +\ctsdisplay coth {} +\ctsdisplay sinh {} +\ctsdisplay tanh {} +\ctsdisplay det {} +\ctsdisplay dim {} +\ctsdisplay exp {} +\ctsdisplay ln {} +\ctsdisplay log {} +\ctsdisplay lg {} +\ctsdisplay arg {} +\ctsdisplay deg {} +\ctsdisplay gcd {} +\ctsdisplay hom {} +\ctsdisplay ker {} +\ctsdisplay inf {} +\ctsdisplay sup {} +\ctsdisplay lim {} +\ctsdisplay liminf {} +\ctsdisplay limsup {} +\ctsdisplay max {} +\ctsdisplay min {} +\ctsdisplay Pr {} +\egroup} +\explain +Ces commandes mettent les noms de diff\'erentes fonctions math\'ematiques +en type romain, comme \`a l'accoutum\'ee. +Si vous appliquez un exposant ou un indice sur une de ces commandes, +\TeX\ le composera dans la plupart des cas \`a l'endroit usuel. +En style d'affichage, \TeX\ compose les exposants et les indices +de |\det|, |\gcd|, |\inf|, |\lim|, |\liminf|, +|\limsup|, |\max|, |\min|, |\Pr| et |\sup| +comme s'ils \'etaient des limites, +c'est-\`a-dire, directement au-dessus ou directement au-dessous du nom de la fonction. + +\example +$\cos^2 x + \sin^2 x = 1\qquad\max_{a \in A} g(a) = 1$ +| +\produces +$\cos^2 x + \sin^2 x = 1\qquad\max_{a \in A} g(a) = 1$ +\endexample +\enddesc + +\begindesc +\cts bmod {} +\explain +Cette commande produit une op\'eration binaire pour indiquer un ^{modulo} +dans une formule. +\example +$$x = (y+1) \bmod 2$$ +| +\dproduces +$$x = (y+1) \bmod 2$$ +\endexample +\enddesc + +\begindesc +\cts pmod {} +\explain +Cette commande procure une notation pour indiquer un ^{modulo} entre parenth\`eses +\`a la fin d'une formule. +\example +$$x \equiv y+1 \pmod 2$$ +| +\dproduces +$$x \equiv y+1 \pmod 2$$ + +\eix^^{fonctions, noms de} +\endexample +\enddesc + +%========================================================================== +\subsection {Grands op\'erateurs} + +\begindesc +\bix^^{op\'erateurs//grands} +\threecolumns 15 +\easy\ctsdoubledisplay bigcap {} +\ctsdoubledisplay bigcup {} +\ctsdoubledisplay bigodot {} +\ctsdoubledisplay bigoplus {} +\ctsdoubledisplay bigotimes {} +\ctsdoubledisplay bigsqcup {} +\ctsdoubledisplay biguplus {} +\ctsdoubledisplay bigvee {} +\ctsdoubledisplay bigwedge {} +\ctsdoubledisplay coprod {} +{\symbolspace = 42pt\basicdisplay {\hskip 26pt$\smallint$}% + {\\smallint}\ddstrut}% + \xrdef{\smallint} \pix\ctsidxref{smallint} +\ctsdoubledisplay int {} +\ctsdoubledisplay oint {} +\ctsdoubledisplay prod {} +\ctsdoubledisplay sum {} +} +\explain +Ces commandes produisent diff\'erents grands symboles d'op\'erateur. +\TeX\ produit la plus petite taille quand il est en \minrefs{mode math\'ematique} +^{style texte} et les plus grandes tailles quand il est en ^{style d'affichage}. +Les Op\'erateurs sont une des \minref{classe}s de symboles math\'ematiques de \TeX. +\TeX\ met diff\'erents montants d'espace +autour des diff\'erentes classes de symboles math\'ematiques. + +Les grands symboles d'op\'erateur avec `|big|' dans leurs noms sont diff\'e\-rents +des op\'erations binaires correspondantes (voir \xref{binops}) comme +|\cap| ($\cap$) puisqu'ils apparaissent habituellement au d\'ebut +d'une formule. \TeX\ utilise des espacements diff\'erents pour un grand op\'erateur +et pour une op\'eration binaire. + +Ne confondez pas `$\sum$' (|\sum|) avec `$\Sigma$'^^|\Sigma| (|\Sigma|) +ou `$\prod$' (|\prod|) avec `$\Pi$' ^^|\Pi| (|\Pi|). +|\Sigma| et |\Pi| produisent les lettres grecques capitales, qui sont plus petites et +ont une apparence diff\'erente. + +Un grand op\'erateur peut avoir des ^{limites}. La limite la plus basse est sp\'ecifi\'ee comme un indice +et la plus haute comme un exposant. + +\example +$$\bigcap_{k=1}^r (a_k \cup b_k)$$ +| +\dproduces +$$\bigcap_{k=1}^r (a_k \cup b_k)$$ +\endexample +\interexampleskip +\example +$${\int_0^\pi \sin^2 ax\,dx} = {\pi \over 2}$$ +| +\dproduces +$${\int_0^\pi \sin^2 ax\,dx} = {\pi \over 2}$$ +\endexample +\enddesc + +\begindesc +\cts limits {} +\explain +Quand il est en style texte, \TeX\ place normalement les limites apr\`es un grand op\'erateur. +Cette commande demande \`a \TeX\ de placer +les limites sur et sous un grand op\'erateur plut\^ot qu'apr\`es lui. + +Si vous sp\'ecifiez plusieurs commandes |\limits|, |\nolimits|, +et |\dis!-play!-limits|, seule la derni\`ere sera prise en compte. + +\example +Suppose that $\bigcap\limits_{i=1}^Nq_i$ contains at least +two elements. +| +\produces +Suppose that $\bigcap\limits_{i=1}^Nq_i$ contains at least +two elements. +\endexample +\enddesc + +\begindesc +\cts nolimits {} +\explain +Quand il est en style d'affichage, \TeX\ place normalement les limites sur et sous un grand op\'erateur. +(L'op\'erateur |\int| est une exception---\TeX\ +place les limites pour |\int| apr\`es l'op\'erateur dans tous les cas.) +^^|\int//limites apr\`es| +Cette commande demande \`a \TeX\ de placer +les limites apr\`es un grand op\'erateur plut\^ot que sur et sous lui. + +Si vous sp\'ecifiez plusieurs commandes |\limits|, |\nolimits|, +et |\dis!-play!-limits|, seule la derni\`ere sera prise en compte. + +\example +$$\bigcap\nolimits_{i=1}^Nq_i$$ +| +\dproduces +$$\bigcap\nolimits_{i=1}^Nq_i$$ +\endexample +\enddesc + +\begindesc +\cts displaylimits {} +\explain +Cette commande demande \`a \TeX\ de +suivre ses r\`egles normales pour le placement des limites~: +\olist\compact +\li Les limites de ^|\int| sont plac\'ees apr\`es l'op\'erateur. +\li Les limites des autres grands op\'erateurs sont plac\'ees apr\`es +l'op\'era\-teur en style texte. +\li Les limites des autres grands op\'erateurs sont plac\'ees sur et sous +l'op\'erateur en style d'affichage. +\endolist +Il est habituellement plus simple d'utiliser |\limits| ou |\nolimits| +pour produire un effet sp\'ecifique, mais |\display!-limits| est parfois +utile dans les d\'efinitions de \minref{macro}. + +Notez que \plainTeX\ d\'efinit ^|\int| comme une macro qui comprend |\no!-limits|, +donc |\int\displaylimits| en style de texte restaure la convention de |\limits|. + +Si vous sp\'ecifiez plusieurs commandes |\limits|, |\nolimits|, +et |\dis!-play!-limits|, seule la derni\`ere sera prise en compte. + +\example +$$a(\lambda) = {1 \over {2\pi}} \int\displaylimits +_{-\infty}^{+\infty} f(x)e^{-i\lambda x}\,dx$$ +| +\dproduces +$$a(\lambda) = {1 \over {2\pi}} \int\displaylimits +_{-\infty}^{+\infty} f(x)e^{-i\lambda x}\,dx$$ + +\eix^^{op\'erateurs//grands} +\endexample +\enddesc + + +%========================================================================== +\subsection {Ponctuation} + +\begindesc +\bix^^{ponctuation et formules de math.} +\cts cdotp {} +\cts ldotp {} +\explain +Ces deux commandes produisent respectivement un point centr\'e et un point +positionn\'e sur la \minref{ligne de base}. Elles ne sont valides qu'en +\minref{mode} math\'ematique. \TeX\ les traite comme de la ponctuation, ne mettant aucun espace suppl\'ementaire devant +elles mais en ajoutant un petit en plus apr\`es elles. +En contrepartie, \TeX\ met un montant d'espace \'egal des deux cot\'es +d'un point centr\'e g\'en\'er\'e par la commande ^|\cdot| (\xref \cdot). +\example +$x \cdotp y \quad x \ldotp y \quad x \cdot y$ +| +\produces +$x \cdotp y \quad x \ldotp y \quad x \cdot y$ +\endexample +\enddesc + +\begindesc +\cts colon {} +\explain +Cette commande produit une symbole de ponctuation deux-points. +Elle n'est valide qu'en mode math\'ematique. +La diff\'erence entre |\colon| et le caract\`ere deux-points (|:|) est que +`|:|' est un op\'erateur, donc \TeX\ met une espace suppl\'ementaire \`a sa gauche tandis qu'il +ne met pas d'espace suppl\'ementaire \`a la gauche de |\colon|. +\example +$f \colon t \quad f : t$ +| +\produces +$f \colon t \quad f : t$ + +\eix^^{ponctuation et formules de math.} +\endexample +\enddesc + + +%========================================================================== +%\secondprinting{\vfill\eject\null\vglue-30pt\vskip0pt} +\section {Puissances et indices} + +\begindesc +\margin{Two groups of commands have been combined here.} +\bix^^{exposants} +\bix^^{indices} +%\secondprinting{\vglue-12pt} +\makecolumns 4/2: +\easy\ctsact _ \xrdef{@underscore} {\<argument>} +\cts sb {\<argument>} +\ctsact ^ \xrdef{@hat} {\<argument>} +\cts sp {\<argument>} +%\secondprinting{\vglue-4pt} +\explain +Les commandes de chaque colonne sont \'equivalentes. Les commandes de la premi\`ere +colonne composent \<argument> comme un indice et celle de la seconde +colonne composent \<argument> comme une puissance. Les commandes |\sb| et |\sp| +sont principalement utiles si vous travaillez sur un terminal sur lequel manque un +signe soulign\'e ou de puissance ou si vous avez red\'efini `|_|' or `|^|' et avez besoin +d'acc\'eder \`a sa d\'efinition originale. Ces commandes sont aussi utilis\'ees pour +mettre des limites inf\'erieures ou sup\'erieures sur des sommes ou des int\'egrales. ^^{limites +inf\'erieures} ^^{limites sup\'erieures} + +Si une puissance ou un indice n'est pas un \minref{token} seul, vous devez +l'englober dans un \minref{groupe}. \TeX\ ne met pas de priorit\'e aux puissances +ou aux indices, donc il rejettera des formules telles que |a_i_j|, |a^i^j| ou +|a^i_j|. + +Les puissances et les indices sont normalement compos\'es en ^{style script} ou +en ^{style scriptscript} s'il sont de second ordre, c'est-\`a-dire, un indice d'un +indice ou une puissance d'une puissance. Vous pouvez mettre \emph{tout} +texte d'une formule math\'ematique en \minref{style}script ou scriptscript avec +les commandes ^|\scriptstyle| et ^|\scriptscriptstyle| (\xref +\scriptscriptstyle). + +Vous pouvez appliquer une puissance ou un indice \`a toutes les commandes qui +produisent des fonctions math\'ematiques nomm\'ees en caract\`ere romain (voir +\xref{namedfns}). Dans certain cas (voyez encore \xref{namedfns}) la +puissance ou l'indice appara\^\i t directement sur ou sous la fonction +nomm\'ee comme montr\'e dans les exemples de ^|\lim| et de ^|\det| ci-dessous. + +\example +$x_3 \quad t_{\max} \quad a_{i_k} \quad \sum_{i=1}^n{q_i} + \quad x^3\quad e^{t \cos\theta}\quad r^{x^2}\quad + \int_0^\infty{f(x)\,dx}$ +$$\lim_{x\leftarrow0}f(x)\qquad\det^{z\in A}\qquad\sin^2t$$ +| +\produces +%\secondprinting{\divide\abovedisplayskip by 2} +$x_3 \quad t_{\max} \quad a_{i_k} \quad \sum_{i=1}^n{q_i} + \quad x^3\quad e^{t \cos\theta}\quad r^{x^2}\quad + \int_0^\infty{f(x)\,dx}$ +$$\lim_{x \leftarrow 0} f(x)\qquad + \det^{z \in A}\qquad \sin^2 t$$ + +\eix^^{exposants} +\eix^^{indices} +\endexample +\enddesc + +%\secondprinting{\vfill\eject} + +%========================================================================== +\subsection {Choisir et utiliser des mod\`eles} + +\begindesc +\bix^^{styles} +\cts textstyle {} +\cts scriptstyle {} +\cts scriptscriptstyle {} +\cts displaystyle {} +\explain +^^{style texte} ^^{style script} ^^{style scriptscript} ^^{style d'affichage} +Ces commandes forcent le \minref{style} normal et par cons\'equent la +police que \TeX\ utilise pour composer une formule. Comme les +commandes de choix de police telles que |\it|, elles sont effectives +jusqu'\`a la fin du groupe les contenant. +Elles sont utiles quand le choix de style de \TeX\ est inappropri\'e pour la formule +que vous essayez de composer. +\example +$t+{\scriptstyle t + {\scriptscriptstyle t}}$ +| +\produces +$t+{\scriptstyle t + {\scriptscriptstyle t}}$ +\endexample +\enddesc + + +\begindesc +\cts mathchoice {% + \rqbraces{\<math$_1$>} + \rqbraces{\<math$_2$>} + \rqbraces{\<math$_3$>} + \rqbraces{\<math$_4$>}} +\explain +Cette commande demande \`a \TeX\ de composer une des sous-formules +\<math$_1$>, \<math$_2$>, \<math$_3$> ou \<math$_4$>, en faisant son choix +selon le \minref{style} courant. +Ainsi, si \TeX\ est en +style d'affichage il compose |\math!-choice| comme \<math$_1$>~; en style texte il la compose +comme \<math$_2$>~; en style script il la compose comme \<math$_3$>~; +et en style scriptscript il la compose comme \<math$_4$>. +\example +\def\mc{{\mathchoice{D}{T}{S}{SS}}} +The strange formula $\mc_{\mc_\mc}$ illustrates a +mathchoice. +| +\produces +\def\mc{{\mathchoice{D}{T}{S}{SS}}} +The strange formula $\mc_{\mc_\mc}$ illustrates a +mathchoice. +\endexample +\enddesc + +\begindesc +\cts mathpalette {\<argument$_1$> \<argument$_2$>} +\explain +^^{symboles math\'ematiques} +Cette commande procure un moyen simple de +produire une construction math\'ematique qui marche dans les quatre \minref{style}s. +Pour l'utiliser, vous devrez normalement d\'efinir une macro suppl\'ementaire, +que nous appellerons |\build|. +L'appel de |\math!-palette| pourra alors avoir la forme +|\mathpalette|\allowbreak|\build|\<argument>. + +|\build| teste dans quel style est \TeX\ et compose \<argu\-ment> en cons\'e\-quence. +Il peut \^etre d\'efini pour avoir deux param\`etres. +Quand vous appelez |\math!-palette|, il appellera \`a son tout |\build|, +avec |#1| une +commande qui s\'electionne le style courant et |#2| un \<argument>. +Ainsi, dans la d\'efinition de |\build| vous pouvez composer quelque chose +dans le style courant en le faisant pr\'ec\'eder de `|#1|'. +Voir la \knuth{page~360}{417--418} pour des exemples d'utilisation de |\mathpalette| +et la \knuth{page~151}{177} pour plus d'explication sur son fonctionnement. + +\eix^^{styles} +\enddesc + +%========================================================================== +\section {Symboles compos\'es} + +%========================================================================== +\subsection {Accents math\'ematiques} + +\begindesc +\xrdef{mathaccent} +^^{accents} +^^{math\'ematiques//accents} +% +\easy\ctsx acute {^{accent aigu} comme dans $\acute x$} +\ctsx b {^{accent barre dessous} comme dans $\b x$} +\ctsx bar {^{accent barre} comme dans $\bar x$} +\ctsx breve {^{accent bref} comme dans $\breve x$} +\ctsx check {^{accent tch\`eque} comme dans $\check x$} +\ctsx ddot {^{accent double point} comme dans $\ddot x$} +\ctsx dot {^{accent point} comme dans $\dot x$} +\ctsx grave {^{accent grave} comme dans $\grave x$} +\ctsx hat {^{accent circonflexe} comme dans $\hat x$} +\ctsx widehat {^{accent circonflexe large} comme dans $\widehat {x+y}$} +\ctsx tilde {^{accent tilde} comme dans $\tilde x$} +\ctsx widetilde {^{accent tilde large} comme dans $\widetilde {z+a}$} +\ctsx vec {^{accent vecteur} comme dans $\vec x$} +\explain +Ces commandes produisent des accents dans les formules math\'e\-matiques. +Vous devrez normalement laisser un espace apr\`es chacune d'entre elles. +Un accent large peut s'appliquer \`a une sous-formule comportant plusieurs caract\`eres~; +\TeX\ centrera l'accent sur la sous-formule. +Les autres accents ne sont applicables qu'a des caract\`eres simples. + +\example +$\dot t^n \qquad \widetilde{v_1 + v_2}$ +| +\produces +$\dot t^n \qquad \widetilde{v_1 + v_2}$ +\endexample + +\begindesc +\cts mathaccent {\<mathcode>} +\explain +Cette commande demande \`a \TeX\ de composer un accent math\'ematique +dont la famille et le code de caract\`ere sont donn\'es par \<mathcode>. (\TeX\ ignore +la classe du \minref{mathcode}.) +Voir l'\knuth{annexe~G}{} pour les d\'etails sur la mani\`ere dont \TeX\ positionne de tels accents. +La fa\c con usuelle d'utiliser |\mathaccent| est de le mettre dans une d\'efinition de macro +que donne un nom \`a l'accent math\'ematique. +\example +\def\acute{\mathaccent "7013} +| +\endexample +\enddesc + +\see ``Accents'' (\xref {accents}). +\enddesc + +%========================================================================== +\subsection {Fractions et autres op\'erations empil\'ees} + +\begindesc +\bix^^{fractions} +\bix^^{sous-formules empil\'ees} +\easy\cts over {} +\cts atop {} +\cts above {\<dimension>} +\cts choose {} +\cts brace {} +\cts brack {} +\explain +{\def\fri{\<formula$_1$>}% +\def\frii{\<formula$_2$>}% +Ces commandes empilent une sous-formule sur une autre. Nous expliquerons comment +marche |\over| et lui relierons ensuite les autres commandes. + +|\over| est la commande que vous utilisez normalement pour produire une fraction. +^^{fractions//produites par \b\tt\\over\e} +Si vous \'ecrivez quelque chose sous une des formes suivantes~: +\csdisplay +$$!fri\over!frii$$ +$!fri\over!frii$ +\left!<delim>!fri\over!frii\right!<delim> +{!fri\over!frii} +| +vous obtiendrez une fraction avec un num\'erateur \fri\ et un d\'eno\-minateur \<for\-mu\-la$_2$>, +c'est-\`a-dire, \fri\ sur \frii. +Dans la premi\`ere de ces trois +formes, le |\over| n'est pas implicitement contenu dans un groupe~; +il absorbe +tout ce qui est \`a sa gauche et \`a sa droite jusqu'a ce qu'il trouve une fronti\`ere, +\`a savoir, le d\'ebut ou la fin d'un groupe. + +Vous ne pouvez pas utiliser |\over| ou une autre de ces commandes de ce groupe +plus d'une fois dans une formule. +Ainsi une formule telle que~: +\csdisplay +$$a \over n \choose k$$ +| +n'est pas l\'egale. +Ce n'est pas une s\'ev\`ere restriction parce que +vous pouvez toujours englober une de ces commandes entre accolades. +La raison de cette restriction est que si vous avez deux de ces commandes +dans une seule formule, \TeX\ ne saura pas comment les grouper. + +Les autres commandes sont similaires \`a |\over|, avec les exceptions suivantes~: +\ulist\compact +\li |\atop| omet la barre de fraction. +\li |\above| procure une barre de fraction d'\'epaisseur \<dimension>. +\li |\choose| +omet la barre de fraction et englobe la construction entre parenth\`eses. +(Elle est appel\'ee ``choose'' parce que $n \choose k$ est la notation pour le +nombre de fa\c cons de choisir $k$ choses parmi $n$.) +\li |\brace| omet la barre de fraction et englobe la construction entre accolades. +\li |\brack| +omet la barre de fraction et englobe la construction entre crochets. +\endulist +}% +\example +$${n+1 \over n-1} \qquad {n+1 \atop n-1} \qquad + {n+1 \above 2pt n-1} \qquad {n+1 \choose n-1} \qquad + {n+1 \brace n-1} \qquad {n+1 \brack n-1}$$ +| +\dproduces +$${n+1 \over n-1} \qquad {n+1 \atop n-1} \qquad + {n+1 \above 2pt n-1} \qquad {n+1 \choose n-1} \qquad + {n+1 \brace n-1} \qquad {n+1 \brack n-1}$$ +\endexample +\enddesc + +\begindesc +\cts overwithdelims {\<delim$_1$> \<delim$_2$>} +\cts atopwithdelims {\<delim$_1$> \<delim$_2$>} +\cts abovewithdelims {\<delim$_1$> \<delim$_2$> \<dimension>} +\explain +Chacune de ces commandes superpose une sous-formule sur une autre et +entoure le r\'esultat avec \<delim$_1$> \`a gauche et +\<delim$_2$> \`a droite. Ces commandes suivent les m\^eme r\`egles que +|\over|, |\atop| et |\above|. Le \<dimension> dans |\abovewithdelims| +sp\'ecifie l'\'epaisseur de la barre de fraction. +\example +$${m \overwithdelims () n}\qquad + {m \atopwithdelims !|!| n}\qquad + {m \abovewithdelims \{\} 2pt n}$$ +| +\dproduces +$${m \overwithdelims () n}\qquad + {m \atopwithdelims || n}\qquad + {m \abovewithdelims \{\} 2pt n}$$ +\endexample +\enddesc + +\begindesc +\cts cases {} +\explain +^^{combinaisons, notation pour des} +Cette commande produit la forme math\'ematique qui d\'ecrit un choix entre +plusieurs cas. +Chaque cas a deux parties, s\'epar\'ees par `|&|'. +\TeX\ traite la premi\`ere partie comme une formule math\'ematique +et la seconde partie comme du texte ordinaire. Chaque +cas doit \^etre suivi par |\cr|. + +\example +$$g(x,y) = \cases{f(x,y),&if $x<y$\cr + f(y,x),&if $x>y$\cr + 0,&otherwise.\cr}$$ +| +\dproduces +$$g(x,y) = \cases{f(x,y),&if $x<y$\cr + f(y,x),&if $x>y$\cr + 0,&otherwise.\cr}$$ +\endexample +\enddesc + +\begindesc +\cts underbrace {\<argument>} +\cts overbrace {\<argument>} +\cts underline {\<argument>} +\cts overline {\<argument>} +\cts overleftarrow {\<argument>} +\cts overrightarrow {\<argument>} +\explain +Ces commandes placent des ^{accolades}, des lignes ou des ^{fl\`eches} extensibles +sur ou sous la sous-formule donn\'ee par \<argument>. +\TeX\ fera cette construction aussi large que n\'ecessaire pour +le contexte. +Quand \TeX\ produit les accolades, lignes ou fl\`eches \'etendues, il ne consid\`ere +que les dimensions de la \minref{bo\^\i te} contenant \<argument>. +Si vous utilisez plus d'une de ces commandes dans une seule formule, les +accolades, lignes ou fl\`eches qu'elle produira +pourront ne pas s'aligner proprement les unes avec les autres. +Vous pouvez utiliser la commande |\mathstrut| (\xref \mathstrut) +pour contourner cette difficult\'e. +\example +$$\displaylines{ +\underbrace{x \circ y}\qquad \overbrace{x \circ y}\qquad +\underline{x \circ y}\qquad \overline{x \circ y}\qquad +\overleftarrow{x \circ y}\qquad +\overrightarrow{x \circ y}\cr +{\overline r + \overline t}\qquad +{\overline {r \mathstrut} + \overline {t \mathstrut}}\cr +}$$ +| +\dproduces +$$\displaylines{ +\underbrace{x \circ y}\qquad \overbrace{x \circ y}\qquad +\underline{x \circ y}\qquad \overline{x \circ y}\qquad +\overleftarrow{x \circ y}\qquad +\overrightarrow{x \circ y}\cr +{\overline r + \overline t}\qquad +{\overline {r \mathstrut} + \overline {t \mathstrut}}\cr +}$$ +\endexample +\enddesc + +\begindesc%\secondprinting{\vglue-.5\baselineskip\vskip0pt} +\cts buildrel {\<formule> {\bt \\over} \<relation>} +\explain +^^{relations//mettre des formules sur des} +Cette commande produit une \minref{bo\^\i te} dans laquelle \<formula> +est plac\'e sur \<relation>. \TeX\ traite le r\'esultat comme une relation +en ce qui concerne l'espacement \seeconcept{classe}. +\example +$\buildrel \rm def \over \equiv$ +| +\produces +$\buildrel \rm def \over \equiv$ + +\eix^^{fractions} +\eix^^{sous-formules empil\'ees} +\endexample +\enddesc + +%\secondprinting{\vfill\eject} + + +%========================================================================== +\subsection {Points} + +\begindesc +\bix^^{points} +\easy\cts ldots {} +\cts cdots {} +\explain +Ces commandes produisent trois ^{points} align\'es. Pour |\ldots|, les points +sont sur la ligne de base~; pour |\cdots|, les points sont centr\'es en respectant +les axes (voir l'explication de |\vcenter|, \xref\vcenter). + +\example +$t_1 + t_2 + \cdots + t_n \qquad x_1,x_2, \ldots\,, x_r$ +| +\produces +$t_1 + t_2 + \cdots + t_n \qquad x_1,x_2, \ldots\,, x_r$ +\endexample +\enddesc + +\begindesc +\easy\cts vdots {} +\explain +Cette commande produit trois points verticaux. +\example +$$\eqalign{f(\alpha_1)& = f(\beta_1)\cr + \noalign{\kern -4pt}% + &\phantom{a}\vdots\cr % moves the dots right a bit + f(\alpha_k)& = f(\beta_k)\cr}$$ +| +\dproduces +$$\eqalign{f(\alpha_1)& = f(\beta_1)\cr + \noalign{\kern -4pt}% + &\phantom{a}\vdots\cr + f(\alpha_k)& = f(\beta_k)\cr}$$ +\endexample +\enddesc + +\begindesc +\cts ddots {} +\explain +Cette commande produit trois points sur une diagonale. +Son usage le plus commun est d'indiquer une r\'ep\'etition le long de la diagonale d'une matrice. +\example +$$\pmatrix{0&\ldots&0\cr + \vdots&\ddots&\vdots\cr + 0&\ldots&0\cr}$$ +| +\dproduces +$$\pmatrix{0&\ldots&0\cr + \vdots&\ddots&\vdots\cr + 0&\ldots&0\cr}$$ + +\eix^^{points} +\endexample +\enddesc + +\see |\dots| \ctsref\dots. + +%========================================================================== +\subsection {D\'elimiteurs} + +\begindesc +\bix^^{d\'elimiteurs} +% +\cts lgroup {} +\cts rgroup {} +\explain +Ces commandes produisent de grandes ^{parenth\`eses} gauches et droites +qui sont d\'efinies comme des \minref{d\'elimiteur}s ouvrants et fermants. +La plus grande taille disponible pour ces d\'elimiteurs est |\Big|. +Si vous utilisez des tailles plus petites, vous obtiendrez des caract\`eres \'etranges. +\example +$$\lgroup\dots\rgroup\qquad\bigg\lgroup\dots\bigg\rgroup$$ +| +\dproduces +$$\lgroup\dots\rgroup\qquad\bigg\lgroup\dots\bigg\rgroup$$ +\endexample +\enddesc + +\begindesc +\margin{{\tt\\vert} and {\tt\\Vert} were explained elsewhere.} +\easy\cts left {} +\cts right {} +\explain +Ces commandes doivent \^etre employ\'ees ensemble selon le mod\`ele~: +\display +{{\bt \\left} \<delim$_1$> \<subformula> {\bt \\right} \<delim$_2$>} +Cette construction demande \`a \TeX\ de produire \<subformula>, +entour\'ee des \minref{d\'elimiteur}s \<delim$_1$> et \<delim$_2$>. +La taille verticale des d\'elimiteurs est ajust\'ee pour correspondre \`a la +taille verticale (hauteur plus profondeur) de \<subformula>. \<delim$_1$> et +\<delim$_2$> n'ont pas besoin de correspondre. +Par exemple, vous pouvez utiliser `|]|' comme d\'elimiteur gauche +et `|(|' comme d\'elimiteur droite dans une utilisation simple de |\left| +et |\right|. + +|\left| et |\right| ont la propri\'et\'e importante de d\'efinir un +groupe, c'est-\`a-dire, qu'ils agissent comme des accolades gauches et droite. cette propri\'et\'e de +groupement est particuli\`erement utile quand vous mettez ^|\over| (\xref{\over}) ou +une commande similaire entre |\left| et |\right|, car vous n'avez pas besoin +de mettre d'accolades autour de la fraction construite par |\over|. + +Si vous voulez un d\'elimiteur gauche mais pas le droit, vous pouvez utiliser `|.|' \`a +la place du d\'elimiteur que vous ne voulez pas et il se transformera en espace blanc +(de largeur ^|\nulldelimiterspace|). +\example +$$\left\Vert\matrix{a&b\cr c&d\cr}\right\Vert + \qquad \left\uparrow q_1\atop q_2\right.$$ +| +\dproduces +$$\left\Vert\matrix{a&b\cr c&d\cr}\right\Vert + \qquad \left\uparrow q_1\atop q_2\right.$$ +\endexample +\enddesc + +\begindesc +\cts delimiter {\<nombre>} +\explain +Cette commande produit un d\'elimiteur dont les caract\'eristiques sont donn\'ees par +\<number>. \<number> est normalement \'ecrit en notation hexa\-d\'ecimale. +Vous pouvez utiliser la commande |\delimiter| \`a la place d'un caract\`ere dans tout contexte +o\`u \TeX\ attend un d\'elimiteur (bien que la commande soit rarement +employ\'ee en dehors d'une d\'efinition de macro). +Supposez que \<number> soit le nombre hexad\'ecimal $cs_1s_2s_3 +l_1l_2l_3$. Alors \TeX\ prendra le d\'elimiteur ayant +la \minref{classs} $c$, la petite variante +$s_1s_2s_3$ et la grande variante $l_1l_2l_3$. Ici $s_1s_2s_3$ indique +le caract\`ere math\'ematique trouv\'e en position $s_2s_3$ de la famille $s_1$ et +de m\^eme pour $l_1l_2l_3$. C'est la m\^eme convention que celle +utilis\'ee pour ^|\mathcode| (\xref\mathcode). +\example +\def\vert{\delimiter "026A30C} % As in plain TeX. +| +\endexample +\enddesc + + +\begindesc +\margin{{\tt\\delcode} was explained in two places. The +combined explanation is now in `General operations'.} +\cts delimiterfactor {\param{nombre}} +\cts delimitershortfall {\param{nombre}} +\explain +^^{d\'elimiteurs//hauteur des} +Ces deux param\`etres signalent \`a \TeX\ comment la hauteur d'un \minref{d\'elimiteur} +doit \^etre reli\'ee \`a la taille verticale de la sous-formule +\`a laquelle le d\'elimi\-teur est associ\'e. +|\delimiterfactor| donne le ratio minimum +de la taille du d\'elimiteur par rapport \`a la taille verticale de la sous-formule et +|\deli!-mitershortfall| donne le maximum par lequel la hauteur du +d\'elimiteur sera r\'eduite pour correspondre \`a la taille verticale de la sous-formule. + +Supposez que la \minref{bo\^\i te} contenant la sous-formule +ait une hauteur $h$ et une profondeur $d$ et $y=2\,\max(h,d)$. +soit la valeur de |\delimiterfactor| $f$ et la valeur de +|\delimitershortfall| $\delta$. +Alors \TeX\ prend la taille de d\'elimiteur minimum \'etant au moins $y \cdot +f/1000$ et au moins $y-\delta$. En particulier, si |\delimiterfactor| +est exactement \`a $1000$ alors \TeX\ essayera de faire un d\'elimiteur au moins aussi grand +que la formule \`a laquelle il est attach\'e. +Voir les \knuth{pages~152 et~446 (R\`egle 19)}{pages~178 et~511 (R\`egle 19)} +pour les d\'etail exacts sur la fa\c con dont \TeX\ utilise ces param\`etres. +\PlainTeX\ met |\delimiter!-factor| \`a $901$ et +|\delimiter!-shortfall| \`a |5pt|. +\enddesc + +\see |\delcode| (\xref\delcode), |\vert|, |\Vert| +et |\backslash| (\xref\vert). +\eix^^{d\'elimiteurs} + +%========================================================================== +\subsection {Matrices} + +\begindesc +\cts matrix + {{\bt \rqbraces{\<ligne> \\cr $\ldots$ \<ligne> \\cr}}} +\cts pmatrix + {{\bt \rqbraces{\<ligne> \\cr $\ldots$ \<ligne> \\cr}}} +\cts bordermatrix + {{\bt \rqbraces{\<ligne> \\cr $\ldots$ \<ligne> \\cr}}} +\explain +Chacune de ces trois commandes produit une ^{matrice}. +Les \'el\'ements de chaque rang\'e de la matrice entr\'ee +sont s\'epar\'es par `|&|' et chaque rang\'e est \`a son tour termin\'ee +par |\cr|. +(C'est la m\^eme forme que celle utilis\'ee pour un +\minref{alignement}.) +Les commandes diff\`erent de la mani\`ere suivante~: +\ulist\compact +\li |\matrix| produit une matrice sans aucun entourage ou \minref{d\'elimiteur}s ins\'er\'es. +\li |\pmatrix| produit une matrice entour\'ee par des parenth\`eses. +\li |\bordermatrix| produit une matrice dans laquelle la premi\`ere rang\'ee et la premi\`ere +colonne sont trait\'ees comme des labels. (Le premier \'el\'ement de la premi\`ere rang\'ee est +habituellement laiss\'e \`a blanc.) Le reste de la matrice est englob\'ee dans +des parenth\`eses. +\endulist +\TeX\ peut rendre les parenth\`eses de |\pmatrix| et de |\bordermatrix| aussi larges que +n\'ecessaire en ins\'erant des extensions verticales. Si vous voulez une matrice +entour\'ee par des d\'elimiteurs autres que des paren\-th\`eses, vous devez utiliser +|\matrix| en conjugaison avec |\left| et |\right| (\xref \left). + +\example +$$\displaylines{ + \matrix{t_{11}&t_{12}&t_{13}\cr + t_{21}&t_{22}&t_{23}\cr + t_{31}&t_{32}&t_{33}\cr}\qquad +\left\{\matrix{t_{11}&t_{12}&t_{13}\cr + t_{21}&t_{22}&t_{23}\cr + t_{31}&t_{32}&t_{33}\cr}\right\}\cr +\pmatrix{t_{11}&t_{12}&t_{13}\cr + t_{21}&t_{22}&t_{23}\cr + t_{31}&t_{32}&t_{33}\cr}\qquad +\bordermatrix{&c_1&c_2&c_3\cr + r_1&t_{11}&t_{12}&t_{13}\cr + r_2&t_{21}&t_{22}&t_{23}\cr + r_3&t_{31}&t_{32}&t_{33}\cr}\cr}$$ +| +\dproduces +$$\displaylines{ + \matrix{t_{11}&t_{12}&t_{13}\cr + t_{21}&t_{22}&t_{23}\cr + t_{31}&t_{32}&t_{33}\cr}\qquad +\left\{\matrix{t_{11}&t_{12}&t_{13}\cr + t_{21}&t_{22}&t_{23}\cr + t_{31}&t_{32}&t_{33}\cr}\right\}\cr +\pmatrix{t_{11}&t_{12}&t_{13}\cr + t_{21}&t_{22}&t_{23}\cr + t_{31}&t_{32}&t_{33}\cr}\qquad +\bordermatrix{&c_1&c_2&c_3\cr + r_1&t_{11}&t_{12}&t_{13}\cr + r_2&t_{21}&t_{22}&t_{23}\cr + r_3&t_{31}&t_{32}&t_{33}\cr}\cr}$$ +\endexample +\enddesc + +%========================================================================== +\subsection {Racines et radicaux} + +\begindesc +\easy\cts sqrt {\<argument>} +\explain +Cette commande produit la notation pour la racine carr\'ee de \<argument>. +\example +$$x = {-b\pm\sqrt{b^2-4ac} \over 2a}$$ +| +\dproduces +$$x = {-b\pm\sqrt{b^2-4ac} \over 2a}$$ +\endexample +\enddesc + +\begindesc +\easy\cts root {\<argument$_1$> {\bt \\of} \<argument$_2$>} +\explain +Cette commande produit la notation pour une racine de \<argument$_2$> o\`u l'ordre +est donn\'e par \<argument$_1$>. +\example +$\root \alpha \of {r \cos \theta}$ +| +\produces +$\root \alpha \of {r \cos \theta}$ +\endexample +\enddesc + +\begindesc +\cts radical {\<nombre>} +\explain +Cette commande produit un signe radical +dont les caract\'eristiques sont donn\'ees par +\<nombre>. Elle utilise la m\^eme repr\'esentation que le code d\'elimiteur +^^{codes d\'elimiteurs} +dans la commande ^|\delcode| (\xref \delcode). + +\example +\def\sqrt{\radical "270370} % as in plain TeX +| +\endexample +\enddesc + +%========================================================================== +\section {Num\'eros d'\'equation} + +\begindesc +\easy\cts eqno {} +\cts leqno {} +\explain +Ces commandes attachent un num\'ero d'\'equation \`a une formule affich\'ee. +|\eqno| met le num\'ero d'\'equation \`a droite et |\leqno| le met \`a gauche. +Les commandes doivent \^etre mises \`a la fin de la formule. +Si vous avez un affichage multi-ligne et voulez num\'eroter plus d'une ligne, +utilisez les commandes |\eq!-alignno| ou |\leq!-alignno| +(\xref \eqalignno). + +Ces commandes ne sont valides qu'en mode math\'ematique affich\'e. + +\example +$$e^{i\theta} = \cos \theta + i \sin \theta\eqno{(11)}$$ +| +\produces +$$e^{i\theta} = \cos \theta + i \sin \theta\eqno{(11)}$$ +\endexample +\example +$$\cos^2 \theta + \sin^2 \theta = 1\leqno{(12)}$$ +| +\produces +\abovedisplayskip = -\baselineskip +$$\cos^2 \theta + \sin^2 \theta = 1\leqno{(12)}$$ +\endexample +\enddesc + + +%========================================================================== +\section {Affichages multi-ligne} + +\begindesc +\bix^^{affichages//multi-ligne} +\cts displaylines + {{\bt \rqbraces{\<ligne>\ths\\cr$\ldots$\<ligne>\ths\\cr}}} +\explain +Cette commande produit un affichage math\'ematique multi-ligne dans lequel chaque ligne est +centr\'ee ind\'ependamment des autres lignes. +Vous pouvez utiliser la commande |\noalign| (\xref \noalign) pour changer le montant +d'espace entre deux lignes d'un affichage multi-ligne. + +Si vous voulez attacher des num\'eros d'\'equation \`a certaines ou toutes les \'equations +dans un affichage math\'ematique multi-ligne, vous devez utiliser |\eqalignno| ou +|\leqalignno|. +\example +$$\displaylines{(x+a)^2 = x^2+2ax+a^2\cr + (x+a)(x-a) = x^2-a^2\cr}$$ +| +\dproduces\centereddisplays +$$\displaylines{ +(x+a)^2 = x^2+2ax+a^2\cr +(x+a)(x-a) = x^2-a^2\cr +}$$ +\endexample +\enddesc + +\begindesc +\cts eqalign {} + {{\bt \rqbraces{\<ligne> \\cr $\ldots$ \<ligne> \\cr}}} +\cts eqalignno {} + {{\bt \rqbraces{\<ligne> \\cr $\ldots$ \<ligne> \\cr}}} +\cts leqalignno {} + {{\bt \rqbraces{\<ligne> \\cr $\ldots$ \<ligne> \\cr}}} +\explain +^^{num\'eros d'\'equation} +Ces commandes produisent un affichage math\'ematique multi-ligne +dans lequel certaines parties correspondantes des lignes sont align\'ees verticalement. +Les commandes |\eqalignno| et |\leqalignno| vous laissent aussi +apporter des num\'eros d'\'equation pour certaines ou toutes les lignes. +|\eqalignno| met les num\'eros d'\'equation \`a droite et +|\leqalignno| les met \`a gauche. + +Chaque ligne dans l'affichage est termin\'ee par |\cr|. Chacune des parties devant \^etre align\'ee +(le plus souvent un signe \'egal) est pr\'ec\'ed\'ee par +`|&|'. Un `|&|' pr\'ec\`ede aussi chaque num\'ero d'\'equation, qui est donn\'e \`a la fin d'une ligne. +Vous pouvez mettre plus d'une de ces commandes dans un seul affichage pour +produire plusieurs groupes d'\'equation. Dans ce cas, seuls les groupes les plus \`a droite +ou les plus \`a gauche peuvent \^etre produits avec |\eqalignno| ou |\leqalignno|. + +Vous pouvez utiliser la commande |\noalign| (\xref \noalign) pour changer le montant +d'espace entre deux lignes d'un affichage multi-ligne. +\example +$$\left\{\eqalign{f_1(t) &= 2t\cr f_2(t) &= t^3\cr + f_3(t) &= t^2-1\cr}\right\} + \left\{\eqalign{g_1(t) &= t\cr g_2(t) &= 1}\right\}$$ +| +\dproduces +$$\left\{\eqalign{f_1(t) &= 2t\cr f_2(t) &= t^3\cr + f_3(t) &= t^2-1\cr}\right\} +\left\{\eqalign{g_1(t) &= t\cr g_2(t) &= 1}\right\}$$ +\nextexample +$$\eqalignno{ +\sigma^2&=E(x-\mu)^2&(12)\cr + &={1 \over n}\sum_{i=0}^n (x_i - \mu)^2&\cr + &=E(x^2)-\mu^2\cr}$$ +| +\produces +\abovedisplayskip = -\baselineskip +$$\eqalignno{ +\sigma^2&=E(x-\mu)^2&(12)\cr + &={1 \over n}\sum_{i=0}^n (x_i - \mu)^2&\cr + &=E(x^2)-\mu^2\cr}$$ +\nextexample +$$\leqalignno{ +\sigma^2&=E(x-\mu)^2&(6)\cr + &=E(x^2)-\mu^2&(7)\cr}$$ +| +\produces +\abovedisplayskip = -\baselineskip +$$\leqalignno{ +\sigma^2&=E(x-\mu)^2&(6)\cr + &=E(x^2)-\mu^2&(7)\cr}$$ +\nextexample +$$\eqalignno{ + &(x+a)^2 = x^2+2ax+a^2&(19)\cr + &(x+a)(x-a) = x^2-a^2\cr}$$ +% same effect as \displaylines but with an equation number +| +\dproduces +$$\eqalignno{ +&(x+a)^2 = x^2+2ax+a^2&(19)\cr +&(x+a)(x-a) = x^2-a^2\cr +}$$ +% same effect as \displaylines but with an equation number + +\eix^^{affichages//multi-ligne} +\endexample +\enddesc + +%========================================================================== +\section {Polices dans des formules math\'ematiques} + +\begindesc +^^{polices} +\xrdef{mathfonts} +% +\easy\ctsx cal {utilise une police calligraphique majuscule} +\ctsx mit {utilise une police math\'ematique italique} +\ctsx oldstyle {utilise une police de chiffres elz\'eviriens} +\explain +Ces commandes demandent \`a \TeX\ de composer le texte suivant dans la police +sp\'ecifi\'ee. Vous ne pouvez les utiliser qu'en \minref{mode math\'ematique}. +La commande |\mit| est utile pour produire des ^{lettres grecques} capitales pench\'ees. +Vous pouvez aussi utiliser les commandes donn\'ees dans +\headcit{S\'electionner des polices}{selfont} pour changer des polices en mode math\'ematique. +\example +${\cal XYZ} \quad +{\mit AaBb\Gamma \Delta \Sigma} \quad +{\oldstyle 0123456789}$ +| +\produces +${\cal XYZ} \quad +{\mit AaBb\Gamma \Delta \Sigma} \quad +{\oldstyle 0123456789}$ +\endexample +\enddesc + +^^{styles de caract\`ere} +\begindesc +\ctsx itfam {famille de type italique} +\ctsx bffam {famille de type grasse} +\ctsx slfam {famille de type pench\'ee} +\ctsx ttfam {famille de type machine \`a \'ecrire} +\explain +Ces commandes d\'efinissent des familles de type \minrefs{family} devant \^etre utilis\'ees en +\minref{mode math\'ematique}. Leur principale utilisation est dans la d\'efinition des commandes +|\it|, |\bf|, |\sl| et |\tt| pour qu'elles puissent fonctionner en mode math\'ematique. +\enddesc + +\begindesc +\cts fam {\param{nombre}} +\explain +Quand \TeX\ est en \minref{mode math\'ematique}, il compose normalement un caract\`ere +en utilisant la ^^{classe} de famille de police donn\'ee dans son \minref{mathcode}. +^^{famille//donn\'ee par \b\tt\\fam\e} +Cependant, quand \TeX\ est en mode math\'ematique et rencontre un caract\`ere dont +la \minref{classe} est $7$ (Variable), il compose ce caract\`ere en utilisant +la \minref{famille} de police donn\'ee par la valeur de |\fam|, \`a condition que la +valeur de |\fam| soit entre $0$ et $15$. +Si la valeur de |\fam| n'est pas dans cette intervalle, \TeX\ utilise la famille du +mathcode du caract\`ere comme dans le cas ordinaire. +\TeX\ met |\fam| \`a $-1$ \`a chaque fois qu'il entre en mode math\'ematique. +En dehors du mode math\'ematique, |\fam| n'a pas d'effet. + +En assignant une valeur \`a +|\fam| vous pouvez changer la fa\c con dont \TeX\ compose des caract\`eres ordinaires +tels que des variables. +Par exemple, en mettant |\fam| \`a |\ttfam|, vous demandez \`a \TeX\ de composer +des variables en utilisant une police de machine \`a \'ecrire. +\PlainTeX\ d\'efinit |\tt| comme une \minref{macro} qui, entre autres choses, +met |\fam| \`a |\ttfam|. +\example +\def\bf{\fam\bffam\tenbf} % As in plain TeX. +| +\endexample +\enddesc + +\begindesc +\cts textfont {\<family>\param{fontname}} +\cts scriptfont {\<family>\param{fontname}} +\cts scriptscriptfont {\<family>\param{fontname}} +\explain +^^{style texte} +^^{style script} +^^{style scriptscript} +Chacun de ces param\`etres sp\'ecifie la police que \TeX\ utilise pour +composer le \minref{style} indiqu\'e dans la \minref{famille} indiqu\'ee. +Ces choix n'ont aucun effet en dehors du \minref{mode math\'ematique}. +\example +\scriptfont2 = \sevensy % As in plain TeX. +| +\endexample +\enddesc + +\see ``Type styles'' (\xref{seltype}). +%========================================================================== +\section {Construire des symboles math\'ematiques} + +%========================================================================== +\subsection {Rendre des d\'elimiteurs plus grands} + +\begindesc +\makecolumns 16/4: +\easy\cts big {} +\cts bigl {} +\cts bigm {} +\cts bigr {} +\cts Big {} +\cts Bigl {} +\cts Bigm {} +\cts Bigr {} +\cts bigg {} +\cts biggl {} +\cts biggm {} +\cts biggr {} +\cts Bigg {} +\cts Biggl {} +\cts Biggm {} +\cts Biggr {} +\explain +^^{d\'elimiteurs//\'elargis} +Ces commandes rendent des \minref{d\'elimiteur}s plus grands que leur taille normale. +Les commandes dans les quatre colonnes +produisent successivement de plus grandes tailles. La diff\'erence entre |\big|, +|\bigl|, |\bigr| et |\bigm| est en relation avec la \minref{classe} du +d\'elimiteur agrandi~: +\ulist\compact +\li |\big| produit un symbole ordinaire. +\li |\bigl| produit un symbole ouvrant. +\li |\bigr| produit un symbole fermant. +\li |\bigm| produit un symbole de relation. +\endulist +\noindent +\TeX\ utilise la classe d'un symbole pour d\'ecider combien d'espace mettre +autour de ce symbole. + +Ces commandes, contrairement \`a |\left| et |\right|, +ne d\'efinissent \emph{pas} un groupe. + +\example +$$(x) \quad \bigl(x\bigr) \quad \Bigl(x\Bigr) \quad + \biggl(x\biggr) \quad \Biggl(x\Biggr)\qquad +[x] \quad \bigl[x\bigr] \quad \Bigl[x\Bigr] \quad + \biggl[x\biggr] \quad \Biggl[x\Biggr]$$ +| +\dproduces +$$(x) \quad \bigl(x\bigr) \quad \Bigl(x\Bigr) \quad +\biggl(x\biggr) \quad \Biggl(x\Biggr)\qquad +[x] \quad \bigl[x\bigr] \quad \Bigl[x\Bigr] \quad +\biggl[x\biggr] \quad \Biggl[x\Biggr]$$ +\endexample +\enddesc + +%========================================================================== +\subsection {Parties de grands symboles} + +\begindesc +\cts downbracefill {} +\cts upbracefill {} +\explain +Ces commandes produisent respectivement des ^{accolades horizontales} +et extensibles dirig\'ees vers le haut et vers le bas. ^^{accolades} +\TeX \ rendra les accolades aussi larges que n\'ecessaire. +Ces commandes +sont utilis\'ees dans les d\'efinitions de ^|\overbrace| et de ^|\underbrace| +(\xref \overbrace). +\example +$$\hbox to 1in{\downbracefill} \quad + \hbox to 1in{\upbracefill}$$ +| +\dproduces +$$\hbox to 1in{\downbracefill} \quad + \hbox to 1in{\upbracefill}$$ +\endexample +\enddesc + +\begindesc +\cts arrowvert {} +\cts Arrowvert {} +\cts lmoustache {} +\cts rmoustache {} +\cts bracevert {} +\explain +Ces commandes produisent des portions de certains grands +d\'elimiteurs +^^{d\'elimiteurs//parties de} +qui peuvent eux-m\^eme \^etre utilis\'es comme d\'elimiteurs. +Elles font r\'ef\'e\-rence aux caract\`eres de la police math\'ematique ^|cmex10|. +\example +$$\cdots \Big\arrowvert \cdots \Big\Arrowvert \cdots + \Big\lmoustache \cdots \Big\rmoustache \cdots + \Big\bracevert \cdots$$ +| +\dproduces +$$\cdots \Big\arrowvert \cdots \Big\Arrowvert \cdots + \Big\lmoustache \cdots \Big\rmoustache \cdots + \Big\bracevert \cdots$$ +\endexample +\enddesc + + +%========================================================================== +\section {Aligner des parties d'une formule} + +%========================================================================== +\subsection {Aligner des accents} + +\begindesc +\bix^^{accents//aligner des} +\cts skew {\<nombre> \<argument$_1$> \<argument$_2$>} +\explain +Cette commande d\'eplace l'accent \<argument$_1$> de +\<number> \minref{unit\'es math\'e\-matiques} vers la droite de sa position normale +en respectant \<argu\-ment$_2$>. +L'utilisation la plus commune de cette commande est pour +modifier la position d'un accent qui se trouve plac\'e sur +un autre accent. +\example +$$\skew 2\bar{\bar z}\quad\skew 3\tilde{\tilde y}\quad + \skew 4\tilde{\hat x}$$ +| +\dproduces +$$\skew 2\bar{\bar z}\quad\skew 3\tilde{\tilde y}\quad + \skew 4\tilde{\hat x}$$ +\endexample +\enddesc + +\begindesc +\cts skewchar {\<font>\param{number}} +\explain +Le |\skewchar| d'une police +est le caract\`ere dans la police dont les cr\'enages, +d\'efinis dans le fichier de m\'etrique de la police, d\'eterminent les positions +des accents math\'ematiques. Cela dit, supposez que \TeX\ applique un accent math\'ematique +au caract\`ere `|x|'. \TeX\ regarde si la paire de caract\`eres +`|x\skewchar|' a un cr\'enage~; si oui, il d\'eplace l'accent d'un montant de +ce cr\'enage. L'algorithme complet que \TeX\ utilise pour positionner les accents +math\'ematiques (qui d\'eterminent beaucoup d'autres choses) se trouve dans l'\knuth{annexe~G}{}. + +Si la valeur de |\skewchar| n'est pas dans l'intervalle $0$--$255$, +\TeX\ prend une valeur de cr\'enage \`a z\'ero. + +Notez que \<font> est une s\'equence de contr\^ole +qui nomme une police, pas un \<nom de police> qui nomme des fichiers de police. +Attention~: +un assignement de |\skewchar| n'est \emph{pas} enlev\'e \`a la fin d'un groupe. +Si vous voulez changer |\skewchar| localement, vous devrez sauvegarder et +restaurer sa valeur originale explicitement. +\enddesc + +\begindesc +\cts defaultskewchar {\param{number}} +\explain +Quand \TeX\ lit le fichier de m\'etriques +^^{fichier de m\'etriques//caract\`ere oblique par d\'efaut dans le} +pour une police en r\'eponse \`a une +commande ^|\font|, il met le ^|\skewchar| de la police +dans |\default!-skewchar|. +Si la valeur de |\default!-skewchar| n'est +pas dans l'intervalle $0$--$255$, \TeX\ n'assigne aucun caract\`ere oblique +par d\'efaut. +\PlainTeX\ met |\defaultskewchar| \`a $-1$, et il est normalement pr\'ef\'erable +de le laisser ainsi. +\margin{Misleading example deleted.} +\eix^^{accents//aligner des} +\enddesc + +%========================================================================== +\subsection {Aligner du mat\'eriel verticalement} + +\begindesc +\cts vcenter {\rqbraces{\<mat\'eriel en mode vertical>}} +\ctsbasic {\\vcenter to \<dimension> \rqbraces{\<mat\'eriel en mode vertical>}}{} +\ctsbasic {\\vcenter spread \<dimension> \rqbraces{\<mat\'eriel en mode vertical>}}{} +\explain +Toutes les formules math\'ematiques ont un +``^{axe}'' invisible que \TeX\ traite comme une sorte de +ligne de centrage horizontale pour cette formule. +Par exemple, l'axe d'une formule constitu\'ee d'une +fraction est au centre de la barre de fraction. +La commande |\vcenter| demande \`a \TeX\ de placer le \<mat\'eriel en mode vertical> +dans une \minref{vbox} et de centrer la vbox +en respectant l'axe de la formule qu'il est en train de construire. + +La premi\`ere forme de la commande +centre le mat\'eriel comme donn\'e. Les deuxi\`emes et troisi\`emes +formes \'elargissent ou r\'etr\'ecissent le mat\'eriel verticalement comme dans la +commande |\vbox| (\xref \vbox). + +\example +$${n \choose k} \buildrel \rm def \over \equiv \> +\vcenter{\hsize 1.5 in \noindent the number of +combinations of $n$ things taken $k$ at a time}$$ +| +\dproduces +$${n \choose k} \buildrel \rm def \over \equiv \> +\vcenter{\hsize 1.5 in \noindent the number of +combinations of $n$ things taken $k$ at a time}$$ +\endexample +\enddesc + +%========================================================================== +\section {Produire des espaces} + +%========================================================================== +\subsection {Espaces math\'ematiques de largeur fixe} + +\begindesc +\bix^^{espace//dans des formules math\'ematiques} +\ctspecial ! \ctsxrdef{@shriek} +\ctspecial , \ctsxrdef{@comma} +\ctspecial > \ctsxrdef{@greater} +\ctspecial ; \ctsxrdef{@semi} +\explain +Ces commandes produisent des montants vari\'es d'^{espace suppl\'ementaire} dans des formules. Elles +sont d\'efinies en termes d'\minref{unit\'es math\'ematiques}, donc \TeX\ ajuste +le montant d'espace en accord avec le \minref{style} courant. +\ulist +\li |\!!| produit un espace fin n\'egatif, c'est-\`a-dire, qu'il r\'eduit l'espace +entre ses sous-formules voisines du montant d'un espace fin. +\li |\,| produit un espace fin. +\li |\>| produit un espace moyen. +\li |\;| produit un espace large. +\endulist +\example +$$00\quad0\!!0\quad0\,0\quad0\>0\quad0\;0\quad +{\scriptstyle 00\quad0\!!0\quad0\,0\quad0\>0\quad0\;0}$$ +| +\dproduces +$$00\quad0\!0\quad0\,0\quad0\>0\quad0\;0\quad +{\scriptstyle 00\quad0\!0\quad0\,0\quad0\>0\quad0\;0}$$ +\endexample +\enddesc + +\begindesc +\cts thinmuskip {\param{muglue}} +\cts medmuskip {\param{muglue}} +\cts thickmuskip {\param{muglue}} +\explain +Ces param\`etres d\'efinissent des espaces fins, moyens et larges en +mode math\'ematique. +\example +$00\quad0\mskip\thinmuskip0\quad0\mskip\medmuskip0 + \quad0\mskip\thickmuskip0$ +| +\produces +$00\quad0\mskip\thinmuskip0\quad0\mskip\medmuskip0 + \quad0\mskip\thickmuskip0$ +\endexample +\enddesc + +\begindesc +\cts jot {\param{dimension}} +\explain +Ce param\`etre d\'efinit une distance \'egale \`a trois points (\`a moins que +vous le changiez). +Le |\jot| est une unit\'e de mesure pratique pour ouvrir des affichages math\'ematiques. +\enddesc + +%========================================================================== +\subsection {Espaces math\'ematiques de largeur variable} + +\begindesc +\cts mkern {\<mudimen>} +\explain +^^{cr\'enages//dans des formules math\'ematiques} +Cette commande +produit un \minref{cr\'enage}, c'est-\`a-dire, un espace blanc, de largeur \<mudimen>. +Le cr\'enage est mesur\'e +en \minref{unit\'es math\'ematiques}, qui varie en fonction du style. +Hormis son unit\'e de la mesure, cette commande se comporte comme +|\kern| (\xref \kern) le fait en mode horizontal. + +\example +$0\mkern13mu 0 \qquad {\scriptscriptstyle 0 \mkern13mu 0}$ +| +\produces +$0\mkern13mu 0 \qquad {\scriptscriptstyle 0 \mkern13mu 0}$ +\endexample +\enddesc + +\begindesc +\cts mskip {\<mudimen$_1$> {\bt plus} \<mudimen$_2$> {\bt minus} + \<mudimen$_3$>} +\explain +^^{ressort} +Cette commande produit un \minref{ressort} horizontal +qui a une largeur naturelle \<mu\-dimen$_1$>, s'\'etire de \<mudimen$_2$> +et se r\'etr\'ecit de \<mudimen$_3$>. +Le ressort est mesur\'e en \minref{unit\'es math\'ematiques}, qui varie en fonction +du style. Hormis son unit\'e de mesure, cette commande se comporte +comme |\hskip| (\xref \hskip). + +\example +$0\mskip 13mu 0 \quad {\scriptscriptstyle 0 \mskip 13mu 0}$ +| +\produces +$0\mskip 13mu 0 \quad {\scriptscriptstyle 0 \mskip 13mu 0}$ +\endexample +\enddesc + +\begindesc +\cts nonscript {} +\explain +Quand \TeX\ est en train de composer en \minref{style} script ou +scriptscript et rencontre cette commande +imm\'ediatement devant d'un ressort ou d'un cr\'enage, +il supprime le ressort ou le cr\'enage. +|\nonscript| n'a pas d'effet dans les autres styles. + +Cette commande fournit une mani\`ere de ``resserrer'' l'espacement dans +les styles script et scriptscript, qui sont g\'en\'eralement faits dans une +police plus petite. Elle est peu utile en dehors des d\'efinitions de macro. +\example +\def\ab{a\nonscript\; b} +$\ab^{\ab}$ +| +\produces +\def\ab{a\nonscript\; b} +$\ab^{\ab}$ +\endexample +\enddesc + +\see |\kern| (\xref\kern), |\hskip| (\xref\hskip). +\eix^^{espace//dans des formules math\'ematiques} + + +%========================================================================== +\subsection {param\`etres d'espacement pour les affichages} + +\begindesc +\bix^^{affichages//param\`etres d'espacement pour} +\cts displaywidth {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie la largeur maximum que +\TeX\ alloue pour un affichage math\'ematique. Si \TeX\ ne peut pas mettre l'affichage +dans un espace de cette largeur, il fait un ``overfull \minref{hbox}'' +et se plaint. +\TeX\ met la valeur de |\displaywidth| quand il rencontre le `|$$|' +qui d\'ebute l'affichage. Cette valeur initiale est +|\hsize| (\xref \hsize) \`a moins qu'elle soit modifi\'ee par des +changements de la forme du paragraphe. +Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etaill\'ee de ce param\`etre. +\enddesc + +\begindesc +\cts displayindent {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie l'espace par lequel \TeX\ indente un +affichage math\'e\-matique. +\TeX\ met la valeur de |\displayindent| quand il rencontre le `|$$|' +qui d\'ebute l'affichage. Normalement la valeur initiale est z\'ero, +mais si la forme du paragraphe indique que l'affichage doit \^etre +d\'ecal\'e d'un montant $s$, +\TeX\ mettra |\displayindent| \`a $s$. +Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etaill\'ee de ce param\`etre. +\enddesc + +\begindesc +\cts predisplaysize {\param{dimension}} +\explain +\TeX\ met ce param\`etre \`a la largeur de la ligne pr\'ec\'edant +un affichage math\'ematique. +\TeX\ utilise |\predisplaysize| pour d\'eterminer si l'affi\-chage +d\'ebute ou non \`a +gauche d'o\`u la ligne pr\'ec\'edente se termine, c'est-\`a-dire, s'il +recouvre visuellement ou non la ligne pr\'ec\'edente. +S'il la recouvre, il utilise les ressorts |\abovedisplayskip| et +|\belowdisplayskip| en mettant l'affichage~; +autrement il utilise les ressorts |\abovedisplay!-shortskip| et +|\belowdisplay!-shortskip|. +Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etaill\'ee de ce param\`etre. +\enddesc + +\begindesc +\cts abovedisplayskip {\param{ressort}} +\explain +Ce param\`etre sp\'ecifie le montant de ressort vertical que +\TeX\ ins\`ere avant un affichage quand l'affichage d\'ebute +\`a gauche d'o\`u la ligne pr\'ec\'edente se termine, c'est-\`a-dire, quand il recouvre +visuellement la ligne pr\'ec\'edente. +\PlainTeX\ met |\abovedisplayskip| \`a |12pt plus3pt minus9pt|. +Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etaill\'ee de ce param\`etre. +\enddesc + +\begindesc +\cts belowdisplayskip {\param{ressort}} +\explain +Ce param\`etre sp\'ecifie le montant de ressort vertical que +\TeX\ ins\`ere apr\`es un affichage quand l'affichage d\'ebute +\`a gauche d'o\`u la ligne pr\'ec\'edente se termine, c'est-\`a-dire, quand il recouvre +visuellement la ligne pr\'ec\'edente. +\PlainTeX\ met |\belowdisplay!-skip| \`a |12pt plus3pt minus9pt|. +Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etaill\'ee de ce param\`etre. +\enddesc + +\begindesc +\cts abovedisplayshortskip {\param{ressort}} +\explain +Ce param\`etre sp\'ecifie le montant de ressort vertical que +\TeX\ ins\`ere avant un affichage quand l'affichage d\'ebute +\`a droite d'o\`u la ligne pr\'ec\'edente se termine, c'est-\`a-dire, quand il ne recouvre +pas visuellement la ligne pr\'ec\'edente. +\PlainTeX\ met |\abovedisplay!-shortskip| \`a |0pt plus3pt|. +Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etail\-l\'ee de ce param\`etre. +\enddesc + +\begindesc +\cts belowdisplayshortskip {\param{ressort}} +\explain +Ce param\`etre sp\'ecifie le montant de ressort vertical que +\TeX\ ins\`ere apr\`es un affichage quand l'affichage d\'ebute +\`a droite d'o\`u la ligne pr\'ec\'edente se termine, c'est-\`a-dire, quand il ne recouvre +pas visuellement la ligne pr\'ec\'edente. +\PlainTeX\ met |\belowdisplay!-shortskip| \`a |7pt plus3pt minus4pt|. +Voir les \knuth{pages~188--189}{220--222} pour une explication plus d\'etaill\'ee de ce param\`etre. +\eix^^{affichages//param\`etres d'espacement pour} +\enddesc + + +%========================================================================== +\subsection {autres param\`etres d'espacement pour les math\'ematiques} + +\begindesc +\cts mathsurround {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie le montant d'espace que \TeX\ +ins\`ere avant et apr\`es une formule math\'ematique en mode texte (c'est-\`a-dire, une formule +entour\'ee de |$| simples). Voir la \knuth{page~162}{190} pour plus de d\'etails sur +son comportement. +\PlainTeX\ laisse |\mathsurround| \`a |0pt|. +\enddesc + +\begindesc +\cts nulldelimiterspace {\param{dimension}} +\explain +^^{d\'elimiteurs//nuls, espace pour} +Ce param\`etre sp\'ecifie la largeur de +l'espace produit par un \minref{d\'elimiteur} nul. +\PlainTeX\ met |\nulldelimiterspace| \`a |1.2pt|. +\enddesc + +\begindesc +\cts scriptspace {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie le montant d'espace que \TeX\ +ins\`ere avant et apr\`es un exposant ou un indice. +La commande |\nonscript| (\xref\nonscript) ^^|\nonscript| +apr\`es un exposant ou un indice annule cet espace. +\PlainTeX\ met |\script!-space| \`a |0.5pt|. +\enddesc + +%========================================================================== +\section {Cat\'egoriser des constructions math\'ematiques} + +\begindesc +\makecolumns 7/2: +\cts mathord {} +\cts mathop {} +\cts mathbin {} +\cts mathrel {} +\cts mathopen {} +\cts mathclose {} +\cts mathpunct {} +\explain +Ces commandes demandent \`a \TeX\ de traiter la construction qui suit comme appartenant +\`a une ^{classe} particuli\`ere (voir la \knuth{page~154}{179--180} pour la d\'efinition +des classes). Elles sont list\'ees ici dans l'ordre des num\'eros de classe, +de $0$ \`a $6$. +Leur effet primaire est d'ajuster l'espace\-ment autour de la construction +comme \'etant celui de la classe indiqu\'ee. + +\example +$\mathop{\rm minmax}\limits_{t \in A \cup B}\,t$ +% By treating minmax as a math operator, we can get TeX to +% put something underneath it. +| +\produces +$\mathop{\rm minmax}\limits_{t \in A \cup B}\,t$ +\endexample +\enddesc + +\begindesc +\cts mathinner {} +\explain +Cette command demande \`a \TeX\ de traiter la construction qui suit +comme un ``formule interne'', c'est-\`a-dire, une fraction, pour l'espacement. +Elle ressemble aux commandes de classe donn\'ees ci-dessus. +\enddesc + +%========================================================================== +\section {Actions sp\'eciales pour des formules math\'ematiques} + +\begindesc +\cts everymath {\param{liste de token}} +\cts everydisplay {\param{liste de token}} +\explain +^^{affichages//actions pour chaque affichage} +Ces param\`etres sp\'ecifient des listes de \minref{token} que \TeX\ ins\`ere +au d\'ebut de toute formule math\'ematique d'affichage ou de texte, respectivement. +Vous pouvez prendre des mesures sp\'eciales au d\'ebut de chaque formule math\'ematique +en assignant ces actions \`a |\everymath| ou \`a |\everydis!-play|. N'oubliez pas que +si vous voulez que les deux genres de formules soient affect\'es, vous devez mettre +les \emph{deux} param\`etres. +\example +\everydisplay={\heartsuit\quad} +\everymath = {\clubsuit} +$3$ is greater than $2$ for large values of $3$. +$$4>3$$ +| +\produces +\everydisplay={\heartsuit\quad} +\everymath = {\clubsuit} +$3$ is greater than $2$ for large values of $3$. +$$4>3$$ +\endexample +\enddesc + +\enddescriptions +\eix^^{math\'ematiques} +\endchapter +\byebye + diff --git a/info/impatient/fr/fmodes.tex b/info/impatient/fr/fmodes.tex index e380efc993..2dec7cdb3d 100644 --- a/info/impatient/fr/fmodes.tex +++ b/info/impatient/fr/fmodes.tex @@ -1,2077 +1,2082 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-\chapter {Commandes pour \linebreak les modes horizontaux \linebreak et verticaux}
-
-\chapterdef{hvmodes}
-
-Cette section couvre les commandes qui ont des formes correspondantes ou
-identiques dans les modes horizontaux et verticaux.
-Ces commandes fournissent des bo\^\i tes, des espaces, des filets, des r\'eglures
-et des alignements.
-Pour une explication des conventions utilis\'ees dans cette section,
-voir \headcit{Descriptions des commandes}{cmddesc}.
-
-\begindescriptions
-
-%==========================================================================
-\section {Produire des espaces}
-
-%==========================================================================
-
-\subsection {Espaces horizontaux de largeur fixe}
-
-\begindesc
-\bix^^{espace//production d'}
-\bix^^{espace horizontal}
-\cts thinspace {}
-\explain
-Cette commande produit un \minref{cr\'enage} positif
-dont la largeur \'equivaut \`a un sixi\`eme d'em
-(\xref{dimdefs})
-c'est-\`a-dire qu'il demande \`a \TeX\ de d\'eplacer sa position \`a droite de ce montant.
-C'est pratique
-quand vous avez par exemple des quotes imbriqu\'ees
-et que vous voulez les s\'eparer.
-\TeX\ ne coupe pas de ligne sur un
-|\thinspace|.\minrefs{line break}
-
-\example
-``\thinspace`A quote.'\thinspace''\par
-24,\thinspace 29--31,\thinspace 45,\thinspace 102
-|
-\produces
-``\thinspace`A quote.'\thinspace''\par
-24,\thinspace 29--31,\thinspace 45,\thinspace 102
-\endexample
-\enddesc
-
-\begindesc
-\cts negthinspace {}
-\explain
-Cette commande produit un \minref{cr\'enage} n\'egatif
-dont la largeur \'equivaut \`a un sixi\`eme d'em
-(\xref{dimdefs})
-c'est-\`a-dire qu'il demande \`a \TeX\ de d\'eplacer sa position \`a gauche de ce montant.
-C'est pratique pour rapprocher deux caract\`eres qui sont un peu trop
-\'eloign\'es l'un de l'autre.
-\TeX\ ne coupe pas de ligne sur un |\negthinspace|.\minrefs{line break}
-\example
-The horror, the horror\negthinspace, the horror of it all!!
-|
-\produces
-The horror, the horror\negthinspace, the horror of it all!
-\endexample
-\enddesc
-
-\begindesc
-\cts enspace {}
-\explain
-Cette commande produit un \minref{cr\'enage} dont la largeur \'equivaut \`a un ^{en}
-(la moiti\'e d'un em, voir \xrefpg{dimdefs}).
-\TeX\ ne coupe pas de ligne sur un |\enspace| \`a moins qu'il soit suivi d'un ressort.
-Dans une liste \`a puce, les puces sont g\'en\'eralement s\'epar\'ees du texte qui les suit
-par un |\enspace|.
-\example
-Lemma 1.\enspace There exists a white rabbit.
-|
-\produces
-Lemma 1.\enspace There exists a white rabbit.
-\endexample
-% the enspace here follows the \proclaim convention (Knuth p. 355).
-\enddesc
-
-\begindesc
-\easy\cts enskip {}
-\cts quad {}
-\cts qquad {}
-\explain
-^^{en}
-Chacune de ces commandes
-produit un bout de \minref{ressort} horizontal
-qui ne peut ni s'\'etirer ni se r\'etr\'ecir.
-\TeX\ peut couper une ligne \minrefs{line break} sur un tel ressort.
-Les largeurs de ces ressort/dimension
-(qui sont relatifs \`a la police courante)
-sont les suivantes pour |cmr10|, la police par d\'efaut de \plainTeX~:
-\medskip
-\def\distance#1{\hbox{\strut $\rightarrow$\vrule\hskip #1\vrule$\leftarrow$}}
-{\def\l#1{\hfil$#1$\thinspace em}
-\tabskip 3pc \halign{#&#&\hfil#\hfil\cr
-{\it Commande}&{\it Espace}&{\it Illustration}\cr
-\noalign{\vskip 4pt}
-|\enskip|&\l{\frac 1/2}&\distance{.5em}\cr
-|\quad|&\l1&\distance{1em}\cr
-|\qquad|&\l2&\distance{2em}\cr
-}}
-\example
-en\enskip skip; quad\quad skip; qquad\qquad skip
-|
-\produces
-en\enskip skip; quad\quad skip; qquad\qquad skip
-\endexample
-\eix^^{espace horizontal}
-\enddesc
-
-%==========================================================================
-\subsection {Espaces verticaux de largeur fixe}
-
-\begindesc
-\bix^^{espace vertical}
-\easy\cts smallskip {}
-\cts medskip {}
-\cts bigskip {}
-\explain
-Ces commandes produisent des montants d'espacement vertical
-successivement plus larges~:
-\display{{\def\bar{\kern 2pt\hrule width 5pc}
-\def\lbl#1{\hbox to 5pc{\hfil #1skip\hfil}}
-\leavevmode
-\vtop{\lbl{small}\bar\smallskip\bar}\quad
-\vtop{\lbl{med}\bar\medskip\bar}\quad\vtop{\lbl{big}\bar\bigskip\bar}}}
-\noindent
-|\smallskip| saute de $3$ points et peut s'\'etirer ou
-s'\'elargir de $1$ point. |\med!-skip| est \'equivalent \`a deux |\smallskip|s
-et |\bigskip| est \'equivalent \`a deux |\medskip|s.
-
-Ces commandes terminent un paragraphe car elles sont fondamentalement verticales.
-Les sauts qu'elles produisent
-sont ajout\'es au saut inter-para\-graphe normal.
-\example
-Hop \smallskip skip \medskip and \bigskip jump.
-|
-\produces
-Hop \smallskip skip \medskip and \bigskip jump.
-\endexample
-\enddesc
-
-\begindesc
-\cts smallskipamount {\param{ressort}}
-\cts medskipamount {\param{ressort}}
-\cts bigskipamount {\param{ressort}}
-\explain
-Ces param\`etres sp\'ecifient les montants de ressort produit par
-les commandes |\small!-skip|, |\med!-skip| et |\big!-skip|.
-En changeant ces param\`e\-tres vous changez l'effet des commandes.
-Les valeurs par d\'efaut (pour \plainTeX)
-correspondent \`a un quart d'une ligne d'espace, \`a la moiti\'e d'une ligne d'espace,
-et \`a une ligne d'espace enti\`ere.
-Nous vous recommandons de maintenir ce ratio en changeant
-ces valeurs \`a chaque fois que
-vous changez |\baselineskip| (\xref\baselineskip).
-^^|\baselineskip//et {\tt\\smallskipamount}, etc.|
-\eix^^{espace vertical}
-
-\enddesc
-
-%==========================================================================
-\subsection {Espace de taille variable}
-
-\begindesc
-\easy\cts hskip {\<dimension$_1$> {\bt plus} \<dimension$_2$> {\bt minus} \<dimension$_3$>}
-\cts vskip {\<dimension$_1$> {\bt plus} \<dimension$_2$> {\bt minus} \<dimension$_3$>}
-^^{saut vertical}^^{ressort vertical}
-^^{saut horizontal}^^{ressort horizontal}
-\bix^^{espace horizontal}
-\bix^^{espace vertical}
-\explain
-Ces commandes produisent des ressorts respectivement horizontaux et verticaux.
-Dans le cas le plus simple et le plus courant, quand il n'y a seulement que \<dimension$_1$>,
-|\hskip| saute vers la droite de \<dimension$_1$>
-et |\vskip| saute vers le bas de la page de \<dimension$_1$>.
-Plus g\'en\'erale\-ment, ces commandes
-produisent des \minref{ressort}s dont la taille naturelle est
-\<dimension$_1$>, l'\'etirement \<dimension$_2$> et le r\'etr\'ecissement \<dimension$_3$>.
-Le |plus| \<dimension$_2$>, le |minus |\<dimension$_3$>,
-ou les deux peuvent \^etre omis.
-Si les deux sont pr\'esent, le |plus| doit \^etre avant le |minus|.
-Une valeur omise
-est consid\'er\'ee \`a z\'ero. Toutes les \<dimension>s peuvent \^etre n\'egatives.
-
-Vous pouvez utiliser |\hskip| en mode math\'ematique, mais vous ne pouvez utiliser d'unit\'es |mu|
-\seeconcept{unit\'e math\'ematique}
-pour aucune des dimensions. Si vous voulez des unit\'es |mu|, utilisez |\mskip|
-(\xref\mskip) \`a la place.
-
-\example
-\hbox to 2in{one\hskip 0pt plus .5in two}
-|
-\produces
-\hbox to 2in{one\hskip 0pt plus 2in two}
-
-\doruler{\8\8}2{in}
-\nextexample
-\hbox to 2in{Help me!! I can't fit
-{\hskip 0pt minus 2in} inside this box!!}
-|
-\produces
-\hbox to 2in{Help me! I can't fit
-{\hskip 0pt minus 2in} inside this box!}
-
-\doruler{\8\8}2{in}
-\nextexample
-\vbox to 4pc{\offinterlineskip% Just show effects of \vskip.
- \hbox{one}\vskip 0pc plus 1pc \hbox{two}
- \vskip .5pc \hbox{three}}
-|
-\produces
-\smallskip
-\vbox to 4pc{\offinterlineskip% Just show effects of \vskip.
- \hbox{one}\vskip 0pc plus 1pc \hbox{two}
- \vskip .5pc \hbox{three}}
-\endexample
-\enddesc
-
-\begindesc
-\cts hglue {\<ressort>}
-\cts vglue {\<ressort>}
-^^{ressort vertical}
-^^{ressort horizontal}
-\explain
-La commande |\hglue| produit un \minref{ressort} horizontal qui ne dispara\^\i t pas sur
-une coupure de ligne. La commande |\vglue|
-produit un \minref{ressort} vertical qui ne dispara\^\i t pas sur une coupure de page.
-Pour le reste ces commandes sont comme |\hskip| et |\vskip|.
-Vous pouvez utiliser |\vglue| pour produire de l'espace blanc en haut d'une page,
-par exemple, au dessus d'un titre sur la premi\`ere page d'un document, mais
-^|\topglue| (suivant) est normalement plus appropri\'e pour cet usage.
-\enddesc
-
-\begindesc
-\cts topglue {\<ressort>}
-\explain
-\margin{Command added; recent addition to \TeX}
-Cette commande\footnote{|\topglue| a \'et\'e ajout\'e \`a \TeX\ dans la version 3.0,
-apr\`es les autres am\'enagements introduitis par le ^{\newTeX}
-(\xref{newtex}). C'est la premi\`ere d\'ecrite dans la \emph{dix-huiti\`eme\/}
-\'edition de \texbook.} fait que l'espace entre le haut de la page et le
-haut de la premi\`ere bo\^\i te de la page soit pr\'ecis\'ement \'egal \`a \<glue>.
-Le haut de la page est consid\'er\'e \^etre sur la ligne de base d'une
-ligne imaginaire de texte juste au-dessus de la ligne du haut de la page.
-Plus pr\'ecis\'ement, c'est une distance |\topskip| au dessus de l'origine donn\'ee par
-|\hoffset| et |\voffset|.
-
-Cette commande est pratique parce que \TeX\ ajuste le ressort normalement
-produit par |\topskip| d'une mani\`ere complexe. En utilisant |\top!-glue| vous pouvez
-contr\^oler la position de la premi\`ere bo\^\i te de la page sans vous inqui\'eter de
-ces ajustements.
-
-\enddesc
-
-\begindesc
-\cts kern {\<dimension>}
-\explain
-L'effet de cette commande d\'epend du mode dans lequel est \TeX\ quand
-il la rencontre~:
-\ulist
-
-\li En mode horizontal, \TeX\ d\'eplace sa position vers la droite (pour un cr\'enage positif)
-ou vers la gauche (pour un cr\'enage n\'egatif).
-
-\li En mode vertical, \TeX\ d\'eplace sa position vers le bas de la page (pour un cr\'enage positif)
-ou vers le haut de la page (pour un cr\'enage n\'egatif).
-
-\endulist
-\noindent
-Ainsi un cr\'enage positif produit un espace vide tandis qu'un cr\'enage n\'egatif
-fait que \TeX\ recule sur quelque chose qu'il a d\'ej\`a produit.
-Cette notion de cr\'enage ^^{cr\'enages}
-est diff\'erente de la notion de cr\'enage dans certains syst\`emes de composition
-typographique informatis\'es---dans \TeX, des cr\'e\-nages positifs \emph{\'ecartent}
-deux lettres au lieu de les rapprocher.
-
-Un cr\'enage est similaire \`a un
-\minref{ressort}, sauf que (a)~un cr\'enage ne peut ni s'\'etirer ni se r\'etr\'ecir,
-et (b)~\TeX\ ne coupera une ligne ou une page sur un cr\'enage que si le cr\'enage
-est suivi par un ressort et ne fait pas partie d'une formule math\'ematique.
-Si \TeX\ trouve un cr\'enage \`a la fin
-d'une ligne ou d'une page, il \'elimine le cr\'enage.
-Si vous voulez obtenir l'effet d'un cr\'enage qui ne dispara\^\i t jamais,
-utilisez ^|\hglue| ou ^|\vglue|.
-
-Vous pouvez utiliser |\kern| en mode math\'ematique, mais vous ne pouvez pas utiliser d'unit\'es |mu|
-\seeconcept{unit\'e math\'ematique}
-pour \<dimension>. Si vous voulez des unit\'es |mu|, utilisez |\mkern|
-(\xref\mkern) \`a la place.
-^^{coupures de ligne//cr\'enages sur des}
-^^{coupures de page//cr\'enages sur des}
-
-\example
-\centerline{$\Downarrow$}\kern 3pt % a vertical kern
-\centerline{$\Longrightarrow$\kern 6pt % a horizontal kern
- {\bf Heed my warning!!}\kern 6pt % another horizontal kern
- $\Longleftarrow$}
-\kern 3pt % another vertical kern
-\centerline{$\Uparrow$}
-|
-\produces
-\centerline{$\Downarrow$}\kern 3pt % a vertical kern
-\centerline{$\Longrightarrow$\kern 6pt % a horizontal kern
- {\bf Heed my warning!}\kern 6pt % another horizontal kern
- $\Longleftarrow$}
-\kern 3pt % another vertical kern
-\centerline{$\Uparrow$}
-\endexample
-\enddesc
-
-\begindesc
-\makecolumns 4/2:
-\cts hfil {}
-\cts hfill {}
-\cts vfil {}
-\cts vfill {}
-\explain
-\bix^^{ressort//\'etirable infiniment}
-Ces commandes produisent des ressorts horizontaux et verticaux \'etirables
-infiniment qui
-\'ecrasent tout \'etirement fini qui peut \^etre pr\'esent.
-|\hfil| et |\hfill| produisent des ressorts horizontaux, tandis que
-|\vfil| et |\vfill| produisent des ressorts verticaux.
-
-|\hfill| est infiniment plus grand que |\hfil|.
-Si |\hfill| et |\hfil| apparaissent dans la m\^eme \minref{bo\^\i te},
-le |\hfill| consumera toute la place suppl\'ementaire possible
-et le |\hfil| sera effectivement ignor\'e.
-|\hfill| peut \`a son tour est \'ecras\'e par |\hskip 0pt plus 1filll|.
-Les ressorts produits par
-|\hfil| et |\hfill| ne r\'etr\'ecissent jamais.
-
-Le comportement de |\vfil| et |\vfill| est analogue.
-
-\example
-\hbox to 2in{Left\hfil Middle \hfil Right}
-|
-\produces
-\hbox to 2in{Left\hfil Middle \hfil Right}
-
-\doruler{\8\8}2{in}
-\nextexample
-\hbox to 2in{Left\hfil Middle \hfill Right}
-|
-\produces
-\hbox to 2in{Left\hfil Middle \hfill Right}
-
-\doruler{\8\8}2{in}
-\nextexample
-\leftline{%
-\vbox to 4pc{%
- \hbox{Top}\vfil\hbox{Middle}\vfil \hbox{Bottom}}\quad
-\vbox to 4pc{%
- \hbox{Top}\vfil\hbox{Middle}\vfill\hbox{Bottom}}}
-|
-\produces
-\smallskip
-\leftline{%
-\vbox to 4pc{%
- \hbox{Top}\vfil\hbox{Middle}\vfil \hbox{Bottom}}\quad
-\vbox to 4pc{%
- \hbox{Top}\vfil\hbox{Middle}\vfill\hbox{Bottom}}}
-\endexample
-
-\eix^^{ressort//\'etirable infiniment}
-\enddesc
-
-\begindesc
-\cts hss {}
-\cts vss {}
-\explain
-Ces commandes produisent des ressorts horizontaux et
-verticaux qui sont infiniment \'etirables et
-r\'etr\'ecissables. Le ressort peut se r\'etr\'ecir
-sur une distance n\'egative, produisant l'effet de reculer sur une ligne
-(pour |\hss|) ou remonter sur une page (pour |\vss|).
-
-\example
-\line{text\hfil\hbox to 0pt{margin\hss}}
-% `margin\hss' shrinks to the zero width of the hbox.
-|
-\produces
-\line{text\hfil\hbox to 0pt{margin\hss}}
-\nextexample
-\vbox to 1pc{\hrule width 6pc % Top of box.
- \hbox{1} \vskip 1pc\hbox to 2pc{\hfil 2}
- % The \vss absorbs the extra distance produced by \vskip.
- \vss \hbox to 3pc{\hfil 3}
- \hrule width 6pc}% Bottom of box.
-|
-\produces
-\medskip
-\vbox to 1pc{\hrule width 6pc % top of box
- \hbox{1} \vskip 1pc\hbox to 2pc{\hfil 2}
- \vss \hbox to 3pc{\hfil 3}
- \hrule width 6pc}% bottom of box
-\vskip 2.5pc
-\endexample
-\enddesc
-
-\begindesc
-\cts hfilneg {}
-\cts vfilneg {}
-\explain
-^^{ressort//n\'egatif}
-Ces commandes effacent l'effet d'un |\hfil| ou d'un |\vfil|
-pr\'ec\'edent. Tandis que |\hfil| et |\vfil| produisent un
-\minref{ressort} positif infiniment \'etirable, |\hfilneg| et |\vfilneg|
-produisent un ressort n\'egatif infiniment \'etirable.
-(ainsi, $n$ |\hfilneg| effacent $n$ ^|\hfil| et pareillement
-pour le |\vfilneg|.)
-L'utilisation principale de |\hfilneg| et de |\vfilneg| est de contrecarrer
-l'effet d'un |\hfil| ou d'un |\vfil| ins\'er\'e par une \minref{macro}.
-
-|\hfilneg| et |\vfilneg| ont
-la propri\'et\'e curieuse, s'ils sont les seuls ressorts infiniment \'etirables
-d'une bo\^\i te, de produire exactement le m\^eme effet que |\hfil|
-et |\vfil|.
-
-\example
-\leftline{\hfil on the right\hfilneg}
-% Cancel the \hfil that \leftline produces to the right
-% of its argument.
-|
-\produces
-\leftline{\hfil on the right \hfilneg}
-% Cancel the \hfil that \leftline produces to the right
-% of its argument.
-%
-\nextexample
-\def\a{\hbox to 1pc{\hfil 2}\vfil}
-\vbox to 4pc{\hbox{1} \vfil \a
- \vfilneg \hbox to 2pc{\hfil 3}}
-|
-\produces
-\smallskip
-\def\a{\hbox to 1pc{\hfil 2}\vfil}
-\vbox to 4pc{\hbox{1} \vfil \a
- \vfilneg \hbox to 2pc{\hfil 3}}
-\endexample\enddesc
-
-{\emergencystretch=2em
-\see |\hbadness| et |\vbadness| (\xref \vbadness),
-|\hfuzz| et |\vfuzz| (\xref \vfuzz),
-\conceptcit{filets}.\par}
-\eix^^{espace//production d'}
-\eix^^{espace horizontal}
-\eix^^{espace vertical}
-
-%==========================================================================
-\section {Manipuler des bo\^\i tes}
-
-%==========================================================================
-\subsection {Construire des hbox et des vbox}
-
-\begindesc
-\bix^^{commandes de \boites}
-^^{hbox//construction avec \b\tt\\hbox\e}
-%
-\cts hbox {\rqbraces{\<mat\'eriel en mode horizontal>}}
-\aux\cts hbox {{\bt to} \<dimension> \rqbraces{\<mat\'eriel en mode horizontal>}}
-\aux\cts hbox {{\bt spread} \<dimension> \rqbraces{\<mat\'eriel en mode horizontal>}}
-\explain
-Ces commandes produisent une hbox
-(\minref{bo\^\i te} horizontale) contenant du \<mat\'eriel en mode horizontal>.
-Les accolades autour du \<mat\'eriel en mode horizontal> d\'efinissent un groupe.
-\TeX\ ne coupe pas le \<mat\'eriel en mode horizontal> en plusieurs lignes,
-puisqu'il est en mode horizontal restreint quand il assemble la bo\^\i te.
-\TeX\ ne change pas la taille de la bo\^\i te une fois qu'elle est produite.
-
-|\hbox| est souvent utile quand vous voulez conserver du texte sur une seule ligne.
-Si votre utilisation de |\hbox| emp\^eche \TeX\ de couper des lignes de mani\`ere acceptable,
-\TeX\ se plaindra d'un ``overfull hbox''.
-
-La largeur du hbox d\'epend des arguments de |\hbox|~:
-\ulist\compact
-\li Si vous ne sp\'ecifiez que du \<mat\'eriel en mode horizontal>,
-le hbox aura sa \minref{largeur} naturelle.
-\li Si vous sp\'ecifiez |to| \<dimension>, la largeur du hbox sera \<dimension>.
-\li Si vous sp\'ecifiez |spread| \<dimension>, la largeur du hbox sera
-sa largeur naturelle plus \<dimension>, c'est-\`a-dire, le hbox s'allongera de
-\<dimension>.
-\endulist
-
-La commande ^|\hfil| (\xref\hfil) est utile pour remplir un
-hbox d'espace vide quand le mat\'eriel dans la bo\^\i te n'est pas aussi large que la
-largeur de la bo\^\i te.
-\example
-\hbox{ugly suburban sprawl}
-\hbox to 2in{ugly \hfil suburban \hfil sprawl}
-\hbox spread 1in {ugly \hfil suburban \hfil sprawl}
-% Without \hfil in the two preceding lines,
-% you'd get `underfull hbox'es.
-|
-\produces
-\hbox{ugly suburban sprawl}
-\hbox to 2in{ugly \hfil suburban \hfil sprawl}
-\hbox spread 1in {ugly \hfil suburban \hfil sprawl}
-% Without \hfil in the two preceding lines,
-% you'd get `underfull hbox'es.
-
-\doruler{\8\8\8}3{in}
-\endexample
-\enddesc
-
-\begindesc
-\cts vtop {\<mat\'eriel en mode vertical>}
-\aux\cts vtop {{\bt to} \<dimension> \rqbraces{\<mat\'eriel en mode vertical>}}
-\aux\cts vtop {{\bt spread} \<dimension> \rqbraces{\<mat\'eriel en mode vertical>}}
-\cts vbox {\rqbraces{\<mat\'eriel en mode vertical>}}
-\aux\cts vbox {{\bt to} \<dimension> \rqbraces{\<mat\'eriel en mode vertical>}}
-\aux\cts vbox {{\bt spread} \<dimension> \rqbraces{\<mat\'eriel en mode vertical>}}
-\explain
-^^{hbox//construction avec \b\tt\\hbox\e}
-Ces commandes
-produisent une \minref{vbox} (\minref{bo\^\i te} verticale)
-contenant du \<ma\-t\'eriel en mode vertical>.
-Les accolades autour du \<mat\'eriel en mode vertical> d\'efinissent un groupe.
-\TeX\ est en mode vertical interne quand il assemble la bo\^\i te.
-\TeX\ ne change pas la taille de la bo\^\i te une fois qu'elle est produite.
-
-La diff\'erence entre |\vtop| et |\vbox| est o\`u \TeX\ met
-le point de r\'ef\'erence de la vbox construite.
-Normalement, le point de r\'ef\'erence obtenu de |\vtop| tend \`a \^etre sur ou pr\`es
-du haut de la vbox construite,
-tandis que
-le point de r\'ef\'erence obtenu de |\vbox| tend \`a \^etre sur ou pr\`es
-du bas de la vbox construite.
-Ainsi une rang\'ee de vbox toutes construites avec |\vtop|
-tendra \`a avoir leurs hauts \`a peu pr\`es align\'es,
-tandis qu'une rang\'e de vbox toutes construites avec |\vbox|
-tendra \`a avoir leurs bas \`a peu pr\`es align\'es.
-
-|\vtop| et |\vbox| sont souvent pratiques
-quand vous voulez garder du texte ensemble sur une seule page.
-(Pour cela, peu importe normalement quelle commande vous utilisez.)
-Si votre usage de ces commandes
-emp\^eche \TeX\ de couper des pages d'une mani\`ere acceptable,
-\TeX\ se plaindra qu'il a trouv\'e un ``overfull'' ou un ``underfull vbox while
-|\output| is active''.
-
-La hauteur d'une vbox d\'epend des
-arguments de |\vtop| ou |\vbox|.
-Pour |\vbox|, \TeX\ d\'etermine la hauteur de la mani\`ere suivante~:
-\ulist\compact
-\li Si vous ne sp\'ecifiez que du \<mat\'eriel en mode vertical>,
-la vbox aura sa hauteur naturelle.
-\li Si vous sp\'ecifiez |to| \<dimension>,
-la hauteur de la vbox sera fix\'ee \`a \<dimension>.
-\li Si vous sp\'ecifiez |spread| \<dimension>, la hauteur de la vbox sera
-sa hauteur naturelle plus \<dimension>, c'est-\`a-dire,
-que la hauteur de la vbox sera \'etir\'ee verticalement de \<dimension>.
-\endulist
-\noindent
-Pour |\vtop|,
-\TeX\ construit la bo\^\i te en utilisant ses r\`egles pour |\vbox| et ensuite
-r\'epartit l'extension verticale entre la hauteur et la profondeur comme
-d\'ecrit ci-dessous.
-
-Normalement, la largeur d'une vbox construite est la largeur de l'\'el\'e\-ment le plus
-large contenu\footnote
-{Plus pr\'ecis\'ement, c'est la distance du point de r\'ef\'erence au cot\'e le plus \`a
-droite de la vbox construite. Par cons\'equent,
-si vous d\'eplacez un des \'el\'ements vers la droite en utilisant ^|\moveright| ou
-^|\moveleft| (avec une distance n\'egative),
-la vbox construite pourra \^etre plus large.}.
-Les r\`egles de r\'epartitions de l'extension verticale entre la
-hauteur et la profondeur sont plus compliqu\'ees~:
-\ulist
-\li Pour |\vtop|,
-la hauteur est la hauteur de son premier \'el\'ement, si cet \'el\'ement est une bo\^\i te ou un filet.
-Autrement la hauteur est \`a z\'ero. La profondeur est toute extension verticale
-restante quand la hauteur a \'et\'e enlev\'ee.
-\li Pour |\vbox|,
-la profondeur est la profondeur de son dernier \'el\'ement, si cet \'el\'ement est une bo\^\i te ou un filet.
-Autrement la profondeur est \`a z\'ero. La hauteur est toute extension verticale
-restante quand la profondeur a \'et\'e enlev\'ee%
-\footnote{En fait, il y a une complication suppl\'ementaire.
-Supposez qu'apr\`es que la profondeur ait \'et\'e d\'etermin\'ee
-en utilisant les deux r\`egles pr\'ec\'edentes, la profondeur devienne plus grande que
-^|\boxmaxdepth|.
-Alors la profondeur est r\'eduite \`a |\boxmaxdepth| et la hauteur est ajust\'ee
-en cons\'equence.}.
-\endulist
-
-La commande |\vfil| (\xref\vfil) est pratique pour remplir une vbox
-^^|\vfil//remplir une vbox|
-avec de l'espace vide quand le mat\'eriel dans la bo\^\i te n'est pas aussi grand que
-l'extention verticale de la bo\^\i te.
-\example
-\hbox{\hsize = 10pc \raggedright\parindent = 1em
-\vtop{In this example, we see how to use vboxes to
-produce the effect of double columns. Each vbox
-contains two paragraphs, typeset according to \TeX's
-usual rules except that it's ragged right.\par
-This isn't really the best way to get true double
-columns because the columns}
-\hskip 2pc
-\vtop{\noindent
-aren't balanced and we haven't done anything to choose
-the column break automatically or even to fix up the
-last line of the first column.\par
-However, the technique of putting running text into a
-vbox is very useful for placing that text where you
-want it on the page.}}
-|
-\produces
-\hbox{\hsize = 10pc \raggedright\parindent = 1em
-\vtop{In this example, we see how to use vboxes to
-produce the effect of double columns. Each vbox
-contains two paragraphs, typeset according to \TeX's
-usual rules except that it's ragged right.\par
-This isn't really the best way to get true double
-columns because the columns}
-\hskip 2pc
-\vtop{\noindent
-aren't balanced and we haven't done anything to choose
-the column break automatically or even to fix up the
-last line of the first column.\par
-However, the technique of putting running text into a
-vbox is very useful for placing that text where you
-want it on the page.}}
-\nextexample
-\hbox{\hsize = 1in \raggedright\parindent = 0pt
-\vtop to .75in{\hrule This box is .75in deep. \vfil\hrule}
-\qquad
-\vtop{\hrule This box is at its natural depth. \vfil\hrule}
-\qquad
-\vtop spread .2in{\hrule This box is .2in deeper than
- its natural depth.\vfil\hrule}}
-|
-\produces
-\hbox{\hsize = 1in \raggedright\parindent=0pt
-\vtop to .75in{\hrule This box is .75in deep. \vfil\hrule}
-\qquad
-\vtop{\hrule This box is at its natural depth. \vfil\hrule}
-\qquad
-\vtop spread .2in{\hrule This box is .2in deeper than
- its natural depth.\vfil\hrule}}
-\nextexample
-% See how \vbox lines up boxes at their bottoms
-% instead of at their tops.
-\hbox{\hsize = 1in \raggedright
-\vbox to .5in{\hrule This box is .5in deep.\vfil\hrule}
-\qquad
-\vbox to .75in{\hrule This box is .75in deep.\vfil\hrule}}
-|
-\produces
-\hbox{\hsize = 1in \raggedright
-\vbox to .5in{\hrule This box is .5in deep.\vfil\hrule}
-\qquad
-\vbox to .75in{\hrule This box is .75in deep.\vfil\hrule}}
-\vskip 16pt % to avoid running into the next command description
-\endexample
-\enddesc
-
-\begindesc
-\margin{Two commands interchanged here.}
-\cts boxmaxdepth {\param{dimension}}
-\explain
-Ce param\`etre contient une dimension $D$.
-\TeX\ ne construira pas une bo\^\i te dont la profondeur d\'epassera $D$.
-Si vous produisez une bo\^\i te dont la profondeur $d$ doit d\'epasser $D$,
-\TeX\ transf\`erera la
-profondeur exc\'edentaire dans la hauteur de la bo\^\i te, en abaissant en r\'ealit\'e le
-\minref{point de r\'ef\'erence} de la bo\^\i te de $d-D$.
-Si vous mettez |\boxmaxdepth| \`a z\'ero, \TeX\ alignera une rang\'ee de vbox
-de telle mani\`ere que leurs fronti\`eres du bas seront toutes sur la m\^eme ligne horizontale.
-\PlainTeX\ met |\boxmaxdepth| \`a |\maxdimen| \ctsref{\maxdimen},
-donc |\boxmaxdepth| n'affectera pas vos bo\^\i tes \`a moins que vous le changiez.
-\enddesc
-
-\begindesc
-\cts underbar {\<argument>}
-\explain
-Cette commande met \<argument> dans une \minref{hbox}
-et la souligne sans faire attention \`a tout ce que d\'epasse sous la
-\minref{ligne de base} de la bo\^\i te.
-\example
-\underbar{Why not learn \TeX?}
-|
-\produces
-\underbar{Why not learn \TeX?}
-\endexample
-\enddesc
-
-\begindesc
-\cts everyhbox {\param{liste de token}}
-\cts everyvbox {\param{liste de token}}
-\explain
-Ces param\`etres contiennent des liste de token que \TeX\ d\'eveloppe au d\'ebut de
-toutes \minref{hbox} ou \minref{vbox} qu'il construit.
-Tout \'el\'ement r\'esultant de l'expansion devient alors
-le d\'ebut de la liste d'\'el\'ements pour la bo\^\i te.
-Par d\'efaut, ces listes de token sont vides.
-\enddesc
-
-%==========================================================================
-\subsection {Remplir et r\'ecuperer le contenu de bo\^\i tes}
-
-\begindesc
-\bix^^{registres de \boite}
-%
-\cts setbox {\<registre>\thinspace{\bt =}\thinspace\<bo\^\i te>}
-\cts box {\<registre>}
-\explain
-^^{assignements//de \boites}
-Ces commandes remplissent et r\'ecup\`erent respectivement le contenu
-du registre de bo\^\i te
-dont le num\'ero est \<registre>.
-Notez que vous remplissez un registre de bo\^\i te d'une mani\`ere un peu diff\'erente de celle
-utilis\'ee pour les autres types de registres~: vous utilisez
-|\setbox|$\,n$~|=| plut\^ot que |\box|$\,n$~|=|.
-
-\emph{R\'ecup\'erer le contenu d'un registre de bo\^\i te
-avec ces commandes a l'effet secondaire d'enlever ce qu'il contient,
-donc le registre de bo\^\i te devient vide.} Si vous ne voulez pas que cela arrive,
-vous pouvez utiliser |\copy| (voir ci-dessous) pour r\'ecup\'erer le contenu.
-Vous devez utiliser |\box| de pr\'ef\'erence \`a |\copy|
-quand vous n'avez plus besoin du contenu d'un registre de bo\^\i te apr\`es l'avoir utilis\'e,
-de mani\`ere \`a ne pas augmenter la m\'emoire de \TeX\ en la remplissant avec des bo\^\i tes obsol\`etes.
-\example
-\setbox0 = \hbox{mushroom}
-\setbox1 = \vbox{\copy0\box0\box0}
-\box1
-|
-\produces
-\setbox0 = \hbox{mushroom}
-\setbox1 = \vbox{\copy0\box0\box0}
-\box1
-\endexample
-\enddesc
-
-\begindesc
-\cts copy {\<registre>}
-\explain
-^^{\boites//copie}\minrefs{box}
-Cette commande
-produit une copie d'un registre de bo\^\i te \<registre>.
-Cette commande est utile quand vous voulez r\'ecup\'erer le contenu d'un registre
-de bo\^\i te mais ne voulez pas en d\'etruire le contenu.
-(R\'ecup\'erer le contenu d'un registre avec ^|\box| rend le registre vide.)
-\example
-\setbox0 = \hbox{good }
-Have a \copy0 \box0 \box0 day!!
-|
-\produces
-\setbox0 = \hbox{good }
-Have a \copy0 \box0 \box0 day!
-\endexample
-\enddesc
-
-\begindesc
-\cts unhbox {\<registre>}
-\cts unvbox {\<registre>}
-^^{\boites//extraction de contenu de}
-\explain
-Ces commandes produisent la liste contenue dans un registre de bo\^\i te \<registre> et rend
-ce registre de bo\^\i te vide.
-|\unhbox| s'applique aux registres de bo\^\i te contenant
-des hbox et |\unvbox| s'applique aux registres de bo\^\i te contenant des vbox.
-Vous devez utiliser ces commandes en pr\'ef\'erence \`a |\unhcopy| et |\unvcopy|
-(voir ci-dessous)
-quand vous n'avez pas besoin de ce qu'il y a dans le registre de bo\^\i te apr\`es l'avoir utilis\'e,
-de mani\`ere \`a ne pas augmenter la m\'emoire de \TeX\ en la remplissant avec des bo\^\i tes obsol\`etes.
-\example
-\setbox0=\hbox{The Mock Turtle sighed deeply, and
-drew the back of one flapper across his eyes. }
-\setbox1=\hbox{He tried to speak, but sobs choked
- his voice. }
-\unhbox0 \unhbox1
-% \box0 \box1 would set two hboxes side by side
-% (and produce a badly overfull line).
-\box1 % produces nothing
-|
-\produces
-\setbox0=\hbox{The Mock Turtle sighed deeply, and
-drew the back of one flapper across his eyes. }
-\setbox1=\hbox{He tried to speak, but sobs choked
- his voice. }
-\unhbox0 \unhbox1
-% \hbox0 \hbox1 would set two hboxes side by side
-% (and produce a badly overfull line).
-\box1 % Produces nothing.
-\endexample
-\enddesc
-
-\begindesc
-\cts unhcopy {\<registre>}
-\cts unvcopy {\<registre>}
-^^{\boites//extraction du contenu de}
-^^{\boites//copie}\minrefs{box}
-\explain
-Ces commandes produisent la liste contenue dans un registre de bo\^\i te \<registre> et
-sans d\'eranger le contenu des registres.
-|\unhbox| s'applique aux registres de bo\^\i te contenant
-des hbox et |\unvbox| s'applique aux registres de bo\^\i te contenant des vbox.
-\example
-\setbox0=\hbox{The Mock Turtle sighed deeply, and
-drew the back of one flapper across his eyes. }
-\setbox1=\hbox{He tried to speak, but sobs choked his
- voice. }
-\unhcopy0 \unhcopy1\par\noindent
-% \box0 \box1 would set two hboxes side by side
-% (and produce a badly overfull line).
-\box1 % Produces an hbox (which can't be broken).
-|
-\produces
-\setbox0=\hbox{The Mock Turtle sighed deeply, and
-drew the back of one flapper across his eyes. }
-\setbox1=\hbox{He tried to speak, but sobs choked his
- voice. }
-\unhcopy0 \unhcopy1\par\noindent
-% \hbox0 \hbox1 would set two hboxes side by side
-% (and produce a badly overfull line).
-\box1 % produces an hbox (which can't be broken)
-\endexample
-\enddesc
-
-\see |\wd|, |\dp|, |\ht| (\xref\ht).
-\eix^^{registres de \boite}
-
-%==========================================================================
-\subsection {D\'eplacer des bo\^\i tes}
-
-\begindesc
-\cts moveleft {\<dimension> \<bo\^\i te>}
-\cts moveright {\<dimension> \<bo\^\i te>}
-\bix^^{\boites//d\'eplacement}
-\minrefs{box}
-\explain
-Ces commandes d\'eplacent \<bo\^\i te> \`a gauche ou \`a droite de \<dimension> (qui peut \^etre
-n\'egatif). Vous ne pouvez appliquer |\moveleft| et |\moveright| qu'\`a des bo\^\i tes
-qui sont dans une \minref{liste verticale}.
-\example
-\vbox{\vbox{Phoebe}\vbox{walked}%
-\moveleft 20pt\vbox{a}\moveright 20pt\vbox{crooked}%
-\vbox{mile.}}
-|
-\produces
-\hfuzz = \maxdimen
-\vbox{\vbox{Phoebe}\vbox{walked}%
-\moveleft 20pt\vbox{a}\moveright 20pt\vbox{crooked}%
-\vbox{mile.}}
-\endexample
-\enddesc
-
-\begindesc
-\cts lower {\<dimension> \<bo\^\i te>}
-\cts raise {\<dimension> \<bo\^\i te>}
-\explain
-Ces commandes d\'eplacent \<bo\^\i te> en haut ou en bas de \<dimension>
-(qui peut \^etre n\'egatif).
-Vous ne pouvez appliquer |\moveleft| et |\moveright| qu'\`a des bo\^\i tes
-qui sont dans une \minref{liste horizontale}.
-\example
-Are you feeling \lower 6pt \hbox{depressed} about the
- \raise 6pt \hbox{bump} on your nose?
-|
-\produces
-Are you feeling \lower 6pt \hbox{depressed} about the
- \raise 6pt \hbox{bump} on your nose?
-\endexample
-
-\eix^^{\boites//d\'eplacement}
-\enddesc
-
-%==========================================================================
-\subsection {Dimensions des registres de bo\^\i tes}
-
-\begindesc
-\bix^^{registres de \boite}
-\bix^^{dimensions//de registres de \boite}
-\cts ht {\<registre>\param{dimension}}
-\cts dp {\<registre>\param{dimension}}
-\cts wd {\<registre>\param{dimension}}
-\explain
-Ces param\`etres font r\'ef\'erence \`a la ^{hauteur}, la ^{profondeur} et la ^{largeur}
-respectivement du \minref{registre} de \minref{bo\^\i te} \<registre>.
-Vous pouvez les utiliser pour conna\^\i tre les dimensions d'une bo\^\i te.
-Vous pouvez aussi changer les dimensions d'une bo\^\i te, mais ce n'est pas une mince affaire~;
-si vous voulez \^etre aventureux vous pouvez
-apprendre tout sur cela dans les \
-{pages~388--389}{448--449}.
-\example
-\setbox0 = \vtop{\hbox{a}\hbox{beige}\hbox{bunny}}%
-The box has width \the\wd0, height \the\ht0,
-and depth \the\dp0.
-|
-\produces
-\setbox0 = \vtop{\hbox{a}\hbox{beige}\hbox{bunny}}%
-The box has width \the\wd0, height \the\ht0,
-and depth \the\dp0.
-\endexample
-\eix^^{registres de \boite}
-\eix^^{dimensions//de registres de \boite}
-\enddesc
-
-%==========================================================================
-\subsection {Struts, fantomes et bo\^\i tes vides}
-
-\begindesc
-\margin{This subsection is a merger of two previous subsections.
-The commands have also been reordered.}
-\bix^^{struts}
-\cts strut {}
-\explain
-Cette commande produit une bo\^\i te dont la largeur est \`a z\'ero
-et dont la hauteur (|8.5pt|) et la profondeur (|3.5pt|)
-sont celles d'une ligne de caract\`ere plus ou moins en |cmr10|,
-la police par d\'efaut de \plainTeX.
-Son utilisation principale est de forcer des lignes \`a avoir la m\^eme hauteur
-quand vous avez d\'ebranch\'e le ressort inter-ligne de \TeX\ avec
-|\offinter!-lineskip| ^^|\offinterlineskip| ou une commande similaire,
-par exemple, quand vous construisez un alignement.
-Si la hauteur naturelle d'une ligne est
-trop petite, vous pouvez la ramener au standard en incluant un |\strut|
-dans la ligne. Le strut forcera la hauteur et la profondeur de la ligne
-\`a \^etre plus grande, mais il n'imprime rien ni ne consomme aucun espace
-horizontal.
-
-Si vous mettez des caract\`eres d'une police qui est plus grande ou plus petite que |cmr10|,
-vous devez red\'efinir |\strut| pour ce contexte.
-\example
-\noindent % So we're in horizontal mode.
-\offinterlineskip % So we get the inherent spacing.
-% The periods in this vbox are not vertically equidistant.
-\vtop{\hbox{.}\hbox{.(}\hbox{.x}
- \hbox{.\vrule height 4pt depth 0pt}}\qquad
-% The periods in this vbox are vertically equidistant
-% because of the struts.
-\vtop{\hbox{.\strut}\hbox{.(\strut}\hbox{.x\strut}
- \hbox{.\vrule height 4pt depth 0pt\strut}}
-|
-\produces
-\noindent % So we're in horizontal mode.
-\offinterlineskip % So we get the inherent spacing.
-% The periods in this vbox are not vertically equidistant.
-\vtop{\hbox{.}\hbox{.(}\hbox{.x}
- \hbox{.\vrule height 4pt depth 0pt}}\qquad
-% The periods in this vbox are vertically equidistant
-% because of the struts.
-\vtop{\hbox{.\strut}\hbox{.(\strut}\hbox{.x\strut}
- \hbox{.\vrule height 4pt depth 0pt\strut}}
-\endexample
-\enddesc
-
-\begindesc
-\cts mathstrut {}
-\explain
-Cette commande produit une formule fant\^ome dont la largeur est \`a z\'ero
-et dont la largeur et la hauteur sont les m\^emes que celle d'une parenth\`ese gauche.
-|\mathstrut| est en fait d\'efini comme `|\vphantom(|'.
-Son utilisation principale est d'obtenir des radicaux, soulign\'es et surlign\'es align\'es
-avec d'autres radicaux, soulign\'es et surlign\'es d'une formule.
-C'est un peu comme ^|\strut| (\xref \strut),
-sauf qu'il s'ajuste lui-m\^eme aux diff\'erents \minref{style}s
-qui peuvent appara\^\i tre dans une formule math\'ematique.
-\example
-$$\displaylines{
-\overline{a_1a_2} \land \overline{b_1b_2}
-\quad{\rm versus}\quad \overline{a_1a_2\mathstrut}
- \land \overline{b_1b_2\mathstrut}\cr
-\sqrt{\epsilon} + \sqrt{\xi} \quad{\rm versus}\quad
-\sqrt{\epsilon\mathstrut} + \sqrt{\xi\mathstrut}\cr}$$
-|
-\dproduces
-\kern 4pt
-$$\displaylines{
-\overline{a_1a_2} \land \overline{b_1b_2}
-\quad{\rm versus}\quad \overline{a_1a_2\mathstrut}
- \land \overline{b_1b_2\mathstrut}\cr
-\sqrt{\epsilon} + \sqrt{\xi} \quad{\rm versus}\quad
-\sqrt{\epsilon\mathstrut} + \sqrt{\xi\mathstrut}\cr}$$
-\endexample
-\eix^^{struts}
-\enddesc
-
-\begindesc
-\cts phantom {\<argument>}
-\explain
-\bix^^{\boites//fant\^ome}
-\bix^^{fant\^omes}
-Cette commande produit une \minref{bo\^\i te} vide
-ayant la m\^eme taille et placement
-que \<argument> aurait s'il \'etait compos\'e.
-Une utilisation de |\phantom| est de r\'eserver de l'espace pour un symbole qui pour certaines
-raisons demande \`a \^etre dessin\'e \`a la main.
-\example
-$1\phantom{9}2$
-|
-\produces
-$1\phantom{9}2$
-\endexample
-\enddesc
-
-\begindesc
-\cts hphantom {\<argument>}
-\cts vphantom {\<argument>}
-\explain
-Ces commandes produisent des bo\^\i tes\minrefs{bo\^\i te}\ fant\^ome qui
-n'impriment rien~:
-\ulist\compact
-\li |\hphantom| produit une bo\^\i te avec la m\^eme largeur que \<argument>
-mais de hauteur et profondeur z\'ero.
-\li |\vphantom| produit une bo\^\i te avec les m\^emes hauteur et profondeur que \<argu\-ment>
-mais de largeur z\'ero.
-\endulist
-\noindent
-Leur usage principal est de forcer une sous-formule \`a avoir un dimension
-horizontale ou verticale minimum.
-\example
-$$\left[\vphantom{u\over v}t\right] \star
- \left[{u\over v}\right]\quad
- \{\hphantom{xx}\}$$
-|
-\dproduces
-\kern 4pt
-$$\left[\vphantom{u\over v}t\right] \star
- \left[{u\over v}\right]\quad
- \{\hphantom{xx}\}$$
-\endexample
-\enddesc
-
-\begindesc
-\cts smash {\<argument>}
-\explain
-Cette commande compose \<argument>,
-mais force la hauteur et la profondeur de sa \minref{bo\^\i te} contenante \`a z\'ero.
-Vous pouvez utiliser |\smash| et |\vphantom| en combinaison pour donner \`a une sous-formule
-toutes hauteurs et profondeurs que vous d\'esirez.
-\example
-$${\smash{r_m \brace r_n}\vphantom{r}} \Longrightarrow r$$
-|
-\dproduces
-\kern 4pt
-$${\smash{r_m \brace r_n}\vphantom{r}} \Longrightarrow r$$
-\endexample
-\eix^^{\boites//fant\^ome}
-\eix^^{fant\^omes}
-\enddesc
-
-\begindesc
-^^{\boites//vides}
-\cts null {}
-\explain
-Cette commande produit une \minref{hbox} vide.
-\example
-\setbox0 = \null
-The null box \null has width \the\wd0, height \the\ht0,
-and depth \the\dp0.
-|
-\produces
-\setbox0 = \null
-The null box \null has width \the\wd0, height \the\ht0,
-and depth \the\dp0.
-\endexample
-\enddesc
-
-
-%==========================================================================
-\subsection {Param\`etres faisant partie des bo\^\i tes mal form\'ees}
-
-\begindesc
-\bix^^{\boites//overfull}
-\bix^^{\boites//underfull}
-\cts overfullrule {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie la largeur du filet
-que \TeX\ positionne pour un ``overfull \minref{hbox}''.
-\PlainTeX\ le met \`a |5pt|.
-\enddesc
-
-\begindesc
-\cts hbadness {\param{nombre}}
-\cts vbadness {\param{nombre}}
-\explain
-Ces param\`etres sp\'ecifient les seuils de \minref{badness} horizontal
-et vertical pour rapporter des ``underfull'' ou ``overfull boxes''
-|\hbadness| s'applique aux hbox et |\vbadness| s'applique aux vbox.
-Si la m\'ediocrit\'e d'une bo\^\i te construite d\'epasse le seuil,
-\TeX\ reportera une erreur. Si vous augmentez les seuils
-(les valeurs par d\'efaut de \plainTeX\ sont de $1000$),
-\TeX\ sera moins amen\'e \`a se plaindre.
-Notez que les valeurs de |\hbadness| et |\vbadness| n'ont pas d'effet sur
-l'apparence de votre document compos\'e~; ils n'affectent que le message d'erreur
-que vous obtenez.
-Voir la \knuth{page~302}{353} pour une description pr\'ecise
-sur comment \TeX\ d\'ecide quand se plaindre d'``overfull'' ou d'``underfull
-box''.
-
-\margin{The material on tolerance was inappropriate here and has been
-removed. A new example replaces it.}
-\example
-\hbadness = 10000 % Suppress any hbadness complaints.
-\hbox to 2in{a b}\par
-\hbadness = 500 % Report hbadness exceeding 500.
-\hbox to 2in{a\hskip 0pt plus .5in b}
-|
-\logproduces
-Underfull \hbox (badness 5091) detected at line 4
-\tenrm a b
-
-\hbox(6.94444+0.0)x144.54, glue set 3.70787
-.\tenrm a
-.\glue 0.0 plus 36.135
-.\tenrm b
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts badness {}
-\explain
-Cette commande donne la valeur num\'erique de la m\'ediocrit\'e de la \minref{bo\^\i te}
-(aussi bien horizontale que verticale) que \TeX\ a le plus r\'ecemment produit.
-Si la bo\^\i te \'etait ``overfull'', |\badness| sera de $1000000$~; dans tous les autres cas
-il sera entre $0$ et $10000$.
-\enddesc
-
-\begindesc
-\cts hfuzz {\param{dimension}}
-\cts vfuzz {\param{dimension}}
-\explain
-Ces param\`etres sp\'ecifient les valeurs dont une
-\minref{bo\^\i te} peut d\'epasser sa taille naturelle avant que \TeX\ la consid\`ere comme
-\'etant overfull. ^^{\boites//overfull}
-|\hfuzz| s'applique aux hbox et |\vfuzz| s'applique aux vbox.
-\PlainTeX\ met ces deux param\`etres \`a |0.1pt|.
-\example
-\hfuzz = .5in
-\hbox to 2in{This box is longer than two inches.}
-% No error results
-|
-\produces
-\hfuzz = .5in
-\hbox to 2in{This box is longer than two inches.}
-% No error results
-\doruler{\8\8\8}3{in}
-\endexample
-
-\eix^^{\boites//overfull}
-\eix^^{\boites//underfull}
-\eix^^{commandes de \boites}
-\enddesc
-
-\see |\tolerance| \ctsref{\tolerance}.
-%==========================================================================
-\section {Retrouver le dernier \'el\'ement d'une liste}
-
-\begindesc
-^^{\boites//derni\`ere \boite\ dans une liste}
-^^{cr\'enages//dernier cr\'enage dans une liste}
-^^{p\'enalit\'es//derni\`ere p\'enalit\'e dans une liste}
-^^{ressort//dernier \'el\'ement de ressort dans une liste}
-\margin{This section has been moved in its entirety from the chapter
-(`Commands for general operations')}
-\cts lastkern {}
-\cts lastskip {}
-\cts lastpenalty {}
-\cts lastbox {}
-\explain
-Ces s\'equences de contr\^ole donnent la valeur du dernier \'el\'ement de la liste
-courante. Ce ne sont pas de vraies commandes parce qu'elles ne peuvent appara\^\i tre que
-comme partie d'un argument.
-Si le dernier \'el\'ement de la liste n'est pas du type indiqu\'e,
-elles donnent une valeur z\'ero (ou une bo\^\i te vide, dans le cas de |\lastbox|).
-Par exemple,
-si le dernier \'el\'ement de la liste courante est un \minref{cr\'enage},
-|\lastkern| donne la dimension de ce cr\'enage~; si ce
-n'est pas un cr\'enage, il donne une dimension de $0$.
-
-Utiliser |\lastbox| a l'effet suppl\'ementaire d'enlever la derni\`ere bo\^\i te de
-la liste.
-Si vous voulez que le |\last!-box| original reste dans la liste, vous
-devez en ajouter une copie dans la liste.
-|\last!-box| n'est pas permise dans une liste math\'ematique ou dans la liste
-verticale~principale.
-
-Ces s\'equences de contr\^ole sont
-plus utiles apr\`es des appels de macro qui peuvent avoir ins\'er\'e des entit\'es
-du genre indiqu\'e.
-
-\example
-\def\a{two\kern 15pt}
-one \a\a\hskip 2\lastkern three\par
-% Get three times as much space before `three'.
-\def\a{\hbox{two}}
-one \a
-\setbox0 = \lastbox % Removes `two'.
-three \box0.
-|
-\produces
-\def\a{two\kern 15pt}
-one \a\a\hskip 2\lastkern three\par
-% get three times as much space before `three'
-\def\a{\hbox{two}}
-one \a
-\setbox0 = \lastbox % removes `two'
-three \box0.
-\endexample
-\enddesc
-
-\begindesc
-\cts unkern {}
-\cts unskip {}
-\cts unpenalty {}
-\explain
-Si le dernier \'el\'ement de la liste courante est de type \minref{cr\'enage},
-\minref{ressort} ou \minref{p\'enalit\'e} respectivement, ces commandes l'enl\`event
-de cette liste. Si l'\'el\'ement n'est pas du bon type, ces commandes n'ont
-pas d'effet. Comme ^|\lastbox|, vous ne pouvez pas les appliquer \`a des listes en
-mode math\'ema\-tique ou \`a la liste verticale principale.
-Ces commandes
-sont plus pratiques apr\`es un appel de macro connu pour avoir ins\'er\'e
-un \'el\'ement sp\'ecifique que vous ne voulez pas ici.
-\TeX\ ne procure pas de commande ^|\unbox| parce que |\lastbox| produit
-\`a peu pr\`es le m\^eme effet.
-\enddesc
-
-
-%==========================================================================
-\section {filets et r\`eglures}
-
-\begindesc
-\bix^^{filets}
-\bix^^{filets horizontaux}
-\bix^^{filets verticaux}
-%
-\cts hrule {}
-\aux\cts hrule {\bt height \<dimension> width \<dimension> depth \<dimension>}
-\cts vrule {}
-\aux\cts vrule {{\bt width \<dimension> height \<dimension> depth \<dimension>}}
-\explain
-La commande |\hrule| produit un filet horizontal. La commande |\vrule|
-produit un filet vertical. Vous pouvez sp\'ecifier tout ou une partie des largeur,
-hauteur et profondeur du filet---\TeX\ apporte des valeurs par d\'efaut pour celles
-que vous omettez. Vous pouvez donner les dimensions du filet dans n'importe quel ordre~;
-les formes list\'ees ci-dessus vous montrent simplement deux combinaisons possibles. Vous
-pouvez m\^eme donner une dimension d'un type donn\'e plus d'une fois---si vous le faites,
-la derni\`ere sera celle qui sera prise en compte.
-
-Si vous ne sp\'ecifiez pas la largeur d'un filet horizontal, le filet est
-\'etendu horizontalement jusqu'aux limites de la \minref{bo\^\i te} ou de
-l'\minref{alignement} le plus interne qui contient le filet. Si vous ne sp\'ecifiez pas
-la hauteur d'un filet horizontal, elle sera par d\'efaut de |0.4pt|~; si vous ne
-sp\'ecifiez pas la profondeur d'un filet horizontal, elle sera par d\'efaut de |0pt|.
-
-Si vous ne sp\'ecifiez pas la largeur d'un filet vertical, elle sera par d\'efaut de
-|0.4pt|. Si vous ne sp\'ecifiez pas la hauteur d'un filet vertical,
-le filet est \'etendu jusqu'aux limites de la \minref{bo\^\i te} ou de
-l'\minref{alignement} le plus interne qui contient le filet.
-
-\TeX\ traite un filet horizontal comme un \'el\'ement naturellement vertical
-et un filet vertical comme un \'el\'ement naturellement horizontal.
-Donc un filet horizontal n'est l\'egal qu'en \minref{mode vertical},
-Tandis qu'un filet vertical n'est l\'egal qu'en \minref{mode horizontal}.
-^^{mode horizontal//filets en}
-^^{mode vertical//filets en}
-Si cela semble surprenant, visualisez le---un filet horizontal va
-de gauche \`a droite et s\'epare des \'el\'ements verticaux dans une s\'equence, tandis
-qu'un filet vertical va de haut en bas et
-s\'epare des \'el\'ements horizontaux dans une s\'equence.
-
-\example
-\hrule\smallskip
-\hrule width 2in \smallskip
-\hrule width 3in height 2pt \smallskip
-\hrule width 3in depth 2pt
-|
-\produces
-\medskip
-\hrule\smallskip
-\hrule width 2in \smallskip
-\hrule width 3in height 2pt \smallskip
-\hrule width 3in depth 2pt
-\nextexample
-% Here you can see how the baseline relates to the
-% height and depth of an \hrule.
-\leftline{
- \vbox{\hrule width .6in height 5pt depth 0pt}
- \vbox{\hrule width .6in height 0pt depth 8pt}
- \vbox{\hrule width .6in height 5pt depth 8pt}
- \vbox{\hbox{ baseline}\kern 3pt \hrule width .6in}
-}
-|
-\produces
-\medskip
-\leftline{
- \vbox{\hrule width .6in height 5pt depth 0pt}
- \vbox{\hrule width .6in height 0pt depth 8pt}
- \vbox{\hrule width .6in height 5pt depth 8pt}
- \vbox{\hbox{ baseline}\kern 3pt \hrule width .6in}
-}
-\nextexample
-\hbox{( {\vrule} {\vrule width 8pt} )}
-\hbox {( {\vrule height 13pt depth 0pt}
- {\vrule height 13pt depth 7pt} x)}
-% the parentheses define the height and depth of each of the
-% two preceding boxes; the `x' sits on the baseline
-|
-\produces
-\medskip
-\hbox{( {\vrule} {\vrule width 8pt} )}
-\hbox {( {\vrule height 13pt depth 0pt}
- {\vrule height 13pt depth 7pt} x)}
-\endexample
-
-\eix^^{filets}
-\eix^^{filets horizontaux}
-\eix^^{filets verticaux}
-\enddesc
-
-\begindesc
-\bix^^{r\`eglures}
-\easy\cts leaders {\<bo\^\i te ou filet> \<commande de saut>}
-\cts cleaders {\<bo\^\i te ou filet> \<commande de saut>}
-\cts xleaders {\<bo\^\i te ou filet> \<commande de saut>}
-\explain
-Ces commandes produisent des \minref{r\'eglures}, c'est-\`a-dire, qu'elles remplissent un
-espace horizontal ou vertical avec des
-copies d'un motif \seeconcept{filets}.
-La \<bo\^\i te> ou le \<filet> sp\'ecifie une r\'eglure,
-c'est-\`a-dire, une seule copie du motif,
-tandis que la \<commande de saut> sp\'ecifie une
-fen\^etre devant \^etre remplie avec une
-rang\'ee ou une colonne de r\'eglures.
-Le motif est r\'ep\'et\'e autant de fois qu'il peut rentrer dans la fen\^etre.
-Si \<commande de saut> est un saut horizontal, la fen\^etre
-contient une rang\'ee de r\'eglures et \TeX\ doit \^etre en mode horizontal~;
-si \<commande de saut> est un saut vertical, la fen\^etre
-contient une colonne de r\'eglures et \TeX\ doit \^etre en mode vertical.
-
-Les commandes diff\`erent dans leur fa\c con d'arranger le motif r\'ep\'et\'e
-et o\`u elles mettent l'espace restant~:
-
-\ulist\compact
-\li Pour |\leaders|, \TeX\ aligne une rang\'ee de r\'eglures avec la limite gauche de
-la \minref{bo\^\i te} $B$ la plus interne qui contient le r\'esultat de la
-commande |\leaders|.
-Elle aligne une colonne de r\'eglures avec le haut de $B$.
-Ces r\'eglures qui tombent enti\`erement dans la fen\^etre sont gard\'ees.
-Tout espace en plus en haut et en bas de la fen\^etre est laiss\'e vide.
-\li Pour |\cleaders|, les r\'eglures sont centr\'ees dans la fen\^etre.
-\li Pour |\xleaders| le motif est uniform\'ement distribu\'e \`a travers la fen\^etre.
-Si l'espace en plus est $l$ et que la r\'eglure est r\'ep\'et\'ee $n$ fois,
-\TeX\ met de l'espace de largeur ou hauteur $l/(n+1)$ entre des r\'eglures adjacentes et
-aux deux bouts (gauche et droite ou haut et bas) des r\'eglures.
-\endulist
-
-\example
-\def\pattern{\hbox to 15pt{\hfil.\hfil}}
-\line{Down the Rabbit-Hole {\leaders\pattern\hfil} 1}
-\line{The Pool of Tears {\leaders\pattern\hfil} 9}
-\line{A Caucus-Race and a Long Tale {\cleaders\pattern
- \hfil} 19}
-\line{Pig and Pepper {\xleaders\pattern\hfil} 27}
-|
-\produces
-\def\pattern{\hbox to 15pt{\hfil.\hfil}}\par
-\line{Down the Rabbit-Hole {\leaders\pattern\hfil} 1}
-\line{The Pool of Tears {\leaders\pattern\hfil} 9}
-\line{A Caucus-Race and a Long Tale {\cleaders\pattern
- \hfil} 19}
-\line{Pig and Pepper {\xleaders\pattern\hfil} 27}
-\nextexample
-\def\bulletfill{\vbox to 3ex{\vfil\hbox{$\bullet$}\vfil}}%
-\def\mybox{\vbox to 1in}
-\def\myrule{\hrule width 4pt}\hsize=2in
-\hrule \line{%
- \mybox{\myrule depth 8pt \leaders\bulletfill\vfill}
- \hfil
- \mybox{\myrule depth 15pt \leaders\bulletfill\vfill}
- \hfil
- \mybox{\myrule depth 18pt \cleaders\bulletfill\vfill}
- \hfil
- \mybox{\myrule depth 12pt \xleaders\bulletfill\vfill}%
-}\hrule
-|
-\produces
-\medskip
-\def\bulletfill{\vbox to 3ex{\vfil\hbox{$\bullet$}\vfil}}%
-\def\mybox{\vbox to 1in}\def\myrule{\hrule width 4pt}\hsize=2in
-\hrule \line{%
- \mybox{\myrule depth 8pt \leaders\bulletfill\vfill}
- \hfil
- \mybox{\myrule depth 15pt \leaders\bulletfill\vfill}
- \hfil
- \mybox{\myrule depth 18pt \cleaders\bulletfill\vfill}
- \hfil
- \mybox{\myrule depth 12pt \xleaders\bulletfill\vfill}%
-}\hrule
-\endexample\enddesc
-
-\begindesc
-\cts dotfill {}
-\cts hrulefill {}
-\explain
-^^{remplissage}
-Ces commandes remplissent respectivement l'espace horizontal englob\'e avec
-une rang\'ee de points sur la ligne de base et avec
-une ligne horizontale sur la ligne de base.
-C'est habituellement une bonne id\'ee de laisser un espace entre
-|\dotfill| ou |\hrulefill|
-et le texte qui la pr\'ec\`ede ou la suit (voir l'exemple ci-dessous).
-\example
-\hbox to 3in{Start {\dotfill} Finish}
-\hbox to 3in{Swedish {\hrulefill} Finnish}
-|
-\produces
-\par\hbox to 3in{Start {\dotfill} Finish}
-\hbox to 3in{Swedish {\hrulefill} Finnish}
-\endexample\enddesc
-
-\begindesc
-\cts leftarrowfill {}
-\cts rightarrowfill {}
-\explain
-^^{remplissage}
-Ces commandes remplissent l'espace horizontal englob\'e avec
-des ^{fl\`eches} point\'ees vers la gauche ou vers la droite.
-\example
-\hbox to 3in{\vrule \rightarrowfill \ 3 in
- \leftarrowfill\vrule}
-|
-\produces
-\medskip
-\hbox to 3in{\vrule \rightarrowfill \ 3 in
- \leftarrowfill\vrule}
-\endexample
-
-\eix^^{r\`eglures}
-\enddesc
-
-%==========================================================================
-\section {Alignements}
-
-%==========================================================================
-\subsection {Alignements tabul\'es}
-
-\begindesc
-\bix^^{alignements tabul\'es}
-\bix^^{alignements//commandes pour}
-%
-\ctspecial + {{\bt \<texte>\thinspace\&\thinspace\<texte>%
- \thinspace\& $\cdots$ \\cr}}
-\ctsxrdef{@plus}
-\cts tabalign {}
-\explain
-Ces commandes d\'ebutent une simple ligne dans un \minref{alignement} tabul\'e .
-La seule diff\'erence entre |\+| et |\tabalign| est que
-|\+| est une macro outer ---vous ne pouvez pas l'utiliser quand \TeX\ lit des tokens \`a
-haute vitesse \seeconcept{outer}.
-
-Si vous placez un `|&|' \`a une position
-\`a droite de toute tabulation existante dans un alignement tabul\'e,
-le `|&|' \'etablit une nouvelle tabulation \`a cette position.
-\example
-\cleartabs % Nullify any previous \settabs.
-\+ {\bf if }$a[i] < a[i+1]$ &{\bf then}&\cr
-\+&&$a[i] := a[i+1]$;\cr
-\+&&{\it found }$:=$ {\bf true};\cr
-\+&{\bf else}\cr
-\+&&{\it found }$:=$ {\bf false};\cr
-\+&{\bf end if};\cr
-|
-\produces
-\cleartabs % Nullify any previous \settabs.
-\+ {\bf if }$a[i] < a[i+1]$ &{\bf then}&\cr
-\+&&$a[i] := a[i+1]$;\cr
-\+&&{\it found }$:=$ {\bf true};\cr
-\+&{\bf else}\cr
-\+&&{\it found }$:=$ {\bf false};\cr
-\+&{\bf end if};\cr
-\endexample
-\enddesc
-
-\begindesc
-\cts settabs {\<nombre> {\bt \\columns}}
-\aux\cts settabs {{\bt \\+} \<ligne d'exemple> {\bt \\cr}}
-\explain
-La premi\`ere forme de
-cette commande d\'efinit un jeu de tabulations d'arr\^et ^^{tabulations}
-pour un \minref{alignement} tabul\'e.
-Elle demande \`a \TeX\ de mettre les tabulations d'arr\^et de mani\`ere \`a diviser chaque ligne en
-\<nombre> parties \'egales. \TeX\ prend la longueur d'une ligne comme \'etant
-|\hsize|, normalement. Vous pouvez rendre l'alignement plus \'etroit en diminuant
-|\hsize|.
-\margin{paragraph ``The tab settings $\ldots$'' moved to below.}
-\example
-{\hsize = 3in \settabs 3 \columns
-\+$1$&one&first\cr
-\+$2$&two&second\cr
-\+$3$&three&third\cr}
-|
-\produces
-{\hsize = 3in \settabs 3 \columns
-\+$1$ & one & first\cr
-\+$2$ & two & second\cr
-\+$3$ & three & third\cr}
-
-\noindent\doruler{\8\8\8}3{in}
-\smallskip
-\endexample
-
-La seconde forme de cette commande d\'efinit des tabulations d'arr\^et en mettant les tabulations d'arr\^et
-aux positions indiqu\'ees par les `|&| dans la ligne d'exemple.
-La ligne d'exemple elle-m\^eme ne doit pas appara\^\i tre dans la sortie. Quand vous
-utilisez cette forme vous devrez normalement mettre du mat\'eriel dans la ligne d'exemple qui sera
-un peu plus large que le plus large mat\'eriel correspondant dans l'alignement,
-de mani\`ere \`a produire de l'espace entre les colonnes.
-C'est ce que nous avons fait dans
-l'exemple ci-dessous. Le mat\'eriel suivant la derni\`ere tabulation
-d'arr\^et est inutile, puisqu'il n'a pas besoin de positionner
-quoi que ce soit \`a l'endroit o\`u le |\cr|~appara\^\i t.
-
-Les r\'eglages de tabulation \'etablies par |\settabs| restent actifs jusqu'\'a
-une nouvelle commande |\settabs| ou la fin du groupe contenant |\set!-tabs|. Ceci est vrai pour
-les deux formes de la commande.
-
-\example
-% The first line establishes the template.
-\settabs \+$1$\qquad & three\quad & seventh\cr
-\+$1$&one&first\cr
-\+$2$&two&second\cr
-\+$3$&three&third\cr
-|
-\produces
-\settabs \+$1$\qquad & three\quad & seventh\cr % the sample line
-\+$1$&one&first\cr
-\+$2$&two&second\cr
-\+$3$&three&third\cr
-\smallskip
-\endexample
-\enddesc
-
-\begindesc
-
-\cts cleartabs {}
-\explain
-Cette commande efface toutes les tabulations \`a droite de la colonne courante.
-Son utilisation principale est dans des applications telles que la composition de programme informatique
-dans lesquels les positions de tabulation changent \`a chaque ligne.
-\enddesc
-
-\see |\cr|, |\endline|, |\crcr| (\xref \endline).
-\eix^^{alignements tabul\'es}
-
-%==========================================================================
-\subsection {Alignement g\'en\'eraux}
-
-\begindesc
-{\tighten
-\cts halign {{\bt \rqbraces{\<pr\'eambule> \\cr \<rang> \\cr $\ldots$ \<rang> \\cr}}}
- \xrdef{@and}\xrdef{@pound}
-\aux\cts halign {{\bt to \<dimension>%
- \rqbraces{\<pr\'eambule> \\cr \<rang> \\cr $\ldots$ \<rang> \\cr}}}
-\aux\cts halign {{\bt spread \<dimension>%
- \rqbraces{\<pr\'eambule> \\cr \<rang> \\cr $\ldots$ \<rang> \\cr}}}
-\par}
-\explain
-Cette commande produit un \minref{alignement} horizontal constitu\'e d'une
-suite de rang\'ees, o\`u chaque rang\'ee \`a son tour contient une suite
-d'entr\'ee de colonne. \TeX\ ajuste les largeurs des entr\'ees de colonne
-pour accommoder la plus large dans chaque colonne.
-
-Un alignement horizontal n'appara\^\i t que quand \TeX\ est dans un \minref{mode}
-vertical. Nous vous recommandons d'apprendre les alignements en g\'en\'e\-ral
-(\xref{alignement}) avant d'essayer d'utiliser la commande |\valign|.
-
-Un alignement consiste en un ^{pr\'eambule}
-suivi par le texte \`a aligner. Le pr\'eambule,
-qui d\'ecrit la forme des rang\'ees qui le suivent, consiste en une
-suite de patrons de colonne, s\'epar\'es par `|&|' et termin\'e
-par |\cr|.
-\bix^^{patron}
-\bix^^{entr\'ee (colonne ou rang\'ee)}
-Chaque rang\'ee consiste en une suite d'entr\'ees
-de ^{colonne}, s\'epar\'ees aussi par `|&|' et termin\'ees par |\cr|. Dans
-un patron, `|#|' indique o\`u \TeX\ doit ins\'erer le
-texte correspondant \`a l'entr\'ee de colonne.
-Par contre, |\settabs| utilise un patron fixe implicite \`a `|#|',
-c'est-\`a-dire, qu'il ins\`ere simplement le texte tel quel.
-
-\TeX\ compose chaque entr\'ee de colonne en mode horizontal restreint,
-c'est-\`a-dire, comme le contenu d'une \minref{hbox},
-et englobe implicitement l'en\-tr\'ee dans un groupe.
-
-La forme |to| de cette commande demande \`a \TeX\
-d'\'etendre la largeur de l'alignement \`a \<dimension>,
-en ajustant l'espace entre les colonnes.
-La forme |spread| de cette commande demande \`a \TeX\
-d'agrandir l'alignement de \<dimension> par rapport \`a sa largeur naturelle.
-Ces formes sont comme les formes correspondantes de |\hbox| \ctsref\hbox.
-
-Voir |\tabskip| \ctsref\tabskip{} pour un exemple d'utilisation de la
-forme |to|.
-
-\example
-\tabskip = 1em \halign{%
- \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
- United States&Washington&dollar&1.00\cr
- France&Paris&franc&0.174\cr
- Israel&Jerusalem&shekel&0.507\cr
- Japan&Tokyo¥&0.0829\cr}
-|
-\produces
-\tabskip = 1em \halign{%
- \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
- United States&Washington&dollar&1.00\cr
- France&Paris&franc&0.174\cr
- Israel&Jerusalem&shekel&0.507\cr
- Japan&Tokyo¥&0.0829\cr}
-\endexample
-\enddesc
-
-\begindesc
-{\tighten
-\cts valign {{\bt \rqbraces{\<pr\'eambule>\\cr \<colonne>\\cr $\ldots$
- \<colonne>\\cr}}}
-\aux\cts valign {{\bt to \<dimension>%
- \rqbraces{\<pr\'eambule>\\cr \<colonne>\\cr $\ldots$ \<colonne>\\cr}}}
-\aux\cts valign {{\bt spread \<dimension>%
- \rqbraces{\<pr\'eambule>\\cr \<col.>\\cr $\ldots$ \<col.>\\cr}}}
-\par}
-\explain
-Cette commande produit un \minref{alignement} vertical
-constitu\'e d'une
-suite de colonnes, o\`u chaque colonne \`a son tour contient une suite
-d'entr\'ees de rang\'ee.
-\TeX\ ajuste les hauteurs des entr\'ees de rang\'ee pour accommoder la plus longue
-dans chaque rang\'ee.
-
-Un alignement vertical
-n'appara\^\i t que quand \TeX\ est dans un \minref{mode} horizontal.
-Puisque les alignements verticaux sont (a)~conceptuellement assez difficiles et
-(b)~peu souvent utilis\'es, nous vous recommandons d'ap\-prendre les
-alignements en g\'en\'eral
-(\xref{alignement}) et la commande |\halign| (voir ci-dessus) avant
-d'essayer d'utiliser la commande |\valign|.
-
-Un alignement consiste en un ^{pr\'eambule}
-suivi par le texte \`a aligner. Le pr\'eambule,
-qui d\'ecrit la forme des colonnes qui le suivent,
-consiste en une
-suite de patrons de rang\'ee, s\'epar\'es par `|&|' et termin\'e
-par |\cr|.
-\bix^^{patron}
-Chaque colonne consiste en une suite d'entr\'ee
-de ^{rang\'ee}, s\'epar\'ees aussi par `|&|' et termin\'ees par |\cr|. Dans
-un patron, `|#|' indique o\`u \TeX\ doit ins\'erer le
-texte correspondant \`a l'entr\'ee de rang\'ee.
-
-\TeX\ compose chaque entr\'ee de rang\'ee en mode vertical
-interne, c'est-\`a-dire, comme le contenu d'une \minref{vbox},
-et englobe implicitement l'entr\'ee dans un groupe.
-Il donne toujours \`a la vbox une profondeur \`a z\'ero.
-Tout texte ou autre mat\'eriel en mode horizontal dans une entr\'ee de rang\'ee met alors \TeX\
-en mode horizontal ordinaire.
-C'est juste une application des r\`egles g\'en\'erales du fonctionnement de \TeX\
-en mode vertical interne.
-Les param\`etres de paragraphage habituels s'appliquent dans ce cas~:
-l'entr\'ee de rang\'ee a une indentation
-initiale de |\parindent| (\xref\parindent) et
-les \minref{ressorts}
-|\leftskip| et |\rightskip| (\xref\leftskip)
-s'appliquent \`a ses lignes.
-
-Notez en particulier qu'une entr\'ee de rang\'ee contenant du texte a
-une largeur de |\hsize| (\xref\hsize). A moins que vous mettiez
-|\hsize| \`a la largeur de rang\'ee que vous voulez, vous rencontrerez
-vraisemblablement des ``overfull \minref{hbox}'' ou trouverez que
-la premi\`ere colonne occupe la largeur de la page enti\`ere, ou les deux.
-\eix^^{entr\'ee (colonne ou rang\'ee)}
-
-Normalement, vous devrez inclure un \minref{strut}
-^^{struts//dans des alignements verticaux}
-dans chaque
-patron pour que les rang\'ees n'apparaissent pas comme un r\'esultat
-des hauteurs variables des entr\'ees de l'alignement. Vous
-pouvez produire un strut avec la commande |\strut|.
-
-La forme |to| de cette commande demande \`a \TeX\
-d'\'etendre l'extension verticale de l'alignement \`a \<dimension>,
-en ajustant l'espace entre les rang\'ees.
-La forme |spread| de cette commande demande \`a \TeX\
-d'agrandir l'alignement de \<dimension> par rapport \`a sa hauteur naturelle.
-Ces formes sont comme les formes correspondantes de |\vbox| \ctsref\vbox.
-
-\example
-{\hsize=1in \parindent=0pt
-\valign{#\strut&#\strut&#\strut&#\strut\cr
- bernaise&curry&hoisin&hollandaise\cr
- ketchup&marinara&mayonnaise&mustard\cr
- rarebit&tartar\cr}}
-|
-\produces
-{\hsize=1in \parindent=0pt \leftskip=0pt
-\valign{#\strut&#\strut&#\strut&#\strut\cr
- bernaise&curry&hoisin&hollandaise\cr
- ketchup&marinara&mayonnaise&mustard\cr
- rarebit&tartar\cr}}
-\nextexample
-% same thing but without struts (shows why you need them)
-{\hsize=1in \parindent=0pt
-\valign{#&#&#&#\cr
- bernaise&curry&hoisin&hollandaise\cr
- ketchup&marinara&mayonnaise&mustard\cr
- rarebit&tartar\cr}}
-|
-\produces
-{\hsize=1in \parindent=0pt \leftskip=0pt
-\valign{#&#&#&#\cr
- bernaise&curry&hoisin&hollandaise\cr
- ketchup&marinara&mayonnaise&mustard\cr
- rarebit&tartar\cr}}
-\endexample
-\enddesc
-
-\begindesc
-\cts ialign {}
-\explain
-Cette commande r\'eagit comme ^|\halign|,
-sauf qu'elle met d'abord le ressort |\tabskip| \`a z\'ero et
-met |\everycr| \`a vide.
-\enddesc
-
-\begindesc
-\cts cr {}
-\explain
-Cette commande termine le pr\'eambule d'un alignement horizontal ou
-vertical, une rang\'ee d'un alignement horizontal ou tabul\'e,
-ou une colonne d'un alignement vertical.
-Vous pouvez demander \`a \TeX\ de faire certaines actions \`a chaque fois qu'il rencontre un |\cr|
-en chargeant la valeur du param\`etre ^|\everycr| \ctsref\everycr.
-\enddesc
-
-\begindesc
-\cts endline {}
-\explain
-Cette commande est un synonyme de la commande ^|\cr|. Elle est utile quand
-vous avez red\'efini |\cr| mais devez encore acc\'eder \`a sa d\'efinition originale.
-\enddesc
-
-\begindesc
-\cts crcr {}
-\explain
-Cette commande r\'eagit comme ^|\cr|, sauf que \TeX\ l'ignore si
-elle arrive imm\'ediatement apr\`es un |\cr| ou un ^|\noalign|.
-Sa principale application est comme mesure de s\'ecurit\'e pour \'eviter un message d'erreur ``misleading''
-caus\'e par une \minref{macro} qui attend un argument se terminant par |\cr|.
-Si vous mettez |\crcr| apr\`es le `|#|$n$' qui d\'enote un tel argument
-dans la d\'efinition de macro, la
-macro marchera proprement, que l'argument se termine par |\cr| ou non.
-\enddesc
-
-\begindesc
-\cts omit {}
-\explain
-Cette commande demande \`a \TeX\ d'ignorer un patron dans un \minref{alignement}
-horizontal ou vertical pendant le traitement d'une entr\'ee de colonne ou de rang\'ee particuli\`ere
-respectivement.
-|\omit| doit appara\^\i tre comme le premier \'el\'ement dans une entr\'ee de colonne ou de rang\'ee~; en effet,
-il remplace le patron du pr\'eambule avec le simple
-patron `|#|'.
-
-
-\example
-\tabskip = 2em\halign{%
- \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
- United States&Washington&dollar&1.00\cr
- \omit \dotfill France\dotfill&Paris&franc&0.174\cr
- Israel&Jerusalem&shekel&0.507\cr
- Japan&Tokyo¥&0.0829\cr}
-|
-\produces
-\tabskip = 2em\halign{%
- \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
- United States&Washington&dollar&1.00\cr
- \omit \dotfill France\dotfill&Paris&franc&0.174\cr
- Israel&Jerusalem&shekel&0.507\cr
- Japan&Tokyo¥&0.0829\cr}
-\nextexample
-{\hsize=1.2in \parindent=0pt
-\valign{(#)\strut&(#)\strut&(#)\strut&(#)\strut\cr
- bernaise&curry&hoisin&hollandaise\cr
- ketchup&\omit\strut{\bf MARINARA!!}&mayonnaise&mustard\cr
- rarebit&tartar\cr}}
-|
-\produces
-{\hsize=1.2in \parindent=0pt \leftskip=0pt
-\valign{(#)\strut&(#)\strut&(#)\strut&(#)\strut\cr
- bernaise&curry&hoisin&hollandaise\cr
- ketchup&\omit\strut{\bf MARINARA!}&mayonnaise&mustard\cr
- rarebit&tartar\cr}}
-\endexample
-\enddesc
-
-\begindesc
-\cts span {}
-\explain
-La signification de cette commande d\'epend suivant qu'elle appara\^\i t soit dans un pr\'eambule
-soit dans une entr\'ee d'alignement.
-\ulist
-\li Normalement, \TeX\ ne d\'eveloppe pas de tokens dans le pr\'eambule
-quand il le lit.
-Mettre |\span| au d\'ebut d'un token dans le pr\'eambule rend
-ce token d\'eveloppable imm\'ediatement selon les r\`egles usuelles de d\'eveloppement
-de \minref{macro} de \TeX.
-\li Mettre |\span| \`a la place de `|&|' entre deux entr\'ees de colonne ou de rang\'ee
-rend ces colonnes ou rang\'ees combin\'ees.
-Pour un alignement horizontal,
-la largeur de la colonne combin\'ee est la somme des
-largeurs des colonnes incluses.
-Pour un alignement vertical,
-la hauteur de la rang\'ee combin\'ee est la somme des
-hauteurs des rang\'ees incluses.
-Le patron des colonnes ou rang\'ees combin\'ees forme un seul groupe,
-donc des commandes de chargement de police pr\'ec\'edant un |\span| affectent tout jusqu'au
-prochain `|&|'.
-\endulist
-\noindent
-|\span| est rarement utile d'elle-m\^eme en dehors d'un patron,
-mais procure le m\'ecanisme de base
-pour d\'efinir ^|\multispan|.
-\enddesc
-
-\begindesc
-\cts multispan {\<nombre>}
-\explain
-Cette commande demande \`a \TeX\ que les \<nombre>
-colonnes suivantes d'une rang\'ee d'un alignement horizontal,
-ou
-que les \<nombre> rang\'ees dans une colonne d'un alignement vertical,
-doivent \^etre combin\'ees en une seule colonne ou rang\'ee (comme avec
-|\span|) et que leur patron doit \^etre omis (comme avec |\omit|).
-
-\example
-\tabskip = 13pt\halign{%
- \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
- United States&Washington&dollar&1.00\cr
- France&Paris&franc&0.174\cr
- Israel&Jerusalem &
- \multispan 2 \hfil\it(no information)\hfil \cr
- Japan&Tokyo¥&0.0829\cr}
-|
-\produces
-\tabskip = 13pt\halign{%
- \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
- United States&Washington&dollar&1.00\cr
- France&Paris&franc&0.174\cr
- Israel&Jerusalem &
- \multispan 2 \hfil\it(no information)\hfil \cr
- Japan&Tokyo¥&0.0829\cr}
-\nextexample
-{\hsize=1.2in \parindent=0pt
-\valign{(#)\strut&(#)\strut&(#)\strut&(#)\strut\cr
- bernaise&curry&hoisin&hollandaise\cr
- \multispan 3$$\left\{{{\rm ketchup}\atop{\rm marinara}}
- \right\}$$&mustard\cr
- rarebit&tartar\cr}}
-|
-\produces
-{\hsize=1.2in \parindent=0pt \leftskip=0pt
-\valign{(#)\strut&(#)\strut&(#)\strut&(#)\strut\cr
- bernaise&curry&hoisin&hollandaise\cr
- \multispan 3$$\left\{{{\rm ketchup}\atop{\rm marinara}}
- \right\}$$&mustard\cr
- rarebit&tartar\cr}}
-\endexample
-
-\eix^^{patron}
-\enddesc
-
-\begindesc
-\cts noalign {\rqbraces{\<mat\'eriel en mode vertical>}}
-\aux\cts noalign {\rqbraces{\<mat\'eriel en mode horizontal>}}
-\explain
-Cette commande ins\`ere
-\<mat\'eriel en mode vertical>
-apr\`es la rang\'ee cou\-rante d'un \minref{alignement} horizontal ou
-\<mat\'eriel en mode horizontal> apr\`es la colonne courante d'un \minref{alignement}
-vertical.
-Le mat\'eriel peut \^etre du texte, un ressort, un filet ou tout autre chose.
-
-L'utilisation la plus commune de |\noalign|
-est de mettre de l'espace suppl\'ementaire apr\`es une rang\'ee ou une colonne.
-Si vous voulez mettre de l'espace suppl\'ementaire apr\`es \emph{toutes\/} les rang\'ees d'un alignement
-horizontal, utilisez ^|\openup| (\xref\openup).
-
-\example
-\halign{%
- \hfil\it#\hfil\tabskip=2em&\hfil#\hfil&#&
- \hfil\$#\tabskip=0em\cr
- % The \tabskip changes prevent the rule below
- % from sticking out.
- United States&Washington&dollar&1.00\cr
- France&Paris&franc&0.174\cr
- \noalign{\smallskip\hrule\smallskip}
- Israel&Jerusalem&shekel&0.507\cr
- Japan&Tokyo¥&0.0829\cr}
-|
-\produces
-\halign{%
- \hfil\it#\hfil\tabskip=2em&\hfil#\hfil&#&
- \hfil\$#\tabskip=0em\cr
- % The \tabskip changes prevent the rule below
- % from sticking out.
- United States&Washington&dollar&1.00\cr
- France&Paris&franc&0.174\cr
- \noalign{\smallskip\hrule\smallskip}
- Israel&Jerusalem&shekel&0.507\cr
- Japan&Tokyo¥&0.0829\cr}
-\nextexample
-{\hsize=1in \parindent=0pt
-\valign{#\strut&#\strut&#\strut&#\strut\cr
- \noalign{\vrule width 2pt\quad}
- bernaise&curry&hoisin&hollandaise\cr
- \noalign{\vrule width 2pt\quad}
- ketchup&marinara&mayonnaise&mustard\cr
- \noalign{\vrule width 2pt\quad}
- rarebit&tartar\cr
- \noalign{\vrule width 2pt\quad}}}
-|
-\produces
-\medskip
-{\hsize=1in \parindent=0pt
-\valign{#\strut&#\strut&#\strut&#\strut\cr
- \noalign{\vrule width 2pt\quad}
- bernaise&curry&hoisin&hollandaise\cr
- \noalign{\vrule width 2pt\quad}
- ketchup&marinara&mayonnaise&mustard\cr
- \noalign{\vrule width 2pt\quad}
- rarebit&tartar\cr
- \noalign{\vrule width 2pt\quad}}}
-\endexample
-\enddesc
-
-\begindesc
-\cts tabskip {\param{ressort}}
-\explain
-Ce param\`etre sp\'ecifie le montant de ressort horizontal ou vertical
-que \TeX\ met entre les
-colonnes d'un alignement horizontal ou entre les
-rang\'ees d'un alignement vertical.
-\TeX\ met aussi le ressort |\tabskip|
-\`a gauche de la premi\`ere colonne et \`a droite de la derni\`ere colonne
-d'un alignement horizontal,
-avant la premi\`ere rang\'ee
-et apr\`es la derni\`ere rang\'ee d'un alignement vertical.
-Vous pouvez changer |\tabskip| dans un patron---%
-le changement affectera le ressort associ\'e avec tous les
-|&| suivant aussi bien que le ressort apr\`es la derni\`ere rang\'ee ou colonne.
-\example
-\halign to 3.5in{%
- \hfil\it#\tabskip = 2em plus 8pt
- \hfil&\hfil#\hfil&#\tabskip = 1em
- &\hfil\$#\tabskip = 0em\cr
- United States&Washington&dollar&1.00\cr
- France&Paris&franc&0.174\cr
- Israel&Jerusalem&shekel&0.507\cr
- Japan&Tokyo¥&0.0829\cr}
-|
-\produces
-\halign to 3.5in{%
- \hfil\it#\tabskip = 2em plus 8pt
- \hfil&\hfil#\hfil&#\tabskip = 1em
- &\hfil\$#\tabskip = 0em\cr
- United States&Washington&dollar&1.00\cr
- France&Paris&franc&0.174\cr
- Israel&Jerusalem&shekel&0.507\cr
- Japan&Tokyo¥&0.0829\cr}
-\nextexample
-{\hsize = 1in \parindent=0pt \tabskip=5pt
-\valign{#\strut&#\strut\tabskip = 3pt
- &#\strut&#\strut\cr
- bernaise&curry&hoisin&hollandaise\cr
- ketchup&marinara&mayonnaise&mustard\cr
- rarebit&tartar\cr}}
-|
-\produces
-{\hsize = 1in \parindent=0pt \tabskip=5pt
-\valign{#\strut&#\strut\tabskip = 3pt
- &#\strut&#\strut\cr
- bernaise&curry&hoisin&hollandaise\cr
- ketchup&marinara&mayonnaise&mustard\cr
- rarebit&tartar\cr}}
-\endexample
-\enddesc
-
-\begindesc
-\cts hidewidth {}
-\explain
-Cette commande demande \`a \TeX\ d'ignorer la largeur de l'entr\'ee de la colonne suivante dans un
-alignement horizontal. C'est pratique quand vous avez une entr\'ee qui est plus longue
-que la plupart des autres dans la m\^eme colonne
-et que vous pr\'ef\'erez avoir cette entr\'ee sortant de la colonne plut\^ot
-que rendre toutes les entr\'ees
-de la colonne plus larges. Si le |\hidewidth| est \`a gauche de
-l'entr\'ee, l'entr\'ee d\'ebordera \`a gauche~; si le |\hidewidth| est \`a
-droite de l'entr\'ee, l'entr\'ee d\'ebordera \`a droite.
-\example
-\tabskip = 25pt\halign{%
- \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
- United States&\hidewidth Washington&
- dollar&1.00\cr
- France&Paris&franc&0.174\cr
- Israel&Jerusalem&shekel&0.507\cr
- Japan&Tokyo¥&0.0829\cr}
-|
-\produces
-\tabskip = 25pt\halign{%
- \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr
- United States&\hidewidth Washington&
- dollar&1.00\cr
- France&Paris&franc&0.174\cr
- Israel&Jerusalem&shekel&0.507\cr
- Japan&Tokyo¥&0.0829\cr}
-\endexample
-\enddesc
-
-\begindesc
-\cts everycr {\param{liste de token}}
-\explain
-\TeX\ d\'eveloppe \<token list> \`a chaque fois qu'il ex\'ecute
-un |\cr|---\`a la fin de chaque pr\'eambule,
-\`a la fin de chaque rang\'ee d'un alignement horizontal
-et \`a la fin de chaque colonne d'un alignement vertical.
-La commande |\everycr| est d\'evelopp\'ee juste apr\`es le |\cr|.
-Ainsi vous pouvez demander \`a \TeX\
-d'ex\'ecuter certaines commandes \`a la fin d'un pr\'eambule, d'une rang\'ee ou d'une colonne en
-assignant une liste de commandes \`a |\everycr|.
-
-Les tokens |\everycr| ne doivent pas inclure d'autres commandes que |\no!-align|.
-Ceci parce que
-les tokens |\everycr| r\'eappara\^\i tront apr\`es le dernier
-|\cr| de l'alignement. Une commande autre qu'un
-|\noalign| fera penser \`a \TeX\ qu'il commence une nouvelle
-rang\'ee ou colonne.
-\TeX\ se plaindra d'un |\cr| manquant, ins\`erera
-un |\cr|, ins\`erera les tokens |\everycr| \`a nouveau et r\'ep\`etera ces actions
-ind\'efiniment.
-\example
-\everycr={\noalign{\smallskip\hrule\smallskip}}
-\halign{#\tabskip = 11pt&\hfil#\hfil&\hfil#\hfil
- \tabskip = 0pt\cr
- $1$&one&first\cr
- $2$&two&second\cr
- $3$&three&third\cr}
-|
-\produces
-\medskip
-\everycr={\noalign{\smallskip\hrule\smallskip}}
-\halign{#\tabskip = 11pt&\hfil#\hfil&\hfil#\hfil
- \tabskip = 0pt\cr
- $1$&one&first\cr
- $2$&two&second\cr
- $3$&three&third\cr}
-\endexample
-
-\eix^^{alignements//commandes pour}
-\enddesc
-
-\enddescriptions
-
-
-\endchapter
-\byebye
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros +\chapter {Commandes pour \linebreak les modes horizontaux \linebreak et verticaux} + +\chapterdef{hvmodes} + +Cette section couvre les commandes qui ont des formes correspondantes ou +identiques dans les modes horizontaux et verticaux. +Ces commandes fournissent des bo\^\i tes, des espaces, des filets, des r\'eglures +et des alignements. +Pour une explication des conventions utilis\'ees dans cette section, +voir \headcit{Descriptions des commandes}{cmddesc}. + +\begindescriptions + +%========================================================================== +\section {Produire des espaces} + +%========================================================================== + +\subsection {Espaces horizontaux de largeur fixe} + +\begindesc +\bix^^{espace//production d'} +\bix^^{espace horizontal} +\cts thinspace {} +\explain +Cette commande produit un \minref{cr\'enage} positif +dont la largeur \'equivaut \`a un sixi\`eme d'em +(\xref{dimdefs}) +c'est-\`a-dire qu'il demande \`a \TeX\ de d\'eplacer sa position \`a droite de ce montant. +C'est pratique +quand vous avez par exemple des quotes imbriqu\'ees +et que vous voulez les s\'eparer. +\TeX\ ne coupe pas de ligne sur un +|\thinspace|.\minrefs{line break} + +\example +``\thinspace`A quote.'\thinspace''\par +24,\thinspace 29--31,\thinspace 45,\thinspace 102 +| +\produces +``\thinspace`A quote.'\thinspace''\par +24,\thinspace 29--31,\thinspace 45,\thinspace 102 +\endexample +\enddesc + +\begindesc +\cts negthinspace {} +\explain +Cette commande produit un \minref{cr\'enage} n\'egatif +dont la largeur \'equivaut \`a un sixi\`eme d'em +(\xref{dimdefs}) +c'est-\`a-dire qu'il demande \`a \TeX\ de d\'eplacer sa position \`a gauche de ce montant. +C'est pratique pour rapprocher deux caract\`eres qui sont un peu trop +\'eloign\'es l'un de l'autre. +\TeX\ ne coupe pas de ligne sur un |\negthinspace|.\minrefs{line break} +\example +The horror, the horror\negthinspace, the horror of it all!! +| +\produces +The horror, the horror\negthinspace, the horror of it all! +\endexample +\enddesc + +\begindesc +\cts enspace {} +\explain +Cette commande produit un \minref{cr\'enage} dont la largeur \'equivaut \`a un ^{en} +(la moiti\'e d'un em, voir \xrefpg{dimdefs}). +\TeX\ ne coupe pas de ligne sur un |\enspace| \`a moins qu'il soit suivi d'un ressort. +Dans une liste \`a puce, les puces sont g\'en\'eralement s\'epar\'ees du texte qui les suit +par un |\enspace|. +\example +Lemma 1.\enspace There exists a white rabbit. +| +\produces +Lemma 1.\enspace There exists a white rabbit. +\endexample +% the enspace here follows the \proclaim convention (Knuth p. 355). +\enddesc + +\begindesc +\easy\cts enskip {} +\cts quad {} +\cts qquad {} +\explain +^^{en} +Chacune de ces commandes +produit un bout de \minref{ressort} horizontal +qui ne peut ni s'\'etirer ni se r\'etr\'ecir. +\TeX\ peut couper une ligne \minrefs{line break} sur un tel ressort. +Les largeurs de ces ressort/dimension +(qui sont relatifs \`a la police courante) +sont les suivantes pour |cmr10|, la police par d\'efaut de \plainTeX~: +\medskip +\def\distance#1{\hbox{\strut $\rightarrow$\vrule\hskip #1\vrule$\leftarrow$}} +{\def\l#1{\hfil$#1$\thinspace em} +\tabskip 3pc \halign{#&#&\hfil#\hfil\cr +{\it Commande}&{\it Espace}&{\it Illustration}\cr +\noalign{\vskip 4pt} +|\enskip|&\l{\frac 1/2}&\distance{.5em}\cr +|\quad|&\l1&\distance{1em}\cr +|\qquad|&\l2&\distance{2em}\cr +}} +\example +en\enskip skip; quad\quad skip; qquad\qquad skip +| +\produces +en\enskip skip; quad\quad skip; qquad\qquad skip +\endexample +\eix^^{espace horizontal} +\enddesc + +%========================================================================== +\subsection {Espaces verticaux de largeur fixe} + +\begindesc +\bix^^{espace vertical} +\easy\cts smallskip {} +\cts medskip {} +\cts bigskip {} +\explain +Ces commandes produisent des montants d'espacement vertical +successivement plus larges~: +\display{{\def\bar{\kern 2pt\hrule width 5pc} +\def\lbl#1{\hbox to 5pc{\hfil #1skip\hfil}} +\leavevmode +\vtop{\lbl{small}\bar\smallskip\bar}\quad +\vtop{\lbl{med}\bar\medskip\bar}\quad\vtop{\lbl{big}\bar\bigskip\bar}}} +\noindent +|\smallskip| saute de $3$ points et peut s'\'etirer ou +s'\'elargir de $1$ point. |\med!-skip| est \'equivalent \`a deux |\smallskip|s +et |\bigskip| est \'equivalent \`a deux |\medskip|s. + +Ces commandes terminent un paragraphe car elles sont fondamentalement verticales. +Les sauts qu'elles produisent +sont ajout\'es au saut inter-para\-graphe normal. +\example +Hop \smallskip skip \medskip and \bigskip jump. +| +\produces +Hop \smallskip skip \medskip and \bigskip jump. +\endexample +\enddesc + +\begindesc +\cts smallskipamount {\param{ressort}} +\cts medskipamount {\param{ressort}} +\cts bigskipamount {\param{ressort}} +\explain +Ces param\`etres sp\'ecifient les montants de ressort produit par +les commandes |\small!-skip|, |\med!-skip| et |\big!-skip|. +En changeant ces param\`e\-tres vous changez l'effet des commandes. +Les valeurs par d\'efaut (pour \plainTeX) +correspondent \`a un quart d'une ligne d'espace, \`a la moiti\'e d'une ligne d'espace, +et \`a une ligne d'espace enti\`ere. +Nous vous recommandons de maintenir ce ratio en changeant +ces valeurs \`a chaque fois que +vous changez |\baselineskip| (\xref\baselineskip). +^^|\baselineskip//et {\tt\\smallskipamount}, etc.| +\eix^^{espace vertical} + +\enddesc + +%========================================================================== +\subsection {Espace de taille variable} + +\begindesc +\easy\cts hskip {\<dimension$_1$> {\bt plus} \<dimension$_2$> {\bt minus} \<dimension$_3$>} +\cts vskip {\<dimension$_1$> {\bt plus} \<dimension$_2$> {\bt minus} \<dimension$_3$>} +^^{saut vertical}^^{ressort vertical} +^^{saut horizontal}^^{ressort horizontal} +\bix^^{espace horizontal} +\bix^^{espace vertical} +\explain +Ces commandes produisent des ressorts respectivement horizontaux et verticaux. +Dans le cas le plus simple et le plus courant, quand il n'y a seulement que \<dimension$_1$>, +|\hskip| saute vers la droite de \<dimension$_1$> +et |\vskip| saute vers le bas de la page de \<dimension$_1$>. +Plus g\'en\'erale\-ment, ces commandes +produisent des \minref{ressort}s dont la taille naturelle est +\<dimension$_1$>, l'\'etirement \<dimension$_2$> et le r\'etr\'ecissement \<dimension$_3$>. +Le |plus| \<dimension$_2$>, le |minus |\<dimension$_3$>, +ou les deux peuvent \^etre omis. +Si les deux sont pr\'esent, le |plus| doit \^etre avant le |minus|. +Une valeur omise +est consid\'er\'ee \`a z\'ero. Toutes les \<dimension>s peuvent \^etre n\'egatives. + +Vous pouvez utiliser |\hskip| en mode math\'ematique, mais vous ne pouvez utiliser d'unit\'es |mu| +\seeconcept{unit\'e math\'ematique} +pour aucune des dimensions. Si vous voulez des unit\'es |mu|, utilisez |\mskip| +(\xref\mskip) \`a la place. + +\example +\hbox to 2in{one\hskip 0pt plus .5in two} +| +\produces +\hbox to 2in{one\hskip 0pt plus 2in two} + +\doruler{\8\8}2{in} +\nextexample +\hbox to 2in{Help me!! I can't fit +{\hskip 0pt minus 2in} inside this box!!} +| +\produces +\hbox to 2in{Help me! I can't fit +{\hskip 0pt minus 2in} inside this box!} + +\doruler{\8\8}2{in} +\nextexample +\vbox to 4pc{\offinterlineskip% Just show effects of \vskip. + \hbox{one}\vskip 0pc plus 1pc \hbox{two} + \vskip .5pc \hbox{three}} +| +\produces +\smallskip +\vbox to 4pc{\offinterlineskip% Just show effects of \vskip. + \hbox{one}\vskip 0pc plus 1pc \hbox{two} + \vskip .5pc \hbox{three}} +\endexample +\enddesc + +\begindesc +\cts hglue {\<ressort>} +\cts vglue {\<ressort>} +^^{ressort vertical} +^^{ressort horizontal} +\explain +La commande |\hglue| produit un \minref{ressort} horizontal qui ne dispara\^\i t pas sur +une coupure de ligne. La commande |\vglue| +produit un \minref{ressort} vertical qui ne dispara\^\i t pas sur une coupure de page. +Pour le reste ces commandes sont comme |\hskip| et |\vskip|. +Vous pouvez utiliser |\vglue| pour produire de l'espace blanc en haut d'une page, +par exemple, au dessus d'un titre sur la premi\`ere page d'un document, mais +^|\topglue| (suivant) est normalement plus appropri\'e pour cet usage. +\enddesc + +\begindesc +\cts topglue {\<ressort>} +\explain +\margin{Command added; recent addition to \TeX} +Cette commande\footnote{|\topglue| a \'et\'e ajout\'e \`a \TeX\ dans la version 3.0, +apr\`es les autres am\'enagements introduitis par le ^{\newTeX} +(\xref{newtex}). C'est la premi\`ere d\'ecrite dans la \emph{dix-huiti\`eme\/} +\'edition de \texbook.} fait que l'espace entre le haut de la page et le +haut de la premi\`ere bo\^\i te de la page soit pr\'ecis\'ement \'egal \`a \<glue>. +Le haut de la page est consid\'er\'e \^etre sur la ligne de base d'une +ligne imaginaire de texte juste au-dessus de la ligne du haut de la page. +Plus pr\'ecis\'ement, c'est une distance |\topskip| au dessus de l'origine donn\'ee par +|\hoffset| et |\voffset|. + +Cette commande est pratique parce que \TeX\ ajuste le ressort normalement +produit par |\topskip| d'une mani\`ere complexe. En utilisant |\top!-glue| vous pouvez +contr\^oler la position de la premi\`ere bo\^\i te de la page sans vous inqui\'eter de +ces ajustements. + +\enddesc + +\begindesc +\cts kern {\<dimension>} +\explain +L'effet de cette commande d\'epend du mode dans lequel est \TeX\ quand +il la rencontre~: +\ulist + +\li En mode horizontal, \TeX\ d\'eplace sa position vers la droite (pour un cr\'enage positif) +ou vers la gauche (pour un cr\'enage n\'egatif). + +\li En mode vertical, \TeX\ d\'eplace sa position vers le bas de la page (pour un cr\'enage positif) +ou vers le haut de la page (pour un cr\'enage n\'egatif). + +\endulist +\noindent +Ainsi un cr\'enage positif produit un espace vide tandis qu'un cr\'enage n\'egatif +fait que \TeX\ recule sur quelque chose qu'il a d\'ej\`a produit. +Cette notion de cr\'enage ^^{cr\'enages} +est diff\'erente de la notion de cr\'enage dans certains syst\`emes de composition +typographique informatis\'es---dans \TeX, des cr\'e\-nages positifs \emph{\'ecartent} +deux lettres au lieu de les rapprocher. + +Un cr\'enage est similaire \`a un +\minref{ressort}, sauf que (a)~un cr\'enage ne peut ni s'\'etirer ni se r\'etr\'ecir, +et (b)~\TeX\ ne coupera une ligne ou une page sur un cr\'enage que si le cr\'enage +est suivi par un ressort et ne fait pas partie d'une formule math\'ematique. +Si \TeX\ trouve un cr\'enage \`a la fin +d'une ligne ou d'une page, il \'elimine le cr\'enage. +Si vous voulez obtenir l'effet d'un cr\'enage qui ne dispara\^\i t jamais, +utilisez ^|\hglue| ou ^|\vglue|. + +Vous pouvez utiliser |\kern| en mode math\'ematique, mais vous ne pouvez pas utiliser d'unit\'es |mu| +\seeconcept{unit\'e math\'ematique} +pour \<dimension>. Si vous voulez des unit\'es |mu|, utilisez |\mkern| +(\xref\mkern) \`a la place. +^^{coupures de ligne//cr\'enages sur des} +^^{coupures de page//cr\'enages sur des} + +\example +\centerline{$\Downarrow$}\kern 3pt % a vertical kern +\centerline{$\Longrightarrow$\kern 6pt % a horizontal kern + {\bf Heed my warning!!}\kern 6pt % another horizontal kern + $\Longleftarrow$} +\kern 3pt % another vertical kern +\centerline{$\Uparrow$} +| +\produces +\centerline{$\Downarrow$}\kern 3pt % a vertical kern +\centerline{$\Longrightarrow$\kern 6pt % a horizontal kern + {\bf Heed my warning!}\kern 6pt % another horizontal kern + $\Longleftarrow$} +\kern 3pt % another vertical kern +\centerline{$\Uparrow$} +\endexample +\enddesc + +\begindesc +\makecolumns 4/2: +\cts hfil {} +\cts hfill {} +\cts vfil {} +\cts vfill {} +\explain +\bix^^{ressort//\'etirable infiniment} +Ces commandes produisent des ressorts horizontaux et verticaux \'etirables +infiniment qui +\'ecrasent tout \'etirement fini qui peut \^etre pr\'esent. +|\hfil| et |\hfill| produisent des ressorts horizontaux, tandis que +|\vfil| et |\vfill| produisent des ressorts verticaux. + +|\hfill| est infiniment plus grand que |\hfil|. +Si |\hfill| et |\hfil| apparaissent dans la m\^eme \minref{bo\^\i te}, +le |\hfill| consumera toute la place suppl\'ementaire possible +et le |\hfil| sera effectivement ignor\'e. +|\hfill| peut \`a son tour est \'ecras\'e par |\hskip 0pt plus 1filll|. +Les ressorts produits par +|\hfil| et |\hfill| ne r\'etr\'ecissent jamais. + +Le comportement de |\vfil| et |\vfill| est analogue. + +\example +\hbox to 2in{Left\hfil Middle \hfil Right} +| +\produces +\hbox to 2in{Left\hfil Middle \hfil Right} + + +\doruler{\8\8}2{in} +\nextexample +\hbox to 2in{Left\hfil Middle \hfill Right} +| +\produces +\hbox to 2in{Left\hfil Middle \hfill Right} + +\doruler{\8\8}2{in} +\nextexample +\leftline{% +\vbox to 4pc{% + \hbox{Top}\vfil\hbox{Middle}\vfil \hbox{Bottom}}\quad +\vbox to 4pc{% + \hbox{Top}\vfil\hbox{Middle}\vfill\hbox{Bottom}}} +| +\produces +\smallskip +\leftline{% +\vbox to 4pc{% + \hbox{Top}\vfil\hbox{Middle}\vfil \hbox{Bottom}}\quad +\vbox to 4pc{% + \hbox{Top}\vfil\hbox{Middle}\vfill\hbox{Bottom}}} +\endexample + +\eix^^{ressort//\'etirable infiniment} +\enddesc + +\begindesc +\cts hss {} +\cts vss {} +\explain +Ces commandes produisent des ressorts horizontaux et +verticaux qui sont infiniment \'etirables et +r\'etr\'ecissables. Le ressort peut se r\'etr\'ecir +sur une distance n\'egative, produisant l'effet de reculer sur une ligne +(pour |\hss|) ou remonter sur une page (pour |\vss|). + +\example +\line{text\hfil\hbox to 0pt{margin\hss}} +% `margin\hss' shrinks to the zero width of the hbox. +| +\produces +\line{text\hfil\hbox to 0pt{margin\hss}} +\nextexample +\vbox to 1pc{\hrule width 6pc % Top of box. + \hbox{1} \vskip 1pc\hbox to 2pc{\hfil 2} + % The \vss absorbs the extra distance produced by \vskip. + \vss \hbox to 3pc{\hfil 3} + \hrule width 6pc}% Bottom of box. +| +\produces +\medskip +\vbox to 1pc{\hrule width 6pc % top of box + \hbox{1} \vskip 1pc\hbox to 2pc{\hfil 2} + \vss \hbox to 3pc{\hfil 3} + \hrule width 6pc}% bottom of box +\vskip 2.5pc +\endexample +\enddesc + +\begindesc +\cts hfilneg {} +\cts vfilneg {} +\explain +^^{ressort//n\'egatif} +Ces commandes effacent l'effet d'un |\hfil| ou d'un |\vfil| +pr\'ec\'edent. Tandis que |\hfil| et |\vfil| produisent un +\minref{ressort} positif infiniment \'etirable, |\hfilneg| et |\vfilneg| +produisent un ressort n\'egatif infiniment \'etirable. +(ainsi, $n$ |\hfilneg| effacent $n$ ^|\hfil| et pareillement +pour le |\vfilneg|.) +L'utilisation principale de |\hfilneg| et de |\vfilneg| est de contrecarrer +l'effet d'un |\hfil| ou d'un |\vfil| ins\'er\'e par une \minref{macro}. + +|\hfilneg| et |\vfilneg| ont +la propri\'et\'e curieuse, s'ils sont les seuls ressorts infiniment \'etirables +d'une bo\^\i te, de produire exactement le m\^eme effet que |\hfil| +et |\vfil|. + +\example +\leftline{\hfil on the right\hfilneg} +% Cancel the \hfil that \leftline produces to the right +% of its argument. +| +\produces +\leftline{\hfil on the right \hfilneg} +% Cancel the \hfil that \leftline produces to the right +% of its argument. +% +\nextexample +\def\a{\hbox to 1pc{\hfil 2}\vfil} +\vbox to 4pc{\hbox{1} \vfil \a + \vfilneg \hbox to 2pc{\hfil 3}} +| +\produces +\smallskip +\def\a{\hbox to 1pc{\hfil 2}\vfil} +\vbox to 4pc{\hbox{1} \vfil \a + \vfilneg \hbox to 2pc{\hfil 3}} +\endexample\enddesc + +{\emergencystretch=2em +\see |\hbadness| et |\vbadness| (\xref \vbadness), +|\hfuzz| et |\vfuzz| (\xref \vfuzz), +\conceptcit{filets}.\par} +\eix^^{espace//production d'} +\eix^^{espace horizontal} +\eix^^{espace vertical} + +%========================================================================== +\section {Manipuler des bo\^\i tes} + +%========================================================================== +\subsection {Construire des hbox et des vbox} + +\begindesc +\bix^^{commandes de \boites} +^^{hbox//construction avec \b\tt\\hbox\e} +% +\cts hbox {\rqbraces{\<mat\'eriel en mode horizontal>}} +\aux\cts hbox {{\bt to} \<dimension> \rqbraces{\<mat\'eriel en mode horizontal>}} +\aux\cts hbox {{\bt spread} \<dimension> \rqbraces{\<mat\'eriel en mode horizontal>}} +\explain +Ces commandes produisent une hbox +(\minref{bo\^\i te} horizontale) contenant du \<mat\'eriel en mode horizontal>. +Les accolades autour du \<mat\'eriel en mode horizontal> d\'efinissent un groupe. +\TeX\ ne coupe pas le \<mat\'eriel en mode horizontal> en plusieurs lignes, +puisqu'il est en mode horizontal restreint quand il assemble la bo\^\i te. +\TeX\ ne change pas la taille de la bo\^\i te une fois qu'elle est produite. + +|\hbox| est souvent utile quand vous voulez conserver du texte sur une seule ligne. +Si votre utilisation de |\hbox| emp\^eche \TeX\ de couper des lignes de mani\`ere acceptable, +\TeX\ se plaindra d'un ``overfull hbox''. + +La largeur du hbox d\'epend des arguments de |\hbox|~: +\ulist\compact +\li Si vous ne sp\'ecifiez que du \<mat\'eriel en mode horizontal>, +le hbox aura sa \minref{largeur} naturelle. +\li Si vous sp\'ecifiez |to| \<dimension>, la largeur du hbox sera \<dimension>. +\li Si vous sp\'ecifiez |spread| \<dimension>, la largeur du hbox sera +sa largeur naturelle plus \<dimension>, c'est-\`a-dire, le hbox s'allongera de +\<dimension>. +\endulist + +La commande ^|\hfil| (\xref\hfil) est utile pour remplir un +hbox d'espace vide quand le mat\'eriel dans la bo\^\i te n'est pas aussi large que la +largeur de la bo\^\i te. +\example +\hbox{ugly suburban sprawl} +\hbox to 2in{ugly \hfil suburban \hfil sprawl} +\hbox spread 1in {ugly \hfil suburban \hfil sprawl} +% Without \hfil in the two preceding lines, +% you'd get `underfull hbox'es. +| +\produces +\hbox{ugly suburban sprawl} +\hbox to 2in{ugly \hfil suburban \hfil sprawl} +\hbox spread 1in {ugly \hfil suburban \hfil sprawl} +% Without \hfil in the two preceding lines, +% you'd get `underfull hbox'es. + +\doruler{\8\8\8}3{in} +\endexample +\enddesc + +\begindesc +\cts vtop {\<mat\'eriel en mode vertical>} +\aux\cts vtop {{\bt to} \<dimension> \rqbraces{\<mat\'eriel en mode vertical>}} +\aux\cts vtop {{\bt spread} \<dimension> \rqbraces{\<mat\'eriel en mode vertical>}} +\cts vbox {\rqbraces{\<mat\'eriel en mode vertical>}} +\aux\cts vbox {{\bt to} \<dimension> \rqbraces{\<mat\'eriel en mode vertical>}} +\aux\cts vbox {{\bt spread} \<dimension> \rqbraces{\<mat\'eriel en mode vertical>}} +\explain +^^{hbox//construction avec \b\tt\\hbox\e} +Ces commandes +produisent une \minref{vbox} (\minref{bo\^\i te} verticale) +contenant du \<ma\-t\'eriel en mode vertical>. +Les accolades autour du \<mat\'eriel en mode vertical> d\'efinissent un groupe. +\TeX\ est en mode vertical interne quand il assemble la bo\^\i te. +\TeX\ ne change pas la taille de la bo\^\i te une fois qu'elle est produite. + +La diff\'erence entre |\vtop| et |\vbox| est o\`u \TeX\ met +le point de r\'ef\'erence de la vbox construite. +Normalement, le point de r\'ef\'erence obtenu de |\vtop| tend \`a \^etre sur ou pr\`es +du haut de la vbox construite, +tandis que +le point de r\'ef\'erence obtenu de |\vbox| tend \`a \^etre sur ou pr\`es +du bas de la vbox construite. +Ainsi une rang\'ee de vbox toutes construites avec |\vtop| +tendra \`a avoir leurs hauts \`a peu pr\`es align\'es, +tandis qu'une rang\'e de vbox toutes construites avec |\vbox| +tendra \`a avoir leurs bas \`a peu pr\`es align\'es. + +|\vtop| et |\vbox| sont souvent pratiques +quand vous voulez garder du texte ensemble sur une seule page. +(Pour cela, peu importe normalement quelle commande vous utilisez.) +Si votre usage de ces commandes +emp\^eche \TeX\ de couper des pages d'une mani\`ere acceptable, +\TeX\ se plaindra qu'il a trouv\'e un ``overfull'' ou un ``underfull vbox while +|\output| is active''. + +La hauteur d'une vbox d\'epend des +arguments de |\vtop| ou |\vbox|. +Pour |\vbox|, \TeX\ d\'etermine la hauteur de la mani\`ere suivante~: +\ulist\compact +\li Si vous ne sp\'ecifiez que du \<mat\'eriel en mode vertical>, +la vbox aura sa hauteur naturelle. +\li Si vous sp\'ecifiez |to| \<dimension>, +la hauteur de la vbox sera fix\'ee \`a \<dimension>. +\li Si vous sp\'ecifiez |spread| \<dimension>, la hauteur de la vbox sera +sa hauteur naturelle plus \<dimension>, c'est-\`a-dire, +que la hauteur de la vbox sera \'etir\'ee verticalement de \<dimension>. +\endulist +\noindent +Pour |\vtop|, +\TeX\ construit la bo\^\i te en utilisant ses r\`egles pour |\vbox| et ensuite +r\'epartit l'extension verticale entre la hauteur et la profondeur comme +d\'ecrit ci-dessous. + +Normalement, la largeur d'une vbox construite est la largeur de l'\'el\'e\-ment le plus +large contenu\footnote +{Plus pr\'ecis\'ement, c'est la distance du point de r\'ef\'erence au cot\'e le plus \`a +droite de la vbox construite. Par cons\'equent, +si vous d\'eplacez un des \'el\'ements vers la droite en utilisant ^|\moveright| ou +^|\moveleft| (avec une distance n\'egative), +la vbox construite pourra \^etre plus large.}. +Les r\`egles de r\'epartitions de l'extension verticale entre la +hauteur et la profondeur sont plus compliqu\'ees~: +\ulist +\li Pour |\vtop|, +la hauteur est la hauteur de son premier \'el\'ement, si cet \'el\'ement est une bo\^\i te ou un filet. +Autrement la hauteur est \`a z\'ero. La profondeur est toute extension verticale +restante quand la hauteur a \'et\'e enlev\'ee. +\li Pour |\vbox|, +la profondeur est la profondeur de son dernier \'el\'ement, si cet \'el\'ement est une bo\^\i te ou un filet. +Autrement la profondeur est \`a z\'ero. La hauteur est toute extension verticale +restante quand la profondeur a \'et\'e enlev\'ee% +\footnote{En fait, il y a une complication suppl\'ementaire. +Supposez qu'apr\`es que la profondeur ait \'et\'e d\'etermin\'ee +en utilisant les deux r\`egles pr\'ec\'edentes, la profondeur devienne plus grande que +^|\boxmaxdepth|. +Alors la profondeur est r\'eduite \`a |\boxmaxdepth| et la hauteur est ajust\'ee +en cons\'equence.}. +\endulist + +La commande |\vfil| (\xref\vfil) est pratique pour remplir une vbox +^^|\vfil//remplir une vbox| +avec de l'espace vide quand le mat\'eriel dans la bo\^\i te n'est pas aussi grand que +l'extention verticale de la bo\^\i te. +\example +\hbox{\hsize = 10pc \raggedright\parindent = 1em +\vtop{In this example, we see how to use vboxes to +produce the effect of double columns. Each vbox +contains two paragraphs, typeset according to \TeX's +usual rules except that it's ragged right.\par +This isn't really the best way to get true double +columns because the columns} +\hskip 2pc +\vtop{\noindent +aren't balanced and we haven't done anything to choose +the column break automatically or even to fix up the +last line of the first column.\par +However, the technique of putting running text into a +vbox is very useful for placing that text where you +want it on the page.}} +| +\produces +\hbox{\hsize = 10pc \raggedright\parindent = 1em +\vtop{In this example, we see how to use vboxes to +produce the effect of double columns. Each vbox +contains two paragraphs, typeset according to \TeX's +usual rules except that it's ragged right.\par + +This isn't really the best way to get true double +columns because the columns} +\hskip 2pc +\vtop{\noindent +aren't balanced and we haven't done anything to choose +the column break automatically or even to fix up the +last line of the first column.\par + +However, the technique of putting running text into a +vbox is very useful for placing that text where you +want it on the page.}} +\nextexample +\hbox{\hsize = 1in \raggedright\parindent = 0pt +\vtop to .75in{\hrule This box is .75in deep. \vfil\hrule} +\qquad +\vtop{\hrule This box is at its natural depth. \vfil\hrule} +\qquad +\vtop spread .2in{\hrule This box is .2in deeper than + its natural depth.\vfil\hrule}} +| +\produces +\hbox{\hsize = 1in \raggedright\parindent=0pt +\vtop to .75in{\hrule This box is .75in deep. \vfil\hrule} +\qquad +\vtop{\hrule This box is at its natural depth. \vfil\hrule} +\qquad +\vtop spread .2in{\hrule This box is .2in deeper than + its natural depth.\vfil\hrule}} +\nextexample +% See how \vbox lines up boxes at their bottoms +% instead of at their tops. +\hbox{\hsize = 1in \raggedright +\vbox to .5in{\hrule This box is .5in deep.\vfil\hrule} +\qquad +\vbox to .75in{\hrule This box is .75in deep.\vfil\hrule}} +| +\produces +\hbox{\hsize = 1in \raggedright +\vbox to .5in{\hrule This box is .5in deep.\vfil\hrule} +\qquad +\vbox to .75in{\hrule This box is .75in deep.\vfil\hrule}} +\vskip 16pt % to avoid running into the next command description +\endexample +\enddesc + +\begindesc +\margin{Two commands interchanged here.} +\cts boxmaxdepth {\param{dimension}} +\explain +Ce param\`etre contient une dimension $D$. +\TeX\ ne construira pas une bo\^\i te dont la profondeur d\'epassera $D$. +Si vous produisez une bo\^\i te dont la profondeur $d$ doit d\'epasser $D$, +\TeX\ transf\`erera la +profondeur exc\'edentaire dans la hauteur de la bo\^\i te, en abaissant en r\'ealit\'e le +\minref{point de r\'ef\'erence} de la bo\^\i te de $d-D$. +Si vous mettez |\boxmaxdepth| \`a z\'ero, \TeX\ alignera une rang\'ee de vbox +de telle mani\`ere que leurs fronti\`eres du bas seront toutes sur la m\^eme ligne horizontale. +\PlainTeX\ met |\boxmaxdepth| \`a |\maxdimen| \ctsref{\maxdimen}, +donc |\boxmaxdepth| n'affectera pas vos bo\^\i tes \`a moins que vous le changiez. +\enddesc + +\begindesc +\cts underbar {\<argument>} +\explain +Cette commande met \<argument> dans une \minref{hbox} +et la souligne sans faire attention \`a tout ce que d\'epasse sous la +\minref{ligne de base} de la bo\^\i te. +\example +\underbar{Why not learn \TeX?} +| +\produces +\underbar{Why not learn \TeX?} +\endexample +\enddesc + +\begindesc +\cts everyhbox {\param{liste de token}} +\cts everyvbox {\param{liste de token}} +\explain +Ces param\`etres contiennent des liste de token que \TeX\ d\'eveloppe au d\'ebut de +toutes \minref{hbox} ou \minref{vbox} qu'il construit. +Tout \'el\'ement r\'esultant de l'expansion devient alors +le d\'ebut de la liste d'\'el\'ements pour la bo\^\i te. +Par d\'efaut, ces listes de token sont vides. +\enddesc + +%========================================================================== +\subsection {Remplir et r\'ecuperer le contenu de bo\^\i tes} + +\begindesc +\bix^^{registres de \boite} +% +\cts setbox {\<registre>\thinspace{\bt =}\thinspace\<bo\^\i te>} +\cts box {\<registre>} +\explain +^^{assignements//de \boites} +Ces commandes remplissent et r\'ecup\`erent respectivement le contenu +du registre de bo\^\i te +dont le num\'ero est \<registre>. +Notez que vous remplissez un registre de bo\^\i te d'une mani\`ere un peu diff\'erente de celle +utilis\'ee pour les autres types de registres~: vous utilisez +|\setbox|$\,n$~|=| plut\^ot que |\box|$\,n$~|=|. + +\emph{R\'ecup\'erer le contenu d'un registre de bo\^\i te +avec ces commandes a l'effet secondaire d'enlever ce qu'il contient, +donc le registre de bo\^\i te devient vide.} Si vous ne voulez pas que cela arrive, +vous pouvez utiliser |\copy| (voir ci-dessous) pour r\'ecup\'erer le contenu. +Vous devez utiliser |\box| de pr\'ef\'erence \`a |\copy| +quand vous n'avez plus besoin du contenu d'un registre de bo\^\i te apr\`es l'avoir utilis\'e, +de mani\`ere \`a ne pas augmenter la m\'emoire de \TeX\ en la remplissant avec des bo\^\i tes obsol\`etes. +\example +\setbox0 = \hbox{mushroom} +\setbox1 = \vbox{\copy0\box0\box0} +\box1 +| +\produces +\setbox0 = \hbox{mushroom} +\setbox1 = \vbox{\copy0\box0\box0} +\box1 +\endexample +\enddesc + +\begindesc +\cts copy {\<registre>} +\explain +^^{\boites//copie}\minrefs{box} +Cette commande +produit une copie d'un registre de bo\^\i te \<registre>. +Cette commande est utile quand vous voulez r\'ecup\'erer le contenu d'un registre +de bo\^\i te mais ne voulez pas en d\'etruire le contenu. +(R\'ecup\'erer le contenu d'un registre avec ^|\box| rend le registre vide.) +\example +\setbox0 = \hbox{good } +Have a \copy0 \box0 \box0 day!! +| +\produces +\setbox0 = \hbox{good } +Have a \copy0 \box0 \box0 day! +\endexample +\enddesc + +\begindesc +\cts unhbox {\<registre>} +\cts unvbox {\<registre>} +^^{\boites//extraction de contenu de} +\explain +Ces commandes produisent la liste contenue dans un registre de bo\^\i te \<registre> et rend +ce registre de bo\^\i te vide. +|\unhbox| s'applique aux registres de bo\^\i te contenant +des hbox et |\unvbox| s'applique aux registres de bo\^\i te contenant des vbox. +Vous devez utiliser ces commandes en pr\'ef\'erence \`a |\unhcopy| et |\unvcopy| +(voir ci-dessous) +quand vous n'avez pas besoin de ce qu'il y a dans le registre de bo\^\i te apr\`es l'avoir utilis\'e, +de mani\`ere \`a ne pas augmenter la m\'emoire de \TeX\ en la remplissant avec des bo\^\i tes obsol\`etes. +\example +\setbox0=\hbox{The Mock Turtle sighed deeply, and +drew the back of one flapper across his eyes. } +\setbox1=\hbox{He tried to speak, but sobs choked + his voice. } +\unhbox0 \unhbox1 +% \box0 \box1 would set two hboxes side by side +% (and produce a badly overfull line). +\box1 % produces nothing +| +\produces +\setbox0=\hbox{The Mock Turtle sighed deeply, and +drew the back of one flapper across his eyes. } +\setbox1=\hbox{He tried to speak, but sobs choked + his voice. } +\unhbox0 \unhbox1 +% \hbox0 \hbox1 would set two hboxes side by side +% (and produce a badly overfull line). +\box1 % Produces nothing. +\endexample +\enddesc + +\begindesc +\cts unhcopy {\<registre>} +\cts unvcopy {\<registre>} +^^{\boites//extraction du contenu de} +^^{\boites//copie}\minrefs{box} +\explain +Ces commandes produisent la liste contenue dans un registre de bo\^\i te \<registre> et +sans d\'eranger le contenu des registres. +|\unhbox| s'applique aux registres de bo\^\i te contenant +des hbox et |\unvbox| s'applique aux registres de bo\^\i te contenant des vbox. +\example +\setbox0=\hbox{The Mock Turtle sighed deeply, and +drew the back of one flapper across his eyes. } +\setbox1=\hbox{He tried to speak, but sobs choked his + voice. } +\unhcopy0 \unhcopy1\par\noindent +% \box0 \box1 would set two hboxes side by side +% (and produce a badly overfull line). +\box1 % Produces an hbox (which can't be broken). +| +\produces +\setbox0=\hbox{The Mock Turtle sighed deeply, and +drew the back of one flapper across his eyes. } +\setbox1=\hbox{He tried to speak, but sobs choked his + voice. } +\unhcopy0 \unhcopy1\par\noindent +% \hbox0 \hbox1 would set two hboxes side by side +% (and produce a badly overfull line). +\box1 % produces an hbox (which can't be broken) +\endexample +\enddesc + +\see |\wd|, |\dp|, |\ht| (\xref\ht). +\eix^^{registres de \boite} + +%========================================================================== +\subsection {D\'eplacer des bo\^\i tes} + +\begindesc +\cts moveleft {\<dimension> \<bo\^\i te>} +\cts moveright {\<dimension> \<bo\^\i te>} +\bix^^{\boites//d\'eplacement} +\minrefs{box} +\explain +Ces commandes d\'eplacent \<bo\^\i te> \`a gauche ou \`a droite de \<dimension> (qui peut \^etre +n\'egatif). Vous ne pouvez appliquer |\moveleft| et |\moveright| qu'\`a des bo\^\i tes +qui sont dans une \minref{liste verticale}. +\example +\vbox{\vbox{Phoebe}\vbox{walked}% +\moveleft 20pt\vbox{a}\moveright 20pt\vbox{crooked}% +\vbox{mile.}} +| +\produces +\hfuzz = \maxdimen +\vbox{\vbox{Phoebe}\vbox{walked}% +\moveleft 20pt\vbox{a}\moveright 20pt\vbox{crooked}% +\vbox{mile.}} +\endexample +\enddesc + +\begindesc +\cts lower {\<dimension> \<bo\^\i te>} +\cts raise {\<dimension> \<bo\^\i te>} +\explain +Ces commandes d\'eplacent \<bo\^\i te> en haut ou en bas de \<dimension> +(qui peut \^etre n\'egatif). +Vous ne pouvez appliquer |\moveleft| et |\moveright| qu'\`a des bo\^\i tes +qui sont dans une \minref{liste horizontale}. +\example +Are you feeling \lower 6pt \hbox{depressed} about the + \raise 6pt \hbox{bump} on your nose? +| +\produces +Are you feeling \lower 6pt \hbox{depressed} about the + \raise 6pt \hbox{bump} on your nose? +\endexample + +\eix^^{\boites//d\'eplacement} +\enddesc + +%========================================================================== +\subsection {Dimensions des registres de bo\^\i tes} + +\begindesc +\bix^^{registres de \boite} +\bix^^{dimensions//de registres de \boite} +\cts ht {\<registre>\param{dimension}} +\cts dp {\<registre>\param{dimension}} +\cts wd {\<registre>\param{dimension}} +\explain +Ces param\`etres font r\'ef\'erence \`a la ^{hauteur}, la ^{profondeur} et la ^{largeur} +respectivement du \minref{registre} de \minref{bo\^\i te} \<registre>. +Vous pouvez les utiliser pour conna\^\i tre les dimensions d'une bo\^\i te. +Vous pouvez aussi changer les dimensions d'une bo\^\i te, mais ce n'est pas une mince affaire~; +si vous voulez \^etre aventureux vous pouvez +apprendre tout sur cela dans les \ +{pages~388--389}{448--449}. +\example +\setbox0 = \vtop{\hbox{a}\hbox{beige}\hbox{bunny}}% +The box has width \the\wd0, height \the\ht0, +and depth \the\dp0. +| +\produces +\setbox0 = \vtop{\hbox{a}\hbox{beige}\hbox{bunny}}% +The box has width \the\wd0, height \the\ht0, +and depth \the\dp0. +\endexample +\eix^^{registres de \boite} +\eix^^{dimensions//de registres de \boite} +\enddesc + +%========================================================================== +\subsection {Struts, fantomes et bo\^\i tes vides} + +\begindesc +\margin{This subsection is a merger of two previous subsections. +The commands have also been reordered.} +\bix^^{struts} +\cts strut {} +\explain +Cette commande produit une bo\^\i te dont la largeur est \`a z\'ero +et dont la hauteur (|8.5pt|) et la profondeur (|3.5pt|) +sont celles d'une ligne de caract\`ere plus ou moins en |cmr10|, +la police par d\'efaut de \plainTeX. +Son utilisation principale est de forcer des lignes \`a avoir la m\^eme hauteur +quand vous avez d\'ebranch\'e le ressort inter-ligne de \TeX\ avec +|\offinter!-lineskip| ^^|\offinterlineskip| ou une commande similaire, +par exemple, quand vous construisez un alignement. +Si la hauteur naturelle d'une ligne est +trop petite, vous pouvez la ramener au standard en incluant un |\strut| +dans la ligne. Le strut forcera la hauteur et la profondeur de la ligne +\`a \^etre plus grande, mais il n'imprime rien ni ne consomme aucun espace +horizontal. + +Si vous mettez des caract\`eres d'une police qui est plus grande ou plus petite que |cmr10|, +vous devez red\'efinir |\strut| pour ce contexte. +\example +\noindent % So we're in horizontal mode. +\offinterlineskip % So we get the inherent spacing. +% The periods in this vbox are not vertically equidistant. +\vtop{\hbox{.}\hbox{.(}\hbox{.x} + \hbox{.\vrule height 4pt depth 0pt}}\qquad +% The periods in this vbox are vertically equidistant +% because of the struts. +\vtop{\hbox{.\strut}\hbox{.(\strut}\hbox{.x\strut} + \hbox{.\vrule height 4pt depth 0pt\strut}} +| +\produces +\noindent % So we're in horizontal mode. +\offinterlineskip % So we get the inherent spacing. +% The periods in this vbox are not vertically equidistant. +\vtop{\hbox{.}\hbox{.(}\hbox{.x} + \hbox{.\vrule height 4pt depth 0pt}}\qquad +% The periods in this vbox are vertically equidistant +% because of the struts. +\vtop{\hbox{.\strut}\hbox{.(\strut}\hbox{.x\strut} + \hbox{.\vrule height 4pt depth 0pt\strut}} +\endexample +\enddesc + +\begindesc +\cts mathstrut {} +\explain +Cette commande produit une formule fant\^ome dont la largeur est \`a z\'ero +et dont la largeur et la hauteur sont les m\^emes que celle d'une parenth\`ese gauche. +|\mathstrut| est en fait d\'efini comme `|\vphantom(|'. +Son utilisation principale est d'obtenir des radicaux, soulign\'es et surlign\'es align\'es +avec d'autres radicaux, soulign\'es et surlign\'es d'une formule. +C'est un peu comme ^|\strut| (\xref \strut), +sauf qu'il s'ajuste lui-m\^eme aux diff\'erents \minref{style}s +qui peuvent appara\^\i tre dans une formule math\'ematique. +\example +$$\displaylines{ +\overline{a_1a_2} \land \overline{b_1b_2} +\quad{\rm versus}\quad \overline{a_1a_2\mathstrut} + \land \overline{b_1b_2\mathstrut}\cr +\sqrt{\epsilon} + \sqrt{\xi} \quad{\rm versus}\quad +\sqrt{\epsilon\mathstrut} + \sqrt{\xi\mathstrut}\cr}$$ +| +\dproduces +\kern 4pt +$$\displaylines{ +\overline{a_1a_2} \land \overline{b_1b_2} +\quad{\rm versus}\quad \overline{a_1a_2\mathstrut} + \land \overline{b_1b_2\mathstrut}\cr +\sqrt{\epsilon} + \sqrt{\xi} \quad{\rm versus}\quad +\sqrt{\epsilon\mathstrut} + \sqrt{\xi\mathstrut}\cr}$$ +\endexample +\eix^^{struts} +\enddesc + +\begindesc +\cts phantom {\<argument>} +\explain +\bix^^{\boites//fant\^ome} +\bix^^{fant\^omes} +Cette commande produit une \minref{bo\^\i te} vide +ayant la m\^eme taille et placement +que \<argument> aurait s'il \'etait compos\'e. +Une utilisation de |\phantom| est de r\'eserver de l'espace pour un symbole qui pour certaines +raisons demande \`a \^etre dessin\'e \`a la main. +\example +$1\phantom{9}2$ +| +\produces +$1\phantom{9}2$ +\endexample +\enddesc + +\begindesc +\cts hphantom {\<argument>} +\cts vphantom {\<argument>} +\explain +Ces commandes produisent des bo\^\i tes\minrefs{bo\^\i te}\ fant\^ome qui +n'impriment rien~: +\ulist\compact +\li |\hphantom| produit une bo\^\i te avec la m\^eme largeur que \<argument> +mais de hauteur et profondeur z\'ero. +\li |\vphantom| produit une bo\^\i te avec les m\^emes hauteur et profondeur que \<argu\-ment> +mais de largeur z\'ero. +\endulist +\noindent +Leur usage principal est de forcer une sous-formule \`a avoir un dimension +horizontale ou verticale minimum. +\example +$$\left[\vphantom{u\over v}t\right] \star + \left[{u\over v}\right]\quad + \{\hphantom{xx}\}$$ +| +\dproduces +\kern 4pt +$$\left[\vphantom{u\over v}t\right] \star + \left[{u\over v}\right]\quad + \{\hphantom{xx}\}$$ +\endexample +\enddesc + +\begindesc +\cts smash {\<argument>} +\explain +Cette commande compose \<argument>, +mais force la hauteur et la profondeur de sa \minref{bo\^\i te} contenante \`a z\'ero. +Vous pouvez utiliser |\smash| et |\vphantom| en combinaison pour donner \`a une sous-formule +toutes hauteurs et profondeurs que vous d\'esirez. +\example +$${\smash{r_m \brace r_n}\vphantom{r}} \Longrightarrow r$$ +| +\dproduces +\kern 4pt +$${\smash{r_m \brace r_n}\vphantom{r}} \Longrightarrow r$$ +\endexample +\eix^^{\boites//fant\^ome} +\eix^^{fant\^omes} +\enddesc + +\begindesc +^^{\boites//vides} +\cts null {} +\explain +Cette commande produit une \minref{hbox} vide. +\example +\setbox0 = \null +The null box \null has width \the\wd0, height \the\ht0, +and depth \the\dp0. +| +\produces +\setbox0 = \null +The null box \null has width \the\wd0, height \the\ht0, +and depth \the\dp0. +\endexample +\enddesc + + +%========================================================================== +\subsection {Param\`etres faisant partie des bo\^\i tes mal form\'ees} + +\begindesc +\bix^^{\boites//overfull} +\bix^^{\boites//underfull} +\cts overfullrule {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie la largeur du filet +que \TeX\ positionne pour un ``overfull \minref{hbox}''. +\PlainTeX\ le met \`a |5pt|. +\enddesc + +\begindesc +\cts hbadness {\param{nombre}} +\cts vbadness {\param{nombre}} +\explain +Ces param\`etres sp\'ecifient les seuils de \minref{badness} horizontal +et vertical pour rapporter des ``underfull'' ou ``overfull boxes'' +|\hbadness| s'applique aux hbox et |\vbadness| s'applique aux vbox. +Si la m\'ediocrit\'e d'une bo\^\i te construite d\'epasse le seuil, +\TeX\ reportera une erreur. Si vous augmentez les seuils +(les valeurs par d\'efaut de \plainTeX\ sont de $1000$), +\TeX\ sera moins amen\'e \`a se plaindre. +Notez que les valeurs de |\hbadness| et |\vbadness| n'ont pas d'effet sur +l'apparence de votre document compos\'e~; ils n'affectent que le message d'erreur +que vous obtenez. +Voir la \knuth{page~302}{353} pour une description pr\'ecise +sur comment \TeX\ d\'ecide quand se plaindre d'``overfull'' ou d'``underfull +box''. + +\margin{The material on tolerance was inappropriate here and has been +removed. A new example replaces it.} +\example +\hbadness = 10000 % Suppress any hbadness complaints. +\hbox to 2in{a b}\par +\hbadness = 500 % Report hbadness exceeding 500. +\hbox to 2in{a\hskip 0pt plus .5in b} +| +\logproduces +Underfull \hbox (badness 5091) detected at line 4 +\tenrm a b + +\hbox(6.94444+0.0)x144.54, glue set 3.70787 +.\tenrm a +.\glue 0.0 plus 36.135 +.\tenrm b +| +\endexample +\enddesc + +\begindesc +\cts badness {} +\explain +Cette commande donne la valeur num\'erique de la m\'ediocrit\'e de la \minref{bo\^\i te} +(aussi bien horizontale que verticale) que \TeX\ a le plus r\'ecemment produit. +Si la bo\^\i te \'etait ``overfull'', |\badness| sera de $1000000$~; dans tous les autres cas +il sera entre $0$ et $10000$. +\enddesc + +\begindesc +\cts hfuzz {\param{dimension}} +\cts vfuzz {\param{dimension}} +\explain +Ces param\`etres sp\'ecifient les valeurs dont une +\minref{bo\^\i te} peut d\'epasser sa taille naturelle avant que \TeX\ la consid\`ere comme +\'etant overfull. ^^{\boites//overfull} +|\hfuzz| s'applique aux hbox et |\vfuzz| s'applique aux vbox. +\PlainTeX\ met ces deux param\`etres \`a |0.1pt|. +\example +\hfuzz = .5in +\hbox to 2in{This box is longer than two inches.} +% No error results +| +\produces +\hfuzz = .5in +\hbox to 2in{This box is longer than two inches.} +% No error results +\doruler{\8\8\8}3{in} +\endexample + +\eix^^{\boites//overfull} +\eix^^{\boites//underfull} +\eix^^{commandes de \boites} +\enddesc + +\see |\tolerance| \ctsref{\tolerance}. +%========================================================================== +\section {Retrouver le dernier \'el\'ement d'une liste} + +\begindesc +^^{\boites//derni\`ere \boite\ dans une liste} +^^{cr\'enages//dernier cr\'enage dans une liste} +^^{p\'enalit\'es//derni\`ere p\'enalit\'e dans une liste} +^^{ressort//dernier \'el\'ement de ressort dans une liste} +\margin{This section has been moved in its entirety from the chapter +(`Commands for general operations')} +\cts lastkern {} +\cts lastskip {} +\cts lastpenalty {} +\cts lastbox {} +\explain +Ces s\'equences de contr\^ole donnent la valeur du dernier \'el\'ement de la liste +courante. Ce ne sont pas de vraies commandes parce qu'elles ne peuvent appara\^\i tre que +comme partie d'un argument. +Si le dernier \'el\'ement de la liste n'est pas du type indiqu\'e, +elles donnent une valeur z\'ero (ou une bo\^\i te vide, dans le cas de |\lastbox|). +Par exemple, +si le dernier \'el\'ement de la liste courante est un \minref{cr\'enage}, +|\lastkern| donne la dimension de ce cr\'enage~; si ce +n'est pas un cr\'enage, il donne une dimension de $0$. + +Utiliser |\lastbox| a l'effet suppl\'ementaire d'enlever la derni\`ere bo\^\i te de +la liste. +Si vous voulez que le |\last!-box| original reste dans la liste, vous +devez en ajouter une copie dans la liste. +|\last!-box| n'est pas permise dans une liste math\'ematique ou dans la liste +verticale~principale. + +Ces s\'equences de contr\^ole sont +plus utiles apr\`es des appels de macro qui peuvent avoir ins\'er\'e des entit\'es +du genre indiqu\'e. + +\example +\def\a{two\kern 15pt} +one \a\a\hskip 2\lastkern three\par +% Get three times as much space before `three'. +\def\a{\hbox{two}} +one \a +\setbox0 = \lastbox % Removes `two'. +three \box0. +| +\produces +\def\a{two\kern 15pt} +one \a\a\hskip 2\lastkern three\par +% get three times as much space before `three' +\def\a{\hbox{two}} +one \a +\setbox0 = \lastbox % removes `two' +three \box0. +\endexample +\enddesc + +\begindesc +\cts unkern {} +\cts unskip {} +\cts unpenalty {} +\explain +Si le dernier \'el\'ement de la liste courante est de type \minref{cr\'enage}, +\minref{ressort} ou \minref{p\'enalit\'e} respectivement, ces commandes l'enl\`event +de cette liste. Si l'\'el\'ement n'est pas du bon type, ces commandes n'ont +pas d'effet. Comme ^|\lastbox|, vous ne pouvez pas les appliquer \`a des listes en +mode math\'ema\-tique ou \`a la liste verticale principale. +Ces commandes +sont plus pratiques apr\`es un appel de macro connu pour avoir ins\'er\'e +un \'el\'ement sp\'ecifique que vous ne voulez pas ici. +\TeX\ ne procure pas de commande ^|\unbox| parce que |\lastbox| produit +\`a peu pr\`es le m\^eme effet. +\enddesc + + +%========================================================================== +\section {filets et r\`eglures} + +\begindesc +\bix^^{filets} +\bix^^{filets horizontaux} +\bix^^{filets verticaux} +% +\cts hrule {} +\aux\cts hrule {\bt height \<dimension> width \<dimension> depth \<dimension>} +\cts vrule {} +\aux\cts vrule {{\bt width \<dimension> height \<dimension> depth \<dimension>}} +\explain +La commande |\hrule| produit un filet horizontal. La commande |\vrule| +produit un filet vertical. Vous pouvez sp\'ecifier tout ou une partie des largeur, +hauteur et profondeur du filet---\TeX\ apporte des valeurs par d\'efaut pour celles +que vous omettez. Vous pouvez donner les dimensions du filet dans n'importe quel ordre~; +les formes list\'ees ci-dessus vous montrent simplement deux combinaisons possibles. Vous +pouvez m\^eme donner une dimension d'un type donn\'e plus d'une fois---si vous le faites, +la derni\`ere sera celle qui sera prise en compte. + +Si vous ne sp\'ecifiez pas la largeur d'un filet horizontal, le filet est +\'etendu horizontalement jusqu'aux limites de la \minref{bo\^\i te} ou de +l'\minref{alignement} le plus interne qui contient le filet. Si vous ne sp\'ecifiez pas +la hauteur d'un filet horizontal, elle sera par d\'efaut de |0.4pt|~; si vous ne +sp\'ecifiez pas la profondeur d'un filet horizontal, elle sera par d\'efaut de |0pt|. + +Si vous ne sp\'ecifiez pas la largeur d'un filet vertical, elle sera par d\'efaut de +|0.4pt|. Si vous ne sp\'ecifiez pas la hauteur d'un filet vertical, +le filet est \'etendu jusqu'aux limites de la \minref{bo\^\i te} ou de +l'\minref{alignement} le plus interne qui contient le filet. + +\TeX\ traite un filet horizontal comme un \'el\'ement naturellement vertical +et un filet vertical comme un \'el\'ement naturellement horizontal. +Donc un filet horizontal n'est l\'egal qu'en \minref{mode vertical}, +Tandis qu'un filet vertical n'est l\'egal qu'en \minref{mode horizontal}. +^^{mode horizontal//filets en} +^^{mode vertical//filets en} +Si cela semble surprenant, visualisez le---un filet horizontal va +de gauche \`a droite et s\'epare des \'el\'ements verticaux dans une s\'equence, tandis +qu'un filet vertical va de haut en bas et +s\'epare des \'el\'ements horizontaux dans une s\'equence. + +\example +\hrule\smallskip +\hrule width 2in \smallskip +\hrule width 3in height 2pt \smallskip +\hrule width 3in depth 2pt +| +\produces +\medskip +\hrule\smallskip +\hrule width 2in \smallskip +\hrule width 3in height 2pt \smallskip +\hrule width 3in depth 2pt +\nextexample +% Here you can see how the baseline relates to the +% height and depth of an \hrule. +\leftline{ + \vbox{\hrule width .6in height 5pt depth 0pt} + \vbox{\hrule width .6in height 0pt depth 8pt} + \vbox{\hrule width .6in height 5pt depth 8pt} + \vbox{\hbox{ baseline}\kern 3pt \hrule width .6in} +} +| +\produces +\medskip +\leftline{ + \vbox{\hrule width .6in height 5pt depth 0pt} + \vbox{\hrule width .6in height 0pt depth 8pt} + \vbox{\hrule width .6in height 5pt depth 8pt} + \vbox{\hbox{ baseline}\kern 3pt \hrule width .6in} +} +\nextexample +\hbox{( {\vrule} {\vrule width 8pt} )} +\hbox {( {\vrule height 13pt depth 0pt} + {\vrule height 13pt depth 7pt} x)} +% the parentheses define the height and depth of each of the +% two preceding boxes; the `x' sits on the baseline +| +\produces +\medskip +\hbox{( {\vrule} {\vrule width 8pt} )} +\hbox {( {\vrule height 13pt depth 0pt} + {\vrule height 13pt depth 7pt} x)} +\endexample + +\eix^^{filets} +\eix^^{filets horizontaux} +\eix^^{filets verticaux} +\enddesc + +\begindesc +\bix^^{r\`eglures} +\easy\cts leaders {\<bo\^\i te ou filet> \<commande de saut>} +\cts cleaders {\<bo\^\i te ou filet> \<commande de saut>} +\cts xleaders {\<bo\^\i te ou filet> \<commande de saut>} +\explain +Ces commandes produisent des \minref{r\'eglures}, c'est-\`a-dire, qu'elles remplissent un +espace horizontal ou vertical avec des +copies d'un motif \seeconcept{filets}. +La \<bo\^\i te> ou le \<filet> sp\'ecifie une r\'eglure, +c'est-\`a-dire, une seule copie du motif, +tandis que la \<commande de saut> sp\'ecifie une +fen\^etre devant \^etre remplie avec une +rang\'ee ou une colonne de r\'eglures. +Le motif est r\'ep\'et\'e autant de fois qu'il peut rentrer dans la fen\^etre. +Si \<commande de saut> est un saut horizontal, la fen\^etre +contient une rang\'ee de r\'eglures et \TeX\ doit \^etre en mode horizontal~; +si \<commande de saut> est un saut vertical, la fen\^etre +contient une colonne de r\'eglures et \TeX\ doit \^etre en mode vertical. + +Les commandes diff\`erent dans leur fa\c con d'arranger le motif r\'ep\'et\'e +et o\`u elles mettent l'espace restant~: + +\ulist\compact +\li Pour |\leaders|, \TeX\ aligne une rang\'ee de r\'eglures avec la limite gauche de +la \minref{bo\^\i te} $B$ la plus interne qui contient le r\'esultat de la +commande |\leaders|. +Elle aligne une colonne de r\'eglures avec le haut de $B$. +Ces r\'eglures qui tombent enti\`erement dans la fen\^etre sont gard\'ees. +Tout espace en plus en haut et en bas de la fen\^etre est laiss\'e vide. +\li Pour |\cleaders|, les r\'eglures sont centr\'ees dans la fen\^etre. +\li Pour |\xleaders| le motif est uniform\'ement distribu\'e \`a travers la fen\^etre. +Si l'espace en plus est $l$ et que la r\'eglure est r\'ep\'et\'ee $n$ fois, +\TeX\ met de l'espace de largeur ou hauteur $l/(n+1)$ entre des r\'eglures adjacentes et +aux deux bouts (gauche et droite ou haut et bas) des r\'eglures. +\endulist + +\example +\def\pattern{\hbox to 15pt{\hfil.\hfil}} +\line{Down the Rabbit-Hole {\leaders\pattern\hfil} 1} +\line{The Pool of Tears {\leaders\pattern\hfil} 9} +\line{A Caucus-Race and a Long Tale {\cleaders\pattern + \hfil} 19} +\line{Pig and Pepper {\xleaders\pattern\hfil} 27} +| +\produces +\def\pattern{\hbox to 15pt{\hfil.\hfil}}\par +\line{Down the Rabbit-Hole {\leaders\pattern\hfil} 1} +\line{The Pool of Tears {\leaders\pattern\hfil} 9} +\line{A Caucus-Race and a Long Tale {\cleaders\pattern + \hfil} 19} +\line{Pig and Pepper {\xleaders\pattern\hfil} 27} +\nextexample +\def\bulletfill{\vbox to 3ex{\vfil\hbox{$\bullet$}\vfil}}% +\def\mybox{\vbox to 1in} +\def\myrule{\hrule width 4pt}\hsize=2in +\hrule \line{% + \mybox{\myrule depth 8pt \leaders\bulletfill\vfill} + \hfil + \mybox{\myrule depth 15pt \leaders\bulletfill\vfill} + \hfil + \mybox{\myrule depth 18pt \cleaders\bulletfill\vfill} + \hfil + \mybox{\myrule depth 12pt \xleaders\bulletfill\vfill}% +}\hrule +| +\produces +\medskip +\def\bulletfill{\vbox to 3ex{\vfil\hbox{$\bullet$}\vfil}}% +\def\mybox{\vbox to 1in}\def\myrule{\hrule width 4pt}\hsize=2in +\hrule \line{% + \mybox{\myrule depth 8pt \leaders\bulletfill\vfill} + \hfil + \mybox{\myrule depth 15pt \leaders\bulletfill\vfill} + \hfil + \mybox{\myrule depth 18pt \cleaders\bulletfill\vfill} + \hfil + \mybox{\myrule depth 12pt \xleaders\bulletfill\vfill}% +}\hrule +\endexample\enddesc + +\begindesc +\cts dotfill {} +\cts hrulefill {} +\explain +^^{remplissage} +Ces commandes remplissent respectivement l'espace horizontal englob\'e avec +une rang\'ee de points sur la ligne de base et avec +une ligne horizontale sur la ligne de base. +C'est habituellement une bonne id\'ee de laisser un espace entre +|\dotfill| ou |\hrulefill| +et le texte qui la pr\'ec\`ede ou la suit (voir l'exemple ci-dessous). +\example +\hbox to 3in{Start {\dotfill} Finish} +\hbox to 3in{Swedish {\hrulefill} Finnish} +| +\produces +\par\hbox to 3in{Start {\dotfill} Finish} +\hbox to 3in{Swedish {\hrulefill} Finnish} +\endexample\enddesc + +\begindesc +\cts leftarrowfill {} +\cts rightarrowfill {} +\explain +^^{remplissage} +Ces commandes remplissent l'espace horizontal englob\'e avec +des ^{fl\`eches} point\'ees vers la gauche ou vers la droite. +\example +\hbox to 3in{\vrule \rightarrowfill \ 3 in + \leftarrowfill\vrule} +| +\produces +\medskip +\hbox to 3in{\vrule \rightarrowfill \ 3 in + \leftarrowfill\vrule} +\endexample + +\eix^^{r\`eglures} +\enddesc + +%========================================================================== +\section {Alignements} + +%========================================================================== +\subsection {Alignements tabul\'es} + +\begindesc +\bix^^{alignements tabul\'es} +\bix^^{alignements//commandes pour} +% +\ctspecial + {{\bt \<texte>\thinspace\&\thinspace\<texte>% + \thinspace\& $\cdots$ \\cr}} +\ctsxrdef{@plus} +\cts tabalign {} +\explain +Ces commandes d\'ebutent une simple ligne dans un \minref{alignement} tabul\'e . +La seule diff\'erence entre |\+| et |\tabalign| est que +|\+| est une macro outer ---vous ne pouvez pas l'utiliser quand \TeX\ lit des tokens \`a +haute vitesse \seeconcept{outer}. + +Si vous placez un `|&|' \`a une position +\`a droite de toute tabulation existante dans un alignement tabul\'e, +le `|&|' \'etablit une nouvelle tabulation \`a cette position. +\example +\cleartabs % Nullify any previous \settabs. +\+ {\bf if }$a[i] < a[i+1]$ &{\bf then}&\cr +\+&&$a[i] := a[i+1]$;\cr +\+&&{\it found }$:=$ {\bf true};\cr +\+&{\bf else}\cr +\+&&{\it found }$:=$ {\bf false};\cr +\+&{\bf end if};\cr +| +\produces +\cleartabs % Nullify any previous \settabs. +\+ {\bf if }$a[i] < a[i+1]$ &{\bf then}&\cr +\+&&$a[i] := a[i+1]$;\cr +\+&&{\it found }$:=$ {\bf true};\cr +\+&{\bf else}\cr +\+&&{\it found }$:=$ {\bf false};\cr +\+&{\bf end if};\cr +\endexample +\enddesc + +\begindesc +\cts settabs {\<nombre> {\bt \\columns}} +\aux\cts settabs {{\bt \\+} \<ligne d'exemple> {\bt \\cr}} +\explain +La premi\`ere forme de +cette commande d\'efinit un jeu de tabulations d'arr\^et ^^{tabulations} +pour un \minref{alignement} tabul\'e. +Elle demande \`a \TeX\ de mettre les tabulations d'arr\^et de mani\`ere \`a diviser chaque ligne en +\<nombre> parties \'egales. \TeX\ prend la longueur d'une ligne comme \'etant +|\hsize|, normalement. Vous pouvez rendre l'alignement plus \'etroit en diminuant +|\hsize|. +\margin{paragraph ``The tab settings $\ldots$'' moved to below.} +\example +{\hsize = 3in \settabs 3 \columns +\+$1$&one&first\cr +\+$2$&two&second\cr +\+$3$&three&third\cr} +| +\produces +{\hsize = 3in \settabs 3 \columns +\+$1$ & one & first\cr +\+$2$ & two & second\cr +\+$3$ & three & third\cr} + +\noindent\doruler{\8\8\8}3{in} +\smallskip +\endexample + +La seconde forme de cette commande d\'efinit des tabulations d'arr\^et en mettant les tabulations d'arr\^et +aux positions indiqu\'ees par les `|&| dans la ligne d'exemple. +La ligne d'exemple elle-m\^eme ne doit pas appara\^\i tre dans la sortie. Quand vous +utilisez cette forme vous devrez normalement mettre du mat\'eriel dans la ligne d'exemple qui sera +un peu plus large que le plus large mat\'eriel correspondant dans l'alignement, +de mani\`ere \`a produire de l'espace entre les colonnes. +C'est ce que nous avons fait dans +l'exemple ci-dessous. Le mat\'eriel suivant la derni\`ere tabulation +d'arr\^et est inutile, puisqu'il n'a pas besoin de positionner +quoi que ce soit \`a l'endroit o\`u le |\cr|~appara\^\i t. + +Les r\'eglages de tabulation \'etablies par |\settabs| restent actifs jusqu'\'a +une nouvelle commande |\settabs| ou la fin du groupe contenant |\set!-tabs|. Ceci est vrai pour +les deux formes de la commande. + +\example +% The first line establishes the template. +\settabs \+$1$\qquad & three\quad & seventh\cr +\+$1$&one&first\cr +\+$2$&two&second\cr +\+$3$&three&third\cr +| +\produces +\settabs \+$1$\qquad & three\quad & seventh\cr % the sample line +\+$1$&one&first\cr +\+$2$&two&second\cr +\+$3$&three&third\cr +\smallskip +\endexample +\enddesc + +\begindesc + +\cts cleartabs {} +\explain +Cette commande efface toutes les tabulations \`a droite de la colonne courante. +Son utilisation principale est dans des applications telles que la composition de programme informatique +dans lesquels les positions de tabulation changent \`a chaque ligne. +\enddesc + +\see |\cr|, |\endline|, |\crcr| (\xref \endline). +\eix^^{alignements tabul\'es} + +%========================================================================== +\subsection {Alignement g\'en\'eraux} + +\begindesc +{\tighten +\cts halign {{\bt \rqbraces{\<pr\'eambule> \\cr \<rang> \\cr $\ldots$ \<rang> \\cr}}} + \xrdef{@and}\xrdef{@pound} +\aux\cts halign {{\bt to \<dimension>% + \rqbraces{\<pr\'eambule> \\cr \<rang> \\cr $\ldots$ \<rang> \\cr}}} +\aux\cts halign {{\bt spread \<dimension>% + \rqbraces{\<pr\'eambule> \\cr \<rang> \\cr $\ldots$ \<rang> \\cr}}} +\par} +\explain +Cette commande produit un \minref{alignement} horizontal constitu\'e d'une +suite de rang\'ees, o\`u chaque rang\'ee \`a son tour contient une suite +d'entr\'ee de colonne. \TeX\ ajuste les largeurs des entr\'ees de colonne +pour accommoder la plus large dans chaque colonne. + +Un alignement horizontal n'appara\^\i t que quand \TeX\ est dans un \minref{mode} +vertical. Nous vous recommandons d'apprendre les alignements en g\'en\'e\-ral +(\xref{alignement}) avant d'essayer d'utiliser la commande |\valign|. + +Un alignement consiste en un ^{pr\'eambule} +suivi par le texte \`a aligner. Le pr\'eambule, +qui d\'ecrit la forme des rang\'ees qui le suivent, consiste en une +suite de patrons de colonne, s\'epar\'es par `|&|' et termin\'e +par |\cr|. +\bix^^{patron} +\bix^^{entr\'ee (colonne ou rang\'ee)} +Chaque rang\'ee consiste en une suite d'entr\'ees +de ^{colonne}, s\'epar\'ees aussi par `|&|' et termin\'ees par |\cr|. Dans +un patron, `|#|' indique o\`u \TeX\ doit ins\'erer le +texte correspondant \`a l'entr\'ee de colonne. +Par contre, |\settabs| utilise un patron fixe implicite \`a `|#|', +c'est-\`a-dire, qu'il ins\`ere simplement le texte tel quel. + +\TeX\ compose chaque entr\'ee de colonne en mode horizontal restreint, +c'est-\`a-dire, comme le contenu d'une \minref{hbox}, +et englobe implicitement l'en\-tr\'ee dans un groupe. + +La forme |to| de cette commande demande \`a \TeX\ +d'\'etendre la largeur de l'alignement \`a \<dimension>, +en ajustant l'espace entre les colonnes. +La forme |spread| de cette commande demande \`a \TeX\ +d'agrandir l'alignement de \<dimension> par rapport \`a sa largeur naturelle. +Ces formes sont comme les formes correspondantes de |\hbox| \ctsref\hbox. + +Voir |\tabskip| \ctsref\tabskip{} pour un exemple d'utilisation de la +forme |to|. + +\example +\tabskip = 1em \halign{% + \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr + United States&Washington&dollar&1.00\cr + France&Paris&franc&0.174\cr + Israel&Jerusalem&shekel&0.507\cr + Japan&Tokyo¥&0.0829\cr} +| +\produces +\tabskip = 1em \halign{% + \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr + United States&Washington&dollar&1.00\cr + France&Paris&franc&0.174\cr + Israel&Jerusalem&shekel&0.507\cr + Japan&Tokyo¥&0.0829\cr} +\endexample +\enddesc + +\begindesc +{\tighten +\cts valign {{\bt \rqbraces{\<pr\'eambule>\\cr \<colonne>\\cr $\ldots$ + \<colonne>\\cr}}} +\aux\cts valign {{\bt to \<dimension>% + \rqbraces{\<pr\'eambule>\\cr \<colonne>\\cr $\ldots$ \<colonne>\\cr}}} +\aux\cts valign {{\bt spread \<dimension>% + \rqbraces{\<pr\'eambule>\\cr \<col.>\\cr $\ldots$ \<col.>\\cr}}} +\par} +\explain +Cette commande produit un \minref{alignement} vertical +constitu\'e d'une +suite de colonnes, o\`u chaque colonne \`a son tour contient une suite +d'entr\'ees de rang\'ee. +\TeX\ ajuste les hauteurs des entr\'ees de rang\'ee pour accommoder la plus longue +dans chaque rang\'ee. + +Un alignement vertical +n'appara\^\i t que quand \TeX\ est dans un \minref{mode} horizontal. +Puisque les alignements verticaux sont (a)~conceptuellement assez difficiles et +(b)~peu souvent utilis\'es, nous vous recommandons d'ap\-prendre les +alignements en g\'en\'eral +(\xref{alignement}) et la commande |\halign| (voir ci-dessus) avant +d'essayer d'utiliser la commande |\valign|. + +Un alignement consiste en un ^{pr\'eambule} +suivi par le texte \`a aligner. Le pr\'eambule, +qui d\'ecrit la forme des colonnes qui le suivent, +consiste en une +suite de patrons de rang\'ee, s\'epar\'es par `|&|' et termin\'e +par |\cr|. +\bix^^{patron} +Chaque colonne consiste en une suite d'entr\'ee +de ^{rang\'ee}, s\'epar\'ees aussi par `|&|' et termin\'ees par |\cr|. Dans +un patron, `|#|' indique o\`u \TeX\ doit ins\'erer le +texte correspondant \`a l'entr\'ee de rang\'ee. + +\TeX\ compose chaque entr\'ee de rang\'ee en mode vertical +interne, c'est-\`a-dire, comme le contenu d'une \minref{vbox}, +et englobe implicitement l'entr\'ee dans un groupe. +Il donne toujours \`a la vbox une profondeur \`a z\'ero. +Tout texte ou autre mat\'eriel en mode horizontal dans une entr\'ee de rang\'ee met alors \TeX\ +en mode horizontal ordinaire. +C'est juste une application des r\`egles g\'en\'erales du fonctionnement de \TeX\ +en mode vertical interne. +Les param\`etres de paragraphage habituels s'appliquent dans ce cas~: +l'entr\'ee de rang\'ee a une indentation +initiale de |\parindent| (\xref\parindent) et +les \minref{ressorts} +|\leftskip| et |\rightskip| (\xref\leftskip) +s'appliquent \`a ses lignes. + +Notez en particulier qu'une entr\'ee de rang\'ee contenant du texte a +une largeur de |\hsize| (\xref\hsize). A moins que vous mettiez +|\hsize| \`a la largeur de rang\'ee que vous voulez, vous rencontrerez +vraisemblablement des ``overfull \minref{hbox}'' ou trouverez que +la premi\`ere colonne occupe la largeur de la page enti\`ere, ou les deux. +\eix^^{entr\'ee (colonne ou rang\'ee)} + +Normalement, vous devrez inclure un \minref{strut} +^^{struts//dans des alignements verticaux} +dans chaque +patron pour que les rang\'ees n'apparaissent pas comme un r\'esultat +des hauteurs variables des entr\'ees de l'alignement. Vous +pouvez produire un strut avec la commande |\strut|. + +La forme |to| de cette commande demande \`a \TeX\ +d'\'etendre l'extension verticale de l'alignement \`a \<dimension>, +en ajustant l'espace entre les rang\'ees. +La forme |spread| de cette commande demande \`a \TeX\ +d'agrandir l'alignement de \<dimension> par rapport \`a sa hauteur naturelle. +Ces formes sont comme les formes correspondantes de |\vbox| \ctsref\vbox. + +\example +{\hsize=1in \parindent=0pt +\valign{#\strut&#\strut&#\strut&#\strut\cr + bernaise&curry&hoisin&hollandaise\cr + ketchup&marinara&mayonnaise&mustard\cr + rarebit&tartar\cr}} +| +\produces +{\hsize=1in \parindent=0pt \leftskip=0pt +\valign{#\strut&#\strut&#\strut&#\strut\cr + bernaise&curry&hoisin&hollandaise\cr + ketchup&marinara&mayonnaise&mustard\cr + rarebit&tartar\cr}} +\nextexample +% same thing but without struts (shows why you need them) +{\hsize=1in \parindent=0pt +\valign{#&#&#&#\cr + bernaise&curry&hoisin&hollandaise\cr + ketchup&marinara&mayonnaise&mustard\cr + rarebit&tartar\cr}} +| +\produces +{\hsize=1in \parindent=0pt \leftskip=0pt +\valign{#&#&#&#\cr + bernaise&curry&hoisin&hollandaise\cr + ketchup&marinara&mayonnaise&mustard\cr + rarebit&tartar\cr}} +\endexample +\enddesc + +\begindesc +\cts ialign {} +\explain +Cette commande r\'eagit comme ^|\halign|, +sauf qu'elle met d'abord le ressort |\tabskip| \`a z\'ero et +met |\everycr| \`a vide. +\enddesc + +\begindesc +\cts cr {} +\explain +Cette commande termine le pr\'eambule d'un alignement horizontal ou +vertical, une rang\'ee d'un alignement horizontal ou tabul\'e, +ou une colonne d'un alignement vertical. +Vous pouvez demander \`a \TeX\ de faire certaines actions \`a chaque fois qu'il rencontre un |\cr| +en chargeant la valeur du param\`etre ^|\everycr| \ctsref\everycr. +\enddesc + +\begindesc +\cts endline {} +\explain +Cette commande est un synonyme de la commande ^|\cr|. Elle est utile quand +vous avez red\'efini |\cr| mais devez encore acc\'eder \`a sa d\'efinition originale. +\enddesc + +\begindesc +\cts crcr {} +\explain +Cette commande r\'eagit comme ^|\cr|, sauf que \TeX\ l'ignore si +elle arrive imm\'ediatement apr\`es un |\cr| ou un ^|\noalign|. +Sa principale application est comme mesure de s\'ecurit\'e pour \'eviter un message d'erreur ``misleading'' +caus\'e par une \minref{macro} qui attend un argument se terminant par |\cr|. +Si vous mettez |\crcr| apr\`es le `|#|$n$' qui d\'enote un tel argument +dans la d\'efinition de macro, la +macro marchera proprement, que l'argument se termine par |\cr| ou non. +\enddesc + +\begindesc +\cts omit {} +\explain +Cette commande demande \`a \TeX\ d'ignorer un patron dans un \minref{alignement} +horizontal ou vertical pendant le traitement d'une entr\'ee de colonne ou de rang\'ee particuli\`ere +respectivement. +|\omit| doit appara\^\i tre comme le premier \'el\'ement dans une entr\'ee de colonne ou de rang\'ee~; en effet, +il remplace le patron du pr\'eambule avec le simple +patron `|#|'. + + +\example +\tabskip = 2em\halign{% + \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr + United States&Washington&dollar&1.00\cr + \omit \dotfill France\dotfill&Paris&franc&0.174\cr + Israel&Jerusalem&shekel&0.507\cr + Japan&Tokyo¥&0.0829\cr} +| +\produces +\tabskip = 2em\halign{% + \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr + United States&Washington&dollar&1.00\cr + \omit \dotfill France\dotfill&Paris&franc&0.174\cr + Israel&Jerusalem&shekel&0.507\cr + Japan&Tokyo¥&0.0829\cr} +\nextexample +{\hsize=1.2in \parindent=0pt +\valign{(#)\strut&(#)\strut&(#)\strut&(#)\strut\cr + bernaise&curry&hoisin&hollandaise\cr + ketchup&\omit\strut{\bf MARINARA!!}&mayonnaise&mustard\cr + + rarebit&tartar\cr}} +| +\produces +{\hsize=1.2in \parindent=0pt \leftskip=0pt +\valign{(#)\strut&(#)\strut&(#)\strut&(#)\strut\cr + bernaise&curry&hoisin&hollandaise\cr + ketchup&\omit\strut{\bf MARINARA!}&mayonnaise&mustard\cr + rarebit&tartar\cr}} +\endexample +\enddesc + +\begindesc +\cts span {} +\explain +La signification de cette commande d\'epend suivant qu'elle appara\^\i t soit dans un pr\'eambule +soit dans une entr\'ee d'alignement. +\ulist +\li Normalement, \TeX\ ne d\'eveloppe pas de tokens dans le pr\'eambule +quand il le lit. +Mettre |\span| au d\'ebut d'un token dans le pr\'eambule rend +ce token d\'eveloppable imm\'ediatement selon les r\`egles usuelles de d\'eveloppement +de \minref{macro} de \TeX. +\li Mettre |\span| \`a la place de `|&|' entre deux entr\'ees de colonne ou de rang\'ee +rend ces colonnes ou rang\'ees combin\'ees. +Pour un alignement horizontal, +la largeur de la colonne combin\'ee est la somme des +largeurs des colonnes incluses. +Pour un alignement vertical, +la hauteur de la rang\'ee combin\'ee est la somme des +hauteurs des rang\'ees incluses. +Le patron des colonnes ou rang\'ees combin\'ees forme un seul groupe, +donc des commandes de chargement de police pr\'ec\'edant un |\span| affectent tout jusqu'au +prochain `|&|'. +\endulist +\noindent +|\span| est rarement utile d'elle-m\^eme en dehors d'un patron, +mais procure le m\'ecanisme de base +pour d\'efinir ^|\multispan|. +\enddesc + +\begindesc +\cts multispan {\<nombre>} +\explain +Cette commande demande \`a \TeX\ que les \<nombre> +colonnes suivantes d'une rang\'ee d'un alignement horizontal, +ou +que les \<nombre> rang\'ees dans une colonne d'un alignement vertical, +doivent \^etre combin\'ees en une seule colonne ou rang\'ee (comme avec +|\span|) et que leur patron doit \^etre omis (comme avec |\omit|). + +\example +\tabskip = 13pt\halign{% + \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr + United States&Washington&dollar&1.00\cr + France&Paris&franc&0.174\cr + Israel&Jerusalem & + \multispan 2 \hfil\it(no information)\hfil \cr + Japan&Tokyo¥&0.0829\cr} +| +\produces +\tabskip = 13pt\halign{% + \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr + United States&Washington&dollar&1.00\cr + France&Paris&franc&0.174\cr + Israel&Jerusalem & + \multispan 2 \hfil\it(no information)\hfil \cr + Japan&Tokyo¥&0.0829\cr} +\nextexample +{\hsize=1.2in \parindent=0pt +\valign{(#)\strut&(#)\strut&(#)\strut&(#)\strut\cr + bernaise&curry&hoisin&hollandaise\cr + \multispan 3$$\left\{{{\rm ketchup}\atop{\rm marinara}} + \right\}$$&mustard\cr + rarebit&tartar\cr}} +| +\produces +{\hsize=1.2in \parindent=0pt \leftskip=0pt +\valign{(#)\strut&(#)\strut&(#)\strut&(#)\strut\cr + bernaise&curry&hoisin&hollandaise\cr + \multispan 3$$\left\{{{\rm ketchup}\atop{\rm marinara}} + \right\}$$&mustard\cr + rarebit&tartar\cr}} +\endexample + +\eix^^{patron} +\enddesc + +\begindesc +\cts noalign {\rqbraces{\<mat\'eriel en mode vertical>}} +\aux\cts noalign {\rqbraces{\<mat\'eriel en mode horizontal>}} +\explain +Cette commande ins\`ere +\<mat\'eriel en mode vertical> +apr\`es la rang\'ee cou\-rante d'un \minref{alignement} horizontal ou +\<mat\'eriel en mode horizontal> apr\`es la colonne courante d'un \minref{alignement} +vertical. +Le mat\'eriel peut \^etre du texte, un ressort, un filet ou tout autre chose. + +L'utilisation la plus commune de |\noalign| +est de mettre de l'espace suppl\'ementaire apr\`es une rang\'ee ou une colonne. +Si vous voulez mettre de l'espace suppl\'ementaire apr\`es \emph{toutes\/} les rang\'ees d'un alignement +horizontal, utilisez ^|\openup| (\xref\openup). + +\example +\halign{% + \hfil\it#\hfil\tabskip=2em&\hfil#\hfil&#& + \hfil\$#\tabskip=0em\cr + % The \tabskip changes prevent the rule below + % from sticking out. + United States&Washington&dollar&1.00\cr + France&Paris&franc&0.174\cr + \noalign{\smallskip\hrule\smallskip} + Israel&Jerusalem&shekel&0.507\cr + Japan&Tokyo¥&0.0829\cr} +| +\produces +\halign{% + \hfil\it#\hfil\tabskip=2em&\hfil#\hfil&#& + \hfil\$#\tabskip=0em\cr + % The \tabskip changes prevent the rule below + % from sticking out. + United States&Washington&dollar&1.00\cr + France&Paris&franc&0.174\cr + \noalign{\smallskip\hrule\smallskip} + Israel&Jerusalem&shekel&0.507\cr + Japan&Tokyo¥&0.0829\cr} +\nextexample +{\hsize=1in \parindent=0pt +\valign{#\strut&#\strut&#\strut&#\strut\cr + \noalign{\vrule width 2pt\quad} + bernaise&curry&hoisin&hollandaise\cr + \noalign{\vrule width 2pt\quad} + ketchup&marinara&mayonnaise&mustard\cr + \noalign{\vrule width 2pt\quad} + rarebit&tartar\cr + \noalign{\vrule width 2pt\quad}}} +| +\produces +\medskip +{\hsize=1in \parindent=0pt +\valign{#\strut&#\strut&#\strut&#\strut\cr + \noalign{\vrule width 2pt\quad} + bernaise&curry&hoisin&hollandaise\cr + \noalign{\vrule width 2pt\quad} + ketchup&marinara&mayonnaise&mustard\cr + \noalign{\vrule width 2pt\quad} + rarebit&tartar\cr + \noalign{\vrule width 2pt\quad}}} +\endexample +\enddesc + +\begindesc +\cts tabskip {\param{ressort}} +\explain +Ce param\`etre sp\'ecifie le montant de ressort horizontal ou vertical +que \TeX\ met entre les +colonnes d'un alignement horizontal ou entre les +rang\'ees d'un alignement vertical. +\TeX\ met aussi le ressort |\tabskip| +\`a gauche de la premi\`ere colonne et \`a droite de la derni\`ere colonne +d'un alignement horizontal, +avant la premi\`ere rang\'ee +et apr\`es la derni\`ere rang\'ee d'un alignement vertical. +Vous pouvez changer |\tabskip| dans un patron---% +le changement affectera le ressort associ\'e avec tous les +|&| suivant aussi bien que le ressort apr\`es la derni\`ere rang\'ee ou colonne. +\example +\halign to 3.5in{% + \hfil\it#\tabskip = 2em plus 8pt + \hfil&\hfil#\hfil&#\tabskip = 1em + &\hfil\$#\tabskip = 0em\cr + United States&Washington&dollar&1.00\cr + France&Paris&franc&0.174\cr + Israel&Jerusalem&shekel&0.507\cr + Japan&Tokyo¥&0.0829\cr} +| +\produces +\halign to 3.5in{% + \hfil\it#\tabskip = 2em plus 8pt + \hfil&\hfil#\hfil&#\tabskip = 1em + &\hfil\$#\tabskip = 0em\cr + United States&Washington&dollar&1.00\cr + France&Paris&franc&0.174\cr + Israel&Jerusalem&shekel&0.507\cr + Japan&Tokyo¥&0.0829\cr} +\nextexample +{\hsize = 1in \parindent=0pt \tabskip=5pt +\valign{#\strut&#\strut\tabskip = 3pt + &#\strut&#\strut\cr + bernaise&curry&hoisin&hollandaise\cr + ketchup&marinara&mayonnaise&mustard\cr + rarebit&tartar\cr}} +| +\produces +{\hsize = 1in \parindent=0pt \tabskip=5pt +\valign{#\strut&#\strut\tabskip = 3pt + &#\strut&#\strut\cr + bernaise&curry&hoisin&hollandaise\cr + ketchup&marinara&mayonnaise&mustard\cr + rarebit&tartar\cr}} +\endexample +\enddesc + +\begindesc +\cts hidewidth {} +\explain +Cette commande demande \`a \TeX\ d'ignorer la largeur de l'entr\'ee de la colonne suivante dans un +alignement horizontal. C'est pratique quand vous avez une entr\'ee qui est plus longue +que la plupart des autres dans la m\^eme colonne +et que vous pr\'ef\'erez avoir cette entr\'ee sortant de la colonne plut\^ot +que rendre toutes les entr\'ees +de la colonne plus larges. Si le |\hidewidth| est \`a gauche de +l'entr\'ee, l'entr\'ee d\'ebordera \`a gauche~; si le |\hidewidth| est \`a +droite de l'entr\'ee, l'entr\'ee d\'ebordera \`a droite. +\example +\tabskip = 25pt\halign{% + \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr + United States&\hidewidth Washington& + dollar&1.00\cr + France&Paris&franc&0.174\cr + Israel&Jerusalem&shekel&0.507\cr + Japan&Tokyo¥&0.0829\cr} +| +\produces +\tabskip = 25pt\halign{% + \hfil\it#\hfil&\hfil#\hfil&#&\hfil\$#\cr + United States&\hidewidth Washington& + dollar&1.00\cr + France&Paris&franc&0.174\cr + Israel&Jerusalem&shekel&0.507\cr + Japan&Tokyo¥&0.0829\cr} +\endexample +\enddesc + +\begindesc +\cts everycr {\param{liste de token}} +\explain +\TeX\ d\'eveloppe \<token list> \`a chaque fois qu'il ex\'ecute +un |\cr|---\`a la fin de chaque pr\'eambule, +\`a la fin de chaque rang\'ee d'un alignement horizontal +et \`a la fin de chaque colonne d'un alignement vertical. +La commande |\everycr| est d\'evelopp\'ee juste apr\`es le |\cr|. +Ainsi vous pouvez demander \`a \TeX\ +d'ex\'ecuter certaines commandes \`a la fin d'un pr\'eambule, d'une rang\'ee ou d'une colonne en +assignant une liste de commandes \`a |\everycr|. + +Les tokens |\everycr| ne doivent pas inclure d'autres commandes que |\no!-align|. +Ceci parce que +les tokens |\everycr| r\'eappara\^\i tront apr\`es le dernier +|\cr| de l'alignement. Une commande autre qu'un +|\noalign| fera penser \`a \TeX\ qu'il commence une nouvelle +rang\'ee ou colonne. +\TeX\ se plaindra d'un |\cr| manquant, ins\`erera +un |\cr|, ins\`erera les tokens |\everycr| \`a nouveau et r\'ep\`etera ces actions +ind\'efiniment. +\example + +\everycr={\noalign{\smallskip\hrule\smallskip}} +\halign{#\tabskip = 11pt&\hfil#\hfil&\hfil#\hfil + \tabskip = 0pt\cr + $1$&one&first\cr + $2$&two&second\cr + $3$&three&third\cr} +| +\produces +\medskip +\everycr={\noalign{\smallskip\hrule\smallskip}} +\halign{#\tabskip = 11pt&\hfil#\hfil&\hfil#\hfil + \tabskip = 0pt\cr + $1$&one&first\cr + $2$&two&second\cr + $3$&three&third\cr} +\endexample + +\eix^^{alignements//commandes pour} +\enddesc + +\enddescriptions + + +\endchapter +\byebye diff --git a/info/impatient/fr/fpages.tex b/info/impatient/fr/fpages.tex index dd5c3f3186..4748c032ae 100644 --- a/info/impatient/fr/fpages.tex +++ b/info/impatient/fr/fpages.tex @@ -1,1153 +1,1153 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-\chapter {Commandes pour \linebreak composer des pages}
-
-\chapterdef{pages}
-
-Cette section couvre des commandes qui concernent les
-pages, leurs composants et la routine de sortie.
-Pour une explication des conventions utilis\'ees dans cette section,
-voir \headcit{Descriptions des commandes}{cmddesc}.
-
-\begindescriptions
-
-%==========================================================================
-\section {Espaces inter-ligne et inter-paragraphe}
-
-\begindesc
-\cts baselineskip {\param{ressort}}
-\cts lineskiplimit {\param{dimension}}
-\cts lineskip {\param{ressort}}
-\explain
-^^{espacement de ligne}
-\bix^^{ressort inter-ligne}
-\bix^^|\baselineskip|
-\bix^^|\lineskip|
-\bix^^|\lineskiplimit|
-Ces trois param\`etres d\'eterminent ensemble combien d'espace \TeX\ laisse entre
-des \minref{bo\^\i te}s cons\'ecutives d'une \minref{liste verticale} ordinaire,
-c'est-\`a-dire, les lignes d'un paragraphe.
-Cet espace est appel\'e ``\minref{ressort inter-ligne}''.
-Il est aussi ins\'er\'e entre les bo\^\i tes composant une vbox construite en
-mode vertical interne.
-^^{vbox//ressort inter-ligne pour}
-
-Dans le cas courant, quand les bo\^\i tes ne sont pas anormalement hautes ou profondes, \TeX\
-rend la distance de la ligne de base d'une bo\^\i te \`a la ligne de base de la
-suivante \'egale \`a |\baselineskip|. Il fait cela en ins\'erant un ressort inter-ligne
-\'egal \`a |\baselineskip| moins la profondeur de la bo\^\i te sup\'erieure (ainsi donn\'e
-par ^|\prevdepth|) et la hauteur de la bo\^\i te du dessous. Mais si ce ressort
-inter-ligne doit \^etre inf\'erieur \`a |\lineskiplimit|, indiquant que les deux
-bo\^\i tes sont trop rapproch\'ees, \TeX\ ins\`ere le ressort |\lineskip| \`a la
-place.\footnote
-{\TeX\ d\'ebute normalement le d\'ebut d'une liste verticale en mettant
-|\prevdepth| \`a $-1000$\pt\ et en testant
-|\prevdepth| avant \emph{toutes} les bo\^\i tes. Si |\prevdepth|$\>\le-1000$\pt\
-il ne doit ins\'erer aucun ressort inter-ligne.} Voir les \knuth{pages~79--80}{93} pour une
-description pr\'ecise.
-
-Notez que |\baselineskip| et |\lineskip| mesurent des \emph{choses diff\'e\-rentes}~:
-La distance entre des lignes de base d'un cot\'e et la distance
-entre le bas d'une bo\^\i te et le haut de la bo\^\i te suivante d'un autre
-cot\'e. Voir la \knuth{page~78}{91--92} pour d'autres d\'etails. Le premier exemple ci-dessous
-montre les effets de |\lineskiplimit|.
-
-Vous pouvez obtenir l'effet d'un ^{double espacement} en doublant la valeur
-de |\baselineskip| comme illustr\'e dans le second exemple ci-des\-sous.
-Une modification de |\baselineskip| \`a n'importe quel endroit pr\'ec\'e\-dent la fin
-d'un paragraphe affecte le paragraphe entier.
-
-\example
-\baselineskip = 11pt \lineskiplimit = 1pt
-\lineskip = 2pt plus .5pt
-Sometimes you'll need to typeset a paragraph that has
-tall material, such as a mathematical formula, embedded
-within it. An example of such a formula is $n \choose k$.
-Note the extra space above and below this line as
-compared with the other lines.
-(If the formula didn't project below the line,
-we'd only get extra space above the line.)
-|
-\produces
-\baselineskip = 11pt \lineskiplimit = 1pt
-\lineskip = 2pt plus .5pt
-Sometimes you'll need to typeset a paragraph that has
-tall material, such as a mathematical formula, embedded
-within it. An example of such a formula is $n \choose k$.
-Note the extra space above and below this line as
-compared with the other lines.
-(If the formula didn't project below the line,
-we'd only get extra space above the line.)
-\endexample
-
-\example
-\baselineskip = 2\baselineskip % Start double spacing.
-|
-\endexample
-
-\eix^^{ressort inter-ligne}
-\eix^^|\baselineskip|
-\eix^^|\lineskip|
-\eix^^|\lineskiplimit|
-\enddesc
-
-\begindesc
-\cts prevdepth {\param{dimension}}
-\explain
-Quand \TeX\ ajoute une bo\^\i te \`a une liste verticale, il r\`egle |\prevdepth| \`a la
-hauteur de cette bo\^\i te. \TeX\ met |\prevdepth| \`a $-10000$\pt\ au d\'ebut d'une
-liste verticale, indiquant que le ressort inter-ligne normal doit \^etre supprim\'e.
-\enddesc
-
-\begindesc
-\cts normalbaselineskip {\param{ressort}}
-\cts normallineskiplimit {\param{dimension}}
-\cts normallineskip {\param{ressort}}
-\cts normalbaselines {}
-\explain
-Ces trois param\`etres contiennent des valeurs pour |\base!-line!-skip|,
-|\li!-neskip| et |\line!-skip!-limit| respectivement.
-^^|\baselineskip| ^^|\lineskip| ^^|\lineskiplimit|
-La commande |\normal!-base!-lines| met |\base!-line!-skip|,
-|\line!-skip| et |\line!-skip!-limit| aux va\-leurs contenues dans les
-trois param\`etres.
-\enddesc
-
-\begindesc
-\cts offinterlineskip {}
-\explain
-Cette commande demande \`a \TeX\ d'arr\^eter d'ins\'erer des ressorts inter-ligne \`a partir
-de maintenant. \`A moins que vous vouliez qu'il soit effectif pour le reste du document
-(ce que vous ne voulez probablement pas), vous devez l'englober dans un groupe
-avec le texte que vous voulez qu'il affecte.
-Son principal usage est de vous laisser faire l'espacement inter-ligne vous-m\^eme,
-c'est-\`a-dire, en utilisant ^{struts},
-sans interf\'erence du ressort inter-ligne normal de \TeX.
-|\offinterlineskip| est souvent utile quand
-vous construisez un \minref{alignement} horizontal.
-^^{alignements//utiliser \b\tt\\offinterlineskip\e\ dans des}
-\example
-\def\entry#1:#2 {\strut\quad#1\quad&\quad#2\quad\cr}
-\offinterlineskip \tabskip = 0pt \halign{%
-\vrule\quad\hfil#\hfil\quad\vrule&
- \quad\hfil#\hfil\quad\vrule\cr
-\noalign{\hrule}
-\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}
-\entry \it Opera:\it Composer
-\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}
-\vphantom{\vrule height 2pt}&\cr
-\entry Fidelio:Beethoven
-\entry Peter Grimes:Britten
-\entry Don Giovanni:Mozart
-\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}}
-|
-\produces
-\medskip
-\def\entry#1:#2 {\strut\quad#1\quad&\quad#2\quad\cr}
-\offinterlineskip \tabskip = 0pt \halign{%
-\vrule\quad\hfil#\hfil\quad\vrule&
- \quad\hfil#\hfil\quad\vrule\cr
-\noalign{\hrule}
-\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}
-\entry \it Opera:\it Composer
-\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}
-\vphantom{\vrule height 2pt}&\cr
-\entry Fidelio:Beethoven
-\entry Peter Grimes:Britten
-\entry Don Giovanni:Mozart
-\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}}
-\endexample
-\enddesc
-
-\begindesc
-\cts nointerlineskip {}
-\explain
-Cette commande demande \`a \TeX\ de ne pas ins\'erer de ressort inter-ligne devant la
-prochaine ligne.
-Elle n'a aucun effet sur les lignes suivantes.
-\enddesc
-
-\begindesc
-\cts openup {\<dimension>}
-\explain
-Cette commande augmente ^|\baselineskip| de \<dimension>.
-Une commande |\openup| avant la fin d'un paragraphe affecte
-tout le paragraphe, donc vous ne devez pas utiliser |\openup| pour
-changer |\baseline!-skip| dans un paragraphe. |\openup| est
-plus utile pour composer des tables et des affichages math\'ematiques---un
-petit espace suppl\'ementaire entre des rang\'ees les rend souvent plus lisibles.
-^^{alignements//espace entre rang\'ees d'}
-\example
-Alice picked up the White King very gently, and lifted him
-across more slowly than she had lifted the Queen; but before
-she put him on the table, she thought she might well dust
-him a little, he was so covered with ashes.
-\openup .5\baselineskip % 1.5 linespacing.
-|
-\produces
-Alice picked up the White King very gently, and lifted him
-across more slowly than she had lifted the Queen; but before
-she put him on the table, she thought she might well dust
-him a little, he was so covered with ashes.
-\openup .5\baselineskip %1.5 linespacing
-\endexample\enddesc
-
-%==========================================================================
-\section {Coupures de page}
-
-%==========================================================================
-\subsection {Encourager ou d\'ecourager des coupures de page}
-
-\begindesc
-\bix^^{coupures de page}
-\bix^^{coupures de page//encourager ou d\'ecourager}
-\ctspecial break {} \xrdef{vbreak}
-\explain
-%
-\margin{Four commands identical to ones for line breaks (\xref{hbreak})
-have been added to correct an omission. The descriptions are exactly parallel.}
-%
-Cette commande force une coupure de page.
-\`a moins que vous ne fassiez quelque chose pour compl\'eter la page,
-Vous obtiendrez s\^urement un ``underfull vbox''.
-|\break| peut aussi \^etre utilis\'e en mode horizontal.
-\enddesc
-
-\begindesc
-\ctspecial nobreak {} \xrdef{vnobreak}
-\explain
-Cette commande emp\^eche une coupure de page l\`a o\`u elle
-aurait du arriver autrement.
-|\nobreak| peut aussi \^etre utilis\'e en mode horizontal.
-\enddesc
-
-\begindesc
-\ctspecial allowbreak {} \xrdef{vallowbreak}
-\explain
-Cette commande demande \`a \TeX\ d'autoriser
-une coupure de page l\`a o\`u elle ne pourrait normalement pas arriver.
-|\allowbreak| peut aussi \^etre utilis\'e en mode horizontal.
-\enddesc
-
-\begindesc
-\ctspecial penalty {\<nombre>} \xrdef{vpenalty}
-\explain
-Cette commande produit un \'el\'ement de \minref{p\'enalit\'e}.
-L'\'el\'ement de p\'enalit\'e rend \TeX\ plus ou moins d\'esireux de couper une page
-\`a l'endroit o\`u cet \'el\'ement arrive.
-Une p\'enalit\'e n\'egative, c'est-\`a-dire, un bonus, encourage une coupure de page~;
-Une p\'enalit\'e positive d\'ecourage une coupure de page.
-Une p\'enalit\'e de $10000$ ou plus emp\^eche toute coupure,
-tandis qu'une p\'enalit\'e de $-10000$ ou moins force une coupure.
-|\penalty| peut aussi \^etre utilis\'e en mode horizontal.
-\example
-\def\break{\penalty-10000 } % as in plain TeX
-\def\nobreak{\penalty10000 } % as in plain TeX
-\def\allowbreak{\penalty0 } % as in plain TeX
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts goodbreak {}
-\explain
-Cette commande termine un paragraphe et indique aussi \`a \TeX\ que
-c'est un bon endroit pour couper la page.
-\enddesc
-
-\begindesc
-\cts smallbreak {}
-\cts medbreak {}
-\cts bigbreak {}
-\explain
-Ces commandes indiquent des endroits de plus en plus d\'esirables pour \TeX\ de
-couper une page. Elles demande aussi \`a \TeX\
-d'ins\'erer respectivement un ^|\smallskip|, ^|\medskip| ou
-^|\bigskip| (\xref \smallskip) si la coupure de page ne se produit pas l\`a.
-\TeX\ supprime ce saut s'il se produit juste apr\`es un saut \'egal ou plus grand.
-\enddesc
-
-\begindesc
-\easy\cts eject {}
-\cts supereject {}
-\explain
-Ces commandes forcent une coupure de page \`a la position courante
-et terminent le paragraphe courant.
-Si vous ne les pr\'ec\'edez pas de |\vfil| (\xref \vfil),
-^^|\vfil//n\'ecessaire avec {\tt\\eject}|
-\TeX\ essayera d'\'etirer le contenu de la page
-(et se plaindra probablement d'un ``underfull vbox'').
-La commande |\supereject|, en plus,
-enclenche la routine de sortie de \plainTeX\ pour
-faire sortir toutes insertions en surplus,
-^^{insertions//forc\'es par \b\tt\\supereject\e}
-telles que de longues notes de pied de page,
-ainsi elle sont produites avant que toute autre entr\'ee soit ex\'ecut\'ee.
-Donc |\supereject| est un bonne commande \`a utiliser \`a la fin de chaque
-chapitre ou autre division majeure de votre document.
-\enddesc
-
-\begindesc
-\cts filbreak {}
-\explain
-Cette commande procure une sorte de coupure de page conditionnelle.
-Elle demande \`a \TeX\ de
-couper la page---sauf si le texte d'une autre |\filbreak| se trouve
-aussi sur la m\^eme page.
-En englobant un paragraphe dans une paire de |\filbreak|,
-vous pouvez vous assurer que \TeX\ gardera un paragraphe sur une seule page s'il le peut.
-Vous ne devez pas utiliser |\filbreak| dans un paragraphe, car il
-force \TeX\ en mode vertical et ainsi termine la paragraphe.
-Voir \xrefpg{filbreak} pour plus de conseil sur ce sujet.
-\enddesc
-
-\begindesc
-\cts raggedbottom {}
-\cts normalbottom {}
-\explain
-Normalement \TeX\ essaye fortement de s'assurer que toutes les pages
-aient la m\^eme profondeur, c'est-\`a-dire, que leurs marges du bas soient \'egales.
-La commande |\raggedbottom| demande \`a \TeX\ d'autoriser
-quelques variations parmi les marges du bas sur diff\'erentes pages.
-Il est souvent appropri\'e d'utiliser |\raggedbottom| quand vous avez du mat\'eriel
-qui contient de larges blocs de mat\'eriel qui ne doivent pas \^etre s\'epar\'es sur deux pages.
-La commande |\normalbottom| efface l'effet de |\raggedbottom|.
-
-\eix^^{coupures de page//encourager ou d\'ecourager}
-\enddesc
-
-%==========================================================================
-\subsection {Param\`etres de coupure de page}
-
-\bix^^{coupures de page//param\`etres de}
-\begindesc
-\cts interlinepenalty {\param{nombre}}
-\explain
-Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
-coupure de page entre les lignes d'un paragraphe.
-En le mettant \`a $10000$ vous pouvez forcer toutes les coupures de page \`a se faire
-entre les paragraphes, en esp\'erant que les pages aient assez d'\'etirement pour
-que \TeX\ puisse les composer d\'ecemment.
-\PlainTeX\ laisse |\inter!-linepenalty| \`a~$0$.
-\enddesc
-
-\begindesc
-\cts clubpenalty {\param{nombre}}
-\explain
-^^{ligne orpheline}
-Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
-coupure de page juste apr\`es la premi\`ere ligne d'un paragraphe.
-Une ligne seule en bas d'une page est appel\'ee une ``ligne orpheline''.
-\PlainTeX\ met |\clubpenalty| \`a $150$.
-\enddesc
-
-\begindesc
-\cts widowpenalty {\param{nombre}}
-\explain
-^^{ligne veuve}
-Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
-coupure de page juste avant la derni\`ere ligne d'un paragraphe.
-Une ligne seule en haut d'une page est appel\'ee une ``ligne veuve''.
-\PlainTeX\ met |\widowpenalty| \`a $150$.
-\enddesc
-
-\begindesc
-\cts displaywidowpenalty {\param{nombre}}
-\explain
-^^{ligne veuve}^^{math\'ematiques affich\'ees}
-Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
-coupure de page juste avant la derni\`ere ligne d'un paragraphe partiel
-qui pr\'ec\`ede imm\'ediatement un affichage math\'ematique.
-\PlainTeX\ met |\displaywidowpenalty| \`a $50$.
-
-\enddesc
-
-\begindesc
-\cts predisplaypenalty {\param{nombre}}
-\explain
-^^{math\'ematiques affich\'ees}
-Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
-coupure de page juste avant un affichage math\'ematique.
-\PlainTeX\ met |\predisplaypenalty| \`a $10000$.
-\enddesc
-
-\begindesc
-\cts postdisplaypenalty {\param{nombre}}
-\explain
-^^{math\'ematiques affich\'ees}
-Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
-coupure de page juste apr\`es un affichage math\'ematique.
-\PlainTeX\ laisse |\postdisplaypenalty| \`a $0$.
-\enddesc
-
-\begindesc
-\cts brokenpenalty {\param{nombre}}
-\explain
-Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une
-coupure de page juste apr\`es une ligne se terminant par
-une \'el\'ement optionnel (habituellement une c\'esure).
-^^{c\'esure}
-|\brokenpenalty| s'applique aux coupure de page, tandis que
-^|\hyphenpenalty| \ctsref{\hyphenpenalty} s'applique aux coupure de ligne.
-\PlainTeX\ met |\brokenpenalty| \`a $100$.
-\enddesc
-
-\begindesc
-\cts insertpenalties {\param{nombre}}
-\explain
-\bix^^{insertions//p\'enalit\'es pour}
-\bix^^{mat\'eriel flottant}
-Ce param\`etre contient la somme de certaines p\'enalit\'es \minrefs{p\'enalit\'e}
-que \TeX\ accumule quand il place des insertions sur la page courante.
-Ces p\'enalit\'es encourent une plainte quand \TeX\ ex\'ecute une commande
-|\insert|
-et d\'ecouvre qu'une insertion pr\'ec\'edente du m\^eme type sur cette page a
-\'et\'e s\'epar\'ee, laissant une partie pour les page suivantes.
-Voir les \knuth{pages~123--125}{143--146} pour les d\'etails de ce
-calcul.
-
-\margin{Material moved from a footnote to the main text.}
-|\insertpenalties| a une signification enti\`erement diff\'erente pendant une
-^^{routine de sortie//signification de \b\tt\\insertpenalties\e\ dans la}
-routine de sortie---c'est le nombre d'insertions qui ont \'et\'e vues
-mais qui ne tiennent pas sur la page courante (voir la \knuth{page~125}{146}).
-\enddesc
-
-\begindesc
-\cts floatingpenalty {\param{nombre}}
-\explain
-Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} que
-\TeX\ ajoute \`a |\insertpenalties|
-^^|\insertpenalties|
-quand le constructeur de page ajoute une insertion \`a la page courante
-et d\'ecouvre qu'une insertion pr\'ec\'edente du m\^eme type sur cette page a
-\'et\'e coup\'ee, en laissant une partie d'elle pour des pages suivantes.
-\PlainTeX\ laisse |\floatingpenalty| \`a~$0$.
-\eix^^{insertions//p\'enalit\'es pour}
-\eix^^{mat\'eriel flottant}
-
-\enddesc
-
-\begindesc
-\cts pagegoal {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie la hauteur d\'esir\'ee pour la page courante.
-\TeX\ met
-|\pagegoal| \`a la valeur courante de |\vsize|
-quand il met en premier une bo\^\i te ou une insertion sur la page courante.
-Vous pouvez raccourcir une page tant que \TeX\ travaille sur elle en
-changeant la valeur de |\pagegoal|---m\^eme si la nouvelle valeur est
-inf\'erieure \`a la hauteur du mat\'eriel d\'ej\`a sur cette page.
-\TeX\ mettra juste le mat\'eriel en plus sur la page suivante.
-Mais souvenez-vous---|\pagegoal| est remis \`a |\vsize| quand \TeX\
-commence la page suivante.
-\enddesc
-
-\begindesc
-\cts pagetotal {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie la hauteur naturelle accumul\'ee sur la page courante.
-\TeX\ met \`a jour |\pagetotal| quand il ajoute des \'el\'ements \`a la
-\minref{liste verticale} principale.
-
-
-\enddesc
-
-\begindesc
-\cts pagedepth {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie la profondeur de la page courante.
-\TeX\ met \`a jour |\pagedepth| quand il ajoute des
-\'el\'ements \`a la \minref{liste verticale} principale.
-\enddesc
-
-\begindesc
-\cts pageshrink {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie le montant de \minref{r\'etr\'ecissement}
-dans les \minref{ressort} accumul\'es sur la page courante.
-\TeX\ met \`a jour |\pageshrink| quand il ajoute des \'el\'ements
-\`a la \minref{liste verticale} principale.
-\enddesc
-
-\begindesc
-\cts pagestretch {\param{dimension}}
-\cts pagefilstretch {\param{dimension}}
-\cts pagefillstretch {\param{dimension}}
-\cts pagefilllstretch {\param{dimension}}
-\explain
-Ces quatre param\`etres sp\'ecifient ensemble le montant d'\minref{\'etirement}
-dans les \minref{ressort}s de la page courante. Le montant d'\'etirement a
-la forme
-{\def\f#1{\hbox{\tt fi#1}}%
-$n_0 + n_1\f{l} + n_2\f{ll} + n_3\f{lll}$}, avec les quatre param\`etres
-donnant les valeurs des quatre $n_i$.
-\TeX\ met \`a jour ces param\`etres quand il ajoute des
-\'el\'ements \`a la \minref{liste verticale} principale.
-
-\eix^^{coupures de page//param\`etres de}
-\eix^^{coupures de page}
-\enddesc
-
-%==========================================================================
-\section{Gabarit de page}
-
-\subsection {Param\`etres de description de page}
-
-\begindesc
-\bix^^{dimensions de page}
-\margin{This command was also described in the `Paragraphs' section.
-The combined description now appears there.}
-\aux\cts hsize {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie la longueur de la ligne courante.
-Voir \xrefpg{\hsize} pour une plus compl\`ete explication.
-\enddesc
-
-\begindesc
-\cts vsize {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie l'extension verticale courante d'une page.
-\TeX\ ne l'examine qu'en commen\c cant une page. Donc si vous changez
-|\vsize| dans le
-milieu d'une page, votre changement n'affectera rien avant la page suivante.
-Si vous voulez changer l'extension verticale d'une page quand
-vous en \^etes au milieu, vous pouvez assigner la nouvelle hauteur
-\`a ^|\pagegoal| (\xref \pagegoal) \`a la place. (Si vous
-voulez que le changement affecte aussi les pages suivantes, vous devez
-changer \emph{ensemble} |\vsize| et |\pagegoal|.)
-\PlainTeX\ met |\vsize| \`a |8.9in|.
-\eix^^{dimensions de page}
-\enddesc
-
-\begindesc
-\cts hoffset {\param{dimension}}
-\cts voffset {\param{dimension}}
-\margin{These commands were moved up from later in the subsection.}
-^^{origine de la page}
-\idxsee{origine}{origine de la page}
-\explain
-\TeX\ prend normalement l'``origine'' d'une page, qui est le point o\`u
-il d\'ebute l'impression, comme \'etant \`a un pouce sous le haut de la page et \`a un
-pouce \`a droite du bord gauche de la page.\footnote{
-\TeX\ lui-m\^eme est indiff\'erent d'o\`u est l'origine de la page,
-mais cette information doit \^etre inscrite pour les drivers du syst\`eme
-^^{drivers de p\'eriph\'erique//origine de la page connu des}
-qui convertissent les \dvifile\ en forme imprimable, ainsi ces diff\'erents syst\`emes
-donneront les m\^eme r\'esultats.}
-Les valeurs de |\hoffset| et
-|\voffset| donnent l'offset horizontal et vertical de l'origine actuelle
-\`a partir de ce point. Ainsi si |\hoffset| et |\voffset| sont tous les deux
-\`a z\'ero, \TeX\ utilise son origine normale.
-\example
-\hoffset = -.3in
- % Start printing .7 inches from left edge of paper.
-\voffset = 1in
- % Start printing 2 inches from top edge of paper.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts topskip {\param{ressort}}
-\explain
-\TeX\ ins\`ere un ressort en haut de chaque
-page pour s'assurer que la ligne de base de la premi\`ere bo\^\i te de la page
-soit toujours \`a la m\^eme distance $d$ du haut de la page.
-|\topskip| d\'etermine le montant de ce ressort,
-appel\'e le ``ressort |\topskip|'', en sp\'ecifiant
-ce que $d$ doit \^etre (pr\'evoyez que la premi\`ere bo\^\i te
-de la page ne soit pas trop haute).
-$d$ est donn\'e par la taille naturelle du ressort |\topskip|.
-Si la hauteur de la premi\`ere bo\^\i te sur la page d\'epasse $d$,
-et que le ressort devrait \^etre n\'egatif, \TeX\ n'ins\`ere simplement pas
-de ressort |\topskip| du tout sur cette page.
-
-Pour mieux comprendre l'effet de ces r\`egles, supposez que |\topskip|
-n'a ni \'etirement ni r\'etr\'ecissement et que le premier \'el\'ement sur la page
-soit vraiment une bo\^\i te. Alors si la hauteur de cette bo\^\i te n'est pas plus
-grande que |\topskip|, sa ligne de base sera \`a |\topskip| du haut de la page
-ind\'ependamment de sa hauteur. D'un autre cot\'e,
-si la hauteur de la bo\^\i te est $e$, plus grande que |\topskip|, sa ligne de base
-sera \`a |\topskip|\tplus$e$ du haut de la page.
-Voir les \knuth{pages~113--114}{132} pour les autres d\'etails sur le
-fonctionnement de |\topskip|.
-\PlainTeX\ met |\topskip| \`a |10pt|.
-\enddesc
-
-
-\begindesc
-\cts parskip {\param{ressort}}
-\explain
-Ce param\`etre sp\'ecifie le ``^{saut de paragraphe}'', c'est-\`a-dire, le
-ressort vertical que \TeX\ ins\`ere au d\'ebut d'un paragraphe.
-^^{paragraphes//ressort entre}
-Voir |\par| (\xref{\@par}) pour plus d'information sur ce qui se passe
-quand \TeX\ d\'ebute un paragraphe.
-\PlainTeX\ met |\parskip| \`a |0pt plus 0.1pt|.
-\enddesc
-
-\begindesc
-\cts maxdepth {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie la profondeur maximum de la \minref{bo\^\i te} du bas
-d'une page. Il est reli\'e \`a |\boxmaxdepth| (\xref \boxmaxdepth). Si la
-profondeur de la bo\^\i te du bas d'une page d\'epasse |\maxdepth|, \TeX\
-descend le point de r\'ef\'erence de la bo\^\i te pour qu'il soit \`a
-|\maxdepth| du bas de cette bo\^\i te.
-Sans cet ajustement, la bo\^\i te du bas d'une
-page pourrait bien s'\'etendre dans la marge du bas ou m\^eme recouvrir
-la page enti\`erement. \PlainTeX\ met |\maxdepth| \`a |4pt|.
-\enddesc
-
-%==========================================================================
-\subsection{Num\'eros de page}
-
-\begindesc
-\bix^^{num\'erotation de page}
-\cts pageno {\param{nombre}}
-\explain
-Ce param\`etre contient le num\'ero de page courant sous la forme d'un entier.
-Le num\'ero de page est normalement n\'egatif pour les pages d'intro\-duction
-qui sont num\'erot\'ees avec des petits chiffres romains au lieu des nombres
-arabes. Si vous changez le num\'ero de page dans une page, le num\'ero modifi\'e
-sera utilis\'e dans tous les ent\^etes ou pieds de page qui apparaissent sur
-cette page. L'impression actuelle des num\'eros de page est prise en main par
-la \minref{routine de sortie} de \TeX, que vous pouvez modifier.
-
-\PlainTeX\ garde le num\'ero de page dans le \minref{registre} ^|\count0|.
-(|\pageno| est, en fait, un synonyme de |\count0|.)
-\`a chaque fois qu'il envoie une page vers le \dvifile,
-^^|\shipout//registres {\tt\\count} affich\'es avec|
-\TeX\ affiche la valeur courante de |\count0| sur votre
-terminal pour que vous puissiez dire sur quelle page il est en train de
-travailler. Il est possible d'utiliser des registres |\count1|--|\count9|
-pour embo\^\i ter des niveaux de num\'eros de page (vous devez programmer cela vous-m\^eme).
-Si un de ces registres est diff\'erent de z\'ero, \TeX\ l'affiche aussi sur votre
-terminal.\footnote{
-Plus pr\'ecis\'ement, il affiche tous les registres en s\'equence de
-|\count0| \`a |\count9|, mais omet les registres restants \`a z\'ero.
-Par exemple, si les valeurs de |\count0|--|\count3|
-sont $(17, 0 , 0, 7)$ et que les autres sont \`a $0$,
-\TeX\ affiche le num\'ero de page ainsi {\tt [17.0.0.7]}.}
-\example
-This explanation appears on page \number\pageno\
-of our book.
-|
-\produces
-This explanation appears on page \number\pageno\
-of our book.
-
-\nextexample
-\pageno = 30 % Number the next page as 30.
-Don't look for this explanation on page \number\pageno.
-|
-\produces
-Don't look for this explanation on page 30.
-\endexample
-\enddesc
-
-\begindesc
-\cts advancepageno {}
-\explain
-Cette commande ajoute $1$ au num\'ero de page
-$n$ dans |\pageno| si $n\ge0$
-et lui soustrait $1$ si $n<0$.
-\enddesc
-
-\begindesc
-\easy\cts nopagenumbers {}
-\explain
-Par d\'efaut, \plainTeX\ produit un pied de page contenant un num\'ero de page
-centr\'e.
-Cette commande demande \`a \TeX\ de produire un pied de page blanc \`a la place.
-\enddesc
-
-\begindesc
-\cts folio {}
-\explain
-Cette commande produit le num\'ero de page courant, dont la valeur est le num\'ero
-$n$ contenu dans ^|\pageno|.
-Si $n\ge0$,
-\TeX\ produit $n$ comme un nombre d\'ecimal,
-tandis que si $n<0$,
-\TeX\ produit $-n$ en chiffre romain minuscule.
-\example
-This explanation appears on page \folio\ of the book.
-|
-\produces
-This explanation appears on page \folio\ of the book.
-\endexample
-
-\eix^^{num\'erotation de page}
-\enddesc
-
-
-%==========================================================================
-\subsection{Lignes d'ent\^ete et de pied de page}
-
-\begindesc%\secondprinting{\vglue-.75\baselineskip\vskip0pt}
-\cts headline {\param{liste de token}}
-\cts footline {\param{liste de token}}
-\explain
-Ces param\`etres
-contiennent, respectivement, la ligne de t\^ete courante (ent\^ete) et la ligne de
-pied de page courante (pied de page).
-La routine de sortie de \plainTeX\
-place la ligne de t\^ete en haut de chaque page et ligne de pied de page
-en bas de chaque page.
-La ligne de t\^ete par d\'efaut est vide et la ligne de pied de page par d\'efaut
-est un num\'ero de page centr\'e.
-
-Les lignes de t\^ete et de pied de page doivent \^etre toutes les deux
-aussi large que |\hsize| (utilisez |\hfil|, \xref{\hfil}, pour cela
-si n\'ecessaire).
-Vous devez toujours inclure une commande de s\'election de police dans ces lignes,
-sinon la police courante est impr\'evisible quand \TeX\ appelle la routine de
-sortie. Si vous ne s\'electionnez la police explicitement,
-vous obtiendrez n'importe quelle police que \TeX\ utilisait quand il a coup\'e
-la page.
-
-N'essayez pas d'utiliser |\headline| ou |\footline|
-pour produire des ent\^etes ou des pieds de page multi-lignes.
-Bien que \TeX\ ne se plaindra pas, cela vous donnera quelque chose de tr\`es laid.
-Voir \xrefpg{bighead} pour une m\'ethode de cr\'eation d'ent\^ete ou de pied de
-page multi-ligne.
-\example
-\headline = {\tenrm My First Reader\hfil Page \folio}
-|
-\produces
-\pageno = 10
-\line{\tenrm \noindent My First Reader\hfil Page \folio}
-\par ({\it at the top of page \folio}\/)
-\nextexample
-\footline = {\tenit\ifodd\pageno\hfil\folio
- \else\folio\hfil\fi}
-% Produce the page number in ten-point italic at
-% the outside bottom corner of each page.
-|
-\endexample\enddesc
-
-%\secondprinting{\vfill\eject}
-
-
-%==========================================================================
-\subsection {Marques}
-
-\begindesc
-\cts mark {\rqbraces{\<texte>}}
-\explain
-\bix^^{marques}
-Cette commande fait que \TeX\ attache une marque
-contenant \<mark text>
-\`a toute liste qu'il est en train de construire.
-G\'en\'eralement vous ne devez pas utiliser |\mark| dans une
-construction ``interne'' comme une formule math\'ematique ou une \minref{bo\^\i te}
-que vous avez construit avec une commande |\hbox|, |\vbox| ou |\vtop|, parce
-que \TeX\ ne verra pas la marque quand il construira la bo\^\i te principale
-de la page. Mais si vous utilisez |\mark| en \minref{mode} horizontal ordinaire
-ou directement dans une hbox qui fait partie de la liste verticale principale,
-la marque migrera vers la \minref{liste verticale} principale.
-Voir les \knuth{pages~259--260}{304--305} pour des exemples montrant comment |\mark|
-peut \^etre utilis\'e.
-\enddesc
-
-\begindesc
-\cts firstmark {}
-\cts botmark {}
-\cts topmark {}
-\explain
-Ces commandes d\'eveloppent le texte de la marque dans un \'el\'ement g\'en\'er\'e par une
-pr\'ec\'edente commande ^|\mark|.
-Le texte de la marque a la forme d'une liste de token.
-\TeX\ met la valeur de ces commandes quand il
-termine le placement du contenu d'une page dans ^|\box255|,
-juste avant d'appeler la \minref{routine de sortie}
-comme une partie de son action de \minref{coupure de page}. \TeX\ d\'etermine
-ces valeurs comme suit~:
-\ulist\compact
-\li |\firstmark| contient les tokens de la premi\`ere marque de la page.
-\li |\botmark| contient les tokens de la derni\`ere marque de la page.
-\li |\topmark| contient les tokens de la marque qui est effective tout
-en haut de la page.
-Cette marque est la derni\`ere marque
-qui \emph{pr\'ec\`ede} la page,
-c'est-\`a-dire, le |\botmark| de la page pr\'ec\'edente.
-Il est vide si aucune page ne pr\'ec\`ede la page.
-\endulist
-\noindent
-Si une page n'a aucune marque sur elle, \TeX\ mettra |\firstmark| et |\botmark|
-avec la m\^eme marque que |\topmark|, c'est-\`a-dire, la plus r\'ecente marque pr\'ec\'edente.
-La table en bas de la \knuth{page~258}{303} illustre la relation entre
-|\firstmark|, |\botmark| et |\topmark|.
-\enddesc
-
-\begindesc
-\cts splitfirstmark {}
-\cts splitbotmark {}
-\explain
-^^{marques//pour listes d\'edoubl\'ees}
-Ces commandes d\'eveloppent le ^{texte de marque} g\'en\'er\'e par une commande
-^|\mark| pr\'ec\'edente qui produisent un \'el\'ement dans la liste d'\'el\'ement d'une vbox $V$.
-Le texte de marque a la forme d'une liste de token.
-Quand \TeX\
-s\'epare $V$ en r\'eponse \`a une commande ^|\vsplit| (\xref \vsplit),
-il met les valeurs de ces commandes comme suit~:
-\ulist\compact
-\li |\splitfirstmark| contient les tokens de la premi\`ere marque dans
-la liste d'\'el\'ement de $V$.
-\li |\splitbotmark| contient les tokens de la derni\`ere marque dans
-la liste d'\'el\'ement de $V$.
-\endulist
-Ces commandes ne produisent aucun token s'il n'y a pas de |\vsplit| pr\'ec\'edent
-ou si le plus r\'ecent |\vsplit| pr\'ec\'edent ne contient aucune marque.
-\eix^^{marques}
-\enddesc
-
-%==========================================================================
-\section {Insertions}
-
-\subsection {Pieds de page}
-
-\begindesc
-\easy\cts footnote {\<argument$_1$> \<argument$_2$>}
-\cts vfootnote {\<argument$_1$> \<argument$_2$>}
-\explain
-Ces commandes produisent des notes de pied de page.
-\<argument$_1$> est la ``^{marque de r\'ef\'erence}''
-pour la note de pied de page et \<argument$_2$> est son texte.
-Le texte peut faire plusieurs paragraphes de long si n\'ecessaire et peut contenir
-des constructions comme des affichages math\'ematiques, mais ne peut contenir
-aucune
-\minref{insertion} (comme d'autres notes de pied de page).
-
-Vous ne pouvez pas utiliser ces commandes \`a l'int\'erieur d'une sous-formule d'une
-formule math\'ematique,
-dans une bo\^\i te \`a l'int\'erieur d'une bo\^\i te contribuant \`a une page
-ou dans une insertion de toute sorte.
-Si vous n'\^etes pas s\^ur de la mani\`ere dont ces restrictions s'appliquent, il
-peut \^etre sage de n'utiliser
-|\footnote| et |\vfootnote| que directement dans un paragraphe ou
-entre des paragraphes.
-
-Ces restrictions ne sont pas aussi s\'ev\`eres qu'elles ne le semblent parce que
-vous pouvez utiliser
-|\vfootnote| pour mettre en note de pied de page la plupart des choses.
-|\foot!-note| et |\vfoot!-note| ins\`erent tous les deux des marques de r\'ef\'erence
-en t\^ete de la note de pied de page elle-m\^eme, mais |\vfoot!-note| n'ins\`ere
-pas la marque de r\'ef\'erence dans le texte.
-Ainsi, quand vous utilisez |\vfoot!-note| vous pouvez
-ins\'erer explicitement la marque de r\'ef\'erence
-n'importe o\`u, sans que cela concerne le contexte
-et placer le |\vfootnote| dans le paragraphe suivant.
-Si vous trouvez que la note de bas de page atterrit sur
-la page suivant celle o\`u elle devrait, d\'eplacez le |\vfootnote|
-vers le paragraphe pr\'ec\'edent.
-Il y a de rares circonstances o\`u vous devez alt\'erer
-le texte de votre document pour qu'une note de bas de page apparaisse sur
-la m\^eme page que sa marque de r\'ef\'erence.
-\example
-To quote the mathematician P\'olya is a ploy.\footnote
-*{This is an example of an anagram, but not a strict one.}
-|
-\produces
-To quote the mathematician P\'olya is a ploy.*
-\par\line{\hskip .5in \vdots\hfil}
-\nointerlineskip \bigskip
-\footnoterule\par\parindent = 12pt
-\textindent{*}This is
-an example of an anagram, but not a strict one.
-\endexample
-\example
-$$f(t)=\sigma\sigma t\;\raise 1ex \hbox{\dag}$$
-\vfootnote \dag{The $\sigma\sigma$ notation was explained in
-the previous section.}
-|
-\produces
-$$f(t)=\sigma\sigma t\>\raise 1ex \hbox{\dag}$$
-\par\line{\hskip .5in \vdots\hfil}
-\nointerlineskip \bigskip
-\footnoterule\par\parindent = 12pt
-\textindent{\dag}{The $\sigma\sigma$ notation was explained in
-the previous section.}
-\endexample
-\enddesc
-
-%==========================================================================
-\subsection {Insertions g\'en\'erales}
-
-\begindesc
-\bix^^{insertions//commandes pour}
-\cts topinsert {\<mat\'eriel en mode vertical> {\bt \\endinsert}}
-\cts midinsert {\<mat\'eriel en mode vertical> {\bt \\endinsert}}
-\cts pageinsert {\<mat\'eriel en mode vertical> {\bt \\endinsert}}
-\explain
-Ces commandes produisent diff\'erentes formes d'insertions qui
-informent
-(ou autorisent) \TeX\ \`a d\'elocaliser le \<mat\'eriel en mode vertical>~:
-\ulist
-\li |\topinsert| essaye de mettre le mat\'eriel en haut de la page courante.
-S'il ne peut pas s'y ajuster, |\topinsert|
-d\'eplacera le mat\'eriel vers le prochain haut de page possible.
-\li |\midinsert| essaye de mettre le mat\'eriel \`a la position courante.
-S'il ne peut pas s'y ajuster, |\midinsert|
-d\'eplacera le mat\'eriel vers le prochain haut de page possible.
-\li |\pageinsert| met le mat\'eriel lui-m\^eme sur la page suivante.
-Pour \'eviter une page pas assez pleine, assurez vous de terminer le mat\'eriel ins\'er\'e avec
-|\vfil| ou remplissez l'espace excessif d'une autre mani\`ere.
-% Knuth doesn't say this, but I tried an experiment that verified it.
-% Nor does he say explicitly that an insertion does a \par.
-\endulist
-\noindent
-Le \<mat\'eriel en mode vertical>
-est dit \^etre ``flottant'' ^^{mat\'eriel flottant} parce que \TeX\
-peut le d\'eplacer d'une place \`a une autre.
-Des insertions sont tr\`es pratiques pour du mat\'eriel tel que des figures et des
-tables parce que vous pouvez positionner ce mat\'eriel o\`u vous voulez sans
-savoir o\`u les coupures de page tomberont.
-
-Chacune de ces commandes termine implicitement le paragraphe cou\-rant, donc
-vous ne devez les utiliser qu'entre des paragraphes.
-Vous ne devez pas les utiliser dans une bo\^\i te ou dans d'autres insertions.
-Si vous avez plusieurs insertions en comp\'etition pour
-le m\^eme espace, \TeX\ conservera leur ordre relatif.
-\example
-\pageinsert
-% This text will appear on the following page, by itself.
-This page is reserved for a picture of the Queen of Hearts
-sharing a plate of oysters with the Walrus and
-the Carpenter.
-\endinsert
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts endinsert {}
-\explain
-Cette commande termine une insertion d\'ebut\'ee par
-|\topinsert|, |\mid!-insert| ou |\pageinsert|.
-\enddesc
-
-\begindesc
-\cts insert {\<nombre> \rqbraces{\<mat\'eriel en mode vertical>}}
-\explain
-\minrefs{insertion}
-Cette commande primitive fournit le m\'ecanisme sous-jacent la construction
-des insertions, mais
-elle n'est presque jamais utilis\'ee en dehors d'un d\'efinition de \minref{macro}.
-Les d\'efinitions des commandes
-|\foot!-note|, |\vfoot!-note|,
-|\top!-insert|, |\mid!-insert| et |\page!-insert| sont
-toutes construites autour d'|\insert|.
-^^|\topinsert|
-^^|\midinsert| ^^|\pageinsert| ^^|\footnote| ^^|\vfootnote|
-
-Quand vous concevez des insertions pour un document, vous devez assigner un
-code entier diff\'erent\footnote
-{\texbook{} utilise le terme ``classe'' pour un code.
-Nous pr\'ef\'erons un terme diff\'erent pour \'eviter toute confusion avec l'autre signification
-de ``classe'' (\xref{classe}).}
-$n$ pour chaque type d'insertion,
-utilisez la commande ^|\newinsert| (\xref{\@newinsert}) pour obtenir les
-codes entiers.
-La commande |\insert| elle-m\^eme annexe le \<mat\'eriel en mode vertical>
-\`a la \minref{liste verticale} ou horizontale courante.
-Notre \minref{routine de sortie} est responsable de
-d\'eplacer le mat\'eriel ins\'er\'e d'o\`u il r\'eside dans la |\box|$\,n$
-vers la page de sortie.
-^^{routine de sortie}
-
-\TeX\ regroupe ensemble toutes les insertions ayant le m\^eme num\'ero de code.
-Chaque code d'insertion $n$ a quatre \minref{registre}s qui lui sont associ\'es~:
-\ulist
-\li |\box|$\,n$ est l'endroit o\`u \TeX\ accumule le mat\'eriel pour des insertions
-avec le code $n$. Quand \TeX\ coupe une page, il met dans |\box|$\,n$
-autant de mat\'eriel d'insertion $n$ qu'il pourra sur la page.
-Notre routine de sortie devra alors d\'eplacer ce mat\'eriel vers la page actuelle.
-Vous pouvez utiliser ^|\ifvoid| \ctsref{\@ifvoid}
-pour tester s'il y a du mat\'eriel dans |\box|$\,n$.
-Si tout le mat\'eriel ne rentre pas, \TeX\ sauve le surplus pour la page suivante.
-\li |\count|$\,n$ est un facteur de magnification $f$. Quand \TeX\ doit traiter
-l'espace vertical occup\'e sur la page
-dans le mat\'eriel d'insertion $n$, il multiplie l'extension
-verticale de ce mat\'eriel par $f/1000$.
-Ainsi vous mettrez normalement $f$ \`a $500$ pour une insertion en double-colonne
-et \`a $0$ pour une note~marginale.
-\li |\dimen|$\,n$ sp\'ecifie le montant maximum
-de mat\'eriel d'insertion $n$ que \TeX\ mettra sur une seule page.
-\li |\skip|$\,n$ sp\'ecifie un espace suppl\'ementaire que \TeX\ alloue sur la page
-si la page contient du mat\'eriel d'insertion $n$.
-Cet espace est en plus de l'espace occup\'e par l'insertion elle-m\^eme.
-Par exemple, il justifiera l'espace sur la page au-dessus des notes de pied de page
-(s'il y en a).
-\endulist
-\noindent
-\TeX\ d\'eclare |\box|$\,n$ et vous devez d\'eclarer les trois autres registres
-pour que \TeX\ puisse calculer correctement l'espace vertical requis par
-l'inser\-tion.
-Voir les \knuth{pages~122--125}{142--146} Pour d'autres d\'etails sur la fa\c con dont \TeX\
-ex\'ecute ces commandes et comment des insertions interagissent avec les coupures de page.
-\xrdef{endofinsert}
-\enddesc
-
-\see |\floatingpenalty| (\xref \floatingpenalty).
-\eix^^{insertions//commandes pour}
-
-
-%==========================================================================
-\section{Modifier la routine de sortie}
-
-\bix^^{routine de sortie}
-\begindesc
-\cts output {\param{liste de token}}
-\explain
-Ce param\`etre contient la \minref{routine de sortie} courante, c'est-\`a-dire,
-La liste de token que \TeX\ d\'eveloppe quand il trouve une coupure de page.
-\TeX\ met la page dans la ^|\box255|, ainsi |\output| est responsable
-de faire quelque chose avec la |\box255|---soit la sortir, soit
-la mettre ailleurs.
-La routine de sortie est aussi responsable d'attacher des choses comme des
-ent\^etes ou des pieds de page.
-\enddesc
-
-\begindesc
-\cts plainoutput {}
-\explain
-Cette commande invoque la routine de sortie de \plainTeX.
-^^{routine de sortie//par d\'efaut dans \plainTeX}
-\PlainTeX\ d\'efinit ^|\output| comme
-une liste de token contenant le seul et unique token |\plainoutput|.
-\enddesc
-
-\begindesc
-\cts shipout {\<bo\^\i te>}
-\explain
-Cette commande charge \TeX\ d'envoyer \<bo\^\i te> vers le \dvifile.
-^^{\dvifile//r\'eception de \boites\ de \b\tt\\shipout\e}
-\TeX\ d\'eveloppe toute commande |\write| dans \<bo\^\i te> comme une partie de |\shipout|.
-^^|\write//d\'evelopp\'e durant {\tt\\shipout}|
-Le principal usage de |\shipout| est dans la routine de sortie, mais vous pouvez
-l'utiliser n'importe o\`u.
-\enddesc
-
-\begindesc
-\cts deadcycles {\param{nombre}}
-\explain
-Ce param\`etre contient le nombre de fois que \TeX\ a lanc\'e
-la \minref{routine de sortie} depuis la derni\`ere fois qu'il a fait un
-^^|\shipout| |\ship!-out|.\footnote{
-Plus pr\'ecis\'ement, \TeX\ met |\dead!-cyles| \`a $0$ \`a chaque fois qu'il ex\'ecute
-|\ship!-out|
-et l'incr\'emente de $1$ \`a chaque fois qu'il ex\'ecute |\output|.}
-Si |\deadcycles| devient trop grand, \TeX\ est probablement entr\'e dans une
-boucle, par exemple, une o\`u le constructeur de page essaye la m\^eme coupure de
-page \`a n'en plus finir.
-\enddesc
-
-\begindesc
-\cts maxdeadcycles {\param{nombre}}
-\explain
-Si la valeur de |\deadcycles| d\'epasse la valeur de |\maxdeadcycles|,
-\TeX\ pr\'esume que la routine de sortie est entr\'ee dans une boucle.
-\TeX\ se plaint alors et effectue sa propre et simple routine de sortie,
-\'equivalente \`a |\shipout!allowbreak\box255|,
-Ce qui brisera vraisemblablement la boucle.
-\PlainTeX\ met |\maxdeadcycles| \hbox{\`a $25$}.
-\enddesc
-
-\begindesc
-\cts outputpenalty {\param{nombre}}
-\explain
-\TeX\ met ce param\`etre quand il coupe une page. Si le point de coupure \'etait sur un
-\'el\'ement de \minref{p\'enalit\'e}, \TeX\ enl\`eve l'\'el\'ement de p\'enalit\'e et
-met |\outputpenalty| \`a la valeur de la p\'enalit\'e au point de coupure~;
-autrement, il met |\outputpenalty| \hbox{\`a $0$}.
-
-Supposez que vous d\'efaites une coupure de page
-pour couper la page \`a un endroit diff\'erent que celui que \TeX\
-a choisi. Pour reconstruire la page, vous devez recr\'eer
-la p\'enalit\'e au point de coupure choisi par \TeX.
-Vous pouvez accomplir ceci avec la commande
-|\penalty!allowbreak\outputpenalty|.
-\enddesc
-
-\begindesc
-\cts holdinginserts {\param{nombre}}
-\explain
-Si ce param\`etre est plus grand que $0$ quand \TeX\
-ex\'ecute une coupure de page, \TeX\ s'abstiendra \`a ex\'ecuter des insertions.
-Mettre ce param\`etre \`a $1$
-peut \^etre utile quand vous \'ecrivez une routine de sortie
-qui \`a besoin de refaire le contenu de la page, par exemple,
-une routine de sortie qui utilise une valeur de |\vsize| (\xref \vsize) diff\'erente de
-celle utilis\'ee par le constructeur de page.
-
-\eix^^{routine de sortie}
-\enddesc
-
-%==========================================================================
-\section {S\'eparer des listes verticales}
-
-\begindesc
-\cts vsplit {\<nombre> {\bt to} \<dimension>}
-\explain
-Cette commande fait que \TeX\ s\'epare la \minref{bo\^\i te} num\'ero
-\<number>, que nous appellerons $B_2$, en deux parties.
-Il utilise le m\^eme algorithme que celui qu'il utiliserait si $B_2$ \'etait une page
-et qu'il coupait cette page.
-Le point de division correspond alors \`a la coupure de page qu'il trouverait.
-La bo\^\i te $B_2$ doit \^etre une vbox, pas une hbox.
-% we avoid starting the previous sentence with a symbol, a copyediting no-no.
-\TeX\ met le mat\'eriel pr\'ec\'edant le point de division dans
-un autre bo\^\i te $B_1$ et laisse le mat\'eriel apr\`es le point de division dans $B_2$.
-La commande |\vsplit| alors produit $B_1$.
-Normalement vous assignerez $B_1$ \`a un registre de bo\^\i te diff\'erent,
-comme dans l'exemple ci-dessous.
-Si le point de division est \`a la fin de $B_2$,
-$B_2$ sera vide apr\`es le |\vsplit|.
-
-\TeX\ emploie son algorithme de coupure de page habituel
-^^{coupures de page//en liste d\'edoubl\'ees}
-pour la division.
-Il utilise \<dimension> pour ^|\pagegoal|, la hauteur d\'esir\'ee de $B_1$.
-L'extension verticale de $B_1$ peut ne pas \^etre exactement \'egale \`a
-\<dimension> parce que \TeX\ peut ne pas \^etre capable d\'~ achever son but de page parfaitement.
-\TeX\ ne prend pas en compte les insertions dans le calcul de la division,
-donc des insertions dans la liste verticale originale de $B_2$
-seront maintenues mais n'affecteront pas le point de division.
-
-\example
-\setbox 20 = \vsplit 30 to 7in
-% Split off the first seven inches or so of material from
-% box 30 and place that material in box 20.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts splitmaxdepth {\param{dimension}}
-\explain
-Ce param\`etre sp\'ecifie la profondeur
-maximum autoris\'ee pour une bo\^\i te r\'esultant d'un |\vsplit|.
-|\splitmaxdepth| joue le
-m\^eme r\^ole que celui de ^|\maxdepth| (\xref \maxdepth) pour une page.
-\enddesc
-
-\begindesc
-\cts splittopskip {\param{ressort}}
-\explain
-Ce param\`etre sp\'ecifie le ressort que \TeX\ ins\`ere en haut d'une
-bo\^\i te r\'esultant d'un |\vsplit|.
-|\splittopskip| joue le
-m\^eme r\^ole que ^|\topskip| (\xref \topskip) joue pour une page.
-\enddesc
-
-\see |\splitbotmark|, |\splitfirstmark| (\xref \splitfirstmark).
-
-\enddescriptions \endchapter \byebye
-
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros +\chapter {Commandes pour \linebreak composer des pages} + +\chapterdef{pages} + +Cette section couvre des commandes qui concernent les +pages, leurs composants et la routine de sortie. +Pour une explication des conventions utilis\'ees dans cette section, +voir \headcit{Descriptions des commandes}{cmddesc}. + +\begindescriptions + +%========================================================================== +\section {Espaces inter-ligne et inter-paragraphe} + +\begindesc +\cts baselineskip {\param{ressort}} +\cts lineskiplimit {\param{dimension}} +\cts lineskip {\param{ressort}} +\explain +^^{espacement de ligne} +\bix^^{ressort inter-ligne} +\bix^^|\baselineskip| +\bix^^|\lineskip| +\bix^^|\lineskiplimit| +Ces trois param\`etres d\'eterminent ensemble combien d'espace \TeX\ laisse entre +des \minref{bo\^\i te}s cons\'ecutives d'une \minref{liste verticale} ordinaire, +c'est-\`a-dire, les lignes d'un paragraphe. +Cet espace est appel\'e ``\minref{ressort inter-ligne}''. +Il est aussi ins\'er\'e entre les bo\^\i tes composant une vbox construite en +mode vertical interne. +^^{vbox//ressort inter-ligne pour} + +Dans le cas courant, quand les bo\^\i tes ne sont pas anormalement hautes ou profondes, \TeX\ +rend la distance de la ligne de base d'une bo\^\i te \`a la ligne de base de la +suivante \'egale \`a |\baselineskip|. Il fait cela en ins\'erant un ressort inter-ligne +\'egal \`a |\baselineskip| moins la profondeur de la bo\^\i te sup\'erieure (ainsi donn\'e +par ^|\prevdepth|) et la hauteur de la bo\^\i te du dessous. Mais si ce ressort +inter-ligne doit \^etre inf\'erieur \`a |\lineskiplimit|, indiquant que les deux +bo\^\i tes sont trop rapproch\'ees, \TeX\ ins\`ere le ressort |\lineskip| \`a la +place.\footnote +{\TeX\ d\'ebute normalement le d\'ebut d'une liste verticale en mettant +|\prevdepth| \`a $-1000$\pt\ et en testant +|\prevdepth| avant \emph{toutes} les bo\^\i tes. Si |\prevdepth|$\>\le-1000$\pt\ +il ne doit ins\'erer aucun ressort inter-ligne.} Voir les \knuth{pages~79--80}{93} pour une +description pr\'ecise. + +Notez que |\baselineskip| et |\lineskip| mesurent des \emph{choses diff\'e\-rentes}~: +La distance entre des lignes de base d'un cot\'e et la distance +entre le bas d'une bo\^\i te et le haut de la bo\^\i te suivante d'un autre +cot\'e. Voir la \knuth{page~78}{91--92} pour d'autres d\'etails. Le premier exemple ci-dessous +montre les effets de |\lineskiplimit|. + +Vous pouvez obtenir l'effet d'un ^{double espacement} en doublant la valeur +de |\baselineskip| comme illustr\'e dans le second exemple ci-des\-sous. +Une modification de |\baselineskip| \`a n'importe quel endroit pr\'ec\'e\-dent la fin +d'un paragraphe affecte le paragraphe entier. + +\example +\baselineskip = 11pt \lineskiplimit = 1pt +\lineskip = 2pt plus .5pt +Sometimes you'll need to typeset a paragraph that has +tall material, such as a mathematical formula, embedded +within it. An example of such a formula is $n \choose k$. +Note the extra space above and below this line as +compared with the other lines. +(If the formula didn't project below the line, +we'd only get extra space above the line.) +| +\produces +\baselineskip = 11pt \lineskiplimit = 1pt +\lineskip = 2pt plus .5pt +Sometimes you'll need to typeset a paragraph that has +tall material, such as a mathematical formula, embedded +within it. An example of such a formula is $n \choose k$. +Note the extra space above and below this line as +compared with the other lines. +(If the formula didn't project below the line, +we'd only get extra space above the line.) +\endexample + +\example +\baselineskip = 2\baselineskip % Start double spacing. +| +\endexample + +\eix^^{ressort inter-ligne} +\eix^^|\baselineskip| +\eix^^|\lineskip| +\eix^^|\lineskiplimit| +\enddesc + +\begindesc +\cts prevdepth {\param{dimension}} +\explain +Quand \TeX\ ajoute une bo\^\i te \`a une liste verticale, il r\`egle |\prevdepth| \`a la +hauteur de cette bo\^\i te. \TeX\ met |\prevdepth| \`a $-10000$\pt\ au d\'ebut d'une +liste verticale, indiquant que le ressort inter-ligne normal doit \^etre supprim\'e. +\enddesc + +\begindesc +\cts normalbaselineskip {\param{ressort}} +\cts normallineskiplimit {\param{dimension}} +\cts normallineskip {\param{ressort}} +\cts normalbaselines {} +\explain +Ces trois param\`etres contiennent des valeurs pour |\base!-line!-skip|, +|\li!-neskip| et |\line!-skip!-limit| respectivement. +^^|\baselineskip| ^^|\lineskip| ^^|\lineskiplimit| +La commande |\normal!-base!-lines| met |\base!-line!-skip|, +|\line!-skip| et |\line!-skip!-limit| aux va\-leurs contenues dans les +trois param\`etres. +\enddesc + +\begindesc +\cts offinterlineskip {} +\explain +Cette commande demande \`a \TeX\ d'arr\^eter d'ins\'erer des ressorts inter-ligne \`a partir +de maintenant. \`A moins que vous vouliez qu'il soit effectif pour le reste du document +(ce que vous ne voulez probablement pas), vous devez l'englober dans un groupe +avec le texte que vous voulez qu'il affecte. +Son principal usage est de vous laisser faire l'espacement inter-ligne vous-m\^eme, +c'est-\`a-dire, en utilisant ^{struts}, +sans interf\'erence du ressort inter-ligne normal de \TeX. +|\offinterlineskip| est souvent utile quand +vous construisez un \minref{alignement} horizontal. +^^{alignements//utiliser \b\tt\\offinterlineskip\e\ dans des} +\example +\def\entry#1:#2 {\strut\quad#1\quad&\quad#2\quad\cr} +\offinterlineskip \tabskip = 0pt \halign{% +\vrule\quad\hfil#\hfil\quad\vrule& + \quad\hfil#\hfil\quad\vrule\cr +\noalign{\hrule} +\vphantom{\vrule height 2pt}&\cr \noalign{\hrule} +\entry \it Opera:\it Composer +\vphantom{\vrule height 2pt}&\cr \noalign{\hrule} +\vphantom{\vrule height 2pt}&\cr +\entry Fidelio:Beethoven +\entry Peter Grimes:Britten +\entry Don Giovanni:Mozart +\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}} +| +\produces +\medskip +\def\entry#1:#2 {\strut\quad#1\quad&\quad#2\quad\cr} +\offinterlineskip \tabskip = 0pt \halign{% +\vrule\quad\hfil#\hfil\quad\vrule& + \quad\hfil#\hfil\quad\vrule\cr +\noalign{\hrule} +\vphantom{\vrule height 2pt}&\cr \noalign{\hrule} +\entry \it Opera:\it Composer +\vphantom{\vrule height 2pt}&\cr \noalign{\hrule} +\vphantom{\vrule height 2pt}&\cr +\entry Fidelio:Beethoven +\entry Peter Grimes:Britten +\entry Don Giovanni:Mozart +\vphantom{\vrule height 2pt}&\cr \noalign{\hrule}} +\endexample +\enddesc + +\begindesc +\cts nointerlineskip {} +\explain +Cette commande demande \`a \TeX\ de ne pas ins\'erer de ressort inter-ligne devant la +prochaine ligne. +Elle n'a aucun effet sur les lignes suivantes. +\enddesc + +\begindesc +\cts openup {\<dimension>} +\explain +Cette commande augmente ^|\baselineskip| de \<dimension>. +Une commande |\openup| avant la fin d'un paragraphe affecte +tout le paragraphe, donc vous ne devez pas utiliser |\openup| pour +changer |\baseline!-skip| dans un paragraphe. |\openup| est +plus utile pour composer des tables et des affichages math\'ematiques---un +petit espace suppl\'ementaire entre des rang\'ees les rend souvent plus lisibles. +^^{alignements//espace entre rang\'ees d'} +\example +Alice picked up the White King very gently, and lifted him +across more slowly than she had lifted the Queen; but before +she put him on the table, she thought she might well dust +him a little, he was so covered with ashes. +\openup .5\baselineskip % 1.5 linespacing. +| +\produces +Alice picked up the White King very gently, and lifted him +across more slowly than she had lifted the Queen; but before +she put him on the table, she thought she might well dust +him a little, he was so covered with ashes. +\openup .5\baselineskip %1.5 linespacing +\endexample\enddesc + +%========================================================================== +\section {Coupures de page} + +%========================================================================== +\subsection {Encourager ou d\'ecourager des coupures de page} + +\begindesc +\bix^^{coupures de page} +\bix^^{coupures de page//encourager ou d\'ecourager} +\ctspecial break {} \xrdef{vbreak} +\explain +% +\margin{Four commands identical to ones for line breaks (\xref{hbreak}) +have been added to correct an omission. The descriptions are exactly parallel.} +% +Cette commande force une coupure de page. +\`a moins que vous ne fassiez quelque chose pour compl\'eter la page, +Vous obtiendrez s\^urement un ``underfull vbox''. +|\break| peut aussi \^etre utilis\'e en mode horizontal. +\enddesc + +\begindesc +\ctspecial nobreak {} \xrdef{vnobreak} +\explain +Cette commande emp\^eche une coupure de page l\`a o\`u elle +aurait du arriver autrement. +|\nobreak| peut aussi \^etre utilis\'e en mode horizontal. +\enddesc + +\begindesc +\ctspecial allowbreak {} \xrdef{vallowbreak} +\explain +Cette commande demande \`a \TeX\ d'autoriser +une coupure de page l\`a o\`u elle ne pourrait normalement pas arriver. +|\allowbreak| peut aussi \^etre utilis\'e en mode horizontal. +\enddesc + +\begindesc +\ctspecial penalty {\<nombre>} \xrdef{vpenalty} +\explain +Cette commande produit un \'el\'ement de \minref{p\'enalit\'e}. +L'\'el\'ement de p\'enalit\'e rend \TeX\ plus ou moins d\'esireux de couper une page +\`a l'endroit o\`u cet \'el\'ement arrive. +Une p\'enalit\'e n\'egative, c'est-\`a-dire, un bonus, encourage une coupure de page~; +Une p\'enalit\'e positive d\'ecourage une coupure de page. +Une p\'enalit\'e de $10000$ ou plus emp\^eche toute coupure, +tandis qu'une p\'enalit\'e de $-10000$ ou moins force une coupure. +|\penalty| peut aussi \^etre utilis\'e en mode horizontal. +\example +\def\break{\penalty-10000 } % as in plain TeX +\def\nobreak{\penalty10000 } % as in plain TeX +\def\allowbreak{\penalty0 } % as in plain TeX +| +\endexample +\enddesc + +\begindesc +\cts goodbreak {} +\explain +Cette commande termine un paragraphe et indique aussi \`a \TeX\ que +c'est un bon endroit pour couper la page. +\enddesc + +\begindesc +\cts smallbreak {} +\cts medbreak {} +\cts bigbreak {} +\explain +Ces commandes indiquent des endroits de plus en plus d\'esirables pour \TeX\ de +couper une page. Elles demande aussi \`a \TeX\ +d'ins\'erer respectivement un ^|\smallskip|, ^|\medskip| ou +^|\bigskip| (\xref \smallskip) si la coupure de page ne se produit pas l\`a. +\TeX\ supprime ce saut s'il se produit juste apr\`es un saut \'egal ou plus grand. +\enddesc + +\begindesc +\easy\cts eject {} +\cts supereject {} +\explain +Ces commandes forcent une coupure de page \`a la position courante +et terminent le paragraphe courant. +Si vous ne les pr\'ec\'edez pas de |\vfil| (\xref \vfil), +^^|\vfil//n\'ecessaire avec {\tt\\eject}| +\TeX\ essayera d'\'etirer le contenu de la page +(et se plaindra probablement d'un ``underfull vbox''). +La commande |\supereject|, en plus, +enclenche la routine de sortie de \plainTeX\ pour +faire sortir toutes insertions en surplus, +^^{insertions//forc\'es par \b\tt\\supereject\e} +telles que de longues notes de pied de page, +ainsi elle sont produites avant que toute autre entr\'ee soit ex\'ecut\'ee. +Donc |\supereject| est un bonne commande \`a utiliser \`a la fin de chaque +chapitre ou autre division majeure de votre document. +\enddesc + +\begindesc +\cts filbreak {} +\explain +Cette commande procure une sorte de coupure de page conditionnelle. +Elle demande \`a \TeX\ de +couper la page---sauf si le texte d'une autre |\filbreak| se trouve +aussi sur la m\^eme page. +En englobant un paragraphe dans une paire de |\filbreak|, +vous pouvez vous assurer que \TeX\ gardera un paragraphe sur une seule page s'il le peut. +Vous ne devez pas utiliser |\filbreak| dans un paragraphe, car il +force \TeX\ en mode vertical et ainsi termine la paragraphe. +Voir \xrefpg{filbreak} pour plus de conseil sur ce sujet. +\enddesc + +\begindesc +\cts raggedbottom {} +\cts normalbottom {} +\explain +Normalement \TeX\ essaye fortement de s'assurer que toutes les pages +aient la m\^eme profondeur, c'est-\`a-dire, que leurs marges du bas soient \'egales. +La commande |\raggedbottom| demande \`a \TeX\ d'autoriser +quelques variations parmi les marges du bas sur diff\'erentes pages. +Il est souvent appropri\'e d'utiliser |\raggedbottom| quand vous avez du mat\'eriel +qui contient de larges blocs de mat\'eriel qui ne doivent pas \^etre s\'epar\'es sur deux pages. +La commande |\normalbottom| efface l'effet de |\raggedbottom|. + +\eix^^{coupures de page//encourager ou d\'ecourager} +\enddesc + +%========================================================================== +\subsection {Param\`etres de coupure de page} + +\bix^^{coupures de page//param\`etres de} +\begindesc +\cts interlinepenalty {\param{nombre}} +\explain +Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une +coupure de page entre les lignes d'un paragraphe. +En le mettant \`a $10000$ vous pouvez forcer toutes les coupures de page \`a se faire +entre les paragraphes, en esp\'erant que les pages aient assez d'\'etirement pour +que \TeX\ puisse les composer d\'ecemment. +\PlainTeX\ laisse |\inter!-linepenalty| \`a~$0$. +\enddesc + +\begindesc +\cts clubpenalty {\param{nombre}} +\explain +^^{ligne orpheline} +Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une +coupure de page juste apr\`es la premi\`ere ligne d'un paragraphe. +Une ligne seule en bas d'une page est appel\'ee une ``ligne orpheline''. +\PlainTeX\ met |\clubpenalty| \`a $150$. +\enddesc + +\begindesc +\cts widowpenalty {\param{nombre}} +\explain +^^{ligne veuve} +Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une +coupure de page juste avant la derni\`ere ligne d'un paragraphe. +Une ligne seule en haut d'une page est appel\'ee une ``ligne veuve''. +\PlainTeX\ met |\widowpenalty| \`a $150$. +\enddesc + +\begindesc +\cts displaywidowpenalty {\param{nombre}} +\explain +^^{ligne veuve}^^{math\'ematiques affich\'ees} +Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une +coupure de page juste avant la derni\`ere ligne d'un paragraphe partiel +qui pr\'ec\`ede imm\'ediatement un affichage math\'ematique. +\PlainTeX\ met |\displaywidowpenalty| \`a $50$. + +\enddesc + +\begindesc +\cts predisplaypenalty {\param{nombre}} +\explain +^^{math\'ematiques affich\'ees} +Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une +coupure de page juste avant un affichage math\'ematique. +\PlainTeX\ met |\predisplaypenalty| \`a $10000$. +\enddesc + +\begindesc +\cts postdisplaypenalty {\param{nombre}} +\explain +^^{math\'ematiques affich\'ees} +Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une +coupure de page juste apr\`es un affichage math\'ematique. +\PlainTeX\ laisse |\postdisplaypenalty| \`a $0$. +\enddesc + +\begindesc +\cts brokenpenalty {\param{nombre}} +\explain +Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} pour une +coupure de page juste apr\`es une ligne se terminant par +une \'el\'ement optionnel (habituellement une c\'esure). +^^{c\'esure} +|\brokenpenalty| s'applique aux coupure de page, tandis que +^|\hyphenpenalty| \ctsref{\hyphenpenalty} s'applique aux coupure de ligne. +\PlainTeX\ met |\brokenpenalty| \`a $100$. +\enddesc + +\begindesc +\cts insertpenalties {\param{nombre}} +\explain +\bix^^{insertions//p\'enalit\'es pour} +\bix^^{mat\'eriel flottant} +Ce param\`etre contient la somme de certaines p\'enalit\'es \minrefs{p\'enalit\'e} +que \TeX\ accumule quand il place des insertions sur la page courante. +Ces p\'enalit\'es encourent une plainte quand \TeX\ ex\'ecute une commande +|\insert| +et d\'ecouvre qu'une insertion pr\'ec\'edente du m\^eme type sur cette page a +\'et\'e s\'epar\'ee, laissant une partie pour les page suivantes. +Voir les \knuth{pages~123--125}{143--146} pour les d\'etails de ce +calcul. + +\margin{Material moved from a footnote to the main text.} +|\insertpenalties| a une signification enti\`erement diff\'erente pendant une +^^{routine de sortie//signification de \b\tt\\insertpenalties\e\ dans la} +routine de sortie---c'est le nombre d'insertions qui ont \'et\'e vues +mais qui ne tiennent pas sur la page courante (voir la \knuth{page~125}{146}). +\enddesc + +\begindesc +\cts floatingpenalty {\param{nombre}} +\explain +Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} que +\TeX\ ajoute \`a |\insertpenalties| +^^|\insertpenalties| +quand le constructeur de page ajoute une insertion \`a la page courante +et d\'ecouvre qu'une insertion pr\'ec\'edente du m\^eme type sur cette page a +\'et\'e coup\'ee, en laissant une partie d'elle pour des pages suivantes. +\PlainTeX\ laisse |\floatingpenalty| \`a~$0$. +\eix^^{insertions//p\'enalit\'es pour} +\eix^^{mat\'eriel flottant} + +\enddesc + +\begindesc +\cts pagegoal {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie la hauteur d\'esir\'ee pour la page courante. +\TeX\ met +|\pagegoal| \`a la valeur courante de |\vsize| +quand il met en premier une bo\^\i te ou une insertion sur la page courante. +Vous pouvez raccourcir une page tant que \TeX\ travaille sur elle en +changeant la valeur de |\pagegoal|---m\^eme si la nouvelle valeur est +inf\'erieure \`a la hauteur du mat\'eriel d\'ej\`a sur cette page. +\TeX\ mettra juste le mat\'eriel en plus sur la page suivante. +Mais souvenez-vous---|\pagegoal| est remis \`a |\vsize| quand \TeX\ +commence la page suivante. +\enddesc + +\begindesc +\cts pagetotal {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie la hauteur naturelle accumul\'ee sur la page courante. +\TeX\ met \`a jour |\pagetotal| quand il ajoute des \'el\'ements \`a la +\minref{liste verticale} principale. + + +\enddesc + +\begindesc +\cts pagedepth {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie la profondeur de la page courante. +\TeX\ met \`a jour |\pagedepth| quand il ajoute des +\'el\'ements \`a la \minref{liste verticale} principale. +\enddesc + +\begindesc +\cts pageshrink {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie le montant de \minref{r\'etr\'ecissement} +dans les \minref{ressort} accumul\'es sur la page courante. +\TeX\ met \`a jour |\pageshrink| quand il ajoute des \'el\'ements +\`a la \minref{liste verticale} principale. +\enddesc + +\begindesc +\cts pagestretch {\param{dimension}} +\cts pagefilstretch {\param{dimension}} +\cts pagefillstretch {\param{dimension}} +\cts pagefilllstretch {\param{dimension}} +\explain +Ces quatre param\`etres sp\'ecifient ensemble le montant d'\minref{\'etirement} +dans les \minref{ressort}s de la page courante. Le montant d'\'etirement a +la forme +{\def\f#1{\hbox{\tt fi#1}}% +$n_0 + n_1\f{l} + n_2\f{ll} + n_3\f{lll}$}, avec les quatre param\`etres +donnant les valeurs des quatre $n_i$. +\TeX\ met \`a jour ces param\`etres quand il ajoute des +\'el\'ements \`a la \minref{liste verticale} principale. + +\eix^^{coupures de page//param\`etres de} +\eix^^{coupures de page} +\enddesc + +%========================================================================== +\section{Gabarit de page} + +\subsection {Param\`etres de description de page} + +\begindesc +\bix^^{dimensions de page} +\margin{This command was also described in the `Paragraphs' section. +The combined description now appears there.} +\aux\cts hsize {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie la longueur de la ligne courante. +Voir \xrefpg{\hsize} pour une plus compl\`ete explication. +\enddesc + +\begindesc +\cts vsize {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie l'extension verticale courante d'une page. +\TeX\ ne l'examine qu'en commen\c cant une page. Donc si vous changez +|\vsize| dans le +milieu d'une page, votre changement n'affectera rien avant la page suivante. +Si vous voulez changer l'extension verticale d'une page quand +vous en \^etes au milieu, vous pouvez assigner la nouvelle hauteur +\`a ^|\pagegoal| (\xref \pagegoal) \`a la place. (Si vous +voulez que le changement affecte aussi les pages suivantes, vous devez +changer \emph{ensemble} |\vsize| et |\pagegoal|.) +\PlainTeX\ met |\vsize| \`a |8.9in|. +\eix^^{dimensions de page} +\enddesc + +\begindesc +\cts hoffset {\param{dimension}} +\cts voffset {\param{dimension}} +\margin{These commands were moved up from later in the subsection.} +^^{origine de la page} +\idxsee{origine}{origine de la page} +\explain +\TeX\ prend normalement l'``origine'' d'une page, qui est le point o\`u +il d\'ebute l'impression, comme \'etant \`a un pouce sous le haut de la page et \`a un +pouce \`a droite du bord gauche de la page.\footnote{ +\TeX\ lui-m\^eme est indiff\'erent d'o\`u est l'origine de la page, +mais cette information doit \^etre inscrite pour les drivers du syst\`eme +^^{drivers de p\'eriph\'erique//origine de la page connu des} +qui convertissent les \dvifile\ en forme imprimable, ainsi ces diff\'erents syst\`emes +donneront les m\^eme r\'esultats.} +Les valeurs de |\hoffset| et +|\voffset| donnent l'offset horizontal et vertical de l'origine actuelle +\`a partir de ce point. Ainsi si |\hoffset| et |\voffset| sont tous les deux +\`a z\'ero, \TeX\ utilise son origine normale. +\example +\hoffset = -.3in + % Start printing .7 inches from left edge of paper. +\voffset = 1in + % Start printing 2 inches from top edge of paper. +| +\endexample +\enddesc + +\begindesc +\cts topskip {\param{ressort}} +\explain +\TeX\ ins\`ere un ressort en haut de chaque +page pour s'assurer que la ligne de base de la premi\`ere bo\^\i te de la page +soit toujours \`a la m\^eme distance $d$ du haut de la page. +|\topskip| d\'etermine le montant de ce ressort, +appel\'e le ``ressort |\topskip|'', en sp\'ecifiant +ce que $d$ doit \^etre (pr\'evoyez que la premi\`ere bo\^\i te +de la page ne soit pas trop haute). +$d$ est donn\'e par la taille naturelle du ressort |\topskip|. +Si la hauteur de la premi\`ere bo\^\i te sur la page d\'epasse $d$, +et que le ressort devrait \^etre n\'egatif, \TeX\ n'ins\`ere simplement pas +de ressort |\topskip| du tout sur cette page. + +Pour mieux comprendre l'effet de ces r\`egles, supposez que |\topskip| +n'a ni \'etirement ni r\'etr\'ecissement et que le premier \'el\'ement sur la page +soit vraiment une bo\^\i te. Alors si la hauteur de cette bo\^\i te n'est pas plus +grande que |\topskip|, sa ligne de base sera \`a |\topskip| du haut de la page +ind\'ependamment de sa hauteur. D'un autre cot\'e, +si la hauteur de la bo\^\i te est $e$, plus grande que |\topskip|, sa ligne de base +sera \`a |\topskip|\tplus$e$ du haut de la page. +Voir les \knuth{pages~113--114}{132} pour les autres d\'etails sur le +fonctionnement de |\topskip|. +\PlainTeX\ met |\topskip| \`a |10pt|. +\enddesc + + +\begindesc +\cts parskip {\param{ressort}} +\explain +Ce param\`etre sp\'ecifie le ``^{saut de paragraphe}'', c'est-\`a-dire, le +ressort vertical que \TeX\ ins\`ere au d\'ebut d'un paragraphe. +^^{paragraphes//ressort entre} +Voir |\par| (\xref{\@par}) pour plus d'information sur ce qui se passe +quand \TeX\ d\'ebute un paragraphe. +\PlainTeX\ met |\parskip| \`a |0pt plus 0.1pt|. +\enddesc + +\begindesc +\cts maxdepth {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie la profondeur maximum de la \minref{bo\^\i te} du bas +d'une page. Il est reli\'e \`a |\boxmaxdepth| (\xref \boxmaxdepth). Si la +profondeur de la bo\^\i te du bas d'une page d\'epasse |\maxdepth|, \TeX\ +descend le point de r\'ef\'erence de la bo\^\i te pour qu'il soit \`a +|\maxdepth| du bas de cette bo\^\i te. +Sans cet ajustement, la bo\^\i te du bas d'une +page pourrait bien s'\'etendre dans la marge du bas ou m\^eme recouvrir +la page enti\`erement. \PlainTeX\ met |\maxdepth| \`a |4pt|. +\enddesc + +%========================================================================== +\subsection{Num\'eros de page} + +\begindesc +\bix^^{num\'erotation de page} +\cts pageno {\param{nombre}} +\explain +Ce param\`etre contient le num\'ero de page courant sous la forme d'un entier. +Le num\'ero de page est normalement n\'egatif pour les pages d'intro\-duction +qui sont num\'erot\'ees avec des petits chiffres romains au lieu des nombres +arabes. Si vous changez le num\'ero de page dans une page, le num\'ero modifi\'e +sera utilis\'e dans tous les ent\^etes ou pieds de page qui apparaissent sur +cette page. L'impression actuelle des num\'eros de page est prise en main par +la \minref{routine de sortie} de \TeX, que vous pouvez modifier. + +\PlainTeX\ garde le num\'ero de page dans le \minref{registre} ^|\count0|. +(|\pageno| est, en fait, un synonyme de |\count0|.) +\`a chaque fois qu'il envoie une page vers le \dvifile, +^^|\shipout//registres {\tt\\count} affich\'es avec| +\TeX\ affiche la valeur courante de |\count0| sur votre +terminal pour que vous puissiez dire sur quelle page il est en train de +travailler. Il est possible d'utiliser des registres |\count1|--|\count9| +pour embo\^\i ter des niveaux de num\'eros de page (vous devez programmer cela vous-m\^eme). +Si un de ces registres est diff\'erent de z\'ero, \TeX\ l'affiche aussi sur votre +terminal.\footnote{ +Plus pr\'ecis\'ement, il affiche tous les registres en s\'equence de +|\count0| \`a |\count9|, mais omet les registres restants \`a z\'ero. +Par exemple, si les valeurs de |\count0|--|\count3| +sont $(17, 0 , 0, 7)$ et que les autres sont \`a $0$, +\TeX\ affiche le num\'ero de page ainsi {\tt [17.0.0.7]}.} +\example +This explanation appears on page \number\pageno\ +of our book. +| +\produces +This explanation appears on page \number\pageno\ +of our book. + +\nextexample +\pageno = 30 % Number the next page as 30. +Don't look for this explanation on page \number\pageno. +| +\produces +Don't look for this explanation on page 30. +\endexample +\enddesc + +\begindesc +\cts advancepageno {} +\explain +Cette commande ajoute $1$ au num\'ero de page +$n$ dans |\pageno| si $n\ge0$ +et lui soustrait $1$ si $n<0$. +\enddesc + +\begindesc +\easy\cts nopagenumbers {} +\explain +Par d\'efaut, \plainTeX\ produit un pied de page contenant un num\'ero de page +centr\'e. +Cette commande demande \`a \TeX\ de produire un pied de page blanc \`a la place. +\enddesc + +\begindesc +\cts folio {} +\explain +Cette commande produit le num\'ero de page courant, dont la valeur est le num\'ero +$n$ contenu dans ^|\pageno|. +Si $n\ge0$, +\TeX\ produit $n$ comme un nombre d\'ecimal, +tandis que si $n<0$, +\TeX\ produit $-n$ en chiffre romain minuscule. +\example +This explanation appears on page \folio\ of the book. +| +\produces +This explanation appears on page \folio\ of the book. +\endexample + +\eix^^{num\'erotation de page} +\enddesc + + +%========================================================================== +\subsection{Lignes d'ent\^ete et de pied de page} + +\begindesc%\secondprinting{\vglue-.75\baselineskip\vskip0pt} +\cts headline {\param{liste de token}} +\cts footline {\param{liste de token}} +\explain +Ces param\`etres +contiennent, respectivement, la ligne de t\^ete courante (ent\^ete) et la ligne de +pied de page courante (pied de page). +La routine de sortie de \plainTeX\ +place la ligne de t\^ete en haut de chaque page et ligne de pied de page +en bas de chaque page. +La ligne de t\^ete par d\'efaut est vide et la ligne de pied de page par d\'efaut +est un num\'ero de page centr\'e. + +Les lignes de t\^ete et de pied de page doivent \^etre toutes les deux +aussi large que |\hsize| (utilisez |\hfil|, \xref{\hfil}, pour cela +si n\'ecessaire). +Vous devez toujours inclure une commande de s\'election de police dans ces lignes, +sinon la police courante est impr\'evisible quand \TeX\ appelle la routine de +sortie. Si vous ne s\'electionnez la police explicitement, +vous obtiendrez n'importe quelle police que \TeX\ utilisait quand il a coup\'e +la page. + +N'essayez pas d'utiliser |\headline| ou |\footline| +pour produire des ent\^etes ou des pieds de page multi-lignes. +Bien que \TeX\ ne se plaindra pas, cela vous donnera quelque chose de tr\`es laid. +Voir \xrefpg{bighead} pour une m\'ethode de cr\'eation d'ent\^ete ou de pied de +page multi-ligne. +\example +\headline = {\tenrm My First Reader\hfil Page \folio} +| +\produces +\pageno = 10 +\line{\tenrm \noindent My First Reader\hfil Page \folio} +\par ({\it at the top of page \folio}\/) +\nextexample +\footline = {\tenit\ifodd\pageno\hfil\folio + \else\folio\hfil\fi} +% Produce the page number in ten-point italic at +% the outside bottom corner of each page. +| +\endexample\enddesc + +%\secondprinting{\vfill\eject} + + +%========================================================================== +\subsection {Marques} + +\begindesc +\cts mark {\rqbraces{\<texte>}} +\explain +\bix^^{marques} +Cette commande fait que \TeX\ attache une marque +contenant \<mark text> +\`a toute liste qu'il est en train de construire. +G\'en\'eralement vous ne devez pas utiliser |\mark| dans une +construction ``interne'' comme une formule math\'ematique ou une \minref{bo\^\i te} +que vous avez construit avec une commande |\hbox|, |\vbox| ou |\vtop|, parce +que \TeX\ ne verra pas la marque quand il construira la bo\^\i te principale +de la page. Mais si vous utilisez |\mark| en \minref{mode} horizontal ordinaire +ou directement dans une hbox qui fait partie de la liste verticale principale, +la marque migrera vers la \minref{liste verticale} principale. +Voir les \knuth{pages~259--260}{304--305} pour des exemples montrant comment |\mark| +peut \^etre utilis\'e. +\enddesc + +\begindesc +\cts firstmark {} +\cts botmark {} +\cts topmark {} +\explain +Ces commandes d\'eveloppent le texte de la marque dans un \'el\'ement g\'en\'er\'e par une +pr\'ec\'edente commande ^|\mark|. +Le texte de la marque a la forme d'une liste de token. +\TeX\ met la valeur de ces commandes quand il +termine le placement du contenu d'une page dans ^|\box255|, +juste avant d'appeler la \minref{routine de sortie} +comme une partie de son action de \minref{coupure de page}. \TeX\ d\'etermine +ces valeurs comme suit~: +\ulist\compact +\li |\firstmark| contient les tokens de la premi\`ere marque de la page. +\li |\botmark| contient les tokens de la derni\`ere marque de la page. +\li |\topmark| contient les tokens de la marque qui est effective tout +en haut de la page. +Cette marque est la derni\`ere marque +qui \emph{pr\'ec\`ede} la page, +c'est-\`a-dire, le |\botmark| de la page pr\'ec\'edente. +Il est vide si aucune page ne pr\'ec\`ede la page. +\endulist +\noindent +Si une page n'a aucune marque sur elle, \TeX\ mettra |\firstmark| et |\botmark| +avec la m\^eme marque que |\topmark|, c'est-\`a-dire, la plus r\'ecente marque pr\'ec\'edente. +La table en bas de la \knuth{page~258}{303} illustre la relation entre +|\firstmark|, |\botmark| et |\topmark|. +\enddesc + +\begindesc +\cts splitfirstmark {} +\cts splitbotmark {} +\explain +^^{marques//pour listes d\'edoubl\'ees} +Ces commandes d\'eveloppent le ^{texte de marque} g\'en\'er\'e par une commande +^|\mark| pr\'ec\'edente qui produisent un \'el\'ement dans la liste d'\'el\'ement d'une vbox $V$. +Le texte de marque a la forme d'une liste de token. +Quand \TeX\ +s\'epare $V$ en r\'eponse \`a une commande ^|\vsplit| (\xref \vsplit), +il met les valeurs de ces commandes comme suit~: +\ulist\compact +\li |\splitfirstmark| contient les tokens de la premi\`ere marque dans +la liste d'\'el\'ement de $V$. +\li |\splitbotmark| contient les tokens de la derni\`ere marque dans +la liste d'\'el\'ement de $V$. +\endulist +Ces commandes ne produisent aucun token s'il n'y a pas de |\vsplit| pr\'ec\'edent +ou si le plus r\'ecent |\vsplit| pr\'ec\'edent ne contient aucune marque. +\eix^^{marques} +\enddesc + +%========================================================================== +\section {Insertions} + +\subsection {Pieds de page} + +\begindesc +\easy\cts footnote {\<argument$_1$> \<argument$_2$>} +\cts vfootnote {\<argument$_1$> \<argument$_2$>} +\explain +Ces commandes produisent des notes de pied de page. +\<argument$_1$> est la ``^{marque de r\'ef\'erence}'' +pour la note de pied de page et \<argument$_2$> est son texte. +Le texte peut faire plusieurs paragraphes de long si n\'ecessaire et peut contenir +des constructions comme des affichages math\'ematiques, mais ne peut contenir +aucune +\minref{insertion} (comme d'autres notes de pied de page). + +Vous ne pouvez pas utiliser ces commandes \`a l'int\'erieur d'une sous-formule d'une +formule math\'ematique, +dans une bo\^\i te \`a l'int\'erieur d'une bo\^\i te contribuant \`a une page +ou dans une insertion de toute sorte. +Si vous n'\^etes pas s\^ur de la mani\`ere dont ces restrictions s'appliquent, il +peut \^etre sage de n'utiliser +|\footnote| et |\vfootnote| que directement dans un paragraphe ou +entre des paragraphes. + +Ces restrictions ne sont pas aussi s\'ev\`eres qu'elles ne le semblent parce que +vous pouvez utiliser +|\vfootnote| pour mettre en note de pied de page la plupart des choses. +|\foot!-note| et |\vfoot!-note| ins\`erent tous les deux des marques de r\'ef\'erence +en t\^ete de la note de pied de page elle-m\^eme, mais |\vfoot!-note| n'ins\`ere +pas la marque de r\'ef\'erence dans le texte. +Ainsi, quand vous utilisez |\vfoot!-note| vous pouvez +ins\'erer explicitement la marque de r\'ef\'erence +n'importe o\`u, sans que cela concerne le contexte +et placer le |\vfootnote| dans le paragraphe suivant. +Si vous trouvez que la note de bas de page atterrit sur +la page suivant celle o\`u elle devrait, d\'eplacez le |\vfootnote| +vers le paragraphe pr\'ec\'edent. +Il y a de rares circonstances o\`u vous devez alt\'erer +le texte de votre document pour qu'une note de bas de page apparaisse sur +la m\^eme page que sa marque de r\'ef\'erence. +\example +To quote the mathematician P\'olya is a ploy.\footnote +*{This is an example of an anagram, but not a strict one.} +| +\produces +To quote the mathematician P\'olya is a ploy.* +\par\line{\hskip .5in \vdots\hfil} +\nointerlineskip \bigskip +\footnoterule\par\parindent = 12pt +\textindent{*}This is +an example of an anagram, but not a strict one. +\endexample +\example +$$f(t)=\sigma\sigma t\;\raise 1ex \hbox{\dag}$$ +\vfootnote \dag{The $\sigma\sigma$ notation was explained in +the previous section.} +| +\produces +$$f(t)=\sigma\sigma t\>\raise 1ex \hbox{\dag}$$ +\par\line{\hskip .5in \vdots\hfil} +\nointerlineskip \bigskip +\footnoterule\par\parindent = 12pt +\textindent{\dag}{The $\sigma\sigma$ notation was explained in +the previous section.} +\endexample +\enddesc + +%========================================================================== +\subsection {Insertions g\'en\'erales} + +\begindesc +\bix^^{insertions//commandes pour} +\cts topinsert {\<mat\'eriel en mode vertical> {\bt \\endinsert}} +\cts midinsert {\<mat\'eriel en mode vertical> {\bt \\endinsert}} +\cts pageinsert {\<mat\'eriel en mode vertical> {\bt \\endinsert}} +\explain +Ces commandes produisent diff\'erentes formes d'insertions qui +informent +(ou autorisent) \TeX\ \`a d\'elocaliser le \<mat\'eriel en mode vertical>~: +\ulist +\li |\topinsert| essaye de mettre le mat\'eriel en haut de la page courante. +S'il ne peut pas s'y ajuster, |\topinsert| +d\'eplacera le mat\'eriel vers le prochain haut de page possible. +\li |\midinsert| essaye de mettre le mat\'eriel \`a la position courante. +S'il ne peut pas s'y ajuster, |\midinsert| +d\'eplacera le mat\'eriel vers le prochain haut de page possible. +\li |\pageinsert| met le mat\'eriel lui-m\^eme sur la page suivante. +Pour \'eviter une page pas assez pleine, assurez vous de terminer le mat\'eriel ins\'er\'e avec +|\vfil| ou remplissez l'espace excessif d'une autre mani\`ere. +% Knuth doesn't say this, but I tried an experiment that verified it. +% Nor does he say explicitly that an insertion does a \par. +\endulist +\noindent +Le \<mat\'eriel en mode vertical> +est dit \^etre ``flottant'' ^^{mat\'eriel flottant} parce que \TeX\ +peut le d\'eplacer d'une place \`a une autre. +Des insertions sont tr\`es pratiques pour du mat\'eriel tel que des figures et des +tables parce que vous pouvez positionner ce mat\'eriel o\`u vous voulez sans +savoir o\`u les coupures de page tomberont. + +Chacune de ces commandes termine implicitement le paragraphe cou\-rant, donc +vous ne devez les utiliser qu'entre des paragraphes. +Vous ne devez pas les utiliser dans une bo\^\i te ou dans d'autres insertions. +Si vous avez plusieurs insertions en comp\'etition pour +le m\^eme espace, \TeX\ conservera leur ordre relatif. +\example +\pageinsert +% This text will appear on the following page, by itself. +This page is reserved for a picture of the Queen of Hearts +sharing a plate of oysters with the Walrus and +the Carpenter. +\endinsert +| +\endexample +\enddesc + +\begindesc +\cts endinsert {} +\explain +Cette commande termine une insertion d\'ebut\'ee par +|\topinsert|, |\mid!-insert| ou |\pageinsert|. +\enddesc + +\begindesc +\cts insert {\<nombre> \rqbraces{\<mat\'eriel en mode vertical>}} +\explain +\minrefs{insertion} +Cette commande primitive fournit le m\'ecanisme sous-jacent la construction +des insertions, mais +elle n'est presque jamais utilis\'ee en dehors d'un d\'efinition de \minref{macro}. +Les d\'efinitions des commandes +|\foot!-note|, |\vfoot!-note|, +|\top!-insert|, |\mid!-insert| et |\page!-insert| sont +toutes construites autour d'|\insert|. +^^|\topinsert| +^^|\midinsert| ^^|\pageinsert| ^^|\footnote| ^^|\vfootnote| + +Quand vous concevez des insertions pour un document, vous devez assigner un +code entier diff\'erent\footnote +{\texbook{} utilise le terme ``classe'' pour un code. +Nous pr\'ef\'erons un terme diff\'erent pour \'eviter toute confusion avec l'autre signification +de ``classe'' (\xref{classe}).} +$n$ pour chaque type d'insertion, +utilisez la commande ^|\newinsert| (\xref{\@newinsert}) pour obtenir les +codes entiers. +La commande |\insert| elle-m\^eme annexe le \<mat\'eriel en mode vertical> +\`a la \minref{liste verticale} ou horizontale courante. +Notre \minref{routine de sortie} est responsable de +d\'eplacer le mat\'eriel ins\'er\'e d'o\`u il r\'eside dans la |\box|$\,n$ +vers la page de sortie. +^^{routine de sortie} + +\TeX\ regroupe ensemble toutes les insertions ayant le m\^eme num\'ero de code. +Chaque code d'insertion $n$ a quatre \minref{registre}s qui lui sont associ\'es~: +\ulist +\li |\box|$\,n$ est l'endroit o\`u \TeX\ accumule le mat\'eriel pour des insertions +avec le code $n$. Quand \TeX\ coupe une page, il met dans |\box|$\,n$ +autant de mat\'eriel d'insertion $n$ qu'il pourra sur la page. +Notre routine de sortie devra alors d\'eplacer ce mat\'eriel vers la page actuelle. +Vous pouvez utiliser ^|\ifvoid| \ctsref{\@ifvoid} +pour tester s'il y a du mat\'eriel dans |\box|$\,n$. +Si tout le mat\'eriel ne rentre pas, \TeX\ sauve le surplus pour la page suivante. +\li |\count|$\,n$ est un facteur de magnification $f$. Quand \TeX\ doit traiter +l'espace vertical occup\'e sur la page +dans le mat\'eriel d'insertion $n$, il multiplie l'extension +verticale de ce mat\'eriel par $f/1000$. +Ainsi vous mettrez normalement $f$ \`a $500$ pour une insertion en double-colonne +et \`a $0$ pour une note~marginale. +\li |\dimen|$\,n$ sp\'ecifie le montant maximum +de mat\'eriel d'insertion $n$ que \TeX\ mettra sur une seule page. +\li |\skip|$\,n$ sp\'ecifie un espace suppl\'ementaire que \TeX\ alloue sur la page +si la page contient du mat\'eriel d'insertion $n$. +Cet espace est en plus de l'espace occup\'e par l'insertion elle-m\^eme. +Par exemple, il justifiera l'espace sur la page au-dessus des notes de pied de page +(s'il y en a). +\endulist +\noindent +\TeX\ d\'eclare |\box|$\,n$ et vous devez d\'eclarer les trois autres registres +pour que \TeX\ puisse calculer correctement l'espace vertical requis par +l'inser\-tion. +Voir les \knuth{pages~122--125}{142--146} Pour d'autres d\'etails sur la fa\c con dont \TeX\ +ex\'ecute ces commandes et comment des insertions interagissent avec les coupures de page. +\xrdef{endofinsert} +\enddesc + +\see |\floatingpenalty| (\xref \floatingpenalty). +\eix^^{insertions//commandes pour} + + +%========================================================================== +\section{Modifier la routine de sortie} + +\bix^^{routine de sortie} +\begindesc +\cts output {\param{liste de token}} +\explain +Ce param\`etre contient la \minref{routine de sortie} courante, c'est-\`a-dire, +La liste de token que \TeX\ d\'eveloppe quand il trouve une coupure de page. +\TeX\ met la page dans la ^|\box255|, ainsi |\output| est responsable +de faire quelque chose avec la |\box255|---soit la sortir, soit +la mettre ailleurs. +La routine de sortie est aussi responsable d'attacher des choses comme des +ent\^etes ou des pieds de page. +\enddesc + +\begindesc +\cts plainoutput {} +\explain +Cette commande invoque la routine de sortie de \plainTeX. +^^{routine de sortie//par d\'efaut dans \plainTeX} +\PlainTeX\ d\'efinit ^|\output| comme +une liste de token contenant le seul et unique token |\plainoutput|. +\enddesc + +\begindesc +\cts shipout {\<bo\^\i te>} +\explain +Cette commande charge \TeX\ d'envoyer \<bo\^\i te> vers le \dvifile. +^^{\dvifile//r\'eception de \boites\ de \b\tt\\shipout\e} +\TeX\ d\'eveloppe toute commande |\write| dans \<bo\^\i te> comme une partie de |\shipout|. +^^|\write//d\'evelopp\'e durant {\tt\\shipout}| +Le principal usage de |\shipout| est dans la routine de sortie, mais vous pouvez +l'utiliser n'importe o\`u. +\enddesc + +\begindesc +\cts deadcycles {\param{nombre}} +\explain +Ce param\`etre contient le nombre de fois que \TeX\ a lanc\'e +la \minref{routine de sortie} depuis la derni\`ere fois qu'il a fait un +^^|\shipout| |\ship!-out|.\footnote{ +Plus pr\'ecis\'ement, \TeX\ met |\dead!-cyles| \`a $0$ \`a chaque fois qu'il ex\'ecute +|\ship!-out| +et l'incr\'emente de $1$ \`a chaque fois qu'il ex\'ecute |\output|.} +Si |\deadcycles| devient trop grand, \TeX\ est probablement entr\'e dans une +boucle, par exemple, une o\`u le constructeur de page essaye la m\^eme coupure de +page \`a n'en plus finir. +\enddesc + +\begindesc +\cts maxdeadcycles {\param{nombre}} +\explain +Si la valeur de |\deadcycles| d\'epasse la valeur de |\maxdeadcycles|, +\TeX\ pr\'esume que la routine de sortie est entr\'ee dans une boucle. +\TeX\ se plaint alors et effectue sa propre et simple routine de sortie, +\'equivalente \`a |\shipout!allowbreak\box255|, +Ce qui brisera vraisemblablement la boucle. +\PlainTeX\ met |\maxdeadcycles| \hbox{\`a $25$}. +\enddesc + +\begindesc +\cts outputpenalty {\param{nombre}} +\explain +\TeX\ met ce param\`etre quand il coupe une page. Si le point de coupure \'etait sur un +\'el\'ement de \minref{p\'enalit\'e}, \TeX\ enl\`eve l'\'el\'ement de p\'enalit\'e et +met |\outputpenalty| \`a la valeur de la p\'enalit\'e au point de coupure~; +autrement, il met |\outputpenalty| \hbox{\`a $0$}. + +Supposez que vous d\'efaites une coupure de page +pour couper la page \`a un endroit diff\'erent que celui que \TeX\ +a choisi. Pour reconstruire la page, vous devez recr\'eer +la p\'enalit\'e au point de coupure choisi par \TeX. +Vous pouvez accomplir ceci avec la commande +|\penalty!allowbreak\outputpenalty|. +\enddesc + +\begindesc +\cts holdinginserts {\param{nombre}} +\explain +Si ce param\`etre est plus grand que $0$ quand \TeX\ +ex\'ecute une coupure de page, \TeX\ s'abstiendra \`a ex\'ecuter des insertions. +Mettre ce param\`etre \`a $1$ +peut \^etre utile quand vous \'ecrivez une routine de sortie +qui \`a besoin de refaire le contenu de la page, par exemple, +une routine de sortie qui utilise une valeur de |\vsize| (\xref \vsize) diff\'erente de +celle utilis\'ee par le constructeur de page. + +\eix^^{routine de sortie} +\enddesc + +%========================================================================== +\section {S\'eparer des listes verticales} + +\begindesc +\cts vsplit {\<nombre> {\bt to} \<dimension>} +\explain +Cette commande fait que \TeX\ s\'epare la \minref{bo\^\i te} num\'ero +\<number>, que nous appellerons $B_2$, en deux parties. +Il utilise le m\^eme algorithme que celui qu'il utiliserait si $B_2$ \'etait une page +et qu'il coupait cette page. +Le point de division correspond alors \`a la coupure de page qu'il trouverait. +La bo\^\i te $B_2$ doit \^etre une vbox, pas une hbox. +% we avoid starting the previous sentence with a symbol, a copyediting no-no. +\TeX\ met le mat\'eriel pr\'ec\'edant le point de division dans +un autre bo\^\i te $B_1$ et laisse le mat\'eriel apr\`es le point de division dans $B_2$. +La commande |\vsplit| alors produit $B_1$. +Normalement vous assignerez $B_1$ \`a un registre de bo\^\i te diff\'erent, +comme dans l'exemple ci-dessous. +Si le point de division est \`a la fin de $B_2$, +$B_2$ sera vide apr\`es le |\vsplit|. + +\TeX\ emploie son algorithme de coupure de page habituel +^^{coupures de page//en liste d\'edoubl\'ees} +pour la division. +Il utilise \<dimension> pour ^|\pagegoal|, la hauteur d\'esir\'ee de $B_1$. +L'extension verticale de $B_1$ peut ne pas \^etre exactement \'egale \`a +\<dimension> parce que \TeX\ peut ne pas \^etre capable d\'~ achever son but de page parfaitement. +\TeX\ ne prend pas en compte les insertions dans le calcul de la division, +donc des insertions dans la liste verticale originale de $B_2$ +seront maintenues mais n'affecteront pas le point de division. + +\example +\setbox 20 = \vsplit 30 to 7in +% Split off the first seven inches or so of material from +% box 30 and place that material in box 20. +| +\endexample +\enddesc + +\begindesc +\cts splitmaxdepth {\param{dimension}} +\explain +Ce param\`etre sp\'ecifie la profondeur +maximum autoris\'ee pour une bo\^\i te r\'esultant d'un |\vsplit|. +|\splitmaxdepth| joue le +m\^eme r\^ole que celui de ^|\maxdepth| (\xref \maxdepth) pour une page. +\enddesc + +\begindesc +\cts splittopskip {\param{ressort}} +\explain +Ce param\`etre sp\'ecifie le ressort que \TeX\ ins\`ere en haut d'une +bo\^\i te r\'esultant d'un |\vsplit|. +|\splittopskip| joue le +m\^eme r\^ole que ^|\topskip| (\xref \topskip) joue pour une page. +\enddesc + +\see |\splitbotmark|, |\splitfirstmark| (\xref \splitfirstmark). + +\enddescriptions \endchapter \byebye + diff --git a/info/impatient/fr/fparas.tex b/info/impatient/fr/fparas.tex index 45557c56ae..e1648a2eb3 100644 --- a/info/impatient/fr/fparas.tex +++ b/info/impatient/fr/fparas.tex @@ -1,2152 +1,2152 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-\chapter {Commandes \linebreak pour composer \linebreak des paragraphes}
-
-\chapterdef{paras}
-
-Cette section couvre les commandes qui traitent des caract\`eres, des mots, des
-lignes et des paragraphes entiers. Pour une explication des conventions
-utilis\'ees dans cette section, voir les \headcit{Descriptions de
-commandes}{cmddesc}.
-
-\begindescriptions
-
-\section {Caract\`eres et accents}
-
-%==========================================================================
-\subsection {Lettres et ligatures pour alphabets Europ\'eens}
-
-\begindesc
-\xrdef{fornlets}
-\bix^^{ligatures}
-^^{symboles sp\'eciaux}
-^^{alphabets europ\'eens}
-%
-\ctsx AA {Lettre scandinave \AA}
-\ctsx aa {Lettre scandinave \aa}
-\ctsx AE {Ligature \AE}
-\ctsx ae {Ligature \ae}
-\ctsx L {Lettre Polonaise \L}
-\ctsx l {Lettre Polonaise \l}
-\ctsx O {Lettre Danoise/Norv\'egienne \O}
-\ctsx o {Lettre Danoise/Norv\'egienne \o}
-\ctsx OE {Ligature \OE}
-\ctsx oe {Ligature \oe}
-\ctsx ss {Lettre Allemande \ss}
-\explain
-Ces commandes produisent diverses lettres et ligatures des alphabets
-europ\'eens. Elles sont utiles pour des mots et expressions occasionnels
-dans ces langues---mais si vous devez composer une grande quantit\'e de
-texte dans une langue europ\'eenne, vous feriez probablement mieux
-d'utiliser une version de \TeX\ adapt\'ee \`a cette langue.\footnote{Le \TeX\
-Users Group (\xref{ressources}) peut vous fournir des informations sur les
-versions europ\'eennes de \TeX.}
-
-Vous aurez besoin d'un espace apr\`es ces commandes quand vous les
-utiliserez dans un mot pour que \TeX\ traite les lettres suivantes comme
-\'el\'ement du mot et non en tant qu'\'el\'ement de la commande. Vous
-n'avez pas besoin d'\^etre en \minref{mode math\'ematique} pour utiliser
-ces commandes.
-
-\example
-{\it les \oe uvres de Moli\`ere}
-|
-\produces
-{\it les \oe uvres de Moli\`ere}
-\endexample
-\eix^^{ligatures}
-\enddesc
-
-%==========================================================================
-\subsection {Symboles sp\'eciaux}
-
-\begindesc
-^^{caract\`eres sp\'eciaux}
-%
-\easy\ctspecialx # \ctsxrdef{@pound} {signe di\`ese \#}
-\ctspecialx $ \ctsxrdef{@bucks} {signe dollar \$}
-\ctspecialx % \ctsxrdef{@percent} {signe pourcentage \%}
-\ctspecialx & \ctsxrdef{@and} {esperluette \&}
-\ctspecialx _ \ctsxrdef{@underscore} {soulign\'e \_}
-\ctsx lq {quote gauche \lq}
-\ctsx rq {quote droite \rq}
-\aux\ctsx lbrack crochet gauche [
-\aux\ctsx rbrack crochet droit ]
-\ctsx dag {symbole dague \dag}
-\ctsx ddag {symbole double dague \ddag}
-\ctsx copyright {symbole copyright \copyright}
-\ctsx P {symbole paragraphe \P}
-\ctsx S {symbole section \S}
-\explain
-
-Ces commandes produisent diverses marques et caract\`eres sp\'eciaux. Les
-cinq premi\`eres commandes sont n\'ecessaires parce que \TeX\ attache par
-d\'efaut des significations sp\'eciales aux caract\`eres (|#|, |$|, |%|,
-|&|, |_|). vous n'avez pas besoin d'\^etre en \minref{mode math\'ematique}
-pour employer ces commandes.
-
-Vous pouvez utiliser le signe dollar de la police Computer Modern italique
-pour obtenir le symbole ^{livre sterling}, comme montr\'e dans l'exem\-ple
-ci-dessous.
-
-\example
-\dag It'll only cost you \$9.98 over here, but in England
-it's {\it \$}24.98.
-|
-\produces
-\dag It'll only cost you \$9.98 over here, but in England
-it's {\it \$}24.98.
-\endexample
-\enddesc
-
-\begindesc
-\cts TeX {}
-\explain
-Cette commande produit le logo \TeX. souvenez vous de la faire suivre par
-|\!vs| ou de l'inclure dans un \minref{groupe} quand vous voulez un espace
-apr\`es lui.
-
-\example
-A book about \TeX\ is in your hands.
-|
-\produces
-A book about \TeX\ is in your hands.
-\endexample
-\enddesc
-
-\begindesc
-\cts dots {}
-\explain
-^^{points}
-Cette commande produit des ^{points de suspension}, c'est-\`a-dire, trois
-points, dans du texte ordinaire. Elle est pr\'evue pour \^etre utilis\'ee
-en \'ecriture math\'ematique, pour des points de suspension entre des mots
-ordinaires, vous devez utiliser |$\ldot$| \ctsref{\ldots} \`a la place.
-Puisque |\dots| inclut son propre espace, vous ne devez pas le faire suivre
-de |\!vs|.
-\example
-The sequence $x_1$, $x_2$, \dots, $x_\infty$
-does not terminate.
-|
-\produces
-The sequence $x_1$, $x_2$, \dots, $x_\infty$
-does not terminate.
-\endexample
-\enddesc
-
-\see ``Divers symboles math\'ematiques ordinaires'' (\xref{specsyms}).
-%==========================================================================
-\subsection {Caract\`eres Arbitraires}
-
-\begindesc
-\bix^^{caract\`eres}
-\cts char {\<charcode>}
-\explain
-Cette commande produit le caract\`ere situ\'e \`a la position \<charcode>
-de la police courante.
-\example
-{\char65} {\char `A} {\char `\A}
-|
-\produces
-{\char65} {\char `A} {\char `\A}
-\endexample
-\enddesc
-
-\begindesc
-\cts mathchar {\<mathcode>}
-\explain
-Cette commande produit le caract\`ere math\'ematique dont la classe, la
-famille et la position dans la police sont donn\'ees par \<mathcode>. Elle
-n'est l\'egale qu'en mode math\'ematique.
-\example
-\def\digger{\mathchar "027F} % Like \spadesuit in plain TeX.
-% Class 0, family 2, font position "7F.
-$\digger$
-|
-\produces
-\def\digger{\mathchar "027F}
-% class 0, family 2, font position "7F
-$\digger$
-\endexample
-\enddesc
-
-\see |\delimiter| (\xref\delimiter).
-\eix^^{caract\`eres}
-
-%==========================================================================
-\subsection {Accents}
-
-\begindesc
-^^{accents}
-\xrdef{accents}
-%
-\ctspecialx ' \ctsxrdef{@prime} {^{accent aigu} comme dans \'e}
-\ctspecialx . \ctsxrdef{@dot} {^{accent point} comme dans \.n}
-\ctspecialx = \ctsxrdef{@equal} {^{accent macron} comme dans \=r}
-\ctspecialx ^ \ctsxrdef{@hat} {^{accent circonflexe} comme dans \^a}
-\ctspecialx ` \ctsxrdef{@lquote} {^{accent grave} comme dans \`e}
-\ctspecialx " \ctsxrdef{@quote} {^{accent tr\'ema} comme dans \"o}
-\ctspecialx ~ \ctsxrdef{@not} {^{accent tilde} comme dans \~a}
-\ctsx c {^{accent c\'edille} comme dans \c c}
-\ctsx d {^{accent point en dessous} comme dans \d r}
-\ctsx H {^{accent tr\'ema Hongrois} comme dans \H o}
-\ctsx t {^{accent tie-after} comme dans \t uu}
-\ctsx u {^{accent bref} comme dans \u r}
-\ctsx v {^{accent circonflexe invers\'e} comme dans \v o}
-\explain
-Ces commandes produisent des accents en texte ordinaire. Vous devez
-normalement laisser un espace apr\`es ceux not\'es par une simple lettre.
-(see ``Espaces'', \xref{espaces}).
-
-\example
-Add a soup\c con of \'elan to my pin\~a colada.
-|
-\produces
-Add a soup\c con of \'elan to my pin\~a colada.
-\endexample
-
-\margin{`See also' moved to end of group, replacing the one there.}
-\enddesc
-
-\begindesc
-\cts i {}
-\cts j {}
-\explain
-Ces commandes produisent des versions sans point des lettres `i' et `j'.
-Vous devez les utiliser au lieu des `i' et `j' ordinaires quand vous mettez
-un accent sur ces lettres dans du texte ordinaire.
-^^{lettres sans points}
-Utilisez les commandes ^|\imath| et ^|\jmath| (\xref\imath) pour des `i' et
-`j' sans point dans des formules math\'ematiques.
-\example
-long `i' as in l\=\i fe \quad \v\j
-|
-\produces
-long `i' as in l\=\i fe \quad \v\j
-\endexample
-\enddesc
-
-\begindesc
-\cts accent {\<charcode>}
-\explain
-^^{accents}
-Cette commande met un accent au-dessus du caract\`ere suivant cette
-commande. L'accent est le caract\`ere de position \<charcode> dans la
-police courante. \TeX\ suppose que l'accent a \'et\'e con\c cu pour
-s'adapter sur un caract\`ere d'une hauteur de $1$\thinspace ex dans la
-m\^eme police que l'accent. Si le caract\`ere \`a accentuer est plus haut
-ou plus petit, \TeX\ ajuste la position en cons\'equence. Vous pouvez
-changer de \minref{police} entre l'accent et le caract\`ere suivant, cela
-dessine le caract\`ere accent et le caract\`ere \`a accentuer venant de
-diff\'erentes polices. Si le caract\`ere accent n'est pas vraiment pr\'evu
-pour \^etre un accent, \TeX\ ne se plaindra pas~; il composera juste quelque
-chose de ridicule.
-\example
-l'H\accent94 otel des Invalides
-% Position 94 of font cmr10 has a circumflex accent.
-|
-\produces
-l'H\accent94 otel des Invalides
-% Position 94 of font cmr10 has a circumflex accent.
-\endexample
-\see Accents math\'ematiques (\xref{mathaccent}).
-\enddesc
-%==========================================================================
-\subsection {Ligatures aux limites}
-
-\begindesc
-\bix^^{ligatures}
-\cts noboundary {}
-\explain
-Vous pouvez d\'efaire une ligature ou un cr\'enage que \TeX\ applique au
-premier ou au dernier caract\`ere d'un mot en mettant |\noboundary| juste
-avant ou apr\`es ce mot. Certaines polices pr\'evues pour des langues
-autres que l'anglais contiennent un caract\`ere sp\'ecial de fronti\`ere
-que \TeX\ met au commencement et \`a la fin de chaque mot. Le caract\`ere
-de fronti\`ere n'occupe aucun espace et est invisible une fois imprim\'e.
-Il permet \`a \TeX\ de fournir un traitement typographique diff\'erent aux
-caract\`eres de d\'ebut ou de fin de mot, puisque le caract\`ere de
-fronti\`ere peut faire partie d'une s\'equence de caract\`eres devant
-\^etre cr\'enel\'ee ou remplac\'ee par une ligature (aucune police
-standard de \TeX\ ne contient ce caract\`ere de fronti\`ere). L'effet de
-|\noboundary| est de supprimer le caract\`ere de fronti\`ere s'il est l\`a,
-et de ce fait d'emp\^echer \TeX\ d'identifier la ligature ou le cr\'enage.
-\eix^^{ligatures}
-\enddesc
-
-%==========================================================================
-\section {S\'electionner des polices}
-
-\xrdef{selfont}
-
-%==========================================================================
-\subsection {Polices particuli\`eres}
-
-\begindesc
-^^{polices}
-%
-\ctsx fivebf {utilise une police grasse de $5$ points}
-\ctsx fivei {utilise une police math\'ematique italique de $5$ points}
-\ctsx fiverm {utilise une police romaine de $5$ points}
-\ctsx fivesy {utilise une police de symbole math\'ematique de $5$ points}
-\ctsx sevenbf {utilise une police grasse de $7$ points}
-\ctsx seveni {utilise une police math\'ematique italique de $7$ points}
-\ctsx sevenrm {utilise une police romaine de $7$ points}
-\ctsx sevensy {utilise une police de symbole math\'ematique de $7$ points}
-\ctsx tenbf {utilise une police grasse de texte de $10$ points}
-\ctsx tenex {utilise une police d'extension math\'ematique de $10$ points}
-\ctsx teni {utilise une police math\'ematique italique de $10$ points}
-\ctsx tenrm {utilise une police romaine de texte de $10$ points}
-\ctsx tensl {utilise une police romaine pench\'ee de $10$ points}
-\ctsx tensy {utilise une police de symbole math\'ematique de $10$ points}
-\ctsx tenit {utilise une police italique de $10$ points}
-\ctsx tentt {utilise une police de type machine \`a \'ecrire de $10$ points}
-\explain
-Le texte suivant ces commandes est compos\'e par \TeX\ dans la police
-indiqu\'ee. Normalement vous devriez enfermer une de ces commandes de choix
-de police dans un groupe avec le texte devant \^etre compos\'e dans la
-police choisie. En dehors d'un groupe une commande de choix de police est
-efficace jusqu'\`a la fin du document (\`a moins que vous ne l'annuliez
-avec une autre commande de ce genre).
-\example
-See how I've reduced my weight---from
-120 lbs.\ to {\sevenrm 140 lbs}.
-|
-\produces
-See how I've reduced my weight---from
-120 lbs.\ to {\sevenrm 140 lbs}.
-\endexample
-\enddesc
-
-\begindesc
-\cts nullfont {}
-\explain
-Cette commande s\'electionne une police, construite dans \TeX, qui ne
-comporte aucun caract\`ere. \TeX\ l'utilise en remplacement d'une police
-non d\'efinie dans une famille des polices math\'ematiques.
-\enddesc
-
-%==========================================================================
-\subsection {Styles de caract\`ere}
-
-\xrdef{seltype}
-\begindesc
-^^{styles de caract\`ere}
-\easy\ctsx bf {utilise un style gras}
-\ctsx it {utilise un style italique}
-\ctsx rm {utilise un style romain}
-\ctsx sl {utilise un style pench\'e}
-\ctsx tt {utilise un style machine \`a \'ecrire}
-\explain
-Ces commandes choisissent un style de caract\`ere sans changer l'oeil ou
-la taille du caract\`ere.\footnote{\TeX\ ne fournit pas de commandes
-pr\'ed\'efinies pour ne changer que la taille, par exemple, |\eightpoint|.
-La fourniture de telles commandes exigerait un grand nombre de
-polices, lesquelles ne seraient jamais utilis\'ees. De telles commandes
-ont \'et\'e cependant employ\'ees dans la composition de \texbook.}
-Normalement vous enfermeriez une de ces commandes de s\'election de
-style de caract\`ere dans un groupe, avec le texte devant \^etre compos\'e
-dans la police choisie. En dehors d'un groupe une commande de
-s\'election de style est efficace jusqu'\`a la fin du document (\`a moins
-que vous l'effaciez avec une autre commande de ce genre).
-\example
-The Dormouse was {\it not} amused.
-|
-\produces
-The Dormouse was {\it not} amused.
-\endexample
-\enddesc
-
-\see ``Polices dans des formules math\'ematiques'' (\xref{mathfonts}).
-%==========================================================================
-\section {Majuscule et minuscule}
-
-\begindesc
-\bix^^{conversion de casse}
-\bix^^{majuscules//conversion en}
-\bix^^{minuscules//conversion en}
-\cts lccode {\<charcode> \tblentry{nombre}}
-\cts uccode {\<charcode> \tblentry{nombre}}
-\explain
-Les valeurs |\lccode| et |\uccode| pour les $256$ caract\`eres possibles
-indiquent la correspondance entre les formes minuscules et majuscules
-des lettres. Ces valeurs sont utilis\'ees par les commandes |\lowercase|
-et |\uppercase| respectivement et par l'algorithme de c\'esure de \TeX.
-
-\TeX\ initialise les valeurs de |\lccode| et |\uccode| comme suit~:
-
-\ulist\compact
-\li Le |\lccode| d'une lettre minuscule est le code {\ascii} de cette lettre.
-\li Le |\lccode| d'une lettre majuscule est le code {\ascii} de la lettre minuscule
-correspondante.
-\li Le |\uccode| d'une lettre majuscule est le code {\ascii} de cette lettre.
-\li Le |\uccode| d'une lettre minuscule est le code {\ascii} de la lettre majuscule
-correspondante.
-\li Les |\lccode| et |\uccode| d'un caract\`ere qui n'est pas une lettre sont \`a z\'ero.
-\endulist
-
-La majeure partie du temps, il n'y a aucune raison de changer ces valeurs,
-mais vous pourriez devoir les changer si vous vous servez d'une langue qui
-a plus de lettres que l'anglais.
-\example
-\char\uccode`s \char\lccode`a \char\lccode`M
-|
-\produces
-\char\uccode`s \char\lccode`a \char\lccode`M
-\endexample
-\enddesc
-
-\begindesc
-\cts lowercase {\rqbraces{\<liste de token>}}
-\cts uppercase {\rqbraces{\<liste de token>}}
-\explain ^^{conversion de casse}
-Ces commandes convertissent les lettres de la \<token list>, c'est-\`a-dire,
-les tokens avec le code de cat\'egorie $11$, dans leurs formes minuscules
-et majuscules. La conversion d'une lettre est d\'efinie par sa valeur de
-table |\lccode| (pour une minuscule) ou |\uccode| (pour une majuscule). Les
-tokens de la liste qui ne sont pas des lettres ne sont pas affect\'ees---m\^eme
-si les tokens sont des appels de \minref{macro} ou d'autres commandes qui
-se d\'eveloppent en lettres.
-\example
-\def\x{Cd} \lowercase{Ab\x} \uppercase{Ab\x}
-|
-\produces
-\def\x{Cd} \lowercase{Ab\x} \uppercase{Ab\x}
-
-\eix^^{conversion de casse}
-\eix^^{majuscules//conversion en}
-\eix^^{minuscules//conversion en}
-\endexample
-\enddesc
-
-%==========================================================================
-\section {Espace inter-mot}
-
-\begindesc
-\bix^^{espace//inter-mots}
-\easy\ctsbasic {\\\vs}{}
-\blankidxref\ctsxrdef{@space}
-\explain
-Cette commande produit explicitement un espace entre les mots appel\'e
-``^{espace contr\^ol\'e}''. un espace contr\^ol\'e est utile quand une lettre
-appara\^\i t juste apr\`es une commande, ou dans n'importe quelle autre
-circonstance o\`u vous ne voulez pas que deux tokens soient reli\'es dans
-la sortie. La place produite par |\!vs| est ind\'ependante de la
-ponctuation pr\'ec\'edente, c'est-\`a-dire, que son facteur d'espace
-(\xref\spacefactor) est $1000$.
-
-Par ailleurs, si vous voulez imprimer le caract\`ere `\vs' ^^{espace
-visible} que nous avons utilis\'e ici pour noter un espace, vous pouvez
-l'obtenir en saisissant |{\tt \char `\ }|.
-
-\example
-The Dormouse was a \TeX\ expert, but he never let on.
-|
-\produces
-The Dormouse was a \TeX\ expert, but he never let on.
-\endexample
-\enddesc
-
-\begindesc
-\cts space {}
-\explain
-Cette commande est \'equivalente \`a la saisie d'un caract\`ere espace. Elle
-diff\`ere de ^|\ | du fait que sa largeur \emph{peut} \^etre affect\'e par
-la ponctuation pr\'ec\'edente.
-\example
-Yes.\space No.\space Maybe.\par
-Yes.\!vs!.No.\!vs!.Maybe.
-
-|
-\produces
-Yes.\space No.\space Maybe.\par
-Yes.\ No.\ Maybe.
-\endexample
-\enddesc
-
-\begindesc
-\ctsact ^^M \xrdef{@newline}
-\explain
-Cette construction produit le caract\`ere ^{fin de ligne}. Elle a
-normalement deux effets quand \TeX\ la rencontre dans votre source~:
-\olist
-\li Elle agit en tant que commande, en introduisant un espace (si elle
-appara\^\i t \`a l'extr\'emit\'e d'une ligne non vide) ou un
-token |\par| (si elle appara\^\i t \`a l'extr\'emit\'e d'une ligne vide).
-^^|\par//d'une ligne vide|
-\li Elle termine la ligne du source, faisant que \TeX\ ignore les
-caract\`eres restants sur la ligne.
-\endolist
-\noindent
-Cependant, |^^M| \emph{ne} fait \emph{pas} terminer la ligne quand il
-appara\^\i t dans le contexte |`\^^M|, d\'enotant le code ASCII du control-M
-(le nombre $13$). Vous pouvez changer la signification du |^^M| en lui
-donnant un \minref{code de cat\'egorie} diff\'erent. Voir
-\xrefpg{twocarets} pour une explication plus g\'en\'erale de la notation
-|^^|.
-\example
-Hello.^^MGoodbye.
-Goodbye again.\par
-The \char `\^^M\ character.\par
-% The fl ligature is at position 13 of font cmr10
-\number `\^^M\ is the end of line code.\par
-Again, \number `^^M is the end of line code,
-isn't it? % 32 is the ASCII code for a space
-|
-\produces
-{\catcode `\^ = 7 % disable indexing use within this display
-Hello.^^MGoodbye
-Goodbye again.\par
-The \char `\^^M\ character.\par
-\number `\^^M\ is the end of line code.\par
-Again, \number `^^M is the end of line code,
-isn't it?}
-\endexample
-\enddesc
-
-\begindesc
-\easy\ctsact ~ \xrdef{@not}
-\explain
-Le caract\`ere \minref{actif} `|~|' appel\'e un ``^{tilde}'', produit
-une espace normale entre deux mots et lie ces mots pour
-qu'une coupure de ligne ne se produise pas entre eux. Vous devez
-employer un tilde dans n'importe quel contexte o\`u une coupure de
-ligne serait embrouillante, par exemple, avant une initiale moyenne,
-apr\`es une abr\'eviation telle que ``Dr'' ou apr\`es ``Fig.'' dans ``Fig.~8''.
-
-\example
-P.D.Q.~Bach (1807--1742), the youngest and most
-imitative son of Johann~S. Bach, composed the
-{\sl Concerto for Horn and Hardart}.
-|
-\produces
-\margin{The inversion of dates is deliberate---cf. Peter Schickele.}
-P.D.Q.~Bach (1807--1742), the youngest and most
-imitative son of Johann~S. Bach, composed the
-{\sl Concerto for Horn and Hardart}.
-\endexample\enddesc
-
-\begindesc
-\easy\ctspecial / \ctsxrdef{@slash}
-\explain
-Chaque caract\`ere d'une \minref{fonte} \TeX\ a une correction d'``^{italique}''
-li\'ee \`a lui, bien que la correction d'italique soit
-normalement \`a z\'ero pour un caract\`ere d'une police non pench\'ee (montante).
-La correction d'italique indique l'espace suppl\'ementaire qui
-est n\'ecessaire quand vous passez d'une police inclin\'ee (pas
-n\'ecessairement une police italique) \`a une police non pench\'ee.
-L'espace suppl\'ementaire est n\'ecessaire parce qu'un caract\`ere inclin\'e
-d\'epasse dans l'espace qui le suit, r\'eduisant l'espace quand le caract\`ere
-suivant est non pench\'e. Le dossier de
-m\'etriques d'une police inclut la correction d'italique de chaque
-caract\`ere dans la police.
-^^{fichiers de m\'etriques//correction italique dans}
-
-La commande |\/|
-produit une correction d'^{italique} pour le caract\`ere pr\'ec\'edent. Vous
-devez ins\'erer une correction d'italique quand vous passez d'une
-police inclin\'ee vers une police droite, sauf quand le caract\`ere suivant
-est un point ou une virgule.
-\example
-However, {\it somebody} ate {\it something}: that's clear.
-
-However, {\it somebody\/} ate {\it something\/}:
-that's clear.
-|
-\produces
-However, {\it somebody} ate {\it something}: that's clear.
-
-However, {\it somebody\/} ate {\it something\/}:
-that's clear.
-\endexample
-\enddesc
-
-\begindesc
-\cts frenchspacing {}
-\cts nonfrenchspacing {}
-\explain
-^^{espacement inter-mots}
-\TeX\ ajuste normalement l'espacement entre les mots en
-accord avec les signes de ponctuation. Par exemple, il ins\`ere de l'espace
-suppl\'ementaire \`a la fin d'une phrase et ajoute un certain \'etirement
-au \minref{ressort} apr\`es n'importe quel signe de ponctuation. La
-commande |\frenchspacing| indique \`a \TeX\ de rendre l'espacement
-entre les mots ind\'ependant de la ponctuation, alors que la commande
-|\nonfrenchspacing| indique \`a \TeX\ d'utiliser les r\`egles normales
-d'espacement. Si vous n'indiquez pas |\frenchspacing|, vous
-obtiendrez l'espacement normal de \TeX.
-
-Voyez \xrefpg{periodspacing} pour des conseils sur la fa\c con de
-contr\^oler le traitement de la ponctuation de \TeX\ \`a la fin des
-phrases.
-
-\example
-{\frenchspacing An example: two sentences. Right? No.\par}
-{An example: two sentences. Right? No. \par}%
-|
-\produces
-{\frenchspacing An example: two sentences. Right? No.\par}
-{An example: two sentences. Right? No. \par}%
-\endexample
-
-\enddesc
-
-\begindesc
-\cts obeyspaces {}
-\explain
-\TeX\ condense normalement une suite de plusieurs espaces en un
-espace simple. |\obeyspaces| demande \`a \TeX\ de produire un
-espace dans le r\'esultat pour chaque espace dans le source.
-Cependant,|\obeyspaces| ne met pas d'espace au d\'ebut d'une ligne~;
-pour cela nous vous recommandons la commande de
-|\obey!-white!-space| d\'efinie dans |eplain.tex|
-(\xref{ewhitesp}).
-^^|\obeywhitespace|
-|\obeyspaces| est souvent utile quand vous composez quelque chose,
-un source informatique par exemple, dans une police \`a espacement fixe (une police dans
-laquelle chaque caract\`ere a le m\^eme espacement) et que vous voulez montrer
-exactement \`a quoi ressemble chaque ligne du source.
-
-Vous pouvez utiliser la commande |\obeylines| (\xref{\obeylines})
-pour obtenir que \TeX\ suive les bords de ligne de votre source.
-|\obeylines| est souvent utilis\'e en combinaison avec |\obeyspaces|.
-
-\example
-These spaces are closed up
-{\obeyspaces but these are not }.
-|
-\produces
-These spaces are closed up
-{\obeyspaces but these are not }.
-\endexample
-\enddesc
-
-\begindesc
-\cts spacefactor {\param{nombre}}
-\cts spaceskip {\param{ressort}}
-\cts xspaceskip {\param{ressort}}
-\cts sfcode {\<charcode> \tblentry{nombre}}
-\explain
-Ces \minref{param\`etres} primitifs affectent combien d'espace \TeX\ met
-entre deux mots adjacents, c'est-\`a-dire, l'^{espacement inter-mots}.
-L'espacement normal entre les mots est assur\'e par la police courante.
-Pendant que \TeX\ traite une \minref{liste horizontale}, il garde trace
-du facteur d'^{espacement} $f$ dans |\spacefactor|. pendant qu'il
-traite chaque caract\`ere du source $c$, il met \`a jour $f$ selon la
-valeur de $f_c$, le code de facteur d'espacement de $c$ (voir ci-
-dessous). Pour la plupart des caract\`eres, $f_c$ est \`a $1000$ et \TeX\
-met $f$ \`a $1000$. (la valeur initiale de $f$ est \'egalement $1000$.)
-Quand \TeX\ voit un espace entre les mots, il ajuste la taille de cet
-espace en multipliant l'\'etirement et le r\'etr\'ecissement de cet espace
-par $f/1000$ et $1000/f$ respectivement. d'o\`u~:
-\olist\compact
-\li Si $f=1000$, l'espace inter-mots garde sa valeur normale.
-\li If $f<1000$, l'espace inter-mots prend moins d'\minref{\'etirement}
-et plus de \minref{r\'etr\'ecissement}.
-\li If $f>1000$, l'espace inter-mots prend plus d'\minref{\'etirement}
-et moins de \minref{r\'etr\'ecissement}.
-\endolist
-En outre, si $f\ge2000$ l'espace inter-mots est encore augment\'e par le
-param\`etre ``d'espace suppl\'ementaire'' li\'e \`a la police courante.
-
-Chaque caract\`ere saisi $c$ a une adresse dans la table de |\sfcode|
-(code de facteur d'espacement). L'adresse de la table |\sfcode| est
-ind\'ependante de la police. Normalement \TeX\ met simplement $f$ \`a
-$f_c$ apr\`es avoir trait\'e $c$. De toute mani\`ere~:
-\ulist
-\li Si $f_c$ est \`a z\'ero, \TeX\ laisse $f$ sans changement. Ainsi, un
-caract\`ere tel que `|)|' dans \plainTeX, pour lequel $f_c$ est \`a z\'ero,
-est essentiellement transparent pour le calcul de l'espacement entre
-les mots.
-\li Si $f<1000<f_c$, \TeX\ met $f$ \`a $1000$ plut\^ot que $f_c$, c'est-\`a-
-dire, qu'il refuse d'augmenter $f$ tr\`es rapidement.
-\endulist
-La valeur de |\sfcode| pour un point est normalement de $3000$, c'est
-pourquoi \TeX\ met habituellement un espace suppl\'ementaire apr\`es un
-point
-% > to \ge here, too, as above.
-(voir la r\`egle ci-dessus pour le cas $f\ge2000$). Les caract\`eres non
-lettre d'une liste horizontale, par exemple, les traits verticaux,
-agissent g\'en\'eralement comme des caract\`eres avec un facteur d'espace de
-$1000$.
-
-Vous pouvez changer le facteur d'espace explicitement en donnant une
-valeur num\'erique diff\'erente \`a |\spacefactor|. Vous pouvez \'egalement
-augmenter l'espacement normal entre les mots en donnant une valeur
-num\'erique diff\'erente \`a |\xspaceskip| ou \`a |\spaceskip|~:
-\ulist
-\li |\xspaceskip| sp\'ecifie le ressort utilis\'e quand $f\ge2000$~;
-dans le cas o\`u
-|\xspaceskip| est \`a z\'ero, les r\`egles normales s'appliquent.
-\li |\spaceskip| sp\'ecifie le ressort utilis\'e quand $f<2000$ ou bien
-quand \hbox{|\xspaceskip|} est \`a z\'ero~; si |\spaceskip| est \`a z\'ero, les
-r\`egles normales s'appliquent. L'\'etirement et le r\'etr\'ecissement du
-ressort |\spaceskip|, comme le ressort ordinaire entre les mots, est
-modifi\'e selon la valeur de $f$.
-\endulist
-Voir \knuth{page~76}{88--89} pour les r\`egles pr\'ecises que \TeX\ utilise pour
-calculer le \minref{ressort} entre les mots et \knuth{pages~285--287}{331--334}
-pour les ajustements faits \`a |\spacefactor| apr\`es diff\'erents items dans
-une liste horizontale.
-\eix^^{espace//inter-mots}
-\enddesc
-
-%==========================================================================
-\section {Centrer et justifier les lignes}
-
-\begindesc
-\bix^^{centrage}
-\bix^^{cadr\'e \`a gauche}
-\bix^^{cadr\'e \`a droite}
-\bix^^{justification}
-\easy\cts centerline {\<argument>}
-\cts leftline {\<argument>}
-\cts rightline {\<argument>}
-\explain
-La commande |\centerline| produit un \minref{hbox} aussi large que
-la ligne courante et place \<argument> au centre de la bo\^\i te. Les
-commandes |\leftline| et |\rightline| sont analogues~; elles placent
-\<argument> au bord gauche ou droite de la bo\^\i te. Si vous voulez
-appliquer une de ces commandes \`a plusieurs lignes cons\'ecutives, vous
-devez l'appliquer \`a chacune individuellement. Voir
-\xrefpg{eplaincenter} pour une autre approche.
-
-N'utilisez pas ces commandes dans un paragraphe---si vous le faites,
-\TeX\ ne pourra probablement pas couper le paragraphe en lignes et se
-plaindra au sujet d'un overfull hbox.
-\example
-\centerline{Grand Central Station}
-\leftline{left of Karl Marx}
-\rightline{right of Genghis Khan}
-|
-\produces
-\centerline{Grand Central Station}
-\leftline{left of Karl Marx}
-\rightline{right of Genghis Khan}
-
-\eix^^{centrage}
-\eix^^{cadr\'e \`a gauche}
-\eix^^{cadr\'e \`a droite}
-\eix^^{justification}
-
-\endexample
-\enddesc
-
-\begindesc
-\easy\cts line {\<argument>}
-\explain
-Cette commande produit une \minref{hbox} contenant l'\<argument>. Cette
-hbox est exactement aussi large que la ligne courante, c'est-\`a-dire,
-qu'elle s'\'e\-tend de la marge droite \`a la gauche.
-\example
-\line{ugly \hfil suburban \hfil sprawl}
-% Without \hfil you'd get an `underfull box' from this.
-|
-\produces
-\line{ugly \hfil suburban \hfil sprawl}%
-\endexample
-
-\enddesc
-
-\begindesc
-^^{texte recouvrant}
-\cts llap {\<argument>}
-\cts rlap {\<argument>}
-\explain
-Ces commandes vous permettent de produire un texte qui recouvre celui
-qui est \`a gauche ou \`a droite de la position actuelle. |\llap| recule
-par la largeur de l'\<argument> et puis compose l'\<argument>. Le
-|\rlap| est semblable, sauf qu'il compose l'\<argument> d'abord et
-recule. |\llap| et |\rlap| sont utiles pour placer du texte en dehors
-des marges courantes. |\llap| et |\rlap| effectuent leur travail en
-cr\'eant une \minref{box} de largeur z\'ero.
-
-Vous pouvez \'egalement utiliser |\llap| ou |\rlap| pour construire des
-caract\`eres sp\'eciaux par ^{surimpression}, mais ne l'essayez pas \`a
-moins d'\^etre s\^ur que les caract\`eres que vous utilisez aient la m\^eme
-largeur (ce qui est le cas pour une police \`a espacement fixe telle que
-^|cmtt10|, la Computer Modern $10$-points ^{police de type machine \`a
-\'ecrire})..
-^^{police Computer Modern}
-\example
-\noindent\llap{off left }\line{\vrule $\Leftarrow$
-left margin of examples\hfil right margin of examples
-$\Rightarrow$\vrule}\rlap{ off right}
-|
-\produces
-\noindent\llap{off left }\line{\vrule $\Leftarrow$
-left margin of examples\hfil right margin of examples
-$\Rightarrow$\vrule}\rlap{ off right}
-\endexample
-
-%\example
-%{\tt O\llap{!|}}
-%|
-%\produces
-%{\cm \tt O\llap{\char `|}}
-%\endexample
-
-\nobreak % don't lose the \see
-\enddesc
-
-\see |\hsize| (\xref{\hsize}).
-
-%==========================================================================
-\section {Formation des paragraphes}
-
-\subsection {d\'ebuter, finir et indenter des paragraphes}
-
-\begindesc
-\bix^^{paragraphes//formation}
-\ctspecial par \ctsxrdef{@par}
-\explain
-Cette commande termine un paragraphe et met \TeX\ dans le mode
-\minref{vertical}, pr\^et \`a ajouter plus d'articles sur la page.
-Puisque \TeX\ convertit une ligne blanche dans votre fichier source
-en un \minref{token} |\par|, vous n'avez normalement pas besoin de
-saisir |\par| explicitement pour finir un paragraphe.
-
-Un point important est que |\par| n'indique pas \`a \TeX\ de commencer
-un paragraphe~; il ne lui dit que de le finir. \TeX\ d\'ebute un
-paragraphe quand il est en mode vertical ordinaire (tel qu'il est
-apr\`es un |\par|) et rencontre un article en soi horizontal tel qu'une
-lettre. En tant qu'\'el\'ement du c\'er\'emonial de d\'ebut de paragraphe, \TeX\
-^^{paragraphes//d\'ebuter des}
-ins\`ere une quantit\'e d'espace vertical donn\'ee par le param\`etre
-|\parskip| (\xref{\parskip }) et indente le paragraphe par un espace
-horizontal donn\'e par |\parindent| (\xref{\parindent }).
-
-Vous pouvez normalement effacer tout l'espace inter-paragraphe
-produit avec |\par| en mettant la commande |\vskip -\lastskip|. Ceci
-peut \^etre utile quand vous \'ecrivez une \minref{macro} cens\'e travailler
-de la m\^eme mani\`ere si elle est pr\'ec\'ed\'ee ou non par une ligne blanche.
-
-Vous pouvez obtenir que \TeX\ prenne certaines mesures sp\'eciales au
-d\'ebut de chaque paragraphe en pla\c cant des instructions dans
-^|\everypar| (\xref\everypar).
-
-Voir \knuth{pages~283 et 286}{328 et 332} pour les effets pr\'ecis de |\par|.
-
-\example
-\parindent = 2em
-``Can you row?'' the Sheep asked, handing Alice a pair of
-knitting-needles as she was speaking.\par ``Yes, a little%
----but not on land---and not with needles---'' Alice was
-starting to say, when suddenly the needles turned into oars.
-|
-\produces
-\parindent = 2em
-``Can you row?'' the Sheep asked, handing Alice a pair of
-knitting-needles as she was speaking.\par ``Yes, a little%
----but not on land---and not with needles---'' Alice was
-starting to say, when suddenly the needles turned into oars.
-\endexample
-\enddesc
-
-\begindesc
-\cts endgraf {}
-\explain
-Cette commande est un synonyme de la commande primitive
-^|\par|. Elle est utile quand vous avez red\'efini ^|\par| mais voulez
-toujours avoir acc\`es \`a la d\'efinition originale de |\par|.
-\enddesc
-
-\begindesc
-\cts parfillskip {\param{ressort}}
-\explain
-^^{paragraphes//ressort \`a la fin des}
-Ce param\`etre d\'esigne le ressort horizontal que \TeX\ insert \`a la fin
-d'un paragraphe. La valeur par d\'efaut de |\parfillskip| est |0pt plus
-1fil|, qui fait que la derni\`ere ligne d'un paragraphe soit compl\'et\'ee
-de l'espace vide. Une valeur de |0pt| force \TeX\ \`a finir la derni\`ere
-ligne d'un paragraphe sur la marge gauche.
-\enddesc
-
-\bix^^{indentation}
-\begindesc
-\easy\cts indent {}
-\explain
-Si \TeX\ est en mode vertical, comme il l'est apr\`es avoir fini un
-paragraphe, cette commande ins\`ert le ressort inter-paragraphe
-^|\parskip|, met \TeX\ en mode horizontal, d\'ebute un paragraphe et
-indente ce paragraphe de |\parindent|. Si \TeX\ est d\'ej\`a en mode
-horizontal, cette commande produit simplement un espace blanc de
-largeur |\parindent|. Deux |\indent| \`a la suite produisent deux
-indentations.
-^^{indentation}
-
-Comme dans l'exemple ci-dessous, un |\indent| \`a un endroit o\`u \TeX\
-commencerait de toute fa\c con un paragraphe est superflu. Quand \TeX\
-est en mode vertical et voit une lettre ou une autre commande en soi
-horizontale, il commence un paragraphe en commutant vers le mode
-horizontal, fait un |\indent| et traite la commande horizontale.
-
-\example
-\parindent = 2em This is the first in a series of three
-paragraphs that show how you can control indentation. Note
-that it has the same indentation as the next paragraph.\par
-\indent This is the second in a series of three paragraphs.
-It has \indent an embedded indentation.\par
-\indent\indent This doubly indented paragraph
-is the third in the series.
-|
-\produces
-\parindent = 2em This is the first in a series of three
-paragraphs that show how you can control indentation. Note
-that it has the same indentation as the next paragraph.\par
-\indent This is the second in a series of three paragraphs.
-It has \indent an embedded indentation.\par
-\indent\indent This doubly indented paragraph
-is the third in the series.
-\endexample
-\enddesc
-
-
-\begindesc
-\easy\cts noindent {}
-\explain
-Si le \TeX\ est en mode vertical, comme il l'est apr\`es la fin d'un
-paragraphe, cette commande ins\`ert le ressort inter-paragraphe
-^|\parskip|, met \TeX\ dans le mode horizontal, et commence
-un paragraphe non indent\'e. Elle n'a aucun effet dans le mode horizontal,
-c'est-\`a-dire, dans un paragraphe. Commencer un paragraphe avec
-|\noindent| d\'ecommande ainsi l'indentation de |\parindent| qui se
-produirait normalement.
-
-^^{indentation}
-
-Une utilisation commune de |\noindent| est d'interdire l'indentation
-de la premi\`ere ligne d'un paragraphe quand le paragraphe suit un
-certain mat\'eriel affich\'e.
-
-\example
-\parindent = 1em
-Tied round the neck of the bottle was a label with the
-words \smallskip \centerline{EAT ME}\smallskip
-\noindent beautifully printed on it in large letters.
-|
-\produces
-\parindent = 1em
-Tied round the neck of the bottle was a label with the
-words \smallskip \centerline{EAT ME}\smallskip
-\noindent beautifully printed on it in large letters.
-\endexample
-\enddesc
-
-\margin{{\tt\\textindent} moved here from later in the section.}
-\begindesc
-\cts textindent {\<argument>}
-
-\explain
-^^{indentation}
-Cette commande indique \`a \TeX\ de commencer un paragraphe et de l'indenter
-de |\par!-indent|, comme d'habitude. \TeX\ alors justifie \`a droite
-l'\<argument> de l'indentation et le fait suivre d'un espace demi-cadratin
-(moiti\'e d'un cadratin). \PlainTeX\ utilise cette commande pour composer les
-notes de pied de page. (\xref\footnote) ^^{notes de pied de page//utiliser
-\b\tt\\textindent\e\ avec} et les articles dans les listes (voir |\item|,
-\xref\item).
-
-\example
-\parindent = 20pt \textindent{\raise 1pt\hbox{$\bullet$}}%
-You are allowed to use bullets in \TeX\ even if
-you don't join the militia, and many peace-loving
-typographers do so.
-|
-\produces
-\parindent = 20pt \textindent{\raise 1pt\hbox{$\bullet$}}%
-You are allowed to use bullets in \TeX\ even if
-you don't join the militia, and many peace-loving
-typographers do so.
-\endexample\enddesc
-
-\begindesc
-\cts parindent {\param{dimension}}
-
-\explain
-Ce \minref{param\`etre} indique la quantit\'e par laquelle la premi\`ere
-ligne de chaque paragraphe doit \^etre indent\'ee. ^^{indentation} Comme
-montr\'e dans l'exemple ci-dessous, placer |\parindent| et ^|\parskip| \`a
-z\'ero est une mauvaise id\'ee puisque alors les coupures de paragraphe ne
-sont plus \'evidentes.
-\example
-\parindent = 2em This paragraph is indented by 2 ems.
-\par \parindent=0pt This paragraph is not indented at all.
-\par Since we haven't reset the paragraph indentation,
-this paragraph isn't indented either.
-|
-\produces
-\parindent = 2em This paragraph is indented by 2 ems.
-\par \parindent=0pt This paragraph is not indented at all.
-\par Since we haven't reset the paragraph indentation,
-this paragraph isn't indented either.
-\endexample\enddesc
-
-\begindesc
-\cts everypar {\param{liste de token}}
-
-\explain
-\TeX\ ex\'ecute les commandes des \<token list> toutes les fois qu'il entre dans le mode
-horizontal, par exemple, quand il commence un paragraphe. Par d\'efaut
-|\everypar| est vide, mais vous pouvez prendre des mesures
-suppl\'ementaires au d\'ebut de chaque paragraphe en mettant des commandes
-pour ces actions dans un token list
-%
-% This \vglue makes the example overwrite the example, but since we are
-% not reprinting this page, it doesn't matter. For reasons I did not
-% attempt to track down, a page break happened before the example,
-% unlike in the first printing.
-%
-%\secondprinting{\vglue-48pt}
-et assigner ce token list \`a |\everypar|.
-\example
-\everypar = {$\Longrightarrow$\enspace}
-Now pay attention!!\par
-I said, ``Pay attention!!''.\par
-I'll say it again!! Pay attention!!
-|
-\produces
-\everypar = {$\Longrightarrow$\enspace}
-Now pay attention!\par
-I said, ``Pay attention!''.\par
-I'll say it again! Pay attention!
-\endexample
-\enddesc
-%\secondprinting{\vfill\eject}
-
-%==========================================================================
-\subsection {Formation de paragraphes entiers}
-
-\begindesc
-\margin{Cette commande \'etait aussi d\'ecrite dans le chapitre `Pages'. La
-description actuelle combine les deux anciennes descriptions.}
-\bix^^{coupures de ligne//et formation de paragraphe}
-\easy\cts hsize {\param{dimension}}
-
-\explain
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros +\chapter {Commandes \linebreak pour composer \linebreak des paragraphes} + +\chapterdef{paras} + +Cette section couvre les commandes qui traitent des caract\`eres, des mots, des +lignes et des paragraphes entiers. Pour une explication des conventions +utilis\'ees dans cette section, voir les \headcit{Descriptions de +commandes}{cmddesc}. + +\begindescriptions + +\section {Caract\`eres et accents} + +%========================================================================== +\subsection {Lettres et ligatures pour alphabets Europ\'eens} + +\begindesc +\xrdef{fornlets} +\bix^^{ligatures} +^^{symboles sp\'eciaux} +^^{alphabets europ\'eens} +% +\ctsx AA {Lettre scandinave \AA} +\ctsx aa {Lettre scandinave \aa} +\ctsx AE {Ligature \AE} +\ctsx ae {Ligature \ae} +\ctsx L {Lettre Polonaise \L} +\ctsx l {Lettre Polonaise \l} +\ctsx O {Lettre Danoise/Norv\'egienne \O} +\ctsx o {Lettre Danoise/Norv\'egienne \o} +\ctsx OE {Ligature \OE} +\ctsx oe {Ligature \oe} +\ctsx ss {Lettre Allemande \ss} +\explain +Ces commandes produisent diverses lettres et ligatures des alphabets +europ\'eens. Elles sont utiles pour des mots et expressions occasionnels +dans ces langues---mais si vous devez composer une grande quantit\'e de +texte dans une langue europ\'eenne, vous feriez probablement mieux +d'utiliser une version de \TeX\ adapt\'ee \`a cette langue.\footnote{Le \TeX\ +Users Group (\xref{ressources}) peut vous fournir des informations sur les +versions europ\'eennes de \TeX.} + +Vous aurez besoin d'un espace apr\`es ces commandes quand vous les +utiliserez dans un mot pour que \TeX\ traite les lettres suivantes comme +\'el\'ement du mot et non en tant qu'\'el\'ement de la commande. Vous +n'avez pas besoin d'\^etre en \minref{mode math\'ematique} pour utiliser +ces commandes. + +\example +{\it les \oe uvres de Moli\`ere} +| +\produces +{\it les \oe uvres de Moli\`ere} +\endexample +\eix^^{ligatures} +\enddesc + +%========================================================================== +\subsection {Symboles sp\'eciaux} + +\begindesc +^^{caract\`eres sp\'eciaux} +% +\easy\ctspecialx # \ctsxrdef{@pound} {signe di\`ese \#} +\ctspecialx $ \ctsxrdef{@bucks} {signe dollar \$} +\ctspecialx % \ctsxrdef{@percent} {signe pourcentage \%} +\ctspecialx & \ctsxrdef{@and} {esperluette \&} +\ctspecialx _ \ctsxrdef{@underscore} {soulign\'e \_} +\ctsx lq {quote gauche \lq} +\ctsx rq {quote droite \rq} +\aux\ctsx lbrack crochet gauche [ +\aux\ctsx rbrack crochet droit ] +\ctsx dag {symbole dague \dag} +\ctsx ddag {symbole double dague \ddag} +\ctsx copyright {symbole copyright \copyright} +\ctsx P {symbole paragraphe \P} +\ctsx S {symbole section \S} +\explain + +Ces commandes produisent diverses marques et caract\`eres sp\'eciaux. Les +cinq premi\`eres commandes sont n\'ecessaires parce que \TeX\ attache par +d\'efaut des significations sp\'eciales aux caract\`eres (|#|, |$|, |%|, +|&|, |_|). vous n'avez pas besoin d'\^etre en \minref{mode math\'ematique} +pour employer ces commandes. + +Vous pouvez utiliser le signe dollar de la police Computer Modern italique +pour obtenir le symbole ^{livre sterling}, comme montr\'e dans l'exem\-ple +ci-dessous. + +\example +\dag It'll only cost you \$9.98 over here, but in England +it's {\it \$}24.98. +| +\produces +\dag It'll only cost you \$9.98 over here, but in England +it's {\it \$}24.98. +\endexample +\enddesc + +\begindesc +\cts TeX {} +\explain +Cette commande produit le logo \TeX. souvenez vous de la faire suivre par +|\!vs| ou de l'inclure dans un \minref{groupe} quand vous voulez un espace +apr\`es lui. + +\example +A book about \TeX\ is in your hands. +| +\produces +A book about \TeX\ is in your hands. +\endexample +\enddesc + +\begindesc +\cts dots {} +\explain +^^{points} +Cette commande produit des ^{points de suspension}, c'est-\`a-dire, trois +points, dans du texte ordinaire. Elle est pr\'evue pour \^etre utilis\'ee +en \'ecriture math\'ematique, pour des points de suspension entre des mots +ordinaires, vous devez utiliser |$\ldot$| \ctsref{\ldots} \`a la place. +Puisque |\dots| inclut son propre espace, vous ne devez pas le faire suivre +de |\!vs|. +\example +The sequence $x_1$, $x_2$, \dots, $x_\infty$ +does not terminate. +| +\produces +The sequence $x_1$, $x_2$, \dots, $x_\infty$ +does not terminate. +\endexample +\enddesc + +\see ``Divers symboles math\'ematiques ordinaires'' (\xref{specsyms}). +%========================================================================== +\subsection {Caract\`eres Arbitraires} + +\begindesc +\bix^^{caract\`eres} +\cts char {\<charcode>} +\explain +Cette commande produit le caract\`ere situ\'e \`a la position \<charcode> +de la police courante. +\example +{\char65} {\char `A} {\char `\A} +| +\produces +{\char65} {\char `A} {\char `\A} +\endexample +\enddesc + +\begindesc +\cts mathchar {\<mathcode>} +\explain +Cette commande produit le caract\`ere math\'ematique dont la classe, la +famille et la position dans la police sont donn\'ees par \<mathcode>. Elle +n'est l\'egale qu'en mode math\'ematique. +\example +\def\digger{\mathchar "027F} % Like \spadesuit in plain TeX. +% Class 0, family 2, font position "7F. +$\digger$ +| +\produces +\def\digger{\mathchar "027F} +% class 0, family 2, font position "7F +$\digger$ +\endexample +\enddesc + +\see |\delimiter| (\xref\delimiter). +\eix^^{caract\`eres} + +%========================================================================== +\subsection {Accents} + +\begindesc +^^{accents} +\xrdef{accents} +% +\ctspecialx ' \ctsxrdef{@prime} {^{accent aigu} comme dans \'e} +\ctspecialx . \ctsxrdef{@dot} {^{accent point} comme dans \.n} +\ctspecialx = \ctsxrdef{@equal} {^{accent macron} comme dans \=r} +\ctspecialx ^ \ctsxrdef{@hat} {^{accent circonflexe} comme dans \^a} +\ctspecialx ` \ctsxrdef{@lquote} {^{accent grave} comme dans \`e} +\ctspecialx " \ctsxrdef{@quote} {^{accent tr\'ema} comme dans \"o} +\ctspecialx ~ \ctsxrdef{@not} {^{accent tilde} comme dans \~a} +\ctsx c {^{accent c\'edille} comme dans \c c} +\ctsx d {^{accent point en dessous} comme dans \d r} +\ctsx H {^{accent tr\'ema Hongrois} comme dans \H o} +\ctsx t {^{accent tie-after} comme dans \t uu} +\ctsx u {^{accent bref} comme dans \u r} +\ctsx v {^{accent circonflexe invers\'e} comme dans \v o} +\explain +Ces commandes produisent des accents en texte ordinaire. Vous devez +normalement laisser un espace apr\`es ceux not\'es par une simple lettre. +(see ``Espaces'', \xref{espaces}). + +\example +Add a soup\c con of \'elan to my pin\~a colada. +| +\produces +Add a soup\c con of \'elan to my pin\~a colada. +\endexample + +\margin{`See also' moved to end of group, replacing the one there.} +\enddesc + +\begindesc +\cts i {} +\cts j {} +\explain +Ces commandes produisent des versions sans point des lettres `i' et `j'. +Vous devez les utiliser au lieu des `i' et `j' ordinaires quand vous mettez +un accent sur ces lettres dans du texte ordinaire. +^^{lettres sans points} +Utilisez les commandes ^|\imath| et ^|\jmath| (\xref\imath) pour des `i' et +`j' sans point dans des formules math\'ematiques. +\example +long `i' as in l\=\i fe \quad \v\j +| +\produces +long `i' as in l\=\i fe \quad \v\j +\endexample +\enddesc + +\begindesc +\cts accent {\<charcode>} +\explain +^^{accents} +Cette commande met un accent au-dessus du caract\`ere suivant cette +commande. L'accent est le caract\`ere de position \<charcode> dans la +police courante. \TeX\ suppose que l'accent a \'et\'e con\c cu pour +s'adapter sur un caract\`ere d'une hauteur de $1$\thinspace ex dans la +m\^eme police que l'accent. Si le caract\`ere \`a accentuer est plus haut +ou plus petit, \TeX\ ajuste la position en cons\'equence. Vous pouvez +changer de \minref{police} entre l'accent et le caract\`ere suivant, cela +dessine le caract\`ere accent et le caract\`ere \`a accentuer venant de +diff\'erentes polices. Si le caract\`ere accent n'est pas vraiment pr\'evu +pour \^etre un accent, \TeX\ ne se plaindra pas~; il composera juste quelque +chose de ridicule. +\example +l'H\accent94 otel des Invalides +% Position 94 of font cmr10 has a circumflex accent. +| +\produces +l'H\accent94 otel des Invalides +% Position 94 of font cmr10 has a circumflex accent. +\endexample +\see Accents math\'ematiques (\xref{mathaccent}). +\enddesc +%========================================================================== +\subsection {Ligatures aux limites} + +\begindesc +\bix^^{ligatures} +\cts noboundary {} +\explain +Vous pouvez d\'efaire une ligature ou un cr\'enage que \TeX\ applique au +premier ou au dernier caract\`ere d'un mot en mettant |\noboundary| juste +avant ou apr\`es ce mot. Certaines polices pr\'evues pour des langues +autres que l'anglais contiennent un caract\`ere sp\'ecial de fronti\`ere +que \TeX\ met au commencement et \`a la fin de chaque mot. Le caract\`ere +de fronti\`ere n'occupe aucun espace et est invisible une fois imprim\'e. +Il permet \`a \TeX\ de fournir un traitement typographique diff\'erent aux +caract\`eres de d\'ebut ou de fin de mot, puisque le caract\`ere de +fronti\`ere peut faire partie d'une s\'equence de caract\`eres devant +\^etre cr\'enel\'ee ou remplac\'ee par une ligature (aucune police +standard de \TeX\ ne contient ce caract\`ere de fronti\`ere). L'effet de +|\noboundary| est de supprimer le caract\`ere de fronti\`ere s'il est l\`a, +et de ce fait d'emp\^echer \TeX\ d'identifier la ligature ou le cr\'enage. +\eix^^{ligatures} +\enddesc + +%========================================================================== +\section {S\'electionner des polices} + +\xrdef{selfont} + +%========================================================================== +\subsection {Polices particuli\`eres} + +\begindesc +^^{polices} +% +\ctsx fivebf {utilise une police grasse de $5$ points} +\ctsx fivei {utilise une police math\'ematique italique de $5$ points} +\ctsx fiverm {utilise une police romaine de $5$ points} +\ctsx fivesy {utilise une police de symbole math\'ematique de $5$ points} +\ctsx sevenbf {utilise une police grasse de $7$ points} +\ctsx seveni {utilise une police math\'ematique italique de $7$ points} +\ctsx sevenrm {utilise une police romaine de $7$ points} +\ctsx sevensy {utilise une police de symbole math\'ematique de $7$ points} +\ctsx tenbf {utilise une police grasse de texte de $10$ points} +\ctsx tenex {utilise une police d'extension math\'ematique de $10$ points} +\ctsx teni {utilise une police math\'ematique italique de $10$ points} +\ctsx tenrm {utilise une police romaine de texte de $10$ points} +\ctsx tensl {utilise une police romaine pench\'ee de $10$ points} +\ctsx tensy {utilise une police de symbole math\'ematique de $10$ points} +\ctsx tenit {utilise une police italique de $10$ points} +\ctsx tentt {utilise une police de type machine \`a \'ecrire de $10$ points} +\explain +Le texte suivant ces commandes est compos\'e par \TeX\ dans la police +indiqu\'ee. Normalement vous devriez enfermer une de ces commandes de choix +de police dans un groupe avec le texte devant \^etre compos\'e dans la +police choisie. En dehors d'un groupe une commande de choix de police est +efficace jusqu'\`a la fin du document (\`a moins que vous ne l'annuliez +avec une autre commande de ce genre). +\example +See how I've reduced my weight---from +120 lbs.\ to {\sevenrm 140 lbs}. +| +\produces +See how I've reduced my weight---from +120 lbs.\ to {\sevenrm 140 lbs}. +\endexample +\enddesc + +\begindesc +\cts nullfont {} +\explain +Cette commande s\'electionne une police, construite dans \TeX, qui ne +comporte aucun caract\`ere. \TeX\ l'utilise en remplacement d'une police +non d\'efinie dans une famille des polices math\'ematiques. +\enddesc + +%========================================================================== +\subsection {Styles de caract\`ere} + +\xrdef{seltype} +\begindesc +^^{styles de caract\`ere} +\easy\ctsx bf {utilise un style gras} +\ctsx it {utilise un style italique} +\ctsx rm {utilise un style romain} +\ctsx sl {utilise un style pench\'e} +\ctsx tt {utilise un style machine \`a \'ecrire} +\explain +Ces commandes choisissent un style de caract\`ere sans changer l'oeil ou +la taille du caract\`ere.\footnote{\TeX\ ne fournit pas de commandes +pr\'ed\'efinies pour ne changer que la taille, par exemple, |\eightpoint|. +La fourniture de telles commandes exigerait un grand nombre de +polices, lesquelles ne seraient jamais utilis\'ees. De telles commandes +ont \'et\'e cependant employ\'ees dans la composition de \texbook.} +Normalement vous enfermeriez une de ces commandes de s\'election de +style de caract\`ere dans un groupe, avec le texte devant \^etre compos\'e +dans la police choisie. En dehors d'un groupe une commande de +s\'election de style est efficace jusqu'\`a la fin du document (\`a moins +que vous l'effaciez avec une autre commande de ce genre). +\example +The Dormouse was {\it not} amused. +| +\produces +The Dormouse was {\it not} amused. +\endexample +\enddesc + +\see ``Polices dans des formules math\'ematiques'' (\xref{mathfonts}). +%========================================================================== +\section {Majuscule et minuscule} + +\begindesc +\bix^^{conversion de casse} +\bix^^{majuscules//conversion en} +\bix^^{minuscules//conversion en} +\cts lccode {\<charcode> \tblentry{nombre}} +\cts uccode {\<charcode> \tblentry{nombre}} +\explain +Les valeurs |\lccode| et |\uccode| pour les $256$ caract\`eres possibles +indiquent la correspondance entre les formes minuscules et majuscules +des lettres. Ces valeurs sont utilis\'ees par les commandes |\lowercase| +et |\uppercase| respectivement et par l'algorithme de c\'esure de \TeX. + +\TeX\ initialise les valeurs de |\lccode| et |\uccode| comme suit~: + +\ulist\compact +\li Le |\lccode| d'une lettre minuscule est le code {\ascii} de cette lettre. +\li Le |\lccode| d'une lettre majuscule est le code {\ascii} de la lettre minuscule +correspondante. +\li Le |\uccode| d'une lettre majuscule est le code {\ascii} de cette lettre. +\li Le |\uccode| d'une lettre minuscule est le code {\ascii} de la lettre majuscule +correspondante. +\li Les |\lccode| et |\uccode| d'un caract\`ere qui n'est pas une lettre sont \`a z\'ero. +\endulist + +La majeure partie du temps, il n'y a aucune raison de changer ces valeurs, +mais vous pourriez devoir les changer si vous vous servez d'une langue qui +a plus de lettres que l'anglais. +\example +\char\uccode`s \char\lccode`a \char\lccode`M +| +\produces +\char\uccode`s \char\lccode`a \char\lccode`M +\endexample +\enddesc + +\begindesc +\cts lowercase {\rqbraces{\<liste de token>}} +\cts uppercase {\rqbraces{\<liste de token>}} +\explain ^^{conversion de casse} +Ces commandes convertissent les lettres de la \<token list>, c'est-\`a-dire, +les tokens avec le code de cat\'egorie $11$, dans leurs formes minuscules +et majuscules. La conversion d'une lettre est d\'efinie par sa valeur de +table |\lccode| (pour une minuscule) ou |\uccode| (pour une majuscule). Les +tokens de la liste qui ne sont pas des lettres ne sont pas affect\'ees---m\^eme +si les tokens sont des appels de \minref{macro} ou d'autres commandes qui +se d\'eveloppent en lettres. +\example +\def\x{Cd} \lowercase{Ab\x} \uppercase{Ab\x} +| +\produces +\def\x{Cd} \lowercase{Ab\x} \uppercase{Ab\x} + +\eix^^{conversion de casse} +\eix^^{majuscules//conversion en} +\eix^^{minuscules//conversion en} +\endexample +\enddesc + +%========================================================================== +\section {Espace inter-mot} + +\begindesc +\bix^^{espace//inter-mots} +\easy\ctsbasic {\\\vs}{} +\blankidxref\ctsxrdef{@space} +\explain +Cette commande produit explicitement un espace entre les mots appel\'e +``^{espace contr\^ol\'e}''. un espace contr\^ol\'e est utile quand une lettre +appara\^\i t juste apr\`es une commande, ou dans n'importe quelle autre +circonstance o\`u vous ne voulez pas que deux tokens soient reli\'es dans +la sortie. La place produite par |\!vs| est ind\'ependante de la +ponctuation pr\'ec\'edente, c'est-\`a-dire, que son facteur d'espace +(\xref\spacefactor) est $1000$. + +Par ailleurs, si vous voulez imprimer le caract\`ere `\vs' ^^{espace +visible} que nous avons utilis\'e ici pour noter un espace, vous pouvez +l'obtenir en saisissant |{\tt \char `\ }|. + +\example +The Dormouse was a \TeX\ expert, but he never let on. +| +\produces +The Dormouse was a \TeX\ expert, but he never let on. +\endexample +\enddesc + +\begindesc +\cts space {} +\explain +Cette commande est \'equivalente \`a la saisie d'un caract\`ere espace. Elle +diff\`ere de ^|\ | du fait que sa largeur \emph{peut} \^etre affect\'e par +la ponctuation pr\'ec\'edente. +\example +Yes.\space No.\space Maybe.\par +Yes.\!vs!.No.\!vs!.Maybe. + +| +\produces +Yes.\space No.\space Maybe.\par +Yes.\ No.\ Maybe. +\endexample +\enddesc + +\begindesc +\ctsact ^^M \xrdef{@newline} +\explain +Cette construction produit le caract\`ere ^{fin de ligne}. Elle a +normalement deux effets quand \TeX\ la rencontre dans votre source~: +\olist +\li Elle agit en tant que commande, en introduisant un espace (si elle +appara\^\i t \`a l'extr\'emit\'e d'une ligne non vide) ou un +token |\par| (si elle appara\^\i t \`a l'extr\'emit\'e d'une ligne vide). +^^|\par//d'une ligne vide| +\li Elle termine la ligne du source, faisant que \TeX\ ignore les +caract\`eres restants sur la ligne. +\endolist +\noindent +Cependant, |^^M| \emph{ne} fait \emph{pas} terminer la ligne quand il +appara\^\i t dans le contexte |`\^^M|, d\'enotant le code ASCII du control-M +(le nombre $13$). Vous pouvez changer la signification du |^^M| en lui +donnant un \minref{code de cat\'egorie} diff\'erent. Voir +\xrefpg{twocarets} pour une explication plus g\'en\'erale de la notation +|^^|. +\example +Hello.^^MGoodbye. +Goodbye again.\par +The \char `\^^M\ character.\par +% The fl ligature is at position 13 of font cmr10 +\number `\^^M\ is the end of line code.\par +Again, \number `^^M is the end of line code, +isn't it? % 32 is the ASCII code for a space +| +\produces +{\catcode `\^ = 7 % disable indexing use within this display +Hello.^^MGoodbye +Goodbye again.\par +The \char `\^^M\ character.\par +\number `\^^M\ is the end of line code.\par +Again, \number `^^M is the end of line code, +isn't it?} +\endexample +\enddesc + +\begindesc +\easy\ctsact ~ \xrdef{@not} +\explain +Le caract\`ere \minref{actif} `|~|' appel\'e un ``^{tilde}'', produit +une espace normale entre deux mots et lie ces mots pour +qu'une coupure de ligne ne se produise pas entre eux. Vous devez +employer un tilde dans n'importe quel contexte o\`u une coupure de +ligne serait embrouillante, par exemple, avant une initiale moyenne, +apr\`es une abr\'eviation telle que ``Dr'' ou apr\`es ``Fig.'' dans ``Fig.~8''. + +\example +P.D.Q.~Bach (1807--1742), the youngest and most +imitative son of Johann~S. Bach, composed the +{\sl Concerto for Horn and Hardart}. +| +\produces +\margin{The inversion of dates is deliberate---cf. Peter Schickele.} +P.D.Q.~Bach (1807--1742), the youngest and most +imitative son of Johann~S. Bach, composed the +{\sl Concerto for Horn and Hardart}. +\endexample\enddesc + +\begindesc +\easy\ctspecial / \ctsxrdef{@slash} +\explain +Chaque caract\`ere d'une \minref{fonte} \TeX\ a une correction d'``^{italique}'' +li\'ee \`a lui, bien que la correction d'italique soit +normalement \`a z\'ero pour un caract\`ere d'une police non pench\'ee (montante). +La correction d'italique indique l'espace suppl\'ementaire qui +est n\'ecessaire quand vous passez d'une police inclin\'ee (pas +n\'ecessairement une police italique) \`a une police non pench\'ee. +L'espace suppl\'ementaire est n\'ecessaire parce qu'un caract\`ere inclin\'e +d\'epasse dans l'espace qui le suit, r\'eduisant l'espace quand le caract\`ere +suivant est non pench\'e. Le dossier de +m\'etriques d'une police inclut la correction d'italique de chaque +caract\`ere dans la police. +^^{fichiers de m\'etriques//correction italique dans} + +La commande |\/| +produit une correction d'^{italique} pour le caract\`ere pr\'ec\'edent. Vous +devez ins\'erer une correction d'italique quand vous passez d'une +police inclin\'ee vers une police droite, sauf quand le caract\`ere suivant +est un point ou une virgule. +\example +However, {\it somebody} ate {\it something}: that's clear. + +However, {\it somebody\/} ate {\it something\/}: +that's clear. +| +\produces +However, {\it somebody} ate {\it something}: that's clear. + +However, {\it somebody\/} ate {\it something\/}: +that's clear. +\endexample +\enddesc + +\begindesc +\cts frenchspacing {} +\cts nonfrenchspacing {} +\explain +^^{espacement inter-mots} +\TeX\ ajuste normalement l'espacement entre les mots en +accord avec les signes de ponctuation. Par exemple, il ins\`ere de l'espace +suppl\'ementaire \`a la fin d'une phrase et ajoute un certain \'etirement +au \minref{ressort} apr\`es n'importe quel signe de ponctuation. La +commande |\frenchspacing| indique \`a \TeX\ de rendre l'espacement +entre les mots ind\'ependant de la ponctuation, alors que la commande +|\nonfrenchspacing| indique \`a \TeX\ d'utiliser les r\`egles normales +d'espacement. Si vous n'indiquez pas |\frenchspacing|, vous +obtiendrez l'espacement normal de \TeX. + +Voyez \xrefpg{periodspacing} pour des conseils sur la fa\c con de +contr\^oler le traitement de la ponctuation de \TeX\ \`a la fin des +phrases. + +\example +{\frenchspacing An example: two sentences. Right? No.\par} +{An example: two sentences. Right? No. \par}% +| +\produces +{\frenchspacing An example: two sentences. Right? No.\par} +{An example: two sentences. Right? No. \par}% +\endexample + +\enddesc + +\begindesc +\cts obeyspaces {} +\explain +\TeX\ condense normalement une suite de plusieurs espaces en un +espace simple. |\obeyspaces| demande \`a \TeX\ de produire un +espace dans le r\'esultat pour chaque espace dans le source. +Cependant,|\obeyspaces| ne met pas d'espace au d\'ebut d'une ligne~; +pour cela nous vous recommandons la commande de +|\obey!-white!-space| d\'efinie dans |eplain.tex| +(\xref{ewhitesp}). +^^|\obeywhitespace| +|\obeyspaces| est souvent utile quand vous composez quelque chose, +un source informatique par exemple, dans une police \`a espacement fixe (une police dans +laquelle chaque caract\`ere a le m\^eme espacement) et que vous voulez montrer +exactement \`a quoi ressemble chaque ligne du source. + +Vous pouvez utiliser la commande |\obeylines| (\xref{\obeylines}) +pour obtenir que \TeX\ suive les bords de ligne de votre source. +|\obeylines| est souvent utilis\'e en combinaison avec |\obeyspaces|. + +\example +These spaces are closed up +{\obeyspaces but these are not }. +| +\produces +These spaces are closed up +{\obeyspaces but these are not }. +\endexample +\enddesc + +\begindesc +\cts spacefactor {\param{nombre}} +\cts spaceskip {\param{ressort}} +\cts xspaceskip {\param{ressort}} +\cts sfcode {\<charcode> \tblentry{nombre}} +\explain +Ces \minref{param\`etres} primitifs affectent combien d'espace \TeX\ met +entre deux mots adjacents, c'est-\`a-dire, l'^{espacement inter-mots}. +L'espacement normal entre les mots est assur\'e par la police courante. +Pendant que \TeX\ traite une \minref{liste horizontale}, il garde trace +du facteur d'^{espacement} $f$ dans |\spacefactor|. pendant qu'il +traite chaque caract\`ere du source $c$, il met \`a jour $f$ selon la +valeur de $f_c$, le code de facteur d'espacement de $c$ (voir ci- +dessous). Pour la plupart des caract\`eres, $f_c$ est \`a $1000$ et \TeX\ +met $f$ \`a $1000$. (la valeur initiale de $f$ est \'egalement $1000$.) +Quand \TeX\ voit un espace entre les mots, il ajuste la taille de cet +espace en multipliant l'\'etirement et le r\'etr\'ecissement de cet espace +par $f/1000$ et $1000/f$ respectivement. d'o\`u~: +\olist\compact +\li Si $f=1000$, l'espace inter-mots garde sa valeur normale. +\li If $f<1000$, l'espace inter-mots prend moins d'\minref{\'etirement} +et plus de \minref{r\'etr\'ecissement}. +\li If $f>1000$, l'espace inter-mots prend plus d'\minref{\'etirement} +et moins de \minref{r\'etr\'ecissement}. +\endolist +En outre, si $f\ge2000$ l'espace inter-mots est encore augment\'e par le +param\`etre ``d'espace suppl\'ementaire'' li\'e \`a la police courante. + +Chaque caract\`ere saisi $c$ a une adresse dans la table de |\sfcode| +(code de facteur d'espacement). L'adresse de la table |\sfcode| est +ind\'ependante de la police. Normalement \TeX\ met simplement $f$ \`a +$f_c$ apr\`es avoir trait\'e $c$. De toute mani\`ere~: +\ulist +\li Si $f_c$ est \`a z\'ero, \TeX\ laisse $f$ sans changement. Ainsi, un +caract\`ere tel que `|)|' dans \plainTeX, pour lequel $f_c$ est \`a z\'ero, +est essentiellement transparent pour le calcul de l'espacement entre +les mots. +\li Si $f<1000<f_c$, \TeX\ met $f$ \`a $1000$ plut\^ot que $f_c$, c'est-\`a- +dire, qu'il refuse d'augmenter $f$ tr\`es rapidement. +\endulist +La valeur de |\sfcode| pour un point est normalement de $3000$, c'est +pourquoi \TeX\ met habituellement un espace suppl\'ementaire apr\`es un +point +% > to \ge here, too, as above. +(voir la r\`egle ci-dessus pour le cas $f\ge2000$). Les caract\`eres non +lettre d'une liste horizontale, par exemple, les traits verticaux, +agissent g\'en\'eralement comme des caract\`eres avec un facteur d'espace de +$1000$. + +Vous pouvez changer le facteur d'espace explicitement en donnant une +valeur num\'erique diff\'erente \`a |\spacefactor|. Vous pouvez \'egalement +augmenter l'espacement normal entre les mots en donnant une valeur +num\'erique diff\'erente \`a |\xspaceskip| ou \`a |\spaceskip|~: +\ulist +\li |\xspaceskip| sp\'ecifie le ressort utilis\'e quand $f\ge2000$~; +dans le cas o\`u +|\xspaceskip| est \`a z\'ero, les r\`egles normales s'appliquent. +\li |\spaceskip| sp\'ecifie le ressort utilis\'e quand $f<2000$ ou bien +quand \hbox{|\xspaceskip|} est \`a z\'ero~; si |\spaceskip| est \`a z\'ero, les +r\`egles normales s'appliquent. L'\'etirement et le r\'etr\'ecissement du +ressort |\spaceskip|, comme le ressort ordinaire entre les mots, est +modifi\'e selon la valeur de $f$. +\endulist +Voir \knuth{page~76}{88--89} pour les r\`egles pr\'ecises que \TeX\ utilise pour +calculer le \minref{ressort} entre les mots et \knuth{pages~285--287}{331--334} +pour les ajustements faits \`a |\spacefactor| apr\`es diff\'erents items dans +une liste horizontale. +\eix^^{espace//inter-mots} +\enddesc + +%========================================================================== +\section {Centrer et justifier les lignes} + +\begindesc +\bix^^{centrage} +\bix^^{cadr\'e \`a gauche} +\bix^^{cadr\'e \`a droite} +\bix^^{justification} +\easy\cts centerline {\<argument>} +\cts leftline {\<argument>} +\cts rightline {\<argument>} +\explain +La commande |\centerline| produit un \minref{hbox} aussi large que +la ligne courante et place \<argument> au centre de la bo\^\i te. Les +commandes |\leftline| et |\rightline| sont analogues~; elles placent +\<argument> au bord gauche ou droite de la bo\^\i te. Si vous voulez +appliquer une de ces commandes \`a plusieurs lignes cons\'ecutives, vous +devez l'appliquer \`a chacune individuellement. Voir +\xrefpg{eplaincenter} pour une autre approche. + +N'utilisez pas ces commandes dans un paragraphe---si vous le faites, +\TeX\ ne pourra probablement pas couper le paragraphe en lignes et se +plaindra au sujet d'un overfull hbox. +\example +\centerline{Grand Central Station} +\leftline{left of Karl Marx} +\rightline{right of Genghis Khan} +| +\produces +\centerline{Grand Central Station} +\leftline{left of Karl Marx} +\rightline{right of Genghis Khan} + +\eix^^{centrage} +\eix^^{cadr\'e \`a gauche} +\eix^^{cadr\'e \`a droite} +\eix^^{justification} + +\endexample +\enddesc + +\begindesc +\easy\cts line {\<argument>} +\explain +Cette commande produit une \minref{hbox} contenant l'\<argument>. Cette +hbox est exactement aussi large que la ligne courante, c'est-\`a-dire, +qu'elle s'\'e\-tend de la marge droite \`a la gauche. +\example +\line{ugly \hfil suburban \hfil sprawl} +% Without \hfil you'd get an `underfull box' from this. +| +\produces +\line{ugly \hfil suburban \hfil sprawl}% +\endexample + +\enddesc + +\begindesc +^^{texte recouvrant} +\cts llap {\<argument>} +\cts rlap {\<argument>} +\explain +Ces commandes vous permettent de produire un texte qui recouvre celui +qui est \`a gauche ou \`a droite de la position actuelle. |\llap| recule +par la largeur de l'\<argument> et puis compose l'\<argument>. Le +|\rlap| est semblable, sauf qu'il compose l'\<argument> d'abord et +recule. |\llap| et |\rlap| sont utiles pour placer du texte en dehors +des marges courantes. |\llap| et |\rlap| effectuent leur travail en +cr\'eant une \minref{box} de largeur z\'ero. + +Vous pouvez \'egalement utiliser |\llap| ou |\rlap| pour construire des +caract\`eres sp\'eciaux par ^{surimpression}, mais ne l'essayez pas \`a +moins d'\^etre s\^ur que les caract\`eres que vous utilisez aient la m\^eme +largeur (ce qui est le cas pour une police \`a espacement fixe telle que +^|cmtt10|, la Computer Modern $10$-points ^{police de type machine \`a +\'ecrire}).. +^^{police Computer Modern} +\example +\noindent\llap{off left }\line{\vrule $\Leftarrow$ +left margin of examples\hfil right margin of examples +$\Rightarrow$\vrule}\rlap{ off right} +| +\produces +\noindent\llap{off left }\line{\vrule $\Leftarrow$ +left margin of examples\hfil right margin of examples +$\Rightarrow$\vrule}\rlap{ off right} +\endexample + +%\example +%{\tt O\llap{!|}} +%| +%\produces +%{\cm \tt O\llap{\char `|}} +%\endexample + +\nobreak % don't lose the \see +\enddesc + +\see |\hsize| (\xref{\hsize}). + +%========================================================================== +\section {Formation des paragraphes} + +\subsection {d\'ebuter, finir et indenter des paragraphes} + +\begindesc +\bix^^{paragraphes//formation} +\ctspecial par \ctsxrdef{@par} +\explain +Cette commande termine un paragraphe et met \TeX\ dans le mode +\minref{vertical}, pr\^et \`a ajouter plus d'articles sur la page. +Puisque \TeX\ convertit une ligne blanche dans votre fichier source +en un \minref{token} |\par|, vous n'avez normalement pas besoin de +saisir |\par| explicitement pour finir un paragraphe. + +Un point important est que |\par| n'indique pas \`a \TeX\ de commencer +un paragraphe~; il ne lui dit que de le finir. \TeX\ d\'ebute un +paragraphe quand il est en mode vertical ordinaire (tel qu'il est +apr\`es un |\par|) et rencontre un article en soi horizontal tel qu'une +lettre. En tant qu'\'el\'ement du c\'er\'emonial de d\'ebut de paragraphe, \TeX\ +^^{paragraphes//d\'ebuter des} +ins\`ere une quantit\'e d'espace vertical donn\'ee par le param\`etre +|\parskip| (\xref{\parskip }) et indente le paragraphe par un espace +horizontal donn\'e par |\parindent| (\xref{\parindent }). + +Vous pouvez normalement effacer tout l'espace inter-paragraphe +produit avec |\par| en mettant la commande |\vskip -\lastskip|. Ceci +peut \^etre utile quand vous \'ecrivez une \minref{macro} cens\'e travailler +de la m\^eme mani\`ere si elle est pr\'ec\'ed\'ee ou non par une ligne blanche. + +Vous pouvez obtenir que \TeX\ prenne certaines mesures sp\'eciales au +d\'ebut de chaque paragraphe en pla\c cant des instructions dans +^|\everypar| (\xref\everypar). + +Voir \knuth{pages~283 et 286}{328 et 332} pour les effets pr\'ecis de |\par|. + +\example +\parindent = 2em +``Can you row?'' the Sheep asked, handing Alice a pair of +knitting-needles as she was speaking.\par ``Yes, a little% +---but not on land---and not with needles---'' Alice was +starting to say, when suddenly the needles turned into oars. +| +\produces +\parindent = 2em +``Can you row?'' the Sheep asked, handing Alice a pair of +knitting-needles as she was speaking.\par ``Yes, a little% +---but not on land---and not with needles---'' Alice was +starting to say, when suddenly the needles turned into oars. +\endexample +\enddesc + +\begindesc +\cts endgraf {} +\explain +Cette commande est un synonyme de la commande primitive +^|\par|. Elle est utile quand vous avez red\'efini ^|\par| mais voulez +toujours avoir acc\`es \`a la d\'efinition originale de |\par|. +\enddesc + +\begindesc +\cts parfillskip {\param{ressort}} +\explain +^^{paragraphes//ressort \`a la fin des} +Ce param\`etre d\'esigne le ressort horizontal que \TeX\ insert \`a la fin +d'un paragraphe. La valeur par d\'efaut de |\parfillskip| est |0pt plus +1fil|, qui fait que la derni\`ere ligne d'un paragraphe soit compl\'et\'ee +de l'espace vide. Une valeur de |0pt| force \TeX\ \`a finir la derni\`ere +ligne d'un paragraphe sur la marge gauche. +\enddesc + +\bix^^{indentation} +\begindesc +\easy\cts indent {} +\explain +Si \TeX\ est en mode vertical, comme il l'est apr\`es avoir fini un +paragraphe, cette commande ins\`ert le ressort inter-paragraphe +^|\parskip|, met \TeX\ en mode horizontal, d\'ebute un paragraphe et +indente ce paragraphe de |\parindent|. Si \TeX\ est d\'ej\`a en mode +horizontal, cette commande produit simplement un espace blanc de +largeur |\parindent|. Deux |\indent| \`a la suite produisent deux +indentations. +^^{indentation} + +Comme dans l'exemple ci-dessous, un |\indent| \`a un endroit o\`u \TeX\ +commencerait de toute fa\c con un paragraphe est superflu. Quand \TeX\ +est en mode vertical et voit une lettre ou une autre commande en soi +horizontale, il commence un paragraphe en commutant vers le mode +horizontal, fait un |\indent| et traite la commande horizontale. + +\example +\parindent = 2em This is the first in a series of three +paragraphs that show how you can control indentation. Note +that it has the same indentation as the next paragraph.\par +\indent This is the second in a series of three paragraphs. +It has \indent an embedded indentation.\par +\indent\indent This doubly indented paragraph +is the third in the series. +| +\produces +\parindent = 2em This is the first in a series of three +paragraphs that show how you can control indentation. Note +that it has the same indentation as the next paragraph.\par +\indent This is the second in a series of three paragraphs. +It has \indent an embedded indentation.\par +\indent\indent This doubly indented paragraph +is the third in the series. +\endexample +\enddesc + + +\begindesc +\easy\cts noindent {} +\explain +Si le \TeX\ est en mode vertical, comme il l'est apr\`es la fin d'un +paragraphe, cette commande ins\`ert le ressort inter-paragraphe +^|\parskip|, met \TeX\ dans le mode horizontal, et commence +un paragraphe non indent\'e. Elle n'a aucun effet dans le mode horizontal, +c'est-\`a-dire, dans un paragraphe. Commencer un paragraphe avec +|\noindent| d\'ecommande ainsi l'indentation de |\parindent| qui se +produirait normalement. + +^^{indentation} + +Une utilisation commune de |\noindent| est d'interdire l'indentation +de la premi\`ere ligne d'un paragraphe quand le paragraphe suit un +certain mat\'eriel affich\'e. + +\example +\parindent = 1em +Tied round the neck of the bottle was a label with the +words \smallskip \centerline{EAT ME}\smallskip +\noindent beautifully printed on it in large letters. +| +\produces +\parindent = 1em +Tied round the neck of the bottle was a label with the +words \smallskip \centerline{EAT ME}\smallskip +\noindent beautifully printed on it in large letters. +\endexample +\enddesc + +\margin{{\tt\\textindent} moved here from later in the section.} +\begindesc +\cts textindent {\<argument>} + +\explain +^^{indentation} +Cette commande indique \`a \TeX\ de commencer un paragraphe et de l'indenter +de |\par!-indent|, comme d'habitude. \TeX\ alors justifie \`a droite +l'\<argument> de l'indentation et le fait suivre d'un espace demi-cadratin +(moiti\'e d'un cadratin). \PlainTeX\ utilise cette commande pour composer les +notes de pied de page. (\xref\footnote) ^^{notes de pied de page//utiliser +\b\tt\\textindent\e\ avec} et les articles dans les listes (voir |\item|, +\xref\item). + +\example +\parindent = 20pt \textindent{\raise 1pt\hbox{$\bullet$}}% +You are allowed to use bullets in \TeX\ even if +you don't join the militia, and many peace-loving +typographers do so. +| +\produces +\parindent = 20pt \textindent{\raise 1pt\hbox{$\bullet$}}% +You are allowed to use bullets in \TeX\ even if +you don't join the militia, and many peace-loving +typographers do so. +\endexample\enddesc + +\begindesc +\cts parindent {\param{dimension}} + +\explain +Ce \minref{param\`etre} indique la quantit\'e par laquelle la premi\`ere +ligne de chaque paragraphe doit \^etre indent\'ee. ^^{indentation} Comme +montr\'e dans l'exemple ci-dessous, placer |\parindent| et ^|\parskip| \`a +z\'ero est une mauvaise id\'ee puisque alors les coupures de paragraphe ne +sont plus \'evidentes. +\example +\parindent = 2em This paragraph is indented by 2 ems. +\par \parindent=0pt This paragraph is not indented at all. +\par Since we haven't reset the paragraph indentation, +this paragraph isn't indented either. +| +\produces +\parindent = 2em This paragraph is indented by 2 ems. +\par \parindent=0pt This paragraph is not indented at all. +\par Since we haven't reset the paragraph indentation, +this paragraph isn't indented either. +\endexample\enddesc + +\begindesc +\cts everypar {\param{liste de token}} + +\explain +\TeX\ ex\'ecute les commandes des \<token list> toutes les fois qu'il entre dans le mode +horizontal, par exemple, quand il commence un paragraphe. Par d\'efaut +|\everypar| est vide, mais vous pouvez prendre des mesures +suppl\'ementaires au d\'ebut de chaque paragraphe en mettant des commandes +pour ces actions dans un token list +% +% This \vglue makes the example overwrite the example, but since we are +% not reprinting this page, it doesn't matter. For reasons I did not +% attempt to track down, a page break happened before the example, +% unlike in the first printing. +% +%\secondprinting{\vglue-48pt} +et assigner ce token list \`a |\everypar|. +\example +\everypar = {$\Longrightarrow$\enspace} +Now pay attention!!\par +I said, ``Pay attention!!''.\par +I'll say it again!! Pay attention!! +| +\produces +\everypar = {$\Longrightarrow$\enspace} +Now pay attention!\par +I said, ``Pay attention!''.\par +I'll say it again! Pay attention! +\endexample +\enddesc +%\secondprinting{\vfill\eject} + +%========================================================================== +\subsection {Formation de paragraphes entiers} + +\begindesc +\margin{Cette commande \'etait aussi d\'ecrite dans le chapitre `Pages'. La +description actuelle combine les deux anciennes descriptions.} +\bix^^{coupures de ligne//et formation de paragraphe} +\easy\cts hsize {\param{dimension}} + +\explain Ce \minref{param\`etre} indique la longueur courante de la ^{ligne}, c'est-\`a-dire, -la largeur habituelle des lignes dans un paragraphe commen\c cant \`a la
-marge gauche. Beaucoup de commandes \TeX emploient
-implicitement la valeur de |\hsize|, comme par exemple,
-|\center!-line| (\xref{\centerline}) et |\hrule| (\xref{\hrule}). En changeant le |\hsize| dans un
-groupe vous pouvez changer la largeur des constructions produites par de
-telles commandes.
-
-Si vous placez |\hsize| dans un \minref{vbox} qui contient du texte, le
-vbox aura la largeur que vous aurez donn\'ee au |\hsize|.
-^^{vbox//largeur d\'etermin\'ee par \b\tt\\hsize\e}
-
-\PlainTeX\ fixe |\hsize| \`a |6.5in|.
-
-\example
-{\hsize = 3.5in % Set this paragraph 3.5 inches wide.
-The hedgehog was engaged in a fight with another hedgehog,
-which seemed to Alice an excellent opportunity for
-croqueting one of them with the other.\par}%
-|
-\produces
-{\hsize = 3.5in
-The hedgehog was engaged in a fight with another hedgehog,
-which seemed to Alice an excellent opportunity for croqueting
-one of them with the other.\par}%
-
-\doruler{\8\8\8\tick\1\tick\2\tick\1\tick\3}{3.5}{in}
-\nextexample
-\leftline{\raggedright\vtop{\hsize = 1.5in
-Here is some text that we put into a paragraph that is
-an inch and a half wide.}\qquad
-\vtop{\hsize = 1.5in Here is some more text that
-we put into another paragraph that is an inch and a
-half wide.}}
-|
-\produces
-\leftline{\raggedright\vtop{\hsize = 1.5in
-Here is some text that we put into a paragraph that is
-an inch and a half wide.}\qquad
-\vtop{\hsize = 1.5in Here is some more text that
-we put into another paragraph that is an inch and a
-half wide.}}
-\endexample
-\enddesc
-
-\begindesc
-\easy\cts narrower {}
-
-\explain
-^^{paragraphes//\'etroit}
-Cette commande donne des paragraphes plus \'etroits, en augmentant les marges
-gauches et droites de |\parindent|, l'^{indentation} de paragraphe
-courante. Elle r\'ealise ceci en augmentant |\leftskip| et |\rightskip| de
-|\parindent|. Normalement vous placez |\narrower| au d\'ebut d'un
-\minref{groupe} contenant les paragraphes que vous voulez rendre plus
-\'etroits. Si vous oubliez d'enfermer |\narrower| dans un groupe, vous
-constaterez que tout le reste de votre document aura des paragraphes
-\'etroits.
-
-|\narrower| n'affecte que les paragraphes qui terminent apr\`es que vous
-l'ayez appel\'e. Si vous terminez un groupe |\narrower| avant d'avoir fini un
-paragraphe, \TeX\ ne rendra pas ce paragraphe plus \'etroit.
-
-\example
-{\parindent = 12pt \narrower\narrower\narrower
-This is a short paragraph. Its margins are indented
-three times as much as they would be
-had we used just one ``narrower'' command.\par}
-|
-\produces
-{\parindent = 12pt \narrower\narrower\narrower
-This is a short paragraph. Its margins are indented
-three times as much as they would be
-had we used just one ``narrower'' command.\par}
-\endexample\enddesc
-
-\begindesc
-\cts leftskip {\param{ressort}}
-\cts rightskip {\param{ressort}}
-
-\explain
-Ces param\`etres indiquent \`a \TeX\ combien de ressort placer aux extr\'emit\'es
-gauches et droites de chaque ligne du paragraphe courant. Nous n'expli\-%
-querons que le fonctionnement de |\leftskip| puisque |\rightskip| est
-similaire.
-
-^^{indentation} Vous pouvez augmenter la marge gauche en pla\c cant
-|\leftskip| \`a une \minref{dimension} diff\'erente de z\'ero. Si vous donnez \`a
-|\leftskip| un certain \'etirement, vous pouvez produire du texte ^{cadr\'e \`a
-droite}, c'est-\`a-dire, du texte qui a une marge gauche in\'egale.
-
-Normalement, vous devriez enfermer tout \minref{assignement} \`a |\leftskip|
-dans un \minref{groupe} avec le texte affect\'e afin d'emp\^echer son effet de
-continuer jusqu'\`a la fin de votre document. Cependant, il est injustifi\'e de
-changer la valeur de |\leftskip| \`a l'int\'erieur d'un groupe qui est, lui
-aussi, contenu dans un paragraphe---la valeur de |\leftskip| \`a la
-\emph{fin} d'un paragraphe est celle qui d\'etermine comment \TeX\ coupera le
-paragraphe en lignes. \minrefs{line break}
-
-\example
-{\leftskip = 1in The White Rabbit trotted slowly back
-again, looking anxiously about as it went, as if it had
-lost something. {\leftskip = 10in % has no effect
-It muttered to itself, ``The Duchess!! The Duchess!! She'll
-get me executed as sure as ferrets are ferrets!!''}\par}%
-|
-\produces
-{\leftskip = 1in The White Rabbit trotted slowly back
-again, looking anxiously about as it went, as if it had
-lost something. {\leftskip = 10in % has no effect
-It muttered to itself, ``The Duchess! The Duchess!
-She'll get me executed as sure as ferrets are ferrets!''}\par}%
-\nextexample
-\pretolerance = 10000 % Don't hyphenate.
-\rightskip = .5in plus 2em
-The White Rabbit trotted slowly back again, looking
-anxiously about as it went, as if it had lost something.
-It muttered to itself, ``The Duchess!! The Duchess!! She'll
-get me executed as sure as ferrets are ferrets!!''
-|
-\produces
-\pretolerance = 10000 % Don't hyphenate.
-\rightskip = .5in plus 2em
-The White Rabbit trotted slowly back again, looking
-anxiously about as it went, as if it had lost something.
-It muttered to itself, ``The Duchess! The Duchess! She'll
-get me executed as sure as ferrets are ferrets!''
-\endexample
-\enddesc
-
-\begindesc
-\easy\cts raggedright {}
-\cts ttraggedright {}
-
-\explain
-Ces commandes font que \TeX\ compose votre document
-``^{cadr\'e \`a gauche}''. Les espaces inter-mots ont tous
-leur taille naturelle, c'est-\`a-dire, ils ont tous la m\^eme largeur et
-ne s'\'etirent ni se r\'etr\'ecissent.
-En cons\'equence, leur marge droite n'est g\'en\'eralement pas la m\^eme.
-L'alternative, qui est le comportement par d\'efaut de \TeX, est de composer
-votre document justifi\'e,
-^^{justification}
-c'est-\`a-dire, avec des marges gauches et droites uniformes.
-Dans du texte justifi\'e, les espaces inter-mots sont \'etir\'es pour
-aligner des marges de droite.
-Certains typographes pr\'ef\`erent cadrer \`a gauche parce que
-cela \'evite des ``rivi\`eres'' distractives d'espace sur la page imprim\'ee.
-\minrefs{justified text}
-
-Vous devez utiliser la commande |\ttraggedright| pour composer du texte dans
-une police non proportionnelle et la commande |\raggedright| command pour
-composer de texte dans toutes les autres polices.
-
-La plupart du temps vous voudrez appliquer ces commandes \`a un document entier,
-mais vous pouvez limiter leurs effets en les englobant
-dans un \minref{groupe}.
-\example
-\raggedright ``You couldn't have it if you {\it did\/}
-want it,'' the Queen said. ``The rule is, jam tomorrow
-and jam yesterday---but never jam {\it today\/}.''
-``It {\it must\/} come sometimes to `jam today,%
-thinspace'' Alice objected. ``No, it can't'', said the
-Queen. ``It's jam every {\it other\/} day: today isn't
-any {\it other\/} day.''
-|
-\produces
-\raggedright ``You couldn't have it if you {\it did\/}
-want it,'' the Queen said. ``The rule is, jam tomorrow
-and jam yesterday---but never jam {\it today\/}.''
-``It {\it must\/} come sometimes to `jam today,%
-'\thinspace'' Alice objected. ``No, it can't'', said the
-Queen. ``It's jam every {\it other\/} day: today isn't
-any {\it other\/} day.''
-\endexample
-\enddesc
-
-\begindesc
-\cts hang {}
-\explain
-Cette commande indente la seconde ligne et les suivantes d'un paragraphe
-de |\parindent|, l'^{indentation} du paragraphe.
-(\xref{\parindent}).
-Puisque la premi\`ere ligne est d\'ej\`a indent\'ee par |\parindent|
-(\`a moins que vous ayez supprim\'e l'indentation avec |\noindent|), le
-paragraphe entier appara\^\i t \^etre indent\'e de |\parindent|.
-
-\example
-\parindent=24pt \hang ``I said you {\it looked} like an
-egg, Sir,'' Alice gently explained to Humpty Dumpty. ``And
-some eggs are very pretty, you know,'' she added.
-|
-\produces
-\parindent=24pt \hang ``I said you {\it looked} like an
-egg, Sir,'' Alice gently explained to Humpty Dumpty. ``And
-some eggs are very pretty, you know,'' she added.
-\endexample
-\enddesc
-
-\begindesc
-\cts hangafter {\param{nombre}}
-\cts hangindent {\param{dimension}}
-
-\explain
-Ces deux \minref{param\`etre}s associ\'es
-sp\'ecifient l'``^{indentation r\'emanente}'' pour un paragraphe.
-L'indentation r\'emanente indique \`a \TeX\ que certaines lignes
-du paragraphe doivent
-\^etre indent\'ees et que les lignes restantes doivent avoir leur largeur normale
-^^{indentation}
-|\hangafter| d\'etermine quelles lignes
-sont indent\'ees, tandis que |\hangindent| d\'etermine le montant d'inden\-tation
-et si elle appara\^\i t sur la gauche ou sur la droite~:
-
-\ulist
-\li Soit $n$ la valeur de |\hangafter|. Si $n < 0$,
-Les $-n$ premi\`eres lignes du paragraphe seront indent\'ees.
-Si $n\ge0$, toutes sauf les $n$ premi\`eres lignes du paragraphe seront
-indent\'ees.
-
-\li Soit $x$ la valeur de |\hangindent|.
-Si $x\ge0$, les lignes seront indent\'ees
-de $x$ \`a gauche. Si $x<0$, les lignes seront indent\'ees de $-x$ sur
-la droite.
-\endulist
-
-Quand vous sp\'ecifiez de l'indentation r\'emanente, elle ne s'applique
-qu'au paragraphe suivant (si vous \^etes en mode vertical) ou au
-paragraphe courant (si vous \^etes en mode horizontal).
-\TeX\ utilise les valeurs de |\hangafter| et |\hangindent| \`a la fin d'un
-paragraphe, quand il coupe ce paragraphe en lignes.\minrefs{line
-break}
-
-\`A la diff\'erence de la plupart des autres param\`etres de mise en forme de paragraphe,
-|\hangafter| et |\hangindent| sont r\'einitialis\'es
-au d\'ebut de chaque paragraphe, soit,
-$1$ pour |\hangafter| et $0$ pour |\hangindent|.
-Si vous voulez composer une suite de paragraphes avec de l'indentation r\'emanente,
-utilisez |\everypar| (\xref{\everypar}).
-^^|\everypar//pour indentation r\'emanente|
-Si vous sp\'ecifiez |\hangafter| et |\hangindent| de m\^eme que ^|\parshape|,
-\TeX\ ignorera |\hangafter| et |\hangindent|.
-
-\example
-\hangindent=6pc \hangafter=-2
-This is an example of a paragraph with hanging indentation.
-In this case, the first two lines are indented on the left,
-but after that we return to unindented text.
-|
-\produces
-\hangindent=6pc \hangafter=-2
-This is an example of a paragraph with hanging indentation.
-In this case, the first two lines are indented on the left,
-but after that we return to unindented text.
-\nextexample
-\hangindent=-6pc \hangafter=1
-This is another example of a paragraph with hanging
-indentation. Here, all lines after the first have been
-indented on the right. The first line, on the other
-hand, has been left unindented.
-|
-\produces
-\hangindent=-6pc \hangafter=1
-This is another example of a paragraph with hanging
-indentation. Here, all lines after the first have been
-indented on the right. The first line, on the other
-hand, has been left unindented.
-\endexample
-\enddesc
-
-\margin{{\tt\\textindent} has been moved to earlier in this section.}
-
-\begindesc
-\cts parshape {$n\; i_1 l_1\; i_2 l_2\; \ldots \;i_n l_n$}
-\explain
-Cette commande sp\'ecifie le gabarit des $n$ premi\`eres lignes d'un para\-graphe.
-Le prochain si vous \^etes en mode vertical et le paragraphe courant si vous
-\^etes en mode horizontal.
-Les $i$ et les $l$ sont toutes des dimensions. La premi\`ere ligne est indent\'ee de
-$i_1$ et a une longueur de $l_1$, la seconde ligne est indent\'ee de $i_2$ et a
-une longueur de $l_2$, et ainsi de suite.
-si le paragraphe a plus de $n$ lignes, la derni\`ere paire indentation\slash
-longueur est utilis\'ee pour les autres lignes.
-Pour parachever des effets sp\'eciaux comme celui montr\'e ici, vous devrez
-normalement faire beaucoup d'essais, ins\'erer des cr\'enages ici et l\`a et
-choisir votre mot pour remplir le gabarit.
-
-|\parshape|, comme ^|\hangafter| et ^|\hangindent|, n'est effectif que pour
-un paragraphe.
-Si vous sp\'ecifiez |\hangafter| et |\hangindent| de m\^eme que |\par!-shape|,
-\TeX\ ignorera ^|\hangafter| et ^|\hangindent|.
-\ifodd\pageno\vfill\eject\fi % so the wineglass is on a single page.
-
-\example
-% A small font and close interline spacing make this work
-\smallskip\font\sixrm=cmr6 \sixrm \baselineskip=7pt
-\fontdimen3\font = 1.8pt \fontdimen4\font = 0.9pt
-\noindent \hfuzz 0.1pt
-\parshape 30 0pt 120pt 1pt 118pt 2pt 116pt 4pt 112pt 6pt
-108pt 9pt 102pt 12pt 96pt 15pt 90pt 19pt 84pt 23pt 77pt
-27pt 68pt 30.5pt 60pt 35pt 52pt 39pt 45pt 43pt 36pt 48pt
-27pt 51.5pt 21pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt
-16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt
-53pt 14.6pt 48pt 24pt 45pt 30.67pt 36.5pt 51pt 23pt 76.3pt
-Les vins de France et de Californie semblent \^etre
-les plus connus, mais ne sont pas les seuls bons vins.
-Les vins espagnols sont souvent sous-estim\'es,
-et des assez vieux peu\-vent \^etre disponibles \`a des
-prix raisonnables. Pour les vins espagnols, le mill\'esime
-n'est pas important, mais le climat de la r\'egion de
-Bordeaux varie selon les ann\'ees. Seuls certains sont
-bons. Ceux que
-vo\kern -.1pt us de\kern -.1pt v\kern -.1pt ez
-noter tr\`es tr\`es bons~:
-1962, 1964, 1966. 1958, 1959, 1960, 1961, 1964, 1966 sont de bons crus
-californiens. \`A boire avec mod\'eration~!
-|
-%\margin{Wineglass text replaced because of permissions problem.}
-\produces
-% A small font and close interline spacing make this work
-\smallskip\font\sixrm=cmr6 \sixrm \baselineskip=7pt
-\fontdimen3\font = 1.8pt \fontdimen4\font = 0.9pt
-\noindent \hfuzz 0.1pt
-\parshape 30 0pt 120pt 1pt 118pt 2pt 116pt 4pt 112pt 6pt 108pt 9pt 102pt
-12pt 96pt 15pt 90pt 19pt 84pt 23pt 77pt 27pt 68pt 30.5pt 60pt 35pt 52pt
-39pt 45pt 43pt 36pt 48pt 27pt 51.5pt 21pt 53pt 16.75pt 53pt 16.75pt
-53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt
-53pt 16.75pt 53pt 14.6pt 48pt 24pt 45pt 30.67pt 36.5pt 51pt 23pt 76.3pt
-Les vins de France et de Californie semblent \^etre
-les plus connus, mais ne sont pas les seuls bons vins.
-Les vins espagnols sont souvent sous-estim\'es,
-et des assez vieux peu\-vent \^etre disponibles \`a des
-prix raisonnables. Pour les vins espagnols, le mill\'esime
-n'est pas important, mais le climat de la r\'egion de
-Bordeaux varie selon les ann\'ees. Seuls certains sont
-bons. Ceux que
-vo\kern -.1pt us de\kern -.1pt v\kern -.1pt ez
-noter tr\`es tr\`es bons~:
-1962, 1964, 1966. 1958, 1959, 1960, 1961, 1964, 1966 sont de bons crus
-californiens. \`A boire avec mod\'eration~! \endexample
-\eix^^{indentation}
-\enddesc
-
-\begindesc
-\cts prevgraf {\param{nombre}}
-\explain
-En mode horizontal, ce param\`etre sp\'ecifie le
-nombre de lignes dans le paragraphe en cours~; en mode vertical,
-il sp\'ecifie le nombre de lignes dans le paragraphe pr\'ec\'edent.
-\TeX\ ne prend en compte |\prevgraf| qu'apr\`es avoir fini de couper du texte
-en ligne, c'est-\`a-dire, sur un affichage math\'ematique ou \`a la fin d'un
-paragraphe.
-Voir la \knuth{page~103}{121} pour plus de d\'etails \`a son propos.
-\enddesc
-
-\begindesc
-\cts vadjust {\rqbraces{\<mat\'eriel en mode vertical>}}
-\explain
-Cette commande ins\`ere le \<mat\'eriel en mode vertical> sp\'ecifi\'e juste apr\`es
-la ligne de sortie contenant la position o\`u la commande se trouve.
-^^{listes verticales//ins\'erer dans des paragraphes}
-Vous pouvez l'utiliser, par exemple, pour provoquer un saut de page ou
-ins\'erer de l'espace suppl\'ementaire apr\`es une certaine ligne.
-
-\example
-Some of these words are \vadjust{\kern8pt\hrule} to be
-found above the line and others are to be found below it.
-|
-\produces
-Some of these words are \vadjust{\kern8pt
-\hbox to \hsize{\hfil\vbox{\advance\hsize by -\parindent
-\hrule width \hsize}}}
-to be found above the line and others are to be found below it.
-\endexample
-\enddesc
-
-\see |\parindent| (\xref\parindent),
-|\parskip| (\xref\parskip) ainsi que |\every!-par| (\xref\everypar).
-\eix^^{coupures de ligne//et formation de paragraphe}
-\eix^^{paragraphes//formation}
-
-%==========================================================================
-\section {coupures de lignes}
-
-%==========================================================================
-\subsection {Encourager ou d\'ecourager les coupures de ligne}
-
-\begindesc
-\bix^^{coupures de ligne}
-\bix^^{coupures de ligne//encouragement ou d\'ecouragement}
-\ctspecial break {} \xrdef{hbreak}
-\explain
-Cette commande force une coupure de ligne,
-\`a moins que vous fassiez quelque chose pour remplir la ligne,
-Vous recevrez vraisemblablement une plainte ``underfull hbox''.
-|\break| peut aussi \^etre utilis\'e en mode vertical.
-\example
-Fill out this line\hfil\break and start another one.\par
-% Use \hfil here to fill out the line.
-This line is underfull---we ended it\break prematurely.
-% This line causes an `underfull hbox' complaint.
-|
-\produces
-\hbadness = 10000 % avoid hbadness message
-Fill out this line\hfil\break and start another one.\par
-% Use \hfil here to fill out the line.
-This line is underfull---we ended it\break prematurely.
-% This line causes an `underfull hbox' complaint.
-\endexample\enddesc
-
-\begindesc
-\ctspecial nobreak {} \xrdef{hnobreak}
-\explain
-Cette commande emp\^eche une coupure de ligne l\`a o\`u elle
-devrait se faire normalement.
-|\nobreak| peut aussi \^etre utilis\'ee en mode vertical.
-\example
-Sometimes you'll encounter a situation where
-a certain space\nobreak\qquad must not get lost.
-|
-\produces
-Sometimes you'll encounter a situation where
-a certain space\nobreak\qquad must not get lost.
-\endexample
-\enddesc
-
-\begindesc
-\ctspecial allowbreak {} \xrdef{hallowbreak}
-\explain
-Cette commande demande \`a \TeX\ d'autoriser une coupure de ligne l\`a o\`u elle
-n'arriverait pas normalement.
-Elle est plus souvent utile dans une formule math\'ematique, car \TeX\ est
-r\'eticent \`a couper de telles lignes. ^^{coupures de ligne//dans des formules math\'ematiques}
-|\allowbreak| peut aussi \^etre utilis\'ee en mode vertical.
-\example
-Under most circumstances we can state with some confidence
-that $2+2\allowbreak=4$, but skeptics may disagree.
-\par For such moronic automata, it is not difficult to
-analyze the input/\allowbreak output behavior in the limit.
-|
-\produces
-Under most circumstances we can state with some confidence
-that $2+2\allowbreak=4$, but skeptics may disagree.
-\par For such moronic automata, it is not difficult to
-analyze the input/\allowbreak output behavior in the limit.
-\endexample\enddesc
-
-\begindesc
-\ctspecial penalty {\<nombre>} \xrdef{hpenalty}
-\explain
-Cette commande produit un \'el\'ement de \minref{p\'enalit\'e}.
-L'\'el\'ement de p\'enalit\'e rend \TeX\ plus ou moins d\'esireux de couper une ligne
-\`a l'endroit o\`u cet \'el\'ement est plac\'e.
-Une p\'enalit\'e n\'egative, c'est-\`a-dire, un bonus, encourage une coupure de ligne~;
-une p\'enalit\'e positive d\'ecourage une coupure de ligne.
-Une p\'enalit\'e de $10000$ ou plus emp\^eche une coupure quelle qu'elle soit,
-tandis qu'une p\'enalit\'e de $-10000$ ou moins force une coupure.
-|\penalty| peut aussi \^etre utilis\'ee en mode vertical.
-%\secondprinting{\vfill\eject}
-\example
-\def\break{\penalty -10000 } % as in plain TeX
-\def\nobreak{\penalty 10000 } % as in plain TeX
-\def\allowbreak{\penalty 0 } % as in plain TeX
-|
-\endexample
-\enddesc
-
-{\vglue-\baselineskip\vskip0pt}
-\begindesc
-\cts obeylines {}
-\explain
-\TeX\ normalement traite une fin de ligne comme un espace.
-|\obeylines| demande \`a \TeX\ de traiter chaque fin de ligne comme
-une fin de paragraphe, for\c cant ainsi une coupure de ligne.
-|\obeylines| est souvent utile quand vous composez un po\`eme ou
-un programme informatique.
-^^{vers, composer des}^^{po\'esie, composer de la}^^{programmes informatiques, composer des}
-Si quelques lignes sont plus longues que la longueur de ligne r\'eelle
-(|\hsize|\tminus|\parindent|),
-sinon,
-vous aurez une coupure de ligne suppl\'ementaire dans ces lignes.
-
-Parce que \TeX\ ins\`ere le ressort |\parskip| (\xref\parskip)
-entre des lignes contr\^ol\'ees par |\obeylines| (puisqu'il pense que chaque
-ligne est un paragraphe), vous devrez normalement mettre |\parskip| \`a z\'ero
-quand vous utiliserez |\obeylines|.
-
-Vous pouvez utiliser la commande ^|\obeyspaces| (\xref{\obeyspaces}) pour que
-\TeX\ prenne en compte tous les espaces d'une ligne. |\obeylines| et |\obey!-spaces|
-sont souvent utilis\'ees ensemble.
-\example
-\obeylines
-``Beware the Jabberwock, my son!!
-\quad The jaws that bite, the claws that catch!!
-Beware the Jubjub bird, and shun
-\quad The frumious Bandersnatch!!''
-|
-\produces
-\obeylines
-``Beware the Jabberwock, my son!
-\quad The jaws that bite, the claws that catch!
-Beware the Jubjub bird, and shun
-\quad The frumious Bandersnatch!''
-\endexample
-\enddesc
-
-%\secondprinting{\vglue-\baselineskip\vskip0pt}
-
-\begindesc
-\easy\cts slash {}
-\explain
-Cette commande produit un ^{slash} (/) et pr\'evient aussi \TeX\ qu'il peut
-couper la ligne apr\`es le slash, si n\'ecessaire.
-\example
-Her oldest cat, while apparently friendly to most people,
-had a Jekyll\slash Hyde personality when it came to mice.
-|
-\produces
-Her oldest cat, while apparently friendly to most people,
-had a Jekyll\slash Hyde personality when it came to mice.
-\endexample
-\eix^^{coupures de ligne//encouragement ou d\'ecouragement}
-\enddesc
-
-%\secondprinting{\vfill\eject}
-
-
-%==========================================================================
-\subsection {param\`etres de coupure de lignes}
-
-\begindesc
-\bix^^{coupures de ligne//param\`etres affectant les}
-%
-\cts pretolerance {\param{nombre}}
-\cts tolerance {\param{nombre}}
-\explain
-Ces param\`etres d\'eterminent la \minref{m\'ediocrit\'e} que \TeX\ tol\`erera
-sur chaque ligne quand il choisit des coupures de ligne
-pour un paragraphe.
-La m\'ediocrit\'e est une mesure de combien l'espacement inter-mot d\'evie de
-l'id\'eal.
-|\pretolerance| sp\'ecifie la m\'ediocrit\'e tol\'erable pour
-des coupures de ligne sans c\'esure~;
-|\tolerance| sp\'ecifie la m\'ediocrit\'e tol\'erable pour des coupures de ligne
-avec c\'esure.
-La m\'ediocrit\'e tol\'erable peut \^etre d\'epass\'ee de deux fa\c cons~:
-un ligne est trop serr\'ee (les espaces inter-mots sont trop
-petits) ou trop l\^ache (les espaces inter-mots sont trop grands).
-
-\ulist
-\li Si \TeX\ doit faire une ligne trop rel\^ach\'ee, il
-se plaint d'un ``underfull hbox''.
-\li Si \TeX\ doit faire une ligne trop resserr\'ee,
-il laisse la ligne d\'epasser dans la marge droite et
-se plaint d'un ``overfull \minref{hbox}''.
-\endulist
-
-\noindent \TeX\ choisit des coupures de ligne selon les \'etapes suivantes~:
-\olist
-\li Il essaye de choisir des coupures de ligne sans c\'esures.
-Si aucune des lignes r\'esultantes n'a de m\'edio\-crit\'e d\'epassant |\pretolerance|,
-les coupures de ligne sont accept\'ees et le paragraphe peut \^etre fait.
-\li Sinon, il essaye un autre jeu de coupures de ligne, cette fois
-en autorisant les c\'esures. Si aucune des lignes r\'esultantes n'a une m\'edio\-crit\'e
-d\'epassant |\tolerance|, le nouveau jeu de coupures de ligne est
-acceptable et le paragraphe peut maintenant \^etre fait.
-\li Autrement, il ajoute ^|\emergencystretch| (voir plus bas) \`a l'\'etire\-ment
-de chaque ligne et essaye encore.
-\li Si aucun de ces essais n'a produit de jeu de coupures de ligne acceptable,
-il fait le paragraphe avec un ou plusieurs ``overfull hbox''
-et s'en plaint.
-\endolist
-
-\PlainTeX\ initialise |\tolerance| \`a $200$ et |\pretolerance| \`a $100$.
-Si vous mettez |\tolerance| \`a $10000$, \TeX\
-devient infiniment tol\'erant et accepte tout espacement, quelque soit sa laideur
-(\`a moins qu'il rencontre un mot qui ne tienne pas sur une ligne, m\^eme avec
-c\'esure). Ainsi en changeant |\tolerance| vous pouvez \'eviter des
-``overfull hbox'' et ``underfull hbox'', mais au prix de mauvais espacements.
-En rendant |\pretolerance| plus grand vous pouvez faire que \TeX\ \'evite les
-c\'esure et s'ex\'ecute aussi plus rapidement,
-mais, encore, au prix d'\'eventuels mauvais espacements.
-Si vous mettez |\pretolerance| \`a $-1$,
-\TeX\ n'essayera m\^eme pas de faire le paragraphe sans c\'esure.
-
-Le param\`etre ^|\hbadness| (\xref \hbadness) d\'etermine le niveau de m\'ediocrit\'e
-que \TeX\ tol\`erera avant de se plaindre, mais |\hbadness| n'affecte pas
-la mani\`ere dont \TeX\ compose votre document.
-Le param\`etre ^|\hfuzz| (\xref \hfuzz) d\'etermine le montant dont
-une hbox peut d\'epasser sa largeur sp\'ecifi\'ee avant que \TeX\ la consid\`ere
-erron\'ee.
-\enddesc
-
-\begindesc
-\cts emergencystretch {\param{dimension}}
-\explain
-En mettant ce param\`etre sup\'erieur \`a z\'ero,
-vous pouvez rendre plus facile \`a \TeX\ la
-composition de votre document sans g\'en\'erer d'``overfull hbox''.
-^^{overfull boxes}
-C'est une meilleur alternative \`a |\tolerance=10000|,
-car cela tend \`a produire des lignes r\'eellement laides.
-Si \TeX\ ne peut pas composer un paragraphe sans d\'epasser ^|\tolerance|,
-il tentera encore, en ajoutant |\emergencystretch| \`a l'\'etirement de chaque
-ligne.
-L'effet du changement est de r\'eduire la m\'ediocrit\'e de chaque ligne,
-autorisant \TeX\ \`a faire des espaces plus larges qu'ils auraient \'et\'e autrement
-et ainsi de choisir des coupures de ligne qui seront aussi
-bons que possible selon les circonstances.
-\enddesc
-
-\begindesc
-\cts looseness {\param{nombre}}
-\explain
-\minrefs{line break}
-Ce param\`etre vous donne un moyen
-de changer le nombre total de lignes dans un paragraphe par rapport \`a celui
-qu'il aurait \'et\'e de mani\`ere optimale.
-|\looseness| est ainsi nomm\'e parce que c'est une mesure de combien perd le
-paragraphe, c'est-\`a-dire, combien d'espace suppl\'ementaire il contient.
-
-Normalement, |\looseness| est \`a $0$ et
-\TeX\ choisit des coupures de ligne selon sa mani\`ere habituelle. Mais si
-|\looseness| est \`a, disons, $3$, \TeX\ fait ainsi~:
-\olist
-\li Il choisit des coupures de ligne normalement, obtenant un paragraphe de $n$ lignes.
-\li Il \'ecarte ces coupures de ligne et
-tente de trouver un nouveau jeu de coupure de ligne
-qui donne le paragraphe en $n+3$ lignes.
-(Sans l'\'etape pr\'ec\'edente, \TeX\ ne saurait pas la valeur de $n$.)
-\li Si l'essai pr\'ec\'edent donne des lignes dont la m\'ediocrit\'e d\'epasse
-|\tol!-er!-ance|,
-^^|\tolerance|
-il tente d'obtenir $n+2$ lignes---et si cela \'echoue aussi,
-$n+1$ lignes, et finalement $n$ lignes encore.
-\endolist
-\noindent
-De m\^eme, si |\looseness| est \`a $-n$,
-\TeX\ tente de faire le paragraphe avec $n$ lignes de moins que la normale.
-Le moyen le plus simple pour \TeX\ de faire un paragraphe plus long d'une ligne est de mettre
-un seul mot sur la ligne en plus. vous pouvez emp\^echer cela en
-mettant un tilde (\xref{@not}) entre les deux derniers mots du paragraphe.
-
-Mettre |\looseness| est le meilleur moyen de forcer un paragraphe
-\`a occuper un nombre de lignes donn\'e.
-Le mettre \`a une valeur n\'egative est pratique quand vous essayez
-d'augmenter la quantit\'e de texte que vous pouvez placer sur une page.
-Similairement, le mettre \`a une valeur positive
-est pratique quand vous essayez de diminuer la quantit\'e de texte sur
-une page.
-
-\TeX\ remet |\looseness| \`a $0$ quand il termine un paragraphe, apr\`es avoir
-coup\'e le paragraphe en lignes.
-Si vous voulez changer le rel\^achement de plusieurs paragraphes, vous devez
-le faire individuellement pour chacun ou mettre le changement dans |\everypar|
-\ctsref\everypar.
-^^|\everypar//pour fixer \b\tt\\looseness\e|
-\enddesc
-
-\begindesc
-\cts linepenalty {\param{nombre}}
-\explain
-\minrefs{line break}
-Ce param\`etre sp\'ecifie les \minref{d\'em\'erites} que \TeX\ r\'epartit pour chaque coupure de ligne
-quand il coupe un paragraphe en lignes.
-La p\'enalit\'e est ind\'epen\-dante d'o\`u la coupure de ligne a lieu.
-Augmenter la valeur
-de ce param\`etre demande \`a \TeX\ d'essayer plus fortement de mettre un paragraphe avec
-un nombre minimum de lignes, m\^eme au co\^ut d'autres consid\'erations esth\'etiques
-comme \'eviter des espacements inter-mots excessivement res\-serr\'es.
-Les d\'em\'erites sont en unit\'es de \minref{m\'ediocrit\'e} au carr\'e, donc
-vous devez assigner une valeur plut\^ot large \`a ce param\`etre (dans les
-milliers) pour qu'elle ait un quelconque effet.
-\PlainTeX\ met |\linepenalty| \`a $10$.
-\enddesc
-
-\begindesc
-\cts adjdemerits {\param{nombre}}
-\explain
-\minrefs{line break}
-^^{c\'esure//p\'enalit\'es pour}
-{\tighten
-Ce param\`etre sp\'ecifie des \minref{d\'em\'erites} additionnels que \TeX\ attache au
-point de coupure entre deux lignes adjacentes qui sont
-``incompatibles visuellement''.
-De telles paires de lignes font qu'un paragraphe appara\^\i t in\'egal.
-Les incompatibilit\'es sont \'evalu\'ees en termes d'\'etroitesse ou de rel\^achement
-de lignes~:
-}
-\olist\compact
-\li Une ligne est resserr\'ee si son \minref{ressort} doit se r\'etr\'ecir d'au moins $50\%$.
-\li Une ligne est d\'ecente si sa m\'ediocrit\'e est de $12$ ou moins.
-\li Une ligne est rel\^ach\'ee si son \minref{ressort} doit s'\'etirer d'au moins $50\%$.
-\li Une ligne est tr\`es rel\^ach\'ee si son ressort doit tellement s'\'etirer
-que sa m\'ediocrit\'e d\'epasse $100$.
-\endolist
-Deux lignes adjacentes sont visuellement incompatibles
-si leurs cat\'ego\-ries ne sont pas adjacentes, c'est-\`a-dire, une ligne resserr\'ee
-est apr\`es une rel\^ach\'ee ou une ligne d\'ecente apr\`es une tr\`es rel\^ach\'ee.
-
-Les d\'em\'erites sont en unit\'es de \minref{m\'ediocrit\'e} au carr\'ee, donc
-vous devez assigner une valeur plut\^ot large \`a ce param\`etre (dans les
-milliers) pour qu'elle ait un quelconque effet.
-\PlainTeX\ met |\adjdemerits| \`a~$10000$.
-\enddesc
-
-\begindesc
-\bix^^{c\'esure//p\'enalit\'es pour}
-\cts exhyphenpenalty {\param{nombre}}
-\explain
-\minrefs{line break}
-Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} que \TeX\ attache \`a un
-point de coupure sur une c\'esure explicite comme celle de
-``helter-skelter''. Augmenter ce param\`etre a l'effet de d\'ecourager
-\TeX\ de finir une ligne sur une c\'esure explicite.
-\PlainTeX\ met |\exhyphenpenalty| \`a $50$.
-\enddesc
-
-\begindesc
-\cts hyphenpenalty {\param{nombre}}
-\explain
-\minrefs{line break}
-Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} que \TeX\ attache \`a un
-point de coupure sur une c\'esure implicite.
-Des c\'esures implicites peuvent survenir du dictionnaire de c\'esure de \TeX\ ou
-de ^{c\'esures optionnelles} que vous avez ins\'er\'e avec |\-|~(\xref{\@minus}).
-^^|-//m\`ene \`a {\tt\\hyphenpenalty}|
-Augmenter ce param\`etre a l'effet de d\'ecourager
-\TeX\ de couper des mots.
-\PlainTeX\ met |\hyphenpenalty| \`a $50$.
-\enddesc
-
-\begindesc
-\cts doublehyphendemerits {\param{nombre}}
-\explain
-\minrefs{line break}
-{\tighten
-Ce param\`etre sp\'ecifie les \minref{d\'em\'erites} additionnels que \TeX\
-attache \`a un point de coupure quand ce point de coupure arrive \`a
-deux lignes cons\'ecu\-tives qui se terminent sur une c\'esure.
-Augmenter la valeur de ce param\`etre d\'ecourage
-\TeX\ de c\'esurer deux lignes \`a suivre.
-Les d\'em\'erites sont en unit\'es de \minref{m\'ediocrit\'e} au carr\'e, donc
-vous devez assigner une valeur plut\^ot large \`a ce param\`etre (dans les
-milliers) pour qu'elle ait un quelconque effet.
-\PlainTeX\ met |\doublehyphendemerits| \`a $10000$.
-}
-\enddesc
-
-\begindesc
-\cts finalhyphendemerits {\param{nombre}}
-\explain
-\minrefs{line break}
-{\tighten
-Ce param\`etre sp\'ecifie les \minref{d\'em\'erites} additionnels que \TeX\
-attache \`a un point de coupure qui fait que l'avant derni\`ere ligne d'un
-paragraphe se termine avec une c\'esure.
-Une telle c\'esure est g\'en\'eralement consid\'er\'ee inesth\'etique
-parce que l'espace blanc \'eventuel provoqu\'e par une derni\`ere ligne courte
-la rend m\'eprisable.
-Augmenter la valeur de ce param\`etre d\'ecourage
-\TeX\ de finir l'avant derni\`ere ligne avec une c\'esure.
-Les d\'em\'erites sont en unit\'es de \minref{m\'ediocrit\'e} au carr\'e, donc
-vous devez assigner une valeur plut\^ot large \`a ce param\`etre (dans les
-milliers) pour qu'elle ait un quelconque effet.
-\PlainTeX\ met |\finalhyphendemerits| \`a $5000$.
-}
-\eix^^{c\'esure//p\'enalit\'es pour}
-\enddesc
-
-\begindesc
-\cts binoppenalty {\param{nombre}}
-\explain
-^^{op\'erateurs}
-Ce param\`etre sp\'ecifie la p\'enalit\'e d'une coupure d'une formule math\'e\-ma\-tique
-apr\`es un op\'erateur binaire quand la formule appara\^\i t dans un paragraphe.
-\PlainTeX\ met |\binoppenalty| \`a $700$.
-\enddesc
-
-\begindesc
-\cts relpenalty {\param{nombre}}
-\explain
-^^{relations}
-Ce param\`etre sp\'ecifie la p\'enalit\'e pour une coupure d'une formule math\'e\-ma\-tique
-apr\`es une relation quand la formule appara\^\i t dans un paragraphe.
-\PlainTeX\ met |\rel!-penal!-ty| \`a~$500$.
-
-\eix^^{coupures de ligne//param\`etres affectant les}
-\enddesc
-
-%==========================================================================
-\subsection {C\'esure}
-
-\begindesc
-\bix^^{c\'esure}
-%
-\easy\ctspecial - \ctsxrdef{@minus}
-\explain
-La commande |\-| ins\`ere une ``c\'esure optionnelle''
-^^{c\'esures optionnelles}
-dans un mot.
-La c\'esure optionnelle autorise \TeX\ de couper le mot \`a cet
-endroit. \TeX\ n'est pas oblig\'e de couper l\`a---il ne le fera
-que s'il le faut. Cette commande est utile quand un mot
-qui appara\^\i t une ou deux fois dans votre document
-doit \^etre coup\'e,
-mais que \TeX\ ne peut pas trouver de point de coupure appropri\'ee de lui-m\^eme.
-\example
-Alice was exceedingly reluctant to shake hands first
-with either Twee\-dle\-dum or Twee\-dle\-dee, for
-fear of hurting the other one's feelings.
-|
-\produces
-Alice was exceedingly reluctant to shake hands first
-with either Twee\-dle\-dum or Twee\-dle\-dee, for
-fear of hurting the other one's feelings.
-\endexample
-\enddesc
-
-\begindesc
-\cts discretionary {\rqbraces{\<pre-break text>}
- \rqbraces{\<post-break text>}
- \rqbraces{\<no-break text>}}
-\explain
-\minrefs{line break}
-^^{c\'esure}
-Cette commande sp\'ecifie une ``coupure optionnelle'', autrement dit,
-un endroit o\`u \TeX\ peut couper une ligne.
-Elle dit aussi \`a \TeX\ quel texte mettre de chaque cot\'e de la coupure.
-\ulist
-\li Si \TeX\ ne doit pas couper l\`a, il utilise le \<no-break text>.
-\li Si \TeX\ doit couper l\`a, il met le \<pre-break text> juste avant
-la coupure et le \<post-break text> juste apr\`es la coupure.
-\endulist
-\noindent
-Comme avec |\-|,
-\TeX\ n'est pas oblig\'e de couper une ligne sur une coupure optionnelle.
-En fait, |\-| est normalement \'equivalent \`a |\discretionary!allowbreak{-}{}{}|.
-
-Parfois, \TeX\ ins\`ere des coupures optionnelles de lui-m\^eme.
-Par ex\-emple, il ins\`ere |\discretionary!allowbreak{}{}{}| apr\`es
-une c\'esure explicite ou un tiret.
-
-{\hyphenchar\tentt=-1 % needed to avoid weirdnesses
-\example
-% An ordinary discretionary hyphen (equivalent to \-):
-\discretionary{-}{}{}
-% A place where TeX can break a line, but should not
-% insert a space if the line isn't broken there, e.g.,
-% after a dash:
-\discretionary{}{}{}
-% Accounts for German usage: `flicken', but `flik-
-% ken':
-German ``fli\discretionary{k-}{k}{ck}en''
-|
-^^{c\'esure//allemande}
-\endexample}
-
-\enddesc
-
-\begindesc
-\cts hyphenation {\rqbraces{\<mot>\thinspace\vs\ $\ldots$\ \vs
- \thinspace\<mot>}}
-\explain
-\TeX\ garde un dictionnaire des exceptions de ses r\`egles de ^{c\'esure}.
-Chaque entr\'ee du dictionnaire indique comment un mot particulier doit
-\^etre coup\'e.
-La commande |\hyphenation| ajoute des mots au dictionnaire.
-Son argument est une suite de mots s\'epar\'ee par des blancs.
-Les lettres majuscules et minuscules sont \'equivalentes.
-Les c\'esures dans chaque mot indiquent les endroits
-o\`u \TeX\ peut couper ce mot.
-Un mot sans c\'esure ne sera jamais coup\'e.
-Dans tous les cas, vous pouvez outrepasser le dictionnaire de c\'esure en
-utilisant |\-| pour une occurrence particuli\`ere d'un mot.
-Vous devez produire toutes les formes grammaticales d'un mot
-que vous voulez que \TeX\ coupe, c'est-\`a-dire, le singulier et le pluriel.
-
-\example
-\hyphenation{Gry-phon my-co-phagy}
-\hyphenation{man-u-script man-u-scripts piz-za}
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts uchyph {\param{nombre}}
-\explain
-Une valeur positive de |\uchyph| (c\'esure majuscule)
-permet d\'ecouper des mots, comme des noms propres,
-qui commencent par une lettre capitale.
-Une valeur \`a z\'ero ou n\'egative
-inhibe de telle coupure. \PlainTeX\ met |\uchyph| \`a $1$,
-donc \TeX\ essaye normalement de couper les mots qui commencent par une lettre capital.
-\enddesc
-
-\begindesc
-\cts showhyphens {\rqbraces{\<mot>\thinspace\vs\ $\ldots$\ \vs
- \thinspace\<mot>}}
-\explain
-Cette commande n'est habituellement pas utilis\'ee dans des documents,
-mais vous pouvez l'utiliser sur votre terminal pour voir comment \TeX\
-couperait certains jeux de mots al\'eatoires.
-Les mots, avec les coupures visibles, apparaissent dans le log et sur
-votre terminal. Vous obtiendrez une plainte \`a propos d'une ``underfull
-hbox''---ignorez la.
-\example
-\showhyphens{threshold quizzical draughts argumentative}
-|
-\logproduces
-Underfull \hbox (badness 10000) detected at line 0
-[] \tenrm thresh-old quizzi-cal draughts ar-gu-men-ta-tive
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts language {\param{number}}
-\explain
-Des langages diff\'erents ont diff\'erents jeux de r\`egles de c\'esure.
-Ce para\-m\`etre d\'etermine le jeu de ^{r\`egles de c\'esure} que \TeX\ utilise.
-En changeant |\language| vous pouvez obtenir que \TeX\
-coupe des portions de texte ou des documents entiers en accord avec les
-r\`egles de c\'esure appropri\'ees \`a un langage particulier.
-^^{langues europ\'eennes}
-Votre ^{support local} sur \TeX\ vous dira si des
-jeux additionnels de r\`egles de c\'esure sont accessibles (derri\`ere celui
-pour l'anglais)
-et quelles sont les valeurs appropri\'ees de |\language|.
-La valeur par d\'efaut de |\language| est $0$.
-
-\TeX\ met le langage courant \`a $0$ au d\'ebut de tous les paragraphes,
-et compare |\language| au langage courant \`a chaque fois qu'il ajoute
-un caract\`ere au paragraphe courant.
-Si ce n'est pas le m\^eme, \TeX\ ajoute un ^{\elementextra} indiquant
-que le langage change.
-Cet \'el\'ement extraordinaire est la preuve pour les prochaines ex\'ecutions que les r\`egles de langage
-peuvent changer.
-\enddesc
-
-\begindesc
-\cts setlanguage {\<nombre>}
-\explain
-Cette commande met le langage courant \`a \<nombre>
-en ins\'erant le m\^eme \'el\'ement extraordinaire que vous obtiendrez en changeant
-^|\language|.
-En outre, elle ne change pas la valeur de |\language|.
-\enddesc
-
-\begindesc
-\cts lefthyphenmin {\param{nombre}}
-\cts righthyphenmin {\param{nombre}}
-\explain
-Ces param\`etres sp\'ecifient les plus petits fragments de mots que \TeX\ autorise
-\`a gauche et \`a droite d'un mot coup\'e.
-\PlainTeX\ les initialise par d\'efaut \`a $2$ et $3$ respectivement~;
-ce sont les valeurs recommand\'ees pour l'anglais.
-\enddesc
-
-\begindesc
-\bix^^{polices//caract\`eres de c\'esure pour}
-\cts hyphenchar {\<police>\param{nombre}}
-\explain
-\TeX\ n'utilise pas n\'ecessairement le caract\`ere `-' aux points de c\'esure.
-A la place, il utilise le |\hyphenchar| de la police courante, qui est
-habituellement `-' mais pas n\'ecessairement. Si une police a une valeur
- |\hyphenchar| n\'egative,
-\TeX\ ne coupe pas de mots dans cette police.
-
-Notez que \<police> est une s\'equence de contr\^ole
-qui nomme une police, pas un \<nom de police> qui nomme des fichiers de
-police.
-Attention~:
-un assignement \`a |\hyphenchar| n'est \emph{pas} r\'einitialis\'e \`a la fin
-d'un groupe.
-Si vous voulez changer |\hyphenchar| localement, vous devrez
-sauvegarder et restaurer sa valeur originale explicitement.
-
-\example
-\hyphenchar\tenrm = `-
- % Set hyphenation for tenrm font to `-'.
-\hyphenchar\tentt = -1
- % Don't hyphenate words in font tentt.
-|
-\endexample
-\enddesc
-
-\begindesc
-\cts defaulthyphenchar {\param{nombre}}
-\explain
-Quand \TeX\ lit le fichier de m\'etriques
-^^{fichiers de m\'etriques//tiret de c\'esure par d\'efaut dans}
-pour une police en r\'eponse \`a une commande
-^|\font|, il met le ^|\hyphenchar| de la police dans
-|\default!-hyphen!-char|.
-Si la valeur de |\default!-hyphen!-char| n'est
-pas dans la fourchette $0$--$255$ quand vous chargez une police,
-\TeX\ ne coupera aucun mot dans cette police \`a moins que vous
-outrepassiez la d\'ecision en mettant le |\hyphenchar| de la police apr\`es.
-\PlainTeX\ met |\default!-hyphen!-char| \`a $45$, le code \ascii\
-pour `|-|'.
-\example
-\defaulthyphenchar = `-
- % Assume `-' is the hyphen, unless overridden.
-\defaulthyphenchar = -1
- % Don't hyphenate, unless overridden.
-|
-\endexample
-
-\eix^^{polices//caract\`eres de c\'esure pour}
-\enddesc
-
-\see |\pretolerance| (\xref \pretolerance).
-\eix^^{c\'esure}
-\eix^^{coupures de ligne}
-
-%==========================================================================
-\section {Ent\^etes de section, listes et th\'eor\`emes}
-
-\begindesc
-^^{ent\^etes de section}
-\easy\ctspecial beginsection {\<argument>\thinspace{\bt\\par}}
- \ctsxrdef{@beginsection}
-\explain
-Vous pouvez utiliser cette commande pour d\'ebuter une subdivision majeure de votre document.
-\<argument> est pr\'evu pour servir de titre de section.
-|\beginsection| amplifie \<argument>
-par de l'espace vertical suppl\'ementaire et le met en
-police grasse, justifi\'e \`a gauche.
-Vous pouvez produire le |\par| qui termine \<argument> avec une ligne blanche.
-\let\message = \gobble % Don't bother to tell us about Pig and Pepper.
-\example
-$\ldots$ till she had brought herself down to nine
-inches high.
-
-\beginsection Section 6. Pig and Pepper
-
-For a minute or two she stood looking at the house $\ldots$
-|
-\produces
-$\ldots$ till she had brought herself down to nine
-inches high.
-
-\beginsection Section 6. Pig and Pepper
-
-For a minute or two she stood looking at the house $\ldots$
-\endexample
-\enddesc
-
-\begindesc
-\cts item {\<argument>}
-\cts itemitem {\<argument>}
-\explain
-^^{listes d'\'el\'ements}
-Cette commande est utile pour cr\'eer des ^{listes d'\'el\'ements}. Tout le paragraphe
-suivant \<argument> est indent\'e de |\parindent|
-^^|\parindent//indentation pour listes d'\'el\'ements|
-(pour |\item|) ou par |2\parindent| (pour |\itemitem|).
-(Voir \xrefpg{\parindent} pour une explication de |\parindent|.)
-Ensuite \<argument>,
-suivi par un espace demi-cadratin, est plac\'e juste \`a
-la gauche du texte de la
-premi\`ere ligne du paragraphe pour qu'il tombe avec l'indentation du paragraphe
-comme sp\'ecifi\'e par |\parindent|.
-
-Si vous voulez inclure plus d'un
-paragraphe dans un \'el\'ement, mettez |\item{}| devant les paragraphes additionnels.
-\example
-{\parindent = 18pt
-\noindent Here is what we require:
-\item{1.}Three eggs in their shells,
-but with the yolks removed.
-\item{2.}Two separate glass cups containing:
-\itemitem{(a)}One-half cup {\it used} motor oil.
-\itemitem{(b)}One cup port wine, preferably French.
-\item{3.}Juice and skin of one turnip.}
-|
-\produces
-{\parindent = 18pt
-\noindent Here is what we require:
-\item{1.}Three eggs in their shells,
-but with the yolks removed.
-\item{2.}Two separate glass cups containing:
-\itemitem{(a)}One-half cup {\it used} motor oil.
-\itemitem{(b)}One cup port wine, preferably French.
-\item{3.}Juice and skin of one turnip.}
-\endexample
-\enddesc
-
-\begindesc
-\easy\ctspecial proclaim {\<argument>{\tt.}\vs\thinspace
- \<texte g\'en\'eral>\thinspace{\bt\\par}}
- \ctsxrdef{@proclaim}
-\explain
-^^{th\'eor\`emes}
-^^{lemmes}
-^^{hypoth\`eses}
-Cette commande ``proclame'' un th\'eor\`eme, un lemme, une hypoth\`ese, etc.
-Elle met \<argument> en police grasse et le paragraphe suivant en
-italique. \<arg\-u\-ment> doit \^etre suivi par un point et un token espace,
-qui servent \`a s\'eparer \<argument> du \<texte g\'en\'eral>.
-\<texte g\'en\'eral> est constitu\'e du texte jusqu'\`a la fronti\`ere du paragraphe suivant,
-sauf que vous pouvez inclure des paragraphes multiples en les mettant
-entre accolades et terminer un paragraphe apr\`es l'accolade droite fermante.
-\example
-\proclaim Theorem 1.
-What I say is not to be believed.
-
-\proclaim Corollary 1. Theorem 1 is false.\par
-|
-\produces
-\proclaim Theorem 1.
-What I say is not to be believed.
-
-\proclaim Corollary 1. Theorem 1 is false.\par
-\endexample
-\enddesc
-
-\enddescriptions
-\endchapter
-\byebye
-
+la largeur habituelle des lignes dans un paragraphe commen\c cant \`a la +marge gauche. Beaucoup de commandes \TeX emploient +implicitement la valeur de |\hsize|, comme par exemple, +|\center!-line| (\xref{\centerline}) et |\hrule| (\xref{\hrule}). En changeant le |\hsize| dans un +groupe vous pouvez changer la largeur des constructions produites par de +telles commandes. + +Si vous placez |\hsize| dans un \minref{vbox} qui contient du texte, le +vbox aura la largeur que vous aurez donn\'ee au |\hsize|. +^^{vbox//largeur d\'etermin\'ee par \b\tt\\hsize\e} + +\PlainTeX\ fixe |\hsize| \`a |6.5in|. + +\example +{\hsize = 3.5in % Set this paragraph 3.5 inches wide. +The hedgehog was engaged in a fight with another hedgehog, +which seemed to Alice an excellent opportunity for +croqueting one of them with the other.\par}% +| +\produces +{\hsize = 3.5in +The hedgehog was engaged in a fight with another hedgehog, +which seemed to Alice an excellent opportunity for croqueting +one of them with the other.\par}% + +\doruler{\8\8\8\tick\1\tick\2\tick\1\tick\3}{3.5}{in} +\nextexample +\leftline{\raggedright\vtop{\hsize = 1.5in +Here is some text that we put into a paragraph that is +an inch and a half wide.}\qquad +\vtop{\hsize = 1.5in Here is some more text that +we put into another paragraph that is an inch and a +half wide.}} +| +\produces +\leftline{\raggedright\vtop{\hsize = 1.5in +Here is some text that we put into a paragraph that is +an inch and a half wide.}\qquad +\vtop{\hsize = 1.5in Here is some more text that +we put into another paragraph that is an inch and a +half wide.}} +\endexample +\enddesc + +\begindesc +\easy\cts narrower {} + +\explain +^^{paragraphes//\'etroit} +Cette commande donne des paragraphes plus \'etroits, en augmentant les marges +gauches et droites de |\parindent|, l'^{indentation} de paragraphe +courante. Elle r\'ealise ceci en augmentant |\leftskip| et |\rightskip| de +|\parindent|. Normalement vous placez |\narrower| au d\'ebut d'un +\minref{groupe} contenant les paragraphes que vous voulez rendre plus +\'etroits. Si vous oubliez d'enfermer |\narrower| dans un groupe, vous +constaterez que tout le reste de votre document aura des paragraphes +\'etroits. + +|\narrower| n'affecte que les paragraphes qui terminent apr\`es que vous +l'ayez appel\'e. Si vous terminez un groupe |\narrower| avant d'avoir fini un +paragraphe, \TeX\ ne rendra pas ce paragraphe plus \'etroit. + +\example +{\parindent = 12pt \narrower\narrower\narrower +This is a short paragraph. Its margins are indented +three times as much as they would be +had we used just one ``narrower'' command.\par} +| +\produces +{\parindent = 12pt \narrower\narrower\narrower +This is a short paragraph. Its margins are indented +three times as much as they would be +had we used just one ``narrower'' command.\par} +\endexample\enddesc + +\begindesc +\cts leftskip {\param{ressort}} +\cts rightskip {\param{ressort}} + +\explain +Ces param\`etres indiquent \`a \TeX\ combien de ressort placer aux extr\'emit\'es +gauches et droites de chaque ligne du paragraphe courant. Nous n'expli\-% +querons que le fonctionnement de |\leftskip| puisque |\rightskip| est +similaire. + +^^{indentation} Vous pouvez augmenter la marge gauche en pla\c cant +|\leftskip| \`a une \minref{dimension} diff\'erente de z\'ero. Si vous donnez \`a +|\leftskip| un certain \'etirement, vous pouvez produire du texte ^{cadr\'e \`a +droite}, c'est-\`a-dire, du texte qui a une marge gauche in\'egale. + +Normalement, vous devriez enfermer tout \minref{assignement} \`a |\leftskip| +dans un \minref{groupe} avec le texte affect\'e afin d'emp\^echer son effet de +continuer jusqu'\`a la fin de votre document. Cependant, il est injustifi\'e de +changer la valeur de |\leftskip| \`a l'int\'erieur d'un groupe qui est, lui +aussi, contenu dans un paragraphe---la valeur de |\leftskip| \`a la +\emph{fin} d'un paragraphe est celle qui d\'etermine comment \TeX\ coupera le +paragraphe en lignes. \minrefs{line break} + +\example +{\leftskip = 1in The White Rabbit trotted slowly back +again, looking anxiously about as it went, as if it had +lost something. {\leftskip = 10in % has no effect +It muttered to itself, ``The Duchess!! The Duchess!! She'll +get me executed as sure as ferrets are ferrets!!''}\par}% +| +\produces +{\leftskip = 1in The White Rabbit trotted slowly back +again, looking anxiously about as it went, as if it had +lost something. {\leftskip = 10in % has no effect +It muttered to itself, ``The Duchess! The Duchess! +She'll get me executed as sure as ferrets are ferrets!''}\par}% +\nextexample +\pretolerance = 10000 % Don't hyphenate. +\rightskip = .5in plus 2em +The White Rabbit trotted slowly back again, looking +anxiously about as it went, as if it had lost something. +It muttered to itself, ``The Duchess!! The Duchess!! She'll +get me executed as sure as ferrets are ferrets!!'' +| +\produces +\pretolerance = 10000 % Don't hyphenate. +\rightskip = .5in plus 2em +The White Rabbit trotted slowly back again, looking +anxiously about as it went, as if it had lost something. +It muttered to itself, ``The Duchess! The Duchess! She'll +get me executed as sure as ferrets are ferrets!'' +\endexample +\enddesc + +\begindesc +\easy\cts raggedright {} +\cts ttraggedright {} + +\explain +Ces commandes font que \TeX\ compose votre document +``^{cadr\'e \`a gauche}''. Les espaces inter-mots ont tous +leur taille naturelle, c'est-\`a-dire, ils ont tous la m\^eme largeur et +ne s'\'etirent ni se r\'etr\'ecissent. +En cons\'equence, leur marge droite n'est g\'en\'eralement pas la m\^eme. +L'alternative, qui est le comportement par d\'efaut de \TeX, est de composer +votre document justifi\'e, +^^{justification} +c'est-\`a-dire, avec des marges gauches et droites uniformes. +Dans du texte justifi\'e, les espaces inter-mots sont \'etir\'es pour +aligner des marges de droite. +Certains typographes pr\'ef\`erent cadrer \`a gauche parce que +cela \'evite des ``rivi\`eres'' distractives d'espace sur la page imprim\'ee. +\minrefs{justified text} + +Vous devez utiliser la commande |\ttraggedright| pour composer du texte dans +une police non proportionnelle et la commande |\raggedright| command pour +composer de texte dans toutes les autres polices. + +La plupart du temps vous voudrez appliquer ces commandes \`a un document entier, +mais vous pouvez limiter leurs effets en les englobant +dans un \minref{groupe}. +\example +\raggedright ``You couldn't have it if you {\it did\/} +want it,'' the Queen said. ``The rule is, jam tomorrow +and jam yesterday---but never jam {\it today\/}.'' +``It {\it must\/} come sometimes to `jam today,% +thinspace'' Alice objected. ``No, it can't'', said the +Queen. ``It's jam every {\it other\/} day: today isn't +any {\it other\/} day.'' +| +\produces +\raggedright ``You couldn't have it if you {\it did\/} +want it,'' the Queen said. ``The rule is, jam tomorrow +and jam yesterday---but never jam {\it today\/}.'' +``It {\it must\/} come sometimes to `jam today,% +'\thinspace'' Alice objected. ``No, it can't'', said the +Queen. ``It's jam every {\it other\/} day: today isn't +any {\it other\/} day.'' +\endexample +\enddesc + +\begindesc +\cts hang {} +\explain +Cette commande indente la seconde ligne et les suivantes d'un paragraphe +de |\parindent|, l'^{indentation} du paragraphe. +(\xref{\parindent}). +Puisque la premi\`ere ligne est d\'ej\`a indent\'ee par |\parindent| +(\`a moins que vous ayez supprim\'e l'indentation avec |\noindent|), le +paragraphe entier appara\^\i t \^etre indent\'e de |\parindent|. + +\example +\parindent=24pt \hang ``I said you {\it looked} like an +egg, Sir,'' Alice gently explained to Humpty Dumpty. ``And +some eggs are very pretty, you know,'' she added. +| +\produces +\parindent=24pt \hang ``I said you {\it looked} like an +egg, Sir,'' Alice gently explained to Humpty Dumpty. ``And +some eggs are very pretty, you know,'' she added. +\endexample +\enddesc + +\begindesc +\cts hangafter {\param{nombre}} +\cts hangindent {\param{dimension}} + +\explain +Ces deux \minref{param\`etre}s associ\'es +sp\'ecifient l'``^{indentation r\'emanente}'' pour un paragraphe. +L'indentation r\'emanente indique \`a \TeX\ que certaines lignes +du paragraphe doivent +\^etre indent\'ees et que les lignes restantes doivent avoir leur largeur normale +^^{indentation} +|\hangafter| d\'etermine quelles lignes +sont indent\'ees, tandis que |\hangindent| d\'etermine le montant d'inden\-tation +et si elle appara\^\i t sur la gauche ou sur la droite~: + +\ulist +\li Soit $n$ la valeur de |\hangafter|. Si $n < 0$, +Les $-n$ premi\`eres lignes du paragraphe seront indent\'ees. +Si $n\ge0$, toutes sauf les $n$ premi\`eres lignes du paragraphe seront +indent\'ees. + +\li Soit $x$ la valeur de |\hangindent|. +Si $x\ge0$, les lignes seront indent\'ees +de $x$ \`a gauche. Si $x<0$, les lignes seront indent\'ees de $-x$ sur +la droite. +\endulist + +Quand vous sp\'ecifiez de l'indentation r\'emanente, elle ne s'applique +qu'au paragraphe suivant (si vous \^etes en mode vertical) ou au +paragraphe courant (si vous \^etes en mode horizontal). +\TeX\ utilise les valeurs de |\hangafter| et |\hangindent| \`a la fin d'un +paragraphe, quand il coupe ce paragraphe en lignes.\minrefs{line +break} + +\`A la diff\'erence de la plupart des autres param\`etres de mise en forme de paragraphe, +|\hangafter| et |\hangindent| sont r\'einitialis\'es +au d\'ebut de chaque paragraphe, soit, +$1$ pour |\hangafter| et $0$ pour |\hangindent|. +Si vous voulez composer une suite de paragraphes avec de l'indentation r\'emanente, +utilisez |\everypar| (\xref{\everypar}). +^^|\everypar//pour indentation r\'emanente| +Si vous sp\'ecifiez |\hangafter| et |\hangindent| de m\^eme que ^|\parshape|, +\TeX\ ignorera |\hangafter| et |\hangindent|. + +\example +\hangindent=6pc \hangafter=-2 +This is an example of a paragraph with hanging indentation. +In this case, the first two lines are indented on the left, +but after that we return to unindented text. +| +\produces +\hangindent=6pc \hangafter=-2 +This is an example of a paragraph with hanging indentation. +In this case, the first two lines are indented on the left, +but after that we return to unindented text. +\nextexample +\hangindent=-6pc \hangafter=1 +This is another example of a paragraph with hanging +indentation. Here, all lines after the first have been +indented on the right. The first line, on the other +hand, has been left unindented. +| +\produces +\hangindent=-6pc \hangafter=1 +This is another example of a paragraph with hanging +indentation. Here, all lines after the first have been +indented on the right. The first line, on the other +hand, has been left unindented. +\endexample +\enddesc + +\margin{{\tt\\textindent} has been moved to earlier in this section.} + +\begindesc +\cts parshape {$n\; i_1 l_1\; i_2 l_2\; \ldots \;i_n l_n$} +\explain +Cette commande sp\'ecifie le gabarit des $n$ premi\`eres lignes d'un para\-graphe. +Le prochain si vous \^etes en mode vertical et le paragraphe courant si vous +\^etes en mode horizontal. +Les $i$ et les $l$ sont toutes des dimensions. La premi\`ere ligne est indent\'ee de +$i_1$ et a une longueur de $l_1$, la seconde ligne est indent\'ee de $i_2$ et a +une longueur de $l_2$, et ainsi de suite. +si le paragraphe a plus de $n$ lignes, la derni\`ere paire indentation\slash +longueur est utilis\'ee pour les autres lignes. +Pour parachever des effets sp\'eciaux comme celui montr\'e ici, vous devrez +normalement faire beaucoup d'essais, ins\'erer des cr\'enages ici et l\`a et +choisir votre mot pour remplir le gabarit. + +|\parshape|, comme ^|\hangafter| et ^|\hangindent|, n'est effectif que pour +un paragraphe. +Si vous sp\'ecifiez |\hangafter| et |\hangindent| de m\^eme que |\par!-shape|, +\TeX\ ignorera ^|\hangafter| et ^|\hangindent|. +\ifodd\pageno\vfill\eject\fi % so the wineglass is on a single page. + +\example +% A small font and close interline spacing make this work +\smallskip\font\sixrm=cmr6 \sixrm \baselineskip=7pt +\fontdimen3\font = 1.8pt \fontdimen4\font = 0.9pt +\noindent \hfuzz 0.1pt +\parshape 30 0pt 120pt 1pt 118pt 2pt 116pt 4pt 112pt 6pt +108pt 9pt 102pt 12pt 96pt 15pt 90pt 19pt 84pt 23pt 77pt +27pt 68pt 30.5pt 60pt 35pt 52pt 39pt 45pt 43pt 36pt 48pt +27pt 51.5pt 21pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt +16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt +53pt 14.6pt 48pt 24pt 45pt 30.67pt 36.5pt 51pt 23pt 76.3pt +Les vins de France et de Californie semblent \^etre +les plus connus, mais ne sont pas les seuls bons vins. +Les vins espagnols sont souvent sous-estim\'es, +et des assez vieux peu\-vent \^etre disponibles \`a des +prix raisonnables. Pour les vins espagnols, le mill\'esime +n'est pas important, mais le climat de la r\'egion de +Bordeaux varie selon les ann\'ees. Seuls certains sont +bons. Ceux que +vo\kern -.1pt us de\kern -.1pt v\kern -.1pt ez +noter tr\`es tr\`es bons~: +1962, 1964, 1966. 1958, 1959, 1960, 1961, 1964, 1966 sont de bons crus +californiens. \`A boire avec mod\'eration~! +| +%\margin{Wineglass text replaced because of permissions problem.} +\produces +% A small font and close interline spacing make this work +\smallskip\font\sixrm=cmr6 \sixrm \baselineskip=7pt +\fontdimen3\font = 1.8pt \fontdimen4\font = 0.9pt +\noindent \hfuzz 0.1pt +\parshape 30 0pt 120pt 1pt 118pt 2pt 116pt 4pt 112pt 6pt 108pt 9pt 102pt +12pt 96pt 15pt 90pt 19pt 84pt 23pt 77pt 27pt 68pt 30.5pt 60pt 35pt 52pt +39pt 45pt 43pt 36pt 48pt 27pt 51.5pt 21pt 53pt 16.75pt 53pt 16.75pt +53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt +53pt 16.75pt 53pt 14.6pt 48pt 24pt 45pt 30.67pt 36.5pt 51pt 23pt 76.3pt +Les vins de France et de Californie semblent \^etre +les plus connus, mais ne sont pas les seuls bons vins. +Les vins espagnols sont souvent sous-estim\'es, +et des assez vieux peu\-vent \^etre disponibles \`a des +prix raisonnables. Pour les vins espagnols, le mill\'esime +n'est pas important, mais le climat de la r\'egion de +Bordeaux varie selon les ann\'ees. Seuls certains sont +bons. Ceux que +vo\kern -.1pt us de\kern -.1pt v\kern -.1pt ez +noter tr\`es tr\`es bons~: +1962, 1964, 1966. 1958, 1959, 1960, 1961, 1964, 1966 sont de bons crus +californiens. \`A boire avec mod\'eration~! \endexample +\eix^^{indentation} +\enddesc + +\begindesc +\cts prevgraf {\param{nombre}} +\explain +En mode horizontal, ce param\`etre sp\'ecifie le +nombre de lignes dans le paragraphe en cours~; en mode vertical, +il sp\'ecifie le nombre de lignes dans le paragraphe pr\'ec\'edent. +\TeX\ ne prend en compte |\prevgraf| qu'apr\`es avoir fini de couper du texte +en ligne, c'est-\`a-dire, sur un affichage math\'ematique ou \`a la fin d'un +paragraphe. +Voir la \knuth{page~103}{121} pour plus de d\'etails \`a son propos. +\enddesc + +\begindesc +\cts vadjust {\rqbraces{\<mat\'eriel en mode vertical>}} +\explain +Cette commande ins\`ere le \<mat\'eriel en mode vertical> sp\'ecifi\'e juste apr\`es +la ligne de sortie contenant la position o\`u la commande se trouve. +^^{listes verticales//ins\'erer dans des paragraphes} +Vous pouvez l'utiliser, par exemple, pour provoquer un saut de page ou +ins\'erer de l'espace suppl\'ementaire apr\`es une certaine ligne. + +\example +Some of these words are \vadjust{\kern8pt\hrule} to be +found above the line and others are to be found below it. +| +\produces +Some of these words are \vadjust{\kern8pt +\hbox to \hsize{\hfil\vbox{\advance\hsize by -\parindent +\hrule width \hsize}}} +to be found above the line and others are to be found below it. +\endexample +\enddesc + +\see |\parindent| (\xref\parindent), +|\parskip| (\xref\parskip) ainsi que |\every!-par| (\xref\everypar). +\eix^^{coupures de ligne//et formation de paragraphe} +\eix^^{paragraphes//formation} + +%========================================================================== +\section {coupures de lignes} + +%========================================================================== +\subsection {Encourager ou d\'ecourager les coupures de ligne} + +\begindesc +\bix^^{coupures de ligne} +\bix^^{coupures de ligne//encouragement ou d\'ecouragement} +\ctspecial break {} \xrdef{hbreak} +\explain +Cette commande force une coupure de ligne, +\`a moins que vous fassiez quelque chose pour remplir la ligne, +Vous recevrez vraisemblablement une plainte ``underfull hbox''. +|\break| peut aussi \^etre utilis\'e en mode vertical. +\example +Fill out this line\hfil\break and start another one.\par +% Use \hfil here to fill out the line. +This line is underfull---we ended it\break prematurely. +% This line causes an `underfull hbox' complaint. +| +\produces +\hbadness = 10000 % avoid hbadness message +Fill out this line\hfil\break and start another one.\par +% Use \hfil here to fill out the line. +This line is underfull---we ended it\break prematurely. +% This line causes an `underfull hbox' complaint. +\endexample\enddesc + +\begindesc +\ctspecial nobreak {} \xrdef{hnobreak} +\explain +Cette commande emp\^eche une coupure de ligne l\`a o\`u elle +devrait se faire normalement. +|\nobreak| peut aussi \^etre utilis\'ee en mode vertical. +\example +Sometimes you'll encounter a situation where +a certain space\nobreak\qquad must not get lost. +| +\produces +Sometimes you'll encounter a situation where +a certain space\nobreak\qquad must not get lost. +\endexample +\enddesc + +\begindesc +\ctspecial allowbreak {} \xrdef{hallowbreak} +\explain +Cette commande demande \`a \TeX\ d'autoriser une coupure de ligne l\`a o\`u elle +n'arriverait pas normalement. +Elle est plus souvent utile dans une formule math\'ematique, car \TeX\ est +r\'eticent \`a couper de telles lignes. ^^{coupures de ligne//dans des formules math\'ematiques} +|\allowbreak| peut aussi \^etre utilis\'ee en mode vertical. +\example +Under most circumstances we can state with some confidence +that $2+2\allowbreak=4$, but skeptics may disagree. +\par For such moronic automata, it is not difficult to +analyze the input/\allowbreak output behavior in the limit. +| +\produces +Under most circumstances we can state with some confidence +that $2+2\allowbreak=4$, but skeptics may disagree. +\par For such moronic automata, it is not difficult to +analyze the input/\allowbreak output behavior in the limit. +\endexample\enddesc + +\begindesc +\ctspecial penalty {\<nombre>} \xrdef{hpenalty} +\explain +Cette commande produit un \'el\'ement de \minref{p\'enalit\'e}. +L'\'el\'ement de p\'enalit\'e rend \TeX\ plus ou moins d\'esireux de couper une ligne +\`a l'endroit o\`u cet \'el\'ement est plac\'e. +Une p\'enalit\'e n\'egative, c'est-\`a-dire, un bonus, encourage une coupure de ligne~; +une p\'enalit\'e positive d\'ecourage une coupure de ligne. +Une p\'enalit\'e de $10000$ ou plus emp\^eche une coupure quelle qu'elle soit, +tandis qu'une p\'enalit\'e de $-10000$ ou moins force une coupure. +|\penalty| peut aussi \^etre utilis\'ee en mode vertical. +%\secondprinting{\vfill\eject} +\example +\def\break{\penalty -10000 } % as in plain TeX +\def\nobreak{\penalty 10000 } % as in plain TeX +\def\allowbreak{\penalty 0 } % as in plain TeX +| +\endexample +\enddesc + +{\vglue-\baselineskip\vskip0pt} +\begindesc +\cts obeylines {} +\explain +\TeX\ normalement traite une fin de ligne comme un espace. +|\obeylines| demande \`a \TeX\ de traiter chaque fin de ligne comme +une fin de paragraphe, for\c cant ainsi une coupure de ligne. +|\obeylines| est souvent utile quand vous composez un po\`eme ou +un programme informatique. +^^{vers, composer des}^^{po\'esie, composer de la}^^{programmes informatiques, composer des} +Si quelques lignes sont plus longues que la longueur de ligne r\'eelle +(|\hsize|\tminus|\parindent|), +sinon, +vous aurez une coupure de ligne suppl\'ementaire dans ces lignes. + +Parce que \TeX\ ins\`ere le ressort |\parskip| (\xref\parskip) +entre des lignes contr\^ol\'ees par |\obeylines| (puisqu'il pense que chaque +ligne est un paragraphe), vous devrez normalement mettre |\parskip| \`a z\'ero +quand vous utiliserez |\obeylines|. + +Vous pouvez utiliser la commande ^|\obeyspaces| (\xref{\obeyspaces}) pour que +\TeX\ prenne en compte tous les espaces d'une ligne. |\obeylines| et |\obey!-spaces| +sont souvent utilis\'ees ensemble. +\example +\obeylines +``Beware the Jabberwock, my son!! +\quad The jaws that bite, the claws that catch!! +Beware the Jubjub bird, and shun +\quad The frumious Bandersnatch!!'' +| +\produces +\obeylines +``Beware the Jabberwock, my son! +\quad The jaws that bite, the claws that catch! +Beware the Jubjub bird, and shun +\quad The frumious Bandersnatch!'' +\endexample +\enddesc + +%\secondprinting{\vglue-\baselineskip\vskip0pt} + +\begindesc +\easy\cts slash {} +\explain +Cette commande produit un ^{slash} (/) et pr\'evient aussi \TeX\ qu'il peut +couper la ligne apr\`es le slash, si n\'ecessaire. +\example +Her oldest cat, while apparently friendly to most people, +had a Jekyll\slash Hyde personality when it came to mice. +| +\produces +Her oldest cat, while apparently friendly to most people, +had a Jekyll\slash Hyde personality when it came to mice. +\endexample +\eix^^{coupures de ligne//encouragement ou d\'ecouragement} +\enddesc + +%\secondprinting{\vfill\eject} + + +%========================================================================== +\subsection {param\`etres de coupure de lignes} + +\begindesc +\bix^^{coupures de ligne//param\`etres affectant les} +% +\cts pretolerance {\param{nombre}} +\cts tolerance {\param{nombre}} +\explain +Ces param\`etres d\'eterminent la \minref{m\'ediocrit\'e} que \TeX\ tol\`erera +sur chaque ligne quand il choisit des coupures de ligne +pour un paragraphe. +La m\'ediocrit\'e est une mesure de combien l'espacement inter-mot d\'evie de +l'id\'eal. +|\pretolerance| sp\'ecifie la m\'ediocrit\'e tol\'erable pour +des coupures de ligne sans c\'esure~; +|\tolerance| sp\'ecifie la m\'ediocrit\'e tol\'erable pour des coupures de ligne +avec c\'esure. +La m\'ediocrit\'e tol\'erable peut \^etre d\'epass\'ee de deux fa\c cons~: +un ligne est trop serr\'ee (les espaces inter-mots sont trop +petits) ou trop l\^ache (les espaces inter-mots sont trop grands). + +\ulist +\li Si \TeX\ doit faire une ligne trop rel\^ach\'ee, il +se plaint d'un ``underfull hbox''. +\li Si \TeX\ doit faire une ligne trop resserr\'ee, +il laisse la ligne d\'epasser dans la marge droite et +se plaint d'un ``overfull \minref{hbox}''. +\endulist + +\noindent \TeX\ choisit des coupures de ligne selon les \'etapes suivantes~: +\olist +\li Il essaye de choisir des coupures de ligne sans c\'esures. +Si aucune des lignes r\'esultantes n'a de m\'edio\-crit\'e d\'epassant |\pretolerance|, +les coupures de ligne sont accept\'ees et le paragraphe peut \^etre fait. +\li Sinon, il essaye un autre jeu de coupures de ligne, cette fois +en autorisant les c\'esures. Si aucune des lignes r\'esultantes n'a une m\'edio\-crit\'e +d\'epassant |\tolerance|, le nouveau jeu de coupures de ligne est +acceptable et le paragraphe peut maintenant \^etre fait. +\li Autrement, il ajoute ^|\emergencystretch| (voir plus bas) \`a l'\'etire\-ment +de chaque ligne et essaye encore. +\li Si aucun de ces essais n'a produit de jeu de coupures de ligne acceptable, +il fait le paragraphe avec un ou plusieurs ``overfull hbox'' +et s'en plaint. +\endolist + +\PlainTeX\ initialise |\tolerance| \`a $200$ et |\pretolerance| \`a $100$. +Si vous mettez |\tolerance| \`a $10000$, \TeX\ +devient infiniment tol\'erant et accepte tout espacement, quelque soit sa laideur +(\`a moins qu'il rencontre un mot qui ne tienne pas sur une ligne, m\^eme avec +c\'esure). Ainsi en changeant |\tolerance| vous pouvez \'eviter des +``overfull hbox'' et ``underfull hbox'', mais au prix de mauvais espacements. +En rendant |\pretolerance| plus grand vous pouvez faire que \TeX\ \'evite les +c\'esure et s'ex\'ecute aussi plus rapidement, +mais, encore, au prix d'\'eventuels mauvais espacements. +Si vous mettez |\pretolerance| \`a $-1$, +\TeX\ n'essayera m\^eme pas de faire le paragraphe sans c\'esure. + +Le param\`etre ^|\hbadness| (\xref \hbadness) d\'etermine le niveau de m\'ediocrit\'e +que \TeX\ tol\`erera avant de se plaindre, mais |\hbadness| n'affecte pas +la mani\`ere dont \TeX\ compose votre document. +Le param\`etre ^|\hfuzz| (\xref \hfuzz) d\'etermine le montant dont +une hbox peut d\'epasser sa largeur sp\'ecifi\'ee avant que \TeX\ la consid\`ere +erron\'ee. +\enddesc + +\begindesc +\cts emergencystretch {\param{dimension}} +\explain +En mettant ce param\`etre sup\'erieur \`a z\'ero, +vous pouvez rendre plus facile \`a \TeX\ la +composition de votre document sans g\'en\'erer d'``overfull hbox''. +^^{overfull boxes} +C'est une meilleur alternative \`a |\tolerance=10000|, +car cela tend \`a produire des lignes r\'eellement laides. +Si \TeX\ ne peut pas composer un paragraphe sans d\'epasser ^|\tolerance|, +il tentera encore, en ajoutant |\emergencystretch| \`a l'\'etirement de chaque +ligne. +L'effet du changement est de r\'eduire la m\'ediocrit\'e de chaque ligne, +autorisant \TeX\ \`a faire des espaces plus larges qu'ils auraient \'et\'e autrement +et ainsi de choisir des coupures de ligne qui seront aussi +bons que possible selon les circonstances. +\enddesc + +\begindesc +\cts looseness {\param{nombre}} +\explain +\minrefs{line break} +Ce param\`etre vous donne un moyen +de changer le nombre total de lignes dans un paragraphe par rapport \`a celui +qu'il aurait \'et\'e de mani\`ere optimale. +|\looseness| est ainsi nomm\'e parce que c'est une mesure de combien perd le +paragraphe, c'est-\`a-dire, combien d'espace suppl\'ementaire il contient. + +Normalement, |\looseness| est \`a $0$ et +\TeX\ choisit des coupures de ligne selon sa mani\`ere habituelle. Mais si +|\looseness| est \`a, disons, $3$, \TeX\ fait ainsi~: +\olist +\li Il choisit des coupures de ligne normalement, obtenant un paragraphe de $n$ lignes. +\li Il \'ecarte ces coupures de ligne et +tente de trouver un nouveau jeu de coupure de ligne +qui donne le paragraphe en $n+3$ lignes. +(Sans l'\'etape pr\'ec\'edente, \TeX\ ne saurait pas la valeur de $n$.) +\li Si l'essai pr\'ec\'edent donne des lignes dont la m\'ediocrit\'e d\'epasse +|\tol!-er!-ance|, +^^|\tolerance| +il tente d'obtenir $n+2$ lignes---et si cela \'echoue aussi, +$n+1$ lignes, et finalement $n$ lignes encore. +\endolist +\noindent +De m\^eme, si |\looseness| est \`a $-n$, +\TeX\ tente de faire le paragraphe avec $n$ lignes de moins que la normale. +Le moyen le plus simple pour \TeX\ de faire un paragraphe plus long d'une ligne est de mettre +un seul mot sur la ligne en plus. vous pouvez emp\^echer cela en +mettant un tilde (\xref{@not}) entre les deux derniers mots du paragraphe. + +Mettre |\looseness| est le meilleur moyen de forcer un paragraphe +\`a occuper un nombre de lignes donn\'e. +Le mettre \`a une valeur n\'egative est pratique quand vous essayez +d'augmenter la quantit\'e de texte que vous pouvez placer sur une page. +Similairement, le mettre \`a une valeur positive +est pratique quand vous essayez de diminuer la quantit\'e de texte sur +une page. + +\TeX\ remet |\looseness| \`a $0$ quand il termine un paragraphe, apr\`es avoir +coup\'e le paragraphe en lignes. +Si vous voulez changer le rel\^achement de plusieurs paragraphes, vous devez +le faire individuellement pour chacun ou mettre le changement dans |\everypar| +\ctsref\everypar. +^^|\everypar//pour fixer \b\tt\\looseness\e| +\enddesc + +\begindesc +\cts linepenalty {\param{nombre}} +\explain +\minrefs{line break} +Ce param\`etre sp\'ecifie les \minref{d\'em\'erites} que \TeX\ r\'epartit pour chaque coupure de ligne +quand il coupe un paragraphe en lignes. +La p\'enalit\'e est ind\'epen\-dante d'o\`u la coupure de ligne a lieu. +Augmenter la valeur +de ce param\`etre demande \`a \TeX\ d'essayer plus fortement de mettre un paragraphe avec +un nombre minimum de lignes, m\^eme au co\^ut d'autres consid\'erations esth\'etiques +comme \'eviter des espacements inter-mots excessivement res\-serr\'es. +Les d\'em\'erites sont en unit\'es de \minref{m\'ediocrit\'e} au carr\'e, donc +vous devez assigner une valeur plut\^ot large \`a ce param\`etre (dans les +milliers) pour qu'elle ait un quelconque effet. +\PlainTeX\ met |\linepenalty| \`a $10$. +\enddesc + +\begindesc +\cts adjdemerits {\param{nombre}} +\explain +\minrefs{line break} +^^{c\'esure//p\'enalit\'es pour} +{\tighten +Ce param\`etre sp\'ecifie des \minref{d\'em\'erites} additionnels que \TeX\ attache au +point de coupure entre deux lignes adjacentes qui sont +``incompatibles visuellement''. +De telles paires de lignes font qu'un paragraphe appara\^\i t in\'egal. +Les incompatibilit\'es sont \'evalu\'ees en termes d'\'etroitesse ou de rel\^achement +de lignes~: +} +\olist\compact +\li Une ligne est resserr\'ee si son \minref{ressort} doit se r\'etr\'ecir d'au moins $50\%$. +\li Une ligne est d\'ecente si sa m\'ediocrit\'e est de $12$ ou moins. +\li Une ligne est rel\^ach\'ee si son \minref{ressort} doit s'\'etirer d'au moins $50\%$. +\li Une ligne est tr\`es rel\^ach\'ee si son ressort doit tellement s'\'etirer +que sa m\'ediocrit\'e d\'epasse $100$. +\endolist +Deux lignes adjacentes sont visuellement incompatibles +si leurs cat\'ego\-ries ne sont pas adjacentes, c'est-\`a-dire, une ligne resserr\'ee +est apr\`es une rel\^ach\'ee ou une ligne d\'ecente apr\`es une tr\`es rel\^ach\'ee. + +Les d\'em\'erites sont en unit\'es de \minref{m\'ediocrit\'e} au carr\'ee, donc +vous devez assigner une valeur plut\^ot large \`a ce param\`etre (dans les +milliers) pour qu'elle ait un quelconque effet. +\PlainTeX\ met |\adjdemerits| \`a~$10000$. +\enddesc + +\begindesc +\bix^^{c\'esure//p\'enalit\'es pour} +\cts exhyphenpenalty {\param{nombre}} +\explain +\minrefs{line break} +Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} que \TeX\ attache \`a un +point de coupure sur une c\'esure explicite comme celle de +``helter-skelter''. Augmenter ce param\`etre a l'effet de d\'ecourager +\TeX\ de finir une ligne sur une c\'esure explicite. +\PlainTeX\ met |\exhyphenpenalty| \`a $50$. +\enddesc + +\begindesc +\cts hyphenpenalty {\param{nombre}} +\explain +\minrefs{line break} +Ce param\`etre sp\'ecifie la \minref{p\'enalit\'e} que \TeX\ attache \`a un +point de coupure sur une c\'esure implicite. +Des c\'esures implicites peuvent survenir du dictionnaire de c\'esure de \TeX\ ou +de ^{c\'esures optionnelles} que vous avez ins\'er\'e avec |\-|~(\xref{\@minus}). +^^|-//m\`ene \`a {\tt\\hyphenpenalty}| +Augmenter ce param\`etre a l'effet de d\'ecourager +\TeX\ de couper des mots. +\PlainTeX\ met |\hyphenpenalty| \`a $50$. +\enddesc + +\begindesc +\cts doublehyphendemerits {\param{nombre}} +\explain +\minrefs{line break} +{\tighten +Ce param\`etre sp\'ecifie les \minref{d\'em\'erites} additionnels que \TeX\ +attache \`a un point de coupure quand ce point de coupure arrive \`a +deux lignes cons\'ecu\-tives qui se terminent sur une c\'esure. +Augmenter la valeur de ce param\`etre d\'ecourage +\TeX\ de c\'esurer deux lignes \`a suivre. +Les d\'em\'erites sont en unit\'es de \minref{m\'ediocrit\'e} au carr\'e, donc +vous devez assigner une valeur plut\^ot large \`a ce param\`etre (dans les +milliers) pour qu'elle ait un quelconque effet. +\PlainTeX\ met |\doublehyphendemerits| \`a $10000$. +} +\enddesc + +\begindesc +\cts finalhyphendemerits {\param{nombre}} +\explain +\minrefs{line break} +{\tighten +Ce param\`etre sp\'ecifie les \minref{d\'em\'erites} additionnels que \TeX\ +attache \`a un point de coupure qui fait que l'avant derni\`ere ligne d'un +paragraphe se termine avec une c\'esure. +Une telle c\'esure est g\'en\'eralement consid\'er\'ee inesth\'etique +parce que l'espace blanc \'eventuel provoqu\'e par une derni\`ere ligne courte +la rend m\'eprisable. +Augmenter la valeur de ce param\`etre d\'ecourage +\TeX\ de finir l'avant derni\`ere ligne avec une c\'esure. +Les d\'em\'erites sont en unit\'es de \minref{m\'ediocrit\'e} au carr\'e, donc +vous devez assigner une valeur plut\^ot large \`a ce param\`etre (dans les +milliers) pour qu'elle ait un quelconque effet. +\PlainTeX\ met |\finalhyphendemerits| \`a $5000$. +} +\eix^^{c\'esure//p\'enalit\'es pour} +\enddesc + +\begindesc +\cts binoppenalty {\param{nombre}} +\explain +^^{op\'erateurs} +Ce param\`etre sp\'ecifie la p\'enalit\'e d'une coupure d'une formule math\'e\-ma\-tique +apr\`es un op\'erateur binaire quand la formule appara\^\i t dans un paragraphe. +\PlainTeX\ met |\binoppenalty| \`a $700$. +\enddesc + +\begindesc +\cts relpenalty {\param{nombre}} +\explain +^^{relations} +Ce param\`etre sp\'ecifie la p\'enalit\'e pour une coupure d'une formule math\'e\-ma\-tique +apr\`es une relation quand la formule appara\^\i t dans un paragraphe. +\PlainTeX\ met |\rel!-penal!-ty| \`a~$500$. + +\eix^^{coupures de ligne//param\`etres affectant les} +\enddesc + +%========================================================================== +\subsection {C\'esure} + +\begindesc +\bix^^{c\'esure} +% +\easy\ctspecial - \ctsxrdef{@minus} +\explain +La commande |\-| ins\`ere une ``c\'esure optionnelle'' +^^{c\'esures optionnelles} +dans un mot. +La c\'esure optionnelle autorise \TeX\ de couper le mot \`a cet +endroit. \TeX\ n'est pas oblig\'e de couper l\`a---il ne le fera +que s'il le faut. Cette commande est utile quand un mot +qui appara\^\i t une ou deux fois dans votre document +doit \^etre coup\'e, +mais que \TeX\ ne peut pas trouver de point de coupure appropri\'ee de lui-m\^eme. +\example +Alice was exceedingly reluctant to shake hands first +with either Twee\-dle\-dum or Twee\-dle\-dee, for +fear of hurting the other one's feelings. +| +\produces +Alice was exceedingly reluctant to shake hands first +with either Twee\-dle\-dum or Twee\-dle\-dee, for +fear of hurting the other one's feelings. +\endexample +\enddesc + +\begindesc +\cts discretionary {\rqbraces{\<pre-break text>} + \rqbraces{\<post-break text>} + \rqbraces{\<no-break text>}} +\explain +\minrefs{line break} +^^{c\'esure} +Cette commande sp\'ecifie une ``coupure optionnelle'', autrement dit, +un endroit o\`u \TeX\ peut couper une ligne. +Elle dit aussi \`a \TeX\ quel texte mettre de chaque cot\'e de la coupure. +\ulist +\li Si \TeX\ ne doit pas couper l\`a, il utilise le \<no-break text>. +\li Si \TeX\ doit couper l\`a, il met le \<pre-break text> juste avant +la coupure et le \<post-break text> juste apr\`es la coupure. +\endulist +\noindent +Comme avec |\-|, +\TeX\ n'est pas oblig\'e de couper une ligne sur une coupure optionnelle. +En fait, |\-| est normalement \'equivalent \`a |\discretionary!allowbreak{-}{}{}|. + +Parfois, \TeX\ ins\`ere des coupures optionnelles de lui-m\^eme. +Par ex\-emple, il ins\`ere |\discretionary!allowbreak{}{}{}| apr\`es +une c\'esure explicite ou un tiret. + +{\hyphenchar\tentt=-1 % needed to avoid weirdnesses +\example +% An ordinary discretionary hyphen (equivalent to \-): +\discretionary{-}{}{} +% A place where TeX can break a line, but should not +% insert a space if the line isn't broken there, e.g., +% after a dash: +\discretionary{}{}{} +% Accounts for German usage: `flicken', but `flik- +% ken': +German ``fli\discretionary{k-}{k}{ck}en'' +| +^^{c\'esure//allemande} +\endexample} + +\enddesc + +\begindesc +\cts hyphenation {\rqbraces{\<mot>\thinspace\vs\ $\ldots$\ \vs + \thinspace\<mot>}} +\explain +\TeX\ garde un dictionnaire des exceptions de ses r\`egles de ^{c\'esure}. +Chaque entr\'ee du dictionnaire indique comment un mot particulier doit +\^etre coup\'e. +La commande |\hyphenation| ajoute des mots au dictionnaire. +Son argument est une suite de mots s\'epar\'ee par des blancs. +Les lettres majuscules et minuscules sont \'equivalentes. +Les c\'esures dans chaque mot indiquent les endroits +o\`u \TeX\ peut couper ce mot. +Un mot sans c\'esure ne sera jamais coup\'e. +Dans tous les cas, vous pouvez outrepasser le dictionnaire de c\'esure en +utilisant |\-| pour une occurrence particuli\`ere d'un mot. +Vous devez produire toutes les formes grammaticales d'un mot +que vous voulez que \TeX\ coupe, c'est-\`a-dire, le singulier et le pluriel. + +\example +\hyphenation{Gry-phon my-co-phagy} +\hyphenation{man-u-script man-u-scripts piz-za} +| +\endexample +\enddesc + +\begindesc +\cts uchyph {\param{nombre}} +\explain +Une valeur positive de |\uchyph| (c\'esure majuscule) +permet d\'ecouper des mots, comme des noms propres, +qui commencent par une lettre capitale. +Une valeur \`a z\'ero ou n\'egative +inhibe de telle coupure. \PlainTeX\ met |\uchyph| \`a $1$, +donc \TeX\ essaye normalement de couper les mots qui commencent par une lettre capital. +\enddesc + +\begindesc +\cts showhyphens {\rqbraces{\<mot>\thinspace\vs\ $\ldots$\ \vs + \thinspace\<mot>}} +\explain +Cette commande n'est habituellement pas utilis\'ee dans des documents, +mais vous pouvez l'utiliser sur votre terminal pour voir comment \TeX\ +couperait certains jeux de mots al\'eatoires. +Les mots, avec les coupures visibles, apparaissent dans le log et sur +votre terminal. Vous obtiendrez une plainte \`a propos d'une ``underfull +hbox''---ignorez la. +\example +\showhyphens{threshold quizzical draughts argumentative} +| +\logproduces +Underfull \hbox (badness 10000) detected at line 0 +[] \tenrm thresh-old quizzi-cal draughts ar-gu-men-ta-tive +| +\endexample +\enddesc + +\begindesc +\cts language {\param{number}} +\explain +Des langages diff\'erents ont diff\'erents jeux de r\`egles de c\'esure. +Ce para\-m\`etre d\'etermine le jeu de ^{r\`egles de c\'esure} que \TeX\ utilise. +En changeant |\language| vous pouvez obtenir que \TeX\ +coupe des portions de texte ou des documents entiers en accord avec les +r\`egles de c\'esure appropri\'ees \`a un langage particulier. +^^{langues europ\'eennes} +Votre ^{support local} sur \TeX\ vous dira si des +jeux additionnels de r\`egles de c\'esure sont accessibles (derri\`ere celui +pour l'anglais) +et quelles sont les valeurs appropri\'ees de |\language|. +La valeur par d\'efaut de |\language| est $0$. + +\TeX\ met le langage courant \`a $0$ au d\'ebut de tous les paragraphes, +et compare |\language| au langage courant \`a chaque fois qu'il ajoute +un caract\`ere au paragraphe courant. +Si ce n'est pas le m\^eme, \TeX\ ajoute un ^{\elementextra} indiquant +que le langage change. +Cet \'el\'ement extraordinaire est la preuve pour les prochaines ex\'ecutions que les r\`egles de langage +peuvent changer. +\enddesc + +\begindesc +\cts setlanguage {\<nombre>} +\explain +Cette commande met le langage courant \`a \<nombre> +en ins\'erant le m\^eme \'el\'ement extraordinaire que vous obtiendrez en changeant +^|\language|. +En outre, elle ne change pas la valeur de |\language|. +\enddesc + +\begindesc +\cts lefthyphenmin {\param{nombre}} +\cts righthyphenmin {\param{nombre}} +\explain +Ces param\`etres sp\'ecifient les plus petits fragments de mots que \TeX\ autorise +\`a gauche et \`a droite d'un mot coup\'e. +\PlainTeX\ les initialise par d\'efaut \`a $2$ et $3$ respectivement~; +ce sont les valeurs recommand\'ees pour l'anglais. +\enddesc + +\begindesc +\bix^^{polices//caract\`eres de c\'esure pour} +\cts hyphenchar {\<police>\param{nombre}} +\explain +\TeX\ n'utilise pas n\'ecessairement le caract\`ere `-' aux points de c\'esure. +A la place, il utilise le |\hyphenchar| de la police courante, qui est +habituellement `-' mais pas n\'ecessairement. Si une police a une valeur + |\hyphenchar| n\'egative, +\TeX\ ne coupe pas de mots dans cette police. + +Notez que \<police> est une s\'equence de contr\^ole +qui nomme une police, pas un \<nom de police> qui nomme des fichiers de +police. +Attention~: +un assignement \`a |\hyphenchar| n'est \emph{pas} r\'einitialis\'e \`a la fin +d'un groupe. +Si vous voulez changer |\hyphenchar| localement, vous devrez +sauvegarder et restaurer sa valeur originale explicitement. + +\example +\hyphenchar\tenrm = `- + % Set hyphenation for tenrm font to `-'. +\hyphenchar\tentt = -1 + % Don't hyphenate words in font tentt. +| +\endexample +\enddesc + +\begindesc +\cts defaulthyphenchar {\param{nombre}} +\explain +Quand \TeX\ lit le fichier de m\'etriques +^^{fichiers de m\'etriques//tiret de c\'esure par d\'efaut dans} +pour une police en r\'eponse \`a une commande +^|\font|, il met le ^|\hyphenchar| de la police dans +|\default!-hyphen!-char|. +Si la valeur de |\default!-hyphen!-char| n'est +pas dans la fourchette $0$--$255$ quand vous chargez une police, +\TeX\ ne coupera aucun mot dans cette police \`a moins que vous +outrepassiez la d\'ecision en mettant le |\hyphenchar| de la police apr\`es. +\PlainTeX\ met |\default!-hyphen!-char| \`a $45$, le code \ascii\ +pour `|-|'. +\example +\defaulthyphenchar = `- + % Assume `-' is the hyphen, unless overridden. +\defaulthyphenchar = -1 + % Don't hyphenate, unless overridden. +| +\endexample + +\eix^^{polices//caract\`eres de c\'esure pour} +\enddesc + +\see |\pretolerance| (\xref \pretolerance). +\eix^^{c\'esure} +\eix^^{coupures de ligne} + +%========================================================================== +\section {Ent\^etes de section, listes et th\'eor\`emes} + +\begindesc +^^{ent\^etes de section} +\easy\ctspecial beginsection {\<argument>\thinspace{\bt\\par}} + \ctsxrdef{@beginsection} +\explain +Vous pouvez utiliser cette commande pour d\'ebuter une subdivision majeure de votre document. +\<argument> est pr\'evu pour servir de titre de section. +|\beginsection| amplifie \<argument> +par de l'espace vertical suppl\'ementaire et le met en +police grasse, justifi\'e \`a gauche. +Vous pouvez produire le |\par| qui termine \<argument> avec une ligne blanche. +\let\message = \gobble % Don't bother to tell us about Pig and Pepper. +\example +$\ldots$ till she had brought herself down to nine +inches high. + +\beginsection Section 6. Pig and Pepper + +For a minute or two she stood looking at the house $\ldots$ +| +\produces +$\ldots$ till she had brought herself down to nine +inches high. + +\beginsection Section 6. Pig and Pepper + +For a minute or two she stood looking at the house $\ldots$ +\endexample +\enddesc + +\begindesc +\cts item {\<argument>} +\cts itemitem {\<argument>} +\explain +^^{listes d'\'el\'ements} +Cette commande est utile pour cr\'eer des ^{listes d'\'el\'ements}. Tout le paragraphe +suivant \<argument> est indent\'e de |\parindent| +^^|\parindent//indentation pour listes d'\'el\'ements| +(pour |\item|) ou par |2\parindent| (pour |\itemitem|). +(Voir \xrefpg{\parindent} pour une explication de |\parindent|.) +Ensuite \<argument>, +suivi par un espace demi-cadratin, est plac\'e juste \`a +la gauche du texte de la +premi\`ere ligne du paragraphe pour qu'il tombe avec l'indentation du paragraphe +comme sp\'ecifi\'e par |\parindent|. + +Si vous voulez inclure plus d'un +paragraphe dans un \'el\'ement, mettez |\item{}| devant les paragraphes additionnels. +\example +{\parindent = 18pt +\noindent Here is what we require: +\item{1.}Three eggs in their shells, +but with the yolks removed. +\item{2.}Two separate glass cups containing: +\itemitem{(a)}One-half cup {\it used} motor oil. +\itemitem{(b)}One cup port wine, preferably French. +\item{3.}Juice and skin of one turnip.} +| +\produces +{\parindent = 18pt +\noindent Here is what we require: +\item{1.}Three eggs in their shells, +but with the yolks removed. +\item{2.}Two separate glass cups containing: +\itemitem{(a)}One-half cup {\it used} motor oil. +\itemitem{(b)}One cup port wine, preferably French. +\item{3.}Juice and skin of one turnip.} +\endexample +\enddesc + +\begindesc +\easy\ctspecial proclaim {\<argument>{\tt.}\vs\thinspace + \<texte g\'en\'eral>\thinspace{\bt\\par}} + \ctsxrdef{@proclaim} +\explain +^^{th\'eor\`emes} +^^{lemmes} +^^{hypoth\`eses} +Cette commande ``proclame'' un th\'eor\`eme, un lemme, une hypoth\`ese, etc. +Elle met \<argument> en police grasse et le paragraphe suivant en +italique. \<arg\-u\-ment> doit \^etre suivi par un point et un token espace, +qui servent \`a s\'eparer \<argument> du \<texte g\'en\'eral>. +\<texte g\'en\'eral> est constitu\'e du texte jusqu'\`a la fronti\`ere du paragraphe suivant, +sauf que vous pouvez inclure des paragraphes multiples en les mettant +entre accolades et terminer un paragraphe apr\`es l'accolade droite fermante. +\example +\proclaim Theorem 1. +What I say is not to be believed. + +\proclaim Corollary 1. Theorem 1 is false.\par +| +\produces +\proclaim Theorem 1. +What I say is not to be believed. + +\proclaim Corollary 1. Theorem 1 is false.\par +\endexample +\enddesc + +\enddescriptions +\endchapter +\byebye + diff --git a/info/impatient/fr/fpreface.tex b/info/impatient/fr/fpreface.tex index 07888fd01a..bf7f089f9b 100644 --- a/info/impatient/fr/fpreface.tex +++ b/info/impatient/fr/fpreface.tex @@ -1,158 +1,158 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-\frontchapter{Pr\'eface}
-
-\TeX\ de Donald Knuth, un syst\`eme de composition automatis\'e,
-fournit presque tout ce qui est requis pour la composition de haute qualit\'e,
-aussi bien des math\'ematiques que du texte ordinaire. Il est particu\-li\`erement
-reconnu pour sa flexibilit\'e, ses c\'esures superbes et sa capacit\'e de choisir
-des coupures de ligne esth\'etiquement satisfaisantes. En raison de ses
-possibilit\'es extraordinaires, \TeX\ est devenu le syst\`eme de composition
-principal pour les math\'ematiques, les sciences et techniques et a \'et\'e
-adopt\'e comme norme par la soci\'et\'e math\'ematique am\'ericaine. Un
-programme compagnon, ^{\Metafont}, peut construire les lettres arbitraires
-comprenant, en particulier, tous les symboles qui pourraient \^etre
-n\'ecessaires dans les math\'ematiques. \TeX\ et \Metafont\ sont largement
-disponibles au sein de la communaut\'e scientifique et technologique et ont
-\'et\'e mis en application sur une vari\'et\'e d'ordinateurs. \TeX\ n'est pas
-parfait---il lui manque un support int\'egr\'e des graphiques et certains effets
-tels que les barres de ^{r\'evision} sont tr\`es difficiles \`a produire---%
-mais ces inconv\'enients sont loin d'\^etre sup\'erieurs \`a ses avantages.
-
-\thisbook\/ est pr\'evu pour servir aux scientifiques, math\'e\-ma\-ticiens,
-et typographes pour lesquels \TeX\ est un outil utile plut\^ot que d'un
-int\'er\^et primaire, aussi bien que pour les informaticiens qui ont un vif
-int\'er\^et pour \TeX\ dans son propre int\'er\^et. Nous avons l'intention
-\'egalement de servir aussi bien les nouveaux venus que ceux qui sont d\'ej\`a
-familiaris\'eavec \TeX. Nous supposons que nos lecteurs sont habitu\'es au
-fonctionnement des ordinateurs et qu'ils veulent obtenir l'information dont ils
-ont besoin aussi rapidement que possible. Notre but est de fournir ces
-informations clairement, avec concision, et de mani\`ere accessible.
-
-Ce livre fournit donc un \'eclairage lumineux, un guide vaillant et
-donne des cartes d\'etaill\'ees pour explorer et utiliser \TeX. Il vous
-permettra de ma\^\i triser \TeX\ rapidement par l'enqu\^ete et l'exp\'erience,
-mais il ne vous m\`enera pas par la main dans le syst\`eme \TeX\ en entier.
-Notre approche est de vous fournir un manuel de \TeX\ qui vous facilite la
-recherche des quelques informations dont vous avez besoin. Nous expliquons tout
-le r\'epertoire des commandes de \TeX\ et des concepts dont elles d\'ependent.
-Vous ne perdrez pas de temps \`a explorer des sujets que vous ne voulez pas voir
-ni avoir besoin.
-
-Dans les premi\`eres sections, nous vous fournissons \'egalement assez
-d'in\-dications pour que vous puissiez commencer si vous n'avez jamais utilis\'e
-\TeX\ avant. Nous supposons que vous avez acc\`es \`a un ex\'ecutable \TeX\ et
-que vous savez utiliser un \'editeur de texte, mais nous ne supposons pas
-beaucoup plus au sujet de vos connaissances. Puisque ce livre est organis\'e
-pour la r\'ef\'erence, vous continuerez toujours \`a le trouver utile quand vous
-vous familiariserez avec \TeX. Si vous pr\'ef\'erez commencer par une excursion
-soigneusement guid\'ee, nous vous recommandons d'avoir lu une premi\`ere fois
-^{\texbook} de Knuth (voir la \xrefpg{ressources} pour une citation), en
-passant au-dessus des ``sections dangereuses'', puis de revenir \`a ce livre
-pour de l'information additionnelle et des r\'ef\'erences pendant que vous
-commencez \`a utiliser \TeX (les sections dangereuses recouvrent des sujets
-avanc\'es de \texbook).
-
-La structure de \TeX\ est vraiment tr\`es simple~: un document \TeX\ se compose
-du texte ordinaire entrem\^el\'e avec des commandes qui donnent \`a \TeX\ des
-instructions compl\'ementaires sur la fa\c con de composer votre document. Les
-choses comme des formules de math\'ematique contiennent beaucoup de commandes, alors que
-le texte d'explication en contient rela\-tivement peu.
-
-La partie fastidieuse de l'\'etude de \TeX\ est d'apprendre les commandes et les
-concepts sous-entendus dans leurs descriptions. Ainsi nous avons consacr\'e la
-majeure partie du livre \`a d\'efinir et \`a expliquer les commandes et les
-concepts. Nous avons \'egalement fourni des exemples en montrant le r\'esultat
-compos\'e avec \TeX\ et la source correspondante, des conseils pour r\'esoudre
-des probl\`emes communs, des informations sur les messages d'erreur et ainsi de
-suite. Nous avons fourni des r\'ef\'erences crois\'ees par num\'ero de page et
-un index complet.
-
-Nous avons class\'e les descriptions de commandes pour que vous puissiez les
-rechercher par fonction ou alphab\'etiquement. Le classement fonctionnel est ce
-dont vous avez besoin quand vous savez ce que vous voulez faire mais que vous ne
-savez pas quelle commande peut le faire pour vous. Le classement alphab\'etique
-est ce dont vous avez besoin quand vous connaissez le nom d'une commande mais
-pas exactement ce qu'elle fait.
-
-Nous devons vous avertir que nous n'avons pas essay\'e de fournir une
-d\'efinition compl\`ete de \TeX. Pour cela vous aurez besoin de ^{\texbook}, qui
-est la source originale d'information sur \TeX. \texbook\ contient \'egalement
-beaucoup d'informations sur les d\'etails d'utilisation de \TeX, en particulier
-sur la composition des formules math\'ematiques. Nous vous le recommandons
-fortement.
-
-En 1989, Knuth a fait une r\'evision importante de \TeX\ afin de l'adapter aux
-jeux de caract\`eres $8$ bits requis pour effectuer des compositions dans des
-langues autres que l'anglais. La description de \TeX\ dans ce livre tient compte
-de cette r\'evision (voir \xref{newtex}).
-
-{\tighten Vous pouvez utiliser une forme sp\'ecialis\'ee de \TeX\ comme
-^{\LaTeX} ou ^{\AMSTeX} (voir \xref{ressources}). Bien que ces formes
-sp\'ecialis\'ees soient d'un seul bloc, vous pouvez vouloir juste utiliser
-certaines des facilit\'es de \TeX\ lui-m\^eme, afin d'employer la commande la
-plus fine que seul \TeX\ peut fournir. Ce livre peut vous aider \`a apprendre ce
-que vous devez conna\^\i tre \`a propos de ces facilit\'es sans devoir vous
-renseigner sur beaucoup d'autres choses qui ne vous int\'eressent pas. \par}
-
-Deux d'entre nous (K.A.H. et K.B.) ont \'et\'e g\'en\'ereusement soutenus par
-l'universit\'e du Massachusetts \`a Boston pendant la pr\'eparation de ce livre.
-En particulier, Rick Martin a permis aux machines de fonctionner et Robert~A.
-Morris et Betty O'Neil les ont rendus disponibles. Paul English d'Interleaf nous
-a aid\'es \`a produire les \'epreuves d'un dessin de couverture.
-
-Nous souhaitons remercier les relecteurs de notre livre~: Richard Furuta de
-l'universit\'e du Maryland, John Gourlay d'Arbortext, Inc., Jill Carter Knuth et
-Richard Rubinstein de la Digital Equipment Corporation. Nous avons pris \`a
-c\oe ur leurs critiques constructives et sans compter du manuscrit original, et le
-livre a consid\'erablement b\'en\'efici\'e de leurs perspicacit\'es.
-
-Nous sommes particuli\`erement reconnaissant \`a notre r\'edacteur, Peter
-Gordon d'Addison-Wesley. Ce livre \'etait vraiment son id\'ee et dans tout son
-d\'eveloppement il a \'et\'e une source d'encouragement et de conseil valable. Nous
-remercions son aide chez Addison-Wesley, Helen Goldstein, qui nous a aid\'es de
-tant de mani\`eres, et de Loren Stevens d'Addison-Wesley de sa comp\'etence et
-de son \'energie dans le cheminement de ce livre dans le processus de
-production. Sans oublier notre r\'edactrice de copie, Janice Byer, sans qui un
-certain nombre de petites mais irritantes erreurs seraient demeur\'ees dans ce
-livre. Nous appr\'ecions sa sensibilit\'e et go\^utions en corrigeant ce qui
-nous \'etait n\'ecessaire de corriger tout en lui laissant ce que nous n'avions
-pas eu besoin de corriger. En conclusion, nous souhaitons remercier Jim Byrnes
-de Prometheus Inc. d'avoir rendu cette collaboration possible en nous
-pr\'esentant.
-\vskip1.5\baselineskip
-
-\line{\it Deerfield, Massachusetts\hfil\rm P.\thinspace W.\thinspace A.}
-\line{\it Manomet, Massachusetts\hfil\rm K.\thinspace A.\thinspace H.,
- K.\thinspace B.}
-
-\vskip2\baselineskip
-
-\noindent {\bf Pr\'eface \`a l'\'edition libre~:} Ce livre a \'et\'e \`a
-l'origine \'edit\'e en 1990 par Addison-Wesley. En 2003, il a d\'eclar\'e
-\'epuis\'e et Addison-Wesley a g\'en\'ereusement rendu tous les droits \`a nous,
-les auteurs. Nous avons d\'ecid\'e de rendre le livre disponible sous forme de
-source, sous la licence de documentation libre de GNU, ceci \'etant notre
-mani\`ere de soutenir la communaut\'e qui a soutenu le livre en premier lieu.
-Voyez la page de copyright pour plus d'information sur l'autorisation.
-
-Les illustrations qui faisaient partie du livre original ne sont pas incluses
-ici. Certaines des polices ont \'egalement \'et\'e chang\'ees~; maintenant, seules
-des polices librement disponibles sont utilis\'ees. Nous avons laiss\'e les
-hirondelles et l'information de gal\'ee sur les pages, pour identification. Une
-vieille version d'Eplain a \'et\'e employ\'ee pour la produire~; voyez le dossier
-{\tt eplain.tex} pour des d\'etails.
-
-Nous ne projetons pas de faire de changements ou additions au livre
-nous-m\^emes, except\'e la correction d'erreurs qui nous seront rappor\-t\'ees et
-peut-\^etre, l'inclusion des illustrations.
-
-Notre distribution du livre est \`a {\tt ftp://tug.org/tex/impatient}. Vous
-pouvez nous atteindre par courriel \`a {\tt impatient@tug.org}.
-
-\pagebreak
-\byebye
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros +\frontchapter{Pr\'eface} + +\TeX\ de Donald Knuth, un syst\`eme de composition automatis\'e, +fournit presque tout ce qui est requis pour la composition de haute qualit\'e, +aussi bien des math\'ematiques que du texte ordinaire. Il est particu\-li\`erement +reconnu pour sa flexibilit\'e, ses c\'esures superbes et sa capacit\'e de choisir +des coupures de ligne esth\'etiquement satisfaisantes. En raison de ses +possibilit\'es extraordinaires, \TeX\ est devenu le syst\`eme de composition +principal pour les math\'ematiques, les sciences et techniques et a \'et\'e +adopt\'e comme norme par la soci\'et\'e math\'ematique am\'ericaine. Un +programme compagnon, ^{\Metafont}, peut construire les lettres arbitraires +comprenant, en particulier, tous les symboles qui pourraient \^etre +n\'ecessaires dans les math\'ematiques. \TeX\ et \Metafont\ sont largement +disponibles au sein de la communaut\'e scientifique et technologique et ont +\'et\'e mis en application sur une vari\'et\'e d'ordinateurs. \TeX\ n'est pas +parfait---il lui manque un support int\'egr\'e des graphiques et certains effets +tels que les barres de ^{r\'evision} sont tr\`es difficiles \`a produire---% +mais ces inconv\'enients sont loin d'\^etre sup\'erieurs \`a ses avantages. + +\thisbook\/ est pr\'evu pour servir aux scientifiques, math\'e\-ma\-ticiens, +et typographes pour lesquels \TeX\ est un outil utile plut\^ot que d'un +int\'er\^et primaire, aussi bien que pour les informaticiens qui ont un vif +int\'er\^et pour \TeX\ dans son propre int\'er\^et. Nous avons l'intention +\'egalement de servir aussi bien les nouveaux venus que ceux qui sont d\'ej\`a +familiaris\'eavec \TeX. Nous supposons que nos lecteurs sont habitu\'es au +fonctionnement des ordinateurs et qu'ils veulent obtenir l'information dont ils +ont besoin aussi rapidement que possible. Notre but est de fournir ces +informations clairement, avec concision, et de mani\`ere accessible. + +Ce livre fournit donc un \'eclairage lumineux, un guide vaillant et +donne des cartes d\'etaill\'ees pour explorer et utiliser \TeX. Il vous +permettra de ma\^\i triser \TeX\ rapidement par l'enqu\^ete et l'exp\'erience, +mais il ne vous m\`enera pas par la main dans le syst\`eme \TeX\ en entier. +Notre approche est de vous fournir un manuel de \TeX\ qui vous facilite la +recherche des quelques informations dont vous avez besoin. Nous expliquons tout +le r\'epertoire des commandes de \TeX\ et des concepts dont elles d\'ependent. +Vous ne perdrez pas de temps \`a explorer des sujets que vous ne voulez pas voir +ni avoir besoin. + +Dans les premi\`eres sections, nous vous fournissons \'egalement assez +d'in\-dications pour que vous puissiez commencer si vous n'avez jamais utilis\'e +\TeX\ avant. Nous supposons que vous avez acc\`es \`a un ex\'ecutable \TeX\ et +que vous savez utiliser un \'editeur de texte, mais nous ne supposons pas +beaucoup plus au sujet de vos connaissances. Puisque ce livre est organis\'e +pour la r\'ef\'erence, vous continuerez toujours \`a le trouver utile quand vous +vous familiariserez avec \TeX. Si vous pr\'ef\'erez commencer par une excursion +soigneusement guid\'ee, nous vous recommandons d'avoir lu une premi\`ere fois +^{\texbook} de Knuth (voir la \xrefpg{ressources} pour une citation), en +passant au-dessus des ``sections dangereuses'', puis de revenir \`a ce livre +pour de l'information additionnelle et des r\'ef\'erences pendant que vous +commencez \`a utiliser \TeX (les sections dangereuses recouvrent des sujets +avanc\'es de \texbook). + +La structure de \TeX\ est vraiment tr\`es simple~: un document \TeX\ se compose +du texte ordinaire entrem\^el\'e avec des commandes qui donnent \`a \TeX\ des +instructions compl\'ementaires sur la fa\c con de composer votre document. Les +choses comme des formules de math\'ematique contiennent beaucoup de commandes, alors que +le texte d'explication en contient rela\-tivement peu. + +La partie fastidieuse de l'\'etude de \TeX\ est d'apprendre les commandes et les +concepts sous-entendus dans leurs descriptions. Ainsi nous avons consacr\'e la +majeure partie du livre \`a d\'efinir et \`a expliquer les commandes et les +concepts. Nous avons \'egalement fourni des exemples en montrant le r\'esultat +compos\'e avec \TeX\ et la source correspondante, des conseils pour r\'esoudre +des probl\`emes communs, des informations sur les messages d'erreur et ainsi de +suite. Nous avons fourni des r\'ef\'erences crois\'ees par num\'ero de page et +un index complet. + +Nous avons class\'e les descriptions de commandes pour que vous puissiez les +rechercher par fonction ou alphab\'etiquement. Le classement fonctionnel est ce +dont vous avez besoin quand vous savez ce que vous voulez faire mais que vous ne +savez pas quelle commande peut le faire pour vous. Le classement alphab\'etique +est ce dont vous avez besoin quand vous connaissez le nom d'une commande mais +pas exactement ce qu'elle fait. + +Nous devons vous avertir que nous n'avons pas essay\'e de fournir une +d\'efinition compl\`ete de \TeX. Pour cela vous aurez besoin de ^{\texbook}, qui +est la source originale d'information sur \TeX. \texbook\ contient \'egalement +beaucoup d'informations sur les d\'etails d'utilisation de \TeX, en particulier +sur la composition des formules math\'ematiques. Nous vous le recommandons +fortement. + +En 1989, Knuth a fait une r\'evision importante de \TeX\ afin de l'adapter aux +jeux de caract\`eres $8$ bits requis pour effectuer des compositions dans des +langues autres que l'anglais. La description de \TeX\ dans ce livre tient compte +de cette r\'evision (voir \xref{newtex}). + +{\tighten Vous pouvez utiliser une forme sp\'ecialis\'ee de \TeX\ comme +^{\LaTeX} ou ^{\AMSTeX} (voir \xref{ressources}). Bien que ces formes +sp\'ecialis\'ees soient d'un seul bloc, vous pouvez vouloir juste utiliser +certaines des facilit\'es de \TeX\ lui-m\^eme, afin d'employer la commande la +plus fine que seul \TeX\ peut fournir. Ce livre peut vous aider \`a apprendre ce +que vous devez conna\^\i tre \`a propos de ces facilit\'es sans devoir vous +renseigner sur beaucoup d'autres choses qui ne vous int\'eressent pas. \par} + +Deux d'entre nous (K.A.H. et K.B.) ont \'et\'e g\'en\'ereusement soutenus par +l'universit\'e du Massachusetts \`a Boston pendant la pr\'eparation de ce livre. +En particulier, Rick Martin a permis aux machines de fonctionner et Robert~A. +Morris et Betty O'Neil les ont rendus disponibles. Paul English d'Interleaf nous +a aid\'es \`a produire les \'epreuves d'un dessin de couverture. + +Nous souhaitons remercier les relecteurs de notre livre~: Richard Furuta de +l'universit\'e du Maryland, John Gourlay d'Arbortext, Inc., Jill Carter Knuth et +Richard Rubinstein de la Digital Equipment Corporation. Nous avons pris \`a +c\oe ur leurs critiques constructives et sans compter du manuscrit original, et le +livre a consid\'erablement b\'en\'efici\'e de leurs perspicacit\'es. + +Nous sommes particuli\`erement reconnaissant \`a notre r\'edacteur, Peter +Gordon d'Addison-Wesley. Ce livre \'etait vraiment son id\'ee et dans tout son +d\'eveloppement il a \'et\'e une source d'encouragement et de conseil valable. Nous +remercions son aide chez Addison-Wesley, Helen Goldstein, qui nous a aid\'es de +tant de mani\`eres, et de Loren Stevens d'Addison-Wesley de sa comp\'etence et +de son \'energie dans le cheminement de ce livre dans le processus de +production. Sans oublier notre r\'edactrice de copie, Janice Byer, sans qui un +certain nombre de petites mais irritantes erreurs seraient demeur\'ees dans ce +livre. Nous appr\'ecions sa sensibilit\'e et go\^utions en corrigeant ce qui +nous \'etait n\'ecessaire de corriger tout en lui laissant ce que nous n'avions +pas eu besoin de corriger. En conclusion, nous souhaitons remercier Jim Byrnes +de Prometheus Inc. d'avoir rendu cette collaboration possible en nous +pr\'esentant. +\vskip1.5\baselineskip + +\line{\it Deerfield, Massachusetts\hfil\rm P.\thinspace W.\thinspace A.} +\line{\it Manomet, Massachusetts\hfil\rm K.\thinspace A.\thinspace H., + K.\thinspace B.} + +\vskip2\baselineskip + +\noindent {\bf Pr\'eface \`a l'\'edition libre~:} Ce livre a \'et\'e \`a +l'origine \'edit\'e en 1990 par Addison-Wesley. En 2003, il a d\'eclar\'e +\'epuis\'e et Addison-Wesley a g\'en\'ereusement rendu tous les droits \`a nous, +les auteurs. Nous avons d\'ecid\'e de rendre le livre disponible sous forme de +source, sous la licence de documentation libre de GNU, ceci \'etant notre +mani\`ere de soutenir la communaut\'e qui a soutenu le livre en premier lieu. +Voyez la page de copyright pour plus d'information sur l'autorisation. + +Les illustrations qui faisaient partie du livre original ne sont pas incluses +ici. Certaines des polices ont \'egalement \'et\'e chang\'ees~; maintenant, seules +des polices librement disponibles sont utilis\'ees. Nous avons laiss\'e les +hirondelles et l'information de gal\'ee sur les pages, pour identification. Une +vieille version d'Eplain a \'et\'e employ\'ee pour la produire~; voyez le dossier +{\tt eplain.tex} pour des d\'etails. + +Nous ne projetons pas de faire de changements ou additions au livre +nous-m\^emes, except\'e la correction d'erreurs qui nous seront rappor\-t\'ees et +peut-\^etre, l'inclusion des illustrations. + +Notre distribution du livre est \`a {\tt ftp://tug.org/tex/impatient}. Vous +pouvez nous atteindre par courriel \`a {\tt impatient@tug.org}. + +\pagebreak +\byebye diff --git a/info/impatient/fr/fread1st.tex b/info/impatient/fr/fread1st.tex index 8134d722a2..c1293b12da 100644 --- a/info/impatient/fr/fread1st.tex +++ b/info/impatient/fr/fread1st.tex @@ -1,46 +1,46 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-\frontchapter{lisez ceci d'abord}
-
-% We don't need anything but \rm here.
-{\font\rm = cmr10 scaled \magstephalf \baselineskip = 1.1\baselineskip
-Si vous d\'ebutez en \TeX:
-\ulist
-\li Lisez en premier les sections \chapternum{usebook}--%
-\chapternum{usingtex}.
-\li Recherchez dans les exemples de la \chapterref{examples} les
-choses qui ressemblent \`a ce que vous voulez faire. Recherchez toutes
-les commandes en relation dans le ``sommaire des commandes'',
-\chapterref{capsule}. Utilisez les r\'ef\'erences de page pour trouver
-les descriptions les plus compl\`etes sur ces commandes et d'autres
-qui leur sont similaires.
-\li Recherchez les mots inconnus dans ``Concepts'',
-\chapterref{concepts}, en utilisant la liste \`a la fin
-du livre pour trouver l'explication rapidement.
-\li Exp\'erimentez et explorez.
-\endulist
-\bigskip
-\noindent
-
-Si vous connaissez d\'ej\`a \TeX\ ou si vous \'editez ou modifiez un
-document \TeX\ que quelqu'un d'autre a cr\'e\'e:
-\ulist
-\li Pour un rappel rapide de ce que fait telle ou telle commande,
-regardez dans la \chapterref{capsule}, ``r\'esum\'e des commandes''.
-Il est alphab\'etique et comprend des r\'ef\'erences de page pour de
-plus compl\`etes descriptions des commandes.
-\li Utilisez les groupements fonctionnels de descriptions de commande
-pour trouver celles li\'ees \`a une commande particuli\`ere que vous
-con\-naissez d\'ej\`a, ou pour trouver une commande qui atteint un
-objectif particulier.
-\li Utilisez la \chapterref{concepts}, ``concepts'', pour avoir
-l'explication de n'importe quel concept que vous ne comprenez pas,
-voulez comprendre avec plus de pr\'ecision ou avez oubli\'e. Utilisez
-la liste \`a la fin du livre pour trouver un
-concept rapidement. \endulist } \pagebreak
-
-\byebye
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros +\frontchapter{lisez ceci d'abord} + +% We don't need anything but \rm here. +{\font\rm = cmr10 scaled \magstephalf \baselineskip = 1.1\baselineskip +Si vous d\'ebutez en \TeX: +\ulist +\li Lisez en premier les sections \chapternum{usebook}--% +\chapternum{usingtex}. +\li Recherchez dans les exemples de la \chapterref{examples} les +choses qui ressemblent \`a ce que vous voulez faire. Recherchez toutes +les commandes en relation dans le ``sommaire des commandes'', +\chapterref{capsule}. Utilisez les r\'ef\'erences de page pour trouver +les descriptions les plus compl\`etes sur ces commandes et d'autres +qui leur sont similaires. +\li Recherchez les mots inconnus dans ``Concepts'', +\chapterref{concepts}, en utilisant la liste \`a la fin +du livre pour trouver l'explication rapidement. +\li Exp\'erimentez et explorez. +\endulist +\bigskip +\noindent + +Si vous connaissez d\'ej\`a \TeX\ ou si vous \'editez ou modifiez un +document \TeX\ que quelqu'un d'autre a cr\'e\'e: +\ulist +\li Pour un rappel rapide de ce que fait telle ou telle commande, +regardez dans la \chapterref{capsule}, ``r\'esum\'e des commandes''. +Il est alphab\'etique et comprend des r\'ef\'erences de page pour de +plus compl\`etes descriptions des commandes. +\li Utilisez les groupements fonctionnels de descriptions de commande +pour trouver celles li\'ees \`a une commande particuli\`ere que vous +con\-naissez d\'ej\`a, ou pour trouver une commande qui atteint un +objectif particulier. +\li Utilisez la \chapterref{concepts}, ``concepts'', pour avoir +l'explication de n'importe quel concept que vous ne comprenez pas, +voulez comprendre avec plus de pr\'ecision ou avez oubli\'e. Utilisez +la liste \`a la fin du livre pour trouver un +concept rapidement. \endulist } \pagebreak + +\byebye diff --git a/info/impatient/fr/ftips.tex b/info/impatient/fr/ftips.tex index 2684592ff2..3ac05807cb 100644 --- a/info/impatient/fr/ftips.tex +++ b/info/impatient/fr/ftips.tex @@ -1,1004 +1,1004 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-\chapter{Trucs et astuces}
-
-\chapterdef{tips}
-
-\TeX\ est un programme complexe qui travaille parfois de fa\c con
-myst\'e\-rieuse. Dans cette section nous vous offrons quelques trucs
-pour r\'esoudre les probl\`emes que vous pourrez rencontrer et expliquer
-quelques techniques pratiques.
-
-
-\section Corriger de mauvaises coupures de page
-
-\bix^^{coupures de page//mauvaises}
-Parfois \TeX\ coupe une page juste au milieu du mat\'eriel que vous voulez
-garder ensemble.---par exemple, une ent\^ete de section et le texte qui la
-suit ou une courte suite d'items li\'es. Il y a deux moyens de corriger la
-situation~:
-\ulist\compact
-\li Vous pouvez forcer le mat\'eriel \`a rester ensemble.
-\li Vous pouvez forcer une coupure de page \`a un endroit diff\'erent.
-\endulist
-
-La plus simple fa\c con de forcer \TeX\ a garder le mat\'eriel ensemble sur une
-page est de l'englober dans un vbox en utilisant la commande |\vbox|
-\ctsref{\vbox}.
-^^|\vbox//emp\^echer des coupures de page avec|
-Une vbox est normalement meilleure qu'une hbox pour faire cela parce que le
-plus souvent, le mat\'eriel \`a garder ensemble, par exemple, une suite de
-paragraphes, sera du mat\'eriel en mode vertical. Vous pouvez faire pr\'ec\'eder et
-suivre la vbox par une commande de paragraphe implicite ou explicite (soit
-une ligne blanche, soit un |\par|)~; autrement \TeX\ pourrait essayer de
-faire la partie vbox sur un paragraphe adjacent. La m\'ethode vbox a une
-limitation importante~: vous ne pouvez pas l'appliquer \`a une portion de
-texte inf\'erieure a un paragraphe.
-
-Vous pouvez parfois garder les lignes d'un paragraphe ensemble en
-l'englobant dans un groupe et en donnant \`a |\interlinepenalty|
-\ctsref{\interlinepenalty}
-la valeur $10000$ au d\'ebut du groupe (ou n'importe o\`u avant la fin du
-paragraphe).
-Cette m\'ethode demandera \`a \TeX\ de consid\'erer les coupures de page dans ce
-paragraphe comme \'etant infiniment ind\'esirables.
-N\'eanmoins~; si toutes les coupures de page que \TeX\ peut trouver sont
-infiniment ind\'esirables, il coupera la page dans le paragraphe quand m\^eme.
-
-Une commande ^|\nobreak| (\xref{vnobreak})
-apr\`es la fin d'un paragraphe emp\`eche \TeX\
-de couper la page sur l'item suivant
-(a moins que cet item provoque un penalty inf\'erieur \`a $10000$).
-C' est aussi la meilleure fa\c con d'emp\^echer une coupure de page apr\`es une ent\^ete,
-puisque une ent\^ete r\'eagit normalement comme un paragraphe.
-Le |\nobreak| doit suivre la ligne blanche ou le |\par| qui termine
-la paragraphe pour que \TeX\ ne traite pas le |\nobreak| comme faisant partie
-du paragraphe.
-Pour que le |\nobreak| soit effectif, il doit aussi \^etre plac\'e avant
-tout point de coupure l\'egal \`a la fin du paragraphe.
-Le ressort que \TeX\ ins\`ere avant le paragraphe suivant est comme un point
-de coupure,
-et ainsi pour tout ressort vertical que vous ins\'erez explicitement apr\`es un
-paragraphe.
-Ainsi, le |\nobreak| doit normalement \^etre la toute premi\`ere chose apr\`es
-la fin du paragraphe ou de l'ent\^ete.
-
-Vous pouvez utiliser la commande ^|\eject| \ctsref{\eject}
-pour forcer \TeX\ \`a couper une page \`a un endroit
-particulier. Dans un paragraphe, vous pouvez utiliser la combinaison
-`|\vadjust{\vfill\eject}|'
-\ctsref{\vadjust}
-^^|\vadjust|
-pour forcer une coupure apr\`es la prochaine ligne de sortie compl\`ete.
-La raison de faire pr\'ec\'eder |\eject| par ^|\vfill|
-\ctsref{\vfill} est d'obliger
-\TeX\ \`a remplir la page avec un espace blanc.
-De toute fa\c con, utiliser |\eject| pour r\'esoudre des probl\`emes de coupure de page
-a un d\'esavantage majeur~:
-si les fronti\`eres de page de votre document changent,
-les coupures de page que vous avez ins\'er\'ees peuvent ne plus \^etre l\`a o\`u vous
-les voulez.
-
-Si vous ne procurez pas \`a \TeX\ une commande |\vfill| pour remplir la page
-apr\`es un |\eject|,
-\TeX\ redistribue l'espace blanc exc\'edentaire le mieux qu'il peut et alors
-se plaint g\'en\'eralement d'un
-``underfull |\vbox| (badness $10000$) has occurred while |\output| is active.''
-Vous pouvez rencontrer un probl\`eme similaire avec
-toutes les m\'ethodes mentionn\'ees ci-dessus pour englober du
-mat\'eriel que vous voulez garder li\'e.
-
-La commande ^|\filbreak| \ctsref\filbreak{}
-\xrdef{filbreak}
-procure un moyen de garder les lignes d'un ou plusieurs paragraphes
-(ou autre mat\'eriel de mode vertical) li\'e sur une page.
-Si vous englobez un paragraphe entre |\filbreak|, \TeX\ ignorera effectivement
-les |\filbreak| si le paragraphe d\'ebute sur la page courante et
-coupe la page avant le premier |\filbreak| si le paragraphe ne d\'ebute pas.
-Si vous mettez des |\filbreak| autour de chaque paragraphe dans une s\'equence de paragraphes,
-comme ceci~:
-{\obeylines\display{
-{\tt \\filbreak}
-\<paragraph>
-{\tt \\filbreak}
-\<paragraph>
-{\tt \\filbreak}
-\leavevmode\indent\vdots
-\<paragraph>
-{\tt \\filbreak}
-}}
-%\vfil\eject
-\noindent
-\TeX\ gardera les lignes de chaque paragraphe li\'es sur une page.
-Si \TeX{} coupe une page sur un |\filbreak|, il remplira le bas de la
-page avec un espace blanc.
-
-Parfois vous pourrez demander \`a \TeX\ de modifier la longueur d'une page
-en changeant le param\`etre ^|\looseness| \ctsref\looseness{} pour un ou plusieurs paragraphes.
-Rendre un |\looseness| n\'egatif dans un paragraphe fait que \TeX\ essaye de
-s\'eparer le paragraphe en moins de lignes~; le rendre positif fait que \TeX\ essaye
-d'\'etendre le paragraphe en plus de lignes. Le d\'esavantage de changer |\looseness|
-est que l'espacement inter-mot de la r\'egion affect\'e ne sera pas optimal.
-Vous pouvez obtenir plus d'information sur le fa\c con dont \TeX\ appr\'ehende
-les coupures de ligne en mettant |\tracingpages| (\xref\tracingpages) \`a $1$.
-
-
-\section Pr\'eserver la fin d'une page
-
-Parfois vous avez besoin de modifier quelque chose sur une seule page et vous
-voulez \'eviter de r\'eimprimer tout le document. Si vos modifications ne changent
-pas trop la page, il y a de l'espoir. Vous devez modifier la fin de la page
-pour qu'elle tienne au m\^eme endroit~;
-les m\'ethodes sont similaires \`a celles pour modifier une mauvaise coupure de page.
-
-Si la fin de la page originale se trouve entre des paragraphes, vous pouvez
-forcer une coupure de page au m\^eme endroit en utilisant toutes les m\'ethodes
-que nous avons d\'ecrites plus haut. Autrement, vous devez forcer une coupure de
-ligne \emph{et} une coupure de page \`a un endroit particulier. Si la nouvelle
-page est plus courte que l'ancienne, la s\'equence~:
-\csdisplay
-\vadjust{\vfill\eject}\break
-|
-^^|\vadjust|
-devrait faire l'affaire.
-Mais si la nouvelle page est plus longue,
-le probl\`eme est plus difficile parce que \TeX\ a probablement d\'ej\`a compress\'e
-la page aussi fermement qu'il le peut. Vos seuls espoirs dans ce cas sont
-de mettre ^|\looseness| \ctsref\looseness{} \`a une valeur n\'egative, pour
-raccourcir certains sauts verticaux sur la page, pour ajouter un peu de
-r\'etr\'ecissement ^|\parskip| (\xref\parskip) s'il \'etait diff\'erent de z\'ero, ou,
-en dernier recours, diminuer |\baselineskip| \ctsref{\baselineskip}
-encore plus fermement.
-^^|\baselineskip//et pr\'eservation de fin de page|
-
-\section Garder de l'espace en haut d'une page
-
-\null
-^^{espace vertical//r\'eserver en haut d'une page}
-Vous pouvez utiliser habituellement la commande |\vskip| \ctsref\vskip{}
-pour garder de l'espace vertical sur une page.
-Cela ne marche pas en haut d'une page, toutefois, car
-\TeX\ abandonne le ressort, les cr\'enages et les p\'enalit\'es qui arrivent juste
-apr\`es une coupure de page.
-^^{coupures de page//ressort sur}
-Utilisez la commande ^|\topglue| \ctsref\topglue\ \`a la place~; il produit
-un ressort qui ne dispara\^\i t jamais.
-\eix^^{coupures de page//mauvaises}
-
-
-
-\section Corriger de mauvaise coupure de ligne
-
-\null
-\bix^^{coupures de ligne//mauvaises}
-Si \TeX\ coupe une ligne au milieu du mat\'eriel que vous voulez garder
-sur une seule ligne, il y a plusieurs moyens de corriger la situation~:
-\ulist\compact
-\li Vous pouvez forcer une coupure \`a un endroit proche avec la commande
-|\break| (\xref{hbreak}).
-^^|\break//corriger des coupures de ligne avec|
-\li Vous pouvez ins\'erer un tilde (|~|) entre deux mots
-(see \xref{@not}) pour emp\^echer une coupure entre eux \ttidxref{~}
-\li Vous pouvez signaler \`a \TeX\ des c\'esures qu'il ne consid\`ererait pas
-autrement en ins\'erant une ou plusieurs c\'esures optionnelles dans plusieurs
-mots (voir |\-|, \xref{\@minus}).
-\ctsidxref{-//sur une coupure de ligne}
-^^{c\'esures optionnelles//mauvaises coupures de ligne, corriger avec}
-\li Vous pouvez englober plusieurs mots dans une hbox en utilisant la
-commande ^|\hbox| \ctsref{\hbox}.
-\endulist
-
-Le d\'esavantage de toutes ces m\'ethodes, \`a part l'insertion de c\'esures
-optionnelles, est qu'elles rendent impossible pour \TeX\ de trouver un jeu
-de coupures de ligne satisfaisant. Si cela arrive n\'eanmoins, \TeX\ trouvera
-une ou plusieurs bo\^\i tes trop ou pas assez pleines et s'en plaindra.
-^^{underfull boxes} ^^{overfull boxes}
-La m\'ethode hbox a un d\'esavantage de plus~: parce que \TeX\ voit une hbox
-comme une entit\'e simple sans consid\'erer son contexte, l'espace entre les mots
-dans la hbox peut ne pas \^etre coh\'erent avec celui du reste de la ligne.
-\eix^^{coupures de ligne//mauvaises}
-
-
-\section Corriger des bo\^\i tes trop ou pas assez pleines
-
-\null
-\bix^^{overfull boxes}
-\bix^^{underfull boxes}
-\bix^^{\boites//overfull}
-\bix^^{\boites//underfull}
-Si \TeX\ se plaint d'une bo\^\i te trop pleine, cela signifie que vous avez mis
-plus de mat\'eriel dans une bo\^\i te qu'elle ne peut en contenir.
-Similairement, si \TeX\ se plaint d'une bo\^\i te pas assez pleine, cela signifie
-que vous n'avez pas mis assez de mat\'eriel dans la bo\^\i te. Vous pouvez rencontrer
-ces plaintes dans de nombreuses circonstances diff\'erentes, donc, regardons
-les plus communes~:
-
-\ulist
-\li Une bo\^\i te trop pleine d'une ligne d'un paragraphe indique que la ligne
-\'etait trop longue et que \TeX\ ne peut pas r\'earranger le paragraphe pour
-rendre la ligne plus courte. Si vous mettez ^|\emergencystretch|
-\ctsref{\emergencystretch} \`a une valeur diff\'erente de z\'ero, cela peut
-r\'esoudre le probl\`eme en autorisant \TeX\ \`a mettre plus d'espace entre les
-mots. Une autre solution est de mettre |\tolerance| \ctsref{\tolerance}
-\`a $10000$, mais c'est un peu comme \'emettre des lignes avec beaucoup trop
-d'espace. Sinon, une autre solution est d'ins\'erer une c\'esure optionnelle
-^^{c\'esures optionnelles//overfull boxes, corriger avec}
-dans un mot critique que \TeX\ ne sait pas couper.
-Si tout cela ne suffit pas, vous pourriez essayer de r\'e\'ecrire le paragraphe.
-Une solution qui est rarement satisfaisante est d'augmenter ^|\hfuzz| \ctsref\hfuzz,
-autorisant ainsi \TeX\ de construire des lignes qui d\'epassent dans la marge droite.
-
-\li Une bo\^\i te pas assez pleine d'une ligne d'un paragraphe indique que la ligne
-\'etait trop courte et que \TeX\ ne peut pas r\'earranger le paragraphe pour
-rendre la ligne plus longue.
-\TeX\ formera de telles lignes en \'etirant ses espaces inter-mots au del\`a de leurs
-limites normales. Deux des solutions pour des lignes trop pleines mentionn\'ees ci-dessus
-s'appliquent aussi aux lignes pas assez pleines~:
-ins\'erer des c\'esures optionnelles et r\'e\'ecrire le paragraphe.
-Des lignes pas assez pleines ne vous g\^eneront pas si vous utilisez un
-format justifi\'e \`a gauche, que vous pourrez obtenir avec la commande
-^|\raggedright| \ctsref\raggedright.
-
-\li La plainte~:
-\csdisplay
-Underfull \vbox (badness 10000) has occurred
- while \output is active
-|
-indique que \TeX\ n'a pas assez de mat\'eriel pour remplir une page. La cause
-probable est que vous avez utilis\'e des vbox pour garder du mat\'eriel ensemble
-et \TeX\ a rencontr\'e une vbox pr\`es du bas d'une page qui ne peut pas rentrer
-sur cette page.
-Il a mis la vbox sur la page suivante, mais en ce faisant a laiss\'e trop
-d'espace vide dans la page courante.
-Dans ce cas vous pouvez soit ins\'erer plus d'espace quelque part sur la page
-courante, soit couper la vbox en plus petites parties.
-
-Une autre cause possible de cette plainte est d'avoir un long paragraphe
-qui occupe une page enti\`ere sans coupure.
-Puisque \TeX\ ne fait pas varier l'espacement entre les lignes,
-il peut \^etre incapable de remplir un trou au bas de la page
-d'un montant d'une fraction de l'espacement de la ligne.
-Cela peut arriver si |\vsize| \ctsref{\vsize}, la longueur de la page,
-n'est pas un multiple de |\baselineskip| \ctsref{\baselineskip}, l'espace
-entre des lignes de bases cons\'ecutive.
-
-Sinon, une autre cause de cette plainte,
-similaire \`a la pr\'ec\'edente, est d'avoir mis ^|\parskip| \ctsref{\parskip},
-le ressort inter-paragraphes \`a une valeur qui n'a pas assez d'\'etirement ou de
-r\'etr\'ecissement. Vous pouvez r\'esoudre ces deux derniers probl\`emes en augmentant
-^|\vfuzz| \ctsref\vfuzz.
-
-\li La plainte
-\csdisplay
-Overfull \vbox (296.30745pt too high) has occurred
- while \output is active
-|
-indique que vous avez construit une vbox qui est plus longue que la page.
-vous devriez juste la faire plus courte.
-
-\li
-\bix^^|\hbox//overfull box provenant de|
-\bix^^|\vbox//overfull box provenant de|
-Les seules solutions pour une hbox ou une vbox trop pleine que vous avez
-construit avec les commandes |\hbox| or |\vbox|
-(\pp\xrefn\hbox, \xrefn\vbox)
-sont de sortir quelque chose de la bo\^\i te, ins\'erer un ressort n\'egatif avec
-^|\hss| ou ^|\vss| (\xref\hss) ou d'augmenter la taille de la bo\^\i te.
-
-\li Si vous rencontrez une hbox ou une vbox pas assez pleine que vous avez
-construit avec |\hbox| ou |\vbox|, vous feriez mieux normalement de remplir
-la bo\^\i te avec ^|\hfil| ou ^|\vfil| (\xref\hfil).
-\eix^^|\hbox//overfull box provenant de|
-\eix^^|\vbox//overfull box provenant de|
-
-\endulist
-\eix^^{\boites//overfull}
-\eix^^{\boites//underfull}
-\eix^^{overfull boxes}
-\eix^^{underfull boxes}
-
-
-\section Retrouver des espaces entre-mots perdus
-
-\null
-^^{espace//perdu}
-^^{mots trop rapproch\'es}
-Si vous trouvez que \TeX\ a trop rapproch\'e deux mots, la cause courante
-est une s\'equence de contr\^ole qui a absorb\'e l'espace qui la suit. Mettre
-un ^{espace contr\^ol\'e} (|\!visiblespace|) apr\`es la s\'equence de contr\^ole.
-
-
-\section \'Eviter des espaces entre-mots non d\'esir\'es
-
-\null
-\bix^^{espace//non d\'esir\'e}\xrdef{unwantedspace}
-Si vous obtenez un espace dans votre document o\`u vous ne vouliez et ne
-pensiez pas en avoir, la cause la plus courante, d'apr\`es notre exp\'erience,
-est une fin de ligne ou un espace apr\`es une accolade.
-^^{accolades//espace apr\`es}
-(Si vous faites de jolies choses avec les codes de cat\'egories,
-^^{codes de cat\'egorie//cause d'espaces non d\'esir\'es}
-vous avez introduit beaucoup d'autres causes toutes aussi sympathiques.)
-Normalement, \TeX\ traduit une fin de ligne par un espace, et consid\`ere
-un espace apr\`es une accolade ouvrante ou fermante comme significatif.
-
-Si l'espace non d\'esir\'e est caus\'e par un espace apr\`es une accolade dans
-une ligne d'entr\'ee, retirez-le.
-Si l'espace non d\'esir\'e est caus\'e par une accolade \`a la fin d'une ligne
-d'entr\'ee, mettez une `|%|' imm\'ediatement apr\`es l'accolade.
-{\recat!ttidxref[%//pour \'eliminer des espaces non d\'esi\-r\'es]]
-Le `|%|' d\'ebute un commentaire, mais ce commentaire ne n\'ecessite aucun
-texte.
-
-Une d\'efinition de macro peut aussi
-introduire des espaces non d\'esir\'es si vous ne les avez pas \'ecrites
-soigneusement. Si vous obtenez des espaces non d\'esir\'es quand vous appelez
-une macro, v\'erifiez sa d\'efinition pour \^etre s\^ur que vous n'avez pas un
-espace non d\'esir\'e apr\`es une accolade ou que vous n'avez pas termin\'e une ligne
-de la d\'efinition imm\'ediatement apr\`es une accolade.
-On termine souvent une ligne de d\'efinition de macro apr\`es une accolade pour
-rendre la d\'efinition plus lisible.
-Par s\'ecurit\'e, mettez un `|%|' apr\`es toute accolade qui termine une ligne de
-d\'efinition de macro.
-Il n'est peut-\^etre pas n\'ecessaire, mais il ne fera pas de mal.\footnote{
-Il faut reconna\^\i tre qu'il n'y a que de rares cas o\`u vous avez r\'eellement
-besoin d'une fin de ligne apr\`es une accolade.}
-
-Si vous avez du mal \`a localiser la source d'un espace non d\'esir\'e, essayez
-de mettre |\tracingcommands| \ctsref{\tracingcommands} \`a $2$.
-Vous obtiendrez une commande |{blank space}| dans le fichier log pour chaque
-espace que voit \TeX.
-
-Cela aide de conna\^\i tre les r\`egles d'espace de \TeX~:
-
-\olist
-\li Des espaces sont ignor\'es au d\'ebut des lignes d'entr\'ee.
-\li Des espaces en fin de ligne d'entr\'ee sont ignor\'es en \emph{toute}
-circonstance, bien que la fin de ligne elle-m\^eme soit trait\'ee comme un espace.
-(une ligne compl\`etement blanche, n\'eanmoins, g\'en\`ere un token |\par|.)
-\li De multiples espaces sont trait\'es comme un espace simple, mais
-seulement si ils apparaissent ensemble dans votre entr\'ee.
-Ainsi un espace suivant les arguments d'un appel de macro n'est pas combin\'e
-avec l'espace final produit par l'appel de macro. \`A la place, vous
-obtenez deux espaces.
-\li Des espaces sont ignor\'es apr\`es des mots de contr\^ole.
-\li Des espaces sont de fait ignor\'es apr\`es des nombres, des dimensions
-et le `|plus|' et le `|minus|' des sp\'ecifications de ressort.%
-\footnote{En r\'ealit\'e, \TeX\ n'ignore qu'un seul espace \`a cet endroit.
-Puisque des espaces multiples sont habituellement r\'eduits \`a un seul espace,
-pourtant, l'effet est d'ignorer tout nombre d'espaces.}
-\endolist
-\noindent Si vous avez chang\'e le code de cat\'egorie de l'espace ou du caract\`ere
-fin de ligne, oubliez tout cela.
-\eix^^{espace//non d\'esir\'e}
-
-
-\section \'Eviter un exc\`es d'espace autour d'un affichage
-
-\null
-^^{math\'ematiques affich\'ees}
-Si vous obtenez trop d'espace au dessus d'un affichage math\'ematique, c'est peut \^etre
-parce que vous avez laiss\'e une ligne blanche dans votre entr\'ee avant l'affichage.
-La ligne blanche d\'ebute un nouveau paragraphe et met \TeX\ en mode
-vertical. Quand \TeX\ voit un `|$|' en mode vertical, il rebascule vers
-le mode horizontal et ins\`ere le ressort inter-paragraphes (|\parskip|) suivie par
-le ressort inter-lignes (|\baselineskip|).
-Ensuite, quand il d\'ebute l'affichage lui-m\^eme,
-il ins\`ere \emph{plus} de ressort (soit ^|\abovedisplayskip|,
-soit ^|\abovedisplayshortskip|, selon la longueur de la ligne pr\'ec\'edente).
-Ce dernier ressort est le seul que vous d\'esirez.
-Pour \'eviter d'obtenir un ressort inter-paragraphe ainsi, ne laissez pas de
-ligne blanche au dessus des affichages math\'ematiques ou autrement
-terminez un paragraphe (avec |\par|, disons) juste avant un affichage math\'ematique.
-
-Similairement,
-si vous obtenez trop d'espace apr\`es un affichage math\'ematique, c'est peut-\^etre
-parce que vous avez laiss\'e une ligne blanche dans votre entr\'ee apr\`es l'affichage,
-retirez le simplement.
-
-
-\section \'Eviter un exc\`es d'espace apr\`es un paragraphe
-
-Si vous obtenez trop d'espace vertical apr\`es un paragraphe qui a \'et\'e produit
-par une macro, vous devez avoir eu un ressort inter-paragraphe produit par la
-macro, un paragraphe vide, et ensuite encore un ressort inter-paragraphe.
-Vous pouvez d\'ebarrasser du saut du second paragraphe en ins\'erant~:
-\csdisplay
-\vskip -\parskip
-\vskip -\baselineskip
-|
-juste apr\`es l'appel de la macro.
-Si vous avez toujours ce probl\`eme avec une certaine macro, vous pouvez mettre
-ces lignes \`a la fin de la d\'efinition de macro \`a la place.
-Vous pourriez aussi r\'esoudre le probl\`eme en ne laissant jamais de ligne
-blanche apr\`es l'appel de macro---si vous voulez une ligne blanche simplement
-pour rendre votre saisie plus lisible, commencez la par un `|%|'.
-
-
-\section Changer la forme du paragraphe
-
-\null
-\bix^^{paragraphes//forme}
-Plusieurs param\`etres de \TeX---^|\hangindent|, ^|\leftskip|, etc.---%
-affectent la fa\c con dont \TeX\ forme des paragraphes et les coupe en lignes.
-^^{coupures de ligne}
-Ces param\`etres sont utilis\'es indirectement dans des commandes \plainTeX{}
-telles que ^|\narrower| et ^|\hang|~; vous pouvez aussi les assigner directement.
-Si vous avez utilis\'e une de ces commandes (ou chang\'e un de ses param\`etres),
-mais que le changement de commande ou de param\`etre ne semble pas avoir le
-moindre effet sur un paragraphe, le probl\`eme peut \^etre que vous avez termin\'e
-un groupe avant d'avoir termin\'e le paragraphe. Par exemple~:
-\csdisplay
-{\narrower She very soon came to an open field, with
-a wood on the other side of it: it looked much darker
-than the last wood, and Alice felt a little timid
-about going into it.}
-|
-Ce paragraphe ne sera par compos\'e en resserr\'e parce que l'accolade fermante
-termine le groupe |\narrower| avant que \TeX\ ait eu une chance de
-couper le paragraphe en lignes. \`a la place, mettez un |\par| avant
-l'accolade fermante~; ensuite vous obtiendrez l'effet que vous voulez.
-^^|\par//en changeant la forme du paragraphe|
-\eix^^{paragraphes//forme}
-
-
-\section Mettre des paragraphes dans une bo\^\i te
-
-Supposez que vous ayez quelques paragraphes de texte que vous voulez mettre
-\`a un endroit particulier sur la page. La mani\`ere \'evidente de faire cela est
-d'englober les paragraphes dans une hbox d'une taille appropri\'ee et ensuite de
-placer la hbox o\`u vous voulez qu'elle soit. H\'elas, la mani\`ere \'evidente
-ne marche pas parce que \TeX\ ne fait pas de coupure de ligne dans
-le mode horizontal restreint.
-^^{mode restreint//horizontal}
-Si vous l'essayez,
-vous obtiendrez un message d'erreur trompeur vous sugg\'erant que vous
-avez oubli\'e la fin d'un groupe.
-Le moyen de contourner cette restriction est d'\'ecrire~:
-\csdisplay
-\vbox{\hsize = !<dimen> !dots !<paragraphs> !dots}
-|
-o\`u \<dimen> est la longueur de ligne que vous voulez pour les paragraphes.
-C'est ce dont vous avez besoin, en particulier, quand vous voulez englober
-des paragraphes dans une bo\^\i te (une bo\^\i te entour\'ee de traits droits, pas une
-bo\^\i te \TeX).
-
-\section Dessiner des lignes
-
-\null
-\bix^^{filets}
-Vous pouvez utiliser les commandes ^|\hrule| et ^|\vrule| (\xref\hrule)
-pour tracer des lignes, c'est-\`a-dire, des filets. Vous devez
-savoir (a)~o\`u vous pouvez utiliser chaque commandes et
-(b)~comment \TeX\ d\'etermine les longueurs des filets quand
-vous n'avez pas donn\'e les longueurs explicitement.
-\ulist
-\li Vous pouvez utiliser |\hrule| quand \TeX\ est dans un mode vertical et |\vrule|
-quand \TeX\ est dans un mode horizontal.
-Ces r\`egles signifient que
-vous ne pouvez mettre un filet horizontal dans une hbox ou un filet vertical
-dans une vbox.
-Vous pouvez, n\'eanmoins, construire un filet horizontal qui semble vertical en
-sp\'ecifiant les trois dimensions et en le rendant grand et fin.
-De m\^eme, vous pouvez construire un filet vertical qui semble horizontal
-en le rendant court, plat et allong\'e.
-
-\li Un filet horizontal \`a l'int\'erieur d'une vbox
-a la m\^eme largeur que la vbox si vous n'avez pas
-donn\'e la largeur du filet explicitement.
-Des filets verticaux
-\`a l'int\'erieur de hbox r\'eagissent de mani\`ere analogue.
-Si vos filets ressortent trop longs ou trop courts,
-r\'eglez les dimensions de la bo\^\i te englobante.
-\endulist
-
-Comme exemple, supposon que vous voulez produire~:
-\display{%
-\hbox{\vrule
- \vbox{\hrule\vskip 3pt
- \hbox{\hskip 3pt
- \vbox{\hsize .7in\raggedright
- \noindent Help! Let me out of here!}%
- \hskip 3pt}
- \vskip 3pt\hrule}%
-\vrule}}
-L'entr\'ee suivante le fera~:
-\csdisplay
-\hbox{\vrule
- \vbox{\hrule \vskip 3pt
- \hbox{\hskip 3pt
- \vbox{\hsize = .7in \raggedright
- \noindent Help!! Let me out of here!!}%
- \hskip 3pt}%
- \vskip 3pt \hrule}%
-\vrule}
-|
-Nous devons mettre le texte dans un vbox de fa\c con \`a ce que \TeX\
-l'ex\'ecute comme un paragraphe.
-Les quatre niveaux d'embo\^\i tement sont r\'eellement
-n\'ecessaires---si vous en doutez, essayez d'ex\'ecuter cet exemple avec moins de
-niveaux.
-\eix^^{filets}
-
-
-\section Cr\'eer des ent\^etes ou des pieds de page multi-lignes
-
-\null
-\xrdef{bighead}
-\bix^^{ent\^etes//multi-lignes}
-\bix^^{pieds de page//multi-lignes}
-Vous pouvez utiliser les commandes ^|\headline| et ^|\footline|
-(\xref\footline) pour produire des ent\^etes et des pieds de page, mais
-elles ne marchent pas proprement pour des ent\^etes et des pieds de page
-de plus d'une ligne. N\'eanmoins, vous pouvez obtenir des ent\^etes et des pieds
-de page multi-lignes en red\'efinissant certaines des macros subsidiaires dans
-la routine de sortie de \TeX.
-
-Pour un ent\^ete multi-lignes, vous devez faire trois choses~:
-\olist\compact
-\li Red\'efinir la macro ^|\makeheadline| qui est appel\'ee de la routine de
-sortie de \TeX.
-\li Augmenter ^|\voffset| du montant d'espace vertical consomm\'e par les
-lignes en plus.
-\li Diminuer ^|\vsize| du m\^eme montant.
-\endolist
-\noindent L'exemple suivant montre comment vous pourriez faire cela~:
-\csdisplay
-\advance\voffset by 2\baselineskip
-\advance\vsize by -2\baselineskip
-\def\makeheadline{\vbox to 0pt{\vss\noindent
- Header line 1\hfil Page \folio\break
- Header line 2\hfil\break
- Header line 3\hfil}%
- \vskip\baselineskip}
-|
-Vous pouvez normalement suivre le mod\`ele de cette d\'efinition, substituez
-simplement vos propres lignes d'ent\^ete et choisissez un multiple de
-|\baselineskip| appropri\'e (un de moins que le nombre de lignes dans l'ent\^ete).
-
-Pour un pied de page multi-lignes, la m\'ethode est similaire~:
-\olist
-\li Red\'efinissez la macro ^|\makefootline| qui est appel\'ee
-de la routine de sortie de \TeX.
-\li Diminuez ^|\vsize| du montant d'espace vertical consomm\'e par les
-lignes en plus.
-\endolist
-\noindent L'exemple suivant montre comment vous pouvez faire cela~:
-\csdisplay
-\advance\vsize by -2\baselineskip
-\def\makefootline{%
- \lineskip = 24pt
- \vbox{\raggedright\noindent
- Footer line 1\hfil\break
- Footer line 2\hfil\break
- Footer line 3\hfil}}
-|
-Encore une fois, vous pouvez normalement suivre le mod\`ele de cette d\'efinition.
-La valeur de |\lineskip| d\'etermine le montant d'espace entre la ligne de
-base de la derni\`ere ligne du texte principal sur la page et la ligne de
-base de la premi\`ere ligne du pied de page.
-\eix^^{ent\^etes//multi-lignes}
-\eix^^{pieds de page//multi-lignes}
-
-
-\section Trouver des accolades orphelines
-
-\bix^^{accolades//orphelines}
-\xrdef{mismatched}
-La plupart de temps, quand votre entr\'ee \TeX\ souffre d'accolades non concordantes,
-vous obtenez un diagnostic de \TeX\ assez proche de l'endroit o\`u vous avez
-r\'eellement fait l'erreur.
-Mais une des erreurs les plus frustrantes que vous puissiez subir d'une
-ex\'ecution de \TeX,
-juste avant que \TeX\ s'arr\^ete, est
-la suivante~:
-\csdisplay
-(\end occurred inside a group at level 1)
-|
-Cela indique qu'il y a une accolade ouvrante en trop
-ou une accolade fermante manquante quelque part
-dans votre document, mais il ne vous donne aucune indication du tout
-sur l'endroit o\`u le probl\`eme arrive. Donc comment pouvez vous trouver~?
-
-Un truc de d\'ebuggage que nous trouvons pratique est
-d'ins\'erer la ligne suivante ou son \'equivalente
-\`a cinq ou six endroits \'egalement espac\'es dans le document (et pas dans
-un groupe connu)~:
-\csdisplay
-}% une fausse fermante
-|
-supposons que le probl\`eme soit une accolade ouvrante en trop.
-Si elle est, disons entre la troisi\`eme et la quatri\`eme fausse fermante,
-vous obtiendrez des messages d'erreur des trois premi\`eres fausses fermantes
-mais pas de la quatri\`eme. La raison est que \TeX\ ignorera les trois premi\`ere
-fausses fermantes apr\`es s'en \^etre plaint, mais la quatri\`eme fausse fermante
-appariera l'accolade ouvrante en trop. Ainsi vous savez que l'accolade ouvrante
-en trop est quelque part entre la troisi\`eme et la quatri\`eme fausse fermante.
-Si la r\'egion de l'erreur est encore trop large pour que vous la trouviez,
-enlevez simplement le jeu original de fausse fermantes et r\'ep\'etez le
-processus dans cette r\'egion.
-Si le probl\`eme est une accolade fermante manquante plut\^ot qu'une ouvrante en trop,
-vous serez capable de la d\'ecouvrir quand vous aurez trouv\'e sa compagne.
-
-Cette m\'ethode ne marche pas dans toutes les circonstances. En particulier,
-elle ne marche pas si votre document consiste en plusieurs groupes r\'eellement grands.
-Mais souvent vous pourrez trouver des variations de cette m\'ethode qui vous
-m\`eneront vers cette accolade insaisissable.
-
-Si tout le reste \'echoue, essayez de raccourcir votre entr\'ee en retirant
-la derni\`ere moiti\'e du fichier
-(apr\`es sauvegarde de la version originale d'abord~!) ou en ins\'erant une
-commande |\bye| au milieu.
-Si l'erreur persiste, vous saurez qu'elle est dans la premi\`ere moiti\'e~;
-Si \c ca tourne, vous saurez qu'elle est dans la seconde.
-En r\'ep\'etant ce processus vous trouverez \'eventuellement l'erreur.
-\eix^^{accolades//orphelines}
-
-
-\section Fixer des dimensions
-
-\null
-\bix^^{\<dimension>}
-La mani\`ere la plus simple de d\'efinir une dimension est de la sp\'ecifier directement, c'est-\`a-dire~:
-\csdisplay
-\hsize = 6in
-|
-Vous pouvez aussi sp\'ecifier une dimension en terme d'autres dimensions ou comme un m\'elange
-de diff\'erentes unit\'es, mais c'est du boulot. Il y a deux fa\c cons
-de construire une dimension comme une combinaison~:
-\olist\compact
-\li Vous pouvez ajouter une dimension \`a un param\`etre de dimension ou \`a un registre de
-dimension.
-Par exemple~:
-\csdisplay
-\hsize = 6in \advance\hsize by 3pc % 6in + 3pc
-|
-\li Vous pouvez indiquer une dimension comme un multiple d'un param\`etre
-ou un registre de dimension ou de ressort.
-Dans ce cas, \TeX\ convertit le ressort en une dimension en sacrifiant
-l'\'etirement et le r\'etr\'ecissement. Par exemple~:
-\csdisplay
-\parindent = .15\hsize
-\advance\vsize by -2\parskip
-|
-\endolist
-\eix^^{\<dimension>}
-
-
-\section Cr\'eer des polices composites
-
-\null
-\bix^^{polices//composites}
-Il est parfois utile de cr\'eer une ``police composite'',
-nomm\'ee par une s\'equence de contr\^ole $\cal F$, dans laquelle tous les caract\`eres
-sont pris d'une police $f_1$ sauf pour certains qui sont emprunt\'es d'une autre
-police $f_2$.
-Vous pourrez alors mettre du texte dans la police composite en utilisant $\cal F$ juste
-comme vous utilisez toute autre identifiant de police.
-
-Vous pouvez cr\'eer une telle police composite en d\'efinissant $\cal F$ comme une macro.
-Dans la d\'efinition de $\cal F$, vous s\'electionnez d'abord la police $f_1$ et ensuite
-d\'efinissez des s\'equences de contr\^ole qui produisent les caract\`eres emprunt\'es,
-mis dans $f_2$.
-Par exemple, supposons que vous voulez cr\'eer une police composite |\britrm|
-qui a tous les caract\`eres de |cmr10|
-sauf pour le signe dollar, pour lequel vous voulez emprunter
-le symbole de la livre sterling de la police |cmti10|.
-Le symbole de la livre sterling de |cmti10|
-apparait \`a la m\^eme position de police que le signe dollar dans |cmr10|.
-Voici comment faire~:
-\csdisplay
-\def\britrm{%
- \tenrm % \tenrm names the cmr10 font
- \def\${{\tenit\char `\$}}% \tenit names the cmti10 font.
-}
-|
-Maintenant \`a chaque fois que vous lancerez la police appel\'ee |\britrm|,
-|\$| produira un symbole de livre sterling.
-
-Vous pouvez aussi avoir le m\^eme effet en changeant les codes de cat\'egorie
-des caract\`eres en question pour rendre ces caract\`eres actifs et ensuite
-procurer une d\'efinition pour le caract\`ere. Par exemple~:
-\csdisplay
-\catcode `* = \active
-\def*{{\tentt \char `\*}}
-|
-Dans ce cas l'ast\'erisque sera pris de la police |\tentt|.
-Si cous saisissez alors la ligne d'entr\'ee~:
-\csdisplay
-Debbie was the * of the show.
-|
-elle sera compos\'ee ainsi~:
-{\font\tentt=cmtt10%
-\catcode `* = \active
-\def*{{\tentt \char `\*}}%
-\display{Debbie was the * of the show.}}
-\noindent
-
-\eix^^{polices//composites}
-
-
-\section Reproduire du texte verbatim
-
-\null
-^^{texte verbatim}\xrdef{verbatim}
-Du texte verbatim est du texte qui est reproduit dans un document
-compos\'e exactement comme il appara\^\i t dans son entr\'ee.
-L'usage le plus commun du texte verbatim est dans la composition
-d'entr\'ee informatique,
-incluant les programmes pour ordinateurs et les entr\'ees de \TeX\ lui-m\^eme.
-^^{programmes informatiques, composer des}
-l'entr\'ee informatique n'est pas simple \`a reproduire pour deux raisons~:
-\olist\compact
-\li Certains caract\`eres (symboles de contr\^ole, caract\`eres d'\'echappement, accolades,
-etc.) ont
-une signification sp\'eciale en \TeX.
-\li Les fins de ligne et les espaces multiples sont traduits en espaces simples.
-\endolist
-\noindent
-Dans le but de produire du texte verbatim, vous devez effacer les significations sp\'eciales
-et d\'ebrancher la traduction. C'est beaucoup mieux fait par des macros.
-
-Pour effacer les signification sp\'eciales, vous devez changer les codes de cat\'egorie
-des caract\`eres qui ont des significations sp\'eciales.
-^^{codes de cat\'egorie//pour texte verbatim}
-La macro suivante illustre comment vous devez le faire~:
-\csdisplay
-\chardef \other = 12
-\def\deactivate{%
- \catcode`\\ = \other \catcode`\{ = \other
- \catcode`\} = \other \catcode`\$ = \other
- \catcode`\& = \other \catcode`\# = \other
- \catcode`\% = \other \catcode`\~ = \other
- \catcode`\^ = \other \catcode`\_ = \other
-}
-|
-Mais attention~! Une fois que vous avez chang\'e les codes de cat\'egorie de ce fa\c con, vous perdez
-la facult\'e d'utiliser des s\'equences de contr\^ole puisqu'il n'y a plus de caract\`ere
-d'\'echappement. Vous avez besoin d'un moyen de revenir dans le mode normal
-d'op\'eration. Nous expliquerons comment faire cela dans un moment, apr\`es avoir consid\'er\'e
-l'autre probl\`eme~: d\'ebrancher la traduction des espaces et des fins de ligne.
-
-\PlainTeX\ a deux commandes qui ensemble r\'esolvent en partie le probl\`eme~:
-^|\obeyspaces| \ctsref{\obeyspaces} et ^|\obeylines| \ctsref{\obeylines}.
-Les deux choses qu'elles ne font pas sont de pr\'eserver les espaces au d\'ebut
-d'une ligne
-et de pr\'eserver les lignes blanches.
-Pour cela vous avez besoin de mesures plus fortes---qui sont apport\'ees par
-la macro ^|\obeywhitespace| que nous sommes sur le point de d\'efinir.
-
-\TeX\ normalement insiste pour collecter des lignes par paragraphes.
-Un moyen de le convaincre de prendre litt\'eralement les bords des lignes
-est de transformer les lignes individuelles en paragraphes.\footnote{%
-Un autre moyen est de transformer le caract\`ere de fin de ligne en une commande
-|\break| et d'ajouter un ressort infini \`a la fin de chaque ligne.
-^^|\break//fin de ligne sur|
-}
-Vous pouvez faire cela en red\'efinissant le caract\`ere de fin de ligne pour produire
-la s\'equence de contr\^ole |\par|. Les trois d\'efinitions de macro suivantes
-montrent comment~:
-
-^^{espace blanc, pr\'eserver de l'}
-\xrdef{\obeywhitespace}
-\csdisplay
-\def\makeactive#1{\catcode`#1 = \active \ignorespaces}
-{% The group delimits the text over which ^^M is active.
- \makeactive\^^M %
- \gdef\obeywhitespace{%
- % Use \gdef so the definition survives the group.
- \makeactive\^^M %
- \let^^M = \newline %
- \aftergroup\removebox % Kill extra paragraph at end.
- \obeyspaces %
- }%
-}
-\def\newline{\par\indent}
-\def\removebox{\setbox0=\lastbox}
-
-|
-Un point subtil de la d\'efinition de |\obeywhitespace| est que
-|^^M| doit \^etre rendu actif \`a la fois
-quand |\obeywhitespace| est \emph{d\'efinie} et quand
-elle est \emph{utilis\'ee}.
-
-Pour \^etre capable de revenir \`a des op\'erations normales apr\`es du texte verbatim,
-vous devez choisir un caract\`ere qui
-appara\^\i t rarement voire pas du tout dans le texte verbatim. Ce caract\`ere
-sert comme caract\`ere d'\'echappement temporaire.
-La barre verticale (|!||) est parfois un bon choix.
-Avec ce choix, les macros~:
-\csdisplay
-\def\verbatim{\par\begingroup\deactivate\obeywhitespace
- \catcode `\!| = 0 % Make !| the new escape character.
-}
-
-\def\endverbatim{\endgroup\endpar}
-
-\def\!|{!|}
-|
-fera l'affaire. Dans le texte verbatim, vous pouvez utiliser une double
-barre verticale (|!|!||) pour en faire une, et vous terminez le texte verbatim
-avec |!|endverbatim|.
-
-Il y a plusieurs variations de cette technique~:
-\ulist
-\li Si un langage informatique a des mots-cl\'es, vous pouvez convertir
-chaque mot-cl\'e en une commande qui compose
-ce mot-cl\'e en caract\`ere gras. Chaque mot-cl\'e de l'entr\'ee doit \^etre alors
-pr\'ec\'ed\'e par le caract\`ere d'\'echappement.
-\li Si vous avez un caract\`ere (encore, supposons qu'il s'agisse de la barre verticale)
-qui n'appara\^\i t
-\emph{jamais} dans le texte verbatim, vous pouvez le rendre actif et
-lui faire finir le texte verbatim. Les d\'efinitions de macro ressemblent alors
-\`a cela~:
-\csdisplay
-{\catcode `\!| = \active
-\gdef\verbatim{%
- \par\begingroup\deactivate\obeywhitespace
- \catcode `!| = \active
- \def !|{\endgroup\par}%
-}}
-|
-\endulist
-
-Les id\'ees pr\'esent\'ees ici ne procurent qu'une simple approche de la composition
-de programmes informatiques.
-Le reproduction verbatim n'est souvent pas aussi r\'ev\'elatrice ou lisible
-qu'une version qui utilise des conventions typographiques qui refl\`etent la
-syntaxe et m\^eme les s\'emantiques du programme.
-Si vous d\'esirez poursuivre ce sujet plus loin, nous vous recommandons le livre suivant~:
-
-\smallskip{\narrower\noindent
-Baecker, Ronald M., and Marcus, Aaron, {\sl Human Factors
-and Typography for More Readable Programs}. Reading, Mass.:
-Addison-Wesley, 1990.\par}
-
-
-\section Utiliser des macros externes
-
-\null
-^^{s\'equence de contr\^ole interdite}^^{condition incompl\`ete}
-Si \TeX\ se plaint d'une ``s\'equence de contr\^ole interdite [forbidden control
-sequence]'', vous avez probablement utilis\'e une macro externe dans un contexte
-non-externe \seeconcept{outer}.
-^^{macros//outer}
-Une macro externe est une macro dont la d\'efinition est
-pr\'ec\'ed\'ee par ^|\outer|.
-Une macro externe ne peut pas \^etre utilis\'ee dans un argument de macro, dans une
-d\'efinition de macro,
-dans le pr\'eambule d'un alignement ou dans un texte conditionnel,
-c'est-\`a-dire, un texte qui ne sera d\'evelopp\'e que quand un test conditionnel
-aura un r\'esultat particulier.
-^^{alignements//s\'equence de contr\^ole outer dans des}
-Certaines macros ont \'et\'e d\'efinies comme externes parce qu'elles n'ont pas de
-raison d'\^etre utilis\'ees dans ces contextes et qu'un tel usage est probablement une erreur.
-Le seul moyen de contourner ce probl\`eme est de red\'efinir la
-macro ou de d\'eplacer son utilisation dans un contexte acceptable.
-
-Utiliser une macro externe dans un contexte impropre peut aussi provoquer
-que \TeX\ se plaigne d'un ``runaway situation'' ou d'un ``incomplete conditional''.
-Le probl\`eme peut \^etre difficile \`a diagnostiquer parce que le message d'erreur
-ne donne aucun indice ni ce qui se passe. Si vous obtenez un tel message
-d'erreur, recherchez autour un appel \`a une macro externe.
-Vous ne pouvez pas toujours savoir si une macro particuli\`ere est externe, mais
-la commande `^|\show||\a|' \ctsref{\show}
-vous montrera la d\'efinition de |\a| et vous dira aussi
-si |\a| est externe.
-
-
-\section Changer des codes de cat\'egorie
-
-\null
-\bix^^{codes de cat\'egorie//changement}
-Il est parfois pratique de faire des changements locaux au code de cat\'egorie
-d'un caract\`ere \`a une certaine partie de votre document. Par exemple, vous devez
-composer un programme informatique
-^^{programmes informatiques, composer des}
-ou quelque chose d'autre qui utilise normalement des caract\`eres actifs
-pour un usage sp\'ecial. Vous voudrez alors d\'esactiver ces caract\`eres pour que
-\TeX\ les traite comme tout autre caract\`ere.
-
-Si vous faites un tel changement local au code de cat\'egorie d'un caract\`ere,
-vous serez parfois constern\'e de trouver que \TeX\ semble ne pr\^eter aucune
-attention quelconque a votre changement.
-Deux aspects du comportement de \TeX\ sont vraisemblablement en cause~:
-\olist
-\li \TeX\ d\'etermine le code de cat\'egorie d'un caract\`ere entr\'ee
-^^{caract\`eres entr\'ees}
-et l'attache au caract\`ere quand il le lit.
-Supposons que vous lisiez un tilde (|~|) et qu'ensuite vous
-changiez le code de cat\'egorie des tildes,
-mais fassiez le changement
-avant que l'estomac de \TeX\ ait r\'eellement ex\'ecut\'e de tilde \emph{particulier\/}
-\seeconcept{\anatomy}.
-\TeX\ r\'epondra encore que ce
-tilde utilise le code de cat\'egorie comme il \'etait avant le changement.
-Cette difficult\'e survient typiquement
-quand le tilde fait partie d'un argument d'une macro
-et que la macro elle-m\^eme change le code de cat\'egorie du tilde.
-
-\li Quand \TeX\ assortit un appel d'une macro \`a la d\'efinition de cette macro,
-il n'assortit pas seulement les caract\`eres du mod\`ele de param\`etre mais aussi
-leurs codes de cat\'egorie.
-^^{macros//arguments de}
-^^{macros//param\`etres de}
-Si le code de cat\'egorie d'un mod\`ele caract\`ere n'est pas \'egal au
-code de cat\'egorie du m\^eme caract\`ere dans l'appel, \TeX\ ne consid\`erera pas
-les caract\`eres comme concordants.
-Cet effet peut produire de myst\'erieux r\'esultats parce que il
-\emph{fait} comme si le mod\`ele concorde.
-Par exemple, si vous avez d\'efini une macro~:
-\csdisplay
-\def\eurodate#1/#2/#3{#2.#1.#3}
-|
-alors le caract\`ere slash devra avoir le m\^eme code de cat\'egorie quand vous
-appelez |\eurodate| que quand vous avez d\'efini |\eurodate|.
-\endolist
-Si le probl\`eme surgit parce que le caract\`ere g\^enant est un argument d'une
-macro, alors
-le rem\`ede usuel est de red\'efinir la macro comme une paire
-de macros |\mstart| et |\mfinish|, o\`u
-|\mstart| doit \^etre appel\'ee avant le texte d'argument
-et |\mfinish| doit \^etre appel\'e apr\`es.
-|\mstart| alors initialise les codes de cat\'egorie et |\mfinish|
-d\'efait le changement, peut-\^etre simplement en finissant un groupe.
-\eix^^{codes de cat\'egorie//changement}
-
-
-\section Faire des fichiers de macro plus lisibles
-
-\null
-\bix^^{macros//rendre lisible des}
-Vous pouvez faire un fichier de macros plus lisible en
-mettant les codes de cat\'egories de l'espace \`a $9$ (caract\`ere ignor\'e)
-et ^|\endlinechar| \ctsref{\endlinechar} \`a $-1$ au d\'ebut du fichier.
-Vous pourrez alors utiliser des espaces et des fins de lignes librement dans les
-d\'efinitions de macro sans obtenir d'espaces ind\'esirables quand vous appelez
-les macros.
-Les caract\`eres ignor\'es ne g\'en\`ereront pas d'espaces, mais agiront encore
-comme terminateurs pour des s\'equences de contr\^ole.
-Si vous voulez r\'eellement un espace, vous pouvez encore l'obtenir avec la
-commande ^|\space| \ctsref\space.
-
-Bien s\^ur vous devrez restaurer les codes de cat\'egories de l'espace et de la fin de ligne
-\`a leur valeur normale ($10$ et $5$, respectivement) \`a la fin du fichier.
-Vous pouvez faire cela soit en englobant tout le fichier dans un groupe soit
-en restaurant les valeurs explicitement. Si vous choisissez d'englober le
-fichier dans un groupe, vous devrez alors aussi mettre ^|\globaldefs| \`a $1$
-pour que toutes les d\'efinitions de macro soient globales et donc visibles
-en dehors du groupe.
-
-Un exemple miniature d'un fichier de macro de cette forme est~:
-
-\csdisplay
-\catcode `\ = 9 \endlinechar = -1
-
-\def \makeblankbox #1 #2 {
- \hbox{\lower \dp0 \vbox{\hidehrule {#1} {#2}
- \kern -#1 % overlap rules
- \hbox to \wd0{\hidevrule {#1} {#2}%
- \raise \ht0 \vbox to #1{} % vrule height
- \lower \dp0 \vtop to #1{} % vrule depth
- \hfil \hidevrule {#2} {#1} }
- \kern -#1 \hidehrule {#2} {#1} } }
-
-\def\hidehrule #1 #2 {
- \kern -#1 \hrule height#1 depth#2 \kern -#2 }
-\def\hidevrule #1 #2 {
- \kern -#1 {\dimen0 = #1 \advance \dimen0 by #2
- \vrule width \dimen0 } \kern -#2 }
-
-\catcode `\ = 10 \endlinechar = `\^^M
-|
-\noindent
-Sans les changement de code de cat\'egorie,
-ces macros auraient \'et\'e \'ecrites de mani\`ere beaucoup plus compacte, utilisant moins
-d'espaces et plus de `|%|' \`a la fin des lignes.
-\eix^^{macros//rendre lisible des}
-
-\endchapter\byebye
-
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros +\chapter{Trucs et astuces} + +\chapterdef{tips} + +\TeX\ est un programme complexe qui travaille parfois de fa\c con +myst\'e\-rieuse. Dans cette section nous vous offrons quelques trucs +pour r\'esoudre les probl\`emes que vous pourrez rencontrer et expliquer +quelques techniques pratiques. + + +\section Corriger de mauvaises coupures de page + +\bix^^{coupures de page//mauvaises} +Parfois \TeX\ coupe une page juste au milieu du mat\'eriel que vous voulez +garder ensemble.---par exemple, une ent\^ete de section et le texte qui la +suit ou une courte suite d'items li\'es. Il y a deux moyens de corriger la +situation~: +\ulist\compact +\li Vous pouvez forcer le mat\'eriel \`a rester ensemble. +\li Vous pouvez forcer une coupure de page \`a un endroit diff\'erent. +\endulist + +La plus simple fa\c con de forcer \TeX\ a garder le mat\'eriel ensemble sur une +page est de l'englober dans un vbox en utilisant la commande |\vbox| +\ctsref{\vbox}. +^^|\vbox//emp\^echer des coupures de page avec| +Une vbox est normalement meilleure qu'une hbox pour faire cela parce que le +plus souvent, le mat\'eriel \`a garder ensemble, par exemple, une suite de +paragraphes, sera du mat\'eriel en mode vertical. Vous pouvez faire pr\'ec\'eder et +suivre la vbox par une commande de paragraphe implicite ou explicite (soit +une ligne blanche, soit un |\par|)~; autrement \TeX\ pourrait essayer de +faire la partie vbox sur un paragraphe adjacent. La m\'ethode vbox a une +limitation importante~: vous ne pouvez pas l'appliquer \`a une portion de +texte inf\'erieure a un paragraphe. + +Vous pouvez parfois garder les lignes d'un paragraphe ensemble en +l'englobant dans un groupe et en donnant \`a |\interlinepenalty| +\ctsref{\interlinepenalty} +la valeur $10000$ au d\'ebut du groupe (ou n'importe o\`u avant la fin du +paragraphe). +Cette m\'ethode demandera \`a \TeX\ de consid\'erer les coupures de page dans ce +paragraphe comme \'etant infiniment ind\'esirables. +N\'eanmoins~; si toutes les coupures de page que \TeX\ peut trouver sont +infiniment ind\'esirables, il coupera la page dans le paragraphe quand m\^eme. + +Une commande ^|\nobreak| (\xref{vnobreak}) +apr\`es la fin d'un paragraphe emp\`eche \TeX\ +de couper la page sur l'item suivant +(a moins que cet item provoque un penalty inf\'erieur \`a $10000$). +C' est aussi la meilleure fa\c con d'emp\^echer une coupure de page apr\`es une ent\^ete, +puisque une ent\^ete r\'eagit normalement comme un paragraphe. +Le |\nobreak| doit suivre la ligne blanche ou le |\par| qui termine +la paragraphe pour que \TeX\ ne traite pas le |\nobreak| comme faisant partie +du paragraphe. +Pour que le |\nobreak| soit effectif, il doit aussi \^etre plac\'e avant +tout point de coupure l\'egal \`a la fin du paragraphe. +Le ressort que \TeX\ ins\`ere avant le paragraphe suivant est comme un point +de coupure, +et ainsi pour tout ressort vertical que vous ins\'erez explicitement apr\`es un +paragraphe. +Ainsi, le |\nobreak| doit normalement \^etre la toute premi\`ere chose apr\`es +la fin du paragraphe ou de l'ent\^ete. + +Vous pouvez utiliser la commande ^|\eject| \ctsref{\eject} +pour forcer \TeX\ \`a couper une page \`a un endroit +particulier. Dans un paragraphe, vous pouvez utiliser la combinaison +`|\vadjust{\vfill\eject}|' +\ctsref{\vadjust} +^^|\vadjust| +pour forcer une coupure apr\`es la prochaine ligne de sortie compl\`ete. +La raison de faire pr\'ec\'eder |\eject| par ^|\vfill| +\ctsref{\vfill} est d'obliger +\TeX\ \`a remplir la page avec un espace blanc. +De toute fa\c con, utiliser |\eject| pour r\'esoudre des probl\`emes de coupure de page +a un d\'esavantage majeur~: +si les fronti\`eres de page de votre document changent, +les coupures de page que vous avez ins\'er\'ees peuvent ne plus \^etre l\`a o\`u vous +les voulez. + +Si vous ne procurez pas \`a \TeX\ une commande |\vfill| pour remplir la page +apr\`es un |\eject|, +\TeX\ redistribue l'espace blanc exc\'edentaire le mieux qu'il peut et alors +se plaint g\'en\'eralement d'un +``underfull |\vbox| (badness $10000$) has occurred while |\output| is active.'' +Vous pouvez rencontrer un probl\`eme similaire avec +toutes les m\'ethodes mentionn\'ees ci-dessus pour englober du +mat\'eriel que vous voulez garder li\'e. + +La commande ^|\filbreak| \ctsref\filbreak{} +\xrdef{filbreak} +procure un moyen de garder les lignes d'un ou plusieurs paragraphes +(ou autre mat\'eriel de mode vertical) li\'e sur une page. +Si vous englobez un paragraphe entre |\filbreak|, \TeX\ ignorera effectivement +les |\filbreak| si le paragraphe d\'ebute sur la page courante et +coupe la page avant le premier |\filbreak| si le paragraphe ne d\'ebute pas. +Si vous mettez des |\filbreak| autour de chaque paragraphe dans une s\'equence de paragraphes, +comme ceci~: +{\obeylines\display{ +{\tt \\filbreak} +\<paragraph> +{\tt \\filbreak} +\<paragraph> +{\tt \\filbreak} +\leavevmode\indent\vdots +\<paragraph> +{\tt \\filbreak} +}} +%\vfil\eject +\noindent +\TeX\ gardera les lignes de chaque paragraphe li\'es sur une page. +Si \TeX{} coupe une page sur un |\filbreak|, il remplira le bas de la +page avec un espace blanc. + +Parfois vous pourrez demander \`a \TeX\ de modifier la longueur d'une page +en changeant le param\`etre ^|\looseness| \ctsref\looseness{} pour un ou plusieurs paragraphes. +Rendre un |\looseness| n\'egatif dans un paragraphe fait que \TeX\ essaye de +s\'eparer le paragraphe en moins de lignes~; le rendre positif fait que \TeX\ essaye +d'\'etendre le paragraphe en plus de lignes. Le d\'esavantage de changer |\looseness| +est que l'espacement inter-mot de la r\'egion affect\'e ne sera pas optimal. +Vous pouvez obtenir plus d'information sur le fa\c con dont \TeX\ appr\'ehende +les coupures de ligne en mettant |\tracingpages| (\xref\tracingpages) \`a $1$. + + +\section Pr\'eserver la fin d'une page + +Parfois vous avez besoin de modifier quelque chose sur une seule page et vous +voulez \'eviter de r\'eimprimer tout le document. Si vos modifications ne changent +pas trop la page, il y a de l'espoir. Vous devez modifier la fin de la page +pour qu'elle tienne au m\^eme endroit~; +les m\'ethodes sont similaires \`a celles pour modifier une mauvaise coupure de page. + +Si la fin de la page originale se trouve entre des paragraphes, vous pouvez +forcer une coupure de page au m\^eme endroit en utilisant toutes les m\'ethodes +que nous avons d\'ecrites plus haut. Autrement, vous devez forcer une coupure de +ligne \emph{et} une coupure de page \`a un endroit particulier. Si la nouvelle +page est plus courte que l'ancienne, la s\'equence~: +\csdisplay +\vadjust{\vfill\eject}\break +| +^^|\vadjust| +devrait faire l'affaire. +Mais si la nouvelle page est plus longue, +le probl\`eme est plus difficile parce que \TeX\ a probablement d\'ej\`a compress\'e +la page aussi fermement qu'il le peut. Vos seuls espoirs dans ce cas sont +de mettre ^|\looseness| \ctsref\looseness{} \`a une valeur n\'egative, pour +raccourcir certains sauts verticaux sur la page, pour ajouter un peu de +r\'etr\'ecissement ^|\parskip| (\xref\parskip) s'il \'etait diff\'erent de z\'ero, ou, +en dernier recours, diminuer |\baselineskip| \ctsref{\baselineskip} +encore plus fermement. +^^|\baselineskip//et pr\'eservation de fin de page| + +\section Garder de l'espace en haut d'une page + +\null +^^{espace vertical//r\'eserver en haut d'une page} +Vous pouvez utiliser habituellement la commande |\vskip| \ctsref\vskip{} +pour garder de l'espace vertical sur une page. +Cela ne marche pas en haut d'une page, toutefois, car +\TeX\ abandonne le ressort, les cr\'enages et les p\'enalit\'es qui arrivent juste +apr\`es une coupure de page. +^^{coupures de page//ressort sur} +Utilisez la commande ^|\topglue| \ctsref\topglue\ \`a la place~; il produit +un ressort qui ne dispara\^\i t jamais. +\eix^^{coupures de page//mauvaises} + + + +\section Corriger de mauvaise coupure de ligne + +\null +\bix^^{coupures de ligne//mauvaises} +Si \TeX\ coupe une ligne au milieu du mat\'eriel que vous voulez garder +sur une seule ligne, il y a plusieurs moyens de corriger la situation~: +\ulist\compact +\li Vous pouvez forcer une coupure \`a un endroit proche avec la commande +|\break| (\xref{hbreak}). +^^|\break//corriger des coupures de ligne avec| +\li Vous pouvez ins\'erer un tilde (|~|) entre deux mots +(see \xref{@not}) pour emp\^echer une coupure entre eux \ttidxref{~} +\li Vous pouvez signaler \`a \TeX\ des c\'esures qu'il ne consid\`ererait pas +autrement en ins\'erant une ou plusieurs c\'esures optionnelles dans plusieurs +mots (voir |\-|, \xref{\@minus}). +\ctsidxref{-//sur une coupure de ligne} +^^{c\'esures optionnelles//mauvaises coupures de ligne, corriger avec} +\li Vous pouvez englober plusieurs mots dans une hbox en utilisant la +commande ^|\hbox| \ctsref{\hbox}. +\endulist + +Le d\'esavantage de toutes ces m\'ethodes, \`a part l'insertion de c\'esures +optionnelles, est qu'elles rendent impossible pour \TeX\ de trouver un jeu +de coupures de ligne satisfaisant. Si cela arrive n\'eanmoins, \TeX\ trouvera +une ou plusieurs bo\^\i tes trop ou pas assez pleines et s'en plaindra. +^^{underfull boxes} ^^{overfull boxes} +La m\'ethode hbox a un d\'esavantage de plus~: parce que \TeX\ voit une hbox +comme une entit\'e simple sans consid\'erer son contexte, l'espace entre les mots +dans la hbox peut ne pas \^etre coh\'erent avec celui du reste de la ligne. +\eix^^{coupures de ligne//mauvaises} + + +\section Corriger des bo\^\i tes trop ou pas assez pleines + +\null +\bix^^{overfull boxes} +\bix^^{underfull boxes} +\bix^^{\boites//overfull} +\bix^^{\boites//underfull} +Si \TeX\ se plaint d'une bo\^\i te trop pleine, cela signifie que vous avez mis +plus de mat\'eriel dans une bo\^\i te qu'elle ne peut en contenir. +Similairement, si \TeX\ se plaint d'une bo\^\i te pas assez pleine, cela signifie +que vous n'avez pas mis assez de mat\'eriel dans la bo\^\i te. Vous pouvez rencontrer +ces plaintes dans de nombreuses circonstances diff\'erentes, donc, regardons +les plus communes~: + +\ulist +\li Une bo\^\i te trop pleine d'une ligne d'un paragraphe indique que la ligne +\'etait trop longue et que \TeX\ ne peut pas r\'earranger le paragraphe pour +rendre la ligne plus courte. Si vous mettez ^|\emergencystretch| +\ctsref{\emergencystretch} \`a une valeur diff\'erente de z\'ero, cela peut +r\'esoudre le probl\`eme en autorisant \TeX\ \`a mettre plus d'espace entre les +mots. Une autre solution est de mettre |\tolerance| \ctsref{\tolerance} +\`a $10000$, mais c'est un peu comme \'emettre des lignes avec beaucoup trop +d'espace. Sinon, une autre solution est d'ins\'erer une c\'esure optionnelle +^^{c\'esures optionnelles//overfull boxes, corriger avec} +dans un mot critique que \TeX\ ne sait pas couper. +Si tout cela ne suffit pas, vous pourriez essayer de r\'e\'ecrire le paragraphe. +Une solution qui est rarement satisfaisante est d'augmenter ^|\hfuzz| \ctsref\hfuzz, +autorisant ainsi \TeX\ de construire des lignes qui d\'epassent dans la marge droite. + +\li Une bo\^\i te pas assez pleine d'une ligne d'un paragraphe indique que la ligne +\'etait trop courte et que \TeX\ ne peut pas r\'earranger le paragraphe pour +rendre la ligne plus longue. +\TeX\ formera de telles lignes en \'etirant ses espaces inter-mots au del\`a de leurs +limites normales. Deux des solutions pour des lignes trop pleines mentionn\'ees ci-dessus +s'appliquent aussi aux lignes pas assez pleines~: +ins\'erer des c\'esures optionnelles et r\'e\'ecrire le paragraphe. +Des lignes pas assez pleines ne vous g\^eneront pas si vous utilisez un +format justifi\'e \`a gauche, que vous pourrez obtenir avec la commande +^|\raggedright| \ctsref\raggedright. + +\li La plainte~: +\csdisplay +Underfull \vbox (badness 10000) has occurred + while \output is active +| +indique que \TeX\ n'a pas assez de mat\'eriel pour remplir une page. La cause +probable est que vous avez utilis\'e des vbox pour garder du mat\'eriel ensemble +et \TeX\ a rencontr\'e une vbox pr\`es du bas d'une page qui ne peut pas rentrer +sur cette page. +Il a mis la vbox sur la page suivante, mais en ce faisant a laiss\'e trop +d'espace vide dans la page courante. +Dans ce cas vous pouvez soit ins\'erer plus d'espace quelque part sur la page +courante, soit couper la vbox en plus petites parties. + +Une autre cause possible de cette plainte est d'avoir un long paragraphe +qui occupe une page enti\`ere sans coupure. +Puisque \TeX\ ne fait pas varier l'espacement entre les lignes, +il peut \^etre incapable de remplir un trou au bas de la page +d'un montant d'une fraction de l'espacement de la ligne. +Cela peut arriver si |\vsize| \ctsref{\vsize}, la longueur de la page, +n'est pas un multiple de |\baselineskip| \ctsref{\baselineskip}, l'espace +entre des lignes de bases cons\'ecutive. + +Sinon, une autre cause de cette plainte, +similaire \`a la pr\'ec\'edente, est d'avoir mis ^|\parskip| \ctsref{\parskip}, +le ressort inter-paragraphes \`a une valeur qui n'a pas assez d'\'etirement ou de +r\'etr\'ecissement. Vous pouvez r\'esoudre ces deux derniers probl\`emes en augmentant +^|\vfuzz| \ctsref\vfuzz. + +\li La plainte +\csdisplay +Overfull \vbox (296.30745pt too high) has occurred + while \output is active +| +indique que vous avez construit une vbox qui est plus longue que la page. +vous devriez juste la faire plus courte. + +\li +\bix^^|\hbox//overfull box provenant de| +\bix^^|\vbox//overfull box provenant de| +Les seules solutions pour une hbox ou une vbox trop pleine que vous avez +construit avec les commandes |\hbox| or |\vbox| +(\pp\xrefn\hbox, \xrefn\vbox) +sont de sortir quelque chose de la bo\^\i te, ins\'erer un ressort n\'egatif avec +^|\hss| ou ^|\vss| (\xref\hss) ou d'augmenter la taille de la bo\^\i te. + +\li Si vous rencontrez une hbox ou une vbox pas assez pleine que vous avez +construit avec |\hbox| ou |\vbox|, vous feriez mieux normalement de remplir +la bo\^\i te avec ^|\hfil| ou ^|\vfil| (\xref\hfil). +\eix^^|\hbox//overfull box provenant de| +\eix^^|\vbox//overfull box provenant de| + +\endulist +\eix^^{\boites//overfull} +\eix^^{\boites//underfull} +\eix^^{overfull boxes} +\eix^^{underfull boxes} + + +\section Retrouver des espaces entre-mots perdus + +\null +^^{espace//perdu} +^^{mots trop rapproch\'es} +Si vous trouvez que \TeX\ a trop rapproch\'e deux mots, la cause courante +est une s\'equence de contr\^ole qui a absorb\'e l'espace qui la suit. Mettre +un ^{espace contr\^ol\'e} (|\!visiblespace|) apr\`es la s\'equence de contr\^ole. + + +\section \'Eviter des espaces entre-mots non d\'esir\'es + +\null +\bix^^{espace//non d\'esir\'e}\xrdef{unwantedspace} +Si vous obtenez un espace dans votre document o\`u vous ne vouliez et ne +pensiez pas en avoir, la cause la plus courante, d'apr\`es notre exp\'erience, +est une fin de ligne ou un espace apr\`es une accolade. +^^{accolades//espace apr\`es} +(Si vous faites de jolies choses avec les codes de cat\'egories, +^^{codes de cat\'egorie//cause d'espaces non d\'esir\'es} +vous avez introduit beaucoup d'autres causes toutes aussi sympathiques.) +Normalement, \TeX\ traduit une fin de ligne par un espace, et consid\`ere +un espace apr\`es une accolade ouvrante ou fermante comme significatif. + +Si l'espace non d\'esir\'e est caus\'e par un espace apr\`es une accolade dans +une ligne d'entr\'ee, retirez-le. +Si l'espace non d\'esir\'e est caus\'e par une accolade \`a la fin d'une ligne +d'entr\'ee, mettez une `|%|' imm\'ediatement apr\`es l'accolade. +{\recat!ttidxref[%//pour \'eliminer des espaces non d\'esi\-r\'es]] +Le `|%|' d\'ebute un commentaire, mais ce commentaire ne n\'ecessite aucun +texte. + +Une d\'efinition de macro peut aussi +introduire des espaces non d\'esir\'es si vous ne les avez pas \'ecrites +soigneusement. Si vous obtenez des espaces non d\'esir\'es quand vous appelez +une macro, v\'erifiez sa d\'efinition pour \^etre s\^ur que vous n'avez pas un +espace non d\'esir\'e apr\`es une accolade ou que vous n'avez pas termin\'e une ligne +de la d\'efinition imm\'ediatement apr\`es une accolade. +On termine souvent une ligne de d\'efinition de macro apr\`es une accolade pour +rendre la d\'efinition plus lisible. +Par s\'ecurit\'e, mettez un `|%|' apr\`es toute accolade qui termine une ligne de +d\'efinition de macro. +Il n'est peut-\^etre pas n\'ecessaire, mais il ne fera pas de mal.\footnote{ +Il faut reconna\^\i tre qu'il n'y a que de rares cas o\`u vous avez r\'eellement +besoin d'une fin de ligne apr\`es une accolade.} + +Si vous avez du mal \`a localiser la source d'un espace non d\'esir\'e, essayez +de mettre |\tracingcommands| \ctsref{\tracingcommands} \`a $2$. +Vous obtiendrez une commande |{blank space}| dans le fichier log pour chaque +espace que voit \TeX. + +Cela aide de conna\^\i tre les r\`egles d'espace de \TeX~: + +\olist +\li Des espaces sont ignor\'es au d\'ebut des lignes d'entr\'ee. +\li Des espaces en fin de ligne d'entr\'ee sont ignor\'es en \emph{toute} +circonstance, bien que la fin de ligne elle-m\^eme soit trait\'ee comme un espace. +(une ligne compl\`etement blanche, n\'eanmoins, g\'en\`ere un token |\par|.) +\li De multiples espaces sont trait\'es comme un espace simple, mais +seulement si ils apparaissent ensemble dans votre entr\'ee. +Ainsi un espace suivant les arguments d'un appel de macro n'est pas combin\'e +avec l'espace final produit par l'appel de macro. \`A la place, vous +obtenez deux espaces. +\li Des espaces sont ignor\'es apr\`es des mots de contr\^ole. +\li Des espaces sont de fait ignor\'es apr\`es des nombres, des dimensions +et le `|plus|' et le `|minus|' des sp\'ecifications de ressort.% +\footnote{En r\'ealit\'e, \TeX\ n'ignore qu'un seul espace \`a cet endroit. +Puisque des espaces multiples sont habituellement r\'eduits \`a un seul espace, +pourtant, l'effet est d'ignorer tout nombre d'espaces.} +\endolist +\noindent Si vous avez chang\'e le code de cat\'egorie de l'espace ou du caract\`ere +fin de ligne, oubliez tout cela. +\eix^^{espace//non d\'esir\'e} + + +\section \'Eviter un exc\`es d'espace autour d'un affichage + +\null +^^{math\'ematiques affich\'ees} +Si vous obtenez trop d'espace au dessus d'un affichage math\'ematique, c'est peut \^etre +parce que vous avez laiss\'e une ligne blanche dans votre entr\'ee avant l'affichage. +La ligne blanche d\'ebute un nouveau paragraphe et met \TeX\ en mode +vertical. Quand \TeX\ voit un `|$|' en mode vertical, il rebascule vers +le mode horizontal et ins\`ere le ressort inter-paragraphes (|\parskip|) suivie par +le ressort inter-lignes (|\baselineskip|). +Ensuite, quand il d\'ebute l'affichage lui-m\^eme, +il ins\`ere \emph{plus} de ressort (soit ^|\abovedisplayskip|, +soit ^|\abovedisplayshortskip|, selon la longueur de la ligne pr\'ec\'edente). +Ce dernier ressort est le seul que vous d\'esirez. +Pour \'eviter d'obtenir un ressort inter-paragraphe ainsi, ne laissez pas de +ligne blanche au dessus des affichages math\'ematiques ou autrement +terminez un paragraphe (avec |\par|, disons) juste avant un affichage math\'ematique. + +Similairement, +si vous obtenez trop d'espace apr\`es un affichage math\'ematique, c'est peut-\^etre +parce que vous avez laiss\'e une ligne blanche dans votre entr\'ee apr\`es l'affichage, +retirez le simplement. + + +\section \'Eviter un exc\`es d'espace apr\`es un paragraphe + +Si vous obtenez trop d'espace vertical apr\`es un paragraphe qui a \'et\'e produit +par une macro, vous devez avoir eu un ressort inter-paragraphe produit par la +macro, un paragraphe vide, et ensuite encore un ressort inter-paragraphe. +Vous pouvez d\'ebarrasser du saut du second paragraphe en ins\'erant~: +\csdisplay +\vskip -\parskip +\vskip -\baselineskip +| +juste apr\`es l'appel de la macro. +Si vous avez toujours ce probl\`eme avec une certaine macro, vous pouvez mettre +ces lignes \`a la fin de la d\'efinition de macro \`a la place. +Vous pourriez aussi r\'esoudre le probl\`eme en ne laissant jamais de ligne +blanche apr\`es l'appel de macro---si vous voulez une ligne blanche simplement +pour rendre votre saisie plus lisible, commencez la par un `|%|'. + + +\section Changer la forme du paragraphe + +\null +\bix^^{paragraphes//forme} +Plusieurs param\`etres de \TeX---^|\hangindent|, ^|\leftskip|, etc.---% +affectent la fa\c con dont \TeX\ forme des paragraphes et les coupe en lignes. +^^{coupures de ligne} +Ces param\`etres sont utilis\'es indirectement dans des commandes \plainTeX{} +telles que ^|\narrower| et ^|\hang|~; vous pouvez aussi les assigner directement. +Si vous avez utilis\'e une de ces commandes (ou chang\'e un de ses param\`etres), +mais que le changement de commande ou de param\`etre ne semble pas avoir le +moindre effet sur un paragraphe, le probl\`eme peut \^etre que vous avez termin\'e +un groupe avant d'avoir termin\'e le paragraphe. Par exemple~: +\csdisplay +{\narrower She very soon came to an open field, with +a wood on the other side of it: it looked much darker +than the last wood, and Alice felt a little timid +about going into it.} +| +Ce paragraphe ne sera par compos\'e en resserr\'e parce que l'accolade fermante +termine le groupe |\narrower| avant que \TeX\ ait eu une chance de +couper le paragraphe en lignes. \`a la place, mettez un |\par| avant +l'accolade fermante~; ensuite vous obtiendrez l'effet que vous voulez. +^^|\par//en changeant la forme du paragraphe| +\eix^^{paragraphes//forme} + + +\section Mettre des paragraphes dans une bo\^\i te + +Supposez que vous ayez quelques paragraphes de texte que vous voulez mettre +\`a un endroit particulier sur la page. La mani\`ere \'evidente de faire cela est +d'englober les paragraphes dans une hbox d'une taille appropri\'ee et ensuite de +placer la hbox o\`u vous voulez qu'elle soit. H\'elas, la mani\`ere \'evidente +ne marche pas parce que \TeX\ ne fait pas de coupure de ligne dans +le mode horizontal restreint. +^^{mode restreint//horizontal} +Si vous l'essayez, +vous obtiendrez un message d'erreur trompeur vous sugg\'erant que vous +avez oubli\'e la fin d'un groupe. +Le moyen de contourner cette restriction est d'\'ecrire~: +\csdisplay +\vbox{\hsize = !<dimen> !dots !<paragraphs> !dots} +| +o\`u \<dimen> est la longueur de ligne que vous voulez pour les paragraphes. +C'est ce dont vous avez besoin, en particulier, quand vous voulez englober +des paragraphes dans une bo\^\i te (une bo\^\i te entour\'ee de traits droits, pas une +bo\^\i te \TeX). + +\section Dessiner des lignes + +\null +\bix^^{filets} +Vous pouvez utiliser les commandes ^|\hrule| et ^|\vrule| (\xref\hrule) +pour tracer des lignes, c'est-\`a-dire, des filets. Vous devez +savoir (a)~o\`u vous pouvez utiliser chaque commandes et +(b)~comment \TeX\ d\'etermine les longueurs des filets quand +vous n'avez pas donn\'e les longueurs explicitement. +\ulist +\li Vous pouvez utiliser |\hrule| quand \TeX\ est dans un mode vertical et |\vrule| +quand \TeX\ est dans un mode horizontal. +Ces r\`egles signifient que +vous ne pouvez mettre un filet horizontal dans une hbox ou un filet vertical +dans une vbox. +Vous pouvez, n\'eanmoins, construire un filet horizontal qui semble vertical en +sp\'ecifiant les trois dimensions et en le rendant grand et fin. +De m\^eme, vous pouvez construire un filet vertical qui semble horizontal +en le rendant court, plat et allong\'e. + +\li Un filet horizontal \`a l'int\'erieur d'une vbox +a la m\^eme largeur que la vbox si vous n'avez pas +donn\'e la largeur du filet explicitement. +Des filets verticaux +\`a l'int\'erieur de hbox r\'eagissent de mani\`ere analogue. +Si vos filets ressortent trop longs ou trop courts, +r\'eglez les dimensions de la bo\^\i te englobante. +\endulist + +Comme exemple, supposon que vous voulez produire~: +\display{% +\hbox{\vrule + \vbox{\hrule\vskip 3pt + \hbox{\hskip 3pt + \vbox{\hsize .7in\raggedright + \noindent Help! Let me out of here!}% + \hskip 3pt} + \vskip 3pt\hrule}% +\vrule}} +L'entr\'ee suivante le fera~: +\csdisplay +\hbox{\vrule + \vbox{\hrule \vskip 3pt + \hbox{\hskip 3pt + \vbox{\hsize = .7in \raggedright + \noindent Help!! Let me out of here!!}% + \hskip 3pt}% + \vskip 3pt \hrule}% +\vrule} +| +Nous devons mettre le texte dans un vbox de fa\c con \`a ce que \TeX\ +l'ex\'ecute comme un paragraphe. +Les quatre niveaux d'embo\^\i tement sont r\'eellement +n\'ecessaires---si vous en doutez, essayez d'ex\'ecuter cet exemple avec moins de +niveaux. +\eix^^{filets} + + +\section Cr\'eer des ent\^etes ou des pieds de page multi-lignes + +\null +\xrdef{bighead} +\bix^^{ent\^etes//multi-lignes} +\bix^^{pieds de page//multi-lignes} +Vous pouvez utiliser les commandes ^|\headline| et ^|\footline| +(\xref\footline) pour produire des ent\^etes et des pieds de page, mais +elles ne marchent pas proprement pour des ent\^etes et des pieds de page +de plus d'une ligne. N\'eanmoins, vous pouvez obtenir des ent\^etes et des pieds +de page multi-lignes en red\'efinissant certaines des macros subsidiaires dans +la routine de sortie de \TeX. + +Pour un ent\^ete multi-lignes, vous devez faire trois choses~: +\olist\compact +\li Red\'efinir la macro ^|\makeheadline| qui est appel\'ee de la routine de +sortie de \TeX. +\li Augmenter ^|\voffset| du montant d'espace vertical consomm\'e par les +lignes en plus. +\li Diminuer ^|\vsize| du m\^eme montant. +\endolist +\noindent L'exemple suivant montre comment vous pourriez faire cela~: +\csdisplay +\advance\voffset by 2\baselineskip +\advance\vsize by -2\baselineskip +\def\makeheadline{\vbox to 0pt{\vss\noindent + Header line 1\hfil Page \folio\break + Header line 2\hfil\break + Header line 3\hfil}% + \vskip\baselineskip} +| +Vous pouvez normalement suivre le mod\`ele de cette d\'efinition, substituez +simplement vos propres lignes d'ent\^ete et choisissez un multiple de +|\baselineskip| appropri\'e (un de moins que le nombre de lignes dans l'ent\^ete). + +Pour un pied de page multi-lignes, la m\'ethode est similaire~: +\olist +\li Red\'efinissez la macro ^|\makefootline| qui est appel\'ee +de la routine de sortie de \TeX. +\li Diminuez ^|\vsize| du montant d'espace vertical consomm\'e par les +lignes en plus. +\endolist +\noindent L'exemple suivant montre comment vous pouvez faire cela~: +\csdisplay +\advance\vsize by -2\baselineskip +\def\makefootline{% + \lineskip = 24pt + \vbox{\raggedright\noindent + Footer line 1\hfil\break + Footer line 2\hfil\break + Footer line 3\hfil}} +| +Encore une fois, vous pouvez normalement suivre le mod\`ele de cette d\'efinition. +La valeur de |\lineskip| d\'etermine le montant d'espace entre la ligne de +base de la derni\`ere ligne du texte principal sur la page et la ligne de +base de la premi\`ere ligne du pied de page. +\eix^^{ent\^etes//multi-lignes} +\eix^^{pieds de page//multi-lignes} + + +\section Trouver des accolades orphelines + +\bix^^{accolades//orphelines} +\xrdef{mismatched} +La plupart de temps, quand votre entr\'ee \TeX\ souffre d'accolades non concordantes, +vous obtenez un diagnostic de \TeX\ assez proche de l'endroit o\`u vous avez +r\'eellement fait l'erreur. +Mais une des erreurs les plus frustrantes que vous puissiez subir d'une +ex\'ecution de \TeX, +juste avant que \TeX\ s'arr\^ete, est +la suivante~: +\csdisplay +(\end occurred inside a group at level 1) +| +Cela indique qu'il y a une accolade ouvrante en trop +ou une accolade fermante manquante quelque part +dans votre document, mais il ne vous donne aucune indication du tout +sur l'endroit o\`u le probl\`eme arrive. Donc comment pouvez vous trouver~? + +Un truc de d\'ebuggage que nous trouvons pratique est +d'ins\'erer la ligne suivante ou son \'equivalente +\`a cinq ou six endroits \'egalement espac\'es dans le document (et pas dans +un groupe connu)~: +\csdisplay +}% une fausse fermante +| +supposons que le probl\`eme soit une accolade ouvrante en trop. +Si elle est, disons entre la troisi\`eme et la quatri\`eme fausse fermante, +vous obtiendrez des messages d'erreur des trois premi\`eres fausses fermantes +mais pas de la quatri\`eme. La raison est que \TeX\ ignorera les trois premi\`ere +fausses fermantes apr\`es s'en \^etre plaint, mais la quatri\`eme fausse fermante +appariera l'accolade ouvrante en trop. Ainsi vous savez que l'accolade ouvrante +en trop est quelque part entre la troisi\`eme et la quatri\`eme fausse fermante. +Si la r\'egion de l'erreur est encore trop large pour que vous la trouviez, +enlevez simplement le jeu original de fausse fermantes et r\'ep\'etez le +processus dans cette r\'egion. +Si le probl\`eme est une accolade fermante manquante plut\^ot qu'une ouvrante en trop, +vous serez capable de la d\'ecouvrir quand vous aurez trouv\'e sa compagne. + +Cette m\'ethode ne marche pas dans toutes les circonstances. En particulier, +elle ne marche pas si votre document consiste en plusieurs groupes r\'eellement grands. +Mais souvent vous pourrez trouver des variations de cette m\'ethode qui vous +m\`eneront vers cette accolade insaisissable. + +Si tout le reste \'echoue, essayez de raccourcir votre entr\'ee en retirant +la derni\`ere moiti\'e du fichier +(apr\`es sauvegarde de la version originale d'abord~!) ou en ins\'erant une +commande |\bye| au milieu. +Si l'erreur persiste, vous saurez qu'elle est dans la premi\`ere moiti\'e~; +Si \c ca tourne, vous saurez qu'elle est dans la seconde. +En r\'ep\'etant ce processus vous trouverez \'eventuellement l'erreur. +\eix^^{accolades//orphelines} + + +\section Fixer des dimensions + +\null +\bix^^{\<dimension>} +La mani\`ere la plus simple de d\'efinir une dimension est de la sp\'ecifier directement, c'est-\`a-dire~: +\csdisplay +\hsize = 6in +| +Vous pouvez aussi sp\'ecifier une dimension en terme d'autres dimensions ou comme un m\'elange +de diff\'erentes unit\'es, mais c'est du boulot. Il y a deux fa\c cons +de construire une dimension comme une combinaison~: +\olist\compact +\li Vous pouvez ajouter une dimension \`a un param\`etre de dimension ou \`a un registre de +dimension. +Par exemple~: +\csdisplay +\hsize = 6in \advance\hsize by 3pc % 6in + 3pc +| +\li Vous pouvez indiquer une dimension comme un multiple d'un param\`etre +ou un registre de dimension ou de ressort. +Dans ce cas, \TeX\ convertit le ressort en une dimension en sacrifiant +l'\'etirement et le r\'etr\'ecissement. Par exemple~: +\csdisplay +\parindent = .15\hsize +\advance\vsize by -2\parskip +| +\endolist +\eix^^{\<dimension>} + + +\section Cr\'eer des polices composites + +\null +\bix^^{polices//composites} +Il est parfois utile de cr\'eer une ``police composite'', +nomm\'ee par une s\'equence de contr\^ole $\cal F$, dans laquelle tous les caract\`eres +sont pris d'une police $f_1$ sauf pour certains qui sont emprunt\'es d'une autre +police $f_2$. +Vous pourrez alors mettre du texte dans la police composite en utilisant $\cal F$ juste +comme vous utilisez toute autre identifiant de police. + +Vous pouvez cr\'eer une telle police composite en d\'efinissant $\cal F$ comme une macro. +Dans la d\'efinition de $\cal F$, vous s\'electionnez d'abord la police $f_1$ et ensuite +d\'efinissez des s\'equences de contr\^ole qui produisent les caract\`eres emprunt\'es, +mis dans $f_2$. +Par exemple, supposons que vous voulez cr\'eer une police composite |\britrm| +qui a tous les caract\`eres de |cmr10| +sauf pour le signe dollar, pour lequel vous voulez emprunter +le symbole de la livre sterling de la police |cmti10|. +Le symbole de la livre sterling de |cmti10| +apparait \`a la m\^eme position de police que le signe dollar dans |cmr10|. +Voici comment faire~: +\csdisplay +\def\britrm{% + \tenrm % \tenrm names the cmr10 font + \def\${{\tenit\char `\$}}% \tenit names the cmti10 font. +} +| +Maintenant \`a chaque fois que vous lancerez la police appel\'ee |\britrm|, +|\$| produira un symbole de livre sterling. + +Vous pouvez aussi avoir le m\^eme effet en changeant les codes de cat\'egorie +des caract\`eres en question pour rendre ces caract\`eres actifs et ensuite +procurer une d\'efinition pour le caract\`ere. Par exemple~: +\csdisplay +\catcode `* = \active +\def*{{\tentt \char `\*}} +| +Dans ce cas l'ast\'erisque sera pris de la police |\tentt|. +Si cous saisissez alors la ligne d'entr\'ee~: +\csdisplay +Debbie was the * of the show. +| +elle sera compos\'ee ainsi~: +{\font\tentt=cmtt10% +\catcode `* = \active +\def*{{\tentt \char `\*}}% +\display{Debbie was the * of the show.}} +\noindent + +\eix^^{polices//composites} + + +\section Reproduire du texte verbatim + +\null +^^{texte verbatim}\xrdef{verbatim} +Du texte verbatim est du texte qui est reproduit dans un document +compos\'e exactement comme il appara\^\i t dans son entr\'ee. +L'usage le plus commun du texte verbatim est dans la composition +d'entr\'ee informatique, +incluant les programmes pour ordinateurs et les entr\'ees de \TeX\ lui-m\^eme. +^^{programmes informatiques, composer des} +l'entr\'ee informatique n'est pas simple \`a reproduire pour deux raisons~: +\olist\compact +\li Certains caract\`eres (symboles de contr\^ole, caract\`eres d'\'echappement, accolades, +etc.) ont +une signification sp\'eciale en \TeX. +\li Les fins de ligne et les espaces multiples sont traduits en espaces simples. +\endolist +\noindent +Dans le but de produire du texte verbatim, vous devez effacer les significations sp\'eciales +et d\'ebrancher la traduction. C'est beaucoup mieux fait par des macros. + +Pour effacer les signification sp\'eciales, vous devez changer les codes de cat\'egorie +des caract\`eres qui ont des significations sp\'eciales. +^^{codes de cat\'egorie//pour texte verbatim} +La macro suivante illustre comment vous devez le faire~: +\csdisplay +\chardef \other = 12 +\def\deactivate{% + \catcode`\\ = \other \catcode`\{ = \other + \catcode`\} = \other \catcode`\$ = \other + \catcode`\& = \other \catcode`\# = \other + \catcode`\% = \other \catcode`\~ = \other + \catcode`\^ = \other \catcode`\_ = \other +} +| +Mais attention~! Une fois que vous avez chang\'e les codes de cat\'egorie de ce fa\c con, vous perdez +la facult\'e d'utiliser des s\'equences de contr\^ole puisqu'il n'y a plus de caract\`ere +d'\'echappement. Vous avez besoin d'un moyen de revenir dans le mode normal +d'op\'eration. Nous expliquerons comment faire cela dans un moment, apr\`es avoir consid\'er\'e +l'autre probl\`eme~: d\'ebrancher la traduction des espaces et des fins de ligne. + +\PlainTeX\ a deux commandes qui ensemble r\'esolvent en partie le probl\`eme~: +^|\obeyspaces| \ctsref{\obeyspaces} et ^|\obeylines| \ctsref{\obeylines}. +Les deux choses qu'elles ne font pas sont de pr\'eserver les espaces au d\'ebut +d'une ligne +et de pr\'eserver les lignes blanches. +Pour cela vous avez besoin de mesures plus fortes---qui sont apport\'ees par +la macro ^|\obeywhitespace| que nous sommes sur le point de d\'efinir. + +\TeX\ normalement insiste pour collecter des lignes par paragraphes. +Un moyen de le convaincre de prendre litt\'eralement les bords des lignes +est de transformer les lignes individuelles en paragraphes.\footnote{% +Un autre moyen est de transformer le caract\`ere de fin de ligne en une commande +|\break| et d'ajouter un ressort infini \`a la fin de chaque ligne. +^^|\break//fin de ligne sur| +} +Vous pouvez faire cela en red\'efinissant le caract\`ere de fin de ligne pour produire +la s\'equence de contr\^ole |\par|. Les trois d\'efinitions de macro suivantes +montrent comment~: + +^^{espace blanc, pr\'eserver de l'} +\xrdef{\obeywhitespace} +\csdisplay +\def\makeactive#1{\catcode`#1 = \active \ignorespaces} +{% The group delimits the text over which ^^M is active. + \makeactive\^^M % + \gdef\obeywhitespace{% + % Use \gdef so the definition survives the group. + \makeactive\^^M % + \let^^M = \newline % + \aftergroup\removebox % Kill extra paragraph at end. + \obeyspaces % + }% +} +\def\newline{\par\indent} +\def\removebox{\setbox0=\lastbox} + +| +Un point subtil de la d\'efinition de |\obeywhitespace| est que +|^^M| doit \^etre rendu actif \`a la fois +quand |\obeywhitespace| est \emph{d\'efinie} et quand +elle est \emph{utilis\'ee}. + +Pour \^etre capable de revenir \`a des op\'erations normales apr\`es du texte verbatim, +vous devez choisir un caract\`ere qui +appara\^\i t rarement voire pas du tout dans le texte verbatim. Ce caract\`ere +sert comme caract\`ere d'\'echappement temporaire. +La barre verticale (|!||) est parfois un bon choix. +Avec ce choix, les macros~: +\csdisplay +\def\verbatim{\par\begingroup\deactivate\obeywhitespace + \catcode `\!| = 0 % Make !| the new escape character. +} + +\def\endverbatim{\endgroup\endpar} + +\def\!|{!|} +| +fera l'affaire. Dans le texte verbatim, vous pouvez utiliser une double +barre verticale (|!|!||) pour en faire une, et vous terminez le texte verbatim +avec |!|endverbatim|. + +Il y a plusieurs variations de cette technique~: +\ulist +\li Si un langage informatique a des mots-cl\'es, vous pouvez convertir +chaque mot-cl\'e en une commande qui compose +ce mot-cl\'e en caract\`ere gras. Chaque mot-cl\'e de l'entr\'ee doit \^etre alors +pr\'ec\'ed\'e par le caract\`ere d'\'echappement. +\li Si vous avez un caract\`ere (encore, supposons qu'il s'agisse de la barre verticale) +qui n'appara\^\i t +\emph{jamais} dans le texte verbatim, vous pouvez le rendre actif et +lui faire finir le texte verbatim. Les d\'efinitions de macro ressemblent alors +\`a cela~: +\csdisplay +{\catcode `\!| = \active +\gdef\verbatim{% + \par\begingroup\deactivate\obeywhitespace + \catcode `!| = \active + \def !|{\endgroup\par}% +}} +| +\endulist + +Les id\'ees pr\'esent\'ees ici ne procurent qu'une simple approche de la composition +de programmes informatiques. +Le reproduction verbatim n'est souvent pas aussi r\'ev\'elatrice ou lisible +qu'une version qui utilise des conventions typographiques qui refl\`etent la +syntaxe et m\^eme les s\'emantiques du programme. +Si vous d\'esirez poursuivre ce sujet plus loin, nous vous recommandons le livre suivant~: + +\smallskip{\narrower\noindent +Baecker, Ronald M., and Marcus, Aaron, {\sl Human Factors +and Typography for More Readable Programs}. Reading, Mass.: +Addison-Wesley, 1990.\par} + + +\section Utiliser des macros externes + +\null +^^{s\'equence de contr\^ole interdite}^^{condition incompl\`ete} +Si \TeX\ se plaint d'une ``s\'equence de contr\^ole interdite [forbidden control +sequence]'', vous avez probablement utilis\'e une macro externe dans un contexte +non-externe \seeconcept{outer}. +^^{macros//outer} +Une macro externe est une macro dont la d\'efinition est +pr\'ec\'ed\'ee par ^|\outer|. +Une macro externe ne peut pas \^etre utilis\'ee dans un argument de macro, dans une +d\'efinition de macro, +dans le pr\'eambule d'un alignement ou dans un texte conditionnel, +c'est-\`a-dire, un texte qui ne sera d\'evelopp\'e que quand un test conditionnel +aura un r\'esultat particulier. +^^{alignements//s\'equence de contr\^ole outer dans des} +Certaines macros ont \'et\'e d\'efinies comme externes parce qu'elles n'ont pas de +raison d'\^etre utilis\'ees dans ces contextes et qu'un tel usage est probablement une erreur. +Le seul moyen de contourner ce probl\`eme est de red\'efinir la +macro ou de d\'eplacer son utilisation dans un contexte acceptable. + +Utiliser une macro externe dans un contexte impropre peut aussi provoquer +que \TeX\ se plaigne d'un ``runaway situation'' ou d'un ``incomplete conditional''. +Le probl\`eme peut \^etre difficile \`a diagnostiquer parce que le message d'erreur +ne donne aucun indice ni ce qui se passe. Si vous obtenez un tel message +d'erreur, recherchez autour un appel \`a une macro externe. +Vous ne pouvez pas toujours savoir si une macro particuli\`ere est externe, mais +la commande `^|\show||\a|' \ctsref{\show} +vous montrera la d\'efinition de |\a| et vous dira aussi +si |\a| est externe. + + +\section Changer des codes de cat\'egorie + +\null +\bix^^{codes de cat\'egorie//changement} +Il est parfois pratique de faire des changements locaux au code de cat\'egorie +d'un caract\`ere \`a une certaine partie de votre document. Par exemple, vous devez +composer un programme informatique +^^{programmes informatiques, composer des} +ou quelque chose d'autre qui utilise normalement des caract\`eres actifs +pour un usage sp\'ecial. Vous voudrez alors d\'esactiver ces caract\`eres pour que +\TeX\ les traite comme tout autre caract\`ere. + +Si vous faites un tel changement local au code de cat\'egorie d'un caract\`ere, +vous serez parfois constern\'e de trouver que \TeX\ semble ne pr\^eter aucune +attention quelconque a votre changement. +Deux aspects du comportement de \TeX\ sont vraisemblablement en cause~: +\olist +\li \TeX\ d\'etermine le code de cat\'egorie d'un caract\`ere entr\'ee +^^{caract\`eres entr\'ees} +et l'attache au caract\`ere quand il le lit. +Supposons que vous lisiez un tilde (|~|) et qu'ensuite vous +changiez le code de cat\'egorie des tildes, +mais fassiez le changement +avant que l'estomac de \TeX\ ait r\'eellement ex\'ecut\'e de tilde \emph{particulier\/} +\seeconcept{\anatomy}. +\TeX\ r\'epondra encore que ce +tilde utilise le code de cat\'egorie comme il \'etait avant le changement. +Cette difficult\'e survient typiquement +quand le tilde fait partie d'un argument d'une macro +et que la macro elle-m\^eme change le code de cat\'egorie du tilde. + +\li Quand \TeX\ assortit un appel d'une macro \`a la d\'efinition de cette macro, +il n'assortit pas seulement les caract\`eres du mod\`ele de param\`etre mais aussi +leurs codes de cat\'egorie. +^^{macros//arguments de} +^^{macros//param\`etres de} +Si le code de cat\'egorie d'un mod\`ele caract\`ere n'est pas \'egal au +code de cat\'egorie du m\^eme caract\`ere dans l'appel, \TeX\ ne consid\`erera pas +les caract\`eres comme concordants. +Cet effet peut produire de myst\'erieux r\'esultats parce que il +\emph{fait} comme si le mod\`ele concorde. +Par exemple, si vous avez d\'efini une macro~: +\csdisplay +\def\eurodate#1/#2/#3{#2.#1.#3} +| +alors le caract\`ere slash devra avoir le m\^eme code de cat\'egorie quand vous +appelez |\eurodate| que quand vous avez d\'efini |\eurodate|. +\endolist +Si le probl\`eme surgit parce que le caract\`ere g\^enant est un argument d'une +macro, alors +le rem\`ede usuel est de red\'efinir la macro comme une paire +de macros |\mstart| et |\mfinish|, o\`u +|\mstart| doit \^etre appel\'ee avant le texte d'argument +et |\mfinish| doit \^etre appel\'e apr\`es. +|\mstart| alors initialise les codes de cat\'egorie et |\mfinish| +d\'efait le changement, peut-\^etre simplement en finissant un groupe. +\eix^^{codes de cat\'egorie//changement} + + +\section Faire des fichiers de macro plus lisibles + +\null +\bix^^{macros//rendre lisible des} +Vous pouvez faire un fichier de macros plus lisible en +mettant les codes de cat\'egories de l'espace \`a $9$ (caract\`ere ignor\'e) +et ^|\endlinechar| \ctsref{\endlinechar} \`a $-1$ au d\'ebut du fichier. +Vous pourrez alors utiliser des espaces et des fins de lignes librement dans les +d\'efinitions de macro sans obtenir d'espaces ind\'esirables quand vous appelez +les macros. +Les caract\`eres ignor\'es ne g\'en\`ereront pas d'espaces, mais agiront encore +comme terminateurs pour des s\'equences de contr\^ole. +Si vous voulez r\'eellement un espace, vous pouvez encore l'obtenir avec la +commande ^|\space| \ctsref\space. + +Bien s\^ur vous devrez restaurer les codes de cat\'egories de l'espace et de la fin de ligne +\`a leur valeur normale ($10$ et $5$, respectivement) \`a la fin du fichier. +Vous pouvez faire cela soit en englobant tout le fichier dans un groupe soit +en restaurant les valeurs explicitement. Si vous choisissez d'englober le +fichier dans un groupe, vous devrez alors aussi mettre ^|\globaldefs| \`a $1$ +pour que toutes les d\'efinitions de macro soient globales et donc visibles +en dehors du groupe. + +Un exemple miniature d'un fichier de macro de cette forme est~: + +\csdisplay +\catcode `\ = 9 \endlinechar = -1 + +\def \makeblankbox #1 #2 { + \hbox{\lower \dp0 \vbox{\hidehrule {#1} {#2} + \kern -#1 % overlap rules + \hbox to \wd0{\hidevrule {#1} {#2}% + \raise \ht0 \vbox to #1{} % vrule height + \lower \dp0 \vtop to #1{} % vrule depth + \hfil \hidevrule {#2} {#1} } + \kern -#1 \hidehrule {#2} {#1} } } + +\def\hidehrule #1 #2 { + \kern -#1 \hrule height#1 depth#2 \kern -#2 } +\def\hidevrule #1 #2 { + \kern -#1 {\dimen0 = #1 \advance \dimen0 by #2 + \vrule width \dimen0 } \kern -#2 } + +\catcode `\ = 10 \endlinechar = `\^^M +| +\noindent +Sans les changement de code de cat\'egorie, +ces macros auraient \'et\'e \'ecrites de mani\`ere beaucoup plus compacte, utilisant moins +d'espaces et plus de `|%|' \`a la fin des lignes. +\eix^^{macros//rendre lisible des} + +\endchapter\byebye + diff --git a/info/impatient/fr/fusermacs.tex b/info/impatient/fr/fusermacs.tex index fecc074ac7..2fca205015 100644 --- a/info/impatient/fr/fusermacs.tex +++ b/info/impatient/fr/fusermacs.tex @@ -1,1168 +1,1168 @@ -% This is part of the book TeX for the Impatient.
-% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry.
-% Copyright (C) 2004 Marc Chaudemanche pour la traduction française.
-% See file fdl.tex for copying conditions.
-
-\input fmacros
-\chapter{Un abr\'eg\'e de \linebreak macros utiles}
-
-\chapterdef{eplain}
-
-Cette section d\'ecrit |eplain.tex|, une collection de macros et autres
-d\'efi\-nitions qui prolongent le plain \TeX. \bix^^|eplain.tex| Les
-noms des diverses macros expliquent leurs buts, mais habituellement
-n'expliquent pas comment elles fonctionnent, ou ne fournissent pas de
-d\'etails explicites sur la fa\c con dont les employer. Cette information
-est contenue dans les fichiers source de |eplain.tex| et dans la
-documentation qui l'accompagne. Voir \headcit{Ressources}{ressources}
-pour la fa\c con d'obtenir |eplain.tex|.
-
-\section{Pr\'eliminaires}
-
-Nous commen\c cons par quelques macros pour des codes de cat\'egorie qui
-changent et des d\'efinitions pratiques pour deux macros utilis\'ees
-fr\'equem\-ment.
-^^{codes de cat\'egorie//d\'efinitions pratiques pour}
-
-\pix^^|\makeactive|
-\pix^^|\letter|
-\pix^^|\other|
-\pix^^|\uncatcodespecials|
-
-\csdisplay
-\def\makeactive#1{\catcode`#1 = \active \ignorespaces}%
-\chardef\letter = 11 \chardef\other = 12
-\def\uncatcodespecials{%
- \def\do##1{\catcode`##1 = \other}%
- \dospecials}% Defined in plain.
-|
-
-Pour d\'efinir `|^^M|' comme caract\`ere actif, vous devez englober la
-d\'efini\-tion dans un groupe et appeler quelques moyens
-suppl\'ementaires.
-\ttidxref{^^M}
-La macro \pix^|\letreturn| vous permet de d\'efinir `|^^M|' sans ce code
-suppl\'emen\-taire que vous pouvez voir dans la d\'efinition ci-dessous.
-
-\csdisplay
-{\makeactive\^^M \long\gdef\letreturn#1{\let^^M = #1}}%
-|
-
-Ces macros consomment un, deux, ou trois arguments.
-
-\pix^^|\gobble|
-\pix^^|\gobbletwo|
-\pix^^|\gobblethree|
-\csdisplay
-\def\gobble#1{}\def\gobbletwo#1#2{}%
-\def\gobblethree#1#2#3{}%
-|
-
-Maintenant nous \'etablissons quelques conventions pour lire le reste du
-fichier. Dans le fichier nous autorisons des s\'equences de contr\^ole
-``priv\'es'' qui contiennent `|@|' dans leurs noms. Ces s\'equences de
-contr\^ole ne sont pas accessibles de l'ext\'erieur de ce fichier (\`a moins
-que vous rechangez le code de cat\'egorie du `|@|').
-\xrdef{eplainconv}
-
-\csdisplay
-\catcode`@ = \letter % Allow control sequences with @.
-\let\@plainwlog = \wlog % Don't log register allocations.
-\let\wlog = \gobble
-\newlinechar = `^^J
-|
-
-Les deux macros suivantes fournissent une formulation pratique de
-r\'esultat de diagnostic. \pix^|\loggingall| d\'eclenche tout le
-tra\c cage, mais ne provoque le r\'esultat de la trace que dans le \logfile
-et pas sur votre terminal. \pix^|\tracingboxes| montre compl\`etement
-les bo\^\i tes quand elles sont trac\'ees. (\TeX\ ne montre normalement que
-trois niveaux de bo\^\i te et cinq items dans chaque bo\^\i te.)
-
-
-\csdisplay
-\def\loggingall{\tracingcommands\tw@\tracingstats\tw@
- \tracingpages\@ne\tracingoutput\@ne
- \tracinglostchars\@ne\tracingmacros\tw@
- \tracingparagraphs\@ne\tracingrestores\@ne
- \showboxbreadth\maxdimen\showboxdepth\maxdimen}%
-\def\tracingboxes{\showboxbreadth = \maxdimen
- \showboxdepth = \maxdimen}%
-|
-
-
-L'\'epaisseur par d\'efaut des traits est de $0.4$\pt. Vous pouvez produire des traits de n'importe quelle \'epaisseur par
-d\'efaut que vous voulez en red\'efinissant |\vruledefaultwidth|, |\hruledefaultheight| et |\hruledefaultdepth| et
-en employant
-\pix^^|\ehrule|
-|\eh!-rule| et
-\pix^|\evrule| au lieu de |\hrule| et |\vrule|. (le `e' repr\'esente
-``eplain''.)
-^^{filets//\'epaisseur de}
-Si vous donnez une dimension explicite (par exemple, |\ehrule height 16pt|), \TeX \ l'utilisera.
-
-\csdisplay
-\newdimen\hruledefaultheight \hruledefaultheight = 0.4pt
-\newdimen\hruledefaultdepth \hruledefaultdepth = 0.0pt
-\newdimen\vruledefaultwidth \vruledefaultwidth = 0.4pt
-\def\ehrule{\hrule height\hruledefaultheight
- depth\hruledefaultdepth}%
-\def\evrule{\vrule width\vruledefaultwidth}%
-|
-
-La convention |\%| pour \'ecrire un caract\`ere `|%|' ne marche pas quand vous
-voulez inclure ce caract\`ere dans la token liste de |\write|.
-^^|\write//\'ecrire \b\tt\%\e\ avec|
-^^|%//en sortie|
-Vous pouvez utiliser ^|\percentchar| pour r\'ealiser cela.
-Nous red\'efinissons \'egalement ^|^^L| comme \'etant sans effet pour que vous puissiez l'utiliser
-dans une d\'efinition de macro ou un argument.
-
-\csdisplay
-{\catcode`\% = \other \gdef\percentchar{%}}%
- \def^^L{\par
-}%
-|
-
-\pix^|\tokstostring| convertit son argument en liste de
-^{tokens de caract\`ere}. Il n'emploie que des d\'eveloppements qui sont manipul\'ees
-dans l'\oe sophage de \TeX. Cette propri\'et\'e est lui n\'ecessaire
-pour travailler avec |\edef|. Elle est utilis\'ee par les macros
-de r\'ef\'erences crois\'ees (\xref{xrefs}).
-
-Pour fractionner l'argument sur l'espace, nous devons
-utiliser deux macros subsidiaires. |\@ttsA| trouve les espaces et
-|\@ttsB| manipule une s\'equence de token sans aucun espace. Chaque
-espace est remplac\'e par le d\'eveloppement de \pix^|\spacesub|.
-
-\csdisplay
-\def\tokstostring#1{\@ttsA#1 \ttsmarkA}%
-\def\@ttsA#1 #2\ttsmarkA{\ifempty{#1}\else
- \@ttsB #1\@ttsmarkB
- \ifempty{#2}\else
- \spacesub\@ttsA#2\ttsmarkA\fi\fi}%
-\def\@ttsB#1{\ifx #1\@ttsmarkB\else
- \string #1%
- \expandafter\@ttsB\fi}%
-\def\@ttsmarkB{\@ttsmarkB}% should never be expanded
-\def\spacesub{+}%
-|
-
-\noindent
-\pix^|\ifempty| teste si son argument est vide.
-
-\csdisplay
-\def\ifempty#1{\@ifempty #1\@emptymarkA\@emptymarkB}%
-\def\@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}%
-\def\@emptymarkA{\@emptymarkA}%
-|
-
-La macro ^|\for| impl\'emente une version \TeX\ du ``^{for loop}'' des
-langages de programmation traditionnels. Ces macros viennent directement de
-\LaTeX.
-
-\csdisplay
-\def\for#1:=#2\do#3{\edef\@fortmp{#2}%
- \ifx\@fortmp\empty \else
- \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi}%
-\def\@nnil{\@nil}%
-\def\@fornoop#1\@@#2#3{}%
-\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil
- \else #5\def#4{#2} ifx #4\@nnil \else
- #5\@iforloop #3\@@#4{#5}\fi\fi}%
-\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
- \let\@nextwhile=\@fornoop \else #4\relax
- \let\@nextwhile=\@iforloop\fi
- \@nextwhile#2\@@#3{#4}}%
-|
-
-\pix^|\obeywhitespace| est utile pour reproduire des coupures de
-ligne, des interlignes et des espaces dans votre source. Il combine
-les effets de |\obey!-lines| et |\obey!-spaces|, ^^|\obeyspaces|
-^^|\obeylines| et met \'egalement des espaces au d\'ebut d'une ligne
-devant \^etre imprim\'ee. Les caract\`eres ``tabulation'' ne sont pas affect\'es~; ils
-produisent toujours un ressort normal.
-
-\xrdef{ewhitesp}
-^^{caract\`eres espace}
-^^|\fontdimen|
-^^|\font|
-^^|\letreturn|
-
-\csdisplay
-\def\alwaysspace{\hglue\fontdimen2\the\font \relax}%
-{\makeactive\^^M \makeactive\ %
-\gdef\obeywhitespace{%
-\makeactive\^^M\def^^M{\par\indent}%
-\aftergroup\@removebox% Kill extra paragraph at end.
-\makeactive\ \let =\alwaysspace}}%
-\def\@removebox{\setbox0=\lastbox}
-|
-
-\pix^|\frac| est une bonne fa\c con d'afficher des fractions dans du
-texte quand vous ne voulez pas utiliser |\over| et que mettre simplement ``1/2''
-ne semble pas beau. Cette macro est la r\'eponse \`a
-l'exercise~11.6 de \texbook.^^{fractions//en forme de slash}
-
-\csdisplay
-\def\frac#1/#2{\leavevmode
- \kern.1em \raise .5ex \hbox{\the\scriptfont0 #1}%
- \kern-.1em $/$%
- \kern-.15em \lower .25ex \hbox{\the\scriptfont0 #2}}%
-|
-
-Les macros suivantes produisent des logos qui sont utiles dans le monde \TeX.
-Le logo \AMSTeX\ vient de la \knuth{page~420}{483}. Le logo \LaTeX\
-est l\'eg\`erement modifi\'e par rapport \`a celui de |latex.tex| (nous utilisons une
-police diff\'erente pour le `A')~; de m\^eme, le logo \BibTeX\
-emploit |\sevenrm| au lieu d'une v\'eritable police de capitale-et-
-petite-capitale. Le fichier source |.mf| pour le logo \MF\ est
-donn\'e dans le manuel \MF\~:
-
-\smallskip
-{\narrower\noindent
-^{Knuth, Donald E.},{\sl The {\logosl METAFONT}book}.
- Reading, Mass.: Addison-Wesley, 1986.\par}
-\smallskip
-\pix^^|\LaTeX|
-\pix^^|\AMSTeX|
-\pix^^|\BibTeX|
-\pix^^|\MF|
-
-\csdisplay
-\def\LaTeX{L\kern-.26em \raise.6ex\hbox{\fiverm A}%
- \kern-.15em TeX}%
-\def\AMSTeX{$\cal A\kern-.1667em \lower.5ex\hbox{$\cal M$}%
- \kern-.125em S$-\TeX}%
-\def\BibTeX{{\rm B\kern-.05em {\sevenrm I\kern-.025em B}%
- \kern-.08em T\kern-.1667em \lower.7ex\hbox{E}%
- \kern-.125emX}}%
-\font\mflogo = logo10
-\def\MF{{\mflogo META}{\tenrm \-}{\mflogo FONT}}%
-|
-
-Les deux macros suivantes produisent des bo\^\i tes. \pix^|\blackbox|
-produit une ``bulle carr\'ee'', utilis\'e dans les macros de liste
-(\xref{listmacs}). \pix^|\makeblankbox| (de \knuth{page~311}{363--364})
-produit un rectangle non rempli, avec l'\'epaisseur des traits de
-bordure donn\'ee par les arguments.
-
-\csdisplay
-\def\blackbox{\vrule height .8ex width .6ex depth -.2ex}%
-\def\makeblankbox#1#2{%
- \hbox{\lower\dp0\vbox{\hidehrule{#1}{#2}%
- \kern -#1% overlap rules
- \hbox to \wd0{\hidevrule{#1}{#2}%
- \raise\ht0\vbox to #1{}% vrule height
- \lower\dp0\vtop to #1{}% vrule depth
- \hfil\hidevrule{#2}{#1}}%
- \kern-#1\hidehrule{#2}{#1}}}}%
-\def\hidehrule#1#2{\kern-#1\hrule height#1 depth#2
- \kern-#2}%
-\def\hidevrule#1#2{\kern-#1{\dimen0 = #1
- \advance\dimen0 by #2 \vrule width\dimen0}\kern-#2}%
-|
-
-\pix^|\numbername| produit la forme en toute lettres d'un nombre. Si
-le nombre est plus grands que dix, la macro ne reproduit que les
-chiffres de son argument.
-
-\csdisplay
-\def\numbername#1{\ifcase#1%
- zero\or one\or two\or three\or four\or five%
- \or six\or seven\or eight\or nine\or ten\or #1\fi}%
-|
-
-\pix^|\testfileexistence| d\'etermine si un fichier |\jobname.#1| est
-non\-vide et place |\if!-fileexists| convenablement.
-^^{fichiers//tester l'existence de}
-Le nom de fichier dans l'argument
-n'a pas besoin de finir dans un token d'espace puisque la macro
-fournit la marque d'espace.
-
-\csdisplay
-\newif\iffileexists
-\def\testfileexistence#1{\begingroup
- \immediate\openin0 = \jobname.#1\space
- \ifeof 0\global\fileexistsfalse
- \else \global\fileexiststrue\fi
- \immediate\closein0
- \endgroup}%
-|
-
-
-\section Affichages
-
-Par d\'efaut, \TeX\ centre le mat\'eriel affich\'e (le mat\'eriel
-entre |$$|). ^^{affichages, formatage} \pix^|\leftdisplays| provoque
-des affichages justifi\'es \`a gauche par d\'efaut. Vous pouvez
-retourner aux affichages centr\'es avec \pix^|\centereddisplays|.
-
-Les macros ici sont plus g\'en\'eralistes qu'elles doivent l'\^etre pour ne faire
-que des affichages justifi\'es \`a gauche. Pour chaque affichage,
-\pix^|\ifeqno| sera vrai si un |\eqno| appara\^\i t dans l'affichage.
-\pix^|\ifleqno| sera vrai si un |\leqno| appara\^\i t. Si l'une ou l'autre
-sorte d'\'equation num\'erot\'ee appara\^\i t, \pix^|\eqn| produit le texte
-du num\'ero de l'\'equation. \pix^|\eq| produit toujours le texte de
-l'\'equation lui-m\^eme.
-
-Ces macros sont bas\'ees sur le code de la \knuth{page~376}{434}.
-
-\csdisplay
-\newif\ifeqno \newif\ifleqno
-\newtoks\@eqtoks \newtoks\@eqnotoks
-\def\eq{\the\@eqtoks}\def\eqn{\the\@eqnotoks}%
-\def\displaysetup#1$${%
- \@displaytest#1\eqno\eqno\@displaytest}%
-\def\@displaytest#1\eqno#2\eqno#3\@displaytest{%
- \if !#3!% No \eqno, check for \leqno:
- \@ldisplaytest#1\leqno\leqno\@ldisplaytest
- \else
- \eqnotrue \leqnofalse % Have \eqno, not \leqno.
- \@eqnotoks = {#2}\@eqtoks = {#1}%
- \fi
- \generaldisplay$$}%
-\def\@ldisplaytest#1\leqno#2\leqno#3\@ldisplaytest{%
- \@eqtoks = {#1}%
- \if !#3!%
- \eqnofalse % No \leqno; we're done.
- \else
- \eqnotrue \leqnotrue % Have \leqno.
- \@eqnotoks = {#2}%
- \fi}%
-|
-
-Vous pouvez composer des affichages diff\'eremment en d\'efinissant votre
-propre macro analogue \`a \pix^|\leftdisplays|. La d\'efinition de macro doit
-placer l'appel \`a |\display!-setup| dans |\every!-display| ^^|\everydisplay|
-afin de s'assurer que ^^|\displaysetup| |\dis!-play!-setup| soit appel\'e au
-d\'ebut de chaque affichage. La d\'efinition de macro doit \'egalement inclure
-une d\'efinition de ^|\generaldisplay|.
-
-\csdisplay
-\newtoks\previouseverydisplay
-\def\leftdisplays{%
- \previouseverydisplay = \everydisplay
- \everydisplay =
- {\the\previouseverydisplay \displaysetup}%
- \def\generaldisplay{%
- \leftline{%
- \strut \indent \hskip\leftskip
- \dimen0 = \parindent
- \advance\dimen0 by \leftskip
- \advance\displaywidth by -\dimen0
- \@redefinealignmentdisplays
- \ifeqno \ifleqno
- \kern-\dimen0
- \rlap{$\displaystyle\eqn$}%
- \kern\dimen0
- \fi\fi
- $\displaystyle{\eq}$%
- \ifeqno \ifleqno\else
- \hfill $\displaystyle{\eqn}$%
- \fi\fi}}}%
-\def\centereddisplays{\let\displaysetup = \relax}%
-|
-
-%\filbreak
-\pix^|\leftdisplays| doit travailler dans la douleur pour s'assurer que
-|\dis!-play!-lines|, ^|\eqalignno| ^^|\displaylines| et ^|\leqalignno|
-fonctionnent toujours correctement. |\eq| est compos\'e en mode math\'ematique
-et |\halign| est ill\'egal dans ce mode. ^^|\halign//ill\'egal dans le mode
-math\'ematique| Nous utilisons ^|\vcenter| pour changer le contexte pour que
-|\halign| redevienne l\'egal. Nous enlevons \'egalement les commandes |\hfil| \`a
-gauche du patron pour obtenir la justification \`a droite. \`a part ces
-changements, les macros sont les m\^emes que dans |plain.tex|.
-
-\csdisplay
-\def\@redefinealignmentdisplays{%
- \def\displaylines##1{\displ@y
- \vcenter{\halign{\hbox to\displaywidth{$\@lign
- \displaystyle####\hfil$}\crcr##1\crcr}}}%
- \def\eqalignno##1{\displ@y
- \vcenter{\halign to\displaywidth{%
- $\@lign\displaystyle{####}$\tabskip\z@skip
- &$\@lign\displaystyle{{}####}$
- \hfil\tabskip\centering
- &\llap{$\@lign####$}\tabskip\z@skip\crcr
- ##1\crcr}}}%
- \def\leqalignno##1{\displ@y
- \vcenter{\halign to\displaywidth{%
- $\@lign\displaystyle{####}$\tabskip\z@skip
- &$\@lign\displaystyle{{}####}
- $\hfil\tabskip\centering
- &\kern-\displaywidth
- \rlap{\kern-\parindent\kern-\leftskip$
- \@lign####$}%
- \tabskip\displaywidth\crcr
- ##1\crcr}}}}%
-|
-
-
-\section heure du jour
-
-Quand \TeX\ d\'emarre, il d\'etermine les valeurs des param\`etres ^|\time|,
-^|\day|, ^|\month| et ^|\year|.
-^^{heure du jour}^^{date}
-\pix^|\monthname|
-produit le nom du mois, abr\'eg\'e en trois lettres.
-\pix^|\timestring| produit l'heure courante, comme dans ``1:14\thinspace
-p.m.''. \pix^|\timestamp| produit le texte de la date compl\`ete, comme dans
-``23 avr 1964\quad 1:14\thinspace p.m.''.
-
-\csdisplay
-\def\monthname{%
- \ifcase\month
- \or Jan\or Feb\or Mar\or Apr\or May\or Jun%
- \or Jul\or Aug\or Sep\or Oct\or Nov\or Dec%
- \fi}%
-\def\timestring{\begingroup
- \count0 = \time \divide\count0 by 60
- \count2 = \count0 % The hour.
- \count4 = \time \multiply\count0 by 60
- \advance\count4 by -\count0 % The minute.
- \ifnum\count4<10 \toks1 = {0}% Get a leading zero.
- \else \toks1 = {}%
- \fi
- \ifnum\count2<12 \toks0 = {a.m.}%
- \else \toks0 = {p.m.}%
- \advance\count2 by -12
- \fi
- \ifnum\count2=0 \count2 = 12 \fi % Make midnight `12'.
- \number\count2:\the\toks1 \number\count4
- \thinspace \the\toks0
-\endgroup}%
-\def\timestamp{\number\day\space\monthname\space
- \number\year\quad\timestring}%
-|
-
-
-\section Listes
-
-\null
-\xrdef{listmacs}
-\bix^^{listes d'\'el\'ements}
-\bix^^{\enumerations}
-\pix^|\numberedlist| produit des listes num\'erot\'ees~; |\endnumberedlist| les
-termine.
-\pix^|\unorderedlist| est analogue.
-Pour l'une ou l'autre de ces derni\`eres, les items \`a l'int\'erieur des listes
-commencent par \pix^|\li| (``list item''). Vous pouvez mettre
-\pix^|\listcompact| au d\'ebut d'une liste si vous ne voulez aucun espace
-additionnel entre les \'el\'ements de cette liste. Des listes peuvent \^etre
-imbriqu\'ees arbitrairement.
-
-Vous pouvez contr\^oler plus g\'en\'eralement l'espacement entre les
-\'el\'e\-ments en assignant des valeurs aux registres \'enum\'er\'es
-ci-dessous. Si les \'el\'ements de vos listes tendent \`a \^etre
-longs, vous pourriez vouloir rendre |\interitemskip| diff\'erent de
-z\'ero. L'indentation gauche de chaque \'el\'ement de liste est
-donn\'ee par |\par!-indent| plus |\list!-left!-indent|~; l'indentation
-droite de chaque \'el\'ement de liste est donn\'ee par |\list!-right!|% indent|.
-
-\csdisplay
-\newskip\abovelistskip \abovelistskip = .5\baselineskip
-\newskip\interitemskip \interitemskip = 0pt
-\newskip\belowlistskip \belowlistskip = .5\baselineskip
-\newdimen\listleftindent \listleftindent = \parindent
-\newdimen\listrightindent \listrightindent = 0pt
-\def\listcompact{\interitemskip = 0pt \relax}%
-|
-
-Les listes num\'erot\'ees et non num\'erot\'ees utilisent les macros qui suivent.
-Nous ne changeons pas |\parindent|, puisque beaucoup de macros existantes,
-comme par exemple, |\footnote|, en d\'ependent. Nous devons expliquer la
-possibilit\'e que les \'el\'ements fassent plus d'un paragraphe de long. Dans ce
-cas-ci, tous les paragraphes apr\`es le premier sont indent\'es. Nous
-utilisons |\leftskip| et |\rightskip| pour indenter les \'el\'ements d'une liste.
-L'indentation des affichages est expliqu\'ee par des changements de |\every!-%
-dis!-play|. ^^|\everydisplay|
-
-\csdisplay
-\newdimen\@listindent
-\def\beginlist{%
- \@listindent = \parindent
- \advance\@listindent by \listleftindent
- \everydisplay = \expandafter{\the\everydisplay
- % Don't lose user's \everydisplay:
- \advance\displayindent by \@listindent
- \advance\displaywidth by -\@listindent
- \advance\displaywidth by -\listrightindent}%
- \nobreak\vskip\abovelistskip
- \parskip = 0pt
- % \leftskip shifts nested lists to the right on the page.
- \advance\leftskip by \@listindent
- \advance\rightskip by \listrightindent}%
-\def\printitem{\par\noindent
- \llap{\hskip-\listleftindent \marker \enspace}}%
-\def\endlist{\vskip\belowlistskip}%
-|
-
-\noindent
-Vous pouvez changer la mani\`ere dont les labels d'\'el\'ements sont compos\'ees en
-red\'efinissant la macro |\numbered!-marker|. \pix^^|\numberedmarker|
-
-\csdisplay
-\newcount\numberedlistdepth \newcount\itemnumber
-\newcount\itemletter
-\def\numberedmarker{%
- \ifcase\numberedlistdepth
- (impossible)%
- \or \itemnumberout)%
- \or \itemletterout)%
- \else *%
- \fi}%
-|
-
-\noindent Voici les d\'efinitions de |\numberedlist| et de
-|\unorderedlist|.
-ces d\'efini\-tions ont la m\^eme structure.
-
-\csdisplay
-\def\numberedlist{\environment{@numbered-list}%
- \advance\numberedlistdepth by 1
- \itemnumber = 1 \itemletter = `a
- \beginlist \let\marker = \numberedmarker
- \def\li{%
- \ifnum\itemnumber=1\else \vskip\interitemskip \fi
- \printitem
- \advance\itemnumber by 1 \advance\itemletter by 1
- }}%
-\def\itemnumberout{\number\itemnumber}%
-\def\itemletterout{\char\itemletter}%
-\def\endnumberedlist{\par
- \endenvironment{@numbered-list}\endlist}%
-!bigskip
-\newcount\unorderedlistdepth
-\def\unorderedmarker{%
- \ifcase\unorderedlistdepth
- (impossible)%
- \or \blackbox
- \or ---%
- \else *%
- \fi}%
-\def\unorderedlist{\environment{@unordered-list}%
- \advance\unorderedlistdepth by 1
- \beginlist \itemnumber = 1
- \let\marker = \unorderedmarker
- \def\li{%
- \ifnum\itemnumber=1\else \vskip\interitemskip \fi
- \printitem \advance\itemnumber by 1
- }}%
-\def\endunorderedlist{\par
- \endenvironment{@unordered-list}\endlist}%
-|
-
-\eix^^{listes d'\'el\'ements}
-\eix^^{\enumerations}
-
-
-\section Listing verbatim
-
-La macro \pix^|\listing| produit le listing verbatim d'un fichier sp\'ecifi\'e
-en police |\tt|.
-Elle est bas\'ee sur le code de la \knuth{page~380}{439}.
-Les tabulations produisent un montant d'espace fixe et les sauts de page
-produisent une coupure de page. D'autres caract\`eres de contr\^ole produisent
-ce qui s'av\`ere \^etre \`a cette position dans la police, qui n'est g\'en\'eralement
-pas tr\`es utile. En red\'efinissant |\setup!-listing!-hook|,
-\pix^^|\setuplistinghook| vous pouvez prendre les mesures compl\'ementaires
-qui sont appropri\'ees pour vos polices et\slash ou environnements particuliers
-avant que le fichier ne soit lu.
-
-\csdisplay
-\def\listing#1{%
- \par \begingroup \@setuplisting \setuplistinghook
- \input #1 \endgroup}%
-\let\setuplistinghook = \empty
-\def\@setuplisting{%
- \uncatcodespecials
- \obeywhitespace \makeactive\` \makeactive\^^I
- \def^^L{\vfill\eject}\tt}%
-{\makeactive\` \gdef`{\relax\lq}}% Defeat ligatures.
-{\makeactive\^^I\gdef^^I{\hskip8\fontdimen2\tt \relax}}%
-|
-
-
-\section Table des mati\`eres
-
-\null ^^{table des mati\`eres}
-La macro \pix^|\writetocentry| \'ecrit une macro dans le fichier
-|\jobname.toc|. Le premier argument de |\writetocentry|, par exemple,
-``chapitre'', est utilis\'e pour composer le nom de la macro appel\'ee. Le
-deuxi\`eme argument est le texte qui doit appara\^\i tre dans la table des
-mati\`eres. |\writetocentry| appose le num\'ero de la page \`a l'appel de la macro.
-Par exemple~:
-\csdisplay
-\writetocentry{chapter}{Introduction}
-|
-\noindent
-produira la ligne~:
-\csdisplay
-\tocchapterentry{Introduction}{2}
-|
-\noindent dans le fichier |.toc|, ce qui indique que `Introduction' d\'ebute
-en page 2.
-
-Vous pouvez utiliser |\writenumberedtocentry| pour apporter un troisi\`eme
-param\`etre, tel qu'un num\'ero de chapitre. Par exemple~:
-\csdisplay
-\writenumberedtocentry{chapter}{The second chapter}{2}
-|
-\noindent \'ecrira une ligne~:
-\csdisplay
-\tocchapterentry{The second chapter}{2}{14}
-|
-\noindent
-Vous pouvez aussi faire un |\write| vers le |\tocfile| vous-m\^eme.
-
-\csdisplay
-\newwrite\tocfile \newif\iftocfileopened
-\def\opentocfile{\iftocfileopened\else
- \tocfileopenedtrue
- \immediate\openout\tocfile = \jobname.toc
-\fi}%
-\def\writenumberedtocentry#1#2#3{\ifrewritetocfile
- \opentocfile
- \write\tocfile{%
- \expandafter\noexpand \csname toc#1entry\endcsname
- {#2}{#3}{\folio}}%
-\ignorespaces\fi}%
-\def\writenumberedtocentry#1#2#3{\ifrewritetocfile
- \opentocfile
- \write\tocfile{%
- \expandafter\noexpand \csname toc#1entry\endcsname
- {#2}{#3}{\folio}}%
-\ignorespaces\fi}%
-|
-
-Pour produire une table des mati\`eres, lisez le fichier |.toc| avec
-\pix^|\readtocfile|. Vous devez appeler |\read!-tocfile| avant le premier
-|\write!-toc!-entry|. Quand vous traitez la table des mati\`eres sans la
-r\'eg\'en\'erer, vous ne devriez pas r\'ecrire le fichier |.toc|---si vous le
-faites, son contenu sera perdu. La commande |\rewrite!-tocfile!-false|
-emp\^echera la r\'e\'ecriture.
-
-\csdisplay
-\newif\ifrewritetocfile \rewritetocfiletrue
-\def\readtocfile{\testfileexistence{toc}%
- \iffileexists
- \input \jobname.toc
- \ifrewritetocfile \opentocfile \fi
- \fi}%
-|
-
-Voici quelques d\'efinitions de macros |\toc|\dots|entry| possibles. Ces
-d\'efinitions ne sont indiqu\'ees que comme exemple---aligner des traits \`a
-travers la ligne n'est normalement pas la meilleure mani\`ere de composer une
-table des mati\`eres.
-
-\csdisplay
-\def\tocchapterentry#1#2{\line{\bf #1 \dotfill\ #2}}%
-\def\tocsectionentry#1#2{%
- \line{\quad\sl #1 \dotfill\ \rm #2}}%
-\def\tocsubsectionentry#1#2{%
- \line{\qquad\rm #1 \dotfill\ #2}}%
-|
-
-
-\section R\'ef\'erences crois\'ees
-
-\null ^^{r\'ef\'erences crois\'ees}
-\xrdef{xrefs}
-Les macros qui suivent fournissent des r\'ef\'erences crois\'ees symboliques, pour
-que vous puissiez vous r\'ef\'erer \`a quelque chose dans une autre partie d'un
-document par son nom et non son num\'ero de page r\'eel. \pix^|\xrdef||{foo}|
-d\'efinit une \'etiquette |foo| comme \'etant le num\'ero de page courant et
-\pix^|\xrefn||{foo}| produit ce num\'ero de page, par exemple, $77$. Plus
-fr\'equement, vous voudrez dire quelque chose comme ``voir p.\thinspace77'',
-ainsi \pix^|\xref||{foo}| produit ` p.\thinspace 77''. Si |foo| n'est pas
-d\'efini, un message d'avertissement sera donn\'e. |\xrefwarningfalse| supprime
-l'avertissement.
-
-Ces macros n'assurent aucune protection contre des d\'efinitions dupliqu\'ees.
-Vous pouvez v\'erifier ces d\'efinitions dupliqu\'ees en triant le fichier de
-r\'ef\'erences crois\'ees et en v\'erifiant, m\'ecaniquement ou \emph{de visu}, les
-d\'efinitions adjacentes du m\^eme symbole.
-
-\csdisplay
-\newif\ifxrefwarning \xrefwarningtrue
-\def\xrdef#1{\begingroup
- \xrlabel{#1}%
- \edef\@wr{\@writexrdef{\the\@xrlabeltoks}}%
- \@wr
- \endgroup \ignorespaces}%
-\def\@writexrdef#1{\write\reffile{%
- \string\gdef
- \expandafter\string\csname#1\endcsname
- {\noexpand\folio}\percentchar}}%
-\def\xrefnumber#1{%
- \xrlabel{#1}%
- % \@xrlabeltoks now has the control sequence name.
- \toks0 =
- \expandafter{\csname\the\@xrlabeltoks\endcsname}%
- \expandafter \ifx\the\toks0\relax
- \ifxrefwarning \message{Undefined label
- `\tokstostring{#1}'.}\fi
- {\let\spacesub = \space
- \expandafter\xdef\the\toks0
- {`{\tt \tokstostring{#1}}'}}\fi
- \the\toks0}%
-\def\xref#1{p.\thinspace\xrefnumber{#1}}%
-\def\xrefn#1{\xrefnumber{#1}}%
-|
-
-Cette macro transforme une \'etiquette en liste de tokens de caract\`ere dans le
-registre de tokens |\labeltoks|. Une \'etiquette peut inclure des blancs et
-des s\'equences de contr\^ole aussi bien que les caract\`eres normaux, mais elle
-ne peut pas inclure d'accolades.
-
-\csdisplay
-\newtoks\@xrlabeltoks
-\def\xrlabel#1{\begingroup
- \escapechar = `\_ \edef\tts{\tokstostring{#1_}}%
- \global\@xrlabeltoks = \expandafter{\tts}%
- \endgroup}%
-|
-
-Il faut deux passages pour obtenir des r\'ef\'erences crois\'ees correctes,
-puisque les d\'efinitions sont \'ecrites dans le fichier auxiliaire
-|\jobname.aux|. \pix^|\readreffile| les relit. Si vous ne saisissez pas
-cette commande avant la premi\`ere d\'efinition, vous perdrez toutes les
-d\'efinitions de l'ex\'ecution pr\'ec\'edente.
-
-\csdisplay
-\newwrite\reffile \newif\ifreffileopened
-\def\openreffile{\ifreffileopened\else
- \reffileopenedtrue
- \immediate\openout\reffile = \jobname.aux
- \fi}%
-\def\readreffile{%
- \testfileexistence{aux}%
- \iffileexists
- \begingroup
- \@setletters
- \input \jobname.aux
- \endgroup
- \else
- \message{No cross-reference file; I won't give you
- warnings about undefined labels.}%
- \xrefwarningfalse
- \fi
- \openreffile}%
-\def\@setletters{%
- \catcode`_ = \letter \catcode`+ = \letter
- \catcode`- = \letter \catcode`@ = \letter
- \catcode`0 = \letter \catcode`1 = \letter
- \catcode`2 = \letter \catcode`3 = \letter
- \catcode`4 = \letter \catcode`5 = \letter
- \catcode`6 = \letter \catcode`7 = \letter
- \catcode`8 = \letter \catcode`9 = \letter
- \catcode`( = \letter \catcode`) = \letter}%
-|
-
-^^{\equations, labelisation}
-Vous pouvez donnez des noms symboliques aux \'equations de la m\^eme mani\`ere,
-en utilisant \pix^|\eqdef| et \pix^|\eqref|. |\eqdef| ins\`ere sa propre
-commande |\eqno|, donc il doit \^etre appel\'e \`a un endroit o\`u |\eqno| est
-l\'egal.
-
-\csdisplay
-\newcount\eqnumber
-\def\eqdef#1{\global\advance\eqnumber by 1
- \expandafter\xdef
- \csname#1eqref\endcsname{\the\eqnumber}%
- \immediate\write\reffile{\string\def
- \expandafter\string\csname#1eqref\endcsname
- {\the\eqnumber}}%
- \eqno
- \eqprint{\the\eqnumber}}%
-|
-
-|\eqref| produit le ``(num\'ero de l'\'equation)''. Vous pouvez obtenir un
-formatage plus fantaisiste en red\'efinissant \pix^|\eqprint|. Par exemple,
-vous pourriez la red\'efinir pour que les num\'eros d'\'equation incluent le
-num\'ero du chapitre.
-
-\csdisplay
-\def\eqref#1{%
- \expandafter \ifx \csname#1eqref\endcsname \relax
- \ifxrefwarning \message{Undefined equation label
- `#1'.}\fi
- \expandafter\def\csname#1eqref\endcsname{00}%
- \else \eqprint{\csname#1eqref\endcsname}%
- \fi}%
-\def\eqprint#1{(#1)}%
-|
-
-
-\section Environnements
-
-\null ^^{environnements} Ces macros vous permettent de d\'efinir vos propres
-groupes appel\'es environnements pour des parties de votre manuscrit. Comme
-les groupes de \TeX, ces groupes peuvent \^etre embo\^\i t\'es, et en fait leur
-embo\^\i tement peut \^etre entrelac\'e avec l'embo\^\i tement des groupes de \TeX. Si
-les noms au d\'ebut et \`a la fin d'un environnement ne s'assortissent pas,
-vous recevrez un message d'erreur. Les macros sont con\c cues pour que le
-message que vous recevez quand une telle erreur se produit vous donne une
-bonne chance de localiser la cause de l'erreur facilement.
-
-Vous d\'ebutez un environnement avec
-\pix^^|\environment|
-|\envi!-ron!-ment| |{foo}| et le finissez avec |\endenvironment{foo}|, o\`u
-|foo| est le nom de l'environnement. Nos macros am\'eliorent l\'eg\`erement la
-r\'eponse \`a l'exercice~5.7 du \texbook, en faisant quelques contr\^oles sur les
-paires |\begingroup| et |\endgroup|, et s'assurant aussi que les paires
-|\environment| et |\endenvironment| s'assortissent.
-
-\csdisplay
-\def\environment#1{\ifx\@groupname\undefined\else
- \errhelp = \@unnamedendgrouphelp
- \errmessage{`\@groupname' was not closed by
- \string\endenvironment}\fi
- \def\@groupname{#1}%
- \begingroup
- \let\@groupname = \undefined \ignorespaces}%
-\def\endenvironment#1{\endgroup
- \def\@thearg{#1}%
- \ifx\@groupname\@thearg
- \else
- \ifx\@groupname\undefined
- \errhelp = \@isolatedendenvironmenthelp
- \errmessage{Isolated
- \string\endenvironment\space for `#1'}%
- \else
- \errhelp = \@mismatchedenvironmenthelp
- \errmessage{Environment `#1' ended,
- but `\@groupname' started}%
- \endgroup % Probably a typo in the names.
- \fi
- \fi
- \let\@groupname = \undefined \ignorespaces}%
-|
-
-Nous d\'efinissons \'egalement des messages d'aide pour chacune des erreurs
-ci-dessus. ^^|\newhelp|
-
-\csdisplay
-\newhelp\@unnamedendgrouphelp{%
- Most likely, you just forgot an^^J%
- \string\endenvironment.
- Maybe you should try inserting another^^J%
- \string\endgroup to recover.}%
-\newhelp\@isolatedendenvironmenthelp{%
- You ended an environment X, but^^J%
- no \string\environment\space to start it
- is anywhere in sight.^^J%
- You might also be at an
- \string\endenvironment\space that would match^^J%
- a \string\begingroup, i.e., you forgot an
- \string\endgroup.}%
-\newhelp\@mismatchedenvironmenthelp{%
- You started an environment X, but^^J%
- you ended it with Y. Maybe you made a typo
- in one or the other^^J%
- of the names.}%
-|
-
-Certains environnements ne doivent pas se produire dans d'autres
-environnements. Appelons ces derniers ``environnements externes''
-(outer). |\check!-env| v\'erifie qu'aucun environnement externe n'est
-actuellement effectif, sinon il se plaint. Pour utiliser |\check!-env|,
-vous devez mettre la commande |\environment!-true| au d\'ebut de chaque
-environnement externe.
-
-\csdisplay
-\newif\ifenvironment
-\def\checkenv{%
- \ifenvironment
- \errhelp = \@interwovenenvhelp
- \errmessage{Interwoven environments}%
- \endgroup
- \fi}%
-\newhelp\@interwovenenvhelp{%
- Perhaps you forgot to end the previous^^J%
- environment? I'm finishing off the current group,^^J%
- hoping that will fix it.}%
-|
-
-
-\section Justification
-
-\bix^^{cadr\'e \`a gauche}
-\bix^^{cadr\'e \`a droite}
-\bix^^{texte centr\'e}
-Les trois macros \pix^|\flushleft|, \pix^|\flushright| et
-\xrdef{eplaincenter}
-\pix^|\center| justifient le texte des
-lignes suivantes de la mani\`ere indiqu\'ee. La commande doit
-appara\^\i tre seule sur une ligne. La commande et le texte
-doivent \^etre enferm\'es dans un groupe---%
-la fin du groupe
-indique la fin du texte. Le groupe entier est plac\'e comme un paragraphe
-simple, avec des lignes compl\'et\'ees d'un c\^ot\'e ou de l'autre comme
-indiqu\'e. Les lignes blanches sont reproduites.
-
-\csdisplay
-\begingroup
- \catcode `\^^M = \active
- \globaldefs = 1 %
- \def\flushleft{\beforejustify %
- \aftergroup\@endflushleft %
- \def^^M{\null\hfil\break}%
- \def\@eateol^^M{}\@eateol}%
- \def\flushright{\beforejustify %
- \aftergroup\@endflushright %
- \def^^M{\break\null\hfil}%
- \def\@eateol^^M{\hfil\null}\@eateol}%
- \def\center {\beforejustify %
- \aftergroup\@endcenter %
- \def^^M{\hfil\break\null\hfil}%
- \def\@eateol^^M{\hfil\null}\@eateol}%
-\endgroup
-|
-
-Les commandes suivantes sont appel\'ees en raison du |\after!-group|
-^^|\aftergroup|
-dans les d\'efinitions de |\flush!-left|, |\flush!- right| et |\center|.
-Elles effectuent les op\'erations de nettoyage n\'ecessaires .
-
-
-\csdisplay
-\def\@endflushleft{\unpenalty
- {\parfillskip = 0pt plus 1 fil\par}%
- \ignorespaces}%
-\def\@endflushright{%
- % Remove the \hfil\null\break we just put on.
- \unskip \setbox0=\lastbox \unpenalty
- % We have fil glue at the left of the line;
- % \parfillskip shouldn't affect that.
- {\parfillskip = 0pt \par}\ignorespaces}%
-\def\@endcenter{%
- % Remove the \hfil\null\break we just put on.
- \unskip \setbox0=\lastbox \unpenalty
- % We have fil glue at the left of the line;
- % \parfillskip must balance it.
- {\parfillskip = 0pt plus 1fil \par}\ignorespaces}%
-\def\beforejustify{%
- \par\noindent
- \catcode`\^^M = \active
- \checkenv \environmenttrue}%
-|
-
-\eix^^{cadr\'e \`a gauche}
-\eix^^{cadr\'e \`a droite}
-\eix^^{texte centr\'e}
-
-
-\section Tables
-
-La macro \pix^|\makecolumns| vous permet de donner toutes les entr\'ees d'une
-table sans vous inqui\'eter de l'endroit o\`u les colonnes se coupent. Par
-exemple, si vous saisissez une longue liste alphab\'etique qui sera compos\'ee
-en plusieurs colonnes, vous ne saurez habituellement pas \`a l'avance o\`u une
-colonne finit et o\`u la suivante commence. Par ailleurs, si un autre \'el\'ement
-est ajout\'e, les coupures de colonne changeront.
-
-|\makecolumns| prend deux arguments (d\'elimit\'es)~: le nombre total de
-rang\'ees et le nombre de colonnes de la table. Par exemple, `|\makecolumns
-37/3:|' d\'esigne une table de trois colonnes dont les rang\'ees sont les $37$
-prochaines lignes. Vous pouvez ajuster le positionnement de la table sur la
-page en changeant |\parindent|, qui d\'etermine l'espace \`a gauche et
-|\hsize|, qui d\'etermine l'espace entre la marge gauche de la page et la
-droite du bloc. Vous pouvez permettre une coupure de page au-dessus du
-|\valign|
-^^|\valign//utilis\'e dans {\tt\\makecolumns}|
-en changeant \pix^|\abovecolumnspenalty|..
-
-\csdisplay
-\newcount\abovecolumnspenalty
-\abovecolumnspenalty = 10000
-\newcount\@linestogo % Lines remaining to process.
-\newcount\@linestogoincolumn % Lines remaining in column.
-\newcount\@columndepth % Number of lines in a column.
-\newdimen\@columnwidth % Width of each column.
-\newtoks\crtok \crtok = {\cr}%
-\def\makecolumns#1/#2: {\par \begingroup
- \@columndepth = #1 \advance\@columndepth by #2
- \advance\@columndepth by -1
- \divide \@columndepth by #2
- \@linestogoincolumn = \@columndepth \@linestogo = #1
- \def\@endcolumnactions{%
- \ifnum \@linestogo<2
- \the\crtok \egroup \endgroup \par
- % End \valign and \makecolumns.
- \else
- \global\advance\@linestogo by -1
- \ifnum\@linestogoincolumn<2
- \global\@linestogoincolumn = \@columndepth
- \the\crtok
- \else &\global\advance\@linestogoincolumn by -1
- \fi
- \fi}%
- \makeactive\^^M\letreturn\@endcolumnactions
- \@columnwidth = \hsize
- \advance\@columnwidth by -\parindent
- \divide\@columnwidth by #2
- \penalty\abovecolumnspenalty
- \noindent % It's not a paragraph (usually).
- \valign\bgroup
- &\hbox to \@columnwidth{\strut ##\hfil}\cr
-}% The next end-of-line starts everything going.
-|
-
-
-\section Notes de pied de page
-
-\null ^^{notes de pied de page}
-Des notes de bas de page sont compos\'ees le plus g\'en\'eralement en utilisant un
-num\'ero incr\'ement\'e comme marque de r\'ef\'erence. Nous d\'efinissons la macro
-\pix^|\numberedfootnote| pour faire cela. Il red\'efinit \'egalement
-^|\vfootnote| pour permettre un formatage l\'eg\`erement plus g\'en\'erique des
-notes de bas de page que ne le fait \plainTeX. Le registre de dimension
-|\foot!-note!-mark!-sepa!-ra!-tion|
-\pix^^|\footnotemarkseparation| contr\^ole
-l'espace entre la marque de la note de bas de page (par exemple, le num\'ero) et le
-d\'ebut du texte. Les tokens \pix^|\everyfootnote| sont
-ins\'er\'es avant de produire la notes de bas de page.
-
-Les d\'efinitions \plainTeX \ de |\footnote| et |\vfootnote| sont pr\'eserv\'es en
-|\@plain!-footnote| et |\@plain!-vfootnote| au cas o\`u vous auriez besoin d'elles.
-\csdisplay
-\newcount\footnotenumber \newtoks\everyfootnote
-\newdimen\footnotemarkseparation
-\footnotemarkseparation = .5em
-\let\@plainfootnote = \footnote
-\let\@plainvfootnote = \vfootnote
-\def\vfootnote#1{\insert\footins\bgroup
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\ht\strutbox \splitmaxdepth\dp\strutbox
- \floatingpenalty\@MM
- \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip
- \xspaceskip\z@skip
- \everypar = {}%
- \the\everyfootnote
- \indent\llap{#1\kern\footnotemarkseparation}\footstrut
- \futurelet\next\fo@t}%
-\def\numberedfootnote{\global\advance\footnotenumber by 1
- \@plainfootnote{$^{\number\footnotenumber}$}}%
-|
-
-
-\section Double colonne
-
-\null ^^{double colonnes} La commande |\doublecolumns| commence la
-composition en double colonne, alors que la commande
-\pix^^|\singlecolumn| |\single!-column| remet la composition en
-colonne simple. Vous pouvez commuter dans les deux sens entre elles
-sur la m\^eme page. Le ressort sp\'ecifi\'e par |\above!-double!-column!-%
-skip| et |\below!-double!-column!-skip| est ins\'er\'ee avant et apr\`es la
-composition en double colonne.
-
-L'approche est d\'eriv\'ee de la \knuth{page~417}{480}.
-
-\csdisplay
-\newskip\abovedoublecolumnskip
-\newskip\belowdoublecolumnskip
-\abovedoublecolumnskip = \bigskipamount
-\belowdoublecolumnskip = \bigskipamount
-\newdimen\gutter \gutter = 2pc
-\newdimen\doublecolumnhsize \doublecolumnhsize = \hsize
-\newbox\@partialpage \newdimen\singlecolumnhsize
-\newdimen\singlecolumnvsize \newtoks\previousoutput
-\def\doublecolumns{\par % Don't start in horizontal mode.
- \previousoutput = \expandafter{\the\output}
- \advance\doublecolumnhsize by -\gutter
- \divide\doublecolumnhsize by 2
- \output = {\global\setbox\@partialpage =
- \vbox{\unvbox255\vskip\abovedoublecolumnskip}}%
- \pagegoal = \pagetotal \break % Expands \output above.
- \output = {\doublecolumnoutput}%
- \singlecolumnhsize = \hsize
- \singlecolumnvsize = \vsize
- \hsize = \doublecolumnhsize \vsize = 2\vsize}%
-|
-
-Le macro |\@double!-column!-split| fait le d\'edoublement r\'eel. On
-suppose que le source est ins\'er\'ee en colonne simple. Si vous ne
-voulez pas que cela soit le cas, vous devrez modifier la routine de
-r\'esultat. Apr\`es que |\@double!-column!-split| ait effectu\'e son
-travail, |\box255| aura le mat\'eriel en double colonne. Le mat\'eriel en
-double colonne sera pr\'ec\'ed\'e par n'importe quel mat\'eriel en colonne simple
-qui aura \'et\'e compos\'e avant que |\doublecolumns| ait \'et\'e appel\'e.
-|\box4| aura le mat\'eriel qui ne s'est pas adapt\'e \`a la page.
-
-\csdisplay
-\def\@doublecolumnsplit{%
- \splittopskip = \topskip \splitmaxdepth = \maxdepth
- \dimen0 = \singlecolumnvsize
- \advance\dimen0 by -\ht\@partialpage
- \advance\dimen0 by -\ht\footins
- \advance\dimen0 by -\skip\footins
- \advance\dimen0 by -\ht\topins
- \begingroup
- \vbadness = 10000
- \global\setbox1=\vsplit255 to \dimen0 \wd1=\hsize
- \global\setbox3=\vsplit255 to \dimen0 \wd3=\hsize
- \endgroup
- \global\setbox4=\vbox{\unvbox255
- \penalty\outputpenalty}%
- \global\setbox255=\vbox{\unvbox\@partialpage
- \hbox to \singlecolumnhsize{\box1\hfil\box3}%
- \vfill}}%
-|
-\needspace{.5in}
-|\double!-column!-out!-put| est la routine de sortie r\'eelle. Nous appelons
-l'ancienne |\output| pour faire le travail de sortie de la bo\^\i te.
-
-\csdisplay
-\def\doublecolumnoutput{\@doublecolumnsplit
- \hsize = \singlecolumnhsize \vsize = \singlecolumnvsize
- \previousoutput \unvbox4}%
-|
-
-|\singlecolumn| reprend la composition en une colonne. Il suppose que
-|\doublecolumns| a \'et\'e appel\'e.
-
-\csdisplay
-\def\singlecolumn{\par % Don't start in horizontal mode.
- \output = {\global\setbox1 =
- \vbox{\unvbox255\vskip\abovedoublecolumnskip}}%
- \pagegoal = \pagetotal \break \setbox255 = \box1
- {\singlecolumnvsize = \ht255
- \divide\singlecolumnvsize by 2
- \advance\singlecolumnvsize by +\ht\@partialpage
- \advance\singlecolumnvsize by +\ht\footins
- \advance\singlecolumnvsize by +\skip\footins
- \advance\singlecolumnvsize by +\ht\topins
- \@doublecolumnsplit}%
- \hsize = \singlecolumnhsize
- \vsize = \singlecolumnvsize
- \output = \expandafter{\the\previousoutput}%
- \unvbox255}%
-|
-
-\margin{`Sensible paragraph skips' section deleted}
-
-
-\section Terminer
-
-Nous devons maintenant d\'efaire les changements que nous avons faits
-quand nous avons commenc\'e (voir la \xref{eplainconv}). Nous donnons
-\'egalement un num\'ero de version, qui sera plus tard
-disponible dans |\fmt!-name| et |\fmt!-version|.
-
-\csdisplay
-\let\wlog = \@plainwlog \catcode`@ = \other
-\def\fmtname{eplain}%
-{\edef\plainversion{\fmtversion}%
- \xdef\fmtversion{1.0: 15 May 1990
- (and plain \plainversion)}%
-}%
-|
-
-\eix^^|eplain.tex|
-
-\endchapter
-\byebye
-
+% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% Copyright (C) 2004 Marc Chaudemanche pour la traduction française. +% See file fdl.tex for copying conditions. + +\input fmacros +\chapter{Un abr\'eg\'e de \linebreak macros utiles} + +\chapterdef{eplain} + +Cette section d\'ecrit |eplain.tex|, une collection de macros et autres +d\'efi\-nitions qui prolongent le plain \TeX. \bix^^|eplain.tex| Les +noms des diverses macros expliquent leurs buts, mais habituellement +n'expliquent pas comment elles fonctionnent, ou ne fournissent pas de +d\'etails explicites sur la fa\c con dont les employer. Cette information +est contenue dans les fichiers source de |eplain.tex| et dans la +documentation qui l'accompagne. Voir \headcit{Ressources}{ressources} +pour la fa\c con d'obtenir |eplain.tex|. + +\section{Pr\'eliminaires} + +Nous commen\c cons par quelques macros pour des codes de cat\'egorie qui +changent et des d\'efinitions pratiques pour deux macros utilis\'ees +fr\'equem\-ment. +^^{codes de cat\'egorie//d\'efinitions pratiques pour} + +\pix^^|\makeactive| +\pix^^|\letter| +\pix^^|\other| +\pix^^|\uncatcodespecials| + +\csdisplay +\def\makeactive#1{\catcode`#1 = \active \ignorespaces}% +\chardef\letter = 11 \chardef\other = 12 +\def\uncatcodespecials{% + \def\do##1{\catcode`##1 = \other}% + \dospecials}% Defined in plain. +| + +Pour d\'efinir `|^^M|' comme caract\`ere actif, vous devez englober la +d\'efini\-tion dans un groupe et appeler quelques moyens +suppl\'ementaires. +\ttidxref{^^M} +La macro \pix^|\letreturn| vous permet de d\'efinir `|^^M|' sans ce code +suppl\'emen\-taire que vous pouvez voir dans la d\'efinition ci-dessous. + +\csdisplay +{\makeactive\^^M \long\gdef\letreturn#1{\let^^M = #1}}% +| + +Ces macros consomment un, deux, ou trois arguments. + +\pix^^|\gobble| +\pix^^|\gobbletwo| +\pix^^|\gobblethree| +\csdisplay +\def\gobble#1{}\def\gobbletwo#1#2{}% +\def\gobblethree#1#2#3{}% +| + +Maintenant nous \'etablissons quelques conventions pour lire le reste du +fichier. Dans le fichier nous autorisons des s\'equences de contr\^ole +``priv\'es'' qui contiennent `|@|' dans leurs noms. Ces s\'equences de +contr\^ole ne sont pas accessibles de l'ext\'erieur de ce fichier (\`a moins +que vous rechangez le code de cat\'egorie du `|@|'). +\xrdef{eplainconv} + +\csdisplay +\catcode`@ = \letter % Allow control sequences with @. +\let\@plainwlog = \wlog % Don't log register allocations. +\let\wlog = \gobble +\newlinechar = `^^J +| + +Les deux macros suivantes fournissent une formulation pratique de +r\'esultat de diagnostic. \pix^|\loggingall| d\'eclenche tout le +tra\c cage, mais ne provoque le r\'esultat de la trace que dans le \logfile +et pas sur votre terminal. \pix^|\tracingboxes| montre compl\`etement +les bo\^\i tes quand elles sont trac\'ees. (\TeX\ ne montre normalement que +trois niveaux de bo\^\i te et cinq items dans chaque bo\^\i te.) + + +\csdisplay +\def\loggingall{\tracingcommands\tw@\tracingstats\tw@ + \tracingpages\@ne\tracingoutput\@ne + \tracinglostchars\@ne\tracingmacros\tw@ + \tracingparagraphs\@ne\tracingrestores\@ne + \showboxbreadth\maxdimen\showboxdepth\maxdimen}% +\def\tracingboxes{\showboxbreadth = \maxdimen + \showboxdepth = \maxdimen}% +| + + +L'\'epaisseur par d\'efaut des traits est de $0.4$\pt. Vous pouvez produire des traits de n'importe quelle \'epaisseur par +d\'efaut que vous voulez en red\'efinissant |\vruledefaultwidth|, |\hruledefaultheight| et |\hruledefaultdepth| et +en employant +\pix^^|\ehrule| +|\eh!-rule| et +\pix^|\evrule| au lieu de |\hrule| et |\vrule|. (le `e' repr\'esente +``eplain''.) +^^{filets//\'epaisseur de} +Si vous donnez une dimension explicite (par exemple, |\ehrule height 16pt|), \TeX \ l'utilisera. + +\csdisplay +\newdimen\hruledefaultheight \hruledefaultheight = 0.4pt +\newdimen\hruledefaultdepth \hruledefaultdepth = 0.0pt +\newdimen\vruledefaultwidth \vruledefaultwidth = 0.4pt +\def\ehrule{\hrule height\hruledefaultheight + depth\hruledefaultdepth}% +\def\evrule{\vrule width\vruledefaultwidth}% +| + +La convention |\%| pour \'ecrire un caract\`ere `|%|' ne marche pas quand vous +voulez inclure ce caract\`ere dans la token liste de |\write|. +^^|\write//\'ecrire \b\tt\%\e\ avec| +^^|%//en sortie| +Vous pouvez utiliser ^|\percentchar| pour r\'ealiser cela. +Nous red\'efinissons \'egalement ^|^^L| comme \'etant sans effet pour que vous puissiez l'utiliser +dans une d\'efinition de macro ou un argument. + +\csdisplay +{\catcode`\% = \other \gdef\percentchar{%}}% + \def^^L{\par +}% +| + +\pix^|\tokstostring| convertit son argument en liste de +^{tokens de caract\`ere}. Il n'emploie que des d\'eveloppements qui sont manipul\'ees +dans l'\oe sophage de \TeX. Cette propri\'et\'e est lui n\'ecessaire +pour travailler avec |\edef|. Elle est utilis\'ee par les macros +de r\'ef\'erences crois\'ees (\xref{xrefs}). + +Pour fractionner l'argument sur l'espace, nous devons +utiliser deux macros subsidiaires. |\@ttsA| trouve les espaces et +|\@ttsB| manipule une s\'equence de token sans aucun espace. Chaque +espace est remplac\'e par le d\'eveloppement de \pix^|\spacesub|. + +\csdisplay +\def\tokstostring#1{\@ttsA#1 \ttsmarkA}% +\def\@ttsA#1 #2\ttsmarkA{\ifempty{#1}\else + \@ttsB #1\@ttsmarkB + \ifempty{#2}\else + \spacesub\@ttsA#2\ttsmarkA\fi\fi}% +\def\@ttsB#1{\ifx #1\@ttsmarkB\else + \string #1% + \expandafter\@ttsB\fi}% +\def\@ttsmarkB{\@ttsmarkB}% should never be expanded +\def\spacesub{+}% +| + +\noindent +\pix^|\ifempty| teste si son argument est vide. + +\csdisplay +\def\ifempty#1{\@ifempty #1\@emptymarkA\@emptymarkB}% +\def\@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}% +\def\@emptymarkA{\@emptymarkA}% +| + +La macro ^|\for| impl\'emente une version \TeX\ du ``^{for loop}'' des +langages de programmation traditionnels. Ces macros viennent directement de +\LaTeX. + +\csdisplay +\def\for#1:=#2\do#3{\edef\@fortmp{#2}% + \ifx\@fortmp\empty \else + \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi}% +\def\@nnil{\@nil}% +\def\@fornoop#1\@@#2#3{}% +\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil + \else #5\def#4{#2} ifx #4\@nnil \else + #5\@iforloop #3\@@#4{#5}\fi\fi}% +\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil + \let\@nextwhile=\@fornoop \else #4\relax + \let\@nextwhile=\@iforloop\fi + \@nextwhile#2\@@#3{#4}}% +| + +\pix^|\obeywhitespace| est utile pour reproduire des coupures de +ligne, des interlignes et des espaces dans votre source. Il combine +les effets de |\obey!-lines| et |\obey!-spaces|, ^^|\obeyspaces| +^^|\obeylines| et met \'egalement des espaces au d\'ebut d'une ligne +devant \^etre imprim\'ee. Les caract\`eres ``tabulation'' ne sont pas affect\'es~; ils +produisent toujours un ressort normal. + +\xrdef{ewhitesp} +^^{caract\`eres espace} +^^|\fontdimen| +^^|\font| +^^|\letreturn| + +\csdisplay +\def\alwaysspace{\hglue\fontdimen2\the\font \relax}% +{\makeactive\^^M \makeactive\ % +\gdef\obeywhitespace{% +\makeactive\^^M\def^^M{\par\indent}% +\aftergroup\@removebox% Kill extra paragraph at end. +\makeactive\ \let =\alwaysspace}}% +\def\@removebox{\setbox0=\lastbox} +| + +\pix^|\frac| est une bonne fa\c con d'afficher des fractions dans du +texte quand vous ne voulez pas utiliser |\over| et que mettre simplement ``1/2'' +ne semble pas beau. Cette macro est la r\'eponse \`a +l'exercise~11.6 de \texbook.^^{fractions//en forme de slash} + +\csdisplay +\def\frac#1/#2{\leavevmode + \kern.1em \raise .5ex \hbox{\the\scriptfont0 #1}% + \kern-.1em $/$% + \kern-.15em \lower .25ex \hbox{\the\scriptfont0 #2}}% +| + +Les macros suivantes produisent des logos qui sont utiles dans le monde \TeX. +Le logo \AMSTeX\ vient de la \knuth{page~420}{483}. Le logo \LaTeX\ +est l\'eg\`erement modifi\'e par rapport \`a celui de |latex.tex| (nous utilisons une +police diff\'erente pour le `A')~; de m\^eme, le logo \BibTeX\ +emploit |\sevenrm| au lieu d'une v\'eritable police de capitale-et- +petite-capitale. Le fichier source |.mf| pour le logo \MF\ est +donn\'e dans le manuel \MF\~: + +\smallskip +{\narrower\noindent +^{Knuth, Donald E.},{\sl The {\logosl METAFONT}book}. + Reading, Mass.: Addison-Wesley, 1986.\par} +\smallskip +\pix^^|\LaTeX| +\pix^^|\AMSTeX| +\pix^^|\BibTeX| +\pix^^|\MF| + +\csdisplay +\def\LaTeX{L\kern-.26em \raise.6ex\hbox{\fiverm A}% + \kern-.15em TeX}% +\def\AMSTeX{$\cal A\kern-.1667em \lower.5ex\hbox{$\cal M$}% + \kern-.125em S$-\TeX}% +\def\BibTeX{{\rm B\kern-.05em {\sevenrm I\kern-.025em B}% + \kern-.08em T\kern-.1667em \lower.7ex\hbox{E}% + \kern-.125emX}}% +\font\mflogo = logo10 +\def\MF{{\mflogo META}{\tenrm \-}{\mflogo FONT}}% +| + +Les deux macros suivantes produisent des bo\^\i tes. \pix^|\blackbox| +produit une ``bulle carr\'ee'', utilis\'e dans les macros de liste +(\xref{listmacs}). \pix^|\makeblankbox| (de \knuth{page~311}{363--364}) +produit un rectangle non rempli, avec l'\'epaisseur des traits de +bordure donn\'ee par les arguments. + +\csdisplay +\def\blackbox{\vrule height .8ex width .6ex depth -.2ex}% +\def\makeblankbox#1#2{% + \hbox{\lower\dp0\vbox{\hidehrule{#1}{#2}% + \kern -#1% overlap rules + \hbox to \wd0{\hidevrule{#1}{#2}% + \raise\ht0\vbox to #1{}% vrule height + \lower\dp0\vtop to #1{}% vrule depth + \hfil\hidevrule{#2}{#1}}% + \kern-#1\hidehrule{#2}{#1}}}}% +\def\hidehrule#1#2{\kern-#1\hrule height#1 depth#2 + \kern-#2}% +\def\hidevrule#1#2{\kern-#1{\dimen0 = #1 + \advance\dimen0 by #2 \vrule width\dimen0}\kern-#2}% +| + +\pix^|\numbername| produit la forme en toute lettres d'un nombre. Si +le nombre est plus grands que dix, la macro ne reproduit que les +chiffres de son argument. + +\csdisplay +\def\numbername#1{\ifcase#1% + zero\or one\or two\or three\or four\or five% + \or six\or seven\or eight\or nine\or ten\or #1\fi}% +| + +\pix^|\testfileexistence| d\'etermine si un fichier |\jobname.#1| est +non\-vide et place |\if!-fileexists| convenablement. +^^{fichiers//tester l'existence de} +Le nom de fichier dans l'argument +n'a pas besoin de finir dans un token d'espace puisque la macro +fournit la marque d'espace. + +\csdisplay +\newif\iffileexists +\def\testfileexistence#1{\begingroup + \immediate\openin0 = \jobname.#1\space + \ifeof 0\global\fileexistsfalse + \else \global\fileexiststrue\fi + \immediate\closein0 + \endgroup}% +| + + +\section Affichages + +Par d\'efaut, \TeX\ centre le mat\'eriel affich\'e (le mat\'eriel +entre |$$|). ^^{affichages, formatage} \pix^|\leftdisplays| provoque +des affichages justifi\'es \`a gauche par d\'efaut. Vous pouvez +retourner aux affichages centr\'es avec \pix^|\centereddisplays|. + +Les macros ici sont plus g\'en\'eralistes qu'elles doivent l'\^etre pour ne faire +que des affichages justifi\'es \`a gauche. Pour chaque affichage, +\pix^|\ifeqno| sera vrai si un |\eqno| appara\^\i t dans l'affichage. +\pix^|\ifleqno| sera vrai si un |\leqno| appara\^\i t. Si l'une ou l'autre +sorte d'\'equation num\'erot\'ee appara\^\i t, \pix^|\eqn| produit le texte +du num\'ero de l'\'equation. \pix^|\eq| produit toujours le texte de +l'\'equation lui-m\^eme. + +Ces macros sont bas\'ees sur le code de la \knuth{page~376}{434}. + +\csdisplay +\newif\ifeqno \newif\ifleqno +\newtoks\@eqtoks \newtoks\@eqnotoks +\def\eq{\the\@eqtoks}\def\eqn{\the\@eqnotoks}% +\def\displaysetup#1$${% + \@displaytest#1\eqno\eqno\@displaytest}% +\def\@displaytest#1\eqno#2\eqno#3\@displaytest{% + \if !#3!% No \eqno, check for \leqno: + \@ldisplaytest#1\leqno\leqno\@ldisplaytest + \else + \eqnotrue \leqnofalse % Have \eqno, not \leqno. + \@eqnotoks = {#2}\@eqtoks = {#1}% + \fi + \generaldisplay$$}% +\def\@ldisplaytest#1\leqno#2\leqno#3\@ldisplaytest{% + \@eqtoks = {#1}% + \if !#3!% + \eqnofalse % No \leqno; we're done. + \else + \eqnotrue \leqnotrue % Have \leqno. + \@eqnotoks = {#2}% + \fi}% +| + +Vous pouvez composer des affichages diff\'eremment en d\'efinissant votre +propre macro analogue \`a \pix^|\leftdisplays|. La d\'efinition de macro doit +placer l'appel \`a |\display!-setup| dans |\every!-display| ^^|\everydisplay| +afin de s'assurer que ^^|\displaysetup| |\dis!-play!-setup| soit appel\'e au +d\'ebut de chaque affichage. La d\'efinition de macro doit \'egalement inclure +une d\'efinition de ^|\generaldisplay|. + +\csdisplay +\newtoks\previouseverydisplay +\def\leftdisplays{% + \previouseverydisplay = \everydisplay + \everydisplay = + {\the\previouseverydisplay \displaysetup}% + \def\generaldisplay{% + \leftline{% + \strut \indent \hskip\leftskip + \dimen0 = \parindent + \advance\dimen0 by \leftskip + \advance\displaywidth by -\dimen0 + \@redefinealignmentdisplays + \ifeqno \ifleqno + \kern-\dimen0 + \rlap{$\displaystyle\eqn$}% + \kern\dimen0 + \fi\fi + $\displaystyle{\eq}$% + \ifeqno \ifleqno\else + \hfill $\displaystyle{\eqn}$% + \fi\fi}}}% +\def\centereddisplays{\let\displaysetup = \relax}% +| + +%\filbreak +\pix^|\leftdisplays| doit travailler dans la douleur pour s'assurer que +|\dis!-play!-lines|, ^|\eqalignno| ^^|\displaylines| et ^|\leqalignno| +fonctionnent toujours correctement. |\eq| est compos\'e en mode math\'ematique +et |\halign| est ill\'egal dans ce mode. ^^|\halign//ill\'egal dans le mode +math\'ematique| Nous utilisons ^|\vcenter| pour changer le contexte pour que +|\halign| redevienne l\'egal. Nous enlevons \'egalement les commandes |\hfil| \`a +gauche du patron pour obtenir la justification \`a droite. \`a part ces +changements, les macros sont les m\^emes que dans |plain.tex|. + +\csdisplay +\def\@redefinealignmentdisplays{% + \def\displaylines##1{\displ@y + \vcenter{\halign{\hbox to\displaywidth{$\@lign + \displaystyle####\hfil$}\crcr##1\crcr}}}% + \def\eqalignno##1{\displ@y + \vcenter{\halign to\displaywidth{% + $\@lign\displaystyle{####}$\tabskip\z@skip + &$\@lign\displaystyle{{}####}$ + \hfil\tabskip\centering + &\llap{$\@lign####$}\tabskip\z@skip\crcr + ##1\crcr}}}% + \def\leqalignno##1{\displ@y + \vcenter{\halign to\displaywidth{% + $\@lign\displaystyle{####}$\tabskip\z@skip + &$\@lign\displaystyle{{}####} + $\hfil\tabskip\centering + &\kern-\displaywidth + \rlap{\kern-\parindent\kern-\leftskip$ + \@lign####$}% + \tabskip\displaywidth\crcr + ##1\crcr}}}}% +| + + +\section heure du jour + +Quand \TeX\ d\'emarre, il d\'etermine les valeurs des param\`etres ^|\time|, +^|\day|, ^|\month| et ^|\year|. +^^{heure du jour}^^{date} +\pix^|\monthname| +produit le nom du mois, abr\'eg\'e en trois lettres. +\pix^|\timestring| produit l'heure courante, comme dans ``1:14\thinspace +p.m.''. \pix^|\timestamp| produit le texte de la date compl\`ete, comme dans +``23 avr 1964\quad 1:14\thinspace p.m.''. + +\csdisplay +\def\monthname{% + \ifcase\month + \or Jan\or Feb\or Mar\or Apr\or May\or Jun% + \or Jul\or Aug\or Sep\or Oct\or Nov\or Dec% + \fi}% +\def\timestring{\begingroup + \count0 = \time \divide\count0 by 60 + \count2 = \count0 % The hour. + \count4 = \time \multiply\count0 by 60 + \advance\count4 by -\count0 % The minute. + \ifnum\count4<10 \toks1 = {0}% Get a leading zero. + \else \toks1 = {}% + \fi + \ifnum\count2<12 \toks0 = {a.m.}% + \else \toks0 = {p.m.}% + \advance\count2 by -12 + \fi + \ifnum\count2=0 \count2 = 12 \fi % Make midnight `12'. + \number\count2:\the\toks1 \number\count4 + \thinspace \the\toks0 +\endgroup}% +\def\timestamp{\number\day\space\monthname\space + \number\year\quad\timestring}% +| + + +\section Listes + +\null +\xrdef{listmacs} +\bix^^{listes d'\'el\'ements} +\bix^^{\enumerations} +\pix^|\numberedlist| produit des listes num\'erot\'ees~; |\endnumberedlist| les +termine. +\pix^|\unorderedlist| est analogue. +Pour l'une ou l'autre de ces derni\`eres, les items \`a l'int\'erieur des listes +commencent par \pix^|\li| (``list item''). Vous pouvez mettre +\pix^|\listcompact| au d\'ebut d'une liste si vous ne voulez aucun espace +additionnel entre les \'el\'ements de cette liste. Des listes peuvent \^etre +imbriqu\'ees arbitrairement. + +Vous pouvez contr\^oler plus g\'en\'eralement l'espacement entre les +\'el\'e\-ments en assignant des valeurs aux registres \'enum\'er\'es +ci-dessous. Si les \'el\'ements de vos listes tendent \`a \^etre +longs, vous pourriez vouloir rendre |\interitemskip| diff\'erent de +z\'ero. L'indentation gauche de chaque \'el\'ement de liste est +donn\'ee par |\par!-indent| plus |\list!-left!-indent|~; l'indentation +droite de chaque \'el\'ement de liste est donn\'ee par |\list!-right!|% indent|. + +\csdisplay +\newskip\abovelistskip \abovelistskip = .5\baselineskip +\newskip\interitemskip \interitemskip = 0pt +\newskip\belowlistskip \belowlistskip = .5\baselineskip +\newdimen\listleftindent \listleftindent = \parindent +\newdimen\listrightindent \listrightindent = 0pt +\def\listcompact{\interitemskip = 0pt \relax}% +| + +Les listes num\'erot\'ees et non num\'erot\'ees utilisent les macros qui suivent. +Nous ne changeons pas |\parindent|, puisque beaucoup de macros existantes, +comme par exemple, |\footnote|, en d\'ependent. Nous devons expliquer la +possibilit\'e que les \'el\'ements fassent plus d'un paragraphe de long. Dans ce +cas-ci, tous les paragraphes apr\`es le premier sont indent\'es. Nous +utilisons |\leftskip| et |\rightskip| pour indenter les \'el\'ements d'une liste. +L'indentation des affichages est expliqu\'ee par des changements de |\every!-% +dis!-play|. ^^|\everydisplay| + +\csdisplay +\newdimen\@listindent +\def\beginlist{% + \@listindent = \parindent + \advance\@listindent by \listleftindent + \everydisplay = \expandafter{\the\everydisplay + % Don't lose user's \everydisplay: + \advance\displayindent by \@listindent + \advance\displaywidth by -\@listindent + \advance\displaywidth by -\listrightindent}% + \nobreak\vskip\abovelistskip + \parskip = 0pt + % \leftskip shifts nested lists to the right on the page. + \advance\leftskip by \@listindent + \advance\rightskip by \listrightindent}% +\def\printitem{\par\noindent + \llap{\hskip-\listleftindent \marker \enspace}}% +\def\endlist{\vskip\belowlistskip}% +| + +\noindent +Vous pouvez changer la mani\`ere dont les labels d'\'el\'ements sont compos\'ees en +red\'efinissant la macro |\numbered!-marker|. \pix^^|\numberedmarker| + +\csdisplay +\newcount\numberedlistdepth \newcount\itemnumber +\newcount\itemletter +\def\numberedmarker{% + \ifcase\numberedlistdepth + (impossible)% + \or \itemnumberout)% + \or \itemletterout)% + \else *% + \fi}% +| + +\noindent Voici les d\'efinitions de |\numberedlist| et de +|\unorderedlist|. +ces d\'efini\-tions ont la m\^eme structure. + +\csdisplay +\def\numberedlist{\environment{@numbered-list}% + \advance\numberedlistdepth by 1 + \itemnumber = 1 \itemletter = `a + \beginlist \let\marker = \numberedmarker + \def\li{% + \ifnum\itemnumber=1\else \vskip\interitemskip \fi + \printitem + \advance\itemnumber by 1 \advance\itemletter by 1 + }}% +\def\itemnumberout{\number\itemnumber}% +\def\itemletterout{\char\itemletter}% +\def\endnumberedlist{\par + \endenvironment{@numbered-list}\endlist}% +!bigskip +\newcount\unorderedlistdepth +\def\unorderedmarker{% + \ifcase\unorderedlistdepth + (impossible)% + \or \blackbox + \or ---% + \else *% + \fi}% +\def\unorderedlist{\environment{@unordered-list}% + \advance\unorderedlistdepth by 1 + \beginlist \itemnumber = 1 + \let\marker = \unorderedmarker + \def\li{% + \ifnum\itemnumber=1\else \vskip\interitemskip \fi + \printitem \advance\itemnumber by 1 + }}% +\def\endunorderedlist{\par + \endenvironment{@unordered-list}\endlist}% +| + +\eix^^{listes d'\'el\'ements} +\eix^^{\enumerations} + + +\section Listing verbatim + +La macro \pix^|\listing| produit le listing verbatim d'un fichier sp\'ecifi\'e +en police |\tt|. +Elle est bas\'ee sur le code de la \knuth{page~380}{439}. +Les tabulations produisent un montant d'espace fixe et les sauts de page +produisent une coupure de page. D'autres caract\`eres de contr\^ole produisent +ce qui s'av\`ere \^etre \`a cette position dans la police, qui n'est g\'en\'eralement +pas tr\`es utile. En red\'efinissant |\setup!-listing!-hook|, +\pix^^|\setuplistinghook| vous pouvez prendre les mesures compl\'ementaires +qui sont appropri\'ees pour vos polices et\slash ou environnements particuliers +avant que le fichier ne soit lu. + +\csdisplay +\def\listing#1{% + \par \begingroup \@setuplisting \setuplistinghook + \input #1 \endgroup}% +\let\setuplistinghook = \empty +\def\@setuplisting{% + \uncatcodespecials + \obeywhitespace \makeactive\` \makeactive\^^I + \def^^L{\vfill\eject}\tt}% +{\makeactive\` \gdef`{\relax\lq}}% Defeat ligatures. +{\makeactive\^^I\gdef^^I{\hskip8\fontdimen2\tt \relax}}% +| + + +\section Table des mati\`eres + +\null ^^{table des mati\`eres} +La macro \pix^|\writetocentry| \'ecrit une macro dans le fichier +|\jobname.toc|. Le premier argument de |\writetocentry|, par exemple, +``chapitre'', est utilis\'e pour composer le nom de la macro appel\'ee. Le +deuxi\`eme argument est le texte qui doit appara\^\i tre dans la table des +mati\`eres. |\writetocentry| appose le num\'ero de la page \`a l'appel de la macro. +Par exemple~: +\csdisplay +\writetocentry{chapter}{Introduction} +| +\noindent +produira la ligne~: +\csdisplay +\tocchapterentry{Introduction}{2} +| +\noindent dans le fichier |.toc|, ce qui indique que `Introduction' d\'ebute +en page 2. + +Vous pouvez utiliser |\writenumberedtocentry| pour apporter un troisi\`eme +param\`etre, tel qu'un num\'ero de chapitre. Par exemple~: +\csdisplay +\writenumberedtocentry{chapter}{The second chapter}{2} +| +\noindent \'ecrira une ligne~: +\csdisplay +\tocchapterentry{The second chapter}{2}{14} +| +\noindent +Vous pouvez aussi faire un |\write| vers le |\tocfile| vous-m\^eme. + +\csdisplay +\newwrite\tocfile \newif\iftocfileopened +\def\opentocfile{\iftocfileopened\else + \tocfileopenedtrue + \immediate\openout\tocfile = \jobname.toc +\fi}% +\def\writenumberedtocentry#1#2#3{\ifrewritetocfile + \opentocfile + \write\tocfile{% + \expandafter\noexpand \csname toc#1entry\endcsname + {#2}{#3}{\folio}}% +\ignorespaces\fi}% +\def\writenumberedtocentry#1#2#3{\ifrewritetocfile + \opentocfile + \write\tocfile{% + \expandafter\noexpand \csname toc#1entry\endcsname + {#2}{#3}{\folio}}% +\ignorespaces\fi}% +| + +Pour produire une table des mati\`eres, lisez le fichier |.toc| avec +\pix^|\readtocfile|. Vous devez appeler |\read!-tocfile| avant le premier +|\write!-toc!-entry|. Quand vous traitez la table des mati\`eres sans la +r\'eg\'en\'erer, vous ne devriez pas r\'ecrire le fichier |.toc|---si vous le +faites, son contenu sera perdu. La commande |\rewrite!-tocfile!-false| +emp\^echera la r\'e\'ecriture. + +\csdisplay +\newif\ifrewritetocfile \rewritetocfiletrue +\def\readtocfile{\testfileexistence{toc}% + \iffileexists + \input \jobname.toc + \ifrewritetocfile \opentocfile \fi + \fi}% +| + +Voici quelques d\'efinitions de macros |\toc|\dots|entry| possibles. Ces +d\'efinitions ne sont indiqu\'ees que comme exemple---aligner des traits \`a +travers la ligne n'est normalement pas la meilleure mani\`ere de composer une +table des mati\`eres. + +\csdisplay +\def\tocchapterentry#1#2{\line{\bf #1 \dotfill\ #2}}% +\def\tocsectionentry#1#2{% + \line{\quad\sl #1 \dotfill\ \rm #2}}% +\def\tocsubsectionentry#1#2{% + \line{\qquad\rm #1 \dotfill\ #2}}% +| + + +\section R\'ef\'erences crois\'ees + +\null ^^{r\'ef\'erences crois\'ees} +\xrdef{xrefs} +Les macros qui suivent fournissent des r\'ef\'erences crois\'ees symboliques, pour +que vous puissiez vous r\'ef\'erer \`a quelque chose dans une autre partie d'un +document par son nom et non son num\'ero de page r\'eel. \pix^|\xrdef||{foo}| +d\'efinit une \'etiquette |foo| comme \'etant le num\'ero de page courant et +\pix^|\xrefn||{foo}| produit ce num\'ero de page, par exemple, $77$. Plus +fr\'equement, vous voudrez dire quelque chose comme ``voir p.\thinspace77'', +ainsi \pix^|\xref||{foo}| produit ` p.\thinspace 77''. Si |foo| n'est pas +d\'efini, un message d'avertissement sera donn\'e. |\xrefwarningfalse| supprime +l'avertissement. + +Ces macros n'assurent aucune protection contre des d\'efinitions dupliqu\'ees. +Vous pouvez v\'erifier ces d\'efinitions dupliqu\'ees en triant le fichier de +r\'ef\'erences crois\'ees et en v\'erifiant, m\'ecaniquement ou \emph{de visu}, les +d\'efinitions adjacentes du m\^eme symbole. + +\csdisplay +\newif\ifxrefwarning \xrefwarningtrue +\def\xrdef#1{\begingroup + \xrlabel{#1}% + \edef\@wr{\@writexrdef{\the\@xrlabeltoks}}% + \@wr + \endgroup \ignorespaces}% +\def\@writexrdef#1{\write\reffile{% + \string\gdef + \expandafter\string\csname#1\endcsname + {\noexpand\folio}\percentchar}}% +\def\xrefnumber#1{% + \xrlabel{#1}% + % \@xrlabeltoks now has the control sequence name. + \toks0 = + \expandafter{\csname\the\@xrlabeltoks\endcsname}% + \expandafter \ifx\the\toks0\relax + \ifxrefwarning \message{Undefined label + `\tokstostring{#1}'.}\fi + {\let\spacesub = \space + \expandafter\xdef\the\toks0 + {`{\tt \tokstostring{#1}}'}}\fi + \the\toks0}% +\def\xref#1{p.\thinspace\xrefnumber{#1}}% +\def\xrefn#1{\xrefnumber{#1}}% +| + +Cette macro transforme une \'etiquette en liste de tokens de caract\`ere dans le +registre de tokens |\labeltoks|. Une \'etiquette peut inclure des blancs et +des s\'equences de contr\^ole aussi bien que les caract\`eres normaux, mais elle +ne peut pas inclure d'accolades. + +\csdisplay +\newtoks\@xrlabeltoks +\def\xrlabel#1{\begingroup + \escapechar = `\_ \edef\tts{\tokstostring{#1_}}% + \global\@xrlabeltoks = \expandafter{\tts}% + \endgroup}% +| + +Il faut deux passages pour obtenir des r\'ef\'erences crois\'ees correctes, +puisque les d\'efinitions sont \'ecrites dans le fichier auxiliaire +|\jobname.aux|. \pix^|\readreffile| les relit. Si vous ne saisissez pas +cette commande avant la premi\`ere d\'efinition, vous perdrez toutes les +d\'efinitions de l'ex\'ecution pr\'ec\'edente. + +\csdisplay +\newwrite\reffile \newif\ifreffileopened +\def\openreffile{\ifreffileopened\else + \reffileopenedtrue + \immediate\openout\reffile = \jobname.aux + \fi}% +\def\readreffile{% + \testfileexistence{aux}% + \iffileexists + \begingroup + \@setletters + \input \jobname.aux + \endgroup + \else + \message{No cross-reference file; I won't give you + warnings about undefined labels.}% + \xrefwarningfalse + \fi + \openreffile}% +\def\@setletters{% + \catcode`_ = \letter \catcode`+ = \letter + \catcode`- = \letter \catcode`@ = \letter + \catcode`0 = \letter \catcode`1 = \letter + \catcode`2 = \letter \catcode`3 = \letter + \catcode`4 = \letter \catcode`5 = \letter + \catcode`6 = \letter \catcode`7 = \letter + \catcode`8 = \letter \catcode`9 = \letter + \catcode`( = \letter \catcode`) = \letter}% +| + +^^{\equations, labelisation} +Vous pouvez donnez des noms symboliques aux \'equations de la m\^eme mani\`ere, +en utilisant \pix^|\eqdef| et \pix^|\eqref|. |\eqdef| ins\`ere sa propre +commande |\eqno|, donc il doit \^etre appel\'e \`a un endroit o\`u |\eqno| est +l\'egal. + +\csdisplay +\newcount\eqnumber +\def\eqdef#1{\global\advance\eqnumber by 1 + \expandafter\xdef + \csname#1eqref\endcsname{\the\eqnumber}% + \immediate\write\reffile{\string\def + \expandafter\string\csname#1eqref\endcsname + {\the\eqnumber}}% + \eqno + \eqprint{\the\eqnumber}}% +| + +|\eqref| produit le ``(num\'ero de l'\'equation)''. Vous pouvez obtenir un +formatage plus fantaisiste en red\'efinissant \pix^|\eqprint|. Par exemple, +vous pourriez la red\'efinir pour que les num\'eros d'\'equation incluent le +num\'ero du chapitre. + +\csdisplay +\def\eqref#1{% + \expandafter \ifx \csname#1eqref\endcsname \relax + \ifxrefwarning \message{Undefined equation label + `#1'.}\fi + \expandafter\def\csname#1eqref\endcsname{00}% + \else \eqprint{\csname#1eqref\endcsname}% + \fi}% +\def\eqprint#1{(#1)}% +| + + +\section Environnements + +\null ^^{environnements} Ces macros vous permettent de d\'efinir vos propres +groupes appel\'es environnements pour des parties de votre manuscrit. Comme +les groupes de \TeX, ces groupes peuvent \^etre embo\^\i t\'es, et en fait leur +embo\^\i tement peut \^etre entrelac\'e avec l'embo\^\i tement des groupes de \TeX. Si +les noms au d\'ebut et \`a la fin d'un environnement ne s'assortissent pas, +vous recevrez un message d'erreur. Les macros sont con\c cues pour que le +message que vous recevez quand une telle erreur se produit vous donne une +bonne chance de localiser la cause de l'erreur facilement. + +Vous d\'ebutez un environnement avec +\pix^^|\environment| +|\envi!-ron!-ment| |{foo}| et le finissez avec |\endenvironment{foo}|, o\`u +|foo| est le nom de l'environnement. Nos macros am\'eliorent l\'eg\`erement la +r\'eponse \`a l'exercice~5.7 du \texbook, en faisant quelques contr\^oles sur les +paires |\begingroup| et |\endgroup|, et s'assurant aussi que les paires +|\environment| et |\endenvironment| s'assortissent. + +\csdisplay +\def\environment#1{\ifx\@groupname\undefined\else + \errhelp = \@unnamedendgrouphelp + \errmessage{`\@groupname' was not closed by + \string\endenvironment}\fi + \def\@groupname{#1}% + \begingroup + \let\@groupname = \undefined \ignorespaces}% +\def\endenvironment#1{\endgroup + \def\@thearg{#1}% + \ifx\@groupname\@thearg + \else + \ifx\@groupname\undefined + \errhelp = \@isolatedendenvironmenthelp + \errmessage{Isolated + \string\endenvironment\space for `#1'}% + \else + \errhelp = \@mismatchedenvironmenthelp + \errmessage{Environment `#1' ended, + but `\@groupname' started}% + \endgroup % Probably a typo in the names. + \fi + \fi + \let\@groupname = \undefined \ignorespaces}% +| + +Nous d\'efinissons \'egalement des messages d'aide pour chacune des erreurs +ci-dessus. ^^|\newhelp| + +\csdisplay +\newhelp\@unnamedendgrouphelp{% + Most likely, you just forgot an^^J% + \string\endenvironment. + Maybe you should try inserting another^^J% + \string\endgroup to recover.}% +\newhelp\@isolatedendenvironmenthelp{% + You ended an environment X, but^^J% + no \string\environment\space to start it + is anywhere in sight.^^J% + You might also be at an + \string\endenvironment\space that would match^^J% + a \string\begingroup, i.e., you forgot an + \string\endgroup.}% +\newhelp\@mismatchedenvironmenthelp{% + You started an environment X, but^^J% + you ended it with Y. Maybe you made a typo + in one or the other^^J% + of the names.}% +| + +Certains environnements ne doivent pas se produire dans d'autres +environnements. Appelons ces derniers ``environnements externes'' +(outer). |\check!-env| v\'erifie qu'aucun environnement externe n'est +actuellement effectif, sinon il se plaint. Pour utiliser |\check!-env|, +vous devez mettre la commande |\environment!-true| au d\'ebut de chaque +environnement externe. + +\csdisplay +\newif\ifenvironment +\def\checkenv{% + \ifenvironment + \errhelp = \@interwovenenvhelp + \errmessage{Interwoven environments}% + \endgroup + \fi}% +\newhelp\@interwovenenvhelp{% + Perhaps you forgot to end the previous^^J% + environment? I'm finishing off the current group,^^J% + hoping that will fix it.}% +| + + +\section Justification + +\bix^^{cadr\'e \`a gauche} +\bix^^{cadr\'e \`a droite} +\bix^^{texte centr\'e} +Les trois macros \pix^|\flushleft|, \pix^|\flushright| et +\xrdef{eplaincenter} +\pix^|\center| justifient le texte des +lignes suivantes de la mani\`ere indiqu\'ee. La commande doit +appara\^\i tre seule sur une ligne. La commande et le texte +doivent \^etre enferm\'es dans un groupe---% +la fin du groupe +indique la fin du texte. Le groupe entier est plac\'e comme un paragraphe +simple, avec des lignes compl\'et\'ees d'un c\^ot\'e ou de l'autre comme +indiqu\'e. Les lignes blanches sont reproduites. + +\csdisplay +\begingroup + \catcode `\^^M = \active + \globaldefs = 1 % + \def\flushleft{\beforejustify % + \aftergroup\@endflushleft % + \def^^M{\null\hfil\break}% + \def\@eateol^^M{}\@eateol}% + \def\flushright{\beforejustify % + \aftergroup\@endflushright % + \def^^M{\break\null\hfil}% + \def\@eateol^^M{\hfil\null}\@eateol}% + \def\center {\beforejustify % + \aftergroup\@endcenter % + \def^^M{\hfil\break\null\hfil}% + \def\@eateol^^M{\hfil\null}\@eateol}% +\endgroup +| + +Les commandes suivantes sont appel\'ees en raison du |\after!-group| +^^|\aftergroup| +dans les d\'efinitions de |\flush!-left|, |\flush!- right| et |\center|. +Elles effectuent les op\'erations de nettoyage n\'ecessaires . + + +\csdisplay +\def\@endflushleft{\unpenalty + {\parfillskip = 0pt plus 1 fil\par}% + \ignorespaces}% +\def\@endflushright{% + % Remove the \hfil\null\break we just put on. + \unskip \setbox0=\lastbox \unpenalty + % We have fil glue at the left of the line; + % \parfillskip shouldn't affect that. + {\parfillskip = 0pt \par}\ignorespaces}% +\def\@endcenter{% + % Remove the \hfil\null\break we just put on. + \unskip \setbox0=\lastbox \unpenalty + % We have fil glue at the left of the line; + % \parfillskip must balance it. + {\parfillskip = 0pt plus 1fil \par}\ignorespaces}% +\def\beforejustify{% + \par\noindent + \catcode`\^^M = \active + \checkenv \environmenttrue}% +| + +\eix^^{cadr\'e \`a gauche} +\eix^^{cadr\'e \`a droite} +\eix^^{texte centr\'e} + + +\section Tables + +La macro \pix^|\makecolumns| vous permet de donner toutes les entr\'ees d'une +table sans vous inqui\'eter de l'endroit o\`u les colonnes se coupent. Par +exemple, si vous saisissez une longue liste alphab\'etique qui sera compos\'ee +en plusieurs colonnes, vous ne saurez habituellement pas \`a l'avance o\`u une +colonne finit et o\`u la suivante commence. Par ailleurs, si un autre \'el\'ement +est ajout\'e, les coupures de colonne changeront. + +|\makecolumns| prend deux arguments (d\'elimit\'es)~: le nombre total de +rang\'ees et le nombre de colonnes de la table. Par exemple, `|\makecolumns +37/3:|' d\'esigne une table de trois colonnes dont les rang\'ees sont les $37$ +prochaines lignes. Vous pouvez ajuster le positionnement de la table sur la +page en changeant |\parindent|, qui d\'etermine l'espace \`a gauche et +|\hsize|, qui d\'etermine l'espace entre la marge gauche de la page et la +droite du bloc. Vous pouvez permettre une coupure de page au-dessus du +|\valign| +^^|\valign//utilis\'e dans {\tt\\makecolumns}| +en changeant \pix^|\abovecolumnspenalty|.. + +\csdisplay +\newcount\abovecolumnspenalty +\abovecolumnspenalty = 10000 +\newcount\@linestogo % Lines remaining to process. +\newcount\@linestogoincolumn % Lines remaining in column. +\newcount\@columndepth % Number of lines in a column. +\newdimen\@columnwidth % Width of each column. +\newtoks\crtok \crtok = {\cr}% +\def\makecolumns#1/#2: {\par \begingroup + \@columndepth = #1 \advance\@columndepth by #2 + \advance\@columndepth by -1 + \divide \@columndepth by #2 + \@linestogoincolumn = \@columndepth \@linestogo = #1 + \def\@endcolumnactions{% + \ifnum \@linestogo<2 + \the\crtok \egroup \endgroup \par + % End \valign and \makecolumns. + \else + \global\advance\@linestogo by -1 + \ifnum\@linestogoincolumn<2 + \global\@linestogoincolumn = \@columndepth + \the\crtok + \else &\global\advance\@linestogoincolumn by -1 + \fi + \fi}% + \makeactive\^^M\letreturn\@endcolumnactions + \@columnwidth = \hsize + \advance\@columnwidth by -\parindent + \divide\@columnwidth by #2 + \penalty\abovecolumnspenalty + \noindent % It's not a paragraph (usually). + \valign\bgroup + &\hbox to \@columnwidth{\strut ##\hfil}\cr +}% The next end-of-line starts everything going. +| + + +\section Notes de pied de page + +\null ^^{notes de pied de page} +Des notes de bas de page sont compos\'ees le plus g\'en\'eralement en utilisant un +num\'ero incr\'ement\'e comme marque de r\'ef\'erence. Nous d\'efinissons la macro +\pix^|\numberedfootnote| pour faire cela. Il red\'efinit \'egalement +^|\vfootnote| pour permettre un formatage l\'eg\`erement plus g\'en\'erique des +notes de bas de page que ne le fait \plainTeX. Le registre de dimension +|\foot!-note!-mark!-sepa!-ra!-tion| +\pix^^|\footnotemarkseparation| contr\^ole +l'espace entre la marque de la note de bas de page (par exemple, le num\'ero) et le +d\'ebut du texte. Les tokens \pix^|\everyfootnote| sont +ins\'er\'es avant de produire la notes de bas de page. + +Les d\'efinitions \plainTeX \ de |\footnote| et |\vfootnote| sont pr\'eserv\'es en +|\@plain!-footnote| et |\@plain!-vfootnote| au cas o\`u vous auriez besoin d'elles. +\csdisplay +\newcount\footnotenumber \newtoks\everyfootnote +\newdimen\footnotemarkseparation +\footnotemarkseparation = .5em +\let\@plainfootnote = \footnote +\let\@plainvfootnote = \vfootnote +\def\vfootnote#1{\insert\footins\bgroup + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip + \xspaceskip\z@skip + \everypar = {}% + \the\everyfootnote + \indent\llap{#1\kern\footnotemarkseparation}\footstrut + \futurelet\next\fo@t}% +\def\numberedfootnote{\global\advance\footnotenumber by 1 + \@plainfootnote{$^{\number\footnotenumber}$}}% +| + + +\section Double colonne + +\null ^^{double colonnes} La commande |\doublecolumns| commence la +composition en double colonne, alors que la commande +\pix^^|\singlecolumn| |\single!-column| remet la composition en +colonne simple. Vous pouvez commuter dans les deux sens entre elles +sur la m\^eme page. Le ressort sp\'ecifi\'e par |\above!-double!-column!-% +skip| et |\below!-double!-column!-skip| est ins\'er\'ee avant et apr\`es la +composition en double colonne. + +L'approche est d\'eriv\'ee de la \knuth{page~417}{480}. + +\csdisplay +\newskip\abovedoublecolumnskip +\newskip\belowdoublecolumnskip +\abovedoublecolumnskip = \bigskipamount +\belowdoublecolumnskip = \bigskipamount +\newdimen\gutter \gutter = 2pc +\newdimen\doublecolumnhsize \doublecolumnhsize = \hsize +\newbox\@partialpage \newdimen\singlecolumnhsize +\newdimen\singlecolumnvsize \newtoks\previousoutput +\def\doublecolumns{\par % Don't start in horizontal mode. + \previousoutput = \expandafter{\the\output} + \advance\doublecolumnhsize by -\gutter + \divide\doublecolumnhsize by 2 + \output = {\global\setbox\@partialpage = + \vbox{\unvbox255\vskip\abovedoublecolumnskip}}% + \pagegoal = \pagetotal \break % Expands \output above. + \output = {\doublecolumnoutput}% + \singlecolumnhsize = \hsize + \singlecolumnvsize = \vsize + \hsize = \doublecolumnhsize \vsize = 2\vsize}% +| + +Le macro |\@double!-column!-split| fait le d\'edoublement r\'eel. On +suppose que le source est ins\'er\'ee en colonne simple. Si vous ne +voulez pas que cela soit le cas, vous devrez modifier la routine de +r\'esultat. Apr\`es que |\@double!-column!-split| ait effectu\'e son +travail, |\box255| aura le mat\'eriel en double colonne. Le mat\'eriel en +double colonne sera pr\'ec\'ed\'e par n'importe quel mat\'eriel en colonne simple +qui aura \'et\'e compos\'e avant que |\doublecolumns| ait \'et\'e appel\'e. +|\box4| aura le mat\'eriel qui ne s'est pas adapt\'e \`a la page. + +\csdisplay +\def\@doublecolumnsplit{% + \splittopskip = \topskip \splitmaxdepth = \maxdepth + \dimen0 = \singlecolumnvsize + \advance\dimen0 by -\ht\@partialpage + \advance\dimen0 by -\ht\footins + \advance\dimen0 by -\skip\footins + \advance\dimen0 by -\ht\topins + \begingroup + \vbadness = 10000 + \global\setbox1=\vsplit255 to \dimen0 \wd1=\hsize + \global\setbox3=\vsplit255 to \dimen0 \wd3=\hsize + \endgroup + \global\setbox4=\vbox{\unvbox255 + \penalty\outputpenalty}% + \global\setbox255=\vbox{\unvbox\@partialpage + \hbox to \singlecolumnhsize{\box1\hfil\box3}% + \vfill}}% +| +\needspace{.5in} +|\double!-column!-out!-put| est la routine de sortie r\'eelle. Nous appelons +l'ancienne |\output| pour faire le travail de sortie de la bo\^\i te. + +\csdisplay +\def\doublecolumnoutput{\@doublecolumnsplit + \hsize = \singlecolumnhsize \vsize = \singlecolumnvsize + \previousoutput \unvbox4}% +| + +|\singlecolumn| reprend la composition en une colonne. Il suppose que +|\doublecolumns| a \'et\'e appel\'e. + +\csdisplay +\def\singlecolumn{\par % Don't start in horizontal mode. + \output = {\global\setbox1 = + \vbox{\unvbox255\vskip\abovedoublecolumnskip}}% + \pagegoal = \pagetotal \break \setbox255 = \box1 + {\singlecolumnvsize = \ht255 + \divide\singlecolumnvsize by 2 + \advance\singlecolumnvsize by +\ht\@partialpage + \advance\singlecolumnvsize by +\ht\footins + \advance\singlecolumnvsize by +\skip\footins + \advance\singlecolumnvsize by +\ht\topins + \@doublecolumnsplit}% + \hsize = \singlecolumnhsize + \vsize = \singlecolumnvsize + \output = \expandafter{\the\previousoutput}% + \unvbox255}% +| + +\margin{`Sensible paragraph skips' section deleted} + + +\section Terminer + +Nous devons maintenant d\'efaire les changements que nous avons faits +quand nous avons commenc\'e (voir la \xref{eplainconv}). Nous donnons +\'egalement un num\'ero de version, qui sera plus tard +disponible dans |\fmt!-name| et |\fmt!-version|. + +\csdisplay +\let\wlog = \@plainwlog \catcode`@ = \other +\def\fmtname{eplain}% +{\edef\plainversion{\fmtversion}% + \xdef\fmtversion{1.0: 15 May 1990 + (and plain \plainversion)}% +}% +| + +\eix^^|eplain.tex| + +\endchapter +\byebye + |