%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%% 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)}