Suivant: , Précédent: , Monter: Command line interface   [Table des matières][Index]


28.2 Spécifier du code LaTeX sur la ligne de commande

Au sein de l’invocation de ligne de commande

pdflatex options argument

vous pouvez spécifier du code LaTeX arbitraire en entrée en commençant argument par une controblique (ce qui est pris en charge par tous les moteurs). Ceci permet de faire certains effets spéciaux.

Par exemple, ce fichier (qui utilise le paquetage hyperref pour les hyperliens) peut produire deux types de sortie, l’un pour une consultation sur document papier et l’autre pour une consultation sur écran.

\ifdefined\paperversion        % dans le préambule
\newcommand{\urlcolor}{black}
\else
\newcommand{\urlcolor}{blue}
\fi
\usepackage[colorlinks=true,urlcolor=\urlcolor]{hyperref}
  ...
\href{https://www.ctan.org}{CTAN}  % dans le corps
  ...

Lorsqu’on compile ce document book.tex avec la ligne de commande pdflatex book le lien ‘CTAN’ sera en bleu. Mais si on le compile avec

pdflatex "\def\paperversion{}\input book.tex"

alors le lien sera en noir. On utilise des guillemets anglais double pour empêcher l’interprétation des symboles par l’interpréteur de ligne de commande (désigné également par shell). (Ceci fonctionne généralement à la fois sur les systèmes Unix et Windows, mais il y a nombre de particularités dans l’usage des guillemets par les shells, lisez donc la documentation de votre système si besoin est).

De même, à partir d’un seul fichier principal.tex vous pouvez compiler deux versions distinctes.

pdflatex -jobname=etudiants "\def\etudiants{}\input{principal}"
pdflatex -jobname=professeurs "\def\profs{}\input{principal}"

L’option jobname est là parce que sinon les deux fichiers en sortie s’appelleraient principal.pdf et le second écraserait le premier. (voir Jobname).

Dans cet exemple on passe l’option draft au paquetage graphicx :

pdflatex "\PassOptionsToPackage{draft}{graphicx}\input{aa.tex}"

de sorte que les fichiers graphiques ne sont lus que pour l’information de dimension de boîte englobante, mais remplacés dans le PDF par une boîte de même taille ne contenant que le nom de fichier, ce qui accélère le temps de compilation, et économise l’encre d’imprimante.

Un autre exemple classique est de cribler certains chapitres à la compilation en les passant à \includeonly dans la ligne de commande. Ainsi, supposons qu’on a un fichier racine livre.tex ainsi formé :

\documentclass{book}
\begin{document}
\frontmatter
\include{pref}
\mainmatter
\include{chap1}
\include{chap2}
\appendix
\include{append}
\backmatter
\include{bib}
\end{document}

En compilant livre.tex avec la ligne de commande suivante :

pdflatex '\includeonly{chap1}\input{livre}

seul le chapitre contenu dans chap1.tex sera produit en sortie. Voir Splitting the input.

Dans ce dernier exemple, on force la date au 14 juillet 1789 :

pdflatex '\day=14 \month=7 \year=1789 \input revolution'

Ainsi, si le fichier revolution.tex contient ceci :

\documentclass[french]{minimal}
\usepackage{babel}
\begin{document}
\today\ c'est la révolution !
\end{document}

alors vous aurez en sortie un truc du genre :

14 juillet 1789 c’est la révolution !

Suivant: , Précédent: , Monter: Command line interface   [Table des matières][Index]