Retour

Source de tableau.sty

Fichier STY
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%% Nouvelles marcros et environnement %%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
\newcounter{TabNodeX}                          % Compte les colonnes
\renewcommand{\theTabNodeX}{\Alph{TabNodeX}}   % Compte en A B C ...
 
\newcounter{TabNoLigne}[TabNodeX]              % Compte les lignes dans une colonne
\newcounter{TabVieux}                          % Ancienne ligne
 
\newcounter{TabShowLabel}
\newcommand{\TabShowLabelOn}{
    \setcounter{TabShowLabel}{1}
    \psgrid[gridcolor=blue,subgridcolor=blue,subgriddiv=10,%
                gridwidth=.5pt,subgridwidth=.1pt,%
                gridlabels=0pt](-1cm,-1)(1,\NbLignesH)}
\newcommand{\TabShowLabelOff}{\setcounter{TabShowLabel}{0}}
 
\newlength{\TabLargeur}             % Largeur du tableau en cm
\newlength{\TabColX}                % Abscisse de la colonnne
\newlength{\TabNodeX}               % Abscisse du node
 
\newlength{\TabTitreL}              % Largeur de la colonne de gauche
\setlength{\TabTitreL}{1.5cm}       % de 1.5cm par défaut
 
\newlength{\TabHautLigne}           % Hauteur d'une ligne en cm
\newlength{\TabHautPLigne}          % Hauteur de la première
\setlength{\TabHautPLigne}{.8cm}
 
\newlength{\TabNodeY}               % Ordonnée du node
 
