Commit 99919a5e authored by Alexandre Morlet's avatar Alexandre Morlet
Browse files

Relecture de TikZ : première passe !

parent e7ef6a82
......@@ -8,7 +8,7 @@
\usepackage{lmodern}
%paquets linguistiques
\usepackage[frenchb]{babel}
\usepackage[english,frenchb]{babel}
%aspect général des pages
\usepackage{geometry}
......@@ -1552,50 +1552,48 @@ Je sais pas encore à quel point ca peut être intéressant, c'est juste un truc
\pagebreak
\part{Des graphiques vectoriels avec le duo PGF/TIKZ}
\part{Des graphiques vectoriels avec le duo PGF/Ti$k$Z}
Cette partie constitue une introduction aux extensions TikZ et PGF.\\
Ces langages permettent de créer des graphes sophistiqués qui s'intègrent naturellement dans votre PDF avec une qualité vectorielle.\\
Cette partie constitue une introduction aux extensions Ti$k$Z et PGF.\\
Ces extensions permettent de créer des graphes sophistiqués et qui s'intègrent naturellement dans votre document PDF car vectoriels.\\
Voici un petit exemple pour vous mettre l'eau à la bouche :
\begin{figure}[h!]
\input{diff-elecmuon.tex}
\caption{Un processus de QED : la diffusion électron-muon par échange de photon}
\caption{Un processus de QED : la diffusion électron-muon par échange de photon.}
\end{figure}
\section{Introduction}
\subsection{A quoi sert TikZ ?}
La première question que vous devez certainement vous poser est : \textit{quel intérêt ? Il y a déjà} \verb+\includegraphics+ \textit{pour faire ça}.\\
\subsection{À quoi sert Ti$k$Z ?}
La première question que vous devez certainement vous poser est : \og quel intérêt ? Il y a déjà \verb+\includegraphics+ pour faire ça \fg{}.\\
Et bien l'intérêt est triple :
\begin{itemize}
\item vous pourrez créer vos graphiques \textit{à l'intérieur de \LaTeX{}} et éviter de passer par un logiciel de retouche d'image
\item certains logiciels comme \verb=GNUplot= ou \verb=Geogebra= exportent leurs graphiques en code TikZ\footnote{Et notez que bien d'autres comme \verb=Pyplot= ne le font pas nativement mais ont une communauté active qui a développé des exporteurs efficaces} La transition entre l'exploitation des données et leur mise en forme est donc immédiate.
\item les graphes obtenus sont vectoriels\footnote{Il y a deux façons de coder des images : avec une grille de pixels (format matriciel) ou avec des primitives géométriques (format vectoriel). L'avantage de cette seconde méthode est que l'image obtenue ne pixellise pas lors d'un zoom (la qualité est pour ainsi dire infinie)}, de même que le reste de votre PDF donc
\item vous pourrez créer vos graphiques \textit{à l'intérieur de \LaTeX{}} et éviter de passer par un logiciel de retouche d'image ;
\item certains logiciels comme \verb=gnuplot= ou \verb=Geogebra= permettent d'exporter leurs graphiques en code Ti$k$Z\footnote{Et notez que bien d'autres comme \verb=Pyplot= ont une communauté active qui a développé des interfaces efficaces.}. La transition entre l'exploitation des données et leur mise en forme est donc immédiate ;
\item les graphes obtenus sont vectoriels\footnote{Il y a deux façons de coder des images : avec une grille de pixels (format matriciel) ou avec des primitives géométriques (format vectoriel). L'avantage de cette seconde méthode est que l'image obtenue ne \textit{pixelise} pas lors d'un zoom (la qualité est pour ainsi dire infinie).}, comme le reste de votre PDF.
\end{itemize}
\medbreak
L'utilisation de TikZ est cependant plus difficile que celle de \verb=\includegraphics= et demande un certain temps d'apprentissage.\footnote{Mais si vous êtes arrivés jusque là c'est que la motivation n'est pas un problème !}
L'utilisation de Ti$k$Z est cependant plus difficile que celle de \verb=\includegraphics= et demande un certain temps d'apprentissage\footnote{Mais si vous êtes arrivés jusque là c'est que la motivation n'est pas un problème !}.
\subsection{Présentation de TikZ et PGF}
\subsection{Présentation de Ti$k$Z et PGF}
Les extensions \verb=TikZ= et \verb=PGF= ont étés crées par Till Tantau\footnote{Qui est aussi le créateur de Beamer}. La dernière version du duo a une documentation de plus de 1000 pages, ce qui en fait l'une des extensions~\TeX{} les plus élaborées à ce jour.\\
Le nom \verb=PGF= signifie \textit{Portable Graphical Format}, par analogie avec le format PDF, le but étant d'intégrer des graphiques naturellement dans ce format. \verb=PGF= est le moteur graphique qui réalise la compilation, il travaille directement avec le compilateur \verb=pdfLaTeX=.\\
Le nom \verb=TikZ= a été inventé en suivant la tradition de l'acronyme récursif\footnote{Un acronyme qui se contient lui-même} \verb=GNU= : "GNU is not UNIX", ici \verb=TikZ= signifie "TikZ ist kein Zeichenprogramm" (en français "TikZ n'est pas un programme de dessin").\\
Le nom est en réalité un avertissement à l'utilisateur, car en effet si \verb=TikZ= intègre de très nombreuses fonctionnalités graphiques, le fait qu'il soit intégré dans~\TeX{} lui fait hériter de ses avantages (positionnement précis, excellente typographie, utilisation de macros,...) mais aussi de tous ses défauts (le code ne donne pas d'aperçu du résultat, de petits changements demandent une recompilation, il n'y a pas d'ajustement automatique des courbes,...). Le rôle de \verb=TikZ= est de définir toutes les macros et les environnements utilisables dans~\LaTeX{} pour piloter \verb=PGF=.
Les extensions \texttt{Tikz} et \texttt{PGF} ont étés crées par Till Tantau, également créateur de \texttt{Beamer}. La dernière version du duo a une documentation de plus de 1000 pages, ce qui en fait l'une des extensions \LaTeX{} les plus élaborées à ce jour.\\
Le nom \texttt{PGF} signifie \textit{Portable Graphical Format}, par analogie avec le format PDF, le but étant d'intégrer naturellement des graphiques dans ce format. \texttt{PGF} est le moteur graphique qui réalise la compilation ; il travaille directement avec le compilateur \verb=pdflatex=.\\
Le nom \texttt{TikZ} a été inventé en suivant la tradition de l'acronyme récursif\footnote{Un acronyme qui se contient lui-même.} \texttt{GNU} : \textit{GNU is not UNIX}. Ici, \texttt{TikZ} signifie : \textit{Ti$k$Z ist kein Zeichenprogramm} (en français : \og Ti$k$Z n'est pas un programme de dessin \fg{}).\\
Le nom est en réalité un avertissement à l'utilisateur, car même si \texttt{TikZ} possède de très nombreuses fonctionnalités graphiques, le fait qu'il soit intégré dans \LaTeX{} lui fait hériter de ses avantages (positionnement précis, excellente typographie, utilisation de macros, \dots) mais aussi de tous ses défauts (le code ne donne pas d'aperçu du résultat, de petits changements demandent une nouvelle compilation, il n'y a pas d'ajustement automatique des courbes, \dots). Le rôle de \texttt{TikZ} est de définir toutes les macros et les environnements utilisables dans \LaTeX{} pour piloter \texttt{PGF}.
\subsection{Charger les extensions et les bibliothèques}
Les extensions \verb=PGF= et \verb=TikZ= se chargent à l'aide de \verb+\usepackage{tikz}+.
Vous pourrez également avoir besoin de charger des bibliothèques spécifiques de \verb=TikZ=. \\Et pour une fois ceci ne se fait pas avec \verb=\usepackage{}= mais avec \verb+\usetikzlibrary{mabibliothèque}+.
Les extensions \texttt{PGF} et \texttt{TikZ} se chargent à l'aide de \verb+\usepackage{tikz}+ -- ce dernier appelant automatiquement \texttt{PGF}.
\startenteo Je ne suis pas sûr de bien comprendre... Le package \texttt{tikz.sty} charge lui-même \texttt{pgf.sty}, il n'y a donc pas besoin de le répéter. Quant à ce \textit{warning}, je ne l'ai jamais rencontré dans mon utilisation basique de Ti$k$Z.\closeenteo \\
\startaurel C'est parce que j'ai écrit des conneries :), je voulais parler de \verb=pgfplotset=, comme moi je l'inclus toujours avec TikZ je me suis embrouillé, c'est une extension à \verb=pgf/tikz= (qui sont bel et bien fournis ensembles) qui permet de faire certains trucs plus facilement, comme par exemple des axes, ou des échelles logarithmiques. Et là il y a bien un warning qui sort. Mais du coup je reparlerais de \verb=pgfplotset= quand je parlerais des plots. \closeaurel
Les bibliothèques spécifiques à \texttt{TikZ} se chargent à l'aide de la commande \verb+\usetikzlibrary{<mabibliothèque>}+ dans le préambule.
\subsection{Environnement et commandes}
L'environnement dans lequel est construite un graphe \verb=TikZ= est \verb=tikzpicture=, cette environnement ouvre un interpréteur qui répondra à la syntaxe \verb=TikZ=.\\
Voyons un exemple basique qui nous permettra d'étudier la syntaxe :
L'environnement dans lequel se construit un graphe \texttt{TikZ} est \verb=tikzpicture=. Cet environnement ouvre un interpréteur qui répondra à la syntaxe \texttt{TikZ}.\\
Voyons un exemple basique qui nous permettra d'étudier cette dernière :
\tikzexternaldisable
\begin{LTXexample}[width=0.3\textwidth]
......@@ -1606,33 +1604,36 @@ Voyons un exemple basique qui nous permettra d'étudier la syntaxe :
\end{tikzpicture}
\end{LTXexample}
\tikzexternalenable
\medskip
Les commandes sont aussi annoncées par un "\textbackslash", mais contrairement à la syntaxe~\LaTeX{} les commandes se finissent toutes par un ";" ! En cas d'oubli (et on les oublie très facilement) vous aurez une belle erreur "\textit{did you forget a semicolon ?}", qui risque même de faire planter le compilateur\footnote{Parfois même au point d'être obligé d'arrêter le processus à la main}, celui-ci ne comprenant pas comment interpréter la commande suivante alors qu'il est déjà en train d'en traiter une. Donc mettez TOUJOURS un ";" à la fin de vos commandes !\\
Ensuite on peut remarquer que l'interpréteur \verb=TikZ= fournit des environnements textuels dans lesquels la syntaxe~\LaTeX{} est parfaitement valable (voir l'exemple du texte dans le cercle).
Les commandes sont, comme à l'accoutumée, annoncées par une contre-oblique (\verb|\|) ; mais contrairement à la syntaxe \LaTeX{}, elles se finissent toutes par un point-virgule (\verb|;|) ! En cas d'oubli (et on les oublie très facilement), vous aurez une belle erreur : \textit{\foreignlanguage{english}{Did you forget a semicolon?}}, qui risque même de faire planter le compilateur\footnote{Parfois même au point d'être obligé d'arrêter le processus à la main.}, celui-ci ne comprenant pas comment interpréter la commande suivante alors qu'il est déjà en train d'en traiter une. La rigueur est donc de mise.\\
On peut également remarquer que l'interpréteur \texttt{TikZ} fournit des environnements textuels dans lesquels la syntaxe \LaTeX{} est parfaitement valable (voir l'exemple du texte dans le cercle).
\subsection{Les systèmes de coordonnées}
Pour arriver à manipuler les commander \verb=TikZ= il est nécéssaire de comprendre les notations des coordonnées des points.\\ Celles-ci seront toujours notées entre parenthèses \verb=()=.
Pour arriver à manipuler les commandes \texttt{TikZ}, il est nécessaire de comprendre les notations des coordonnées des points.\\ Celles-ci seront toujours notées entre parenthèses.
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
\multirow{2}*{En 2 dimensions} & Cartésien avec axes $x$ et $y$ & (x,y) \\
\multirow{2}*{En 2 dimensions} & Cartésien avec axes $x$ et $y$ & \texttt{(x,y)} \\
\cline{2-3}
& Polaire avec rayon $r$ et angle orienté $\theta$ (en degrés)& ($\theta$:r)\\
& Polaire avec rayon $r$ et angle $\theta$ (degrés, sens direct) & \texttt{($\theta$:r)}\\
\hline
En 3 dimensions & Cartésien avec axes $x$, $y$ et $z$ & (x,y,z) \\
En 3 dimensions & Cartésien avec axes $x$, $y$ et $z$ & \texttt{(x,y,z)} \\
\hline
\end{tabular}
\end{center}
\medbreak
Il n'y a pas de coordonnées cylindriques ou sphériques en 3d. Si elles vous sont indispensables référez-vous à la documentation : il est possible de définir un système de coordonnées.
Il n'y a pas de coordonnées cylindriques ou sphériques en 3d. Si elles vous sont indispensables référez-vous à la documentation : il est possible de définir son système de coordonnées.
\subsection{Quelques commandes de base}
\subsubsection{Les chemins}
La commande la plus importante de \verb=TikZ= est \verb=\draw=, qui permet d'effectuer tous les tracés en les notant comme des chemins. La syntaxe est assez intuitive :\\
\verb=\draw[options] (point) tracé (point) tracé (point) ... ;=\\
La commande la plus importante de \texttt{TikZ} est \verb=\draw=, qui permet d'effectuer tous les tracés en les notant comme des chemins. La syntaxe est assez intuitive :
\begin{center}\verb=\draw[options] (point) tracé (point) tracé (point) ... ;=\end{center}
Voici un petit exemple :
\begin{LTXexample}[preset=\centering]
\begin{tikzpicture}
......@@ -1641,17 +1642,21 @@ Voici un petit exemple :
\end{LTXexample}
\subsubsection{Les noeuds}
\subsubsection{Les nœuds}
\label{subsubsec:noeud}
Les noeuds sont des cadres placés à certains points dans lesquels on peut écrire du texte (toutes les commandes \LaTeX{} sont autorisées).\\
Il y a deux possibilités pour placer un noeud :
Les nœuds sont des cadres placés à certains points et dans lesquels on peut écrire du texte (toutes les commandes \LaTeX{} sont autorisées).\\
Il y a deux possibilités pour placer un nœud :
\begin{itemize}
\item Soit arbitrairement avec la commande "\verb=\node[position relative] at (point) {texte};="
\item Soit sur un chemin, en écrivant "\verb=node[position relative] {texte}=" à l'endroit approprié
\item soit arbitrairement avec la commande "\verb=\node[position relative] at (point) {texte};=" ;
\item soit sur un chemin, en écrivant "\verb=node[position relative] {texte}=" à l'endroit approprié.
\end{itemize}
\medbreak
L'exemple ci dessous résume ces méthodes
Les positions relatives possibles sont : \verb|above|, \verb|below|, \verb|left|, \verb|right|, \verb|above left|, \verb|above right|, \verb|below left|, \verb|below right|.
Lorsque le nœud est placé sur un tracé, il est également possible de préciser à quel endroit du tracé le situer avec les options suivantes : \verb|at start|, \verb|very near start|, \verb|near start|, \verb|midway|, \verb|near end|, \verb|very near end|, \verb|at end|.
L'exemple suivant résume ces commandes :
\begin{LTXexample}[preset=\centering]
\begin{tikzpicture}
\node at(1,1) {$\bullet$};
......@@ -1661,24 +1666,13 @@ L'exemple ci dessous résume ces méthodes
\end{tikzpicture}
\end{LTXexample}
Les positions relatives possibles sont :\\
\verb=above, below, right, left, above left, above right, below left, below right=
Si le tracé est incliné, on peut imposer au nœud de suivre le tracé de la même façon avec l'option \verb=sloped=.
Lorque le neud est placé sur un tracé, il est également possible de préciser à quel endroit du tracé le situer avec les options suivantes :\\
\verb=at start, very near start, near start, midway, near end, very near end, at end=\\
Lorqu'on tracé est penché on peut imposer au noeud de se pencher de la même façon avec l'option \verb=sloped=
Finalement on peut si besoin encore ajuster la position en déplaçant le noeud avec les options \verb%xshift=<valeur>% ou \verb%yshift=<valeur>%, où \verb=<valeur>= est une grandeur positive ou négative donnée dans les conventions \LaTeX{} (par exemple \verb=2pt= ou \verb=-1.2cm=).
Finalement, la position du nœud est encore ajustable avec les options \verb%xshift=<valeur>% et \verb%yshift=<valeur>%, où \verb=<valeur>= est une grandeur positive ou négative donnée dans les conventions \LaTeX{} (par exemple \verb=2pt= ou \verb=-1.2cm=).
\subsubsection{Nommer les points}
Pour plus de clarté dans l'écriture ou pour éviter d'avoir à écrire plusieurs fois des coordonnées, il est possible de donner un nom aux points avec la commande \\
\verb=\coordinate (nom) at (point);=\\
Rq : ces noms ne servent que dans l'écriture du fichier source, pour afficher le nom des points il faut utiliser un noeud.
\startenteo Tu ne précises pas qu'on peut définir un noeud avec \verb|\draw ... node| et lui donner un nom en même temps ?\closeenteo\\
\startaurel J'avais complètement zappé qu'on pouvait faire ça, c'est vrai que c'est pratique. Bonne idée. \closeaurel\\
\startaurel Après réflexion je pense plutôt en parler dans une section consacrée à l'utilisation "avancée" des noeuds, parce que là tout de suite on voit pas trop l'utilité de nommer les noeuds, ça sert surtout quand on veut relier des noeuds entre eux pour faire des graphes \closeaurel
Pour plus de clarté dans l'écriture du code source ou pour éviter d'avoir à écrire plusieurs fois des coordonnées, il est possible de donner un nom aux points avec la commande \verb=\coordinate (nom) at (point);=\\. Ces noms ne servent qu'à l'écriture du fichier source ; pour afficher le nom des points, il faut utiliser un nœud.
Voici un exemple :
\begin{LTXexample}[preset=\centering,width=0.3\textwidth]
......@@ -1696,6 +1690,7 @@ Voici un exemple :
Le tableau suivant présente les tracés de base et leur syntaxe. Il est suivi par des exemples résumant ces commandes.\\
La seule vraie difficulté est la notation des arcs, qui est peu intuitive. Prenez le temps d'étudier l'exemple.
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
Tracé & Paramètres & Syntaxe \\
......@@ -1714,15 +1709,13 @@ La seule vraie difficulté est la notation des arcs, qui est peu intuitive. Pren
Ellipse & centre $O=(a,b)$, axe vertical $v$, axe horizontal $h$ & \verb=(a,b) ellipse (v and h)=\\
\hline
Courbe de Bézier & point de départ $(a,b)$, point d'arrivée $(c,d)$ & \verb=(a,b) .. controls (i,j)=\\
& points de controle $(i,j),(x,y)$ & \verb=and (x,y) .. (c,d)= \\
& points de contrôle $(i,j),(x,y)$ & \verb=and (x,y) .. (c,d)= \\
\hline
\end{tabular}
\end{center}
\medbreak
Remarquez que le rectangle peut être défini à partir de n'importe quel couple de points diagonalements opposés.\\
Les courbes de Bézier acceptent un nombre arbitraire de points de controle, ils doivent être séparés par \verb=and=.
\startenteo Au premier abord, on a du mal à comprendre pourquoi il y a deux exemples pour le rectangle, ce n'est pas super clair je trouve...\closeenteo\\
\startaurel Mouais effectivement, j'avais juste la flemme d'écrire une phrase, mais bon ce sera quand même plus clair \closeaurel
Le rectangle peut être défini à partir de n'importe quel couple de points diagonalement opposés.\\
Les courbes de Bézier acceptent un nombre arbitraire de points de contrôle ; ils doivent être séparés par \verb=and=.
\begin{LTXexample}[preset=\centering]
\begin{tikzpicture}
......@@ -1732,7 +1725,9 @@ Les courbes de Bézier acceptent un nombre arbitraire de points de controle, ils
\end{tikzpicture}
\end{LTXexample}
Remarquez que le rectangle a été défini en coordonnées relatives avec la notation \verb=++()=.\\Cette astuce est très efficace quand on ne sait plus quelles sont les coordonnées exactes. La référence est le dernier point tracé.
Dans l'exemple précédent, le rectangle a été défini en coordonnées relatives avec la notation \verb=++()=.\\
Cette astuce est très efficace quand on ne sait plus quelles sont les coordonnées exactes. La référence est le dernier point tracé.
\begin{LTXexample}[preset=\centering]
\begin{tikzpicture}
\draw[red] (0,0) ellipse (1.5 and 0.5);
......@@ -1744,7 +1739,8 @@ Remarquez que le rectangle a été défini en coordonnées relatives avec la not
\subsection{Chemin fermé}
Bien qu'on puisse simplement fermer un chemin par quelque chose comme \verb=\draw (A)--(B)--(C)--(A)= il est préférable d'utiliser l'instruction \verb=cycle=. \\En effet \verb=TikZ= s'attache alors à faire la jonction au pixel près et on peut utiliser des méthodes spécifiques aux chemins fermés comme \verb=\fill=, qui fait la même chose que \verb=\draw= en définissant en plus une surface que l'on peut colorier :
Bien que l'on puisse simplement fermer un chemin par quelque chose comme \verb=\draw (A)--(B)--(C)--(A)=, il est préférable d'utiliser l'instruction \verb=cycle=.\\
En effet, \texttt{TikZ} s'attache alors à faire la jonction au pixel près, ce qui permet d'utiliser des méthodes spécifiques aux chemins fermés comme \verb=\fill=, qui fait la même chose que \verb=\draw= en définissant en plus une surface que l'on peut colorier :
\begin{LTXexample}[preset=\centering]
\begin{tikzpicture}
\draw (0,0) -- (2,2) -- (2,0) -- cycle;
......@@ -1754,11 +1750,11 @@ Bien qu'on puisse simplement fermer un chemin par quelque chose comme \verb=\dra
\subsection{Grille}
On peut tracer une grille afin de rendre les coordonnées visibles.\\
Il est possible d'afficher la grille, ce qui rend les coordonnées visibles.\\
La syntaxe est la même que celle du rectangle, mais avec \verb=grid[options]=.\\
Les options utiles sont \verb%very thin, color=gray!20% car on veut en général que la grille n'altère pas la lecture de la figure. On peut de plus choisir le pas de la grille avec \verb=step=.
Les options utiles sont \verb%very thin, color=gray!20%, car on veut en général que la grille n'altère pas la lecture de la figure. On peut de plus choisir le pas de la grille avec \verb=step=.
Pour afficher les noeuds de texte clairement par dessus la grille on peut utiliser \verb%node[fill=white]%
Pour afficher les nœuds de texte clairement par-dessus la grille, on peut utiliser \verb%node[fill=white]%.
\begin{LTXexample}[preset=\centering]
\begin{tikzpicture}
\draw[very thin,color=gray!20] (-0.5,-0.5)
......@@ -1770,19 +1766,19 @@ Pour afficher les noeuds de texte clairement par dessus la grille on peut utilis
\end{tikzpicture}
\end{LTXexample}
ATTENTION ! \verb=grid= présente parfois des problèmes vis-à-vis de l'ordre de tracé. Il est en général préférable que ce soit votre premier tracé, afin d'être sur que les autres se tracent par dessus.
\emph{Nota Bene} : \verb=grid= présente parfois des problèmes vis-à-vis de l'ordre de tracé. Il est en général préférable que ce soit votre premier tracé, afin d'être sûr que les autres se tracent par-dessus.
\subsection{Axes et repère}
Malheureusement \verb=TikZ= ne possède pas d'options permettant de tracer automatiquement les repères et leurs axes.\\
Vous pouvez donc soit les tracer à la main avec \verb=\draw= et un peu d'imagination, soit vous référer à la section \ref{pgfplot} pour découvrir une extension qui fait ce travail.
Malheureusement, \texttt{TikZ} ne possède pas d'options permettant de tracer automatiquement les repères et leurs axes.\\
Vous pouvez soit les tracer à la main avec \verb=\draw= et un peu d'imagination, soit vous référer à la section \ref{pgfplot} pour découvrir une extension qui fait ce travail.
\subsection{Translation, rotation, homothétie}
Nous avons déjà vu comment translater des noeuds à la section \ref{subsubsec:noeud}, il suffit d'utiliser les options \\ \verb%xshift=<valeur>% et \verb%yshift=<valeur>% dans la commande \verb=\draw=, \verb=\node= ou une autre commande servant à tracer un objet.
Nous avons déjà vu comment translater des nœuds dans la section~\ref{subsubsec:noeud} : il suffit d'utiliser les options \verb%xshift=<valeur>% et \verb%yshift=<valeur>% dans la commande \verb=\draw=, \verb=\node=, ou toute autre commande servant à tracer un objet.
Il est également possible d'effectuer des rotations avec l'option \verb%rotate=<angle en degrés>%, remarquez qu'il est possible d'effectuer une rotation sur l'ensemble de la figure en utilisant cette option lors de l'ouverture de l'environnement \verb=tikzpicture=.
Il est également possible d'effectuer des rotations avec l'option \verb%rotate=<angle>% (en degrés, sens direct). Utiliser cette option lors de l'ouverture de l'environnement \texttt{tikzpicture} effectue une rotation de l'ensemble de la figure.
Enfin on peut effectuer une homothétie avec l'option \verb%scale=<valeur>%, également utilisable sur toute la figure, afin de changer sa taille.
Enfin, on peut effectuer une homothétie avec l'option \verb%scale=<valeur>%, également utilisable sur toute la figure, afin de changer sa taille.
Finissons par un exemple de transformations appliquées à toute la figure :
\begin{LTXexample}[preset=\centering]
......@@ -1795,13 +1791,10 @@ Finissons par un exemple de transformations appliquées à toute la figure :
\end{tikzpicture}
\end{LTXexample}
\subsection{Fenêtre d'affichage : \textit{clipping}}
\startaurel Je sais pas s'il faut mettre d'autres exemples, comme on peut utiliser ces options dans à peu près toutes les commandes tikz je manque d'inspiration, est-ce que ça suffit comme ça ? \closeaurel
\starttouille Tu présentes deux commandes et tu les appliques dans un exemple, je pense que cela suffit. Au pire, tu peux tracer une droite inclinée à 30\textdegree, comme ça on voit la rotation relative au rectangle en plus de la rotation totale. Par contre, peut-être dire en toutes lettres que la rotation se fait dans le sens canonique ? (même si l'exemple est clair là dessus) \closetouille
\subsection{Fenètre d'affichage : clipping}
On peut réduire la fenêtre d'affichage a une certaine fraction de la figure construite avec l'instruction \verb=\clip=. Il s'appliquera à tous les objets situés après son appel. \\
Les instructions placées juste après \verb=\clip= doivent conduire à la construction d'un chemin fermé (avec la même syntaxe que \verb=\draw=). Ce chemin délimitera la fenêtre d'affichage. Voici un exemple avec et sans clip :
On peut réduire la fenêtre d'affichage à une certaine fraction de la figure construite avec l'instruction \verb=\clip=. Elle s'appliquera à tous les objets situés après son appel. \\
Les instructions placées juste après \verb=\clip= doivent conduire à la construction d'un chemin fermé (avec la même syntaxe que \verb=\draw=). Ce chemin délimitera la fenêtre d'affichage. Voici un exemple avec et sans \emph{clip} :
\begin{LTXexample}[preset=\centering]
\begin{tikzpicture}
\draw[very thin,color=gray!20] (-0.5,-0.5)
......@@ -1820,14 +1813,13 @@ Les instructions placées juste après \verb=\clip= doivent conduire à la const
\draw (0,0) rectangle (1,1);
\end{tikzpicture}
\end{LTXexample}
Notez que dans le premier exemple le noeud est placé après \verb=grid= afin d'optimiser le tracé, et que dans le second exemple il est avant \verb=\clip= afin d'échapper au clipping.\\
L'ordre des commandes est important !
Notez que dans le premier exemple, le nœud est placé après \verb=grid= afin d'optimiser le tracé, et que dans le second exemple il est avant \verb=\clip= afin d'échapper au \emph{clipping}. L'ordre des commandes est important !
\section{Styles, couleurs et décorations}
Toutes les commandes de tracé possèdent de multiples options permettant de personnaliser une figure dans ses moindres détails.
Toutes les commandes de tracé possèdent de multiples options permettant de personnaliser les figures dans leurs moindres détails.
Nous présentons ici quelques une des options de tracé les plus utiles. Cependant gardez à l'esprit que la documentation de \verb=TikZ= fait plus de 1000 pages et qu'un tri drastique a donc été éffectué. Donc si vous ne trouvez pas votre bonheur ici, je ne peux que vous conseiller d'aller lire la documentation.
Nous présentons ici quelques une des options de tracé les plus utiles. Cependant, gardez à l'esprit que la documentation de \texttt{TikZ} fait plus de \num{1000} pages et qu'un tri drastique a donc été effectué. Par conséquent, si vous ne trouvez pas votre bonheur ici, nous ne pouvons que vous conseiller d'aller lire la documentation.
\subsection{Style des traits}
......@@ -1844,7 +1836,7 @@ Les options suivantes sont applicables à toute commande qui trace des lignes (j
\multicolumn{2}{|c|}{<sans options>} & \tikz \draw (0,0) -- (2,0); \\
\hline
\hline
\multirow{6}*{Epaisseur} & \verb=[[ultra thin]= & \tikz \draw[ultra thin] (0,0) -- (2,0);\\
\multirow{6}*{Epaisseur} & \verb=[ultra thin]= & \tikz \draw[ultra thin] (0,0) -- (2,0);\\
\cline{2-3}
& \verb=[very thin]= & \tikz \draw[very thin] (0,0) -- (2,0);\\
\cline{2-3}
......@@ -1857,7 +1849,7 @@ Les options suivantes sont applicables à toute commande qui trace des lignes (j
& \verb=[ultra thick]= & \tikz \draw[ultra thick] (0,0) -- (2,0);\\
\hline
\hline
\multirow{2}*{aspect} & \verb=[dotted]= & \tikz \draw[dotted] (0,0) -- (2,0);\\
\multirow{2}*{Aspect} & \verb=[dotted]= & \tikz \draw[dotted] (0,0) -- (2,0);\\
\cline{2-3}
& \verb=[dashed]= & \tikz \draw[dashed] (0,0) -- (2,0);\\
\hline
......@@ -1885,20 +1877,18 @@ Les options suivantes sont applicables à toute commande qui trace des lignes (j
\hline
\end{tabular}
\end{center}
Le changement de style des pointes de flèches est bien sur valable pour tous types de flèches.\\
Si ces options ne vous suffisent pas il existe une bibliothèque \verb=TikZ= appellée \verb=arrow= qui possède plus de pointes de flèches (mais souvenez-vous les bibliothèques tikz se chargent avec \verb=\usetikzlibrary{arrow}= et non \\ \verb=\usepackage=)
Le changement de style des pointes de flèches est bien entendu valable pour tous les types de flèches.\\
Si ces options ne vous suffisent pas, il existe une bibliothèque \texttt{TikZ} appelée \verb=arrow= qui possède plus de pointes de flèches\footnote{Rappel : les bibliothèques \texttt{TikZ} se chargent avec \verb|\usetikzlibrary{}|.}.
\subsection{Couleurs}
\label{subsec:tikzcolor}
Pour colorier un tracé il y a deux solutions : soit on met directement la couleur en option : \verb=[<couleur>]=, soit on veut régler la nuance de la couleur et on utilise \verb%[color=<couleur>!<valeur entre 0 et 100>]%.
Pour colorier un tracé, il existe deux solutions : soit on met directement la couleur en option (\verb=[<couleur>]=), soit on règle la nuance de la couleur (\verb%[color=<couleur>!<valeur entre 0 et 100>]%).
Les couleurs possibles sont toutes les couleurs de base définies par \LaTeX{} :\\
\verb=red, green, blue, cyan, yellow, magenta, black, white, gray=\\
On peut également utiliser si besoin les couleurs ajoutées par l'extension \verb=xcolor=.
Les couleurs possibles sont toutes les couleurs de base définies par \LaTeX{} : \verb|red|,\verb|green|,\verb|blue|,\verb|cyan|,\verb|yellow|,\verb|magenta|,\verb|black|,\verb|white|,\verb|gray|. Si nécessaire, on peut utiliser l'extension \verb=xcolor= pour plus de choix.
\startaurel Ajouter ici une référence à une section où on parle des couleurs \closeaurel
%\startaurel Ajouter ici une référence à une section où on parle des couleurs \closeaurel
Voici quelques exemples :
\begin{LTXexample}[preset=\centering]
......@@ -1911,7 +1901,7 @@ Voici quelques exemples :
\end{tikzpicture}
\end{LTXexample}
Enfin dans le cas des chemins fermés on peut colorier la figure avec \verb%[fill=<couleur>]%. Cette option est également applicable aux noeuds, et colorie alors leur arrière plan (voir la section \ref{subsec:nodeadv}) :
Dans le cas des chemins fermés, on peut colorier la figure avec \verb%[fill=<couleur>]%. Cette option est également applicable aux nœuds, et colorie alors leur arrière plan (voir la section \ref{subsec:nodeadv}) :
\begin{LTXexample}[preset=\centering]
\begin{tikzpicture}
\draw[blue,fill=magenta!35] (0,0) -- (1,0)
......@@ -1919,29 +1909,23 @@ Enfin dans le cas des chemins fermés on peut colorier la figure avec \verb%[fil
\node[red,fill=green] at (2,0.5) {A};
\end{tikzpicture}
\end{LTXexample}
ATTENTION il est nécessaire de définir la couleur des tracés AVANT la couleur de remplissage.
\emph{Nota Bene} : il est nécessaire de définir la couleur des tracés \emph{avant} la couleur de remplissage.
\subsection{Opacité}
Certains tracés comme \verb=grid= sont transparents par défaut, et d'autres comme \verb=\fill= sont opaques. Lorsqu'on utilise de tels tracés il est important de mettre les commandes dans le bon ordre : un tracé opaque couvrira tous les tracés précédents, un tracé transparent non.
Il est également possible de modifier l'opacité des tracés avec l'option \\
\verb%[opacity=<valeur entre 0 et 100]%
\startaurel C'est assez clair comme ça ou ça mérite un exemple ? \closeaurel
\starttouille Il serait sans doute pénible de faire un tableau qui dit qui est transparent ou opaque, et les gains seraient limités. À la limite, tu peux reformuler légèrement ta dernière phrase, par exemple : "Si vous souhaitez modifier cette caractéristique, vous pouvez utiliser l'option (...)" (sans faire de paragraphe séparé). Dans tous les cas, si les gens ont un souci à cause de ça, ils ont l'explication et la solution ensemble, tu peux difficilement faire mieux, et pas sûr qu'un exemple
apporte grand chose. \closetouille
Certains tracés (comme \verb=grid=) sont transparents par défaut, et d'autres (comme \verb=\fill=) sont opaques. Lorsqu'on utilise de tels tracés, il est important de mettre les commandes dans le bon ordre : un tracé opaque couvrira tous les tracés précédents, un tracé transparent non. Il est possible de modifier l'opacité des tracés avec l'option \verb%[opacity=<valeur entre 0 et 100]%.
\subsection{Les décorations}
L'outil \verb=decorate= est extrêmement complet, et possède un si grand nombre d'options qu'il est absolument impossible de toutes les présenter ici.\\
Je ne ferais donc que vous donner un avant gout de ce qu'il permet de faire avec deux ou trois exemples, sans plus d'explications, et je vous invite à lire la documentation si l'utilisation des outils de décoration vous intéresse.
Ce qui suit n'est qu'un avant-goût de ce qu'il permet de faire avec deux ou trois exemples, sans plus d'explications. Il est recommandé de lire la documentation si l'utilisation des outils de décoration vous intéresse.
Pour utiliser les décorations il faudra charger la bibliothèque \verb=decorations= et/ou une de ses sous bibliothèques.\\
Pour les exemples présentés ci-dessous vous aurez besoin de :\\
\verb=\usetikzlibrary{decorations.pathmorphing}= et \verb=\usetikzlibrary{decorations.markings}=
Pour utiliser les décorations, il faudra charger la bibliothèque \verb=decorations= et/ou une de ses sous bibliothèques.\\
Pour les exemples présentés ci-dessous, vous aurez besoin de :
\begin{center}\verb=\usetikzlibrary{decorations.pathmorphing}= \\ \verb=\usetikzlibrary{decorations.markings}=\end{center}
Etant un physicien de formation je vais vous présenter comme exemple une manière de réaliser les lignes de diagramme de Feynman :
%Etant un physicien de formation je vais vous présenter comme exemple une manière de réaliser les lignes de diagramme de Feynman :
Utilisons comme exemple une manière de réaliser les lignes de diagrammes de Feynman :
\begin{LTXexample}[preset=\centering,width=0.35\textwidth]
\begin{tikzpicture}
\draw[decorate, decoration={snake}, draw=red]
......@@ -1958,14 +1942,16 @@ Etant un physicien de formation je vais vous présenter comme exemple une maniè
\subsection{Créer des styles génériques}
Un style générique permet d'utiliser un set d'options compliquées plusieurs fois sans surcharger les options et sans tout réécrire.\\
On les définit avec la syntaxe (en dehors d'un tracé) :\\
On les définit avec la syntaxe suivante (en dehors d'un tracé) :
\begin{center}
\verb%\tizkset{%\\
\verb% monpremierstyle/.style={<options>},%\\
\verb% monsecondstyle/.style={<options>},%\\
\verb% ...%\\
\verb%}%
\end{center}
Par exemple pour tracer les diagrammes de l'exemple précédent nous pouvons commencer par définir des styles, puis les utiliser, de la façon suivante :
Par exemple, pour tracer les diagrammes de l'exemple précédent, nous pouvons commencer par définir des styles, puis les utiliser de la façon suivante :
\begin{LTXexample}[preset=\centering,width=0.35\textwidth]
\tikzset{
photon/.style={decorate,
......@@ -1984,24 +1970,37 @@ fermion/.style={postaction={decorate},
\section{Représenter des fonctions et des données avec pgfplots}
\label{sec:pgfplots}
Nous ne verrons pas ici les fonctionnalités natives de \verb=PGF/TikZ= concernant le tracé de données, en effet il existe une extension de \verb=pgf= spécialement conçue pour aider au tracé de données et c'est elle que nous allons étudier. Je vous invite donc à la charger avec :
Nous ne verrons pas ici les fonctionnalités natives de \verb=PGF/TikZ= concernant le tracé de données ; il existe une extension de \verb=pgf= spécialement conçue pour aider au tracé de données et c'est elle que nous allons étudier. Elle se charge avec les commandes :
\begin{center}
\verb=\usepackage{pgfplots}=\\
\verb%\pgfplotsset{compat=newest}%
\end{center}
La seconde ligne charge les dernières fonctionnalités. Son absence peut provoquer un \textit{warning} de la part du compilateur.
La seconde ligne précise que l'on charge la dernière version de l'extension. Son absence peut provoquer un avertissement de la part du compilateur.
\subsection{Un repère et des axes}
\label{pgfplot}
Pas de représentation de fonctions sans axes à l'échelle !\\
C'est pourquoi nous allons commencer par voir comment tracer des axes.\\
Au cours de cette partie nous allons construire un système d'axes, progressivement et en voyant toutes les options utiles.
Pas de représentation de fonctions sans axes à l'échelle ! C'est pourquoi nous allons commencer par voir comment tracer des axes.\\
Au cours de cette partie, nous allons construire un système d'axes étape par étape, afin d'introduire progressivement toutes les options utiles.
\subsubsection{La base}
Les axes sont un environnement de \verb=pgfplots=, il suffira de placer la figure entre \verb=\begin{axis}= et \verb=\end{axis}=\\
Les options de l'environnement sont toutes les caractéristiques des axes, parmi les options les plus communes on trouve par exemple :\\
\verb%[title=<titre>, xlabel=<abscisse>, ylabel=<ordonnee>, xmin=<valeur>,xmax=<valeur>%\\
\verb%,ymin=<valeur>,ymax=<valeur>]%
Les axes sont un environnement de \verb=pgfplots= ; il suffira de placer la figure entre \verb=\begin{axis}= et \verb=\end{axis}=.\\
Les options de l'environnement sont toutes les caractéristiques des axes. Parmi les options les plus communes, on trouve :
\begin{center}
\verb|title=<titre>| \\
\begin{tabular}{c|c}
\verb|xlabel=<nom_abscisse>| & \verb|ylabel=<nom_ordonnee>| \\
\verb|xmin=<valeur>| & \verb|ymin=<valeur>|\\
\verb|xmax=<valeur>| & \verb|ymax=<valeur>|\\
\end{tabular}
\end{center}
Voici un exemple de mise en place d'axes :
\begin{LTXexample}[preset=\centering,width=0.60\textwidth]
......@@ -2020,8 +2019,8 @@ Voici un exemple de mise en place d'axes :
\subsubsection{Changer la taille et définir un repère orthonormé}
Il y a également des options permettant de définir la taille du graphique :
\verb%[height=<valeur>,width=<valeur>]%\\
Il existe également des options permettant de définir la taille du graphique :
\verb%[height=<valeur>,width=<valeur>]%.\\
Une autre option utile est \verb%[scale only axis=<true/false>]%, qui permet de changer d'échelle uniquement les unités de tracé et de laisser les textes (descriptions d'axes, légendes, noeuds) inchangés.
On peut de plus définir des axes orthonormés avec l'option \verb%[axis equal=<true/false>]% :
......@@ -2045,17 +2044,16 @@ On peut de plus définir des axes orthonormés avec l'option \verb%[axis equal=<
\subsubsection{Personnaliser le repère et ajouter une grille}
\label{subsubsec:repgrid}
Si les graduations des axes par défaut ne conviennent pas, on peut les choisir avec les options :\\
\verb%[xtick=<set de valeurs>,ytick=<set de valeurs>]%.\\
Si les valeurs ont une progression arithmétique, on peut définir le set avec les deux premières valeurs et la dernière, ainsi \verb%[xtick={0,1,...,5}]% a la même signification que \verb%[xtick={0,1,2,3,4,5}]%.\\
On peut ajouter aussi une graduation secondaire avec \verb%minor x tick num={<chiffre>}% où la chiffre en question indique le nombre de graduations.
Si les graduations par défaut des axes ne conviennent pas, on peut les choisir avec les options :
\begin{center}\verb%[xtick=<jeu de valeurs>,ytick=<jeu de valeurs>]%.\end{center}
Si les valeurs ont une progression arithmétique, on peut définir le jeu avec les deux premières valeurs et la dernière, ainsi \verb%[xtick={0,1,...,5}]% a la même signification que \verb%[xtick={0,1,2,3,4,5}]%.\\
On peut ajouter aussi une graduation secondaire avec \verb%minor x tick num={<nombre>}% où le nombre en question indique le nombre de graduations.
Si vous utilisez le paquet \texttt{siunitx} (section~\ref{sec:siunitx} page~\pageref{sec:siunitx}), il est possible d'exporter ses paramètres sur l'affichage des nombres à PGF avec la commande \verb|\SendSettingsToPgf| (inclus notamment le choix de point ou virgule en séparateur des décimales, l'espacement des milliers, \ldots). À chaque fois que \verb|\pgfmathprintnumber| est appelé (ce qui est le cas pour les axes), la personnalisation globale de \texttt{siunitx} s'appliquera.
Si vous utilisez le paquet \texttt{siunitx} (section~\ref{sec:siunitx} page~\pageref{sec:siunitx}), il est possible d'exporter ses paramètres sur l'affichage des nombres à PGF avec la commande \verb|\SendSettingsToPgf| (inclus notamment le choix du point ou de la virgule en séparateur des décimales, l'espacement des milliers, \dots). À chaque fois que \verb|\pgfmathprintnumber| est appelé (ce qui est le cas pour les axes), la personnalisation globale de \texttt{siunitx} s'appliquera.
On peut en outre changer l'aspect du repère pour retrouver une forme plus habituelle avec deux flèches à l'aide des options :\\
\verb%[axis x line=<position>, axis y line=<position>]%, où \verb=<position>= vaut au choix\\ \verb%left,right,bottom,top% ou \verb%center%.
On peut en outre changer l'aspect du repère pour retrouver une forme avec deux flèches, plus habituelle, à l'aide des options : \verb%[axis x line=<position>, axis y line=<position>]%, où \verb=<position>= vaut au choix \verb|left|, \verb|right|, \verb|bottom|, \verb|top| ou \verb|center|.
Enfin il est possible d'ajouter une grille coïncidant avec les graduations choisies (qui est donc préférable au \verb=grid= de \verb=TikZ=). Il y a deux type de grilles : la grille \verb%major% et la grille \verb%minor%, qui coïncident chacune avec le type de graduation correspondant.\\
Enfin, il est possible d'ajouter une grille coïncidant avec les graduations choisies (qui est donc préférable au \verb=grid= de \texttt{TikZ}). Il y a deux type de grilles : la grille \verb%major% et la grille \verb%minor%, qui coïncident chacune avec le type de graduation correspondant.\\
On peut au choix utiliser l'option \verb%grid=<none/minor/major/both>% pour modifier toutes les grilles, ou travailler axe par axe avec les options du type \verb%xmajorgrids=<true/false>% et \verb%xminorgrids=<true/false>%.
......@@ -2082,20 +2080,20 @@ On peut au choix utiliser l'option \verb%grid=<none/minor/major/both>% pour modi
\end{tikzpicture}
\end{LTXexample}
\subsubsection{Personnaliser les labels}
\subsubsection{Personnaliser les étiquettes}
\label{subsubsec:persolabels}
Les labels (les titres des axes définis par \verb%xlabel% et \verb%ylabel%) sont en réalité des noeuds. Ce qui signifie que vous pouvez leur appliquer toutes les options et transformations valables pour un noeud, ainsi que le placement "\verb=at=".
Les étiquettes (les titres des axes définis par \verb%xlabel% et \verb%ylabel%) sont en réalité des nœuds. Cela signifie que vous pouvez leur appliquer toutes les options et transformations valables pour un nœud, ainsi que le placement (\verb=at=).
Pour ajouter des options de noeud à un label il faut utiliser cette syntaxe :\\
\verb%[xlabel style={<options>},ylabel style={<options>}]%
Pour ajouter des options de nœud à une étiquette, il faut utiliser la syntaxe suivante :
\begin{center}\verb%[xlabel style={<options>},ylabel style={<options>}]%\end{center}
Pour placer le label avec "\verb%at%", il en général plus pratique d'utiliser les \textit{coordonnées cs} : c'est un système de coordonnées dans lequel l'extrémité inférieure gauche de la figure est le point $(0,0)$ et l'extrémité supérieure droite le point $(1,1)$.\\
On peut même être plus précis et préciser que l'on veut un décalage par rapport à l'axe (après tout on veut placer un label) avec \verb%xticklabel% ou \verb%yticklabel%.
Pour placer l'étiquette avec \verb%at%, il en général plus pratique d'utiliser les \og coordonnées cs \fg{} : c'est un système de coordonnées dans lequel l'extrémité inférieure gauche de la figure est le point $(0,0)$ et l'extrémité supérieure droite le point $(1,1)$.\\
On peut même être plus précis et indiquer que l'on veut un décalage par rapport à l'axe (après tout on veut placer un label) avec \verb%xticklabel% ou \verb%yticklabel%.
Enfin on peut aussi préciser des points d'ancrage avec \verb%[anchor=<ancre>]% (les ancrages sont expliqués à la section \ref{subsec:nodeadv}), en particulier il y a une ancre valable uniquement pour les labels : \verb%near ticklabel%
Finalement, on peut aussi préciser des points d'ancrage avec \verb%[anchor=<ancre>]% (les ancrages sont expliqués à la section \ref{subsec:nodeadv}) ; en particulier, l'ancre \verb|near ticklabel| n'est valable que pour les étiquettes.
Complétons encore notre exemple en améliorant le placement des labels :
Complétons encore notre exemple en améliorant le placement des étiquettes :
\begin{LTXexample}[preset=\centering,width=0.60\textwidth]
\begin{tikzpicture}
\begin{axis}[
......@@ -2119,79 +2117,68 @@ Complétons encore notre exemple en améliorant le placement des labels :
\end{axis}
\end{tikzpicture}
\end{LTXexample}
Notez bien la syntaxe particulière de \verb%at%, on lui passe un point en tant qu'argument, il faut donc des parenthèses (pour le point), entourées d'accolades (pour l'option).
\startaurel Bon j'ai essayé de faire la construction au fur et à mesure en parlant de tout, du coup c'est forcément illisible à la fin :)\\
J'ai besoin d'un regard extérieur : la pilule passe ou pas ? \closeaurel
Notez bien la syntaxe particulière de \verb%at% : on lui passe un point en tant qu'argument, il faut donc des parenthèses (pour le point) entourées d'accolades (pour l'option).
\startenteo En prenant le temps de lire, ça passe très bien. Néanmoins, il pourrait être judicieux d'annoncer au début de la sous-section qu'on va construire un exemple complet
étape par étape. \closeenteo
\subsubsection{Personnaliser le titre, gérer les références et la numérotation}
Le titre est également un nœud et se personnalise donc de la façon indiquée% au \ref{subsubsec:persolabels}.
juste au-dessus.
\subsubsection{Personnaliser le titre, gérer les référence et la numérotation}
Le titre est également un noeud et se personnalise donc de la façon indiquée au \ref{subsubsec:persolabels}.
Mais notez qu'on obtient en général un bien meilleur résultat sans utiliser le titre proposé par \verb=pgfplots= mais en prenant plutôt celui de l'environnement \verb=figure= (voir au \ref{subsec:flottants}), dans lequel on peut encapsuler la \verb=tikzpicture=. On gère de cette façon les références et la numérotation des figures.
Il faut remarquer que l'on obtient en général un bien meilleur résultat sans utiliser le titre proposé par \verb=pgfplots=, mais en prenant plutôt celui de l'environnement \verb=figure= (voir la sous-section~\ref{subsec:flottants}), dans lequel on peut encapsuler l'environnement \verb=tikzpicture=. On gère de cette façon les références et la numérotation des figures.
\subsubsection{Des échelles semi-log et log-log}
Pour utiliser des échelles semi-logarithmiques ou logarithmique rien de plus simple : il suffit de changer d'environnement d'axes !\\
En réalité \verb=pgfplots= prévoit quatre environnements d'axes :
Il s'avère que \verb=pgfplots= prévoit quatre environnements d'axes :
\begin{itemize}
\item \verb=axis= pour une échelle linéaire en $x$ et $y$
\item \verb=semilogxaxis= pour une échelle linéaire en $y$ et logarithmique en $x$
\item \verb=semilogyaxis= pour une échelle linéaire en $x$ et logarithmique en $y$
\item \verb=loglogaxis= pour une échelle logarithmique en $x$ et $y$
\item \verb=axis= pour une échelle linéaire en $x$ et $y$ ;
\item \verb=semilogxaxis= pour une échelle linéaire en $y$ et logarithmique en $x$ ;
\item \verb=semilogyaxis= pour une échelle linéaire en $x$ et logarithmique en $y$ ;
\item \verb=loglogaxis= pour une échelle logarithmique en $x$ et $y$.
\end{itemize}
Le logarithme utilisé est le logarithme naturel de base $e$, et les nombres sous les axes seront de la forme d'une puissance de $10$.\\
Pour travailler à une telle échelle vous pourrez bien sur utiliser la notation $10^{-6} \equiv $"1e-6"
La notation \verb|1e-n| pour représenter $10^n$ est correctement interprétée.
%Pour travailler à une telle échelle, vous pourrez bien sur utiliser la notation $10^{-6} \equiv $"1e-6"
\subsubsection{Des réglages généraux avec pgfplotsset}
Si vous tracez plusieurs graphiques avec les mêmes options pour les axes, vous voudrez proablement éviter de tout recopier à chaque fois.\\
C'est à ça que sert la commande \verb=\pgfplotsset{}=, déjà mentionnée pour son option \verb%compat=newest%. Les arguments passés à cette commande seront définis comme option pour chaque graphique \verb=pgfplots= que vous tracerez.
Si vous tracez plusieurs graphiques avec les mêmes options pour les axes, vous voudrez probablement éviter de tout recopier à chaque fois.\\
C'est l'intérêt de la commande \verb=\pgfplotsset{}=, déjà mentionnée pour son option \verb%compat=newest%. Les arguments passés à cette commande seront définis comme option pour chaque graphique \verb=pgfplots= que vous tracerez.
\subsection{Tracer des courbes : la commande addplot}
Pour ceux qui ont survécu à la partie précédente, il est grand temps d'attaquer les choses vraiment intéressantes : le tracé de fonctions !
\subsubsection{Prérequis sur les options et la cycle list}
\subsubsection{Prérequis sur les options et la \texttt{cycle list}}
\label{subsubsec:cyclelist}
De même que les axes, les tracés avec \verb=\addplot= sont très largement personnalisables.\\
Il peut donc être très pénible de devoir définir toutes les options de chaque tracé.\\
C'est justement à ça que sert la \verb=cycle list= : c'est une liste de sets d'options prédéfinies qui s'appliqueront à chaque tracé, dans l'ordre : imaginons que votre graphe comprend deux tracés, alors le premier prendra le premier set de la \verb=cycle list= et sera bleu avec des marqueurs en forme de cercles, tandis que le second prendra le set suivant et sera rouge avec des marqueurs en forme de carrés.
De même que pour les axes, les tracés avec \verb=\addplot= sont très largement personnalisables. Il peut donc devenir très pénible de devoir définir toutes les options de chaque tracé.\\
Pour résoudre ce problème, il existe la \verb=cycle list= : c'est une liste d'ensembles d'options prédéfinies qui s'appliqueront à chaque tracé, dans l'ordre. Imaginons que votre graphe comprend deux tracés : le premier prendra le premier ensemble de la \verb=cycle list= et sera bleu avec des marqueurs en forme de cercles, tandis que le second prendra l'ensemble suivant et sera rouge avec des marqueurs en forme de carrés.
Ce procédé est bien sur très commun et est utilisé par de nombreux logiciels de tracés, mais il est important de bien le saisir afin de comprendre les différentes façons de choisir les options :
\begin{itemize}
\item \verb=\addplot= sans options utilise la \verb=cycle list= par défaut