texlive[72007] Master/texmf-dist: tablvar (10aug24)

commits+karl at tug.org commits+karl at tug.org
Sat Aug 10 22:33:37 CEST 2024


Revision: 72007
          https://tug.org/svn/texlive?view=revision&revision=72007
Author:   karl
Date:     2024-08-10 22:33:37 +0200 (Sat, 10 Aug 2024)
Log Message:
-----------
tablvar (10aug24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/tablvar/README.md
    trunk/Master/texmf-dist/doc/latex/tablvar/tablvar.pdf
    trunk/Master/texmf-dist/source/latex/tablvar/tablvar.dtx
    trunk/Master/texmf-dist/source/latex/tablvar/tablvar.ins
    trunk/Master/texmf-dist/tex/latex/tablvar/tablvar.sty

Modified: trunk/Master/texmf-dist/doc/latex/tablvar/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tablvar/README.md	2024-08-10 20:33:09 UTC (rev 72006)
+++ trunk/Master/texmf-dist/doc/latex/tablvar/README.md	2024-08-10 20:33:37 UTC (rev 72007)
@@ -6,8 +6,8 @@
 - A complete and easy to use package for typesetting pretty tables of signs and variations according to French usage.
 - The syntax is similar to that of the array environment and uses intuitive position commands.
 - Arrows are automatically drawn (with PSTricks or TikZ).
-- Macros are provided for drawing double bars, single bars crossing the zeros, intervals where a function is not defined or for placing special values.
-- Several features of variations tables can be customized.
+- Macros are provided for drawing double bars, single bars crossing zero values, intervals where a function is not defined or for placing special values.
+- Many features of variations tables can be customized.
 
 
 ## Documentation
@@ -18,7 +18,7 @@
 ## Installation
 
 - run LaTeX on tablvar.ins, you obtain the file tablvar.sty,
-- if then you run XeLaTeX or LaTeX + dvips + ps2pdf on tablvar.dtx you get the file tablvar.pdf which is also in the archive,
+- if then you run LaTeX + dvips + ps2pdf on tablvar.dtx you get the file tablvar.pdf which is also in the archive,
 - put the files tablvar.sty and tablvar.pdf in your TeX Directory Structure.
 
 

Modified: trunk/Master/texmf-dist/doc/latex/tablvar/tablvar.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/tablvar/tablvar.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tablvar/tablvar.dtx	2024-08-10 20:33:09 UTC (rev 72006)
+++ trunk/Master/texmf-dist/source/latex/tablvar/tablvar.dtx	2024-08-10 20:33:37 UTC (rev 72007)
@@ -1,6 +1,6 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 2018-2023 by Antoine Missier <antoine.missier at ac-toulouse.fr>
+% Copyright (C) 2018-2024 by Antoine Missier <antoine.missier at 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 at 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 at saveheight -> tv at 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 at pos,\@ZI,\@arstrutbox,\@ifstar,\\}
-% \DoNotIndex{\addtocounter,\advance,\arraybackslash}
-% \DoNotIndex{\begin,\boolean,\centering,\color,\DeclareOption,\def}
-% \DoNotIndex{\define at boolkey,\defin at 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 at 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,25 +434,23 @@
 %
 % \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}
@@ -460,11 +457,23 @@
 %
 % \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 \\
@@ -471,14 +480,11 @@
 %    \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}{}
-%
 % \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,7 +676,7 @@
 %
 % 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
@@ -668,7 +683,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*}\]
@@ -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 at tikz % false par défaut
 \DeclareOption{tikz}{\tv at tikztrue}
@@ -1625,23 +1727,31 @@
 
 \iftv at 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 at 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 at 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 at 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 at row|,
