Latex


Latex

Introduction

Latex est un système de composition de documents (traitement de texte) ainsi qu'un langage ayant pour objet la création de documents de grande qualité.

Latex est l'outil privilégié pour la rédaction de documents scientifiques, en particulier contenant toutes sortes de formules et symboles mathématiques (mais pas que), mais est aussi parfaitement adapté à la création de documents de toutes sortes: écrits non (exclusivement) scientifiques, lettres, transparents pour présentation, ..

Mise en forme générale

Dimensions d'une page

La commande suivante permet d'afficher au point courant du document les dimensions d'une page.
Chaque dimension peut-être modifiée à l'aide de la commande \setlength (voir unités de mesure reconnues par Latex).
Code
	\layout
Affichage
    Différentes dimensions dans une page en Latex

Taille des fontes


Les commandes \tiny, \scriptsize, \footnotesize, \small, \normalsize, \large, \Large, \LARGE, \huge, \Huge permettent de modifier la taille du texte:
Code
\centerline{{\tiny tiny}, 
 {\scriptsize scriptsize},
 {\footnotesize footnotesize},  {\small small},}
\centerline{{\normalsize normalsize}, {\large large},}
\centerline{{\Large Large}, {\LARGE LARGE}, {\huge huge}, {\Huge Huge}.}
Affichage
    Différentes tailles de fonte
Pour une autre taille de texte (plus grande par exemple), on peut indiquer directement à Latex la taille, en points, à utiliser.
Cette commande n'a toutefois de sens qu'avec des fontes vectorielles (tels que Times, Palatino, ...), dans le cas contraire l'agrandissement à outrance risquant de fournir un résultat quelque peu décevant esthétiquement.
Code
\fontsize{30}{30}{\bf\LaTeX}
Le premier nombre en argument donne la taille de la fonte, le second la taille de l'interligne.

Mode mathématiques


Pour utiliser des symboles mathématiques ou rédiger des formules mathématiques, il faut indiquer à Latex de passer en mode mathématique.
L'environnement mathématique peut s'indiquer de deux manières:
  • Avec des $ simples, un au début de l'expression et un autre en fin de l'expression mathématique.
    La formule se trouve alors insérée dans la ligne courante, au même titre qu'un texte quelconque.
    Code
    Une formule bien connue: $\forall x\in\R, 1=\cos^x+\sin^2x$
    
    Affichage
    cos^2+sin^2 en Latex
    
  • En ouvrant l'environnement mathématique par \[ et en le refermant par \].
    L'expression est alors mise à la ligne et centrée.
    Code
      Une autre formule moins connue:
    \[ 1=\ln\left[ \lim_{z\to 0} \left( 1+\frac{1}{z}\right)^z\right] \]
    Affichage
          Une autre (bien plus) belle formaule mathématique en Latex
      

Taille des fontes en mode mathématique


Les commandes précédentes ne sont pas valides en mode mathématique. Sont disponibles par contre:
  • \textstyle: taille par défaut du texte courant
  • \displaystyle: défaut pour l'affichage d'équations
  • \scriptstyle: taille par défaut des indices et exposants de premier niveau
  • \scriptscriptstyle: taille par défaut pour indices et exposants de niveau supérieur

Les unités de mesure


Latex comprend six unités de mesure :
  • pt: point = 0,35 mm
  • cm: centimètre
  • mm: millimètre
  • ex: correspond à la hauteur d'un ``x'' dans la fonte courante
  • em: correspond à la largeur d'un ``m'' dans la fonte courante
  • in: pouce = 2,54 cm



Les longueurs prédéfinies et espaces


Un certain nombre de longueurs prédéfinies (c'est-à-dire existantes et ayant une valeur par défaut) existent, parmi lesquelles celles indiquées précédemment et fixant les dimensions de mise en page générale.
On peut y rajouter:
  • \parindent: la longueur de l'indentation (retrait) au début de chaque nouveau paragraphe (après un saut de ligne, ou de l'utilisation de la commande \par)
  • \parskip: l'espace vertical entre deux praragraphes (séparés par un saut de ligne, ou par la commande de la commande \par)
  • \baselineskip: l'interligne

Chaque longueur peut être (re)définie suivant, par exemple pour baselineskip:
Code
	\setlength{\baselineskip}{0.3cm}

