Mémo LaTeX

Nicolas Mesnier

Mis à jour le 25/02/2023.

On suppose que si vous vous retrouvez ici, vous êtes conquis par la nécessité d’éditer vos documents avec LaTeX et nous ne discuterons donc pas ce choix puisque nous le partageons. De même, il n’est point question ici de distribution (TeXlive, off course!) ou d’installation sur votre machine. Ici, on rappelle le principe de base de l’édition de documents en LaTeX, puis on présente par l’exemple, quelques éléments pratiques pour débuter. Évidemment, rien ne saurait remplacer les documentations officielles ni celles des différents paquets, mais on donne ici l’idée d’aller les consulter. Outre un certain ennui, les moins débutants pourraient trouver, au fil du texte, quelques astuces.

Introduction

Contrairement aux logiciels WYSIWYG, LaTeX est un langage compilé qui, à partir d’un simple fichier texte auquel on donne l’extension .tex, permet de produire des documents postscript (PS) ou PDF. L’usage de pdflatex tant à se généraliser et sera le seul présenté ici.

Comme toute approche moderne d’édition et de typographie, le fond et la forme sont dissociés, c’est-à-dire que la rédaction du texte se fait sur un fichier texte qui ne ressemble pas au fichier produit par compilation. Le choix de la mise en forme se fait avec des balises, le symbole distinguant une commande TeX ou LaTeX étant le backslash « \ ».

B.A.–BA

Un fichier LaTeX est globalement constitué de :

Il existe en LaTeX dix caractères spéciaux :

\ début de commande (caractère d’échappement)
% début de commentaire
$ mode mathématique
& alignement de tableau
# paramètre de macro
^ exposant (mode math)
_ indice (mode math)
{...} groupe
~ espace insécable

À partir de ce point, quelques trucs qu’il est indispensable de connaître :

Préambule

classe

de document

\documentclass[a4paper,10pt,twoside]{article}

Il existe une multitude de classes LaTeX. Les classes standard sont article, report et book. Les options de la classe choisie sont précisées entre crochets et peuvent être parmi les suivantes :

Format de papier a4paper, a3paper, a5paper
Attention US letter par défaut!
Taille du texte 10pt, 11pt ou 12pt
Page de titre titlepage (notitlepage par défaut)
Recto-verso twoside (oneside par défaut)
Numéro d’équation leqno (reqno à droite par défaut)
Brouillon (ou pas) draft (ou final)
encodage

du fichier TeX

\usepackage[utf8]{inputenc}

permet de gérer les accents dans le fichier source. Merci de toujours utiliser l’UTF-8 !

écrire en français

en respectant les règles de typographie

\usepackage[french]{babel} % french ou francais sont équivalents

et donc respecter les espaces :

espace avant signe espace après
non . (final) justifiante
non . (abréviatif) justifiante
non , justifiante
insécable : justifiante
fine insécable ; justifiante
fine insécable ! justifiante
fine insécable ? justifiante
justifiante « insécable
insécable » justifiante
justifiante (, [ ou { non
non ), ] ou } justifiante
justifiante — (ouvre une incise) insécable
insécable — (ferme une incise) justifiante

En LaTeX, une espace (n.f.) insécable s’écrit ~, par exemple :

D'après l'équation~(4), 120~manifestants ont trouvé le numéro
de téléphone (01~02~03~04~05) de Mme~\bsc{Michu}.

Le paquet babel arrive avec quelques commandes comme :

Petites capitales \bsc{Exemple} \text{\bsc{Exemple}}
Guillemets \og, \fg{} \text{\og} , \text{\fg{}}
Exposant \up{2}, 1\ier{}, 2\ieme{} \text{\up{2}} , \text{1\ier{}} , \text{2\ieme{}}
1\iers{}, 1\ieres{}, 2\iemes{} \text{1\iers{}} , \text{1\ieres{}} , \text{2\iemes{}}
Numéro \no, \No, \nos, \Nos \text{\no} , \text{\No} , \text{\nos} , \text{\Nos}
Énumération \primo, \secundo, \tertio, \quarto \text{\primo} , \text{\secundo} , \text{\tertio} , \text{\quarto}
\FrenchEnumerate{8} \text{\FrenchEnumerate{8}}
Caractère degrés 40\degres{}C \text{40\degres{}C}

En chargeant le paquet numprint après le paquet babel, il vient une commande \nombre qui permet de formatter correctement les nombres, avec les décimales collées à la virgule et les milliers séparés d’une fine insécable ; par exemple :

\usepackage[autolanguage]{numprint}
\nombre{123456,78}

qui donne :

\begin{minipage}{150mm} \nombre{123456,78} \end{minipage}

polices de caractères

et microtypographie

\usepackage[T1]{fontenc}             % format de polices du PDF
\usepackage{textcomp}                % caractères additionnels
\usepackage{lmodern}                 % polices de caractères
\usepackage[babel,final]{microtype}  % gestion microtypographique
\DeclareMicrotypeAlias{lmr}{cmr}     % \- adaptée au lmodern

Il existe une multitude de polices de caractères utilisables mais toutes n’ont pas un support mathématique complet. À l’usage le jeu Latin Modern est celui dont on se lasse le moins.

Voir The LaTeX Font Catalogue pour une liste exhaustive des polices utilisables ou le guide des polices mathématiques libres (de 2006, en anglais). On donne dans la section polices de caractères quelques exemples.

  1. Écriture inclusive avec le point médian

    \usepackage{newunicodechar}
    \newunicodechar{⋅}{\makebox[0.27em]{\ensuremath{{\cdot}}}}

Paquets

  1. Définir des chemins de recherches des paquets (en dehors de votre distribution ou du dossier courant) :

    \makeatletter\def\input@path{{../path1/},{path2/}}\makeatother

Structure d’un document

On spécifie en général

Titre \title{}
Auteur \author{}
Date \date{}

On peut ensuite décomposer un document en

Partie \part{nom de la partie}
Chapitre \chapter{nom du chapitre}
Section \section{nom de la section}
Sous-section \subsection{nom de la sous section}
\subsubsection{nom de la sous sous section}
Paragraphe \paragraph{nom du paragraphe}
\subparagraph{nom du sous paragraphe}

Au sein d’une partie, la commande \appendix transformes les chapitres suivants en appendices.