+% et réalise un décalage vertical de |\mil at 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 at heightshift
-\newcounter{mil at rowshift}
+\newlength\mil at shift
+\newcounter{mil at 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 at saveheight}
+% \begin{macro}{\tv at 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 at saveheight|.
+% par |\tv at setheight|.
 %    \begin{macrocode}
-\newcommand\tv at saveheight{%
-    \tv at cellheight=0pt
-    \tv at celldepth=0pt
-    \ifdim \ht\tv at cellbox > \ht\@arstrutbox
-        \global\advance\tv at cellheight by \ht\tv at cellbox
-    \else
-        \global\advance\tv at cellheight by \ht\@arstrutbox
+\newcommand\tv at setheight{%
+    \global\tv at cellheight=\ht\tv at cellbox
+    \ifthenelse{\value{var at ligne}=0}{
+        \global\advance\tv at cellheight by \rowtopsep}{}
+    \ifdim \tv at cellheight < \ht\@arstrutbox
+        \global\tv at cellheight = \ht\@arstrutbox
     \fi
-    \ifdim \dp\tv at cellbox > \dp\@arstrutbox
-        \global\advance\tv at celldepth by \dp\tv at cellbox
-    \else
-        \global\advance\tv at celldepth by \dp\@arstrutbox
+    \global\tv at celldepth=\dp\tv at cellbox
+    \ifthenelse{\value{var at ligne}=0}{
+        \global\advance \tv at celldepth by \rowbottomsep}{}
+    \ifdim \tv at celldepth < \dp\@arstrutbox
+        \global\tv at celldepth = \dp\@arstrutbox
     \fi
+    \vrule height \tv at cellheight depth \tv at celldepth width 0pt
 }
 %    \end{macrocode}
 % \end{macro}
@@ -2115,7 +2249,7 @@
         >{\setcounter{tv at icol}{0}\stepcounter{tv at row}\begin{lrbox}%
             \tv at cellbox $}%
         c%
-        <{$\end{lrbox}\usebox{\tv at cellbox}\tv at saveheight}}
+        <{$\end{lrbox}\usebox{\tv at cellbox}\tv at setheight}}
     % type de colonne i pour les intervalles
     \newcolumntype{i}{>{\stepcounter{tv at 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 at rm|). On l'interprète
+% (celle-ci est passée à |\XKV at 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 at 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 at 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 at 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 at 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 at 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 at 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 at heightshift = \ht\@arstrutbox
-    \advance\mil at heightshift by \dp\@arstrutbox
-    \divide\mil at heightshift by 2
-    \setcounter{mil at rowshift}{3}
-    \addtocounter{mil at rowshift}{-\value{nbvarlignes}}
-    \multiply\mil at heightshift by \value{mil at rowshift}
-    \pos*{2}{\vdecal{\mil at heightshift}{#1}}
+    \setcounter{mil at row}{\value{nbvarlignes}}
+    \ifthenelse{\isodd{\value{nbvarlignes}}}{
+        \addtocounter{mil at row}{1}
+        \divide\value{mil at row} by 2
+        \pos*{\themil at row}{\smash{#1}}
+    }{
+        \divide\value{mil at row} by 2
+        \mil at shift = \dp\@arstrutbox
+        \advance\mil at shift by 0.5ex       
+        \pos*{\themil at row}{\vdecal{-\mil at 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 at cellheight| et |\tv at cellheight|,
+% les variables globales |\tv at cellheight| et |\tv at 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

Modified: trunk/Master/texmf-dist/source/latex/tablvar/tablvar.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/tablvar/tablvar.ins	2024-08-10 20:33:09 UTC (rev 72006)
+++ trunk/Master/texmf-dist/source/latex/tablvar/tablvar.ins	2024-08-10 20:33:37 UTC (rev 72007)
@@ -1,5 +1,5 @@
 %%
-%% Copyright (C) 2018-2023 by Antoine Missier <antoine.missier at ac-toulouse.fr>
+%% Copyright (C) 2018-2024 by Antoine Missier <antoine.missier at 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
@@ -21,7 +21,7 @@
 
 This is a generated file.
 
-Copyright (C) 2018-2023 by Antoine Missier <antoine.missier at ac-toulouse.fr>
+Copyright (C) 2018-2024 by Antoine Missier <antoine.missier at 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
@@ -46,7 +46,7 @@
 \Msg{*     tablvar.sty                                           *}
 \Msg{*                                                           *}
 \Msg{* To produce the documentation run the file tablvar.dtx     *}
-\Msg{* through XeLaTeX or LaTeX + dvips + ps2pdf.                *}
+\Msg{* through LaTeX + dvips + ps2pdf.                           *}
 \Msg{*                                                           *}
 \Msg{* Happy TeXing!                                             *}
 \Msg{*                                                           *}

Modified: trunk/Master/texmf-dist/tex/latex/tablvar/tablvar.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tablvar/tablvar.sty	2024-08-10 20:33:09 UTC (rev 72006)
+++ trunk/Master/texmf-dist/tex/latex/tablvar/tablvar.sty	2024-08-10 20:33:37 UTC (rev 72007)
@@ -8,7 +8,7 @@
 %% 
 %% This is a generated file.
 %% 
-%% Copyright (C) 2018-2023 by Antoine Missier <antoine.missier at ac-toulouse.fr>
+%% Copyright (C) 2018-2024 by Antoine Missier <antoine.missier at 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,13 +22,12 @@
 %% 
 \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]
 \RequirePackage{array}
 \RequirePackage{ifthen}
 \RequirePackage{multido}
 \RequirePackage{xkeyval}
-\RequirePackage{ifpdf}
+\RequirePackage{iftex}
 
 \newif\iftv at tikz % false par défaut
 \DeclareOption{tikz}{\tv at tikztrue}
@@ -38,23 +37,31 @@
 
 \iftv at 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 at 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 at 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 at pstrickstrue
 \fi\fi\fi
 
@@ -120,6 +127,12 @@
 \newcounter{maxdiscont}
 \setcounter{maxdiscont}{4} % nb max de discontinuités
 
+\newlength{\rowtopsep}
+\setlength{\rowtopsep}{2pt}
+
+\newlength{\rowbottomsep}
+\setlength{\rowbottomsep}{2pt}
+
 \newcommand*{\fleche}[2]{
     \iftv at tikz
         \tikz[remember picture,overlay]{\draw[->,>=stealth,
@@ -182,8 +195,8 @@
     \multido{\I=1+1}{\themaxdiscont}{\newcounter{discont\I}}
 }
 
-\newlength\mil at heightshift
-\newcounter{mil at rowshift}
+\newlength\mil at shift
+\newcounter{mil at row}
 
 \newcounter{maxZI} % nb max de ZI
 \setcounter{maxZI}{4}
@@ -225,19 +238,20 @@
     \setcounter{nbvarlignes}{3}
 }
 
-\newcommand\tv at saveheight{%
-    \tv at cellheight=0pt
-    \tv at celldepth=0pt
-    \ifdim \ht\tv at cellbox > \ht\@arstrutbox
-        \global\advance\tv at cellheight by \ht\tv at cellbox
-    \else
-        \global\advance\tv at cellheight by \ht\@arstrutbox
+\newcommand\tv at setheight{%
+    \global\tv at cellheight=\ht\tv at cellbox
+    \ifthenelse{\value{var at ligne}=0}{
+        \global\advance\tv at cellheight by \rowtopsep}{}
+    \ifdim \tv at cellheight < \ht\@arstrutbox
+        \global\tv at cellheight = \ht\@arstrutbox
     \fi
-    \ifdim \dp\tv at cellbox > \dp\@arstrutbox
-        \global\advance\tv at celldepth by \dp\tv at cellbox
-    \else
-        \global\advance\tv at celldepth by \dp\@arstrutbox
+    \global\tv at celldepth=\dp\tv at cellbox
+    \ifthenelse{\value{var at ligne}=0}{
+        \global\advance \tv at celldepth by \rowbottomsep}{}
+    \ifdim \tv at celldepth < \dp\@arstrutbox
+        \global\tv at celldepth = \dp\@arstrutbox
     \fi
+    \vrule height \tv at cellheight depth \tv at celldepth width 0pt
 }
 
 \newcommand{\tvcoltypes}{
@@ -246,7 +260,7 @@
         >{\setcounter{tv at icol}{0}\stepcounter{tv at row}\begin{lrbox}%
             \tv at cellbox $}%
         c%
-        <{$\end{lrbox}\usebox{\tv at cellbox}\tv at saveheight}}
+        <{$\end{lrbox}\usebox{\tv at cellbox}\tv at setheight}}
     % type de colonne i pour les intervalles
     \newcolumntype{i}{>{\stepcounter{tv at icol}
         \centering\arraybackslash$}p{\intervalwidth}<{$}}
@@ -262,8 +276,8 @@
     \setkeys*{tablvar}{#1} % fourni par xkeyval
     \if\XKV at 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}{%
@@ -296,7 +310,6 @@
 \newcommand*{\variations}[2][3]{% #1=nblignes (3 par défaut)
     % (ré)initialisation des compteurs
     \setcounter{nbvarlignes}{#1}
-    \setcounter{var at 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
@@ -323,6 +336,7 @@
     }
     % tracé des pointillés pour les valeurs remarquables
     \multido{\Ix=1+1}{\thenumvr}{\vrconnect{X\Ix}{Y\Ix}}
+    \setcounter{var at ligne}{0}
     \\ % dernier retour ligne du tableau
 }
 
@@ -355,13 +369,17 @@
 \newcommand*{\vdecal}[2]{\smash{\raisebox{#1}{$#2$}}}
 
 \newcommand*{\mil}[1]{%
-    \mil at heightshift = \ht\@arstrutbox
-    \advance\mil at heightshift by \dp\@arstrutbox
-    \divide\mil at heightshift by 2
-    \setcounter{mil at rowshift}{3}
-    \addtocounter{mil at rowshift}{-\value{nbvarlignes}}
-    \multiply\mil at heightshift by \value{mil at rowshift}
-    \pos*{2}{\vdecal{\mil at heightshift}{#1}}
+    \setcounter{mil at row}{\value{nbvarlignes}}
+    \ifthenelse{\isodd{\value{nbvarlignes}}}{
+        \addtocounter{mil at row}{1}
+        \divide\value{mil at row} by 2
+        \pos*{\themil at row}{\smash{#1}}
+    }{
+        \divide\value{mil at row} by 2
+        \mil at shift = \dp\@arstrutbox
+        \advance\mil at shift by 0.5ex
+        \pos*{\themil at row}{\vdecal{-\mil at shift}{#1}}
+    }
 }
 
 \newcommand*{\barre}[1][]{\makebox[0pt]{$#1$}%
@@ -372,8 +390,26 @@
     \kern1.5pt\vrule width \bbrulewidth\kern1pt
     \vrule width \bbrulewidth\kern1.5pt}
 
-\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}}
 
 \newcommand*{\discont}{
     \ifthenelse{\thevar at ligne=1}{
@@ -392,7 +428,9 @@
     }{}
 }
 
-\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}}
 
 \newcommand*{\vr}[2][2]{% ligne 2 par défaut sauf si tv at row=1
     \stepcounter{numvr}



More information about the tex-live-commits mailing list.