summaryrefslogtreecommitdiff
path: root/Master/texmf-doc/doc/french/impatient-fr/ferrors.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-doc/doc/french/impatient-fr/ferrors.tex')
-rw-r--r--Master/texmf-doc/doc/french/impatient-fr/ferrors.tex309
1 files changed, 309 insertions, 0 deletions
diff --git a/Master/texmf-doc/doc/french/impatient-fr/ferrors.tex b/Master/texmf-doc/doc/french/impatient-fr/ferrors.tex
new file mode 100644
index 00000000000..9d086cc1170
--- /dev/null
+++ b/Master/texmf-doc/doc/french/impatient-fr/ferrors.tex
@@ -0,0 +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
+