<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Ce document est un manuel de référence officieux pour LaTeX, un
système de préparation de documents, version « Décembre 2020 ».

Ce manuel a été traduit du fichier LATEX.HLP v1.0a de la
bibliothèque d'aide VMS. La version pré-traduction a été rédigée par
George D. Greenwade de l'université d'État Sam Houston, au Texas (USA). La version
LaTeX 2.09 a été rédigée par Stephen Gilmore. La version LaTeX2e a
été adaptée à partir de celle-ci par Torsten Martinsen. Karl Berry a
fait d'autres mises à jour et ajouts, et reconnaît avec gratitude avoir
utilisé comme matériel de référence Hypertext Help with LaTeX,
de Sheldon Green, et LaTeX Command Summary (pour LaTeX2.09)
de L. Botway et C. Biemesderfer (publié par le TeX Users Group en
tant que TeXniques numéro 10). Nous savons également gré à
Martin Herbert Dietze d'avoir de plus utilisé du matériel apparaissant
dans son latex2e-refence. (À partir de ces références aucun texte
n'a été copié directement).

Tous droits réservés (C) 2015-2021 Vincent Belaïche - traduction.

Tous droits réservés (C) 2007-2021 Karl Berry. 

Tous droits réservés (C) 1988, 1994, 2007 Stephen Gilmore. 

Tous droits réservés (C) 1994, 1995, 1996 Torsten Martinsen.

Ci-après se trouve la licence sous laquelle est distribuée ce manuel ;
une traduction en est donnée en annexe, voir License translation.

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.


Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions. -->
<!-- Created by GNU Texinfo 6.5dev, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Jobname (Manuel de référence officieux de LaTeX2e (Décembre 2020))</title>

<meta name="description" content="Jobname (Manuel de référence officieux de LaTeX2e (Décembre 2020))">
<meta name="keywords" content="Jobname (Manuel de référence officieux de LaTeX2e (Décembre 2020))">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table des matières">
<link href="Command-line-interface.html#Command-line-interface" rel="up" title="Command line interface">
<link href="Recovering-from-errors.html#Recovering-from-errors" rel="next" title="Recovering from errors">
<link href="Command-line-input.html#Command-line-input" rel="prev" title="Command line input">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="fr">
<a name="Jobname"></a>
<div class="header">
<p>
Suivant: <a href="Recovering-from-errors.html#Recovering-from-errors" accesskey="n" rel="next">Recovering from errors</a>, Précédent: <a href="Command-line-input.html#Command-line-input" accesskey="p" rel="prev">Command line input</a>, Monter: <a href="Command-line-interface.html#Command-line-interface" accesskey="u" rel="up">Command line interface</a>   [<a href="index.html#SEC_Contents" title="Table des matières" rel="contents">Table des matières</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Nom-d_0027ouvrage-de-TeX"></a>
<h3 class="section">28.3 Nom d’ouvrage de TeX</h3>
<a name="index-nom-d_0027ouvrage-_0028jobname_0029"></a>
<a name="index-jobname_002c-nom-d_0027ouvrage"></a>
<a name="index-document_002c-nom-racine"></a>
<a name="index-racine-du-nom-du-document"></a>
<a name="index-fichier-racine-1"></a>
<a name="index-racine_002c-fichier-1"></a>

<p>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 <em>nom d’ouvrage</em>. Le cas le plus fréquent est aussi le
plus simple : la commande <code>pdflatex these</code> crée <code>these.pdf</code> et
aussi <code>these.log</code> et <code>these.aux</code>. Ici le nom d’ouvrage est
<code>these</code>.
</p>
<p>En général, LaTeX est invoqué comme <code><var>moteur-latex</var>
<var>options</var> <var>arguments</var></code>, où <var>moteur-latex</var> est
<code>pdflatex</code>, <code>lualatex</code>, etc. (voir <a href="TeX-engines.html#TeX-engines">TeX engines</a>).  Si
<var>arguments</var> ne commence pas par une contr’oblique, comme c’est le
cas ci-dessus avec <code>these</code>, alors TeX insère un argument
<code>\input</code> en tête de la liste d’arguments <var>arguments</var> 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</code> conduit LaTeX à compiler le code
source suivant :
</p>
<div class="example">
<pre class="example">\input these
</pre></div>

<p>Ceci permet de faire une indirection vers le fichier <samp>these.tex</samp>
qui est censé contenir l’entièreté du code source à compiler, et qu’on
appelle à ce titre <em>fichier racine</em> (voir <a href="Splitting-the-input.html#Splitting-the-input">Splitting the input</a>).
</p>
<p>On appelle <em>nom racine</em> le nom du fichier racine, sans l’extension
<samp>.tex</samp> s’il en a une. Voir <a href="_005cinput.html#g_t_005cinput">\input</a>, pour la gestion de l’extension
<samp>.tex</samp>.
</p>
<p>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
LaTeX passé sur la ligne de commande (voir <a href="Command-line-input.html#Command-line-input">Command line input</a>),
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 <samp>bash</samp>, et donc que les
guillemets anglais simples ou doubles sont interprétés par le shell (voir
<a href="https://www.gnu.org/software/bash/manual/html_node/Quoting.html#Quoting">(info "(bash) Quoting")</a>), considerez par exemple ligne de commande
suivante :
</p>
<div class="example">
<pre class="example">pdflatex '\documentclass{article}\input' corps
</pre></div>

<p>Dans l’exemple précédent, on ne peut pas considérer <samp>corps.tex</samp>
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</code>. 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 :
</p>
<div class="example">
<pre class="example">pdflatex '\PassOptionsToClass{printout}{beamer}\input' mapresentation
</pre></div>

<p>où <samp>mapresenation.tex</samp> contient une présentation <code>beamer</code>, et
on veut juste la compiler de façon adéquate pour une impression plutôt
que pour une projection.
</p>
<p>Voici par contre un exemple extrême où on n’a pas de fichier racine,
considérez la ligne de commande :
</p>
<div class="example">
<pre class="example">pdflatex fic "Bonjour tout le monde~!" '\end{document}'
</pre></div>

<p>ce qui conduit <samp>pdflatex</samp> à compiler le code source suivant :
</p>
<div class="example">
<pre class="example">\input fic Bonjour tout le monde~! \end{document}
</pre></div>

<p>À supposer que <samp>fic.tex</samp> soit un fichier contenant
<code>\documentclass{minimal}\begin{document}</code> le résultat sera un
document PDF nommé <samp>fic.pdf</samp> et contenant le texte ‘<samp>Bonjour
tout le monde !</samp>’.
</p>
<p>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
<code>-jobname</code> (voir <a href="Command-line-options.html#Command-line-options">Command line options</a>), est que le nom d’ouvrage
soit le nom du fichier correspondant à l’argument passé au premier
<code>\input</code> rencontré durant la compilation, débarassé de l’extension
<samp>.tex</samp> s’il en a une. Dans l’exemple précédent, le nom d’ouvrage
est donc bien <samp>fic</samp>. Voir aussi plus bas la primitive
<code>\jobname</code> pour une dérogation à cette règle.
</p>
<p>Ce qui précède vaut également si TeX est en mode interactif, la seule
différence est alors que <var>arguments</var> 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
<code>pdflatex</code>, puis qu’à l’invite de TeX vous tapez <code>these</code>,
vous aurez le même résultat que dans le premier exemple donné, à savoir
si vous aviez tapé directement <code>pdflatex these</code> depuis le shell.
</p>
<p>Dans la même veine, la seule différence si <var>arguments</var> commence avec
une contr’oblique est que le <code>\input</code> n’est pas inséré, et donc
<code>pdflatex "\input" these</code> est sensiblement équivalent à
<code>pdflatex these</code>.
</p>
<p>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
<code>-jobname</code>, comme dans <code>pdflatex -jobname=monnom</code>
(voir <a href="Command-line-input.html#Command-line-input">Command line input</a> pour un véritable exemple).
</p>
<a name="index-texput_002c-nom-d_0027ouvrage-par-defaut"></a>
<a name="index-repli_002c-nom-d_0027ouvrage"></a>
<p>La seconde possibilité est <samp>texput</samp>, 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</code> n’a été spécifiée et que la compilation
s’arrête avant qu’une commande <code>\input</code> ne soit trouvée, alors le
fichier journal s’appelle <samp>texput.log</samp>.
</p>

<a name="index-_005cjobname"></a>
<p>Au sein du document, la primitive <code>\jobname</code> 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</code> 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é.
</p>
<a name="index-_005cIfBeginWith_002a-macro-from-xstring"></a>
<a name="index-paquetage-xstring"></a>
<a name="index-xstring_002c-paquetage"></a>


<p>À 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</code> du paquetage <samp>xtring</samp> 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
<samp>moi-meme</samp>.
</p>
<div class="example">
<pre class="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.
</pre></div>

<p>Redéfinir <code>\jobname</code> dans le code source avec un
<code>\renewcommand</code> 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 <samp>.pdf</samp> ou <samp>.dvi</samp>, du journal de compilation
<samp>.log</samp> et du fichier de liste fichiers <samp>.fls</samp> si l’option
<code>-recorder</code> a été utilisée. Par contre les fichiers auxiliaires
<samp>.aux</samp>, <samp>.bib</samp>, etc. pourront être renommés car leur nom est
produit par le noyeau LaTeX en développant <code>\jobname</code> 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
<samp>multibib</samp> utilise ce truc pour gérer plusieurs fichiers de
référence bibliographique.
</p>
<p>La séquence de contrôle <code>\jobname</code> 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</code> fige le
nom d’ouvrage. Dans l’exemple suivant de ligne de commande :
</p>
<div class="example">
<pre class="example">pdflatex '\typeout{\jobname}\input' these
</pre></div>

<p>le nom d’ouvrage sera la valeur par défaut <samp>texput</samp>, et non
<samp>these</samp>. En effet le code LaTeX <code>\typeout{\jobname}</code> a
pour effet que <code>\jobname</code> est développé avant que le premier
<code>\input</code> 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</code>.
</p>
<a name="index-_005cdocumentclass_002c-et-nom-d_0027ouvrage-texput"></a>
<a name="index-_005cRequirePackage_002c-et-nom-d_0027ouvrage-texput"></a>
<p>Cette seconde règle a pour autre conséquence que dans l’exemple suivant
de ligne de commande :
</p>
<div class="example">
<pre class="example">pdflatex '\documentclass{article}\input' corps
</pre></div>

<p>le nom d’ouvrage sera également <samp>texput</samp>, en effet en sous-main les
commandes <code>\documentclass</code> et <code>\RequirePackage</code> développent
<code>\jobname</code>, et donc la seconde règle dérogue à la première règle,
celle du premier <code>\input</code> recontré.
</p>
<p>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</code> et <code>\RequirePackage</code>
faisaient un <code>\input</code> sans développement préalable de
<code>\jobname</code> et donc dans l’exemple précédent le nom d’ouvrage aurait
été <samp>article</samp>, ce qui était déroutant.
</p>
<p>Par ailleurs, l’équivalence entre <code>pdflatex "\input" these</code> et
<code>pdflatex these</code> peut être mise en défaut lorsque le nom du fichier
comprend un blanc. Comparer par exemple les deux lignes de commande
suivantes :
</p>
<div class="example">
<pre class="example">pdflatex '\input' 'to\space\space to'
pdflatex 'to\space\space to'
</pre></div>

<p>En remplaçant les espaces par des espaces visibles
<code>␣</code> pour la clareté de l’exposé, la première ligne de
commande qui a un <code>\input</code> explicite cherche un fichier
<samp>to.tex</samp>, ou à défaut <samp>to</samp>, et ajoute à la suite de
l’<code>\input</code> de ce fichier, le code source
<code>\space␣to</code>, en effet le premier des deux
<code>\space</code> est consommé par l’<code>\input</code>. Elle aura donc pour nom
d’ouvrage <samp>to</samp>. La seconde, qui a un <code>\input</code> 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 <samp>to␣␣to.tex</samp>, ou à défaut
<samp>to␣␣to</samp>, et n’ajoute rien à la suite
de l’<code>\input</code> de ce fichier. Elle aura donc pour nom d’ouvrage
<samp>"to␣␣to"</samp>.
</p>

<hr>
<div class="header">
<p>
Suivant: <a href="Recovering-from-errors.html#Recovering-from-errors" accesskey="n" rel="next">Recovering from errors</a>, Précédent: <a href="Command-line-input.html#Command-line-input" accesskey="p" rel="prev">Command line input</a>, Monter: <a href="Command-line-interface.html#Command-line-interface" accesskey="u" rel="up">Command line interface</a>   [<a href="index.html#SEC_Contents" title="Table des matières" rel="contents">Table des matières</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>