\documentclass[a4paper,11pt,openbib]{book} \usepackage[english,greek,french]{babel} \usepackage[T1]{fontenc} \usepackage[utf8x]{inputenc} \usepackage{microtype} \usepackage{lmodern} \usepackage{textcomp} \usepackage{array} \usepackage[annote]{babelbib} \usepackage{bbm} \usepackage{bbold} \usepackage{bibtopic} \usepackage{booktabs} \usepackage{caption} \usepackage{dsfont} \usepackage{eurosym} \usepackage{fancyhdr} \usepackage{fancyvrb} \usepackage{filecontents} \usepackage{framed} \usepackage{graphicx} \usepackage{latexsym} \usepackage{longtable} \usepackage{makeidx} \usepackage{morefloats} \usepackage{tabulary} \usepackage{threeparttable} \usepackage{tikz} \usepackage[notbib]{tocbibind} \usepackage{tocloft} \usepackage{url} \usepackage{hyperref} % book \setcounter{secnumdepth}{3} \setcounter{tocdepth}{3} % babel \newcommand{\anglais}[1]{\textit{\foreignlanguage{english}{#1}}} % babelbib \bibliographystyle{babplain-fl} \setbibliographyfont{lastname}{\textsc} \renewcommand{\btxauthorcolon}{ :} % caption \captionsetup { justification = centerlast , textfont = it , textformat = period , } % fancyhdr \setlength{\headheight}{15pt} \fancyhead{} \fancyhead[LE]{\textit{\nouppercase{\leftmark}}} \fancyhead[RO]{\textit{\nouppercase{\rightmark}}} % fancyvrb \DefineVerbatimEnvironment{exemple}{Verbatim}{frame=single,samepage=true} \newcommand{\exempleresultat}[1] {\VerbatimInput[frame=single,samepage=true]{#1} \begin{resultat} \input{#1} \end{resultat} } % framed \setlength{\FrameSep}{2\fboxsep} \newenvironment{resultat} {\begin{framed} \setlength{\parindent}{0pt} \setlength{\belowdisplayskip}{0pt} \setlength{\abovedisplayskip}{0pt} } {\end{framed}} \newenvironment{syntaxe} {\begin{framed} \setlength{\parindent}{0pt} } {\end{framed}} \newenvironment{toile} {% \def\FrameCommand{\textcolor[gray]{0.7}{\vrule width 3pt}\hspace{0.7em}}% \MakeFramed{\advance\hsize-\width \FrameRestore}% }% {\endMakeFramed} % graphicx \graphicspath{{exemples/}} \newcommand{\beamersimple}[1] { \includegraphics[width=0.9\textwidth]{#1} } \newcommand{\beamerdouble}[2] { \includegraphics[width=0.47\textwidth]{#1} \quad \includegraphics[width=0.47\textwidth]{#2} } % hyperref \hypersetup { bookmarksnumbered = true , colorlinks = true , pdfauthor = {Marc Baudoin} , pdftitle = {Apprends LaTeX !} , unicode = true , urlcolor = blue } % makeidx \makeindex \newcommand{\terme}[1]{\emph{#1}\index{#1}} \newcommand{\termeanglais}[2]{\emph{#1}\index{#1} (\anglais{#2}\index{#2@\anglais{#2}|see{#1}} en anglais)} \newcommand{\classeindex}[1]{\classe{#1}\index{#1@\classe{#1} (classe)}} \newcommand{\classeoptionindex}[1]{\classeoption{#1}\index{#1@\classeoption{#1} (option de classe)}} \newcommand{\extensionindex}[1]{\extension{#1}\index{#1@\extension{#1} (extension)}} \newcommand{\extensionoptionindex}[1]{\extensionoption{#1}\index{#1@\extensionoption{#1} (option d'extension)}} \newcommand{\commandeindex}[1]{\commande{#1}\index{#1@\commande{#1}}} \newcommand{\commandeparindex}[2]{\commande{#1}\index{#1@\commande{#1} (#2)}} \newcommand{\environnementindex}[1]{\environnement{#1}\index{#1@\environnement{#1} (environnement)}} \newcommand{\komavarindex}[1]{\komavar{#1}\index{#1@\komavar{#1} (variable KOMA-Script)}} \newcommand{\komaoptionindex}[1]{\komaoption{#1}\index{#1@\komaoption{#1} (option KOMA-Script)}} \newcommand{\biblioindex}[1]{\code{#1}\index{#1@\code{#1} (bibliographie)}} \newcommand{\beamerthemeindex}[1]{\index{#1@\theme{#1} (thème \classe{beamer})}} \newcommand{\moderncvthemeindex}[1]{\theme{#1}\index{#1@\theme{#1} (thème \classe{moderncv})}} \newcommand{\codeindex}[1]{\code{#1}\index{#1@\code{#1}}} \newcommand{\intercomindex}[1]{\intercom{#1}\index{#1@\intercom{#1}}} \newcommand{\boiboiindex}{\commande{\textbackslash}\index{\\@\commande{\textbackslash}}} % tocloft \addtolength{\cftfignumwidth}{1em} % XX.XX \cftsetpnumwidth{1.8em} % url \DeclareUrlCommand\courriel{\renewcommand\UrlLeft{<}\renewcommand\UrlRight{>}} \newcommand{\toileurl}[1]{\noindent\url{#1}\par} % xindy \newcommand*\lettergroupDefault[1]{\lettergroup{Symboles}} \newcommand*\lettergroup[1]{\hfill\textbf{\large #1}\hfill\nopagebreak} % commandes perso \newcommand{\BibTeX}{\textsc{Bib}\TeX} \newcommand{\MakeIndex}{\textit{MakeIndex}} \newcommand{\PGF}{\textsc{PGF}} \newcommand{\PGFPlots}{\textsc{pgfplots}} \newcommand{\PracTeX}{Prac\kern-0.07em\TeX} \newcommand{\SliTeX}{\textsc{Sli}\TeX} \newcommand{\TikZ}{Ti\textit{k}Z} \newcommand{\xindy}{\textsf{xindy}} \newcommand{\classe}[1]{\textsf{#1}} \newcommand{\classeoption}[1]{\textsf{#1}} \newcommand{\extension}[1]{\textsf{#1}} \newcommand{\extensionoption}[1]{\textsf{#1}} \newcommand{\commande}[1]{\texttt{\textbackslash #1}} \newcommand{\environnement}[1]{\texttt{#1}} \newcommand{\option}[1]{\texttt{[}\textit{#1}\texttt{]}} \newcommand{\argument}[1]{\texttt{\{}\textit{#1}\texttt{\}}} \newcommand{\code}[1]{\texttt{#1}} \newcommand{\var}[1]{\textit{#1}} \newcommand{\komavar}[1]{\texttt{#1}} \newcommand{\komaoption}[1]{\texttt{#1}} \newcommand{\theme}[1]{\texttt{#1}} \newcommand{\intercom}[1]{\texttt{#1}} \newcommand{\taper}[1]{\texttt{#1}} \newcommand{\diff}{\,\mathrm{d}} \newenvironment{attention} {\begin{quotation}\noindent\textbf{ATTENTION} :} {\end{quotation}} % XXX vérifier les ~ et les \- {\selectlanguage{french}\hyphenation{ cal-li-gra-phi-ques cha-que dou-ble en-vi-ron-ne-ment exem-ple pren-nent }} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \frontmatter %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{titlepage} \pdfbookmark[0]{Page de titre}{titre} \vspace*{\stretch{2}} \begin{center} \LARGE\sffamily\bfseries Marc Baudoin \end{center} \vspace*{\stretch{2}} \noindent\rule{\linewidth}{3pt} \begin{center} \Huge\bfseries\itshape Apprends \LaTeX\ ! \end{center} \noindent\rule{\linewidth}{3pt} \vspace*{\stretch{1}} \begin{center} \large\sffamily quatrième édition \end{center} \vspace*{\stretch{4}} \clearpage \pdfbookmark[0]{Droits d'auteur}{droits} \thispagestyle{empty} \noindent Copyright © 1994--2010 Marc Baudoin \bigskip Ce document est mis à disposition selon les termes de la License publique du projet \LaTeX\ (LPPL) : \begin{toile} \toileurl{http://www.latex-project.org/lppl/} \end{toile} \end{titlepage} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagestyle{plain} \chapter*{Avant-propos} \addcontentsline{toc}{chapter}{\protect\numberline{}Avant-propos} \section*{Au sujet de ce manuel} Ce manuel a été écrit à l'intention des élèves de l'École nationale supérieure de techniques avancées\footnote{\url{http://www.ensta.fr/}} (ENSTA ParisTech). Il est en effet essentiel que de futurs ingénieurs sachent produire efficacement des documents de qualité. Néanmoins, il ne décrit aucune spécificité propre à l'environnement informatique de l'ENSTA ParisTech et pourra donc s'avérer utile à toute personne désirant apprendre à utiliser \LaTeX. \section*{Où trouver ce manuel ?} La version à jour de ce manuel (au format PDF) est disponible sur les sites suivants : \begin{toile} \noindent\url{http://www.babafou.eu.org/Apprends_LaTeX/} (site de référence)\par \toileurl{http://www.ctan.org/tex-archive/info/apprends-latex/} \toileurl{http://tex.loria.fr/general.html} \end{toile} \section*{Comment lire ce manuel ?} Les chapitres \ref{chapitre:introduction} à \ref{chapitre:environnements} sont à lire absolument car ils expliquent les bases indispensables permettant d'utiliser \LaTeX. La lecture de l'annexe \ref{annexe:typographie} est également enrichissante pour tous. Ceci ne fait au total qu'une cinquantaine de pages. Le chapitre \ref{chapitre:mathematique} n'est à lire que par les personnes ayant à utiliser des expressions mathématiques. Il en va de même avec le chapitre \ref{chapitre:bibliographie-index} pour la réalisation d'une bibliographie ou d'un index. Les chapitres suivants sont à lire en fonction de ses besoins. Enfin, l'annexe \ref{chapitre:LaTeX2e} n'est à lire que par les rares personnes ayant pratiqué la version 2.09 de \LaTeX\ (ou une version antérieure) et n'ayant jamais encore utilisé \LaTeXe. \section*{Pour aller plus loin} Ce manuel ne prétend pas être exhaustif. Il décrit les aspects de \LaTeX\ qui sont généralement les plus utiles et qui vous permettront de rédiger la plupart de vos documents. Si vous voulez aller plus avant dans votre connaissance de \LaTeX, il est conseillé de lire \cite{latex-a-document-preparation-system}. Celui-ci pourra être complété par \cite{the-latex-companion}, qui décrit un grand nombre d'extensions de \LaTeX. Le site officiel de \LaTeX\ est également une source d'informations précieuse : \begin{toile} \toileurl{http://www.latex-project.org/} \end{toile} Le site du LORIA\footnote{LORIA : laboratoire lorrain de recherche en informatique et ses applications.} dédié à \LaTeX\ l'est aussi : \begin{toile} \toileurl{http://tex.loria.fr/} \end{toile} \section*{Historique} La première édition de ce manuel a été écrite au printemps 1994 et décrivait \LaTeX\ 2.09. La deuxième édition a été adaptée en 1996 et 1997 à \LaTeXe\ et s'est vue rajouter quelques chapitres. De petites retouches ont été apportées dans les années suivantes, sans changement de fond. La troisième édition, en 2009, représente principalement un travail de clarification de la présentation des exemples (qui sont désormais encadrés). Une description de la classe \classe{beamer} a également été ajoutée. Par ailleurs, l'utilisation de \intercom{pdflatex} et du format PDF ont remplacé \intercom{latex} et les formats DVI et PostScript, de même que le codage de caractères UTF-8 a remplacé ISO 8859-1 dans les exemples. La quatrième édition, en 2010, outre une réorganisation de certains chapitres existants, s'est vue rajouter la description de \xindy\ et de \intercom{latexmk} dans le chapitre sur la réalisation d'une bibliographie et d'un index ainsi que la description de la classe \classe{scrlttr2} dans le chapitre sur l'écriture d'une lettre. Le chapitre sur la rédaction d'un CV a été créé. Pour les personnes souhaitant explorer le monde de \LaTeX, le CTAN et la commande \intercom{texdoc} sont rapidement mentionnés, de même que l'extension \TikZ\ (d'autant qu'elle dispose d'une excellente documentation en français) ainsi que l'ensemble de classes KOMA-Script et la classe \classe{memoir}. Des descriptions des extensions \extension{geometry} et \extension{fancyhdr} ainsi que de nombreuses extensions permettant de changer la police de caractères ont également été rajoutées. \section*{Conventions typographiques} Afin de faciliter la lecture de ce document, un certain nombre de conventions typographiques ont été utilisées : \begin{itemize} \item le style \texttt{machine à écrire} est utilisé pour les exemples de code \LaTeX, pour les noms des commandes et des environnements \LaTeX, pour les noms de fichiers et pour les commandes UNIX tapées au clavier ; \item l'\textit{italique} est utilisé lors de la définition de nouveaux termes ainsi que pour les exemples d'arguments et d'options des commandes \LaTeX\ ; \item le style \textsf{linéal} est utilisé pour les noms de classes et leurs options ainsi que pour les noms d'extensions et leurs options. \end{itemize} Par ailleurs, les exemples de code \LaTeX\ sont encadrés afin de pouvoir les identifier plus facilement et beaucoup sont suivis de leur résultat, lui aussi encadré. \section*{Remarques et commentaires} J'espère que ce manuel sera utile au plus grand nombre et je vous invite à me faire part de vos remarques et de vos commentaires le concernant par courriel à l'adresse \href{mailto:babafou\%2Blatex@babafou.eu.org}{\courriel{babafou+latex@babafou.eu.org}}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \mainmatter \pagestyle{fancy} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Introduction} \label{chapitre:introduction} Ce manuel est destiné à vous apprendre \LaTeX\footnote{Absolument rien à voir avec le caoutchouc. La fin de « \LaTeX\ » se prononce comme dans le mot « varech ».} dans la joie et la bonne humeur. Après l'avoir lu, vous devriez être en mesure d'utiliser \LaTeX\ pour réaliser tous vos documents. \section{Qu'est-ce que \LaTeX\ ?} \index{LaTeX@\LaTeX} \LaTeX\ est un formateur de texte d'une très grande puissance et qui produit des documents d'une excellente qualité. Il est utilisé par beaucoup d'étudiants, de chercheurs et d'éditeurs à travers le monde. Pour vous donner une idée de ce que \LaTeX\ est capable de faire, vous pouvez feuilleter ce manuel, il a été entièrement réalisé avec lui. \LaTeX\ est une surcouche d'un formateur de texte appelé \TeX\index{TeX@\TeX} (le nom \TeX\ vient du grec \textgreek{t'eqnh}, qui veut dire « art » et d'où vient le mot « technique~»\footnote{Ce qui explique la prononciation de \LaTeX.}). \TeX\ est extrêmement puissant et dispose d'un langage permettant de lui ajouter de nouvelles fonctions mais il est d'un abord assez ardu. \LaTeX, en revanche, est bien plus simple et, comme il est une surcouche de \TeX, il dispose du même langage, qui a servi à réaliser de très nombreuses extensions pour \LaTeX. Cependant, vous vous demandez certainement quel est l'intérêt de \LaTeX, qui demande un apprentissage certain, par rapport à des logiciels de traitement de texte plus traditionnels tels qu'OpenOffice ou Word, qui s'utilisent paraît-il d'une manière intuitive et ergonomique. Tout est affaire de philosophie. \section{La philosophie de \LaTeX} \LaTeX\ n'est pas un traitement de texte à proprement parler, comme OpenOffice et Word, c'est un \emph{formateur de texte}. Un document \LaTeX\ est un fichier texte tapé avec n'importe quel éditeur (Emacs, \intercom{vi}...) et contenant le texte du document mélangé avec des commandes indiquant sa structure. Ceci a une conséquence très importante : lors de la frappe, on ne voit pas le document tel qu'il sera imprimé. On dit que \LaTeX\ n'est pas \terme{WYSIWYG} (\anglais{what you see is what you get}), contrairement à OpenOffice et Word. Pour visualiser le document, il faut le compiler avec \LaTeX, ce qui génère un fichier PDF\index{PDF} qu'on peut alors visualiser. C'est certainement le gros inconvénient de \LaTeX\ pour les personnes habituées à voir le document au fur et à mesure de sa saisie. D'un autre côté, \LaTeX\ décharge au maximum l'utilisateur des soucis de mise en page, ce qui lui permet de se concentrer sur la structure et le contenu de son document. De plus, puisque qu'il traite le document globalement (et pas au fur et à mesure de la frappe), \LaTeX\ peut en avoir une vue d'ensemble et faire de bons choix de mise en page. En résumé, il faut bien comprendre que \LaTeX\ traite le document tel qu'on le pense alors qu'OpenOffice et Word ne traitent le document que tel qu'ils le voient. C'est cette intelligence qui fait tout l'intérêt de \LaTeX. \section{\LaTeX\ et la typographie} La \terme{typographie} est l'art d'assembler des caractères. Depuis l'invention de l'imprimerie, se sont développées des règles et des habitudes afin de rendre la présentation d'un texte agréable au regard. Malheureusement, rares sont les logiciels WYSIWYG à les respecter. Par exemple, voyez-vous une différence entre les mots « efficace » et «~ef{}f{}icace » ? Écrivons-les un peu plus gros pour bien voir ce qui change : \begin{framed} \begin{center} \Huge « efficace » et « ef{}f{}icace » \end{center} \end{framed} Dans le premier cas, les deux f et le i sont en quelque sorte soudés, la fin de la boucle du premier f allant caresser la naissance de celle du second, les deux barres des f se retrouvant dans le prolongement l'une de l'autre et finissant au sommet du i, dont le point se confond avec la fin de la boucle du second f. C'est ce qu'on appelle une \terme{ligature}. Dans le second cas, les lettres sont tout simplement distinctes, les unes à côté des autres. Les ligatures ont pour objectif de gagner de la place en réduisant l'espacement entre les lettres mais elles ont également un intérêt esthétique. \LaTeX, dans la mesure où la police de caractères utilisée le permet, génère automatiquement les ligatures adéquates. De même, comme indiqué précédemment, puisqu'il traite le document globalement, \LaTeX\ peut jouer sur l'espacement pour uniformiser le gris typographique, qui est ce qu'on perçoit d'un texte quand on la regarde d'assez loin. D'autres aspects typographiques ne peuvent être traités de manière automatique par \LaTeX\ et nécessitent donc d'être pris en compte par l'auteur du document. Les ouvrages indiqués dans la bibliographie sont d'une lecture enrichissante pour qui aime le beau texte. Les règles typographiques les plus importantes sont indiquées dans l'annexe \ref{annexe:typographie}. Celles s'appliquant spécifiquement à l'écriture des mathématiques sont indiquées au paragraphe \ref{section:math-typo}. \section{Comment se procurer \LaTeX\ ?} \label{section:procurer} Sur un système UNIX, \LaTeX\ fait souvent partie de l'installation de base. À défaut, il est toujours possible de l'installer grâce au système d'ajout de logiciels tiers propre à l'UNIX utilisé. Il existe également des distributions pour Mac OS X et Windows. Si vous avez à installer \LaTeX, optez sans hésiter pour la distribution \TeX\ Live\index{TeX Live@\TeX\ Live}\footnote{\url{http://www.tug.org/texlive/}}, qui fournit un environnement complet comprenant \LaTeX\ et de nombreuses extensions, ainsi qu'un système de mise à jour de l'ensemble. Il s'agit d'un logiciel libre\footnote{\url{http://fr.wikipedia.org/wiki/Logiciel_libre}} et téléchargeable gratuitement. Ce manuel a été réalisé avec la distribution \TeX\ Live. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Votre premier document} Vous voilà au pied du mur. Dans ce chapitre, vous allez réaliser votre premier document avec \LaTeX. Vous allez apprendre : \begin{itemize} \item à compiler un document ; \item à détecter et à corriger les erreurs qu'il peut contenir ; \item à le visualiser. \end{itemize} \section{L'édition} Éditez votre document au moyen de votre éditeur favori (Emacs, \intercom{vi}...) et tapez ceci : \begin{exemple} \documentclass[a4paper,11pt]{article} \usepackage[french]{babel} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{microtype} \usepackage{hyperref} \begin{document} Voici mon premier document avec \LaTeX. \end{document} \end{exemple} Ne vous inquiétez pas si vous ne comprenez rien à cet exemple, il sera expliqué dans le chapitre suivant. Néanmoins, prenez bien garde à le recopier sans erreur. Enfin, sauvez ce fichier sous le nom \path{premier.tex} (les documents \LaTeX\ ont, par convention, l'extension \path{.tex}\index{tex@\path{.tex}}). \section{La compilation} La \terme{compilation} est la transformation du fichier que vous venez de taper en un fichier PDF\index{PDF} directement visualisable. Sur un système UNIX\footnote{Si vous utilisez un autre système d'exploitation, veuillez vous référer à la documentation de votre distribution \LaTeX\ pour savoir comment générer un fichier PDF.}, la compilation s'effectue dans un interpréteur de commandes au moyen de la commande \intercomindex{pdflatex} : \begin{exemple} pdflatex premier.tex \end{exemple} \LaTeX\ affiche ce qu'il fait au fur et à mesure (il est assez bavard, aussi la partie centrale de son discours a été volontairement supprimée) : \begin{exemple}[fontsize=\footnotesize] This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009 NetBSD/i386) entering extended mode (./premier.tex LaTeX2e <2009/09/24> [...] Output written on premier.pdf (1 page, 42535 bytes). Transcript written on premier.log. \end{exemple} Si la compilation s'est correctement déroulée, les deux dernières lignes seront, au nombre d'octets près, identiques à ce qui figure ci-dessus. \section{Les fichiers générés} Lorsqu'il compile un document, \LaTeX\ génère un certain nombre de fichiers : \begin{itemize} \item un fichier \path{.pdf}\index{pdf@\path{.pdf}}, qui est le résultat de la compilation, c'est ce fichier PDF\index{PDF} qui est directement visualisable ; \item un fichier \path{.aux}\index{aux@\path{.aux}}, contenant les références croisées\index{références croisées} ; \item un fichier \path{.log}\index{log@\path{.log}}, contenant une trace du processus de la compilation plus détaillée que ce qui a été affiché à l'écran. \end{itemize} Ces fichiers ont le même nom de base que celui qui a été compilé. Dans notre exemple, la compilation du fichier \path{premier.tex} a donc généré les fichiers \path{premier.pdf}, \path{premier.aux} et \path{premier.log}. L'extension \extensionindex{hyperref} (nous en reparlerons au chapitre \ref{chapitre:concepts}) génère pour sa part un fichier \path{.out}\index{out@\path{.out}} qui contient la table des matières du document PDF (qui est affichée par la plupart des logiciels de visualisation à gauche du document). Suivant la complexité de votre document, \LaTeX\ peut également créer des fichiers : \begin{itemize} \item \path{.toc}\index{toc@\path{.toc}}, contenant la table des matières (\anglais{table of contents}) ; \item \path{.lot}\index{lot@\path{.lot}}, contenant la liste des tableaux (\anglais{list of tables}) ; \item \path{.lof}\index{lof@\path{.lof}}, contenant la liste des figures (\anglais{list of figures}) ; \item \path{.idx}\index{idx@\path{.idx}}, contenant l'index non formaté. \end{itemize} \section{La détection et la correction des erreurs} Si vous vous êtes trompé quelque part, un message de ce genre s'affiche : \begin{exemple} ! Undefined control sequence. l.10 Voici mon premier document avec \latex . ? \end{exemple} Lorsqu'il détecte une erreur, \LaTeX\ vous indique : \begin{itemize} \item la nature de cette erreur (\texttt{Undefined control sequence}) ; \item la ligne où elle se situe (\texttt{l.10}, ligne 10) ; \item ainsi que l'endroit précis de cette erreur dans la ligne (pour vous l'indiquer, \LaTeX\ passe à la ligne) : ici, la commande inconnue est \commande{latex}. \end{itemize} Dans ce cas, tapez \taper{x} pour arrêter la compilation, corrigez l'erreur dans le texte, sauvez-le, puis recompilez. \section{La visualisation} Sous UNIX, la façon la plus simple de visualiser un document PDF est d'utiliser le logiciel \intercom{xpdf} mais on peut également utiliser \intercom{gv} ou Acrobat Reader. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Les concepts de base de \LaTeX} \label{chapitre:concepts} Avant de pouvoir utiliser pleinement \LaTeX\ et de profiter de sa puissance, il faut comprendre certains concepts. Ce chapitre vous expliquera l'exemple du chapitre précédent et vous initiera plus profondément à la philosophie et à l'esprit de \LaTeX. \section{Le document \LaTeX} Un document \LaTeX\ est un mélange de texte et de commandes. Reprenons l'exemple précédent : \begin{exemple} \documentclass[a4paper,11pt]{article} \usepackage[french]{babel} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{microtype} \usepackage{hyperref} \begin{document} Voici mon premier document avec \LaTeX. \end{document} \end{exemple} Comme vous l'avez vu auparavant, tout ceci imprime finalement le texte : « Voici mon premier document avec \LaTeX », c'est-à-dire une seule ligne sur les quatorze (en comptant les lignes blanches) que comporte le fichier. Mais attention, le reste n'est pas inutile, loin de là ! Ce sont les fameuses commandes. Examinons la première : \begin{exemple} \documentclass[a4paper,11pt]{article} \end{exemple} Cette commande est indispensable et doit figurer en première ligne de tout document \LaTeX. Elle définit la \emph{classe} du document (ici \classe{article}) ainsi que les \emph{options} à lui appliquer (ici \classeoption{a4paper} et \classeoption{11pt}). \subsection{Syntaxe d'une commande \LaTeX} \index{commande} On reconnaît ici la syntaxe générale d'une commande \LaTeX\ : \begin{syntaxe} \commande{commande}\option{option}\argument{argument} \end{syntaxe} \begin{itemize} \item une commande commence par une barre oblique inversée \code{\textbackslash} ; \item celle-ci est suivie par le nom de la commande ; \item viennent ensuite, s'il y en a, les arguments optionnels, entre crochets, séparés par des virgules s'il y en a plusieurs ; \item puis les arguments obligatoires, entre accolades, séparés par des virgules s'il y en a plusieurs. \end{itemize} Voici quelques exemples de commandes : \begin{itemize} \item commande sans argument : \\ \commande{appendix} \item commande avec argument : \\ \commande{chapter\{nom\}} \item commande avec argument optionnel : \\ \commande{item[nom]} \item commande avec argument optionnel et argument obligatoire : \\ \commande{cite[page 843]\{the-latex-companion\}} \end{itemize} \subsection{La commande \commande{documentclass}} Revenons à la commande \commandeindex{documentclass} et à ses arguments. \subsubsection{La classe d'un document} \label{section:classe} La \terme{classe} est l'argument obligatoire de la commande \commande{documentclass}. Elle définit le type du document et influe sur sa mise en page et les commandes qu'il est possible d'utiliser. Il existe plusieurs classes, les principales classes standards étant : \begin{description} \item[\classeindex{article}] qui est utilisée pour les documents courts (rapports de projet, de TP...) ; \item[\classeindex{report}] qui est utilisée pour les documents plus longs qui doivent être découpés en chapitres (en effet, la classe \classe{article} ne gère pas les chapitres) ; \item[\classeindex{book}] qui est utilisée pour les livres (il y a peu de différences avec la classe \classe{report}) ; \item[\classeindex{letter}] qui permet d'écrire des lettres ; \item[\classeindex{slides}] qui permet de faire des transparents. \end{description} \subsubsection{Les options de classe} \index{option de classe} Les \emph{options de classe}, qui sont les arguments optionnels de la commande \commande{documentclass}, servent à modifier globalement la mise en page du document. Expliquons quelque peu les options utilisées ici : \begin{description} \item[\classeoptionindex{a4paper}] permet de régler les dimensions et les marges du document pour une impression sur du papier au format A4 (cette option est indispensable, sinon vous vous retrouverez avec des marges pour papier américain) ; \item[\classeoptionindex{11pt}] porte la taille des caractères à onze points\footnote{Le point est une unité de mesure utilisée en typographie. Un point vaut environ 1/72\ieme\ de pouce (1 pouce valant 2,54 cm).} (il existe aussi une option \classeoptionindex{12pt} ; la taille normale, sans option, est de dix points ; il existe par cohérence une option \classeoptionindex{10pt} qui ne fait rien). \end{description} Il existe d'autres options de classe. Parmi elles, citons : \begin{description} \item[\classeoptionindex{twocolumn}] qui permet de présenter le document sur deux colonnes ; \item[\classeoptionindex{twoside}] qui permet de régler les marges du document pour une impression en recto-verso (dans ce cas, la marge intérieure (vers la reliure) est généralement plus petite que la marge extérieure). \end{description} \subsection{Le préambule} Le \terme{préambule} est la partie du document comprise entre les commandes \commande{documentclass} et \commande{begin\{document\}}. Dans notre exemple, il contient les commandes de chargement des extensions. \subsection{Les extensions} Une \termeanglais{extension}{package} sert à modifier la mise en page ou à définir de nouvelles commandes. Ce sont les extensions qui permettent d'ajouter de nouvelles fonctions à \LaTeX. Elles sont chargées grâce à la commande \commandeindex{usepackage}, utilisée dans le préambule du document. Expliquons les extensions utilisées dans l'exemple : \begin{description} \item[\extensionindex{babel},] utilisée avec l'option \extensionoptionindex{french}, adapte \LaTeX\ aux conventions typographiques et aux règles de coupure des mots françaises et redéfinit quelques noms en bon français, comme par exemple « Table des matières » ou « Chapitre » au lieu respectivement de « \anglais{Contents} » et «~\anglais{Chapter} ». \item[\extensionindex{fontenc},] utilisée avec l'option \extensionoptionindex{T1}, demande à \LaTeX\ d'utiliser le codage de caractères T1 (c'est le nouveau standard \LaTeX\ pour le codage des caractères mais il n'est pas encore utilisé par défaut, d'où la nécessité d'utiliser cette extension). \item[\extensionindex{inputenc}] indique, grâce à l'option \extensionoptionindex{utf8}, que le fichier est codé en UTF-8\index{UTF-8} (il existe également une option \extensionoptionindex{latin9} pour les fichiers codés en ISO 8859-15\index{ISO 8859-15} et une option \extensionoptionindex{latin1} pour les fichiers codés en ISO 8859-1\index{ISO 8859-1}). Signalons également l'existence d'une option \extensionoptionindex{utf8x}. Malheureusement non maintenue depuis plusieurs années, elle peut néanmoins toujours être téléchargée\footnote{\url{http://www.unruh.de/DniQ/latex/unicode/}} et permet d'utiliser un plus grand nombre de caractères UTF-8 que l'option \extensionoption{utf8}. \item[\extensionindex{lmodern}] permet d'utiliser la police de caractères Latin Modern, mieux adaptée à la génération de fichiers PDF que la police par défaut (qui a par ailleurs exactement le même dessin). Cette police de caractères a vocation à devenir celle utilisée par défaut dans une future version de \LaTeX. \item[\extensionindex{microtype}] apporte des raffinements typographiques supplémentaires (en particulier l'ajustement de l'espacement permettant une meilleure coupure des mots). \item[\extensionindex{hyperref}] permet de profiter des possibilités de navigation au sein d'un document PDF sans rien avoir à faire de spécial. Grâce à elle, les références croisées, références bibliographiques, notes et URL présentes dans le document deviendront des hyperliens menant vers l'élément pointé. Une table des matières navigable accompagnera également le document. \end{description} L'utilisation de ces extensions dans tous vos documents est vivement conseillée. Par ailleurs, l'ordre dans lequel les extensions sont chargées est généralement sans importance. Aussi est-il astucieux de les charger dans l'ordre alphabétique (ce qui est fait dans l'exemple de document) afin de pouvoir s'y retrouver rapidement lorsque de nombreuses extensions sont utilisées. L'exception confirmant la règle, l'extension \extensionindex{hyperref} doit toujours être chargée en dernier parce qu'elle redéfinit des commandes provenant d'autres extensions. C'est pourquoi, dans notre exemple, elle figure en dernier et séparée des autres extensions par une ligne blanche, afin de bien souligner son caractère particulier. Il existe beaucoup d'autres extensions. Nous en verrons quelques unes par la suite. \subsection{Le document} \index{document@\environnement{document} (environnement)} Le document à proprement parler est contenu entre \commande{begin\{document\}} et \commande{end\{document\}}. Tout texte placé après \commande{end\{document\}} est ignoré. On remarque ici une structure très utilisée en \LaTeX\ : la structure d'\emph{environnement} (voir le chapitre \ref{chapitre:environnements} pour une description complète des environnements de \LaTeX). \section{Structure du document} \subsection{Les paragraphes} \index{paragraphe} Un document \LaTeX\ est composé de \emph{paragraphes} séparés les uns des autres par une ou plusieurs lignes blanches : \begin{exemple} Voici un paragraphe assez court. Ici commence un autre paragraphe. Comme vous le voyez, les fins de ligne n'ont aucune importance sur le formatage du paragraphe. Seules les lignes blanches comptent. Enfin, le dernier paragraphe conclut cet exemple. \end{exemple} Ce qui produit le résultat suivant : \begin{framed} Voici un paragraphe assez court. Ici commence un autre paragraphe. Comme vous le voyez, les fins de ligne n'ont aucune importance sur le formatage du paragraphe. Seules les lignes blanches comptent. Enfin, le dernier paragraphe conclut cet exemple. \end{framed} \subsection{Les mots} \index{mot} Un paragraphe est composé de \emph{mots} séparés par des signes de ponctuation ou des espaces\index{espace} (un retour à la ligne est considéré comme une espace). Vous pouvez insérer entre deux mots autant d'espaces que vous voulez (mais une seule fera parfaitement l'affaire). Ainsi, les deux textes suivants produiront le même résultat : \begin{exemple} Voici un exemple de texte, avec des espaces. \end{exemple} \begin{exemple} Voici un exemple de texte, avec des espaces. \end{exemple} Comme un retour à la ligne est équivalent à une espace, profitez-en pour couper vos paragraphes en fin de ligne. Tout bon éditeur de texte est capable de faire cela automatiquement ainsi que de reformater au propre un paragraphe dont les lignes ont des longueurs disparates. En effet, avec un éditeur de texte, il est plus facile de se déplacer avec les touches fléchées dans un paragraphe composé de plusieurs lignes que dans un paragraphe qui tient en une seule ligne et il est plus agréable de lire un texte correctement présenté qu'une grande ligne dont certains mots commencent au bord droit de la fenêtre pour se poursuivre au bord gauche de la ligne suivante. \subsection{L'espace insécable : \code{\textasciitilde}} Dans certains cas, il faut empêcher \LaTeX\ de séparer deux mots en fin de ligne, comme ici : \begin{resultat} Vous souvenez-vous de la série télé dans laquelle le héros porte le numéro 6 ? \end{resultat} Le « 6 » seul en début de ligne est du plus mauvais effet. On aimerait pouvoir coller ce « 6 » au mot qui le précède pour que \LaTeX\ ne les sépare jamais (c'est beau l'amour !). Ceci est possible grâce au caractère \code{\textasciitilde}\index{~@\code{\textasciitilde} (espace insécable)}. Ce caractère représente une \terme{espace insécable}, qui est considérée comme une espace (et donc apparaîtra comme tel à l'impression), mais \LaTeX\ ne séparera jamais en fin de ligne les deux mots qu'elle lie pour le meilleur et pour le pire : \begin{filecontents*}{\jobname.tmp} Vous souvenez-vous de la série télé dans laquelle le héros porte le numéro~6 ? \end{filecontents*} \exempleresultat{\jobname.tmp} N'utilisez pas systématiquement l'espace insécable, cela nuit à la lisibilité du source. Attendez d'avoir complètement fini la rédaction de votre document pour y insérer éventuellement des espaces insécables, au cas par cas. \subsection{Les commentaires} \LaTeX\ permet d'inclure des \emph{commentaires}\index{commentaire} dans le texte. Ceux-ci ne seront pas imprimés. Ils peuvent servir de points de repère à l'auteur, lui rappeler qu'il n'a pas fini d'écrire un paragraphe, etc. Un commentaire commence par un \code{\%}\index{%@\code{\%} (commentaire)} et se termine à la fin de la ligne : \begin{exemple} Ceci est du texte normal. % ceci est un commentaire Ceci est la suite du texte. \end{exemple} \section{Caractères spéciaux utilisés par \LaTeX} Vous avez remarqué que certains caractères ont une signification spéciale pour \LaTeX. Ainsi, le \code{\textbackslash} indique une commande, le \code{\textasciitilde} une espace insécable et le \code{\%} un commentaire. Il existe dix caractères réservés : \begin{exemple} $ & % # _ { } ~ ^ \ \end{exemple} %stopzone \index{$@\code{\$} (caractère réservé)} %stopzone \index{&@\code{\&} (caractère réservé)} \index{%@\code{\%} (caractère réservé)} \index{#@\code{\#} (caractère réservé)} \index{_@\code{\_} (caractère réservé)} %\index{{@\code{\{} (caractère réservé)} %\index{}@\code{\}} (caractère réservé)} \index{^@\code{\textasciicircum} (caractère réservé)} \index{~@\code{\textasciitilde} (caractère réservé)} \index{\@\code{\textbackslash} (caractère réservé)} Ceux-ci ne peuvent donc pas être imprimés tels quels. Pour les sept premiers, il existe une commande spéciale consistant en un \code{\textbackslash} (puisque c'est une commande) suivi du caractère en question : \begin{filecontents*}{\jobname.tmp} \$ \& \% \# \_ \{ \} \end{filecontents*} \exempleresultat{\jobname.tmp} \index{$@\commande{\$} (\$)} %stopzone \index{&@\commande{\&} (\&)} \index{%@\commande{\%} (\%)} \index{#@\commande{\#} (\#)} \index{_@\commande{\_} (\_)} %\index{{@\commande{\{} (\{)} %\index{}@\commande{\}} (\})} Pour les trois autres, on peut utiliser les commandes \commande{textasciitilde}\index{textasciitilde@\commande{textasciitilde} (\textasciitilde)}, \commande{textasciicircum}\index{textasciicircum@\commande{textasciicircum} (\textasciicircum)} et \commande{textbackslash}\index{textbackslash@\commande{textbackslash} (\textbackslash)} : \begin{filecontents*}{\jobname.tmp} \textasciitilde \textasciicircum \textbackslash \end{filecontents*} \exempleresultat{\jobname.tmp} \section{Les problèmes de coupure des mots : \texttt{Overfull \textbackslash hbox}} \index{coupure des mots} \index{Overfull hbox@\texttt{Overfull \textbackslash hbox}} Il arrive parfois que \LaTeX\ ne sache pas à quel endroit couper un mot en fin de ligne. Et, plutôt que de le couper n'importe où, il préfère ne rien faire. Dans ce cas, le mot en question dépasse de la marge droite et \LaTeX\ génère l'avertissement suivant : \begin{exemple}[fontsize=\small] Overfull \hbox (63.46103pt too wide) in paragraph at lines 99--99 \end{exemple} L'avertissement \texttt{Overfull \textbackslash hbox} signifie que quelque chose dépasse de la marge droite. \LaTeX\ signale de combien le texte dépasse (\texttt{63.46103pt}, c'est précis) et à quel endroit du fichier source se situe le problème (\texttt{lines 99--99}). Rassurez-vous, cela n'arrive que très rarement. Dans ce cas, il est possible de préciser à \LaTeX\ où il doit couper le mot. Pour cela, repérez l'endroit approprié en visualisant le document PDF et placez dans le texte la commande \commande{-}@\index{-@\commande{-} (coupure des mots)} où vous voulez que \LaTeX\ coupe le mot : \begin{exemple} Je veux cou\-per ici. \end{exemple} La commande \commande{-} agit sur le formatage du reste du paragraphe, puisqu'une partie du mot va se retrouver sur la ligne suivante et décaler la suite du texte. Il se peut donc que d'autres avertissements de coupure des mots apparaissent ou disparaissent. C'est pourquoi il est préférable de n'effectuer vos coupures manuelles qu'après avoir terminé la rédaction de votre document, une par une, en vérifiant à chaque fois le résultat (on peut le faire visuellement avec le document PDF, mais il suffit que le message \texttt{Overfull \textbackslash hbox} ait disparu pour être sûr d'avoir bien effectué la césure). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Les commandes de \LaTeX} Les \emph{commandes}\index{commande} sont fréquemment utilisées avec \LaTeX. Que ce soit pour structurer le document, pour produire certains caractères ne figurant pas sur le clavier, etc. \section{Syntaxe d'une commande} \index{commande!syntaxe} Voici la syntaxe d'une commande \LaTeX\ : \begin{syntaxe} \commande{commande}\option{option}\argument{argument} \end{syntaxe} \begin{itemize} \item une commande commence par une barre oblique inversée \codeindex{\textbackslash} ; \item celle-ci est suivie par le nom de la commande ; \item viennent ensuite, s'il y en a, les arguments optionnels, entre crochets, séparés par des virgules s'il y en a plusieurs ; \item puis les arguments obligatoires, entre accolades, séparés par des virgules s'il y en a plusieurs. \end{itemize} Certaines commandes ont une \emph{forme étoilée}\index{forme étoilée!commande}\index{commande!forme étoilée}, qui est une variante de la commande. Pour obtenir la forme étoilée d'une commande, il suffit de rajouter une étoile entre le nom de la commande et ses arguments : \begin{syntaxe} \commande{commande*}\option{option}\argument{argument} \end{syntaxe} \section{La page de titre} \index{page de titre} \LaTeX\ permet d'imprimer une page de titre en début de document à partir d'informations contenues dans le préambule : \begin{description} \item[\commandeindex{title}\argument{titre}] indique le titre du document. \item[\commandeindex{author}\argument{nom}] indique le nom de l'auteur du document. S'il y a plusieurs auteurs, leurs noms doivent être séparés par \commandeindex{and}. \item[\commandeindex{date}\argument{date}] indique la date du document. \end{description} On peut utiliser \boiboiindex\ dans les arguments de ces commandes pour forcer un passage à la ligne si nécessaire. Les commandes \commande{title} et \commande{author} sont obligatoires. Si la commande \commande{date} n'est pas utilisée, la date du jour de la compilation est indiquée automatiquement. Si l'on ne veut pas de la date, il suffit d'écrire : \begin{exemple} \date{} \end{exemple} Pour imprimer la page de titre, il faut appeler la commande \commandeindex{maketitle} juste après le \commande{begin\{document\}}. Voici un exemple de document avec une page de titre : \begin{exemple} \documentclass[a4paper,11pt]{report} \usepackage[french]{babel} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{microtype} \usepackage{hyperref} \title{Ceci est le titre \\ et la suite} \author{babafou \and babasse} \date{26 février 1994} \begin{document} \maketitle [...] \end{exemple} On peut annoter le titre, l'auteur ou la date grâce à la commande \commandeindex{thanks}, qui insère une note de bas de page : \begin{exemple} \title{Titre avec note\thanks{voici la note}} \end{exemple} Pour les classes \classe{report} et \classe{book}, la page de titre est imprimée seule au milieu d'une page alors que pour la classe \classe{article}, elle est imprimée en haut de la première page. Dans ce cas, pour avoir la page de titre toute seule, il faut utiliser l'option de classe \classeoptionindex{titlepage}. Cette page de titre est, il est vrai, assez sobre. Néanmoins, il est possible de personnaliser sa mise en page grâce à l'environnement \environnement{titlepage} (voir le paragraphe \ref{section:titlepage}). \section{Commandes de hiérarchisation du document} Hiérarchiser un document (l'organiser en parties, chapitres, sections, sous-sections...) est l'une des choses les plus faciles à faire avec \LaTeX. Pour cela, on utilise les commandes du tableau \ref{tableau:hierarchisation}. \begin{table}[!htbp] \centering \begin{tabular}{l@{\hspace{10mm}}l} \toprule \commandeindex{part}\argument{nom} & \commandeindex{subsection}\argument{nom} \\ \commandeindex{chapter}\argument{nom} & \commandeindex{subsubsection}\argument{nom} \\ \commandeindex{section}\argument{nom} & \\ \bottomrule \end{tabular} \caption{Commandes de hiérarchisation} \label{tableau:hierarchisation} \end{table} La commande \commande{chapter} n'est pas disponible dans la classe \classe{article}. C'est pourquoi on utilise les classes \classe{report} ou \classe{book} lorsqu'on a besoin de faire des chapitres et la classe \classe{article} sinon. Les commandes de hiérarchisation affichent un numéro, généré automatiquement, suivi de leur argument dans un corps plus important que celui du texte et fonction de leur niveau hiérarchique (un titre de chapitre sera plus grand qu'un titre de section). Ainsi, le titre de cette section a été obtenu ainsi : \begin{exemple} \section{Commandes de hiérarchisation du document} \end{exemple} Ce qui est très intéressant, c'est que c'est \LaTeX\ qui gère tout seul la numérotation. On peut insérer des chapitres, des sections ou modifier leur ordre sans se soucier du décalage des numéros. Avec la même simplicité, la commande \commandeindex{tableofcontents}\index{table des matières} imprime la table des matières. Il faut deux compilations successives pour avoir une table des matières à jour. La première compilation enregistre la table des matières dans un fichier \path{.toc}\index{toc@\path{.toc}}\footnote{\path{.toc} pour \anglais{table of contents}.} et la seconde l'inclut dans le document. Il existe également une commande \commandeindex{listoftables}, qui imprime la liste des tableaux et une commande \commandeindex{listoffigures}, qui imprime la liste des figures (voir le paragraphe \ref{section:table-figure}). Pour que ces listes soient à jour, il faut aussi deux compilations successives (mettant en jeu les fichiers \path{.lot}\index{lot@\path{.lot}}\footnote{\path{.lot} pour \anglais{list of tables}.} et \path{.lof}\index{lof@\path{.lof}}\footnote{\path{.lof} pour \anglais{list of figures}.}). \subsection{Forme étoilée} \index{part*@\commande{part*}} \index{chapter*@\commande{chapter*}} \index{section*@\commande{section*}} \index{subsection*@\commande{subsection*}} \index{subsubsection*@\commande{subsubsection*}} Chaque commande de hiérarchisation a une forme étoilée qui ne numérote pas son titre, ne modifie pas la numérotation des autres titres de même niveau et ne produit pas d'entrée dans la table des matières. Ces formes étoilées sont principalement utilisées à la place des commandes normales dans les documents très courts et dans les cas où la numérotation n'est pas nécessaire. Par exemple, le titre de l'avant-propos a été obtenu ainsi : \begin{exemple} \chapter*{Avant-propos} \end{exemple} On peut néanmoins faire apparaître le titre dans la table des matières grâce à la commande : \begin{syntaxe} \commandeindex{addcontentsline}\code{\{toc\}}\argument{niveau}\argument{titre} \end{syntaxe} \noindent qui fera apparaître \var{titre} dans la table des matières, au niveau \var{niveau} (qui peut être \code{part}, \code{chapter}, \code{section}, \code{subsection} ou \code{subsubsection}). Cette commande est à utiliser immédiatement après la forme étoilée. Par exemple, pour inclure l'avant-propos dans la table des matières, j'ai utilisé : \begin{exemple} \chapter*{Avant-propos} \addcontentsline{toc}{chapter}{Avant-propos} \end{exemple} \subsection{Annexes} Enfin, la commande \commandeindex{appendix}\index{annexe} permet de signaler à \LaTeX\ que les chapitres (pour les classes \classe{report} et \classe{book}) ou les sections (pour la classe \classe{article}) qui suivront doivent être considérées comme des annexes. Les annexes sont numérotées A, B, etc. \section{Construire un document à partir de plusieurs fichiers} Un document volumineux, par exemple un livre comprenant de nombreux chapitres, peut tout à fait être contenu dans un seul fichier. Mais on peut également vouloir le construire à partir de plusieurs fichiers. On peut pour cela utiliser un fichier par chapitre et un fichier principal contenant la structure du document ainsi que les commandes permettant d'inclure les fichiers correspondant aux chapitres. La commande \commandeindex{include} permet d'inclure un fichier dans un document. Son argument est le nom du fichier à inclure, sans son extension \path{.tex} : \begin{syntaxe} \commandeindex{include}\argument{fichier} \end{syntaxe} Le fichier principal de notre livre peut donc ressembler à : \begin{exemple} \documentclass[a4paper,11pt]{book} [...] \begin{document} \maketitle \include{introduction} \include{these} \include{antithese} \include{synthese} \include{conclusion} \end{document} \end{exemple} Chacun des fichiers inclus contient un chapitre donc commence par la commande \commande{chapter}, suivie du contenu du chapitre. La commande \commande{include} a une particularité, elle génère une nouvelle page avant d'inclure le contenu du fichier et une nouvelle page après. Ceci ne pose pas de problème si les fichiers inclus correspondent à des chapitres puisque ceux-ci sont mis en page de cette façon. En revanche, cela peut être gênant si le document utilise par exemple la classe \classe{article} et que les fichiers inclus correspondent à des sections. Dans ce cas, on utilise plutôt la commande \commandeindex{input} : \begin{syntaxe} \commandeindex{input}\argument{fichier} \end{syntaxe} Comme la commande \commande{include}, la commande \commande{input} permet d'inclure le fichier dont le nom lui est passé en argument (avec ou sans son extension \path{.tex}) mais ne génère pas de nouvelle page avant ou après d'inclure le contenu du fichier. \section{Commandes d'annotation du document} On peut très facilement annoter un document en utilisant des notes de bas de page ou des notes dans la marge. \subsection{Les notes de bas de page} \index{note!note de bas de page} Une note de bas de page\footnote{Ceci est une note de bas de page.} s'obtient très facilement grâce à la commande \begin{syntaxe} \commandeindex{footnote}\argument{note} \end{syntaxe} \begin{exemple} Une note de bas de page\footnote{Ceci est une note de bas de page.} s'obtient [...] \end{exemple} \LaTeX\ s'occupe automatiquement de la numérotation. \subsection{Les notes dans la marge} \index{note!note dans la marge} Une note dans la marge\marginpar{Ceci est une note dans la marge.} s'obtient aussi facilement grâce à la commande : \begin{syntaxe} \commandeindex{marginpar}\option{texte de gauche}\argument{texte de droite} \end{syntaxe} \begin{exemple} Une note dans la marge\marginpar{Ceci est une note dans la marge.} s'obtient [...] \end{exemple} Si la note est située dans la marge gauche et que l'argument optionnel \var{texte de gauche} est précisé, celui-ci est utilisé. Dans les autres cas, \var{texte de droite} est utilisé. \section{Les références croisées} \label{section:references} \index{références croisées} Avec \LaTeX, il est très facile de faire référence à un objet du document (page, chapitre, tableau, équation...). La commande \commandeindex{label}\argument{nom} permet de placer un repère, invisible à l'impression, sur l'objet du document auquel on veut se référer. La commande \commandeindex{ref}\argument{nom} permet de faire référence au numéro de l'objet repérée par \var{nom}. Bien entendu, il doit s'agir de quelque chose de numéroté comme un chapitre, un tableau, une équation... La commande \commandeindex{pageref}\argument{nom} permet de faire référence au numéro de la page où se trouve le repère \var{nom}. Ainsi, un repère a été placé sur cette section de la façon suivante : \begin{exemple} \section{Les références croisées} \label{section:references} \end{exemple} On peut alors faire référence au numéro de ce paragraphe (\ref{section:references}, n'est-ce pas ?) par la commande : \begin{exemple} \ref{section:references} \end{exemple} \begin{exemple} On peut alors faire référence au numéro de ce paragraphe (\ref{section:references}, n'est-ce pas ?) par la commande : \end{exemple} \noindent et à la page où elle débute (\pageref{section:references}, on dirait) par : \begin{exemple} \pageref{section:references} \end{exemple} \begin{exemple} et à la page où elle débute (\pageref{section:references}, on dirait) par : \end{exemple} La séquence précédente a été réalisée sans trucages ! L'argument de la commande \commande{label} est une combinaison de lettres (en ASCII, sans accents), de chiffres et de signes de ponctuation. Il est pratique d'utiliser une chaîne de la forme \Verb[commandchars=\\\{\}]+\var{\textrm{type}}:\var{\textrm{nom}}+ où \var{type} représente le type de la chose référencée (\code{chapitre} pour un chapitre, \code{section} pour une section, \code{tableau} pour un tableau, \code{figure} pour une figure, \code{equation} pour une équation...) afin de distinguer tout de suite de quoi on parle et où \var{nom} fait directement référence à l'objet repéré. Ainsi, le texte avec lequel cette section est repérée est \verb+section:references+ parce que c'est une section parlant des références croisées. C'est clair. \section{Caractères spéciaux} Certains symboles, certains caractères ne figurent pas sur les claviers. Heureusement, \LaTeX\ met à votre disposition une série de commandes permettant de les imprimer. \subsection{Symboles} \LaTeX\ définit des commandes permettant d'imprimer divers symboles (voir le tableau \ref{tableau:symboles}) ainsi que des symboles utilisés en français et dans des langues étrangères (voir le tableau \ref{tableau:langues}). \begin{table}[!htbp] \centering \begin{tabular}{ll*{2}{@{\hspace{15mm}}ll}} \toprule \dag & \commande{dag} & \S & \commande{S} & \copyright & \commande{copyright} \\ \ddag & \commande{ddag} & \P & \commande{P} & \pounds & \commande{pounds} \\ \bottomrule \end{tabular} \caption{Symboles divers} \label{tableau:symboles} \index{dag@\commande{dag} (\dag)} \index{ddag@\commande{ddag} (\ddag)} \index{S@\commande{S} (\S)} \index{P@\commande{P} (\P)} \index{copyright@\commande{copyright} (\copyright)} \index{pounds@\commande{pounds} (\pounds)} \end{table} \begin{table}[!htbp] \centering \begin{tabular}{ll*{3}{@{\hspace{15mm}}ll}} \toprule \oe & \commande{oe} & \aa & \commande{aa} & \l & \commande{l} & ?` & \code{?{}`} \\ \OE & \commande{OE} & \AA & \commande{AA} & \L & \commande{L} & !` & \code{!{}`} \\ \ae & \commande{ae} & \o & \commande{o} & \ss & \commande{ss} & & \\ \AE & \commande{AE} & \O & \commande{O} & & & & \\ \bottomrule \end{tabular} \caption{Symboles pour le français et les langues étrangères} \label{tableau:langues} \index{oe@\commande{oe} (\oe)} \index{OE@\commande{OE} (\OE)} \index{ae@\commande{ae} (\ae)} \index{AE@\commande{AE} (\AE)} \index{aa@\commande{aa} (\aa)} \index{AA@\commande{AA} (\AA)} \index{o@\commande{o} (\o)} \index{O@\commande{O} (\O)} \index{l@\commande{l} (\l)} \index{L@\commande{L} (\L)} \index{ss@\commande{ss} (\ss)} \index{?`@\code{?{}`} (?`)} \index{"!`@\code{"!{}`} ("!`)} \end{table} Pour utiliser les commandes des trois premières colonnes du tableau \ref{tableau:langues} au sein d'un mot, il est nécessaire de les entourer d'accolades afin d'éviter toute ambiguïté. En effet, \code{c\textbackslash oeur} contient-il la commande \commande{oe}, \commande{oeu} ou \commande{oeur} ? Ainsi, « c{\oe}ur » s'écrit \code{c\{\textbackslash oe\}ur}. Notez que les deux commandes de la dernière colonne du tableau \ref{tableau:langues} sont assez particulières puisqu'elles ne commencent pas par un \code{\textbackslash}. Signalons aussi l'existence de la commande \code{-{}-}\index{--@\code{-{}-} (--)} qui imprime un tiret utilisé pour les intervalles de nombres (comme dans 93--94) et de la commande \code{-{}-{}-}\index{---@\code{-{}-{}-} (---)} qui imprime un tiret de ponctuation --- comme celui-ci. \LaTeX\ définit également trois commandes permettant d'imprimer les logos \TeX\ (\commandeparindex{TeX}{\TeX}), \LaTeX\ (\commandeparindex{LaTeX}{\LaTeX}) et \LaTeXe\ (\commandeparindex{LaTeXe}{\LaTeXe}). Voyons donc ce que donne le texte suivant : \begin{filecontents*}{\jobname.tmp} Essai des commandes \TeX et \LaTeX dans un texte. \end{filecontents*} \exempleresultat{\jobname.tmp} Ce n'est pas exactement ce à quoi nous nous attendions, parce que les mots « et » et « dans » sont collés aux logos qui les précédent. En effet, \LaTeX\ ignore toute espace (une ou plusieurs) suivant une commande sans argument (ce qui est le cas des commandes \commande{TeX}, \commande{LaTeX} et \commande{LaTeXe}). Il y a trois façons de corriger cela : \begin{itemize} \item utiliser la commande \verb*+\ +\index{ @\verb*+\ +} (barre oblique inversée, espace) qui imprime une espace : \begin{exemple} Essai des commandes \TeX\ et \LaTeX\ dans un texte. \end{exemple} \item mettre un argument vide : \begin{exemple} Essai des commandes \TeX{} et \LaTeX{} dans un texte. \end{exemple} \item mettre la commande entre accolades (c'est ce qu'on appelle des \emph{accolades de groupement}\index{accolades de groupement}) : \begin{exemple} Essai des commandes {\TeX} et {\LaTeX} dans un texte. \end{exemple} \end{itemize} Ces méthodes sont équivalentes (elles produisent exactement le même résultat) mais la première est plus élégante et donne un texte source plus facile à lire. Enfin, l'extension \extensionindex{eurosym}\footnote{\url{http://www.theiling.de/eurosym.html.en}} définit la commande \commandeparindex{euro}{\euro} qui affiche le symbole \euro\ : \begin{filecontents*}{\jobname.tmp} Ce livre vaut 10 \euro\ et celui-ci en vaut 15. \end{filecontents*} \exempleresultat{\jobname.tmp} \noindent ainsi que la commande \commandeparindex{EUR}{\euro}, qui fait suivre son argument d'une espace fine insécable (il est donc assez pratique d'utiliser cette commande plutôt que de rajouter des espaces insécables si nécessaire) puis du symbole \euro\ : \begin{filecontents*}{\jobname.tmp} Ce livre vaut \EUR{10} et celui-ci en vaut 15. \end{filecontents*} \exempleresultat{\jobname.tmp} \subsection{Les lettres accentuées} \index{accents} \LaTeX\ définit aussi des commandes permettant d'imprimer toutes sortes de lettres accentuées (voir le tableau \ref{tableau:accents}). \begin{table}[!htbp] \centering \begin{tabular}{ll*{3}{@{\hspace{15mm}}ll}} \toprule \`{e} & \commande{`\{e\}} & \~{n} & \commande{\textasciitilde\{n\}} & \u{e} & \commande{u\{e\}} & \c{c} & \commande{c\{c\}} \\ \'{e} & \commande{'\{e\}} & \={e} & \commande{=\{e\}} & \v{e} & \commande{v\{e\}} & \d{e} & \commande{d\{e\}} \\ \^{e} & \commande{\textasciicircum\{e\}} & \.{e} & \commande{.\{e\}} & \H{e} & \commande{H\{e\}} & \b{e} & \commande{b\{e\}} \\ \"{e} & \commande{"\{e\}} & & & \t{ee} & \commande{t\{ee\}} & & \\ \bottomrule \end{tabular} \caption{Commandes d'accentuation} \label{tableau:accents} \index{`@\commande{`} (\`{e})} \index{'@\commande{'} (\'{e})} \index{^@\commande{\textasciicircum} (\^{e})} \index{""@\commande{""} (\"{e})} \index{~@\commande{\textasciitilde} (\~{n})} \index{=@\commande{=} (\={e})} \index{.@\commande{.} (\.{e})} \index{u@\commande{u} (\u{e})} \index{v@\commande{v} (\v{e})} \index{H@\commande{H} (\H{e})} \index{t@\commande{t} (\t{ee})} \index{c@\commande{c} (\c{c})} \index{d@\commande{d} (\d{e})} \index{b@\commande{b} (\b{e})} \end{table} Néanmoins, ces commandes sont d'un usage assez lourd. \LaTeX\ permet donc d'utiliser, pour certaines d'entre elles, les formes simplifiées présentées dans le tableau \ref{tableau:accents-simples}. \begin{table}[!htbp] \centering \begin{tabular}{ll@{\hspace{15mm}}ll} \toprule \`e & \commande{`e} & \~n & \commande{\textasciitilde n} \\ \'e & \commande{'e} & \=e & \commande{=e} \\ \^e & \commande{\textasciicircum e} & \.e & \commande{.e} \\ \"e & \commande{"e} & & \\ \bottomrule \end{tabular} \caption{Commandes simplifiées d'accentuation} \label{tableau:accents-simples} \index{`@\commande{`} (\`e)} \index{'@\commande{'} (\'e)} \index{^@\commande{\textasciicircum} (\^e)} \index{""@\commande{""} (\"e)} \index{~@\commande{\textasciitilde} (\~n)} \index{=@\commande{=} (\=e)} \index{.@\commande{.} (\.e)} \end{table} Pour placer un accent sur un i ou un j, utilisez les commandes \commandeparindex{i}{\i} (\i) ou \commandeparindex{j}{\j} (\j), qui produisent des lettres sans point, en argument des commandes du tableau \ref{tableau:accents}. Voici un exemple de texte en français utilisant des caractères accentués : \begin{exemple} Les caract\`eres accentu\'es sont tr\`es utilis\'es en fran\c{c}ais. Il est donc absolument indispensable de conna\^{\i}tre les commandes d'accentuation. \end{exemple} Bien entendu, une saisie directe des caractères accentués est amplement préférable, lorsqu'elle est possible : \begin{exemple} Les caractères accentués sont très utilisés en français. Il est donc absolument indispensable de connaître les commandes d'accentuation, sauf quand on peut taper les caractères accentués directement. \end{exemple} \section{Commandes et déclarations de changement de style} \label{section:style} \LaTeX\ permet de changer le style des caractères au moyen des commandes figurant dans le tableau \ref{tableau:style-commandes}. Le résultat des commandes de la première colonne est indiqué dans celle du milieu. Ces commandes prennent leur nom (pour les deux dernières lettres) de leur signification en anglais comme indiqué dans la dernière colonne. \begin{table}[!htbp] \centering \begin{tabular}{lll} \toprule \multicolumn{1}{c}{\textbf{Commande}} & \multicolumn{1}{c}{\textbf{Résultat}} & \multicolumn{1}{c}{\textbf{Signification}} \\ \midrule \commande{textup\{droit\}} & \textup{droit} & \textup{upright} \\ \commande{textit\{italique\}} & \textit{italique} & \textit{italic} \\ \commande{textsl\{incliné\}} & \textsl{incliné} & \textsl{slanted} \\ \commande{textsc\{petites capitales\}} & \textsc{petites capitales} & \textsc{small caps} \\ \commande{textmd\{maigre\}} & \textmd{maigre} & \textmd{medium} \\ \commande{textbf\{gras\}} & \textbf{gras} & \textbf{boldface} \\ \commande{textrm\{romain\}} & \textrm{romain} & \textrm{roman} \\ \commande{textsf\{linéal\}} & \textsf{linéal} & \textsf{sans serif} \\ \commande{texttt\{machine à écrire\}} & \texttt{machine à écrire} & \texttt{typewriter} \\ \bottomrule \end{tabular} \caption{Commandes de changement de style} \label{tableau:style-commandes} \index{textup@\commande{textup}} \index{textit@\commande{textit}} \index{textsl@\commande{textsl}} \index{textsc@\commande{textsc}} \index{textmd@\commande{textmd}} \index{textbf@\commande{textbf}} \index{textrm@\commande{textrm}} \index{textsf@\commande{textsf}} \index{texttt@\commande{texttt}} \end{table} Ces commandes modifient uniquement le style de leur argument, le texte qui suit n'est pas affecté : \begin{filecontents*}{\jobname.tmp} Je mets le mot suivant en \textit{italique}. Le reste du texte est normal. \end{filecontents*} \exempleresultat{\jobname.tmp} Il est possible d'imbriquer les commandes de changement de style : \begin{filecontents*}{\jobname.tmp} C'est bon le \textit{gloubi-\textbf{boulga}}. \end{filecontents*} \exempleresultat{\jobname.tmp} Attention néanmoins à ne abuser des changements de style, qui peuvent rapidement rendre le texte illisible : \begin{resultat} Une \textsf{telle} \textsc{composition} \texttt{est dite} \textit{lardée} ou \textbf{\textit{entre}\textsl{lardée}}. \end{resultat} Il existe également des \emph{déclarations}\index{déclaration} permettant d'effectuer les mêmes changements de style, comme indiqué dans le tableau \ref{tableau:style-declarations}. \begin{table}[!htbp] \centering \begin{tabular}{ll} \toprule \commande{textup} & \commande{upshape} \\ \commande{textit} & \commande{itshape} \\ \commande{textsl} & \commande{slshape} \\ \commande{textsc} & \commande{scshape} \\ \commande{textmd} & \commande{mdseries} \\ \commande{textbf} & \commande{bfseries} \\ \commande{textrm} & \commande{rmfamily} \\ \commande{textsf} & \commande{sffamily} \\ \commande{texttt} & \commande{ttfamily} \\ \bottomrule \end{tabular} \caption{Correspondance entre commandes et déclarations de changement de style} \label{tableau:style-declarations} \index{textup@\commande{textup}} \index{textit@\commande{textit}} \index{textsl@\commande{textsl}} \index{textsc@\commande{textsc}} \index{textmd@\commande{textmd}} \index{textbf@\commande{textbf}} \index{textrm@\commande{textrm}} \index{textsf@\commande{textsf}} \index{texttt@\commande{texttt}} \index{upshape@\commande{upshape}} \index{itshape@\commande{itshape}} \index{slshape@\commande{slshape}} \index{scshape@\commande{scshape}} \index{mdseries@\commande{mdseries}} \index{bfseries@\commande{bfseries}} \index{rmfamily@\commande{rmfamily}} \index{sffamily@\commande{sffamily}} \index{ttfamily@\commande{ttfamily}} \end{table} Une déclaration est une commande ne prenant pas d'argument et agissent sur le texte qui la suit. Afin de limiter la portée d'une déclaration, il faut utiliser des \emph{accolades de groupement}\index{accolades de groupement} : \begin{filecontents*}{\jobname.tmp} Je mets le mot suivant en {\itshape italique}. Le reste du texte est normal. \end{filecontents*} \exempleresultat{\jobname.tmp} Comme pour les commandes, on peut aussi imbriquer les déclarations de changement de style : \begin{filecontents*}{\jobname.tmp} C'est bon le {\itshape gloubi-{\bfseries boulga}}. \end{filecontents*} \exempleresultat{\jobname.tmp} Remarquez que toute espace suivant une déclaration est ignorée (comme les espaces suivant les commandes \commande{TeX} et \commande{LaTeX}). Il est recommandé, dans la mesure du possible, d'employer les commandes de changement de style plutôt que les déclarations équivalentes. Signalons aussi l'existence de la commande \commandeindex{emph}, qui sert à mettre en valeur son argument : \begin{filecontents*}{\jobname.tmp} Je mets \emph{cette expression} en valeur. \end{filecontents*} \exempleresultat{\jobname.tmp} On aborde ici l'un des aspects fondamentaux de la philosophie de \LaTeX, la distinction entre la structure du document et son rendu visuel. Comme vous pouvez le voir, la commande \commande{emph} met son argument en valeur en l'affichant en italique. Si ce manuel avait été imprimé sur une imprimante ne disposant pas du style italique, l'argument de \commande{emph} aurait été mis en valeur autrement. La commande \commande{emph} décrit donc non pas la façon dont il faut voir le texte, mais celle dont il faut le penser. Ce principe est la clé de voûte de la philosophie de \LaTeX. Imaginez que vous ayez à écrire un livre sur la botanique et que, dans ce livre, vous aimeriez que tous les noms latins des plantes soient en italique. Rien de plus simple, il suffit de les mettre en argument de \commande{textit}. Maintenant, alors que votre livre est terminé, votre éditeur vous demande de mettre les noms latins en gras plutôt qu'en italique, parce que cela correspond à sa charte graphique. Il vous faut donc remplacer tous les \commande{textit} par \commande{textbf} et encore, en faisant attention, car vous avez très bien pu utiliser l'italique pour autre chose que les noms latins. Bref, ce n'est pas très pratique... \LaTeX, conformément à sa philosophie, offre une solution élégante à ce problème. En effet, il est possible de définir ses propres commandes (pour le détail, reportez-vous au paragraphe \ref{section:newcommand}). Il vous suffit donc de définir une commande \commande{latin} qui affichera son argument, en l'occurence un nom latin, dans le style de votre choix. Si les noms latins doivent être en gras, il suffit alors de modifier la définition de la commande \commande{latin}, c'est tout. C'est pourquoi on n'utilise quasiment jamais les commandes de changement de style directement dans un document \LaTeX. On préfère plutôt définir un ensemble de commandes reflétant la logique du texte et les utiliser à la place. Ainsi, pour écrire ce manuel, des commandes spécifiques ont été définies : \begin{itemize} \item \commande{commande} permet d'écrire les noms de commandes en style machine à écrire ; \item \commande{classe} permet d'écrire les noms de classe en style linéal ; \item et ainsi de suite... \end{itemize} \section{Déclarations de changement de corps} \LaTeX\ dispose de déclarations (donc à utiliser avec des accolades de groupement) permettant de modifier le corps\index{corps} des caractères (voir le tableau \ref{tableau:corps}). \begin{table}[!htbp] \centering \begin{tabular}{ll@{\hspace{15mm}}ll} \toprule \commande{tiny} & \tiny corps & \commande{large} & \large corps \\ \commande{scriptsize} & \scriptsize corps & \commande{Large} & \Large corps \\ \commande{footnotesize} & \footnotesize corps & \commande{LARGE} & \LARGE corps \\ \commande{small} & \small corps & \commande{huge} & \huge corps \\ \commande{normalsize} & \normalsize corps & \commande{Huge} & \Huge corps \\ \bottomrule \end{tabular} \caption{Déclarations de changement de corps} \label{tableau:corps} \index{tiny@\commande{tiny}} \index{scriptsize@\commande{scriptsize}} \index{footnotesize@\commande{footnotesize}} \index{small@\commande{small}} \index{normalsize@\commande{normalsize}} \index{large@\commande{large}} \index{Large@\commande{Large}} \index{LARGE@\commande{LARGE}} \index{huge@\commande{huge}} \index{Huge@\commande{Huge}} \end{table} \begin{filecontents*}{\jobname.tmp} Je mets les mots suivants {\Large en gros}. La suite du texte est de taille normale. \end{filecontents*} \exempleresultat{\jobname.tmp} Ces déclarations ne sont normalement pas utilisées dans le fil du texte car le rendu visuel d'un changement de corps dans le texte est désagréable. On les réserve plutôt à la personnalisation de la page de titre ou à certains tableaux. \section{Commandes de mise en page} Quelques commandes plus ou moins utiles permettent de forcer la main à \LaTeX\ pour la mise en page du document. La commande \commandeindex{newline} permet de forcer un saut de ligne. La commande \boiboiindex\ est une abréviation pour \commande{newline} que l'on utilise plus souvent\footnote{Nous l'avons déjà rencontrée dans la section sur la page de titre.}. N'abusez pas de \commande{\textbackslash}. En particulier, cette commande ne sert pas à marquer la fin d'un paragraphe, une ligne blanche suffit. La commande \commandeindex{newpage} permet de commencer une nouvelle page. La commande \commandeindex{clearpage} est équivalente mais elle force l'impression des tableaux et figures flottants (voir le paragraphe \ref{section:table-figure}). Les commandes \commandeindex{bigskip}, \commandeindex{medskip} et \commandeindex{smallskip} insèrent un espace vertical plus ou moins grand. La taille de l'espace qu'elles génèrent est fonction de la fonte utilisée. Les commandes \commandeindex{hspace}\argument{taille} et \commandeindex{vspace}\argument{taille} insèrent un espace (horizontal pour \commande{hspace} et vertical pour \commande{vspace}) de taille \var{taille}. L'espace inséré par ces commandes est compressible, c'est-à-dire que \LaTeX\ pourra insérer moins d'espace que demandé s'il le juge nécessaire (souvent pour ses propres besoins de mise en page). Les formes étoilées \commandeindex{hspace*}\argument{taille} et \commandeindex{vspace*}\argument{taille} insèrent un espace incompressible, qui aura toujours la taille désirée. Les tailles peuvent être exprimées dans l'une des unités de mesure indiquées dans le tableau \ref{tableau:unites}. \begin{table}[!htbp] \centering \begin{tabulary}{\textwidth}{|c|J|} \hline \code{mm} & millimètre \\ \hline \code{cm} & centimètre \\ \hline \code{em} & \code{1em} est égal à la largeur de la lettre « M » dans la fonte courante \\ \hline \code{ex} & \code{1ex} est égal à la hauteur de la lettre « x » dans la fonte courante \\ \hline \code{in} & pouce (\anglais{inch} en anglais), \code{1in} = \code{2.54cm} \\ \hline \code{pt} & point pica, \code{1in} = \code{72.27pt} \\ \hline \code{pc} & pica, \code{1pc} = \code{12pt} \\ \hline \end{tabulary} \caption{Unités de mesure utilisées par \LaTeX} \label{tableau:unites} \index{mm@\code{mm} (unité de mesure)} \index{cm@\code{cm} (unité de mesure)} \index{em@\code{em} (unité de mesure)} \index{ex@\code{ex} (unité de mesure)} \index{in@\code{in} (unité de mesure)} \index{pt@\code{pt} (unité de mesure)} \index{pc@\code{pc} (unité de mesure)} \end{table} La commande \commande{hspace} est rarement utilisée, contrairement à la commande \commande{vspace} qui sert le plus souvent à laisser un espace dans un texte ou dans une figure. \section{Définir de nouvelles commandes} \label{section:newcommand} \index{commande!définir une nouvelle commande} Il est possible de définir ses propres commandes grâce à la commande \commandeindex{newcommand}: \begin{syntaxe} \commande{newcommand}\argument{\textup{\code{\textbackslash}}nom}\option{nombre d'arguments}\argument{définition} \end{syntaxe} Par la suite, toute occurence de \commande{nom} sera remplacée par \var{définition}, avec substitution des éventuels arguments. Les définitions de commandes peuvent se trouver dans le préambule (c'est là où on les place le plus souvent) ou dans le corps du document. Prenons un exemple simple, sans arguments : \begin{exemple} \newcommand{\ba}{babasse} \end{exemple} \newcommand{\ba}{babasse} Il est maintenant possible d'utiliser la commande \commande{ba}, qui imprimera donc « babasse » : \begin{filecontents*}{\jobname.tmp} C'est chouette la \ba\ ! \end{filecontents*} \exempleresultat{\jobname.tmp} Néanmoins, il est bien plus fréquent de définir des commandes qui prennent des arguments. Pour cela, on en précise le nombre dans le paramètre \var{nombre d'arguments} de la commande \commande{newcommand} et l'on y fait référence dans \var{définition} en utilisant \code{\#1}\index{#1@\code{\#1}} pour le premier argument, \code{\#2} pour le deuxième, etc. : \begin{exemple} \newcommand{\latin}[1]{\textit{#1}} \end{exemple} \newcommand{\latin}[1]{\textit{#1}} La commande \commande{latin} permet d'imprimer son argument en italique (comme nous en avons discuté au paragraphe \ref{section:style}) : \begin{filecontents*}{\jobname.tmp} \latin{carpe diem} \end{filecontents*} \exempleresultat{\jobname.tmp} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Les environnements de \LaTeX} \label{chapitre:environnements} Comme vu au chapitre précédent, les commandes aggissent généralement sur des arguments de taille limitée, de quelques mots à une phrase entière, tout au plus. Lorsqu'il s'agit de traiter des données plus volumineuses, on utilise des environnements. \section{Syntaxe d'un environnement} \index{environnement!syntaxe} Un \terme{environnement} est une partie du document délimitée par les commandes : \begin{syntaxe} \commandeindex{begin}\argument{environnement} \end{syntaxe} \noindent et : \begin{syntaxe} \commandeindex{end}\argument{environnement} \end{syntaxe} Tout comme les commandes, les environnements peuvent avoir des options et des arguments, auquel cas la commande de début d'environnement a la forme suivante : \begin{syntaxe} \commande{begin}\argument{environnement}\option{option}\argument{argument} \end{syntaxe} Comme les commandes, certains environnements ont une \emph{forme étoilée}\index{forme étoilée!environnement}\index{environnement!forme étoilée}, qui est une variante de l'environnement : \begin{syntaxe} \commande{begin}\code{\{}\var{environnement}\code{*\}} \ldots\ \commande{end}\code{\{}\var{environnement}\code{*\}} \end{syntaxe} Toute déclaration\index{déclaration} (changement de style ou de corps) effectuée à l'intérieur d'un environnement ne se propage pas à l'extérieur de cet environnement. Ainsi : \begin{filecontents*}{\jobname.tmp} \begin{quote} Je passe la suite du texte en \itshape italique. Blabla... \end{quote} Mais le texte est normal hors de l'environnement. \end{filecontents*} \exempleresultat{\jobname.tmp} Vous utilisez déjà l'environnement \environnement{document}, nous allons maintenant en découvrir d'autres. \section{L'environnement \environnement{em}} L'environnement \environnementindex{em} met son contenu dans le même style que la commande \commande{emph}. Cela permet de mettre en relief un ou plusieurs paragraphes : \begin{filecontents*}{\jobname.tmp} \begin{em} Le texte contenu dans cet environnement est mis en relief. \end{em} \end{filecontents*} \exempleresultat{\jobname.tmp} \section{Les environnements \environnement{quote} et \environnement{quotation}} Ces deux environnements ont un comportement voisin. Ils augmentent tous deux les marges gauche et droite du texte qu'ils contiennent. Leurs différences se situent au niveau de l'alinéa et de l'espacement des paragraphes : \begin{itemize} \item l'environnement \environnementindex{quotation} met un alinéa en début de paragraphe et espace les paragraphes normalement ; \item l'environnement \environnementindex{quote} ne met pas d'alinéa en début de paragraphe et espace les paragraphes davantage. \end{itemize} Ainsi, \begin{exemple} Ceci est un paragraphe de texte tout ce qu'il y a de plus normal, en dehors d'un quelconque environnement. \begin{quotation} Voici un exemple de texte sur deux paragraphes, afin de montrer le comportement des environnements de citation. Voici un exemple de texte sur deux paragraphes, afin de montrer le comportement des environnements de citation. \end{quotation} Ceci est un paragraphe de texte tout ce qu'il y a de plus normal, en dehors d'un quelconque environnement. \end{exemple} \begin{framed} Ceci est un paragraphe de texte tout ce qu'il y a de plus normal, en dehors d'un quelconque environnement. \begin{quotation} Voici un exemple de texte sur deux paragraphes, afin de montrer le comportement des environnements de citation. Voici un exemple de texte sur deux paragraphes, afin de montrer le comportement des environnements de citation. \end{quotation} Ceci est un paragraphe de texte tout ce qu'il y a de plus normal, en dehors d'un quelconque environnement. \end{framed} Alors que : \begin{exemple} Ceci est un paragraphe de texte tout ce qu'il y a de plus normal, en dehors d'un quelconque environnement. \begin{quote} Voici un exemple de texte sur deux paragraphes, afin de montrer le comportement des environnements de citation. Voici un exemple de texte sur deux paragraphes, afin de montrer le comportement des environnements de citation. \end{quote} Ceci est un paragraphe de texte tout ce qu'il y a de plus normal, en dehors d'un quelconque environnement. \end{exemple} \begin{framed} Ceci est un paragraphe de texte tout ce qu'il y a de plus normal, en dehors d'un quelconque environnement. \begin{quote} Voici un exemple de texte sur deux paragraphes, afin de montrer le comportement des environnements de citation. Voici un exemple de texte sur deux paragraphes, afin de montrer le comportement des environnements de citation. \end{quote} Ceci est un paragraphe de texte tout ce qu'il y a de plus normal, en dehors d'un quelconque environnement. \end{framed} \section{L'environnement \environnement{verse}} \LaTeX\ met l'environnement \environnementindex{verse} à la disposition des poètes : \begin{itemize} \item les marges sont augmentées comme avec l'environnement \environnement{quote} ; \item chaque vers doit être terminé par \boiboiindex\ pour passer au vers suivant, sauf le dernier de chaque strophe ; \item les strophes sont séparées par des lignes blanches. \end{itemize} Si \LaTeX\ avait existé à l'époque de Baudelaire : \begin{filecontents*}{\jobname.tmp} \begin{verse} Souvent, pour s'amuser, les hommes d'équipage \\ Prennent des albatros, vastes oiseaux des mers, \\ Qui suivent, indolents compagnons de voyage, \\ Le navire glissant sur les gouffres amers. À peine les ont-ils déposés sur les planches, \\ Que ces rois de l'azur, maladroits et honteux, \\ Laissent piteusement leurs grandes ailes blanches \\ Comme des avirons traîner à côté d'eux. Ce voyageur ailé, comme il est gauche et veule ! \\ Lui, naguère si beau, qu'il est comique et laid ! \\ L'un agace son bec avec un brûle-gueule, \\ L'autre mime, en boitant, l'infirme qui volait ! Le Poète est semblable au prince des nuées \\ Qui hante la tempête et se rit de l'archer ; \\ Exilé sur le sol au milieu des huées, \\ Ses ailes de géant l'empêchent de marcher. \end{verse} \end{filecontents*} \exempleresultat{\jobname.tmp} \section{Les environnements \environnement{center}, \environnement{flushleft} et \environnement{flushright}} Les environnements \environnementindex{center}, \environnementindex{flushleft} et \environnementindex{flushright} permettent respectivement de centrer du texte ou de ne l'aligner que d'un côté (par défaut, le texte est justifié). On peut forcer un retour à la ligne grâce à la commande \boiboiindex. \begin{filecontents*}{\jobname.tmp} \begin{center} Voici un paragraphe centré. \LaTeX\ se débrouille tout seul pour faire la mise en page et couper les lignes où il faut. Voici deux lignes \\ centrées. \end{center} \end{filecontents*} \exempleresultat{\jobname.tmp} \begin{filecontents*}{\jobname.tmp} \begin{flushleft} Voici un paragraphe aligné à gauche. \LaTeX\ se débrouille tout seul pour faire la mise en page et couper les lignes où il faut. Voici deux lignes \\ alignées à gauche. \end{flushleft} \end{filecontents*} \exempleresultat{\jobname.tmp} \begin{filecontents*}{\jobname.tmp} \begin{flushright} Voici un paragraphe aligné à droite. \LaTeX\ se débrouille tout seul pour faire la mise en page et couper les lignes où il faut. Voici deux lignes \\ alignées à droite. \end{flushright} \end{filecontents*} \exempleresultat{\jobname.tmp} \section{L'environnement \environnement{verbatim}} L'environnement \environnementindex{verbatim} est très simple : il ne fait rien ! Il se contente de mettre son contenu en style \texttt{machine à écrire}. Aucune interprétation des commandes et des caractères spéciaux n'est faite à l'intérieur de cet environnement. L'environnement \environnement{verbatim} est principalement utilisé pour imprimer des programmes ou du code \LaTeX\ tel quel. \begin{filecontents*}{\jobname.tmp} \begin{verbatim} Il ne se passe rien dans l'environnement verbatim. Les commandes \LaTeX\ et les caractères spéciaux ($&%#_{}~^\) ne sont pas interprétés. \end{verbatim} \end{filecontents*} \exempleresultat{\jobname.tmp} \section{Les listes : \environnement{itemize}, \environnement{enumerate} et \environnement{description}} Les listes sont très souvent employés par les utilisateurs de \LaTeX. Elles permettent : \begin{itemize} \item de structurer ses idées ; \item d'aérer le texte ; \item d'améliorer sa lisibilité. \end{itemize} La liste ci-dessus a été obtenue grâce à l'environnement \environnementindex{itemize} ainsi : \begin{exemple} \begin{itemize} \item de structurer ses idées ; \item d'aérer le texte ; \item d'améliorer sa lisibilité. \end{itemize} \end{exemple} Chaque élément de la liste doit commencer par la commande \commandeindex{item}, qui imprime un tiret. Les lignes blanches dans cet exemple (ainsi que dans ceux qui suivent) ne sont pas obligatoires mais elles rendent le source plus lisible en permettant de bien différencier les éléments, surtout lorsqu'ils sont nombreux et longs. On peut également, si on le souhaite, indenter les éléments pour mieux refléter la structure de l'environnement. L'environnement \environnementindex{enumerate} s'utilise comme l'environnement \environnement{itemize}, mais il numérote ses éléments : \begin{filecontents*}{\jobname.tmp} \begin{enumerate} \item premier élément ; \item deuxième élément ; \item troisième élément. \end{enumerate} \end{filecontents*} \exempleresultat{\jobname.tmp} L'environnement \environnementindex{description} permet de choisir soi-même le texte figurant au début de chaque élément de la liste au moyen de l'argument optionnel de la commande \commandeindex{item} : \begin{filecontents*}{\jobname.tmp} \begin{description} \item[itemize] pour faire des listes simples ; \item[enumerate] pour faire des listes numérotées ; \item[description] pour faire des listes dont chaque élément débute par le texte de son choix. \end{description} \end{filecontents*} \exempleresultat{\jobname.tmp} Remarquez que le texte de l'argument optionnel de \commande{item} a été automatiquement mis en gras. On peut évidemment imbriquer les listes : \begin{filecontents*}{\jobname.tmp} Il faut utiliser le plus possible les environnements de liste car : \begin{enumerate} \item ils sont simples à utiliser ; \item ils rendent le document plus clair : \begin{itemize} \item en l'aérant, \item en facilitant sa lecture ; \end{itemize} \item ils structurent les idées. \end{enumerate} \end{filecontents*} \exempleresultat{\jobname.tmp} Un dernier mot sur les usages français en matière de listes : \begin{itemize} \item Pour les listes simples (dont les éléments ne comportent qu'une phrase) chaque élément doit débuter par une minuscule et se terminer par un point-virgule, sauf le dernier, qui doit se terminer par un point. S'il y en a, les éléments des sous-listes doivent se terminer par une virgule, sauf le dernier qui doit se terminer par un point-virgule (c'est le cas dans l'exemple précédent). \item Pour les listes dont un élément contient au moins deux phrases, chaque élément doit débuter par une majuscule et se terminer par un point. \end{itemize} \section{L'environnement \environnement{tabbing}} L'environnement \environnementindex{tabbing} permet d'aligner du texte selon la position de \emph{tabulations}\index{tabulation} préalablement positionnées. Son utilisation est assez bizarre et peu pratique, aussi on lui préfère généralement l'environnement \environnement{tabular} (voir le paragraphe \ref{section:tabular}). Voici un exemple simple d'utilisation de l'environnement \environnement{tabbing} : \begin{filecontents*}{\jobname.tmp} \begin{tabbing} Troisième ligne \= le plus long \= le plus long \kill Première ligne \> court \> le plus long \\ Deuxième ligne \> moins court \> court \\ Troisième ligne \> le plus long \> moins court \end{tabbing} \end{filecontents*} \exempleresultat{\jobname.tmp} Tout ceci n'est pas très clair et mérite donc quelques explications : \begin{itemize} \item chaque tabulation est mise en place grâce à la commande \commande{=}\index{=@\commande{=} (environnement \environnement{tabbing})} ; \item on se place sur la prochaine tabulation grâce à la commande \commande{>}\index{>@\commande{>} (environnement \environnement{tabbing})} ; \item la commande \commandeindex{kill} permet de ne pas imprimer la ligne sur laquelle elle se trouve ; \item chaque ligne (sauf la dernière et celles se terminant par \commande{kill}) doit se terminer par \boiboiindex. \end{itemize} Dans notre exemple, on a placé les tabulations par rapport aux éléments de chaque colonne qui semblent les plus longs (dans la première ligne qui n'a pas été imprimée à cause de la commande \commande{kill}). L'alignement vertical des commandes \commande{=} et \commande{>} n'est pas nécessaire mais permet de se rapprocher de ce qui sera imprimé au final et de mieux appréhender le positionnement des tabulations. Par malchance, le mot « Deuxième », quand il est imprimé, est légèrement plus long que le mot « Troisième », bien qu'il comporte moins de lettres. Il en est de même pour « moins court » et « plus long ». Le placement des tabulations n'est donc pas aussi simple qu'on pourrait le penser et nécessite une vérification systématique sur le document final. Il peut aussi varier en fonction de la fonte utilisée. On peut redéfinir la position et le nombre des tabulations au milieu de l'environnement, si nécessaire : \begin{filecontents*}{\jobname.tmp} \begin{tabbing} ça c'est long \= ça c'est long \= ça c'est long \\ court \> court \> court \\ ça c'est vraiment long \= moins long \\ tout petit \> court \end{tabbing} \end{filecontents*} \exempleresultat{\jobname.tmp} Il existe d'autres commandes permettant de manipuler les tabulations, mais qui présentent peu d'intérêt. Pour plus d'informations sur l'environnement \environnement{tabbing}, reportez vous à \cite[pages 60--62 et 201--203]{latex-a-document-preparation-system}. \section{Les tableaux : l'environnement \environnement{tabular}} \label{section:tabular} \index{tableau} L'environnement \environnementindex{tabular} est de loin l'environnement le plus puissant de \LaTeX. Avec lui, il est possible de réaliser tous les tableaux possibles et imaginables (ou presque). Commençons par un exemple simple : \begin{filecontents*}{\jobname.tmp} \begin{tabular}{lcr} Sparc & SunOS & 4.1.4 \\ HP & HP-UX & 10.20 \\ PC & NetBSD & 1.2.1 \end{tabular} \end{filecontents*} \exempleresultat{\jobname.tmp} On a donné à l'environnement \environnement{tabular} un argument contenant trois lettres. Cela signifie que le tableau comporte trois colonnes. Détaillons cet argument : \begin{description} \item[\code{l} (\anglais{left})]\index{l@\code{l} (environnement \environnement{tabular})} indique que la première colonne sera alignée à gauche ; \item[\code{c} (\anglais{center})]\index{c@\code{c} (environnement \environnement{tabular})} indique que la deuxième colonne sera centrée ; \item[\code{r} (\anglais{right})]\index{r@\code{r} (environnement \environnement{tabular})} indique que la troisième colonne sera alignée à droite. \end{description} À l'intérieur de l'environnement \environnement{tabular}, les lignes sont terminées par \boiboiindex\ (sauf la dernière) et les colonnes sont séparées par \code{\&}\index{&@\code{\&} (environnement \environnement{tabular}}. Remarquez que les \code{\&} sont placés les uns en dessous des autres, pour améliorer la lisibilité du tableau dans le source. De même les colonnes ont été alignées comme elles doivent être imprimées. Voyons maintenant le même tableau en matérialisant les séparations entres lignes et colonnes : \begin{filecontents*}{\jobname.tmp} \begin{tabular}{|l|c|r|} \hline Sparc & SunOS & 4.1.4 \\ \hline HP & HP-UX & 10.20 \\ \hline PC & NetBSD & 1.2.1 \\ \hline \end{tabular} \end{filecontents*} \exempleresultat{\jobname.tmp} \begin{itemize} \item les lignes verticales sont obtenues en plaçant des \code{|}%\index{"|@\code{"|} (environnement \environnement{tabular})} entre les lettres définissant l'alignement des colonnes dans l'argument de l'environnement \environnement{tabular} (ces lignes s'étendent sur toute la hauteur du tableau) ; \item les lignes horizontales sont obtenues par la commande \commandeindex{hline}, placée entre chaque ligne du tableau (sans \commande{\textbackslash} après). \end{itemize} Encore un tableau : \begin{filecontents*}{\jobname.tmp} \begin{tabular}{|p{5cm}|*{2}{c|}} \hline & Contenance & Quantité \\ \hline \bfseries Blanche de Bruges & 33 cl & 10 \\ \hline \bfseries Guinness & 1 pint & 5 \\ \hline \bfseries Kronenbourg & 33 cl & 0 \\ \hline \end{tabular} \end{filecontents*} \exempleresultat{\jobname.tmp} On découvre deux nouveaux arguments de l'environnement \environnement{tabular} : \begin{description} \item[\code{p}\argument{taille}]\index{p@\code{p} (environnement \environnement{tabular})} qui déclare une colonne de taille \var{taille} (le contenu de la colonne est aligné à gauche) ; \item[\code{*}\argument{nombre}\argument{format}]\index{*@\code{*} (environnement \environnement{tabular})} qui est équivalent à \var{nombre} fois la déclaration \var{format} (ici, \code{c|c|}), ce qui peut être utile pour simplifier la définition du format des grands tableaux. \end{description} Vous remarquerez qu'on peut laisser une case vide et qu'une déclaration de changement de style (ou de corps) dans une case n'affecte pas les autres cases. Modifions quelque peu le tableau précédent : \begin{filecontents*}{\jobname.tmp} \begin{tabular}{|p{5cm}|*{2}{c|}} \cline{2-3} \multicolumn{1}{c|}{} & \multicolumn{2}{c|}{Commande} \\ \cline{2-3} \multicolumn{1}{c|}{} & Contenance & Quantité \\ \hline \bfseries Blanche de Bruges & 33 cl & 10 \\ \hline \bfseries Guinness & 1 pint & 5 \\ \hline \bfseries Kronenbourg & 33 cl & 0 \\ \hline \end{tabular} \end{filecontents*} \exempleresultat{\jobname.tmp} La commande : \begin{syntaxe} \commandeindex{cline}\code{\{}\var{i}\code{-}\var{j}\code{\}} \end{syntaxe} \noindent trace une ligne horizontale entre les colonnes \var{i} et \var{j} du tableau. Il est possible de modifier localement le format du tableau grâce à la commande: \begin{syntaxe} \commandeindex{multicolumn}\argument{nombre}\argument{format}\argument{texte} \end{syntaxe} \noindent qui remplace \var{nombre} colonnes du tableau par \var{texte} conformément à \var{format}. Cette commande est généralement utilisée pour étendre un élément du tableau sur plusieurs colonnes (c'est le cas pour la case « Commande »), pour modifier l'alignement d'une case ou pour supprimer certains filets verticaux (c'est le cas pour les deux cases vides de gauche). Pour approfondir vos connaissances sur l'environnement \environnement{tabular}, vous pouvez consulter \cite[pages 62--63 et 204--207]{latex-a-document-preparation-system} et \cite[chapitre 5]{the-latex-companion}. \section{Les environnements \environnement{table} et \environnement{figure}} \label{section:table-figure} \index{tableau} \index{figure} Les environnements \environnementindex{table} et \environnementindex{figure} ne sont que des cadres, permettant de faire \emph{flotter} (c'est-à-dire de déplacer si nécessaire pour la mise en page) tableaux et figures, de leur donner un titre et de les numéroter. Il est important de pouvoir faire flotter les tableaux et les figures car \LaTeX\ ne les coupe jamais en bas de page et il est donc possible que l'un d'eux dépasse de la marge inférieure de la page où il se trouve, voire de la page elle-même, ce qui n'est pas du meilleur effet. Voici un exemple type d'utilisation de l'environnement \environnement{table} (l'environnement \environnement{figure} s'utilise exactement de la même façon) : \begin{exemple} \begin{table}[!htbp] \centering \begin{tabular}{|l|l|} \hline table & figure \\ \hline tableaux & dessins \\ \hline \end{tabular} \caption{Exemple d'environnement \environnement{table}} \label{tableau:exemple} \end{table} \end{exemple} \begin{table}[!htbp] \centering \begin{tabular}{|l|l|} \hline table & figure \\ \hline tableaux & dessins \\ \hline \end{tabular} \caption{Exemple d'environnement \environnement{table}} \label{tableau:exemple} \end{table} Les arguments optionnels de l'environnement \environnement{table} sont importants et déterminent l'ordre de préférence du placement du tableau : \begin{description} \item[\code{!}]\index{"!@\code{"!} (environnements \environnement{table} et \environnement{figure})} demande à \LaTeX\ de faire tout son possible pour respecter l'ordre indiqué ensuite ; \item[\code{h} (\anglais{here})]\index{h@\code{h} (environnements \environnement{table} et \environnement{figure})} ici, si possible ; \item[\code{t} (\anglais{top})]\index{t@\code{t} (environnements \environnement{table} et \environnement{figure})} en haut d'une page (celle-ci ou la suivante) ; \item[\code{b} (\anglais{bottom})]\index{b@\code{b} (environnements \environnement{table} et \environnement{figure})} en bas d'une page (celle-ci ou la suivante) ; \item[\code{p} (\anglais{page of floats})]\index{p@\code{p} (environnements \environnement{table} et \environnement{figure})} sur une page spéciale ne contenant pas de texte mais uniquement des tableaux et des figures. \end{description} L'ordre de préférence par défaut est \code{[tbp]}, c'est pourquoi il est préférable de préciser \code{[!htbp]} si l'on veut que le tableau soit placé, dans la mesure du possible, conformément à sa position dans le document. La commande \commandeindex{centering} a été utilisée pour centrer le tableau. Elle est préférable à l'environnement \environnement{center} dans ce cas parce que celui-ci introduit une marge trop importante entre le tableau et sa légende. Par ailleurs : \begin{itemize} \item la commande \commandeindex{caption} permet de donner une légende au tableau ou à la figure ; \item la commande \commandeindex{label}, qui doit obligatoirement être placée après la commande \commande{caption}, permet de lui faire référence grâce aux commandes \commandeindex{ref} ou \commandeindex{pageref}. \end{itemize} Enfin, vous pouvez faire figurer dans votre document la liste des tableaux au moyen de la commande \commandeindex{listoftables} et la liste des figures au moyen de la commande \commandeindex{listoffigures}. Pour que ces listes soient à jour, il faut effectuer deux compilations successives (mettant en jeu les fichiers \path{.lot}\index{lot@\path{.lot}}\footnote{\path{.lot} pour \anglais{list of tables}.} et \path{.lof}\index{lof@\path{.lof}}\footnote{\path{.lof} pour \anglais{list of figures}.}). \section{Personnaliser la page de titre : l'environnement \environnementindex{titlepage}} \label{section:titlepage} \index{page de titre} La commande \commandeindex{maketitle} génère une page de titre plutôt minimale. Il est regrettable qu'un logiciel de la qualité de \LaTeX\ doive se contenter de pages de titre aussi sobres. Heureusement, il est possible de personnaliser la page de titre grâce à l'environnement \environnement{titlepage}. À l'intérieur de cet environnement, vous êtes totalement maître de la mise en page. Généralement, on y utilise : \begin{itemize} \item l'environnement \environnement{center}, pour centrer le texte ; \item les commandes de changement de taille (\commande{large}, etc.), pour obtenir un gros titre ; \item les commandes d'espacement \commande{vspace} et \commande{hspace} pour aérer le texte ; \item la commande \commande{includegraphics} (voir le paragraphe \ref{section:includegraphics}) pour inclure une image. \end{itemize} Seule contrainte, l'environnement \environnement{titlepage} doit se trouver juste après la commande \commande{begin\{document\}}. De nombreux exemples de pages de titre figurent dans \cite{some-examples-of-title-pages}. \section{Définir de nouveaux environnements} \index{environnement!définir un nouvel environnement} Il est possible de définir ses propres environnements grâce à la commande \commandeindex{newenvironment} : \begin{syntaxe} \commande{newenvironment}\argument{nom}\option{nombre d'arguments}\argument{définition de début}\argument{définition de fin} \end{syntaxe} Les définitions d'environnements peuvent se trouver dans le préambule (c'est là où on les place le plus souvent) ou dans le corps du document. Lorsque \LaTeX\ rencontrera \commande{begin\{nom\}}, il le remplacera par \var{définition de début} et lorsqu'il rencontrera \commande{end\{nom\}}, il le remplacera par \var{définition de fin} : \begin{exemple} \newenvironment{italitemize} {\begin{itemize} \itshape} {\end{itemize}} \end{exemple} \newenvironment{italitemize} {\begin{itemize} \itshape} {\end{itemize}} Ici, la définition du nouvel environnement a été répartie sur trois lignes pour la rendre plus lisible. Il s'utilise ensuite ainsi : \begin{filecontents*}{\jobname.tmp} \begin{italitemize} \item mais oui, \item ça marche ! \end{italitemize} \end{filecontents*} \exempleresultat{\jobname.tmp} Généralement, les nouveaux environnements sont créés à partir d'environnements existants (c'est le cas ici). Il est possible de créer des environnements qui prennent des arguments. Pour cela, on en précise le nombre dans le paramètre \var{nombre d'arguments} de la commande \commande{newenvironnement} et l'on y fait référence dans \var{définition de début} en utilisant \code{\#1}\index{#1@\code{\#1}} pour le premier argument, \code{\#2} pour le deuxième, etc. : \begin{filecontents*}{\jobname.tmp} \newenvironment{tab}[1] {\begin{tabular}{|#1|}\hline} {\hline\end{tabular}} \begin{tab}{cc} essai & de \\ l'environnement & tab \\ \end{tab} \end{filecontents*} \exempleresultat{\jobname.tmp} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{\LaTeX\ mathématique} \label{chapitre:mathematique} L'un des atouts de \LaTeX\ est certainement la facilité avec laquelle il permet de réaliser les textes scientifiques les plus complexes. Son mode mathématique standard convient à la plupart des besoins. Pour aller plus loin, il peut s'avérer nécessaire d'utiliser des extensions spécialisées, en particulier l'extension \extensionindex{amsmath} (voir \cite[chapitre 8]{the-latex-companion}). Il existe également de nombreuses extensions pour représenter des molécules, des diagrammes utilisés en physique des particules, des circuits électriques, etc. (voir \cite[chapitre 8]{the-latex-graphics-companion}). Les règles typographiques d'écriture des mathématiques sont, pour la plupart, respectées automatiquement par \LaTeX. Il n'est cependant pas inutile de se reporter à \cite[pages 107 à 116]{lexique-des-regles-typographiques} pour en prendre connaissance. Les règles qui demandent une attention particulière seront indiquées au paragraphe \ref{section:math-typo}. \section{Les modes mathématiques} \LaTeX\ fournit un très grand nombre de symboles d'opérateurs et de relations et sait comment les disposer. Mais il faut pouvoir lui indiquer que l'on va composer une formule mathématique. Pour cela, \LaTeX\ dispose de deux modes mathématiques : \begin{itemize} \item l'un est utilisé pour les formules devant apparaître dans le corps du texte, on y rentre grâce à l'environnement \environnementindex{math} ; \item l'autre est utilisé pour les formules que l'on désire voir apparaître seules sur une ligne, on y rentre grâce à l'environnement \environnementindex{displaymath}. \end{itemize} \subsection{L'environnement \environnement{math}} L'environnement \environnementindex{math} permet de composer des formules mathématiques dans le corps du texte : \begin{filecontents*}{\jobname.tmp} Considérons l'équation \begin{math} x + y + z = n \end{math}. \end{filecontents*} \exempleresultat{\jobname.tmp} Si vous faites grand usage de formules mathématiques, la structure d'environnement s'avère lourde et diminue la lisibilité du texte source. C'est pourquoi il existe deux formes plus simples, \commande{(}\index{(@\commande{(} (environnement \environnement{math})} \ldots\ \commande{)}\index{)@\commande{)} (environnement \environnement{math})} et \code{\$}\index{$@\code{\$} (environnement \environnement{math})} \ldots\ \code{\$}. L'exemple précédent peut donc s'écrire plus simplement : %stopzone \begin{exemple} Considérons l'équation \( x + y + z = n \). \end{exemple} \noindent ou : \begin{exemple} Considérons l'équation $ x + y + z = n $. \end{exemple} On utilise généralement la forme \code{\$} \ldots\ \code{\$}, qui est la plus simple. Remarquez que l'espacement n'a aucune importance en mode mathématique. Ainsi, \code{\$ x + y + z = n \$} produira le même résultat que \code{\$x+y+z=n\$}. \subsection{L'environnement \environnement{displaymath}} L'environnement \environnementindex{displaymath} permet de composer des formules mathématiques seules sur une ligne : \begin{filecontents*}{\jobname.tmp} Ce qui conduit à : \begin{displaymath} x + y + z = n \end{displaymath} \end{filecontents*} \exempleresultat{\jobname.tmp} Comme pour l'environnement \environnement{math}, il existe une forme plus simple, \commande{[}\index{[@\commande{[} (environnement \environnement{displaymath})} \ldots\ \commande{]}\index{]@\commande{]} (environnement \environnement{displaymath})}. On aurait donc pu écrire : \begin{exemple} Ce qui conduit à : \[ x + y + z = n \] \end{exemple} \begin{attention} ne laissez surtout pas de ligne blanche à l'intérieur de l'environnement \environnement{displaymath}, cela provoquerait une erreur. \end{attention} Par défaut, l'environnement \environnement{displaymath} centre les formules. Si vous préférez qu'elles soient alignées à gauche, vous pouvez utiliser l'option de classe \classeoptionindex{fleqn}. \section{Structures couramment utilisées en mathématiques} \subsection{Indices et exposants} \index{indice} \index{exposant} En mathématiques, on rencontre les indices et les exposants un peu partout. Un indice s'obtient grâce au caractère \code{\_}\index{_@\code{\_} (indice)} et un exposant s'obtient grâce à \code{\textasciicircum}\index{^@\code{\textasciicircum} (exposant)} : \begin{filecontents*}{\jobname.tmp} $ x^2 + y^2 = 1 $, $ x_1 = x_2 $, $ x_1^2 = x^2_1 $ \end{filecontents*} \exempleresultat{\jobname.tmp} Si l'indice ou l'exposant contient plus d'un caractère, il faut utiliser des accolades de groupement\index{accolades de groupement} : \begin{filecontents*}{\jobname.tmp} $ x^{2y} = z $, $ a_{ij} = 0 $, $ x^{y^z} = a $ \end{filecontents*} \exempleresultat{\jobname.tmp} De même, on peut utiliser des accolades pour indiquer ce à quoi s'applique l'indice ou l'exposant : \begin{filecontents*}{\jobname.tmp} Voyez-vous une différence entre $ (x^2 + y^2)^n $ et $ {(x^2 + y^2)}^n $ ? \end{filecontents*} \exempleresultat{\jobname.tmp} Dans le premier cas, l'exposant s'applique simplement au caractère qui le précède (la parenthèse), il est donc à la même hauteur que les carrés. Mais dans le second cas, à cause des accolades, l'exposant $n$ s'applique à toute l'expression $(x^2 + y^2)$ et est donc placé un peu plus haut, puisque cette expression comporte déjà un niveau d'exposant. Il n'y a pas vraiment de différence mathématique entre les deux formes mais la seconde est typographiquement plus précise. \subsection{Texte à l'intérieur d'une formule} Il peut être utile de mettre quelques mots dans une formule. Mais pour cela il faut ramener \LaTeX\ du mode mathématique au mode texte. Ceci est possible grâce à la commande \commandeindex{mbox} : \begin{filecontents*}{\jobname.tmp} \[ f(x) > 1 \mbox{ si } x < 3 \] \end{filecontents*} \exempleresultat{\jobname.tmp} Remarquez les espaces autour du « si » dans la commande \commande{mbox}. Ils sont nécessaires parce que l'espacement mathématique de \LaTeX\ n'a rien à voir avec son espacement en mode texte. Si l'on avait omis ces espaces, le résultat aurait été le suivant : \begin{filecontents*}{\jobname.tmp} \[ f(x) > 1 \mbox{si} x < 3 \] \end{filecontents*} \exempleresultat{\jobname.tmp} Bien entendu, la commande \commande{mbox} est inutile avec l'environnement \environnement{math} : \begin{filecontents*}{\jobname.tmp} Et donc $ f(x) > 1 $ si $ x < 3 $. \end{filecontents*} \exempleresultat{\jobname.tmp} \section{Lettres, symboles et accents} Il est souvent fait usage, dans les formules mathématiques, de lettres grecques, de divers symboles ou d'accents. \LaTeX\ dispose de nombreuses commandes permettant de les imprimer. L'utilisation de certains symboles nécessite le chargement de l'extension \extensionindex{latexsym}. Il sera indiqué par la suite où cette extension est nécessaire. \subsection{Lettres grecques} \index{grec} Les commandes permettant d'obtenir les lettres grecques sont présentées dans le tableau \ref{tableau:grec}. \begin{table}[!htbp] \centering \begin{tabular}{>{$}l<{$}l*{3}{@{\hspace{6mm}}>{$}l<{$}l}} \toprule \multicolumn{8}{c}{Minuscules} \\ \midrule \alpha & \commande{alpha} & \theta & \commande{theta} & \pi & \commande{pi} & \phi & \commande{phi} \\ \beta & \commande{beta} & \vartheta & \commande{vartheta} & \varpi & \commande{varpi} & \varphi & \commande{varphi} \\ \gamma & \commande{gamma} & \iota & \commande{iota} & \rho & \commande{rho} & \chi & \commande{chi} \\ \delta & \commande{delta} & \kappa & \commande{kappa} & \varrho & \commande{varrho} & \psi & \commande{psi} \\ \epsilon & \commande{epsilon} & \lambda & \commande{lambda} & \sigma & \commande{sigma} & \omega & \commande{omega} \\ \varepsilon & \commande{varepsilon} & \mu & \commande{mu} & \varsigma & \commande{varsigma} & & \\ \zeta & \commande{zeta} & \nu & \commande{nu} & \tau & \commande{tau} & & \\ \eta & \commande{eta} & \xi & \commande{xi} & \upsilon & \commande{upsilon} & & \\ \bottomrule \multicolumn{8}{c}{ } \\ \toprule \multicolumn{8}{c}{Majuscules} \\ \midrule \Gamma & \commande{Gamma} & \Lambda & \commande{Lambda} & \Sigma & \commande{Sigma} & \Psi & \commande{Psi} \\ \Delta & \commande{Delta} & \Xi & \commande{Xi} & \Upsilon & \commande{Upsilon} & \Omega & \commande{Omega} \\ \Theta & \commande{Theta} & \Pi & \commande{Pi} & \Phi & \commande{Phi} & & \\ \bottomrule \end{tabular} \caption{Lettres grecques} \label{tableau:grec} \index{alpha@\commande{alpha} ($\alpha$)} \index{beta@\commande{beta} ($\beta$)} \index{gamma@\commande{gamma} ($\gamma$)} \index{delta@\commande{delta} ($\delta$)} \index{epsilon@\commande{epsilon} ($\epsilon$)} \index{varepsilon@\commande{varepsilon} ($\varepsilon$)} \index{zeta@\commande{zeta} ($\zeta$)} \index{eta@\commande{eta} ($\eta$)} \index{theta@\commande{theta} ($\theta$)} \index{vartheta@\commande{vartheta} ($\vartheta$)} \index{iota@\commande{iota} ($\iota$)} \index{kappa@\commande{kappa} ($\kappa$)} \index{lamdba@\commande{lambda} ($\lambda$)} \index{mu@\commande{mu} ($\mu$)} \index{nu@\commande{nu} ($\nu$)} \index{xi@\commande{xi} ($\xi$)} \index{pi@\commande{pi} ($\pi$)} \index{varpi@\commande{varpi} ($\varpi$)} \index{rho@\commande{rho} ($\rho$)} \index{varrho@\commande{varrho} ($\varrho$)} \index{sigma@\commande{sigma} ($\sigma$)} \index{varsigma@\commande{varsigma} ($\varsigma$)} \index{tau@\commande{tau} ($\tau$)} \index{upsilon@\commande{upsilon} ($\upsilon$)} \index{phi@\commande{phi} ($\phi$)} \index{varphi@\commande{varphi} ($\varphi$)} \index{chi@\commande{chi} ($\chi$)} \index{psi@\commande{psi} ($\psi$)} \index{omega@\commande{omega} ($\omega$)} \index{Gamma@\commande{Gamma} ($\Gamma$)} \index{Delta@\commande{Delta} ($\Delta$)} \index{Theta@\commande{Theta} ($\Theta$)} \index{Lambda@\commande{Lambda} ($\Lambda$)} \index{Xi@\commande{Xi} ($\Xi$)} \index{Pi@\commande{Pi} ($\Pi$)} \index{Sigma@\commande{Sigma} ($\Sigma$)} \index{Upsilon@\commande{Upsilon} ($\Upsilon$)} \index{Phi@\commande{Phi} ($\Phi$)} \index{Psi@\commande{Psi} ($\Psi$)} \index{Omega@\commande{Omega} ($\Omega$)} \end{table} Les lettres grecques minuscules sont obtenues par un \code{\textbackslash} suivi du nom de la lettre. Pour les majuscules, il suffit de mettre la première lettre du nom en majuscule. Il n'existe pas de commandes permettant d'obtenir les lettres grecques majuscules qui ont une graphie identique dans notre alphabet. Par exemple, pour obtenir un alpha majuscule, utilisez simplement \code{\$A\$}. Pour la même raison, il n'existe pas de commandes permettant d'obtenir la lettre omicron\index{omicron@omicron ($o$, $O$)}, il suffit d'utiliser \code{\$o\$} ou \code{\$O\$}. Pour certaines lettres minuscules, il existe une deuxième forme dont la commande commence par \code{var}. En particulier, \commande{varepsilon} et \commande{varphi} sont à préférer à \commande{epsilon} et \commande{phi}. Notez que ces commandes (ainsi que toutes celles qui sont présentées dans ce chapitre) ne sont disponibles qu'en mode mathématique : \begin{filecontents*}{\jobname.tmp} $\pi$ vaut approximativement 3,1416. \end{filecontents*} \exempleresultat{\jobname.tmp} \subsection{Symboles d'opérateurs binaires} \index{symboles mathématiques!opérateurs binaires} Les commandes présentées dans le tableau \ref{tableau:operateurs} permettent d'obtenir des symboles d'opérateurs binaires. \begin{table}[!htbp] \centering \begin{threeparttable} \begin{tabular}{>{$}l<{$}l*{3}{@{\hspace{3mm}}>{$}l<{$}l}} \toprule \pm & \commande{pm} & \cap & \commande{cap} & \diamond & \commande{diamond} & \oplus & \commande{oplus} \\ \mp & \commande{mp} & \cup & \commande{cup} & \bigtriangleup & \commande{bigtriangleup} & \ominus & \commande{ominus} \\ \times & \commande{times} & \uplus & \commande{uplus} & \bigtriangledown & \commande{bigtriangledown} & \otimes & \commande{otimes} \\ \div & \commande{div} & \sqcap & \commande{sqcap} & \triangleleft & \commande{triangleleft} & \oslash & \commande{oslash} \\ \ast & \commande{ast} & \sqcup & \commande{sqcup} & \triangleright & \commande{triangleright} & \odot & \commande{odot} \\ \star & \commande{star} & \vee & \commande{vee} & \lhd & \commande{lhd} \tnote{a} & \bigcirc & \commande{bigcirc} \\ \circ & \commande{circ} & \wedge & \commande{wedge} & \rhd & \commande{rhd} \tnote{a} & \dagger & \commande{dagger} \\ \bullet & \commande{bullet} & \setminus & \commande{setminus} & \unlhd & \commande{unlhd} \tnote{a} & \ddagger & \commande{ddagger} \\ \cdot & \commande{cdot} & \wr & \commande{wr} & \unrhd & \commande{unrhd} \tnote{a} & \amalg & \commande{amalg} \\ \bottomrule \end{tabular} \begin{tablenotes} \item[a] Requiert l'extension \extensionindex{latexsym}. \end{tablenotes} \end{threeparttable} \caption{Symboles d'opérateurs binaires} \label{tableau:operateurs} \index{pm@\commande{pm} ($\pm$)} \index{mp@\commande{mp} ($\mp$)} \index{times@\commande{times} ($\times$)} \index{div@\commande{div} ($\div$)} \index{ast@\commande{ast} ($\ast$)} \index{star@\commande{star} ($\star$)} \index{circ@\commande{circ} ($\circ$)} \index{bullet@\commande{bullet} ($\bullet$)} \index{cdot@\commande{cdot} ($\cdot$)} \index{cap@\commande{cap} ($\cap$)} \index{cup@\commande{cup} ($\cup$)} \index{uplus@\commande{uplus} ($\uplus$)} \index{sqcap@\commande{sqcap} ($\sqcap$)} \index{sqcup@\commande{sqcup} ($\sqcup$)} \index{vee@\commande{vee} ($\vee$)} \index{wedge@\commande{wedge} ($\wedge$)} \index{setminus@\commande{setminus} ($\setminus$)} \index{wr@\commande{wr} ($\wr$)} \index{diamond@\commande{diamond} ($\diamond$)} \index{bigtriangleup@\commande{bigtriangleup} ($\bigtriangleup$)} \index{bigtriangledown@\commande{bigtriangledown} ($\bigtriangledown$)} \index{triangleleft@\commande{triangleleft} ($\triangleleft$)} \index{triangleright@\commande{triangleright} ($\triangleright$)} \index{lhd@\commande{lhd} ($\lhd$)} \index{rhd@\commande{rhd} ($\rhd$)} \index{unlhd@\commande{unlhd} ($\unlhd$)} \index{unrhd@\commande{unrhd} ($\unrhd$)} \index{oplus@\commande{oplus} ($\oplus$)} \index{ominus@\commande{ominus} ($\ominus$)} \index{otimes@\commande{otimes} ($\otimes$)} \index{oslash@\commande{oslash} ($\oslash$)} \index{odot@\commande{odot} ($\odot$)} \index{bigcirc@\commande{bigcirc} ($\bigcirc$)} \index{dagger@\commande{dagger} ($\dagger$)} \index{ddagger@\commande{ddagger} ($\ddagger$)} \index{amalg@\commande{amalg} ($\amalg$)} \end{table} \subsection{Symboles de relations binaires} \index{symboles mathématiques!relations binaires} Les commandes présentées dans le tableau \ref{tableau:relations} permettent d'obtenir des symboles de relations binaires. \begin{table}[!htbp] \centering \begin{threeparttable} \begin{tabular}{>{$}l<{$}l*{3}{@{\hspace{4mm}}>{$}l<{$}l}} \toprule \leq & \commande{leq} & \geq & \commande{geq} & \equiv & \commande{equiv} & \models & \commande{models} \\ \prec & \commande{prec} & \succ & \commande{succ} & \sim & \commande{sim} & \perp & \commande{perp} \\ \preceq & \commande{preceq} & \succeq & \commande{succeq} & \simeq & \commande{simeq} & \mid & \commande{mid} \\ \ll & \commande{ll} & \gg & \commande{gg} & \asymp & \commande{asymp} & \parallel & \commande{parallel} \\ \subset & \commande{subset} & \supset & \commande{supset} & \approx & \commande{approx} & \bowtie & \commande{bowtie} \\ \subseteq & \commande{subseteq} & \supseteq & \commande{supseteq} & \cong & \commande{cong} & \Join & \commande{Join} \tnote{a} \\ \sqsubset & \commande{sqsubset} \tnote{a} & \sqsupset & \commande{sqsupset} \tnote{a} & \neq & \commande{neq} & \smile & \commande{smile} \\ \sqsubseteq & \commande{sqsubseteq} & \sqsupseteq & \commande{sqsupseteq} & \doteq & \commande{doteq} & \frown & \commande{frown} \\ \in & \commande{in} & \ni & \commande{ni} & \propto & \commande{propto} & & \\ \vdash & \commande{vdash} & \dashv & \commande{dashv} & & & & \\ \bottomrule \end{tabular} \begin{tablenotes} \item[a] Requiert l'extension \extensionindex{latexsym}. \end{tablenotes} \end{threeparttable} \caption{Symboles de relations binaires} \label{tableau:relations} \index{leq@\commande{leq} ($\leq$)} \index{prec@\commande{prec} ($\prec$)} \index{preceq@\commande{preceq} ($\preceq$)} \index{ll@\commande{ll} ($\ll$)} \index{subset@\commande{subset} ($\subset$)} \index{subseteq@\commande{subseteq} ($\subseteq$)} \index{sqsubset@\commande{sqsubset} ($\sqsubset$)} \index{sqsubseteq@\commande{sqsubseteq} ($\sqsubseteq$)} \index{in@\commande{in} ($\in$)} \index{vdash@\commande{vdash} ($\vdash$)} \index{geq@\commande{geq} ($\geq$)} \index{succ@\commande{succ} ($\succ$)} \index{succeq@\commande{succeq} ($\succeq$)} \index{gg@\commande{gg} ($\gg$)} \index{supset@\commande{supset} ($\supset$)} \index{supseteq@\commande{supseteq} ($\supseteq$)} \index{sqsupset@\commande{sqsupset} ($\sqsupset$)} \index{sqsupseteq@\commande{sqsupseteq} ($\sqsupseteq$)} \index{ni@\commande{ni} ($\ni$)} \index{dashv@\commande{dashv} ($\dashv$)} \index{equiv@\commande{equiv} ($\equiv$)} \index{sim@\commande{sim} ($\sim$)} \index{simeq@\commande{simeq} ($\simeq$)} \index{asymp@\commande{asymp} ($\asymp$)} \index{approx@\commande{approx} ($\approx$)} \index{cong@\commande{cong} ($\cong$)} \index{neq@\commande{neq} ($\neq$)} \index{doteq@\commande{doteq} ($\doteq$)} \index{propto@\commande{propto} ($\propto$)} \index{models@\commande{models} ($\models$)} \index{perp@\commande{perp} ($\perp$)} \index{mid@\commande{mid} ($\mid$)} \index{parallel@\commande{parallel} ($\parallel$)} \index{bowtie@\commande{bowtie} ($\bowtie$)} \index{Join@\commande{Join} ($\Join$)} \index{smile@\commande{smile} ($\smile$)} \index{frown@\commande{frown} ($\frown$)} \end{table} On peut obtenir la négation de ces symboles grâce à la commande \commandeindex{not} : \begin{filecontents*}{\jobname.tmp} $ x \not\in F $ \end{filecontents*} \exempleresultat{\jobname.tmp} \subsection{Flèches} \index{symboles mathématiques!flèches} Les commandes présentées dans le tableau \ref{tableau:fleches} permettent d'obtenir des flèches. \begin{table}[!htbp] \centering \begin{threeparttable} \begin{tabular}{>{$}l<{$}l*{2}{@{\hspace{5mm}}>{$}l<{$}l}} \toprule \leftarrow & \commande{leftarrow} & \longleftarrow & \commande{longleftarrow} & \uparrow & \commande{uparrow} \\ \Leftarrow & \commande{Leftarrow} & \Longleftarrow & \commande{Longleftarrow} & \Uparrow & \commande{Uparrow} \\ \rightarrow & \commande{rightarrow} & \longrightarrow & \commande{longrightarrow} & \downarrow & \commande{downarrow} \\ \Rightarrow & \commande{Rightarrow} & \Longrightarrow & \commande{Longrightarrow} & \Downarrow & \commande{Downarrow} \\ \leftrightarrow & \commande{leftrightarrow} & \longleftrightarrow & \commande{longleftrightarrow} & \updownarrow & \commande{updownarrow} \\ \Leftrightarrow & \commande{Leftrightarrow} & \Longleftrightarrow & \commande{Longleftrightarrow} & \Updownarrow & \commande{Updownarrow} \\ \mapsto & \commande{mapsto} & \longmapsto & \commande{longmapsto} & \nearrow & \commande{nearrow} \\ \hookleftarrow & \commande{hookleftarrow} & \hookrightarrow & \commande{hookrightarrow} & \searrow & \commande{searrow} \\ \leftharpoonup & \commande{leftharpoonup} & \rightharpoonup & \commande{rightharpoonup} & \swarrow & \commande{swarrow} \\ \leftharpoondown & \commande{leftharpoondown} & \rightharpoondown & \commande{rightharpoondown} & \nwarrow & \commande{nwarrow} \\ \rightleftharpoons & \commande{rightleftharpoons} & \leadsto & \commande{leadsto} \tnote{a} & & \\ \bottomrule \end{tabular} \begin{tablenotes} \item[a] Requiert l'extension \extensionindex{latexsym}. \end{tablenotes} \end{threeparttable} \caption{Flèches} \label{tableau:fleches} \index{leftarrow@\commande{leftarrow} ($\leftarrow$)} \index{Leftarrow@\commande{Leftarrow} ($\Leftarrow$)} \index{rightarrow@\commande{rightarrow} ($\rightarrow$)} \index{Rightarrow@\commande{Rightarrow} ($\Rightarrow$)} \index{leftrightarrow@\commande{leftrightarrow} ($\leftrightarrow$)} \index{Leftrightarrow@\commande{Leftrightarrow} ($\Leftrightarrow$)} \index{mapsto@\commande{mapsto} ($\mapsto$)} \index{hookleftarrow@\commande{hookleftarrow} ($\hookleftarrow$)} \index{leftharpoonup@\commande{leftharpoonup} ($\leftharpoonup$)} \index{leftharpoondown@\commande{leftharpoondown} ($\leftharpoondown$)} \index{rightleftharpoons@\commande{rightleftharpoons} ($\rightleftharpoons$)} \index{longleftarrow@\commande{longleftarrow} ($\longleftarrow$)} \index{Longleftarrow@\commande{Longleftarrow} ($\Longleftarrow$)} \index{longrightarrow@\commande{longrightarrow} ($\longrightarrow$)} \index{Longrightarrow@\commande{Longrightarrow} ($\Longrightarrow$)} \index{longleftrightarrow@\commande{longleftrightarrow} ($\longleftrightarrow$)} \index{Longleftrightarrow@\commande{Longleftrightarrow} ($\Longleftrightarrow$)} \index{longmapsto@\commande{longmapsto} ($\longmapsto$)} \index{hookrightarrow@\commande{hookrightarrow} ($\hookrightarrow$)} \index{rightharpoonup@\commande{rightharpoonup} ($\rightharpoonup$)} \index{rightharpoondown@\commande{rightharpoondown} ($\rightharpoondown$)} \index{leadsto@\commande{leadsto} ($\leadsto$)} \index{uparrow@\commande{uparrow} ($\uparrow$)} \index{Uparrow@\commande{Uparrow} ($\Uparrow$)} \index{downarrow@\commande{downarrow} ($\downarrow$)} \index{Downarrow@\commande{Downarrow} ($\Downarrow$)} \index{updownarrow@\commande{updownarrow} ($\updownarrow$)} \index{Updownarrow@\commande{Updownarrow} ($\Updownarrow$)} \index{nearrow@\commande{nearrow} ($\nearrow$)} \index{searrow@\commande{searrow} ($\searrow$)} \index{swarrow@\commande{swarrow} ($\swarrow$)} \index{nwarrow@\commande{nwarrow} ($\nwarrow$)} \end{table} \subsection{Symboles divers} \index{symboles mathématiques!symboles divers} Les commandes présentées dans le tableau \ref{tableau:symbolesdivers} permettent d'obtenir des symboles divers. \begin{table}[!htbp] \centering \begin{threeparttable} \begin{tabular}{>{$}l<{$}l*{3}{@{\hspace{6mm}}>{$}l<{$}l}} \toprule \aleph & \commande{aleph} & \prime & \commande{prime} & \forall & \commande{forall} & \infty & \commande{infty} \\ \hbar & \commande{hbar} & \emptyset & \commande{emptyset} & \exists & \commande{exists} & \Box & \commande{Box} \tnote{a} \\ \imath & \commande{imath} & \nabla & \commande{nabla} & \neg & \commande{neg} & \Diamond & \commande{Diamond} \tnote{a} \\ \jmath & \commande{jmath} & \surd & \commande{surd} & \flat & \commande{flat} & \triangle & \commande{triangle} \\ \ell & \commande{ell} & \top & \commande{top} & \natural & \commande{natural} & \clubsuit & \commande{clubsuit} \\ \wp & \commande{wp} & \bot & \commande{bot} & \sharp & \commande{sharp} & \diamondsuit & \commande{diamondsuit} \\ \Re & \commande{Re} & \| & \commande{|} & \backslash & \commande{backslash} & \heartsuit & \commande{heartsuit} \\ \Im & \commande{Im} & \angle & \commande{angle} & \partial & \commande{partial} & \spadesuit & \commande{spadesuit} \\ \mho & \commande{mho} \tnote{a} & & & & & & \\ \bottomrule \end{tabular} \begin{tablenotes} \item[a] Requiert l'extension \extensionindex{latexsym}. \end{tablenotes} \end{threeparttable} \caption{Symboles divers} \label{tableau:symbolesdivers} \index{aleph@\commande{aleph} ($\aleph$)} \index{hbar@\commande{hbar} ($\hbar$)} \index{imath@\commande{imath} ($\imath$)} \index{jmath@\commande{jmath} ($\jmath$)} \index{ell@\commande{ell} ($\ell$)} \index{wp@\commande{wp} ($\wp$)} \index{Re@\commande{Re} ($\Re$)} \index{Im@\commande{Im} ($\Im$)} \index{mho@\commande{mho} ($\mho$)} \index{prime@\commande{prime} ($\prime$)} \index{emptyset@\commande{emptyset} ($\emptyset$)} \index{nabla@\commande{nabla} ($\nabla$)} \index{surd@\commande{surd} ($\surd$)} \index{top@\commande{top} ($\top$)} \index{bot@\commande{bot} ($\bot$)} %\index{"|@\commande{"|} ($\|$)} \index{angle@\commande{angle} ($\angle$)} \index{forall@\commande{forall} ($\forall$)} \index{exists@\commande{exists} ($\exists$)} \index{neg@\commande{neg} ($\neg$)} \index{flat@\commande{flat} ($\flat$)} \index{natural@\commande{natural} ($\natural$)} \index{sharp@\commande{sharp} ($\sharp$)} \index{backslash@\commande{backslash} ($\backslash$)} \index{partial@\commande{partial} ($\partial$)} \index{infty@\commande{infty} ($\infty$)} \index{Box@\commande{Box} ($\Box$)} \index{Diamond@\commande{Diamond} ($\Diamond$)} \index{triangle@\commande{triangle} ($\triangle$)} \index{clubsuit@\commande{clubsuit} ($\clubsuit$)} \index{diamondsuit@\commande{diamondsuit} ($\diamondsuit$)} \index{heartsuit@\commande{heartsuit} ($\heartsuit$)} \index{spadesuit@\commande{spadesuit} ($\spadesuit$)} \end{table} De plus, les commandes \commande{ldots}\index{ldots@\commande{ldots} ($\ldots$)} ($\ldots$) et \commande{cdots}\index{cdots@\commande{cdots} ($\cdots$)} ($\cdots$) permettent d'obtenir des points de suspension (respectivement alignés sur la base de la ligne ou centrés verticalement). \subsection{Accents} \index{symboles mathématiques!accents} Le tableau \ref{tableau:mathaccents} présente les accents disponibles en mode mathématique. \begin{table}[!htbp] \centering \begin{tabular}{>{$}l<{$}l*{3}{@{\hspace{10mm}}>{$}l<{$}l}} \toprule \hat{a} & \commande{hat\{a\}} & \acute{a} & \commande{acute\{a\}} & \bar{a} & \commande{bar\{a\}} & \dot{a} & \commande{dot\{a\}} \\ \check{a} & \commande{check\{a\}} & \grave{a} & \commande{grave\{a\}} & \vec{a} & \commande{vec\{a\}} & \ddot{a} & \commande{ddot\{a\}} \\ \breve{a} & \commande{breve\{a\}} & \tilde{a} & \commande{tilde\{a\}} & & & \\ \bottomrule \end{tabular} \caption{Accents} \label{tableau:mathaccents} \index{hat@\commande{hat} ($\hat{a}$)} \index{check@\commande{check} ($\check{a}$)} \index{breve@\commande{breve} ($\breve{a}$)} \index{acute@\commande{acute} ($\acute{a}$)} \index{grave@\commande{grave} ($\grave{a}$)} \index{tilde@\commande{tilde} ($\tilde{a}$)} \index{bar@\commande{bar} ($\bar{a}$)} \index{vec@\commande{vec} ($\vec{a}$)} \index{dot@\commande{dot} ($\dot{a}$)} \index{ddot@\commande{ddot} ($\ddot{a}$)} \end{table} Pour placer un accent sur un $i$ ou un $j$, utilisez les commandes \commande{imath}\index{imath@\commande{imath} ($\imath$)} et \commande{jmath}\index{jmath@\commande{jmath} ($\jmath$)}, qui produisent des lettres sans point (voir le tableau \ref{tableau:symbolesdivers}). Il existe aussi des commandes permettant d'avoir des versions longues de certains accents : \begin{filecontents*}{\jobname.tmp} $ \widehat{xyz} $, $ \widetilde{abc} $ \end{filecontents*} \exempleresultat{\jobname.tmp} \index{widehat@\commande{widehat} ($\widehat{xyz}$)} \index{widetilde@\commande{widetilde} ($\widetilde{xyz}$)} Les commandes \commande{overrightarrow}\index{overrightarrow@\commande{overrightarrow} ($\overrightarrow{AB}$)} et \commande{overleftarrow}\index{overleftarrow@\commande{overleftarrow} ($\overleftarrow{AB}$)} permettent de surmonter leur argument d'une grande flèche : \begin{filecontents*}{\jobname.tmp} $ \overrightarrow{AB} $, $ \overleftarrow{AB} $ \end{filecontents*} \exempleresultat{\jobname.tmp} Les commandes \commande{overline}\index{overline@\commande{overline} ($\overline{xyz}$)} et \commande{underline}\index{underline@\commande{underline} ($\underline{xyz}$)} permettent de surligner et de souligner : \begin{filecontents*}{\jobname.tmp} $ \overline{z+1} = \bar{z} + 1 $, $ \underline{\alpha + \beta} $ \end{filecontents*} \exempleresultat{\jobname.tmp} Enfin, les commandes \commande{overbrace}\index{overbrace@\commande{overbrace} ($\overbrace{xyz}$)} et \commande{underbrace}\index{underbrace@\commande{underbrace} ($\underbrace{xyz}$)} placent des accolades sur ou sous le texte. On peut ajouter un commentaire en mettant un exposant après la commande \commande{overbrace} ou un indice après la commande \commande{underbrace} : \begin{filecontents*}{\jobname.tmp} \[ a^n = \overbrace{a \times a \times \cdots \times a}^{\mbox{$n$ fois}} \] \end{filecontents*} \exempleresultat{\jobname.tmp} \subsection{Superposer deux symboles} Il est possible de superposer deux symboles grâce à la commande : \begin{syntaxe} \commandeindex{stackrel}\argument{dessus}\argument{dessous} \end{syntaxe} \begin{filecontents*}{\jobname.tmp} $ x \stackrel{f}{\longmapsto} f(x) $ \end{filecontents*} \exempleresultat{\jobname.tmp} On peut, par exemple, utiliser la commande \commande{stackrel} pour obtenir des tenseurs : \begin{filecontents*}{\jobname.tmp} $ \stackrel{\Rightarrow}{\sigma} = \Lambda ( \stackrel{\Rightarrow}{\varepsilon} ) $ \end{filecontents*} \exempleresultat{\jobname.tmp} \subsection{Ensembles} \index{symboles mathématiques!ensembles} Les extensions \extensionindex{bbm}, \extensionindex{bbold} et \extensionindex{dsfont} fournissent des polices de caractères et les commandes correspondantes permettant de représenter les symboles des ensembles usuels. L'extension \extensionindex{bbm} fournit ainsi les commandes \commandeindex{mathbbm}, \commandeindex{mathbbmss} et \commandeindex{mathbbmtt}. L'extension \extensionindex{bbold} fournit la commande \commandeindex{mathbb}. L'extension \extensionindex{dsfont} fournit la commande \commandeindex{mathds}. Ces commandes doivent être utilisées en mode mathématique. L'extension \extensionindex{bbold} fournit également une commande \commandeindex{textbb} destinée à être utilisée dans du texte normal. Le choix de l'extension et de la commande à utiliser dépend des préférences de chacun quant à l'aspect des caractères. Le tableau \ref{tableau:ensembles} présente ce que produit chacune des commandes pour les ensembles usuels. \begin{table}[!htbp] \centering \begin{tabular}{ccccc} \toprule \multicolumn{3}{c}{\extension{bbm}} & \extension{bbold} & \extension{dsfont} \\ \cmidrule(r){1-3} \cmidrule(lr){4-4} \cmidrule(l){5-5} \commande{mathbbm} & \commande{mathbbmss} & \commande{mathbbmtt} & \commande{mathbb} & \commande{mathds} \\ \midrule $\mathbbm{N}$ & $\mathbbmss{N}$ & $\mathbbmtt{N}$ & $\mathbb{N}$ & $\mathds{N}$ \\ $\mathbbm{Z}$ & $\mathbbmss{Z}$ & $\mathbbmtt{Z}$ & $\mathbb{Z}$ & $\mathds{Z}$ \\ $\mathbbm{D}$ & $\mathbbmss{D}$ & $\mathbbmtt{D}$ & $\mathbb{D}$ & $\mathds{D}$ \\ $\mathbbm{Q}$ & $\mathbbmss{Q}$ & $\mathbbmtt{Q}$ & $\mathbb{Q}$ & $\mathds{Q}$ \\ $\mathbbm{R}$ & $\mathbbmss{R}$ & $\mathbbmtt{R}$ & $\mathbb{R}$ & $\mathds{R}$ \\ $\mathbbm{C}$ & $\mathbbmss{C}$ & $\mathbbmtt{C}$ & $\mathbb{C}$ & $\mathds{C}$ \\ \bottomrule \end{tabular} \caption{Ensembles} \label{tableau:ensembles} \index{N@\commande{mathbbm\{N\}} ($\mathbbm{N}$)} \index{Z@\commande{mathbbm\{Z\}} ($\mathbbm{Z}$)} \index{D@\commande{mathbbm\{D\}} ($\mathbbm{D}$)} \index{Q@\commande{mathbbm\{Q\}} ($\mathbbm{Q}$)} \index{R@\commande{mathbbm\{R\}} ($\mathbbm{R}$)} \index{C@\commande{mathbbm\{C\}} ($\mathbbm{C}$)} \index{N@\commande{mathbbmss\{N\}} ($\mathbbmss{N}$)} \index{Z@\commande{mathbbmss\{Z\}} ($\mathbbmss{Z}$)} \index{D@\commande{mathbbmss\{D\}} ($\mathbbmss{D}$)} \index{Q@\commande{mathbbmss\{Q\}} ($\mathbbmss{Q}$)} \index{R@\commande{mathbbmss\{R\}} ($\mathbbmss{R}$)} \index{C@\commande{mathbbmss\{C\}} ($\mathbbmss{C}$)} \index{N@\commande{mathbbmtt\{N\}} ($\mathbbmtt{N}$)} \index{Z@\commande{mathbbmtt\{Z\}} ($\mathbbmtt{Z}$)} \index{D@\commande{mathbbmtt\{D\}} ($\mathbbmtt{D}$)} \index{Q@\commande{mathbbmtt\{Q\}} ($\mathbbmtt{Q}$)} \index{R@\commande{mathbbmtt\{R\}} ($\mathbbmtt{R}$)} \index{C@\commande{mathbbmtt\{C\}} ($\mathbbmtt{C}$)} \index{N@\commande{mathbb\{N\}} ($\mathbb{N}$)} \index{Z@\commande{mathbb\{Z\}} ($\mathbb{Z}$)} \index{D@\commande{mathbb\{D\}} ($\mathbb{D}$)} \index{Q@\commande{mathbb\{Q\}} ($\mathbb{Q}$)} \index{R@\commande{mathbb\{R\}} ($\mathbb{R}$)} \index{C@\commande{mathbb\{C\}} ($\mathbb{C}$)} \index{N@\commande{mathds\{N\}} ($\mathds{N}$)} \index{Z@\commande{mathds\{Z\}} ($\mathds{Z}$)} \index{D@\commande{mathds\{D\}} ($\mathds{D}$)} \index{Q@\commande{mathds\{Q\}} ($\mathds{Q}$)} \index{R@\commande{mathds\{R\}} ($\mathds{R}$)} \index{C@\commande{mathds\{C\}} ($\mathds{C}$)} \end{table} \section{Modifier l'espacement} \label{section:espacement} Dans certains cas, il peut être utile de modifier l'espacement, afin d'éloigner ou de rapprocher certains symboles (voir le tableau \ref{tableau:espacement}). \begin{table}[!htbp] \centering \begin{tabular}{ll@{\hspace{10mm}}ll} \toprule \commande{,} & petite espace & \verb+\!+ & petite espace négative \\ \verb+\:+ & moyenne espace & \commande{quad} & petite espace interformules \\ \verb+\;+ & grande espace & \commande{qquad} & moyenne espace interformules \\ \bottomrule \end{tabular} \caption{Commandes d'espacement} \label{tableau:espacement} \index{,@\commande{,} (espacement)} \index{:@\verb+\:+ (espacement)} \index{;@\verb+\;+ (espacement)} \index{"!@\commande{"!} (espacement)} \index{quad@\commande{quad} (espacement)} \index{qquad@\commande{qquad} (espacement)} \end{table} Nous verrons, lorsque cela est utile, comment ces commandes peuvent servir. \section{Modifier le style et la taille} \label{section:styletaille} \LaTeX\ permet de modifier le style des caractères en mode mathématique (voir le tableau \ref{tableau:mathstyle}). \begin{table}[!htbp] \centering \begin{tabular}{ll} \toprule \code{\$ x + y + 2\textasciicircum n\textbackslash Omega\textbackslash cos\textbackslash theta \$} & $ x + y + 2^n\Omega\cos\theta $ \\ \code{\$ \textbackslash mathit\{x + y + 2\textasciicircum n\textbackslash Omega\textbackslash cos\textbackslash theta\} \$} & $\mathit{x + y + 2^n\Omega\cos\theta}$ \\ \code{\$ \textbackslash mathrm\{x + y + 2\textasciicircum n\textbackslash Omega\textbackslash cos\textbackslash theta\} \$} & $\mathrm{x + y + 2^n\Omega\cos\theta}$ \\ \code{\$ \textbackslash mathbf\{x + y + 2\textasciicircum n\textbackslash Omega\textbackslash cos\textbackslash theta\} \$} & $\mathbf{x + y + 2^n\Omega\cos\theta}$ \\ \code{\$ \textbackslash mathsf\{x + y + 2\textasciicircum n\textbackslash Omega\textbackslash cos\textbackslash theta\} \$} & $\mathsf{x + y + 2^n\Omega\cos\theta}$ \\ \code{\$ \textbackslash mathtt\{x + y + 2\textasciicircum n\textbackslash Omega\textbackslash cos\textbackslash theta\} \$} & $\mathtt{x + y + 2^n\Omega\cos\theta}$ \\ \bottomrule \end{tabular} \caption{Commandes de changement de style} \label{tableau:mathstyle} \index{mathit@\commande{mathit}} \index{mathrm@\commande{mathrm}} \index{mathbf@\commande{mathbf}} \index{mathsf@\commande{mathsf}} \index{mathtt@\commande{mathtt}} \end{table} Comme vous pouvez le constater, les commandes de changement de style n'agissent que sur les lettres, les chiffres et les lettres grecques majuscules. La commande \commandeindex{mathcal} permet d'obtenir des majuscules calligraphiques : \begin{filecontents*}{\jobname.tmp} Soient $\mathcal{C}$ le cercle de centre O et de rayon 1, $\mathcal{D}_1$ et $\mathcal{D}_2$ deux droites. \end{filecontents*} \exempleresultat{\jobname.tmp} Voici ce à quoi ressemblent ces majuscules : \[ \mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \] Comme nous allons le voir par la suite (en particulier au paragraphe \ref{section:taillevariable}), certains symboles n'ont pas la même taille dans l'environnement \environnement{math} et dans l'environnement \environnement{displaymath}. La déclaration \commandeindex{displaystyle} permet, dans un environnement \environnement{math}, de forcer \LaTeX\ à utiliser des caractères et des symboles de la même taille qu'en environnement \environnement{displaymath}. Cette déclaration est à utiliser avec modération, car son utilisation risque de modifier l'interligne du paragraphe, pour les formules qui sont placées dans le texte. De même, la déclaration \commandeindex{textstyle} permet de forcer \LaTeX\ à utiliser, dans un environnement \environnement{displaymath}, des caractères et des symboles de la même taille qu'en environnement \environnement{math}. Enfin, signalons aussi l'existence des deux déclarations \commandeindex{scriptstyle} et \commandeindex{scriptscriptstyle} qui mettent respectivement le texte à la taille d'un exposant et d'un exposant d'exposant (désolé, il n'y a pas plus petit). \section{Fractions} \index{fraction} Les fractions s'obtiennent grâce à la commande : \begin{syntaxe} \commandeindex{frac}\argument{numérateur}\argument{dénominateur} \end{syntaxe} \begin{filecontents*}{\jobname.tmp} \[ \frac{x+1}{x+2} \] \end{filecontents*} \exempleresultat{\jobname.tmp} \section{Racines} \index{racine} Les racines s'obtiennent grâce à la commande : \begin{syntaxe} \commandeindex{sqrt}\option{ordre}\argument{argument} \end{syntaxe} \begin{filecontents*}{\jobname.tmp} $ \sqrt{x^2+y^2} $, $ \sqrt[n]{\alpha_i} $ \end{filecontents*} \exempleresultat{\jobname.tmp} \section{Délimiteurs} \index{symboles mathématiques!délimiteurs} Les délimiteurs, présentés dans le tableau \ref{tableau:delimiteurs}, sont des symboles permettant d'encadrer des formules. Leur hauteur s'adapte à celle de la formule. \begin{table}[!htbp] \centering \begin{tabular}{*{2}{ll@{\hspace{10mm}}}>{$}l<{$}l} \toprule $($ & \code{(} & $)$ & \code{)} & \uparrow & \commande{uparrow} \\ $[$ & \code{[} & $]$ & \code{]} & \downarrow & \commande{downarrow} \\ $\{$ & \commande{\{} & $\}$ & \commande{\}} & \updownarrow & \commande{updownarrow} \\ $\lfloor$ & \commande{lfloor} & $\rfloor$ & \commande{rfloor} & \Uparrow & \commande{Uparrow} \\ $\lceil$ & \commande{lceil} & $\rceil$ & \commande{rceil} & \Downarrow & \commande{Downarrow} \\ $\langle$ & \commande{langle} & $\rangle$ & \commande{rangle} & \Updownarrow & \commande{Updownarrow} \\ $/$ & \code{/} & $\backslash$ & \commande{backslash} & & \\ $|$ & \code{|} & $\|$ & \commande{|} & & \\ \bottomrule \end{tabular} \caption{Délimiteurs} \label{tableau:delimiteurs} \index{(@\code{(} (délimiteur)} \index{[@\code{[} (délimiteur)} %\index{{@\code{\{} (délimiteur)} \index{lfloor@\commande{lfloor} ($\lfloor$)} \index{lceil@\commande{lceil} ($\lceil$)} \index{langle@\commande{langle} ($\langle$)} \index{/@\code{/} (délimiteur)} %\index{"|@\code{"|} (délimiteur)} \index{)@\code{)} (délimiteur)} \index{]@\code{]} (délimiteur)} %\index{}@\code{\}} (délimiteur)} \index{rfloor@\commande{rfloor} ($\rfloor$)} \index{rceil@\commande{rceil} ($\rceil$)} \index{rangle@\commande{rangle} ($\rangle$)} \index{backslash@\commande{backslash} ($\backslash$)} %\index{"|@\commande{"|} ($\|$) (délimiteur)} \index{uparrow@\commande{uparrow} ($\uparrow$)} \index{downarrow@\commande{downarrow} ($\downarrow$)} \index{updownarrow@\commande{updownarrow} ($\updownarrow$)} \index{Uparrow@\commande{Uparrow} ($\Uparrow$)} \index{Downarrow@\commande{Downarrow} ($\Downarrow$)} \index{Updownarrow@\commande{Updownarrow} ($\Updownarrow$)} \end{table} Les délimiteurs doivent toujours aller par paire : un délimiteur ouvrant et un délimiteur fermant. Un délimiteur ouvrant s'obtient par la commande \commandeindex{left} suivie du délimiteur, et un délimiteur fermant par la commande \commandeindex{right} suivie du délimiteur. Bien entendu, on peut imbriquer les paires de délimiteurs si nécessaire. Voici un exemple d'utilisation des délimiteurs (nous aborderons l'environnement \environnement{array} au paragraphe \ref{section:array}) : \begin{filecontents*}{\jobname.tmp} \[ \left[ \begin{array}{cc} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array} \right] \] \end{filecontents*} \exempleresultat{\jobname.tmp} Si l'on ne désire pas voir apparaître de délimiteur fermant, il faut alors mettre \commandeindex{right.} (\commande{right} suivi d'un point). En effet, tout \commande{left} doit avoir un \commande{right} correspondant, le \commande{right.} n'imprime rien, mais sert à fermer le \commande{left} qui lui correspond. Il en va de même si l'on ne souhaite pas de délimiteur ouvrant, on utilise \commandeindex{left.} (\commande{left} suivi d'un point). \begin{filecontents*}{\jobname.tmp} \[ |x| = \left\{ \begin{array}{rl} x & \mbox{si } x \geq 0 \\ -x & \mbox{si } x < 0 \end{array} \right. \] \end{filecontents*} \exempleresultat{\jobname.tmp} \section{Symboles de taille variable} \label{section:taillevariable} \index{symboles mathématiques!symboles de taille variable} \index{somme} \index{produit} \index{intégrale} Les symboles présentés dans le tableau \ref{tableau:taillevariable} sont de \emph{taille variable} : il n'ont pas la même taille dans l'environnement \environnement{math} et dans l'environnement \environnement{displaymath}. \begin{table}[!htbp] \centering \begin{tabular}{>{$}l<{$}l*{2}{@{\hspace{10mm}}>{$}l<{$}l}} \toprule \sum \displaystyle \sum & \commande{sum} & \bigcap \displaystyle \bigcap & \commande{bigcap} & \bigodot \displaystyle \bigodot & \commande{bigodot} \\ \prod \displaystyle \prod & \commande{prod} & \bigcup \displaystyle \bigcup & \commande{bigcup} & \bigotimes \displaystyle \bigotimes & \commande{bigotimes} \\ \coprod \displaystyle \coprod & \commande{coprod} & \bigsqcup \displaystyle \bigsqcup & \commande{bigsqcup} & \bigoplus \displaystyle \bigoplus & \commande{bigoplus} \\ \int \displaystyle \int & \commande{int} & \bigvee \displaystyle \bigvee & \commande{bigvee} & \biguplus \displaystyle \biguplus & \commande{biguplus} \\ \oint \displaystyle \oint & \commande{oint} & \bigwedge \displaystyle \bigwedge & \commande{bigwedge} & & \\ \bottomrule \end{tabular} \caption{Symboles de taille variable} \label{tableau:taillevariable} \index{sum@\commande{sum} ($\sum$)} \index{prod@\commande{prod} ($\prod$)} \index{coprod@\commande{coprod} ($\coprod$)} \index{int@\commande{int} ($\int$)} \index{oint@\commande{oint} ($\oint$)} \index{bigcap@\commande{bigcap} ($\bigcap$)} \index{bigcup@\commande{bigcup} ($\bigcup$)} \index{bigsqcup@\commande{bigsqcup} ($\bigsqcup$)} \index{bigvee@\commande{bigvee} ($\bigvee$)} \index{bigwedge@\commande{bigwedge} ($\bigwedge$)} \index{bigodot@\commande{bigodot} ($\bigodot$)} \index{bigotimes@\commande{bigotimes} ($\bigotimes$)} \index{bigoplus@\commande{bigoplus} ($\bigoplus$)} \index{biguplus@\commande{biguplus} ($\biguplus$)} \end{table} Ces symboles sont plus petits en environnement \environnement{math} afin d'être de même taille que le reste du texte. De plus, leurs indices et exposants (qui représentent leurs bornes) ne sont pas disposés de la même façon dans les deux environnements : \begin{exemple} $ \sum_{i=0}^{+\infty} x_i \quad \int_a^b f(x) dx $ \[ \sum_{i=0}^{+\infty} x_i \quad \int_a^b f(x) dx \] \end{exemple} \begin{resultat} \begin{center} $ \sum_{i=0}^{+\infty} x_i \quad \int_a^b f(x) dx $ \end{center} \[ \sum_{i=0}^{+\infty} x_i \quad \int_a^b f(x) dx \] \end{resultat} Comme indiqué au paragraphe \ref{section:styletaille}, on peut, en environnement \environnement{math}, utiliser la déclaration \commandeindex{displaystyle} qui donne aux symboles de taille variable la taille qu'ils ont en environnement \environnement{displaymath} (mais ceci modifie l'interligne du texte) : \begin{filecontents*}{\jobname.tmp} On en déduit donc $ \displaystyle \sum_{n=1}^{+\infty} \frac{1}{n^2} = \frac{\pi^2}{6} $. \end{filecontents*} \exempleresultat{\jobname.tmp} Dans les intégrales, on utilise souvent les commandes d'espacement vues au paragraphe \ref{section:espacement} pour éloigner le $dx$ ou pour rapprocher les symboles d'intégration des intégrales multiples : \begin{filecontents*}{\jobname.tmp} \[ \int_a^b f(x) \, dx \qquad V = \int \!\!\!\! \int \!\!\!\! \int_{\Omega} d\tau \] \end{filecontents*} \exempleresultat{\jobname.tmp} En cas d'usage intensif d'intégrales multiples, il peut être intéressant d'utiliser l'extension \extensionindex{amsmath} (voir \cite[chapitre 8]{the-latex-companion}) qui définit des commandes spécifiques pour la saisie des intégrales multiples (voir \cite[page 492]{the-latex-companion}). \section{Mathématiques et typographie} \label{section:math-typo} \index{typographie} \LaTeX\ respecte de lui-même une grande partie des règles typographiques d'écriture des mathématiques. On se reportera à \cite[pages 107 à 116]{lexique-des-regles-typographiques} pour en avoir une description complète. Néanmoins, un coup de pouce de la part de l'utilisateur est parfois nécessaire. C'est le cas pour les intégrales, qu'il convient d'écrire comme indiqué à droite dans l'exemple suivant, c'est-à-dire avec un peu d'espace entre la fonction et la différentielle, celle-ci étant composée en romain : \begin{filecontents*}{\jobname.tmp} \[ \int_a^b f(x) dx \qquad \int_a^b f(x) \, \mathrm{d}x \] \end{filecontents*} \exempleresultat{\jobname.tmp} Les formules mathématiques contiennent majoritairement des variables et des fonctions et il est d'usage d'écrire celles-ci en italique. C'est pour cela que les formules mathématiques sont composées par \LaTeX\ en italique. En revanche, le symbole de différentielle se compose en romain, d'où l'utilisation de la commande \commande{mathrm} dans l'exemple précédent. On en profite également pour ajouter un peu d'espace entre la fonction et la différentielle, ce qui donne un rendu visuel plus agréable. Si le document comporte beaucoup d'intégrales, il peut être utile de simplifier leur saisie en définissant une nouvelle commande permettant de représenter la différentielle et son espace : \begin{exemple} \newcommand{\diff}{\,\mathrm{d}} \end{exemple} On peut alors écrire : \begin{filecontents*}{\jobname.tmp} \[ \int_a^b f(x) \diff x \] \end{filecontents*} \exempleresultat{\jobname.tmp} De même, les constantes se composent en romain. C'est en particulier le cas pour $\mathrm{e}$ et $\mathrm{i}$ : \begin{filecontents*}{\jobname.tmp} \[ \mathrm{e}^{\mathrm{i}\pi} + 1 = 0 \] \end{filecontents*} \exempleresultat{\jobname.tmp} Les constantes physiques se composent également en romain : \begin{filecontents*}{\jobname.tmp} \[ E = m\mathrm{c}^2 \] \end{filecontents*} \exempleresultat{\jobname.tmp} En cas d'utilisation intensive de certaines constantes, il peut être utile de définir des commandes permettant de les représenter, comme il a été fait pour \commande{diff}. \section{Fonctions et opérateurs} \index{symboles mathématiques!fonctions et opérateurs} Il est d'usage d'écrire certains noms de fonctions ou d'opérateurs en romain : \[ \lim_{x \rightarrow +\infty} \ln x = +\infty \] On pourrait écrire cette égalité ainsi : \begin{filecontents*}{\jobname.tmp} \[ lim_{x \rightarrow +\infty} ln x = +\infty \] \end{filecontents*} \exempleresultat{\jobname.tmp} Mais alors l'opérateurs $\lim$ et la fonction $\ln$ ne sont pas en romain. Essayons donc ainsi : \begin{filecontents*}{\jobname.tmp} \[ \mbox{lim}_{x \rightarrow +\infty} \mbox{ln} x = +\infty \] \end{filecontents*} \exempleresultat{\jobname.tmp} C'est mieux, mais on n'a pas le bon espacement, et $x \rightarrow +\infty$ n'est pas placé sous le symbole $\lim$ comme il devrait l'être. Pour résoudre ces problèmes, \LaTeX\ fournit les commandes présentées dans le tableau \ref{tableau:fonctionsoperateurs}. \begin{table}[!htbp] \centering \begin{tabular}{*{8}{l}} \toprule \commande{arccos} & \commande{cos} & \commande{csc} & \commande{exp} & \commande{ker} & \commande{limsup} & \commande{min} & \commande{sinh} \\ \commande{arcsin} & \commande{cosh} & \commande{deg} & \commande{gcd} & \commande{lg} & \commande{ln} & \commande{Pr} & \commande{sup} \\ \commande{arctan} & \commande{cot} & \commande{det} & \commande{hom} & \commande{lim} & \commande{log} & \commande{sec} & \commande{tan} \\ \commande{arg} & \commande{coth} & \commande{dim} & \commande{inf} & \commande{liminf} & \commande{max} & \commande{sin} & \commande{tanh} \\ \bottomrule \end{tabular} \caption{Fonctions et opérateurs} \label{tableau:fonctionsoperateurs} \index{arccos@\commande{arccos} ($\arccos$)} \index{arcsin@\commande{arcsin} ($\arcsin$)} \index{arctan@\commande{arctan} ($\arctan$)} \index{arg@\commande{arg} ($\arg$)} \index{cos@\commande{cos} ($\cos$)} \index{cosh@\commande{cosh} ($\cosh$)} \index{cot@\commande{cot} ($\cot$)} \index{coth@\commande{coth} ($\coth$)} \index{csc@\commande{csc} ($\csc$)} \index{deg@\commande{deg} ($\deg$)} \index{det@\commande{det} ($\det$)} \index{dim@\commande{dim} ($\dim$)} \index{exp@\commande{exp} ($\exp$)} \index{gcd@\commande{gcd} ($\gcd$)} \index{hom@\commande{hom} ($\hom$)} \index{inf@\commande{inf} ($\inf$)} \index{ker@\commande{ker} ($\ker$)} \index{lg@\commande{lg} ($\lg$)} \index{lim@\commande{lim} ($\lim$)} \index{liminf@\commande{liminf} ($\liminf$)} \index{limsup@\commande{limsup} ($\limsup$)} \index{ln@\commande{ln} ($\ln$)} \index{log@\commande{log} ($\log$)} \index{max@\commande{max} ($\max$)} \index{min@\commande{min} ($\min$)} \index{Pr@\commande{Pr} ($\Pr$)} \index{sec@\commande{sec} ($\sec$)} \index{sin@\commande{sin} ($\sin$)} \index{sinh@\commande{sinh} ($\sinh$)} \index{sup@\commande{sup} ($\sup$)} \index{tan@\commande{tan} ($\tan$)} \index{tanh@\commande{tanh} ($\tanh$)} \end{table} La bonne façon d'écrire \[ \lim_{x \rightarrow +\infty} \ln x = +\infty \] est donc : \begin{exemple} \[ \lim_{x \rightarrow +\infty} \ln x = +\infty \] \end{exemple} Certaines des commandes du tableau \ref{tableau:fonctionsoperateurs} se comportent comme des symboles de taille variable en ce qui concerne le placement de leurs indices. C'est en particulier le cas des limites : \begin{filecontents*}{\jobname.tmp} $ \lim_{x \rightarrow 0} \ln x = -\infty $ \end{filecontents*} \exempleresultat{\jobname.tmp} Enfin, les commandes \commande{bmod}\index{bmod@\commande{bmod} ($\bmod$)} et \commandeindex{pmod} permettent d'imprimer les deux formes de l'opérateur \terme{modulo} : \begin{filecontents*}{\jobname.tmp} $ c = a \bmod b $ \qquad $ a \equiv b \pmod{n} $ \end{filecontents*} \exempleresultat{\jobname.tmp} \section{Les tableaux : l'environnement \environnement{array}} \label{section:array} \index{matrice} Les tableaux (en particulier les matrices) s'obtiennent grâce à l'environnement \environnementindex{array}, qui s'utilise exactement comme l'environnement \environnement{tabular} : \begin{filecontents*}{\jobname.tmp} \[ {\mathcal A} = \left( \begin{array}{ccc} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{array} \right) \] \end{filecontents*} \exempleresultat{\jobname.tmp} L'argument de l'environnement \environnement{array} indique le nombre de colonnes du tableau ainsi que leur alignement. Chaque caractère représente une colonne et peut être : \begin{description} \item[\code{l} (\anglais{left})]\index{l@\code{l} (environnement \environnement{array})} la colonne est alignée à gauche ; \item[\code{c} (\anglais{center})]\index{c@\code{c} (environnement \environnement{array})} la colonne est centrée ; \item[\code{r} (\anglais{right})]\index{r@\code{r} (environnement \environnement{array})} la colonne est alignée à droite. \end{description} Ainsi, la matrice de notre exemple a trois colonnes (\code{ccc}), chacune d'elle étant centrée. À l'intérieur de l'environnement \environnement{array}, les lignes sont terminées par \boiboiindex\ (sauf la dernière) et les colonnes sont séparées par \code{\&}\index{&@\code{\&} (environnement \environnement{array})}. Les commandes \commande{cdots}\index{cdots@\commande{cdots} ($\cdots$)} ($\cdots$), \commande{vdots}\index{vdots@\commande{vdots} ($\vdots$)} ($\vdots$) et \commande{ddots}\index{ddots@\commande{ddots} ($\ddots$)} ($\ddots$) sont souvent utilisées dans les matrices : \begin{filecontents*}{\jobname.tmp} \[ {\mathcal A} = \left( \begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{array} \right) \] \end{filecontents*} \exempleresultat{\jobname.tmp} L'environnement \environnement{array} permet de faire toutes sortes de tableaux en mode mathématique, pas seulement des matrices : \begin{filecontents*}{\jobname.tmp} \[ \sum_{\begin{array}{c} \scriptstyle i>0 \\ \scriptstyle j>0 \end{array}} a_{ij} = \alpha \] \end{filecontents*} \exempleresultat{\jobname.tmp} \section{Les équations numérotées : l'environnement \environnement{equation}} \index{equation@équation} L'environnement \environnementindex{equation} s'utilise de la même façon que l'environnement \environnement{displaymath} mais il génère en plus un numéro d'équation : \begin{filecontents*}{\jobname.tmp} \begin{equation} \label{eqn:euler} \mathrm{e}^{\mathrm{i}\pi} + 1 = 0 \end{equation} \end{filecontents*} \exempleresultat{\jobname.tmp} Comme tout ce qui est numéroté, on peut référencer une équation par la commande \commandeindex{label}, puis rappeler son numéro par la commande \commande{ref}. Le numéro d'équation apparaît à droite par défaut. On peut le faire apparaître à gauche en utilisant l'option de classe \classeoptionindex{leqno}. \section[Les équations numérotées et alignées : l'environnement\texorpdfstring{\newline}{} \environnement{eqnarray}]{Les équations numérotées et alignées : l'environnement \environnement{eqnarray}} Il peut être nécesssaire de superposer des formules ou de dérouler un calcul en gardant un symbole aligné (le signe $=$, par exemple). Pour cela, on utilise l'environnement \environnementindex{eqnarray} : \begin{filecontents*}{\jobname.tmp} \begin{eqnarray} \ln xy & = & \ln x + \ln y \\ \exp(x+y) & = & \exp x \: \exp y \end{eqnarray} \end{filecontents*} \exempleresultat{\jobname.tmp} L'environnement \environnement{eqnarray} s'utilise comme un tableau dont le format serait \code{rcl}. On peut supprimer la numérotation d'une ligne en mettant la commande \commandeindex{nonumber} en fin de ligne : \begin{filecontents*}{\jobname.tmp} \begin{eqnarray} \int_1^2 x^2 \diff x & = & \left[ \frac{x^3}{3} \right]_1^2 \nonumber \\ & = & \frac{2^3}{3} - \frac{1^3}{3} \nonumber \\ & = & \frac{8}{3} - \frac{1}{3} \nonumber \\ & = & \frac{7}{3} \end{eqnarray} \end{filecontents*} \exempleresultat{\jobname.tmp} Si l'on ne désire aucune numérotation, il vaut mieux utiliser la forme étoilée de l'environnement \environnement{eqnarray}. L'environnement \environnementindex{eqnarray*} s'utilise comme l'environnement \environnement{eqnarray}, mais il ne numérote pas les équations : \begin{filecontents*}{\jobname.tmp} \begin{eqnarray*} \int_0^\pi \sin x \diff x & = & \left[ - \cos x \right]_0^\pi \\ & = & - \cos \pi + \cos 0 \\ & = & 1 + 1 \\ & = & 2 \end{eqnarray*} \end{filecontents*} \exempleresultat{\jobname.tmp} \section{Théorèmes, définitions...} \newtheorem{theoreme}{Théorème} \begin{theoreme}[babafou] \LaTeX\ ne se limite pas aux formules et aux signes bizarres, il permet aussi de composer des théorèmes de toute beauté (comme celui-ci). \end{theoreme} La commande: \begin{syntaxe} \commandeindex{newtheorem}\argument{nom}\argument{texte} \end{syntaxe} \noindent définit un nouvel environnement qui a pour nom \var{nom}. Par exemple, le théorème de babafou ci-dessus a été réalisé ainsi : \begin{exemple} \newtheorem{theoreme}{Théorème} \begin{theoreme}[babafou] \LaTeX\ ne se limite pas aux formules et aux signes bizarres, il permet aussi de composer des théorèmes de toute beauté (comme celui-ci). \end{theoreme} \end{exemple} L'environnement créé par la commande \commande{newtheorem} réalise les actions suivantes : \begin{enumerate} \item il imprime \var{texte} (deuxième argument de la commande \commande{newtheorem}) ; \item puis un numéro (à chaque environnement créé est associé un compteur dédié qui est incrémenté à chaque utilisation de l'environnement) ; \item puis, éventuellement, son argument optionnel (c'est généralement l'auteur du théorème) entre parenthèses ; \item enfin, il imprime son contenu, préalablement mis en italique. \end{enumerate} On peut ainsi créer autant d'environnements que nécessaire, un pour les théorèmes, un pour les définitions, un pour les lemmes, un pour les hypothèses, etc., chacun ayant son propre compteur. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Bibliographie et index} \label{chapitre:bibliographie-index} Réaliser une bibliographie ou un index est généralement assez compliqué. Pour cela, \LaTeX\ s'appuie sur deux autres logiciels, \BibTeX\ et \MakeIndex, afin de rendre ce travail simple et efficace. \section{Faire une bibliographie} \index{bibliographie} Avec \LaTeX, il y a deux façons de faire une bibliographie : \begin{itemize} \item en utilisant l'environnement \environnementindex{thebibliography} ; \item en utilisant le logiciel \BibTeX\index{BibTeX@\BibTeX}. \end{itemize} \subsection{L'environnement \environnement{thebibliography}} L'environnement \environnementindex{thebibliography} permet d'imprimer la liste des références bibliographiques : \begin{exemple} \begin{thebibliography}{2} \bibitem{latex-a-document-preparation-system} Leslie Lamport : \textit{\LaTeX: a document preparation system}. Addison-Wesley, second edition, 1994. \bibitem{the-latex-companion} Frank Mittelbach et Michel Goossens : \textit{The \LaTeX\ Companion}. Addison-Wesley, second edition, 2004. \end{thebibliography} \end{exemple} Ce qui donne : \newcommand{\monlabel}[1]{[#1]} \newenvironment{biblio} { \begin{list}{[0]} { \renewcommand{\makelabel}{\monlabel} \settowidth{\labelwidth}{[0]} \setlength{\leftmargin}{\labelwidth} \addtolength{\leftmargin}{\labelsep} \setlength{\itemsep}{0mm} } } {\end{list}} \begin{resultat} \noindent \textbf{\Huge Bibliographie} \bigskip \begin{biblio} \item[1] Leslie Lamport : \textit{\LaTeX: a document preparation system}. Addison-Wesley, second edition, 1994. \item[2] Frank Mittelbach et Michel Goossens : \textit{The \LaTeX\ Companion}. Addison-Wesley, second edition, 2004. \end{biblio} \end{resultat} L'environnement \environnement{thebibliography} s'utilise à peu près comme l'environnement \environnement{itemize}. Chaque élément de la bibliographie commence par la commande \commandeindex{bibitem}, qui prend en argument une chaîne de caractères permettant, comme avec \commande{label}, de faire référence à l'ouvrage. Puis on met à la suite l'auteur ou les auteurs de l'ouvrage, son titre (en italique, c'est l'usage), son éditeur, son année de parution et toute information devant figurer dans la bibliographie. Dans la version imprimée, chaque élément de la bibliographie est repéré par un nombre entre crochets généré automatiquement. Il est possible d'assigner une étiquette personnalisée grâce à l'argument optionnel de \commande{bibitem} : \begin{exemple} \bibitem[Lamport 1994]{latex-a-document-preparation-system} Leslie Lamport : \textit{\LaTeX: a document preparation system}. Addison-Wesley, second edition, 1994. \end{exemple} Ce qui donne : \begin{resultat} [Lamport 1994] Leslie Lamport \ldots \end{resultat} L'argument de l'environnement \environnement{thebibliography} précise la taille maximale de ces étiquettes : \begin{itemize} \item lorsqu'on ne les personnalise pas, on met généralement le nombre d'éléments de la bibliographie ; \item lorsqu'on les personnalise, on met l'étiquette la plus longue (qui n'est pas toujours évidente à déterminer comme nous l'avons vu avec l'environnement \environnement{tabbing}). \end{itemize} La commande \commandeindex{cite} permet de faire référence à un élément de la bibliographie au sein du dpcument. Elle imprime le numéro ou l'étiquette de l'ouvrage : \begin{filecontents*}{\jobname.tmp} Voir \cite{the-latex-companion} pour plus de précisions. \end{filecontents*} \exempleresultat{\jobname.tmp} On peut indiquer des renseignements supplémentaires (page, chapitre, etc.) grâce à l'argument optionnel de \commande{cite} : \begin{filecontents*}{\jobname.tmp} Voir \cite[page 691]{the-latex-companion} pour plus de précisions. \end{filecontents*} \exempleresultat{\jobname.tmp} \subsection{\BibTeX} \index{BibTeX@\BibTeX} L'utilisation de l'environnement \environnement{thebibliography} convient très bien à la réalisation d'une bibliographie, mais elle a certains inconvénients : \begin{itemize} \item il est nécessaire de faire une bibliographie complète pour chaque document, avec les problèmes de redondance que cela implique si certains ouvrages sont cités dans plusieurs documents ; \item en cas de mise à jour d'un ouvrage (publication d'une nouvelle édition, par exemple), il faut modifier les bibliographies de tous les documents où il y est fait référence. \end{itemize} D'où l'idée, plutôt que d'avoir une bibliographie indépendante dans chaque document, de regrouper l'ensemble des données bibliographiques dans une ou plusieurs bases de données et de générer automatiquement la bibliographie de chaque document à partir de ces bases de données, en fonction des ouvrages dont il est fait référence dans le document. C'est le rôle du logiciel \BibTeX. \subsubsection{La base de données bibliographique} Une base de données bibliographique est simplement un fichier d'extension \path{.bib}\index{bib@\path{.bib}} qui contient un certain nombre d'entrées comme celle-ci : \begin{exemple} @BOOK { latex-a-document-preparation-system , AUTHOR = "Leslie Lamport" , TITLE = "{\LaTeX}: a document preparation system" , PUBLISHER = "Addison-Wesley" , EDITION = "Second" , YEAR = 1994 , } \end{exemple} Chaque entrée correspond à un ouvrage dont le type est indiqué en premier, juste après le caractère \code{@}. Il s'agit ici d'un livre, donc de type \code{BOOK}. Les caractéristiques de l'ouvrage sont indiquées à la suite, entre accolades. Il faut tout d'abord spécifier une chaîne de caractères (pouvant contenir lettres, chiffres et signes de ponctuation), qu'on appelle \terme{clé} et qui servira à repérer l'ouvrage dans vos bases de données bibliographiques, en tant qu'argument de la commande \commandeindex{cite}. Le format de la clé est libre. \begin{attention} les clés doivent être uniques au sein de toutes vos bases de données bibliographiques. \end{attention} Viennent ensuite un certain nombre de champs qui définissent l'ouvrage (auteur, titre, etc.). Pour un type d'ouvrage donné, certains champs doivent obligatoirement être indiqués et d'autres sont facultatifs. Chaque champ est de la forme : \begin{syntaxe} \code{NOM\_DU\_CHAMP = "}\var{contenu du champ}\code{" ,} \end{syntaxe} Si une commande est utilisée dans un champ, elle doit être entourée d'accolades : \begin{exemple} TITLE = "{\LaTeX}: a document preparation system" , \end{exemple} Les champs contenant une valeur numérique (\code{YEAR}, par exemple) peuvent se passer des guillemets : \begin{exemple} YEAR = 1994 , \end{exemple} La clé et les champs sont séparés les uns des autres par des virgules. La présentation adoptée dans l'exemple précédent est d'avoir une ligne pour la clé puis une ligne par champ donc chaque ligne se termine par une virgule. Remarquez que la dernière ligne avant l'accolade fermante se termine également par une virgule alors qu'elle n'est pas nécessaire. Néanmoins, dans la mesure où \BibTeX\ la tolère, ceci permet d'avoir une virgule à la fin de chaque ligne de l'entrée et donc d'éviter de l'oublier si jamais on rajoute un champ supplémentaire après l'actuel dernier. \subsubsection{Les différents types d'entrées} Le tableau \ref{tableau:bibtex-entrees} contient la liste des types d'entrées reconnus par \BibTeX. Pour chaque type sont indiqués sa signification ainsi que les champs obligatoires et optionnels (les autres, s'il y en a, étant ignorés) dont la signification sera expliquée dans le tableau \ref{tableau:bibtex-champs}. \begin{longtable}{|c|p{9cm}|} \hline \textbf{Entrée} & \textbf{Signification, champs obligatoires et optionnels} \\ \hline \endhead \multicolumn{2}{c}{} \\ \caption[Types d'entrées reconnus par \BibTeX]{Types d'entrées reconnus par \BibTeX\ (à suivre)} \endfoot \multicolumn{2}{c}{} \\ \caption[]{Types d'entrées reconnus par \BibTeX} \label{tableau:bibtex-entrees} \endlastfoot \biblioindex{ARTICLE} & Article paru dans un journal ou un magazine \\* & Champs obligatoires : \code{AUTHOR}, \code{TITLE}, \code{JOURNAL}, \code{YEAR} \\* & Champs optionnels : \code{VOLUME}, \code{NUMBER}, \code{PAGES}, \code{MONTH}, \code{NOTE} \\* \hline \biblioindex{BOOK} & Livre avec un éditeur \\* & Champs obligatoires : \code{AUTHOR} ou \code{EDITOR}, \code{TITLE}, \code{PUBLISHER}, \code{YEAR} \\* & Champs optionnels : \code{VOLUME} ou \code{NUMBER}, \code{SERIES}, \code{ADDRESS}, \code{EDITION}, \code{MONTH}, \code{NOTE} \\* \hline \biblioindex{BOOKLET} & Ouvrage qui est imprimé et distribué, mais sans éditeur \\* & Champ obligatoire : \code{TITLE} \\* & Champs optionnels : \code{AUTHOR}, \code{HOWPUBLISHED}, \code{ADDRESS}, \code{MONTH}, \code{YEAR}, \code{NOTE} \\* \hline \biblioindex{CONFERENCE} & Identique à \code{INPROCEEDINGS} \\* \hline \biblioindex{INBOOK} & Partie d'un livre, généralement sans titre, il peut s'agir d'un chapitre, d'une section ou de quelques pages \\* & Champs obligatoires : \code{AUTHOR} ou \code{EDITOR}, \code{TITLE}, \code{CHAPTER} et/ou \code{PAGES}, \code{PUBLISHER}, \code{YEAR} \\* & Champs optionnels : \code{VOLUME} ou \code{NUMBER}, \code{SERIES}, \code{TYPE}, \code{ADDRESS}, \code{EDITION}, \code{MONTH}, \code{NOTE} \\* \hline \biblioindex{INCOLLECTION} & Partie d'un livre avec son propre titre \\* & Champs obligatoires : \code{AUTHOR}, \code{TITLE}, \code{BOOKTITLE}, \code{PUBLISHER}, \code{YEAR} \\* & Champs optionnels : \code{EDITOR}, \code{VOLUME} ou \code{NUMBER}, \code{SERIES}, \code{TYPE}, \code{CHAPTER}, \code{PAGES}, \code{ADDRESS}, \code{EDITION}, \code{MONTH}, \code{NOTE} \\* \hline \biblioindex{INPROCEEDINGS} & Article d'actes de conférence \\* & Champs obligatoires : \code{AUTHOR}, \code{TITLE}, \code{BOOKTITLE}, \code{YEAR} \\* & Champs optionnels : \code{EDITOR}, \code{VOLUME} ou \code{NUMBER}, \code{SERIES}, \code{PAGES}, \code{ADDRESS}, \code{MONTH}, \code{ORGANIZATION}, \code{PUBLISHER}, \code{NOTE} \\* \hline \biblioindex{MANUAL} & Documentation technique \\* & Champ obligatoire : \code{TITLE} \\* & Champs optionnels : \code{AUTHOR}, \code{ORGANIZATION}, \code{ADDRESS}, \code{EDITION}, \code{MONTH}, \code{YEAR}, \code{NOTE} \\* \hline \biblioindex{MASTERSTHESIS} & Traité de maîtrise \\* & Champs obligatoires : \code{AUTHOR}, \code{TITLE}, \code{SCHOOL}, \code{YEAR} \\* & Champs optionnels : \code{TYPE}, \code{ADDRESS}, \code{MONTH}, \code{NOTE} \\* \hline \biblioindex{MISC} & C'est le type à utiliser quand rien d'autre ne convient \\* & Champs obligatoires : aucun \\* & Champs optionnels : \code{AUTHOR}, \code{TITLE}, \code{HOWPUBLISHED}, \code{MONTH}, \code{YEAR}, \code{NOTE} \\* \hline \biblioindex{PHDTHESIS} & Thèse de doctorat \\* & Champs obligatoires : \code{AUTHOR}, \code{TITLE}, \code{SCHOOL}, \code{YEAR} \\* & Champs optionnels : \code{TYPE}, \code{ADDRESS}, \code{MONTH}, \code{NOTE} \\* \hline \biblioindex{PROCEEDINGS} & Actes d'une conférence \\* & Champs obligatoires : \code{TITLE}, \code{YEAR} \\* & Champs optionnels : \code{EDITOR}, \code{VOLUME} ou \code{NUMBER}, \code{SERIES}, \code{ADDRESS}, \code{MONTH}, \code{ORGANIZATION}, \code{PUBLISHER}, \code{NOTE} \\* \hline \biblioindex{TECHREPORT} & Rapport publié par une école ou une autre institution \\* & Champs obligatoires : \code{AUTHOR}, \code{TITLE}, \code{INSTITUTION}, \code{YEAR} \\* & Champs optionnels : \code{TYPE}, \code{NUMBER}, \code{ADDRESS}, \code{MONTH}, \code{NOTE} \\* \hline \biblioindex{UNPUBLISHED} & Document avec un auteur et un titre, mais qui n'a jamais été publié \\* & Champs obligatoires : \code{AUTHOR}, \code{TITLE}, \code{NOTE} \\* & Champs optionnels : \code{MONTH}, \code{YEAR} \\* \hline \end{longtable} \subsubsection{Les différents types de champs} Les champs utilisés par \BibTeX, ainsi que leur signification, sont indiqués dans le tableau \ref{tableau:bibtex-champs}. \begin{table}[!htbp] \centering \begin{tabulary}{\textwidth}{|l|J|} \hline \biblioindex{ADDRESS} & Adresse de l'éditeur (\code{PUBLISHER}) ou de l'institution (\code{INSTITUTION}) \\ \hline \biblioindex{ANNOTE} & Annotation \\ \hline \biblioindex{AUTHOR} & Nom de l'auteur (ou noms des auteurs, dans le format décrit plus loin) \\ \hline \biblioindex{BOOKTITLE} & Titre d'une partie d'un livre ou d'un article dans les actes d'une conférence \\ \hline \biblioindex{CHAPTER} & Numéro de chapitre (ou d'une quelconque partie) \\ \hline \biblioindex{CROSSREF} & Clé de l'élément vers lequel on veut établir une référence \\ \hline \biblioindex{EDITION} & Édition d'un livre \\ \hline \biblioindex{EDITOR} & Nom du rédacteur \\ \hline \biblioindex{HOWPUBLISHED} & Façon dont l'ouvrage a été publié \\ \hline \biblioindex{INSTITUTION} & Institution éditrice d'un rapport technique \\ \hline \biblioindex{JOURNAL} & Nom du journal \\ \hline \biblioindex{KEY} & Utilisé pour créer une étiquette s'il n'y a pas d'auteur \\ \hline \biblioindex{MONTH} & Mois durant lequel l'ouvrage a été publié \\ \hline \biblioindex{NOTE} & Informations supplémentaires pouvant aider le lecteur \\ \hline \biblioindex{NUMBER} & Numéro d'un journal, d'un magazine \\ \hline \biblioindex{ORGANIZATION} & Organisation qui patronne une conférence ou publie un manuel \\ \hline \biblioindex{PAGES} & Un ou plusieurs numéros de page \\ \hline \biblioindex{PUBLISHER} & Nom de l'éditeur \\ \hline \biblioindex{SCHOOL} & Nom de l'école ou de l'université dans laquelle la thèse a été réalisée \\ \hline \biblioindex{SERIES} & Nom d'un ensemble de livres \\ \hline \biblioindex{TITLE} & Titre de l'ouvrage \\ \hline \biblioindex{TYPE} & Type d'un rapport technique \\ \hline \biblioindex{VOLUME} & Volume d'un journal ou d'un livre \\ \hline \biblioindex{YEAR} & Année de publication \\ \hline \end{tabulary} \caption{Champs utilisés par \BibTeX} \label{tableau:bibtex-champs} \end{table} \subsubsection{Quelques précisions sur certains champs} Lorsqu'un champ \code{AUTHOR} ou \code{EDITOR} contient plusieurs noms, ils doivent être séparés les uns des autres par le mot \codeindex{and} : \begin{exemple} AUTHOR = "Frank Mittelbach and Michel Goossens" , TITLE = "The {\LaTeX} Companion" , \end{exemple} Le champ \code{MONTH} doit contenir l'abréviation sur trois lettres du mois en anglais (\code{jan}, \code{feb}, \code{mar}, \code{apr}, \code{may}, \code{jun}, \code{jul}, \code{aug}, \code{sep}, \code{oct}, \code{nov} ou \code{dec}) sans guillemets : \begin{exemple} MONTH = apr , \end{exemple} \subsubsection{Générer la bibliographie avec \BibTeX} Une fois que vous avez créé vos bases de données bibliographiques, le plus gros du travail est fait. Maintenant, lorsque vous voulez faire référence à un ouvrage, utilisez la commande \commandeindex{cite} avec pour argument la clé correspondante : \begin{exemple} Voir \cite{the-latex-companion} pour plus de précisions. \end{exemple} Il faut aussi indiquer à \LaTeX\ où placer la bibliographie (généralement juste à la fin du document), au moyen de la commande \commandeindex{bibliography}. Cette command prend en argument une liste de noms de fichiers de base de données bibliographique (mais sans leur extension \path{.bib}) : \begin{exemple} \bibliography{fichier1,fichier2,fichier3} \end{exemple} Bien entendu, tous les ouvrages auxquels ils est fait référence par la commande \commande{cite} doivent se trouver dans ces fichiers. Il faut également indiquer à \BibTeX\ le style à utiliser pour mettre en page la bibliographie, grâce à la commande \commandeindex{bibliographystyle}, utilisée dans le préambule du document. L'argument de cette commande est le nom du style bibliographique à utiliser. Les styles bibliographiques standards de \LaTeX\ sont : \begin{description} \item[\biblioindex{plain}] \ \\ Les ouvrages sont triées dans l'ordre alphabétique de leur auteur (ou premier auteur s'il y en a plusieurs) et sont étiquetés par des nombres. \item[\biblioindex{unsrt}] \ \\ Identique au style \code{plain}, mais les ouvrages sont triés dans l'ordre de leur citation. \item[\biblioindex{alpha}] \ \\ Identique au style \code{plain}, mais les ouvrages sont étiquetés par des chaînes de caractères du style « Lam94 », formées à partir du nom de l'auteur et de l'année de publication. \item[\biblioindex{abbrv}] \ \\ Identique au style \code{plain}, mais les prénoms, noms de mois et de journaux sont abrégés. \end{description} Selon la façon dont \LaTeX\ est installé sur votre ordinateur, il est possible que les styles bibliographiques standards ne soient pas francisés. Ceci est facile à voir au fait que, pour les ouvrages ayant plusieurs auteurs, le mot clé \code{and} séparant les noms des auteurs dans la base de données bibliographique se retrouve sous la forme « and » dans la bibliographie au lieu de « et ». Dans ce cas, utilisez les styles \biblioindex{plain-fr}, \biblioindex{unsrt-fr}, \biblioindex{alpha-fr} ou \biblioindex{abbrv-fr}. S'ils ne sont pas installés, vous pouvez les télécharger ici : \begin{toile} \toileurl{http://mirror.ctan.org/biblio/bibtex/contrib/bib-fr.zip} \end{toile} Il existe de nombreux autres styles bibliographiques, dont beaucoup sont indiqués dans \cite[pages 791--797]{the-latex-companion}. En résumé, mis à part les commandes \commande{cite} disséminées dans le document, l'inclusion de la bibliographie ressemble à ceci : \begin{exemple} % dans le préambule : \bibliographystyle{plain} % ou plain-fr ou un autre style [...] \begin{document} [...] % à la fin du document : \bibliography{fichier1,fichier2,fichier3} \end{exemple} Si vous voulez inclure dans la bibliographie des ouvrages auxquels vous ne faites pas référence dans votre document, utilisez la commande \commandeindex{nocite} (placée par exemple juste après la commande \commande{bibliography}), avec en argument la liste des clés de ces ouvrages, séparées par des virgules : \begin{exemple} \nocite{guide-to-latex,bibtexing,makeindex} \end{exemple} Il est aussi possible d'inclure dans la bibliographie tous les ouvrages répertoriés dans les bases de données bibliographiques en mettant \code{*} comme argument de \commande{nocite} : \begin{exemple} \nocite{*} \end{exemple} Enfin, pour générer la bibliographie et l'inclure dans votre document, il faut : \begin{itemize} \item Compiler votre document avec \LaTeX\ : \begin{exemple} pdflatex document.tex \end{exemple} \item Exécuter \BibTeX\ sur votre document : \begin{exemple} bibtex document \end{exemple} (ne mettez pas l'extension \path{.tex}, \BibTeX\ n'aime pas ça). \BibTeX\ génère alors un fichier \path{.bbl}\index{bbl@\path{.bbl}}, qui contient la bibliographie mise en page (pour les curieux, cela est fait avec l'environnement \environnement{thebibliography}) selon le style indiqué par la commande \commande{bibliographystyle}. \item Recompiler deux fois votre document avec \LaTeX\ afin d'y inclure la bibliographie et de mettre toutes les références à jour. \end{itemize} Pour plus d'informations au sujet de \BibTeX, vous pouvez consulter \cite{bibtexing}, \cite[pages 70, 71 et 155--164]{latex-a-document-preparation-system} et \cite[chapitre 13]{the-latex-companion}. \section{Faire un index} \index{index} La réalisation d'un index est très simple à faire avec \LaTeX. Il suffit de placer dans le texte des commandes \commandeindex{index} pour générer les entrées correspondantes dans l'index. Avant cela, il faut modifier un peu votre document : \begin{itemize} \item chargez l'extension \extensionindex{makeidx} ; \item ajoutez la commande \commandeindex{makeindex} dans le préambule ; \item mettez la commande \commandeindex{printindex} à l'endroit où vous voulez voir apparaître l'index (c'est généralement à la fin du document, après la bibliographie et avant la table des matières). \end{itemize} Le formatage de l'index nécessite l'utilisation d'un logiciel externe, qui va classer les entrées dans l'ordre alphabétique et fusionner les entrées identiques. Historiquement, on utilisait \MakeIndex\ pour cela (voir le paragraphe \ref{section:makeindex}). Malheureusement, celui-ci est incapable de traiter correctement les mots contenant des caractères accentués. Si l'on écrit un document dans une langue en utilisant (ce qui est notre cas), il est préférable d'utiliser \xindy\ (voir le paragraphe \ref{section:xindy}). \subsection{La commande \commande{index}} Pour générer une entrée dans l'index, utilisez la commande \commandeindex{index} : \begin{exemple} Le mot babasse\index{babasse} est inclus dans l'index. \end{exemple} Ceci imprime : \begin{resultat} Le mot babasse est inclus dans l'index. \end{resultat} \noindent et génère une entrée pour « babasse », c'est-à-dire l'argument de la commande \commande{index}, dans l'index. Il est possible de mettre toute une expression dans l'index : \begin{exemple} Je mets l'expression super top cool\index{super top cool} dans l'index. \end{exemple} Pour générer des sous-entrées, il faut séparer l'entrée principale et la sous-entrée avec le caractère \code{!}\index{"!@\code{"!} (index)} : \begin{exemple} Ceci parle des sous-entrées de l'index\index{index!sous-entrées} \end{exemple} Enfin, on peut placer du texte à la position alphabétique repérée par un autre texte avec le caractère \code{@}\index{"@@\code{"@} (index)} : \begin{exemple} Je place le symbole $\alpha$\index{alpha@$\alpha$} dans l'index, à la place de « alpha » dans l'ordre alphabétique. \end{exemple} Si l'on utilise \MakeIndex\ plutôt que \xindy, ceci peut servir à lui indiquer la position correcte d'un mot contenant des caractères accentués : \begin{exemple} Un répertoire\index{repertoire@répertoire} permet de regrouper des fichiers. \end{exemple} En effet, \MakeIndex\ classe les caractères accentués avant tous les autres. Par exemple, il classe « répertoire » avant « racine ». L'utilisation de \code{@} permet donc de le remettre dans le droit chemin, si nécessaire. Son utilisation ne doit pas être systématique, un mot contenant suffisamment de lettres avant son premier caractère accentué ayant toutes les chances d'être classé correctement. \subsection{Générer l'index} Que ce soit en utilisant \MakeIndex\ ou \xindy, la génération de l'index se fait selon la même méthode. \begin{itemize} \item Il faut tout d'abord compiler votre document avec \LaTeX\ : \begin{exemple} pdflatex document.tex \end{exemple} Ceci génère un fichier \path{.idx}\index{idx@\path{.idx}}, qui contient l'ensemble des entrées à faire figurer dans l'index. \item Il faut ensuite exécuter \MakeIndex\ ou \xindy\ sur ce fichier (la façon exacte de procéder sera abordée respectivement dans les paragraphes \ref{section:makeindex} et \ref{section:xindy}). Ceux-ci classent les entrées dans l'ordre alphabétique et fusionnent les entrées identiques. L'index ainsi mis au propre est placé dans un fichier \path{.ind}\index{ind@\path{.ind}}. \item Il faut enfin recompiler votre document avec \LaTeX\ afin d'y inclure l'index (c'est-à-dire le contenu du fichier \path{.ind}). \end{itemize} \subsection{Générer l'index avec \MakeIndex} \label{section:makeindex} \index{MakeIndex@\MakeIndex} Pour générer l'index avec \MakeIndex, on utilise la commande : \begin{exemple} makeindex -c document.idx \end{exemple} L'option \intercom{-c} permet de ne pas tenir comptes des espaces multiples pouvant figurer dans les entrées. Le format par défaut de l'index est assez spartiate. Heureusement, il est possible d'en modifier la présentation. Pour cela, on utilise un fichier ayant par convention l'extension \path{.ist}\index{ist@\path{.ist}}. Vous pouvez essayer celui-ci, que l'on va appeler \path{index.ist} : \begin{exemple} headings_flag 1 heading_prefix "\n \\hfill \\textbf{\\large" heading_suffix "} \\hfill \\nopagebreak\n" symhead_positive "Symboles" symhead_negative "symboles" delim_0 " \\dotfill\\ " delim_1 " \\dotfill\\ " delim_2 " \\dotfill\\ " \end{exemple} Pour l'utiliser, il faut exécuter \MakeIndex\ en indiquant le nom de ce fichier après l'option \intercom{-s} ainsi : \begin{exemple} makeindex -c -s index.ist document.idx \end{exemple} L'index sera alors présenté comme celui de ce manuel. Pour plus d'informations au sujet de \MakeIndex, vous pouvez consulter \cite{makeindex}, \cite[pages 150--154]{latex-a-document-preparation-system} et \cite[§ 11.2]{the-latex-companion}. \subsection{Générer l'index avec \xindy} \label{section:xindy} \index{xindy@\xindy} Pour générer l'index avec \xindy, on utilise la commande : \begin{exemple} texindy -L french -M texindy document.idx \end{exemple} La commande \intercomindex{texindy} permet à \xindy\ de traiter un index généré par \LaTeX\ (car \xindy\ est un logiciel générique de traitement d'index, qui peut être utilisé avec d'autres logiciels que \LaTeX). L'option \intercom{-L} permet d'indiquer dans quelle langue est rédigé l'index. L'ordre de classement des caractères accentués est en effet différent selon les langues. L'option \intercom{-M} permet d'utiliser le module dont le nom suit. Le module \intercom{texindy} permet de générer un index adapté à \LaTeX\ et semblable à ce que génère \MakeIndex. Il est possible de créer ses propres modules afin de personnaliser le format de l'index. Pour cela, on utilise un fichier ayant par convention l'extension \path{.xdy}\index{xdy@\path{.xdy}} et contenant des commandes en langage Lisp. Par exemple, les termes figurant dans l'index sont par défaut directement suivis des numéros des pages où ils figurent. Pour avoir une présentation identique à celle de l'index de ce manuel, avec les numéros de pages à droite, précédés par des points de suspension, on peut utiliser le fichier \path{index.xdy} suivant : \begin{exemple} (markup-locclass-list :open " \dotfill\ " :sep ", ") \end{exemple} Pour l'utiliser, il faut exécuter \intercom{texindy} en indiquant le nom de ce fichier après une autre option \intercom{-M} : \begin{exemple} texindy -L french -M texindy -M index.xdy document.idx \end{exemple} On peut également personnaliser l'aspect des titres des rubriques de l'index grâce aux commandes suivantes, placées dans le préambule du document : \begin{exemple}[fontsize=\footnotesize] \newcommand*\lettergroupDefault[1]{\lettergroup{Symboles}} \newcommand*\lettergroup[1]{\hfill\textbf{\large #1}\hfill\nopagebreak} \end{exemple} La première commande permet d'afficher « Symboles » avant les symboles non alphabétiques figurant dans l'index (s'il y en a). Par défaut, rien n'est affiché. La seconde commande permet de centrer et d'afficher en taille \commande{large} les titres de chaque rubrique (par défaut, ils sont placés à gauche et sont de taille normale). Pour plus d'informations au sujet de \xindy, vous pouvez consulter \cite[§ 11.3]{the-latex-companion} ainsi que le site : \begin{toile} \toileurl{http://www.xindy.org/} \end{toile} \section{La commande \intercom{latexmk}} La réalisation d'un document complexe, contenant une bibliographie et un index, nécessite donc l'utilisation des commandes \intercom{pdflatex}, \intercom{bibtex}, \intercom{makeindex} ou \intercom{texindy} et une nouvelle fois \intercom{pdflatex} (voire une fois de plus si la bibliographie ou l'index modifient la pagination). Non seulement, ceci est fastidieux mais, dans l'idéal, il ne faudrait regénérer la bibliographie que lorsqu'elle a changé. De même pour l'index. Ce qui est encore plus fastidieux... Heureusement, la commande \intercomindex{latexmk} permet d'automatiser l'enchaînement de ces commandes dans l'ordre adéquat et uniquement lorsque cela est nécessaire. Elle s'utilise avec l'option \intercom{-pdf} pour générer un fichier PDF : \begin{exemple} latexmk -pdf document.tex \end{exemple} Il est possible de configurer le comportement de \intercom{latexmk} grâce au fichier \path{~/.latexmkrc}\index{latexmkrc@\path{~/.latexmkrc}}. Par exemple, pour permettre la génération de fichiers PDF sans avoir à utiliser l'option \intercom{-pdf}, il faut indiquer dans le fichier \path{~/.latexmkrc} : \begin{exemple} $pdf_mode = 1 ; \end{exemple} %stopzone On peut alors faire simplement : \begin{exemple} latexmk document.tex \end{exemple} Si \MakeIndex\ est utilisé avec des options (par exemple \intercom{-c} ou \intercom{-s}), il faut l'indiquer dans le fichier \path{~/.latexmkrc} : \begin{exemple} $makeindex = 'makeindex -c -s index.ist %O -o %D %S' ; \end{exemple} %stopzone De même, si vous utilisez \xindy\ plutôt que \MakeIndex, il faut l'indiquer dans le fichier \path{~/.latexmkrc} : \begin{exemple}[fontsize=\small] $makeindex = 'texindy -L french -M texindy -M index.xdy -o %D %S' ; \end{exemple} %stopzone Afin de stocker les données nécessaires à son fonctionnement, \intercom{latexmk} utilise un fichier, créé lors de son premier lancement, ayant le même nom de base que le fichier \LaTeX\ et l'extension \path{.fdb_latexmk}\index{fdb_latexmk@\path{.fdb_latexmk}}. Dans notre exemple, il s'agit donc du fichier \path{document.fdb_latexmk}. Ce fichier peut être supprimé au besoin, il sera recréé par \intercom{latexmk} lors de sa prochaine utilisation. L'option \intercom{-c} (\anglais{clean up}) permet d'effacer ce fichier ainsi que tous les fichiers générés par \LaTeX, à l'exception du fichier PDF : \begin{exemple} latexmk -c \end{exemple} \section{Bibliographie et index dans la table des matières} Par défaut, la bibliographie et l'index ne figurent pas dans la table des matières générée par la commande \commandeindex{tableofcontents}. Pour les y faire apparaître, on peut utiliser l'extension \extensionindex{tocbibind}. Elle fera également apparaître la liste des tableaux, la table des figures, s'ils existent, ainsi que la table des matières elle-même. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Aller plus loin avec \LaTeX} L'un des intérêts de \LaTeX\ est qu'il est extensible. Il existe des centaines d'extensions et de classes permettant de réaliser quasiment tous les documents possibles et imaginables. Nous allons en présenter quelques unes parmi les plus utiles. Beaucoup d'autres sont documentées dans \cite{the-latex-companion}, dont la lecture est indispensable si l'on souhaite utiliser \LaTeX\ à son plein potentiel. \section{CTAN : \textit{the Comprehensive \TeX\ Archive Network}} \index{CTAN} \anglais{The Comprehensive \TeX\ Archive Network} (CTAN) est un réseau d'une centaine de serveurs répliqués permettant l'hébergement et la mise à disposition de fichiers relatifs à \TeX\ et \LaTeX. Toutes les extensions, classes et documentations dont leurs auteurs souhaitent faire profiter la communauté y sont rassemblées. Le site fédérant l'accès à ces serveurs dispose d'un moteur de recherche : \begin{toile} \toileurl{http://www.ctan.org/} \end{toile} L'ensemble logiciel \TeX\ Live\index{TeX Live@\TeX\ Live} (voir le paragraphe \ref{section:procurer}) intègre tous les fichiers disponibles sur le CTAN dont la licence l'autorise. \section{La commande \intercom{texdoc}} La commande \intercomindex{texdoc} permet d'afficher la documentation d'une extension ou d'une classe à partir de son nom. Elle s'utilise dans un interpréteur de commandes avec le nom de l'extension ou de la classe comme argument : \begin{exemple} texdoc babel \end{exemple} Il existe parfois plusieurs documentations. Par défaut, \intercom{texdoc} affiche la première. Pour pouvoir choisir celle à afficher parmi la liste des documentations disponibles, on utilise l'option \intercom{-l} : \begin{exemple} texdoc -l babel \end{exemple} Bien entendu, la documentation de \intercom{texdoc} est également disponible : \begin{exemple} texdoc texdoc \end{exemple} \section{Modifier les marges ou le format de papier : l'extension \extension{geometry}} \label{section:geometry} \index{marge} Les marges par défaut des classes standards (voir le paragraphe \ref{section:classe}) sont assez généreuses. Celles des classes KOMA-Script (voir le paragraphe \ref{section:KOMA-Script}) sont un peu plus réduites. Sans tomber dans l'excès qui consiste à les diminuer au-delà du raisonnable, il est parfois utile de réduire les marges d'un document. L'extension \extensionindex{geometry} permet de modifier les marges. Elle se charge dans le préambule du document avec une ou plusieurs options permettant d'indiquer la taille des marges. Utilisée sans option, l'extension \extension{geometry} définit des marges plus réduites que les marges standards : \begin{exemple} \usepackage{geometry} \end{exemple} L'option \extensionoption{margin} permet de fixer la même taille aux quatre marges (tête, pied, gauche et droite) du document : \begin{exemple} \usepackage[margin=2cm]{geometry} \end{exemple} Les options \extensionoption{top} et \extensionoption{bottom} permettent respectivement de fixer la taille des marges de tête et de pied : \begin{exemple} \usepackage[top=2cm,bottom=2cm]{geometry} \end{exemple} Les options \extensionoption{left} et \extensionoption{right} permettent respectivement de fixer la taille des marges gauche et droite : \begin{exemple} \usepackage[left=2cm,right=2cm]{geometry} \end{exemple} Lorsque le document est destiné à être mis en page en recto-verso (grâce à l'option de classe \classeoptionindex{twoside}), la marge intérieure (vers la reliure) est généralement plus petite que la marge extérieure. On utilise dans ce cas les options \extensionoption{inner} et \extensionoption{outer} : \begin{exemple} \usepackage[inner=2cm,outer=3cm]{geometry} \end{exemple} Il est bien entendu possible de fixer la taille de toutes les marges : \begin{exemple} \usepackage[top=2cm,bottom=2cm,inner=2cm,outer=3cm]{geometry} \end{exemple} Enfin, l'extension \extension{geometry} permet également de spécifier le format de papier lorsque celui-ci n'est pas standard. Dans ce cas, l'option de classe \classeoption{a4paper} n'est pas utilisée et le format de papier est indiqué grâce aux options \extensionoption{paperwidth} et \extensionoption{paperheight} de l'extension \extension{geometry} : \begin{exemple} \usepackage[paperwidth=17cm,paperheight=24cm]{geometry} \end{exemple} Dans ce cas, les marges utilisées sont celles définies par défaut par l'extension \extension{geometry}. Il est possible de les spécifier explicitement en plus des options \extensionoption{paperwidth} et \extensionoption{paperheight} comme vu précédemment. \section{Définir l'en-tête et le pied de page : l'extension \extension{fancyhdr}} L'extension \extensionindex{fancyhdr} permet très simplement de définir le contenu de l'en-tête et du pied de page. La figure \ref{figure:fancyhdr-structure} montre la structure que l'extension \extension{fancyhdr} donne à l'en-tête et au pied de page. \begin{figure}[!htbp] \begin{syntaxe} en-tête gauche \hfill en-tête central \hfill en-tête droit \vspace{2pt} \hrule \vspace{1cm} \hfill corps de la page \hfill \vspace{1cm} \hrule \vspace{4pt} pied de page gauche \hfill pied de page central \hfill pied de page droit \end{syntaxe} \caption{Structure de l'en-tête et du pied de page avec l'extension \extension{fancyhdr}} \label{figure:fancyhdr-structure} \end{figure} L'en-tête et le pied de page sont constitués chacun d'une partie gauche, d'une partie centrale et d'une partie droite. Chacune de ces parties peut être définie indépendamment des autres. L'en-tête et le pied de page peuvent être séparés du corps du document par un filet. La commande \commandeindex{pagestyle}, utilisée dans le préambule du document avec l'argument \code{fancy}, permet d'utiliser l'extension \extension{fancyhdr} pour la mise en page de l'en-tête et du pied de page : \begin{exemple} \pagestyle{fancy} \end{exemple} Ceci doit être complété, si nécessaire, par la définition de l'épaisseur des filets (voir le paragraphe \ref{section:fancyhdr-filets}). En fonction de la façon dont le document doit être mis en page, on utilisera ensuite les commandes indiquées dans le paragraphe \ref{section:fancyhdr-recto} pour un document mis en page en recto seul ou les commandes indiquées dans le paragraphe \ref{section:fancyhdr-recto-verso} pour un document mis en page en recto-verso. Toutes les commandes décrites par la suite sont à utiliser dans le préambule du document. \subsection{Les filets} \label{section:fancyhdr-filets} L'épaisseur du filet placé au-dessous de l'en-tête peut être définie au moyen de la commande : \begin{exemple} \renewcommand{\headrulewidth}{0.4pt} \end{exemple} Fixer l'épaisseur du filet à \code{0pt} le supprime. De même, l'épaisseur du filet placé au-dessus du pied de page peut être définie au moyen de la commande : \begin{exemple} \renewcommand{\footrulewidth}{0.4pt} \end{exemple} Par défaut, le filet de l'en-tête a une épaisseur de \code{0.4pt} et celui du pied de page a une épaisseur de \code{0pt}. \subsection{En-tête et pied de page dans un document mis en page en recto seul} \label{section:fancyhdr-recto} Les commandes \commandeindex{lhead}, \commandeindex{chead} et \commandeindex{rhead} permettent respectivement de définir la partie gauche, la partie centrale et la partie droite de l'en-tête. Les commandes \commandeindex{lfoot}, \commandeindex{cfoot} et \commandeindex{rfoot} permettent respectivement de définir la partie gauche, la partie centrale et la partie droite du pied de page. L'extension \extension{fancyhdr} ayant une définition par défaut de certaines parties, il est préférable de les définir toutes, en mettant un argument vide à chaque partie qui doit l'être : \begin{exemple} \lhead{} \chead{} \rhead{\textsc{Le titre de mon document}} \lfoot{} \cfoot{\thepage} \rfoot{} \end{exemple} La commande \commandeindex{thepage}\index{numero de page@numéro de page|see{\commande{thepage}}} (qui est gérée automatiquement par \LaTeX) permet d'afficher le numéro de page. \subsection{En-tête et pied de page dans un document mis en page en recto-verso} \label{section:fancyhdr-recto-verso} Dans un document mis en page en recto-verso (grâce à l'option de classe \classeoptionindex{twoside}), il est d'usage d'échanger les parties gauche et droite de l'en-tête et du pied de page entre les pages paire et impaire se faisant face. Pour cela, l'extension \extension{fancyhdr} dispose des commandes \commandeindex{fancyhead} et \commandeindex{fancyfoot}, qui permettent de tenir compte de la parité de la page. Par exemple, l'en-tête et le pied de page de ce manuel sont définis ainsi : \begin{exemple} \fancyhead{} \fancyhead[LE]{\textit{\nouppercase{\leftmark}}} \fancyhead[RO]{\textit{\nouppercase{\rightmark}}} \fancyfoot{} \fancyfoot[C]{\thepage} \end{exemple} Les commandes \commande{fancyhead} et \commande{fancyfoot}, utilisées avec un argument vide, permettent de remettre à zéro la définition des différentes parties de l'en-tête et du pied de page. La commande \commandeindex{leftmark} (qui est gérée automatiquement par \LaTeX) permet d'afficher le numéro du chapitre courant suivi de son titre. La commande \commandeindex{rightmark} (qui est gérée automatiquement par \LaTeX) permet d'afficher le numéro de la section dans laquelle on se trouve au bas de la page suivi de son titre. Ces titres sont par défaut affichés après avoir été convertis en majuscules. La commande \commandeindex{nouppercase}, fournie par l'extension \extension{fancyhdr}, permet de les afficher tels qu'ils ont été saisis dans le document. L'argument optionnel des commandes \commande{fancyhead} et \commande{fancyfoot} permet de déterminer dans quelles conditions doit être imprimé l'argument obligatoire. L'argument optionnel des commandes \commande{fancyhead} et \commande{fancyfoot} est constitué d'une combinaison des lettres indiquées dans le tableau \ref{tableau:fancyhdr-options} ou d'une liste de ces combinaisons, chaque élément étant séparé du suivant par une virgule. \begin{table}[!htbp] \centering \begin{tabular}{>{\ttfamily}cl} \toprule L & partie gauche (\anglais{left}) \\ C & partie centrale (\anglais{center}) \\ R & partie droite (\anglais{right}) \\ \midrule E & pages paires (\anglais{even}) \\ O & pages impaires (\anglais{odd}) \\ \bottomrule \end{tabular} \caption{Arguments optionnels utilisables avec les commandes \commande{fancyhead} et \commande{fancyfoot}} \label{tableau:fancyhdr-options} \end{table} Ainsi, \code{LE} s'applique à la partie gauche des pages paires, \code{RO} à la partie droite des pages impaires, \code{LE,RO} à la partie gauche des pages paires et à la partie droite des pages impaires et ainsi de suite. Lorsque le numéro de page est placé dans l'en-tête, il l'est du côté extérieur des pages (c'est-à-dire à gauche des pages paires et à droite des pages impaires). Le titre courant est alors placé du côté intérieur (c'est-à-dire l'inverse). L'exemple suivant permet de réaliser cette mise en page : \begin{exemple} \fancyhead{} \fancyhead[RE]{\textit{\nouppercase{\leftmark}}} \fancyhead[LO]{\textit{\nouppercase{\rightmark}}} \fancyhead[LE,RO]{\thepage} \fancyfoot{} \end{exemple} À noter que les pages d'ouverture des chapitres ne tiennent pas compte de l'en-tête et du pied de page définis par l'extension \extension{fancyhdr}. Une page d'ouverture de chapitre n'a pas d'en-tête et son pied de page ne comporte que le numéro de page en partie centrale. \section{Changer la police de caractères} Nous avons utilisé jusqu'ici l'extension \extension{lmodern} afin de rédiger nos documents avec la police de caractères Latin Modern. De nombreuses autres polices de caractères sont utilisables avec \LaTeX. Certaines nécessitent l'utilisation de commandes un peu compliquées que nous n'aborderons pas mais d'autres sont utilisables de la même façon que Latin Modern, c'est-à-dire en chargeant simplement une extension. Le tableau \ref{tableau:polices-avec-math} répertorie quelques extensions permettant de déterminer la police de caractères utilisée dans le document. \input{exemples/polices-avec-math.tex} Ces extensions fournissent la police de caractères utilisée pour le texte mais également une police mathématique assortie. Pour cela, avec les extensions \extensionindex{anttor}, \extensionindex{iwona} et \extensionindex{kurier}, il est nécessaire d'utiliser l'option \extensionoption{math}. L'extension \extensionindex{mathdesign}, quant à elle, s'utilise soit avec l'option \extensionoption{charter} pour utiliser la police Bitstream Charter soit avec l'option \extensionoption{utopia} pour utiliser la police Adobe Utopia. Les extensions \extensionindex{arev}, \extensionindex{cmbright}, \extensionindex{gfsartemisia}, \extensionindex{kpfonts}, \extensionindex{lmodern} et \extensionindex{mathdesign} fournissent un ensemble cohérent de polices de caractères permettant de couvrir toutes les commandes de changement de style du tableau \ref{tableau:style-commandes}. Les extensions \extensionindex{anttor}, \extensionindex{ccfonts}, \extensionindex{fourier}, \extensionindex{fouriernc}, \extensionindex{iwona}, \extensionindex{kurier}, \extensionindex{mathpazo} et \extensionindex{mathptmx}, en revanche, ont besoin d'être complétées pour pouvoir utiliser les commandes \commande{textsf} et \commande{texttt} (ou d'autres commandes ou environnements les utilisant). Les extensions le permettant sont indiquées dans le tableau \ref{tableau:polices-complementaires}. \input{exemples/polices-complementaires.tex} Ainsi, il convient de choisir une extension correspondant à la commande \commande{textsf} et une autre correspondant à la commande \commande{texttt}. Pour compléter l'extension \extension{fourier}, par exemple, on peut donc utiliser : \begin{exemple} \usepackage{fourier} \usepackage{helvet} \usepackage{courier} \end{exemple} Par ailleurs, il est préférable d'utiliser l'extension \extensionindex{mathpazo} avec l'option \extensionoption{sc} ou avec l'option \extensionoption{osf}. Ces deux options font utiliser à l'extension \extension{mathpazo} une police de meilleure qualité, avec de vraies petites capitales. En outre, l'option \extensionoption{osf} permet d'utiliser des chiffres français (\oldstylenums{0123456789}) plutôt que des chiffres anglais (0123456789). Les extensions répertoriées dans le tableau \ref{tableau:polices-sans-math} permettent d'utiliser des polices de caractères ne disposant pas d'une police mathématique assortie. Si nécessaire, l'extension \extensionindex{eulervm} permet de leur ajouter une police mathématique générique (dont on peut voir un exemple dans la figure \ref{figure:police-eulervm}). \begin{figure}[!htbp] \centering \setlength{\fboxsep}{1pt} \fbox{\includegraphics{police-eulervm.pdf}} % XXX \index{eulervm@\extension{eulervm} (extension)} \caption{Exemple de document réalisé avec l'extension \extension{eulervm}} \label{figure:police-eulervm} \end{figure} \input{exemples/polices-sans-math.tex} Les extensions \extensionindex{bera}, \extensionindex{bookman} et \extensionindex{newcent} fournissent un ensemble cohérent de polices de caractères permettant de couvrir toutes les commandes de changement de style du tableau \ref{tableau:style-commandes}. Les extensions \extensionindex{chancery}, \extensionindex{charter}, \extensionindex{cyklop}, \extensionindex{tgbonum}, \extensionindex{tgchorus}, \extensionindex{tgpagella}, \extensionindex{tgschola} et \extensionindex{tgtermes}, en revanche, ont besoin d'être complétées par des extensions du tableau \ref{tableau:polices-complementaires}. L'extension \extensionindex{libertine}, quant à elle, n'a besoin d'être complétée que par une extension correspondant à la commande \commande{texttt}. Pour approfondir le sujet, vous pouvez lire \cite[chapitre 7 et § 8.8]{the-latex-companion} et consulter le site suivant, qui présente de nombreuses polices de caractères utilisables avec \LaTeX\ : \begin{toile} \toileurl{http://www.tug.dk/FontCatalogue/} \end{toile} \section{Inclure des graphiques} L'inclusion d'un graphique dans un document \LaTeX\ peut se faire de deux façons : \begin{itemize} \item en faisant appel à une image stockée dans un fichier extérieur (voir le paragraphe \ref{section:includegraphics}) ; \item en décrivant le graphique au sein-même du document \LaTeX\ au moyen d'un langage de description adapté (voir le paragraphe \ref{section:tikz}). \end{itemize} Cette seconde façon de faire présente l'avantage de pouvoir utiliser des expressions rédigées avec \LaTeX\ pour le texte contenu dans le graphique. Ceci permet d'avoir la même police de caractères dans le graphique que dans le texte du document, ce qui offre une meilleure cohérence visuelle. Ceci permet également d'utiliser des expressions mathématiques dans le graphique. Un exemple de graphique réalisé de cette façon est présenté dans la figure \ref{figure:tikz}. Pour ces raisons, c'est souvent cette approche qui est retenue. En témoigne le grand nombre d'extensions de \LaTeX\ permettant de décrire des graphiques au sein-même d'un document et dont les plus répandues sont présentées dans \cite{the-latex-graphics-companion}. L'un des derniers arrivants dans ce domaine, malheureusement trop récent pour disposer d'une description dans \cite{the-latex-graphics-companion} mais néanmoins très prometteur, s'appelle \TikZ. Nous en discuterons rapidement au paragraphe \ref{section:tikz} puisqu'il dispose d'une excellente documentation d'introduction en français à laquelle vous pourrez vous référer pour en savoir plus. \subsection{La commande \commande{includegraphics}} \label{section:includegraphics} Il est possible d'inclure des fichiers aux formats PDF\index{PDF}, PNG\index{PNG} et JPEG\index{JPEG} dans un document \LaTeX, grâce à l'extension \extensionindex{graphicx}. Pour inclure le fichier, on utilise la commande \commandeindex{includegraphics} : \begin{syntaxe} \commande{includegraphics}\argument{fichier} \end{syntaxe} Il est préférable de placer cette commande dans une figure, ce qui permet de donner à l'image une légende et un numéro et surtout de pouvoir la déplacer si elle risque d'être coupée en bas de page. On peut aussi indiquer la taille que l'on désire donner à l'image, en largeur : \begin{syntaxe} \commande{includegraphics}\code{[width=}\var{largeur}\code{]}\argument{fichier} \end{syntaxe} \noindent ou en hauteur : \begin{syntaxe} \commande{includegraphics}\code{[height=}\var{hauteur}\code{]}\argument{fichier} \end{syntaxe} Voici donc le code type d'inclusion d'un fichier au format PDF dans un document \LaTeX\ : \begin{exemple} \documentclass[a4paper,11pt]{article} \usepackage[french]{babel} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{graphicx} \usepackage{microtype} \usepackage{hyperref} \begin{document} [...] \begin{figure}[!htbp] \centering \includegraphics[width=10cm]{fichier.pdf} \caption{Image} \label{figure:image} \end{figure} [...] \end{document} \end{exemple} \subsection{L'extension \TikZ} \label{section:tikz} \index{TikZ@\TikZ} L'extention \TikZ\ permet d'inclure des graphiques dans un document \LaTeX\ au moyen d'un langage de description. Un exemple de graphique réalisé avec \TikZ\ est présenté dans la figure \ref{figure:tikz}. \begin{figure}[!htbp] \centering \input{exemples/tikz.tex} \caption{Exemple de graphique réalisé avec l'extension \TikZ} \label{figure:tikz} \end{figure} L'utilisation de \TikZ\ nécessite le chargement de l'extension \extensionindex{tikz} dans le préambule du document : \begin{exemple} \usepackage{tikz} \end{exemple} L'inclusion d'un graphique se fait ensuite dans le corps du document au moyen de l'environnement \environnementindex{tikzpicture}, qu'on place généralement à l'intérieur d'une figure. Pour vous donner une idée de la façon dont on décrit un graphique avec \TikZ, voici le code source de celui correspondant à la figure \ref{figure:tikz} : \VerbatimInput[fontsize=\small,frame=single,samepage=true]{exemples/tikz.tex} Nous n'irons pas plus loin ici car il existe une excellente documentation d'introduction à \TikZ, en français. Vous pouvez donc vous référer à \cite{tikz-pour-l-impatient} pour en savoir plus sur \TikZ. Par la suite, la lecture de la documentation officielle de \TikZ\ \cite{the-tikz-and-pgf-packages} vous permettra de parfaire vos connaissances. Enfin, le site suivant présente de nombreux exemples de graphiques réalisés avec \TikZ, accompagnés de leur code source, ce qui vous permettra de vous donner un large aperçu de ce qu'il est possible de faire avec \TikZ\ : \begin{toile} \toileurl{http://www.texample.net/tikz/} \end{toile} Signalons également l'existence de l'extension \PGFPlots\ \cite{manual-for-package-pgfplots}, basée sur \TikZ, qui permet de réaliser très simplement des graphiques à partir des coordonnées d'un ensemble de points : \begin{toile} \toileurl{http://pgfplots.sourceforge.net/} \end{toile} \section{Utiliser d'autres classes que les classes standards} Il existe d'autres classes que les classes standards (qui sont indiquées au paragraphe \ref{section:classe}). Certaines permettent de concevoir de nouveaux types de document, comme la classe \classe{beamer} (voir le paragraphe \ref{section:beamer}) qui est utilisée pour concevoir des présentations destinées à être projetées avec un vidéoprojecteur, mais d'autres ont vocation à remplacer les classes standards. À cet effet, elles s'utilisent exactement de la même façon mais proposent des possibilités supplémentaires. C'est le cas de l'ensemble KOMA-Script et de la classe \classe{memoir}. \subsection{KOMA-Script} \label{section:KOMA-Script} L'ensemble KOMA-Script\index{KOMA-Script} fournit des classes \classeindex{scrartcl}, \classeindex{scrreprt} et \classeindex{scrbook} destinées à remplacer respectivement les classes standards \classeindex{article}, \classeindex{report} et \classeindex{book}, comme indiqué dans le tableau \ref{tableau:KOMA-Script}. \begin{table}[!htbp] \centering \begin{tabular}{cc} \toprule \textbf{Classe standard} & \textbf{Classe KOMA-Script} \\ \midrule \classeindex{article} & \classeindex{scrartcl} \\ \classeindex{report} & \classeindex{scrreprt} \\ \classeindex{book} & \classeindex{scrbook} \\ \bottomrule \end{tabular} \caption{Correspondance entre classes standards et classes KOMA-Script} \label{tableau:KOMA-Script} \end{table} Pour utiliser une classe KOMA-Script, il suffit de changer l'argument de la commande \commande{documentclass} dans un document existant ou de créer directement un nouveau document utilisant cette classe. Rien d'autre n'est à changer. On peut omettre les options de classe \classeoption{a4paper} et \classeoption{11pt}, qui sont utilisées par défaut par les classes KOMA-Script. KOMA-Script fournit également la classe \classeindex{scrlttr2}, qui permet d'écrire des lettres (voir le paragraphe \ref{section:scrlttr2}). À la différence des classes indiquées dans le tableau \ref{tableau:KOMA-Script}, la classe \classe{scrlttr2} ne peut être directement utilisée en remplacement de la classe standard \classeindex{letter} car elle utilise une syntaxe différente. L'intérêt des classes KOMA-Script est qu'elles offrent des possibilités absentes des classes standards ou nécessitant l'utilisation d'extensions. Elles permettent en particulier de modifier les marges du document, la présentation des titres, des légendes, de la table des matières et bien d'autres choses. La description des possibilités offertes par KOMA-Script dépasse le cadre de ce manuel. Pour en savoir davantage sur KOMA-Script, vous pouvez vous référer à sa documentation : \begin{toile} \toileurl{http://mirror.ctan.org/macros/latex/contrib/koma-script/scrguien.pdf} \end{toile} \subsection{La classe \classe{memoir}} La classe \classeindex{memoir} est destinée à remplacer les classes standards \classeindex{book} et \classeindex{report}. Elle intègre par ailleurs les fonctionnalités d'un grand nombre d'extensions. Pour qui doit rédiger un ouvrage volumineux et complexe, elle est particulièrement intéressante. Là encore, la description des possibilités offertes par la classe \classe{memoir} dépasse le cadre de ce manuel. Pour en savoir davantage sur la classe \classe{memoir}, vous pouvez vous référer à sa documentation : \begin{toile} \toileurl{http://mirror.ctan.org/macros/latex/contrib/memoir/memman.pdf} \end{toile} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Écrire une lettre : les classes \classe{letter} et \classe{scrlttr2}} \index{lettre} Les chapitres précédents vous ont montré que \LaTeX\ était parfaitement adapté à la conception de documents complexes, avec des tableaux, des formules mathématiques, des graphiques, une bibliographie, un index et une table des matières, mais il permet aussi de réaliser des lettres, qui sont généralement des documents plus simples, au moyen des classes \classe{letter} et \classe{scrlttr2}. Cette dernière, qui offre plus de possibilités et respecte mieux les habitudes de présentation françaises, sera étudiée plus en détail. \section{La classe \classe{letter}} Un document réalisé avec la classe \classeindex{letter} peut contenir plusieurs lettres, chacune figurant dans un environnement \environnementindex{letter}. Celles-ci peuvent comporter la même adresse d'expéditeur et la même signature si ces éléments sont indiqués dans le préambule. La commande \commandeindex{makelabels}, utilisée dans le préambule, permet de générer une page spéciale, contenant uniquement les adresses des destinataires. Si l'on imprime cette page sur une feuille de papier autocollant, on a ainsi des étiquettes que l'on peut coller sur les enveloppes. La figure \ref{figure:letter-source} montre le code source d'une lettre réalisée avec la classe \classe{letter}, la figure \ref{figure:letter-document} montre le document généré. \begin{figure}[!htbp] \VerbatimInput[frame=single]{exemples/letter.tex} \caption{Exemple de lettre réalisée avec la classe \classe{letter} (code source)} \label{figure:letter-source} \end{figure} \begin{figure}[!htbp] \centering \setlength{\fboxsep}{1pt} \fbox{\includegraphics[width=0.9\textwidth]{letter.pdf}} \caption{Exemple de lettre réalisée avec la classe \classe{letter} (document généré)} \label{figure:letter-document} \end{figure} Pour plus d'informations sur la classe \classe{letter}, vous pouvez consulter \cite[pages 84--86]{latex-a-document-preparation-system}. \subsection{Les commandes mutualisables} Certaines indications peuvent être globales pour toutes les lettres d'un même document si les commandes correspondantes sont utilisées dans le préambule. Il s'agit des commandes \commandeindex{address} et \commandeindex{signature}. \subsubsection{La commande \commande{address}} La commande \commandeindex{address} permet de définir le nom et l'adresse postale de l'expéditeur, qui seront imprimés en haut à droite de la lettre. Les différentes lignes du nom et de l'adresse sont séparées par \boiboiindex\ : \begin{exemple} \address{babafou \\ Pays des babasses} \end{exemple} \subsubsection{La commande \commande{signature}} La commande \commandeindex{signature} permet de définir la signature, qui sera imprimée au bas de la lettre. Les différentes lignes de la signature sont séparées par \boiboiindex\ : \begin{exemple} \signature{Ton petit babafou \\ qui t'aime} \end{exemple} \subsection{L'environnement \environnement{letter}} \label{section:letter-letter} Chaque lettre est contenue dans un environnement \environnementindex{letter} dont l'argument est l'adresse du destinataire. Les différentes lignes de l'adresse sont séparées par \boiboiindex. La commande \commandeindex{opening} permet de commencer la lettre proprement dite en imprimant son argument. La commande \commandeindex{closing} la termine par une formule de politesse. Entre ces deux commandes, se situe le texte de la lettre qui peut contenir n'importe quelle commande \LaTeX\ (à l'exception des commandes qui n'ont pas de sens dans une lettre, comme \commande{section}, par exemple). Le document peut contenir plusieurs lettres, chacune figurant dans un environnement \environnement{letter}. Toutes ces lettres auront la même adresse d'expéditeur et la même signature (commandes \commande{address} et \commande{signature}) si celles-ci sont définies dans le préambule. Il est possible de définir une adresse d'expéditeur et une signature différentes pour une lettre particulière en utilisant les commandes \commandeindex{address} et \commandeindex{signature} entre \commande{begin\{letter\}} et \commande{opening}. \section{La classe \classe{scrlttr2}} \label{section:scrlttr2} La classe \classeindex{scrlttr2} fait partie de l'ensemble KOMA-Script (voir le paragraphe \ref{section:KOMA-Script}). À la différence des autres classes fournies par cet ensemble, la classe \classe{scrlttr2} n'est pas un remplaçant direct de la classe \classe{letter}, c'est-à-dire qu'on ne peut pas prendre une lettre écrite avec la classe \classe{letter} et simplement remplacer l'argument de la commande \commande{documentclass} pour utiliser la classe \classe{scrlttr2}. Les différences sont néanmoins minimes. La classe \classe{scrlttr2} offre plus de possibilités que la classe \classe{letter} et respecte mieux les habitudes de présentation françaises. La figure \ref{figure:scrlttr2-source} montre le code source d'une lettre réalisée avec la classe \classe{scrlttr2}, la figure \ref{figure:scrlttr2-document} montre le document généré. \begin{figure}[!htbp] \VerbatimInput[frame=single]{exemples/scrlttr2.tex} \caption{Exemple de lettre réalisée avec la classe \classe{scrlttr2} (code source)} \label{figure:scrlttr2-source} \end{figure} \begin{figure}[!htbp] \centering \setlength{\fboxsep}{1pt} \fbox{\includegraphics[width=0.9\textwidth]{scrlttr2.pdf}} \caption{Exemple de lettre réalisée avec la classe \classe{scrlttr2} (document généré)} \label{figure:scrlttr2-document} \end{figure} \subsection{L'option de classe \classeoption{NF}} L'option de classe \classeoptionindex{NF} permet de générer une lettre respectant la norme française NF Z 11-001 : \begin{exemple} \documentclass[NF]{scrlttr2} \end{exemple} En particulier, ceci positionne l'adresse du destinataire au bon endroit pour qu'elle apparaisse correctement dans une enveloppe à fenêtre une fois pliée. Rappelons que l'utilisation des options de classe \classeoption{a4paper} et \classeoption{11pt} n'est pas nécessaire avec les classes KOMA-Script (voir le paragraphe \ref{section:KOMA-Script}). \subsection{Les variables} Le paramétrage de la lettre se fait au moyen de \emph{variables} qui sont spécifiées grâce à la commande \commandeindex{setkomavar}, dont le premier argument indique la variable à renseigner et le second la valeur à lui attribuer : \begin{syntaxe} \commande{setkomavar}\argument{variable}\argument{valeur} \end{syntaxe} La commande \commande{setkomavar} est généralement utilisée dans le préambule, auquel cas les variables renseignées de cette façon ont la même valeur pour toutes les lettres du document. Il est également possible de l'utiliser dans le corps du document, à l'extérieur des environnements \environnement{letter}, auquel cas les variables renseignées de cette façon ont la même valeur pour toutes les lettres qui suivent. Si la valeur d'une variable doit être scindée en plusieurs lignes, celles-ci doivent être séparées par \boiboiindex. Le tableau \ref{tableau:scrlttr2-variables} indique les plus employées des variables utilisables avec la classe \classe{scrlttr2} (il en existe un peu plus d'une trentaine). \begin{table}[!htbp] \centering \begin{tabular}{ll} \toprule \multicolumn{1}{c}{\textbf{Variable}} & \multicolumn{1}{c}{\textbf{Signification}} \\ \midrule \komavarindex{date} & date \\ \komavarindex{fromaddress} & adresse de l'expéditeur \\ \komavarindex{fromname} & nom de l'expéditeur \\ \komavarindex{myref} & référence de la lettre \\ \komavarindex{signature} & signature \\ \komavarindex{subject} & objet de la lettre \\ \komavarindex{yourref} & référence de la lettre à laquelle on répond \\ \bottomrule \end{tabular} \caption{Variables utilisables avec la classe \classe{scrlttr2}} \label{tableau:scrlttr2-variables} \end{table} Si la variable \komavar{date} n'est pas renseignée, la date du jour de la compilation est indiquée automatiquement dans la lettre. Contrairement à la classe \classe{letter}, dans laquelle la commande \commande{address} sert à définir le nom et l'adresse de l'expéditeur, la classe \classe{scrlttr2} utilise deux variables différentes, \komavar{fromname} pour le nom et \komavar{fromaddress} pour l'adresse. Si la variable \komavar{signature} n'est pas renseignée, la valeur de la variable \komavar{fromname} est utilisée comme signature. \subsection{Les options} \label{section:scrlttr2-options} Certains détails de mise en page peuvent être modifiés grâce à la commande \commandeindex{KOMAoptions} (qui n'a pas été utilisée dans l'exemple de la figure \ref{figure:scrlttr2-source}). Employée dans le préambule du document, celle-ci impacte toutes les lettres du document. Il est également possible de limiter la portée de certaines options à une seule lettre (voir le paragraphe \ref{section:scrlttr2-letter}). Il existe de nombreuses options. Nous n'en étudierons que deux. Vous pouvez vous reporter à la documentation de KOMA-Script pour avoir une description des autres. L'option \komaoptionindex{backaddress} permet de supprimer l'adresse de retour écrite en petits caractères au-dessus de l'adresse du destinataire et ayant vocation à être visible dans la fenêtre de l'enveloppe : \begin{exemple} \KOMAoptions{backaddress=false} \end{exemple} L'option \komaoptionindex{foldmarks} permet de supprimer les marques facilitant le pliage de la lettre (qui n'ont par exemple pas de sens lorsque la lettre n'est pas envoyée par courrier postal mais par courriel sous forme de fichier PDF) : \begin{exemple} \KOMAoptions{foldmarks=hp} \end{exemple} Lorsqu'on utilise plusieurs options, il est possible de les regrouper dans la même commande \commande{KOMAoptions} en séparant chaque option de la suivante par une virgule : \begin{exemple} \KOMAoptions{backaddress=false,foldmarks=hp} \end{exemple} \noindent qu'on peut également écrire : \begin{exemple} \KOMAoptions { backaddress = false , foldmarks = hp } \end{exemple} \subsection{L'environnement \environnement{letter}} \label{section:scrlttr2-letter} L'environnement \environnementindex{letter} de la classe \classe{scrlttr2} s'utilise exactement comme celui de la classe \classe{letter} (voir le paragraphe \ref{section:letter-letter}). Pour appliquer certaines options (voir le paragraphe \ref{section:scrlttr2-options}) à une lettre en particulier, on utilise l'argument optionnel de l'environnement \environnement{letter} avec la même syntaxe que la commande \commande{KOMAoptions} : \begin{exemple} \begin{letter}[foldmarks=hp]{Père Noël \\ Dans les nuages} \end{exemple} \section{Règles typographiques} \label{section:typographie-adresse-téléphone} \index{typographie} \subsection{Adresse} La Poste recommande : \begin{itemize} \item d'écrire une adresse sur six lignes au maximum ; \item de ne jamais mettre de virgule après le numéro de rue ; \item d'écrire en majuscules la dernière ligne, sans accents ni ponctuation (ce qui est contraire à toutes les règles typographiques mais facilite, paraît-il, la reconnaissance optique) et si possible l’ensemble de l’adresse. \end{itemize} Ce qui donne, par exemple : \begin{exemple} Séraphin Lampion 51 rue des Bouffonneries 72530 YVRE L EVEQUE \end{exemple} \begin{toile} \toileurl{http://www.laposte.fr/Particulier/Envoyez-et-recevez-du-courrier/Les-offres-et-conseils-pas-a-pas/2.-Redaction-des-adresses} \toileurl{http://www.orthotypographie.fr/volume-I/accolade-allemand.html\#Adresse} \end{toile} \subsection{Numéro de téléphone} Un numéro de téléphone (du moins en France) se compose de cinq groupes de deux chiffres séparés par des espaces (pas de point ni de tiret) : \begin{exemple} 01 23 45 67 89 \end{exemple} Il en est de même pour un numéro de télécopieur. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Rédiger un CV} \index{CV} De nombreux recruteurs exigent sans vergogne une lettre de motivation et un CV au seul format Word. D'autres, plus ouverts d'esprit et en phase avec leur époque, acceptent volontiers le format PDF. C'est l'occasion de rédiger son CV avec \LaTeX. Nous étudierons d'abord la classe \classe{moderncv}, qui produit probablement le résultat le plus joli, puis la classe \classe{curve} et enfin l'extension \classe{currvita}. La lecture de l'article \cite{writing-the-curriculum-vitae-with-latex} complètera ce chapitre. Il contient quelques indications sur la façon de rédiger un CV ainsi qu'un tour d'horizon des classes permettant de rédiger un CV. Par ailleurs, les règles typographiques indiquées au paragraphe \ref{section:typographie-adresse-téléphone} au sujet de l'adresse et du numéro de téléphone sont également valables dans un CV. \section{La classe \classe{moderncv}} La classe \classeindex{moderncv} permet très simplement de rédiger un CV d'aspect sobre et efficace, qu'on peut agrémenter d'une touche de couleur et d'une photo. La figure \ref{figure:moderncv-source} montre le code source d'un CV réalisé avec la classe \classe{moderncv}, la figure \ref{figure:moderncv-casual-document} montre le document généré avec le thème \theme{casual} et la figure \ref{figure:moderncv-classic-document} montre le document généré avec le thème \theme{classic}. \begin{figure}[!htbp] \VerbatimInput[frame=single,lastline=33,numbers=left]{exemples/moderncv.tex} \caption{Exemple de CV réalisé avec la classe \classe{moderncv} (code source)} \label{figure:moderncv-source} \end{figure} \begin{figure}[!htbp] \ContinuedFloat \VerbatimInput[firstline=34,frame=single,lastline=69,numbers=left]{exemples/moderncv.tex} \caption[]{Exemple de CV réalisé avec la classe \classe{moderncv} (code source)} \end{figure} \begin{figure}[!htbp] \ContinuedFloat \VerbatimInput[firstline=70,frame=single,numbers=left]{exemples/moderncv.tex} \caption[]{Exemple de CV réalisé avec la classe \classe{moderncv} (code source)} \end{figure} \begin{figure}[!htbp] \centering \setlength{\fboxsep}{1pt} \fbox{\includegraphics[width=0.9\textwidth]{moderncv-casual.pdf}} \caption{Exemple de CV réalisé avec la classe \classe{moderncv}, thème \theme{casual} (document généré)} \label{figure:moderncv-casual-document} \end{figure} \begin{figure}[!htbp] \centering \setlength{\fboxsep}{1pt} \fbox{\includegraphics[width=0.9\textwidth]{moderncv-classic.pdf}} \caption{Exemple de CV réalisé avec la classe \classe{moderncv}, thème \theme{classic} (document généré)} \label{figure:moderncv-classic-document} \end{figure} \subsection{Les thèmes} En effet, l'aspect de l'en-tête et du pied de page du CV dépend du \emph{thème}\index{theme@thème (\classe{moderncv})} utilisé. La commande \commandeindex{moderncvtheme}, utilisée dans le préambule du document, permet d'en définir le thème grâce à son argument, qui peut être soit \moderncvthemeindex{casual} soit \moderncvthemeindex{classic} : \begin{exemple} \moderncvtheme{classic} \end{exemple} Comme on peut le voir dans la figure \ref{figure:moderncv-casual-document}, le thème \theme{casual} place une partie des informations personnelles dans l'en-tête et le reste dans le pied de page. Le thème \theme{classic}, en revanche, place toutes les informations personnelles dans l'en-tête, comme on peut le voir dans la figure \ref{figure:moderncv-classic-document}. Il est plus utile pour un recruteur d'avoir toutes les informations personnelles au même endroit donc il est recommandé d'utiliser plutôt le thème \theme{classic}. L'argument optionnel de la commande \commande{moderncvtheme}, qui peut valoir \code{blue} (c'est la valeur par défaut), \code{green}, \code{grey}, \code{orange} ou \code{red}, permet de choisir la couleur des rubriques : \begin{exemple} \moderncvtheme[green]{classic} \end{exemple} On peut y ajouter l'option \code{roman} pour utiliser dans les rubriques une police à empattement plutôt que la police sans empattement utilisée par défaut : \begin{exemple} \moderncvtheme[green,roman]{classic} \end{exemple} \subsection{Les informations personnelles} Les informations personnelles sont renseignées dans le préambule. On peut en voir un exemple dans la figure \ref{figure:moderncv-source}, de la ligne 16 à la ligne 27. La commande \commandeindex{firstname} (obligatoire) permet d'indiquer le prénom : \begin{exemple} \firstname{Séraphin} \end{exemple} La commande \commandeindex{familyname} (obligatoire) permet d'indiquer le nom de famille : \begin{exemple} \familyname{Lampion} \end{exemple} La commande \commandeindex{title} (optionnelle) permet d'indiquer le titre du CV (qui correspond souvent au poste actuel ou au poste recherché), qui n'est affiché qu'avec le thème \theme{classic} : \begin{exemple} \title{Représentant en assurances} \end{exemple} La commande \commandeindex{address} (optionnelle) permet d'indiquer l'adresse postale. Son premier argument contient le numéro et la rue, qu'on peut scinder en plusieurs lignes avec \boiboiindex\ si nécessaire. Son second argument contient le code postal et la ville. \begin{exemple} \address{Place de la mairie}{99999 MOULINSART} \end{exemple} La commande \commandeindex{mobile} (optionnelle) permet d'indiquer le numéro de téléphone mobile : \begin{exemple} \mobile{06 02 03 04 05} \end{exemple} La commande \commandeindex{phone} (optionnelle) permet d'indiquer le numéro de téléphone fixe : \begin{exemple} \phone{01 02 03 04 05} \end{exemple} La commande \commandeindex{fax} (optionnelle) permet d'indiquer le numéro de télécopieur : \begin{exemple} \fax{01 02 03 04 05} \end{exemple} La commande \commandeindex{email} (optionnelle) permet d'indiquer l'adresse électronique : \begin{exemple} \email{lampion@mondass.fr} \end{exemple} La commande \commandeindex{extrainfo} (optionnelle) permet d'indiquer des informations supplémentaires, qu'on peut scinder en plusieurs lignes avec \boiboiindex\ si nécessaire : \begin{exemple} \extrainfo{Marié \\ beaucoup d'enfants} \end{exemple} La commande \commandeindex{photo} (optionnelle) permet d'indiquer le nom du fichier au format PDF, PNG ou JPEG contenant la photo : \begin{exemple} \photo{seraphin-lampion.jpg} \end{exemple} On peut en fixer la hauteur au moyen de l'argument optionnel de la commande \commande{photo} : \begin{exemple} \photo[3cm]{seraphin-lampion.jpg} \end{exemple} La commande \commandeindex{quote} (optionnelle) permet d'indiquer un texte qui sera affiché entre les informations personnelles et les rubriques du CV : \begin{exemple} \quote{Je vais vous fignoler un amour de petit contrat...} \end{exemple} Enfin, la commande \commandeindex{maketitle}, utilisée au début du corps du document, permet d'imprimer ces informations, en fonction du thème choisi. \subsection{Les rubriques} Les rubriques du CV sont indiquées au moyen des commandes \commandeindex{section} et \commandeindex{subsection} (les autres commandes de hiérarchisation n'existent pas dans la classe \classe{moderncv}). Elles sont composées dans la couleur indiquée par l'argument optionnel de la commande \commande{moderncvtheme} (bleu par défaut). Les sections sont précédées d'une barre horizontale de la même couleur. \subsection{Le contenu des rubriques} Selon sa nature, le contenu des rubriques peut être indiqué à l'aide d'une des six commandes suivantes. Quatre d'entre elles utilisent l'espace situé sous la barre horizontale des sections, qu'on appellera \emph{partie gauche}. Toutes utilisent l'espace situé sous le titre des sections, qu'on appellera \emph{partie droite}. \subsubsection{La commande \commande{cventry}} La commande \commandeindex{cventry} est généralement utilisée pour décrire l'expérience professionnelle et la formation : \begin{exemple} \cventry{1955 -- 1958}{Diplôme de représentant} {École de la vie}{Bruxelles}{option « embobinage »} {Une formation ambitieuse qui développe l'assurance en soi.} \end{exemple} La commande \commandeindex{cventry} accepte six arguments. Certains d'entre eux peuvent ne pas être renseignés, auquel cas il convient de conserver néanmoins les couples d'accolades correspondants comme on peut le voir dans la figure \ref{figure:moderncv-source} à la ligne 36. Le premier argument est placé dans la partie gauche. Il est utilisé pour indiquer un intervalle temporel correspondant au poste ou à la formation. Les arguments suivants sont placés dans la partie droite. Le deuxième argument est composé en gras, suivi du troisième argument, composé en italique. L'un d'entre eux est utilisé pour indiquer le poste occupé ou le diplôme obtenu, l'autre pour indiquer l'entreprise ou l'organisme de formation. Les quatrième et cinquième arguments sont composés à la suite et sont utilisés pour toute information complémentaire (option suivie dans le cas de la formation, par exemple). Le sixième argument est composé sous la ligne formée par les précédents et permet de développer le poste occupé ou la formation suivie. On y utilise généralement l'environnement \environnement{itemize} comme on peut le voir dans la figure \ref{figure:moderncv-source}, de la ligne 37 à la ligne 43. \subsubsection{La commande \commande{cvcomputer}} La commande \commandeindex{cvcomputer} est utilisée pour indiquer ses compétences en informatique mais on peut l'utiliser pour indiquer tout autre chose dans un domaine différent : \begin{exemple} \cvcomputer{Humour}{Les histoires de mon oncle Anatole.} {Enfumage}{Je parle beaucoup...} \end{exemple} La commande \commandeindex{cvcomputer} accepte quatre arguments qui sont composés sous la forme d'un tableau de quatre colonnes. La première colonne est placée dans la partie gauche, les suivantes dans la partie droite. Les deux derniers arguments peuvent ne pas être renseignés, auquel cas il convient de conserver néanmoins les couples d'accolades correspondants comme on peut le voir dans la figure \ref{figure:moderncv-source} à la ligne 61. Les premier et troisième arguments font office de titre ou de catégorie pour l'argument suivant, les deuxième et quatrième de description. \subsubsection{La commande \commande{cvlanguage}} La commande \commandeindex{cvlanguage} permet d'indiquer les langues étrangères : \begin{exemple} \cvlanguage{Belge}{courant}{langue maternelle} \cvlanguage{Espagnol}{notions}{} \end{exemple} La commande \commandeindex{cvlanguage} accepte trois arguments. Le premier argument, placé dans la partie gauche, indique la langue. Le deuxième argument, composé en gras, indique le niveau. Le troisième argument permet d'indiquer un commentaire qui est composé en italique. Ce dernier peut ne pas être renseigné, auquel cas il convient de conserver néanmoins le couple d'accolades correspondant comme on peut le voir dans la figure \ref{figure:moderncv-source} à la ligne 72. \subsubsection{La commande \commande{cvline}} La commande \commandeindex{cvline} affiche ses deux arguments sur une ligne, le premier dans la partie gauche et le second dans la partie droite : \begin{exemple} \cvline{Association}{Président du « Volant Club »} \end{exemple} La commande \commande{cvline} peut par exemple être utilisée pour indiquer ses activités extra-professionnelles. \subsubsection{La commande \commande{cvlistitem}} La commande \commandeindex{cvlistitem} affiche son unique argument précédé d'un gros point dans la partie droite : \begin{exemple} \cvlistitem{Général Alcazar} \end{exemple} \subsubsection{La commande \commande{cvlistdoubleitem}} La commande \commandeindex{cvlistdoubleitem} affiche sur la même ligne ses deux arguments, chacun précédé d'un gros point, dans la partie droite : \begin{exemple} \cvlistdoubleitem{Château de Moulinsart}{Bianca Castafiore} \end{exemple} \subsection{Modifier la taille de la partie gauche} En fonction des informations figurant dans la partie gauche, il peut être nécessaire d'en augmenter la taille. Au contraire, il est parfois utile de la réduire. Ceci se fait au moyen des commandes suivantes, utilisées dans le préambule du document : \begin{exemple} \setlength{\hintscolumnwidth}{45mm} \AtBeginDocument{\recomputelengths} \end{exemple} La longueur \code{45mm} est à adapter pour obtenir une partie gauche de la taille voulue. \section{La classe \classe{curve}} La classe \classeindex{curve} permet de réaliser facilement un CV d'apparence classique. La figure \ref{figure:curve-source} montre le code source d'un CV réalisé avec la classe \classe{curve}, la figure \ref{figure:curve-document} montre le document généré. \begin{figure}[!htbp] \VerbatimInput[frame=single,numbers=left]{exemples/curve.tex} \caption{Exemple de CV réalisé avec la classe \classe{curve} (code source)} \label{figure:curve-source} \end{figure} \begin{figure}[!htbp] \centering \setlength{\fboxsep}{1pt} \fbox{\includegraphics[width=0.9\textwidth]{curve.pdf}} \caption{Exemple de CV réalisé avec la classe \classe{curve} (document généré)} \label{figure:curve-document} \end{figure} La classe \classe{curve} s'utilise avec les options de classe habituelles, auxquelles on ajoute l'option de classe \classeoption{french}. En effet, lorsqu'une rubrique est interrompue par une fin de page, le titre de cette rubrique est repris en haut de la page suivante en lui ajoutant « (suite) ». Pour que ceci soit affiché dans la bonne langue, il est donc nécessaire d'indiquer à la classe \classe{curve} dans quelle langue le CV est rédigé (en plus de l'utilisation de l'extension \extension{babel}). Remarquez que l'extension \extension{geometry} (voir le paragraphe \ref{section:geometry}) a été utilisée afin de réduire les marges de tête et de pied du document pour que le CV tienne sur une seule page. \subsection{Les informations personnelles} Les informations personnelles sont placées dans l'en-tête et le titre du CV. La commande \commandeindex{leftheader}, utilisée dans le préambule du document, permet de définir la partie gauche de l'en-tête du CV. Elle peut contenir plusieurs lignes séparées par \boiboiindex\ : \begin{exemple} \leftheader{Place de la mairie \\ 99999 MOULINSART \\ téléphone : 01 02 03 04 05 \\ courriel : lampion@mondass.fr} \end{exemple} Sur le même principe, la commande \commandeindex{rightheader}, utilisée dans le préambule du document, permet de définir la partie droite de l'en-tête du CV : \begin{exemple} \rightheader{Marié \\ beaucoup d'enfants} \end{exemple} La commande \commandeindex{photo}, utilisée dans le préambule du document, permet d'indiquer le nom du fichier au format PDF, PNG ou JPEG contenant la photo : \begin{exemple} \photo{seraphin-lampion.jpg} \end{exemple} La photo est par défaut placée à gauche, entre la marge et l'en-tête. L'argument optionnel de la commande \commande{photo} permet de la placer au centre s'il vaut \code{c} ou à droite, entre l'en-tête et la marge, s'il vaut \code{r} : \begin{exemple} \photo[c]{seraphin-lampion.jpg} \end{exemple} La commande \commandeindex{photoscale}, utilisée dans le préambule du document, permet d'indiquer la fraction de la largeur du CV alloué à la photo, entre 0 et 1 (elle est par défaut de 0,1 soit 10 \%) : \begin{exemple} \photoscale{0.12} \end{exemple} La commande \commandeindex{title}, utilisée dans le préambule du document, permet d'indiquer le titre du CV (qu'on utilise généralement pour indiquer le prénom et le nom) : \begin{exemple} \title{Séraphin Lampion} \end{exemple} La commande \commandeindex{subtitle}, utilisée dans le préambule du document, permet d'indiquer le sous-titre du CV (qu'on utilise généralement pour indiquer le poste actuel ou le poste recherché) : \begin{exemple} \subtitle{Représentant en assurances} \end{exemple} La commande \commandeindex{makeheaders}, utilisée dans le corps du document, permet d'imprimer l'en-tête. Ses deux parties sont par défaut centrées verticalement. L'argument optionnel de la commande \commande{makeheaders} permet de aligner en haut s'il vaut \code{t} et en bas s'il vaut \code{b} : \begin{exemple} \makeheaders[t] \end{exemple} La commande \commandeindex{maketitle}, utilisée dans le corps du document, permet d'imprimer le titre et le sous-titre : \begin{exemple} \maketitle \end{exemple} \subsection{Les rubriques} Les rubriques du CV doivent être contenues chacune dans un fichier propre et appelées depuis le fichier principal au moyen de la commande \commandeindex{makerubric}, dont l'argument est le nom du fichier contenant la rubrique, sans son extension \path{.tex} : \begin{exemple} \makerubric{curve-experience} \makerubric{curve-references} \makerubric{curve-methodologies} \makerubric{curve-formation} \makerubric{curve-langues} \makerubric{curve-extra} \end{exemple} Les figures \ref{figure:curve-experience-source} à \ref{figure:curve-extra-source} montrent les codes sources des rubriques. \begin{figure}[!htbp] \VerbatimInput[frame=single,numbers=left]{exemples/curve-experience.tex} \caption{Exemple de CV réalisé avec la classe \classe{curve} (code source du fichier \protect\path{curve-experience.tex})} \label{figure:curve-experience-source} \end{figure} \begin{figure}[!htbp] \VerbatimInput[frame=single,numbers=left]{exemples/curve-references.tex} \caption{Exemple de CV réalisé avec la classe \classe{curve} (code source du fichier \protect\path{curve-references.tex})} \label{figure:curve-references-source} \end{figure} \begin{figure}[!htbp] \VerbatimInput[frame=single,numbers=left]{exemples/curve-methodologies.tex} \caption{Exemple de CV réalisé avec la classe \classe{curve} (code source du fichier \protect\path{curve-methodologies.tex})} \label{figure:curve-methodologies-source} \end{figure} \begin{figure}[!htbp] \VerbatimInput[frame=single,numbers=left]{exemples/curve-formation.tex} \caption{Exemple de CV réalisé avec la classe \classe{curve} (code source du fichier \protect\path{curve-formation.tex})} \label{figure:curve-formation-source} \end{figure} \begin{figure}[!htbp] \VerbatimInput[frame=single,numbers=left]{exemples/curve-langues.tex} \caption{Exemple de CV réalisé avec la classe \classe{curve} (code source du fichier \protect\path{curve-langues.tex})} \label{figure:curve-langues-source} \end{figure} \begin{figure}[!htbp] \VerbatimInput[frame=single,numbers=left]{exemples/curve-extra.tex} \caption{Exemple de CV réalisé avec la classe \classe{curve} (code source du fichier \protect\path{curve-extra.tex})} \label{figure:curve-extra-source} \end{figure} Chaque rubrique est contenue dans un environnement \environnementindex{rubric}, dont l'argument indique le titre de la rubrique. Les titres des rubriques sont centrés par défaut. Ceci peut être modifié au moyen de la commande \commandeindex{rubricalignment}, utilisée dans le préambule, qui permet de les aligner à gauche si son argument vaut \code{l} ou à droite si son argument vaut \code{r} : \begin{exemple} \rubricalignment{l} \end{exemple} Le contenu de chaque rubrique est constitué d'une ou plusieurs commandes \commandeindex{entry*} (avec une étoile). Son argument optionnel, s'il est présent, est placé sur la gauche. Ce qui suit la commande \commande{entry*} est placé sur la droite. Il est important de ne pas laisser de lignes blanches à l'intérieur de l'environnement \environnement{rubric}. En effet, en raison de la façon dont celui-ci est conçu, cela se traduit par des lignes blanches dans le document généré. \section{L'extension \classe{currvita}} L'extension \extensionindex{currvita} permet de réaliser rapidement un CV plutôt dépouillé. La figure \ref{figure:currvita-source} montre le code source d'un CV réalisé avec l'extension \classe{currvita}, la figure \ref{figure:currvita-document} montre le document généré. \begin{figure}[!htbp] \VerbatimInput[frame=single,lastline=37,numbers=left]{exemples/currvita.tex} \caption{Exemple de CV réalisé avec l'extension \extension{currvita} (code source)} \label{figure:currvita-source} \end{figure} \begin{figure}[!htbp] \ContinuedFloat \VerbatimInput[firstline=38,frame=single,lastline=75,numbers=left]{exemples/currvita.tex} \caption[]{Exemple de CV réalisé avec l'extension \extension{currvita} (code source)} \end{figure} \begin{figure}[!htbp] \ContinuedFloat \VerbatimInput[firstline=76,frame=single,numbers=left]{exemples/currvita.tex} \caption[]{Exemple de CV réalisé avec l'extension \extension{currvita} (code source)} \end{figure} \begin{figure}[!htbp] \centering \setlength{\fboxsep}{1pt} \fbox{\includegraphics[width=0.9\textwidth]{currvita.pdf}} \caption{Exemple de CV réalisé avec l'extension \extension{currvita} (document généré)} \label{figure:currvita-document} \end{figure} L'extension \extension{currvita} s'utilise en complément d'une classe non spécialisée dans la rédaction de CV. Celle-ci peut être \classe{article} ou \classe{scrartcl} pour créer un CV autonome mais on peut également inclure un CV dans un document plus volumineux (par exemple un dossier de candidature créé avec une classe telle que \classe{report} ou \classe{scrreprt}). L'extension \extension{currvita} doit donc être chargée dans le préambule du document. Il est intéressant d'utiliser l'option \extensionoption{NoDate}, qui évite l'impression de la date de compilation à la suite du CV : \begin{exemple} \usepackage[NoDate]{currvita} \end{exemple} Dans un CV autonome, il est inutile d'utiliser l'extension \extension{hyperref} car l'extension \extension{currvita} n'en tire pas parti. L'environnement \environnementindex{cv} délimite le CV. Il s'utilise avec un argument qui contient le titre à placer en tête du CV (qu'on peut laisser vide si l'on n'en souhaite pas) : \begin{exemple} \begin{cv}{Séraphin Lampion --- Représentant en assurances} [...] \end{cv} \end{exemple} À l'intérieur de l'environnement \environnement{cv}, les rubriques du CV sont réalisées au moyen d'autant d'environnements \environnementindex{cvlist}, dont l'argument indique le titre de la rubrique : \begin{exemple} \begin{cvlist}{Expérience professionnelle} \item[1958 -- 1983] Représentant, Assurances Mondass, Paris \begin{itemize} \item Démarchage à domicile. \item Recherche d'opportunités. \item Établissement de contrats. \end{itemize} \end{cvlist} \end{exemple} Le contenu de chaque rubrique est constitué d'une ou plusieurs commandes \commandeindex{item}. Son argument optionnel, s'il est présent, est placé sur la gauche. Ce qui suit la commande \commande{item} est placé sur la droite. Enfin, la commande suivante, placée dans le corps du document (pas dans le préambule) et avant d'utiliser l'environnement \environnement{cv}, permet de modifier la largeur de la partie gauche : \begin{exemple} \setlength{\cvlabelwidth}{25mm} \end{exemple} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Faire une présentation : les classes \classe{slides} et \classe{beamer}} \index{présentation} En bureautique, beaucoup utilisent deux logiciels différents, un pour le traitement de texte et un autre pour les présentations. C'est regrettable parce que cela complique la réalisation conjointe d'un document écrit et de la présentation associée, cette dernière devant généralement emprunter certains éléments figurant dans le premier. Avec \LaTeX, le problème ne se pose pas car il permet également de réaliser des présentations. Pour cela, on peut utiliser : \begin{itemize} \item la classe \classe{slides}, qui est fournie en standard avec \LaTeX\ et qui est destinée à réaliser des transparents qu'on imprime et qu'on projette avec un rétroprojecteur ; \item la classe \classe{beamer}, qui n'est pas standard mais qui figure dans la plupart des installations \LaTeX\ et qui est destinée à réaliser des présentations au format PDF pouvant être projetées avec un vidéoprojecteur (grâce à la fonction d'affichage en plein écran des logiciels de visualisations de fichiers PDF). \end{itemize} Signalons également l'existence des classes \classe{seminar}\footnote{\url{http://www.tug.org/applications/Seminar/}} et \classe{prosper}\footnote{\url{http://prosper.sourceforge.net/prosper.html}}, qui n'ont aujourd'hui d'autre intérêt qu'historique. Sauf si vous avez besoin de modifier des présentations utilisant l'une de ces classes, il est préférable d'utiliser \classe{beamer} pour réaliser de nouvelles présentations. \section{La classe \classe{slides}} La classe \classeindex{slides} permet de réaliser des transparents très simples. Le corps du document contient un ou plusieurs environnements \environnementindex{slide}, dont chacun contient le texte d'un transparent : \VerbatimInput[frame=single,samepage=true]{exemples/slides.tex} Ce document produit un unique transparent (puisqu'il n'y a qu'un seul environnement \environnement{slide}, mais on aurait pu en mettre plusieurs à la suite). Vous pouvez en voir le résultat dans la figure \ref{figure:transparent}. \begin{figure}[!htbp] \centering \setlength{\fboxsep}{1pt} \fbox{\includegraphics[width=0.9\textwidth]{slides.pdf}} \caption{Exemple de transparent réalisé avec la classe \classe{slides}} \label{figure:transparent} \end{figure} Dans l'environnement \environnement{slide} : \begin{itemize} \item le texte est écrit en gros caractères ; \item il est écrit dans une police linéale ; \item il est centré verticalement ; \item chaque page est numérotée dans le coin inférieur droit. \end{itemize} Vous pouvez utiliser avec la classe \classe{slides} la plupart des commandes et des environnements de \LaTeX\ qui ont un sens dans un transparent (par exemple, des commandes comme les commandes de hiérarchisation ne sont pas utiles dans les transparents et n'existent donc pas dans la classe \classe{slides}). Il n'existe pas de liste des commandes et environnements de \LaTeX\ non disponibles dans la classe \classe{slides} donc, dans le doute, essayez ! Pour plus de renseignements sur la classe \classe{slides}, vous pouvez consulter \cite[pages 80--84]{latex-a-document-preparation-system}. \section{La classe \classe{beamer}} \label{section:beamer} De nos jours le vidéoprojecteur a quasiment partout remplacé le rétroprojecteur et les ternes transparents d'antan ont laissé la place à des présentations multicolores. À cet effet, la classe \classeindex{beamer} permet de réaliser des présentations au format PDF bénéficiant de la toute la puissance de \LaTeX. Utiliser le format PDF pour les présentations offre de nombreux avantages : \begin{itemize} \item il s'agit d'un format universel, visualisable aussi bien sur un ordinateur que sur un téléphone mobile évolué ; \item il s'agit d'un format ouvert, qui n'est pas lié à un logiciel spécifique ; \item la possibilité de visualiser les documents PDF directement dans un butineur facile leur diffusion sur la toile ; \item les documents PDF sont généralement de taille raisonnable. \end{itemize} L'aspect des présentations peut être modifié au moyen de thèmes, qui seront abordés au paragraphe \ref{section:beamer-themes}. Ces thèmes peuvent également être personnalisés (modification des couleurs, ajout d'un logo), comme nous le verrons au paragraphe \ref{section:beamer-personnalisation}. \subsection{Structure d'une présentation} La structure d'une présentation réalisée avec la classe \classe{beamer} est indiquée dans la figure \ref{figure:beamer-struture}. \begin{figure}[!htbp] \begin{exemple} \documentclass{beamer} \usepackage[french]{babel} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{microtype} % reste du préambule \begin{document} \begin{frame} [...] \end{frame} \begin{frame} [...] \end{frame} [...] \end{document} \end{exemple} \caption{Structure d'une présentation réalisée avec la classe \classe{beamer}} \label{figure:beamer-struture} \end{figure} Il est généralement inutile d'indiquer des options de classe avec \classe{beamer}. En effet, la taille du papier n'a ici pas de sens et la fonte par défaut est suffisamment grande pour une projection sur écran. Il est également inutile de charger l'extension \extension{hyperref} car \classe{beamer} le fait automatiquement. Le corps du document contient une suite d'environnements \environnementindex{frame}, chacun contenant une page de la présentation. \subsection{La page de titre} \index{page de titre} La première page d'une présentation est la page de titre. Elle utilise différentes indications figurant dans le préambule : \begin{exemple} \title{Mon oncle Anatole} \subtitle{Sa vie, son œuvre} \author{Séraphin Lampion} \institute{Assurances Mondass} \date{23 octobre 2009} \end{exemple} \begin{itemize} \item la commande \commandeindex{title} indique le titre de la présentation ; \item la commande \commandeindex{subtitle} indique le sous-titre de la présentation ; \item la commande \commandeindex{author} indique l'auteur de la présentation ; \item la commande \commandeindex{institute} indique l'employeur de l'auteur de la présentation ; \item la commande \commandeindex{date} indique la date de la présentation. \end{itemize} On peut utiliser \boiboiindex\ dans les arguments de ces commandes pour forcer un passage à la ligne si nécessaire. En fonction du thème utilisé, certains de ces éléments peuvent être repris dans les marges des pages intérieures de la présentation. S'ils sont trop longs, on peut indiquer une version courte en option de chacune des commandes. Celle-ci sera utilisée dans les marges alors que l'argument le sera dans la page de titre : \begin{exemple} \title[ENSTA ParisTech]{École nationale supérieure de techniques avancées \\ (ENSTA ParisTech)} \end{exemple} On imprime ensuite la page de titre (dans le premier environnement \environnementindex{frame} de la présentation) au moyen de la commande \commandeindex{titlepage} : \begin{exemple} \begin{frame} \titlepage \end{frame} \end{exemple} Ceci donne au final la page de titre représentée dans la figure \ref{figure:beamer-titlepage}. \begin{figure}[!htbp] \centering \beamersimple{beamer-titlepage.pdf} \caption{Exemple de page de titre réalisée avec la classe \classe{beamer}} \label{figure:beamer-titlepage} \end{figure} \subsection{Les pages intérieures} Les pages suivant la page de titre sont elles-aussi contenues dans un environnement \environnementindex{frame} : \begin{exemple} \begin{frame} \frametitle{Ceci est le titre de la page} La suite est le corps de la page. \end{frame} \end{exemple} La commande \commandeindex{frametitle} permet d'indiquer le titre de la page. La suite du contenu de l'environnement \environnement{frame} correspond au corps de la page et l'on peut y utiliser quasiment toutes les commandes et environnements vus dans les chapitres précédents. Par ailleurs, \classe{beamer} a étendu la syntaxe de \LaTeX\ pour permettre d'afficher certains éléments d'une page au fur et à mesure du discours, comme cela est habituel dans les présentations. En pratique, chaque page (logique) du document est divisée en plusieurs pages (physiques) dans le document PDF généré en fonction du nombre d'éléments à faire apparaître. La succession des pages du document PDF donnera l'illusion de l'apparition des éléments sur une même page. Considérons l'exemple suivant : \begin{exemple} \begin{itemize} \item<1-> premier élément \item<2-> deuxième élément \item<3-> troisième élément \end{itemize} \end{exemple} Chaque commande \commande{item} est suivie d'une spécification entre chevrons. Celle-ci indique sur quelles pages du document PDF faire figurer l'élément en question. On peut indiquer : \begin{itemize} \item une page précise : \code{<2>} ; \item une liste de pages : \code{<2,3,4>} ; \item un intervalle de pages : \code{<2-4>}, \code{<-3>} (de la première page jusqu'à la page 3), \code{<2->} (à partir de la page 2) ; \item et toute combinaison des spécifications précédentes. \end{itemize} Ainsi, dans notre exemple, le premier élément figurera sur la première page et les suivantes (la spécification \code{<1->} est d'ailleurs superflue puisque tout élément sans spécification figurera sur toutes les pages), le deuxième élément figurera sur la deuxième page et les suivantes et le troisième élément figurera sur la troisième page et les suivantes. La page logique (c'est-à-dire l'environnement \environnement{frame}) contenant la liste indiquée dans l'exemple générera donc trois pages dans le document PDF. La spécification \code{<3->} du troisième élément aurait d'ailleurs pu être simplifiée en \code{<3>} mais indiquer \code{<3->} est cohérent avec les spécifications des autres éléments et simplifie l'ajout éventuel d'un quatrième élément (puisque la spécification du troisième n'aura pas à être modifiée). Le fait d'afficher certains éléments d'une page au fur et à mesure est surtout utilisé avec des listes, comme c'est le cas dans l'exemple précédent, mais il est possible de produire le même effet sur n'importe quel texte au moyen de la commande \commandeindex{uncover}, qui s'utilise avec le même type de spécification : \begin{exemple} \uncover<1->{La philanthropie de l'ouvrier charpentier.} \uncover<2->{La Chine se dresse devant les Nippons.} \uncover<3->{Les matières fiscales le détendent.} \end{exemple} Voire, au sein même d'un paragraphe : \begin{exemple} \uncover<1->{La} \uncover<2->{muse} \uncover<3->{nous} \uncover<4->{habite.} \end{exemple} Pour des portions de document plus importantes, on peut utiliser l'environnement \environnementindex{uncoverenv} : \begin{exemple} \begin{uncoverenv}<1-> Paragraphe d'introduction : \begin{itemize} [...] \end{itemize} \end{uncoverenv} \begin{uncoverenv}<2-> Paragraphe d'introduction : \begin{itemize} [...] \end{itemize} \end{uncoverenv} \end{exemple} Le texte qui n'est pas affiché dans une page PDF donnée est normalement invisible. Pour le faire apparaître en filigrane, on peut utiliser la commande \commandeindex{setbeamercovered} dans le préambule : \begin{exemple} \setbeamercovered{transparent} \end{exemple} Il peut être nécessaire d'adapter le niveau de transparence entre 0 et 100 (0 signifiant invisible et 100 opaque, le niveau par défaut est de 15) en fonction du vidéoprojecteur utilisé : \begin{exemple} \setbeamercovered{transparent=20} \end{exemple} \subsection{Modification de l'aspect des présentations : les thèmes} \label{section:beamer-themes} \index{theme@thème (\classe{beamer})} L'aspect des présentations peut facilement être modifié au moyen de \emph{thèmes}. Pour cela, on utilise dans le préambule la commande \commandeindex{usetheme} en indiquant le nom du thème souhaité en argument : \begin{exemple} \usetheme{Montpellier} \end{exemple} Les thèmes utilisables sont indiqués dans le tableau \ref{tableau:beamer-themes}. \begin{table}[!htbp] \centering \begin{tabular}{*{5}{>{\ttfamily}l}} \toprule default & Boadilla & Goettingen & Malmoe & Singapore \\ AnnArbor & CambridgeUS & Hannover & Marburg & Szeged \\ Antibes & Copenhagen & Ilmenau & Montpellier & Warsaw \\ Bergen & Darmstadt & JuanLesPins & PaloAlto & \\ Berkeley & Dresden & Luebeck & Pittsburgh & \\ Berlin & Frankfurt & Madrid & Rochester & \\ \bottomrule \end{tabular} \caption{Thèmes utilisables avec \classe{beamer}} \label{tableau:beamer-themes} \beamerthemeindex{default} \beamerthemeindex{Antibes} \beamerthemeindex{Bergen} \beamerthemeindex{Berkeley} \beamerthemeindex{Berlin} \beamerthemeindex{Boadilla} \beamerthemeindex{Copenhagen} \beamerthemeindex{Darmstadt} \beamerthemeindex{Dresden} \beamerthemeindex{Frankfurt} \beamerthemeindex{Goettingen} \beamerthemeindex{Hannover} \beamerthemeindex{Ilmenau} \beamerthemeindex{JuanLesPins} \beamerthemeindex{Luebeck} \beamerthemeindex{Madrid} \beamerthemeindex{Malmoe} \beamerthemeindex{Marburg} \beamerthemeindex{Montpellier} \beamerthemeindex{PaloAlto} \beamerthemeindex{Pittsburgh} \beamerthemeindex{Rochester} \beamerthemeindex{Singapore} \beamerthemeindex{Szeged} \beamerthemeindex{Warsaw} \end{table} Le thème \theme{default} est celui qui est utilisé en l'absence de la commande \commande{usetheme} dans le préambule (mais on peut aussi le spécifier explicitement si on le souhaite). Les autres thèmes portent des noms de villes. Les figures \ref{figure:beamer-default} à \ref{figure:beamer-Warsaw} montrent, pour chaque thème, à quoi ressemblent une page de titre à gauche et une page intérieure à droite. \input{exemples/beamer-themes.tex} \subsection{Personnalisation de l'aspect des présentations} \label{section:beamer-personnalisation} Les thèmes offrent une grande diversité de mise en page pour les présentations. Néanmoins, la dominante bleue de la plupart d'entre eux peut se révéler gênante. Il est heureusement possible de modifier les couleurs utilisées par son thème favori. Nous verrons également comment ajouter un logo. \subsubsection{Modification des couleurs} La commande \commandeindex{usecolortheme}, utilisée dans le préambule, permet de modifier la couleur dominante utilisée par le thème courant : \begin{exemple} \usecolortheme[RGB={64,141,183}]{structure} \end{exemple} Il est possible de spécifier la couleur de plusieurs manières : \begin{itemize} \item \code{rgb=\{}\var{r}\code{,}\var{g}\code{,}\var{b}\code{\}}\index{rgb@\code{rgb} (couleur)} qui indique les valeurs de rouge, de vert et de bleu par des nombres décimaux entre 0 et 1, par exemple \code{rgb=\{0.3,0.5,0.7\}} ; \item \code{RGB=\{}\var{r}\code{,}\var{g}\code{,}\var{b}\code{\}}\index{RGB@\code{RGB} (couleur)} qui indique les valeurs de rouge, de vert et de bleu par des nombres entiers entre 0 et 255, par exemple \code{RGB=\{0,171,199\}} ; \item \code{cmyk=\{}\var{c}\code{,}\var{m}\code{,}\var{y}\code{,}\var{k}\code{\}}\index{cmyk@\code{cmyk} (couleur)} qui indique les valeurs de cyan, de magenta, de jaune et de noir par des nombres décimaux entre 0 et 1, par exemple \code{cmyk=\{0.76,0,0.15,0.11\}} ; \item \code{cmy=\{}\var{c}\code{,}\var{m}\code{,}\var{y}\code{\}}\index{cmy@\code{cmy} (couleur)} est identique à \code{cmyk} sauf que la composante noire n'est pas indiquée ; \item \code{hsb=\{}\var{h}\code{,}\var{s}\code{,}\var{b}\code{\}}\index{hsb@\code{hsb} (couleur)} qui indique la teinte, la saturation et la valeur par des nombres décimaux entre 0 et 1, par exemple \code{hsb=\{0.3,0.5,0.7\}} ; \item \code{named=}\var{nom}\index{named@\code{named} (couleur)} qui indique la couleur par son nom. \end{itemize} Pour \code{named}, il est possible d'utiliser les couleurs prédéfinies indiquées dans le tableau \ref{tableau:beamer-couleurs}. \begin{table}[!htbp] \centering \begin{tabular}{*{5}{>{\ttfamily}l}} \toprule black & cyan & green & orange & violet \\ blue & darkgray & lightgray & purple & white \\ brown & gray & magenta & red & yellow \\ \bottomrule \end{tabular} \caption{Couleurs prédéfinies utilisables avec \classe{beamer}} \label{tableau:beamer-couleurs} \end{table} On peut aussi définir ses propres noms de couleurs au moyen de la commande \commandeindex{definecolor}, utilisée dans le préambule : \begin{syntaxe} \commande{definecolor}\argument{nom}\argument{type}\argument{valeur} \end{syntaxe} \noindent qui définit une couleur \var{nom} spécifiée par \var{type} (qui peut être \code{rgb}, \code{RGB}, \code{cmyk}, \code{cmy} ou \code{hsb}, comme vu précédemment) et par \var{valeur} (qui doit être compatible avec \var{type}). Par exemple : \begin{exemple} \definecolor{macouleur}{RGB}{0,171,199} \usecolortheme[named=macouleur]{structure} \end{exemple} \subsubsection{Ajout d'un logo} La commande \commandeindex{logo}, utilisée dans le préambule, permet d'insérer un logo dans la plupart des thèmes (tous sauf \theme{Goettingen}, \theme{Hannover} et \theme{Marburg}). On peut utiliser pour cela la commande \commandeindex{includegraphics} (voir le paragraphe \ref{section:includegraphics}) : \begin{exemple} \logo{\includegraphics[width=1cm]{logo.pdf}} \end{exemple} Le logo contenu dans le fichier \path{logo.pdf} apparaîtra alors sur chaque page à l'endroit prévu par le thème. Sa taille (ici \code{1cm}) est à adapter au besoin. Il peut également être nécessaire d'adapter la couleur de fond du logo pour qu'il s'en détache correctement. Pour cela, on utilise la commande \commandeindex{setbeamercolor} dans le préambule : \begin{exemple} \setbeamercolor{logo}{bg=white} \end{exemple} \subsection{Pour aller plus loin} Nous n'avons couvert que quelques-uns des nombreux aspects de \classe{beamer}. Pour plus de renseignements à son sujet, vous pouvez consulter \cite[pages 752--796]{the-latex-graphics-companion}. Les sites suivants sont également intéressants : \begin{toile} \noindent\url{http://latex-beamer.sourceforge.net/} (site officiel)\par \noindent\url{http://mirror.ctan.org/macros/latex/contrib/beamer/doc/beameruserguide.pdf} (documentation officielle)\par \toileurl{http://fr.wikipedia.org/wiki/Beamer} \toileurl{http://mcclinews.free.fr/latex/introbeamer.php} \toileurl{http://www.math.umbc.edu/~rouben/beamer/} \end{toile} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\chapter{??? une thèse} %\index{these@thèse} % http://www.tug.org/pracjourn/2008-1/mori/ % classicthesis % arsclassica % hepthesis % uwthesis %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \appendix %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Quelques règles typographiques françaises et anglaises} \label{annexe:typographie} \index{typographie} De même que l'écriture d'un texte nécessite le respect de l'orthographe et de la grammaire, la composition d'un document nécessite le respect des règles typographiques. Certaines règles typographiques sont automatiquement respectées par \LaTeX\ mais, afin de réaliser des documents de bonne qualité, il faut connaître et respecter soi-même toutes les autres. Les règles typographiques sont, pour la plupart, différentes selon les langues. Ici sont résumées et illustrées quelques règles élémentaires pour le français et l'anglais. En ce qui concerne la typographie française, l'ouvrage de référence est \cite{lexique-des-regles-typographiques}. La lecture de \cite{regles-de-l-ecriture-typographique-du-francais} et de \cite{orthotypographie} est également enrichissante. Pour la typographie anglaise (américaine, pour être très précis), l'ouvrage de référence est \cite{the-chicago-manual-of-style}. \section{Quelques règles typographiques françaises} Contrairement à une croyance répandue, une lettre accentuée écrite en majuscule doit conserver son accent (ou son tréma ou sa cédille). À cet effet, si votre éditeur de texte n'en permet pas la saisie directe, il est toujours possible d'utiliser les commandes des tableaux \ref{tableau:accents} et \ref{tableau:accents-simples}. La commande \commandeindex{up}, fournie par l'extension \extensionindex{babel} utilisée avec l'option \extensionoptionindex{french}, permet de composer son argument en caractères supérieurs. En typographie, on ne parle ni d'exposant ni d'indice mais de caractères respectivement \emph{supérieurs} et \emph{inférieurs}. La commande \commande{up} peut par exemple être utilisée pour écrires les abréviations indiquées dans le tableau \ref{tableau:madame-mademoiselle-monsieur}. \begin{table}[!htbp] \centering \begin{tabular}{ll>{\ttfamily}l} \toprule madame & M\up{me} & M\commande{up}\{me\} \\ mesdames & M\up{mes} & M\commande{up}\{mes\} \\ mademoiselle & M\up{lle} & M\commande{up}\{lle\} \\ mesdemoiselles & M\up{lles} & M\commande{up}\{lles\} \\ monsieur & M. & M. \\ messieurs & MM. & MM. \\ \bottomrule \end{tabular} \caption{Madame, mademoiselle, monsieur} \label{tableau:madame-mademoiselle-monsieur} \end{table} \begin{toile} \toileurl{http://www.orthotypographie.fr/volume-I/echelle-extrait.html\#Exposant} \toileurl{http://www.orthotypographie.fr/volume-II/madame-mythologie.html\#Madame_mademoiselle_monsieur} \end{toile} Les abréviations indiquées dans le tableau \ref{tableau:premier-deuxieme}, quant à elles, sont suffisamment communes pour disposer de commandes propres, également fournies par l'extension \extensionindex{babel} utilisée avec l'option \extensionoptionindex{french}. Utiliser ces commandes évite d'avoir dans ses documents des horreurs comme « 3\up{ème} », qu'on voit malheureusement bien trop souvent... \begin{table}[!htbp] \centering \begin{tabular}{ll>{\ttfamily}l} \toprule premier & 1\ier & 1\commande{ier} \\ première & 1\iere & 1\commande{iere} \\ premiers & 1\iers & 1\commande{iers} \\ premières & 1\ieres & 1\commande{ieres} \\ deuxième & 2\ieme & 2\commande{ieme} \\ deuxièmes & 2\iemes & 2\commande{iemes} \\ etc. & & \\ \bottomrule \end{tabular} \caption{Premier, deuxième, etc.} \label{tableau:premier-deuxieme} \index{ier@\commande{ier} (\ier)} \index{iere@\commande{iere} (\iere)} \index{iers@\commande{iers} (\iers)} \index{ieres@\commande{ieres} (\ieres)} \index{ieme@\commande{ieme} (\ieme)} \index{iemes@\commande{iemes} (\iemes)} \end{table} L'extension \extensionindex{textcomp} fournit la commande \commandeindex{oldstylenums} qui permet d'obtenir les chiffres français (\oldstylenums{0123456789}) : \begin{filecontents*}{\jobname.tmp} La prise de la Bastille a eu lieu le \oldstylenums{14} juillet \oldstylenums{1789}. \end{filecontents*} \exempleresultat{\jobname.tmp} Ceci ne fonctionne que si la police de caractères utilisée contient les signes nécessaires, ce qui est malheureusement rare. \begin{toile} \toileurl{http://www.orthotypographie.fr/volume-I/cabochon-citation.html\#Chiffres} \end{toile} Concernant la ponctuation : \begin{itemize} \item la virgule, le point et les points de suspension sont collés au mot qui les précède et sont suivis par une espace ; \item le point-virgule, les deux points, le point d'exclamation et le point d'interrogation sont précédés d'une espace fine (ce que l'extension \extensionindex{babel} utilisée avec l'option \extensionoptionindex{french} gère automatiquement) et suivis d'une espace ; \item les « guillemets français » ne sont pas présents sur les claviers, mais ils se saisissent facilement avec Vim en utilisant \taper{\textasciicircum K <{}<} et \taper{\textasciicircum K >{}>} et avec Emacs grâce aux commandes \taper{C-x 8 <} et \taper{C-x 8 >} ; à défaut, des commandes \commande{og}\index{og@\commande{og} (\og)} (\og) et \commande{fg}\index{fg@\commande{fg} (\fg)} (\fg) sont fournies par l'extension \extensionindex{babel} utilisée avec l'option \extensionoptionindex{french}. \end{itemize} Voici un petit exemple de poésie téléphonique à la ponctuation légèrement retouchée pour illustrer ceci : \begin{filecontents*}{\jobname.tmp} J'avais un ami, mais il est parti. Ce sens à ma vie, il n'est plus en vie... Il m'a tout donné, puis s'est effacé, sans me déranger ; et je crois j'ai pleuré, j'ai pleuré. Tout au fond, l'air d'un con : envie de me casser. Voudrais bien essayer, voudrais bien continuer, continuer ! Un moment, un instant, j'ai cru oublier. En parlant, en marchant, à Paris, à minuit, dans ma ville ? \end{filecontents*} \exempleresultat{\jobname.tmp} \section{Quelques règles typographiques anglaises} Concernant la ponctuation : \begin{itemize} \item la virgule, le point-virgule, les deux points, le point d'exclamation et le point d'interrogation sont collés au mot qui les précède et sont suivis par une espace ; \item le point est collé au mot qui le précède et suivi de deux espaces (\LaTeX\ s'en moque, mais c'est l'usage) ; \item les points de suspension sont précédés et suivis d'une espace et sont plus espacés que trois points se suivant, c'est pourquoi \LaTeX\ dispose de la commande \commande{ldots}\index{ldots@\commande{ldots} (\ldots)} pour saisir les points de suspension anglais (n'oubliez pas la commande \verb*|\ | pour l'espace suivant les points de suspension) ; \item les guillemets se saisissent \code{`{}`}\index{``@\code{`{}`} (``)} et \code{'{}'}\index{''@\code{'{}'} ('')} (et pas \code{"}\index{""@\code{""} ("")}). Ce qui donne ``ceci''. \end{itemize} Un autre exemple de poésie profondément pourpre (à la ponctuation modifiée) permet d'illustrer ces règles : \begin{otherlanguage}{english} \begin{filecontents*}{\jobname.tmp} We all came out to Montreux, on the Lake Geneva shoreline, to make records with a mobile: we didn't have much time. Frank Zappa and the Mothers were at the best place around; but some stupid with a flare gun burned the place to the ground \ldots\ Smoke on the water! Fire in the sky? Smoke on the water! \end{filecontents*} \exempleresultat{\jobname.tmp} \end{otherlanguage} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Différences entre \LaTeX\ 2.09 et \LaTeXe} \label{chapitre:LaTeX2e} Les différences entre \LaTeX\ 2.09 (version maintenant obsolète, décrite dans la première édition de ce manuel) et \LaTeXe\ (version actuelle, décrite dans ce manuel, apparue en 1994 mais n'ayant cessé d'évoluer depuis, en attendant \LaTeX 3) sont relativement minimes pour l'utilisateur (elles le sont en revanche beaucoup moins pour les concepteurs d'extensions). Cette annexe résume les principales différences entre ces deux versions. \section[Les commandes \commande{documentstyle}, \commande{documentclass} et\texorpdfstring{\newline}{} \commande{usepackage}]{Les commandes \commande{documentstyle}, \commande{documentclass} et \commande{usepackage}} La commande \commande{documentstyle} de \LaTeX\ 2.09 a été remplacée dans \LaTeXe\ par \commande{documentclass}. Les options de classe (arguments optionnels de \commande{documentclass}) correspondent aux options de style (arguments optionnels de \commande{documentstyle}) qui s'appliquent à la classe du document. Les autres options de styles (qu'on appelle désormais extensions) sont chargées grâce à la commande \commande{usepackage}. \section{Déclarations et commandes de changement de style} Les déclarations de changement de style \commande{it}, \commande{sl}, \commande{sc} \commande{bf}, \commande{rm}, \commande{sf} et \commande{tt} de \LaTeX\ 2.09 ont été remplacées respectivement dans \LaTeXe\ par les déclarations \commande{itshape}, \commande{slshape}, \commande{scshape}, \commande{bfseries}, \commande{rmfamily}, \commande{sffamily} et \commande{ttfamily}. La déclaration \commande{em} de \LaTeX\ 2.09 a été remplacée dans \LaTeXe\ par la commande \commande{emph}. Les commandes de changement de style \commande{textup}, \commande{textit}, \commande{textsl}, \commande{textsc}, \commande{textmd}, \commande{textbf}, \commande{textrm}, \commande{textsf} et \commande{texttt} sont nouvelles dans \LaTeXe. Ces commandes prennent un argument et ne nécessitent donc pas d'accolades de groupement. De plus, il est possible de mélanger différents styles : \begin{filecontents*}{\jobname.tmp} \textit{italique \textbf{gras}} \end{filecontents*} \exempleresultat{\jobname.tmp} \noindent alors qu'avec \LaTeX\ 2.09, chaque commande annulait l'effet de la précédente : \begin{filecontents*}{\jobname.tmp} {\it italique \bf gras} \end{filecontents*} \exempleresultat{\jobname.tmp} \section{\SliTeX\ et la classe \classe{slides}} Le logiciel \SliTeX\ n'existe plus, les transparents sont maintenant directement produits par \LaTeX\ au moyen de la classe \classe{slides}. \section{La commande \commande{LaTeXe}} La commande \commande{LaTeXe} permet d'imprimer le logo \LaTeXe\ (avec le $2_{\textstyle\varepsilon}$). De même que pour la commande \commande{LaTeX}, il faut la faire suivre de \verb*|\ | si l'on ne veut pas que le mot suivant lui soit collé. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \backmatter %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter*{\bibname} \addcontentsline{toc}{chapter}{\bibname} \begin{btSect}{latex} \section*{Ouvrages généraux sur \LaTeX} \btPrintAll \end{btSect} \begin{btSect}{avance} \section*{Utilisation avancée de \LaTeX} \btPrintAll \end{btSect} \begin{btSect}{bibliographie-index} \section*{Bibliographie et index} \btPrintAll \end{btSect} \begin{btSect}{graphisme} \section*{Graphisme} \btPrintAll \end{btSect} \begin{btSect}{typographie} \section*{Typographie} \btPrintAll \end{btSect} \begin{btSect}{divers} \section*{Divers} \btPrintAll \end{btSect} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cleardoublepage \phantomsection \printindex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cleardoublepage \listoftables \cleardoublepage \listoffigures \cleardoublepage \tableofcontents \end{document}