Trucs en L^{A}TEX

Christophe PALLIER 26 mars 1995

Résumé Ce document est un recueil de trucs pour dompter L^{A}TEX. On y décrit notamment comment réaliser quelques opérations qui sont élémentaires avec d’autres traitements de textes. L’auteur serait heureux que lui soit signalés les points trop obscurs, et incluera tout truc intéressant qui sera proposé^{1}.

Table des matières

1 Modifier l’indentation d’un paragraphe 2 2 Encadrer un paragraphe 2 3 Respecter le formattage ASCII 3 4 Marges 4 5 Modifier l’interligne 4 6 Modification locale de la taille de caractères 5 7 footnotes dans les tables 6 8 Texte invisible 6 9 Paragraphes en vis-à-vis 7 10 Modifier le style des titres de chapitres, sections... 9 11 Césures (Coupure des mots) 10

11.1 Comment les empêcher . . . . . . . . . . . . . . . . . . . . . . . . 10 11.2 À propos des coupures françaises . . . . . . . . . . . . . . . . . . 10

12 Styles utiles 11

1. E-mail: pallier@psico.psi.ub.es

1 Modifier l’indentation d’un paragraphe

Pour obtenir :

Voici deux paragraphes indentés de 1 cm vers la droite.

Pour cela, on ne peut pas modifier la marge \oddsidemargin au milieu d’un document. Il faut utiliser l’environnement list.

On a fait :

\begin{list}{}{\leftmargin 1cm}
\item Voici deux paragraphes indent\'{e}s de 1 cm vers la droite.
Pour cela, on ne peut pas modifier la marge \verb+\oddsidemargin+ au
milieu d'un document. Il faut utiliser l'environnement \verb+list+.
\end{list}

Si l’on veut indenter plusieurs passages, il est fortement conseillé de définir un nouvel environement; de plus, d’autres paramètres que l’indentation peuvent être réglés. Voici par exemple la définition de l’environnement quotation dans

la classe article.cls.
\newenvironment{quotation}
               {\list{}{\listparindent 1.5em%
                        \itemindent    \listparindent
                        \rightmargin   \leftmargin
                        \parsep        \z@ \@plus\p@}%
                \item[]}
               {\endlist}

2 Encadrer un paragraphe

Pour obtenir :

Here are tree centered lines of text.

On a fortement envie (?) de faire :

\fbox{
    \begin{center}
       Here are tree\\
          centered\\
       lines of text.\\
    \end{center}}

Mais cela provoque une erreur. Le truc suivant fonctionne :

\begin{tabular}{|c|} \hline
Here are tree\\
  centered\\
lines of text.\\
\hline
\end{tabular}

Avec un peu de réflexion, cela permet de faire de diagrammes, comme par exemple :

Signal ⟶ Analyse Acoustique ⟶ Analyse Phonétique

dont le code est :

Signal
$\longrightarrow$
          \begin{tabular}{|c|} \hline
               Analyse\\
              Acoustique\\
          \hline
          \end{tabular}
$\longrightarrow$
          \begin{tabular}{|c|} \hline
               Analyse\\
              Phon\'{e}tique\\
          \hline
          \end{tabular}

3 Respecter le formattage ASCII

Deux commandes parfois très utiles sont \obeylines and \obeyspaces, ainsi :

Avec ces commandes, L^{A}TEX respecte

les espaces

et les retours chariots de votre

fichier ASCII.

Facile, non ?

Malheureuseument, l’indentation, elle,

n’est pas respectee.

Voilà la source :

{\obeylines\obeyspaces
    Avec ces commandes, \LaTeX\ respecte

    les espaces
      et les retours    chariots de votre
      fichier     ASCII.
      Facile, non    ?
        Malheureuseument, l'indentation, elle,
    n'est pas respectee.
\par}

4 Marges

L’origine des marges est à 1 pouce (2.54 cm) du haut et à 1 pouce de la gauche de la feuille. Par exemple, pour avoir une marge gauche de 1 cm :

\setlength{\oddsidemargin}{-1.54cm}

