% \iffalse meta-comment % % Copyright (C) 2018-2024 by Antoine Missier <antoine.missier@ac-toulouse.fr> % % This file may be distributed and/or modified under the conditions of % the LaTeX Project Public License, either version 1.3 of this license % or (at your option) any later version. The latest version of this % license is in: % % http://www.latex-project.org/lppl.txt % % and version 1.3 or later is part of all distributions of LaTeX version % 2005/12/01 or later. % To get the index compile with % makeindex -s gind.ist -o tablvar.ind tablvar.idx % \fi % % \iffalse %<*driver> \ProvidesFile{tablvar.dtx} %</driver> %<*package> \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{tablvar} [2024/08/09 v2.1 Tables of signs and variations] %</package> %<*driver> \documentclass{ltxdoc} %\usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[french]{babel} \usepackage{lmodern} \usepackage{geometry} % pour ��viter certains changements avec XeLaTeX \usepackage{tabvar} \let\barreFlipo\barre \let\barre\relax \let\discont\relax \usepackage{variations} \def\bbObrecht{\vrule\kern1pt\vrule} \let\bb\relax \let\variations\relax \usepackage{tkz-tab} \usepackage{pstricks} \usepackage{tableau} \usepackage[pstricks]{tablvar} \usepackage[style=french,font=fcm]{lgrmath} % pour un joli pi droit \usepackage[hyperindex=false]{hyperref} \usepackage{sectsty} \usepackage{makecell} \usepackage{spacingtricks} \usepackage{metalogo} % pour \LuaLaTeX et \XeLaTeX \usepackage{mflogo} % pour metapost \usepackage{colortbl} \frenchsetup{StandardListSpacing=true} \geometry{textwidth=355pt,vmarginratio=1:1,hmarginratio=3:2} % voisin de ltxdoc \newcommand*\dfrac[2]{{\displaystyle\frac{#1}{#2}}} \newcommand\e{\mathrm{e}} \newcommand\TikZ{\textnormal{Ti}\emph{k}\textnormal{Z}} \newcommand\chline{\arrayrulecolor{cyan}\hline\arrayrulecolor{black}} \definecolor{darkbrown}{rgb}{0.5,0.1,0.1} \allsectionsfont{\color{darkbrown}} \hypersetup{% bookmarksopen=true, bookmarksopenlevel=2, colorlinks, linkcolor=blue, citecolor=red, pdftitle={tablvar}, pdfsubject={LaTeX package}, pdfauthor={Antoine Missier} } \DisableCrossrefs %\CodelineIndex %\RecordChanges \begin{document} \DocInput{tablvar.dtx} %\PrintChanges %\PrintIndex \end{document} %</driver> % \fi % % \CheckSum{828} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % \changes{v0.1}{05/01/2014}{Version initiale personnelle} % \changes{v0.2}{11/11/2014}{Ajout de l'option tikz} % \changes{v0.3}{07/12/2014}{Ajout de l'environnement tablvar*} % \changes{v1.0}{11/11/2018}{Premi��re version publi��e, cr��ation de fichiers dtx et ins} % \changes{v1.0}{11/11/2018}{Nouvelle marcro bblim, changements dans les macros barre et ZIh} % \changes{v1.1}{12/04/2019}{Reprise README.md, tvloop -> varloop} % \changes{v1.2}{05/05/2019}{Modifications mineures dans la documentation} % \changes{v1.2}{02/06/2019}{Augmentation du facteur arraystretch par d��faut de 1.2 �� 1.4} % \changes{v2.0}{03/09/2023}{ % - Options g��r��es par xkeyval, % - tablvarstretch pass�� de 1.4 �� 1.6} % \changes{v2.0}{30/10/2023}{Calcul de la colonne pour la gestion des ZI} % \changes{v2.0}{05/11/2023}{ % - Nouvelles macros limg, limd, posvr, % - nouveaux types de colonnes pour les valeurs} % \changes{v2.0}{20/11/2023}{Comparatif avec les autres extensions} % \changes{v2.0}{25/11/2023}{Calcul de hauteur de la 1��re colonne pour l'ajustement des ZI} % \changes{v2.0}{02/12/2023}{ % - Nouveaux param��tres firstcolsep, extleft, extright, % - mise �� 0 du param��tre innercolsep} % \changes{v2.0}{14/12/2023}{Reprise de la doc} % \changes{v2.0}{15/12/2023}{Option tikz ou pstricks en fonction du compilateur} % \changes{v2.0}{16/12/2023}{Nouveau param��tre limsep} % \changes{v2.0}{20/12/2023}{Macro bas et mil valables pour un nb quelconque de lignes} % \changes{v2.0}{22/12/2023}{Macros @pos -> tv@pos, @@pos -> tv@@pos} % \changes{v2.1}{23/07/2024}{ % - Calcul de hauteur automatique de la colonne de l��gende : % * nouveaux param��tres rowtopsep et rowbottomsep % * tv@saveheight -> tv@setheight % - option pstricks possible avec LuaLaTeX + luapstricks, % - am��lioration du calcul de position de la macro mil, % - nouvelles macros limg*, limd* et bblim* % - exemple plus sophistiqu�� pour bblim} % % \GetFileInfo{tablvar.sty} % % \title{L'extension \textsf{tablvar}\thanks{Ce document % correspond �� \textsf{tablvar}~\fileversion, derni��re modification le 09/08/2024.}} % \author{Antoine Missier \\ \texttt{antoine.missier@ac-toulouse.fr}} % \date{9 ao��t 2024} % \maketitle % \tableofcontents % % \section{Introduction} % % Cette extension permet de construire des tableaux de variations et de signes % de mani��re simple et intuitive. % Bien que plusieurs autres extensions soient d��j�� d��di��es �� cette t��che % \footnote{Mentionnons \textsf{tabvar}~\cite{TABV} de Daniel Flipo et % \textsf{variations}~\cite{VARI} de Christian Obrecht ou, plus ��labor��s, % \textsf{tablor}~\cite{TABLOR} de Guillaume Connan et \textsf{tkz-tab}~\cite{TKZ} % de Alain Matthes. % Nous pr��sentons un comparatif �� la section \ref{comparatif}}, % nous pensons que \textsf{tablvar} poss��de quelques avantages : % une syntaxe simple, une haute qualit�� graphique, une vari��t�� de positionnements % et de r��glages, une documentation soign��e. % Les dessins, pour les fl��ches ou les zones interdites, sont obtenus % en exploitant les fonctionnalit��s des extensions graphiques PSTricks % (plus exactement \textsf{pst-node}) ou \TikZ. % Les fl��ches sont r��alis��es �� partir d'un \emph{graphe} de \emph{n��uds} % venant se \og superposer \fg{} au tableau lui-m��me. % % Le parti pris est d'utiliser la m��me syntaxe que les environnements % |array| (ou |tabular|) en laissant �� \LaTeX\ le soin de faire % la composition du tableau et �� l'extension graphique % (PSTricks ou \TikZ) celui % de r��aliser le dessin des fl��ches, automatis�� et sans intervention de l'utilisateur. % On a simplement besoin de pr��ciser, dans une commande |\variations|, % ce qui est en haut et ce qui est en bas. % % \medskip % L'extension poss��de deux options, utilis��es pour le trac�� automatique des fl��ches : % |pstricks| ou |tikz|, que l'on invoque dans le pr��ambule �� l'appel de l'extension : % |\usepackage[tikz]{tablvar}|. % Lorsque l'option n'est pas pr��cis��e, l'extension choisira \texttt{tikz} % pour un mode de sortie PDF direct (avec pdf\LaTeX\ ou \LuaLaTeX), % \texttt{pstricks} sinon (avec \LaTeX\ > dvips > ps2pdf ou \XeLaTeX). % Pour l'option |tikz|, il faut compiler \emph{deux fois}, % la premi��re fois les fl��ches ne sont pas correctement dessin��es % (un message de compilation le rappelle). % % \medskip % Cette documentation donne une galerie d'exemples, d��crit les commandes % fournies ainsi que diff��rentes possibilit��s de r��glages et d'ajustements personnels. % % \section{Utilisation} % % \subsection{Tableaux de variations simples} % % \DescribeEnv{tablvar} % Un tableau de variations (ou de signes) se d��finit par un environnement |tablvar| % qui \emph{doit ��tre en mode math��matique} (comme |array|). % % \medskip % Voici un premier tableau tout simple avec les commandes % \DescribeMacro{\haut} \DescribeMacro{\bas} \DescribeMacro{\mil} % de positionnement na��ves |\haut|, |\bas| et |\mil| (milieu). % %\[ %\begin{tablvar}{4} % \hline % x & -5 && -1 && 2 && 3 && 5 \\ % \hline % f'(x) & & + & 0 & - & 0 & + & 0 & - & \\ % \hline % \variations{ \mil{f(x)} & \bas{0} && \haut{2} && \bas{1} && % \haut{4} && \bas{-3} } % \hline %\end{tablvar} %\] % \begin{verbatim} %\[\begin{tablvar}{4} % \hline % x & -5 && -1 && 2 && 3 && 5 \\ % \hline % f'(x) & & + & 0 & - & 0 & + & 0 & - & \\ % \hline % \variations{ \mil{f(x)} & \bas{0} && \haut{2} && \bas{1} && % \haut{4} && \bas{-3} } % \hline %\end{tablvar}\] % \end{verbatim} % % L'argument obligatoire de l'environnement |tablvar| correspond au nombre % d'intervalles du tableau c'est-��-dire aussi au nombre de fl��ches (ici 4). % Les d��limiteurs |&| correspondent aux changements de colonnes % comme pour l'environnement |array|. % Outre la premi��re colonne de \emph{l��gendes}, il y a deux types de colonnes : % des colonnes de \emph{valeurs}, de largeur fixe (\texttt{2em} par d��faut) et centr��es, % et des colonnes \emph{intervalles} de largeur fixe (\texttt{3em} par d��faut) % \footnote{Une dimension peut ��tre exprim��e cm, pt, etc. % Le \texttt{em} correspond �� la largeur du \og m \fg dans la fonte utilis��e. % Cette unit�� �� l'avantage de s'ajuster lorsqu'on change de fonte % sans avoir besoin de modifier le code. L'unit�� de m��me type utilis��e pour les hauteurs % est le \texttt{ex}, hauteur du \og x \fg.}. % La longueur des fl��ches s'ajuste en fonction de la taille des valeurs % qu'elles relient et ne sont pas contraintes �� rester �� l'int��rieur des colonnes intervalles. % Lorsqu'une valeur est trop large, elle d��borde automatiquement % dans les colonnes intervalles sans alt��rer % les largeurs de colonne. % % \medskip % \DescribeMacro{\pos} % Les commandes |\haut| et |\bas| reposent sur une macro % plus g��n��rale qui est \cmd{\pos}\oarg{opt}\marg{ligne}\marg{valeur}. Celle-ci place % la \meta{valeur} sur la \meta{ligne} indiqu��e en cr��ant un n��ud pour les fl��ches. % La ligne des $x$ et les lignes contenant d��riv��e % et tableau de signes ont pour indice 0. % Les lignes de la partie variations sont num��rot��es 1, 2, 3, % \emph{du haut vers le bas}, dans le sens de l'��criture % et de la construction du tableau. % Le param��tre optionnel \meta{opt} % \footnote{Ce param��tre optionnel n'est pas impl��ment�� % et est sans effet pour l'option \texttt{tikz}.} % permet d'ajuster le positionnement des fl��ches : % |c| (centered, par d��faut), |b| (bottom) ou |t| (top). % % \medskip % \DescribeMacro{\pos*} % La commande |\mil|, utilis��e pour le $f(x)$ dans la premi��re colonne, % repose, elle, sur la commande plus g��n��rale \cmd{\pos*}\marg{ligne}\marg{valeur} % qui se comporte comme |\pos| mais ne cr��e pas de n��ud pour les fl��ches. % % Le second tableau de l'exemple ci-dessous est obtenu avec le code suivant % qui utilise les commandes |\pos| % �� la place de |\haut| et |\bas| (avec l'option |t| pour le max) % et |\pos*| �� la place de |\mil|. Comparer le positionnement des fl��ches. %\[ %\begin{tablvar}{2} % \hline % x & 0 & & \frac{1}{2} & & +\infty \\ % \hline % f'(x) & & + & 0 & - & \\ % \hline % \variations{\mil{f(x)} & \bas{2} && % \haut{f(\frac{1}{2})} && \bas{0}} % \hline %\end{tablvar} % \hspace{3.8em} %\begin{tablvar}{2} % \hline % x & 0 & & \frac{1}{2} & & +\infty \\ % \hline % f'(x) & & + & 0 & - & \\ % \hline % \variations{\pos*{2}{f(x)} & \pos{3}{2} && % \pos[t]{1}{f(\frac{1}{2})} && \pos{3}{0}} % \hline %\end{tablvar} %\] % \begin{verbatim} %\[\begin{tablvar}{2} % \hline % x & 0 & & \frac{1}{2} & & +\infty \\ % \hline % f'(x) & & + & 0 & - & \\ % \hline % \variations{ \pos*{2}{f(x)} & \pos{3}{2} && % \pos[t]{1}{f(\frac{1}{2}} && \pos{3}{0} } % \hline %\end{tablvar}\] % \end{verbatim} % \hypertarget{intervalwidth}{} % % \medskip % \DescribeEnv{tablvar\oarg{largeur}}\DescribeMacro{intervalwidth} % L'environnement |tablvar| accepte un argument optionnel qui r��gle % la largeur des colonnes intervalles. % L'on peut aussi passer diverses options avec la syntaxe \emph{cl��=valeur}, % par exemple la largeur des colonnes intervalles peut ��galement se r��gler avec % \texttt{intervalwidth=}\meta{largeur} % (voir section \ref{options} pour la liste d��taill��e des options). % % \DescribeMacro{\variations\oarg{nblignes}} % C'est la commande |\variations| qui se charge de la construction des fl��ches % en fonction du positionnement des valeurs. % Un param��tre optionnel permet de d��finir % un nombre arbitraire de lignes pour les variations (3 par d��faut). % % Voici un exemple avec un seul intervalle, utilisant l'argument optionnel \texttt{4em} % de \texttt{tablvar}, afin d'allonger un peu la largeur de l'intervalle, % et une partie variations construite uniquement sur 2 lignes. % La commande |\mil| positionne automatiquement son contenu % avec un d��calage vertical ad��quat. % % \noindent % \begin{minipage}[t]{8cm} % \begin{verbatim} %\[\begin{tablvar}[4em]{1} % \hline % x & -5 && +\infty \\ % \hline % \variations[2]{ \mil{f(x)} & \haut{2} && % \bas{-1} } % \hline %\end{tablvar} \] % \end{verbatim} % \end{minipage} % \begin{minipage}[t]{4.2cm} %\[\begin{tablvar}[4em]{1} % \hline % x & -5 && +\infty \\ % \hline % \variations[2]{\mil{f(x)} & \haut{2} && \bas{-1}} % \hline %\end{tablvar}\] % \end{minipage} % \hypertarget{colvalwidth}{} % % \DescribeMacro{colvalwidth} % La largeur des colonnes de valeurs est fix��e par d��faut �� \texttt{2em}, % ce qui est l��g��rement plus large qu'un infini avec un signe. % Lorsque toutes les valeurs sont ��troites, on peut ��ventuellement % diminuer la largeur des colonnes intervalles pour ��viter des espaces larges sur les % bords du tableau. % Il est cependant rarement utile de modifier cette valeur. %\[\begin{tablvar}[colvalwidth=1em,intervalwidth=3.5em]{4} % \hline % x & 0 && 1 && 2 && 3 && 5 \\ % \hline % \variations{ \pos*{2}{f(x)} & \pos{3}{0} && \pos{2}{1} && \pos{2}{1} % && \pos{1}{4} && \pos{3}{0} % } % \hline %\end{tablvar}\] % Pour placer des n��uds de fl��ches au milieu (sur la ligne 2), % on doit utiliser |\pos{2}| et non |\mil|. % Lorsqu'il y a une autre option dans l'environnement \texttt{tablvar}, % il faut utiliser la syntaxe compl��te % \texttt{intervalwidth=...} pour modifier la largeur des colonnes intervalles. % \begin{verbatim} %\[\begin{tablvar}[colvalwidth=1em,intervalwidth=3.5em]{4} % \hline % x & -5 && 0 && 2 && 3 && 5 \\ % \hline % \variations{ \pos*{2}{f(x)} & \pos{3}{-4} && \pos{2}{1} && \pos{2}{1} % && \pos{1}{4} && \pos{3}{0} } % \hline %\end{tablvar}\] % \end{verbatim} % % \subsection{Tableaux de signes avec barres de s��paration} % % \DescribeMacro{\barre} % La macro |\barre|, pr��sent��e dans l'exemple ci-dessous, sert de s��parateur % de colonne dans les tableaux de signes. Elle est bien s��r % facultative et poss��de un param��tre optionnel pour placer un 0 sur la barre. % Voici un exemple avec % \[ f(x)=-4x^3+3x^2+18x-3 \quad\mbox{et}\quad f'(x)=6(x+1)(-2x+3).\] %\[\begin{tablvar}[3.5em]{3} % \hline % x & -\infty && -1 && \frac{3}{2} && +\infty \\ % \hline % x+1 & & - & \barre[0] & + & \barre & + & \\ % \hline % -2x+3 & & + & \barre & + & \barre[0] & - & \\ % \hline % \mbox{Signe de }f'(x) & & - & \barre[0] & + & \barre[0] & - & \\ % \hline % \variations{ \mil{\makecell{\mbox{Variations} \\ \mbox{de }f}} & % \haut{+\infty} && \bas{-14} && \haut{\frac{69}{4}} && \bas{-\infty} } % \hline %\end{tablvar}\] % % La l��gende \og Variations de $f$ \fg est compos��e avec une coupure de ligne gr��ce �� % la commande |\makecell| de l'extension \textsf{makecell}~\cite{MKCELL} d'Olga Lapko. % \begin{verbatim} %\[\begin{tablvar}{3} % \hline % x & -\infty && -1 && \frac{3}{2} && +\infty \\ % \hline % x+1 & & - & \barre[0] & + & \barre & + & \\ % \hline % -2x+3 & & + & \barre & + & \barre[0] & - & \\ % \hline % \mbox{Signe de }f'(x) & & - & \barre[0] & + & \barre[0] & - & \\ % \hline % \variations{ \mil{\makecell{\mbox{Variations} \\ \mbox{de }f}} & % \haut{+\infty} && \bas{-14} && \haut{\frac{69}{4}} && % \bas{-\infty} } % \hline %\end{tablvar}\] % \end{verbatim} % % \subsection{Doubles barres, discontinuit��s et limites} % % \DescribeMacro{\bb} % Une double barre s'obtient avec la commande |\bb|. % % \DescribeMacro{\discont} % La commande |\discont| emp��che le dessin d'une fl��che entre deux n��uds, % en particulier pour ��viter de traverser une double barre. % On peut en placer jusqu'�� 4. % % \medskip % Une premi��re solution est d'interrompre la double barre pour placer % les limites qui resteront alors centr��es au milieu de la colonne % (mais il faut aimer). %\[\begin{tablvar}{2} % \hline % x & -\infty && 2 && +\infty \\ % \hline % \variations{\mil{\dfrac{1}{x-2}} & \pos{2}{0} && \bas{-\infty} % \pos*{2}{\bb} \discont \haut{+\infty} && \pos{2}{0} } % \hline %\end{tablvar}\] % \begin{verbatim} %\[\begin{tablvar}{2} % \hline % x & -\infty && 2 && +\infty \\ % \hline % \variations{\mil{\dfrac{1}{x-2}} & \pos{2}{0} && \bas{-\infty} % \pos*{2}{\bb} \discont \haut{+\infty} && \pos{2}{0} } % \hline %\end{tablvar}\] % \end{verbatim} % % \hypertarget{firstcolsep}{} % \DescribeMacro{\limg} \DescribeMacro{\limd} % Les macros |\limg|\oarg{pos}\marg{ligne}\marg{valeur} et % |\limd|\oarg{pos}\marg{lgn}\marg{val} % offrent une solution plus ��l��gante pour placer des limites �� gauche ou �� droite. % L'option de positionnement \meta{pos} correspond �� celle de la macro |\pos| % (\texttt{c}, \texttt{t} ou \texttt{b}). % % \DescribeMacro{\limg*}\DescribeMacro{\limd*} % Les variantes ��toil��es |\limg*| et |\limd*| sont des alias : % |\limg*{+}| signifie |\limg{1}{+\infty}|, % |\limg*{-}| correspond �� |\limg{|$n$|}{-\infty}| % (pour une partie variations sur $n$ lignes), % de m��me pour |\limd*|. % Tout autre argument que \texttt{+} ou \texttt{-} g��n��re un message d'erreur. % % \DescribeMacro{firstcolsep} % La colonne de l��gende peut ��tre ��largie en ajoutant de l'espace �� ses extr��mit��s % avec l'option \texttt{firstcolsep} (dont la valeur par d��faut est \texttt{5pt}). %\[\begin{tablvar}[firstcolsep=10pt,intervalwidth=4em]{2} % \hline % x & -\infty && 0 && +\infty \\ % \hline % -\frac{1}{x} & & + & \bb & - & \\ % \hline % \variations{ \mil{\e^{\frac{1}{x}}} & \haut{1} && \limg{3}{0} \bb % \discont \limd*{+} && \bas{1} } % \hline %\end{tablvar}\] % % \begin{verbatim} %\[\begin{tablvar}[firstcolsep=10pt,intervalwidth=4em]{2} % \hline % x & -\infty && 0 && +\infty \\ % \hline % -\frac{1}{x} & & + & \bb & - & \\ % \hline % \variations{ \mil{\e^{\frac{1}{x}}} & \haut{1} && \limg{3}{0} \bb % \discont \limd*{+} && \bas{1} } % \hline %\end{tablvar}\] % \end{verbatim} % \vspace{-2ex} % La macro |\e| compose le nombre d'Euler $\e$ en romain, % comme c'est la r��gle pour les constantes math��matiques % (cf. \textsf{mismath}~\cite{MIS} ou \textsf{frenchmath}~\cite{FR}). % % \bigskip % \DescribeMacro{\bblim}\DescribeMacro{\bblim*} % Sauf sur les bords du tableau ou lorsqu'il y a une zone interdite, % les doubles barres sont en g��n��ral accompagn��es �� la fois d'une limite �� gauche % et d'une limite �� droite. La commande |\bblim| permet alors d'all��ger la syntaxe. % Elle prend 4 arguments qui sont dans l'ordre \meta{ligne} et \meta{limite} % �� gauche puis �� droite de la double barre. % Cette macro trace la double barre, place les limites et cr��e une discontinuit��. % C'est un alias de % |\limg|\marg{ligne}\marg{valeur}|\bb\discont\limd|\marg{ligne}\marg{valeur}. % La seule diff��rence est que |\bblim| ne poss��de pas d'option de positionnement % des n��uds comme |\limg| et |\limd|. La forme ��toil��e offre une syntaxe % encore plus l��g��re lorsque les deux limites sont infinies : % |\bblim*{-}{+}| correspond �� |\bblim{3}{-\infty}{1}{+\infty}| % (lorsqu'il y a 3 lignes de variations). % %\[\begin{tablvar}{5} % \hline % x & -\infty && -2 && 0 && 1 && 2 && +\infty \\ % \hline % \variations{ \mil{\dfrac{\e^{\frac{1}{x}}}{x-2}} & \haut{0} && % \bas{-\frac{1}{4}\e^{-\frac{1}{2}}} && \bblim{1}{0}{3}{-\infty} && % \haut{-\e} && \bblim*{-}{+} && \bas{0} } % \hline %\end{tablvar}\] % \begin{verbatim} %\[\begin{tablvar}{5} % \hline % x & -\infty && -1 && 0 && 1 && +\infty \\ % \hline % \variations{ \mil{\dfrac{\e^{\frac{1}{x}}}{x-2}} & \haut{0} && % \bas{-\frac{1}{4}\e^{-\frac{1}{2}}} && \bblim{1}{0}{3}{-\infty} && % \haut{-\e} && \bblim*{-}{+} && \bas{0} } % \hline %\end{tablvar}\] % \end{verbatim} % \hypertarget{bordercolsep}{}\hypertarget{limsep}{} % % \DescribeMacro{bordercolsep}\DescribeMacro{limsep} % Le param��tre \texttt{bordercolsep} g��re l'espace �� gauche de la premi��re colonne % de valeurs et �� droite de la derni��re (\texttt{2pt} par d��faut), % \texttt{limsep} permet d'ajouter de l'espace entre une double barre et une limite % (\texttt{1pt} par d��faut). Il est rarement utile de les modifier, % sauf si on pr��f��re plus de blanc. % On peut y compris leur donner des valeurs n��gatives si l'on veut s'approcher % davantage des filets verticaux, par exemple \texttt{limsep=-1.5pt} % am��nerait au contact de la double barre). %\[\begin{tablvar}[bordercolsep=4pt,limsep=3pt]{3} % \hline % x & -\infty && 0 && 1 && +\infty \\ % \hline % f'(x) & & + & \bb & - & 0 & + & \\ % \hline % \variations{ \mil{x\e^{\frac{1}{x}}} & \bas{-\infty} && % \bblim{1}{0}{1}{+\infty} && \bas{\e} & & \haut{+\infty} } % \hline %\end{tablvar}\] % \begin{verbatim} %\[\begin{tablvar}[bordercolsep=4pt,limsep=3pt]{3} % \hline % x & -\infty && 0 && 1 && +\infty \\ % \hline % f'(x) & & + & \bb & - & 0 & + & \\ % \hline % \variations{ \mil{x\e^{\frac{1}{x}}} & \bas{-\infty} && % \bblim{1}{0}{1}{+\infty} && \bas{\e} & & \haut{+\infty} } % \hline %\end{tablvar}\] % \end{verbatim} % % L'environnement |tablvar*| \DescribeEnv{tablvar*} % sert �� g��rer correctement le positionnement % des doubles barres lorsqu'elles se trouvent aux extr��mit��s. % La diff��rence avec |tablvar| est que les colonnes % de valeurs des extr��mit��s ne sont plus centr��es mais align��es �� gauche pour % la premi��re et �� droite pour la derni��re. % %\[\begin{tablvar*}{2} % \hline % x & 0 && 1 && +\infty \\ % \hline % \variations{ \mil{\ln x -x} & \bb\limd*{-} && \haut{-1} && % \bas{-\infty} } % \hline %\end{tablvar*} %\quad %\begin{tablvar*}{2} % \hline % x & 0 && 1 && +\infty \\ % \hline % \variations{ \mil{\ln x -x} & \pos*{1}{\bb} \pos*{2}{\bb} % \bas{-\infty} && \haut{-1} && \bas{-\infty} } % \hline %\end{tablvar*}\] % % On observera l'utilisation de |\pos*| dans le second tableau, % pour tracer une double barre, sauf sur la ligne 3 o�� on place $-\infty$. % \begin{verbatim} %\[\begin{tablvar*}{2} % \hline % x & 0 && 1 && +\infty \\ % \hline % \variations{ \mil{\ln x -x} & \bb\limd*{-} && \haut{-1} && % \bas{-\infty} } % \hline %\end{tablvar*} %\quad %\begin{tablvar*}{2} % \hline % x & 0 && 1 && +\infty \\ % \hline % \variations{ \mil{\ln x -x} & \pos*{1}{\bb} \pos*{2}{\bb} % \bas{-\infty} && \haut{-1} && \bas{-\infty} } % \hline %\end{tablvar*}\] % \end{verbatim} % % \hypertarget{ext}{} % \DescribeMacro{extleft}\DescribeMacro{extright} % Dans \texttt{tablvar*}, si, �� une extr��mit�� sans double barre, % les valeurs ont des largeurs vraiment diff��rentes % leur alignement vers le bord peut ��tre in��l��gant. % L'environnement \texttt{tablvar} poss��de des options qui permettent % de choisir un alignement �� gauche ou �� droite de mani��re s��par��e pour % chaque extr��mit��. % Il s'agit des options \texttt{extleft} pour aligner la premi��re colonne �� gauche % et \texttt{extright} % pour aligner la derni��re colonne �� droite % (alors que \texttt{tablvar*} impose les deux). % Ci-dessous, on n'a utilis�� que l'option \texttt{extleft} % \footnote{En fait \texttt{extleft} et \texttt{extright} sont des cl��s bool��ennes, % la valeur \texttt{=true} ��tant facultative.} % pour ��viter que le 1 ne soit coll�� au bord droit % et qu'il garde un bon centrage par rapport �� $+\infty$. % % \noindent\begin{minipage}[t]{7.4cm} % \begin{verbatim} %\[\begin{tablvar}[extleft]{1} % \hline % x & 0 && +\infty \\ % \hline % \variations[2]{ \mil{1-\dfrac{1}{x}} % & \bb \limd*{-} && \haut{1} } % \hline %\end{tablvar}\] % \end{verbatim} % \end{minipage} % \begin{minipage}[t]{5cm} %\[\begin{tablvar}[extleft]{1} % \hline % x & 0 && +\infty \\ % \hline % \variations[2]{ \mil{1-\dfrac{1}{x}} % & \bb \limd*{-} && \haut{1} } % \hline %\end{tablvar}\] % \end{minipage} % % \subsection{Valeurs remarquables} % % Nous appellerons \emph{valeur remarquable}, un valeur particuli��re % que l'on place dans un tableau de variations et qui sera reli��e par des pointill��s % �� son ant��c��dent. % \medskip % % \DescribeMacro{\vr} % Une premi��re approche est placer ces valeurs remarquables par dessus % les fl��ches de variations. % Pour relier ces valeurs remarquables �� leurs ant��c��dents par des pointill��s % (trac��s r��alis��s dans la commande |\variations|), on place une commande |\vr| % sur la ligne des $x$ et une commande |\vr| dans la partie variations. % % Voici un exemple o�� la valeur remarquable % est plac��e dans la colonne intervalle.\\ % \begin{minipage}[t]{7.4cm} % \begin{verbatim} %\[\begin{tablvar*}[6em]{1} % \hline % x & 0 & \vr{1} & +\infty \\ % \hline % \variations{ \mil{\ln x} & % \bb \limd*{-} & \vr{0} & % \pos[t]{1}{+\infty} } % \hline %\end{tablvar*}\] % \end{verbatim} % \end{minipage} % \begin{minipage}[t]{5cm} %\[\begin{tablvar*}[6em]{1} % \hline % x & 0 & \vr{1} & +\infty \\ % \hline % \variations{ \mil{\ln x} & % \bb \limd*{-} & \vr{0} & % \pos[t]{1}{+\infty} } % \hline %\end{tablvar*}\] % \end{minipage} % % Un autre exemple avec deux valeurs remarquables, plac��es cette fois % dans des colonnes valeurs. Il y a alors 3 colonnes intervalles et % la partie variations est compos��e sur 4 lignes. %\[\begin{tablvar}[stretch=1.2,intervalwidth=1em]{3} % \hline % x & -\infty && \vr{0} && \vr{1} && +\infty \\ % \hline % \variations[4]{ \mil{\exp x} & \bas{0} && % \vr[3]{1} && \vr{\e} && \haut{+\infty} } % \hline %\end{tablvar}\] % \begin{verbatim} %\[\begin{tablvar}[stretch=1.2,intervalwidth=1em]{3} % \hline % x & -\infty && \vr{0} && \vr{1} && +\infty \\ % \hline % \variations[4]{ \mil{\exp x} & \bas{0} && % \vr[3]{1} && \vr{\e} && \haut{+\infty} } % \hline %\end{tablvar}\] % \end{verbatim} % % \hypertarget{stretch}{} % \vspace{-\baselineskip} % Comme la partie |\variations| est compos��e sur 4 lignes, % les lignes sont num��rot��es de 1 (haut) �� 4 (bas). % La commande |\mil| op��re automatiquement un d��calage vertical appropri��. % % \DescribeMacro{\vr\oarg{ligne}} % La commande |\vr| poss��de elle aussi un argument optionnel % qui est la ligne sur laquelle placer la valeur remarquable, % lorsqu'il s'agit de la partie variations (ligne 2 par d��faut). % % \DescribeMacro{stretch} % �� cause des 4 lignes de variations, nous avons utilis�� l'option % \texttt{stretch} \label{stretch} % qui est un facteur d'��lasticit�� verticale, afin de diminuer la hauteur des lignes % du tableau % \footnote{On peut aussi utiliser ce param��tre pour agrandir la hauteur des lignes % mais l'effet sera global pour tout le tableau. % Malheureusement un ajustement automatique des hauteurs, % comme propos�� dans l'extension \textsf{cellspace}~\cite{CELLSP} % de Josselin Noirel, ne fonctionne pas pour les barres et doubles barres, % mais, si l'on souhaite agrandir sp��cifiquement une ligne, % on peut utiliser les commandes \texttt{\bslash cstrut} ou \texttt{\bslash vstrut} % de l'extension \textsf{spacingtricks} (voir exemples page \pageref{vstrut}).}. % Sa valeur par d��faut est de \texttt{1.6}, nous l'avons ramen��e dans cet exemple % �� \texttt{1.2}, la valeur standard des environnements \texttt{array} ��tant de \texttt{1}. % % \medskip % On peut pr��f��rer que les fl��ches de variations ne passent pas �� travers % les valeurs remarquables (qui doivent alors ��tre aussi des n��uds pour les fl��ches). % L'exemple qui suit pr��sente un tableau utilisant simultan��ment % les deux mani��res de traiter les valeurs remarquables. % La taille des fl��ches s'ajuste automatiquement. % Le second z��ro correspond �� la fois �� un n��ud pour les fl��ches % et �� une valeur remarquable (n��ud pour les pointill��s). % % \DescribeMacro{\posvr} % La commande |\vr| est inop��rante % lorsqu'elle est imbriqu��e avec une commande |\pos| (qui produit les n��uds). % Nous fournissons pour cet usage la commande |\posvr|\oarg{opt}\marg{ligne}\marg{valeur}, % o�� les 3 param��tres sont exactement les m��mes que ceux de |\pos| % (le premier ��tant le param��tre optionnel \texttt{c}, \texttt{t} % ou \texttt{b} pour le positionnement des fl��ches). % %\[\begin{tablvar}[extright,intervalwidth=2em]{4} % \hline % x & 0 && \vr{\alpha_1} && \frac{\pi}{6} && \vr{\alpha_2} && \frac{\pi}{2} \\ % \hline % f'(x) && + && + & 0 & - && - & \bb \\ % \hline % \variations{\mil{f(x)} & \pos[b]{3}{f(0)} && \vr{0} && % \pos[t]{1}{f(\frac{\pi}{6})} && \posvr{2}{0} && % \pos[b]{3}{-\infty}\bb } % \hline %\end{tablvar}\] % % L'option |[t]| pour le max en ligne 1 % est ici combin��e avec l'option |[b]| en ligne 3 et permet de conserver % un positionnement correct du 0 sur la fl��che. % % Pour placer la derni��re valeur, on aurait pu utiliser |\limg[b]{3}{-\infty}|, % mais ici |\pos[b]{3}{-\infty}| convient aussi �� cause de l'option \texttt{extright} % qui produit un alignement au fer �� droite de la derni��re colonne. % \begin{verbatim} %\[\begin{tablvar}[extright,intervalwidth=2em]{4} % \hline % x & 0 && \vr{\alpha_1} && \frac{\pi}{6} && \alpha_2 && % \frac{\pi}{2} \\ % \hline % f'(x) && + && + & 0 & - && - & \bb \\ % \hline % \variations{\mil{f(x)} & \pos[b]{3}{f(0)} && \vr{0} && % \pos[t]{1}{f(\frac{\pi}{6})} && \posvr{2}{0} && % \pos[b]{3}{-\infty}\bb } % \hline %\end{tablvar}\] % \end{verbatim} % % \DescribeMacro{\vrconnect} % C'est la macro graphique |\vrconnect| qui g��re le trac�� de ces traits pointill��s. % Elle peut ��tre red��finie pour changer leur aspect % (voir le code section \ref{graph}). % % On peut aussi placer les z��ros sur les fl��ches, sans pointill��s, % auquel cas, on n'a pas besoin de |\vr| ou |\posvr|, il suffit % d'utiliser |\pos*{2}{0}| (ou |\mil{0}|) pour le premier z��ro de l'exemple pr��c��dent % et |\pos{2}{0}| pour le second. % % \medskip % La commande |\vr| peut ��galement servir �� repr��senter des discontinuit��s % particuli��res, comme dans l'exemple suivant avec la fonction d��finie par %\[f(x)=\left\{ %\begin{array}{@{}cl} % \frac{\sin x}{x} &\mbox{si } x \neq 0 \\[1ex] % 0 &\mbox{si } x= 0 %\end{array} %\right. .\] % \begin{minipage}[t]{6.7cm} % \begin{verbatim} %\[\begin{tablvar}{2} % \hline % x & -\pi && \vr{0} && \pi \\ % \hline % \variations{\mil{f(x)} & \bas{0} && % \limg{1}{1}\hspace{2pt}\discont % \vr[3]{0}\hspace{2pt}\limd{1}{1} % && \bas{0} } % \hline %\end{tablvar}\] % \end{verbatim} % \end{minipage} % \hfill % \begin{minipage}[t]{5.5cm} %\[\begin{tablvar}{2} % \hline % x & -\pi && \vr{0} && \pi \\ % \hline % \variations{\mil{f(x)} & \bas{0} && % \limg{1}{1}\hspace{2pt}\discont % \vr[3]{0}\hspace{2pt}\limd{1}{1} % && \bas{0} } % \hline %\end{tablvar}\] % \end{minipage} % % \medskip % Voici un dernier exemple, avec deux tableaux conjoints. % %\[\begin{tablvar}{4} % \hline % x & 0 && \vr{\frac{\pi}{2}} && \vr{\pi} && % \vr{\frac{3\pi}{2}} && 2\pi \\ % \hline % \variations{ \mil{\cos x} & \haut{1} && \mil{0} && \bas{-1} && % \mil{0} && \haut{1} } % \hline % \variations{ \mil{\sin x} & \bas{0} && \posvr{1}{1} && % \vr{0} && \posvr{3}{-1} && \haut{0} } % \hline %\end{tablvar}\] % \begin{verbatim} %\[\begin{tablvar}{4} % \hline % x & 0 && \vr{\frac{\pi}{2}} && \vr{\pi} && % \vr{\frac{3\pi}{2}} && 2\pi \\ % \hline % \variations{ \mil{\cos x} & \haut{1} && \mil{0} && \bas{-1} && % \mil{0} && \haut{1} } % \hline % \variations{ \mil{\sin x} & \bas{0} && \posvr{1}{1} && % \vr{0} && \posvr{3}{-1} && \haut{0} } % \hline %\end{tablvar}\] % \end{verbatim} % % \subsection{Zones interdites} % % Nous abordons pour finir le trac�� de zones interdites, c'est-��-dire % d'intervalles o�� la fonction n'est pas d��finie. % On peut dessiner ces zones interdites en hachures ou en couleur. % % \medskip % \DescribeMacro{\ZI} % Lorsque l'on veut d��finir une zone interdite, on place la commande |\ZI| % dans les cellules correspondantes. La discontinuit�� des fl��ches est automatique. % %\[\begin{tablvar}{3} % \hline % x & -\infty & & -1 & & 1 & & +\infty \\ % \hline % f'(x) && \hspace{-0.5em} + & \bb & \ZI & \bb & - & \\ % \hline % \variations{ \pos*{2}{\sqrt{\dfrac{x-1}{x+1}}} % & \bas{1} && \limg{1}{+\infty} \bb & \ZI % & \bas{0} \barre && \haut{1} } % \hline %\end{tablvar}\] % % \begin{verbatim} %\[\begin{tablvar}{3} % \hline % x & -\infty & & -1 & & 1 & & +\infty \\ % \hline % f'(x) && \hspace{-0.5em} + & \bb & \ZI & \bb & - & \\ % \hline % \variations{ \pos*{2}{\sqrt{\dfrac{x-1}{x+1}}} % & \bas{1} && \limg{1}{+\infty} \bb & \ZI % & \bas{0} \barre && \haut{1} } % \hline %\end{tablvar}\] % \end{verbatim} % % \vspace{-\baselineskip} % Le |\hspace{-0.5em}| devant \texttt{+} a pour effet de d��caler le $+$ affich�� % vers la gauche afin de le recentrer. % En effet, les macros |\limg| et |\limd| placent les valeurs dans des bo��tes de largeur % nulle (gr��ce �� la commande |\zbox|, voir section \ref{cmd-pos}). % De ce fait, le contenu d'une colonne valeur (qui a une largeur fixe) % peut d��border en largeur % et empi��ter sur la colonne intervalle contigu��. % C'est le cas ici avec le $+\infty$. % % Pour la l��gende de la fonction, nous aurions pu utiliser |\mil| �� la place de |\pos*{2}|. % La diff��rence est que |\mil| affiche son contenu dans une bo��te de hauteur nulle % et n'agrandit donc pas la ligne correspondante du tableau. Avec |\pos*{2}|, % la seconde ligne des variations est l��g��rement plus haute. % \hypertarget{ZItype}{} % % \medskip % \DescribeMacro{ZItype} % Le type de rendu est d��fini par l'option \texttt{ZItype} qui peut prendre % deux valeurs : \texttt{c}, pour une zone interdite color��e, ou \texttt{h} (par d��faut), % pour une zone interdite hachur��e. % %\[\begin{tablvar}[ZItype=c,intervalwidth=3.5em]{3} % \hline % x & -\infty && -1 && 1 && +\infty \\ % \hline % -\frac{x}{\strut\sqrt{x^2-1}^3} && + & \bb & \ZI & \bb & - & \\ % \hline % \variations{\pos*{2}{\dfrac{1}{\sqrt{x^2-1}}} & \bas{0} && % \limg*{+} \bb & \ZI & % \bb \limd*{+} && \bas{0} } % \hline %\end{tablvar}\] % % Dans la l��gende de la deuxi��me ligne, le d��nominateur a ��t�� l��g��rement % agrandi en hauteur, gr��ce �� la commande \LaTeX\ |\strut|, afin d'��viter que % l'exposant 3 de la racine carr��e n'arrive au contact de la % barre de fraction (mais ceci n'a rien �� voir en fait avec les tableaux de variations). % \begin{verbatim} %\[\begin{tablvar}[ZItype=c,intervalwidth=3.5em]{3} % \hline % x & -\infty && -1 && 1 && +\infty \\ % \hline % -\frac{x}{\strut\sqrt{x^2-1}^3} && + & \bb & \ZI & \bb & - & \\ % \hline % \variations{\pos*{2}{\dfrac{1}{\sqrt{x^2-1}}} & \bas{0} && % \limg*{+} \bb & \ZI & % \bb \limd*{+} && \bas{0} } % \hline %\end{tablvar}\] % \end{verbatim} % \hypertarget{ZIcolor}{} % % \vspace{-\baselineskip} % \DescribeMacro{ZIcolor} % Pour une zone interdite color��e, la couleur peut ��tre modifi��e avec l'option % \texttt{ZIcolor}. On peut utiliser les noms de couleur pr��d��finis % ou cr��er son propre nom de couleur, % par exemple |\definecolor{redblue}{rgb}{0.1,0.3,0.7}| % \footnote{Le rectangle color�� est affich�� en transparence % afin de laisser voir les traits sous-jacents. % Il arrive que la compilation \LaTeX\ + dvips + ps2pdf % n'affiche pas cette transparence, % ce qui semble ��tre d�� �� un bug dans certaines versions de Ghostscript. % Dans ce cas une solution peut ��tre de compiler avec \XeLaTeX\ ou \LuaLaTeX\ % (si \textsf{luapstricks} est install�� sur votre distribution). % La compilation pdf\LaTeX\ avec l'option \texttt{tikz} ne pose pas ce probl��me.} % %\[\begin{tablvar}[ZItype=c,ZIcolor=green,ZIaddwidth=1pt]{3} % \hline % x & -\infty && -\frac{\sqrt{2}}{2} && \frac{\sqrt{2}}{2} && +\infty \\ % \hline % \frac{2x}{\sqrt{2x^2-1}} \cstrut{2.5ex} && - & \bb & \ZI & \bb & + & \\ % \hline % \variations{ \mil{\sqrt{2x^2-1}} & \haut{+\infty} && \bas{0} \barre % & \ZI & \bas{0} \barre && \haut{+\infty} } % \hline %\end{tablvar}\] % % Ici nous avons agrandi sp��cifiquement la seconde ligne, contenant la fraction % avec radical, gr��ce �� la commande |\cstrut| % de l'extension \textsf{spacingtricks}~\cite{SPA}. % Cette commande permet de garantir une \emph{profondeur} et une \emph{hauteur} donn��es, % sym��triques de part et d'autre de la ligne de centrage math��matique. % \label{vstrut}\hypertarget{ZIaddwidth}{} % % \DescribeMacro{ZIaddwidth} % L'option \texttt{ZIaddwidth} permet d'ajuster finement la largeur % des zones interdites. On a ajout�� \texttt{1pt} ce qui donne un rendu un peu meilleur % lorsque la zone interdite est encadr��e de barres simples et non de double barres. % \begin{verbatim} %\[\begin{tablvar}[ZItype=c,ZIcolor=green,ZIaddwidth=1pt]{3} % \hline % x & -\infty && -\frac{\sqrt{2}}{2} && \frac{\sqrt{2}}{2} && +\infty \\ % \hline % \frac{2x}{\sqrt{2x^2-1}} \cstrut{2.5ex} && - & \bb & \ZI & \bb % & + & \\ % \hline % \variations{ \mil{\sqrt{2x^2-1}} & \haut{+\infty} && \bas{0} \barre % & \ZI & \bas{0} \barre && \haut{+\infty} } % \hline %\end{tablvar}\] % \end{verbatim} % % lorsque des extrema de grande taille sont plac��s dans la partie \emph{variations}, % il est n��cessaire de modifier la hauteur des lignes, % pour ��viter de toucher le filet horizontal (au-dessus ou en-dessous) % \footnote{L'extension \textsf{tabularray}~\cite{TABUL} de Jianrui Lyu permettrait % ��ventuellement une gestion automatis��e des hauteurs de ligne % dans une possible version future.}. % Cette modification peut se faire % avec l'option \texttt{stretch} ou avec |\vstrut|\oarg{depth}\marg{height} % qu'il faut placer \emph{dans la colonne de l��gendes} pour % que |\ZI| prenne en compte sa hauteur. % Dans l'exemple suivant, \texttt{stretch=2.2} aurait donn�� le m��me r��sultat % mais une ligne des $x$ plus haute. % %\[\begin{tablvar}[4em]{4} % \hline % x & -\infty && -1 && 0 && 1 && +\infty \\ % \hline % \variations{ \mil{f(x)} \vstrut[2ex]{4.5ex} & \haut{+\infty} && % \limg{3}{-\infty} \bb & \ZI & \bb \limd{3}{-\infty} && % \haut{\dfrac{\e^{-1}}{2}} && \bas{0} } % \hline %\end{tablvar}\] % \begin{verbatim} %\[\begin{tablvar}[4em]{4} % \hline % x & -\infty && -1 && 0 && 1 && +\infty \\ % \hline % \variations{ \mil{f(x)} \vstrut[2ex]{4.5ex} & \haut{+\infty} && % \limg{3}{-\infty} \bb & \ZI & \bb \limd{3}{-\infty} && % \haut{\dfrac{\e^{-1}}{2}} && \bas{0} } % \hline %\end{tablvar}\] % \end{verbatim} % % On peut cr��er jusqu'�� 4 zones interdites sur des colonnes diff��rentes, % comme pour les discontinuit��s. % Voici un tableau contenant deux zones interdites, avec % \[ f(x)= \sqrt{(x^2-1)(x^2-4)} % \quad\mbox{et}\quad % f'(x) = \frac{x(2x^2-5)}{f(x)}.\] %{ \small %\[\begin{tablvar}[2.5em]{6} % \hline % x & -\infty && -2 && -1 && 0 && 1 && 2 && +\infty \\ % \hline % x & &-& \barre & \ZI & \barre &-& \barre[0] &+& \barre & \ZI & \barre &+& \\ % \hline % 2x^2-5 & &+& \barre & \ZI & \barre &-& \barre &-& \barre & \ZI & % \barre &+& \\ % \hline % f'(x) & &-& \bb & \ZI & \bb &+& \barre[0] &-& \bb & \ZI & \bb &+& \\ % \hline % \variations{ \mil{f(x)} & \haut{+\infty} && \bas{0} \barre % & \ZI & \bas{0} \barre && \haut{2} && \bas{0} % \barre & \ZI & \bas{0} \barre && \haut{+\infty} } % \hline %\end{tablvar}\] %} % \begin{verbatim} %{ \small \[\begin{tablvar}[2em]{6} % \hline % x & -\infty && -2 && -1 && 0 && 1 && 2 && +\infty \\ % \hline % x & &-& \barre & \ZI & \barre &-& \barre[0] &+& \barre & \ZI & % \barre &+& \\ % \hline % 2x^2-5 & &+& \barre & \ZI & \barre &-& \barre &-& \barre & \ZI & % \barre &+& \\ % \hline % f'(x) & &-& \bb & \ZI & \bb &+& \barre[0] &-& \bb & \ZI & \bb &+& \\ % \hline % \variations{ \mil{f(x)} & \haut{+\infty} && \bas{0} \barre % & \ZI & \bas{0} \barre && \haut{2} && \bas{0} % \barre & \ZI & \bas{0} \barre && \haut{+\infty} } % \hline %\end{tablvar}\] } % \end{verbatim} % % \DescribeMacro{\hachure} % Lorsque l'on dessine des zones interdites hachur��es % sur plusieurs colonnes contigu��s, % les hachures ne seront en g��n��ral pas jointives. % Pour pallier cela, on peut % utiliser la primitive graphique |\hachure| % qui permet de d��finir manuellement le rectangle �� hachurer. % L'exemple suivant montre les deux solutions. % %{ \footnotesize %\[ \begin{tablvar}[intervalwidth=1.8em,ZIaddwidth=1pt]{8} % \hline % x & -\infty && -2 && -\sqrt{\frac{5}{2}} && -1 % && 0 && 1 && \sqrt{\frac{5}{2}} && 2 && +\infty \\ % \hline % 2x & &-& \barre &-& \barre &-& \barre &-& \barre[0] &+& % \barre &+& \barre &+& \barre &+& \\ % \hline % 2x^2-5 & &+& \barre &+& \barre[0] &-& \barre &-& \barre &-& % \barre &-& \barre[0] &+& \barre &+& \\ % \hline % f'(x) & &-& \bb & \ZI & \barre & \ZI & \bb &+& % \barre[0] &-& \bb & & & & \bb & + & \\ % \hline % \variations{\mil{f(x)} & \haut{+\infty} && \bas{0}\barre & \ZI & % \barre & \ZI & \bas{0}\barre && \haut{2} && \bas{0}\barre \discont % && \pos*{3}{\hachure{-4.3em,16.4ex}{4.3em,-1.4ex}} && % \bas{0}\barre && \haut{+\infty} } % \hline %\end{tablvar} \] } % % La commande |\hachure| peut ��tre plac��e o�� l'on veut % dans le tableau, il suffit de donner les coordonn��es du rectangle vis�� �� % partir de la position courante (r��glage manuel). % Dans la partie variations, il faut mettre la commande |\hachure| dans un |\pos*|, % sinon elle sera r��p��t��e pour chaque ligne des variations. % Ce probl��me de discontinuit�� des lignes ne se pose pas avec des zones interdites color��es. % \begin{verbatim} %{ \footnotesize %\[ \begin{tablvar}[intervalwidth=1.8em,ZIaddwidth=1pt]{8} % \hline % x & -\infty && -2 && -\sqrt{\frac{5}{2}} && -1 % && 0 && 1 && \sqrt{\frac{5}{2}} && 2 && +\infty \\ % \hline % 2x & &-& \barre &-& \barre &-& \barre &-& \barre[0] &+& % \barre &+& \barre &+& \barre &+& \\ % \hline % 2x^2-5 & &+& \barre &+& \barre[0] &-& \barre &-& \barre &-& % \barre &-& \barre[0] &+& \barre &+& \\ % \hline % f'(x) & &-& \bb & \ZI & \barre & \ZI & \bb &+& % \barre[0] &-& \bb & & & & \bb & + & \\ % \hline % \variations{\mil{f(x)} & \haut{+\infty} && \bas{0}\barre & \ZI & % \barre & \ZI & \bas{0}\barre && \haut{2} && \bas{0}\barre \discont % && \pos*{3}{\hachure{-4.3em,16.4ex}{4.3em,-1.4ex}} && % \bas{0}\barre && \haut{+\infty} } % \hline %\end{tablvar} \] } % \end{verbatim} % % \medskip % \DescribeMacro{\ZI*} % Dans un tableau de signes sans partie variations, % il faut utiliser la commande |\ZI*| pour d��clencher le trac�� des hachures % (ou de la zone color��e) % \footnote{La commande \texttt{\bslash ZI} ne d��clenche le trac�� que sur % la derni��re ligne des variations et pas dans les lignes de signes ; % les occurrences de \texttt{\bslash ZI} qui pr��c��dent ne font que cumuler la hauteur.}. % Celle-ci doit ��tre plac��e sur la derni��re ligne de chaque bloc de hachures % \footnote{Un appel �� \texttt{\bslash ZI*} dans chaque cellule ne permettrait pas % de garantir la continuit�� des hachures.}. % %\[\begin{tablvar}{4} % \hline % x & -\infty && -1 && 1 && 2 && +\infty \\ % \hline % x-2 && - & \barre & - & \barre & - & \barre[0] & + & \\ % \hline % \sqrt{x^2-1} && + & \barre[0] & \ZI & \barre[0] & + & \barre & + & \\ % \hline % (x-2)\sqrt{x^2-1} && - & \barre[0] & \ZI* & \barre[0] & - & % \barre[0] & + & \\ % \hline %\end{tablvar}\] % \begin{verbatim} %\[\begin{tablvar}{4} % \hline % x & -\infty && -1 && 1 && 2 && +\infty \\ % \hline % x-2 && - & \barre & - & \barre & - & \barre[0] & + & \\ % \hline % \sqrt{x^2-1} && + & \barre[0] & \ZI & \barre[0] & + & \barre & + & \\ % \hline % (x-2)\sqrt{x^2-1} && - & \barre[0] & \ZI* & \barre[0] & - & % \barre[0] & + & \\ % \hline %\end{tablvar}\] % \end{verbatim} % % Pour tracer des rectangles de hachures ou des zones color��es % sur des lignes non contigu��s, dans un tableau de signes, % il faut un appel �� |\ZI*| pour d��clencher le trac�� de chaque rectangle. % %\[\begin{tablvar}{4} % \hline % x & -\infty && -1 && 1 && % 2 && +\infty \\ % \hline % \sqrt{x^2-1} && + & \barre[0] & \ZI* & \barre[0] & + & \barre & + & \\ % \hline % x-2 && - & \barre & - & \barre & - & \barre[0] & + & \\ % \hline % (x-2)\sqrt{x^2-1} && - & \barre[0] & \ZI* & \barre[0] & - & % \barre[0] & + & \\ % \hline %\end{tablvar}\] % % \begin{verbatim} %\[\begin{tablvar}{4} % \hline % x & -\infty && -1 && 1 && 2 && +\infty \\ % \hline % \sqrt{x^2-1} && + & \barre[0] & \ZI* & \barre[0] & + & \barre & + & \\ % \hline % x-2 && - & \barre & - & \barre & - & \barre[0] & + & \\ % \hline % (x-2)\sqrt{x^2-1} && - & \barre[0] & \ZI* & \barre[0] & - & % \barre[0] & + & \\ % \hline %\end{tablvar}\] % \end{verbatim} % % \subsection{Options et r��glages}\label{options} % % Comme indiqu�� dans l'introduction, l'extension \textsf{tablvar} poss��de deux options, % \texttt{pstricks} ou \texttt{tikz}, pour choisir la m��thode graphique % utilis��e. Ce sont les seules options reconnues �� l'appel |\usepackage|. % % \medskip % \DescribeMacro{\tablvarset\marg{keyval}} % Mais les environnements \texttt{tablvar} et \texttt{tablvar*} poss��dent ��galement % un jeu de param��tres qui peuvent ��tre d��finis de mani��re globale, % ou locale dans un environnement (ou un groupe |{...}|), % soit en utilisant des variables sp��cifiques, % soit (depuis la version 2.0) avec la commande |\tablvarset|\marg{keyval}, % bas��e sur le m��canisme \emph{cl��=valeur}. % % \DescribeEnv{tablvar\oarg{keyval}}\DescribeEnv{tablvar*\oarg{keyval}} % Ces param��tres peuvent aussi ��tre r��gl��s localement, % ind��pendamment des valeurs globales, % en tant qu'options d'un environnement % \texttt{tablvar}\oarg{keyval}\marg{num} % (ou \texttt{tablvar*}), avec la m��me syntaxe \emph{cl��=valeur}. % % \medskip % Le tableau suivant r��sume les options disponibles, pr��cise leur valeur par d��faut % et les variables de r��glage sp��cifiques (longueurs, bool��ens, etc.) % auxquelles elles sont associ��es et qui peuvent aussi ��tre modifi��es directement. % Les liens hypertextes (en bleu) renvoient vers un exemple dans la documentation. % % \begin{center}\ttfamily % \setlength{\extrarowheight}{1pt} % \begin{tabular}{lcl} % \hline % \textsf{Option} & \textsf{Valeur par d��faut} & % \textsf{Variable associ��e} \\ % \hline % \hyperlink{intervalwidth}{intervalwidth} & 3em & |\intervalwidth| \\ % \hyperlink{colvalwidth}{colvalwidth} & 2em & |\colvalwidth| \\ % \hyperlink{firstcolsep}{firstcolsep} & 5pt & |\firstcolsep| \\ % \hyperlink{bordercolsep}{bordercolsep} & 2pt & |\bordercolsep| \\ % \hyperlink{limsep}{limsep} & 1pt & |\limsep| \\ % \chline % \hyperlink{stretch}{stretch} & 1.6 & |\tablvarstretch| \\ % \chline % \hyperlink{ext}{extleft} & false & extleft \\ % \hyperlink{ext}{extright} & false & extright \\ % \chline % \hyperlink{ZItype}{ZItype} & h & |\ZItype| \\ % \hyperlink{ZIcolor}{ZIcolor} & gray & ZIcolor \\ % \hyperlink{ZIaddwidth}{ZIaddwidth} & 0pt & |\ZIaddwidth| \\ % \hline % \end{tabular} % \end{center} % Le premier groupe de param��tres ci-dessus g��re les largeurs de colonnes % et les espacements horizontaux : % \begin{description} % \item[\texttt{intervalwidth}] r��gle la largeur des colonnes \og intervalles\fg. % \item[\texttt{colvalwidth}] d��finit la largeur des colonnes de valeurs ; % il est rarement utile de modifier ce param��tre car lorsqu'une valeur est trop % large, elle peut d��border dans les colonnes intervalles adjacentes ; % la valeur par d��faut est l��g��rement plus grande qu'un infini avec un signe. % \item[firstcolsep] d��finit l'espace de s��paration par rapport aux filets verticaux % autour de la premi��re colonne (l��gendes). % \item[bordercolsep] d��finit l'espace de s��paration �� gauche de la premi��re % et �� droite de la derni��re colonne de valeurs, par rapport aux filets verticaux. % \item[limsep] r��gle l'espace de s��paration �� gauche ou �� droite d'une limite. % \end{description} % La hauteur des lignes se r��gle avec : % \begin{description} % \item[stretch] qui est un facteur d'��lasticit�� verticale agissant sur toutes % les lignes du tableau % \footnote{Pour augmenter la hauteur d'une ligne particuli��re, on pourra utiliser la % commande \texttt{\textbackslash vstrut}\oarg{depth}\marg{height} % (du package \textsf{spacingtricks}~\cite{SPA}), % o�� \meta{depth} d��signe la \emph{profondeur} et \meta{height} la \emph{hauteur} % minimales �� atteindre par rapport �� la ligne de \emph{base}, % ou encore \texttt{\bslash cstrut}\marg{height} qui garantit une hauteur minimale % en-dessous et au-dessus de la ligne de centrage math��matique.} ; % une valeur de 1 correspond �� la valeur standard % d'un environnement \texttt{array}. % \end{description} % Les deux param��tres suivants r��glent l'alignement des valeurs dans les colonnes % aux extr��mit��s du tableau : % \begin{description} % \item[extleft] aligne les valeurs �� gauche dans la premi��re colonne ; % l'effet est ad��quat lorsqu'il y a une double barre �� l'extr��mit�� gauche. % \item[extright] aligne les valeurs �� droite dans la derni��re colonne, % ad��quat pour une double barre �� l'extr��mit�� droite ; % l'environnement \texttt{tablvar*} fixe \texttt{extleft} % et \texttt{extright} �� \texttt{true}. % \end{description} % Enfin le dernier groupe de param��tres g��re l'aspect des zones interdites : % \begin{description} % \item[ZYtype] peut prendre deux valeurs : \texttt{h} pour une zone interdite hachur��e % ou \texttt{c} pour une zone interdite color��e. % \item[ZIcolor] d��finit la couleur des zones interdites color��es qui doit ��tre % un nom de couleur d��j�� d��finie ; ce param��tre % est sans effet si \texttt{ZItype=h}. % \item[ZIaddwidth] permet de jouer sur un r��glage fin de la largeur des zones interdites ; % la mani��re dont les zones interdites arrivent au contact des barres ou double barres % peut s'ajuster en faisant varier cette valeur (de $\pm$\texttt{1pt}). % \end{description} % % \medskip % \DescribeEnv{\texttt{tablvar}\oarg{largeur}} % L'argument optionnel des % environnements \texttt{tablvar} et \texttt{tablvar*} peut ��galement ��tre % une simple dimension (�� condition qu'il n'y ait aucune autre option), % qui sera alors interpr��t��e % comme la largeur donn��e �� \texttt{intervalwidth}. % % \medskip % Le rendu des commandes graphiques peut ��galement ��tre modifi��, % en red��finissant ces commandes, en particulier |\fleche|, |\vrconnect| et |\hachure| % gr��ce aux nombreuses options offertes par PSTricks ou \TikZ. % C'est le cas aussi de l'aspect des filets et barres du tableau qui sont d��finis % par les commandes |\tvrulewidth| (\texttt{0.4pt} par d��faut), % |\tvbarrewidth| (\texttt{0.5pt} par d��faut), % \texttt{tvbarrecolor} (|{gray}{0.7}| par d��faut) % et |\bbrulewidth| (\texttt{0.4pt} par d��faut). % Cette red��finition sera locale si on la place dans l'environnement math du tableau. % % Ci-dessous des fl��ches plus grasses, plus proches des n��uds et dont la pointe est % plus effil��e, cod�� ici pour PSTricks % (voir le code section \ref{graph} pour les commandes \TikZ). % L'��paisseur des filets du tableau et des barres a ��t�� doubl��e, la % couleur de la barre traversant 0 a ��t�� modifi��e % et les infinis ont ��t�� \og coll��s\fg aux bords avec \texttt{bordercolsep=-1pt}. % \[ \renewcommand{\fleche}{\ncline[linewidth=0.8pt,arrowsize=2pt 3, % arrowinset=0.5,nodesep=2pt]{->}} % \setlength{\tvrulewidth}{0.8pt} % \setlength{\bbrulewidth}{0.8pt} % \setlength{\tvbarrewidth}{1pt} % \definecolor{tvbarrecolor}{named}{cyan} %\begin{tablvar}[intervalwidth=4em,bordercolsep=-1pt]{3} % \hline % x & -\infty && -2 && 0 && +\infty \\ % \hline % -\frac{x+2}{x^4} && - & \barre[0] & + & \bb & - & \\ % \hline % \variations{\mil{\e^{\frac{x+1}{\vstrut{1.2ex} x^2}}} & \haut{1} && % \bas{\e^{-\frac{1}{4}}} && \bblim*{+}{+} && \bas{1} } % \hline %\end{tablvar} \] % \begin{verbatim} %\[ \renewcommand{\fleche}{\ncline[linewidth=0.8pt,arrowsize=2pt 3, % arrowinset=0.5,nodesep=1.5pt]{->}} %\setlength{\tvrulewidth}{0.8pt} %\setlength{\bbrulewidth}{0.8pt} %\setlength{\tvbarrewidth}{1pt} %\definecolor{tvbarrecolor}{named}{cyan} %\begin{tablvar}[intervalwidth=4em,bordercolsep=-1pt]{3} % \hline % x & -\infty && -2 && 0 && +\infty \\ % \hline % -\frac{x+2}{x^4} && - & \barre[0] & + & \bb & - & \\ % \hline % \variations{\mil{\e^{\frac{x+1}{\vstrut{1.2ex} x^2}}} & \haut{1} && % \bas{\e^{-\frac{1}{4}}} && \bblim*{+}{+} && \bas{1} } % \hline %\end{tablvar} \] % \end{verbatim} % % Enfin deux autres param��tres de type longueur |\rowtopsep| et |\rowbottomsep| % garantissent un espace minimum (de \texttt{2pt} par d��faut) % entre les filets horizontaux et le contenu des cellules, pour la colonne des l��gendes. % % \subsection{Nouveaut��s depuis la version 2.0} % % La version 2.0 pr��sente de nombreuses nouveaut��s : % \begin{itemize} % \item \emph{Il n'y a plus d'option par d��faut} �� l'appel de l'extension. % C'��tait \texttt{pstricks} dans les versions pr��c��dentes. % Dor��navant, si aucune option n'est pr��cis��e, l'extension choisira elle-m��me % en fonction du compilateur utilis��, donc \texttt{tikz} pour pdf\LaTeX\ % qui ne supporte pas le code PSTricks. % % \item \emph{Les colonnes de valeurs ont des largeurs fixes} (\texttt{2em} \emph{par d��faut)} % et non plus variables en fonction du contenu, comme c'��tait le cas jusqu'�� la version % 1.2. L'avantage est d'am��liorer le centrage pour les signes, % lorsque les colonnes de valeurs ont des largeurs tr��s diff��rentes, % et surtout d'��viter le recours �� des |\zbox| pour les colonnes de valeurs % bordant les zones interdites. % % \item Le param��tre |\innercolsep| qui g��re l'espacement entre les colonnes valeurs % et les colonnes intervalles, valait \texttt{4pt} % et a ��t�� fix�� �� \texttt{0pt} car, en l'absence de filets verticaux, % il ne sert plus �� rien avec les colonnes �� largeur fixe. % Mais, en contrepartie, \emph{la valeur par d��faut de} |\intervalwidth| % \emph{a ��t�� augment��e de} \texttt{2.5em} \emph{��} \texttt{3em}. % % \item Les r��glages peuvent d��sormais ��tre effectu��s, % avec la syntaxe \emph{cl�� = valeur} et la commande |\tablvarset|, % ou comme options des environnements \texttt{tablvar} et \texttt{tablvar*}. % % \item Un nouveau param��tre |\firstcolsep| (ou l'option \texttt{firstcolsep}) % permet d'��largir la colonne des l��gendes. % % \item Deux options permettent d'aligner de mani��re diff��renci��e % la premi��re colonne de valeurs �� gauche (\texttt{extleft}) % \emph{ou} la derni��re �� droite (\texttt{extright}) contrairement % �� l'environnement \texttt{tablvar*} qui fait obligatoirement les deux. % % \item Le param��tre |\tablvarstetch| (g��r�� par l'option \texttt{stretch}) % a ��t�� augment�� de \texttt{1.4} �� \texttt{1.6}. % % \item Une nouvelle macro |\posvr| permet de d��finir conjointement % un n��ud pour les fl��ches \emph{et} pour les valeurs remarquables. % % \item Deux nouvelles macros |\limg| et |\limd| g��rent d��sormais le bon positionnement % des limites �� gauche et �� droite, en particulier au bord des doubles barres % (en plus de |\bblim|) et surtout au bord des zones interdites. % Le recours explicite �� |\zbox| n'est plus n��cessaire. % % \item Un nouveau param��tre |\limsep| permet d'ajuster la proximit�� des % limites avec les doubles barres. % % \item Les zones interdites sont, �� pr��sent, d��finies par une unique commande |\ZI|, % avec une option \texttt{ZItype}. Les anciennes commandes |\ZIh|, pour les zones % interdites hachur��es, ou |\ZIc|, pour les zones interdites color��es, ne sont plus utiles, % mais elles ont ��t�� conserv��es et permettraient, par exemple, de dessiner % dans un m��me tableau une zone interdite hachur��e et une autre color��e, % m��me si cela ne viendrait �� l'esprit de personne. % % \item Il n'y a, en principe, plus besoin d'ajustement de hauteur des zones interdites % avec un param��tre optionnel |\ZI|\oarg{height}, lorsque des contenus de grande hauteur % sont plac��s dans la colonne des l��gendes. % N��anmoins ce param��tre a (pour l'instant) ��t�� conserv��, % pour faire ��ventuellement de micro-ajustements. % % \item On peut d��sormais r��gler l'��paisseur des filets verticaux et double barres % avec |\tvrulewidth| et |\bbrulewidth|. % % \item Le type de colonne \texttt{i}, utilis�� pour les colonnes intervalles, % est maintenant interne �� l'environnement \texttt{tablvar} % et il n'y a donc plus de risque d'incompatibilit�� avec une autre extension % qui utiliserait ce m��me identifiant comme type de colonne. % De nouveaux types de colonnes ont ��t�� d��finis pour les valeurs et l��gendes, % mais sont ��galement internes �� l'environnement \texttt{tablvar}. % % \item Les macros |\bas| et |\mil| peuvent �� pr��sent ��tre utilis��es % m��me lorsque le nombre de lignes de variations est diff��rent de 3. % Dans ce cas, commande |\mil| calcule automatiquement le d��calage vertical ; % l'utilisateur n'a plus besoin d'un appel explicite �� |\vdecal|. % \end{itemize} % % Dans la version 2.1 : % \begin{itemize} % \item Ont ��t�� ajout��s deux nouveaux param��tres |\rowtopsep| et |\rowbottomsep| % pour garantir un espace minimum (de \texttt{2pt} par d��faut) % entre les filets horizontaux et le contenu pour la colonne des l��gendes. % \item % Il est d��sormais possible d'utiliser l'option \texttt{pstricks} avec \LuaLaTeX, % si \textsf{luapstricks} est install�� sur votre distribution. % \item Le calcul du d��calage vertical de la commande |\mil| a ��t�� am��lior��, % dans le cas d'un nombre pair de lignes de variations. % \item Les nouvelles commandes ��toil��es |\limg*|, |\limd*| et |\bblim*| % permettent une ��criture simplifi��e de |\limg|, |\limd| et |\bblim|, % pour des limites $\infty$. % \end{itemize} % \medskip % Des probl��mes de composition peuvent appara��tre avec des tableaux % r��alis��s ant��rieurement �� la version 2.0, en particulier % pour les limites au bord des doubles barres, % lorsque l'on n'utilise ni |\bblim|, ni \texttt{tablvar*}. % S'il appara��t une limite positionn��e par dessus une double barre, % il suffit de remplacer les |\zbox| utilis��es ant��rieurement par |\limg| ou |\limd|. % D'autre part, les ajouts de hauteur qui peuvent avoir ��t�� utilis��s comme argument % optionnel de |\ZIh| ou |\ZIh*| sont �� ��liminer. % % \subsection{Comparatif avec les autres extensions}\label{comparatif} % % Le d��p��t d'archives CTAN (Comprehensive \TeX\ Archive Network) contient % quelques autres extensions d��di��es �� la r��alisation de tableaux de variations, % dans la rubrique \og Maths tabvar \fg. % Nous les d��crivons ici bri��vement. % \begin{description} % \item[tableaux] de Nicolas Kisselhoff~\cite{TABL}. % Propose un pseudo-code PSTricks, % certainement plus commode que d'��crire toutes les commandes PSTricks. % Attention l'extension doit ��tre appel��e avec |\usepackage{tableau}|, sans \texttt{x}. % Voici un exemple repris de la doc de \textsf{tableaux} avec le code en suivant. %\newpsstyle{hachured}{fillstyle=hlines,hatchwidth=0.2pt,hatchsep=2pt} %\setlength{\TabTitreL}{1cm} % %\begin{MonTableau}{1}{9}{1.5} %\psframe[style=hachured,linestyle=none](.3,1)(.45,0) % %\TabNewCol{0} %\rTabPut{Br}{-.15}{.25}{$x$} %\rTabPut{Br}{-.15}{.40}{$f(x)$} % %\TabNewCol{0} %\rTabPut{Bl}{.15}{.25}{$0$} %\rTabPut{Bl}{.15}{.60}{$\frac{3}{2}$} % %\TabNewCol{.30} %\rTabPut{B}{0}{.25}{$1$} %\rTabPut{Br}{-.15}{.80}{$+\infty$} %\psline[style=TabDblBarre](.3,0)(.3,1) % %\TabNewCol{.45} %\rTabPut{B}{0}{.25}{$\frac{3}{2}$} %\rTabPut[2]{B}{0}{.10}{\TabZ} % %\TabNewCol{1} %\rTabPut{Br}{-.15}{.25}{$+\infty$} %\rTabPut{Br}{-.15}{.40}{$1$} % %\TabFleche{B1}{C1} %\TabFleche{D1}{E1} %\end{MonTableau} % % \begin{verbatim} %\newpsstyle{hachured}{fillstyle=hlines,hatchwidth=0.2pt,hatchsep=2pt} %\setlength{\TabTitreL}{1cm} % %\begin{MonTableau}{1}{9}{1.5} %\psframe[style=hachured,linestyle=none](.3,1)(.45,0) % %\TabNewCol{0} %\rTabPut{Br}{-.15}{.25}{$x$} %\rTabPut{Br}{-.15}{.40}{$f(x)$} % %\TabNewCol{0} %\rTabPut{Bl}{.15}{.25}{$0$} %\rTabPut{Bl}{.15}{.60}{$\frac{3}{2}$} % %\TabNewCol{.30} %\rTabPut{B}{0}{.25}{$1$} %\rTabPut{Br}{-.15}{.80}{$+\infty$} %\psline[style=TabDblBarre](.3,0)(.3,1) % %\TabNewCol{.45} %\rTabPut{B}{0}{.25}{$\frac{3}{2}$} %\rTabPut[2]{B}{0}{.10}{\TabZ} % %\TabNewCol{1} %\rTabPut{Br}{-.15}{.25}{$+\infty$} %\rTabPut{Br}{-.15}{.40}{$1$} % %\TabFleche{B1}{C1} %\TabFleche{D1}{E1} %\end{MonTableau} % \end{verbatim} % % \item[tabvar] de Daniel Flipo~\cite{TABV}, % l'auteur, entre-autres de \textsf{babel-french}, % extension bien connue de tous les utilisateurs francophones de \LaTeX. % Permet de r��aliser des tableaux plut��t symboliques. % Voici un tableau simple et son code \textsf{tabvar}. \\ % \begin{minipage}[t]{7.5cm} % \begin{verbatim} %\[\begin{tabvar}{|C|CCCCR|} % \hline % x & 0 & & \frac{1}{2} & & 1 \\ % \hline % f���(x) && + & \barre{0} & - & \\ % \hline % \niveau{1}{2}\TVcenter{f(x)} & 0 & \croit % & \frac{1}{4} & \decroit & 0 \\ % \hline %\end{tabvar}\] % \end{verbatim} % \end{minipage} % \begin{minipage}[t]{4.2cm} %\[\begin{tabvar}{|C|CCCCR|} % \hline % x & 0 & & \frac{1}{2} & & 1 \\ % \hline % f'(x) && + & \barreFlipo{0} & - & \\ % \hline % \niveau{1}{2}\TVcenter{f(x)} & 0 & \croit % & \frac{1}{4} & \decroit & 0 \\ % \hline %\end{tabvar}\] % \end{minipage} % % \item[variations] de Christian Obrecht~\cite{VARI}. Extension vraiment simple d'usage, % qui a l'avantage d'avoir une documentation tr��s courte. % Voici un exemple repris de la doc de \textsf{variations} % (|\mI| et |\pI| d��signent $-\infty$ et $+\infty$). %\[\bvariations % x & \mI &&& 0 &&& \pI \\ % \filet % -\frac{1}{x^2} && - && \bbObrecht && - & \\ % \filet % \m{\dfrac{1}{x}} & \h0 & \d & \mI & \bbObrecht & \h\pI & \d & 0 \\ %\evariations\] % \begin{verbatim} %\[\begin{variations} % x & \mI &&& 0 &&& \pI \\ % \filet % -\frac{1}{x^2} && - && \bb && - & \\ % \m{\dfrac{1}{x}} & \h{0} & \d & \mI & \bb & \h{\pI} & \d & 0 \\ %\end{variations}\] % \end{verbatim} % \item[tablor] de Guillaume Connan~\cite{TABLOR}. % Permet d'automatiser de mani��re pouss��e la composition \emph{et la conception} du tableau % gr��ce �� la librairie de calcul formel \textsf{Giac/Xcas} (qui doit ��tre install��e). % Il suffit de renseigner l'expression de la fonction, l'intervalle souhait��, % les ��ventuelles valeurs interdites. Voici par exemple le code % pour le tableau de la fonction $g: t \mapsto \frac{t^2}{t^2-1}$ sur $[-10, +\infty[$, % avec variations et signe de la d��riv��e, tr��s synth��tique ! % \begin{verbatim} %\begin{TV} %TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,n,\tv) %\end{TV} % \end{verbatim} % \vspace{-\baselineskip} % On peut aussi d��finir un tableau avec simplement deux listes, les ant��c��dents % et les images, et \textsf{tablor} prend en charge les zones interdites % (mais pas la continuit�� des hachures de cellules contigu��s). % On pourra consulter la documentation pour de jolis exemples. % % Pour fonctionner, \textsf{tablor} utilise \textsf{tableauVariations.mp} % de Fr��d��ric Mazoit~\cite{VARMP} qui compose le tableau en \textlogo{METAPOST}. % \textsf{Xcas} oblige �� compiler en mode \texttt{shell-escape} % pour autoriser les sorties de la compilation \TeX. % % \item[tkz-tab] d'Alain Matthes~\cite{TKZ}. % Une tr��s belle extension qui fait a peu pr��s tout ce que fait \textsf{tablvar} % et m��me un peu plus : par exemple tangentes horizontales sur les extrema, % cellules en couleur. % Un de ses principaux b��n��fices par rapport �� \textsf{tablvar} est de ne pas n��cessiter % de double compilation % \footnote{La double compilation avec \textsf{tablvar} n'est cependant n��cessaire % qu'avec l'option \texttt{tikz}.}. % Signalons quand m��me quelques avantages de \textsf{tablvar} : % \begin{itemize} % \item avec \textsf{tkz-tab}, un tableau n'est pas globalement en mode math��matique, % il faut donc mettre les |$| du mode math autour de chaque valeur, % \item et les hauteurs de ligne doivent ��tre pr��cis��es de mani��re explicite et % uniquement cm (unit�� fixe qui ne s'ajuste pas �� la fonte), % \item \textsf{tablvar} offre la possibilit�� de mettre des valeurs par dessus les fl��ches, % \item dans \textsf{tkz-tab}, les double barres aux extr��mit��s du tableau % sont assez ��loign��es des filets, ce qui laisse un blanc important sur les bords. % \end{itemize} % Voici un exemple illustrant ce dernier point, avec son code. % Pour comparer, le tableau obtenu avec \textsf{tablvar} % a ��t�� plac�� dessous avec son code en suivant. % \begin{verbatim} %\begin{center}\begin{tikzpicture} % \tkzTabInit[lgt=1.5,espcl=1.8,deltacl=0.4]% % {$x$/0.75, $\ln x - x$/2.2}{0, 1, $+\infty$} % \tkzTabVar{D-/$-\infty$ , +/$-1$ , -/$-\infty$} %\end{tikzpicture}\end{center} % \end{verbatim} % %\begin{center}\begin{tikzpicture} % \tkzTabInit[lgt=1.5,espcl=1.8,deltacl=0.4]% % {$x$/0.75, $\ln x - x$/2.2}{0, 1, $+\infty$} % \tkzTabVar{D-/$-\infty$ , +/$-1$ , -/$-\infty$} %\end{tikzpicture}\end{center} %\[\begin{tablvar*}{2} % \hline % x & 0 & & 1 & & +\infty \\ % \hline % \variations{ \mil{\ln x -x} & \bb\bas{-\infty} && \haut{-1} && \bas{-\infty} } % \hline %\end{tablvar*}\] % \begin{verbatim} %\[\begin{tablvar*}{2} % \hline % x & 0 & & 1 & & +\infty \\ % \hline % \variations{ \mil{\ln x -x} & \bb\bas{-\infty} && \haut{-1} && % \bas{-\infty} } % \hline %\end{tablvar*}\] % \end{verbatim} % % \vspace{-\baselineskip} % On remarquera que les r��glages \textsf{tablvar} sont automatiques et ne n��cessitent % aucune option (si ce n'est l'appel �� la version ��toil��e \texttt{tablvar*}). % \end{description} % % \StopEventually{} % % \section{Le code} % % \subsection{Extensions requises et options du package} % % \begin{macrocode} \RequirePackage{array} \RequirePackage{ifthen} \RequirePackage{multido} \RequirePackage{xkeyval} \RequirePackage{iftex} \newif\iftv@tikz % false par d��faut \DeclareOption{tikz}{\tv@tikztrue} \newif\iftv@pstricks \DeclareOption{pstricks}{\tv@pstrickstrue} \ProcessOptions \relax \iftv@pstricks \ifpdf \ifluatex \PackageInfo{tablvar}{Option 'pstricks' works with luapstricks} \else \PackageError{tablvar}{Don't use the 'pstricks' option with PDF output mode}{Use 'tikz' option or change the engine} \fi \else \PackageInfo{tablvar}{Option 'pstricks' is used} \fi \else\iftv@tikz \AtEndDocument{\PackageWarningNoLine{tablvar}{Option 'tikz' is used. \MessageBreak Maybe rerun to draw the arrows correctly} } \else\ifpdf \AtEndDocument{\PackageWarningNoLine{tablvar}{Output is in PDF mode, I'm using the 'tikz' option. \MessageBreak Maybe rerun to draw the arrows correctly} } \tv@tikztrue \else \PackageWarningNoLine{tablvar}{Output is in DVI mode, I'm using the 'pstricks' option} \tv@pstrickstrue \fi\fi\fi \iftv@tikz \RequirePackage{tikz} \usetikzlibrary{patterns} \usetikzlibrary{patterns.meta}% pour le param��trage des hachures \else % pstricks=true \RequirePackage{pst-node} \fi % \end{macrocode} % \subsection{Les param��tres g��n��raux}\label{param} % % Dans cette section sont pr��sent��s tous les param��tres % que l'on peut red��finir pour modifier l'aspect des tableaux. % % \begin{macro}{\intervalwidth} % D��finit la largeur par d��faut des colonnes \og intervalles \fg, % valeur pr��d��finie �� \texttt{3em}. % \begin{macrocode} \newlength{\intervalwidth} \setlength{\intervalwidth}{3em} % largeur des "intervalles" % \end{macrocode} % \end{macro} % \begin{macro}{\colvalwidth} % D��finit la largeur des colonnes de valeurs, % valeur pr��d��finie �� \texttt{2em}. % \begin{macrocode} \newlength{\colvalwidth} \setlength{\colvalwidth}{2em} % largeur des colonnes de valeurs % \end{macrocode} % \end{macro} % \begin{macro}{\firstcolsep} % D��finit l'espace de s��paration autour de la premi��re colonne (l��gendes), % valeur pr��d��finie �� \texttt{5pt}, qui est la valeur par d��faut dans les tableaux \LaTeX. % \begin{macrocode} \newlength{\firstcolsep} \setlength{\firstcolsep}{5pt} % valeur LaTeX par d��faut % \end{macrocode} % \end{macro} % \begin{macro}{\bordercolsep} % D��finit l'espace de s��paration aux extr��mit��s du tableau, pour les premi��re % et derni��re colonnes de valeurs, pr��d��finie �� \texttt{2pt}. % Sa valeur par d��faut a ��t�� r��duite par rapport �� la longueur \LaTeX\ standard %|\arraycolsep|, afin que les valeurs des extr��mit��s (souvent des $\infty$) % soient plus proches des filets verticaux bordant le tableau. % \begin{macrocode} \newlength{\bordercolsep} \setlength{\bordercolsep}{2pt} % \end{macrocode} % \end{macro} % \begin{macro}{\limsep} % R��gle l'espace avant une limite �� droite et apr��s une limite �� gauche, % utilis�� dans les macros |\limg|, |\limd| et |\bblim|. % La macro |\bb| composant la double barre comprend % d��j�� \texttt{1.5pt} d'espace autour des traits verticaux. % La macro |\limsep| ajoute \texttt{1pt} par d��faut. % Si on r��gle ce param��tre �� \texttt{-1.5pt}, on ��limine l'espace % cr���� par |\bb| et on arrive au contact du filet de la double barre. % \begin{macrocode} \newlength{\limsep} \setlength{\limsep}{1pt} % \end{macrocode} % \end{macro} % \begin{macro}{\tablvarstretch} % Permet de r��gler la valeur relative de l'espacement vertical % des lignes du tableau. La valeur par d��faut est \texttt{1.6} (1 correspondant % �� la valeur standard d'un environnement |array|). % \begin{macrocode} \newcommand{\tablvarstretch}{1.6} % \end{macrocode} % \end{macro} % \begin{macro}{\ZItype} % D��finit le type de zone interdite, \texttt{h} pour \og hachur��e \fg ou % \texttt{c} pour \og color��e \fg (\texttt{h} par d��faut). % \begin{macrocode} \newcommand{\ZItype}{h} % \end{macrocode} % \end{macro} % \begin{macro}{ZIcolor} % D��finit la couleur des zones interdites, \og color��es \fg (gris par d��faut). % \begin{macrocode} \definecolor{ZIcolor}{named}{gray} % \end{macrocode} % \end{macro} % \begin{macro}{\ZIaddwidth} % D��finit une largeur suppl��mentaire (positive ou n��gative) % �� ajouter �� la largeur des zones interdites, par exemple \texttt{1pt} % pour arriver au contact du trait de |\barre|. % \begin{macrocode} \newlength{\ZIaddwidth} \setlength{\ZIaddwidth}{0pt} % \end{macrocode} % \end{macro} % \begin{macro}{\tablvarset} % Les param��tres pr��c��dents peuvent ��tre modifi��s avec |\setlength|, |\setboolean|, % |\renewcommand| ou |\definecolor|, mais ils peuvent ��galement ��tre g��r��es % avec le m��canisme \emph{cl��=valeur}, % gr��ce �� l'extension \textsf{xkeyval}~\cite{XKEY} de Hendri Adriaens. % Nous avons fait le choix de ne pas en faire % des options de l'extension \textsf{tablvar} elle-m��me, mais de fournir % une commande sp��ciale, |\tablvarset|, pour r��gler ces options. % La couleur d��finie par l'option \texttt{ZIcolor} doit ��tre une couleur \og nomm��e \fg. % \begin{macrocode} \define@key{tablvar}{intervalwidth}{\setlength{\intervalwidth}{#1}} \define@key{tablvar}{colvalwidth}{\setlength{\colvalwidth}{#1}} \define@key{tablvar}{firstcolsep}{\setlength{\firstcolsep}{#1}} \define@key{tablvar}{bordercolsep}{\setlength{\bordercolsep}{#1}} \define@key{tablvar}{limsep}{\setlength{\limsep}{#1}} \define@key{tablvar}{stretch}{\renewcommand{\tablvarstretch}{#1}} \define@boolkey{tablvar}[]{extleft}[true]{} % false si non appel�� \define@boolkey{tablvar}[]{extright}[true]{} \define@choicekey{tablvar}{ZItype}{h,c}{\renewcommand{\ZItype}{#1}} \define@key{tablvar}{ZIcolor}{\definecolor{ZIcolor}{named}{#1}} \define@key{tablvar}{ZIaddwidth}{\setlength{\ZIaddwidth}{#1}} \newcommand\tablvarset[1]{\setkeys{tablvar}{#1}} % \end{macrocode} % D'autres param��tres, pr��sent��s ci-dessous, qui n'ont, en principe, % pas vocation �� ��tre modifi��s, ne sont pas g��r��s par |\tablvarset|. % \end{macro} % \begin{macro}{\tvrulewidth} % D��finit l'��paisseur des filets du tableau (\texttt{0.4pt} par d��faut). % \begin{macrocode} \newlength{\tvrulewidth} \setlength{\tvrulewidth}{0.4pt} % \end{macrocode} % \end{macro} % \begin{macro}{\tvbarrewidth} % D��finit l'��paisseur des barres de s��paration verticales coupant les 0 % d'un tableau de signe : \texttt{0.5pt} par d��faut. % \begin{macrocode} \newlength{\tvbarrewidth} \setlength{\tvbarrewidth}{0.5pt} % \end{macrocode} % \end{macro} % \begin{macro}{tvbarrecolor} % D��finit la couleur des m��mes barres de s��paration verticales. % La valeur par d��faut |{gray}{0.7}| correspond �� un niveau de gris. % On peut red��finir la couleur par une couleur nomm��e % |\definecolor{named}|\marg{couleur} % ou selon un mod��le comme rgb, cmyk ou gray : |\definecolor{tvbarrecolor}{rgb}|\marg{x, x, x}. % \begin{macrocode} \definecolor{tvbarrecolor}{gray}{0.7} % \end{macrocode} % \end{macro} % \begin{macro}{\bbrulewidth} % D��finit l'��paisseur des traits verticaux d'une double barre. % \begin{macrocode} \newlength{\bbrulewidth} \setlength{\bbrulewidth}{0.4pt} % \end{macrocode} % \end{macro} % \begin{macro}{\innercolsep} % D��finit la largeur entre les colonnes valeurs et les colonnes intervalles du tableau. % Cette largeur a ��t�� fix��e �� \texttt{0pt}, % car l'augmenter est ��quivalent �� augmenter |\intervalwidth| % de la m��me longueur, vu qu'il n'y a pas de filet de s��paration entre les colonnes % de valeurs et les colonnes intervalles. % \begin{macrocode} \newlength{\innercolsep} \setlength{\innercolsep}{0pt} % \end{macrocode} % \end{macro} %\begin{macro}{maxdiscount} % La gestion de discontinuit��s permettant de ne pas relier certains n��uds cons��cutifs % se fait gr��ce �� la commande |\discont|. % Le compteur |maxdiscont| est fix�� �� 4 par d��faut ; on peut l'augmenter (dans le pr��ambule) % si l'on veut produire un tableau de variations avec plus de 4 discontinuit��s. % \begin{macrocode} \newcounter{maxdiscont} \setcounter{maxdiscont}{4} % nb max de discontinuit��s % \end{macrocode} % \end{macro} % \begin{macro}{\rowtopsep} % Cette longueur d��finit l'espace minimal entre le filet vertical sup��rieur et le contenu, % pour les cellules de la colonne des l��gendes. % Elle ne s'applique pas pour les lignes de variations % puisque, dans la colonne des l��gendes, seule la ligne % \og milieu \fg est cens��e poss��der un contenu. % \begin{macrocode} \newlength{\rowtopsep} \setlength{\rowtopsep}{2pt} % \end{macrocode} % \end{macro} % \begin{macro}{\rowbottomsep} % Cette longueur d��finit l'espace minimal entre le filet vertical inf��rieur et le contenu, % pour les cellules de la colonne des l��gendes. % Elle ne s'applique pas pour les lignes de variations. % \begin{macrocode} \newlength{\rowbottomsep} \setlength{\rowbottomsep}{2pt} % \end{macrocode} % \end{macro} % \subsection{Les commandes graphiques PSTricks/\TikZ} \label{graph} % % Nous pr��sentons ici les commandes graphiques permettant le dessin % des fl��ches, % les pointill��s des valeurs remarquables, les hachures des zones interdites. % Celles-ci sont d��finies diff��remment s'il s'agit de l'option |tikz| ou |pstricks| % (plus pr��cis��ment li��es �� l'extension \textsf{pst-node}). % % \begin{macro}{\fleche} % La commande \cmd{\fleche}\marg{n��ud1}\marg{n��ud2} poss��de deux param��tres % qui sont les noms des n��uds �� relier. % La cr��ation des n��uds est obtenue avec la commande |\noeud| appel��e par |\pos| % et le trac�� des fl��ches est r��alis�� automatiquement par la commande |\variations|. % Pour modifier l'aspect des fl��ches on peut red��finir la commande |\fleche|. % \begin{macrocode} \newcommand*{\fleche}[2]{ \iftv@tikz \tikz[remember picture,overlay]{\draw[->,>=stealth, line width=0.6pt] (#1) -- (#2);} \else \ncline[arrowsize=2pt 2,arrowinset=0.4,nodesep=3pt, linewidth=0.6pt]{->}{#1}{#2} \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\vrconnect} % La commande \cmd{\vrconnect}\marg{n��ud1}\marg{n��ud2} % relie les n��uds d��finis par |\vr| (valeurs remarquables) % et le trac�� est r��alis�� automatiquement par la commande |\variations|. % Par d��faut, les lignes sont en pointill��s d'��paisseur \texttt{1pt}. % \begin{macrocode} \newcommand*{\vrconnect}[2]{ \iftv@tikz \tikz[remember picture,overlay]{\draw[dotted,line width=1pt] (#1) -- (#2);} \else \ncline[nodesep=5pt,linestyle=dotted,linewidth=1pt]{-}{#1}{#2} \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\noeud} % \cmd{\noeud}\oarg{pos}\marg{n��ud}\marg{valeur} % d��finit les n��uds des fl��ches et valeurs remarquables ; % le 1\ier\ param��tre, optionnel, correspond �� l'option |t| (top), % |b| (bottom) ou |c| (centered, par d��faut) permettant d'ajuster % la mani��re dont la fl��che arrive sur le n��ud % (pas impl��ment�� avec l'option |tikz|) ; % le 2\ieme\ param��tre est le nom du n��ud (qui est donn�� automatiquement % par les commandes de positionnement) ; % le 3\ieme\ param��tre est la valeur affich��e dans le tableau. % \begin{macrocode} \newcommand*{\noeud}[3][c]{ \iftv@tikz % fonctionne mal avec autre chose que 'anchor=base' \tikz[remember picture,baseline]{% surtout pas de overlay ici \node[anchor=base,inner sep=0pt,outer sep=4pt] at (0,0) (#2) {$#3$};} \else \rnode[#1]{#2}{#3} \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\hachure} % D��finition des hachures pour les zones interdites. % La macro prend deux arguments qui sont des paires de longueurs, % par exemple |\hachure{-3em,12ex}{3em,-1ex}|, % repr��sentant les extr��mit��s du rectangle �� hachurer % par rapport �� la position courante o�� la macro est appel��e. % Pour l'option \texttt{tikz}, on aurait pu simplifier la macro % en utilisant |\fill[pattern=north east lines]| mais, en utilisant % la biblioth��que \texttt{patterns.meta}, on peut obtenir des hachures % plus ��l��gantes, correspondant �� celles de l'option \texttt{pstricks}. % \begin{macrocode} \newcommand*{\hachure}[2]{ \iftv@tikz \tikz[remember picture,overlay]{% \fill[pattern={Lines[distance=3pt,angle=135,line width=0.2pt]}] (#1) rectangle (#2);} \else \psframe[linestyle=none,fillstyle=vlines,hatchwidth=0.2pt, hatchsep=3pt](#1)(#2) \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\ZIcouleur} % Trace une zone interdite en couleur, m��mes arguments que |\hachure|. % \begin{macrocode} \newcommand*{\ZIcouleur}[2]{ \iftv@tikz \tikz[remember picture,overlay]{\fill[color=ZIcolor,opacity=0.3] (#1) rectangle (#2);} \else \psframe[linestyle=none,fillstyle=solid,opacity=0.3, fillcolor=ZIcolor](#1)(#2) \fi } % \end{macrocode} % \end{macro} % \subsection{Longueurs et compteurs internes} % % \begin{macrocode} \newcounter{var@ligne} % num��ro de ligne des variations \newcounter{var@noeud} % num��ro du n��ud des variations \newcounter{numvr} % num��ro de la valeur remarquable \newcounter{nb@intervals} % nombre de colonnes "intervalles" \newcounter{numdiscont} % num��ro de la discontinuit�� % \end{macrocode} % % Un compteur est cr���� pour chaque discontinuit�� : |discont1|, |discont2|, etc. % Le compteur |discont|\meta{i} contient le num��ro du n��ud pr��c��dant % la $i$-��me discontinuit��. % La fl��che partant de ce n��ud ne sera pas trac��e. % Il faut un compteur de plus que le nombre de discontinuit��s. % \begin{macrocode} \AtBeginDocument{% car maxdiscont a pu ��tre modifi�� dans le pr��ambule \stepcounter{maxdiscont} % il faut un compteur de plus que le nb de discontinuit��s \multido{\I=1+1}{\themaxdiscont}{\newcounter{discont\I}} } % \end{macrocode} % La commande |\mil| positionne son contenu sur la colonne |mil@row|, % et r��alise un d��calage vertical de |\mil@shift| % si le nombre de lignes de variations est pair. % Pour cela nous avons besoin d'une variable de dimension et d'un compteur. % \begin{macrocode} \newlength\mil@shift \newcounter{mil@row} % \end{macrocode} % Pour g��rer correctement les zones interdites, avec la commande |\ZI|, % de nombreuses variables, longueurs et compteurs, sont n��cessaires. % On peut cr���� des zones interdites sur 4 colonnes diff��rentes maximum % (on ne peut pas augmenter cette valeur sans revoir le code). % Pour chacune, la hauteur des lignes est cumul��e dans les variables % |\ZIheighti|, \ldots, |\Ziheightiv|, % et le num��ro de colonne \og intervalle \fg correspondant est enregistr�� % dans un compteur |ZI1|, \ldots, |ZI4|. La variable |\ZIheight| permet de renvoyer % la hauteur de la ZI courante pour le calcul final avant trac�� des hachures. % Les param��tres qui suivent sont ��galement d��di��s �� la gestion des dimensions % et au trac�� des zones interdites, % �� l'exception de |\tv@cellbox| qui sert aussi �� la gestion des colonnes de valeurs. % \begin{macrocode} \newcounter{maxZI} % nb max de ZI \setcounter{maxZI}{4} \newlength{\ZIheight} \newlength{\ZIheighti} \newlength{\ZIheightii} \newlength{\ZIheightiii} \newlength{\ZIheightiv} \newlength{\ZIdepth} \newlength{\ZIwidth} \newcounter{nbZI} % nombre de ZI utilis��es \newcounter{numZI} % num��ro de ZI courant \newcounter{nbvarlignes} % nombre de lignes des variations \multido{\I=1+1}{\themaxZI}{\newcounter{ZI\I}} \newcounter{tv@icol} % num��ro de colonne "intervalle" \newcounter{tv@row} % num��ro de ligne du tableau \newsavebox{\tv@cellbox} \newlength{\tv@cellheight} \newlength{\tv@celldepth} % \end{macrocode} % \bigskip % \subsection{Les environnements \texttt{tablvar} et \texttt{tablvar*}} % % \begin{macro}{\tablvarinit} % \changes{v1.1}{13/04/2019}{ajout�� \bslash extrarowheight} % Cette commande d'initialisation des compteurs est appel��e % au d��but de chaque environnement |tablvar|. % On retire 1 �� |nb@intervals| �� cause de la mani��re dont on appelle les colonnes % dans \texttt{tablvar} (voir plus bas). % Les red��finitions de |\extrarowheight| et |\arraystretch| seront locales % �� l'environnement |tablvar|. % L'instruction |\setcounter{var@ligne}{0}| est n��cessaire ici et pas seulement % dans la partie variations car le compteur est utilis�� par |\ZI| dans les lignes de signes. % \begin{macrocode} \newcommand*{\tablvarinit}[1]{ \setlength{\extrarowheight}{0pt} % param��tre de l'extension array \renewcommand{\arraystretch}{\tablvarstretch} \setlength{\arrayrulewidth}{\tvrulewidth} \setcounter{var@ligne}{0} \setcounter{numvr}{0} \setcounter{tv@row}{0} \setcounter{nb@intervals}{#1} \addtocounter{nb@intervals}{-1} } % \end{macrocode} % \end{macro} % \begin{macro}{\ZIinit} % Initialisation des longueurs et compteurs qui peuvent ��tre utilis��s par |\ZI|. % Le compteur \texttt{nbvarlignes} doit ��tre non nul pour un tableau de signe seul. % \begin{macrocode} \newcommand{\ZIinit}{ \global\ZIheighti=0pt \global\ZIheightii=0pt \global\ZIheightiii=0pt \global\ZIheightiv=0pt \setcounter{nbZI}{0} \multido{\I=1+1}{\themaxZI}{\setcounter{ZI\I}{0}} \setcounter{nbvarlignes}{3} } % \end{macrocode} % \end{macro} % \begin{macro}{\tv@setheight} % Cette macro sert �� calculer la hauteur et la profondeur d'une cellule, % qui seront enregistr��es dans des variables globales afin que la commande |\ZI| % puisse les r��cup��rer. % Elle est appel��e �� chaque \og sortie \fg de cellule de la colonne de l��gendes % gr��ce �� la d��finition d'un nouveau type de colonne \texttt{A} (voir macro |\tvcoltypes|). % La hauteur de la bo��te de cellule |\@arstrutbox| ne donne pas % la hauteur r��elle de la ligne, car celle-ci peut ��tre calibr��e % par d'autres cellules de la m��me ligne % \footnote{L'utilisation d'un type de colonne permettant un ajustement automatique % de la hauteur tel que fourni par l'extension % \textsf{cellspace}~\cite{CELLSP} de Josselin Noirel % ne fonctionne pas ici : les barres et double barres ne sont pas correctement dessin��es ; % mais l'on pourra peut-��tre envisager une ��volution gr��ce �� l'extension % \textsf{tabularray}~\cite{TABUL} de Jianrui Lyu.}. % % L'id��e ici est de comparer la hauteur de |\@arstrutbox| % avec la hauteur dans la 1\iere colonne de l��gendes, sur la m��me ligne, % car c'est en g��n��ral elle qui contient des ��l��ments de grande hauteur. % ��videmment si l'on place un contenu de grande hauteur ailleurs, dans une colonne de valeurs % et non dans la colonne de l��gendes, le calcul ne fonctionnera pas. % Mais dans ce cas, l'extension \textsf{array} g��re de toute fa��on mal les hauteurs de ligne % et le contenu de la cellule agrandie va toucher le filet horizontal. % La solution est alors de placer un |\vstrut| ou |\cstrut| dans la colonne % de l��gendes pour augmenter sa hauteur qui, de ce fait, sera bien enregistr��e % par |\tv@setheight|. % \begin{macrocode} \newcommand\tv@setheight{% \global\tv@cellheight=\ht\tv@cellbox \ifthenelse{\value{var@ligne}=0}{ \global\advance\tv@cellheight by \rowtopsep}{} \ifdim \tv@cellheight < \ht\@arstrutbox \global\tv@cellheight = \ht\@arstrutbox \fi \global\tv@celldepth=\dp\tv@cellbox \ifthenelse{\value{var@ligne}=0}{ \global\advance \tv@celldepth by \rowbottomsep}{} \ifdim \tv@celldepth < \dp\@arstrutbox \global\tv@celldepth = \dp\@arstrutbox \fi \vrule height \tv@cellheight depth \tv@celldepth width 0pt } % \end{macrocode} % \end{macro} % \begin{macro}{\tvcoltypes} % % Gr��ce �� l'extension \textsf{array}, nous pouvons d��finir 3 nouveaux types de colonnes : % \texttt{A} pour la colonne des l��gendes % (1\iere colonne), \texttt{i} pour les colonnes intervalles et |v|\marg{pos} % pour les colonnes de valeurs. L'argument \meta{pos} peut prendre les valeurs % \texttt{c} (centr��), \texttt{l} (align�� au fer �� gauche) ou \texttt{r} % (align�� au fer �� droite). En faire un param��tre optionnel ne fonctionne pas ici. % Les colonnes d'intervalles sont en fait du type \texttt{p}, % paragraphe centr��, avec une largeur |\intervalwidth| % et incr��mentent le compteur interne \texttt{tv@icol}. % La premi��re colonne de l��gende, % remet �� z��ro le compteur \texttt{tv@col} et incr��mente le compteur de ligne % \texttt{tv@row}. % % La commande |\tvcoltypes| est appel��e au d��but de chaque environnement % \texttt{tablvar} et, de ce fait, ces types de colonnes ne sont reconnus % qu'�� l'int��rieur d'un \texttt{tablvar} et ne cr��ent pas d'incompatibilit��s % avec d'autres extensions qui utiliseraient les m��mes lettres comme type de colonne. % \begin{macrocode} \newcommand{\tvcoltypes}{ % type de colonne A pour les l��gendes �� gauche du tableau \newcolumntype{A}{% >{\setcounter{tv@icol}{0}\stepcounter{tv@row}\begin{lrbox}% \tv@cellbox $}% c% <{$\end{lrbox}\usebox{\tv@cellbox}\tv@setheight}} % type de colonne i pour les intervalles \newcolumntype{i}{>{\stepcounter{tv@icol} \centering\arraybackslash$}p{\intervalwidth}<{$}} % type de colonne v pour les valeurs \newcolumntype{v}[1]{% un argument optionnel ne fonctionne pas ici >{\ifthenelse{\value{tv@row}=1}{\begin{lrbox}\tv@cellbox $}{}}% ##1% <{\ifthenelse{\value{tv@row}=1}{$\end{lrbox}% \makebox[\colvalwidth][##1]{\usebox\tv@cellbox}}{}}} } % \end{macrocode} % \end{macro} % \begin{environment}{tablvar} % La syntaxe de |tablvar| est : |\begin{tablvar}|\oarg{options}\marg{nbintervals}. % Le 1\ier\ param��tre optionnel permet de r��gler les options sous la forme \emph{cl��=valeur} % ou bien on peut y placer un unique argument dimensionnel qui repr��sente alors % la largeur des colonnes intervalles. % Le 2\ieme\ param��tre (obligatoire) est le nombre d'intervalles. % Fondamentalement, cet environnement n'est rien d'autre qu'un |array| % dans lequel, apr��s avoir effectu�� les initialisations, % on a choisi les bons types de colonnes. % % On commence par prendre en compte les options gr��ce �� |\setkeys*| fourni par l'extension % \textsf{xkeyval}. La version ��toil��e de |\setkeys| % a l'avantage de ne pas produire d'erreur lorsqu'une cl�� n'est pas reconnue % (celle-ci est pass��e �� |\XKV@rm|). On l'interpr��te % \footnote{Un message d'erreur de dimension erron��e % peut donc signifier que l'on s'est tromp�� dans l'orthographe d'une cl��.} % alors comme une dimension pour le param��tre |\intervalwidth|. % % Les colonnes de valeurs sont de type |c| (centr��) par d��faut mais % les bool��ens \texttt{extleft} et \texttt{extright} permettent de diff��rencier % l'alignement dans la premi��re colonne de valeur (type \texttt{B} comme begin) % ou la derni��re (type \texttt{E} comme end). % \begin{macrocode} \newenvironment{tablvar}[2][]{% \setkeys*{tablvar}{#1} % fourni par xkeyval \if\XKV@rm\empty \else \setlength{\intervalwidth}{#1} \fi \tvcoltypes \ifextleft\newcolumntype{B}{v{l}}\else\newcolumntype{B}{v{c}}\fi \ifextright\newcolumntype{E}{v{r}}\else\newcolumntype{E}{v{c}}\fi \tablvarinit{#2} \ZIinit \begin{array}{% |@{\hspace{\firstcolsep}}% A@{\hspace{\firstcolsep}}% |@{\hspace{\bordercolsep}}% B@{\hspace{\innercolsep}}% i@{\hspace{\innercolsep}}% *{\value{nb@intervals}}{ v{c}@{\hspace{\innercolsep}}% i@{\hspace{\innercolsep}}% }% E@{\hspace{\bordercolsep}}|% } }{\end{array}} % \end{macrocode} % \end{environment} % % \begin{environment}{tablvar*} % L'environnement |tablvar*| est une variante de |tablvar| (m��me syntaxe) % o�� les premi��re et derni��re colonnes de valeurs sont align��es respectivement % au fer �� gauche (|l|) et �� droite (|r|). % L'appel �� |\setkeys*| enregistre les param��tres optionnels % dans les variables correspondantes qui seront donc utilis��s par \texttt{tablvar}, % mais \texttt{extleft} et \texttt{extright} seront fix��s. % \begin{macrocode} \newenvironment{tablvar*}[2][]{% \setkeys*{tablvar}{#1} % fourni par xkeyval \if\XKV@rm\empty \else \setlength{\intervalwidth}{#1} \fi \begin{tablvar}[extleft,extright]{#2} }{\end{tablvar}} % \end{macrocode} % \end{environment} % % \subsection{La commande \texttt{\textbackslash variations}} % % \begin{macro}{\varloop} % \changes{v1.1}{12/04/2019}{tvloop -> varloop} % La commande \cmd{\varloop}\marg{iter}\marg{code} r��p��te \meta{code} (\meta{iter}$- 1$) fois % (car la derni��re ligne des variations doit subir un traitement particulier). % Nous avons cr���� notre propre commande de boucle car les usuelles % |\multido|, |\Multido| ou |\whiledo| plantent sur |\\| ou |\@arraycr| % et la commande |\variations| a besoin d'utiliser une boucle dans un tableau. % |\varloop| n'est autre qu'un |\ifthenelse| r��cursif. % \begin{macrocode} \newcounter{loop@counter} \newcommand{\varloop}[2]{% \setcounter{loop@counter}{#1} \addtocounter{loop@counter}{-1}% on boucle 1 fois de moins que #1 \ifthenelse{\value{loop@counter}=0}{}{% #2 \varloop{\value{loop@counter}}{#2}% } } % \end{macrocode} % \end{macro} % \begin{macro}{\variations} % La syntaxe est \cmd{\variations}\oarg{nblignes}\marg{code} o�� \meta{nblignes} % est le nombre de lignes pour les variations (3 par d��faut) ; % \meta{code} contient les commandes de positionnement % et les s��parateurs de colonnes |&|. \\ % Le principe est que l'on parcourt \meta{nblignes} fois % le contenu de |\variations| ; % �� chaque it��ration, le compteur |var@ligne| est incr��ment��, % le compteur |var@noeud| est remis �� 0 puis incr��ment�� �� chaque commande |\pos|, % mais le contenu de |\pos| n'est affich�� et le n��ud n'est effectivement cr���� % que si la valeur du compteur |var@ligne| correspond �� l'argument de ligne de |\pos|.\\ % Les fl��ches et pointill��s sont dessin��s �� la fin, quand tous les n��uds sont cr����s, % mais il faut les tracer avant le |\\| final, sinon la compilation plante ! % Le compteur |var@ligne| doit ��tre remis �� 0 au cas o�� il y a plusieurs parties variations. % Cette remise �� z��ro s'effectue �� la fin au cas o�� on mettrait des lignes de signes % apr��s une ligne variations. % \begin{macrocode} \newcommand*{\variations}[2][3]{% #1=nblignes (3 par d��faut) % (r��)initialisation des compteurs \setcounter{nbvarlignes}{#1} \setcounter{numdiscont}{0} \multido{\I=1+1}{\themaxdiscont}{\setcounter{discont\I}{0}} % boucle : on ex��cute le code #2 un nb de fois ��gal �� (#1)-1 \varloop{#1}{% \setcounter{var@noeud}{0}\setcounter{numvr}{0} % �� chaque tour de boucle on r��initialise les compteurs de n��uds \stepcounter{var@ligne} % le num��ro de ligne est incr��ment�� #2 % les n��uds sont fabriqu��s par le code #2 (avec \pos et \vr) \\ % retour ligne } % derni��re it��ration -> fl��ches trac��es AVANT \\ sinon bug !? \setcounter{var@noeud}{0}\setcounter{numvr}{0} \stepcounter{var@ligne} #2 % trac�� des fl��ches \addtocounter{var@noeud}{-1} % 1 fl��che de moins que le nb de n��uds \setcounter{numdiscont}{1} \multido{\Ix=1+1,\Iy=2+1}{\thevar@noeud}{ \ifthenelse{\value{discont\thenumdiscont}=\Ix}{ % on saute les discontinuit��s \stepcounter{numdiscont}}{ % sinon on trace la fl��che N1->N2 puis N2->N3, etc. \fleche{N\Ix}{N\Iy} } } % trac�� des pointill��s pour les valeurs remarquables \multido{\Ix=1+1}{\thenumvr}{\vrconnect{X\Ix}{Y\Ix}} \setcounter{var@ligne}{0} \\ % dernier retour ligne du tableau } % \end{macrocode} % \end{macro} % \subsection{Les commandes de positionnement} % % \label{cmd-pos} % \begin{macro}{\valpos} % \cmd{\valpos}\oarg{opt}\marg{ligne}\marg{valeur} % sert �� positionner les valeurs dans la partie variations ; % \meta{ligne} d��signe la ligne o�� il faut placer \meta{valeur} et produire le n��ud, % num��rot�� avec le compteur |var@noeud| et d��fini en appelant la commande |\noeud|. % Les lignes de variations sont num��rot��es \emph{du haut vers le bas} % (et les lignes de signes portent toutes le num��ro 0). % Le 1\ier\ argument optionnel, |c| (centered, par d��faut), |t| (top) ou |b| (bottom), % est utilis�� pour le positionnement des fl��ches. % La macro |\valpos| sert de macro sous-jacente �� la macro |\pos|. % \begin{macrocode} \newcommand*{\valpos}[3][c]{ \stepcounter{var@noeud} \ifthenelse{\thevar@ligne=#2}{ \noeud[#1]{N\thevar@noeud}{#3} }{} % si ligne != #2, on ne fait rien } % \end{macrocode} % \end{macro} % \begin{macro}{\zbox} % Place son contenu dans une boite de largeur nulle : affiche le contenu % mais consid��re que l'espace occup�� est nul pour ne pas alt��rer le calcul de la % largeur de colonne. % Cette macro est similaire �� |\mathclap| de l'extension \textsf{mathtools}~\cite{TOOLS}. % Sa syntaxe est : % |\zbox|\oarg{pos}\marg{contenu} o�� \meta{opt} = |c| (par d��faut), |l| (left) ou |r| (right). % \begin{macrocode} \newcommand*{\zbox}[2][c]{\makebox[0pt][#1]{$#2$}} % \end{macrocode} % \end{macro} % \DescribeMacro{\pos} % Dans |\pos|, si l'option \texttt{extleft} est activ��e, la premi��re colonne % de valeurs, celle o�� le compteur des colonnes intervalles, |\tv@icol|, est encore �� 0, % est align��e au fer �� gauche : l'option de positionnement \texttt{l} (left) % est enregistr��e dans |\val@@pos|. % Si c'est \texttt{extright} qui est activ��e, la derni��re colonne de valeurs % est align��e au fer �� droite (option de positionnement |\val@@pos=r|). % On se trouve dans cette derni��re colonne, lorsque le compteur des colonnes intervalles % a d��pass�� \texttt{nb@intervals} qui contient le nombres d'intervalles $-1$. % % \DescribeMacro{\pos*} % Dans la version ��toil��e, \cmd{\pos*}\marg{ligne}\marg{valeur}, la diff��rence % est qu'aucun n��ud n'est cr����. Ceci est utile en particulier pour la toute premi��re colonne % contenant la l��gende ou pour positionner une valeur par dessus une fl��che. % Il n'y a pas lieu de se pr��occuper de l'alignement, sauf si on voulait positionner % une valeur aux extr��mit��s sans la relier par des fl��ches, auquel cas on pourrait % utiliser |\zbox|\oarg{pos} dans |\pos*|. % Les anciennes commandes internes |\@pos| et |@@pos| ont ��t�� remplac��es par |\tv@pos| % et |\tv@@pos|, pour ��viter un conflit avec la macro |\@pos| d��j�� utilis��e % par Daniel Flipo dans \textsf{tabvar}. % \begin{macrocode} \newcommand*{\tv@pos}[3][c]{ \def\val@@pos{c} \ifextleft \ifthenelse{\thetv@icol=0}{\def\val@@pos{l}}{} \fi \ifextright \ifthenelse{\thetv@icol>\thenb@intervals}{\def\val@@pos{r}}{} \fi \zbox[\val@@pos]{\valpos[#1]{#2}{#3}} } \newcommand*{\tv@@pos}[2]{\ifthenelse{\thevar@ligne=#1}{#2}{}} \newcommand*{\pos}{\@ifstar{\tv@@pos}{\tv@pos}} % \end{macrocode} % Voici les commandes de positionnement plus abstraites qui peuvent ��tre utilis��s % �� la place des commandes |\pos| et |\pos*|. % % \begin{macro}{\haut} % \cmd{\haut}\marg{valeur} place \meta{valeur} sur la premi��re ligne des variations. % L'option de |\pos| n'est pas prise en charge. % \begin{macrocode} \newcommand*{\haut}{\pos{1}} % \end{macrocode} % \end{macro} % \begin{macro}{\bas} % \cmd{\bas}\marg{valeur} place \meta{valeur} sur la derni��re ligne des variations. % L'option de |\pos| n'est pas prise en charge. % \begin{macrocode} \newcommand*{\bas}{\pos{\value{nbvarlignes}}} % \end{macrocode} % \end{macro} % \begin{macro}{\vdecal} % La macro \cmd{\vdecal}\marg{decal}\marg{contenu} permet de r��aliser un d��calage % vertical : % le 1\ier\ param��tre est le d��calage % (positif = vers le haut ou n��gatif = vers le bas), le second est le contenu �� placer. % Elle est utilis��e en particulier par |\mil|. % \begin{macrocode} \newcommand*{\vdecal}[2]{\smash{\raisebox{#1}{$#2$}}} % \end{macrocode} % |\smash| a pour effet d'annuler la hauteur de la boite afin de ne pas agrandir % la ligne courante ainsi quelque soit le d��calage, le tableau ne bouge pas % (on pourrait m��me faire sortir le contenu �� afficher du tableau). % \end{macro} % \begin{macro}{\mil} % Pour un nombre $n$ impair de lignes de variations, % la commande |\mil|\marg{valeur} positionne \meta{valeur} sur la ligne $\frac{n+1}{2}$ % de la partie variations. Cela correspond bien �� la ligne du milieu : % ligne 2 lorsqu'il y a 3 lignes. % Par contre si $n$ est pair, on place \meta{valeur} sur la ligne $\frac{n}{2}$ mais avec % un d��calage vertical n��gatif (vers le bas) gr��ce �� |\vdecal|. % Ce d��calage correspond �� une profondeur de cellule augment�� de \texttt{0.5ex} % (��cart entre la ligne de base du texte et la ligne de centrage math��matique). % Le r��sultat de ce calcul est stock�� dans la variable de dimension |\mil@shift|. % Au cas o�� l'on ne serait pas satisfait du r��sultat de |\mil|, on pourrait alors r��gler % le d��calage manuellement avec %|\pos*|\marg{ligne}|{\vdecal|\marg{decal}\marg{contenu}|}|. % \begin{macrocode} \newcommand*{\mil}[1]{% \setcounter{mil@row}{\value{nbvarlignes}} \ifthenelse{\isodd{\value{nbvarlignes}}}{ \addtocounter{mil@row}{1} \divide\value{mil@row} by 2 \pos*{\themil@row}{\smash{#1}} }{ \divide\value{mil@row} by 2 \mil@shift = \dp\@arstrutbox \advance\mil@shift by 0.5ex \pos*{\themil@row}{\vdecal{-\mil@shift}{#1}} } } % \end{macrocode} % \end{macro} % \subsection{Barres, discontinuit��s, limites et valeurs remarquables} % % \begin{macro}{\barre} % La macro |\barre| permet de tracer une barre verticale % pour marquer les s��parations de colonne dans un tableau de signe, en passant % �� travers les 0. % Son aspect est contr��l�� par les param��tres |\tvbarrewidth| et |\tvbarrecolor|. % Sa syntaxe est : % |\barre|\oarg{valeur} o��, en principe, on met 0 comme argument optionnel ou rien. % Le |\hspace{-0.5\tvbarrewidth}| sert �� obtenir un centrage parfait du |\vrule| % en particulier si on souhaite un trait ��pais. % \begin{macrocode} \newcommand*{\barre}[1][]{\makebox[0pt]{$#1$}% \color{tvbarrecolor}% \hspace{-0.5\tvbarrewidth}\vrule width \tvbarrewidth} % \end{macrocode} % \end{macro} % \begin{macro}{\bb} % La macro |\bb|, qui produit une double barre, % reprend celle de l'extension \mbox{\textsf{variations}} de Christian Obrecht : % |\def\bb{\vrule\kern1pt\vrule}|. % Nous avons ajout�� \texttt{1.5pt} d'espace avant et apr��s, afin d'aligner au mieux % la double barre avec un 0 sur la ligne des $x$, lorsque la double barre % se trouve �� une extr��mit��. % L'��paisseur de la double barre a ��t�� param��tr��e par |\bbrulewidth|. % \begin{macrocode} \newcommand*{\bb}{% \kern1.5pt\vrule width \bbrulewidth\kern1pt \vrule width \bbrulewidth\kern1.5pt} % \end{macrocode} % \end{macro} % \DescribeMacro{\limg}\DescribeMacro{\limd} % Les macros |\limg| et |\limd| servent �� positionner des limites �� gauche ou �� droite, % en particulier aux bords des double barres. % Le premier param��tre, optionnel, pr��cise l'option de positionnement (\texttt{c}, % \texttt{l} ou \texttt{r}) et le second \emph{obligatoire} et le num��ro de ligne, % enfin le troisi��me est la valeur �� placer. % % \DescribeMacro{\limg*}\DescribeMacro{\limd*} % Les versions ��toil��es n'acceptent comme argument que \texttt{+} ou \texttt{-}, % |\limg*{+}| correspond �� |\limg{1}{+\infty}|, % |\limg*{-}| correspond �� |\limg{|$n$|}{-\infty}| (pour une partie variations % sur $n$ lignes et de m��me pour |\limd*|. % \begin{macrocode} \newcommand*{\@limg}[3][c]{% \zbox[r]{\valpos[#1]{#2}{#3\hspace{\limsep}}}} \newcommand*{\@limd}[3][c]{% \zbox[l]{\valpos[#1]{#2}{\hspace{\limsep}#3}}} \newcommand*{\@@limg}[1]{% \ifthenelse{\equal{#1}{+}}{\@limg{1}{+\infty}}{ \ifthenelse{\equal{#1}{-}}{\@limg{\value{nbvarlignes}}{-\infty}}{ \PackageError{tablvar}{Invalid argument for \string\limg*} {Only + or - are valid arguments for \string\limg*} }} } \newcommand*{\@@limd}[1]{% \ifthenelse{\equal{#1}{+}}{\@limd{1}{+\infty}}{ \ifthenelse{\equal{#1}{-}}{\@limd{\value{nbvarlignes}}{-\infty}}{ \PackageError{tablvar}{Invalid argument for \string\limd*} {Only + or - are valid arguments for \string\limd*} }} } \newcommand{\limg}{\@ifstar{\@@limg}{\@limg}} \newcommand{\limd}{\@ifstar{\@@limd}{\@limd}} % \end{macrocode} % \begin{macro}{\discont} % Associe un num��ro de n��ud �� un compteur de discontinuit�� % (chaque discontinuit�� a son propre compteur). % La fl��che entre le n��ud pr��c��dent |\discont| (enregistr�� dans le compteur) % et le n��ud suivant ne sera pas trac��e. % \begin{macrocode} \newcommand*{\discont}{ \ifthenelse{\thevar@ligne=1}{ % on ne compte les discontinuit��s qu'une seule fois, sur ligne 1 \ifthenelse{\thenumdiscont=0}{ \ifthenelse{\thevar@noeud > 0}{% pas avant le 1er n��ud \stepcounter{numdiscont} \setcounter{discont\thenumdiscont}{\thevar@noeud} }{} }{% on ne compte pas 2 fois la m��me discontinuit�� \ifthenelse{\thevar@noeud > \value{discont\thenumdiscont}}{ \stepcounter{numdiscont} \setcounter{discont\thenumdiscont}{\thevar@noeud} }{} } }{} } % \end{macrocode} % \end{macro} % \DescribeMacro{\bblim}\DescribeMacro{\bblim*} % Ces macros servent �� positionner des limites �� gauche \emph{et} �� droite % d'une double barre. % Elles tracent la double barre, placent les limites et appellent |\discont|.\\ % La syntaxe de |\bblim| est : \\ % |\bblim|\marg{ligne gauche}\marg{limite gauche}\marg{ligne droite}\marg{limite droite}.\\ % La syntaxe de|\bblim*| reprend celle de |\limg*| et |\limd*| : % |\bblim*|\marg{+$\vert$-}\marg{+$\vert$-}. % \begin{macrocode} \newcommand*{\@bblim}[4]{\limg{#1}{#2}\bb\discont\limd{#3}{#4}} \newcommand*{\@@bblim}[2]{\limg*{#1}\bb\discont\limd*{#2}} \newcommand*{\bblim}{\@ifstar{\@@bblim}{\@bblim}} % \end{macrocode} % \begin{macro}{\vr} % La commande |\vr| fabrique un n��ud pour chaque valeur remarquable. % Les n��uds sont d��sign��s par X1, X2\ldots\ sur la ligne des $x$ % et Y1, Y2\ldots\ sur les lignes de variations. % Sa syntaxe est : \cmd{\vr}\oarg{ligne}\marg{valeur}. % Le param��tre optionnel \meta{ligne} vaut 2 par d��faut pour Y, % et n'est pas pris en compte pour X (ligne 0), % le second param��tre est la valeur �� afficher. % Les n��uds seront ensuite reli��s par la commande |\vrconnect| % (appel��e par |\variations|) en fonction de leur num��ro. % \begin{macrocode} \newcommand*{\vr}[2][2]{% ligne 2 par d��faut sauf si tv@row=1 \stepcounter{numvr} \ifthenelse{\thetv@row=1}{\noeud{X\thenumvr}{#2}}{ \ifthenelse{\thevar@ligne=#1}{\noeud{Y\thenumvr}{#2}}{} } } % \end{macrocode} % \end{macro} % \begin{macro}{\posvr} % Malheureusement, on ne peut pas imbriquer une commande |\vr| et une commande |\pos| % l'une dans l'autre. Mais on peut en fait imbriquer une commande |\noeud| dans une autre. % Ici ce ne sont pas les |\ifthenelse| contenues dans les commandes |\vr| ou |\pos| % qui posent probl��me, mais les |\stepcounter| qui ne sont pas support��s �� l'int��rieur % d'une commande |\noeud|. Nous avons donc cr���� la commande |\posvr| pour placer une % valeur dans la partie variations qui soit �� la fois un n��ud pour les fl��ches % et pour les pointill��s de valeur remarquable. % Sa syntaxe est la m��me que celle de la commande |\pos|. % \begin{macrocode} \newcommand*{\posvr}[3][c]{% \stepcounter{numvr} \tv@pos[#1]{#2}{\noeud{Y\thenumvr}{#3}}} % \end{macrocode} % \end{macro} % \subsection{Zones interdites} % % La gestion des zones interdites n��cessite quelques sophistications algorithmiques car % il faut ne dessiner un rectangle de hachures qu'une seule fois % pour un ensemble de cellules superpos��es, sinon les hachures ne seront pas jointives. % Pour les zones interdites color��es, on utilisera les m��mes macros qui donnent % un ajustement id��al. % % Une zone interdite poss��de un num��ro et chaque appel de |\ZI| va cumuler la hauteur % de cellule jusqu'au trac��, d��clench�� par |\ZI*|. % On doit v��rifier si une zone interdite non trac��e existe d��j�� dans la m��me colonne, % sinon on en cr��e une nouvelle. % % \begin{macro}{\ZIfind} % On cherche s'il existe d��j�� une zone interdite (non trac��e) pour la m��me % colonne, auquel cas on renvoie son num��ro (dans \texttt{numZI}), sinon on renvoie 0. % Les ZI sont indic��es par un compteur |ZI1|, |ZI2|, |ZI3| ou |ZI4| % qui contient le num��ro de la colonne intervalle �� laquelle cette ZI appartient. % Le compteur \texttt{nbZI} contient le nombre de ZI actives d��j�� cr����es. % On rep��re l'indice de ZI % en comparant la valeur du compteur |ZI\I| avec le num��ro % de la colonne intervalle courante. % \begin{macrocode} \newcommand\ZIfind{% calcule numZI \setcounter{numZI}{0} \multido{\I=1+1}{\thenbZI}{% il existe d��j�� des ZI �� la m��me colonne \ifthenelse{\value{ZI\I}=\value{tv@icol}}{ \setcounter{numZI}{\I} }{} } } % \end{macrocode} % \end{macro} % \begin{macro}{\ZInew} % Cr���� une nouvelle zone interdite en lui affectant un num��ro (indice) % et m��morise le num��ro de % la colonne intervalle o�� cette ZI est cr����e. % Si le num��ro de colonne (intervalle) courante ne correspond % �� aucune ZI enregistr��e dans les compteurs |ZI\I| % alors on incr��mente le compteur \texttt{nbZI} et on enregistre ce num��ro % de colonne dans le compteur de |ZI\thenbZI| correspondant. % Si jamais on d��passe 4, le nombre max de ZI possibles, % |\ZInew| va g��n��rer une erreur en appelant |ZI\thenumZI| qui n'existe pas. % Par contre, si une ZI de la m��me colonne a d��j�� ��t�� trac��e pr��c��demment % (cela ne peut arriver que dans les tableaux de signes), % le num��ro de ZI de cette colonne sera remis �� 0 % par |\ZIreset| (voir macro suivante) auquel cas on r��cup��re son indice % pour cr��er cette nouvelle ZI. % \begin{macrocode} \newcommand\ZInew{ \multido{\I=1+1}{\thenbZI}{% on cherche s'il y a des ZI\I=0 \ifthenelse{\value{ZI\I}=0}{\setcounter{numZI}{\I}}{} } \ifthenelse{\value{numZI}>0}{}{ % si pas de ZI disponible il faut augmenter nbZI \stepcounter{nbZI} \setcounter{numZI}{\value{nbZI}} } \setcounter{ZI\thenumZI}{\value{tv@icol}} } % \end{macrocode} % \end{macro} % \begin{macro}{\ZIreset} % |\ZIreset| est appel��e lors du trac�� d'une zone interdite dans la partie signe, % afin de lib��rer l'indice de ZI correspondant qui pourra ��tre r��affect�� plus bas % dans la m��me colonne. Son argument obligatoire est l'indice de ZI �� remettre �� 0. % Son r��le est aussi de remettre �� 0, la hauteur de cette ZI nouvellement cr����e. % \begin{macrocode} \newcommand*\ZIreset[1]{ \ifnum #1 > 0 \setcounter{ZI#1}{0} \fi \ifnum #1 = 1 \global\ZIheighti=0pt \else \ifnum #1 = 2 \global\ZIheightii=0pt \else \ifnum #1 = 3 \global\ZIheightiii=0pt \else \ifnum #1 = 4 \global\ZIheightiv=0pt \fi\fi\fi\fi } % \end{macrocode} % \end{macro} % \begin{macro}{\ZIaddheight} % La macro |\ZI@addheight| sert �� cumuler la hauteur et la profondeur de la ligne % courante dans une des 4 variables de dimension |\ZIheighti|, \ldots, |\ZIheightiv| % correspondant �� la zone interdite appelante. % On r��cup��re hauteur et profondeur qui ont ��t�� enregistr��s dans % les variables globales |\tv@cellheight| et |\tv@celldepth|, % par la colonne de l��gendes de la m��me ligne. % Le num��ro de la ZI (son indice) est pass�� en argument. % \begin{macrocode} \newcommand*\ZIaddheight[1]{ \ZIheight=0pt \advance\ZIheight by \tv@cellheight \advance\ZIheight by \tv@celldepth \advance\ZIheight by 0.5\arrayrulewidth \ifnum #1 = 1 \global\advance\ZIheighti by \ZIheight \else \ifnum #1 = 2 \global\advance\ZIheightii by \ZIheight \else \ifnum #1 = 3 \global\advance\ZIheightiii by \ZIheight \else \ifnum #1 = 4 \global\advance\ZIheightiv by \ZIheight \fi\fi\fi\fi } % \end{macrocode} % \end{macro} % \begin{macro}{\ZIgetheight} % On r��cup��re, avant le trac��, la hauteur globale de la ZI % (dont le num��ro est donn�� en argument) dans la variable |\ZIheight|. % \begin{macrocode} \newcommand*\ZIgetheight[1]{% \ifnum #1=1 \global\ZIheight=\ZIheighti \else \ifnum #1 = 2 \global\ZIheight=\ZIheightii \else \ifnum #1 = 3 \global\ZIheight=\ZIheightiii \else \ifnum #1 = 4 \global\ZIheight=\ZIheightiv \fi\fi\fi\fi } % \end{macrocode} % \end{macro} % \DescribeMacro{\ZI} % La macro |\ZI| est �� placer dans les cellules o�� l'on souhaite produire une zone interdite. % Elle ne d��clenche le trac�� des hachures que sur la derni��re ligne des variations % (par un appel �� |\ZI*|). % % On cr��e une discontinuit�� puis on r��cup��re l'indice de ZI (\texttt{numZI}) % gr��ce �� |\ZIfind|. Si |\ZIfind| renvoie 0, aucune ZI active n'existe % pour la colonne intervalle courante, auquel cas on cr��e un nouvelle ZI avec |\ZInew|. % Et enfin on cumule la hauteur de la ligne de cette ZI gr��ce �� |\ZIaddheight|. % % La macro poss��de un param��tre optionnel |\ZI|\oarg{hauteur} % qui est un suppl��ment de hauteur global. % Celui-ci n'est, en principe, plus n��cessaire, mais nous l'avons conserv�� pour % des raisons de compatibilit�� avec les versions ant��rieures �� \textsf{tablvar} 2.0. % Ce param��tre permettrait ��ventuellement de faire un ajustement fin de la hauteur. % % \medskip % \DescribeMacro{\ZI*} % C'est en fait la macro |ZI*| qui d��clenche le trac�� de la zone interdite % en appelant la commande |\hachure| ou la commande |\ZIcouleur| % en fonction de l'option \texttt{ZItype}. % Elle utilise la hauteur cumul��e, pr��c��demment enregistr��e dans la variable de dimension % correspondant �� la ZI (par les commandes |\ZI| plac��s dans la m��me colonne). % Dans la macro |\variations|, |\ZI*| est en fait appel��e par |ZI| % sur la derni��re ligne des variations, sans que l'utilisateur n'ait �� intervenir. % % Par contre, dans un tableau de signes sans partie variations % il faut placer explicitement des |\ZI*| �� la place des |\ZI|, au moment % o�� l'on souhaite d��clencher le trac�� des hachures, sur la derni��re ligne % d'un bloc de hachures. % La commande |\ZI*| poss��de le m��me argument optionnel |ZI*|\oarg{hauteur}. % \begin{macrocode} \newcommand*{\@ZI}[1][0pt]{% \discont \ifthenelse{\thevar@ligne=\value{nbvarlignes}}{\@@ZI[#1]}{% \ZIfind \ifnum \thenumZI = 0 \ZInew \fi \ZIaddheight{\thenumZI} } } \newcommand*{\@@ZI}[1][0pt]{ \discont \ZIfind \ifnum \thenumZI > 0 \ZIgetheight{\thenumZI} \else \ZIheight=0pt \fi \advance\ZIheight by \tv@cellheight \advance\ZIheight by 0.5\arrayrulewidth \advance\ZIheight by #1 \ZIdepth = \tv@celldepth \ZIwidth = \intervalwidth \advance\ZIwidth by 2\innercolsep \advance\ZIwidth by \colvalwidth \advance\ZIwidth by -1pt % au bord des double barres \advance\ZIwidth by \ZIaddwidth \ifthenelse{\equal{\ZItype}{h}}{ \hachure{-0.5\ZIwidth,-\ZIdepth}{0.5\ZIwidth,\ZIheight} }{ \ZIcouleur{-0.5\ZIwidth,-\ZIdepth}{0.5\ZIwidth,\ZIheight} } \ZIreset{\thenumZI} } \newcommand*{\ZI}{\@ifstar{\@@ZI}{\@ZI}} % \end{macrocode} % \DescribeMacro{\ZIh}\DescribeMacro{\ZIc} % Nous avons conserv�� les noms des anciennes macros |\ZIh| et |ZIc| % pour les zones interdites hachur��es ou color��es pour des raisons de compatibilit��, % mais elles sont d��sormais bas��es sur |\ZI| ou |\ZI*| (en fait sur |\@ZI| ou |\@@ZI|). % La macro |\ZIh| poss��de toujours une version ��toil��e |\ZIh*| pour le trac�� des hachures % dans les lignes de signe, |\ZIc| n'en poss��dait pas. % \begin{macrocode} \newcommand*{\ZIc}[1][0pt]{\renewcommand{\ZItype}{c}\@@ZI[#1]} \newcommand{\ZIh}{\renewcommand{\ZItype}{h}\ZI} % \end{macrocode} % % \bigskip % \begin{thebibliography}{15} % \begin{raggedright} % \bibitem{TABL} \emph{Tableaux}, Nicolas Kisselhoff, CTAN. % \bibitem{TABV} \emph{Tableaux de variations : \textsf{���tabvar���}}, Daniel Flipo, % CTAN, v1.8 16/07/2022. % \bibitem{VARI} \emph{L'extension \textsf{variations}}, Christian Obrecht, % CTAN, v0.3 13/09/2006. % \bibitem{TABLOR} \emph{\textsf{tablor.sty} La machine �� cr��er des tableaux % de signes et de variations}, Guillaume Connan, CTAN, v4.07 09/05/2010. % \bibitem{VARMP} \emph{\textsf{tableauVariations} -- Variation tables in % \textlogo{METAPOST}}, Fr��d��ric Mazoit, CTAN, 2005. % \bibitem{TKZ} \emph{\textsf{Tkz-Tab}}, Alain Matthes, CTAN, % v2.12c 29/04/2020. % \bibitem{ARRAY} \emph{A new implementation of LATEX���s \textsf{tabular} and \textsf{array} % environment}, Frank Mittelbach, David Carlisle, CTAN, v2.5g revised 16/10/2023. % \bibitem{MKCELL} \emph{The \textsf{makecell} package}, Olga Lapko, CTAN, v0.1e 03/08/2009. % \bibitem{CELLSP} \emph{The \textsf{cellspace} package}, Josselin Noirel, CTAN, % v1.9.0 04/01/2022. % \bibitem{TABUL} \emph{\textsf{Tabularray} Typeset Tabulars and Arrays with \LaTeX3}, % Jianrui Lyu, CTAN, v2023A, 01/03/2023. % v1.9.0 04/01/2022. % \bibitem{SPA} \emph{The \textsf{spacingtricks} package}, Antoine Missier, % CTAN, v1.7 28/07/2023. % \bibitem{XKEY} \emph{The \textsf{xkeyval} package}, Hendri Adriaens, % CTAN, v2.9 16/06/2022. % \bibitem{TOOLS} \emph{The \textsf{mathtools} package}, Morten H��gholm, Lars Madsen, % CTAN, v1.23 17/01/2020. % \bibitem{MIS} Miscellaneous mathematical macros -- The \emph{\textsf{mismath} package}, % Antoine Missier, CTAN, v3.1 16/06/2024. % \bibitem{FR} \emph{L'extension \textsf{frenchmath}}, Antoine Missier, % CTAN, v3.1 07/05/2024. % \end{raggedright} % \end{thebibliography} % \Finale \endinput