LaTeX

LaTeX est un langage de programmation de mise en page utilisé pour créer des documents scientifiques et académiques avec précision. Sa syntaxe basée sur des commandes rappelle l’approche de l’automatisation de l’infrastructure informatique (IAC) utilisée par les DevOps. Comme l’IAC permet de décrire et de gérer l’infrastructure de manière reproductible via du code, LaTeX offre un contrôle similaire sur la présentation des documents, permettant une gestion cohérente et efficace des éléments complexes tels que les équations mathématiques et les références bibliographiques.

Pourquoi LaTeX ?

En tant que DevOps on aime bien maitriser la génération de code, la génération de déploiement, la génération de documents. C’est pour cette raison que LaTeX peu être un bon outil en remplacement de Office ou LibreOffice.

Sans éditeur particulier, le code d’un documents LaTeX est beaucoup plus facile à lire qu’un document Office/LibreOffice qui sont enregistrés au format Office Open XML LaTeX est principalement

Personnellement, bien que l’on puisse rédiger des documents LaTeX avec un éditeur comme TeXstudio, il est également possible d’utiliser des éditeurs plus simples tels que Nano ou Vim. Pour ma part, j’utilise mon propre IDE**, basé sur Vim, qui permet non seulement d’éditer, de reformater, linter et de visualiser des documents LaTeX, mais également, grâce à Nix, de télécharger des packages LaTeX.

Vim latex editor
Vim latex editor

Les bases

Le préambule

Le préambule permet de configurer la forme de son document ainsi d’indiquer les packages supplémentaires à télécharger ainsi que de leur configuration.

le préambule s’insère entre le début du document et la commande \begin{document}, il permet de définir les configurations globales du document, tel que la classe du document, les packages à utiliser et les métadonnées.

Voici un exemple simple

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
% Define document type and format
% available class :article, report, book, letter, beamer
\documentclass[twocolumn, a4paper, 12pt]{article}
\usepackage[left=0.5in, right=0.5in]{geometry}

% Use french babel
\usepackage{french}

% generate a lipsum paragraph
\usepackage{lipsum}

% Set the title and author
\title{\Huge Document sample}
\author{Bruno Adelé}
\date{5 mai 2024}