Cet ordre doit se trouver avant \begin{document}, et ne doit pas changer à l’intérieur du document.

On ne règle pas directement la marge droite : celle-ci se déduit de la marge gauche et de la largeur du texte. Si le papier fait 21 cm de large. La marge droite fait :

21 cm - \textwidth - (\oddsidemargin + 2.54 cm)

Pour les documents devant être imprimés en recto-verso, \oddsidemargin définit la marge gauche des pages impaires (verso), et \evensidemargin définit la marge gauche des pages paires (recto). Cela permet de laisser une marge de reliure.

La hauteur de la page est la somme des dimensions suivantes :

2.54 cm
\topmargin          % blanc. Note: peut \^{e}tre n\'{e}gatif
\headheight         % bo\^{\i}te contenant le haut de page
\headsep            % blanc s\'{e}parant le haut de page du texte
\textheight         % texte
\footheight         % bo\^{\i}te contenant le pied de page ???

Chacune de ces dimensions peut être modifiée avec la commande \setlength.

5 Modifier l’interligne

Vous pouvez jouer avec \renewcommand{\baselinestrech}{2}, mais attendez-

vous à des horreurs.

Le mieux est de récupérer et d’utiliser le style doublespace.sty^{2}.

Par défaut, il installe un espacement double, mais il fournit la commande \setstretch qui permet de modifier à volonté celui-ci.

Notez que l’on peut changer spécifiquement l’espacement dans les tableaux avec la commande :

\renewcommand{\arraystretch}{1.2}

6 Modification locale de la taille de caractères

