Table des matières

LaTeX

Symboles

Symbole “avertissement” (source) :

\usepackage{fourier}
 
\warning

Symbole antislash :

\backslash
\lstinline{\}

Intervalles d'entiers (source) :

\usepackage{stmaryrd}
 
l'intervalle $\llbracket 0, 100 \rrbracket$

Ne pas afficher la date dans le titre

Source

\date{}

Notes de bas de page

Les placer en bas de la page

Utiliser le paquet footmisc:

\usepackage[bottom]{footmisc}

Sans numéro

Créer une note de bas de page sans référence dans le texte (source):

% Déclaration de la commande \freefootnote:
\let\svthefootnote\thefootnote
\newcommand\freefootnote[1]{%
  \let\thefootnote\relax%
  \footnotetext{#1}%
  \let\thefootnote\svthefootnote%
}
 
% Utilisation
\freefootnote{Foo}

Empêcher les notes de s'étendre sur plusieurs pages

Source

\interfootnotelinepenalty=10000

Texte en exposant

May, 9\textsuperscript{th} 2020

Barrer du texte

Source

\usepackage{ulem}
 
Du texte \sout{barré}.

Il faut utiliser

\usepackage[normalem]{ulem}

sinon la bibliographie souligne les titres au lieu de les mettre en italique (source).

Faire un cadre coloré

Cadre gris arrondi

\usepackage[most]{tcolorbox}
 
\newenvironment{fondgris}{
\begin{tcolorbox}[colback=black!7!white,colframe=black!10!white]}
{\end{tcolorbox}}
 
% ...
 
\begin{fondgris}
machin
\end{fondgris}

Mettre un fond aux figures

\usepackage{mdframed}
 
\begin{figure}
    \begin{mdframed}[backgroundcolor=green!10,linecolor=white]
        \centering
        \includegraphics[width=\linewidth]{img.png}
        \caption{Légende}
    \end{mdframed}
\end{figure}

Définir l'espacement entre les paragraphes

\setlength{\parskip}{0.2cm} % définit l'espacement entre chaque paragraphe

Listes

Changer l'espacement dans les listes

Source

\newlength{\mylistspace}
\setlength{\mylistspace}{1em}
 
\begin{itemize}
	\setlength{\itemsep}{\mylistspace}
	\item A
	\item B
\end{itemize}

Source

\usepackage{enumitem}
\setlist{nolistsep} % peut être placé au début du document
\begin{itemize}[noitemsep]
    \item one
    \item two
    \item three
\end{itemize}
 
% ou sans le \setlist :
\begin{itemize}[noitemsep,nolistsep]
  \item foo
  \item bar
  \item baz
\end{itemize}

Changer le retrait des listes

Pour les listes de descriptions :

\setlist[description]{leftmargin=5mm}

Changer l'aspect des puces

\usepackage{enumitem}
\setlist[itemize]{label=\textbullet}

Démarrer une liste à un nombre particulier

Source

\begin{enumerate}
  \setcounter{enumi}{4} % 4 pour démarrer la liste à 5
  \item fifth element
\end{enumerate}

Répartir les éléments sur plusieurs colonnes

Source

\usepackage{multicol}
 
\begin{multicols}{2}
    \begin{itemize}
        \item item 1
        \item item 2
        \item item 3
        \item item 4
        \item item 5
        \item item 6
    \end{itemize}
\end{multicols}

Tailles de texte

Les mêmes sont disponibles pour Beamer, sans l'anti-slash.

Couleurs

Changer la couleur d'arrière-plan du texte

https://tex.stackexchange.com/a/319000

\colorbox{green}{text avec du vert derrière}

Changer la couleur d'une puce d'une liste

https://www.latex4technics.com/?note=y99

\begin{itemize}
  \item Noir
  \item[\textcolor{blue}{\textbullet}] Bleu
  \item Noir
\end{itemize}

Définir des couleurs RGB

\definecolor{mycolor}{rgb}{1,0.2,0.3} % rgb en minuscules : les valeurs sont entre 0 et 1
\definecolor{mycolor}{RGB}{255,51,76} % rgb en majuscules : les valeurs sont entre 0 et 255

Ces couleurs peuvent aussi être utilisées dans des figures Tikz.

Inclure une image

\begin{figure}[h]
    \centering
    \includegraphics[scale=0.7]{img.pdf}
    \caption{Légende}
    \label{fig:label}
\end{figure}

Ajouter une bordure à l'image

source

\fcolorbox{black}{white}{\includegraphics[scale=0.5]{block-calc.png}}

Deux images côte à côte

Source

\begin{figure}[h]
    \centering
    \begin{minipage}[b]{0.45\textwidth}
        \centering
        \includegraphics{...}
	\caption{Algorithme naïf de collective}
    \label{fig:collective-dummy}
    \end{minipage}\hfill
    \begin{minipage}[b]{0.45\textwidth}
        \centering
        \includegraphics{...}
	\caption{Algorithme de collective avec arbre binomial}
    \label{fig:collective-binomial}
    \end{minipage}
\end{figure}

Le [b] des minipages permet de les aligner le bord bas.

4 images en mosaïque, sous-figures

Source

\usepackage{caption}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\begin{subfigure}{.5\textwidth}
  \centering
  % include first image
  \includegraphics[width=.8\linewidth]{log_demo1.png}  
  \caption{Put your sub-caption here}
  \label{fig:sub-first}
\end{subfigure}
\begin{subfigure}{.5\textwidth}
  \centering
  % include second image
  \includegraphics[width=.8\linewidth]{log_demo2.png}  
  \caption{Put your sub-caption here}
  \label{fig:sub-second}
\end{subfigure}
\newline % no empty line before or after the \newline
\begin{subfigure}{.5\textwidth}
  \centering
  % include third image
  \includegraphics[width=.8\linewidth]{log_demo1.png}  
  \caption{Put your sub-caption here}
  \label{fig:sub-third}
\end{subfigure}
\begin{subfigure}{.5\textwidth}
  \centering
  % include fourth image
  \includegraphics[width=.8\linewidth]{log_demo2.png}  
  \caption{Put your sub-caption here}
  \label{fig:sub-fourth}
\end{subfigure}
\caption{Put your caption here}
\label{fig:fig}
\end{figure}

Une image à gauche et deux verticalement à droite: https://tex.stackexchange.com/a/66960

Rogner une image

Source

\includegraphics[trim={5cm 0 0 0},clip,width=\textwidth]{example-image-a}

La syntaxe est trim={<left> <lower> <right> <upper>}.

Changer la légende pour la liste des figures

Il est possible de fournir une légende alternative, qui apparaîtra dans la liste des figures :

\caption[Dans la liste des figures]{Sous la figure}

Positionner de façon absolue

Source

\usepackage{tikz}
\usetikzlibrary{positioning}
 
\begin{tikzpicture}[remember picture,overlay,shift={(current page.north east)}]
\node[anchor=north east,xshift=-1cm,yshift=-1cm]{\includegraphics[width=1cm]{example-image-a}};
\end{tikzpicture}

Centrer la légende

Source

\captionsetup{justification=centering}
\caption{Order A\\\texttt{block:block}}

Utiliser la police Times New Roman

Source

\usepackage{mathptmx}

URLs

Faire des retours à la ligne dans les URL

Source

\usepackage[hyphens]{url}

Coupe les URLs également au niveau des tirets.

Mettre un texte avec un lien web

Voici un \href{https://perdu.com}{site web}

Pour colorer ces liens :

\usepackage{hyperref}
\hypersetup{
    colorlinks=true,   
    urlcolor=cyan,
}

Préciser comment couper les mots pour les retours à la ligne

Source

\hyphenation{op-tical net-works semi-conduc-tor}
% ou juste:
op\-tical

La commande \sloppy, placée avant \begin{document}, indique à LaTeX qu'il peut être moins strict sur où et quand couper les mots. Permet donc de forcer parfois la coupe d'un mot, quand par défaut il ne le fait pas.

Utiliser Babel en français

Sous Debian, installer le paquet texlive-babel-french (ne semble être présent que dans sid…) ou texlive-lang-french.

Références

Aux annexes

Source

This is a reference to the graph appendix \ref{appendix:graph}
 
\begin{appendices}
 
\section{Graph Appendix}
\label{appendix:graph}
This is the graph appendix...
 
\section{Another Appendix}
 
\end{appendices}

Aux sections

Source

\section{Introduction} \label{introduction}
This is an introductory paragraph with some dummy text. This section 
will be later referenced.
 
 
As mentioned in section \ref{introduction}, different elements can be 
referenced within a document

La page d'une référence

La \figurename~\ref{fig:foo} est sur la page \pageref{fig:foo}.

Faire des tableaux

\usepackage{tabularx}
\begin{tabularx}{\textwidth}{|l|X|}
Use Case Navn:          & Opret Server \\
Scenarie:               & At oprette en server med bestemte regler som tillader folk at spille sammen. More Text more text More Text \\
\end{tabularx}

Le X (et donc le paquet tabularx) permet de faire aller à la ligne le texte qui ne rentre pas dans la largeur des cellules.

Centrer le tableau

Sur toute la largeur de la page, en le faisant déborder de façon égale dans les marges à gauche et à droite (source) :

\begin{table}
  \caption{Table caption}
  \makebox[\linewidth]{
  \begin{tabularx}{6in}{|X|X|X|X|}\hline
    % ...
  \end{tabularx}
  }
\end{table}

Forcer l'emplacement du tableau

Peut être utile pour éviter qu'un tableau ne se retrouve avant le titre de sa section, par exemple (source) :

\begin{table}[H]
% ...
\end{table}

L'utilisation de \clearpage peut aussi aider.

Forcer le retour à la ligne dans une cellule

\usepackage{makecell}
& \makecell{retour\\à\\ligne} &

On peut préciser l'alignement avec \makecell[l]{}, par exemple.

Si la colonne a un alignement p{3cm}, on peut utiliser \newline au lieu de \\ dans la cellule (source).

Préciser l'espace entre deux lignes de tableaux

Source

foo & bar \\[5mm]
foz & baz

Source

% inside a cell, with content "stuff", adds a space above:
\rule{0pt}{2em}stuff

Deux tableaux côte-à-côte

Source

\begin{table}
  \begin{minipage}[t]{0.4\textwidth}
    \begin{center}
      \begin{tabular}{|c|c|}
        % ...
      \end{tabular}
      \caption{Caption 1.}
      \label{tab:label1}
    \end{center}
  \end{minipage}
  \hfill
  \begin{minipage}[t]{0.55\textwidth}
    \begin{center}
      \begin{tabular}{|c|c|c|}
         % ...
      \end{tabular}
      \caption{Caption 2.}
      \label{tab:label2}
    \end{center}
  \end{minipage}
\end{table}

Changer la couleur de fond d'une cellule

https://tex.stackexchange.com/questions/50349/color-only-a-cell-of-a-table

\usepackage{colortbl}
 
&\cellcolor{blue!25}0 & ... \\

Ajouter deux tirets à la suite

Sans qu'ils soient convertis en un long tiret:

{-}{-}

Ajouter un espace au début d'une ligne

Source

\texttt{int main()\\
\{\\
\phantom{x}\hspace{3ex}return 0;\\
\}\\}

Enlever l'alinéa au début d'un paragraphe

Source

{\noindent
Ligne 1
}

Formules mathématiques

Espaces horizontaux

https://fr.overleaf.com/learn/latex/Spacing_in_math_mode

Du plus petit au plus grand :

Algorithmes

Ajouter une indentation

Utiliser \hskip\algorithmicindent le nombre de fois nécessaires au début de la ligne (source). Utiliser \par juste avant pour aller à la ligne.

Ajouter les entrées et sorties

Au début de l'algorithme (source) :

\hspace*{\algorithmicindent} \textbf{Input} \\
\hspace*{\algorithmicindent} \textbf{Output} 
\begin{algorithmic}[1]

Listings de code

\usepackage{listings}

Avoir des accents

Source

\lstset{
    inputencoding=utf8,
    extendedchars=true,
    literate={á}{{\'a}}1 {ã}{{\~a}}1 {é}{{\'e}}1,
}

Voir https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings#Encoding_issue

Changer de langage

Définir pour chaque langage:

\lstdefinestyle{ruby-style}{
  belowcaptionskip=1\baselineskip,
  breaklines=true,
  frame=L,/usr/lib64/openmpi/
  xleftmargin=\parindent,
  language=Ruby,
  showstringspaces=false,
  basicstyle=\footnotesize\ttfamily,
  keywordstyle=\bfseries\color{green!40!black},
  commentstyle=\itshape\color{purple!40!black},
  identifierstyle=\color{blue},
  stringstyle=/usr/lib64/openmpi/\color{orange},
}

Utiliser ensuite:

\begin{lstlisting}[style=ruby-style]
config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
\end{lstlisting}

Mettre en forme un diff

Source

\usepackage[svgnames]{xcolor}
  \definecolor{diffstart}{named}{Grey}
  \definecolor{diffincl}{named}{Green}
  \definecolor{diffrem}{named}{OrangeRed}
 
\usepackage{listings}
  \lstdefinelanguage{diff}{
    basicstyle=\ttfamily\small,
    morecomment=[f][\color{diffstart}]{@@},
    morecomment=[f][\color{diffincl}]{+\ },
    morecomment=[f][\color{diffrem}]{-\ },
  }
 
\begin{lstlisting}[language=diff]
@@ -85,8 +85,8 @@
-    foo
+    bar
\end{lstlisting}

Faire des retours à la ligne

Source

\documentclass{article}
\usepackage{lmodern}  % for bold teletype font
\usepackage{amsmath}  % for \hookrightarrow
\usepackage{xcolor}   % for \textcolor
\usepackage{listings}
\lstset{
  basicstyle=\ttfamily,
  columns=fullflexible,
  frame=single,
  breaklines=true,
  postbreak=\mbox{\textcolor{red}{$\hookrightarrow$}\space}, % permet d'avoir une flèche indiquant le retour à la ligne
}
\begin{document}
\begin{lstlisting}[language=java]
public class MeasureStationControllerV0Test {   
        MeasureStationControllerV0 controller;  
        MeasureStation ms = new MeasureStation();   
        MeasureStationConfiguration config = new MeasureStationConfiguration();     
        DataServer dataserver = new DataServer();
\end{lstlisting}
\end{document}

Préciser à partir de quelle ligne inclure un fichier

\lstinputlisting[firstline=3]{codes/difference_or.c}

Surligner du code

Source

\usetikzlibrary{tikzmark}
 
% Command to place a TikZ anchor at the current position
\newcommand{\mytikzmark}[1]{%
  \tikz[overlay,remember picture,baseline] \coordinate (#1) at (0,0) {};}
 
\newcommand{\highlight}[2]{
  \draw[draw=none,fill=yellow,opacity=0.3] ([xshift=-2pt,yshift=9pt]#1) rectangle ([xshift=2pt,yshift=-4pt]#2);
}
 
\begin{lstlisting}[escapechar=@]
@\mytikzmark{hl1Start}@int est_pair(int n);
int est_impair(int n);@\mytikzmark{hl2End}@
 
// foo
\end{lstlisting}
 
\begin{tikzpicture}[remember picture, overlay]
   \highlight{hl1Start}{hl2End}
\end{tikzpicture}

Ajouter des mots-clés au langage

Source

\lstset{
  % ...
  morekeywords={inline,restrict},
  % ...
}

Aligner le texte à droite

Utiliser l'environnement flushright.

Faux texte

\usepackage{lipsum}
 
\lipsum

Commentaires

\if 0
commente un large bloc de texte
\fi

Programmation

Définir des variables

\def\plotScale{1}

Puis on utilise simplement \plotScale à la place de 1.

Calculs

Le paquet xfp permet de faire des calculs avec la commande \fpeval{calcul}.

Moyenne de deux termes (source) :

\def\middle#1#2{\fpeval{(#1+#2)/2}}

Puis :

\middle{1}{2}

Pour calculer un modulo (source) :

\newcommand{\modulo}[2]{%
  (trunc(#1-(#2*trunc(#1/#2,0)),0))
}
\fpeval{\modulo[5}{3}}

Conditions

Source

\documentclass{article}
 
\newif\iflong
\longtrue % switch to false in short version
\newcommand{\inLongVersion}[1]{\iflong #1\fi}
 
\begin{document}
 
Overhead the albatross hangs motionless upon the air. %
\inLongVersion{And deep beneath the rolling waves in labyrinths of coral caves.}
 
\end{document}

Source

\ifnum0\newrank>3
    foo
\else
    bar
\fi

Pour faire un switch :

\newcommand\commColor[1]{%
  \ifcase\fpeval{floor(#1/4)}%
    cyan%
  \or%
    magenta%
  \or%
    teal!60%
  \or%
    violet!60%
  \else%
    black%
  \fi%
}

Boucles

Il est possible d'itérer sur des listes (source):

\usepackage{pgffor}
 
\foreach \x in {0.05,0.135,0.2275,0.315,0.40,0.49,0.575,0.7225,0.8075,0.895,0.996} { \draw[green,ultra thick,dashed] (\x,0.01)-- (\x,0.95); }

Également de générer des séquences:

\foreach \x in {0,1,...,9} { \node [anchor=north] at (\x/10,0) {0.\x}; }

Numéros de page

Cacher le numéro de page

Sur une page :

\thispagestyle{empty}

Sur toutes les pages :

\pagestyle{empty}

Redéfinir le compteur de page

Utile pour changer le numéro de départ de la numérotation:

\setcounter{page}{2}

Espaces verticaux

Manuellement

Fixes :

\vspace{0.5cm}

Proportionnels :

\vspace*{\stretch{1}}
% ou
\vfill

Automatiquement

Pour laisser LaTeX équilibrer l'utilisation verticale des pages pour que toutes les pages se terminent à la même hauteur :

% avant le \begin{document}
\flushbottom

Pour, au contraire, ne pas ajouter d'espaces entre les paragraphes pour tenter d'égaliser :

% avant le \begin{document}
\raggedbottom

Tables des matières

Créer une table des matières

\usepackage[colorlinks,linkcolor=purple]{hyperref} % pour avoir des liens dans la table des matières
 
\tableofcontents

Ajouter un élément dans la table des matières

Source

\addcontentsline{toc}{section}{Introduction}
\section*{Introduction}

Changer le titre de la table des matières

Source

\renewcommand{\contentsname}{Sommaire}

Utiliser un titre différent dans la table des matières

\chapter[Titre dans la table des matières]{Titre dans la page du chapitre}

Glossaires

\usepackage[colorlinks,urlcolor=magenta,linkcolor=purple,citecolor=red]{hyperref}
\usepackage[toc,acronym]{glossaries} % à garder après hyperref pour avoir des liens vers le glossaire
 
\makeglossaries
\begin{document}
% placer la définition des acronymes dans un fichier acronymes.tex
\newacronym{espace}{ESPACE}{Espace Supplémentaire Pour Améliorer la Cohérence des Éléments}
\newacronym{faq}{FAQ}{Foire Aux Questions}
 
Je vais parler de l'\gls{espace}. Je vais encore évoquer l'\gls{espace}.
 
Pour ne pas afficher la définition la première fois : \acrshort{faq}
 
\printglossaries
\end{document}

Exemple de règles Makefile pour compiler tout ça :

main.glo: acronymes.tex
	pdflatex main.tex
	makeglossaries main
 
main.pdf: *.tex *.bib main.glo
	rubber --unsafe --pdf main.tex

Bibliographie

Faire apparaître la bibliographie:

\usepackage[nottoc, notlof, notlot]{tocbibind}
\bibliographystyle{plain}
\bibliography{bibliography} % fichier bibliography.bib

Compilation:

pdflatex fichier.tex
bibtex fichier # fichier.aux
pdflatex fichier.tex # 2 fois

Imposer les majuscules

Mettre le texte entre accolades.

Citer une URL

@misc{leLabel,
    author={l'auteur},
    title={le titre du site},
    year={2009},
    howpublished="\url{http://leSite.com}"
}

Changer l'ordre de numérotation

Source

Par défaut, LaTeX classe les références par ordre alphabétique.

Pour utiliser l'ordre d'apparition des références dans le document, il faut utiliser:

\bibliographystyle{unsrt}

Changer le titre de la bibliographie

Visible notamment dans les en-têtes (source).

\renewcommand\bibname{References}
% affichage de bibliographie

En-tête et pied de page personnalisés

\usepackage{fancyhdr}
 
\pagestyle{fancy}
\fancyhf{}
\rhead{Version préliminaire}
\cfoot{\thepage}

Ne pas mettre les titres en majuscules

Notamment Contents pour le sommaire (source) :

\fancyhead[RE]{\slshape \nouppercase{\rightmark}}
\fancyhead[LO]{\slshape \nouppercase{\leftmark}}

Changer les marges pour une portion du document

Source

\newgeometry{left=3cm,bottom=0.1cm} % écrase toutes les marges définies, même si une seule valeur change, il faut tout réécrire
% section avec des marges différentes
\restoregeometry

Visualiser les marges du document

Source

\usepackage[showframe]{geometry}

Pour ne pas avoir à modifier les options du paquet geometry, il est aussi possible d'utiliser directement le paquet éponyme :

\usepackage{showframe}

Aller à une nouvelle page

\newpage
\clearpage  % fonctionne aussi dans le cas du double-colonne, s'il y a des flottants à positionnner

Garder deux éléments sur la même page

Pour par exemple empêcher que deux paragraphes se retrouvent sur deux pages distinctes (source) :

\needspace{4\baselineskip}
% les 4 lignes suivantes seront toujours groupées sur une même page

Créer une commande personnalisée

\usepackage{xcolor}
 
% avant \begin{document}:
\newcommand\todo[1]{\textcolor{red}{TODO: #1}}
 
% utilisation:
\todo{à faire !}
 
 
\usepackage{xspace}
\newcommand{\cholesky}{\textsc{Cholesky}\xspace} % \xspace to add a space after the command \cholesky

Créer un environnement personnalisé

https://www.overleaf.com/learn/latex/Environments

\newenvironment{bgfigure}[1]{\begin{figure}\begin{mdframed}[backgroundcolor=#1,linecolor=white]}{\end{mdframed}\end{figure}}
 
% utilisation:
\begin{bgfigure}{green!10}
    % contenu
\end{bgfigure}

Faire un CV

Pour moderncv, il faut installer le paquet texlive-fonts-extra pour avoir les icônes FontAwesome.

Corriger des documents avec Aspell

Source

find . -name "*.tex" -exec aspell --lang=fr --mode=tex check "{}" \;

Autre correcteur : https://languagetool.org/fr/dev

Inclure un PDF

\usepackage{pdfpages}
 
\includepdf[pages=-]{../poster/poster.pdf} % inclut toutes les pages du PDF

rubber

Outil pour facilement compiler tout un fichier LaTeX (aussi avec BibTeX !) en une commande.

Installer le paquet rubber.

rubber --pdf file.tex

latexdiff

Permet de visualiser les différence entre deux versions d'un document LaTeX. Commande à lancer pour tous les fichiers sources constituant un document LaTeX (il ne suffit pas de l'exécuter sur le fichier principal).

Pour MacOS:

for f in *.tex; do /Library/TeX/Root/bin/x86_64-darwin/latexdiff --encoding=utf8 -c "PICTUREENV=(?:picture|tikzpicture|DIFnomarkup)[\w\d*@]*" $f ../../v01/report/$f > ../../diff/report/$f; done;

L'option PICTUREENV permet de ne pas chercher les différences dans les environnements TikZ.

Avec un gestionnaire de version:

latexdiff-vc -r 1c70fb4 rr.tex

Compter le nombre de mots

Avec la commande texcount.

Classe examen

Changer le début de numérotation des questions

Source

\begin{questions}
    \setcounter{question}{n-1}
    \question Foo?
\end{questions}