%allow underfull vbox (allow empty space at the bottom of the page
\raggedbottom

% Set the space between paragraphs
\parskip=5pt

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Document
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\maketitle

\lipsum[1-2]
\lipsum[6-7]

\end{document}
simple example
simple example (auto-generated with just doc-generate-tex-sample command)

Les sections

Les sections et sous-sections en LaTeX servent à organiser un document en parties et sous-parties, similaire à la structuration par titres sous Office. En outre, il est possible de générer une table des matières à l’aide de la commande \tableofcontents. De plus, il est possible d’inclure des sections non numérotées dans la table des matières en ajoutant un astérisque en suffixe (section*{Titre}).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
% Define document type and format
% available class :article, report, book, letter, beamer
\documentclass[a4paper, 12pt]{article}

\listfiles

% Use french babel
\usepackage{french}

% generate a lipsum paragraph
\usepackage{lipsum}

% Set the title and author
\title{\Huge Sections list}
\author{Bruno Adelé}
\date{}

%allow underfull vbox
\raggedbottom

% Set the space between paragraphs
\parskip=5pt


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Document
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\maketitle
\tableofcontents

\section{Section}
\lipsum[1][-2]

\subsection{Subsection}
\lipsum[2][-2]

\subsubsection{Subsubsection}
\lipsum[3][-2]

\subsubsection*{Section without counter}
\addcontentsline{toc}{section}{Section without counter}
\lipsum[4][-2]

\begin{appendix}
	\addtocontents{toc}{\setcounter{tocdepth}{2}}
	\section{Annexes}
	% \addcontentsline{toc}{section}{Annexes}
	\subsection{Liste des ilustrations}
	\listoffigures
	\listoftables
\end{appendix}

\end{document}
section example
section example (auto-generated with just doc-generate-tex-sample command)

Style de textes

Voici un éventail des styles de texte.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
% Define document type and format
% available class :article, report, book, letter, beamer
\documentclass[a4paper, 12pt]{article}

% Use french babel
\usepackage{french}

% generate a lipsum paragraph
\usepackage{lipsum}

% Set the title and author
\title{\Huge Sections list}
\author{Bruno Adelé}
\date{}

\newcommand{\showsize}[1]{\csname #1 \endcsname $\setminus$#1}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Document
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\section{Sizes}
\noindent \showsize{tiny}
\showsize{scriptsize}
\showsize{footnotesize}
\showsize{small}
\showsize{normalsize}
\showsize{large}
\showsize{Large}
\showsize{LARGE}
\showsize{huge}
\showsize{Huge}

\section{Styles}
\noindent \textnormal{textnormal} \emph{emph} \textrm{textrm} \textsf{textsf} \texttt{texttt} \textup{textup} \textit{textit} \textsl{textsl} \textsc{textsc} \\
\uppercase{uppercase} \textbf{textbf} \textmd{textmd}

\end{document}
textsize example
textsize example (auto-generated with just doc-generate-tex-sample command)

Quelques astuces

Debug

Dans le Préambule

draf, showframe

LaTeX est un outil qui vise à produire un formatage optimal pour les documents, mais lorsqu’il rencontre des règles qu’il ne peut pas appliquer, il génère des avertissements ou des erreurs. Cependant, ces messages d’erreur peuvent parfois être difficiles à comprendre. Pour résoudre ces problèmes, il est possible d’activer un mode de débogage qui fournit des informations supplémentaires pour comprendre et corriger les erreurs.

En ajoutant les options draft et showframe à la commande \documentclass, vous pouvez afficher les bordures des boîtes ainsi que mettre en noir les parties posant problème.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
% Define document type and format
% available class :article, report, book, letter, beamer
\documentclass[draft, showframe, twocolumn, a4paper, 12pt]{article}
\usepackage[left=0.5in, right=0.5in]{geometry}

% Use french babel
\usepackage{french}

% generate a lipsum paragraph
\usepackage{lipsum}

% Set the title and author
\title{\Huge Document sample}
\author{Bruno Adelé}
\date{5 mai 2024}

%allow underfull vbox (allow empty space at the bottom of the page
\raggedbottom

% Set the space between paragraphs
\parskip=5pt

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Document
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\maketitle

\lipsum[3-5]
\lipsum[12]


\end{document}

debug example
debug example (auto-generated with just doc-generate-tex-sample command)
listfiles

Pour lister les packages installés, il sufft d’ajouter la commande \listfiles dans le préambule, lors de la prochaine compilation via pdflatex vous aurez en sortie de commande la liste des fichiers.

 *File List*
 article.cls    2023/05/17 v1.4n Standard LaTeX document class
  size12.clo    2023/05/17 v1.4n Standard LaTeX file (size option)
  french.sty    2019/09/06 The e-french package /V6,11/
     msg.sty    2019/01/01 chargement de l'extension de localisation (V0.51).
latexsym.sty    1998/08/17 v2.2e Standard LaTeX package (lasy symbols)
fenglish.sty    2004/06/23 english interface for the french(le/pro) package
  lipsum.sty    2021-09-20 v2.7 150 paragraphs of Lorem Ipsum dummy text
l3keys2e.sty    2024-02-18 LaTeX2e option processing using LaTeX3 keys
   expl3.sty    2024-02-20 L3 programming layer (loader)
l3backend-pdftex.def    2024-02-20 L3 backend support: PDF output (pdfTeX)
  lipsum.ltd
   t1lmr.fd    2015/05/01 v1.6.1 Font defs for Latin Modern
  french.cfg
   ulasy.fd    1998/08/17 v2.2e LaTeX symbol font definitions
 ***********

Divers