0% ont trouvé ce document utile (0 vote)
39 vues11 pages

Extension LaTeX 'tabvar' pour Tableaux de Variations

Ce document décrit l'extension LaTeX tabvar qui facilite la saisie de tableaux de variations. L'extension fournit des commandes pour dessiner des flèches et tracer des lignes dans les tableaux de variations.

Transféré par

FRANCIS NDOUR
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
39 vues11 pages

Extension LaTeX 'tabvar' pour Tableaux de Variations

Ce document décrit l'extension LaTeX tabvar qui facilite la saisie de tableaux de variations. L'extension fournit des commandes pour dessiner des flèches et tracer des lignes dans les tableaux de variations.

Transféré par

FRANCIS NDOUR
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Tableaux de variations : ‘tabvar’

Daniel Flipo
[email protected]

1 Documentation
L’extension tabvar.dtx 1 , a pour but de faciliter la saisie des tableaux de variations.
Elle s’appuie sur les extensions array, colortbl, et varwidth. Les flèches sont prises
dans une fonte (type 1) spécialement créée par Michel Bovani. Depuis la ver-
sion 1.5, quatre variantes de flèches sont proposées. Un grand merci à Michel pour
cette contribution et pour ses remarques qui m’ont été très utiles pour améliorer
les versions préliminaires.
Une autre possibilité (conservée uniquement pour préserver la compatibilité avec
les premières versions de tabvar) consiste à faire appel, pour le dessin des flèches, à
MetaPost : le fichier tabvar.mp permet de créer les trois flèches tabvar.1, tabvar.2,
tabvar.3. Ceci est une solution de repli pour ceux qui auraient du mal à installer
la fonte tabvar.pfb, à n’employer qu’en dernier recours.
Lorsqu’on travaille avec XeLaTeX ou LuaLaTeX il convient de placer l’appel à
\usepackage{tabvar} avant \usepackage{fontspec}.

1.1 Installation
L’extension tabvar fait partie des distributions TeXLive, MacTeX, ProTeXt, Mik-
TeX, etc. Si elle n’est pas installée chez vous, assurez-vous d’abord que l’extension
varwidth.sty est présente sur votre système, sinon récupérez-la sur CTAN : cherchez
par exemple la chaîne varwidth sur http://www.tex.ac.uk/CTANfind.html
Les fichiers tabvar.1, . . . , tabvar.3 ainsi que tabvar.sty et tabvar.cfg doivent être
placés dans un répertoire vu par LATEX.
Les flèches sont prises dans la fonte type 1 tabvar.pfb à condition que celle-ci soit
correctement installée : il est nécessaire de placer le fichier tabvar.pfb dans un
répertoire où il sera pris en compte, par exemple, pour respecter l’architecture
TDS : texmf/fonts/type1/public/tabvar. De même, son fichier de métriques
tabvar.tfm devra être mis par exemple dans texmf/fonts/tfm/public/tabvar.
Un ligne donnant accès à cette fonte doit être ajoutée (voir tabvar.map) dans
les fichiers .map utilisés par le pilote PostScript (psfonts.map) et par pdfTEX
(pdftex.map). Ne pas oublier de mettre à jour les bases de données ls-R pour
terminer (commande mktexlsr sous teTEX ou TEXLive).

1.2 Utilisation
L’environnement tabvar est une variante de l’environnement array, adaptée à la
saisie de tableaux de variations.
Trois nouveaux types de colonnes, C, L et R remplacent les types classiques (c, l
et r) ; ils permettent de disposer du matériel sur plusieurs niveaux dans un même
ligne du tableau (ce sont des colonnes de type \parbox).
1. La version présentée ici porte le numéro v1.61, dernière modification le 2012/03/14.

