La commande \usepackage
prend une liste de packages séparés par des virgules,
ce qui permet d’en charger plusieurs en une seule fois :
\usepackage{color,graphicx}
par exemple. Dans ce cas, si vous passez des
options à \usepackage
, elles s’appliqueront à tous les package de la liste,
ce qui n’est pas forcément ce que vous voulez. De plus, il est sans doute plus
facile de commenter les packages s’ils sont chargés séparément. Nous nous en
tiendrons donc ici à charger chaque package sur une ligne séparée.
babel
Nous avons présenté le package babel
dans la leçon principale
comme un moyen de choisir différents motifs de césure. Il fait beaucoup plus
que cela, selon la ou les langues utilisées. Par exemple, en allemand, il
fournit des raccourcis pour créer des traits d’union conditionnels, et aussi
un moyen de taper rapidement des umlauts (trémas) sans avoir besoin d’un
clavier allemand. Observez aussi que le titre de la table des matières,
généré par la commande \tableofcontents
, est changé en sa version allemande
Inhaltsverzeichnis.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel} % 'ngerman' est l'option pour Babel
\begin{document}
\tableofcontents
\section{"Uber "Apfel und Birnen}
\subsection{Äpfel}
Äpfel sind rot.
\subsection{Birnen}
Birnen sind gelb.
\end{document}
D’autres paramètres linguistiques apportent des modifications à la mise en
forme : par exemple, dans la typographie française traditionnelle, il y a une
espace avant certains signes de ponctuation, comme :
, et celle-ci est ajoutée
automatiquement si vous chargez babel
avec l’option french
.
Parfois, vous souhaitez qu’une option soit disponible pour tous les packages que
vous avez chargés. Pour ce faire, il suffit de le signaler sur la ligne
\documentclass
: ainsi, chaque package peut « voir » cette liste. Donc, pour
passer la langue d’un document à tous les packages, on peut utiliser :
\documentclass[ngerman]{article} % 'ngerman' est l'option pour tous les packages
\usepackage[T1]{fontenc}
\usepackage{babel}
\begin{document}
\tableofcontents
\section{"Uber "Apfel und Birnen}
\subsection{Äpfel}
Äpfel sind rot.
\subsection{Birnen}
Birnen sind gelb.
\end{document}
\newcommand
permet de définir des commandes ayant un maximum de neuf arguments,
le premier pouvant être optionnel.
En reprenant l’exemple de la leçon principale, on pourrait rendre la couleur optionnelle, en utilisant du bleu par défaut:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\newcommand\kw[2][blue]{\textcolor{#1}{\itshape #2}}
\begin{document}
Tout sur les \kw{pommes} et les \kw[red]{oranges}.
\end{document}
Les arguments optionnels sont délimités par []
et s’ils sont omis, la valeur
par défaut spécifiée dans la définition est utilisée.
\NewDocumentCommand
À partir de la version de LaTeX d’octobre 2020, un nouveau système de définition
de commandes est intégré. Dans les versions précédentes, ce système était
disponible via le package xparse
, que nous utilisons ici pour la compatibilité.
Voici l’exemple ci-dessus, réécrit en utilisant \NewDocumentCommand
:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xparse} % Only needed for older LaTeX releases
\usepackage{xcolor}
\NewDocumentCommand\kw{O{blue} m}{\textcolor{#1}{\itshape #2}}
\begin{document}
Tout sur les \kw{pommes} et les \kw[red]{oranges}.
\end{document}
Tout comme \newcommand
, \NewDocumentCommand
prend le nom de la commande à
définir (ici \kw
) puis la définition à proprement parler, en utilisant #1
à
#9
pour les arguments, mais la différence réside dans la façon dont les
arguments sont spécifiés.
Contrairement à \newcommand
où seul le nombre d’arguments était précisé, en
fournissant éventuellement une valeur par défaut pour le premier, avec
\NewDocumentCommand
, chaque argument est spécifié par une lettre. Ainsi, une
commande à deux arguments serait décrite par {mm}
plutôt que par [2]
. Cela
peut paraître plus verbeux mais permet de définir beaucoup plus de types de
commandes. Dans l’exemple ci-dessus, le premier argument est optionnel, par
défaut bleu (O{blue}
), et le second argument est obligatoire (m
, comme
mandatory).