diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/tablvar/tablvar.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/tablvar/tablvar.dtx | 583 |
1 files changed, 378 insertions, 205 deletions
diff --git a/Master/texmf-dist/source/latex/tablvar/tablvar.dtx b/Master/texmf-dist/source/latex/tablvar/tablvar.dtx index afc47fc9539..e39c2382f0c 100644 --- a/Master/texmf-dist/source/latex/tablvar/tablvar.dtx +++ b/Master/texmf-dist/source/latex/tablvar/tablvar.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2018-2023 by Antoine Missier <antoine.missier@ac-toulouse.fr> +% 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 @@ -22,11 +22,11 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{tablvar} - [2023/12/23 v2.0 .dtx tablvar file] + [2024/08/09 v2.1 Tables of signs and variations] %</package> %<*driver> \documentclass{ltxdoc} -\usepackage[utf8]{inputenc} +%\usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[french]{babel} \usepackage{lmodern} @@ -38,10 +38,12 @@ \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{hyperref} +\usepackage[hyperindex=false]{hyperref} \usepackage{sectsty} \usepackage{makecell} \usepackage{spacingtricks} @@ -58,6 +60,8 @@ \definecolor{darkbrown}{rgb}{0.5,0.1,0.1} \allsectionsfont{\color{darkbrown}} \hypersetup{% + bookmarksopen=true, + bookmarksopenlevel=2, colorlinks, linkcolor=blue, citecolor=red, @@ -76,7 +80,7 @@ %</driver> % \fi % -% \CheckSum{752} +% \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 @@ -119,27 +123,21 @@ % \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} -% -% \DoNotIndex{\@@ZI,\tv@@pos,\tv@pos,\@ZI,\@arstrutbox,\@ifstar,\\} -% \DoNotIndex{\addtocounter,\advance,\arraybackslash} -% \DoNotIndex{\begin,\boolean,\centering,\color,\DeclareOption,\def} -% \DoNotIndex{\define@boolkey,\defin@key,\dp,\draw,\else,\empty,\end} -% \DoNotIndex{\fi,\fill,\global,\hspace,\ht} -% \DoNotIndex{\I,\if,\ifdim,\ifnum,\ifthenelse,\Ix,\Iy,\kern} -% \DoNotIndex{\makebox,\MessageBreak,\multido,\ncline,\newboolean,} -% \DoNotIndex{\newcommand,\newcounter,\newenvironment,\newlength,\newsavebox} -% \DoNotIndex{\node,\PackageWarningNoLine,\ProcessOptions,\psframe} -% \DoNotIndex{\raisebox,\relax,\renewcommand,\RequirePackage,\rnode} -% \DoNotIndex{\sbox,\setboolean,\setcounter,\setlength,\stepcounter} -% \DoNotIndex{\TikZ,\tvanchor,\usetikzlibrary,\value,\wd} -% \DoNotIndex{\ZIheight,\ZIheighti,\ZIheightii,\ZIheightiii,\ZIheightiv,\ZIdepth,\ZIwidth} % % \title{L'extension \textsf{tablvar}\thanks{Ce document -% correspond à \textsf{tablvar}~\fileversion, dernière modification le 23/12/2023.}} +% correspond à \textsf{tablvar}~\fileversion, dernière modification le 09/08/2024.}} % \author{Antoine Missier \\ \texttt{antoine.missier@ac-toulouse.fr}} -% \date{23 décembre 2023} +% \date{9 août 2024} % \maketitle % \tableofcontents % @@ -175,8 +173,8 @@ % |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 compilateur PDF (comme pdf\LaTeX\ ou \LuaLaTeX), \texttt{pstricks} sinon -% (typiquement \LaTeX\ + dvips + ps2pdf ou \XeLaTeX). +% 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). @@ -189,9 +187,9 @@ % % \subsection{Tableaux de variations simples} % -% % \DescribeEnv{tablvar} +% \DescribeEnv{tablvar} % Un tableau de variations (ou de signes) se définit par un environnement |tablvar| -% qui \emph{doit être en mode mathématiques} (comme |array|). +% qui \emph{doit être en mode mathématique} (comme |array|). % % \medskip % Voici un premier tableau tout simple avec les commandes @@ -235,8 +233,8 @@ % 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.}. -% Les flèches ne sont pas contraintes à rester à l'intérieur des colonnes intervalles -% mais s'ajustent par rapport à la taille effective des valeurs qu'elles relient. +% 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. @@ -314,7 +312,7 @@ % (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 +% 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). @@ -418,7 +416,8 @@ % \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} } +% \haut{+\infty} && \bas{-14} && \haut{\frac{69}{4}} && +% \bas{-\infty} } % \hline %\end{tablvar}\] % \end{verbatim} @@ -435,50 +434,57 @@ % % \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). +% les limites qui resteront alors centrées au milieu de la colonne +% (mais il faut aimer). %\[\begin{tablvar}{2} % \hline -% x & -\infty && 0 && +\infty \\ +% x & -\infty && 2 && +\infty \\ % \hline -% \variations{\mil{\e^{\frac{1}{x}}} & \haut{1} && -% \bas{0} \pos*{2}{\bb} \discont \haut{+\infty} && \bas{1} } +% \variations{\mil{\dfrac{1}{x-2}} & \pos{2}{0} && \bas{-\infty} +% \pos*{2}{\bb} \discont \haut{+\infty} && \pos{2}{0} } % \hline %\end{tablvar}\] -% La macro |\e| compose le nombre d'Euler $\e$ en romain (forme droite), -% comme c'est la règle pour les constantes mathématiques -% (cf. \textsf{mismath}~\cite{MIS} ou \textsf{frenchmath}~\cite{FR}). % \begin{verbatim} %\[\begin{tablvar}{2} % \hline -% x & -\infty && 0 && +\infty \\ +% x & -\infty && 2 && +\infty \\ % \hline -% \variations{\mil{\e^{\frac{1}{x}}} & \haut{1} && -% \bas{0} \pos*{2}{\bb} \discont \haut{+\infty} && \bas{1} } +% \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{ligne}\marg{valeur} +% 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{\dfrac{1}{x^2}} & \bas{0} && \limg{1}{+\infty} \bb -% \discont \limd{1}{+\infty} && \bas{0} } +% \variations{ \mil{\e^{\frac{1}{x}}} & \haut{1} && \limg{3}{0} \bb +% \discont \limd*{+} && \bas{1} } % \hline %\end{tablvar}\] % -% \DescribeMacro{firstcolsep} -% Ci-dessus la colonne de légende a été é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{verbatim} %\[\begin{tablvar}[firstcolsep=10pt,intervalwidth=4em]{2} % \hline @@ -486,13 +492,18 @@ % \hline % -\frac{1}{x} & & + & \bb & - & \\ % \hline -% \variations{ \mil{\dfrac{1}{x^2}} & \bas{0} && \limg{1}{+\infty} \bb -% \discont \limd{1}{+\infty} && \bas{0} } +% \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}). % -% \DescribeMacro{\bblim} +% \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. @@ -502,24 +513,28 @@ % 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|. -%\[\begin{tablvar}{4} +% 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 && -1 && 0 && 1 && +\infty \\ +% x & -\infty && -2 && 0 && 1 && 2 && +\infty \\ % \hline -% \variations{\mil{\dfrac{1}{1-x^2}} & \haut{0} && -% \bblim{3}{-\infty}{1}{+\infty} && \bas{1} && -% \bblim{1}{+\infty}{3}{-\infty} && \haut{0} } +% \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}{4} +%\[\begin{tablvar}{5} % \hline % x & -\infty && -1 && 0 && 1 && +\infty \\ % \hline -% \variations{\mil{\dfrac{1}{1-x^2}} & \haut{0} && -% \bblim{3}{-\infty}{1}{+\infty} && \bas{1} && -% \bblim{1}{+\infty}{3}{-\infty} && \haut{0} } +% \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} @@ -533,7 +548,7 @@ % 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ène au contact de la double barre). +% amènerait au contact de la double barre). %\[\begin{tablvar}[bordercolsep=4pt,limsep=3pt]{3} % \hline % x & -\infty && 0 && 1 && +\infty \\ @@ -568,7 +583,7 @@ % \hline % x & 0 && 1 && +\infty \\ % \hline -% \variations{ \mil{\ln x -x} & \bb\limd{3}{-\infty} && \haut{-1} && +% \variations{ \mil{\ln x -x} & \bb\limd*{-} && \haut{-1} && % \bas{-\infty} } % \hline %\end{tablvar*} @@ -589,7 +604,7 @@ % \hline % x & 0 && 1 && +\infty \\ % \hline -% \variations{ \mil{\ln x -x} & \bb\limd{3}{-\infty} && \haut{-1} && +% \variations{ \mil{\ln x -x} & \bb\limd*{-} && \haut{-1} && % \bas{-\infty} } % \hline %\end{tablvar*} @@ -603,8 +618,8 @@ % \hline %\end{tablvar*}\] % \end{verbatim} -% \hypertarget{ext}{} % +% \hypertarget{ext}{} % \DescribeMacro{extleft}\DescribeMacro{extright} % Dans \texttt{tablvar*}, si, à une extrémité sans double barre, % les valeurs ont des largeurs vraiment différentes @@ -622,25 +637,25 @@ % 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.7cm} +% \noindent\begin{minipage}[t]{7.4cm} % \begin{verbatim} -%\[\begin{tablvar}[extleft,intervalwidth=4em]{1} +%\[\begin{tablvar}[extleft]{1} % \hline % x & 0 && +\infty \\ % \hline -% \variations{ \mil{1-\dfrac{1}{x}} & \bb -% \limd{3}{-\infty} && \haut{1} } +% \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,intervalwidth=4em]{1} +%\[\begin{tablvar}[extleft]{1} % \hline % x & 0 && +\infty \\ % \hline -% \variations{ \mil{1-\dfrac{1}{x}} & \bb -% \limd{3}{-\infty} && \haut{1} } +% \variations[2]{ \mil{1-\dfrac{1}{x}} +% & \bb \limd*{-} && \haut{1} } % \hline %\end{tablvar}\] % \end{minipage} @@ -661,14 +676,14 @@ % % Voici un exemple où la valeur remarquable % est placée dans la colonne intervalle.\\ -% \begin{minipage}[t]{7.7cm} +% \begin{minipage}[t]{7.4cm} % \begin{verbatim} %\[\begin{tablvar*}[6em]{1} % \hline % x & 0 & \vr{1} & +\infty \\ % \hline % \variations{ \mil{\ln x} & -% \bb \limd{3}{-\infty} & \vr{0} & +% \bb \limd*{-} & \vr{0} & % \pos[t]{1}{+\infty} } % \hline %\end{tablvar*}\] @@ -680,7 +695,7 @@ % x & 0 & \vr{1} & +\infty \\ % \hline % \variations{ \mil{\ln x} & -% \bb \limd{3}{-\infty} & \vr{0} & +% \bb \limd*{-} & \vr{0} & % \pos[t]{1}{+\infty} } % \hline %\end{tablvar*}\] @@ -702,8 +717,8 @@ % \hline % x & -\infty && \vr{0} && \vr{1} && +\infty \\ % \hline -% \variations[4]{ \mil{\exp x} & \haut{0} && -% \vr[3]{1} && \vr{\e} && \bas{+\infty} } +% \variations[4]{ \mil{\exp x} & \bas{0} && +% \vr[3]{1} && \vr{\e} && \haut{+\infty} } % \hline %\end{tablvar}\] % \end{verbatim} @@ -738,7 +753,7 @@ % \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 suivant présente un tableau utilisant simultanément +% 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 @@ -767,6 +782,10 @@ % 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 @@ -782,7 +801,6 @@ %\end{tablvar}\] % \end{verbatim} % -% \vspace{-\baselineskip} % \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 @@ -802,7 +820,7 @@ % 0 &\mbox{si } x= 0 %\end{array} %\right. .\] -% \begin{minipage}[t]{6.5cm} +% \begin{minipage}[t]{6.7cm} % \begin{verbatim} %\[\begin{tablvar}{2} % \hline @@ -900,7 +918,7 @@ % \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 +% 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 @@ -926,8 +944,8 @@ % -\frac{x}{\strut\sqrt{x^2-1}^3} && + & \bb & \ZI & \bb & - & \\ % \hline % \variations{\pos*{2}{\dfrac{1}{\sqrt{x^2-1}}} & \bas{0} && -% \limg{1}{+\infty} \bb & \ZI & -% \bb \limd{1}{+\infty} && \bas{0} } +% \limg*{+} \bb & \ZI & +% \bb \limd*{+} && \bas{0} } % \hline %\end{tablvar}\] % @@ -943,8 +961,8 @@ % -\frac{x}{\strut\sqrt{x^2-1}^3} && + & \bb & \ZI & \bb & - & \\ % \hline % \variations{\pos*{2}{\dfrac{1}{\sqrt{x^2-1}}} & \bas{0} && -% \limg{1}{+\infty} \bb & \ZI & -% \bb \limd{1}{+\infty} && \bas{0} } +% \limg*{+} \bb & \ZI & +% \bb \limd*{+} && \bas{0} } % \hline %\end{tablvar}\] % \end{verbatim} @@ -961,7 +979,8 @@ % 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 la solution est de compiler avec \XeLaTeX. +% 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} @@ -1000,17 +1019,18 @@ %\end{tablvar}\] % \end{verbatim} % -% Si des extrema de grande taille sont placés dans la partie variations, +% 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 permettra -% éventuellement une gestion automatisée des hauteurs de ligne dans une version future.}. +% \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 \texttt{stretch} ou avec |\vstrut|\oarg{depth}\marg{height} -% \emph{qu'il faut placer dans la toute 1\iere colonne} pour +% 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 pour -% les variations mais une ligne des $x$ plus haute. +% 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 @@ -1080,7 +1100,7 @@ % \DescribeMacro{\hachure} % Lorsque l'on dessine des zones interdites hachurées % sur plusieurs colonnes contiguës, -% les hachures seront en général discontinues. +% 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. @@ -1090,16 +1110,16 @@ %\[ \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 \\ +% && 0 && 1 && \sqrt{\frac{5}{2}} && 2 && +\infty \\ % \hline % 2x & &-& \barre &-& \barre &-& \barre &-& \barre[0] &+& -% \barre &+& \barre &+& \barre &+& \\ +% \barre &+& \barre &+& \barre &+& \\ % \hline % 2x^2-5 & &+& \barre &+& \barre[0] &-& \barre &-& \barre &-& -% \barre &-& \barre[0] &+& \barre &+& \\ +% \barre &-& \barre[0] &+& \barre &+& \\ % \hline % f'(x) & &-& \bb & \ZI & \barre & \ZI & \bb &+& -% \barre[0] &-& \bb & & & & \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 @@ -1108,7 +1128,7 @@ % \hline %\end{tablvar} \] } % -% Pour hachurer une zone donnée, la commande |\hachure| peut être placée où l'on veut +% 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*|, @@ -1119,16 +1139,16 @@ %\[ \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 \\ +% && 0 && 1 && \sqrt{\frac{5}{2}} && 2 && +\infty \\ % \hline % 2x & &-& \barre &-& \barre &-& \barre &-& \barre[0] &+& -% \barre &+& \barre &+& \barre &+& \\ +% \barre &+& \barre &+& \barre &+& \\ % \hline % 2x^2-5 & &+& \barre &+& \barre[0] &-& \barre &-& \barre &-& -% \barre &-& \barre[0] &+& \barre &+& \\ +% \barre &-& \barre[0] &+& \barre &+& \\ % \hline % f'(x) & &-& \bb & \ZI & \barre & \ZI & \bb &+& -% \barre[0] &-& \bb & & & & \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 @@ -1219,11 +1239,11 @@ % \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 |{...}|), -% avec des variables spécifiques -% ou (depuis la version 2.0) avec la commande |\tablvarset|\marg{keyval}, -% utilisant le mécanisme \emph{clé=valeur}. +% 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, @@ -1280,12 +1300,12 @@ % \begin{description} % \item[stretch] qui est un facteur d'élasticité verticale agissant sur toutes % les lignes du tableau -% \footnote{Pour ajuster la hauteur d'une ligne particulière, on dispose de la -% macro \texttt{\textbackslash vstrut}\oarg{depth}\marg{height} +% \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 de \texttt{\bslash cstrut}\marg{height} qui garantit une hauteur minimale +% 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}. @@ -1322,7 +1342,7 @@ % % \medskip % Le rendu des commandes graphiques peut également être modifié, -% en redéfinissant ces commandes, en particulier |\fleche|, |vrconnect| et |\hachure| +% 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), @@ -1349,8 +1369,8 @@ % \hline % -\frac{x+2}{x^4} && - & \barre[0] & + & \bb & - & \\ % \hline -% \variations{\mil{\e^{\frac{x+1}{x^2}}} & \haut{1} && \bas{\e^{-\frac{1}{4}}} -% && \bblim{1}{+\infty}{1}{+\infty} && \bas{1} } +% \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} @@ -1366,24 +1386,27 @@ % \hline % -\frac{x+2}{x^4} && - & \barre[0] & + & \bb & - & \\ % \hline -% \variations{\mil{\e^{\frac{x+1}{x^2}}} & \haut{1} && -% \bas{\e^{-\frac{1}{4}}} && \bblim{1}{+\infty}{1}{+\infty} && -% \bas{1} } +% \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 de la version 2.0} +% \subsection{Nouveautés depuis la version 2.0} % -% Cette version présente de nombreuses nouveautés : +% 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 le moteur pdf\LaTeX\ +% 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} par défaut)} +% \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, @@ -1395,7 +1418,7 @@ % 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} à \texttt{3em}}. +% \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|, @@ -1446,12 +1469,26 @@ % 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 |\haut|, |\bas| et |\mil| peuvent à présent être utilisées +% \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 @@ -1469,16 +1506,81 @@ % dans la rubrique \og Maths tabvar \fg. % Nous les décrivons ici brièvement. % \begin{description} -% \item[tableaux] de Nicolas Kisselhoff~\cite{TABL}. +% \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]{7cm} +% \begin{minipage}[t]{7.5cm} % \begin{verbatim} %\[\begin{tabvar}{|C|CCCCR|} % \hline @@ -1492,7 +1594,7 @@ %\end{tabvar}\] % \end{verbatim} % \end{minipage} -% \begin{minipage}[t]{5cm} +% \begin{minipage}[t]{4.2cm} %\[\begin{tabvar}{|C|CCCCR|} % \hline % x & 0 & & \frac{1}{2} & & 1 \\ @@ -1551,19 +1653,19 @@ % 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 avantages par rapport à \textsf{tablvar} est de ne pas nécessiter +% 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 quelques différences avec \textsf{tablvar} : +% Signalons quand même quelques avantages de \textsf{tablvar} : % \begin{itemize} -% \item un tableau n'est pas globalement en mode mathématique, il faut donc mettre les -% \$ du mode math autour de chaque valeur, -% \item les hauteurs de ligne doivent être précisées de manière explicite et -% ne peuvent être données qu'en cm (unité fixe qui ne s'ajuste pas à la fonte), -% \item \textsf{tablvar} offre la possibilité de mettre des 0 par dessus les flèches, -% \item les double barres aux extrémités du tableau sont assez éloignées des filets, -% ce qui peut donc laisser un certain blanc sur les bords. +% \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} @@ -1615,7 +1717,7 @@ \RequirePackage{ifthen} \RequirePackage{multido} \RequirePackage{xkeyval} -\RequirePackage{ifpdf} +\RequirePackage{iftex} \newif\iftv@tikz % false par défaut \DeclareOption{tikz}{\tv@tikztrue} @@ -1625,23 +1727,31 @@ \iftv@pstricks \ifpdf - \PackageError{tablvar}{Don't use the pstricks option with PDF engines}{} + \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}{PSTricks option is used} + \PackageInfo{tablvar}{Option 'pstricks' is used} \fi \else\iftv@tikz - \PackageInfo{tablvar}{tikz option is used. + \AtEndDocument{\PackageWarningNoLine{tablvar}{Option 'tikz' is used. \MessageBreak - Run twice to draw the arrows correctly} + Maybe rerun to draw the arrows correctly} + } \else\ifpdf - \PackageWarningNoLine{tablvar}{PDF engine is used, - I'm using the tikz option. + \AtEndDocument{\PackageWarningNoLine{tablvar}{Output is in PDF mode, + I'm using the 'tikz' option. \MessageBreak - Run twice to draw the arrows correctly} + Maybe rerun to draw the arrows correctly} + } \tv@tikztrue \else - \PackageWarningNoLine{tablvar}{PDF engines not used, - I'm using the pstricks option} + \PackageWarningNoLine{tablvar}{Output is in DVI mode, + I'm using the 'pstricks' option} \tv@pstrickstrue \fi\fi\fi @@ -1832,6 +1942,28 @@ % \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 @@ -1962,12 +2094,13 @@ } % \end{macrocode} -% La commande |\mil| positionne son contenu sur la colonne 2, -% mais réalise un décalage vertical si le nombre de lignes de variations diffère de 3. +% 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@heightshift -\newcounter{mil@rowshift} +\newlength\mil@shift +\newcounter{mil@row} % \end{macrocode} % Pour gérer correctement les zones interdites, avec la commande |\ZI|, @@ -2046,7 +2179,7 @@ % \end{macrocode} % \end{macro} -% \begin{macro}{\tv@saveheight} +% \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. @@ -2071,21 +2204,22 @@ % 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@saveheight|. +% par |\tv@setheight|. % \begin{macrocode} -\newcommand\tv@saveheight{% - \tv@cellheight=0pt - \tv@celldepth=0pt - \ifdim \ht\tv@cellbox > \ht\@arstrutbox - \global\advance\tv@cellheight by \ht\tv@cellbox - \else - \global\advance\tv@cellheight by \ht\@arstrutbox +\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 - \ifdim \dp\tv@cellbox > \dp\@arstrutbox - \global\advance\tv@celldepth by \dp\tv@cellbox - \else - \global\advance\tv@celldepth by \dp\@arstrutbox + \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} @@ -2115,7 +2249,7 @@ >{\setcounter{tv@icol}{0}\stepcounter{tv@row}\begin{lrbox}% \tv@cellbox $}% c% - <{$\end{lrbox}\usebox{\tv@cellbox}\tv@saveheight}} + <{$\end{lrbox}\usebox{\tv@cellbox}\tv@setheight}} % type de colonne i pour les intervalles \newcolumntype{i}{>{\stepcounter{tv@icol} \centering\arraybackslash$}p{\intervalwidth}<{$}} @@ -2142,7 +2276,7 @@ % 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 +% (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|. @@ -2156,8 +2290,8 @@ \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 + \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}{% @@ -2228,11 +2362,12 @@ % 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{var@ligne}{0} \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 @@ -2259,6 +2394,7 @@ } % 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} @@ -2291,6 +2427,7 @@ % 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} @@ -2367,24 +2504,31 @@ % \end{macro} % \begin{macro}{\mil} -% La commande |\mil|\marg{valeur} positionne \meta{valeur} sur la ligne 2 -% de la partie variations. Lorsqu'il y a 3 lignes de variations cela correspond bien -% au milieu, mais sinon on réalise un décalage vertical grâce à |\vdecal|. -% La formule de ce décalage est -% $(3- \mbox{nblignes}) \times (\mbox{hauteur de ligne})/2$. -% Le résultat de ce calcul est stocké dans la variable de dimension |\mil@heightshift|. -% Au cas où |\mil| ne donnerait pas un résultat parfait, on pourrait alors régler +% 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]{% - \mil@heightshift = \ht\@arstrutbox - \advance\mil@heightshift by \dp\@arstrutbox - \divide\mil@heightshift by 2 - \setcounter{mil@rowshift}{3} - \addtocounter{mil@rowshift}{-\value{nbvarlignes}} - \multiply\mil@heightshift by \value{mil@rowshift} - \pos*{2}{\vdecal{\mil@heightshift}{#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} @@ -2409,7 +2553,7 @@ % \begin{macro}{\bb} % La macro |\bb|, qui produit une double barre, -% reprend celle de l'extension \textsf{variations} de Christian Obrecht +% 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 @@ -2423,14 +2567,38 @@ % \end{macro} % \DescribeMacro{\limg}\DescribeMacro{\limd} -% Les macros |\limg| et |limd| servent à positionner des limites à gauche \emph{ou} à droite, +% 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}[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} @@ -2458,16 +2626,19 @@ % \end{macrocode} % \end{macro} -% \begin{macro}{\bblim} -% Sert à positionner des limites à gauche \emph{et} à droite +% \DescribeMacro{\bblim}\DescribeMacro{\bblim*} +% Ces macros servent à positionner des limites à gauche \emph{et} à droite % d'une double barre. -% Cette macro trace la double barre, place les limites et appelle |\discont|. -% Sa syntaxe est : -% |\bblim|\marg{ligne gauche}\marg{limite gauche}\marg{ligne droite}\marg{limite droite}. +% 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}[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} -% \end{macro} % \begin{macro}{\vr} % La commande |\vr| fabrique un nœud pour chaque valeur remarquable. @@ -2595,7 +2766,7 @@ % 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@cellheight|, +% 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} @@ -2711,18 +2882,18 @@ % \end{macrocode} % % \bigskip -% \begin{thebibliography}{14} +% \begin{thebibliography}{15} % \begin{raggedright} -% \bibitem{TABL} \emph{Tableaux}. Nicolas Kisselhoff, CTAN. -% \bibitem{TABV} \emph{Tableaux de variations : \textsf{‘tabvar’}}. Daniel Flipo, +% \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, +% \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. +% 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, +% \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. @@ -2734,12 +2905,14 @@ % 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{MIS} \emph{\textsf{mismath} -- Miscellaneous mathematical macros}, -% Antoine Missier, CTAN, v2.9 19/12/2023. -% \bibitem{FR} \emph{L'extension \textsf{frenchmath}}. Antoine Missier, -% CTAN, v2.7, 23/12/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 |