1
Un quatrième type de colonne, noté U 2 sert pour les plages où la fonction n’est pas
définie (U pour Undefined). La colonne est entièrement grisée par défaut, mais il
est possible de choisir une autre couleur (voir le fichier de configuration tabvar.cfg).
Désormais tabvar teste au \begin{document} si le type N a été défini par une autre
extension, si c’est le cas un avertissement est affiché dans le fichier .log et tabvar
n’écrase plus la définition du type N. Sinon, le type N est défini comme avant.
La saisie des lignes contenant les valeurs de la variable et les signes des dérivées
se fait exactement comme celles d’un tableau array. Seules les lignes contenant
les variations de la ou des fonctions font appel à six commandes particulières :
\croit, \decroit, \constante, \niveau, \dbarre et \discont.
– Les commandes \croit, \decroit et \constante ne prennent pas d’argument,
elles tracent les flèches montantes, descendantes ou horizontales.
– \niveau{départ}{total} prend deux arguments : le niveau (hauteur) où doit
être positionnée la première valeur de la fonction et le nombre total de niveaux
qui seront utilisés dans la ligne. Le niveau le plus bas est numéroté 1.
– \dbarre trace un double trait vertical dont la hauteur est celle de la ligne du
tableau ; elle indique les discontinuités de la fonction.
– \discont[num]{valeur_gauche}{< ou >}{valeur_droite} peut s’utiliser lorsque
la fonction présente une discontinuité à la place de la double barre traditionnelle ;
elle prend trois arguments obligatoires : les valeurs à gauche f− et à droite f+ de
la fonction, séparées par un signe < ou > selon que f− < f+ ou f− > f+ . Enfin,
l’argument optionnel, qui vaut 0 par défaut, permet d’intercaler num niveaux
supplémentaires entre les valeurs de f− et f+ si nécessaire.
Il est possible d’ajouter des filets d’alignement vertical en utilisant la commande
\barre{} qui requiert un argument obligatoire, éventuellement vide : \barre{}
trace un filet vertical dont la hauteur est celle de la ligne du tableau. Lorsqu’une va-
leur doit figurer sous le filet, on la passe en argument de la commande (\barre{0}
par exemple), ainsi cette valeur sera centrée sur le filet. Ceci restreint évidemment
l’usage de la commande \barre aux colonnes de type C. La couleur du filet (gris
par défaut) est paramétrable, voir le fichier de configuration tabvar.cfg. Cette so-
lution a été préférée à des pointillés qui posent des problèmes de raccordement
d’une ligne à l’autre du tableau.
Depuis la version 1.5, quatre variantes sont proposées pour le dessin des flèches
PostScript type 1, elles sont accessibles par les commandes \FlechesPS1 (flèches
« à moustaches » obtenues par défaut), \FlechesPS2 (assorties à la police Fourier),
\FlechesPS3 et \FlechesPS4.
La commande \TVcenter prend un argument, elle sert à centrer verticalement le
nom de la fonction, par exemple \TVcenter{f(x)}.
Le fichier demo.pdf (joint) propose plusieurs exemples, accompagnés de leur code
source, illustrant les utilisations possibles de l’environnement tabvar.
Plusieurs commandes ou paramètres permettent de personnaliser l’aspect du ta-
bleau (augmentation de la largeur ou de la hauteur des cellules, etc.), voir le fichier
tabvar.cfg.
2. Il était noté N jusqu’à la version 1.5, le type N est conservé pour assurer la compatibilité
ascendante mais ne devrait plus être utilisé pour éviter un conflit avec l’extension numprint.sty.

2
2 Le code
2.1 Options
Depuis la version 0.9, les flèches utilisées par défaut sont prises dans la fonte type 1
de Michel Bovani.
Si cette fonte spécifique n’a pas pu être correctement installée, on pourra déclarer
\FlechesMPtrue dans le fichier tabvar.cfg ou dans le préambule, ou encore utiliser
l’option FlechesMP pour que les flèches MetaPost utilisées à la place. Cette solution
est à proscrire lorsqu’on travaille avec XeLaTeX ou LuaLaTeX.
1 \newif\ifFlechesMP \FlechesMPfalse
2 \DeclareOption{FlechesMP}{\FlechesMPtrue}
3 \DeclareOption{FlechesPS}{\FlechesMPfalse}
4 \ProcessOptions

2.2 Identification, extensions requises


Chargement des extensions utiles :
5 \RequirePackage{array}
6 \RequirePackage{colortbl}
7 \RequirePackage{varwidth}
8 \RequirePackage{ifthen}

2.3 Dessin des flèches


