Ceci est une ancienne révision du document !
LaTeX
- Rédaction de formules mathématiques: http://dalissier.perso.math.cnrs.fr/pdf/latex/chapitre4.pdf
Ne pas afficher la date dans le titre
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
\interfootnotelinepenalty=10000
Texte en exposant
May, 9\textsuperscript{th} 2020
Barrer du texte
\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
Listes
Changer l'espacement dans les listes
\newlength{\mylistspace} \setlength{\mylistspace}{1em} \begin{itemize} \setlength{\itemsep}{\mylistspace} \item A \item B \end{itemize}
\usepackage{enumitem} \setlist{nolistsep} % peut être placé au début du document \begin{itemize}[noitemsep] \item one \item two \item three \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
Répartir les éléments sur plusieurs colonnes
\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
\tiny\scriptsize\footnotesize\small\normalsize\large\Large\LARGE\huge\Huge
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
\fcolorbox{black}{white}{\includegraphics[scale=0.5]{block-calc.png}}
Deux images côte à côte
\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
\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
\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
\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
Utiliser la police Times New Roman
\usepackage{mathptmx}
URLs
Faire des retours à la ligne dans les URL
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
\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
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
\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
foo & bar \\[5mm] foz & baz
% inside a cell, with content "stuff", adds a space above: \rule{0pt}{2em}stuff
Deux tableaux côte-à-côte
\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}
Ajouter deux tirets à la suite
Sans qu'ils soient convertis en un long tiret:
{-}{-}
Ajouter un espace au début d'une ligne
Formules mathématiques
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
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
\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, 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=\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
\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
\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}
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
\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}
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}
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
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
Changer le titre de la table des matières
\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
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
\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
\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
find . -name "*.tex" -exec aspell --lang=fr --mode=tex check "{}" \;
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.