Espaces verticaux

  • \vspace{longueur}, ou \vspace*{longueur}, où longueur est ... une longueur (en cm, pt, \dots cf. unités de mesure en LaTex).
    La version étoilée force l'espacement, même en début de page.
  • \bigskip
  • \vfill correspond à un espace vertical de la hauteur de l'espace encore libre sur la page: ce qui suit est repoussé en bas de la page.


Espaces horizontaux

  • \,: espace d'un demi-caractère
  • \ : espace d'un caractère
  • \!: espace négatif (retrait) d'un demi-caractère
  • \hspace{largeur}, ou \hspace*{largeur}: commandes identiques à leurs analogues verticaux.
  • \hfill correspond à un espace horizontal de la largeur de l'espace encore libre sur la ligne: ce qui suit est repoussé à droite de la page.
  • Par exemple:
    Code
        \fbox{
         \begin{minipage}[t]{6cm}
          Début\hfill Milieu\hfill Fin
        
      \vspace{1cm}
      \centerline{Bas de (mini)page}  \end{minipage} }
    Affichage: 
      Différents espaces en Latex
    


Les compteurs


Latex permet de définir et d'utiliser des compteurs, et donc de numéroter automatiquement.
Certains sont prédéfinis et utilisés par Latex, par exemple pour la numérotation des pages, sections, ...
La valeur d'un compteur s'affiche à l'aide de la commande \thenom_compteur, par exemple
Code
    \thepage
ou encore, à l'aide d'une des commandes
  • \alph{nom_compteur} pour la numérotation alphabétique en lettres minuscules,
  • \Alph{nom_compteur} pour la numérotation alphabétique en lettres majuscules,
  • \arabic{nom_compteur} pour la numérotation en chiffres arabes: 1,2,3, ..
  • \roman{nom_compteur} pour la numérotation en chiffres romains minuscules: i, ii, iii, iv, ..
  • \Roman{nom_compteur} pour la numérotation en chiffres romains majuscules: I, II, III, IV, ..


Un nouveau compteur peut être défini gâce à la commande \newcounter{nom_compteur}. Celui-ci peut être incrémenté (on ajoute une unité au compteur) à l'aide de la commande \stepcounter{nom_compteur}, tandis qu'on peut plus généralement ajouter directement une quantité à un compteur par la commande \addtocounter{nom_compteur}{nombre}.
Code
    \newcounter{cpt}
    \setcounter{cpt}{0}

    \noindent
    \stepcounter{cpt}
    \thecpt\, -- \alph{cpt}  \\
    \addtocounter{cpt}{7}
    \thecpt\, -- \Alph{cpt} \\
    \addtocounter{cpt}{15}
    \thecpt\, -- \arabic{cpt} \\
    \addtocounter{cpt}{32}
    \thecpt\, -- \roman{cpt} \\
    \addtocounter{cpt}{10}
    \thecpt\, -- \Roman{cpt}
Affichage:
    Différents compteurs en Latex

Les listes: itemize et enumerate


Deux types d'environnement pour les listes: itemize, pour les listes simples, et enumerate pour les listes numérotées.
Code
\begin{itemize}
\item 1er item 
\item 2ème item !
\item \dots et le 3ème...
\item[$\bullet$] suivi de 2 autres \dots \\ \dots avec une puce 
\item[$\bullet$] et voilà le 2ème
  \begin{itemize}
  \item[$\heartsuit$] dans une sous-liste imbriquée
  \item[$\heartsuit$] avec deux item \dots
    \dots et des c\oe urs comme puces 
  \end{itemize}
\end{itemize}
Affichage
exemple de liste avec itemize
Les listes numérotées peuvent se faire avec l'environnement enumerate, qui permet entre autre de numéroter automatiquement chaque item.
Le type de numérotation s'indique en argument, et la numérotation peut être interrompue et reprise, ou manipuler de manières diverses via les compteurs enumi (1er niveau), enumii (2ème...) et enumiii (voir le paragraphe précédent sur les compteurs).
Code
%\usepackage{enumerate}
\begin{enumerate}
\item alinéa 1
\item alinéa 2 
  \begin{enumerate}[a)]
    \item sous-alinéa 1
    \item sous-alinéa 2
    \item \dots 3 \\[1em]
      \dots\dots \\
      \setcounter{enumii}{5}
    \item On a sauté d'un coup quelques items intermédaires\dots
  \end{enumerate}