Un document minimal ressemble donc à

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\begin{document}
\title{Le titre}
\author{l'auteur}
\date{la date ou \today}
\maketitle
\tableofcontents
\section{Première section}
\subsection{Sous-section 1}
\subsection{Sous-section 2}
\section{Seconde section}
\end{document}
  1. Pour afficher une table des matières, il suffit de placer

    \tableofcontents

    à l’endroit souhaité.

  2. Gérer le nombre de niveaux à afficher dans la table des matières

    \setcounter{tocdepth}{2}

Par défaut les sections sont numérotées.

  1. Gérer la profondeur de numérotation

    \setcounter{secnumdepth}{3}
  2. Avoir une section non numérotée

    \section*{Introduction}

    il suffit de rajouter une étoile avant le nom de la section.

    Attention, cette section ne sera pas affichée dans la table des matières.

  3. Ajouter une section non numérotée à la table des matières

    \phantomsection
    \addcontentsline{toc}{section}{Nom de section}
    \section*{Nom de section}

    où le \phantomsection permet de gérer correctement la place du lien hypertexte dans le fichier PDF avec le paquet hyperref.

    Il est aussi possible d’utiliser le paquet unnumberedtotoc avec la commande

    \addsec{Nom de section}
  4. Modifier le nom d’une section à afficher dans la table des matières

    \section[Nom dans la TOC]{Nmm de la section dans le document}

Texte

La mise en forme du texte peut être faite :

Taille du texte

La taille de base du texte est fixée avec une option de \documentclass. Les valeurs possibles sont 10pt (valeur par défaut), 11pt ou 12pt. Les commandes permettant de spécifier la taille du texte sont :

\tiny minuscule
\scriptsize très petit
\footnotesize assez petit
\small petit
\normalsize normal
\large grand
\Large plus grand
\LARGE très grand
\huge énorme
\Huge géant

soit, comparativement :

\begin{minipage}{150mm} {\tiny tiny} {\scriptsize scriptsize} {\footnotesize footnotesize} {\small small} {\normalsize normalsize}\\ {\large large} {\Large Large} {\LARGE LARGE} {\huge huge} {\Huge Huge} \end{minipage}

Une autre solution pour modifier la taille de la police est de passer par la commande \fontsize qui prend deux paramètres qui sont la taille du texte en points et l’espace interligne (environ 120 % de la taille) ; par exemple :

\fontsize{30}{36}\selectfont Un texte en 30 points !

Police du texte

On peut modifier trois éléments de la police du texte : la famille, la forme et la graisse. Il y a :

Le switch \normalfont permet de remettre le style par défaut (romain, droit, graisse moyenne). Sa commande associée est \textnormal.

On peut également mettre en valeur du texte

commande switch environnement
emphasé \emph{} \em em
souligné \underline{} (non) (non)
  1. Pour pouvoir souligner un texte qui s’étend sur plusieurs lignes, il faut utiliser la commande \uline du package ulem. Attention, ce paquet modifie la commande \emph en soulignant le texte et il faut utiliser la commande \normalem.

Alignement du texte

Les principaux environnements sont :

center texte centré
flushleft texte aligné à gauche
flushright texte aligné à droite
quotation citation avec marges à gauche et à droite
quote idem à quotation sans indentation des paragraphes
verse citer des vers de poésie
verbatim citer du code informatique
  1. Aligner du texte à gauche

    \begin{flushleft}
    Texte aligné à gauche
    \end{flushleft}

    ou avec le switch

    \raggedright Aligné à gauche
  2. Centrer du texte

    \begin{center}
    Texte centré
    \end{center}

    ou avec le switch

    \centering Centré
  3. Aligner du texte à droite

    \begin{flushright}
    Texte aligné à droite
    \end{flushright}

    ou avec le switch

    \raggedleft Aligné à droite
  4. Forcer un retour à la ligne

    ...du texte\newline Une nouvelle ligne

    ou, en mode normal :

    ...du texte\\Une nouvelle ligne

Indentation

Avec le paquet babel pour le français, l’indentation d’un nouveau paragraphe est automatique. Elle est fixée à

\parindent 1.5em
  1. Forcer l’indentation du texte

    \indent Du texte\dots
  2. Supprimer l’indentation

    \noindent Du texte\dots

Texte sur plusieurs colonnes

Pour avoir un texte sur plusieurs colonnes, il suffit d’utiliser l’environnement multicols du paquet multicol. Il prend en argument le nombre de colonnes désirées. En option, on peut préciser un texte qui s’étendra sur toutes les colonnes.

\usepackage{multicol}
\setlength{\columnsep}{7mm}     % espace entre colonnes
\setlength{\columnseprule}{1pt} % épaisseur du trait de séparation
\begin{multicols}{3}
Ce texte s'étend sur trois colonnes...
\end{multicols}

Pour forcer un saut de colonne, il suffit d’utiliser la commande \columnbreak.

Espacements

  1. Commencer un nouveau paragraphe

    ... une fin de paragraphe.
    
    Un nouveau paragraphe...

    ou

    ... une fin de paragraphe.\par
    Un nouveau paragraphe...

    que je trouve peu clair…

Espaces horizontaux

\hspace{dim} espace de largeur dim
\hfill espace élastique

Après un saut de ligne forcé (en mode horizontal), il faut utiliser

\hspace*{dim} espace de largeur dim
\hspace*{\fill} espace élastique
  1. Motifs de remplissage élastiques :

    \hrulefill % avec un trait plein
    \dotfill   % avec des points
  2. Définir une boite élastique à gauche

    \llap{contenu à surpasser par la droite}

    ou à droite

    \rlap{contenu à surpasser par la gauche}

Espaces verticaux

\vspace{dim} espace de hauteur dim
\vfill espace élastique

Hauteur d’une ligne de texte

\baselineskip
  1. Spécifier un saut de ligne

    fin de ligne.
    
    \medskip
    Début d'un nouveau paragraphe

    ou sans indentation

    fin de ligne.\\[\baselineskip]
    
    Début d'un nouveau paragraphe

Caractères spéciaux

LaTeX rendu
\& \text{\&}
\% \text{\%}
\# \text{\#}
\$ \text{\$}
- \text{-}
-- \text{--}
--- \text{---}
\dots \text{\dots}
\backslash {\backslash}
\_ \text{\_}
\{, \} \{ , \}
\P \text{\P}
\S \text{\S}
\copyright \text{\copyright}
\dag \text{\dag}
\ddag \text{\ddag}
\ae \text{\ae}
\AE \text{\AE}
\oe \text{\oe}
\OE \text{\OE}
\o \text{\o}
\O \text{\O}
\ss \text{\ss}
?` \text{?`}
!` \text{!`}

Liste des symboles LaTeX

Listes

Tableaux

\begin{tabular}[pos]{cols}
colonne 1 & colonne 2 ... & colonne n

    ... 

\end{tabular}

ou

\begin{tabular*}{width}[pos]{cols}
colonne 1 & colonne 2 ... & colonne n

    ... 

\end{tabular*}
\begin{center}\renewcommand{\arraystretch}{1.5}
\begin{tabular}{
    |m{.2\linewidth}<{\centering}|
    |m{.2\linewidth}<{\centering}|
}
A & B
\tabularnewline\hline\hline
a & b
\tabularnewline\hline
... & ...
\end{tabular}
  1. Espacement des lignes

    \renewcommand{\arraystretch}{2}
\begin{center}
\begin{tabular}{c|c|c|c|c|c|c|c|>{\cellcolor{gray!20}}c|}
\multicolumn{8}{c}{}&\multicolumn{1}{r}{LRC} \\
\hhline{~--------}
\multicolumn{1}{c|}{}&0&1&1&1&1&0&0& 0 \\
\hhline{~--------}
\multicolumn{1}{c|}{}&1&1&1&1&1&1&1&1 \\
\hhline{~--------}
\multicolumn{1}{c|}{}&1&0&0&0&0&1&1 &1\\
\hhline{~--------}
\multicolumn{1}{c|}{}&1&1&0&0&0&0&0 &0\\
\hhline{~--------}
\multicolumn{1}{c|}{}&0&0&0&0&0&1&1 &0\\
\hhline{~--------}
\multicolumn{1}{c|}{}&1&1&0&1&1&0&1 &1\\
\hhline{~--------}
\multicolumn{1}{c|}{}&0&1&1&1&1&1&1 &0\\
\hhline{~--------}
\hhline{~--------}
\multicolumn{1}{c|}{VRC}
&\cellcolor{gray!20}0
&\cellcolor{gray!20}1
&\cellcolor{gray!20}1
&\cellcolor{gray!20}0
&\cellcolor{gray!20}0
&\cellcolor{gray!20}0
&\cellcolor{gray!20}1
&1
\\
\cline{2-9}
\end{tabular}
\end{center}

Boites

\mbox{...} boite simple
\makebox[larg][pos]{...} boite
\parbox{larg}{...} boite en mode paragraphe
\usepackage{graphics}
\scalebox{fact}{...} change l’échelle
\resizebox{larg}{haut}{...} change la taille (proportionnel si !)
\rotatebox{angle}{...} tourne (angle en °)
  1. Ajuster un objet

    \resizebox{\largeur}{!}{\objet}

    par exemple

    \resizebox{8cm}{!}{Texte ajusté à 8~cm !}

L’environnement minipage est similaire à la commande \parbox.

\begin{minipage}[position]{width}
... text
\end{minipage} 

Mathématiques

B.A.–BA

Il est possible d’écrire des mathématiques selon trois modes :

Ainsi, on retiendra :

Syntaxe Contexte
$ ... $
\( ... \)
\begin{math} ... \end{math}
Expression mathématique
intégrée à un paragraphe
\[ ... \]
\begin{displaymath} ... \end{displaymath}
Expression mathématique
isolée du texte
\begin{equation} ... end{equation} Équation numérotée
en mode \displaymath

Pour écrire des expressions mathématiques de façon plus efficace, on chargera les paquets :

\usepackage{amsmath, amsfonts, amssymb}

tout en sachant que le paquet amsfonts est chargé automatiquement par le paquet amssymb.

Documentation du paquet amsmath

Familles de caractères

