\documentclass[a4paper]{article} \usepackage[a4paper,scale=0.9]{geometry} \usepackage{graphics,acro,ifthen,pstricks,pst-node,pst-tree,pst-eps} \newpsobject{showgrid}{psgrid}{subgriddiv=1,griddots=10,gridlabels=6pt} % Copyright (c) 2003 by Nick Urbanik . % This material may be distributed only subject to the terms and % conditions set forth in the Open Publication License, v1.0 or later % (the latest version is presently available at % http://www.opencontent.org/openpub/). % I should probably have used the psmatrix environment instead of % using pstree, since this is really a graph rather than a tree. % Anyway, it's okay, except that the positioning will break if % things are resized individually. % See page 49 of Graphics Companion % #1, #2 x and y coordinates of reference point of brace in pt % #3 rotation angle for large right brace in degrees: 90 faces down % -90 faces up, 180 faces to the right % #4 total height of brace in pt \newcommand{\Bpara}[4]{% \begin{picture}(0,0)% \setlength{\unitlength}{1pt}% \put(#1,#2){\rotatebox{#3}{\raisebox{0mm}[0mm][0mm]{% \makebox[0mm]{$\left.\rule{0mm}{#4pt}\right\}$}}}}% \end{picture}% } \newlength{\NW} \newlength{\mylevelsep} \newlength{\mytextlen} \setlength{\mylevelsep}{35mm} \setlength{\NW}{0.6\mylevelsep} \newcommand{\Node}[1]{% \settowidth{\mytextlen}{#1} \Tr[ref=r]{% \psframebox[linestyle=none]{% \ifthenelse{\lengthtest{\mytextlen > \NW}}% { \begin{minipage}[c]{\NW} \raggedleft% #1% \end{minipage}% }% %else {% #1% }% }% }% } \renewcommand{\psedge}{\ncangle} \begin{document} \begin{TeXtoEPS}% %\begin{pspicture}(0,0)(18,4)%\showgrid \begin{pspicture}(0,0)%\showgrid \psset{arrows=<-,xbbd=1.5cm,treemode=L, %\psset{arrows=<-,xbbd=0cm,treemode=L, angleA=-180,angleB=0,levelsep=\mylevelsep} %\pstree[treemode=R]{\Node{who}}{}{} \pstree{\Node{\raggedright{}yes/no decision}} { \pstree{\Node{viewName}}% {% \rput[r]{0}(-5.9,0){{\red{}who} {$\left\{\rule{0mm}{10mm}\right.$}}% \pstree{\Node{groupName}}% {% \Node{securityModel}% \Node{securityName}% }% \Node{\rput[r]{0}(-0.2,0.1){{\red{}where} {$\left\{\rule{0mm}{3mm}\right.$}}% contextName}% \Node{securityModel}% \rput[r]{0}(-2.3,-3.2){{\red{}how} {$\left\{\rule{0mm}{10mm}\right.$}}% \Node{securityLevel}% \Node{\rput[r]{0}(-.65,-0.3){{\red{}why} {$\left\{\rule{0mm}{7mm}\right.$}}% viewType (read/\allowbreak{}write/\allowbreak{}notify)}% }% \pstree{\Node{variableName (\OID)}}% {% \Node{\rput[r]{0}(-0.4,0.1){{\red{}what} {$\left\{\rule{0mm}{3mm}\right.$}}% object-type}% \Node{\rput[r]{0}(-1,-0.1){{\red{}which} {$\left\{\rule{0mm}{5mm}\right.$}}% object-instance}% }% }% \end{pspicture} \end{TeXtoEPS} \end{document}