\newcommand{\TabNewCol}[1]{%
    \setcounter{TabVieux}{-1}
	\stepcounter{TabNodeX}              % Incrémente le numéro de colonne
    \setlength{\TabColX}{#1\TabLargeur} % place la colonne horizontalement
    }
 
\newcommand{\rTabPut}[5][0]{%           % #1 type de ligne qui traverse
                                        %    la case. 0 rien (défaut),
                                        %    1 pointillé, 2 filet, 3 dbl barre
                                        % #2 point de référence
                                        % #3 Correction horizontale
                                        % #4 Correction verticale 
                                        % #5 ce qu'il faut afficher
 
    % Calcule l'ordonnée du node avec la correction verticale
 
    \setlength{\TabNodeY}{#4\TabHautLigne}
    \addtolength{\TabNodeY}{-\theTabNoLigne\TabHautLigne}
 
 
    % Calcule l'abscisse du node avec la correction horizoncale
 
    \setlength{\TabNodeX}{#3cm}
    \addtolength{\TabNodeX}{\TabColX}
 
        % Affiche le nom des nodes à la place de ce qu'il faudrait
        % Plus une grille pour les positionner
 
        \ifthenelse%           ligne en pointillé dans la case
		{\equal{#1}{1}}%
		{\psline[style=TabLigneP]%
			(\TabNodeX,\theTabVieux)%
			(\TabNodeX,\theTabNoLigne)}%
		{}%
 
		\ifthenelse%           ligne en continue dans la case
		{\equal{#1}{2}}%
		{\psline[style=TabLigne]%
			(\TabNodeX,\theTabVieux)%
			(\TabNodeX,\theTabNoLigne)}%
		{}%
 
		\ifthenelse%           ligne double dans la case
		{\equal{#1}{3}}%
		{\psline[style=TabDblBarre]%
			(\TabNodeX,\theTabVieux)%
			(\TabNodeX,\theTabNoLigne)}%
		{}%
        \ifthenelse%
        {\equal{\theTabShowLabel}{0}}%
        {    % Pour que les nodes se déplacent dynamiquement avec le changement
             % de hauteur de ligne sauf sur la ligne au dessus du tableau. 
 
            \ifthenelse%
            {\equal{\theTabNoLigne}{0}}%
            {\rput[#2](\TabNodeX,#4cm)%
                {\rnode{\theTabNodeX\theTabNoLigne}{#5}}}%
            {\rput[#2](\TabNodeX,\TabNodeY)%
                {\rnode{\theTabNodeX\theTabNoLigne}{#5}}}%
 
		\stepcounter{TabVieux}
        \stepcounter{TabNoLigne}            % numéro de ligne suivante
 
        }%
        {    % Pour que les nodes se déplacent dynamiquement avec le changement
             % de hauteur de ligne sauf sur la ligne au dessus du tableau. 
            \ifthenelse%
            {\equal{\theTabNoLigne}{0}}%
            {\uput{.2}[90](\TabNodeX,#4cm){\bf\footnotesize\theTabNodeX\theTabNoLigne}
			 \rput[#2](\TabNodeX,#4cm)%
                {\rnode{\theTabNodeX\theTabNoLigne}{\small$\bullet$}}}%
            {\uput{.2}[90](\TabNodeX,\TabNodeY){\bf\footnotesize\theTabNodeX\theTabNoLigne}
			 \rput[#2](\TabNodeX,\TabNodeY)%
                {\rnode{\theTabNodeX\theTabNoLigne}{\small$\bullet$}}}%
 
        \stepcounter{TabNoLigne}            % numéro de ligne suivante
 
        }%
 
 
    }
 
\newenvironment{MonTableau}[3]{%      % #1 est le nombre de lignes
                                        % #2 est la largeur du tableau
                                        % #3 est la hauteur d'une ligne
 
    \setcounter{TabNodeX}{0}            % On repart de 0
 
	\setlength{\TabLargeur}{#2cm}       % Largeur du tableau
    \setlength{\TabHautLigne}{#3cm}     % Hauteur des lignes
    \psset{xunit=#2,yunit=-#3}          % Unités pour que chaque case du tableau
                                        % ait les dimension 1x1
 
    \begin{pspicture}(-\TabTitreL,#1)(1,\TabHautPLigne)   % Début de PSpicture
 
 
    \def\NbLignesH{#1}
 
	\psline(-\TabTitreL,0)(1,0)                % Dessin des lignes horizontales
    \multido{\i=1+1}{\NbLignesH}{%
        \psline[linewidth=.3pt](0,\i)(1,\i)}
	}%
    {
	% Dessin des lignes verticales et de la dernière ligne
    \psline(0,\TabHautPLigne)(0,\NbLignesH)(1,\NbLignesH)(1,0)
 
	\end{pspicture}                    % Fin de PSpicture
    }
 
\newcommand{\TabFleche}[2]{%            % Flèche entre deux nodes
    \ncline[nodesep=3pt,linewidth=.5pt]{->}{#1}{#2}}
 
\newcommand{\TabTitre}[2]{%             % Titre de ligne var. ou sgn. de f
	$\stackrel{\rule[-5pt]{0pt}{5pt}\text{\normalsize\bf#1}}{#2}$}
 
\newcommand{\TabFerme}{%      % ferme le tableau pour ceux qui on froid
	\psline(1,\NbLignesH)(1,\TabHautPLigne)(-\TabTitreL,\TabHautPLigne)%
	(-\TabTitreL,\NbLignesH)(1,\NbLignesH)}
 
\newcommand{\TabTitreFerme}{%      % lignes horizontales dans la col. de gauche
    \multido{\i=1+1}{\NbLignesH}{%
        \psline[linewidth=.3pt](-\TabTitreL,\i)(0,\i)}}
 
\newpsstyle{TabDblBarre}{linewidth=.4pt,doubleline=true,doublesep=.6pt}
\newpsstyle{TabLigne}{linewidth=.4pt}
\newpsstyle{TabLigneP}{linewidth=.4pt,linestyle=dashed,dash=3pt 2pt}
 
\newcommand{\TabZ}[1][$0$]{\pscirclebox*{#1}}
 
\newcommand{\TabEfface}[1]{\psline[linecolor=white,linewidth=1.5pt]%
	(-\TabTitreL,#1)(1,#1)}