latex:accueil

Ceci est une ancienne révision du document !


LaTeX

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
May, 9\textsuperscript{th} 2020

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).

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}
\setlength{\parskip}{0.2cm} % définit l'espacement entre chaque paragraphe

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}
  • \tiny
  • \scriptsize
  • \footnotesize
  • \small
  • \normalsize
  • \large
  • \Large
  • \LARGE
  • \huge
  • \Huge

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

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.

\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}}

Source

\usepackage{mathptmx}

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,
}

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.

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

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}.
\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

Sans qu'ils soient convertis en un long tiret:

{-}{-}

Source

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

Source

{\noindent
Ligne 1
}

Espaces horizontaux

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

Du plus petit au plus grand :

  • \!
  • rien, pas d'espace, coller les caractères
  • \,
  • \:
  • \;
  • \ (un espace après l'antislash)
  • \quad
  • \qquad

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]
\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},
  % ...
}

Utiliser l'environnement flushright.

\if 0
commente un large bloc de texte
\fi

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}; }

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}

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

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}
\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

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
\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}}

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

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}
\newpage
\clearpage  % fonctionne aussi dans le cas du double-colonne, s'il y a des flottants à positionnner

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
\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

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}

Source

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

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

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

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

Installer le paquet rubber.

rubber --pdf file.tex

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

Avec la commande texcount.

Changer le début de numérotation des questions

Source

\begin{questions}
    \setcounter{question}{n-1}
    \question Foo?
\end{questions}
  • latex/accueil.1750843496.txt.gz
  • Dernière modification : 2025/06/25 11:24
  • de phsw