From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/tabvar/README | 34 + macros/latex/contrib/tabvar/doc/demo.pdf | Bin 0 -> 244370 bytes macros/latex/contrib/tabvar/doc/demo.tex | 604 ++++++++++++++++ macros/latex/contrib/tabvar/doc/tabvar.pdf | Bin 0 -> 342081 bytes macros/latex/contrib/tabvar/font/tabvar.afm | 37 + macros/latex/contrib/tabvar/font/tabvar.map | 1 + macros/latex/contrib/tabvar/font/tabvar.pfb | Bin 0 -> 5140 bytes macros/latex/contrib/tabvar/font/tabvar.tfm | Bin 0 -> 724 bytes macros/latex/contrib/tabvar/source/tabvar.dtx | 944 ++++++++++++++++++++++++++ macros/latex/contrib/tabvar/source/tabvar.ins | 66 ++ macros/latex/contrib/tabvar/source/tabvar.mp | 17 + 11 files changed, 1703 insertions(+) create mode 100644 macros/latex/contrib/tabvar/README create mode 100644 macros/latex/contrib/tabvar/doc/demo.pdf create mode 100644 macros/latex/contrib/tabvar/doc/demo.tex create mode 100644 macros/latex/contrib/tabvar/doc/tabvar.pdf create mode 100644 macros/latex/contrib/tabvar/font/tabvar.afm create mode 100644 macros/latex/contrib/tabvar/font/tabvar.map create mode 100644 macros/latex/contrib/tabvar/font/tabvar.pfb create mode 100644 macros/latex/contrib/tabvar/font/tabvar.tfm create mode 100644 macros/latex/contrib/tabvar/source/tabvar.dtx create mode 100644 macros/latex/contrib/tabvar/source/tabvar.ins create mode 100644 macros/latex/contrib/tabvar/source/tabvar.mp (limited to 'macros/latex/contrib/tabvar') diff --git a/macros/latex/contrib/tabvar/README b/macros/latex/contrib/tabvar/README new file mode 100644 index 0000000000..8c4f628361 --- /dev/null +++ b/macros/latex/contrib/tabvar/README @@ -0,0 +1,34 @@ + Tabvar package + +This LaTeX package is meant to ease the typesetting of tables showing +variations of functions as they are used in France. +The documentation is in French. + +This material is subject to the LaTeX Project Public License. +See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +for the details of that license. + +Have a look at the PDF file demo.pdf in the doc directory, to have +a quick overview of how to use this package. +Read file tabvar.pdf in the doc directory, for the complete documentation +of the provided commands. + +Listing of the package: +-- README (this file) +-- source : tabvar.dtx tabvar.ins tabvar.mp +-- font: tabvar.afm tabvar.tfm tabvar.pfb tabvar.map +-- inputs: tabvar.sty tabvar.cfg tabvar.1 tabvar.2 tabvar.3 +-- doc: tabvar.pdf demo.pdf demo.tex + +Installation: this bundle is included in most TeX distributions, but +if you need to install it by yourself, a TDS compliant zip archive is +provided (tabvar.tds.zip). Just download that file, and unpack it in +your TDS directory (~/texmf for Unix-like systems). +You have got everything in place including documentation and sources, +the only remaining thing to do is to type the command +updmap --enable Map=tabvar.map +in a Terminal window in order to make the PostScript arrows available. + +-- +Daniel Flipo, +April, 3rd, 2010. diff --git a/macros/latex/contrib/tabvar/doc/demo.pdf b/macros/latex/contrib/tabvar/doc/demo.pdf new file mode 100644 index 0000000000..b1c554d302 Binary files /dev/null and b/macros/latex/contrib/tabvar/doc/demo.pdf differ diff --git a/macros/latex/contrib/tabvar/doc/demo.tex b/macros/latex/contrib/tabvar/doc/demo.tex new file mode 100644 index 0000000000..7c117b64af --- /dev/null +++ b/macros/latex/contrib/tabvar/doc/demo.tex @@ -0,0 +1,604 @@ +%Format: PDF + +\documentclass[a4paper,11pt]{article} + +\addtolength{\textwidth}{10mm} +\addtolength{\oddsidemargin}{-5mm} +\setlength{\parindent}{0mm} +\setlength{\parskip}{.5\baselineskip plus .2\baselineskip + minus .2\baselineskip} + +\usepackage{amsmath} +\usepackage{tabvar} +%\usepackage[FlechesPS]{tabvar} +%\usepackage[FlechesMP]{tabvar} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[frenchb]{babel} + +\usepackage{lmodern} + +\newcommand*{\file}[1]{\texttt{#1}} +\newcommand*{\env}[1]{\texttt{#1}} +\newcommand*{\ctype}[1]{\texttt{#1}} + +\begin{document} +\thispagestyle{empty} + +\begin{center} + \Large\bfseries Exemples de tableaux de variations avec \file{tabvar} +\end{center} + +Un exemple simple : +$\displaystyle f(x)=\frac{x^3+2}{2x} \qquad f'(x)=\frac{x^3-1}{x^2}$. + +\[\begin{tabvar}{|C|CCCCCCCCC|} \hline + x &-\infty & &-\sqrt[3]{2} & & 0 & & 1 & &+\infty +\\ \hline +f'(x) & & - & & - & \dbarre & - & 0 & + & +\\ \hline +\niveau{3}{3}f(x) + &+\infty &\decroit + &0 &\decroit + &\discont{-\infty}{<}{+\infty} &\decroit + &\frac{3}{2} &\croit + &+\infty +\\ \hline +\end{tabvar}\] + +Le codage du tableau est le suivant : +\begin{verbatim} +\[\begin{tabvar}{|C|CCCCCCCCC|} \hline + x &-\infty & &-\sqrt[3]{2} & &0 & & 1 & &+\infty +\\ \hline +f'(x) & &- & &- &\dbarre &- & 0 &+ & +\\ \hline +\niveau{3}{3}f(x) + &+\infty &\decroit + &0 &\decroit + &\discont{-\infty}{<}{+\infty} &\decroit + &\frac{3}{2} &\croit + &+\infty +\\ \hline +\end{tabvar}\] +\end{verbatim} + +L'argument optionnel de \verb|\discont| n'a pas été utilisé, on obtiendrait +une meilleure présentation en lui donnant la valeur~1, ce qui écarterait +d'un interligne les valeurs $+\infty$ et~$-\infty$, mettant ainsi +les trois valeurs~$+\infty$ sur la même ligne. + +D'autre part, $f(x)$ est placé au niveau~3 par la commande \verb|\niveau|. +Si on souhaite que $f(x)$ soit centré verticalement, on peut utiliser +la commande \verb|\TVcenter|% +\footnote{Cette commande n'est disponible que depuis la version 1.6 + (juillet~2011) de \file{tabvar}.} :\\ +\verb|\niveau{3}{3}\TVcenter{f(x)} &+\infty}| + +Voici le résultat obtenu avec ces deux modifications : +\[\begin{tabvar}{|C|CCCCCCCCC|} \hline + x &-\infty & &-\sqrt[3]{2} & &0 & & 1 & &+\infty +\\ \hline +f'(x) & &- & &- &\dbarre &- & 0 &+ & +\\ \hline +\niveau{3}{3}\TVcenter{f(x)} + &+\infty &\decroit + &0 &\decroit + &\discont[1]{-\infty}{<}{+\infty} &\decroit + &\frac{3}{2} &\croit + &+\infty +\\ \hline +\end{tabvar}\] + +Une présentation plus traditionnelle du tableau de variations serait la +suivante (on renonce à l'utilisation de \verb|\discont| et on remplace +la colonne \ctype{C} par trois colonnes \ctype{LCR}, la colonnne +centrale contenant une double barre). On ajoute également des filets +verticaux pour les valeurs remarquables de la fonction ou de sa dérivée +grâce à la commande \verb|\barre{}|% +\footnote{Cette commande n'est disponible que depuis la version 1.1 (mai~2007) + de \file{tabvar}.} +(argument \emph{obligatoire}, éventuellement vide). + +\[\begin{tabvar}{|C|CCCCLCRCCCC|} \hline + x &-\infty & &-\sqrt[3]{2} & & &0 & & &1 & &+\infty +\\ \hline +f'(x) & &-& \barre{} &-& &\dbarre & &-&\barre{0} &+& +\\ \hline +\niveau{3}{3}\TVcenter{f(x)} + &+\infty &\decroit + &\barre{0} &\decroit + &-\infty &\dbarre &\niveau{3}{3}+\infty &\decroit + &\barre{\frac{3}{2}} &\croit + &+\infty +\\ \hline +\end{tabvar}\] + +Le codage est le suivant : +\begin{verbatim} +\[\begin{tabvar}{|C|CCCCLCRCCCC|} \hline + x &-\infty& &-\sqrt[3]{2} & & &0 & & &1 & &+\infty +\\ \hline +f'(x)& &-& \barre{} &-& &\dbarre & &-&\barre{0} &+& +\\ \hline +\niveau{3}{3}\TVcenter{f(x)} + &+\infty &\decroit + &\barre{0} &\decroit + &-\infty &\dbarre &\niveau{3}{3}+\infty &\decroit + &\barre{\frac{3}{2}} &\croit + &+\infty +\\ \hline +\end{tabvar}\] +\end{verbatim} + +Noter la présence de la seconde commande \verb|\niveau| pour +positionner le terme \verb|+\infty| au niveau~3 après la discontinuité. + +\newpage +Un exemple de courbe paramétrée : +$\displaystyle x(t)= t + \frac{1}{t}\qquad y(t) = t + \frac{1}{2t^2}$. + +\[ +\begin{tabvar}{|C|CCRCCCCCC|} \hline + t &-\infty & &-1 & & 0 & & 1 & &+\infty +\\ \hline +x'(t) & &+ & 0 & - & \dbarre & - & 0 & + & +\\ \hline +\niveau{1}{3} +\TVcenter{x(t)} &-\infty &\croit + &-2 &\decroit + &\discont[1]{-\infty}{<}{+\infty} &\decroit + &2 &\croit + &+\infty +\\ \hline +\niveau{1}{3} +\TVcenter{y(t)} &-\infty &\croit + &-\frac{1}{2} &\croit + &+\infty &\decroit + &\frac{3}{2} &\croit + &+\infty +\\ \hline +y'(t) & &+ &2 & + & \dbarre & - & 0 &+ & +\\ \hline +\end{tabvar} +\] + +Le codage est le suivant : +\begin{verbatim} +\[\begin{tabvar}{|C|CCRCCCCCC|} \hline + t &-\infty & &-1 & & 0 & & 1 & &+\infty +\\ \hline +x'(t) & &+ & 0 & - & \dbarre & - & 0 & + & +\\ \hline +\niveau{1}{3} +\TVcenter{x(t)} &-\infty &\croit + &-2 &\decroit + &\discont[1]{-\infty}{<}{+\infty} &\decroit + &2 &\croit + &+\infty +\\ \hline +\niveau{1}{3} +\TVcenter{y(t)} &-\infty &\croit + &-\frac{1}{2} &\croit + &+\infty &\decroit + &\frac{3}{2} &\croit + &+\infty +\\ \hline +y'(t) & &+ &2 & + & \dbarre & - & 0 &+ & +\\ \hline +\end{tabvar} +\] +\end{verbatim} + +\newpage +Le même tableau de variations en présentation \og traditionnelle \fg. + +\[\begin{tabvar}{|C|CCCCRCLCCCC|} \hline + t &-\infty & &-1 & & &0 & & & 1 & &+\infty +\\ \hline +x'(t)& &+&\barre{0}&-& &\dbarre & &-&\barre{0} &+& +\\ \hline +\niveau{1}{3} +\TVcenter{x(t)} &-\infty &\croit + &\barre{-2} &\decroit + &-\infty &\dbarre &\niveau{3}{3}+\infty &\decroit + &\barre{2} &\croit + &+\infty +\\ \hline +\niveau{1}{3} +\TVcenter{y(t)} &-\infty &\croit + &-\frac{1}{2} &\croit + &+\infty &\dbarre &+\infty &\decroit + &\barre{\frac{3}{2}} &\croit + &+\infty +\\ \hline +y'(t) & &+ &2 &+ & &\dbarre & &- &\barre{0} &+ & +\\ \hline +\end{tabvar}\] + +Le codage est le suivant : +\begin{verbatim} +\[\begin{tabvar}{|C|CCCCRCLCCCC|} \hline + t &-\infty & &-1 & & &0 & & & 1 & &+\infty +\\ \hline +x'(t)& &+&\barre{0}&-& &\dbarre & &-&\barre{0} &+& +\\ \hline +\niveau{1}{3} +\TVcenter{x(t)} &-\infty &\croit + &\barre{-2} &\decroit + &-\infty &\dbarre &\niveau{3}{3}+\infty &\decroit + &\barre{2} &\croit + &+\infty +\\ \hline +\niveau{1}{3} +\TVcenter{y(t)} &-\infty &\croit + &-\frac{1}{2} &\croit + &+\infty &\dbarre &+\infty &\decroit + &\barre{\frac{3}{2}} &\croit + &+\infty +\\ \hline +y'(t) & &+ &2 &+ & &\dbarre & &- &\barre{0} &+ & +\\ \hline +\end{tabvar}\] +\end{verbatim} + +Noter que le type de la colonne $t=-1$ a dû être changé de \ctype{R} à +\ctype{C} pour permettre l'ajout du filet vertical. + +\newpage +Dans certains cas les filets horizontaux sont placés trop près de certains +éléments du tableau. Ce problème peut être résolu grâce aux extensions +\file{cellspace} ou \file{tabls} mais celles-ci ne fonctionnent pas +avec l’environnement \env{tabvar}. Voici un exemple (fonction +$f(x)=-x^2+x$ sur $[0,1]$) où l’utilisation maladroite de \verb|\dfrac| au +lieu de \verb|\frac| pour coder les fractions $\frac{1}{2}$ et $\frac{1}{4}$ +aboutit au tableau de gauche. + +\vspace{-.5\baselineskip} +\[\begin{tabvar}{|C|LCCCR|} +\hline +x &0 & &\dfrac{1}{2} & & 1 +\\ \hline +f'(x) &1\phantom{-} & + & 0 & - &-1 +\\ \hline +\niveau{1}{2}\TVcenter{f(x)} &0 &\croit &\dfrac{1}{4} &\decroit & 0 +\\ \hline +\end{tabvar} +\quad +\begin{tabvar}{|C|LCCCR|} +\hline +x &0 & &\TVstretch{\dfrac{1}{2}} & & 1 +\\ \hline +f'(x) &1\phantom{-} & + & 0 & - &-1 +\\ \hline +\niveau{1}{2}\TVcenter{f(x)} &0 &\croit &\TVstretch{\dfrac{1}{4}} &\decroit & 0 +\\ \hline +\end{tabvar}\] + +\vspace{-.3\baselineskip} +Le codage du tableau de gauche est le suivant : +\vspace{-.2\baselineskip} +{\footnotesize +\begin{verbatim} +\begin{tabvar}{|C|CCCCR|} +\hline +x &0 & &\dfrac{1}{2} & & 1 +\\ \hline +f'(x) &1\phantom{-} & + & 0 & - &-1 +\\ \hline +\niveau{1}{2}\TVcenter{f(x)} &0 &\croit &\dfrac{1}{4} &\decroit & 0 +\\ \hline +\end{tabvar} +\end{verbatim} +} + +\vspace{-.3\baselineskip} +Le tableau de droite est obtenu grâce à la commande \verb|\TVstretch|% +\footnote{Cette commande n'est disponible que depuis la version 1.7 + (décembre~2012) de \file{tabvar}.} ; +il suffit de remplacer \verb|\dfrac{1}{2}| et \verb|\dfrac{1}{4}| +par \verb|\TVstretch{\dfrac{1}{2}}| et \verb|\TVstretch{\dfrac{1}{4}}| ce qui +ajoute un petit espace vertical (\verb|2pt| soit 0,6mm environ) au-dessus et +au-dessous de ces fractions. + +La commande \verb|\TVstretch| peut aussi s’utiliser avec un argument +optionnel qui ajoute de l’espace uniquement au-dessus ou au-dessous selon son +signe. Le codage\par +\vspace{-.3\baselineskip} +{\footnotesize +\begin{verbatim} +\begin{tabvar}{|C|R C C C C|} +\hline +x &0 & &\TVstretch[-4pt]{\frac{1}{2}} & & 1 +\\ \hline +f'(x)&-1 & - & 0 & + &1 +\\ \hline +\niveau{2}{2}\TVcenter{f(x)} &\TVstretch[2pt]{1} &\decroit&\frac{1}{4} &\croit&1 +\\ \hline +\end{tabvar} +\end{verbatim} +} + +\enlargethispage*{1.1\baselineskip} +\vspace{-.3\baselineskip} +produit le tableau de droite, le tableau de gauche est obtenu avec le même +codage mais sans recours à la commande \verb|\TVstretch|. +\[\begin{tabvar}{|C|R C C C C|} +\hline +x &0 & &\frac{1}{2} & & 1 +\\ \hline +f'(x)&-1 & - & 0 & + &1 +\\ \hline +\niveau{2}{2}\TVcenter{f(x)} &1 &\decroit&\frac{1}{4} &\croit&1 +\\ \hline +\end{tabvar} +\quad +\begin{tabvar}{|C|R C C C C|} +\hline +x &0 & &\TVstretch[-4pt]{\frac{1}{2}} & & 1 +\\ \hline +f'(x)&-1 & - & 0 & + &1 +\\ \hline +\niveau{2}{2}\TVcenter{f(x)} &\TVstretch[2pt]{1} &\decroit&\frac{1}{4} &\croit&1 +\\ \hline +\end{tabvar} +\] + + +\newpage +Il est possible de choisir entre quatre types de flèches grâce aux commandes +\verb+\FlechesPS1+ (flèches « à moustaches » obtenues par défaut) \dots{} +\verb+\FlechesPS4+. +Voici le même tableau avec des flèches assorties à la police Fourier +(\verb+\FlechesPS2+) : + +\FlechesPS2 +\[\begin{tabvar}{|C|CCCCRCLCCCC|} \hline + t &-\infty & &-1 & & &0 & & & 1 & &+\infty +\\ \hline +x'(t) & &+ &\barre{0} + &- & &\dbarre & &- &\barre{0} &+ & +\\ \hline +\niveau{1}{3} +\TVcenter{x(t)} &-\infty &\croit + &\barre{-2} &\decroit + &-\infty &\dbarre &\niveau{3}{3}+\infty &\decroit + &\barre{2} &\croit + &+\infty +\\ \hline +\niveau{1}{3} +\TVcenter{y(t)} &-\infty &\croit + &-\frac{1}{2} &\croit + &+\infty &\dbarre &+\infty &\decroit + &\barre{\frac{3}{2}} &\croit + &+\infty +\\ \hline +y'(t) & &+ &2 &+ & &\dbarre & &- &\barre{0} &+ & +\\ \hline +\end{tabvar}\] + +Une autre variante (\verb+\FlechesPS3+) \FlechesPS3 : +\[\begin{tabvar}{|C|CCCCRCLCCCC|} \hline + t &-\infty & &-1 & & &0 & & & 1 & &+\infty +\\ \hline +x'(t) & &+ &\barre{0} + &- & &\dbarre & &- &\barre{0} &+ & +\\ \hline +\niveau{1}{3} +\TVcenter{x(t)} &-\infty &\croit + &\barre{-2} &\decroit + &-\infty &\dbarre &\niveau{3}{3}+\infty &\decroit + &\barre{2} &\croit + &+\infty +\\ \hline +\niveau{1}{3} +\TVcenter{y(t)} &-\infty &\croit + &-\frac{1}{2} &\croit + &+\infty &\dbarre &+\infty &\decroit + &\barre{\frac{3}{2}} &\croit + &+\infty +\\ \hline +y'(t) & &+ &2 &+ & &\dbarre & &- &\barre{0} &+ & +\\ \hline +\end{tabvar}\] + +et une dernière (\verb+\FlechesPS4+) \FlechesPS4 : +\[\begin{tabvar}{|C|CCCCRCLCCCC|} \hline + t &-\infty & &-1 & & &0 & & & 1 & &+\infty +\\ \hline +x'(t) & &+ &\barre{0} + &- & &\dbarre & &- &\barre{0} &+ & +\\ \hline +\niveau{1}{3} +\TVcenter{x(t)} &-\infty &\croit + &\barre{-2} &\decroit + &-\infty &\dbarre &\niveau{3}{3}+\infty &\decroit + &\barre{2} &\croit + &+\infty +\\ \hline +\niveau{1}{3} +\TVcenter{y(t)} &-\infty &\croit + &-\frac{1}{2} &\croit + &+\infty &\dbarre &+\infty &\decroit + &\barre{\frac{3}{2}} &\croit + &+\infty +\\ \hline +y'(t) & &+ &2 &+ & &\dbarre & &- &\barre{0} &+ & +\\ \hline +\end{tabvar}\] + +\newpage + +Enfin il est possible d'élargir les colonnes contenant des flèches grâce à la +commande \verb|\TVarrowscolstretch| ou d'ajouter de l'espace entre les +colonnes avec \verb|\TVarraycolsep|, voici le même tableau composé avec + +{\verb|\renewcommand*{\TVarrowscolstretch}{1.2}|\quad (1.0 par défaut)\\ +\verb|\setlength{\TVarraycolsep}{5pt}|\quad (1pt par défaut) +\renewcommand*{\TVarrowscolstretch}{1.2} +\setlength{\TVarraycolsep}{5pt} +\FlechesPS3 +\[\begin{tabvar}{|C|CCCCRCLCCCC|} \hline + t &-\infty & &-1 & & &0 & & & 1 & &+\infty +\\ \hline +x'(t) & &+ &\barre{0} + &- & &\dbarre & &- &\barre{0} &+ & +\\ \hline +\niveau{1}{3} +\TVcenter{x(t)} &-\infty &\croit + &\barre{-2} &\decroit + &-\infty &\dbarre &\niveau{3}{3}+\infty &\decroit + &\barre{2} &\croit + &+\infty +\\ \hline +\niveau{1}{3} +\TVcenter{y(t)} &-\infty &\croit + &-\frac{1}{2} &\croit + &+\infty &\dbarre &+\infty &\decroit + &\barre{\frac{3}{2}} &\croit + &+\infty +\\ \hline +y'(t) & &+ &2 &+ & &\dbarre & &- &\barre{0} &+ & +\\ \hline +\end{tabvar}\] +} + +D'autres possibilités d'ajustements existent, consulter le fichier +\file{tabvar.cfg}. + +Le même tableau encore, mais cette fois on utilise les flèches dessinées en +MetaPost. Celles-ci sont conservées uniquement pour préserver la compatibilité +ascendante, l'utilisation des flèches PostScript est de loin préférable (les +flèches MetaPost sont des \emph{dessins}, leur couleur ne change pas avec la +couleur du texte contrairement aux flèches PostScript qui sont des +\emph{caractères}). +Les flèches MetaPost sont obtenues avec +\verb|\usepackage[FlechesMP]{tabvar}| +ou la commande \verb|\FlechesMPtrue| placée dans le préambule ou dans le +fichier \file{tabvar.cfg}. + +\begingroup + \newsavebox{\arup}% + \newsavebox{\ardown}% + \newsavebox{\arhor}% + \sbox{\arup}{\includegraphics[scale=\TVarrowscale]{tabvar.1}}% + \sbox{\ardown}{\includegraphics[scale=\TVarrowscale]{tabvar.2}}% + \sbox{\arhor}{\includegraphics[scale=\TVarrowscale]{tabvar.3}}% + \makeatletter + \renewcommand{\FlecheC}{% + \TV@arrowcol@stretch{\raisebox{.5ex}{\usebox{\arup}}}}% + \renewcommand{\FlecheD}{% + \TV@arrowcol@stretch{\raisebox{.5ex}{\usebox{\ardown}}}}% + \renewcommand{\FlecheH}{% + \TV@arrowcol@stretch{\raisebox{.5ex}{\usebox{\arhor}}}}% + \makeatother + + \[\begin{tabvar}{|C|CCCCRCLCCCC|} \hline + t &-\infty & &-1 & & &0 & & & 1 & &+\infty + \\ \hline + x'(t) & &+ &\barre{0} + &- & &\dbarre & &- &\barre{0} &+ & + \\ \hline + \niveau{1}{3} + \TVcenter{x(t)} &-\infty &\croit + &\barre{-2} &\decroit + &-\infty &\dbarre &\niveau{3}{3}+\infty &\decroit + &\barre{2} &\croit + &+\infty + \\ \hline + \niveau{1}{3} + \TVcenter{y(t)} &-\infty &\croit + &-\frac{1}{2} &\croit + &+\infty &\dbarre &+\infty &\decroit + &\barre{\frac{3}{2}} &\croit + &+\infty + \\ \hline + y'(t) & &+ &2 &+ & &\dbarre & &- &\barre{0} &+ & + \\ \hline + \end{tabvar}\] +\endgroup + +\newpage +\FlechesPS2 +Un exemple de fonction non définie partout : +$\displaystyle f(x) = \sqrt{\frac{x-1}{x+1}}$. + +\[\begin{tabvar}{|C|CCRULCC|} \hline + x &-\infty & &-1 &\hspace*{15mm} & 1 & &+\infty +\\ \hline + f'(x) & &+ & & &+\infty &+ & +\\ \hline +\niveau{1}{2} +\TVcenter{f(x)}&1 &\croit &+\infty & + &\niveau{1}{2}0 &\croit & 1 +\\ \hline +\end{tabvar}\] + +Le codage est le suivant : + +\vspace{-.3\baselineskip} +{\footnotesize +\begin{verbatim} +\[\begin{tabvar}{|C|CCRULCC|} \hline + x &-\infty & &-1 &\hspace*{15mm} & 1 & &+\infty +\\ \hline + f'(x) & &+ & & &+\infty &+ & +\\ \hline +\niveau{1}{2} +\TVcenter{f(x)}&1 &\croit &+\infty & + &\niveau{1}{2}0 &\croit & 1 +\\ \hline +\end{tabvar}\] +\end{verbatim} +} + +\vspace{-.3\baselineskip} +La largeur de la colonne grisée est fixée à~15mm par le \verb|\hspace*{15mm}| +placé dans une ligne quelconque du tableau. Certains visualiseurs +(Xdvi par exemple) n'affichent pas correctement les couleurs ; +en cas de doute, vérifier sur une sortie PostScript ou PDF. + +Noter l'emploi d'une seconde commande \verb|\niveau{1}{2}| pour positionner +la valeur de~$f$ au point~1 (sans celle-ci, cette valeur serait placée +au niveau de la valeur précédente, ici~$+\infty$. + +Si on prolongeait la définition de $f$ en posant $f(x)=0$ sur $[-1,1]$ +on aurait le tableau suivant : + +\vspace{-.3\baselineskip} +\[\begin{tabvar}{|C|CCRCCCCC|} \hline + x &-\infty & & &-1 & & 1 & &+\infty +\\ \hline + f'(x) & &+ & &\dbarre & 0 &+\infty &+ & +\\ \hline +\niveau{1}{2} +\TVcenter{f(x)} &1 &\croit &+\infty &\niveau{1}{2}0 + &\constante &0 &\croit & 1 +\\ \hline +\end{tabvar}\] + +\enlargethispage*{.5\baselineskip} +Le codage est le suivant : +\vspace{-.3\baselineskip} +{\footnotesize +\begin{verbatim} +\[\begin{tabvar}{|C|CCRCCCCC|} \hline + x &-\infty & & &-1 & & 1 & &+\infty +\\ \hline + f'(x) & &+ & &\dbarre & 0 &+\infty &+ & +\\ \hline +\niveau{1}{2} +\TVcenter{f(x)} &1 &\croit &+\infty &\niveau{1}{2}0 + &\constante &0 &\croit & 1 +\\ \hline +\end{tabvar}\] +\end{verbatim} +} +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% coding: utf-8 +%%% End: diff --git a/macros/latex/contrib/tabvar/doc/tabvar.pdf b/macros/latex/contrib/tabvar/doc/tabvar.pdf new file mode 100644 index 0000000000..f3a4b45659 Binary files /dev/null and b/macros/latex/contrib/tabvar/doc/tabvar.pdf differ diff --git a/macros/latex/contrib/tabvar/font/tabvar.afm b/macros/latex/contrib/tabvar/font/tabvar.afm new file mode 100644 index 0000000000..9580076b75 --- /dev/null +++ b/macros/latex/contrib/tabvar/font/tabvar.afm @@ -0,0 +1,37 @@ +StartFontMetrics 2.0 +Comment Panose 2 0 6 0 7 0 0 2 0 4 +FullName tabvar +FontName tabvar +FamilyName tabvar +Weight Medium +Notice Copyright (C) 2003 GUTenberg +Version 1.0 +IsFixedPitch false +ItalicAngle 0.00 +FontBBox 0 -203 2137 1519 +Ascender 700 +Descender -200 +XHeight 500 +CapHeight 700 +UnderlinePosition -100 +UnderlineThickness 50 +StdHW 40 +StdVW 85 +EncodingScheme FontSpecific +StartCharMetrics 14 +C 32 ; WX 0 ; N space ; B 0 0 0 0 ; +C 33 ; WX 2180 ; N arrowrightlong ; B 97 72 2093 428 ; +C 37 ; WX 2183 ; N arrowene ; B 60 251 2122 1519 ; +C 38 ; WX 2183 ; N arrowese ; B 60 180 2122 1448 ; +C 49 ; WX 2180 ; N FGarrowrightlong ; B 91 118 2098 385 ; +C 53 ; WX 2183 ; N FGarrowene ; B 45 235 2117 1466 ; +C 54 ; WX 2183 ; N FGarrowese ; B 45 225 2117 1456 ; +C 59 ; WX 2180 ; N Vararrowrightlong ; B 91 111 2100 391 ; +C 63 ; WX 2183 ; N Vararrowene ; B 45 235 2132 1490 ; +C 64 ; WX 2183 ; N Vararrowese ; B 45 235 2132 1490 ; +C 70 ; WX 2180 ; N Otherarrowrightlong ; B 91 98 2100 404 ; +C 74 ; WX 2183 ; N Otherarrowene ; B 49 243 2137 1501 ; +C 75 ; WX 2183 ; N Otherarrowese ; B 49 243 2137 1501 ; +C 163 ; WX 1377 ; N bidule ; B 116 -203 1258 709 ; +EndCharMetrics +EndFontMetrics diff --git a/macros/latex/contrib/tabvar/font/tabvar.map b/macros/latex/contrib/tabvar/font/tabvar.map new file mode 100644 index 0000000000..55e1262b00 --- /dev/null +++ b/macros/latex/contrib/tabvar/font/tabvar.map @@ -0,0 +1 @@ +tabvar tabvar +% +% All the files included in the `tabvar' distribution, including +% the font, may be distributed and/or modified under the conditions +% of the LaTeX Project Public License, either version 1.3 of this +% license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2003/12/01 or later. +% +% This file has the LPPL maintenance status "maintained". +% +% NO PERMISSION is granted to produce or to distribute a +% modified version of this file under its original name. +% +% \fi +% +% \iffalse +% +%<*sty> +%% +%% Copyright (C) Daniel Flipo 2003-2013 +%% +\NeedsTeXFormat{LaTeX2e}[1997/06/01] +\ProvidesFile{tabvar.sty} +% +%<*dtx> +\ProvidesFile{tabvar.dtx} +% +%<*!cfg> + [2013/01/21 v1.7 (Daniel Flipo)] +% +% +%<*driver> +\documentclass[a4paper]{ltxdoc} +\usepackage{tabvar} +\GetFileInfo{tabvar.dtx} +\RecordChanges +%\OnlyDescription +% +\usepackage{url} +\usepackage[latin1]{inputenc} +\usepackage[T1]{fontenc} +\IfFileExists{lmodern.sty}{\usepackage{lmodern}}{} +\usepackage[frenchb]{babel} +\GlossaryPrologue{\section*{Historique des versions}} +\newcommand*\file[1]{\textsf{#1}} +\newcommand*\ctype[1]{\texttt{#1}} +\newcommand*\env[1]{\texttt{#1}} +\setlength{\parindent}{0pt} +\setlength{\parskip}{.5\baselineskip plus .2\baselineskip + minus .2\baselineskip} +\begin{document} +\begin{center} + \textbf{\Large Tableaux de variations : `tabvar'}\\[3mm]^^A\] + Daniel \textsc{Flipo}\\ + \texttt{Daniel.Flipo\at free.fr} +\end{center} + \DocInput{tabvar.dtx} +\end{document} +% +% +% \fi +% +% \section{Documentation} +% +% L'extension \file{tabvar.dtx}\footnote{La version pr\'esent\'ee +% ici porte le num\'ero \fileversion, derni\`ere modification le +% \filedate.}, a pour but de faciliter la saisie des tableaux de +% variations. +% +% Elle s'appuie sur les extensions \file{array}, \file{colortbl}, +% et \file{varwidth}. Les fl\`eches sont prises dans une fonte +% (type\,1) sp\'ecialement cr\'e\'ee par Michel~\bsc{Bovani}. +% Depuis la version~1.5, quatre variantes de fl\`eches sont +% propos\'ees. +% Un grand merci \`a Michel pour cette contribution et pour +% ses remarques qui m'ont \'et\'e tr\`es utiles pour +% am\'eliorer les versions pr\'eliminaires. +% +% Une autre possibilit\'e (conserv\'ee uniquement pour pr\'eserver +% la compatibilit\'e avec les premi\`eres versions de \file{tabvar}) +% consiste \`a faire appel, pour le dessin des fl\`eches, +% \`a MetaPost : le fichier \file{tabvar.mp} permet de cr\'eer les +% trois fl\`eches \file{tabvar.1}, \file{tabvar.2}, \file{tabvar.3}. +% Ceci est une solution de repli pour ceux qui auraient du mal +% \`a installer la fonte \file{tabvar.pfb}, \`a n'employer qu'en +% dernier recours. +% +% Lorsqu'on travaille avec XeLaTeX ou LuaLaTeX il convient de +% placer l'appel \`a |\usepackage{tabvar}| \emph{avant} +% |\usepackage{fontspec}|. +% +% \subsection{Installation} +% +% L'extension \file{tabvar} fait partie des distributions TeXLive, +% MacTeX, ProTeXt, MikTeX, etc. Si elle n'est pas install\'ee chez +% vous, assurez-vous d'abord que l'extension \file{varwidth.sty} est +% pr\'esente sur votre syst\`eme, sinon r\'ecup\'erez-la sur CTAN : +% cherchez par exemple la cha\^{\i}ne |varwidth| +% sur \url{http://www.tex.ac.uk/CTANfind.html} +% +% Les fichiers \file{tabvar.1}, \dots{} , \file{tabvar.3} +% ainsi que \file{tabvar.sty} et \file{tabvar.cfg} doivent +% \^etre plac\'es dans un r\'epertoire vu par \LaTeX. +% +% Les fl\`eches sont prises dans la fonte type\,1 \file{tabvar.pfb} +% \`a condition que celle-ci soit correctement install\'ee : +% il est n\'ecessaire de placer le fichier \file{tabvar.pfb} dans +% un r\'epertoire o\`u il sera pris en compte, par exemple, pour +% respecter l'architecture TDS : |texmf/fonts/type1/public/tabvar|. +% De m\^eme, son fichier de m\'etriques \file{tabvar.tfm} devra +% \^etre mis par exemple dans |texmf/fonts/tfm/public/tabvar|. +% +% Un ligne donnant acc\`es \`a cette fonte doit \^etre ajout\'ee +% (voir \file{tabvar.map}) dans les fichiers |.map| utilis\'es +% par le pilote PostScript (\file{psfonts.map}) et par pdf\TeX{} +% (\file{pdftex.map}). +% Ne pas oublier de mettre \`a jour les bases de donn\'ees ls-R +% pour terminer (commande |mktexlsr| sous te\TeX{} ou \TeX{}Live). +% +% \subsection{Utilisation} +% +% L'environnement \env{tabvar} est une variante de l'environnement +% |array|, adapt\'ee \`a la saisie de tableaux de variations. +% +% Trois nouveaux types de colonnes, \ctype{C}, \ctype{L} et +% \ctype{R} remplacent les types classiques \ctype{c}, \ctype{l} +% et \ctype{r} ; ils permettent de disposer du mat\'eriel sur +% plusieurs niveaux dans un m\^eme ligne du tableau (ce sont des +% colonnes de type |\parbox|). +% +% Un quatri\`eme type de colonne, not\'e \ctype{U}% +% \footnote{Il \'etait not\'e \ctype{N} jusqu'\`a la version~1.5, +% le type \ctype{N} est conserv\'e pour assurer la +% compatibilit\'e ascendante mais ne devrait plus \^etre utilis\'e +% pour \'eviter un conflit avec l'extension \file{numprint.sty}.} +% sert pour les plages o\`u la fonction n'est pas d\'efinie +% (\ctype{U} pour \textit{Undefined}). La colonne est enti\`erement +% gris\'ee par d\'efaut, mais il est possible de choisir une autre +% couleur (voir le fichier de configuration \file{tabvar.cfg}). +% D\'esormais \file{tabvar} teste au |\begin{document}| si le type +% \ctype{N} a \'et\'e d\'efini par une autre extension, si c'est le +% cas un avertissement est affich\'e dans le fichier \file{.log} et +% \file{tabvar} n'\'ecrase plus la d\'efinition du type \ctype{N}. +% Sinon, le type \ctype{N} est d\'efini comme avant. +% +% La saisie des lignes contenant les valeurs de la variable et les +% signes des d\'eriv\'ees se fait exactement comme celles d'un +% tableau |array|. Seules les lignes contenant les variations de +% la ou des fonctions font appel \`a six commandes +% particuli\`eres : |\niveau|, |\croit|, |\decroit|, |\constante|, +% |\dbarre| et |\discont|. +% +% \begin{itemize} +% +% \item |\niveau{|\emph{d\'epart}|}{|\emph{total}|}| prend +% deux arguments : le niveau (hauteur) o\`u doit \^etre +% positionn\'ee la premi\`ere valeur de la fonction et le +% nombre total de niveaux qui seront utilis\'es dans la ligne. +% Le niveau le plus bas est num\'erot\'e 1. +% +% \item Les commandes |\croit|, |\decroit| et |\constante| ne +% prennent pas d'argument, elles tracent les fl\`eches +% montantes, descendantes ou horizontales. +% +% \item |\dbarre| trace un double trait vertical dont la hauteur +% est celle de la ligne du tableau ; elle indique les +% discontinuit\'es de la fonction. +% +% \item |\discont[|\emph{num}|]{|\emph{valeur\_gauche}|}{<| +% ou |>}{|\emph{valeur\_droite}|}| peut +% s'utiliser lorsque la fonction pr\'esente une +% discontinuit\'e \`a la place de la double barre +% traditionnelle ; elle prend trois arguments obligatoires : +% les valeurs \`a gauche~$f_-$ et \`a droite~$f_+$ de la +% fonction, s\'epar\'ees par un signe |<| ou |>| selon que +% $f_-f_+$. +% Enfin, l'argument optionnel, qui vaut~0 par d\'efaut, +% permet d'intercaler \emph{num} niveaux suppl\'ementaires +% entre les valeurs de~$f_-$ et~$f_+$ si n\'ecessaire. +% +% \end{itemize} +% +% Il est possible d'ajouter des filets d'alignement vertical en +% utilisant la commande |\barre{}| qui requiert un argument +% obligatoire, \'eventuellement vide : |\barre{}| trace un filet +% vertical dont la hauteur est celle de la ligne du tableau. +% Lorsqu'une valeur doit figurer sous le filet, on la passe en +% argument de la commande (|\barre{0}| par exemple), ainsi cette +% valeur sera centr\'ee sur le filet. Ceci restreint \'evidemment +% l'usage de la commande |\barre| aux colonnes de type \ctype{C}. +% La couleur du filet (gris par d\'efaut) est param\'etrable, voir +% le fichier de configuration \file{tabvar.cfg}. Cette solution a +% \'et\'e pr\'ef\'er\'ee \`a des pointill\'es qui posent des +% probl\`emes de raccordement d'une ligne \`a l'autre du tableau. +% +% Depuis la version 1.5, quatre variantes sont propos\'ees pour le +% dessin des fl\`eches PostScript type\,1, elles sont accessibles +% par les commandes |\FlechesPS1| (fl\`eches \og\`a moustaches\fg{} +% obtenues par d\'efaut), |\FlechesPS2| (assorties \`a la police +% Fourier), |\FlechesPS3| et |\FlechesPS4|. +% +% La commande |\TVcenter| prend un argument, elle sert \`a +% centrer verticalement le nom de la fonction, par exemple +% |\TVcenter{f(x)}|. Elle a besoin de conna\^{\i}tre le nombre +% total de niveaux, elle doit donc \^etre pr\'ec\'ed\'ee d'une +% commande |\niveau{|\emph{d\'epart}|}{|\emph{total}|}|. +% +% La commande |\TVstretch| est \`a utiliser lorsqu'un \'el\'ement +% du tableau colle \`a la ligne horizontale du dessus ou du +% dessous% +% \footnote{Noter que les extensions \file{cellspace} et +% \file{tabls} qui r\`eglent ce probl\`eme n'ont pas d'effet +% sur l'environnement \env{tabvar} et que \file{tabls} est +% incompatible avec \file{array} charg\'e par \file{tabvar}.}. +% |\TVstretch{|\emph{valeur}|}| ajoute un peu d'espace +% param\'etrable (2pt par d\'efaut)% +% \footnote{La valeur de l'espace ajout\'e au-dessus est d\'efinie +% par \texttt{\boi setlength\{\boi TVextraheight\}\{2pt\}}, celle +% de l'espace ajout\'e au-dessous est d\'efinie par +% \texttt{\boi setlength\{\boi TVextradepth\}\{2pt\}}.} +% au dessus et en dessous de \emph{valeur}. +% +% La commande |\TVstretch| accepte un argument optionnel de type +% \emph{dimension} qui s'utilise lorsqu'on souhaite n'ajouter +% d'espace vertical que d'un c\^ot\'e (au-dessus ou au-dessous). +% Si l'argument optionnel est une dimension positive, sa valeur +% sera ajout\'ee uniquement au-dessus et si c'est une dimension +% n\'egative sa valeur absolue sera ajout\'ee uniquement en +% dessous. +% +% Le fichier \file{demo.pdf} (joint) propose plusieurs exemples, +% accompagn\'es de leur code source, illustrant les utilisations +% possibles de l'environnement \env{tabvar}. +% +% Plusieurs commandes ou param\`etres permettent de personnaliser +% l'aspect du tableau (augmentation de la largeur ou de la hauteur +% des cellules, etc.), voir le fichier \file{tabvar.cfg}. +% +% \subsection{Incompatibilit\'es} +% +% \file{tabvar} est incompatible avec les extensions qui +% d\'efinissent les m\^emes types de colonnes (\ctype{C}, +% \ctype{L}, \ctype{R}, \ctype{U}) pour d'autres usages, en +% particulier \file{tabulary}. +% +% L'utilisation simultan\'ee de \file{tabvar}, \file{cellspace}, et +% \file{siunitx} est pour l'instant impossible : \file{cellspace} +% et \file{siuntix} utilisent tous les deux le param\`etre \ctype{S}, +% pour \'eviter le conflit, \file{siuntix} red\'efinit le \ctype{S} +% de \file{cellspace} en \ctype{C} ce qui provoque un autre conflit +% avec \file{tabvar} ! Le probl\`eme a \'et\'e signal\'e \`a +% l'auteur de \file{siuntix}. +% +% \StopEventually{\PrintChanges} +% +% \iffalse +%<*sty> +% \fi +% +% \section{Le code} +% +% \subsection{Options} +% +% \changes{tabvar-0.9}{2004/12/29}{Par d\'efaut, les fl\`eches +% sont prises maintenant dans la fonte type 1 de Michel Bovani.} +% +% \changes{tabvar-0.9}{2005/02/05}{Ajout de deux options pour +% le choix du type de fl\`eches (suggestion de Frank Stengel).} +% +% Depuis la version~0.9, les fl\`eches utilis\'ees par d\'efaut +% sont prises dans la fonte type\,1 de Michel Bovani. +% +% Si cette fonte sp\'ecifique n'a pas pu \^etre correctement +% install\'ee, on pourra d\'eclarer |\FlechesMPtrue| dans le +% fichier \file{tabvar.cfg} ou dans le pr\'eambule, ou encore +% utiliser l'option |FlechesMP| pour que les fl\`eches +% MetaPost utilis\'ees \`a la place. Cette solution est \`a +% proscrire lorsqu'on travaille avec XeLaTeX ou LuaLaTeX. +% +% \begin{macrocode} +\newif\ifFlechesMP \FlechesMPfalse +\DeclareOption{FlechesMP}{\FlechesMPtrue} +\DeclareOption{FlechesPS}{\FlechesMPfalse} +\ProcessOptions +% \end{macrocode} +% +% \subsection{Identification, extensions requises} +% +% Chargement des extensions utiles : +% +% \begin{macrocode} +\RequirePackage{array} +\RequirePackage{colortbl} +\RequirePackage{varwidth} +\RequirePackage{ifthen} +% \end{macrocode} +% +% \subsection{Dessin des fl\`eches} +% +% Le fichier \file{tabvar.mp} (joint) contient le dessin des +% trois fl\`eches en MetaPost. +% +% La commande |mpost -tex=latex tabvar| produit trois fichiers +% \file{tabvar.1}\dots{} \file{tabvar.3} qui contiennent les +% dessins des fl\`eches ; en PDF, il faut indiquer qu'il s'agit +% de fichiers MetaPost. +% +% \changes{tabvar-1.61}{2012/03/14}{Charger supp-pdf.tex est inutile : +% en mode PDF, graphics.sty appelle pdftex.def qui charge +% supp-pdf.mkii.} +% +% \begin{macrocode} +\RequirePackage{graphicx} +\RequirePackage{ifpdf} +\ifpdf + \DeclareGraphicsRule{*}{mps}{*}{} +\fi +% \end{macrocode} +% +%\changes{tabvar-1.5}{2011/03/04}{La d\'efinition des fl\`eches en +% MetaPost est d\'eplac\'ee (AtBeginDocument) pour \'eviter un +% message d'erreur avec XeLaTeX. Bug signal\'e par Thierry Wybrecht.} +% +%\changes{tabvar-1.2}{2008/10/23}{\cs{@ptsize} peut prendre des +% valeurs n\'egatives (classes koma-script avec tailles inf\'erieures +% \`a 10pt). Utiliser \cs{f@size} \`a la place (patch propos\'e par +% Ulrike Fisher, merci Ulrike).} +% +% La mise \`a l'\'echelle des fl\`eches MetaPost se fait \`a 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\'ee +% ne d\'efinit pas |\f@size|, on donne la valeur 10 \`a |\f@size|, +% la valeur par d\'efaut de |\TVarrowscale| est alors 1.0 +% (\'echelle 1), l'utilisateur peut toujours red\'efinir lui-m\^eme +% |\TVarrowscale| selon ses besoins. +% \begin{macrocode} +\providecommand{\f@size}{10} +\newcommand{\TVarrowscale}{\strip@pt\dimexpr\f@size pt/10\relax} +% \end{macrocode} +% +%\changes{tabvar-1.4}{2010/08/22}{Ajout d'une commande +% \cs{TVarrowscolstretch} permettant d'augmenter la largeur des +% colonnes contenant les fl\`eches.} +% +% La commande |\TVarrowscolstretch|, dont la valeur par d\'efaut +% est~1, permet d'augmenter la largeur des colonnes contenant les +% fl\`eches. +% +% \begin{macro}{\TVarrowscolstretch} +% \begin{macrocode} +\newcommand*{\TVarrowscolstretch}{1} +\newcommand*{\TV@arrowcol@stretch}[1]{% + \makebox[\TVarrowscolstretch\width][c]{#1}} +% \end{macrocode} +% \end{macro} +% +%\changes{tabvar-1.5}{2011/03/10}{Trois nouvelles formes de fl\`eches +% d\'essin\'ees par Michel Bovani. +% Ajout de la commande \cs{FlechesPS} pour y acc\'eder.} +% +% La commande |\FlechesPS| suivie d'un chiffre compris entre 1 et 4 +% permet d'acc\'eder \`a quatre variantes pour les fl\`eches +% PostScript. +% +% \begin{macro}{\FlechesPS} +% \begin{macrocode} +\newcommand*{\enearrow}{\enearrowi} +\newcommand*{\esearrow}{\esearrowi} +\newcommand*{\eastarrow}{\eastarrowi} +\newcommand*{\FlechesPS}[1]{% + \renewcommand*{\enearrow}{% + \csname enearrow\romannumeral#1\endcsname}% + \renewcommand*{\esearrow}{% + \csname esearrow\romannumeral#1\endcsname}% + \renewcommand*{\eastarrow}{% + \csname eastarrow\romannumeral#1\endcsname}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\FlecheC} +% \begin{macro}{\FlecheD} +% \begin{macro}{\FlecheH} +% Le trac\'e des trois types de fl\`eches est fait par les +% commandes |\FlecheC|, |\FlecheD| et |\FlecheH|. Le choix de la +% variante (MetaPost ou type\,1) est fait au |\begin{document}|, +% ce qui \'economise une fonte math\'ematique parmi les 16 +% disponibles lorsqu'on choisit la variante MetaPost. +% \begin{macrocode} +\AtBeginDocument{% + \ifFlechesMP + \newsavebox{\arup}% + \newsavebox{\ardown}% + \newsavebox{\arhor}% + \sbox{\arup}{\includegraphics[scale=\TVarrowscale]{tabvar.1}}% + \sbox{\ardown}{\includegraphics[scale=\TVarrowscale]{tabvar.2}}% + \sbox{\arhor}{\includegraphics[scale=\TVarrowscale]{tabvar.3}}% + \newcommand*{\FlecheC}{% + \TV@arrowcol@stretch{\raisebox{.5ex}{\usebox{\arup}}}}% + \newcommand*{\FlecheD}{% + \TV@arrowcol@stretch{\raisebox{.5ex}{\usebox{\ardown}}}}% + \newcommand*{\FlecheH}{% + \TV@arrowcol@stretch{\raisebox{.5ex}{\usebox{\arhor}}}}% + \else + \DeclareFontFamily{U}{tv}{}% + \DeclareFontShape{U}{tv}{m}{n}{<->tabvar}{}% + \DeclareSymbolFont{tvsymbols}{U}{tv}{m}{n}% + \DeclareMathSymbol{\eastarrowi}{\mathrel}{tvsymbols}{"21}% + \DeclareMathSymbol{\enearrowi}{\mathrel}{tvsymbols}{"25}% + \DeclareMathSymbol{\esearrowi}{\mathrel}{tvsymbols}{"26}% + \DeclareMathSymbol{\eastarrowii}{\mathrel}{tvsymbols}{"31}% + \DeclareMathSymbol{\enearrowii}{\mathrel}{tvsymbols}{"35}% + \DeclareMathSymbol{\esearrowii}{\mathrel}{tvsymbols}{"36}% + \DeclareMathSymbol{\eastarrowiii}{\mathrel}{tvsymbols}{"3B}% + \DeclareMathSymbol{\enearrowiii}{\mathrel}{tvsymbols}{"3F}% + \DeclareMathSymbol{\esearrowiii}{\mathrel}{tvsymbols}{"40}% + \DeclareMathSymbol{\eastarrowiv}{\mathrel}{tvsymbols}{"46}% + \DeclareMathSymbol{\enearrowiv}{\mathrel}{tvsymbols}{"4A}% + \DeclareMathSymbol{\esearrowiv}{\mathrel}{tvsymbols}{"4B}% + \newcommand*{\FlecheC}{% + \TV@arrowcol@stretch{\ensuremath{\enearrow}}}% + \newcommand*{\FlecheD}{% + \TV@arrowcol@stretch{\ensuremath{\esearrow}}}% + \newcommand*{\FlecheH}{% + \TV@arrowcol@stretch{\ensuremath{\eastarrow}}}% + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Positionnement vertical de \'el\'ements} +% +% La variable |\TVextraheight|, dont la valeur par d\'efaut vaut +% |.7\baselineskip| permet d'\'ecarter l\'eg\`erement les valeurs +% maximales de la fonction, du filet horizontal sup\'erieur. +% +% \begin{macrocode} +\newdimen\TVextraheight +\setlength{\TVextraheight}{.7\baselineskip} +% \end{macrocode} +% +% \begin{macro}{\niveau} +% La commande |\niveau|, utilis\'ee uniquement dans les lignes +% relatives aux valeurs des fonctions, permet d'initialiser les +% valeurs des compteurs |\@niveaux| (nombre total de niveaux +% utilis\'es dans la ligne) et |\@pos| (indicateur du niveau +% courant). Elle active \'egalement le drapeau |\if@socle| +% utilis\'e par la commande |\@socle|. Celle-ci place un filet +% invisible de hauteur |\TVextraheight| et ajoute |\@pos - 1| +% sauts de lignes (les colonnes sont align\'ees par le bas), ce +% qui assure le positionnement vertical de l'\'el\'ement (valeur +% de la fonction ou fl\`eche). +% Le drapeau |\if@socle| devra \^etre mis localement \`a `faux' +% dans certaines colonnes (cf. |\dbarre| et |discont|). +% \begin{macrocode} +\newcount\@niveaux +\newcount\@pos +\newif\if@socle +\newcommand{\niveau}[2]{\global\@pos=#1 \global\@niveaux=#2 + \global\@socletrue} +\newcommand{\@socle}{% + \ifnum\@pos=1 \@soclefalse \fi + \if@socle + \rule{\z@}{\TVextraheight}% + \@tempcnta=\@pos + \advance\@tempcnta by -1 + \whiledo{\@tempcnta>0}{\TVnl \null \advance\@tempcnta by -1}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \subsection{Nouveaux types de colonnes} +% +% Ces d\'efinitions n\'ecessitent les extensions |array| et +% |varwidth|. L'environnement |varwidth|, comme |minipage|, +% red\'efinit la commande |\\|. On la renomme \`a l'int\'erieur +% des environnements |varwidth|, de fa\c{c}on \`a \'eviter la +% confusion entre passage \`a la ligne \`a l'int\'erieur d'une +% colonne et passage \`a la ligne suivante du tableau : +% |\TVnl| (commande interne) provoque un changement de ligne \`a +% l'int\'erieur d'une colonne, l'utilisateur peut continuer \`a +% utiliser |\\| pour terminer une ligne du tableau. +% La commande |\TVtabularnewline|, d\'efinie dans l'environnement +% \env{tabvar}, provoque un changement de ligne dans le tableau +% (|\tabularnewline|) et affecte la valeur `vrai' au drapeau +% |\ifreset@niveaux|, ce qui commande la r\'einitialisation des +% compteurs |\@pos| et |\@niveaux| \`a la valeur~1. +% Cette r\'einitialisation aura lieu \emph{apr\`es} que la +% commande |\@socle| ait plac\'e les valeurs de la fonction et +% les fl\`eches \`a la bonne hauteur. +% +% \begin{macrocode} +\newif\ifreset@niveaux +\newcommand{\reset@niveaux}{% + \ifreset@niveaux + \global\@niveaux=1 \global\@pos=1 \global\@soclefalse + \fi} +% \end{macrocode} +% +% \changes{tabvar-1.0}{2006/03/14}{Ajout d'un param\`etre +% \cs{TVmaxcolwidth} pour choisir la largeur maximale des colonnes +% de type C, L, R, au lieu d'une valeur fixe.} +% +% \changes{tabvar-1.2b}{2009/10/03}{Augmenter la valeur de +% \cs{TVmaxcolwidth} \`a \cs{linewidth}).} +% +% On d\'efinit des variantes \ctype{C}, \ctype{L} et \ctype{R}, +% des colonnes \ctype{c}, \ctype{l} et \ctype{r} : ce sont des +% \emph{minipage} align\'ees par le bas, dont la largeur est celle +% de la ligne la plus longue, avec un maximum de |\TVmaxcolwidth| +% fix\'e \`a |\linewidth| par d\'efaut, (voir la documentation de +% l'extension \file{varwidth.sty}). +% +% \begin{macrocode} +\newdimen\TVmaxcolwidth +\setlength{\TVmaxcolwidth}{\linewidth} +\newcolumntype{C}{% + >{\begin{varwidth}[b]{\TVmaxcolwidth}\let\TVnl=\\ + \let\\=\TVtabularnewline $}% + c% + <{\@socle \reset@niveaux + $\@finalstrut\@arstrutbox\end{varwidth}}} +\newcolumntype{L}{% + >{\begin{varwidth}[b]{\TVmaxcolwidth}\let\TVnl=\\ + \let\\=\TVtabularnewline $}% + l% + <{\@socle \reset@niveaux + $\@finalstrut\@arstrutbox\end{varwidth}}} +\newcolumntype{R}{% + >{\begin{varwidth}[b]{\TVmaxcolwidth}\let\TVnl=\\ + \let\\=\TVtabularnewline $}% + r% + <{\@socle \reset@niveaux + $\@finalstrut\@arstrutbox\end{varwidth}}} +% \end{macrocode} +% +%\changes{tabvar-1.6}{2011/07/07}{Ajout du type `U' synonyme de `N' +% utilis\'e par numprint.sty. N.B.: c'est la derni\`ere +% d\'efinition qui est prise en compte par \cs{newcolumntype}, +% donc celle de numprint si tabvar est charg\'e apr\`es tabvar +% et inversement (cf. array.dtx).} +% +% On d\'efinit \'egalement un type \ctype{U} pour les domaines o\`u +% la fonction n'est pas d\'efinie : la colonne est colori\'ee en +% faisant appel \`a l'extension \file{colortbl}. La couleur +% peut \^etre choisie par l'utilisateur, par exemple :\\ +% |\definecolor{TVcolor}{rgb}{0.66, 0.8, 0}| \\ +% donne un vert, voir \file{color.sty} pour la fa\c{c}on de +% d\'efinir des couleurs. L'ancien nom \ctype{N}, conserv\'e pour +% la compatibilit\'e ascendante, tant qu'il n'y a pas conflit, mais +% ne devrait plus \^etre utilis\'e. +% +% \begin{macrocode} +\definecolor{TVcolor}{gray}{0.7} +\newdimen\TVarraycolsep +\newdimen\TVcolorLeftSep +\newdimen\TVcolorRightSep +\setlength{\TVcolorLeftSep}{\TVarraycolsep} +\setlength{\TVcolorRightSep}{\TVarraycolsep} +\newcolumntype{U}{% + >{\columncolor{TVcolor}[\TVcolorLeftSep][\TVcolorRightSep]} + c} +\AtBeginDocument{% + \@ifundefined{NC@find@N}% + {\newcolumntype{N}{U}}% + {\PackageWarning{tabvar}{Le type de colonne N est d\'efini par + ailleurs. \MessageBreak Remplacer N par + U dans \protect\begin{tabvar}{...N...} + \MessageBreak}}% +} +% \end{macrocode} +% +% \subsection{Commandes de saisie} +% +% Les valeurs \`a afficher dans chaque ligne peuvent \^etre +% saisies directement (|1.4|, |+|, |-|, etc.) comme dans un +% tableau normal. Les lignes correspondant aux valeurs des +% fonctions comportent plusieurs \'etages, nous disposons +% deux compteurs, |\@niveaux| qui contient le nombre total +% de niveaux (ou \'etages) utilis\'es dans la ligne, |\@pos| +% qui indique le niveau courant. +% +% \begin{macro}{\croit} +% \begin{macro}{\decroit} +% \begin{macro}{\constante} +% Les commandes |\croit|,|\decroit| et |\constante| tracent les +% fl\`eches \`a la hauteur ad\'equate et mettent \`a jour le +% compteur |\@pos|. Un message d'erreur est affich\'e lorsque +% l'une de ces commandes fait sortir de la plage de niveaux +% d\'eclar\'es par la commande |\niveau|. +% +% \begin{macrocode} +\newcommand{\decroit}{\FlecheD + \global\advance\@pos by -1 + \ifnum\@pos<1 + \PackageError{tabvar.sty}% + {Les arguments la commande + \protect\niveau\space sont incorrects}% + \fi} +\newcommand{\croit} {\raisebox{-\baselineskip}{\FlecheC}% + \global\advance\@pos by 1 + \ifnum\@pos>\@niveaux + \PackageError{tabvar.sty}% + {Les arguments la commande + \protect\niveau\space sont incorrects}% + \fi} +\newcommand{\constante}{\FlecheH} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \changes{tabvar-1.1}{2007/05/07}{Ajout de la commande \cs{barre}. +% Ajout de \cs{barre@dth} pour le calcul de la hauteur d'une +% rang\'ee (utilis\'ee par \cs{barre} et \cs{dbarre}).} +% +% \begin{macro}{\dbarre} +% La commande |\dbarre| sert \`a tracer les doubles barres +% La commande |\vline| ne peut pas \^etre utilis\'ee \`a cette fin +% dans les environnements de type |\parbox|, car sa port\'ee +% est limit\'ee \`a un interligne. +% +% On calcule la hauteur exacte de la rang\'ee, dans les deux cas +% |\@niveaux=1| et |\@niveaux>1|, |\@tempdimc| contient la hauteur +% totale (\textit{totalheight}) et |\@tempdimb| la profondeur +% (\textit{depth}). +% \begin{macrocode} +\newcommand{\barre@dth}{% + \ifnum\@niveaux=1 + \@tempdimc=\TVarraystretch\baselineskip + \else + \@tempcnta=\@niveaux + \advance\@tempcnta by -1 + \@tempdimc=\@tempcnta\baselineskip + \@tempdimb=\TVextraheight + \ifdim\@tempdimb<.7\baselineskip + \@tempdimb=.7\baselineskip + \fi + \advance\@tempdimc by \@tempdimb + \advance\@tempdimc by \dp\@arstrutbox + \fi + \@tempdimb=\dp\@arstrutbox} +% \end{macrocode} +% On fait appel \`a |\rule| pour le trac\'e de |\dbarre|. +% \begin{macrocode} +\newcommand{\dbarre}{% + \barre@dth + \rule[-\@tempdimb]{.5\p@}{\@tempdimc}% + \kern 2\p@ + \rule[-\@tempdimb]{.5\p@}{\@tempdimc}% + \@soclefalse} +% \end{macrocode} +% \end{macro} +% +%\changes{tabvar-1.3}{2010/04/03}{% +% Valeur de la profondeur \cs{@tempdimb} corrig\'ee dans \cs{barre}. +% Bug signal\'e par Frank Stengel.} +% +% \begin{macro}{\barre} +% La commande |\barre| prend un argument obligatoire. +% |\barre{}| trace un filet vertical centr\'e dans une colonne. +% Lorsque l'argument est non vide, celui-ci est superpos\'e +% (centr\'e) sur le filet. Le filet est trac\'e en gris +% par d\'efaut (couleur param\'etrable). +% \begin{macrocode} +\newsavebox{\tab@box} +\definecolor{TVbarrecolor}{gray}{0.7} +\newcommand{\barre}[1]{% + \sbox{\tab@box}{\ensuremath{#1}}% + \barre@dth + \@tempcnta=\@pos + \advance\@tempcnta by -1 + \advance\@tempdimb by \@tempcnta\baselineskip + \raisebox{-\@tempdimb}[0pt][0pt]{% + \makebox[\wd\tab@box][c]{\color{TVbarrecolor}% + \rule{.5\p@}{\@tempdimc}}}% + \kern-\wd\tab@box\usebox{\tab@box}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\discont} +% La commande |\discont| s'utilise lorsque la fonction pr\'esente +% une discontinuit\'e, elle r\'eclame 3 arguments obligatoires : +% le premier est la limite \`a gauche~$f_-$, le deuxi\`eme le signe +% '<' ou '>', le troisi\`eme est la limite \`a droite~$f_+$. +% \LaTeX{} ne peut pas toujours comparer facilement les valeurs +% de $f_-$ et $f_+$ (penser \`a $f_-=\sqrt{e}$, $f_+=\pi/2$), le +% deuxi\`eme argument pr\'ecise si $f_- < f_+$ ou si $f_- > f_+$. +% +% En plus de ces 3 arguments obligatoires, un argument optionnel +% (entier positif) permet d'\'ecarter verticalement les valeurs +% $f_-$ et~$f_+$ ; la valeur de cet entier donne le nombre de +% niveaux suppl\'ementaires \`a intercaler (0 par d\'efaut). +% +% On commence par mesurer la largeur des deux arguments |#2| et +% |#4| pour pouvoir les centrer ensuite dans une bo\^{\i}te de +% largeur \'egale au maximum des deux largeurs. +% Si cette disposition ne convient pas, on pourra toujours +% ajouter un |\hfill| \`a droite o\`u \`a gauche de la valeur +% \`a d\'eplacer. +% +% \begin{macrocode} +\newcommand{\discont}[4][0]{% + \settowidth{\@tempdimc}{\ensuremath{#2}}% + \settowidth{\@tempdimb}{\ensuremath{#4}}% + \ifdim\@tempdimc<\@tempdimb \@tempdimc=\@tempdimb\fi + \rule{\z@}{\TVextraheight}% + \@soclefalse + \ifthenelse{\equal{#3}{<}}% +% \end{macrocode} +% Cas o\`u $f_- < f_+$ : on pose la valeur de~$f_+$ (|#4|), puis +% on saute autant de lignes suppl\'ementaires qu'indiqu\'e dans +% l'argument optionnel, ensuite on passe \`a 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 \`a ajuster le compteur~|\@pos| pour que la fl\`eche +% suivante soit plac\'ee \`a la bonne hauteur. +% \begin{macrocode} + {\makebox[\@tempdimc]{\ensuremath{#4}}% + \@tempcnta=#1 + \whiledo{\@tempcnta>0}{\TVnl \null \advance\@tempcnta by -1}% + \TVnl + \makebox[\@tempdimc]{\ensuremath{#2}}% + \@tempcnta=\@pos + \advance\@tempcnta by -1 + \whiledo{\@tempcnta>0}{\TVnl \null \advance\@tempcnta by -1}% + \global\advance\@pos by 1 + \global\advance\@pos by #1 + }% + {\ifthenelse{\equal{#3}{>}}% +% \end{macrocode} +% Cas o\`u $f_- > f_+$ : \textit{idem} en permutant $f_-$ et~$f_+$. +% \begin{macrocode} + {\makebox[\@tempdimc]{\ensuremath{#2}}% + \@tempcnta=#1 + \whiledo{\@tempcnta>0}{\TVnl \null \advance\@tempcnta by -1}% + \TVnl + \makebox[\@tempdimc]{\ensuremath{#4}}% + \@tempcnta=\@pos + \advance\@tempcnta by -2 + \advance\@tempcnta by -#1 + \whiledo{\@tempcnta>0}{\TVnl \null \advance\@tempcnta by -1}% + \global\advance\@pos by -1 + \global\advance\@pos by -#1 + }% +% \end{macrocode} +% Cas o\`u le deuxi\`eme argument n'est ni |<| ni |>| : erreur +% \begin{macrocode} + {\PackageError{tabvar.sty}% + {Le second argument de \protect\discont\space doit \^etre + \MessageBreak soit '<' soit '>'}}% + }% +} +% \end{macrocode} +% \end{macro} +% +%\changes{tabvar-1.6}{2011/07/07}{Ajout de la commande \cs{TVcenter}.} +% +% \begin{macro}{\TVcenter} +% La commande |\TVcenter{}| prend un argument, le nom de la +% fonction \`a centrer verticalement dans sa colonne. +% \begin{macrocode} +\newcommand*{\TVcenter}[1]{% + \@tempcnta=\@niveaux \advance\@tempcnta by -1 \divide\@tempcnta by 2 + \@tempdimb=\@tempcnta\baselineskip + \ifodd\@niveaux\else\advance\@tempdimb by .5\baselineskip\fi + \@pos=1\raisebox{\@tempdimb}{\ensuremath{#1}}% +} +% \end{macrocode} +% \end{macro} +% +%\changes{tabvar-1.7}{2012/12/23}{Ajout de la commande \cs{TVstretch}.} +% +% \begin{macro}{\TVstretch} +% La commande |\TVstretch{}| prend un argument obligatoire, le nom +% de la valeur \`a \'ecarter des lignes horizontales et un +% argument optionnel de type \emph{dimension}. +% Elle place son argument dans une bo\^{\i}te et en mesure la hauteur +% et la profondeur. En l'absence d'argument optionnel, elle ajoute +% respectivement |\TVextraheight| \`a la hauteur |\TV@tempa| et +% |\TVextradepth| \`a la profondeur |\TV@tempb|. +% +% Si l'argument optionnel est une dimension positive, sa valeur +% sera ajout\'ee uniquement \`a la hauteur et si c'est une +% dimension n\'egative sa valeur absolue sera ajout\'ee uniquement +% \`a la profondeur. La valeur par d\'efaut de l'argument optionnel +% est |0pt|. +% +% \begin{macrocode} +\newsavebox\TVbox +\newdimen\TVextraheight +\newdimen\TVextradepth +\setlength{\TVextraheight}{2pt} +\setlength{\TVextradepth}{2pt} +\newdimen\TV@tempa +\newdimen\TV@tempb +\newcommand{\TVstretch}[2][0pt]{% + \edef\tmp{#1}% + \sbox{\TVbox}{\ensuremath{#2}}% + \settoheight{\TV@tempa}{\usebox{\TVbox}}% + \settodepth {\TV@tempb}{\usebox{\TVbox}}% + \ifdim\tmp=0pt + \addtolength{\TV@tempa}{\TVextraheight}% + \addtolength{\TV@tempb}{\TVextradepth}% + \else + \ifdim\tmp>0pt + \addtolength{\TV@tempa}{\tmp}% + \else + \addtolength{\TV@tempb}{-\tmp}% + \fi + \fi +% \end{macrocode} +% Il reste \`a afficher la bo\^{\i}te initiale et \`a lui adjoindre +% une |\rule| invisible (de largeur nulle) de profondeur +% |\TV@tempb| et de hauteur totale |\TV@tempa + \TV@tempb|. +% \begin{macrocode} + \usebox{\TVbox}% + \addtolength{\TV@tempa}{\TV@tempb}% + \rule[-\TV@tempb]{0pt}{\TV@tempa}% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Environnement `tabvar'} +% +% L'environnement \env{tabvar} est un \env{array} o\`u sont +% red\'efinis |\TVarraystretch|, |\TVarraycolsep| et +% |\tabularnewline|. +% +% \begin{environment}{tabvar} +% \begin{macrocode} +\newcommand{\TVarraystretch}{1.5} +\setlength{\TVarraycolsep}{1pt} +\newenvironment{tabvar}[1] + {\renewcommand{\arraystretch}{\TVarraystretch}% + \setlength{\arraycolsep}{\TVarraycolsep}% + \global\@niveaux=1 \global\@pos=1 \global\@soclefalse + \def\TVtabularnewline{\reset@niveauxtrue\tabularnewline}% + \begin{array}{#1}} + {\end{array}} +% \end{macrocode} +% \end{environment} +% +% Chargement du fichier de pr\'ef\'erences, si il en existe un. +% \begin{macrocode} +\InputIfFileExists{tabvar.cfg} + {\typeout{loading tabvar.cfg}} + {\typeout{tabvar.cfg not found, using default values}} +% \end{macrocode} +% \iffalse +% +% \fi +% +% \section{Fichier de configuration} +% +% \iffalse +%<*cfg> +% \fi +% \begin{macrocode} +%% Fichier de configuration de l'extension `tabvar.sty'. +%% +%% D\'ecommenter la ligne suivante pour que les variantes MetaPost +%% des fl\`eches soient utilis\'ees \`a la place de la fonte tabvar.pfb +%% (d\'econseill\'e en g\'en\'eral et *jamais* sous LuaLaTeX ou XeLaTeX). +%% +%%\FlechesMPtrue +%% +%% Choix d'une des 4 variantes pour les fl\`eches PostScript +%% +%%\FlechesPS1 % (d\'efaut) +%%\FlechesPS2 % assorties \`a la police Fourier +%%\FlechesPS3 +%%\FlechesPS4 +%% +%% Ce param\`etre permet d'augmenter la largeur des colonnes contenant +%% des fl\`eches (essayer 1.3, 1.5, etc.), sa valeur par d\'efaut est 1 : +%% +%%\renewcommand*{\TVarrowscolstretch}{1} +%% +%% Ce param\`etre permet d'ajuster la hauteur des lignes +%% de `tabvar' correspondant aux variations d'une fonction ; +%% sa valeur par d\'efaut est : +%% +%%\setlength{\TVextraheight}{0.7\baselineskip} +%% +%% Valeur de \arraycolsep utilis\'ee dans `tabvar'. +%% +%%\setlength{\TVarraycolsep}{1pt} +%% +%% Valeur de \arraystretch utilis\'ee dans `tabvar'. +%% +%%\renewcommand{\TVarraystretch}{1.5} +%% +%% Largeur maximale des colonnes de type C, L ou R. +%% +%%\setlength{\TVmaxcolwidth}{\linewidth} +%% +%% Valeur des espaces verticaux ajout\'es par la commande +%% |\TVstretch{}|. +%% +%%\setlength{\TVextraheight}{2pt} +%%\setlength{\TVextradepth}{2pt} +%% +%% Exemples de d\'efinitions de couleurs pour les colonnes `U' +%% o\`u la fonction est non d\'efinie. +%% +%%\definecolor{TVcolor}{gray}{0.5} +%%\definecolor{TVcolor}{rgb}{0.33, 0.12, 0} +%%\definecolor{TVcolor}{cmyk}{0.91,0,0.88,0.12} +%% +%% Les valeurs suivantes assurent que les colonnes `U' sont +%% colori\'ees sur toute leur largeur. +%% +%%\setlength{\TVcolorLeftSep}{\TVarraycolsep} +%%\setlength{\TVcolorRightSep}{\TVarraycolsep} +%% +%% On peut ajuster comme ci-dessus la couleur des filets +%% tra\c{c}\'es par la commande \barre{}. +%% +%%\definecolor{TVbarrecolor}{gray}{0.7} +% \end{macrocode} +% \iffalse +% +% \fi +% +% \Finale +% +% \PrintChanges +\endinput + +%%% Local Variables: +%%% fill-column: 70 +%%% coding: us-ascii +%%% End: diff --git a/macros/latex/contrib/tabvar/source/tabvar.ins b/macros/latex/contrib/tabvar/source/tabvar.ins new file mode 100644 index 0000000000..e9939c501a --- /dev/null +++ b/macros/latex/contrib/tabvar/source/tabvar.ins @@ -0,0 +1,66 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% Copyright (C) Daniel Flipo 2003-2007 +%% +%% It may be distributed and/or modified under the conditions +%% of the LaTeX Project Public License, either version 1.3 of +%% this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2003/12/01 or later. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{tabvar.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\keepsilent + +\usedir{tex/latex/tabvar} + +\generate{\file{tabvar.sty}{\from{tabvar.dtx}{sty}} + } + +\nopreamble +\generate{\file{tabvar.cfg}{\from{tabvar.dtx}{cfg}} + } + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* Now, run 'mpost -tex=latex tabvar' to produce files} +\Msg{* tabvar.1 tabvar.2 tabvar.3 from tabvar.mp} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space tabvar.sty tabvar.cfg tabvar.1 tabvar.2 tabvar.3} +\Msg{*} +\Msg{* To produce the documentation} +\Msg{* run tabvar.dtx through LaTeX or pdfLaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endbatchfile +\endinput diff --git a/macros/latex/contrib/tabvar/source/tabvar.mp b/macros/latex/contrib/tabvar/source/tabvar.mp new file mode 100644 index 0000000000..7b9691270e --- /dev/null +++ b/macros/latex/contrib/tabvar/source/tabvar.mp @@ -0,0 +1,17 @@ +%%% tabvar.mp +numeric w, h ; +w=24pt ; h=12pt ; +beginfig(1); +pickup pencircle scaled .2pt; +drawarrow (0,0) -- (w,h); +endfig; +beginfig(2); +pickup pencircle scaled .2pt; +drawarrow (0,h) -- (w,0); +endfig; +beginfig(3); +pickup pencircle scaled .2pt; +drawarrow (0,0) -- (w,0); +endfig; +end. +endinput; -- cgit v1.2.3