====== LaTeX ======
* [[latex:tikz|TikZ]]
* [[latex:beamer|Beamer]]
* [[https://fr.wikipedia.org/wiki/Table_de_symboles_math%C3%A9matiques]]
* Rédaction de formules mathématiques: [[http://dalissier.perso.math.cnrs.fr/pdf/latex/chapitre4.pdf]]
* [[http://detexify.kirelabs.org/classify.html]]
* [[https://github.com/dspinellis/latex-advice|Advice for writing LaTeX documents]]
==== Symboles ====
* [[https://mirrors.ircam.fr/pub/CTAN/info/symbols/comprehensive/symbols-a4.pdf]]
* [[https://la-bibliotex.fr/2019/02/10/des-icones-a-infini-dans-latex/]]
Symbole "avertissement" ([[https://tex.stackexchange.com/questions/159669/how-to-print-a-warning-sign-triangle-with-exclamation-point|source]]) :
\usepackage{fourier}
\warning
Symbole antislash :
\backslash
\lstinline{\}
Intervalles d'entiers ([[https://tex.stackexchange.com/questions/304662/typesetting-an-integer-interval|source]]) :
\usepackage{stmaryrd}
l'intervalle $\llbracket 0, 100 \rrbracket$
==== Ne pas afficher la date dans le titre ====
[[https://tex.stackexchange.com/questions/2760/omitting-the-date-when-using-maketitle|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 ([[https://tex.stackexchange.com/questions/562763/footnote-without-reference/562767|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 ===
[[https://texfaq.org/FAQ-splitfoot|Source]]
\interfootnotelinepenalty=10000
==== Texte en exposant ====
May, 9\textsuperscript{th} 2020
==== Barrer du texte ====
[[https://fr.wikibooks.org/wiki/LaTeX/Mise_en_forme_du_texte_(avanc%C3%A9)#Mod%C3%A8les_de_polices_de_caract%C3%A8res|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 ([[https://stackoverflow.com/questions/51132189/styling-of-biblography-change-underline-to-italic-latex|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 ===
[[https://tex.stackexchange.com/questions/12373/how-to-change-the-space-between-the-itemize-items-in-latex|Source]]
\newlength{\mylistspace}
\setlength{\mylistspace}{1em}
\begin{itemize}
\setlength{\itemsep}{\mylistspace}
\item A
\item B
\end{itemize}
[[https://tex.stackexchange.com/a/109608|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 ===
* [[https://fr.overleaf.com/learn/latex/Lists]]
* [[https://tex.stackexchange.com/questions/170525/itemize-left-margin]]
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 ===
[[https://tex.stackexchange.com/questions/142/how-can-i-make-an-enumerate-list-start-at-something-other-than-1|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 ===
[[https://tex.stackexchange.com/questions/194426/split-itemize-into-multiple-columns|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 ====
* ''\tiny''
* ''\scriptsize''
* ''\footnotesize''
* ''\small''
* ''\normalsize''
* ''\large''
* ''\Large''
* ''\LARGE''
* ''\huge''
* ''\Huge''
Les mêmes sont disponibles pour Beamer, sans l'anti-slash.
==== Couleurs ====
* [[https://en.wikibooks.org/wiki/LaTeX/Colors]]
=== 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 ===
[[https://tex.stackexchange.com/questions/20640/how-to-add-border-for-an-image|source]]
\fcolorbox{black}{white}{\includegraphics[scale=0.5]{block-calc.png}}
=== Deux images côte à côte ===
[[https://tex.stackexchange.com/questions/5769/two-figures-side-by-side|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 ===
[[https://shantoroy.com/latex/add-subfig-in-latex/|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 ===
[[https://tex.stackexchange.com/questions/57418/crop-an-inserted-image|Source]]
\includegraphics[trim={5cm 0 0 0},clip,width=\textwidth]{example-image-a}
La syntaxe est ''trim={ }''.
=== 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 ===
[[https://tex.stackexchange.com/questions/386324/place-image-in-absolute-position-independently-from-text|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 ===
[[https://tex.stackexchange.com/questions/95207/how-to-center-a-specific-caption|Source]]
\captionsetup{justification=centering}
\caption{Order A\\\texttt{block:block}}
==== Utiliser la police Times New Roman ====
[[https://tex.stackexchange.com/questions/153168/how-to-set-document-font-to-times-new-roman-by-command|Source]]
\usepackage{mathptmx}
==== URLs ====
=== Faire des retours à la ligne dans les URL ===
[[https://www.developpez.net/forums/d1229223/autres-langages/autres-langages/latex/debuter/url-ligne-continue-marges/#post6723190|Source]]
\usepackage[hyphens]{url}
Coupe les URLs également au niveau des tirets.
=== Mettre un texte avec un lien web ===
* [[https://www.overleaf.com/learn/latex/Hyperlinks#Linking_web_addresses]]
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 ====
[[https://en.wikibooks.org/wiki/LaTeX/Text_Formatting#Hyphenation|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 ===
[[https://tex.stackexchange.com/questions/192769/how-do-i-refer-appendix-in-latex-so-as-to-display-a-or-b-in-my-paper|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 ===
[[https://www.overleaf.com/learn/latex/Cross_referencing_sections_and_equations#Referencing_sections_and_chapters|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 ====
* [[https://fr.wikibooks.org/wiki/LaTeX/Faire_des_tableaux]]
* http://www.tablesgenerator.com/
* [[https://tex.stackexchange.com/questions/166743/automatic-line-break-in-tabular]]
\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 ([[https://latex.org/forum/viewtopic.php?t=19674|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 ([[https://tex.stackexchange.com/questions/297564/why-is-my-table-before-the-section-title|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 ([[https://stackoverflow.com/questions/3068555/how-to-insert-manual-line-breaks-inside-latex-tables|source]]).
=== Préciser l'espace entre deux lignes de tableaux ===
[[https://tex.stackexchange.com/questions/26690/how-to-add-extra-spaces-between-rows-in-tabular-environment|Source]]
foo & bar \\[5mm]
foz & baz
[[https://tex.stackexchange.com/questions/31672/column-and-row-padding-in-tables|Source]]
% inside a cell, with content "stuff", adds a space above:
\rule{0pt}{2em}stuff
=== Deux tableaux côte-à-côte ===
[[https://tex.stackexchange.com/questions/2832/how-can-i-have-two-tables-side-by-side|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 ====
[[https://tex.stackexchange.com/questions/37343/how-can-i-force-a-hspace-at-the-beginning-of-a-line|Source]]
\texttt{int main()\\
\{\\
\phantom{x}\hspace{3ex}return 0;\\
\}\\}
==== Enlever l'alinéa au début d'un paragraphe ====
[[https://www.mathematex.fr/viewtopic.php?t=13443|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 :
* ''\!''
* rien, pas d'espace, coller les caractères
* ''\,''
* ''\:''
* ''\;''
* ''\ '' (un espace après l'antislash)
* ''\quad''
* ''\qquad''
==== Algorithmes ====
* https://distrib-coffee.ipsl.jussieu.fr/pub/mirrors/ctan/macros/latex/contrib/algorithmicx/algorithmicx.pdf
=== Ajouter une indentation ===
Utiliser ''\hskip\algorithmicindent'' le nombre de fois nécessaires au début de la ligne ([[https://tex.stackexchange.com/questions/33979/include-a-line-break-in-algorithmic-while-maintaining-indentation|source]]). Utiliser ''\par'' juste avant pour aller à la ligne.
=== Ajouter les entrées et sorties ===
Au début de l'algorithme ([[https://tex.stackexchange.com/questions/355937/how-to-add-input-and-output-before-algorithm-procedure|source]]) :
\hspace*{\algorithmicindent} \textbf{Input} \\
\hspace*{\algorithmicindent} \textbf{Output}
\begin{algorithmic}[1]
==== Listings de code ====
\usepackage{listings}
=== Avoir des accents ===
[[https://tex.stackexchange.com/questions/24528/having-problems-with-listings-and-utf-8-can-it-be-fixed|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 ===
[[https://tex.stackexchange.com/questions/105995/is-there-a-ready-solution-to-typeset-a-diff-file|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 ===
[[https://tex.stackexchange.com/questions/116534/lstlisting-line-wrapping/116572|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 ===
[[https://stackoverflow.com/questions/1304315/highlighting-a-chunk-of-code-within-a-lstlisting|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 ===
[[https://tex.stackexchange.com/questions/28229/extend-a-language-with-additional-keywords|Source]]
\lstset{
% ...
morekeywords={inline,restrict},
% ...
}
==== Aligner le texte à droite ====
Utiliser l'environnement ''flushright''.
==== Faux texte ====
* [[https://devmath.fr/informatique/lorem-ipsum-lipsum-latex/]]
\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 ([[https://tex.stackexchange.com/questions/425065/making-a-function-to-calculate-average|source]]) :
\def\middle#1#2{\fpeval{(#1+#2)/2}}
Puis :
\middle{1}{2}
Pour calculer un modulo ([[https://tex.stackexchange.com/questions/34424/how-do-i-calculate-n-modulo-3-in-latex|source]]) :
\newcommand{\modulo}[2]{%
(trunc(#1-(#2*trunc(#1/#2,0)),0))
}
\fpeval{\modulo[5}{3}}
=== Conditions ===
[[https://tex.stackexchange.com/a/578797|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}
[[https://tex.stackexchange.com/questions/75485/how-to-create-a-conditional-which-checks-if-one-or-another-condition-is-true-in|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 ([[https://tex.stackexchange.com/questions/252067/question-in-using-foreach-to-iterate-over-lists|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 ===
* [[https://latexref.xyz/_005craggedbottom.html]]
* [[https://tex.stackexchange.com/questions/65355/flushbottom-vs-raggedbottom]]
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 ===
[[https://www.overleaf.com/learn/latex/Table_of_contents|Source]]
\addcontentsline{toc}{section}{Introduction}
\section*{Introduction}
=== Changer le titre de la table des matières ===
[[https://tex.stackexchange.com/questions/28516/how-to-change-the-title-of-toc|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 ====
* [[https://www.xm1math.net/doculatex/glossaries.html]]
* [[https://fr.overleaf.com/learn/latex/Glossaries]]
\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 ====
* [[https://www.tuteurs.ens.fr/logiciels/latex/bibtex.html]]
* [[https://fr.wikibooks.org/wiki/LaTeX/Gestion_de_la_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 ===
[[https://stackoverflow.com/a/144640|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 ([[https://tex.stackexchange.com/questions/17445/how-can-i-change-the-references-to-reference-in-the-thebibliography-environm|source]]).
\renewcommand\bibname{References}
% affichage de bibliographie
==== En-tête et pied de page personnalisés ====
* [[https://www.overleaf.com/learn/latex/Headers_and_footers]]
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\rhead{Version préliminaire}
\cfoot{\thepage}
=== Ne pas mettre les titres en majuscules ===
Notamment //Contents// pour le sommaire ([[https://tex.stackexchange.com/questions/366049/heading-not-in-capital-letter|source]]) :
\fancyhead[RE]{\slshape \nouppercase{\rightmark}}
\fancyhead[LO]{\slshape \nouppercase{\leftmark}}
==== Changer les marges pour une portion du document ====
[[https://stackoverflow.com/questions/1670463/latex-change-margins-of-only-a-few-pages|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 ====
[[https://tex.stackexchange.com/questions/42329/displaying-page-construction-guides|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 ([[https://texfaq.org/FAQ-nopagebrk|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 ====
* [[https://blog.madrzejewski.com/creer-cv-elegant-latex-moderncv/]]
* [[https://lataix-sebastien.developpez.com/tutoriels/latex/tutoriel-moderncv/]]
* https://www.overleaf.com/latex/examples/curriculum-vitae-for-researchers/jmrscnymyfps
* [[https://texblog.org/2012/04/25/writing-a-cv-in-latex/]]
* https://mirror.ibcp.fr/pub/CTAN/macros/latex/contrib/moderncv/manual/moderncv_userguide.pdf
Pour ''moderncv'', il faut installer le paquet ''texlive-fonts-extra'' pour avoir les icônes FontAwesome.
==== Corriger des documents avec Aspell ====
[[https://dbader.org/blog/spell-checking-latex-documents-with-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 ====
* [[https://blog.dorian-depriester.fr/latex/rediger-des-sujets-dexamen-avec-latex|Rédiger des sujets d’examen avec LaTeX]]
* [[https://www.overleaf.com/learn/latex/Typesetting_exams_in_LaTeX|Typesetting exams in LaTeX]]
* https://math.mit.edu/~psh/exam/examdoc.pdf
* [[http://agregationchimie.free.fr/exam.php|Créer un examen avec la classe exam]]
* [[http://www.cuk.ch/articles/13645/|La classe exam, ou comment faire un sujet de contrôle scolaire avec LaTeX]]
=== Changer le début de numérotation des questions ===
[[https://tex.stackexchange.com/questions/560131/change-question-numbering-in-exam-document-class|Source]]
\begin{questions}
\setcounter{question}{n-1}
\question Foo?
\end{questions}