LaTeX rendu
{...} ABCabc123
\mathnormal{...} \mathnormal{ABCabc123}
\mathrm{...} \mathrm{ABCabc123}
\mathbf{...} \mathbf{ABCabc123}
\mathsf{...} \mathsf{ABCabc123}
\mathit{...} \mathit{ABCabc123}
\mathtt{...} \mathtt{ABCabc123}
  1. Lettres de type blackboard (bb) pour définir les corps ou ensembles (du paquet amsfonts) :

    \mathbb{A}, \mathbb{B}, … \mathbb{Z} 
    \mathbb{A} , \mathbb{B} , \mathbb{C} , \mathbb{D} , \mathbb{E} , \mathbb{F} , \mathbb{G} , \mathbb{H} , \mathbb{I} , \mathbb{J} , \mathbb{K} , \mathbb{L} , \mathbb{M} , \mathbb{N} , \mathbb{O} , \mathbb{P} , \mathbb{Q} , \mathbb{R} , \mathbb{S} , \mathbb{T} , \mathbb{U} , \mathbb{V} , \mathbb{W} , \mathbb{X} , \mathbb{Y} , \mathbb{Z}

  2. Lettres en gras

    \mathbf{A}, \mathbf{B}, … \mathbf{Z} 
    \mathbf{A} , \mathbf{B} , \mathbf{C} , \mathbf{D} , \mathbf{E} , \mathbf{F} , \mathbf{G} , \mathbf{H} , \mathbf{I} , \mathbf{J} , \mathbf{K} , \mathbf{L} , \mathbf{M} , \mathbf{N} , \mathbf{O} , \mathbf{P} , \mathbf{Q} , \mathbf{R} , \mathbf{S} , \mathbf{T} , \mathbf{U} , \mathbf{V} , \mathbf{W} , \mathbf{X} , \mathbf{Y} , \mathbf{Z}

    \mathbf{a}, \mathbf{b}, … \mathbf{z} 
    \mathbf{a} , \mathbf{b} , \mathbf{c} , \mathbf{d} , \mathbf{e} , \mathbf{f} , \mathbf{g} , \mathbf{h} , \mathbf{i} , \mathbf{j} , \mathbf{k} , \mathbf{l} , \mathbf{m} , \mathbf{n} , \mathbf{o} , \mathbf{p} , \mathbf{q} , \mathbf{r} , \mathbf{s} , \mathbf{t} , \mathbf{u} , \mathbf{v} , \mathbf{w} , \mathbf{x} , \mathbf{y} , \mathbf{z}

  3. Lettres calligraphiées

    \mathcal{A}, \mathcal{B}, … \mathcal{Z} 
    \mathcal{A} , \mathcal{B} , \mathcal{C} , \mathcal{D} , \mathcal{E} , \mathcal{F} , \mathcal{G} , \mathcal{H} , \mathcal{I} , \mathcal{J} , \mathcal{K} , \mathcal{L} , \mathcal{M} , \mathcal{N} , \mathcal{O} , \mathcal{P} , \mathcal{Q} , \mathcal{R} , \mathcal{S} , \mathcal{T} , \mathcal{U} , \mathcal{V} , \mathcal{W} , \mathcal{X} , \mathcal{Y} , \mathcal{Z}

    ou avec le paquet mathrsfs :

    \mathscr{A}, \mathscr{B}, … \mathscr{Z} 
    \mathscr{A} , \mathscr{B} , \mathscr{C} , \mathscr{D} , \mathscr{E} , \mathscr{F} , \mathscr{G} , \mathscr{H} , \mathscr{I} , \mathscr{J} , \mathscr{K} , \mathscr{L} , \mathscr{M} , \mathscr{N} , \mathscr{O} , \mathscr{P} , \mathscr{Q} , \mathscr{R} , \mathscr{S} , \mathscr{T} , \mathscr{U} , \mathscr{V} , \mathscr{W} , \mathscr{X} , \mathscr{Y} , \mathscr{Z}

  4. Lettres gothiques (du paquet amsfonts) :

    \mathfrak{A}, \mathfrak{B}, … \mathfrak{Z} 
    \mathfrak{A} , \mathfrak{B} , \mathfrak{C} , \mathfrak{D} , \mathfrak{E} , \mathfrak{F} , \mathfrak{G} , \mathfrak{H} , \mathfrak{I} , \mathfrak{J} , \mathfrak{K} , \mathfrak{L} , \mathfrak{M} , \mathfrak{N} , \mathfrak{O} , \mathfrak{P} , \mathfrak{Q} , \mathfrak{R} , \mathfrak{S} , \mathfrak{T} , \mathfrak{U} , \mathfrak{V} , \mathfrak{W} , \mathfrak{X} , \mathfrak{Y} , \mathfrak{Z}

    \mathfrak{a}, \mathfrak{b}, … \mathfrak{z} 
    \mathfrak{a} , \mathfrak{b} , \mathfrak{c} , \mathfrak{d} , \mathfrak{e} , \mathfrak{f} , \mathfrak{g} , \mathfrak{h} , \mathfrak{i} , \mathfrak{j} , \mathfrak{k} , \mathfrak{l} , \mathfrak{m} , \mathfrak{n} , \mathfrak{o} , \mathfrak{p} , \mathfrak{q} , \mathfrak{r} , \mathfrak{s} , \mathfrak{t} , \mathfrak{u} , \mathfrak{v} , \mathfrak{w} , \mathfrak{x} , \mathfrak{y} , \mathfrak{z}

Symboles

Lettres grecques

Nom Minuscule Majuscule
alpha \alpha \alpha A A
beta \beta \beta B B
gamma \gamma \gamma \Gamma \Gamma
delta \delta \delta \Delta \Delta
epsilon \epsilon \epsilon , \varepsilon \varepsilon E E
zêta \zeta \zeta Z Z
êta \eta \eta H H
thêta \theta \theta , \vartheta \vartheta \Theta \Theta
iota \iota \iota I I
kappa \kappa \kappa K K
lambda \lambda \lambda \Lambda \Lambda
mu \mu \mu M M
nu \nu \nu N N
ksi \xi \xi \Xi \Xi
omicron o o O O
pi \pi \pi , \varpi \varpi \Pi \Pi
rhô \rho \rho , \varrho \varrho P P
sigma \sigma \sigma , \varsigma \varsigma \Sigma \Sigma
tau \tau \tau T T
upsilon \upsilon \upsilon Y Y
phi \phi \phi , \varphi \varphi \Phi \Phi
khi \chi \chi X X
psi \psi \psi \Psi \Psi
oméga \omega \omega \Omega \Omega

Symboles alphanumériques

LaTeX rendu
\forall \forall
\in \in
\ni \ni
\notin \notin
\emptyset \emptyset
\cup \cup
\cap \cap
\subset \subset
\subseteq \subseteq
\supset \supset
\supseteq \supseteq
\exists \exists
\exists! \exists!
\infty \infty
\varnothing \varnothing
\neq \neq
\equiv \equiv
\propto \propto
\asymp \asymp
\sim \sim
\simeq \simeq
\cong \cong
\approx \approx
\approxeq \approxeq
\neg \neg
\complement \complement
\partial \partial
\nabla \nabla
\surd \surd
\ell \ell
\aleph \aleph
\beth \beth
\gimel \gimel
\daleth \daleth
\wp \wp
\square \square
\blacksquare \blacksquare
\triangle \triangle

Lois de composition

LaTeX rendu
+ +
- -
\times \times
\div \div
\cdot \cdot
\wedge \wedge
\vee \vee
\pm \pm
\mp \mp
\ast \ast
\star \star
\circ \circ
\cup \cup
\cap \cap
\sqcup \sqcup
\sqcap \sqcap
\oplus \oplus
\otimes \otimes
\rtimes \rtimes
\ltimes \ltimes
\bot \bot
\top \top
\parallel \parallel
\perp \perp

Opérateurs relationnels

LaTeX rendu
x=y x=y
x\neq y x\neq y
x<y, x\le y x<y
x>y, x\ge y x>y
x\leq y x\leq y
x\geq y x\geq y
x\ll y x\ll y
x\gg y x\gg y

Préférez les commandes \leqslant et \geqslant du package amssymb pour les symboles inférieur ou égal et supérieur ou égal, plus jolis.

LaTeX rendu
x\leqslant y x\leqslant y
x\geqslant y x\geqslant y

On peut aussi forcer leur utilisation avec

\usepackage{amssymb}
\let\leq\leqslant
\let\geq\geqslant

Symboles de taille variable, délimiteurs

On peut insérer des opérateurs de taille variable, pouvant prendre une valeur en indice et en exposant.

