diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /help/LaTeX-FAQ-francaise/part3 |
Initial commit
Diffstat (limited to 'help/LaTeX-FAQ-francaise/part3')
-rw-r--r-- | help/LaTeX-FAQ-francaise/part3 | 2487 |
1 files changed, 2487 insertions, 0 deletions
diff --git a/help/LaTeX-FAQ-francaise/part3 b/help/LaTeX-FAQ-francaise/part3 new file mode 100644 index 0000000000..ff8ae0d913 --- /dev/null +++ b/help/LaTeX-FAQ-francaise/part3 @@ -0,0 +1,2487 @@ +Path: tempo.univ-lyon1.fr!univ-lyon1.fr!news.imp.ch!fr.clara.net!heighliner.fr.clara.net!maredsous.noc.fr.clara.net!victor.teaser.fr!teaser.fr!fdn.fr!edgard.fdn.fr!not-for-mail +Date: 08 Jun 2001 13:31:18 +0200 +Newsgroups: fr.comp.text.tex,fr.usenet.reponses +Subject: [FAQ] fr.comp.text.tex - parties 7 a 11 +Message-ID: <faq-fctt-p320010608133118@edgard.fdn.fr> +X-Posted-By: poste.sh version 1.1 +From: bayartb@edgard.fdn.fr (Nono le robot) +Supersedes: <faq-fctt-p320010501143416@edgard.fdn.fr> +Expires: 08 Jul 2001 13:31:17 +0200 +Followup-To: poster +Organization: French Data Network +Approved: bayartb@edgard.fdn.fr +Lines: 2477 +Xref: tempo.univ-lyon1.fr fr.comp.text.tex:23523 fr.usenet.reponses:20389 + +Archive-name: fr/faq-latex-francaise/part3 + +Author: Marie-Paule Kluth +Posting-Frequency: mensuel (monthly) +Version: 2.27 + +================================================================ + Cette FAQ, rédigée initialement par MP Kluth est maintenant + tenue à jour autant que possible par B. Bayart et + plusieurs volontaires (voir question [30]). +================================================================ + +================================================================ +[7] GESTION DES TABLEAUX +================================================================ + +# 7.1 # Comment faire un tableau ? +---------------------------------- +En mode texte, il faut utiliser l'environnement tabular. Chaque +colonne est ensuite décrite par r, l ou c pour obtenir une +colonne de texte justifié à droite, à gauche ou centré. Chaque +déclaration de colonne peut être délimitée par une séparation +verticale : | ou rien. Une ligne horizontale entre deux lignes +s'obtient par la commande \hline. Le contenu de chaque colonne +est séparé de celui de la suivante par le symbole &. Le +changement de ligne est obtenu par la commande \\. + +Lorsque plusieurs colonnes adjacentes ont la même définition, on +peut grouper leurs déclarations avec la commande +*{nb_colonnes}{déclaration} + +Exemple : +\begin{tabular}{|*{2}{c|}l r|} + \hline + une & deux & trois & quatre \\ + case centrée & encore centrée & à gauche & à droite \\ + \hline +\end{tabular} +%%%% fin exemple %%%% + +# 7.2 # Comment gérer les tableaux de plus d'une page ? +------------------------------------------------------- +* Le package 'supertabular' permet de gérer automatiquement (ou +presque) les coupures de tableaux. Il est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/supertabular/. +Il calcule la longueur du tableau à chaque \\ et vérifie si la +fin de page est atteinte. Si oui, il coupe le tableau. Les +commandes à utiliser sont : ++ \tablefirsthead{...} pour définir le contenu de la première +occurrence de la tête du tableau. Cette commande est optionnelle. ++ \tablehead{...} pour définir le contenu de la tête des +tableaux suivants. ++ \tabletail{...} définit le contenu de la ligne qui doit être +ajoutée avant une coupure ++ \tablelasttail{...} définit le contenu de la dernière ligne +du tableau. Cette commande est optionnelle. ++ \topcaption{...}, \bottomcaption{...} et \tablecaption{...} +permettent de nommer un tableau soit au début ou à la fin du +tableau. \tablecaption{...} est l'option par défaut. + +Exemple : +\begin{center} + \tablefirsthead{\hline \multicolumn{1}{|c}{Nombre} + & \multicolumn{1}{c}{Nombre$^2$} + & Nombre$^4$ + & \multicolumn{1}{c|}{Nombre!} \\ \hline} + \tablehead{\hline \multicolumn{4}{|l|}{\small\sl continued + from previous page}\\ + \hline \multicolumn{1}{|c}{ Nombre} + & \multicolumn{1}{c}{Nombre$^2$} + & Nombre$^4$ + & \multicolumn{1}{c|}{Nombre!} \\ \hline} + \tabletail{\hline\multicolumn{4}{|r|}{\small\sl Suite page + suivante~\ldots}\\\hline} \tablelasttail{\hline} + \bottomcaption{Fin.} + \par + \begin{supertabular}{| r@{\hspace{6.5mm}}| + r@{\hspace{5.5mm}}| r | r|} + 1 & 1 & 1 & 1 \\ + 2 & 4 & 16 & 2 \\ + 3 & 9 & 81 & 6 \\ + 4 & 16 & 256 & 24 \\ + 5 & 25 & 625 & 120 \\ + 6 & 36 & 1296 & 720 \\ + 7 & 49 & 2401 & 5040 \\ + 8 & 64 & 4096 & 40320 \\ + 9 & 81 & 6561 & 362880 \\ + 10 & 100 & 10000 & 3628800 \\ + 11 & 121 & 14641 & 39916800 \\ + 12 & 144 & 20736 & 479001600 \\ + 13 & 169 & 28561 & 6.22702080E+9 \\ + 14 & 196 & 38416 & 8.71782912E+10\\ + 15 & 225 & 50625 & 1.30767437E+12\\ + 16 & 256 & 65536 & 2.09227899E+13\\ + 17 & 289 & 83521 & 3.55687428E+14\\ + 18 & 324 & 104976 & 6.40237370E+15\\ + 19 & 361 & 130321 & 1.21645100E+17\\ + 20 & 400 & 160000 & 2.43290200E+18\\ + \hline + 1 & 1 & 1 & 1 \\ + 2 & 4 & 16 & 2 \\ + 3 & 9 & 81 & 6 \\ + 4 & 16 & 256 & 24 \\ + 5 & 25 & 625 & 120 \\ + 6 & 36 & 1296 & 720 \\ + 7 & 49 & 2401 & 5040 \\ + 8 & 64 & 4096 & 40320 \\ + 9 & 81 & 6561 & 362880 \\ + 10 & 100 & 10000 & 3628800 \\ + 11 & 121 & 14641 & 39916800 \\ + 12 & 144 & 20736 & 479001600 \\ + 13 & 169 & 28561 & 6.22702080E+9 \\ + 14 & 196 & 38416 & 8.71782912E+10\\ + 15 & 225 & 50625 & 1.30767437E+12\\ + 16 & 256 & 65536 & 2.09227899E+13\\ + 17 & 289 & 83521 & 3.55687428E+14\\ + 18 & 324 & 104976 & 6.40237370E+15\\ + 19 & 361 & 130321 & 1.21645100E+17\\ + 20 & 400 & 160000 & 2.43290200E+18\\ + \hline + 1 & 1 & 1 & 1 \\ + 2 & 4 & 16 & 2 \\ + 3 & 9 & 81 & 6 \\ + 4 & 16 & 256 & 24 \\ + 5 & 25 & 625 & 120 \\ + \end{supertabular} +\end{center} +%%%% fin exemple %%%% + +* Le package 'longtable', de D. Carlisle, disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/tools/, fonctionne de la même +manière mais mieux et permet de définir une taille de tableau +commune sur toutes les pages. Les commandes associées à ce +package sont \endfirsthead, \endhead, \endfoot et \endlastfoot. + +\begin{longtable} + {|p{0.2\linewidth}|p{0.2\linewidth}|p{0.2\linewidth}|} + \hline + Premiere colonne & Deuxieme & Troisieme \endfirsthead + \hline + Premiere & Deuxieme & Troisieme \\ + \multicolumn{3}{|p{0.6666\linewidth}|}{Suite ... } \\ + \endhead + \hline + \multicolumn{3}{|p{0.6666\linewidth}|}{Suite page suivante} + \\ \hline \endfoot \hline + \multicolumn{3}{|p{0.6666\linewidth}|}{C'est fini} \\ + \hline + \endlastfoot \hline + 1 & 1 & 1 \\ + 2 & 4 & 16 \\ + 3 & 9 & 81 \\ + 1 & 1 & 1 \\ + 2 & 4 & 16 \\ + 3 & 9 & 81 \\ + 1 & 1 & 1 \\ + 2 & 4 & 16 \\ + 3 & 9 & 81 \\ + 1 & 1 & 1 \\ + 2 & 4 & 16 \\ + 3 & 9 & 81 \\ +\end{longtable} + +au lieu de faire des calculs de largeurs de colonne, on peut +aussi mettre un \setlongtables dans le préambule et déclarer +ses tableaux comme à l'habitude en \begin{longtable}{|c|c|c|} +et LaTeX se charge du reste. Dans ce cas, l'ajustement des +colonnes peut nécessiter plusieurs (jusqu'à trois) compilations +enchaînées. + +* Le package 'ltxtable' de D. Carlisle, disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/carlisle/ permet de +profiter des fonctionnalités de tabularx et de longtable. + +# 7.3 # Comment modifier l'orientation d'un tableau ? +----------------------------------------------------- +* On peut utiliser la commande \rotatebox du package 'graphics' +de D. Carlisle. Ce package est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/graphics/. + +Exemple : +\rotatebox{90}{ +\begin{tabular}{|c|c|} + \hline + salut & coucou \\ + \hline +\end{tabular} +} +%%%% fin exemple %%%% + +* Le style 'lscape' de D. Carlisle marche aussi avec +l'environnement longtable (du même). + +* De même l'environnement sidewaystable du package 'rotating' +permet d'inclure des tableaux en mode landscape. Le sens de +rotation peut être changé par l'option counterclockwise. + +Exemple : +\documentclass{report} +\usepackage[counterclockwise]{rotating} +\usepackage{french} +\pagestyle{empty} +\begin{document} +\rotatebox{90}{ +\begin{tabular}{|c|c|} + \hline + vu & à voir \\ + de Latour & Van Gogh \\ + \hline +\end{tabular} +} +\end{document} +%%%% fin exemple %%%% + +* Le package 'rotfloat' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/rotfloat/ permet de gérer +la rotation des flottants. + +# 7.4 # Comment nommer un tableau ? +----------------------------------- +Pour pouvoir associer une légende (\caption) à un tableau, il +suffit de l'encapsuler dans un environnement table. + +Exemple : +\begin{table}[htbp] + \begin{center} + \begin{tabular}{|c|c|} + \hline + un & deux \\ + \hline + trois & quatre \\ + \hline + \end{tabular} + \caption{Nom du tableau. \label{table-nom}} + \end{center} +\end{table} +%%%% fin exemple %%%% + +# 7.5 # Comment modifier l'épaisseur des lignes d'un tableau ? +-------------------------------------------------------------- +* Pour obtenir des lignes horizontales fines ou épaisses dans un +tableau, il faut utiliser les commandes +\setlength{\doublerulesep}{\arrayrulewidth} dans l'entête du +document puis dans le tableau +\\\hline pour une ligne fine +\\\hline\hline pour une ligne épaisse + +* Autre solution : la macro de A. Kessi (alain.kessi@psi.ch) + +%%%% debut macro %%%% +\makeatletter +\def\hlinewd#1{% +\noalign{\ifnum0=`}\fi\hrule \@height #1 % +\futurelet\reserved@a\@xhline} +\makeatother +%%%% fin macro %%%% + +Exemple : +\begin{tabular}{|l|r|} \hline + premier & 1 \\ \hline + second & 2 \\ \hlinewd{5pt} + total & 3 \\ \hline +\end{tabular} +%%%% fin exemple %%%% + +Même chose pour les lignes verticales. +%%%% debut macro %%%% + \begin{tabular}{@{\,\vrule width 5pt\,}c|c|} +%%%% fin macro %%%% + +* Le package 'easytable' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/easy/ propose différents +styles de lignes de séparation des cellules d'un tableau. + +# 7.6 # Comment griser des cellules d'un tableau ? +-------------------------------------------------- +* Le package 'colortab' disponible par ftp sur +ftp://ftp.princeton.edu/pub/tvz/ ou sur +ftp://ftp.fdn.org/pub/CTAN/graphics/pstricks/generic/ (accompagné de sa doc dans +ftp://ftp.fdn.org/pub/CTAN/graphics/pstricks/origdoc/) permet de griser ou de mettre en +couleur certaines parties de tableau. + +Remarque : colortab n'est pas actuellement maintenu par Van + Zandt et l'extension longtable, avec laquelle il + était compatible, ne fonctionne plus. +AL: c'est toujours vrai, ça ? + +* Il est possible également d'utiliser le package 'shade' +disponible sur {macros/generic/}. + +* D. Carlisle propose également le package 'colortbl' sur +ftp://ftp.fdn.org/pub/CTAN/macros/contrib/supported/carlisle/. Ce package permet +non seulement de gérer de la couleur mais il est en outre +compatible avec le package 'longtable'. Il nécessite les +packages 'array' et 'color'. + +Exemple : +\begin{tabular}{|>{\columncolor[gray]{.8}}l% +|>{\color{white}\columncolor[gray]{.2}}r|} + \hline + UN & DEUX \\ + TROIS & QUATRE \\ + \hline +\end{tabular} +%%%% fin exemple %%%% + +# 7.7 # Comment changer la fonte d'une colonne ? +------------------------------------------------ +Pour préciser une fonte spécifique dans une colonne d'un +tableau, on peut utiliser le package 'array'. Ce dernier est +disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/tools/. + +Exemple : +\begin{tabular}{>{\bfseries}l >{\slshape}r c} + gras & penché & normal \\ +\end{tabular} +%%%% fin exemple %%%% + +# 7.8 # Comment créer des notes de bas de page dans un tableau ? +---------------------------------------------------------------- +* Il suffit d'encapsuler le tableau dans un environnement +minipage et pour supprimer le trait de séparation des notes de +bas de page de déclarer : \renewcommand{\footnoterule}{}. + +Exemple : +\begin{minipage}[t]{5cm} + \renewcommand{\footnoterule}{} % permet de supprimer le + % trait de séparation + \begin{tabular}{|c|c|} + \hline + Air & Terre\footnote{Feu}\\ + \hline + \end{tabular} +\end{minipage} +%%%% fin exemple %%%% + +Remarque : dans ce cas, la note apparaît juste après le tableau, + dans l'environnement minipage. + +* On peut également utiliser : +\footnote[cptr]{texte.} +toujours dans un environnement minipage, et gérer soi-même ses +compteurs (cptr est un entier alors que les marques qui +apparaissent dans le tableau sont les lettres de l'alphabet). + +Remarque : ici aussi la note apparaît en dessous du tableau. + +* Il existe également deux commandes spécifiques \footnotemark[] +et \footnotetext[]{}. \footnotemark permet de gérer le compteur +de notes et \footnotetext permet d'insérer le texte +correspondant en bas de page. + +Exemple : +\begin{tabular}{|c|c|} + \hline + donnee1\footnotemark[1] & donnee2\footnotemark[2] \\ + \hline +\end{tabular} +\footnotetext[1]{Note associ\'ee \`a la donn\'ee 1.} +\footnotetext[2]{Note associ\'ee \`a la donn\'ee 2.} +%%%% fin exemple %%%% + +Remarque : ici les notes apparaissent bien dans le bas de page. + +# 7.9 # Comment écrire un texte sur plusieurs colonnes ? +-------------------------------------------------------- +Il faut utiliser la commande : +\multicolumn{nb_colonnes}{alignement}{Texte} + +Exemple : +\begin{tabular}[b]{|l|c|} + \hline + \multicolumn{2}{|c|}{Texte sur 2 colonnes} \\ + \hline \hline + donnée1 & donnée2 \\ + A & B \\ + \hline +\end{tabular} +%%%% fin exemple %%%% + +Remarque : dans le cas où le nombre de colonnes à couvrir est + égal à 1, cette commande peut être utilisée pour + modifier l'alignement (c, l, r, |, etc) d'une + cellule. + +# 7.10 # Comment passer certaines cellules en reverse vidéo ? +------------------------------------------------------------- +Le package 'color' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/graphics/ permet entre autres de le +faire. En fait, il permet de définir des couleurs de texte et de +fond de page. + +Exemples : +\tabcolsep=30pt +\begin{tabular}{|c|c|c|} +\hline +1&&\\ +&\colorbox{black}{\strut{\color{white}Coucou}}&\\ +&&2\\ +\hline +\end{tabular} + +ou (\LaTeXe) + +\newlength\Coucoulength +\settowidth\Coucoulength{Coucou Coucou Coucou} + +\begin{tabular}{|c|c|c|} +\hline +1&Coucou Coucou Coucou &\\ +&\colorbox{black}{\makebox[\Coucoulength][c]{\color{white}Coucou}} +&\\ +&&2\\ +\hline +\end{tabular} +%%%% fin exemple %%%% + +# 7.11 # Comment fixer la largeur d'une colonne ? +------------------------------------------------- +* p{largeur} dans les descripteurs de colonne permet de fixer la +largeur d'une colonne. Dans ce cas par défaut le texte est +justifié à gauche. Les commandes \centering et \raggedright +permettent respectivement de le centrer ou de le justifier à +droite. + +Exemple : +\begin{center} + \begin{tabular}{|c|l|p{4cm}|r|} + \hline + centré & à gauche & largeur fixe & à droite \\ + bla bla bla & bla bla bla & bla bla bla & bla bla bla \\ + \hline + \end{tabular} +\end{center} +%%%% fin exemple %%%% + +* Avec le package 'array', disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/tools/, il faut utiliser l'option +m{largeur}. + +* Le package 'easytable' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/easy/ permet facilement d'écrire +des tableaux dont les colonnes ont une largeur fixe. + +# 7.12 # Comment écrire un texte sur plusieurs lignes ? +------------------------------------------------------- +Il existe le package 'multirow' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/. Il permet d'écrire un texte à +cheval sur deux lignes. + +Exemple : +\begin{table}[htbp] + \begin{center} + \begin{tabular}{|c|c||c|c|} + \hline + \multirow{2}{0.5cm}{k} & \multirow{2}{0.5cm}{$p_G$} & + \multicolumn{2}{c|}{test} \\ + \cline{3-4} + & & DADWRD & RARWRD \\ + \hline + 2 & $1$ & 90 n & 228 n \\ + 3 & $p_d$ & 202 n & 449 n \\ + 4 & $p_d^2$ & 424 n & 891 n \\ + 5 & $p_d^3$ & 866 n & 1774 n \\ + \hline + \end{tabular} + \caption{Nombre d'opération par cellule des tests + pseudo-aléatoires de fautes de type k-coupling. + \label{table-compar}} + \end{center} +\end{table} +%%%% fin exemple %%%% + +# 7.13 # Comment diviser une cellule par une diagonale ? +-------------------------------------------------------- +Il faut utiliser le package 'slashbox' disponible par ftp sur +ftp://ftp.tohoku.ac.jp/pub/TeX/latex-styles/bear_collections/style-files/. + +Exemple (de la doc) : +\begin{tabular}{|l||*{5}{c|}}\hline +\backslashbox{Room}{Date} +&\makebox[3em]{5/31}&\makebox[3em]{6/1}&\makebox[3em]{6/2} +&\makebox[3em]{6/3}&\makebox[3em]{6/4}\\\hline\hline +Meeting Room &&&&&\\\hline +Auditorium &&&&&\\\hline +Seminar Room &&&&&\\\hline +\end{tabular} +%%%% fin exemple %%%% + +# 7.14 # Comment définir une colonne en mode mathématique dans un tableau ? +--------------------------------------------------------------------------- +Avec le package 'array' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/tools/, il suffit de déclarer +\begin{tabular}{>{$}c<{$}cc} pour avoir une colonne en mode +mathématique et deux colonnes de texte. + +# 7.15 # Comment modifier le nombre de tableaux par page ? +---------------------------------------------------------- +cf. question 8.4. + +# 7.16 # Comment mettre deux tableaux côte à côte ? +--------------------------------------------------- +cf. question 8.3. + +# 7.17 # Comment définir un séparateur de colonne ? +--------------------------------------------------- +@{symbole} entre deux descripteurs de colonnes permet de définir +"symbole" comme séparateur de colonnes. Cela remplace |. + +Exemple : +\begin{tabular}{|l @{\textbf{ est }} l|} + \hline + Le lion & féroce. \\ + Le chien & fidèle. \\ + \hline +\end{tabular} +%%%% fin exemple %%%% + +# 7.18 # Comment obtenir des lignes partielles dans un tableau ? +---------------------------------------------------------------- +La commande \cline{ColonneDebut-ColonneFin} est faite pour ça. + +Exemple : +\begin{center} + \begin{tabular}{|c|c|c||c|c|c|c|c|c|c||c|} + \hline \hline + a & b & c & d & e & f & g & h & i & j & k \\ + \cline{1-4} \cline{6-6} \cline{8-9} + 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 \\ + \hline + \end{tabular} +\end{center} +%%%% fin exemple %%%% + +# 7.19 # Comment éviter que du texte de grande taille n'atteigne le cadre des cellules ? +---------------------------------------------------------------------------------------- +* Il faut pour cela utiliser la commande \strut qui simule un +objet vertical invisible, après le changement de fonte. + +Exemple : +\begin{tabular}{|l|} + \hline + {\large HELLO} dfg \\ + \hline +\end{tabular} +\begin{tabular}{|l|} + \hline + {\large\strut HELLO} dfg \\ + \hline +\end{tabular} +%%%% fin exemple %%%% + +* Il existe l'équivalent mathématique : \mathstrut. + +* On peut également agrandir la hauteur des lignes avec la +commande \arraystretch : + \renewcommand{\arraystretch}{1.5} + +# 7.20 # Comment fixer la largeur d'un tableau ? +------------------------------------------------ +* Le package 'tabularx' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/tools/ permet de définir une largeur +de tableau. + +* Le package 'easytable' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/easy/ permet facilement de +fixer des largeur de colonnes ou de lignes. + +# 7.21 # Comment tracer des traits discontinus ? +------------------------------------------------ +Il faut utiliser les packages 'hvdashln' et 'array'. + +Exemple : +dans le préambule du document : +\usepackage{hvdashln,array} +\setlength{\hdashlinewidth}{.5pt} +\setlength{\hdashlinegap}{2pt} + +dans le texte : +\[ +\left[ \begin{array}{ccc@{}>{\vdashline}c} + a_1 & b_1 & c_1 & d_1 \\ + a_2 & b_2 & c_2 & d_2 \\ + a_3 & b_3 & c_3 & d_3 \\ + a_4 & b_4 & c_4 & d_4 +\end{array} \right] +\] +%%%% fin exemple %%%% + +# 7.22 # Comment fixer la taille et justifier une colonne ? +----------------------------------------------------------- +Le problème qui se pose lorsqu'on utilise : +\begin{tabular}{|>{\raggedright}p{0.33\textwidth}<{}| + >{\raggedleft}p{0.66\textwidth}<{}|} + A& \\ + B&C \\ +\end{tabular} +vient du fait que \\ est redéfini par tabular et les commandes +ragged. On ne peut donc plus utiliser \\ dans un texte. + +Il existe différentes solutions pour pallier ce problème : +* on peut corriger ce problème en incluant les lignes suivantes +dans le préambule du document : +\makeatletter +\newtoks\fintableau +\let\fintableau\@arraycr +\makeatother + +* avec le package 'array', il suffit d'utiliser +la commande \tabularnewline[<vertical space>] à la place de la +commande \\. + +Exemple : +\begin{tabular}{|r|r|>{\raggedleft}m{190pt}|} + \hline + col1 & col 2 & col3 \tabularnewline + une & deux & trois \\ quatre \tabularnewline + \hline +\end{tabular} +%%%% fin exemple %%%% + +* on peut également inclure la nouvelle commande suivante dans +le préambule du document : +\newcommand\PreserveBackSlash[1]{\let\temp=\\#1\let\\=\temp} +puis en utilisant : +\begin{tabular}{|r|r|>{\PreserveBackSlash\raggedleft}m{190pt}|} + +# 7.23 # Comment faire une liste de tableaux ? +---------------------------------------------- +Il suffit d'inclure la commande \listoftables à l'endroit où +l'on veut inclure cette liste. Sachant que cette liste fait +référence aux pages où apparaissent les tableaux, il faut +enchaîner au moins deux compilations LaTeX pour que toutes les +références soient exactes. + +================================================================ +[8] GESTION DES FIGURES +================================================================ + +# 8.1 # Comment inclure une figure ? +------------------------------------ +Remarque : A. K. Goel a écrit un long document concernant les + problèmes de gestion de figures et d'images dans + LaTeX. Ce dernier est disponible par ftp anonyme sur + ftp://math.uwaterloo.ca/pub/figsInLatex.ps.Z ou sur + ftp://ftp.fdn.org/pub/CTAN/info/figsinltx.ps + + De même, K. Reckdahl a écrit "Using EPS Graphics in + LaTeX2e Documents". Ce document est disponible sur + ftp://ftp.fdn.org/pub/CTAN/info/epslatex.ps. + +* Sous LaTeX2e, il faut utiliser l'un des packages : +'graphics' ou 'graphicx' et la commande \includegraphics. Cette +commande accepte des options telles que dvips ou oztex (cf. +documentation pour plus de détails). +Le package 'graphicx' a pour majeure différence avec 'graphics' +d'en simplifier les commandes. Ces packages sont disponibles sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/graphics/. Pour plus de +détails, consulter http://www.loria.fr/services/tex/packages.html. + +Exemple : +\begin{figure}[htbp] + \begin{center} + \includegraphics{images/fig1.ps} + \end{center} + \caption{\footnotesize blah blah blah} +\end{figure} +%%%% fin exemple %%%% + +La commande \includegraphics du package 'graphicx' peut prendre +comme paramètres angle, width, height, scale, clip et draft. + +Exemple : +\includegraphics[width=\linewidth, draft=true]{figure.eps} +%%%% fin exemple %%%% + +* Sous LaTeX2.09, pour pouvoir appeler un fichier postscript, +il suffit de mettre l'option epsf dans le \documentstyle. +La figure peut ensuite être appelée par la commande +\epsfbox{nom-figure.(e)ps} + +Une jolie façon d'inclure une figure dans un source LaTeX2.09 +est d'utiliser la macro : + +\begin{figure}[htbp] + \centerline{\epsfxsize=10cm \epsfbox{nom-figure.format}} + \caption{. \label{fig-}} +\end{figure} + +* Il y a aussi le package 'epsfig' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/graphics/ (LaTeX2.09 mais utilisable +avec LaTeX2e). + +Exemple : +\begin{figure}[p] + \centerline{\epsfig{file=nom_figure.eps, + width=largeur, + height=hauteur}} + \caption{Titre.} + \label{nom_label} +\end{figure} +%%%% fin exemple %%%% + +* Une figure au format tex picture, tex picture + epic, tex +picture + eepic, ... peut être appelée directement par une +commande \input. En outre, si vous utilisez un format epic ou +eepic, il faut penser à rajouter 'epic' ou 'eepic' à la ligne +documentstyle ou d'inclure les packages 'epic' ou 'eepic'. + +# 8.2 # Comment nommer une figure ? +----------------------------------- +C'est la commande \caption qui permet de faire cela. Par défaut +le titre de la figure apparaîtra en dessous. Cf exemples +ci-dessus. Pour que le titre apparaisse au-dessus, il faut +redéfinir les longueurs suivantes. + +Exemple : +\setlength\abovecaptionskip{0pt} +\setlength\belowcaptionskip{10pt} +puis appeler : +\begin{figure} +\caption{... ... ...} +\includegraphics{dessin.eps} +\end{figure} +%%%% fin exemple %%%% + +# 8.3 # Comment placer des figures côte à côte ? +------------------------------------------------ +* Sous LaTeX2e, il faut utiliser le package 'graphics' ou +'graphicx' disponibles sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/graphics/. + +Exemples : +\begin{figure} + \begin{minipage}[c]{.46\linewidth} + \includegraphics{figure1.format} + \end{minipage} \hfill + \begin{minipage}[c]{.46\linewidth} + \includegraphics{figure2.format} + \end{minipage} +\end{figure} + +\begin{figure} +\includegraphics[width=5cm]{fig1.eps}\hfill +\includegraphics[width=5cm]{fig2.eps} +\caption{Titre commun}\label{fig:somefiglabel} +\end{figure} +%%%% fin exemple %%%% + +* Une autre solution consiste à mettre chaque figure dans une +case d'un tableau. + +Exemple (avec le package graphics ou graphicx) : +\begin{tabular}{cc} + \includegraphics{figure1.eps} & + \includegraphics{figure2.eps} \\ +\end{tabular} +%%%% fin exemple %%%% + +* LaTeX2.09. Pour mettre des figures côte à côte, il suffit +d'encapsuler leur appel dans des minipages. + +Exemples : ++ avec le package 'epsf' +\begin{minipage}[t]{.46\linewidth} + \center\epsfxsize= 5cm \epsfbox{fig1.eps} +\end{minipage} % ne pas sauter de ligne +\begin{minipage}[t]{.46\linewidth} + \center\epsfxsize= 5cm \epsfbox{fig2.eps} +\end{minipage} + +ou si l'on veut attacher des titres aux figures : + ++ avec le package 'epsfig' +\begin{figure} + \begin{minipage}[b]{.46\linewidth} + \centering\epsfig{figure=fig1.ps,width=\linewidth} + \caption{premiere figure \label{fig1}} + \end{minipage} \hfill + \begin{minipage}[b]{.46\linewidth} + \centering\epsfig{figure=fig2.ps,width=\linewidth} + \caption{deuxieme figure \label{fig2}} + \end{minipage} +\end{figure} +%%%% fin exemple %%%% + +* Si l'on veut un seul titre pour plusieurs figures voir le +package 'subfigure' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/subfigure/. + +Exemple : +\begin{figure}[ht] +\begin{center} + \subfigure[I]{\epsfig{figure=st1.ps,width=6.58cm}}\quad + \subfigure[II]{\epsfig{figure=st2.ps,width=5.0cm}}\\ + \subfigure[III]{\epsfig{figure=st3.ps,width=5.0cm}} +\end{center} +\caption{Impermeable surface treatments} +\label{fig:inf} +\end{figure} +%%%% fin exemple %%%% + +* Une autre possibilité pour obtenir un titre par figure est +d'utiliser le package 'epslatex' disponible sur +ftp://ftp.fdn.org/pub/CTAN/info/. + +# 8.4 # Comment modifier le nombre de figures par page ? +-------------------------------------------------------- +En fait, on ne peut agir que globalement sur le nombre de +flottants autorisé par page. Il n'y a pas de sélection +figure/tables/.... + +Il arrive fréquemment que lorsqu'un flottant dépasse 60% d'une +page, LaTeX préfère changer de page plutôt que d'utiliser les +40% de l'espace restant. + +La commande \floatpagefraction permet de redéfinir l'espace +minimum que peuvent occuper des flottants. Cela permet de +limiter le "blanc" sur une page contenant des flottants. + +Exemple : +\renewcommand{\floatpagefraction}{.9} +utilisée avec la commande : +\renewcommand{\textfraction}{.1} +permet de dire que le texte peut n'occuper que 10% d'une +page, et donc que des flottants peuvent occuper les 90% restant. +%%%% fin exemple %%%% + +Il y a d'autres paramètres intéressants : +\setcounter{totalnumber}{4} +qui détermine le nombre de flottants autorisés par page, +\renewcommand{\topfraction}{.8} et +\renewcommand{\bottomfraction}{.8} +qui indiquent la fraction maximum du haut ou du bas de la page +que peuvent occuper des flottants. + +Remarque : Il est recommandé de ne jamais mettre 100% comme + paramètre. + +# 8.5 # Comment superposer du texte sur des figures ? +----------------------------------------------------- +* PSFrag (disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/psfrag/) donne cette possibilité. +La solution consiste en fait à : +1+ faire le graphique .ps AVEC des textes et légendes MAIS +approximatifs +2+ utiliser PSfrag pour qu'il remplace les textes approximatifs +par des textes << LaTeX >> +(3-) l'écriture << par dessus >> (le remplacement en fait) est +fait par PSfrag. +Pour plus de détails, consulter le document "Using EPS Graphics +in LaTeX2e Documents" disponible sur ftp://ftp.fdn.org/pub/CTAN/info/epslatex.ps. + +* On peut également générer une courbe dans un fichier .eps, +qui peux ensuite être inclu dans un environnement "picture", +dans lequel il est ensuite possible d'ajouter du texte avec des +\put. Cela demande pas mal de mises au point. + +Exemple : +\setlength\unitlength{1cm} +\begin{picture}(10,10) +\put(0,0){\includegraphics{mondessin.eps}} +\put(10,10){Mon commentaire \LaTeX{} avec des $maths$} +\end{picture} +%%%% fin exemple %%%% + +Cette technique permet de conserver la puissance de LaTeX et +d'avoir une typographie homogène mais elle a l'inconvenient +d'être assez lourde. + +* PSTricks est un ensemble de macros TeX, disponible sur +ftp://ftp.fdn.org/pub/CTAN/graphics/pstricks/, qui permet également de faire cela. Il +nécessite un gros investissement (il y a une centaine de pages +de documentation). Cependant, si l'on se limite à des commandes +simples (comme par exemple écrire un programme en C qui trace le +dessin, avec simplement des points, des droites, et un peu de +texte), la liste sommaire des commandes suffit (6 pages). + +* Xfig offre une autre solution. Après avoir inclu un fichier +postscript généré par un autre programme, on peut rajouter +du texte ou des commandes LaTeX dessus. +xfig -sp +Sauvegarder comme "combined PS/LaTeX" + +* Metapost est un langage graphique très proche de Metafont, +mais qui génère du postscript. Il permet de produire des figures +avec du texte et est bien interfacé avec TeX (Knuth +l'utilise). Metapost est integré dans web2c 7.0. Metapost a +déjà été porté sous MS-DOS et Mac (CMacTeX). Pour plus +d'informations, vous pouvez consulter la page de D. Roegel : +http://www.loria.fr/~roegel/metapost.html. + +* pstoedit permet également de visualiser des fichiers +postscript (sans bitmaps) et d'ajouter du texte ou des figures +par dessus. + +# 8.6 # Comment réaliser des captures d'écran ? +----------------------------------------------- +* Un outil très utile pour effectuer des captures d'écran sous +Unix est xv. xv est un éditeur d'images écrit par J. Bradley +disponible sous unix. xv est capable de gérer différents +formats d'image (encodage PS, GIF, JPEG, TIFF,...). Il +permet de visualiser des images et aussi de réaliser des +captures d'écran, soit partielles définies à la souris, soit +par fenêtre X Window. Il suffit ensuite de sauvegarder la +saisie d'écran de xv en format postscript et de l'appeler sous +LaTeX. + +xv est accessible par ftp sur ftp://ftp.lip6.fr/. + +* Sur PC il y a pcxdump disponible sur +http://micros.hensa.ac.uk/. Le package 'verbtext', disponible sur +CTAN, permet ensuite d'appeler la saisie réalisée. + +* De même, le package 'scrdumps' et l'utilitaire scr2tex.exe +sous DOS permettent d'inclure des saisies d'écran dans un +document LaTeX. + +# 8.7 # Comment tracer une courbe ? +----------------------------------- +* Xgraphic est un outil de tracé de courbes simple +d'utilisation (les options sont accessibles en interactif) mais +limité aux courbes 2D. Il est disponible avec une doc française +à http://blanche.polytechnique.fr/ et +ftp://barbes.polytechnique.fr/pub/Xgraphic/. + +* xmgr marche également très bien. + +* GNUplot est disponible sous Unix, sous Dos, sous Windows et +sous macOS +(http://www.ee.gatech.edu/users/schooley/gnuplot.html). Il +possède une sortie LaTeX (eepic). Il permet de tracer des +courbes (2D et 3D) à partir de valeurs ou d'une fonction. Les +formats de sortie sont LaTeX ou postscript. + +En outre, sous Unix, il est possible de récupérer des fichiers +GNUplot exportés par + set terminal fig + set output "graph.fig" +puis de les modifier. + +La FAQ GNUplot est disponible à +http://www.uni-karlsruhe.de/~ig25/gnuplot-faq/. + +* Xy-pic compatible plain TeX, LaTeX2.09 et LaTeX2e permet de +tracer des courbes, de réaliser des diagrammes commutatifs, des +automates, et plein d'autres choses. Pour plus de +renseignements, consulter : +ftp://ftp.mpce.mq.edu.au/pub/maths/TeX/ ou +http://www.mpce.mq.edu.au/~ross/Xy-pic.html ou +http://www.brics.dk/~krisrose/Xy-pic.html +Le package 'xypic' est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/generic/diagrams/xypic/. + +* Sur PC grapher et surfer permettent également de tracer des +courbes et des surfaces (ils sont indépendants de LaTeX, mais +une saisie d'écran est toujours possible). + +* Le package 'curves' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/curves/ permet de définir des +courbes dans l'environnement picture. + +* Mathematica est également utilisable pour tracer des courbes +2D et 3D. + +# 8.8 # Comment est géré le positionnement des figures ? +-------------------------------------------------------- +Comme mentionné précédemment (8.1), il existe différentes +options de placement des figures. Les plus classiques sont +\begin{figure}[htbp] pour laisser à LaTeX la possibilité de +placer les figures suivant ses critères de beauté. (h) impose +si possible le placement de la figure à l'appel de la macro +ci-dessus. Sinon la figure sera placée en haut de la page +suivante (t) ou en bas (b), voire sur une page seule (p). + +En revanche, pour forcer (dans la mesure du possible) LaTeX à +placer une figure là où elle a été appelée, il faut utiliser le +package 'float', de A. Lingnau, (\usepackage{float}) et l'option +H (\begin{figure}[H]). Ce package permet de définir un tel +placement par défaut via la commande \floatplacement{figure}{H}. +Il est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/float/. Voir la question 6.34 +pour un exemple d'utilisation de ce package. + +De même l'utilisation du caractère ! devant une option de +placement permet de forcer LaTeX2e à effectuer son placement au +plus tôt (suivant l'option choisie). + +Remarque (D.Barbier) : si un flottant ne peut pas être placé + avec les paramètres indiqués , celui-ci et tous les + flottants qui viennent après seront mis à la fin du + chapitre (en fait, ils seront insérés grâce à la + commande \clearpage). + +Le package 'placeins' de D. Arsenau permet de mettre des +garde-fous dans le texte. Par exemple, lorsqu'on place une +figure en dur avec une commande du style : +%%%% debut macro %%%% +\makeatletter +\newenvironment{figureH}{\begin{center} + \newcommand{\@captype}{figure}}{\end{center}} +\makeatother +%%%% fin macro %%%% +l'utilisation de \FloatBarrier juste avant, permet de vider le +buffer de flottants actuellement stockés. + +# 8.9 # Comment placer une légende à côté d'une figure ? +-------------------------------------------------------- +* Pour placer une légende à côté d'une figure, il faut utiliser +l'environnement minipage. + +Exemple (extrait du cahier GUTenberg 22 pour l'article sur +esperluette) : ++ mettre dans le préambule : + +%%%% debut macro %%%% +\newlength\jataille +\newcommand{\figgauche}[3]% +{\jataille=\textwidth\advance\jataille by -#1 +\advance\jataille by -.5cm +\begin{minipage}[c]{#1} + \includegraphics[width=#1]{#2} +\end{minipage}\hfill +\begin{minipage}[c]{\jataille} + \footnotesize #3 \normalsize +\end{minipage}} +%%%% fin macro %%%% + ++ puis utiliser : +\figgauche{5cm}{totor.eps}{Titre.} + +* On peut également utiliser des parbox. + +Exemple : +\begin{figure} +\parbox{7cm}{...figure}\parbox{7cm}{\caption{---}} +\end{figure} +%%%% fin exemple %%%% + +# 8.10 # Comment insérer des figures dans multicol ? +---------------------------------------------------- + +On ne peut insérer que des figures de la largeur de la page, +et pas de la lageur d'une colonne, donc des figure* (resp. +table*). Un flottant n'apparaîtra pas sur la page où il +est defini, mais, au mieux, sur la page d'après. Le positionnement +[h] n'a donc pas de sens. + +Exemple (avec le package 'graphicx') : +\begin{figure*} + \includegraphics[width=3cm]{totor.eps} +\end{figure*} +%%%% fin exemple %%%% + +Remarque : dans ce cas la gestion de \caption semble ne pas être + correcte. + +# 8.11 # Comment faire apparaître toutes les figures en fin de document ? +------------------------------------------------------------------------- +Le package 'endfloat', disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/endfloat/, permet de +reporter toutes les figures en fin de document. + +ATTENTION : les classes AMS ne définissent pas les + environnements figure* et table*. En + outre, le package 'endfloat' a le mauvais goût de + supposer qu'ils sont définis. Un remède est de + faire : + \documentclass[a4paper,11pt]{amsart} + \newenvironment{figure*}{\figure}{\endfigure} + \usepackage{endfloat} + +# 8.12 # Comment insérer des images Mathematica ? +------------------------------------------------- +* Sous Unix ou sous DOS, il faut, à partir de Mathematica, +demander : Display["machin",truc] +qui sauve l'image truc dans le fichier machin dans un Postscript +embryonnaire, puis +!psfix -epsf machin > machin.eps +et on a un fichier EPS comme il faut. + +* Sous Windows, après avoir sélectionné l'image désirée, il +faut, dans le menu "Fichier" de Mathematica, "Exporter" vers un +format qui peut être .EPS (PostScript Encapsulé). L'appel de ce +fichier .eps sous LaTeX se fait alors de manière classique (cf. +paragraphe 8.1). + +Il est également possible d'extraire par copier/coller l'image +(.WMF) et de l'envoyer vers Ghostscript pour Windows, et +là-dedans de l'enregistrer dans un fichier PostScript. L'avantage +de cette solution est qu'elle peut permettre de retravailler +l'image (avant collage dans GS au moyen de CorelDraw, par +exemple). + +A noter que Y&Y TeX system supporte les images WMF (Windows +MetaFile) aussi bien que les TIFF ou EPSF. Mathematica est l'un +des seuls logiciels pour Windows qui utilise un format WMF +plutôt que TIFF. + +* Dernière solution (multi-système) : se servir du notebook +intitulé "GnuDisplay.m"(disponible sur MathSource chez Wolfram). +Celui-ci permet d'exporter une image Mathematica en image +GNUplot. Dans GNUplot, on peut alors exporter une image de deux +façons : ++ vers un fichier ".mf" qui contient l'image sous forme de +fonte. Avantage : on utilise MetaFont pour générer la fonte qui +contiendra l'image et l'insérer dans le texte, ce qui permet sa +prévisualisation immédiate par "dviscr", sans passer par "dvips" +puis GhostScript ou GhostView ; ++ vers un fichier au format LaTeX eepic, que l'on insère +facilement par la suite (commande \special). + +# 8.13 # Comment modifier la taille d'une bounding box ? +-------------------------------------------------------- +En format eps (encapsulated postscript), la `bounding box` +permet de préciser la taille d'une image. La syntaxe est la +suivante : +%%BoundingBox: 0 0 507 257 +Les coordonnées correspondent dans l'ordre : +- coordonnée horizontale du point en bas à gauche de la figure; +- coordonnée verticale du point en bas à gauche; +- coordonnée horizontale du point en haut à droite; +- coordonnée verticale du point en haut à droite. +Les coordonnées verticales étant prises à partir du bas, et +celles horizontales à partir de la gauche. + +De plus ces coordonnées sont exprimées en points PostScript, +c'est-à-dire en soixante-douzième de pouce, i.e.: +1 pt PS = 1/72 pouce = 2.54/72 cm. + +Malheureusement, il arrive parfois que la taille de la bounding +box soit supérieure à celle de la taille réelle du dessin +qu'elle contient (il n'y a pas de mise à l'échelle). Le package +'boxedepsf', de L. Siebenmann, offre les commandes \Trim qui +permettent de résoudre le probleme. + +A. J. Carr a adapté ce package à LaTeX2e. Son package s'appelle +'boxedeps'. Ce dernier est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/generic/boxed/ ou sur +ftp://matups.math.u-psud.fr/pub/TeX/Graphics.dir/ArtIntegration.dir/boxedeps.dir/. + +Exemple : +\TrimTop{15pct}\BoxedEPSF{toto} +avec pct = pourcentage de la hauteur. +%%%% fin exemple %%%% + +# 8.14 # Comment obtenir une figure avec un titre non numéroté ? +---------------------------------------------------------------- +Il faut utiliser la commande \unnumberedcaption dont voici la +définition : +%%%% debut macro %%%% +\makeatletter % <=== in a .sty file delete this + +\newcommand{\unnumberedcaption}% + {\@dblarg{\@unnumberedcaption\@captype}} + +\newcommand{\@unnumberedcaption}{}% undefined yet +\long\def\@unnumberedcaption#1[#2]#3{\par + \addcontentsline{\csname ext@#1\endcsname}{#1}{% + % orig: \protect\numberline{\csname the#1\endcsname}% + %{\ignorespaces #2} + \protect\numberline{}{\ignorespaces #2}% + }% + \begingroup + \@parboxrestore + \normalsize + % orig: \@makecaption{\csname fnum@#1\endcsname}% + %{\ignorespaces #3}\par + \@makeunnumberedcaption{\ignorespaces #3}\par + \endgroup} + +% redefine \@makeunnumberedcaption (like \@makecaption) +% for your own layout +\newcommand{\@makeunnumberedcaption}[1]{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1}% + \ifdim \wd\@tempboxa >\hsize + #1\par + \else + \global \@minipagefalse + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + +% for LaTeX 2.09 compatibility, define \above/belowcaptionskip: +\@ifundefined{abovecaptionskip}{% + \newlength{\abovecaptionskip}% + \setlength{\abovecaptionskip}{10pt}% +}{} +\@ifundefined{belowcaptionskip}{% + \newlength{\belowcaptionskip}% + \setlength{\belowcaptionskip}{0pt}% +}{} + +\makeatother % <=== in a .sty file delete this +%%%% fin macro %%%% + +Remarque : le package 'french' V3,49 inclut cette macro. + +# 8.15 # Comment redéfinir le style de caption ? +------------------------------------------------ +* Par exemple pour changer la fonte de Figure : en gras, il +faut utiliser : + +%%%% debut macro %%%% +\makeatletter +\renewcommand{\fnum@figure}{\small\textbf{\figurename~\thefigure}} +\makeatother +%%%% fin macro %%%% + +* Pour agir sur les espaces horizontaux de part et d'autre de la +légende d'un flottant, on peut utiliser caption2.sty, et définir +la longueur \captionmargin qui sera insérée à gauche et à droite +de la légende. + +# 8.16 # Comment fondre une image dans du texte ? +------------------------------------------------- +* Le package 'floatfig', de T. Kneser, disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/floatfig/, permet d'entourer +une figure de texte de manière très efficace grâce à +l'environnement floatingfigure. Ce package a été conçu pour +LaTeX2.09, pour des documents sans colonnes. + +Exemple : +\begin{floatingfigure}[l]{4cm} + \includegraphics[width=4cm]{dessin} + \caption{Titre} +\end{floatingfigure} +%%%% fin exemple %%%% + +Remarque : le [l] du \begin{float...} sert à mettre la figure à + gauche. [r] permet de l'avoir à droite, [p] la met + à gauche sur une page de gauche et à droite sur une + page de droite. + +* Le package 'floatflt', de T. Kneser et M. Dahlgren, disponible +sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/floatflt/, a été écrit +pour LaTeX2e. Il étend les possibilités de floatfig par de +nombreuses options et est utilisable pour les figures et les +tableaux. + +Exemple : +\begin{floatingfigure}[options]{width of figure} + figure contents +\end{floatingfigure} +%%%% fin exemple %%%% + +* Le package 'picinpar' pour LaTeX2.09 est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/picinpar/ et sur +ftp://ftp.fdn.org/pub/CTAN/systems/msdos/4alltex/disk04/. Il permet de définir un nombre +de lignes avant lequel la figure pourra être insérée dans le +texte. La taille de la figure dépend de son contenu, sa position +est variable, et peut s'étaler sur plusieurs paragraphes. + +ATTENTION : Ce package n'est pas compatible avec amstex. + +Exemple : +\begin{window}[#lines before, l|r|c, picture contents, caption} + ... paragraph text ... +\end{window} +%%%% fin exemple %%%% + +* Mieux que le précédent, le package 'picins' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/picins/ permet d'inclure des +figures dans des paragraphes. + +Exemple : +\parpic(width,height)(x-off,y-off)[Options][Position]{Picture} + Paragraph text.... +%%%% fin exemple %%%% + +* Le package 'wrapfig' permet de définir la hauteur de la +figure, celle-ci ci peut apparaître à droite ou à gauche dans le +texte ou encore dans une marge. Ce package n'est pas compatible +avec les environnements de liste. + +Exemple : +\begin{wrapfigure}[height in lines]{l|r}[overhang]{width} + {figure, caption etc.} +\end{wrapfigure} +%%%% fin exemple %%%% + +* Le package 'flow' met obligatoirement la figure dans une boîte +avec un cadre et ne permet pas de définir de caption. + +Exemple : +\flow[L|R]{paragraph text}{figure box} +%%%% fin exemple %%%% + +* Le package 'window' de E. Schaluck, permet également +d'intégrer une figure dans un paragraphe mais il n'est plus +maintenu. Il a été écrit pour LaTeX2.09 mais il est compatible +LaTeX2e. + +Exemple : +\windowbox[toplines][inwindow: contents][ratio: l r] +... paragraph text ... \par +%%%% fin exemple %%%% + +Voici les résultats d'un test comparatif effectué par P. van +Oostrum : + A B C D E F G H I J K +picinipar |+|+|+| |+|+| |+| | | | +wrapfig |+|+|+|+| | |+|H|-|+| | +flow |-|-|+| | | | |+| | | | +floatfig |+|-|-|+| | |+| | |-| | +floatflt |+|+|+|+| | |+| |-| |+| +window |-|-|+| |+|+| |+| | | | +picins |+|-|+|+| | | |+|+| | | + +avec : +A: figure captions/counting/list of figures +B: table captions/counting/list of tables +C: Left/right possible (+ = both) +D: Alternating left/right for twosided docs +E: can be placed in the middle of text with twosided flowing +F: possible to start after the beginning of paragraph +G: can (more or less) float in the text +H: auto detection of size of figure (H=height only) +I: works with list environments +J: works with twocolumn +K: works with multicol + +Les meilleurs packages semblent être : +picins, floatflt et wrapfig. + +* Voici également une macro de C. Mercat : + +%%%% debut macro %%%% +\def\textdess#1#2 % #1={blabla} #2=\dessin{monbodessin} +{\hbox{ + +\setbox2=\hbox{#2} %c'est le dessin + +\count2=\wd2 %c'est la largeur du dessin. +%\showthe\count2 +\multiply\count2 by-1 +\advance\count2 by\hsize %count2 vaut le reste de la page +\advance\count2 by-2000000 %c'est pour la marge droite +\count1=\count2 +\advance\count2 by-2000000 %c'est pour la marge du milieu +\setbox1=\hbox to\count1sp{ %c'est le texte +\vbox{\hsize=\count2sp %c'est la largeur +#1 +}\hfill} +\count1=\ht1 %c'est la hauteur +\advance\count1 \dp1 + +\count2=\ht2 +\advance\count0 \dp2 + +\ifnum\count2<\count1 \count2=\count1 \fi +%c'est la + grde des 2 hauteurs +\vtop to \count2sp {\vfill \box1 \vfill} +\vtop to \count2sp {\vfill \box2 \vfill} +}} + +%%%% fin macro %%%% + +# 8.17 # Comment réaliser des diagrammes en bâtons ? +---------------------------------------------------- +Il existe le package 'bar', disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/, qui offre un environnement +barenv. + +# 8.18 # Comment faire un organigramme ? +---------------------------------------- +Il existe plusieurs contributions (toutes assez anciennes), +disponibles sur CTAN, dédiées spécifiquement à la réalisation +de différents types d'organigrammes : +* ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/nassflow/ +* ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/rail/ +* ftp://ftp.fdn.org/pub/CTAN/support/flow/ +A priori, le dernier est le plus évolué et est basé sur un +pré-processeur écrit en langage C, ce qui fait qu'il offre une +interface souple et puissante. + +# 8.19 # Comment centrer une figure très large ? +------------------------------------------------ +Le package 'bigcenter' ci-dessous permet de centrer des figures +très larges sans message d'erreur de type overful. + +%%%% debut macro %%%% +%%% ----------debut de bigcenter.sty-------------- + +%%% nouvel environnement bigcenter +%%% pour centrer sur toute la page (sans overfull) + +\newskip\@bigflushglue \@bigflushglue = -100pt plus 1fil + +\def\bigcenter{\trivlist \bigcentering\item\relax} +\def\bigcentering{\let\\\@centercr\rightskip\@bigflushglue% +\leftskip\@bigflushglue +\parindent\z@\parfillskip\z@skip} +\def\endbigcenter{\endtrivlist} + +%%% ----------fin de bigcenter.sty-------------- +%%%% fin macro %%%% + +# 8.20 # Comment passer de ps à eps ? +------------------------------------- +* S. Heiden : +Pour faire ce travail de transformation il faut interpréter TOUT +le code PostScript d'un fichier PS (être une imprimante PS en +gros), identifier la boîte englobante de ce qui est composé sur +UNE page et insérer vers le début ou la fin du fichier PS +original la fameuse ligne de la forme : + %%BoundingBox: 72 246 522 597 +qui renseigne les macros graphics, donc dvips, donc l'imprimante +sur cette fenêtre de clipping. + +Syntaxe: %%BoundingBox: llx lly urx ury +Qui sont deux points (lower left)(x,y) et (upper right)(x,y) +définissant la fenêtre. Si on n'est pas, soi-meme, une +imprimante PostScript on peut faire interpréter le code PS +original par une imprimante qui produira une page. On peut alors +mesurer la boîte englobante et la position de la figure dans la +page (la portion de toner qui nous intéresse) et composer la +ligne %%BoundingBox en s'exprimant en points d'1/72 de pouces +et sachant que le système de coordonnées est : +- en bas à gauche de la page ; +- vers la droite et vers le haut ; +- légèrement décalé vers le centre. En effet, une imprimante +n'imprime jamais sur le bord réel d'une page. Il y a une fenêtre +de clipping systématique matérielle plus petite que la page A4 +et centrée. L'origine du système correspond au coin de la +feuille ; le décalage du système de coordonnées arrive surtout +sur les coordonnées Y qui dépendent de l'avancement du papier +contrairement aux X, calés par les bords (qui n'a pas connu de +vieille imprimante LaserWriter pouvant louper de 5 cm le bord +inférieur d'une feuille A4 ?-). + +Si on fait calculer et imprimer la bbox par l'imprimante (par le +code de bbfig par ex.), ce problème ne se pose plus. Sans parler +de ps2epsi qui est la meilleure solution mais alors il faut +distinguer l'environnement de chaque système d'exploitation (Unix, +Mac, PC) et les outils correspondants. + +Remarque : Si on a plus d'une figure, que l'on s'intéresse à la + forêt amazonnienne ou que l'on est un peu riche, on + peut acheter Adobe Distiller ou autre pour faire ce + genre de travail. Par ailleurs Ghostview peut jouer + le rôle de l'imprimante si l'écran est correctement + calibré (à vérifier avec xdpyinfo et une règle...). + En gros il faut un outil qui sait composer du + PostScript. Après, tout dépend de ce qu'il propose. + +Suggestions : +- utiliser l'option "draft" pour que TeX visualise les boîtes +englobantes des figures (calculées à partir de %%BoundingBox). +- générer du EPSF natif à partir de l'outil de dessin plutôt que +de passer par PS->EPSF. + +* Le document "Using EPS graphics in LaTeX2e documents" de K. +Reckdahl répond également à cette question cf section 3.1 +Converting PS files to EPS. + +* ps2epsi, qui est livré avec GhostScript permet de convertir +du postscript en postscript encapsulé. + +# 8.21 # Comment changer l'orientation d'une figure ? +----------------------------------------------------- +* Le package 'rotfloat' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/rotfloat/ permet de gérer la +rotation des flottants. + +* On peut utiliser la commande \rotatebox du package 'graphics' +de D. Carlisle. Ce package est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/graphics/. + +Exemple : +\rotatebox{90}{ +\includegraphics{dessin1.eps} +} +%%%% fin exemple %%%% + +* La commande \includegraphics du package 'graphicx' peut prendre +comme paramètre un angle de rotation. + +Exemple : +\begin{figure} + \centering + \includegraphics[angle=90,width=\textwidth]{dessin.eps} +\end{figure} +%%%% fin exemple %%%% + +# 8.22 # Comment gérer des sous-figures sur plusieurs pages ? +------------------------------------------------------------- +Un seul environnement figure ne peut pas s'étendre sur plusieurs +pages, il faut donc gérer le problème à la main en instanciant +les numéros "à la main". + +Exemple : +\documentclass{article} +\usepackage{graphicx,subfigure} +\begin{document} + + \begin{figure} + \centering + \subfigure[First Part]{% + \label{fig:graphics:a}% label for subfigure + \includegraphics[width=\textwidth]{box.eps}}% + \caption{Large Graphics}% + \label{fig:graphics}% label for figure + \end{figure} + + \addtocounter{figure}{-1} + \begin{figure} + \addtocounter{subfigure}{1} + \centering + \subfigure[Second Part]{% + \label{fig:graphics:b}% label for subfigure + \includegraphics[width=\textwidth]{box.eps}}% + \caption{Large Graphics (con't)}% + \end{figure} + +\end{document} +%%%% fin exemple %%%% + +# 8.23 # Comment générer une liste des figures d'un document ? +-------------------------------------------------------------- +Il existe pour cela la commande \listoffigures. Elle collecte +tous les numéros de figures ainsi que leur titre et le numéro +de la page où elles apparaissent. + +Remarque : une bonne mise à jour de cette liste nécessite au + moins deux compilations successives. + +# 8.24 # Comment faire une figure sous LaTeX ? +---------------------------------------------- +* On distingue deux techniques majeures : ++ soit on utilise un logiciel de dessin et on inclut une figure +sous un format défini (en général PostScript ou Encapsulated +PostScript). Pour une liste de logiciels, voir la question 25.1. ++ on utilise les commandes LaTeX disponibles. L'environnement +picture permet ainsi de composer des figures comprenant du +texte, des segments de droites, des cercles et des figures +géométriques. + +Les commandes LaTeX les plus courantes pour le dessin sont : ++ \put(x, y){objet} ++ multiput ++ \line(x,y){longueur} ++ \vector ++ \shortstack ++ \circle ++ \circle* + +Exemple : +\begin{picture}(largeur, hauteur) + \put(0,0){\line(1,0){3}} + \put(0,3){\line(1,1){4}} +\end{picture} +%%%% fin exemple %%%% + +* Le package epic définit un ensemble de commandes plus +complet que l'ensemble par défaut de LaTeX. Il s'agit des +commandes : \multiputlist, \matrixput, \grid, \dottedline, +\dashline, \drawline, \jput, \picsquare et \putfile, +ainsi que des environnements : dottedjoin, dashjoin et drawjoin. + +Exemple : +\matrixput(0,0)(10,0){6}(0,10){3}{\circle{4}} +\matrixput(2,0)(10,0){5}(0,10){3}{\line(1,0){6}} +\matrixput(0,2)(10,0){6}(0,10){2}{\line(0,1){6}} +%%%% fin exemple %%%% + +* PSTricks de T. Van Zandt propose un ensemble très complet de +macros TeX qui permettent de jouer avec des dessins +(dessin, couleur, rotation, superposition, ...). L'ensemble +PSTricks est composé de plusieurs packages : pstricks, pst-plot, +multido, pst-node, pst-coil, gradient, colortab, textpath, +charpath et pst2eps. Une documentation d'une centaine de page +est également fournie et nécessaire. + +ATTENTION : PSTricks fait appel à des macros postscript qui ne + sont donc pas toujours visibles dans les previewer + de .dvi. + +Exemple : +\psellipse(.5,0)(1.5,1) + +\parametricplot[plotstyle=dots,plotpoints=13]% + {-6}{6}{1.2 t exp 1.2 t neg exp} + +\psshadowbox{\textbf Grest!!} + +\pszigzag[coilarm=.5,linearc=.1{<->}(4,0) +%%%% fin exemple %%%% + +# 8.25 # Comment mettre un commentaire à côté d'une figure ? +------------------------------------------------------------ +Pour mettre un commentaire à côté d'une figure et pour que le +texte soit centré verticalement par rapport à la figure, il +faut utiliser des \parbox. + +Exemple : +\begin{tabular}{lc} +$M=0{,}01$ & \parbox[c]{12cm}{\includegraphics[width=12cm]{fig6a.eps}} \\ +$M=0{,}1$ & \parbox[c]{12cm}{\includegraphics[width=12cm]{fig6b.eps}} +% etc... +\end{tabular} +%%%% fin exemple %%%% +================================================================ +[9] INCLUSION DE FICHIERS +================================================================ + +# 9.1 # Comment inclure des fichiers en mode verbatim ? +------------------------------------------------------- +* Le package 'verbatim', de R. Schopf, permet via la commande +\verbatiminput, qui prend en argument un nom de fichier, +d'inclure un fichier en mode verbatim. Ce package est disponible +sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/distribs/ ou ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/tools/. + +* L'environnement alltt du package du même nom (package dû à J. +Braams) permet la même prouesse tout en gardant active +l'interprétation des commandes LaTeX dont le nom commence par le +caractère \ (le "backslash" reste actif). Il est disponible dans +sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/misc/ ou sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/base/. + +Exemple : +\begin{alltt} + Notez la différence subtile entre $f(x)$ et \(f(x)\) grâce à + l'utilisation du "backslash". +\end{alltt} +%%%% fin exemple %%%% + +* Les commandes \listinginput et \verbatimtabinput du package +'moreverb' (disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/) permettent d'inclure des +documents en mode verbatim avec ou sans numérotation des lignes +du fichier inclu. + +Exemple : +{ +\small +\listinginput[5]{10}{totor.c} +} +Les paramètres [5] et {10} indiquent que la numérotation des +lignes doit se faire de 5 en 5 en commençant à 10. +%%%% fin exemple %%%% + +* Il existe aussi le package 'verbtext' disponible sur CTAN. + +* Le package 'fancyvrb' est également disponible sur CTAN. + +* Pour insérer du code lisp dans un document LaTeX, il existe le +package 'lispcode' disponible par ftp sur +ftp://ki-server.informatik.uni-wuerzburg.de/pub/tex/. + +* On peut aussi essayer le package 'verbasef' (verbatim +automatic segmentation of external files) disponible sur CTAN. +Il utilise l'environnement figure. + +* Encore un autre, le package 'cprog' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/ permet d'inclure des morceaux de +code dans un document et de les gérer comme des flottants. + +* Le package 'sverb' de M. Wooding propose un environnement +listing. + +# 9.2 # Comment gérer un document par parties ? +----------------------------------------------- +Pour travailler sur un gros document, il est plus agréable de le +découper en plusieurs fichiers. Il y aura quoiqu'il en soit un +fichier principal (celui qui comprend le préambule et les +commandes \begin{document} et \end{document}). + +\input{fichier} permet d'inclure le fichier "fichier" dans le +fichier principal. Cette commande réalise une importation pure +et simple. Elle est plutôt réservée à l'importation de fichiers +de macros. + +\include{chapitre} permet d'intégrer le fichier "chapitre.tex" +dans le document principal en commençant une nouvelle page. +Cette commande réinitialise la numérotation des titres. Utilisée +avec la commande \includeonly{chapitre}, cette commande mise +dans le préambule, permet de ne recompiler le fichier principal +que sur les parties indiquées. + +Remarque : la commande \include ne permet pas d'intégrer un + fichier contenant lui-même une commande \include. + +Exemple : +\documentclass{report} +\includeonly{chap1, chap3} +\begin{document} +\include{chap1} +\include{chap2} +\include{chap3} +\end{document} +%%%% fin exemple %%%% + +Remarque : avec le package 'french', pour que la numérotation + des chapitres ne soit pas réinitialisée lorsqu'on + change de partie, il faut ajouter la commande + \noresetatpart en début de document après le + \begin{document} + +# 9.3 # Comment isoler une partie d'un fichier ps ou dvi ? +---------------------------------------------------------- +Il faut utiliser un outil qui permet de découper en page : ++ un fichier postscript, +* il s'agit des outils PSnup, PStoPS, PSSelect, qui ont été portés +sur Mac, aussi bien pour MPW qu'en "stand-alone" (dans la +distribution CMacTeX) +* on peut également utiliser ghostview (save marked pages) +disponible par ftp sur +ftp://iphthf.physik.uni-mainz.de/pub/gv/ + ++ un fichier dvi ? +DVIDVI pour MPW (utilitaire qui fait bien d'autres choses que +de découper) doit permettre de faire cela. + +# 9.4 # Comment inclure un fichier PICT ? +----------------------------------------- +On peut utiliser la commande \special{pictfile mondessin.pict} +ou \put(0,0){\special{pict=Mondessin}}. + +# 9.5 # Comment spécifier un chemin pour les fichiers à inclure ? +----------------------------------------------------------------- +* Il suffit d'utiliser la commande \import{chemin}{fichier}. +Elle évite de préciser le chemin où se trouvent les fichiers +appelés par la commande \input à chaque appel. + +%%%% debut macro %%%% +% import.sty: allows input of a file from another directory: +% +% \import{path}{file} + +\def\import{\begingroup + \protected@edef\@tempa{\endgroup + \noexpand\@import{\@ifundefined{input@path}{}{\input@path}}% + {\@ifundefined{Ginput@path}{}{\Ginput@path}}}% + \@tempa} +\def\@import#1#2#3#4{% + \def\input@path{{#3}#1}\def\Ginput@path{{#3}#2}% + \input{#4}% + \def\input@path{#1}\ifx\input@path\@empty \let\input@path\@undefined \fi + \def\Ginput@path{#2}\ifx\Ginput@path\@empty \let\Ginput@path\@undefined \fi +} +%%%% fin macro %%%% + +Exemple : +\import{Chapitres/}{chapitre1} +%%%% fin exemple %%%% + +* Pour les figures, la package 'graphicx' propose la commande +\graphicspath à utiliser en tête de document. + +Exemple : +\graphicspath{{Chapitre1/gfx/}{Chapitre2/gfx/}} +%%%% fin exemple %%%% + +* On peut également modifier certaines variables +d'environnement lorsqu'elles existent. + +Exemple (UNIX) : +setenv TEXINPUTS= /home/figures/:"$TEXINPUTS" +%%%% fin exemple %%%% + +================================================================ +[10] HAUTS ET BAS DE PAGES +================================================================ + +# 10.1 # Comment définir les hauts et bas de page ? +--------------------------------------------------- + +Remarque : lorsque le haut ou bas de page défini est trop grand, + on voit apparaître des messages d'erreur du style + "Overfull \vbox". Il faut alors redimensionner la + longueur correspondante. + + Exemple (dans le préambule) : + \addtolength{\headheight}{1.5pt} + %%%% fin exemple %%%% + +* Par défaut, LaTeX offre la numérotation des pages en bas de +page (style plain). Mais, il propose également 3 autres styles +de mise en page. Il s'agit des styles : ++ empty (hauts et bas de pages vides), ++ headings(la numérotation des pages apparaît en haut ainsi que +différentes informations suivant la classe de document), et ++ myheadings (les commandes \markboth et \markright permettent +de définir les informations qui devront apparaître dans le haut +de page. \markboth{entête gauche}{entête droite} s'utilise pour +un document recto-verso alors que \markright{entête} +s'applique à toutes les pages d'un document en simple recto). + +L'appel d'un style pour tout le document se fait via la commande +\pagestyle{style}. La commande \thispagestyle{} permet d'appeler +un style sur une page particulière. + +Remarque : malgré une déclaration globale de style de page, il + se peut que des déclarations locales de style soient + également nécessaires, puisque certaines commandes + LaTeX réinitialisent le style de la page sur laquelle + elles apparaîssent. + +* Le package 'fancyheadings', de P. van Oostrum, est disponible +sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/fancyheadings/. Il est +compatible LaTeX2.09 et LaTeX2e. Il permet de définir des entêtes +et des pieds de page relativement facilement. La définition des +pages spéciales se fait par : \thispagestyle{xxx} ou xxx peut +être fancy (utilise les définitions ci-dessous sur une page en +respectant le style plain pour les autres ), plain (style TeX) +ou fancyplain(permet de redéfinir le style plain et donc de +disposer de deux styles : fancy et plain). L'application d'un +style à toutes les pages d'un document s'obtient par +\pagestyle{nom_style}. + +Les macros principales sont : ++ pour les entêtes +\lhead[paire gauche]{impaire gauche} +\rhead[paire droit]{impaire droit} +\chead{centre} ++ pour les pieds de page +\lfoot[paire gauche]{impaire gauche} +\rfoot[paire droit]{impaire droit} +\cfoot{centre} + +On distingue les styles fancy et plain par : +\lhead[\fancyplain{paire gauche plain}{paire gauche fancy}] +{\fancyplain{paire gauche plain}{paire gauche fancy}} +Le style par défaut est alors plain. + +Ce package définit quatre nouvelles longueurs : ++ \headrulewidth ++ \footrulewidth ++ \plainheadrulewidth ++ \plainfootrulewidth + +Exemple : +\documentclass{article} +\usepackage{fancyheadings} +\pagestyle{fancy} +\usepackage{graphicx} +\renewcommand{\sectionmark}[1]{\markboth{#1}{}} +\renewcommand{\subsectionmark}[1]{\markright{#1}} +\rfoot{\leftmark\\\rightmark} +\lhead{\includegraphics[width=0.5cm]{foobar.ps}} + +\begin{document} + + \section{Première section.} + Intro. + \subsection{Sous-section.} + Texte. +\end{document} +%%%% fin exemple %%%% + +Remarque : sur certaines pages où le style de page est + réinitialisé par certaines commandes (telles que + \tableofcontents), il faut repréciser le style voulu + via la commande \thispagestyle. + +Exemple : +\addtocontents{toc}{\protect\thispagestyle{fancyplain}} +%%%% fin exemple %%%% + +* Le package 'fancyhdr' est le successeur du package +'fancyheadings' pour LaTeX2e. Il est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/fancyhdr/. + +# 10.2 # Comment obtenir une note de bas de page ? +-------------------------------------------------- +* La commande \footnote{texte} permet très facilement d'obtenir +des notes de bas de page sans se préoccuper de leur mise en +page. + +* Le package 'ftn' disponible sur CTAN dans +ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/ permet d'étendre la commande +footnote à tous les environnements non flottants. + +# 10.3 # Comment mettre les notes de bas de page en fin de document ? +--------------------------------------------------------------------- +Le package 'endnotes', de J. Lavagnino, disponible sur CTAN +permet de faire cela. + +# 10.4 # Comment réduire les rappels de titres dans un haut ou bas de page ? +---------------------------------------------------------------------------- +Pour éviter que des titres trop longs n'apparaissent dans les +entêtes ou les pieds de pages, il suffit de passer un titre +plus court en option des commandes de structuration de +document. + +Remarque : dans ce cas, ce sont les titres courts qui + apparaîtront dans la table des matières. + +Exemple : +\documentclass{article} +\usepackage{fancyheadings} +\pagestyle{fancy} +\usepackage{graphicx} +\renewcommand{\sectionmark}[1]{\markboth{#1}{}} +\renewcommand{\subsectionmark}[1]{\markright{#1}} +\rfoot{\leftmark\\\rightmark} +\lhead{\includegraphics[width=0.5cm]{foobar.ps}} + +\begin{document} + + \section[Titre résumé.]{Un titre trop long pour les rappels.} + Intro. + \subsection{Sous-section.} + Texte. +\end{document} +%%%% fin exemple %%%% + +# 10.5 # Comment référencer une note de bas de page ? +----------------------------------------------------- +Il suffit simplement de définir un label à l'intérieur de la +commande \footnote et de la référencer par \ref. + +Exemple : +bla bla bla\footnote{Notons que ce bla l\`a est diff\'erent des +pr\'ec\'edents\label{footnote-bla}}... + +[...] + +..., comme l'indique la note~\ref{footnote-bla}, ... +%%%% fin exemple %%%% + +# 10.6 # Comment supprimer la numérotation des pages ? +------------------------------------------------------ +* Pour supprimer la numérotation des pages, il faut utiliser la +commande \pagestyle{empty}. Si elle ne suffit pas, il faut en +plus utiliser \thispagestyle{empty} sur les pages où la +numérotation subsiste. Ce comportement se justifie par le +fait que certaines commandes comme \tableofcontents ou \chapter +réinitialisent le style de page sur laquelle ils apparaissent. + +* On peut également redéfinir le style plain à empty +\let\ps@plain=\ps@empty. + +* Le package 'nopageno' de D. Carlisle, disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/carlisle/, de supprimer la +numérotation de toutes les pages même celles qui réinitialisent +le style de page. + +# 10.7 # Comment numéroter les pages par rapport à la dernière ? +---------------------------------------------------------------- +Pour pouvoir référencer les pages d'un document par rapport à la +dernière page (e.g. page 54/345), il faut utiliser le package +'lastpage' (disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/lastpage/). + +Exemple : +\documentclass{report} +\usepackage{french} +\usepackage{lastpage} + +\makeatletter +\renewcommand{\@evenfoot}% + {\hfil \upshape page {\thepage} de \pageref{LastPage}} +\renewcommand{\@oddfoot}{\@evenfoot} +\makeatother + +\begin{document} +Texte. +\end{document} +%%%% fin exemple %%%% + +Si l'on ne dispose pas du package 'lastpage', on peut définir ce +label "à la main" en ajoutant \label{LastPage} juste avant +\end{document} ou encore en utilisant la commande +\AtEndDocument{\label{LastPage}} dans le préambule du document. + +# 10.8 # Comment supprimer le trait de séparation des notes de bas de page ? +---------------------------------------------------------------------------- +Il suffit de mettre dans le préambule : +\renewcommand{\footnoterule}{} + +# 10.9 # Comment modifier la numérotation des pages ? +----------------------------------------------------- +* Il faut modifier la commande \thepage. + +Exemple (P. van Oostrum) : +\documentclass{report} +\usepackage{french} + +\makeatletter +\renewcommand{\thepage}{\thechapter-\arabic{page}} +% chapter-page numbering +\@addtoreset{page}{chapter} +% reset page number when chapter is stepped +% The next magic makes the page counter be reset to one rather +% than zero +\def\@stpelt#1{\global\csname c@#1\endcsname + \expandafter\ifx \csname#1\endcsname \page + \@ne + \else + \z@ \fi} +\makeatother +\begin{document} +\chapter{Introduction} +Texte. +\end{document} +%%%% fin exemple %%%% + +* Il existe également le package ci-dessous de A. Kielhorn. +%%%% debut macro %%%% +%% +%% This is page-per-chapter-package +%% version 2.0 +%% +%% Don't use it with refrep! +%% Refrep has these commands already implemented +%% +%% This version forces openright!! +%% +%% Index-commands should work in chapters and appedices, +%% they will not work as expected in the preface when the +%% pagenumbering is not arabic. (MakeIndex can't sort roman- +%% numbers) +%% +%% Bugs: +%% The index is sortet according to the pagenumber +%% without looking at the chapternumber. +%% I don't think MakeIndex could handle that. +%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pagepc}[1995/05/13] + +\@ifundefined{chapter} +{\PackageError{pagepc}{% + You can't number your pages per chapter\MessageBreak when you + have no chapters + }{% + Use ``report'' or ``book'' instead. + } +}% +{} + +%% Reset the pagecounter to 1 at the start of a new chapter +%% +\let\ppchapter=\@chapter +\def\@chapter{\if@pageperchapter\setcounter{page}{1}\fi + \ppchapter} + +%% Force a pagebreak at the start of the appendix, otherwise +%% the number of the page right before the appendix comes +%% out wrong +%% +\let\ppappendix=\appendix +\def\appendix{\if@pageperchapter\newpage\fi\ppappendix} + +\newif\if@pageperchapter \@pageperchapterfalse + +%% This command enables Page-per-Chapter, it is *not* on by +%% default to allow roman pagenumbers in the preface +%% (see sample-document) +%% +\newcommand{\pageperchapter} + {\@pageperchaptertrue + \@openrighttrue + % Remember old setting for chapter 0 = preface + \let\ppthepage=\thepage + % The new number needs more space + \renewcommand\@pnumwidth{2.55em} + % Here it comes :-) + \renewcommand\thepage{% + \ifnum \c@chapter = \z@ + \ppthepage + \else + \thechapter\ -- \arabic{page} + \fi + } + } + +%% This is a hack to make MakeIndex happy :-( +%% You can't use the |-form of an indexentry because +%% it is used to store the chapternumber. +%% +\def\@wrindex#1{% + \ifnum \c@chapter = \z@ + \protected@write\@indexfile{}% + {\string\indexentry{#1}{\arabic{page}}}% + % The above is wrong if pagenumbering!=arabic, + % but I think this is better than nothing. + \else + \protected@write\@indexfile{}% + {\string\indexentry{#1|ppc{\thechapter}}{\arabic{page}}}% + \fi + \endgroup + \@esphack +} + +%% This prints the pagenumber in the index +%% +\def\ppc#1#2{#1 -- #2} + +\endinput +%%%% fin macro %%%% + +* Pour changer la valeur du compteur de page, il suffit +d'utiliser : +\setcounter{page}{17}. + +# 10.10 # Comment supprimer les entêtes et bas de page de pages vierges ? +------------------------------------------------------------------------- +Lorsqu'on utilise l'option 'openright' pour faire débuter un +nouveau chapitre sur une page de droite dans un document +recto-verso, pour ne pas afficher les entêtes et bas de page sur +une page de gauche restée vierge, on peut utiliser la commande +suivante (cf. LaTeX Companion) : + +\newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}} + +Il est alors nécessaire d'utiliser cette commande avant +la commande \chapter. + +# 10.11 # Comment gérer des en-têtes avec des environnements verbatim multi-pages ? +----------------------------------------------------------------------------------- +Le problème consiste à inclure un fichier avec la commande +\input dans un haut ou bas de page alors que le corps du +document comprend des environnements verbatim qui s'étalent sur +plus d'une page. Dans ce cas, LaTeX au lieu d'interpréter la +commande \input fait un copier-coller du contenu du fichier +appelé par la commande \input (c'est comme s'il était en mode +verbatim au moment de traiter le \input). + +La solution consiste à utiliser une boîte via \savebox. + +Remarque : cela ne marche que si les informations à imprimer ne + varient pas au fil des pages. + +Exemple : +\newsavebox{\logo} +\savebox{\logo}[2cm][c]{\input{logo-late.pstex_t}} +%%%% fin exemple %%%% + +# 10.12 # Comment utiliser \footnote dans un titre ? +---------------------------------------------------- +* Il faut utiliser la commande \protect. + +Exemple : + \section{Titre de section\protect\footnote{Commentaire sur + ce titre.}.} +%%%% fin exemple %%%% + +ATTENTION : le problème dans ce cas est que la note apparaîtra + aussi bien dans l'en-tête si l'en-tête rappelle le + titre des sections que dans la table des matières. + Pour supprimer ces apparitions il faut alors + utiliser la même technique que pour les titres + résumés : + \section[foo]{foo\protect\footnote{foooo}} + +* Il existe également le package 'stblftnt' de R. Fairbairns +disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/ qui +gère le problème énoncé ci-dessus sans avoir à réécrire tout +le titre. + +# 10.13 # Comment placer les notes de bas de page les unes à côté des autres ? +------------------------------------------------------------------------------ +Il faut utiliser le package 'footnote', de R. Fairbairns, +disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footnote/ avec l'option para : +\usepackage[para]{footnote}. + +# 10.14 # Comment réinitialiser le compteur de note de bas de page à chaque page ? +---------------------------------------------------------------------------------- +* Il faut utiliser le package 'footnote', de R. Fairbairns, +disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footnote/ avec l'option +perpage : \usepackage[perpage]{footnote} + +* Le package 'footnpag' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footnpag/ permet également de +faire cela. + +# 10.15 # Comment modifier le style des notes de bas de page ? +-------------------------------------------------------------- +* Le package 'footmisc' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footmisc/ permet de définir son +propre style de note de bas de page. + +* Le package 'ftnright' de F. Mittelbach redéfinit le placement +des notes de bas de page dans un document multi-colonnes. Lors +de l'utilisation de ce package, les notes de bas de page +appelées dans une page seront réunies et placées à la fin de la +dernière colonne de cette page. + +Remarque : Lorsque plusieurs packages sont utilisés + simultanément dans un même document, ftnright doit, + si possible, être appelé en dernier. + +# 10.16 # Comment utiliser le mode verbatim dans une note de bas de page ? +-------------------------------------------------------------------------- +Par défaut, le mode verbatim n'est pas accessible dans une note +de bas de page (et de manière générale inutilisable dans un +argument d'une autre commande). +* On peut alors le forcer par : +\DeclareRobustCommand\espacement{{\fontencoding{OT1} +\selectfont \texttt{\char32}}} +* ou utiliser +\tt sous LaTeX2.09 +\texttt sous LaTeX2e + +# 10.17 # Comment éviter qu'une note de bas de page s'étale sur plusieurs pages ? +--------------------------------------------------------------------------------- +* La commande \samepage peut permettre de forcer LaTeX à ne +pas couper le contenu d'une note de bas de page. + +Exemple sans la commande : +Texte texte texte (1). Texte texte texte (2). Texte texte texte +(3). Texte texte texte (4). Texte texte texte (5). Un autre +texte\footnote{Un long long long long long long long long long +long long long long long long long long long long long long long +long long long long long long long long long long long long long +long long long long long commentaire sur cet autre texte.}. +Texte texte texte (6). Texte texte texte (7). Texte texte texte +(8). Texte texte texte (9). Texte texte texte (10). Texte texte +texte (11). Texte texte texte (12). Texte texte texte (13). +Texte texte texte (14). Texte texte texte (15). Texte texte +texte (16). Texte texte texte (17). Texte texte texte (18). +Texte texte texte (19). Texte texte texte (20). Texte texte +texte (21). Texte texte texte (22). +%%%% fin exemple %%%% + +Exemple avec : +Texte texte texte (1). Texte texte texte (2). Texte texte texte +(3). Texte texte texte (4). Texte texte texte (5). Un autre +texte\samepage\footnote{Un long long long long long long long +long long long long long long long long long long long long long +long long long long long long long long long long long long long +long long long long long long long commentaire sur cet autre +texte.}. Texte texte texte (6). Texte texte texte (7). Texte +texte texte (8). Texte texte texte (9). Texte texte texte (10). +Texte texte texte (11). Texte texte texte (12). Texte texte +texte (13). Texte texte texte (14). Texte texte texte (15). +Texte texte texte (16). Texte texte texte (17). Texte texte +texte (18). Texte texte texte (19). Texte texte texte (20). +Texte texte texte (21). Texte texte texte (22). +%%%% fin exemple %%%% + +* On peut également utiliser une \parbox mais cela peut modifier +la structure de la page (empiètement du bas de page). + +Exemple : +\footnote{\parbox[t]{0.94\linewidth}{This is a footnote ...} +%%%% fin exemple %%%% + +* L'emploi de la commande \enlargethispage peut également +suffire. + +* Une solution plus globale (et non pas au cas par cas comme les +solutions précédentes) consiste à redéfinir la pénalité associée +à \interfootnotelinepenalty. Cela permet de relâcher le critère +de beauté associé au placement des bas de page. + +Exemple : +Mettre dans le préambule \interfootnotelinepenalty=10000. +%%%% fin exemple %%%% + +Remarque : \raggedbottom permet en plus à LaTeX de ne pas + s'inquiéter si le corps de la note n'apparaît pas + sur la même page que son appel. + +================================================================ +[11] LATEX, LE FRANÇAIS ET LES AUTRES LANGUES +================================================================ + +# 11.1 # Comment franciser un document LaTeX ? +---------------------------------------------- +* 'babel' version 3.6 disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/babel/, est un package de J. Braams. +babel permet de composer des documents multilingues. Son appel +sous LaTeX2e se fait par \usepackage[langue_1, langue_2, ..., +langue_n]{babel}. + +Parmi les langues actuellement disponibles, on peut citer +english, german, italian, french, français. Le changement de +langue se fait via la commande \selectlanguage. + +Exemple : +\selectlanguage{spanish} +%%%% fin exemple %%%% + +La langue par défaut est la dernière de la liste passée en +paramètre à babel (langue_n dans l'exemple précédent). + +Ce package est le plus courant sur le plan international mais il +est souvent contesté en France. On lui préfère alors le package +'french'. + +* Le package 'french' de B. Gaulle est disponible par ftp sur +ftp://ftp.gutenberg.eu.org/pub/gut/french/ ou sur +ftp://ftp.loria.fr/pub/ctan/language/french/. + +Lors de l'installation, respectez les instructions d'installation +accompagnant french.sty (une FAQ est également disponible). Le +fichier des motifs de césure est désormais unique (frhyph.tex), +que l'on travaille avec le codage de fontes T1 ou OT1 (avec +option MlTeX). + +Vous pouvez également utiliser la série de commandes +suivantes, gentiment envoyées par Denis Barbier: + +---------- citation ---------- + make -f Makefile.unx ALLTEXPATH=/usr/share/texmf \ + install-hyphen install-config install-base install-index + texhash + +Puis modifier le fichier /usr/share/texmf/web2c/fmtutil.cnf et +ajouter +la ligne ci-dessous: +frlatex tex language.dat -mltex frlatex.ini + +Taper ensuite + fmtutil --byfmt frlatex + texlinks + +La commande pour compiler du LaTeX avec french est alors +frlatex. +------------- fin ------------- + +Remarque : Dans un fichier source (.tex), il est conseillé de + charger french après tous les autres packages. + +french prend notamment en charge la mise en page, la traduction +des balises LaTeX visibles dans le document final (Chapitre, +Table des matières, ...), .... + +ATTENTION : ces deux options (french et babel) ne sont pas + toujours parfaitement compatibles (les dernières + versions le sont french3,49 et babel 3.6). +AL: A vérifier... + + + \usepackage[francais]{babel} et + \usepackage[frenchb]{babel} font appel à l'option + frenchb maintenue par D. Flipo. + + \usepackage[french]{babel} fait appel au package + french de B. Gaulle à condition que french ait été + installé (et plus particulièrement french.ldf) + + les versions de tous ces packages sont très + importantes (babel, frenchb, french) pour une bonne + coexistence. Une version 3.6 beta de Babel est sur + CTAN mais il paraît qu'il y avait un problème avec + french. Babel 3.5e et french V3.46 collaborent assez + bien dans tous les sens. + + les fichiers de césure sont les mêmes pour babel + et pour french. + +ATTENTION : les dernières distributions de french (V4 et + post) ne sont plus compatibles LaTeX 2.09 ! + +# 11.2 # Comment corriger les coupures de mots accentués ? +---------------------------------------------------------- +* Une solution consiste à utiliser MlTeX (multilingual TeX). +C'est le moteur TeX de M. Ferguson. Il permet en particulier de +gérer les coupures de mots accentués. Certaines des idées +utilisées dans ce moteur ont d'ailleurs été reprises par la +suite dans TeX V3. + +* Suivant la fonte avec laquelle on travaille (i.e. suivant +qu'elle dispose des caractères accentués ou non), il peut +exister des problèmes d'interaction entre les lettres accentuées +et les règles de coupure des mots. En effet, l'utilisation d'une +fonte 7 bits impose que les caractères accentués soient +fabriqués par la macro \accent de TeX qui inhibe toute coupure +pour la suite du mot. + +En LaTeX2e l'utilisation de fontes respectant la norme T1 +(codage de Cork + 8 bits) permet d'éviter ces problèmes. Il faut +alors faire appel au package 'fontenc' : +\usepackage[T1]{fontenc} +Ce package nécessite que des fontes encodées T1 (suffisamment +récentes) aient été installées (fontes dc par exemple). + +Il faut en outre utiliser des modèles de coupure de mot encodées +T1. Il existe pour cela deux fichiers disponibles sur CTAN. Il +s'agit des fichiers fr8hyph.dc (ou mieux f8hyph, beaucoup plus +récent) pour un codage 8 bits (fonte avec caractères accentués +telle que dc) et fr7hyph (respectivement f7hyph) pour un codage +7 bits (accents TeX). L'association GUTenberg propose également +de tels fichiers (cf. french paragraphe 11.1). + +* Il peut y avoir également un problème de versions, +l'algorithme de coupure des mots a changé entre les versions +2.9 et 3.0. Ainsi si vous utilisez Tex V.3.0 ou plus, il faut +veiller à ce que les fichiers plain.tex et lplain.tex soient +également en version 3.0 ou plus. + +# 11.3 # Comment utiliser les lettres accentuées ? +-------------------------------------------------- +* Les accents disponibles sous LaTeX sont présentés à la +question 29.57. + +* Pour éviter ces commandes barbares d'accentuation des +caractères, on peut utiliser une fonte contenant toutes les +lettres accentuées nécessaires (code 8 bits). Si besoin, il faut +préciser un codage d'entrée via l'instruction : +\usepackage[codage d'entrée]{inputenc} + +L'option est rendue nécessaire par le fait que les codes de +caractères au-delà de 127 sont différents sous Dos, MacOS et +Unix... Ainsi, le codage à preciser est latin1 pour un système +Unix ou un PC sous Windows, applemac sous Mac adapté au français +ou encore cp850 pour le code-page 850 sur PC (sous MS-DOS). Il +existe également ansinew, cp438, latin2 selon les systèmes. + +Exemple : +\usepackage[applemac]{inputenc} +%%%% fin exemple %%%% + +ATTENTION : inputenc.sty « casse » les efforts faits par mlTeX + lorsqu'on utilise les fontes codées OT1 (fontes CMR + ou PostScript). + +* mapcodes de M. Piotrowski autorise également un grand nombre +de codages de caractères (iso8859-1 (latin1), iso8859-2 +(latin2), ibm850 ou 852, hproman8, etc). + +# 11.4 # Comment composer du texte en grec moderne ou classique ? +----------------------------------------------------------------- +Il suffit d'utiliser l'option greek du package babel disponible sur CTAN. Son +site primaire est ftp://obelix.ee.duth.gr/pub/TeX/. La version 1.0 fournie +avec babel ne supporte pas les accents ni les marques de respirations par +contre la toute nouvelle version 1.1 les supporte. + +On trouvera un fichier de césure de mots dans +ftp://obelix.ee.duth.gr/pub/TeX/hyphen.greek. + +# 11.5 # Comment composer du texte en hébreu moderne ou classique ? +------------------------------------------------------------------- +Il suffit d'utiliser le package ArabTeX 3.05 disponible sur CTAN. Son site +primaire est ftp://ftp.informatik.uni-stuttgart.de/pub/arabtex/. +Ce package permet la vocalisation mais pas les marques de +cantillation. + +Exemple: +\documentclass{article} +\usepackage{arabtex,hebtex} +\setcode{standard} +\sethebrew + +\begin{document} +Voici du texte en hébreu +\begin{arabtext} +yOm tOb +\end{arabtex} +Fin du texte en hébreu +\end{document} +%%%% fin exemple %%%% + +# 11.6 # Comment composer du texte en arabe ? +--------------------------------------------- +Il suffit d'utiliser le package ArabTeX 3.05 disponible sur CTAN. Son site +primaire est ftp://ftp.informatik.uni-stuttgart.de/pub/arabtex/. + +# 11.7 # Comment définir les césures de groupes de mots conjugués avec un trait d'union ? +----------------------------------------------------------------------------------------- +(B. Gaulle) Par défaut, TeX coupe tout mot composé à l'endroit +exact du trait d'union et uniquement à cet endroit. Mais cela +peut se modifier. Dans ce but, j'ai ajouté à french (V4,02) une +commande \allowhyphens qui permet de laisser à TeX le choix des +autres coupures dans le mot. + +Remarque : la commande \hypenation ne permet pas d'intégrer un + trait d'union car ce caractère sert à indiquer un + point de coupure et uniquement cela. + +Voici donc la solution : +\showhyphens{{définissez\allowhyphens-le} +donne alors comme points de coupure : dé-fi-nis-sez-le + +-- +Benjamin Bayart +bayartb@edgard.fdn.fr |