Le fichier tabvar.mp (joint) contient le dessin des trois flèches en MetaPost.
La commande mpost -tex=latex tabvar produit trois fichiers tabvar.1. . . tab-
var.3 qui contiennent les dessins des flèches ; en PDF, il faut indiquer qu’il s’agit
de fichiers MetaPost.
9 \RequirePackage{graphicx}
10 \RequirePackage{ifpdf}
11 \ifpdf
12 \DeclareGraphicsRule{*}{mps}{*}{}
13 \fi

La mise à l’échelle des flèches MetaPost se fait à partir de la valeur de \f@size


qui contient normalement la taille en points de la police de base (10 en 10pt). Si la
classe utilisée ne définit pas \f@size, on donne la valeur 10 à \f@size, la valeur
par défaut de \TVarrowscale est alors 1.0 (échelle 1), l’utilisateur peut toujours
redéfinir lui-même \TVarrowscale selon ses besoins.
14 \providecommand{\f@size}{10}
15 \newcommand{\TVarrowscale}{\strip@pt\dimexpr\f@size pt/10\relax}
La commande \TVarrowscolstretch, dont la valeur par défaut est 1, permet
d’augmenter la largeur des colonnes contenant les flèches.
\TVarrowscolstretch
16 \newcommand*{\TVarrowscolstretch}{1}
17 \newcommand*{\TV@arrowcol@stretch}[1]{%
18 \makebox[\TVarrowscolstretch\width][c]{#1}}

La commande \FlechesPS suivie d’un chiffre compris entre 1 et 4 permet d’accéder


à quatre variantes pour les flèches PostScript.

3
\FlechesPS
19 \newcommand*{\enearrow}{\enearrowi}
20 \newcommand*{\esearrow}{\esearrowi}
21 \newcommand*{\eastarrow}{\eastarrowi}
22 \newcommand*{\FlechesPS}[1]{%
23 \renewcommand*{\enearrow}{%
24 \csname enearrow\romannumeral#1\endcsname}%
25 \renewcommand*{\esearrow}{%
26 \csname esearrow\romannumeral#1\endcsname}%
27 \renewcommand*{\eastarrow}{%
28 \csname eastarrow\romannumeral#1\endcsname}%
29 }

\FlecheC Le tracé des trois types de flèches est fait par les commandes \FlecheC,
\FlecheD \FlecheD et \FlecheH. Le choix de la variante (MetaPost ou type 1) est fait
\FlecheH au \begin{document}, ce qui économise une fonte mathématique parmi les 16
disponibles lorsqu’on choisit la variante MetaPost.
30 \AtBeginDocument{%
31 \ifFlechesMP
32 \newsavebox{\arup}%
33 \newsavebox{\ardown}%
34 \newsavebox{\arhor}%
35 \sbox{\arup}{\includegraphics[scale=\TVarrowscale]{tabvar.1}}%
36 \sbox{\ardown}{\includegraphics[scale=\TVarrowscale]{tabvar.2}}%
37 \sbox{\arhor}{\includegraphics[scale=\TVarrowscale]{tabvar.3}}%
38 \newcommand*{\FlecheC}{%
39 \TV@arrowcol@stretch{\raisebox{.5ex}{\usebox{\arup}}}}%
40 \newcommand*{\FlecheD}{%
41 \TV@arrowcol@stretch{\raisebox{.5ex}{\usebox{\ardown}}}}%
42 \newcommand*{\FlecheH}{%
43 \TV@arrowcol@stretch{\raisebox{.5ex}{\usebox{\arhor}}}}%
44 \else
45 \DeclareFontFamily{U}{tv}{}%
46 \DeclareFontShape{U}{tv}{m}{n}{<->tabvar}{}%
47 \DeclareSymbolFont{tvsymbols}{U}{tv}{m}{n}%
48 \DeclareMathSymbol{\eastarrowi}{\mathrel}{tvsymbols}{"21}%
49 \DeclareMathSymbol{\enearrowi}{\mathrel}{tvsymbols}{"25}%
50 \DeclareMathSymbol{\esearrowi}{\mathrel}{tvsymbols}{"26}%
51 \DeclareMathSymbol{\eastarrowii}{\mathrel}{tvsymbols}{"31}%
52 \DeclareMathSymbol{\enearrowii}{\mathrel}{tvsymbols}{"35}%
53 \DeclareMathSymbol{\esearrowii}{\mathrel}{tvsymbols}{"36}%
54 \DeclareMathSymbol{\eastarrowiii}{\mathrel}{tvsymbols}{"3B}%
55 \DeclareMathSymbol{\enearrowiii}{\mathrel}{tvsymbols}{"3F}%
56 \DeclareMathSymbol{\esearrowiii}{\mathrel}{tvsymbols}{"40}%
57 \DeclareMathSymbol{\eastarrowiv}{\mathrel}{tvsymbols}{"46}%
58 \DeclareMathSymbol{\enearrowiv}{\mathrel}{tvsymbols}{"4A}%
59 \DeclareMathSymbol{\esearrowiv}{\mathrel}{tvsymbols}{"4B}%
60 \newcommand*{\FlecheC}{%
61 \TV@arrowcol@stretch{\ensuremath{\enearrow}}}%
62 \newcommand*{\FlecheD}{%
63 \TV@arrowcol@stretch{\ensuremath{\esearrow}}}%
64 \newcommand*{\FlecheH}{%
65 \TV@arrowcol@stretch{\ensuremath{\eastarrow}}}%
66 \fi}

4
2.4 Positionnement vertical de éléments
La variable \TVextraheight, dont la valeur par défaut vaut .7\baselineskip
permet d’écarter légèrement les valeurs maximales de la fonction, du filet horizon-
tal supérieur.
67 \newdimen\TVextraheight
68 \setlength{\TVextraheight}{.7\baselineskip}

\niveau La commande \niveau, utilisée uniquement dans les lignes relatives aux valeurs
des fonctions, permet d’initialiser les valeurs des compteurs \@niveaux (nombre
total de niveaux utilisés dans la ligne) et \@pos (indicateur du niveau courant). Elle
active également le drapeau \if@socle utilisé par la commande \@socle. Celle-
ci place un filet invisible de hauteur \TVextraheight et ajoute \@pos - 1 sauts
de lignes (les colonnes sont alignées par le bas), ce qui assure le positionnement
vertical de l’élément (valeur de la fonction ou flèche). Le drapeau \if@socle devra
être mis localement à ‘faux’ dans certaines colonnes (cf. \dbarre et discont).
69 \newcount\@niveaux
70 \newcount\@pos
71 \newif\if@socle
72 \newcommand{\niveau}[2]{\global\@pos=#1 \global\@niveaux=#2
73 \global\@socletrue}
74 \newcommand{\@socle}{%
75 \ifnum\@pos=1 \@soclefalse \fi
76 \if@socle
77 \rule{\z@}{\TVextraheight}%
78 \@tempcnta=\@pos
79 \advance\@tempcnta by -1
80 \whiledo{\@tempcnta>0}{\TVnl \null \advance\@tempcnta by -1}%
81 \fi}

2.5 Nouveaux types de colonnes


Ces définitions nécessitent les extensions array et varwidth. L’environnement
varwidth, comme minipage, redéfinit la commande \\. On la renomme à l’inté-
rieur des environnements varwidth, de façon à éviter la confusion entre passage
à la ligne à l’intérieur d’une colonne et passage à la ligne suivante du tableau :
\TVnl (commande interne) provoque un changement de ligne à l’intérieur d’une
colonne, l’utilisateur peut continuer à utiliser \\ pour terminer une ligne du ta-
bleau. La commande \TVtabularnewline, définie dans l’environnement tabvar,
provoque un changement de ligne dans le tableau (\tabularnewline) et affecte la
valeur ‘vrai’ au drapeau \ifreset@niveaux, ce qui commande la réinitialisation
des compteurs \@pos et \@niveaux à la valeur 1. Cette réinitialisation aura lieu
après que la commande \@socle ait placé les valeurs de la fonction et les flèches
à la bonne hauteur.
82 \newif\ifreset@niveaux
83 \newcommand{\reset@niveaux}{%
84 \ifreset@niveaux
85 \global\@niveaux=1 \global\@pos=1 \global\@soclefalse
86 \fi}

5
On définit des variantes C, L et R, des colonnes c, l et r : ce sont des minipage
alignées par le bas, dont la largeur est celle de la ligne la plus longue, avec un maxi-
mum de \TVmaxcolwidth fixé à \linewidth par défaut, (voir la documentation
de l’extension varwidth.sty).
87 \newdimen\TVmaxcolwidth
88 \setlength{\TVmaxcolwidth}{\linewidth}
89 \newcolumntype{C}{%
90 >{\begin{varwidth}[b]{\TVmaxcolwidth}\let\TVnl=\\
91 \let\\=\TVtabularnewline $}%
92 c%
93 <{\@socle \reset@niveaux
94 $\@finalstrut\@arstrutbox\end{varwidth}}}
95 \newcolumntype{L}{%
96 >{\begin{varwidth}[b]{\TVmaxcolwidth}\let\TVnl=\\
97 \let\\=\TVtabularnewline $}%
98 l%
99 <{\@socle \reset@niveaux
100 $\@finalstrut\@arstrutbox\end{varwidth}}}
101 \newcolumntype{R}{%
102 >{\begin{varwidth}[b]{\TVmaxcolwidth}\let\TVnl=\\
103 \let\\=\TVtabularnewline $}%
104 r%
105 <{\@socle \reset@niveaux
106 $\@finalstrut\@arstrutbox\end{varwidth}}}
On définit également un type U pour les domaines où la fonction n’est pas définie :
la colonne est coloriée en faisant appel à l’extension colortbl. La couleur peut être
choisie par l’utilisateur, par exemple :
\definecolor{TVcolor}{rgb}{0.66, 0.8, 0}
donne un vert, voir color.sty pour la façon de définir des couleurs. L’ancien nom
N, conservé pour la compatibilité ascendante, tant qu’il n’y a pas conflit, mais ne
devrait plus être utilisé.
107 \definecolor{TVcolor}{gray}{0.7}
108 \newdimen\TVarraycolsep
109 \newdimen\TVcolorLeftSep
110 \newdimen\TVcolorRightSep
111 \setlength{\TVcolorLeftSep}{\TVarraycolsep}
112 \setlength{\TVcolorRightSep}{\TVarraycolsep}
113 \newcolumntype{U}{%
114 >{\columncolor{TVcolor}[\TVcolorLeftSep][\TVcolorRightSep]}
115 c}
116 \AtBeginDocument{%
117 \@ifundefined{NC@find@N}%
118 {\newcolumntype{N}{U}}%
119 {\PackageWarning{tabvar}{Le type de colonne N est d\’efini par
120 ailleurs. \MessageBreak Remplacer N par
121 U dans \protect\begin{tabvar}{...N...}
122 \MessageBreak}}%
123 }

6
2.6 Commandes de saisie
Les valeurs à afficher dans chaque ligne peuvent être saisies directement (1.4, +,
-, etc.) comme dans un tableau normal. Les lignes correspondant aux valeurs des
fonctions comportent plusieurs étages, nous disposons deux compteurs, \@niveaux
qui contient le nombre total de niveaux (ou étages) utilisés dans la ligne, \@pos
qui indique le niveau courant.

\croit Les commandes \croit,\decroit et \constante tracent les flèches à la hauteur


\decroit adéquate et mettent à jour le compteur \@pos. Un message d’erreur est affiché
\constante lorsque l’une de ces commandes fait sortir de la plage de niveaux déclarés par la
commande \niveau.
124 \newcommand{\decroit}{\FlecheD
125 \global\advance\@pos by -1
126 \ifnum\@pos<1
127 \PackageError{tabvar.sty}%
128 {Les arguments la commande
129 \protect\niveau\space sont incorrects}%
130 \fi}
131 \newcommand{\croit} {\raisebox{-\baselineskip}{\FlecheC}%
132 \global\advance\@pos by 1
133 \ifnum\@pos>\@niveaux
134 \PackageError{tabvar.sty}%
135 {Les arguments la commande
136 \protect\niveau\space sont incorrects}%
137 \fi}
138 \newcommand{\constante}{\FlecheH}

\dbarre La commande \dbarre sert à tracer les doubles barres La commande \vline ne
peut pas être utilisée à cette fin dans les environnements de type \parbox, car sa
portée est limitée à un interligne.
On calcule la hauteur exacte de la rangée, dans les deux cas \@niveaux=1 et
\@niveaux>1, \@tempdimc contient la hauteur totale (totalheight) et \@tempdimb
la profondeur (depth).
139 \newcommand{\barre@dth}{%
140 \ifnum\@niveaux=1
141 \@tempdimc=\TVarraystretch\baselineskip
142 \else
143 \@tempcnta=\@niveaux
144 \advance\@tempcnta by -1
145 \@tempdimc=\@tempcnta\baselineskip
146 \@tempdimb=\TVextraheight
147 \ifdim\@tempdimb<.7\baselineskip
148 \@tempdimb=.7\baselineskip
149 \fi
150 \advance\@tempdimc by \@tempdimb
151 \advance\@tempdimc by \dp\@arstrutbox
152 \fi
153 \@tempdimb=\dp\@arstrutbox}
On fait appel à \rule pour le tracé de \dbarre.
154 \newcommand{\dbarre}{%
155 \barre@dth

7
156 \rule[-\@tempdimb]{.5\p@}{\@tempdimc}%
157 \kern 2\p@
158 \rule[-\@tempdimb]{.5\p@}{\@tempdimc}%
159 \@soclefalse}

\barre La commande \barre prend un argument obligatoire. \barre{} trace un filet


vertical centré dans une colonne. Lorsque l’argument est non vide, celui-ci est
superposé (centré) sur le filet. Le filet est tracé en gris par défaut (couleur para-
métrable).
160 \newsavebox{\tab@box}
161 \definecolor{TVbarrecolor}{gray}{0.7}
162 \newcommand{\barre}[1]{%
163 \sbox{\tab@box}{\ensuremath{#1}}%
164 \barre@dth
165 \@tempcnta=\@pos
166 \advance\@tempcnta by -1
167 \advance\@tempdimb by \@tempcnta\baselineskip
168 \raisebox{-\@tempdimb}[0pt][0pt]{%
169 \makebox[\wd\tab@box][c]{\color{TVbarrecolor}%
170 \rule{.5\p@}{\@tempdimc}}}%
171 \kern-\wd\tab@box\usebox{\tab@box}%
172 }

\discont La commande \discont s’utilise lorsque la fonction présente une discontinuité,


elle réclame 3 arguments obligatoires : le premier est la limite à gauche f− , le
deuxième le signe ’<’ ou ’>’, le troisième est la limite à droite f+ . LATEX ne peut

pas toujours comparer facilement les valeurs de f− et f+ (penser à f− = e,
f+ = π/2), le deuxième argument précise si f− < f+ ou si f− > f+ .
En plus de ces 3 arguments obligatoires, un argument optionnel (entier positif)
permet d’écarter verticalement les valeurs f− et f+ ; la valeur de cet entier donne
le nombre de niveaux supplémentaires à intercaler (0 par défaut).
On commence par mesurer la largeur des deux arguments #2 et #4 pour pouvoir
les centrer ensuite dans une boîte de largeur égale au maximum des deux largeurs.
Si cette disposition ne convient pas, on pourra toujours ajouter un \hfill à droite
où à gauche de la valeur à déplacer.
173 \newcommand{\discont}[4][0]{%
174 \settowidth{\@tempdimc}{\ensuremath{#2}}%
175 \settowidth{\@tempdimb}{\ensuremath{#4}}%
176 \ifdim\@tempdimc<\@tempdimb \@tempdimc=\@tempdimb\fi
177 \rule{\z@}{\TVextraheight}%
178 \@soclefalse
179 \ifthenelse{\equal{#3}{<}}%
Cas où f− < f+ : on pose la valeur de f+ (#4), puis on saute autant de lignes
supplémentaires qu’indiqué dans l’argument optionnel, ensuite on passe à la ligne
et on pose la valeur de f− (#2), enfin on ajoute en dessous \@pos - 1 sauts de
lignes pour positionner le tout en hauteur. Il reste à ajuster le compteur \@pos
pour que la flèche suivante soit placée à la bonne hauteur.
180 {\makebox[\@tempdimc]{\ensuremath{#4}}%
181 \@tempcnta=#1
182 \whiledo{\@tempcnta>0}{\TVnl \null \advance\@tempcnta by -1}%
183 \TVnl

8
184 \makebox[\@tempdimc]{\ensuremath{#2}}%
185 \@tempcnta=\@pos
186 \advance\@tempcnta by -1
187 \whiledo{\@tempcnta>0}{\TVnl \null \advance\@tempcnta by -1}%
188 \global\advance\@pos by 1
189 \global\advance\@pos by #1
190 }%
191 {\ifthenelse{\equal{#3}{>}}%
Cas où f− > f+ : idem en permutant f− et f+ .
192 {\makebox[\@tempdimc]{\ensuremath{#2}}%
193 \@tempcnta=#1
194 \whiledo{\@tempcnta>0}{\TVnl \null \advance\@tempcnta by -1}%
195 \TVnl
196 \makebox[\@tempdimc]{\ensuremath{#4}}%
197 \@tempcnta=\@pos
198 \advance\@tempcnta by -2
199 \advance\@tempcnta by -#1
200 \whiledo{\@tempcnta>0}{\TVnl \null \advance\@tempcnta by -1}%
201 \global\advance\@pos by -1
202 \global\advance\@pos by -#1
203 }%
Cas où le deuxième argument n’est ni < ni > : erreur
204 {\PackageError{tabvar.sty}%
205 {Le second argument de \protect\discont\space doit \^etre
206 \MessageBreak soit ’<’ soit ’>’}}%
207 }%
208 }

\TVcenter La commande \TVcenter{} prend un argument, le nom de la fonction à centrer


verticalement dans sa colonne.
209 \newcommand*{\TVcenter}[1]{%
210 \@tempcnta=\@niveaux \advance\@tempcnta by -1 \divide\@tempcnta by 2
211 \@tempdimb=\@tempcnta\baselineskip
212 \ifodd\@niveaux\else\advance\@tempdimb by .5\baselineskip\fi
213 \@pos=1\raisebox{\@tempdimb}{\ensuremath{#1}}%
214 }

2.7 Environnement ‘tabvar’


L’environnement tabvar est un array où sont redéfinis \TVarraystretch,
\TVarraycolsep et \tabularnewline.

tabvar
215 \newcommand{\TVarraystretch}{1.5}
216 \setlength{\TVarraycolsep}{1pt}
217 \newenvironment{tabvar}[1]
218 {\renewcommand{\arraystretch}{\TVarraystretch}%
219 \setlength{\arraycolsep}{\TVarraycolsep}%
220 \global\@niveaux=1 \global\@pos=1 \global\@soclefalse
221 \def\TVtabularnewline{\reset@niveauxtrue\tabularnewline}%
222 \begin{array}{#1}}
223 {\end{array}}

9
Chargement du fichier de préférences, si il en existe un.
224 \InputIfFileExists{tabvar.cfg}
225 {\typeout{loading tabvar.cfg}}
226 {\typeout{tabvar.cfg not found, using default values}}

3 Fichier de configuration
227 %% Fichier de configuration de l’extension ‘tabvar.sty’.
228 %%
229 %% D\’ecommenter la ligne suivante pour que les variantes MetaPost
230 %% des fl\‘eches soient utilis\’ees \‘a la place de la fonte tabvar.pfb
231 %% (d\’econseill\’e en g\’en\’eral et *jamais* sous LuaLaTeX ou XeLaTeX).
232 %%
233 %%\FlechesMPtrue
234 %%
235 %% Choix d’une des 4 variantes pour les fl\‘eches PostScript
236 %%
237 %%\FlechesPS1 % (d\’efaut)
238 %%\FlechesPS2 % assorties \‘a la police Fourier
239 %%\FlechesPS3
240 %%\FlechesPS4
241 %%
242 %% Ce param\‘etre permet d’augmenter la largeur des colonnes contenant
243 %% des fl\‘eches (essayer 1.3, 1.5, etc.), sa valeur par d\’efaut est 1 :
244 %%
245 %%\renewcommand*{\TVarrowscolstretch}{1}
246 %%
247 %% Ce param\‘etre permet d’ajuster la hauteur des lignes
248 %% de ‘tabvar’ correspondant aux variations d’une fonction ;
249 %% sa valeur par d\’efaut est :
250 %%
251 %%\setlength{\TVextraheight}{0.7\baselineskip}
252 %%
253 %% Valeur de \arraycolsep utilis\’ee dans ‘tabvar’.
254 %%
255 %%\setlength{\TVarraycolsep}{1pt}
256 %%
257 %% Valeur de \arraystretch utilis\’ee dans ‘tabvar’.
258 %%
259 %%\renewcommand{\TVarraystretch}{1.5}
260 %%
261 %% Largeur maximale des colonnes de type C, L ou R.
262 %%
263 %%\setlength{\TVmaxcolwidth}{\linewidth}
264 %%
265 %% Exemples de d\’efinitions de couleurs pour les colonnes ‘U’
266 %% o\‘u la fonction est non d\’efinie.
267 %%
268 %%\definecolor{TVcolor}{gray}{0.5}
269 %%\definecolor{TVcolor}{rgb}{0.33, 0.12, 0}
270 %%\definecolor{TVcolor}{cmyk}{0.91,0,0.88,0.12}
271 %%
272 %% Les valeurs suivantes assurent que les colonnes ‘U’ sont

10
273 %% colori\’ees sur toute leur largeur.
274 %%
275 %%\setlength{\TVcolorLeftSep}{\TVarraycolsep}
276 %%\setlength{\TVcolorRightSep}{\TVarraycolsep}
277 %%
278 %% On peut ajuster comme ci-dessus la couleur des filets
279 %% tra\c{c}\’es par la commande \barre{}.
280 %%
281 %%\definecolor{TVbarrecolor}{gray}{0.7}

Change History

tabvar-0.9 \barre. Bug signalé par Frank


General : Ajout de deux options Stengel. . . . . . . . . . . . . . . . . . 8
pour le choix du type de flèches tabvar-1.4
(suggestion de Frank Stengel). . 3 General : Ajout d’une commande
Par défaut, les flèches sont prises \TVarrowscolstretch permet-
maintenant dans la fonte type 1 tant d’augmenter la largeur des
de Michel Bovani. . . . . . . . . . . 3 colonnes contenant les flèches. . 3
tabvar-1.0 tabvar-1.5
General : Ajout d’un paramètre General : La définition des flèches
\TVmaxcolwidth pour choisir la en MetaPost est déplacée (At-
largeur maximale des colonnes BeginDocument) pour éviter un
de type C, L, R, au lieu d’une message d’erreur avec XeLa-
valeur fixe. . . . . . . . . . . . . . . . 5 TeX. Bug signalé par Thierry
Wybrecht. . . . . . . . . . . . . . . . 3
tabvar-1.1
Trois nouvelles formes de flèches
General : Ajout de la commande
déssinées par Michel Bo-
\barre. Ajout de \barre@dth
vani. Ajout de la commande
pour le calcul de la hau-
\FlechesPS pour y accéder. . . . 3
teur d’une rangée (utilisée par
tabvar-1.6
\barre et \dbarre). . . . . . . . . 7
General : Ajout de la commande
tabvar-1.2
\TVcenter. . . . . . . . . . . . . . . . 9
General : \@ptsize peut prendre Ajout du type ‘U’ synonyme
des valeurs négatives (classes de ‘N’ utilisé par numprint.sty.
koma-script avec tailles infé- N.B. : c’est la dernière défini-
rieures à 10pt). Utiliser \f@size tion qui est prise en compte par
à la place (patch proposé par \newcolumntype, donc celle de
Ulrike Fisher, merci Ulrike). . . 3 numprint si tabvar est chargé
tabvar-1.2b après tabvar et inversement (cf.
General : Augmenter la va- array.dtx). . . . . . . . . . . . . . . . 6
leur de \TVmaxcolwidth à tabvar-1.61
\linewidth). . . . . . . . . . . . . . 5 General : Charger supp-pdf.tex est
tabvar-1.3 inutile : en mode PDF, gra-
General : Valeur de la profon- phics.sty appelle pdftex.def qui
deur \@tempdimb corrigée dans charge supp-pdf.mkii. . . . . . . . 3

11

Vous aimerez peut-être aussi