LaTeX rendu
\sum \sum
\prod \prod
\coprod \coprod
\int \int
\iint \iint
\iiint \iiint
\idotsint \idotsint
\oint \oint
\bigcap \bigcap
\bigcup \bigcup
\bigsqcup \bigsqcup
\bigwedge \bigwedge
\bigvee \bigvee
\bigoplus \bigoplus
\bigotimes \bigotimes
\[
\sum_{k=0}^{n} k = \dfrac{n(n+1)}{2}\ ,
\qquad
\int_1^2 x\;\mathrm{d}x=\dfrac{3}{2}\ ,
\qquad
\int\limits_1^2 x\;\mathrm{d}x=\dfrac{3}{2}\ ,
\qquad
\sum_{\substack{0<i<m \\ 0<j<n}} P(i,j)
\]

donne :

\begin{minipage}{150mm} \[ \sum_{k=0}^{n} k = \dfrac{n(n+1)}{2}\ , \qquad \int_1^2 x\;\mathrm{d}x=\dfrac{3}{2}\ , \qquad \int\limits_1^2 x\;\mathrm{d}x=\dfrac{3}{2}\ , \qquad \sum_{\substack{0<i<m \\ 0<j<n}} P(i,j) \] \end{minipage}

où, avec \limits, les valeurs sont positionnées au-dessus et en dessous du symbole d’intégrale alors qu’avec \nolimits (comportement par défaut), ces dernières sont placées à côté du symbole. La commande \substack permet de superposer les arguments en indice.

Il existe toute une série de délimiteurs que l’on peut utiliser avec les commandes \left et \right afin qu’ils s’adaptent automatiquement à leur contenu :

LaTeX rendu
( ... ) ( ... )
[ ... ] [ ... ]
\{ ... \} \{ ... \}
\langle ... \rangle \langle ... \rangle
\lfloor ... \rfloor \lfloor ... \rfloor
\lceil ... \rceil \lceil ... \rceil
|, \vert \vert
\|, \Vert \Vert

On peut fixer la taille des délimiteurs en utilisant les commandes \big, \Big, \bigg et \Bigg ; par exemple :

\[
\Bigg(\bigg(\Big(\big(\cdots\big)\Big)\bigg)\Bigg)
\]

donne :

\begin{minipage}{150mm} \[ \Bigg(\bigg(\Big(\big(\cdots\big)\Big)\bigg)\Bigg) \] \end{minipage}

Si l’on veut scinder une paire de délimiteurs sur deux lignes, il faut utiliser un délimiteur fantôme sous la forme de \left. ou \right., par exemple :

\begin{align*} 
y  = 1 + & \left(\frac{1}{x}+\frac{1}{x^2}+\frac{1}{x^3}+\ldots \right.\\
  & \quad \left. + \frac{1}{x^{n-1}} + \frac{1}{x^n} \right)
\end{align*}

\begin{minipage}{150mm} \begin{align*} y = 1 + & \left( \frac{1}{x} + \frac{1}{x^2} + \frac{1}{x^3} + \ldots \right. \\ & \quad \left. + \frac{1}{x^{n-1}} + \frac{1}{x^n} \right) \end{align*} \end{minipage}

Flèches

LaTeX rendu
\rightarrow \rightarrow
\leftarrow \leftarrow
\leftrightarrow \leftrightarrow
\Rightarrow \Rightarrow
\Leftarrow \Leftarrow
\Leftrightarrow \Leftrightarrow
\longrightarrow \longrightarrow
\longleftarrow \longleftarrow
\longleftrightarrow \longleftrightarrow
\Longrightarrow \Longrightarrow
\Longleftarrow \Longleftarrow
\Longleftrightarrow \Longleftrightarrow
\downarrow \downarrow
\uparrow \uparrow
\updownarrow \updownarrow
\Downarrow \Downarrow
\Uparrow \Uparrow
\Updownarrow \Updownarrow
\nearrow \nearrow
\searrow \searrow
\nwarrow \nwarrow
\swarrow \swarrow
\mapsto \mapsto
\longmapsto \longmapsto
\leadsto \leadsto
\rightharpoonup \rightharpoonup
\rightharpoondown \rightharpoondown
\leftharpoonup \leftharpoonup
\leftharpoondown \leftharpoondown
\rightleftharpoons \rightleftharpoons

Pour obtenir des flèches barrées, il suffit d’utiliser la commande \not devant le symbole de la flèche ou directement les commandes du package amssymb :

LaTeX rendu
\nrightarrow \nrightarrow
\nleftarrow \nleftarrow
\nleftrightarrow \nleftrightarrow
\nRightarrow \nRightarrow
\nLeftarrow \nLeftarrow
\nLeftrightarrow \nLeftrightarrow

Afin de simplifier l’édition, de nombreux symboles peuvent être obtenus avec plusieurs commandes.

commande rendu équivalente à
\to \to \rightarrow
\gets \gets \leftarrow
\iff \iff \;\Longleftrightarrow\;
\implies \implies \;\Longrightarrow\;

Constructions

