summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/formation-latex-ul/trucs+astuces.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/formation-latex-ul/trucs+astuces.tex')
-rw-r--r--Master/texmf-dist/source/latex/formation-latex-ul/trucs+astuces.tex985
1 files changed, 985 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/formation-latex-ul/trucs+astuces.tex b/Master/texmf-dist/source/latex/formation-latex-ul/trucs+astuces.tex
new file mode 100644
index 00000000000..e58d87bc95f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/formation-latex-ul/trucs+astuces.tex
@@ -0,0 +1,985 @@
+\chapter{Trucs et astuces divers}
+\label{chap:trucs}
+
+En clôture de l'ouvrage, ce chapitre traite de différents sujets que
+même une personne débutant avec {\LaTeX} voudra assez rapidement
+aborder, comme le contrôle des sauts de ligne et des sauts de page, la
+modification de la police du document, l'utilisation de la couleur ou
+l'insertion d'hyperliens dans le fichier de sortie PDF. Nous offrons
+également de courtes introductions à des usages plus spécialisés de
+{\LaTeX} comme la mise en page de code informatique, la production de
+diapositives ou la programmation lettrée. Enfin, nous expliquons
+sommairement comme assurer de manière efficace la gestion des versions
+de ses documents, surtout dans un contexte de travail collaboratif.
+
+\section{Contrôle de la disposition du texte}
+\label{sec:trucs:controle}
+
+Des algorithmes élaborés permettent généralement à {\LaTeX} de
+disposer le texte harmonieusement sur la page. Néanmoins, il
+est parfois nécessaire d'effectuer soi-même de menus ajustements,
+notamment pour les sauts de page et la coupure de mots.
+
+\subsection{Sauts de ligne et de page}
+\label{sec:trucs:controle:sauts}
+
+Il est assez rarement nécessaire avec {\LaTeX} de devoir forcer les
+retours à la ligne. Chose certaine, l'on devrait toujours utiliser une
+ligne blanche dans le code source pour identifier un changement de
+paragraphe.
+
+Cela dit, les commandes suivantes permettent d'insérer un saut de
+ligne manuellement lorsque requis:
+\begin{lstlisting}
+\\
+\\`\oarg{longueur}'
+\newline
+\end{lstlisting}
+La commande {\pixbsbs} est connue: elle sert aussi à délimiter les
+lignes dans les tableaux (\autoref{sec:tableaux:tableaux}) et les lignes
+d'une suite d'équations (\autoref{sec:math:align}). L'argument optionnel
+\oarg{longueur} permet d'insérer un blanc entre les deux lignes; la
+\autoref{sec:bases:longueurs} explique comment spécifier une
+longueur.
+
+Généralement équivalente à {\bs\bs}, la commande \cmd{\newline} est
+parfois nécessaire, notamment pour insérer un changement de ligne à
+l'intérieur d'une cellule d'un tableau ou à l'intérieur d'un titre de
+section. Quand {\bs\bs} ne fonctionne pas, essayer
+\cmdprint{\newline}.
+
+\begin{exemple}
+ La commande {\bs\bs} est particulièrement utile --- voire nécessaire
+ --- pour disposer des boîtes à l'intérieur d'une figure.
+ L'utilisation de l'argument \meta{longueur} permet alors de
+ contrôler l'espacement vertical entre les éléments. Comparer les
+ deux exemples ci-dessous.
+ \begin{demo}
+ \begin{texample}[0.55\linewidth]
+\begin{lstlisting}
+\begin{minipage}{1.0\linewidth}
+ \framebox[\linewidth]{texte}
+\end{minipage} \\
+\begin{minipage}{1.0\linewidth}
+ \framebox[\linewidth]{texte}
+\end{minipage}
+\end{lstlisting}
+ \producing
+ \begin{minipage}{1.0\linewidth}
+ \framebox[\linewidth]{texte}
+ \end{minipage}
+ \begin{minipage}{1.0\linewidth}
+ \framebox[\linewidth]{texte}
+ \end{minipage}
+ \end{texample}
+
+ \begin{texample}[0.55\linewidth]
+\begin{lstlisting}
+\begin{minipage}{1.0\linewidth}
+ \framebox[\linewidth]{texte}
+\end{minipage} \\`\textbf{[6pt]}'
+\begin{minipage}{1.0\linewidth}
+ \framebox[\linewidth]{texte}
+\end{minipage}
+\end{lstlisting}
+ \producing
+ \begin{minipage}{1.0\linewidth}
+ \framebox[\linewidth]{texte}
+ \end{minipage} \\[6pt]
+ \begin{minipage}{1.0\linewidth}
+ \framebox[\linewidth]{texte}
+ \end{minipage}
+ \end{texample}
+ \end{demo}
+ \qed
+\end{exemple}
+
+Les commandes
+\begin{lstlisting}
+\newpage
+\clearpage
+\cleartorecto % classe memoir seulement
+\cleartoverso % classe memoir seulement
+\end{lstlisting}
+permettent d'insérer manuellement un saut de page pour éviter une
+coupure malheureuse. La commande de base pour insérer un saut
+n'importe où dans la page est \cmd{\newpage}. La commande
+\cmd{\clearpage}, quant à elle, va également s'assurer d'afficher tous
+les éléments flottants (\autoref{sec:tableaux:floats}) en attente de
+disposition.
+
+Les commandes \cmd{\cleartorecto} et \cmd{\cleartoverso}, propres à la
+classe \class{memoir} permettent respectivement de passer
+automatiquement à une page recto ou à une page verso. Évidemment, elles
+n'ont d'utilité que dans les documents recto verso.
+
+Moins directives, les commandes
+\begin{lstlisting}
+\pagebreak`\oarg{n}'
+\enlargethispage`\marg{longueur}'
+\end{lstlisting}
+permettent de seulement aider {\LaTeX} à gérer les sauts de page à un
+endroit précis. La commande \cmd{\pagebreak} est intéressante
+lorsque utilisée avec son argument optionnel \meta{n}: celui-ci
+indique, par le biais d'un nombre entier entre 0 et 4, à quel point
+nous \emph{recommandons} à {\LaTeX} d'insérer un saut de page à
+l'endroit où la commande apparaît (0 étant une faible recommandation
+et 4, une forte).
+
+La commande \cmd{\enlargethispage}, comme son nom l'indique, permet
+d'allonger une page de \meta{longueur} pour y faire tenir plus de
+texte. C'est une commande particulièrement utile pour éviter que la
+toute dernière ligne d'un chapitre ou d'un document se retrouve seule sur
+une page.
+
+\subsection{Coupure de mots}
+\label{sec:trucs:controle:coupure}
+
+La coupure automatique des mots en fin de ligne est toujours active
+avec {\LaTeX}. C'est d'ailleurs pourquoi il importe d'indiquer à
+{\LaTeX} dans quelle langue est le texte (lorsque ce n'est pas en
+anglais) avec les commandes du paquetage \pkg{babel}.
+
+Il existe deux façons de contrôler la coupure de mots. La première,
+principalement utilisée lorsque {\LaTeX} refuse de couper un mot en
+fin de ligne, consiste à insérer des \emph{suggestions} d'endroits où
+couper le mot avec la commande \cmd{\-}. Par exemple, en écrivant
+\verb=vrai\-sem\-blance=, on indique à {\LaTeX} qu'il est possible de
+diviser le mot en \emph{vrai-semblance} ou \emph{vraisem-blance}.
+
+La seconde méthode, celle-là surtout utilisée lorsque {\LaTeX} ne
+reconnaît pas des mots qui reviennent souvent dans le document,
+consiste à fournir dans le préambule une liste d'exceptions avec la
+commande
+\begin{lstlisting}
+\hyphenation`\marg{liste}'
+\end{lstlisting}
+La \meta{liste} est une suite de mots, séparés par des virgules, des
+blancs ou des retours à la ligne, dans lesquels les points de coupure
+sont identifiés par un trait d'union.
+
+\begin{exemple}
+ La commande suivante, insérée dans le préambule, permet d'ajouter
+ des points de coupure aux mots «puisque», «constante» et
+ «vraisemblance» pour l'ensemble du document.
+\begin{lstlisting}
+\hyphenation{puis-que,cons-tante,vrai-sem-blance}
+\end{lstlisting}
+ \qed
+\end{exemple}
+
+\begin{important}
+ Règle générale, garder les opérations d'ajustements de la mise en
+ page --- position des éléments flottants, sauts de page, lignes trop
+ longues, etc. --- pour la toute fin de la rédaction.
+\end{important}
+
+
+\section{Au-delà de la police Computer Modern}
+\label{sec:trucs:polices}
+
+{\CM%
+ Les documents {\LaTeX} standards sont facilement reconnaissables par
+ leur police par défaut, Computer Modern --- celle utilisée dans ce
+ paragraphe. Pour qui souhaitait briser la relative monotonie induite
+ par cette uniformité, il a longtemps été difficile d'utiliser une
+ autre police. Fort heureusement, la situation a beaucoup évolué et
+ il est aujourd'hui assez simple de produire des documents {\LaTeX}
+ utilisant des polices variées.}
+
+Avant d'aller plus loin, une mise en garde: si un document contient
+plus que quelques équations mathématiques très simples, le choix de
+police devient très restreint. La raison: peu de polices comprennent
+des symboles mathématiques et les informations nécessaires pour les
+assembler selon les hauts standards qualité usuels de {\LaTeX}.
+
+Cela dit, pour qui souhaite aller au-delà de la police Computer Modern
+sans trop se compliquer la vie, il existe deux solutions principales.
+
+\begin{enumerate}
+\item Utiliser l'une ou l'autre des polices PostScript standards
+ convenant pour du texte normal
+ ({\Times Times}, %
+ {\Palatino Palatino}, %
+ {\Bookman Bookman}, %
+ {\Charter Charter}, %
+ {\NewCent New Century Schoolbook}, %
+ {\Helvet Helvetica}). %
+ C'est très simple avec toute distribution {\LaTeX} moderne: il
+ suffit de charger le paquetage approprié. Consulter la %
+ \doc{psnfss2e}{http://texdoc.net/pkg/psnfss/} %
+ de l'ensemble de paquetages PSNFSS.
+\item Utiliser une police OpenType ou TrueType présente sur son
+ système avec le moteur {\XeLaTeX}. Seule une poignée de ces polices
+ offre toutefois un support approprié pour les mathématiques. La
+ gestion des polices avec {\XeLaTeX} se fait avec le paquetage
+ standard \pkg{fontspec}; consulter sa %
+ \doc{fontspec}{http://texdoc.net/pkg/fontspec/}.
+\end{enumerate}
+
+Pour les thèses et mémoires de l'Université Laval, la Faculté des
+études supérieures et postdoctorales accepte les polices %
+\begin{quote}
+ \begin{tabbing}
+ Computer Modern \qquad \= ABCDEF abcdef 1234567890 \kill
+ {\CM Computer Modern} \> {\CM ABCDEF abcdef 1234567890} \\
+ {\Times Times} \> {\Times ABCDEF abcdef 1234567890} \\
+ {\Palatino Palatino} \> {\Palatino ABCDEF abcdef 1234567890}
+ \end{tabbing}
+\end{quote}
+Pour utiliser ces deux dernières avec pdf{\LaTeX}, charger
+respectivement les paquetages \pkg{mathptmx} ou \pkg{mathpazo}. Avec
+{\XeLaTeX}, utiliser les polices Termes et Pagella du projet %
+\link{http://www.gust.org.pl/projects/e-foundry/tex-gyre/}{TeX~Gyre}.
+Ce sont des polices très similaires à Times et Palatino, disponibles
+en version OpenType et qui fournissent un bon support pour les
+mathématiques via le projet frère %
+\link{http://www.gust.org.pl/projects/e-foundry/tg-math/}{TeX~Gyre
+ Math}.
+
+\begin{exemple}
+ \label{ex:trucs:palatino}
+ Pour utiliser la police PostScript classique Palatino avec {\LaTeX}
+ tant pour le texte que pour les mathématiques, il suffit d'insérer
+ dans le préambule de son document la commande
+\begin{lstlisting}
+\usepackage{mathpazo}
+\end{lstlisting}
+
+ Avec le moteur {\XeLaTeX}, il est possible d'utiliser n'importe
+ quelle police OpenType et TrueType installée dans le système
+ d'exploitation de l'ordinateur. Pour obtenir un résultat équivalent
+ à celui de \pkg{mathpazo}, installer les polices TeX~Gyre dans le
+ système, puis insérer dans le préambule les commandes
+\begin{lstlisting}
+\usepackage{fontspec}
+\setmainfont{TeX Gyre Pagella}
+\setmathfont{TeX Gyre Pagella Math}
+\end{lstlisting}
+ \qed
+\end{exemple}
+
+Le texte principal du présent document est en %
+\link{http://tug.org/store/lucida/}{Lucida Bright~OT}, %
+une police commerciale de très haute qualité offrant également un
+excellent support pour les mathématiques. Ses auteurs ont toujours été
+proches de la communauté {\LaTeX}. La Bibliothèque de l'Université
+Laval détient une licence d'utilisation de cette police. Les étudiants
+et le personnel de l'Université peuvent s'en procurer une copie
+gratuitement en écrivant à
+\href{mailto:lucida@bibl.ulaval.ca}{lucida@bibl.ulaval.ca}.
+
+
+
+\section{Couleurs}
+\label{sec:trucs:couleurs}
+
+L'utilisation de couleur dans un document {\LaTeX} requiert de charger
+le paquetage \pkg{xcolor} \citep{xcolor}. Celui-ci définit d'abord
+plusieurs couleurs que l'on peut utiliser directement; consulter la %
+\doc{xcolor}{http://texdoc.net/pkg/xcolor} %
+pour en connaître les différentes listes. Le
+\autoref{tab:trucs:couleurs} fournit celle des couleurs toujours
+disponibles.
+
+\begin{table}
+ \centering
+ \caption{Couleurs toujours disponibles lorsque le paquetage
+ \pkg{xcolor} est chargé}
+ \label{tab:trucs:couleurs}
+ \begin{tabularx}{1.0\linewidth}{XlXll}
+ \toprule
+ \fcolorbox{black}{black}{\phantom{xx}}\, black &
+ \fcolorbox{black}{blue}{\phantom{xx}}\, blue &
+ \fcolorbox{black}{brown}{\phantom{xx}}\, brown &
+ \fcolorbox{black}{cyan}{\phantom{xx}}\, cyan &
+ \fcolorbox{black}{darkgray}{\phantom{xx}}\, darkgray \\
+ \addlinespace[3pt]
+ \fcolorbox{black}{gray}{\phantom{xx}}\, gray &
+ \fcolorbox{black}{green}{\phantom{xx}}\, green &
+ \fcolorbox{black}{lightgray}{\phantom{xx}}\, lightgray &
+ \fcolorbox{black}{lime}{\phantom{xx}}\, lime &
+ \fcolorbox{black}{magenta}{\phantom{xx}}\, magenta \\
+ \addlinespace[3pt]
+ \fcolorbox{black}{olive}{\phantom{xx}}\, olive &
+ \fcolorbox{black}{orange}{\phantom{xx}}\, orange &
+ \fcolorbox{black}{pink}{\phantom{xx}}\, pink &
+ \fcolorbox{black}{purple}{\phantom{xx}}\, purple &
+ \fcolorbox{black}{red}{\phantom{xx}}\, red \\
+ \addlinespace[3pt]
+ \fcolorbox{black}{teal}{\phantom{xx}}\, teal &
+ \fcolorbox{black}{violet}{\phantom{xx}}\, violet &
+ \fcolorbox{black}{white}{\phantom{xx}}\, white &
+ \fcolorbox{black}{yellow}{\phantom{xx}}\, yellow \\
+ \bottomrule
+ \end{tabularx}
+\end{table}
+
+Un peu comme pour les changements d'attributs de police, il existe
+deux commandes pour modifier la couleur du texte:
+\begin{lstlisting}
+\color`\marg{nom}'
+\textcolor`\marg{nom}\marg{texte}'
+\end{lstlisting}
+La première modifie la couleur de tout ce qui suit (à moins d'en
+limiter la portée avec des accolades) et la seconde, seulement pour
+\meta{texte}. Dans les deux cas, \meta{nom} est le nom d'une couleur.
+\begin{demo}
+ \begin{texample}
+\begin{lstlisting}
+texte {\color{red} en rouge}
+et \textcolor{blue}{en bleu}
+\end{lstlisting}
+ \producing
+ texte {\color{red} en rouge} et \textcolor{blue}{en bleu}
+ \end{texample}
+\end{demo}
+
+La commande \cmd{\definecolor} permet de définir de nouvelles couleurs
+selon plusieurs systèmes de codage. Le plus usuel demeure \emph{Rouge,
+ vert, bleu} (RVB ou RGB, en anglais) où une couleur est représentée
+par une combinaison de teintes --- exprimées par un nombre entre $0$
+et $1$ --- de rouge, de vert et de bleu. Dans ce cas, la syntaxe de
+\cmd{\definecolor} est
+\begin{lstlisting}
+\definecolor`\marg{nom}'{rgb}`\marg{valeur\_r,valeur\_v,valeur\_b}
+\end{lstlisting}
+où \meta{valeur\_r}, \meta{valeur\_v} et \meta{valeur\_b} sont
+respectivement les teintes de rouge, de vert et de bleu.
+
+\begin{exemple}
+ La commande
+\begin{lstlisting}
+\definecolor{acier}{rgb}{0.3,0.4,0.6}
+\end{lstlisting}
+ définit une nouvelle couleur nommée \code{acier} composée de rouge
+ 30~\%, de vert 40~\% et de bleu 60~\%: %
+ \fcolorbox{black}[rgb]{0.3,0,0}{\phantom{xx}} $+$ %
+ \fcolorbox{black}[rgb]{0,0.4,0}{\phantom{xx}} $+$ %
+ \fcolorbox{black}[rgb]{0,0,0.6}{\phantom{xx}} $=$ %
+ \fcolorbox{black}[rgb]{0.3,0.4,0.6}{\phantom{xx}}. %
+ Une fois la couleur \code{acier} définie dans le préambule, elle
+ devient disponible pour être utilisée dans les commandes
+ \cmdprint{\color} et \cmdprint{\textcolor}. %
+ \qed
+\end{exemple}
+
+La commande \cmd{\colorlet}, dont la syntaxe simplifiée est
+\begin{lstlisting}
+\colorlet`\marg{nom}\marg{couleur}'
+\end{lstlisting}
+permet de faire référence à la \meta{couleur} déjà existante par
+\meta{nom}. C'est pratique pour assigner un nom sémantique à une
+couleur.
+
+
+
+\section{Hyperliens et métadonnées de documents PDF}
+\label{sec:trucs:hyperliens}
+
+Nous en avons déjà traité à quelques reprises, notamment à la
+\autoref{sec:organisation:renvois}: le paquetage \pkg{hyperref}
+\citep{hyperref} permet de transformer les références dans le
+texte en hyperliens cliquables lorsque le document est produit avec
+pdf{\LaTeX} ou {\XeLaTeX}. C'est très pratique lors de la consultation
+électronique d'un document.
+
+Le paquetage offre une multitudes d'options de configuration; nous
+n'en présenterons que quelques unes. On accède aux options de
+configuration de \pkg{hyperref} via la commande \cmd{\hypersetup} dans
+le préambule. Celle-ci prend en arguments des paires
+\code{option=valeur} séparées par des virgules.
+
+Une des principales choses que l'on pourra souhaiter configurer, c'est
+le comportement et la couleur des divers types d'hyperliens. On
+trouvera ci-dessous les options de configuration pertinentes, leur
+valeur (avec en gras la valeur par défaut) ainsi qu'une brève
+explication de chacune.
+
+\begin{table}[h]
+ \begin{tabularx}{1.0\linewidth}{@{}p{7em}p{6em}X@{}}
+ \code{colorlinks} & \code{true}|\code{\textbf{false}} & colorer les
+ liens selon
+ leur type \\
+ \code{linktocpage} & \code{true}|\code{\textbf{false}} & faire du
+ numéro de
+ page
+ plutôt que
+ du titre l'hyperlien dans
+ la table
+ des
+ matières \\
+ \code{linkcolor} & \meta{couleur} & couleur des liens internes \\
+ \code{urlcolor} & \meta{couleur} & couleur des URL externes \\
+ \code{citecolor} & \meta{couleur} & couleur des citations \\
+ \code{allcolor} & \meta{couleur} & couleur pour tous les types d'hyperliens
+ \end{tabularx}
+\end{table}
+
+Lorsque la valeur admissible d'une option est \code{true} ou
+\code{false}, sa seule mention équivaut à \code{true}. La valeur
+\meta{couleur} est le nom d'une couleur telle que définie par
+\pkg{xcolor} (\autoref{sec:trucs:couleurs}).
+
+Les fichiers PDF peuvent contenir diverses métadonnées sur leur
+contenu. Le paquetage \pkg{hyperref} permet d'en définir certaines,
+notamment le titre ou l'auteur du document.
+
+\begin{table}[!h]
+ \begin{tabularx}{1.0\linewidth}{@{}p{7em}p{6em}X@{}}
+ \code{pdftitle} & texte & titre du document PDF \\
+ \code{pdfauthor} & texte & auteur du document PDF
+ \end{tabularx}
+\end{table}
+
+Consulter la section~3.7 de la %
+\doc{hyperref}{http://texdoc.net/pkg/hyperref} %
+de \pkg{hyperref} pour obtenir la liste complète des options de
+configuration des métadonnées.
+
+\begin{exemple}
+ \label{ex:trucs:couleurs}
+ Le présent document fait appel aux définitions de couleurs
+ et aux options de configuration de \pkg{hyperref} suivantes:
+\begin{lstlisting}
+\definecolor{link}{rgb}{0,0.4,0.6} % ~RoyalBlue de dvips
+\definecolor{url}{rgb}{0.6,0,0} % rouge foncé
+\definecolor{citation}{rgb}{0,0.5,0} % vert foncé
+\hypersetup{%
+ pdfauthor = {Vincent Goulet},
+ pdftitle = {Rédaction avec LaTeX},
+ colorlinks = true,
+ linktocpage = true,
+ urlcolor = url,
+ linkcolor = link,
+ citecolor = citation}
+\end{lstlisting}
+ \qed
+\end{exemple}
+
+\begin{exemple}
+ Les gabarits de thèses et de mémoires livrés avec la classe
+ \class{ulthese} contiennent dans le préambule la ligne suivante:
+\begin{lstlisting}
+\hypersetup{colorlinks,allcolors=ULlinkcolor}
+\end{lstlisting}
+ Tous les liens de la thèse ou du mémoire seront donc de la même
+ couleur, \code{ULlinkcolor} \fcolorbox{black}{ULlinkcolor}{\phantom{xx}},
+ une couleur définie par la classe. %
+ \qed
+\end{exemple}
+
+\begin{conseil}
+ L'interaction du paquetage \pkg{hyperref} avec les autres est
+ parfois (voire souvent) délicate. Pour cette raison, il est
+ fortement recommandé que \pkg{hyperref} soit le tout dernier
+ paquetage chargé dans le préambule.
+\end{conseil}
+
+
+
+\section{Présentation de code informatique}
+\label{sec:trucs:listings}
+
+L'environnement standard \Ie{verbatim} de {\LaTeX} permet de présenter
+du texte tel qu'il est entré dans le code source du document. C'est un
+environnement particulièrement utile pour afficher du code
+informatique puisque le texte est composé en police non
+proportionnelle et que sa disposition exacte est respectée.
+
+\begin{demo}
+ \begin{texample}
+\begin{lstlisting}[deletetexcs={int,include}]
+\begin{verbatim}
+/* Hello World en C */
+#include <stdio.h>
+
+int main()
+{
+ printf("Hello world\n");
+ return 0;
+}
+\end{verbatim}
+\end{lstlisting}
+ \producing
+\begin{verbatim}
+/* Hello World en C */
+#include <stdio.h>
+
+int main()
+{
+ printf("Hello world\n");
+ return 0;
+}
+\end{verbatim}
+ \end{texample}
+\end{demo}
+
+Si un document doit contenir beaucoup de code informatique et que l'on
+souhaite exercer un fin contrôle sur sa disposition et sa mise en
+forme, il vaut mieux se tourner vers un paquetage spécialisé comme
+\pkg{listings} \citep{listings}. La %
+\doc{listings}{http://texdoc.net/pkg/listings} %
+du paquetage compare ses fonctionnalités à celles de plusieurs autres
+paquetages similaires.
+
+Le paquetage \pkg{listings} peut effectuer automatiquement le marquage
+des mots-clés de nombreux langages de programmation, ajouter des
+numéros de ligne, importer du code de fichiers externes ou même
+indexer les mots-clés des extraits de code. À titre d'illustration, en
+utilisant l'environnement \Ie{lstlisting} de \pkg{listings} plutôt que
+\Ie{verbatim}, l'extrait de code C ci-dessus pourrait se présenter
+ainsi:
+\begin{demo}
+ \begin{texample}
+ \begin{vglisting}
+\begin{lstlisting}
+/* Hello World en C */
+#include <stdio.h>
+
+int main()
+{
+ printf("Hello world\n");
+ return 0;
+}
+\end{lstlisting}
+ \end{vglisting}
+ \producing
+\begin{lstlisting}[language=C,%
+ deletetexcs={int,include},
+ frame=single,%
+ backgroundcolor=\color{Azure2},%
+ rulecolor=\color{black},%
+ numbers=left,%
+ numberstyle=\tiny\sffamily,%
+ stringstyle=\color{orange}\itshape,%
+ identifierstyle=\color{cyan}\mdseries,%
+ xleftmargin=12pt,%
+ keywordstyle=\color{blue}\bfseries,
+ index=]
+/* Hello World en C */
+#include <stdio.h>
+
+int main()
+{
+ printf("Hello world\n");
+ return 0;
+}
+\end{lstlisting}
+ \end{texample}
+\end{demo}
+
+Il serait trop long et nettement hors de la portée du présent ouvrage
+d'expliquer les nombreuses fonctionnalités de \pkg{listings}.
+Précisons simplement que le paquetage a servi pour en composer les
+extraits de code et pour construire une grande partie de
+l'index.
+
+\begin{exemple}
+ \label{ex:trucs:listings}
+ Pour parvenir à la présentation des extraits de code source {\LaTeX}
+ de ce document, le paquetage \pkg{listings} est configuré dans le
+ préambule de la manière suivante:
+\begin{lstlisting}
+%% Couleurs
+\definecolor{comments}{rgb}{0.7,0,0}
+
+%% Configuration de listings
+\lstset{language = [LaTeX]TeX,
+ basicstyle = \ttfamily\NoAutoSpacing,
+ keywordstyle = \mdseries,
+ commentstyle = \color{comments}\slshape,
+ extendedchars = true,
+ showstringspaces = false,
+ backgroundcolor = \color{LightYellow1},
+ frame = lr,
+ rulecolor = \color{LightYellow1},
+ xleftmargin = 3.4pt,
+ xrightmargin = 3.4pt}
+\end{lstlisting}
+ (La couleur \code{LightYellow1} est définie par \pkg{xcolor} lorsque
+ le paquetage est chargé avec l'option \code{x11names}.)
+ \qed
+\end{exemple}
+
+
+
+\section{Production de rapports avec l'analyse intégrée}
+\label{sec:trucs:sweave}
+
+Les publications scientifiques reposent souvent sur une forme ou une
+autre d'analyse numérique ou statistique, la production de code
+informatique, une simulation stochastique, etc. La portion
+développement et analyse est alors produite avec un certain outil
+et la publication, avec un outil d'édition séparé --- {\LaTeX} dans le cas
+qui nous occupe. Or, tous les auteurs ont vécu cette situation: les
+résultats de l'analyse changent et il faut modifier le rapport en
+conséquence, refaire les tableaux et les graphiques, retracer cette
+valeur isolée au fil du texte directement tirée de l'analyse\dots\
+Seule la quantité de temps perdu rivalise avec le risque d'erreur.
+
+Il existe pourtant une meilleure façon de travailler.
+
+Cette meilleure façon de faire, tirée du concept de
+\emph{programmation lettrée}, consiste à combiner dans un seul et même
+document l'analyse et le rapport, puis de produire automatiquement une
+partie du second à partir de la première.
+
+Les utilisateurs du système statistique R bénéficient d'une mise en
+œuvre simple et élégante du concept ci-dessus avec l'outil Sweave
+\citep{Sweave}. Un fichier Sweave est à la base un document {\LaTeX}
+dans lequel on a inséré du code R à l'intérieur de balises spéciales
+\verb|<<>>=| et \verb|@| tirée de la syntaxe \code{noweb}
+\citep{noweb}, comme ceci:
+\begin{lstlisting}
+\section{Commandes R}
+
+L'utilisateur de R interagit avec l'interprète en entrant
+des commandes à l'invite de commande:
+<<>>=
+2 + 3
+pi
+cos(pi/4)
+@
+La commande \verb=exp(1)= donne \Sexpr{exp(1)},
+la valeur du nombre $e$.
+\end{lstlisting}
+
+Par convention, on enregistre un tel document sous un nom se terminant
+par l'extension \code{.Rnw}. Sa compilation s'effectue
+en deux étapes:
+\begin{enumerate}
+\item Le fichier \code{.Rnw} est passé à la commande \code{Sweave()}
+ de R. Celle-ci retrace les extraits de code et les remplace par des
+ environnements {\LaTeX} contenant, par défaut, les expressions R et
+ leur résultat dans des environnements \Ie{Sinput} et \Ie{Soutput}.
+ Elle évalue également les expressions R se trouvant dans les
+ commandes \cmd{\Sexpr} pour les remplacer par leur résultat. Cela
+ produit un fichier \code{.tex}:
+\begin{lstlisting}
+\section{Commandes R}
+
+L'utilisateur de R interagit avec l'interprète en entrant
+des commandes à l'invite de commande:
+\begin{Schunk}
+\begin{Sinput}
+> 2 + 3
+\end{Sinput}
+\begin{Soutput}
+[1] 5
+\end{Soutput}
+\begin{Sinput}
+> pi
+\end{Sinput}
+\begin{Soutput}
+[1] 3.141593
+\end{Soutput}
+\begin{Sinput}
+> cos(pi/4)
+\end{Sinput}
+\begin{Soutput}
+[1] 0.7071068
+\end{Soutput}
+\end{Schunk}
+La commande \verb=exp(1)= donne 2.71828182845905,
+la valeur du nombre $e$.
+\end{lstlisting}
+\item On compile le fichier \code{.tex} comme d'habitude.
+\end{enumerate}
+
+Sweave se révèle particulièrement utile pour créer des graphiques à
+partir de R: tout ce que l'on doit conserver dans son fichier
+\code{.Rnw}, c'est le code pour créer le graphique. Il est également
+possible de contrôler l'exécution des blocs de code et l'affichage du
+code source et des résultats par le biais d'options placées à
+l'intérieur de la balise d'ouverture \verb|<<>>=|. Consulter la %
+\link{http://leisch.userweb.mwn.de/Sweave/Sweave-manual.pdf}{documentation} %
+de Sweave pour les détails.
+
+\link{http://mpastell.com/pweave/}{Pweave} est un système similaire à
+Sweave pour le langage Python.
+
+Inspiré de Sweave, knitr \citep{knitr} permet également d'entrelacer
+du code {\LaTeX} et du code R. Cet outil offre plus d'options de
+traitement que Sweave, mais au prix d'une complexité accrue.
+
+En terminant, rappelons que Sweave n'est qu'un exemple de système de
+programmation lettrée. Il en existe plusieurs autres. Il appartient
+dès lors au lecteur de trouver le système qui correspond le mieux à
+ses besoins.
+
+\begin{information}
+ On doit le concept de programmation lettrée au créateur de {\TeX},
+ Donald Knuth. En fait, tout le code source de {\TeX} est écrit
+ en programmation lettrée! La %
+ \link{https://fr.wikipedia.org/wiki/Programmation_lettrée}{page Wikipedia} %
+ consacrée au sujet offre un très bon survol de l'historique et de la
+ nature du concept.
+
+ Le lecteur intéressé pourra consulter, par exemple, le %
+ \link{http://www.ctan.org/pkg/ulthese}{code source} %
+ de la classe \class{ulthese}. La documentation de la classe, le
+ code {\LaTeX}, les gabarits, tout se trouve entrelacé
+ dans le seul fichier \code{ulthese.dtx}.
+\end{information}
+
+
+\section{Diapositives}
+\label{sec:trucs:diapositives}
+
+Il n'est pas rare qu'une publication scientifique fasse l'objet d'une
+présentation dans le cadre d'un colloque ou d'un séminaire. Lorsque le
+texte a été rédigé avec {\LaTeX}, il est tout naturel de souhaiter le
+réutiliser pour la préparation de diapositives --- surtout si le texte
+comporte de nombreuses équations mathématiques qu'il serait
+extrêmement long de retranscrire dans un logiciel de présentation
+comme PowerPoint.
+
+Fort heureusement, il est tout à fait possible de composer ses
+diapositives avec {\LaTeX}. La classe standard \class{slides} produit
+des diapositives élégantes, quoique minimalistes, qui conviendront à
+l'auteur qui ne recherche rien de plus que du texte noir sur fond
+blanc.
+
+Cependant, l'outil devenu le standard \emph{de facto} pour la
+production de diapositives est la classe \class{beamer}
+\citep{beamer}. Celle-ci compte un grand nombre de thèmes et de
+gabarits élaborés, rend très simple l'insertion d'animations d'une
+diapositive à l'autre, gère automatiquement la table des matières
+et\dots\ produit des diapositives en couleur.
+
+Quelle que soit la classe utilisée, les diapositives produites avec
+{\LaTeX} se présentent sous forme de fichier PDF. On les projette avec
+une liseuse PDF en mode plein écran.
+
+Nous n'irons pas plus loin sur le sujet dans ce document. Consulter
+la %
+\doc{beamer}{http://texdoc.net/pkg/beameruserguide} %
+de \class{beamer} pour apprendre à utiliser la classe. Produire des
+diapositives de grande qualité avec les gabarits fournis avec la
+classe se révèle simple et rapide.
+
+
+
+\section{Gestion des versions et travail collaboratif}
+\label{sec:trucs:cvs}
+
+Plusieurs personnes travaillent sur un même fichier, ou encore, une
+seule personne y travaille, mais de plusieurs postes de travail
+différents. Quelle est la plus récente version du fichier? Un ajout
+fait hier dans le fichier a-t-il été pris en compte par une collègue
+aujourd'hui? Une modification apportée au fichier n'est plus
+nécessaire; comment retourner en arrière facilement?
+
+Les informaticiens ont résolu ce genre de problèmes il y a des
+dizaines d'années avec les systèmes de gestion de versions. Les
+systèmes les plus populaires en ce moment sont Subversion
+\citep{subversion} et Git \citep{git}.
+
+Bien que développés à l'origine pour la gestion du code source de
+logiciels, les systèmes de contrôle de versions conviennent
+parfaitement pour les sources {\LaTeX}. L'utilisation d'un tel système
+permet de:
+\begin{itemize}
+\item toujours savoir quelle est la plus récente version d'un fichier;
+\item travailler à plusieurs personnes simultanément sur un même
+ fichier;
+\item revenir aisément à une version antérieure d'un fichier;
+\item comparer deux versions d'un fichier pour connaître les
+ modifications qui y ont été apportées;
+\item gérer automatiquement les éventuels conflits de modification
+ d'un fichier;
+\item disposer en tout temps d'une copie de secours de son travail
+ lorsque l'on a recours à un serveur central (obligatoire avec
+ Subversion; optionnel avec Git\footnote{%
+ Si ce n'est que pour le volet de sauvegarde, nous recommandons
+ d'utiliser avec Git un dépôt central tel que
+ \link{https://github.com}{GitHub}, un serveur public qui héberge
+ déjà des millions de projets.}.)
+\end{itemize}
+Un système de gestion de versions est un outil qui permet d'augmenter
+considérablement sa productivité ou celle de son équipe de
+travail au moment de rédiger un ouvrage scientifique.
+
+La %
+\link{https://fr.wikipedia.org/wiki/Gestion_de_versions}{page Wikipedia} %
+sur le sujet offre une bonne introduction aux systèmes de gestion de
+versions. Les membres de la communauté de l'Université Laval qui
+souhaitent mettre sur pied un dépôt pour un projet pourront
+consulter leur équipe de soutien informatique facultaire.
+
+\begin{information}
+ La présente documentation est conservée dans un dépôt Subversion
+ public d'où l'on peut toujours obtenir la plus récente version.
+ Consulter la page des notices de copyright au début du document pour
+ accéder au dépôt.
+\end{information}
+
+
+
+%%%
+%%% Exercices
+%%%
+
+\section{Exercices}
+\label{sec:trucs:exercices}
+
+\Opensolutionfile{solutions}[solutions-trucs+astuces]
+
+\begin{Filesave}{solutions}
+\section*{Chapitre \ref*{chap:trucs}}
+\addcontentsline{toc}{section}{Chapitre \protect\ref*{chap:trucs}}
+
+\end{Filesave}
+
+\noindent%
+Pour les exercices
+\nolink{\ref{exercice:trucs:1}}--\nolink{\ref{exercice:trucs:n}},
+utiliser le fichier \fichier{exercice\_trucs.tex}. Celui-ci reprend
+une partie de la documentation de la classe \class{ulthese}. De plus,
+on remarquera que le document:
+\begin{itemize}
+\item doit être compilé avec pdf{\LaTeX} puisqu'il charge les
+ paquetages \pkg{inputenc} et \pkg{fontenc};
+\item définit des nouvelles commandes \cmdprint{\class} et
+ \cmdprint{\fichier} pour composer, respectivement, les noms de
+ classe et les noms de fichier;
+\item utilise la commande \cmdprint{\doc} de
+ l'\autoref{ex:commandes:doc};
+\item charge le paquetage \pkg{hyperref}, ce qui transforme les titres
+ de la table des matières, les renvois aux notes de bas de page et
+ les liens externes en hyperliens.
+\end{itemize}
+\medskip
+
+\begin{exercice}
+ \label{exercice:trucs:1}
+ Compiler et visualiser le fichier sans aucune modification. Le texte
+ est composé dans la police par défaut Computer Modern.
+
+ Ensuite, modifier le préambule du document pour composer le document
+ dans la police Palatino, tel qu'expliqué à
+ l'\autoref{ex:trucs:palatino}. Charger également le paquetage
+ \pkg{helvet} afin d'utiliser Helvetica pour le texte en police sans
+ empattements (\cmdprint{\textsf}).
+ \begin{sol}
+ On doit ajouter dans le préambule les commandes
+\begin{lstlisting}
+\usepackage{mathpazo}
+\usepackage{helvet}
+\end{lstlisting}
+ La police Helvetica est très grande. Tel que mentionné dans la %
+ \doc{psnfss2e}{http://texdoc.net/pkg/psnfss/} %
+ de PSNFSS (section~4), il est généralement préférable de charger
+ le paquetage \pkg{helvet} avec, par exemple,
+\begin{lstlisting}
+\usepackage[scaled=0.92]{helvet}
+\end{lstlisting}
+ pour que le texte en Helvetica se marie mieux à celui dans une
+ autre police.
+ \end{sol}
+\end{exercice}
+
+\begin{exercice}
+ Configurer le paquetage \pkg{hyperref} pour que les hyperliens dans
+ la table des matières soient ancrés aux numéros de page plutôt
+ qu'aux titres de section.
+ \begin{sol}
+ Tel qu'expliqué à la \autoref{sec:trucs:hyperliens}, on doit
+ insérer dans le préambule du document la commande
+\begin{lstlisting}
+\hypersetup{linktocpage=true}
+\end{lstlisting}
+ ou, plus simplement,
+\begin{lstlisting}
+\hypersetup{linktocpage}
+\end{lstlisting}
+ \end{sol}
+\end{exercice}
+
+\begin{exercice}
+ Charger le paquetage \pkg{xcolor} et ajouter l'option
+ \code{colorlinks} à \pkg{hyperref}, puis recompiler le document.
+ Observer les changements.
+ \begin{sol}
+ En conservant l'ajout de l'exercice précédent, on a dans le
+ préambule la commande
+\begin{lstlisting}
+\hypersetup{colorlinks, linktocpage}
+\end{lstlisting}
+ Les hyperliens se présentent maintenant en couleur selon les
+ paramètres par défaut de \pkg{hyperref}.
+ \end{sol}
+\end{exercice}
+
+\begin{exercice}
+ En s'inspirant de l'\autoref{ex:trucs:couleurs}, modifier la couleur
+ des liens internes et externes.
+ \begin{sol}
+ On peut soit utiliser des couleurs prédéfinies de \pkg{xcolor}
+ (\autoref{tab:trucs:couleurs}), soit en définir de nouvelles avec
+ \cmd{\definecolor}. On fait ensuite appel aux couleurs choisies
+ pour les options \code{linkcolor} (liens internes) et
+ \code{urlcolor} (liens externes) de \pkg{hyperref}.
+
+ Exemple utilisant des couleurs prédéfinies:
+\begin{lstlisting}
+\hypersetup{colorlinks, linktocpage,
+ linkcolor=brown, urlcolor=blue}
+\end{lstlisting}
+
+ Exemple avec de nouvelles couleurs:
+\begin{lstlisting}
+\definecolor{link}{rgb}{0,0.4,0.6}
+\definecolor{url}{rgb}{0.6,0,0}
+\hypersetup{colorlinks, linktocpage,
+ urlcolor=url, linkcolor=link}
+\end{lstlisting}
+ \end{sol}
+\end{exercice}
+
+\begin{exercice}
+ \label{exercice:trucs:n}
+ Charger le paquetage \pkg{listings} et modifier l'environnement
+ \Pe{verbatim} que l'on trouve dans le document pour un environnement
+ \Pe{lstlisting}. En s'inspirant de l'\autoref{ex:trucs:listings},
+ configurer la présentation des extraits de code pour utiliser une
+ police non proportionnelle (\cmdprint{\ttfamily}) et un arrière-plan
+ de la couleur standard \code{lightgray}.
+ \begin{sol}
+ S'il y avait plusieurs extraits de code dans le document, mieux
+ vaudrait les configurer tous à l'identique dans le préambule du
+ document avec
+\begin{lstlisting}
+\lstset{basicstyle=\ttfamily,
+ backgroundcolor=\color{lightgray}}
+\end{lstlisting}
+ Ensuite,
+\begin{vglisting}
+\begin{lstlisting}
+latex ulthese.ins
+\end{lstlisting}
+\end{vglisting}
+ donne le résultat demandé.
+
+ Pour un seul extrait, il est également possible de simplement
+ charger le paquetage dans le préambule et d'effectuer la
+ configuration à l'ouverture de l'environnement, comme ceci:
+\begin{vglisting}
+\begin{lstlisting}[basicstyle=\ttfamily,
+ backgroundcolor=\color{lightgray}]
+latex ulthese.ins
+\end{lstlisting}
+\end{vglisting}
+ \end{sol}
+\end{exercice}
+
+\Closesolutionfile{solutions}
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-engine: xetex
+%%% TeX-master: "formation-latex-ul"
+%%% coding: utf-8
+%%% End: