Introduction
Comment dessiner de jolis tableaux de signes et de variations pour des publications mathématiques avec Latex et le puissant package tkz-tab ?
Une fois que l’on a compris le mécanisme des trois principales macros à connaître (tkzTabInit
, tkzTabLine
,
tkzTabVar
), un tableau de signes et de variations est construit en quelques minutes.
Squelette du tableau, tkzTabInit
Importer le package tkz-tab package dans le document Latex :
\usepackage{tkz-tab}
Pour initialiser un tableau, utiliser \tkzTabInit
, commande à placer dans un environnement tkzpicture
.
\documentclass[tikz]{standalone}
\usepackage{amsmath,amssymb}
\usepackage{tkz-tab}
\begin{document}
\begin{tikzpicture}
\tkzTabInit[lgt=3,espcl=1.5]
{$x$ / 1 , $f'(x)=-\sin(x)$ / 1, $f(x)=cos(x)$ / 2 }
{$0$, $\dfrac{\pi}{2}$, $\pi$, $\dfrac{3\pi}{2}$, $2\pi$}
\end{tikzpicture}
\end{document}
La syntaxe globale de la commande \tkzTabInit
est :
\tkzTabinit[local options]{e(1)/h(1),...,e(p)/h(p)}{a(1),...,a(n)}
2 listes obligatoires et des options facultatives.
{e(1)/h(1),...,e(p)/h(p)}
: données de la colonne de gauche. 1 élémente(p)
\( \implies \) 1 ligne, aussi le nombre d’éléments définit le nombre de lignes du tableau. Les hauteurs (h(p)
) sont en centimètres.{a(1),...,a(n)}
: valeurs en entête. Ce qui définit le nombre de colonnes après la première colonne de gauche.
Dans l’exemple ci-dessus, 2 options appliquées :
lgt
redimensionne la largeur de la première colonne (en centimètres).espcl
redimensionne l’espacement entre 2 valeurs dans l’entête (en centimètres).
Le code minimum pour un tableau tkzTab
est le suivant :
\tkzTabInit{ / 1}{ , }
Utiliser les accolades pour échapper les virgules "," dans les nombres :
\tkzTabInit{$x$ / 1, $x^2$ / 1}{ $0$, ${0,5}$, $1$ }
Structure d’un programme tkz-tab
Quand le squelette d’un tableau est prêt avec \tkzTabInit
, la structure globale du programme est alors le suivant :
\begin{tikzpicture}
\tkzTabInit{…}{…}
commande pour la ligne 1
commande pour la ligne 2
…
\end{tikzpicture}
Les commandes sont (liste exhaustive) :
\tkzTabLine
: crée une ligne de signes\tkzTabVar
: crée une ligne de variations\tkzTabIma
,\tkzTabVal
: ajoute des valeurs intermédiaires\tkzTabSlope
: ajoute des valeurs de dérivées dans une ligne de signes\tkzTabTan
,\tkzTabTan
: ajoute des tangentes horizontales
Les 2 premières commandes sont les plus importantes.
Ligne de signes, tkzTabLine
L’argument de la commande \tkzTabLine
pour créer une ligne de signes est une liste.
Pour \(n\) valeurs dans l’entête du tableau,
\tkzTabLine
attend une liste de \(2n - 1\) éléments : \(n\) éléments placés sous les valeurs et \(n - 1\) éléments placés
entre les valeurs :
\begin{tikzpicture}
\tkzTabInit[lgt=3,espcl=1.5]
{$x$ / 1 , $f'(x)=-\sin(x)$ / 1, $f(x)=cos(x)$ / 2 }
{$0$, $\dfrac{\pi}{2}$, $\pi$, $\dfrac{3\pi}{2}$, $2\pi$}
\tkzTabLine
{ , , - , , , , + , , }
\end{tikzpicture}
Les symboles autorisés sous les valeurs sont :
z
: zéro centré sur une ligne verticale en pointillést
: ligne verticale en pointillésd
: double barre verticale
Remarque : ils ne sont pas autorisés entre 2 valeurs.
\begin{tikzpicture}
\tkzTabInit[lgt=3,espcl=1.5]
{$x$ / 1 , $f'(x)=-\sin(x)$ / 1, $f(x)=cos(x)$ / 2 }
{$0$, $\dfrac{\pi}{2}$, $\pi$, $\dfrac{3\pi}{2}$, $2\pi$}
\tkzTabLine
{z, , - , , z, , + , ,z}
\end{tikzpicture}
Le symbole h
dessine une zone interdite (fonction non définie) : l’intervalle est en hâchures.
Évidemment, le symbole h
ne peut être appliqué que pour un élément de la liste entre 2 valeurs.
\begin{tikzpicture}
\tkzTabInit[lgt=3]
{$x$ / 1 , $f'(x)$ / 1, $f(x)=\sqrt{\dfrac{x-1}{x+1}}$ / 2 }
{$-\infty$, $-1$, $1$, $+\infty$}
\tkzTabLine
{ , + , d , h , d, +, }
\end{tikzpicture}
Ligne de variations, tkzTabVar
La macro \tkTabVar
construit une ligne de variations. L’argument est une liste comme pour \tkTabLine
.
Pour \(n\) valeurs en entête, la liste contiendra \(n\) groupes.
- \( \pm / e \) pour positionner un élément sous une valeur: \(+\) au sommet, \(-\) au bas de la ligne de variations.
/R
si il n’y a rien à faire pour une valeur.
\begin{tikzpicture}
\tkzTabInit[lgt=3]
{$x$ / 1 , $f'(x)=-\sin(x)$ / 1, $f(x)=cos(x)$ / 2 }
{$0$, $\dfrac{\pi}{2}$, $\pi$, $\dfrac{3\pi}{2}$, $2\pi$}
\tkzTabLine
{z, , - , , z, , + , ,z}
\tkzTabVar
{ +/$1$, R/ , -/$-1$, R/, +/$1$}
\end{tikzpicture}
Concernant la continuité, la discontinuité et les zones interdites, les symboles sont :
- Double barre verticale et continuité :
-C/x
,+C/x
- Double barre verticale et discontinuité :
-D/x
,+D/x
,D-/x
,D+/x
- Zone interdite :
-H/x
,+H/x
- Combinaisons:
-CH/x
,+CH/x
,-DH/x
,+DH/x
Des exemples concrets sont bien mieux que de très longues explications sur les symboles C/D/H :
\begin{tikzpicture}
\tkzTabInit[lgt=3,espcl=1.5]
{$x$ / 1 , $f'(x)$ / 1, $f(x)=\sqrt{\dfrac{x-1}{x+1}}$ / 2 }
{$-\infty$, $-1$, $1$, $+\infty$}
\tkzTabLine
{ , + , d , h , d, +, }
\tkzTabVar
{ -/1 , +DH/$+\infty$, -C/0, +/1}
\end{tikzpicture}
\begin{tikzpicture}
\tkzTabInit[lgt=2.75]
{ $x$/1 , $f'(x)$/1 , $f(x) = tan(x)$/2 }
{ $0$, $\dfrac{\pi}{2}$, $\pi$}
\tkzTabLine
{ , + , d , + , }
\tkzTabVar
{ -/$0$ , +D-/$+\infty$/$-\infty$ , +/$0$}
\end{tikzpicture}
Valeurs intermédiaires dans les lignes de variations, tkzTabIma, tkzTabVal
tkzTabIma
Pour ajouter des valeurs dans les flèches de variations pour des valeurs en entête existantes et définies avec \tkzTabInit
, utiliser \tkzTabIma
après \tkzTabVar
.
\tkzTabIma {position de départ de la flèche}{position de fin de la flèche}{position de la valeur d’entête}{valeur à afficher sur la ligne}
\begin{tikzpicture}
\tkzTabInit[lgt=3,espcl=1.5]
{$x$ / 1 , $f'(x)=-\sin(x)$ / 1, $f(x)=cos(x)$ / 2 }
{$0$, $\dfrac{\pi}{2}$, $\pi$, $\dfrac{3\pi}{2}$, $2\pi$}
\tkzTabLine
{z, , - , , z, , + , ,z}
\tkzTabVar
{ +/$1$, R/ , -/$-1$, R/, +/$1$}
\tkzTabIma{1}{3}{2}{0}
\tkzTabIma{3}{5}{4}{0}
\end{tikzpicture}
tkzTabVal
Dans un paragraphe précédent, un tableau de signes et de variations a été construit pour la fonction \(f(x) = tan(x)\).
Souvent, des valeurs remarquables sont affichées sur les lignes de variations. Dans l’exemple ci-dessus, on veut afficher la valeur de \(tan(x)\) pour \(\dfrac{\pi}{4}\) et \(\dfrac{3\pi}{4}\).
Sans avoir à redéfinir \tkzTabInit
, \tkzTabLine
, \tkzTabVar
afin d’ajouter \(\dfrac{\pi}{4}\) et \(\dfrac{3\pi}{4}\), des valeurs d’entête et
leurs valeurs correspondantes sur les lignes de variations peuvent être ajoutées en utilisant \tkzTabVal
.
Comme \tkzTabIma
, la commande \tkzTabVal
est appelée après \tkzTabVar
.
\tkzTabVal {position de départ de la flèche}{position de fin de la flèche}{position relative entre le début et la fin [0-1]}
{valeur en entête}{valeur à afficher sur la ligne}
\begin{tikzpicture}
\tkzTabInit[lgt=2.60]
{ $x$/1 , $f'(x)$/1 , $f(x) = tan(x)$/2.5 }
{ $0$, $\dfrac{\pi}{2}$, $\pi$}
\tkzTabLine
{ , + , d , + , }
\tkzTabVar
{ -/$0$ , +D-/$+\infty$/$-\infty$ , +/$0$}
\tkzTabVal {1}{2}{0.5}{$\dfrac{\pi}{4}$}{$1$}
\tkzTabVal {2}{3}{0.5}{$\dfrac{3\pi}{4}$}{$1$}
\end{tikzpicture}
L’exemple dans cet article qui construit le tableau pour la fonction cosinus sur le domaine \([0,2\pi]\)
est alors bien plus facilement codé en utilisant \tkzTabVal
: \(\dfrac{\pi}{2}\) et \(\dfrac{3\pi}{2}\) ne sont en effet plus explicitement définis dans les macros \tkzTabInit
, \tkzTabLine
et \tkzTabVal
.
\begin{tikzpicture}
\tkzTabInit[lgt=3,espcl=2.5]
{$x$ / 1 , $f'(x)=-\sin(x)$ / 1, $f(x)=cos(x)$ / 2 }
{$0$, $\pi$, $2\pi$}
\tkzTabLine
{z, - , z , + , z}
\tkzTabVar
{ +/$1$ , -/$-1$ , +/$1$}
\tkzTabVal {1}{2}{0.5}{$\dfrac{\pi}{2}$}{$0$}
\tkzTabVal {2}{3}{0.5}{$\dfrac{3\pi}{2}$}{$0$}
\end{tikzpicture}
Dans les 2 exemples précédents, le positionnement est facile, les valeurs intermédiaires à ajouter sont exactement au milieu de la flèche {0.5}
.
Dans l’exemple ci-dessous, une valeur intermédiaire est ajoutée sur la flèche partant de la position #1 et finissant à la position #3. La position est qualitativement définie à 0.4 pour respecter l’échelle.
\begin{tikzpicture}
\tkzTabInit[espcl=6]
{$x$/1 , $f'(x)$/1 , $f(x)$/2}
{$0$ , $\sqrt{e}$ , $+\infty$}
\tkzTabLine{d,+,0,+,}
\tkzTabVar{D- / $-\infty$ , R/ , + / $0$ }
\tkzTabVal[draw]{1}{3}{0.4}{$1$}{$-e$}
\end{tikzpicture}
Remarquer l’option draw
ajoutée dans la macro tkTabVal
pour faciliter la lecture : une ligne verticale en pointillés est affichée entre
la valeur en entête et la valeur intermédiaire sur la ligne de variations.
Valeurs des dérivées, tkzTabSlope
Pour ajouter les valeurs des dérivées sur une ligne de signes, utiliser tkzTabSlope
après la commande tkzTabLine
.
\tkTabSlope { position/valeur à gauche/valeur à droite, position/valeur à gauche/valeur à droite, … }
\begin{tikzpicture}
\tkzTabInit[lgt=2.70]
{ $x$/1 , $f'(x)=\dfrac{1}{\cos^2x}$/2 , $f(x) = tan(x)$/2.5 }
{ $0$, $\dfrac{\pi}{2}$, $\pi$}
\tkzTabLine
{ , + , d , + , }
\tkzTabSlope { 1//$1$, 2/+\infty/+\infty, 3/1/ }
\tkzTabVar
{ -/$0$ , +D-/$+\infty$/$-\infty$ , +/$0$}
\tkzTabVal {1}{2}{0.5}{$\dfrac{\pi}{4}$}{$1$}
\tkzTabVal {2}{3}{0.5}{$\dfrac{3\pi}{4}$}{$1$}
\end{tikzpicture}
Tangentes horizontales, tkzTabTan
Utiliser tkzTabTan
pour dessiner des tangentes horizontales qui montrent plus précisément dans les variations les extrema, la convexité, la concavité, les points d’inflexion… :
\tkTabTan { position de départ de la flèche, position de fin de la flèche , position de la valeur d’entête, valeur à appliquer sur la tangente }
\begin{tikzpicture}
\tkzTabInit[lgt=3]
{$x$ / 1 , $f'(x)=2x$ / 1, $f(x)=x^2$ / 2 }
{$-\infty$, $0$, $+\infty$}
\tkzTabLine
{ , - , z , + , }
\tkzTabSlope
{ 1//-\infty , 3/+\infty/ }
\tkzTabVar
{ +/$+\infty$, -/ , +/$+\infty$ }
\tkzTabTan
{1}{2}{2}{$0$}
\end{tikzpicture}
À propos des styles
Le style par défaut est généralement suffisant, mais il est possible d’appliquer des styles personnalisés (couleurs, arrière-plan…) pour la plupart des éléments d’un tableau avec tikzset
:
- Flèches
- Nœuds
- Double barres
- Barres verticales
- …
Les options de style sont très nombreuses et ce n’est pas l’objet de cet article.
Dans l’exemple qui suit, un style personnalisé est appliqué pour les zones interdites, celui par défaut est quelque peu "affreux".
\begin{tikzpicture}
\tikzset{h style/.style = {pattern = north west lines,
pattern color = red!30}}
\tkzTabInit[lgt=3]
{$x$ / 1 , $f'(x)$ / 1, $f(x)=\sqrt{\dfrac{x-1}{x+1}}$ / 2 }
{$-\infty$, $-1$, $1$, $+\infty$}
\tkzTabLine
{ , + , d , h , d, +, }
\tkzTabVar
{ -/1 , +DH/$+\infty$, -C/0, +/1}
\end{tikzpicture}