\item Fin des sous-alinéa, \\
  c'est-à-dire retour à la liste principale

% On sauvegarde dans le compteur LastEnumi 
% le numéro du dernier item utilisé
\newcounter{LastEnumi}
\setcounter{LastEnumi}{\theenumi}
\end{enumerate}

On peut sortir de cet environnement quelques instants, lignes, pages,
autres environnements, \dots 

puis y revenir 
\begin{enumerate}
% On recommence à numéroter automatiquement 
% là où on a cessé
\setcounter{enumi}{\theLastEnumi}
\item retour à la suite de la numérotation précédente !
\end{enumerate}
Affichage
exemple de liste avec enumerate

Les boîtes


Il existe un certain nombre de boîtes:
  • \mbox{texte}: créé une boîte de taille juste suffisante pour contenir le texte.
    La boîte est insécable: le texte qui y est contenu ne peut pas, entre autre, être coupé en fin de ligne (qui peut donc être utilisée en fin de ligne afin d'éviter une césure inoportune d'un mot).
    A l'intérieur du \mbox, on se trouve en mode texte. La commande \mbox permet donc en particulier d'introduire simplemenent du texte à l'intérieur d'un mode mathématique. Par exemple:
    Code
      \[1 = \ln(e) 
      \mbox{ soit, } 
      1=\ln\left[ \lim_{z\to 0} \left( 1+\frac{1}{z}\right)^z\right]
      \]
      
    Affichage
    	  Une formule mathématique inline
          

  • \fbox{texte}: similaire à \mbox, excepté que le cadre de la boîte est tracé.
  • \makebox[largeur][position]{texte}: où largeur désigne la largeur de la boîte souhaitée, et position est
    • l : le texte sera justifié à gauche
    • r : le texte sera justifié à doite
    • s : le texte sera justifié à gauche et à droite
  • \framebox[largeur][position]{texte}: est similaire à \makebox, excepté que le cadre de la boîte est tracé.
  • \parbox[position]{largeur}{texte}
  • \raisebox{distance}[dist-sup][dist-inf]{texte}: permet de contrôler le positionnement vertical du texte.
    Code
      Un texte
      \raisebox{0pt}[0pt][0pt]{\Large%
      \textbf{Aaaa\raisebox{-0.3ex}{a}%
       \raisebox{-0.7ex}{aa}%
       \raisebox{-1.2ex}{r}%
       \raisebox{-2.2ex}{g}%
       \raisebox{-4.5ex}{h}}}
      qui s'écroule sur lui-même \ldots
      
    Affichage:
      Un texte qui s'écroule sur sa ligne
    
  • minipage: cet environnement permet, comme son nom l'indique, de créer une "mini" page dans la page.
    Code
     \begin{minipage}[t]{4cm}
      Une page étroite avec une formule:
      \[1+e^{i\pi}=0\]
     \end{minipage}
     \hspace{0.3cm}
     \begin{minipage}[t]{6cm}
      et une autre un peu plus large en vis-à-vis,
      avec une autre formule
      \[\cos z = \frac{e^{iz}+e^{-iz}}{2}\]
      (tout aussi vraie d'ailleurs)
     \end{minipage}
     
    Affichage:
      Exemples de mini pages
      
L'épaisseur des cadres, lorsque tracés, est spécifiée par la longueur \fboxrule.
On la change ainsi en modifiant cette longueur: \setlength{\fboxrule}{largeur}, où largeur est la largeur souhaitée du trait.

L'espace entre le texte et le cadre est géré par la longueur \fboxsep.
On peut ainsi facilement, en modifiant cette longueur, afficher un cadre beacoup plus large que le texte qu'il contient.

Pour finir, on peut aussi à encadrer du texte "à la main", en combinant fbox et minipage:
Code
 \fbox{
 \begin{minipage}{6cm}
  Texte...
 \end{minipage}
 }

Encore des boîtes: exemples



Code & affichage
\fbox{Un exemple serré dans sa boîte}
    Exemple de texte encadré dans une boîte

Code & affichage
\fbox{\raisebox{0.2cm}[0.8cm][0.3cm]{Un exemple à l'aise dans sa boîte}}
    Exemple de boîte élargie avec raisebox

Code & affichage
 \setlength{\fboxsep}{0.5cm}
 \fbox{Un exemple à l'aise dans sa boîte, II}
      Exemple de boîte élargie en modifiant la longueur fboxsep

Code & affichage
 \setlength{\fboxrule}{3pt}
\fbox{\raisebox{0.2cm}[0.8cm][0.3cm]{Un exemple avec un cadre épais}} Epaisseur du cadre en modifiant fboxrule

Avec PSTricks, d'autres boîtes sont disponibles (utiliser alors le package pst, ou pst-all):
Code & affichage
 \psframebox{cadre basique}

    Texte encadré avec pstricks et psframebox
Code & affichage
 \psdblframebox{cadre basique double}
    Double encadrement d'un texte encadré avec pstricks et psdblframebox
Code & affichage
 \psframebox[linearc=0.8,cornersize=absolute]{Un cadre arrondi}

    Encadrement arrondi d'un texte avec pstricks et psframebox
Code & affichage
 \psshadowbox{Cadre ombré}
    Encadrement ombré d'un texte avec pstricks et psshadowbox
Code & affichage
 \psovalbox{Oval}
    Encadrement oval d'un texte avec pstricks et psovalbox
Code & affichage
 \psdiabox{Losange}
    Encadrement losange d'un texte avec pstricks et psdiabox
Code & affichage
 \pstribox{Cadre triangulaire}
    Encadrement triangulaire d'un texte avec pstricks et pstribox

Transformations d'objets: rotation et réduction / agrandissement


Les trois commandes scalebox, resizebox ,et rotatebox permettent de modifier (presque) n'importe quel objet.
Code
 \scalebox{0.5}{abc}
 \hspace{0.5cm}
 \scalebox{1}{abc}
 \hspace{0.5cm}
 \scalebox{2}{abc}
Affichage
    Différentes tailles de texte avec scalebox

Code
 \rotatebox{-45}{abc}
 \hspace{0.5cm}
 \rotatebox{45}{abc}
Affichage:
  Orientation du texte avec rotatebox

En-tête et pied de pages


Des cadres d'en-tête et pied de page peuvent être insérés automatiquement par Latex.
Le package fancyheadings, à charger dans le préambule, permet cela:
Code \usepackage{fancyheadings}
Le cadre d'en-tête se définit alors en utilisant les commandes \lhead{texte}, \chead{texte}, \rhead{texte} (respectivement en-tête gauche, centre et droite), et celui de pied de page avec \lfoot{texte}, \cfoot{texte}, \rfoot{texte}, (respectivement pied de page gauche, centre et droite).

Les longueurs \headrulewidth et \footrulewidth correspondent à l'épaisseur du trait séparateur du corps du texte avec les en-têtes et pieds.
Code
 \setlength{\headrulewidth}{0.4pt}
 \setlength{\footrulewidth}{0.pt}
 \lhead{}
 \chead{Titre du document}
 \rhead{\thesection}
 \lfoot{Auteur}
 \cfoot{}
 \rfoot{\thepage}
On indique alors à Latex par la commande \pagestyle{fancyplain} que l'on souhaite utiliser les en-têtes et pieds de page, tandis que la commande \pagestyle{empty} permet d'imposer des pages sans en-tête et pied de page (\thispagestyle{empty} ne l'impose que pour la page courante, utile par exemple pour la page de garde d'un document).

Coupures et espacements de lignes et de pages


Par défaut, Latex optimise la mise en page afin d'avoir un rendu le plus esthétique possible (en fait, le moins moche possible).
On peut néanmoins (et heureusement) imposer certaines exigences, dans les coupures de lignes et de pages:
  • \\, \\*: impose la fin de la ligne; la version étoilée indique de plus que la ligne suivante doit être sur la même page, et empêche ainsi un saut de page inopportun.
  • \\[hauteur]: impose la fin de la ligne avec un espace vertical indiqué par hauteur
    Par exemple,
    Code: Select all
    \[\left\{\begin{array}{cc}
    \\[-0.2cm]
    2x^2+\dfrac{2^{12}}{y}=36 \\[0.8cm]
    3x+e^{|y|^3}=-12\\[0.3cm]
    \end{array}\right. \]
    Affichage:
    Un système d'équation aéré, avec une grande interligne
  • \clearpage: termine la page ici, et force l'affichage de tous les graphiques et autres figures avant de reprendre la suite du texte sur une nouvelle page.
  • \newline: termine la ligne ici.
  • \newpage: termine la page ici. Le bas de la page coupée est vide, le texte reprend à la page suivante.
  • \linebreak,\pagebreak: termine aussi la ligne ou la page ici, à la différence que la ligne ou la page coupée est étirée de manière à utiliser tout l'espace disponible sur la ligne ou la page.
  • \newpage: termine la page ici. Le bas de la page coupée est vide, le texte reprend à la page suivante.
  • \nolinebreak[n], \nopagebreak[n]: évite de couper la ligne ou la page courante; l'argument optionnel n est un nombre entre 0 et 4 qui, plus grand il est, plus la coupure est empêchée.
  • \enlargethispage{longueur}: indique à Latex de comprimer (lorsque longueur est négatif) ou d'étirer (lorsque longueur est positif) le contenu de la page en cours, de manière, par exemple, à éviter que la page suivante ait trop peu de contenu).
    Par exemple
    Code: Select all
    \enlargethispage{1cm} % étend la page de 1 cm
    \enlargethispage{-2\baselineskip} % supprime deux lignes dans la page


Document en mode paysage et/ou avec 2 colonnes


On peut créer des documents au format paysage, et sur deux colonnes de la manière suivante:
Code: Select all
\documentclass[12pt,twocolumn]{article}
\usepackage[landscape]{geometry}
(bien sûr, avec onecolumn on obtient un document en mode landscape mais avec une seule colonne…)

Les longueurs columnsep et columnseprule permettent alors de jouer, comme leur nom l'indique, sur la largeur de la séparation entre les colonnes de droites et gauche, et sur l'épaisseur du trait séparant les deux colonnes (une épaisseur nulle supprime le trait).
Par exemple:
Code: Select all
\columnsep=10pt
\columnseprule=0.3pt
% ou de manière équivalente
\setlength{\columnsep}{30pt}
\setlength{\columnseprule}{1pt}
Dans un document "une colonne" on peut passer localement sur deux colonnes avec \twocolumn[titre]{texte}, où titre est le titre du passage suivant qui peut s'étendre sur toute la largeur des deux colonnes, et texte est le texte qui va s'étendre sur la première colonne … puis la deuxième…
Par exemple:
Code: Select all
\columnsep=20pt
\columnseprule=.3pt
\twocolumn[\centerline{Titre de la section bi-colonne}]{Texte à proprement parler.}
% et pour repasser sur une colonne:
\onecolumn
Du texte sur toute la largeur de la page,\\
sur une seule colonne
On peut aussi utiliser l'environnemenent twocolumn:
Code: Select all
\columnsep=20pt
\columnseprule=.3pt
\begin{twocolumn}
Du texte sur deux colonnes \dots\dots\\
\dots\dots
\end{twocolumn}


Quelques packages utiles



Package calc


Le package calc permet d'effectuer … des calculs. Par exemple,
Code: Select all
\usepackage{calc} % Dans le préambule...

\newlength{\col}
\setlength{\col}{13cm}

\newcommand{\bgdef}[2]{%
  \newlength{\ldef}\settowidth{\ldef}{#1}
 \paragraph{\underline{#1:}}
 \begin{minipage}[t]{\col-\ldef-2em}{\it #2}
 \end{minipage}
}
%%%%%%%%%
% Usage %
\bgdef{Titre}{Une longue propriété; une longue propriété;
une longue propriété; Une longue propriété
}
Affichage:
Une longue propriété, avec retour à la ligne automatique
Remarque: La longueur (13cm) peut judicieusement être remplacée par \textwidth

Voir aussi la section Dessins avec boucles et calculs pour un autre exemple d'utilisation.

Package psTricks


Un package incontournable, à mon sens, pour tracer tout ce qui se rapprocher de près ou de loin à du dessin / graphique: bien sûr pour faire des dessins et graphiques et / ou des courbe, mais aussi:
  • Dessiner sur du texte, texte barré, …Lien
  • Écrire le long d'une courbe Lien
  • Dessiner (ajouter des traits, lignes, …) dans un tableau Lien

Nouvelles commandes, avec argument(s), éventuellement optionnels

Haut de la page


LongPage: h2: 4 - h3: 16