Les ordres de changement de taille de caractère (p.ex. \small, ne se comportent pas comme les autres ordres L^{A}TEX; ils doivent suivre, plutôt que précéder le ‘{’ :

   – Incorrect : \large{ c'est large}
   – Correct : {\large c'est large}

Autre détail, mais qui a son importance :

Comparer ce qui arrive si l’étendue de \huge ne comprend pas la ligne vide de fin de paragraphe, comme ici... Avec ce qui arrive si l’étendue de \huge comprend la ligne vide de fin de paragraphe.

Le code est :

{\huge Comparer ce qui arrive si l'\'{e}tendue de \verb+\huge+
\emph{ne comprend pas} la ligne vide de fin de paragraphe,
comme ici...}
{\huge Avec ce qui arrive si l'\'{e}tendue de \verb+\huge+
\emph{comprend} la ligne vide de fin de paragraphe.
}

Explication : L^{A}TEX calcule l’interligne quand il arrive à la ligne blanche. Il se fonde sur la taille de caractère active quand cette ligne est atteinte.

2. Dans ftp.dante.de//pub/tex/macros/latex/misc

7 footnotes dans les tables

Pour créer la table 1.

Tab. 1 - Medias del presupuesto de Ingresos y Gastos

Ingresos^{a} Gastos Saldo presup.
1874–1880  737  784  -47
1881–1892  789  844  -55
1893–1898  820  842  -22

a Fuente: Estaditica de los Presuspuestos generales del Estado

Nous avons utilisé l’environnement :

\newenvironment{tab}{\begin{table}[htb]\begin{center}
                     \begin{minipage}{\textwidth}
                     \def\footnoterule{}\begin{center}}
                    {\end{center}\end{minipage}\end{center}
                     \def\footnoterule{\kern-3\p@\hrule width 2truein \kern 2.6\p@}
                     \end{table}}

et codé :

\begin{tab}
\caption{Medias del presupuesto de Ingresos y Gastos\label{extab}}
\begin{tabular}{cccc} \hline
 &   \sl Ingresos\footnote{Fuente: Estaditica de los
Presuspuestos generales del Estado} & \sl Gastos & \sl Saldo
presup. \\ \hline
1874--1880 &        737     & 784        &     -47       \\
1881--1892 &        789     & 844        &     -55       \\
1893--1898 &        820     & 842        &     -22       \\ \hline
\end{tabular}
\end{tab}

Notez l’emploi de minipage.

Notez également la redéfinition de \footnoterule pour éviter que les notes d’un tableau soit séparées de celui-ci par une ligne noire.

8 Texte invisible

Il y a un mot caché cette phrase.

Il y a un mot cach\'{e} \phantom{dans} cette phrase.

Cela peut servir pour les questionnaires :

Nom : Prénom :

obtenu avec :

Nom :\ \fbox{\phantom{RASTAPOPOULOS}}\hspace{2cm}%
Pr\'{e}nom :\ \fbox{\phantom{JEAN-ETIENNE}}

Encore un exemple :

1. . . . . . . . . . . . . . 2. . . . . . . . . . . . . .

obtenu par :

\begin{center}
\parbox{6cm}{
1\dotfill\fbox{\phantom{M}}
2\dotfill\fbox{\phantom{M}}
}
\end{center}

9 Paragraphes en vis-à-vis

Pour réaliser :

M. Dupont Paris, le 23 avril 1886. 54 bd Raspail 75006 Paris

Vous pouvez faire :

\noindent
M. Dupont      \hfill Paris, le 23 avril 1886. \\
54 bd Raspail \\
75006 Paris

\hfill est l’ordre magique , sur lequel vous apprendrez plus dans L^{A}TEX: A Document Preparation System, p.96.

On peut vouloir que le paragraphe de droite soit justifié, comme par exemple, dans un CV :

Formation :

1990–1995 Ingénieur en chef chez Astérix et Compagnie : un éléphant, ça trompe énormement. A l’aise dans ses baskets

1988–1990 Hello

Ce n’est pas si simple à réaliser !

La difficulté est de faire en sorte que les paragraphes situés en face de chaque date s’étendent sur toute la largeur de la page.

Nous proposons trois solutions. La première, peut-être la plus simple, est :

\newcommand{\sect}[1]{\vspace*{.8cm}\noindent%
       {\large\textsl{#1}\par}\vspace*{2pt}\hrule\vspace*{.5cm}}
\newlength{\tempdim}
\settowidth{\tempdim}{\bf 1990--1995}
\setlength{\tempdim}{-\tempdim}
\addtolength{\tempdim}{\textwidth}
\sect{Formation :}
\noindent{\bf 1990--1995\ \ }\parbox[t]{\tempdim}{
                   Ing\'{e}nieur en chef chez Ast\'{e}rix et Compagnie :
                   un \'{e}lephant, \c{c}a trompe \'{e}normement.
                   A l'aise dans ses baskets.}
\noindent{\bf 1988--1990\ \ }\parbox[t]{\tempdim}{
                   Hello}

Cette technique présente un problème si le contenu de la colonne dates est de longueur variable. Une solution plus évoluée emploie un tableau s’étendant sur toute la largeur de la page :

\newlength{\tempdim}
\settowidth{\tempdim}{\bf 1990--1995}
\addtolength{\tempdim}{2\tabcolsep}
\setlength{\tempdim}{-\tempdim}
\addtolength{\tempdim}{\textwidth}
\renewcommand{\arraystretch}{1.5}
\sect{Formation :}
\noindent
\begin{tabular*}{\textwidth}{@{}r@{\extracolsep{\fill}}p{\tempdim}@{}}
\bf 1990--1995 &  Ing\'{e}nieur en chef chez Ast\'{e}rix et Compagnie :
                  un \'{e}l\'{e}phant, \c{c}a trompe \'{e}normement.
                  A l'aise dans ses baskets \\
\bf 1988--1990 & Hello
\end{tabular*}

Finalement, on peut résoudre le même problème en modifiant minimalement l’environnement description (fournit dans article.cls):

\newlength{\tempdim}
\settowidth{\tempdim}{\bf 1990--1995}
\addtolength{\tempdim}{\labelsep}

\newenvironment{descript}
               {\list{}{\labelwidth 0pt
                        \setlength{\leftmargin}{\tempdim}
                        \itemindent-\leftmargin
                        \let\makelabel\descriptlabel}}
               {\endlist}
\newcommand{\descriptlabel}[1]{\makebox[\tempdim][r]{\normalfont\bfseries #1}}
\begin{descript}
\item[1990--1995]  Ing\'{e}nieur en chef chez Ast\'{e}rix et Compagnie :
                   un \'{e}lephant, \c{c}a trompe \'{e}normement.
                   A l'aise dans ses baskets.
\item[1988--1990]  Hello.
\end{descript}

Cette dernière solution est sans doute la plus élégante, du moins une fois l’environnement défini.

10 Modifier le style des titres de chapitres, sections...

Numérotation : Le compteur secnumdepth indique le plus bas niveau de section numéroté. Par exemple :

\setcounter{secnumdepth}{0}

supprime tous les numéros de chapitre, de section...etc

Pour changer l’apparence du compteur, par exemple utiliser des lettres plutôt que des chiffres pour les sections :

\renewcommand{\thesection}{\Alph{section}}

Style de caractères :

Si vous n’aimez pas le style des titres de section proposés par défaut, vous pouvez les redéfinir. Pour cela, il faut créer votre propre classe de document.

Par exemple, pour créer une classe dérivée de article, créez le fichier myarticl.cls, contenant :

\ProvidesClass{myarticl}
\LoadClass{article}
\newcommand{\section}{\@startsection {section}{1}{\z@}%
                                   {-3.5ex \@plus -1ex \@minus -.2ex}%
                                   {2.3ex \@plus.2ex}%
                                   {\reset@font\Large\bfseries}}
%ceci est recopi\'{e} tel quel \`{a} partir de article.cls

Votre document principal devra appeler \documentclass{myarticl}.

Jusqu’ici rien de modifié par rapport à article. Si vous désirez, par exemple, que les titres de section soient larges, centrés et en majuscules, remplacez la ligne:

                                   {\reset@font\Large\bfseries}}

par

                                   {\reset@font\large\scshape\centering}}

De manière générale, vous pouvez ainsi recopier à partir de la classe d’origine les définitions que vous allez modifier. Pour plus de détails sur la création des classes, lisez L^{A}TEX 2ε for Class and Package Writers (fourni avec L^{A}TEX 2ε dans

clsguide.tex).

11 Césures (Coupure des mots)

11.1 Comment les empêcher

Quelquefois, il est nécessaire d’empêcher L^{A}TEX de couper les mots dans un document (par exemple dans les manuscripts envoyés à certaines maisons d’édition).

Pour cela, il faut ajouter \hyphenpenalty=10000 dans le préambule (c’est à

dire avant \begin{document})

Cela entraînera probablement beaucoup de messages Overfull hbox , qui signifient que L^{A}TEX s’est avéré incapable de trouver un bon découpage des lignes. Face à ce problème, deux solutions sont envisageables :

1^{o} supprimer la justification à droite en écrivant \raggedright juste après le début du document.

    2^{o} jouer sur les paramètres \tolerance et \emergencystretch^{3}.

Par exemple, pour supprimer les coupures, écrivez dans le préambule :

\tolerance=1000
\hyphenpenalty=10000
\emergencystretch=1in

11.2 À propos des coupures françaises

La version standard de L^{A}TEX ne comprend que les motifs de césure de l’anglais. Pour utiliser le français, il faut que le format inclu les motifs français.

Pour vérifier que votre version de L^{A}TEX sait couper les mots français, essayez:

\showhyphens{\'{e}l\'{e}phant}

3. Voir le chapitre 14 du TEXBook de Knuth, pour plus de détails.

dans un document incluant \usepackage{french}.

Pendant la compilation avec latex, vous devriez voir apparaître un message d’erreur affichant \'{e}l\'{e}-phant . Si tel n’est pas le cas, revoyez l’installation des patrons de coupures français (cf, par exemple, les notes d’installation

du style french.sty).

12 Styles utiles

endnotes.sty : rejette les notes en fin de document. On peut également facilement les rejetter en fin de section ou de chapitre.

endfloat.sty : rejette les figures et tables en fin de document.

theapa.sty & theapa.bst : fournit un style de citation plus correct dans les sciences humaines.