From 42c0abb2794d602020c582f8072442de1322e2f5 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 2 Sep 2006 23:51:36 +0000 Subject: pst-uml update (29aug06) git-svn-id: svn://tug.org/texlive/trunk@2074 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/pst-uml/pst-uml.sty | 210 +++++++++++------------- 1 file changed, 98 insertions(+), 112 deletions(-) (limited to 'Master/texmf-dist/tex/latex/pst-uml') diff --git a/Master/texmf-dist/tex/latex/pst-uml/pst-uml.sty b/Master/texmf-dist/tex/latex/pst-uml/pst-uml.sty index 80b5cb58377..aca140ca25a 100644 --- a/Master/texmf-dist/tex/latex/pst-uml/pst-uml.sty +++ b/Master/texmf-dist/tex/latex/pst-uml/pst-uml.sty @@ -17,21 +17,22 @@ %% `pst-uml' is a PSTricks package to draw UML diagrams %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Fichier pst-uml.sty $Id: pst-uml.sty,v 1.23 1998/08/24 07:10:32 diam Exp $ -% -% Ce fichier fournit des macro pstricks pour faciliter la création +% Fichier pst-uml.sty $Id: pst-uml.sty,v 1.30 1998/08/24 07:10:32 diam Exp $ +% +% Ce fichier fournit des macro pstricks pour faciliter la création % de diagrammes UML : -% +% % Inspir\'e des exemples de Denis GIROU -% +% % mise `a jour par diam@ensta.fr : % 22/02/98 : création % 15/03/98 : utilsation des cl\'e pour les option de \umlClass +% 10/11/04 : using pst-xkey and pstricks (hv) \def\filename{pst-uml} \def\fileBut{Quelques macros pstricks pour diagrammes UML} -\def\fileversion{0.8} -\def\filedate{1998/04/15} +\def\fileversion{0.81} +\def\filedate{2006/08/16} \def\fileMailAutor{diam@ensta.fr} % \NeedsTeXFormat{LaTeX2e} @@ -40,9 +41,8 @@ \typeout{\space\space\space But\space:\space\fileBut.} % % Chargement de pstricks puis de graphicx -% \usepackage{pst-all} -% pstcol charge color dans le bon ordre, necessite un fichier color.cfg -\RequirePackage{pstcol} % Require a color.cfg file defined +% pstcol charge color dans le bon ordre, necessite un fichier color.cfg +\RequirePackage{pstricks} % Require a color.cfg file defined % \RequirePackage{pst-grad} % \RequirePackage{pst-plot} % \RequirePackage{pst-coil} @@ -58,21 +58,9 @@ \RequirePackage{calc} \RequirePackage{ifthen} -\RequirePackage[dvips]{graphicx} % a charger APRES pstricks - - -% DPC interface to the `keyval' package (until keyval based version -% of PSTricks) -\IfFileExists{pst-key.tex}{% - % \RequirePackage{pst-key}% "pst-key.sty" does not exist as latex style - \input{pst-key.tex}% -}{% - \PackageWarning{pst-uml}{*** You should install package "pst-key" ***}% - % \input{needed/pst-key.tex}% - \input{pst-key.tex}% -} - - +\RequirePackage{graphicx} % a charger APRES pstricks +\RequirePackage{pst-xkey} +\pst@addfams{pst-uml} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Définition de quelques couleur par défaut utilisées pour UML %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -112,7 +100,7 @@ % Affectation des valeurs par defaut standard de pstricks : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\setkeys{psset}{ +\psset{ % labelsep=0.5mm, % au lieu de +/- 2mm labelsep=1mm, % au lieu de +/- 2mm subgriddiv=1, % pour une grille de 1cm en pointilles @@ -127,23 +115,23 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % For debug : ShowPosition -% % -% % usage : +% % +% % usage : % % \ifthenelse{\value{umlDebug} > 0}{\ShowPosition}{}% -% % +% % % \newboolean{umlDebug}\setboolean{umlDebug}{false} % Un entier pour Degoguer -% ATTENTION : si pb de portée de variable (si besoin compteur global) : +% ATTENTION : si pb de portée de variable (si besoin compteur global) : % passer par \edef -% +% \newcounter{umlDebug} -\define@key{psset}{umlDebug}{% +\define@key[pst-uml]{pst-uml}{umlDebug}{% \setcounter{umlDebug}{#1}% - % + % % \setcounter{umlint@a}{#1} % \setcounter{umlDebug}{\the\umlint@a}% - % + % % \pst@cntg=#1\relax% % \edef\psk@Integer{\the\pst@cntg}% } @@ -151,59 +139,59 @@ % Alignement du texte dans la boite umlstack (l, c, r) \newcommand{\umlstr@Align}{} -\define@key{psset}{umlAlign}{\renewcommand{\umlstr@Align}{#1}} +\define@key[psset]{pst-uml}{umlAlign}{\renewcommand{\umlstr@Align}{#1}} % Positionnement vertical de la boite umlstack (t, b, c) \newcommand{\umlstr@Pos}{} -\define@key{psset}{umlPos}{\renewcommand{\umlstr@Pos}{#1}} +\define@key[psset]{pst-uml}{umlPos}{\renewcommand{\umlstr@Pos}{#1}} % Distance de séparation du texte à la boite umlstack -% Influe sur colsep pour l'espace horizontal et sur des strut pour +% Influe sur colsep pour l'espace horizontal et sur des strut pour % l'espace vertical \newlength\umldim@StackSep -\define@key{psset}{umlStackSep}{\pssetlength\umldim@StackSep{#1}} +\define@key[psset]{pst-uml}{umlStackSep}{\pssetlength\umldim@StackSep{#1}} % cooéficient de modif de l'interligne de umlstack \newcommand{\umlreal@StackLinesStretch}{} -\define@key{psset}{umlStackLinesStretch}{% +\define@key[psset]{pst-uml}{umlStackLinesStretch}{% \renewcommand{\umlreal@StackLinesStretch}{#1}} % Largeur de la boite "umlStack" \newlength\umldim@StackWidth -\define@key{psset}{umlStackWidth}{\pssetlength\umldim@StackWidth{#1}} +\define@key[psset]{pst-uml}{umlStackWidth}{\pssetlength\umldim@StackWidth{#1}} % Largeur de la boite "classe" \newlength\umldim@ClassWidth -\define@key{psset}{umlClassWidth}{\pssetlength\umldim@ClassWidth{#1}} +\define@key[psset]{pst-uml}{umlClassWidth}{\pssetlength\umldim@ClassWidth{#1}} % distance entre deux \hline dans la boite "classe" \newlength\umldim@umlDoubleRuleSep -\define@key{psset}{umlDoubleRuleSep}{\pssetlength\umldim@umlDoubleRuleSep{#1}} +\define@key[psset]{pst-uml}{umlDoubleRuleSep}{\pssetlength\umldim@umlDoubleRuleSep{#1}} -% Chaine "Template" +% Chaine "Template" % umlParameter \newcommand{\umlstr@umlParameter}{} -\define@key{psset}{umlParameter}{\renewcommand{\umlstr@umlParameter}{#1}} +\define@key[psset]{pst-uml}{umlParameter}{\renewcommand{\umlstr@umlParameter}{#1}} % % un parametre boolean % \newif\ifuml@Shadow -% \define@key{psset}{umlShadow}[true]{\@nameuse{uml@Shadow#1}} +% \define@key[psset]{pst-uml}{umlShadow}[true]{\@nameuse{uml@Shadow#1}} % un parametre boolean \newboolean{umlbool@Shadow} -\define@key{psset}{umlShadow}[true]{\setboolean{umlbool@Shadow}{#1}} +\define@key[psset]{pst-uml}{umlShadow}[true]{\setboolean{umlbool@Shadow}{#1}} % Epaisseur de ligne pour le dessin d'un acteur \newlength\umldim@ActorLineWidth -\define@key{psset}{umlActorLineWidth}{\pssetlength\umldim@ActorLineWidth{#1}} +\define@key[psset]{pst-uml}{umlActorLineWidth}{\pssetlength\umldim@ActorLineWidth{#1}} % Nom d'un objet (umlState, ...) N'EST PAS UTILISE ! \newcommand{\umlname@umlTitle}{} -\define@key{psset}{umlTitle}{\renewcommand{\umlname@umlTitle}{#1}} +\define@key[psset]{pst-uml}{umlTitle}{\renewcommand{\umlname@umlTitle}{#1}} % Affectation des valeurs par defaut sprecifique a pst-uml: -\setkeys{psset}{ +\psset{ umlClassWidth=0, umlShadow=true, umlActorLineWidth=0.6mm, @@ -220,21 +208,21 @@ % Quelques commandes utilitaires generales : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% pour passer plusieurs lignes (par \\) dans un parametre simple -% -% La difficulté était de gérer l'option "StackSep" pour le +% pour passer plusieurs lignes (par \\) dans un parametre simple +% +% La difficulté était de gérer l'option "StackSep" pour le % haut et le bas du texte. % ATTENTION il faut s'assurer que cette commande fonctionne même % si le texte passé en parametre commence ou finit par \hline ! -% -% +% +% \newcommand{\umlStack}[2][]{{% - \setkeys{psset}{#1}% + \psset{#1}% \setlength{\tabcolsep}{\umldim@StackSep}% \renewcommand{\arraystretch}{\umlreal@StackLinesStretch}% \ifthenelse{\lengthtest{\umldim@StackWidth=0pt}}{% - % dimensionnement automatique - \begin{tabular}[\umlstr@Pos]{\umlstr@Align}% + % dimensionnement automatique + \begin{tabular}[\umlstr@Pos]{\umlstr@Align}% }{% else % dimensionnement fixe \begin{tabular*}{\umldim@StackWidth}[\umlstr@Pos]{\umlstr@Align}% @@ -249,7 +237,7 @@ \rule[-\umldim@StackSep]{0pt}{0pt}% % \end{tabular}% \ifthenelse{\lengthtest{\umldim@StackWidth=0pt}}{% - % dimensionnement automatique + % dimensionnement automatique \end{tabular}% }{% else % dimensionnement fixe @@ -259,7 +247,7 @@ % FONCTIONNE MAIS LE PREMIER \rule gene si #2 commence par \hline % \newcommand{\umlStack}[2][]{{% -% \setkeys{psset}{#1}% +% \psset{#1}% % \setlength{\tabcolsep}{\umldim@StackSep}% % \renewcommand{\arraystretch}{\umlreal@StackLinesStretch}% % \begin{tabular}{\umlstr@Align}% @@ -286,7 +274,7 @@ % permet d'afficher un triangle plein vers la droite. % Pas d'option pour l'instant \newcommand{\umlTriRight}[1][]{{% - \setkeys{psset}{#1}% + \psset{#1}% \space \begin{pspicture}(0,0)(1.1ex,1.1ex)% \pstriangle[linewidth=0,fillstyle=solid,fillcolor=black,gangle=-90]% @@ -297,7 +285,7 @@ % permet d'afficher un triangle plein vers la gauche. % Pas d'option pour l'instant \newcommand{\umlTriLeft}[1][]{{% - \setkeys{psset}{#1}% + \psset{#1}% \space \begin{pspicture}(0,0)(1.1ex,1.1ex)% \pstriangle[linewidth=0,fillstyle=solid,fillcolor=black,gangle=90]% @@ -321,7 +309,7 @@ % Le corps de la commande est entre {{ }} pour assurer des changements % LOCAUX des valeurs de parametres (tels que \psset{...}) \newcommand{\umlClass}[3][]{{% - \setkeys{psset}{#1}% Reading keyOptions + \psset{#1}% Reading keyOptions \setlength{\doublerulesep}{\umldim@umlDoubleRuleSep}% \def\next{#2}% \ifx\next\empty% @@ -354,20 +342,20 @@ % On dessine la boite finale : \ifthenelse{\boolean{umlbool@Shadow}}{% \psshadowbox[fillstyle=solid,framesep=0,fillcolor=uml_grey80]% - {\usebox{\umlbox@out}}% + {\usebox{\umlbox@out}}% }{% {\setlength{\fboxsep}{0pt}\fbox{\usebox{\umlbox@out}}}% }% - % + % % On superpose éventuellement le template (rectangle pointillé) - % + % \settowidth{\umldim@a}{\umlstr@umlParameter}% \ifthenelse{\lengthtest{\umldim@a=0pt}}{% }{% \settoheight{\umldim@H}{\usebox{\umlbox@out}}% Height \setlength{\umldim@a}{1.5ex}% dx \setlength{\umldim@b}{\umldim@H - 0.3ex}% Height - dy - % + % \rput[br](\umldim@a,\umldim@b){% \psframebox[fillstyle=solid,fillcolor=white,linestyle=dashed]% {\Large\textbf{\umlstr@umlParameter}}% @@ -396,7 +384,7 @@ % % Surcourche à la commande de dessin de classe : % % -% % CECI FONCTIONNE PAS : +% % CECI FONCTIONNE PAS : % % \newsavebox{\csname#2\endcsname} PLANTE : % % idem avec : % % \expandafter\newsavebox{\csname#2\endcsname} @@ -433,7 +421,7 @@ % } % % Surcourche à la commande de dessin de classe : -% % CECI FONCTIONNE PAS : +% % CECI FONCTIONNE PAS : % % ! Illegal parameter number in definition of \@tempa. % % Je n'ai pas reussi en jonglant aves les \csname et autre \@nameuse % \newcommand{\umlSaveClass}[3][]{% @@ -453,7 +441,7 @@ % Memorisation d'une classe dans une commande %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% A faire (utiliser gdef par exemple ?) +% A faire (utiliser gdef par exemple ?) % s'assurer que la commande cree est GLOGALE !! @@ -482,7 +470,7 @@ \newcommand{\umlActor}[2][]{{% \psset{unit=0.8,arrows=-}% - \setkeys{psset}{#1}% + \psset{#1}% \begin{tabular}[t]{c}% \begin{pspicture}(-0.5,0)(0.5,1.9)% \psset{linewidth=\umldim@ActorLineWidth}% @@ -506,17 +494,17 @@ % La macro pour dessiner les useCase : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \umlCase[keyOptions]{Title}{Body} : #2 = Title +% \umlCase[keyOptions]{Title}{Body} : #2 = Title % Option : idem que psovalbox % Remarque : utiliser ovalnode et non pas rnode pour les placements -% +% % BUG : \psovalbox creer une boite RECTANGULAIRE dans la quelle il y a % un oval => difficile de séparer la CREATION du dessin et le PLACEMENT % de celui-ci avec la création d'un node CONCLUSION : inutilisé ! % (Utiliser plutot la commande suivante \umlPutCase) -% +% \newcommand{\umlCase}[2][]{{% - \setkeys{psset}{#1}% Reading keyOptions + \psset{#1}% Reading keyOptions \sbox{\umlbox@out}{\umlStack{#2}}% \psovalbox{\usebox{\umlbox@out}} }} @@ -524,9 +512,9 @@ % Pour placer directement dans un ovalnode % UTILISATION : % \umlPutCase[keyOptions{10,2}{C6}{Identifier\\contraintes bloquantes}% -% +% \newcommand{\umlPutCase}[4][]{{% - \setkeys{psset}{#1}% Reading keyOptions + \psset{#1}% Reading keyOptions \rput(#2){\ovalnode[framesep=0]{#3}{\umlStack{#4}}}% }} @@ -535,9 +523,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \umlState[keyOptions]{Title}{Body} : #2 = Title ; #3 = Body -% +% \newcommand{\umlState}[3][]{{% - \setkeys{psset}{#1}% Reading keyOptions + \psset{#1}% Reading keyOptions % \typeout{***** DEBUT umlState : Titre=:#2:, Body=:#3:}% \def\next{#2}% \ifx\next\empty @@ -568,14 +556,14 @@ \newcommand{\umlStateIn}[1][]{{% - \setkeys{psset}{#1}% Reading keyOptions + \psset{#1}% Reading keyOptions \begin{pspicture}[](-0.25,-0.25)(0.25,0.25) \pscircle[fillstyle=solid,fillcolor=black]{0.25}% \end{pspicture}% }} \newcommand{\umlStateOut}[1][]{{% - \setkeys{psset}{#1}% Reading keyOptions + \psset{#1}% Reading keyOptions \begin{pspicture}[](-0.40,-0.40)(0.40,0.40) \pscircle[fillstyle=solid,fillcolor=black]{0.25}% \pscircle[fillstyle=none,linewidth=0.06]{0.40}% @@ -585,16 +573,16 @@ % Pour placer directement dans un cnode % UTILISATION : % \umlPutStateIn[keyOptions]{10,2}{stateInA}% -% +% \newcommand{\umlPutStateIn}[3][]{{% - \setkeys{psset}{#1}% Reading keyOptions + \psset{#1}% Reading keyOptions \rput(#2){\cnode[linestyle=none]{0.25}{#3}{% \pscircle[fillstyle=solid,fillcolor=black]{0.25}% }}% }} \newcommand{\umlPutStateOut}[3][]{{% - \setkeys{psset}{#1}% Reading keyOptions + \psset{#1}% Reading keyOptions \rput(#2){\cnode[linestyle=none]{0.40}{#3}{% \pscircle[fillstyle=solid,fillcolor=black]{0.25}% \pscircle[fillstyle=none,linewidth=0.06]{0.40}% @@ -603,7 +591,7 @@ % A FAIRE : pour le pseudo-état 'History" % \newcommand{\umlStateH}[1][]{{% -% \setkeys{psset}{#1}% Reading keyOptions +% \psset{#1}% Reading keyOptions % }} @@ -611,11 +599,11 @@ % La macro pour dessiner les notes : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \umlNote[keyOptions]{Body} : -% +% \umlNote[keyOptions]{Body} : +% \newcommand{\umlNote}[2][]{{% - \setkeys{psset}{umlAlign=l}% - \setkeys{psset}{#1}% Reading keyOptions + \psset{umlAlign=l}% + \psset{#1}% Reading keyOptions \sbox{\umlbox@a}{\texttt{\umlStack[umlStackSep=1.5ex]{#2}}}% \settowidth{\umldim@W}{\usebox{\umlbox@a}}% Width \settoheight{\umldim@H}{\usebox{\umlbox@a}}% Height @@ -637,19 +625,19 @@ }} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Commandes de placement relatif de type "LOGO" +% Commandes de placement relatif de type "LOGO" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% +% % A partir d'une version TEX de Denis GIROU % Inspired by an idea of Sebastian Rahtz % (LGC, example 4-10-10) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % For debug : ShowPosition -% -% usage : +% +% usage : % \ifthenelse{\value{umlDebug} > 0}{\ShowPosition}{}% -% +% \newboolean{umlDebug}\setboolean{umlDebug}{false} \newcommand{\ShowPosition}[1][]{% \typeout{% @@ -662,7 +650,7 @@ % Direction (non utilisée pour l'instant) codé en nombre de quart de cercle % (i x 90) => 0 right, 1 up, 2 left, 3 down -% +% \newcounter{umlCpt@Direction}\setcounter{umlCpt@Direction}{-1} % New length for recording current postion : @@ -742,14 +730,14 @@ % % % % increment Y position % % % \psaddtolength{\umldim@PosY}{#1} % % % } -% % % +% % % % % % \newcommand{\Left}[1]{% % % % % record the direction for later % % % \setcounter{umlCpt@Direction}{2} % % % % decrement X position % % % \psaddtolength{\umldim@PosX}{-#1} % % % } -% % % +% % % % % % \newcommand{\Down}[1]{% % % % % record the direction for later % % % \setcounter{umlCpt@Direction}{3} @@ -757,15 +745,15 @@ % % % \psaddtolength{\umldim@PosY}{-#1} % % % } -% % Put an object at current coordinates +% % Put an object at current coordinates % \newcommand{\rputXY}[2][]{% -% \setkeys{psset}{#1}% +% \psset{#1}% % \rput(\umldim@PosX,\umldim@PosY){#2} % } -% -% Put an object at current coordinates +% +% Put an object at current coordinates \newcommand{\rputXY}[2][]{% - \setkeys{psset}{#1}% + \psset{#1}% \rput(\umldim@PosX,\umldim@PosY){#2}% } @@ -776,8 +764,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\ncputicon}[2][]{{% - \setkeys{psset}{npos=0,nrot=:D}% defaut : au debut et vers la gauche - \setkeys{psset}{#1}% + \psset{npos=0,nrot=:D}% defaut : au debut et vers la gauche + \psset{#1}% \@ifundefined{umlicon@#2}% {\typeout{^^JERREUR : FLECHE NON definie "#2"^^J}}% {}% FLECHE BIEN definie @@ -815,10 +803,10 @@ % Ces connecteurs sont une surcouche aux différents connecteurs % proposés par pstricks. -% Leur but est de simplifier le tracé des liens en se restreingnant aux +% Leur but est de simplifier le tracé des liens en se restreingnant aux % directions horizontales et verticales. -% -% Le principe est d'indiquer dans le nom même de la commande le nombre +% +% Le principe est d'indiquer dans le nom même de la commande le nombre % de segments à tracer et leur direction : % - E, W, N, S pour Est, West, North, Sud % - H, V pour Horizontal; Vertical @@ -878,12 +866,10 @@ \newpsobject{ncNXW}{ncangles}{angleA=90,angleB=0} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % FIN -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \typeout{Package \filename.sty is loaded.} \endinput - - -- cgit v1.2.3