[latexrefman-commits] [SCM] latexrefman updated: r999 - trunk
Vincent Belaiche
INVALID.NOREPLY at gnu.org.ua
Wed Aug 25 22:46:51 CEST 2021
Author: vincentb1
Date: 2021-08-25 20:46:51 +0000 (Wed, 25 Aug 2021)
New Revision: 999
Modified:
trunk/ChangeLog
trunk/latex2e-fr.texi
Log:
[fr] Jobname, node rework.
* latex2e-fr.texi (\baselineskip & \baselinestretch): typo.
(Units of length): typo on ``cicero'' + add ``douze''.
(Jobname): rework the node.
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2021-08-25 20:46:49 UTC (rev 998)
+++ trunk/ChangeLog 2021-08-25 20:46:51 UTC (rev 999)
@@ -1,5 +1,11 @@
2021-08-25 Vincent Bela\"iche <vincentb1 at users.sourceforge.net>
+ * latex2e-fr.texi (\baselineskip & \baselinestretch): typo.
+ (Units of length): typo on ``cicero'' + add ``douze''.
+ (Jobname): rework the node.
+
+2021-08-25 Vincent Bela\"iche <vincentb1 at users.sourceforge.net>
+
* latex2e-fr.texi (Units of length, \footnote): lower case in index
entries.
(Units of length): add some anchors.
Modified: trunk/latex2e-fr.texi
===================================================================
--- trunk/latex2e-fr.texi 2021-08-25 20:46:49 UTC (rev 998)
+++ trunk/latex2e-fr.texi 2021-08-25 20:46:51 UTC (rev 999)
@@ -3140,7 +3140,7 @@
exemple, un fichier de style de fonte comprend la commande
@code{\fontsize@{10pt@}@{12pt@}} alors cela ne veut pas dire que les
caractères dans la fonte font 10 at dmn{pt} de haut ; par exemple, les
-parentheses et les capitales accentuées pourraient être plus hautes. Non
+parenthèses et les capitales accentuées pourraient être plus hautes. Non
plus cela ne signifie que si les lignes sont espacées de moins de
12 at dmn{pt} alors elles risquent de se toucher. Ces nombres sont plutôt
des jugements typographiques. (Souvent, le @code{\baselineskip} est
@@ -10816,10 +10816,11 @@
Point Didot, 1,07 at dmn{pt}
@item cc
- at cindex cicero
+ at cindex cicéro
+ at cindex douze
@findex cc
@anchor{units of length cc}
-Cicero, 12 at dmn{dd}
+Cicéro, 12 at dmn{dd}, encore appelé @dfn{douze}.
@item sp
@cindex point proportionné (scaled point)
@@ -19476,90 +19477,245 @@
@node Jobname
@section Nom d'ouvrage de @TeX{}
+ at cindex nom d'ouvrage (jobname)
+ at cindex jobname, nom d'ouvrage
+ at cindex document, nom racine
+ at cindex racine du nom du document
+ at cindex fichier racine
+ at cindex racine, fichier
+ at c xx TODO TikZ extenralize not working with -jobname option
-Quand vous exécutez @code{@command{pdflatex} @var{options}
- at var{argument}}, si @var{argument} ne commence pas par une contr'oblique
-alors @TeX{} considère que c'est le nom du fichier racine à lire en
-entrée. Le nom du fichier racine, sans l'extension @file{.tex} si elle
-est donnée, définit alors le @dfn{nom d'ouvrage}, celui-ci est utilisé pour
-nommer le fichier journal et le fichier de sortie.
+Exécuter @LaTeX{} crée plusieurs fichiers, dont la sortie principale en
+PDF (ou DVI) et bien d'autres. Ces fichiers sont nommés selon ce qu'on
+appelle le @dfn{nom d'ouvrage}. Le cas le plus fréquent est aussi le
+plus simple : la commande @code{pdflatex these} crée @code{these.pdf} et
+aussi @code{these.log} et @code{these.aux}. Ici le nom d'ouvrage est
+ at code{these}.
-Autrement, si @var{argument} commence par une contr'oblique, il attend
-la première instruction @code{\input} et le nom du fichier en entrée
-devient le nom d'ouvrage.
+En général, @LaTeX{} est invoqué comme @code{@var{moteur-latex}
+ at var{options} @var{arguments}}, où @var{moteur-latex} est
+ at code{pdflatex}, @code{lualatex}, etc.@: (@pxref{@TeX{} engines}). Si
+ at var{arguments} ne commence pas par une contr'oblique, comme c'est le
+cas ci-dessus avec @code{these}, alors @TeX{} insère un argument
+ at code{\input} en tête de la liste d'arguments @var{arguments} et
+considère le texte formé en joignant les éléments de cette liste séparés
+par des blancs comme un code source pris en entrée. Ainsi la ligne de
+commande @code{pdflatex these} conduit @LaTeX{} à compiler le code
+source suivant :
-Au sein du document, la variable @code{\jobname} se développe dans le
-nom d'ouvrage, avec la particularité que tous les caractères sont de
-catcode 11 (lettre). Ainsi, si vous voulez utilisez le nom d'ouvrage
-comme une condition, la solution la plus simple est d'utiliser une macro
-de text du paquetage @file{xtring} dans sa variante étoilée pour être
-insensible au catcode. Dans le texte suivant par exemple, la note en bas
-de page « dont la Respublica Bananensis Francorum. » n'est présente que
-si le nom de tâche commence par @file{moi-meme}.
+ at example
+\input these
+ at end example
+ at noindent
+Ceci permet de faire une indirection vers le fichier @file{these.tex}
+qui est censé contenir l'entièreté du code source à compiler, et qu'on
+appelle à ce titre @dfn{fichier racine} (@pxref{Splitting the input}).
+
+On appelle @dfn{nom racine} le nom du fichier racine, sans l'extension
+ at file{.tex} s'il en a une. @xref{\input}, pour la gestion de l'extension
+ at file{.tex}.
+
+Notez bien, que si on a toujours un nom d'ouvrage, on n'a pas
+systématiquement de nom racine. En effet, dès lors qu'on a du code
+ at LaTeX{} passé sur la ligne de commande (@pxref{Command line input}),
+l'entièreté du code compilé n'est pas issu d'un seul fichier. En
+supposant ici et ci-après que le shell est @file{bash}, et donc que les
+guillemets anglais simples ou doubles sont interprétés par le shell (voir
+ at uref{https://www.gnu.org/software/bash/manual/html_node/Quoting.html#Quoting,
+,(info "(bash) Quoting")}), considerez par exemple ligne de commande
+suivante :
+
@example
+pdflatex '\documentclass@{article@}\input' corps
+ at end example
+
+ at noindent
+Dans l'exemple précédent, on ne peut pas considérer @file{corps.tex}
+comme un fichier racine, puisqu'il ne peut pas être compilé de façon
+autonome vu qu'il ne contient pas la commande @code{\documentclass}. Par
+abus de langage on continue toutefois de parler de fichier racine si le
+code @LaTeX{} passé en ligne de commande ne sert qu'à configurer la
+façon dont le fichier est compilé, comme dans :
+
+ at example
+pdflatex '\PassOptionsToClass@{printout@}@{beamer@}\input' mapresentation
+ at end example
+
+ at noindent
+où @file{mapresenation.tex} contient une présentation @code{beamer}, et
+on veut juste la compiler de façon adéquate pour une impression plutôt
+que pour une projection.
+
+Voici par contre un exemple extrême où on n'a pas de fichier racine,
+considérez la ligne de commande :
+
+ at example
+pdflatex fic "Bonjour tout le monde~!" '\end@{document@}'
+ at end example
+
+ at noindent
+ce qui conduit @file{pdflatex} à compiler le code source suivant :
+
+ at example
+\input fic Bonjour tout le monde~! \end@{document@}
+ at end example
+
+ at noindent
+À supposer que @file{fic.tex} soit un fichier contenant
+ at code{\documentclass@{minimal@}\begin@{document@}} le résultat sera un
+document PDF nommé @file{fic.pdf} et contenant le texte @samp{Bonjour
+tout le monde !}.
+
+Dans la mesure où on n'a pas systématiquement de fichier racine, la
+règle que @TeX{} utilise pour déterminer implicitement le nom d'ouvrage,
+c-à-d.@: lorsqu'il n'est pas spécifié explicitement par l'option
+ at code{-jobname} (@pxref{Command line options}), est que le nom d'ouvrage
+soit le nom du fichier correspondant à l'argument passé au premier
+ at code{\input} rencontré durant la compilation, débarassé de l'extension
+ at file{.tex} s'il en a une. Dans l'exemple précédent, le nom d'ouvrage
+est donc bien @file{fic}. Voir aussi plus bas la primitive
+ at code{\jobname} pour une dérogation à cette règle.
+
+Ce qui précède vaut également si @TeX{} est en mode interactif, la seule
+différence est alors que @var{arguments} n'est pas passé entièrement sur
+la ligne de commande, mais saisi interactivement par l'utilisateur. Par
+exemple si dans le shell vous tapez la ligne de commande
+ at code{pdflatex}, puis qu'à l'invite de @TeX{} vous tapez @code{these},
+vous aurez le même résultat que dans le premier exemple donné, à savoir
+si vous aviez tapé directement @code{pdflatex these} depuis le shell.
+
+Dans la même veine, la seule différence si @var{arguments} commence avec
+une contr'oblique est que le @code{\input} n'est pas inséré, et donc
+ at code{pdflatex "\input" these} est sensiblement équivalent à
+ at code{pdflatex these}.
+
+Il y a deux autres possiblités pour le nom d'ouvrage. Pour ce qui est de
+la première, il peut être directement spécifié avec l'option
+ at code{-jobname}, comme dans @code{pdflatex -jobname=monnom}
+(@pxref{Command line input} pour un véritable exemple).
+
+ at findex texput at r{, nom d'ouvrage par défaut}
+ at cindex repli, nom d'ouvrage
+La seconde possibilité est @file{texput}, c'est la valeur par défaut de
+repli si aucun autre nom n'est disponible pour @TeX{}. Par exemple si
+aucune option @code{-jobname} n'a été spécifiée et que la compilation
+s'arrête avant qu'une commande @code{\input} ne soit trouvée, alors le
+fichier journal s'appelle @file{texput.log}.
+
+
+ at findex \jobname
+Au sein du document, la primitive @code{\jobname} se comporte comme une
+macro qui se développe en le nom d'ouvrage. Quand le nom d'ouvrage
+contient au moins un blanc, un guillemet anglais est ajouté et début et
+fin de la chaîne renvoyée par @code{\jobname} et tout blanc est remplacé
+par un espace, c-à-d.@: qu'un caractère tabulation est remplacé par un
+espace. De plus, au cours du développement, tous les caractères sont de
+catcode 12 (other), y compris les lettres qui normalement sont de
+catcode 11, mais à l'exception des espaces auquel un catcode 10 est
+attribué.
+
+ at findex \IfBeginWith*@r{ macro from @file{xstring}}
+ at PkgIndex{xstring}
+
+À cause de cette situation des catcodes, utiliser le nom d'ouvrage dans
+une expression conditionnelle peut devenir compliqué. Une solution est
+d'utiliser la macro @code{\IfBeginWith} du paquetage @file{xtring} dans
+sa forme étoilée pour être insensible au catcode. Dans le texte suivant
+par exemple, la note en bas de page « dont la Respublica Bananensis
+Francorum. » n'est présente que si le nom d'ouvrage commence par
+ at file{moi-meme}.
+
+ at example
Si une démocratie est juste un régime où les citoyens votent alors
toutes les républiques bananières\IfBeginWith*@{\jobname@}@{moi-meme@}%
@{\footnote@{dont la Respublica Bananensis Francorum.@}@}@{@} sont des
démocraties.
@end example
-Cela ne fonctionnerait pas si la version non étoilée de
- at code{\IfBeginWith} était utilisée, parce que le @code{-} dans
- at samp{moi-meme} a un catcode 12, alors que dans @code{\jobname}, s'il
-s'y trouve, il a nécessairement un catcode 11.
+Redéfinir @code{\jobname} dans le code source avec un
+ at code{\renewcommand} peut s'avérer vain et risqué. Tout d'abord, si
+c'était ce qui vous cherchiez, cela ne changera pas le nom d'ouvrage au
+sens où les fichiers créés directement par le moteur continuent à
+utiliser le nom d'ouvrage original : il s'agit notamment du fichier de
+sortie principale @file{.pdf} ou @file{.dvi}, du journal de compilation
+ at file{.log} et du fichier de liste fichiers @file{.fls} si l'option
+ at code{-recorder} a été utilisée. Par contre les fichiers auxiliaires
+ at file{.aux}, @file{.bib}, etc.@: pourront être renommés car leur nom est
+produit par le noyau @LaTeX{} en développant @code{\jobname} et non
+directement par le moteur, mais à condition bien sûr que la redéfinition
+soit faite avant l'ouverture des fichiers en question. Le paquetage
+ at file{multibib} utilise ce truc pour gérer plusieurs fichiers de
+référence bibliographique.
-Dans certains cas il peut être utile de fixer le nom de tâche à une
-autre valeur que celle par défaut, l'option @code{--jobname} permet de
-faire cela, elle l'emporte sur le premier @code{\input} et spécifie
-directement le nom. @xref{Command line input}, pour un exemple d'usage,
-où l'on génère deux fichiers @file{etudiants.pdf} et
- at file{professeurs.pdf} à partir d'un même code source @file{principal.tex}.
+La séquence de contrôle @code{\jobname} se comporte comme une macro, au
+sens où on peut faire dessus toutes les opérations qu'on ferait sur une
+macro, et notamment la développer, mais ce n'est pas une macro, c'est
+une primitive @TeX{}. Ainsi, une seconde règle de détermination du nom
+d'ouvrage est que le premier développement de @code{\jobname} fige le
+nom d'ouvrage. Dans l'exemple suivant de ligne de commande :
-En l'absence d'option @code{--jobname}, la valeur initiale de
- at code{\jobname} est @code{texput}, de sorte que si la compilation
-s'arrête avant le premier @code{\input}, le journal produit sera nommé
- at file{texput.log}. Par exemple la commande suivante :
-
@example
-pdflatex "\nonstopmode\errmessage@{\string\jobname\space vaut \jobname@}"
+pdflatex '\typeout@{\jobname@}\input' these
@end example
-produira un journal @file{textput.log} contenant le message d'erreur
- at samp{! \jobname vaut texput.}.
+ at noindent
+le nom d'ouvrage sera la valeur par défaut @file{texput}, et non
+ at file{these}. En effet le code @LaTeX{} @code{\typeout@{\jobname@}} a
+pour effet que @code{\jobname} est développé avant que le premier
+ at code{\input} ne soit rencontré, et donc on déroge à la première règle
+énoncée plus haut, c-à-d.@: que dans ce cas le nom d'ouvrage n'est pas
+donné par le premier @code{\input}.
-Attention, le nom de tâche est également forcé à @file{texput} si le
-premier @code{\input} est indirectement appelé par @code{\documentclass}
-ou @code{\RequirePackage}. Ainsi l'exemple suivant produira un fichier
-nommé @file{texput.pdf} avec une version raisonnablement récente de
- at LaTeX{} :
+ at findex \documentclass at r{, et nom d'ouvrage @code{texput}}
+ at findex \RequirePackage at r{, et nom d'ouvrage @code{texput}}
+Cette seconde règle a pour autre conséquence que dans l'exemple suivant
+de ligne de commande :
@example
-pdflatex "\documentclass@{minimal@}\begin@{document@}Bonjour !\end@{document@}"
+pdflatex '\documentclass@{article@}\input' corps
@end example
-mais avec une version plus ancienne le fichier de sortie se serait nommé
- at file{minimal.pdf}, parce que le premier @code{\input} appelé
-indirectement par @code{\documentclass} aurait été traité de la même
-façon que s'il chargeait le fichier source racine.
+ at noindent
+le nom d'ouvrage sera également @file{texput}, en effet en sous-main les
+commandes @code{\documentclass} et @code{\RequirePackage} développent
+ at code{\jobname}, et donc la seconde règle dérogue à la première règle,
+celle du premier @code{\input} recontré.
-Voici un autre exemple de cela, ici on reprend l'exemple donné dans
- at ref{Command line input} où l'on passe sur la ligne de commande l'option
- at code{draft} au paquetage @file{graphicx}. Mais au lieu de le faire avec
- at code{\PassOptionToPackage}, on le fait avec @code{\RequirePackage}, ce
-qui a également pour effet que le paquetage @file{graphicx} sera chargé
-en premier, si ce n'était pas déjà le cas.
+Il est à noter que ce qui précède n'était pas vrai avec de vieilles
+versions de @LaTeX{} (approximativement) antérieures à 2020. Avec ces
+vieilles versions @code{\documentclass} et @code{\RequirePackage}
+faisaient un @code{\input} sans développement préalable de
+ at code{\jobname} et donc dans l'exemple précédent le nom d'ouvrage aurait
+été @file{article}, ce qui était déroutant.
- at c credit Herbert Voss: https://tex.stackexchange.com/a/17236/121234
+Par ailleurs, l'équivalence entre @code{pdflatex "\input" these} et
+ at code{pdflatex these} peut être mise en défaut lorsque le nom du fichier
+comprend un blanc. Comparer par exemple les deux lignes de commande
+suivantes :
+
@example
-pdflatex --jobname=aa "\RequirePackage[draft]@{graphicx@}\input@{aa.tex@}"
+pdflatex '\input' 'to\space\space to'
+pdflatex 'to\space\space to'
@end example
-L'option @code{--jobname=aa} est nécessaire, car elle garantit que le
-fichier de sortie se nommera bien @file{aa.pdf}, et non
- at file{texput.pdf} avec une version récente de @LaTeX{}, ni
- at file{graphicx.pdf} avec une version plus ancienne.
+ at noindent
+En remplaçant les espaces par des espaces visibles
+ at code{@visiblespace{}} pour la clareté de l'exposé, la première ligne de
+commande qui a un @code{\input} explicite cherche un fichier
+ at file{to.tex}, ou à défaut @file{to}, et ajoute à la suite de
+l'@code{\input} de ce fichier, le code source
+ at code{\space at visiblespace{}to}, en effet le premier des deux
+ at code{\space} est consommé par l'@code{\input}. Elle aura donc pour nom
+d'ouvrage @file{to}. La seconde, qui a un @code{\input} implicite, a par
+contre un comportement qui dépend de la distribution. Avec MiKTeX elle
+est équivalente à la première. Mais avec TeXLive, elle cherche un
+fichier @file{to at visiblespace{}@visiblespace{}to.tex}, ou à défaut
+ at file{to at visiblespace{}@visiblespace{}to}, et n'ajoute rien à la suite
+de l'@code{\input} de ce fichier. Elle aura donc pour nom d'ouvrage
+ at file{"to at visiblespace{}@visiblespace{}to"}.
+
@node Recovering from errors
@section Quand quelque chose se passe mal
More information about the latexrefman-commits
mailing list.