Latex

Latex (prononcé Latek) est un langage de markup qui permet de contrôler la mise en forme du texte. Contrairement aux autres langages de markup, la puissance de Latex est sa capacité d’afficher des figures complexes : des schémas, des formules mathématiques, des partitions musicales, etc.

OpenOffice et Word sont ce qu’on appelle des WYSIWYG (what you see is what you get = ce que vous voyez est ce que vous obtenez). Latex, lui, est un language de markup, basé sur l’idée du WYSIWYM (what you see is what you mean = ce que vous voyez est ce que vous voulez dire): on décrit le contenu et l’ordinateur se chargera de le formatter.

Les fichiers Latex sont de simples fichiers textes, auxquels on donne l’extension .tex. Ils peuvent donc s’écrire dans n’importe quel éditeur de texte. Ces fichiers peuvent ensuite être convertits en PDF, HTML, PNG, etc, à partir des instructions du fichier : formules, images, paragraphes de texte, etc…

Exemple de résultat généré à partir d’instructions Latex :

\[\sum_{k=2}^{47} k + 1\]

Cet article est une introduction à Latex qui indique comment :

Un autre article est dédié sur la manière de formatter le contenu (texte en gras, équation, tableau, liste, etc).


Installation

Compilateur

Pour générer un document (PDF ou autre) à partir d’un fichier Latex (= compiler le fichier), il est nécessaire d’installer un ensemble de logiciels (= une distribution).

sudo apt-get install texlive-full

Workflow Latex

Pour lancer la compilation à partir de la ligne de commande, on a les commande latex ou pdflatex :

latex file.tex       Compile en file.dvi
pdflatex file.tex    Compile en file.pdf

Pour exporter en png, compiler en PDF puis convertir en PNG (avec ImageMagick)

pdflatex tmp.tex
convert -density 300 -quality 90 tmp.pdf tmp.png

Éditeur

On peut utiliser un éditeur spécial Latex, qui gère la coloration syntaxique des commandes Latex et ajoute des raccourcis par rapport un éditeur texte classique - mais ce n’est pas indispensable.

Les distributions et éditeurs Latex les plus connus sont :

Plateforme Distribution Éditeur
Windows MiKTeX TeXnicCenter
Linux TeXlive Gummy
Mac MacTeX TeXworks

Environnements et commandes

Environnement

Un environnement est une zone de texte délimitée par deux balises \begin{nomenv} et \end{nomenv}.
Le document Latex est un environnement en soi (de type document).

Exemple de contenu d’un fichier Latex :

\documentclass{article}

\begin{document}
Hello world!
\end{document}

Un environnement peut être imbriqué à l’intérieur d’un autre

\documentclass{book}
\begin{document}

\begin{center}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu tincidunt lectus, ut pellentesque magna.
\end{center}

Aenean interdum ipsum vel libero elementum commodo.

\end{document}

Commande

Le Latex s’écrit sous la forme de “commandes” qui

\nomcommande[<option,option,...>]{<param>}

Exemples :

\newline                              Insère un retour à la ligne
\textsl{Hello World}                  Met "Hello World" en italique
\documentclass[twocolumn]{article}    Affiche le texte du document sur 2 colonnes

Commentaire

Tout ce qui est placé après % est en commentaire jusqu’à la fin de la ligne et ne sera donc pas présent dans le fichier compilé (PDF, PNG…).

Du texte    % un commentaire

Pour créer un commentaire sur plusieurs lignes, il faut importer le package verbatim et utiliser un environnement de type comment (avec les tags begin et end).

\usepackage{verbatim}

Lorem
\begin{comment}
Un commentaire
sur plusieurs ligne
\end{comment}
ipsum

1. Type de document

La première commande du fichier Latex doit être documentclass - commande qui spécifie le type de document.
La manière dont le document va être formatté (indentations, numéro de page, etc) en dépendra.
Cette commande accepte également des options.

\documentclass[<options>]{<type>}

Par exemple :

\documentclass[12pt]{article}

\begin{document}
Hello World
\end{document}

Plus d’exemples de types et options

Les types les plus courants sont :

Type Utilisé pour
article Article, rapport, documentation, etc
report Rapport (thèse, stage)
book Livre
slides Slides
letter Lettres
minimal Document sans formattage

Il est possible de créer de nouveaux types (fichiers .cls)


2. Préambule

L’endroit entre \documentclass et begin{document} est ce qu’on appelle le préambule. Cette partie n’est pas affichée dans le résultat final, elle sert à importer des packages et à définir des configurations et metadatas.

Importer un package

Les packages peuvent modifier le style du document et/ou ajouter de nouvelles fonctionnalités.
Par exemple le package verbatim ajoute la gestion des blocs de commentaire.
On les importe avec la commande \usepackage.

\usepackage[<options>]{<name>}

Modifier les entêtes et pieds de page

\pagestyle définit si le document doit afficher les entêtes et/ou pieds de page sur les pages.