LaTeX rendu
x_y x_y
x^y x^y
\fraq{x}{y} \dfrac{x}{y}
\sqrt{x} \sqrt{x}
\sqrt[n]{x} \sqrt[n]{x}
\binom{n}{k} \dbinom{n}{k}
\overrightarrow{abc} \overrightarrow{abc}
\overleftarrow{abc} \overleftarrow{abc}
\overleftrightarrow{abc} \overleftrightarrow{abc}
\underrightarrow{abc} \underrightarrow{abc}
\underleftarrow{abc} \underleftarrow{abc}
\underleftrightarrow{abc} \underleftrightarrow{abc}
\overline{abc} \overline{abc}
\underline{abc} \underline{abc}
\widehat{abc} \widehat{abc}
\widetilde{abc} \widetilde{abc}
\overbrace{abc}^{xy} \overbrace{abc}^{xy}
\underbrace{abc}_{xy} \underbrace{abc}_{xy}
\overbracket{abc}^{xy} \overbracket{abc}^{xy}
\underbracket{abc}_{xy} \underbracket{abc}_{xy}
\underset{xy}{abc} \underset{xy}{abc}
\overset{xy}{abc} \overset{xy}{abc}
\stackrel{xy}{abc} \stackrel{xy}{abc}
  1. vecteurs i et j où la flèche se substitue au point

    $\overrightarrow{\imath}, \overrightarrow{\jmath}$

    qui donne :

    \begin{minipage}{150mm} \[\overrightarrow{\imath},\ \overrightarrow{\jmath}\] \end{minipage}

  2. bipoints, il faut écrire

    $\overrightarrow{AB\,\,}$

    au lieu de

    $\overrightarrow{AB}$

    à définir en

    \newcommand\bipoint[1]{\overrightarrow{#1\,\,}}

    tel que :

    \[
    \bipoint{AB} \quad\text{vs. }\quad \overrightarrow{AB}
    \]

    donne :

    \begin{minipage}{150mm} \[ \overrightarrow{AB\,\,}\quad \text{vs. }\quad \overrightarrow{AB} \] \end{minipage}

Flèches extensibles

\xrightarrow{f} donne \xrightarrow{f} et \xrightarrow[dessous]{dessus} donne \xrightarrow[dessous]{dessus} .

Opérateurs

Fonctions

LaTeX rendu
\cos \cos
\sin \sin
\tan \tan
\cot \cot
\exp \exp
\ln \ln
\log \log
\lim \lim
\liminf \liminf
\limsup \limsup
\min \min
\max \max
\arg \arg
\dim \dim
\ker \ker
\gcd \gcd
\Pr \Pr
\det \det
\hom \hom
\csc \csc
\lg \lg

On peut utiliser ces fonctions avec \limits et \nolimits :

\[
\lim_{x\to+\infty} \frac{1}{x}\ ,
\quad
\lim\nolimits_{x\to+\infty} \frac{1}{x}\ ,
\quad
\max_{x\in[0,5]} x^2\ ,
\quad
\sup_{x \in \mathbb{R}}f(x)
\]

qui donne :

\begin{minipage}{150mm} \[ \lim_{x\to+\infty} \frac{1}{x}\ , \quad \lim\nolimits_{x\to+\infty} \frac{1}{x}\ , \quad \max_{x\in[0,5]} x^2\ , \quad \sup_{x \in \mathbb{R}}f(x) \] \end{minipage}

  1. Définir de nouveaux opérateurs

    \DeclareMathOperator{\atan}{Arctan}
    \DeclareMathOperator{\asin}{Arcsin}
    \DeclareMathOperator{\acos}{Arccos}
  2. Définir une nouvelle macro

    \newcommand{\norme}[1]{\left\Vert #1\right\Vert}

Espacements

commande raccourci rendu
\negthinspace \! a\!b
ab
\thinspace \, a\,b
\medspace \: a\:b
\thickspace \; a\;b
\ a\ b
\quad a\quad b
\qquad a\qquad b

Équations

  1. Numéroter une équation

    \begin{equation}
    2x^2+3x+4=0
    \end{equation}

    ou pas

    \begin{equation*}
    2x^2+3x+4=0
    \end{equation*}
  2. Référencer une équation

    \begin{equation}\label{eq:truc}
    2x^2+3x+4=0
    \end{equation}
    Super équation~\eqref{eq:truc},

    \begin{minipage}{150mm} \begin{equation}\label{eq:truc} 2x^2+3x+4=0 \end{equation} Super équation~(1), \end{minipage}

  3. Tagger une équation (fixer le nom de la référence)

    \begin{equation}\label{eq:truc2}
    2x^2+3x+4=0\tag{boom!}
    \end{equation}
    Super équation~\eqref{eq:truc2},

    qui donne :

    \begin{minipage}{150mm} \begin{equation}\label{eq:truc2} 2x^2+3x+4=0\tag{boom!} \end{equation} Super équation~(boom!), \end{minipage}

  4. Écrire un système d’équations

    \[
    \begin{cases}
    a+b=c\\
    a-c=d
    \end{cases}
    \]

    \begin{minipage}{150mm} \[ \begin{cases} a+b=c\\ a-c=d \end{cases} \] \end{minipage}

  5. Aligner une série d’équations

    \begin{align}
    f(x) & = (a+b)^2 \\
         & = a^2+2ab+b^2
    \end{align}

    \begin{minipage}{150mm} \begin{align} f(x) & = (a+b)^2 \\ & = a^2+2ab+b^2 \end{align}\nonumber \end{minipage}

    Par défaut chaque ligne d’équation est numérotée. Pour ne pas les numéroter, il suffit d’utiliser l’environnement align*.

  6. Afficher sur plusieurs lignes une équation

    \begin{multline}
    p(x) = 3x^6 + 14x^5y + 590x^4y^2 + 19x^3y^3\\ 
    - 12x^2y^4 - 12xy^5 + 2y^6 - a^3b^3
    \end{multline}

    \begin{minipage}{150mm} \begin{multline} p(x) = 3x^6 + 14x^5y + 590x^4y^2 + 19x^3y^3\\ - 12x^2y^4 - 12xy^5 + 2y^6 - a^3b^3 +i+j+k+l+m+n \end{multline}\nonumber \end{minipage}

    Il faut utiliser l’environnement multline* pour s’affranchir du numéro.

  7. Aligner avec un seul numéro

    \begin{equation}
    \begin{split}
    f(x) & = (a+b)^2 \\
         & = a^2+2ab+b^2
    \end{split}
    \end{equation}

    \begin{minipage}{150mm} \begin{equation} \begin{split} f(x) & = (a+b)^2 \\ & = a^2+2ab+b^2 \end{split} \end{equation} \end{minipage}

  8. Grouper et centrer plusieurs équations

    \begin{gather*} 
    2x - 5y =  8 \\ 
    3x^2 + 9y =  3a + c
    \end{gather*}

    \begin{minipage}{150mm} \begin{gather*} 2x - 5y = 8 \\ 3x^2 + 9y = 3a + c \end{gather*} \end{minipage}

  9. Rayer des éléments dans les équations

    \usepackage{cancel}
    \cancel{}

Matrices

Les environnements les plus utiles pour écrire des matrices sont :

Par exemple :

\[
\begin{pmatrix}
a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
\vdots  & \vdots  & \ddots & \vdots  \\
a_{m,1} & a_{m,2} & \cdots & a_{m,n} 
\end{pmatrix}\ ,
\qquad
\begin{bmatrix}
a_{11} & a_{12} & a_{13}\\
a_{21} & a_{22} & a_{23}
\end{bmatrix}\ ,
\qquad
\begin{vmatrix} 
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23} \\
a_{31} & a_{32} & a_{33} \\
\end{vmatrix} 
\]

donne :

\begin{minipage}{150mm} \[ \begin{pmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m,1} & a_{m,2} & \cdots & a_{m,n} \end{pmatrix}\ , \qquad \begin{bmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23} \end{bmatrix}\ , \qquad \begin{vmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \\ \end{vmatrix} \] \end{minipage}

Environnements

  1. Définir un nouvel environnement

    \usepackage{amsthm}
    \newtheoremstyle{theorem}% nom
        {10pt}% espace précédent
        {10pt}% espace suivant   
        {\itshape}% police du corps    
        {0pt}% indentation
        {\bfseries}% police d'en-tête
        {~\\*}% poncutation de fin d'en-tête
        {1ex}% espace après en-tête
        {\thmname{#1}\thmnumber{ #2}\thmnote{~(\textbf{#3})}}% format d'en-tête
    \theoremstyle{theorem}
    \newtheorem{theorem}{Théorème}[section]

Fichiers externes

  1. Inclure un fichier

    \input{fichier.tex}

    ou avec un saut de page avant

    \include{fichier.tex}

La fonction \include{fichier} génère pour chaque fichier un fichier fichier.aux contenant les compteurs et références. Combinée avec la fonction \includeonly{fichier1, fichier2, ...} dans l’en-tête, elle permet de limiter la durée de (re-)compilation du document, utile si on travaille sur un chapitre.

Images

\usepackage{graphicx}
  1. Insérer une image

    \includegraphics[width=2cm]{file}

    avec les options :

    width pour fixer la largeur
    height pour fixer la hauteur
    angle pour tourner l’image (angle en °)
    scale pour changer d’échelle
  2. Spécifier le répertoire des images

    \graphicspath{{img/}}

Fichiers PDF

  1. Inclure un fichier PDF

    \usepackage{pdfpages}
    \includepdf[options]{fichier.pdf}
  2. Inclure un fichier PDF avec référence

    \makeatletter
    % \includepdfref{options}{label}{doc.pdf}
    % example: \includepdfref{fitpaper,scale=.9}{putty}{putty.pdf}
    \newcounter{ipp}
    \newcommand\includepdfref[3]{
        \includepdf[#1,link,linkname=#2,%
                    pagecommand={\refstepcounter{ipp}\label{#2}}]{#3}%
    }
    % toc a pdf
    % example: \docannexe{Connexion à la pyboard avec PuTTY}{putty}
    \newcommand\docannexe[2]{%
        \hyperlink{#2.1}{#1}\dotfill\pageref{#2}%
    }
    \makeatother

Graphiques et dessins

TikZ

TikZ est un paquet pour LaTeX permettant d’inclure des figures au format PDF en restant dans l’environnement LaTeX. Pour l’utiliser, il faut :

\usepackage{tikz,pgf,pgfcore,pgfplots}
\usepgflibrary{arrows}
\usetikzlibrary{calc,automata,er,fadings,decorations,shadows,shapes,%
    topaths,positioning,matrix,patterns,intersections,%
    babel,% pour préserver les caractères actifs
}

puis

\begin{figure}[!h]\centering
\begin{tikzpicture}
(...drawing...)
\end{tikzpicture}
\caption{\label{fig:ref name}Légende.}
\end{figure}

Documentation

Quelques exemples

  1. Dessiner un rapporteur

    \begin{tikzpicture}[scale=.95]
    \foreach \i in {0,1,...,180}{\draw (\i:100mm)--(\i:120mm);}
    \foreach \i in {0,10,...,180}{
        \draw[very thick] (0,0)--(\i:120mm);
        \node at (\i:125mm){\i};
    }
    \end{tikzpicture}

    \begin{minipage}{150mm}\resizebox{150mm}{!}{ \begin{tikzpicture}[scale=.95] \foreach \i in {0,1,...,180}{\draw (\i:100mm)--(\i:120mm);} \foreach \i in {0,10,...,180}{ \draw[very thick] (0,0)--(\i:120mm); \node at (\i:125mm){\i}; } \end{tikzpicture}} \end{minipage}

  2. Pages de notes (lignes)

    \foreach \page in {1,...,4}{~\vfill
    \foreach \ligne in {1,...,28}{
    \leftline{\tikz\draw[dotted](0,0)--(\linewidth,0);}
    \leftline{~}
    }\newpage}

    \begin{minipage}{150mm} ~\\ \foreach \ligne in {1,...,6}{ \leftline{\tikz\draw[dotted](0,0)--(14cm,0);} \leftline{~}} \end{minipage}

  3. Une échelle graduée

    \begin{tikzpicture}
    \foreach \i in{.2,.4,...,1}{
        \pgfkeys{/pgf/number format/.cd,fixed,precision=1}
        \draw[line width=.5pt] (\i,.1)--++(0,-.2)
        node[below]{\pgfmathprintnumber{\i}};
    }
    \end{tikzpicture}

    \begin{minipage}{150mm} ~\\[1em] \begin{tikzpicture}[xscale=8] \draw[->] (0,0)--(1.1,0); \foreach \i in{0,.2,.4,...,1}{ \pgfkeys{/pgf/number format/.cd,fixed,precision=1} \draw[line width=.5pt] (\i,.1)--++(0,-.2) node[below]{\pgfmathprintnumber{\i}}; } \end{tikzpicture} \end{minipage}

  4. Un histogramme des notes à une épreuve

    \documentclass[border=1ex,tikz,preview]{standalone}
    \usepackage{pgfplots}
    \begin{document}
    \begin{tikzpicture}
    \begin{axis}[
    xmin=0, xmax=20, xtick distance=5, minor xtick={0,1,...,20},
    ymin=0, ymax=10, minor y tick num = 1, 
    area style]
    \addplot+[ybar interval,mark=no] plot coordinates {
    (0,0)
    (1,0)
    (2,0)
    (3,0)
    (4,2)
    (5,3)
    (6,8)
    (7,5)
    (8,8)
    (9,1)
    (10,0)
    (11,5)
    (12,1)
    (13,4)
    (14,0)
    (15,0)
    (16,0)
    (17,0)
    (18,0)
    (19,1)
    (20,0)
    };
    \end{axis}
    \end{tikzpicture}
    \end{document}

Ingénierie

Nombres

\usepackage[autolanguage]{numprint}

Unités scientifiques

Paquet : siunitx (doc)

Ma configuration :

\usepackage{siunitx}
\sisetup{
    locale= FR ,%
    detect-mode,%
    per-mode=reciprocal,%
    output-decimal-marker={,},
    inter-unit-product = \ensuremath{\!\cdot\!},%
    group-minimum-digits = 4,%
    group-separator = \text{\;},%
}
\SendSettingsToPgf

Notations

\def\d{\relax\ifmmode\mathrm{d}\else\textrm{d}\fi} \newcommand\defeq{\overset{\text{déf.}}{~=~}} \newcommand\abs[1]{\relax\ifmmode\left\vert#1\right\vert\fi} \newcommand{\floor}[1]{\left\lfloor #1 \right\rfloor} \newcommand\vect[1]{\overrightarrow{#1}} \newcommand\norme[1]{\relax\ifmmode\left\Vert#1\right\Vert\fi} \newcommand\torseur[4][1ex]{\prescript{}{#4}{\left\{\begin{array}{c}{\displaystyle#2}\\[#1]{\displaystyle#3}\end{array}\right\}}}

  1. Symbole différentiel \relax\ifmmode\mathrm{d}\else\textrm{d}\fi pour la dérivation

    \def\d{\relax\ifmmode\mathrm{d}\else\textrm{d}\fi}
  2. Vecteur

    \newcommand\vect[1]{\overrightarrow{#1}}

    Par exemple :

    \[
    \vect{V_{A,2/1}} = \vect{V_{B,2/1}}
                     + \vect{\Omega_{2/1}} \wedge \vect{BA}
    \]

    qui donne :

    \begin{minipage}{150mm} \[ \overrightarrow{V_{A,2/1}} = \overrightarrow{V_{B,2/1}} + \overrightarrow{\Omega_{2/1}} \wedge \overrightarrow{BA} \] \end{minipage}

  3. Écrire un « déf. » au-dessus d’un signe égal

    \newcommand\defeq{\overset{\text{déf.}}{~=~}}

    par exemple :

    Sachant $\mathcal{R}_0=\left(O,\mathcal{B}_0\right)$, il vient :
    \[
    \vect{V_{M/\mathcal{R}_0}} \defeq \left.\dfrac{\d \vect{OM}}{\d t}\right|_{\mathcal{B}_0}
    \]

    qui donne :

    \begin{minipage}{150mm} Sachant $\mathcal{R}_0=\left(O,\mathcal{B}_0\right)$, il vient : \[ \overrightarrow{V_{M/\mathcal{R}_0}} \overset{\text{déf.}}{~=~}\left.\dfrac{\relax\ifmmode\mathrm{d}\else\textrm{d}\fi\overrightarrow{OM}}{\relax\ifmmode\mathrm{d}\else\textrm{d}\fi t}\right|_{\mathcal{B}_0} \] \end{minipage}

  4. Norme ( L_2 )

    \newcommand\norme[1]{\relax\ifmmode\left\Vert#1\right\Vert\fi}

    Par exemple :

    \norme{\vect{AB}}

    donne :

    \begin{minipage}{150mm} \[\relax\ifmmode\left\Vert\overrightarrow{AB}\right\Vert\fi\] \end{minipage}

  5. Éléments de réduction d’un torseur

    \usepackage{mathtools}
    \newcommand\torseur[4][1ex]{%
      \prescript{}{#4}{%
      \left\{\begin{array}{c}
        {\displaystyle#2}\\[#1]
        {\displaystyle#3}
      \end{array}\right\}}%
    }

    à utiliser en

    \torseur[espace interligne]{resultante}{moment}{point}

    Par exemple :

    Soit $A$ un point de l'axe central de
    \[
    \{\mathscr{V}_{2/1}\}
    = \torseur{\vect{\Omega_{2/1}}}{\vect{V_{A,2/1}}}{A}
    \]
    alors
    \[
    \forall M\in\left(A,\vect{\Omega_{2/1}}\right), \quad
    \vect{V_{M,2/1}} = \vect{V_{A,2/1}}
    \]

    qui donne :

    \begin{minipage}{150mm} Soit $A$ un point de l&39;axe central de \[ \{\mathscr{V}_{2/1}\} = \prescript{}{A}{\left\{\begin{array}{c}{\displaystyle\overrightarrow{\Omega_{2/1}}}\\[1ex]{\displaystyle\overrightarrow{V_{A,2/1}}}\end{array}\right\}} \] alors \[ \forall M\in\left(A,\overrightarrow{\Omega_{2/1}}\right), \quad \overrightarrow{V_{M,2/1}} = \overrightarrow{V_{A,2/1}} \] \end{minipage}

  6. Exposant entouré (pour ne pas confondre avec une puissance)

    \newcommand*\subc[1]{%
        ^{\text{\tikz{\node[draw,circle,inner sep=.5pt]{\tiny$#1$};}}}%
    }

    à utiliser en

    \subc{exposant}

Circuits électriques

Paquet : CircuiTikZ (documentation)

\usepackage[european]{circuitikz}

petit hack pour les portes logiques

  1. Hacheur quatre quadrants

    \begin{tikzpicture}[xscale=.55,yscale=.7]\ctikzset{voltage=european}
    \scriptsize
    \node(npn1) at (2.5,3.5) [pigbt,xscale=1]{};
    \node(npn4) at (2.5,1.5) [pigbt,xscale=1]{};
    \node(npn3) at (10.5,1.5) [pigbt,xscale=1]{};
    \node(npn2) at (10.5,3.5) [pigbt,xscale=1]{};
    \node[left] at (npn1.B) {$T_1$};
    \node[left] at (npn4.B) {$T_2$};
    \node[left] at (npn3.B) {$T_3$};
    \node[left] at (npn2.B) {$T_4$};
    \draw (5,3.5) rectangle (8,1.5);
    \node (ch) at (6.5,2.5){\it\small Charge};
    \draw (0,0)node(o){} to[V=$U_E$] (0,5)node(o1){};
    \draw (o1-|npn1.E)node[circ](ik1){}--(npn1.E);
    \draw (npn1.C)--(npn1.C|-ch)node[circ ](ok1){}++(.5,0)node(id1){}to[Do,l_=$D_1$ ]++(0,2.5)node[circ ](od1){};
    \draw (ch-|npn4.E)node[circ](ik4){}--(npn4.E);
    \draw (npn4.C)--(npn4.C|-o)node[circ ](ok4){}++(.5,0)node(id4){}to[Do,l_=$D_2$ ]++(0,2.5)node[circ ]{};
    \draw (o1-|npn2.E)node[circ](ik2){}--(npn2.E);
    \draw (npn2.C)--(npn2.C|-ch)node[circ ](ok2){}++(.5,0)node(id2){}to[Do,l_=$D_4$ ]++(0,2.5)node[circ ](od2){};
    \draw (ch-|npn3.E)node[circ](ik3){}--(npn3.E);
    \draw (npn3.C)--(npn3.C|-o)node[circ ](ok3){}++(.5,0)node[circ ](id3){}to[Do,l_=$D_3$ ]++(0,2.5)node[circ ](od3){};
    \draw (o1.center)--(od2);
    \draw (id3)--(o.center);
    \draw (ok1)--(4.25,2.5)to[short,i^>=$i_S$](5,2.5)node(ic){};
    \draw (od3)--(8,2.5)node(oc){};
    \draw (8.5,.75)to node[currarrow, sloped, allow upside down, pos=1]{} 
    node[above]{$u_S$} ++(-3.5,0);
    \end{tikzpicture}

    qui donne :

    \begin{minipage}{150mm} \begin{tikzpicture}[xscale=.55,yscale=.7]\ctikzset{voltage=european} \scriptsize \node(npn1) at (2.5,3.5) [pigbt,xscale=1]{}; \node(npn4) at (2.5,1.5) [pigbt,xscale=1]{}; \node(npn3) at (10.5,1.5) [pigbt,xscale=1]{}; \node(npn2) at (10.5,3.5) [pigbt,xscale=1]{}; \node[left] at (npn1.B) {$T_1$}; \node[left] at (npn4.B) {$T_2$}; \node[left] at (npn3.B) {$T_3$}; \node[left] at (npn2.B) {$T_4$}; \draw (5,3.5) rectangle (8,1.5); \node (ch) at (6.5,2.5){\it\small Charge}; \draw (0,0)node(o){} to[V=$U_E$] (0,5)node(o1){}; \draw (o1-|npn1.E)node[circ](ik1){}--(npn1.E); \draw (npn1.C)--(npn1.C|-ch)node[circ ](ok1){}++(.5,0)node(id1){}to[Do,l_=$D_1$ ]++(0,2.5)node[circ ](od1){}; \draw (ch-|npn4.E)node[circ](ik4){}--(npn4.E); \draw (npn4.C)--(npn4.C|-o)node[circ ](ok4){}++(.5,0)node(id4){}to[Do,l_=$D_2$ ]++(0,2.5)node[circ ]{}; \draw (o1-|npn2.E)node[circ](ik2){}--(npn2.E); \draw (npn2.C)--(npn2.C|-ch)node[circ ](ok2){}++(.5,0)node(id2){}to[Do,l_=$D_4$ ]++(0,2.5)node[circ ](od2){}; \draw (ch-|npn3.E)node[circ](ik3){}--(npn3.E); \draw (npn3.C)--(npn3.C|-o)node[circ ](ok3){}++(.5,0)node[circ ](id3){}to[Do,l_=$D_3$ ]++(0,2.5)node[circ ](od3){}; \draw (o1.center)--(od2); \draw (id3)--(o.center); \draw (ok1)--(4.25,2.5)to[short,i^>=$i_S$](5,2.5)node(ic){}; \draw (od3)--(8,2.5)node(oc){}; \draw (8.5,.75)to node[currarrow, sloped, allow upside down, pos=1]{} node[above]{$u_S$} ++(-3.5,0); \end{tikzpicture} \end{minipage}

Schéma-blocs

\usepackage{schemabloc}
  1. Exemple de schéma-blocs :

    \begin{tikzpicture}
    \sbEntree{E1}
    \sbComph{comp1}{E1}\sbRelier{E1}{comp1}
    \sbBloc[2]{H1}{$H_1(p)$}{comp1}\sbRelier{comp1}{H1}
    \sbCompSum[5]{comp2}{H1}{}{+}{-}{ }\sbRelier{H1}{comp2}
    \sbBloc{H2}{$H_2(p)$}{comp2}\sbRelier{comp2}{H2}
    \sbBloc[4]{H3}{$H_3(p)$}{H2}\sbRelier{H2}{H3}
    \sbSortie{S}{H3}\sbRelier{H3}{S}
    \sbDecaleNoeudy[-4]{H2}{lien1}
    \sbBlocr{G}{$G(p)$}{lien1}
    \sbRelierxy{G}{comp1}
    \sbDecaleNoeudy[4]{E1}{lien2}
    \sbBloc[7]{H4}{$H_4(p)$}{lien2}
    \sbRelierxy{H4}{comp2}
    \sbRelieryx{H2-H3}{G}
    \sbRelier{lien2}{H4}
    \sbNomLien[0.8]{S}{$S(p)$}
    \sbNomLien[0.8]{E1}{$E(p)$}
    \sbNomLien[0.8]{lien2}{$P(p)$}
    \end{tikzpicture}

    \begin{minipage}{150mm}\resizebox{150mm}{!}{ \begin{tikzpicture} \sbEntree{E1} \sbComph{comp1}{E1}\sbRelier{E1}{comp1} \sbBloc[2]{H1}{$H_1(p)$}{comp1}\sbRelier{comp1}{H1} \sbCompSum[5]{comp2}{H1}{}{+}{-}{ }\sbRelier{H1}{comp2} \sbBloc{H2}{$H_2(p)$}{comp2}\sbRelier{comp2}{H2} \sbBloc[4]{H3}{$H_3(p)$}{H2}\sbRelier{H2}{H3} \sbSortie{S}{H3}\sbRelier{H3}{S} \sbDecaleNoeudy[-4]{H2}{lien1} \sbBlocr{G}{$G(p)$}{lien1} \sbRelierxy{G}{comp1} \sbDecaleNoeudy[4]{E1}{lien2} \sbBloc[7]{H4}{$H_4(p)$}{lien2} \sbRelierxy{H4}{comp2} \sbRelieryx{H2-H3}{G} \sbRelier{lien2}{H4} \sbNomLien[0.8]{S}{$S(p)$} \sbNomLien[0.8]{E1}{$E(p)$} \sbNomLien[0.8]{lien2}{$P(p)$} \end{tikzpicture} }\end{minipage}

Diagrammes de Bode

\usepackage{atbegshi}
\usepackage{bodegraph}

Code informatique

Insérer du code

  1. Mettre en forme du code

    \usepackage{listings}
    \lstset{literate=%
    {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
    {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
    {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
    {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
    {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
    {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
    {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
    {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
    {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
    {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1
    {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
    {€}{{\EUR}}1 {£}{{\pounds}}1
    {°}{{\degres{}}}1
    }
    \lstset{
        inputencoding=utf8,% pour les accents
        extendedchars=true,
        upquote=true,
        columns=flexible,
        basicstyle=\ttfamily,
        language=Python,
        keywordstyle=\color{blue},
        identifierstyle=\color{black},
        commentstyle=\color{orange},%
        % *** style
        frame=leftline,%
        framerule=3pt,%
        rulecolor=\color{black!20},%
        framesep=1em,%
        xleftmargin=2em,%
    }
    \if@print
      \lstset{
        keywordstyle=\color{black}\bfseries,
        identifierstyle=\color{black},
        commentstyle=\color{black!70},%
    }
    \fi

    par exemple :

    \begin{lstlisting}
    def Appartient(L,x):
        n=len(L)
        k=0
        while k<n and L[k]!=x:
            k=k+1
        return(k<n)
    \end{lstlisting}
  2. Inclure des fichiers de code

    \lstinputlisting[language=python]{fichier.py}
  3. Écrire du code sur une diapo avec beamer

    \begin{frame}[t,containsverbatim]
    \begin{lstlisting}
    super+=code
    \end{lstlisting}
    \end{frame}
  4. Écrire un exemple en LaTeX avec à gauche le code source et à droite le texte correspondant mis en forme (adapté de verbatim.sty)

    \newwrite\example@out
    \newcounter{exacnt}
    \setcounter{exacnt}{1}
    \newlength{\savefboxrule}
    \newlength{\savefboxsep}
    \newlength{\outdent}
    \setlength{\outdent}{1cm}
    %\addtolength{\headwidth}{\outdent}
    \newenvironment{ltxexample}{\begingroup% Lets Keep the Changes Local
      \@bsphack
      \immediate\openout \example@out \jobname.exa
      \let\do\@makeother\dospecials\catcode`\^^M\active
      \def\verbatim@processline{%
        \immediate\write\example@out{\the\verbatim@line}}%
      \verbatim@start}%
      {\immediate\closeout\example@out\@esphack\endgroup%
      \stepcounter{exacnt}%
      \expandafter\ifx\csname r@exa\theexacnt\endcsname\relax\else\fi
      \noindent\begin{minipage}{\linewidth}
          \input{\jobname.exa}
      \end{minipage}
      \newline
      \noindent\begin{minipage}{\linewidth}
        \lstinputlisting[style=mylatex]{\jobname.exa}
      \end{minipage}%
      \label{exa\theexacnt}%
    \par\addvspace{3ex plus 0.8ex minus 0.5ex}\vskip -\parskip
    }
    \newenvironment{ltxexampleSide}{\begingroup% Lets Keep the Changes Local
      \@bsphack
      \immediate\openout \example@out \jobname.exa
      \let\do\@makeother\dospecials\catcode`\^^M\active
      \def\verbatim@processline{%
        \immediate\write\example@out{\the\verbatim@line}}%
      \verbatim@start}%
      {\immediate\closeout\example@out\@esphack\endgroup%
      \stepcounter{exacnt}%
      \expandafter\ifx\csname r@exa\theexacnt\endcsname\relax\else\fi
      \noindent\begin{minipage}{.48\linewidth}
          \input{\jobname.exa}
      \end{minipage}
      \begin{minipage}{.48\linewidth}
        \lstinputlisting[style=mylatex]{\jobname.exa}
      \end{minipage}%
      \label{exa\theexacnt}%
    \par\addvspace{3ex plus 0.8ex minus 0.5ex}\vskip -\parskip
    }

    à utiliser en

    \begin{ltxexample}
    \Large This is Large
    \end{ltxexample}

Style

Polices de caractères

En plus de \usepackage{lmodern}, on peut utiliser l’un des paquets suivants :

Couleurs

Paquet : color

\usepackage{color}
  1. Couleur du texte

    \textcolor{color}{text}
  2. Couleur courante

    \color{color}
  3. Couleur du fond de page

    \pagecolor{color}
  4. Définir une nouvelle couleur

    \definecolor{colorname}{model}{code}

    model peut être rgb (3 réels enre 0 et 1), RGB (3 entiers entre 0 et 255), html (3 octets en hexa), cmyk (4 réels entre 0 et 1), gray (1 réel entre 0 et 1), par exemple :

    \definecolor{mycolor1}{rgb}{0.858, 0.188, 0.478}
    \definecolor{mycolor2}{RGB}{219, 48, 122}
    \definecolor{mycolor3}{HTML}{216EAD}
    \definecolor{mycolor4}{cmyk}{0, 0.7808, 0.4429, 0.1412}
    \definecolor{mygray}{gray}{0.6}
  5. Définir une nouvelle couleur par « mélange »

    \colorlet{mycolor}{green!10!orange!90!}

Mise en page

Géométrie

  1. Format 2 en 1

    \usepackage{pgfpages}
    \pgfpagesuselayout{2 on 1}[a4paper,landscape]

En-tête et pieds de page

  1. En-tête et pieds de page

    \pagestyle{fancy} 
    \fancyhf{}
    \fancyhead[l]{}
    \fancyhead[c]{}
    \fancyfoot[c]{\thepage}
    \renewcommand{\headrulewidth}{0pt}
    \renewcommand{\footrulewidth}{0pt}
  2. En-tête et pieds de page de sujets

    % *** def lastpage counter
    \usepackage{lastpage,refcount}
    % *** header
    \usepackage{fancyhdr}
    \pagestyle{fancy} 
    \fancyhf{}
    \fancyhead{}
    \fancyfoot[c]{\thepage/\pageref{LastPage}}
    \fancyfoot[ro]{\ifnum\thepage<\getpagerefnumber{LastPage}
    \small\itshape Tournez la page S.V.P.\fi}
    \renewcommand{\headrulewidth}{0pt}
    \renewcommand{\footrulewidth}{0pt}
    \pagestyle{fancy} 

Gestion des flottants

\newcommand\captionfig[1]{\refstepcounter{figure}%
\textsc{Figure~\thefigure} -- #1}
\newcommand\captiontab[1]{\refstepcounter{table}%
\textsc{Table~\thetable} -- #1} 

Environnements

  1. Environnement d’exercice

    \makeatletter 
    \newcommand\mynobreakpar{~\vspace{-.8\baselineskip}\par\nobreak\@afterheading} 
    \makeatother
    
    % to get auto newline for enumerate in Iexo env
    \newenvironment{Ienumerate}
        {\mynobreakpar\begin{enumerate}}
        {\end{enumerate}}

Trucs

  1. Numéroter les lignes

    \usepackage{lineo}
    \linenumbers

Références

  1. Note de bas de page

    \footnote{Note de bas de page}

Références croisées

  1. Poser une référence

    \label{ref1}

    puis l’utiliser

    \ref{ref1}

    et, si besoin, préciser sa page

    \pageref{ref1}

    Compteurs

  2. Définir un nouveau compteur latex \newcounter{compteur} ou, pour le remettre à zéro à chaque incrément du compteur de section nommé section latex \newcounter{compteur}[section]

  3. Fixer la valeur d’un compteur latex \setcounter{compteur}{valeur}

  4. Ajouter à un compteur latex \addtocounter{compteur}{valeur}

  5. Incrémenter un compteur pouvant servir de référence

    \refstepcounter{compteur}
  6. Afficher la valeur d’un compteur latex \valuer{compteur}

  7. Représentation des compteurs

    Nombres arabes (1, 2, 3, …) \arabic{compteur}
    Nombres romains (i, ii, iii, …) \roman{compteur}
    ou en majuscules (I, II, III, …) \Roman{compteur}
    Lettres (a, b, c, …) \alph{compteur}
    ou en majuscules (A, B, C, …) \Alph{compteur}

Liens hypertextes

\usepackage[colorlinks=true,%
    linkcolor=red,%
    urlcolor=blue,%
    citecolor=blue,%
    pdfa]{hyperref}
\hypersetup{linkcolor=red,urlcolor=blue,citecolor=blue}

l’option pdfa évite de briser les liens après un passage avec Ghostscript (source).

  1. Définir un lien hypertexte

    \href{http://nmesnier.free.fr}{mon site}

    qui peut permettre d’excécuter un fichier

    \href{run:chemin/fichier}{nom}
  2. Insérer une URL

    \url{http://nmesnier.free.fr}
  3. Définir une cible

    \hypertarget{clé}{mot référence}

    puis l’utiliser

    \hyperlink{clé}{mot à cliquer}

Bibliographie

  1. biblabel

    \makeatletter
    \renewcommand*{\@biblabel}[1]{\hfill#1.}
    \makeatother

Table des matières

  1. Définir une table des matières de profondeur 2 encadrée

    \setcounter{tocdepth}{2}
    % *** def de la tocBox
    \usepackage{mdframed}
    \newmdenv[
        frametitle={\colorbox{white}{\space\large 
            Table des matières\space}},
        innertopmargin=0pt,
        frametitleaboveskip=-\ht\strutbox,
        frametitlealignment=\center,
    ]{tocBox}
    % *** redefinition of toc
    \def\tableofcontents{%
        \begin{tocBox}%
          \@starttoc{toc}
          \medskip
        \end{tocBox}
    }

    Il est évidemment possible de changer le Table des matières en Exercices si vous faites un poly de TDs !

Présentation avec beamer

Productivité

  1. Voir les différences entre 2 fichiers *.tex

    latexdiff old.tex new.tex > diff.tex

    ou

    latexdiff --flatten old.tex new.tex > diff.tex

    puis compiler

    pdflatex diff.tex

Faire ses classes

Ressources

Faire du LaTeX sur M$ Windows

Pour utiliser LaTeX sur M$ windows, il faut :

Il faut toujours installer la distribution avant l’éditeur pour que ce dernier « trouve » le compilateur automatiquement.