\pagestyle{<style>}
Style Description
plain (Valeur par défaut) Pied de page : numéro de page (au centre)
headings Entête : titre du chapitre (à gauche) + numéro de page (à droite)
empty Rien

Exemples (dans l’ordre) :

Plain Headings Empty

On peut également modifier le style de page uniquement pour la page en cours avec \thispagestyle{<style>}.
Pour plus d’infos

Langage du document

Par défaut, le texte est en anglais (sommaire, chapitre, etc).
On peut modifier le langage en important le package du language voulu

Par défaut En français
Snapchot section Snapshot section fr

Par exemple pour du français

  1. Installer le package

    sudo apt-get install texlive-fonts-recommended texlive-lang-french
    
  2. Importer le package

     \documentclass{report}
     \usepackage[utf8]{inputenc}
     \usepackage[french]{babel}
     \usepackage[T1]{fontenc}
     \begin{document}
    
     \part{Ma partie}
     \chapter{Mon chapitre}
     \section{Ma section}
     \subsection{Ma sous-section}
    
     Lorem...
    
     \end{document}
    

    NB Si une erreur Unknown language 'french' apparaît à la compilation, supprimer le fichier .aux

Titre, auteur et date du document

Toujours dans le préambule, on définit les metadatas :

\title{Mon rapport}
\author{Bob}
\date{1 Janvier 2010}

3. Page de garde

La commande \maketitle crée une page de garde.
Elle affiche les metadatas du document qui ont été définies dans le préambule.

\documentclass{report}
\title{Mon rapport}
\author{Bob}
\date{1 Janvier 2010}

\begin{document}
\maketitle
\end{document}


4. Sommaire

Une table des matière est automatiquement générée à partir des titres des chapitres, sections, etc, et peut être affiché avec la commande \tableofcontents.

Attention, pour que le contenu de la table des matières s’affiche, il est nécessaire de compiler deux fois.

Snapshot tableofcontents

On peut également afficher la liste des figures du document avec \listoffigures et la liste des tableaux avec \listoftables.


5. Résumé

Uniquement pour les documents de type article, l’environnement abstract permet d’ajouter un résumé.

\begin{abstract}
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nulla porttitor, mauris in semper faucibus, ante ipsum lacinia est, vitae molestie dolor elit tincidunt eros.
\end{abstract}


6. Hiérarchie

Il existe des commandes pour hiérarchiser le contenu

Hiérarchie Commande
Partie \part{nom de la partie}
Chapitre \chapter{nom du chapitre}
Section \section{nom de la section}
Sous-section \subsection{nom de la sous section}
Sous-sous-section \subsubsection{nom de la sous sous section}
Paragraphe \paragraph{nom du paragraphe}
Sous-paragraphe \subparagraph{nom du sous paragraphe}

Pour ajouter une chapitre, section, etc, qui n’est pas numéroté, et qui n’est pas affiché dans le sommaire, ajouter un * à la fin de la commande. Exemple: \chapter*{nom du chapitre}, \section*{nom de la section}.

\documentclass{report}

\begin{document}
\part{Ma partie}

\chapter{Mon chapitre}
\section{Ma section}
\subsection{Ma sous-section}

Le contenu en dehors d'un paragraphe \\
Sur plusieurs lignes

\paragraph{}
Le contenu d'un paragraphe \\
Sur plusieurs lignes

\subparagraph{}
Le contenu d'un sous-paragraphe \\
Sur plusieurs lignes


7. Meta-hiérarchie

Pour les documents de type book, il existe quatres commandes supplémentaires poour séparer les parties du livre : introduction, contenu, annexes et conclusion. Les différentes parties ont pour effet de modifier le libellé associé aux chapitres : par exemple dans la partie \appendix, les chapitres sont numérotés “Annexe A”, “Annexe B” au lieu de “Chapitre 1”, “Chapitre 2”.

Commande \frontmatter \mainmatter \appendix \backmatter
Description Intro / présentation Contenu Annexes Conclusion / résumé
Intitulé affiché (rien) Chapitre 1 Annexe A (rien)
Snapshot frontmatter Snapshot mainmatter Snapshot appendix Snapshot backmatter
Numéros de page i, ii, iii 1, 2, 3 1, 2, 3 1, 2, 3
Snapshot frontmatter page Snapshot mainmatter page Snapshot appendix page Snapshot backmatter page
Snapshot tableofcontents

Code utilisé :

\documentclass[oneside]{book}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\begin{document}

\tableofcontents

\frontmatter
\chapter{Chapitre frontmatter}
Content

\mainmatter
\chapter{Chapitre mainmatter}
Content

\appendix
\chapter{Chapitre appendix}
Content

\backmatter
\chapter{Chapitre backmatter}
Content

\end{document}

8. Contenu

Voir l’article sur la manière de formatter le contenu :


Inclure des fichiers

Il est possible d’inclure des fichiers Latex avec la commande \include.
Les fichiers inclus fichiers ne doivent contenir que le corps du document (pas de documentclass ni d’environnement document). Il est inutile de préciser l’extension.

\include{filename}

On peut indiquer au parser d’ignorer les include qui n’ont pas été whitelistés avec la commande \includeonly (situés après la commande). Cette commande est utile lors de la rédaction du document, afin d’accélerer le temps de génération du PDF.

\includeonly{filename, filename2, ...}

Lorsqu’on inclus un fichier avec \include, le contenu du fichier est ajouté sur une nouvelle page. On peut insérer sur place avec la commande \input. \includeonly ne la filtre pas.

\input{filename}

Par exemple :

% Fichier principal
\documentclass[oneside]{book}
\include{inc.definitions}
\includeonly{
    04-Listes,
    05-Arbres
}

\begin{document}
\tableofcontents
\include{01-Introduction}
\include{02-Vecteurs}
\include{03-Fichiers}
\include{04-Listes}
\include{05-Arbres}
\end{document}
% inc.definitions.tex
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\renewcommand{\familydefault}{\sfdefault}

\usepackage[letterpaper, margin=1in]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{mdframed}
\usepackage[section]{placeins}
\usepackage{fancyvrb}
\fvset{tabsize=4}

\newcommand\tab[1][1cm]{\hspace*{#1}}
% 01-Introduction
\part*{Introduction}

\section*{Au programme}
Description du programme

Labels et références

Un label permet de marquer l’emplacement d’un bloc: section, sous-section figure, table ou théorème. Un label peut se situer dans un sous-bloc du bloc référencé car c’est le type qui permet de déterminer la cible.
Une référence affiche l’emplacement de ce label (soit la page soit le numéro de section).
Nécessite d’être compilé deux fois.

Par exemple :

\documentclass{report}
\begin{document}

\section{Ma section}
\subsection{Ma sous-section}
\label{sec:lorem}
\label{subsec:lorem}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam gravida nec massa id consectetur. Nullam condimentum urna nulla, sit amet sodales leo rhoncus nec. Aenean vehicula ante dictum, sagittis augue dapibus, varius elit. Suspendisse porta orci tortor, ac sagittis quam fermentum non.

\section{Mon autre section}
Voir la section \ref{sec:lorem}, page \pageref{sec:lorem} \\
Sous-section \ref{subsec:lorem}

\end{document}

Liste des différents types :

Type Description
ch: chapitre
sec: section
subsec: sous-section
fig: figure
tab: table
eq: equation
lst: code listing
itm: enumerated list item
alg: algorithm
app: appendix subsection

Créer des maccros, environnements et commandes


Templates

Report

\documentclass[11pt]{report}            % Report class in 11 points
\raggedright                            % Do not right-justify
\parindent0pt  \parskip8pt              % make block paragraphs

\begin{document}                        % End of preamble, start of document text.

\title{\bf An Example of Report Class}  % Supply information
\author{Yours Truly}                    %   for the title page.
\date{\today}                           %   Use current date.
\maketitle                              % Print title page.

\pagenumbering{roman}                   % Roman page number for toc
\setcounter{page}{2}                    % Make it start with "ii"
\tableofcontents                        % Print table of contents

\chapter{A Main Heading}                % Make a "chapter" heading
\pagenumbering{arabic}                  % Start text with arabic 1

Most of this example applies to the article and book classes
as well as to the report class. In article class, however,
the default position for the title information is at the top
of the first text page rather than on a separate page. Also, article
class does not have a \"chapter\" command.
A blank line starts a new paragraph.  \textit{Note this: it will be
printed in italic type.}

\section{A Subheading}                  % Make a "section" heading
The following sectioning commands are available:

\begin{quote}                           % Start "set off", indented text
part \\                                 % "\\" forces a new line
chapter \\                              % not available in article class
section \\
subsection \\
subsubsection \\
paragraph \\
subparagraph
\end{quote}                             % End of indented text
The *-form (e.g., \"section\*") suppresses the section number and
does not make a TOC entry.

\end{document}                          % The required last line

Letter

\documentclass[12pt]{letter}               % letter class, 12 points

\address{555 Main St.\\Sometown, NY 12345} % Return address
\signature{My Name\\My Title}              % Name for signature

\begin{document}                           % End of preamble
\begin{letter}{Mr.~Smith\\ President,      % Begin letter by giving
Big Name Co.\\Bigburg, MI 45678}           %   recipient’s address

\opening{Dear Mr.~Smith:}                  % Name for salutation
This is the letter class.  It provides a format for standard parts
of a business letter.  As you can see, it uses many commands that
do not exist in the article, report, and book classes.
This is a new paragraph.

\closing{Sincerely,}                       % Format for the closing.
% The name is taken from \signature command above.
\cc{My Boss}                               % Name(s) of those receiving copies
\end{letter}                               % End of letter
\end{document}                             % The required last line