[pstricks] psmatrix, new arrow type => thank you

Antoine Pairet lists at pairet.be
Sun Nov 2 10:33:46 CET 2008


Thanks a lot. It is _exactly_ what a was looking for. 

Keep on the hard work Herbert, PSTricks is a wonderful tool.

Antoine 


On Sun, 2008-11-02 at 10:09 +0100, Herbert Voss wrote:
> Antoine Pairet schrieb:
> 
> > Basically, it uses a forloop to generate a psmatrix. Then using \ncnode
> > I connect several nodes. This works pretty good. However, I'd like to
> > define a new arrow type: an arrow that ends with a circle with a dot in
> > its centre. 
> > 
> > \ncline{°-°}{nodeA}{nodeB} would link the 2 nodes by a line ending by
> > two circles having a dot in their center.
> 
> see example
> 
> > Moreover, I'd like to have some advices concerning the definition of my
> > \nonZero macro. It must put a dot on a node of the psmatrix. I uses
> > \ncline[linestyle=none]{*-}{nodeA}{1,1} 
> > Is there a better method?
> 
> not really, but you can do \ncline[linestyle=none]{*-}{nodeA}{nodeA}
> 
> > And how about having better brackets than with my code?
> 
> do not define counters inside an environment, should be
> done always outside.
> 
> Herbert
> 
> \documentclass[a4paper,10pt]{report}
> \usepackage{pst-node,graphicx}
> \usepackage[utf8]{inputenc}
> \usepackage[english]{babel}
> \usepackage{forloop}	
> \usepackage{amsmath}	
> \newcommand\equalValue[2]{\ncline{*-*}{#1}{#2}}%
> \newcommand\oppositeValue[2]{\ncline{*-o}{#1}{#2}}%
> \newcommand\halfValue[2]{\ncline{#1}{#2}}%
> \newcommand\halfOppositeValue[2]{%
>   \ncline{o-o}{#1}{#2}%
>   \ncput[npos=0]{\psdot[dotscale=0.5]}%
>   \ncput[npos=1]{\psdot[dotscale=0.5]}}
> \newcommand\nonZero[1]{\ncline[linestyle=none]{*-}{#1}{#1}}%
> \newcounter{identRow}%%Counters for the loop
> \newcounter{identCol}%
> \newcounter{endMatrix}%
> \newsavebox\PBox
> \newenvironment{symmatrix}[2]{%	% Macro definitions
>   \setcounter{endMatrix}{#1}%
>   \addtocounter{endMatrix}{-1}%
>   \psset{arrowscale=2}
>   \begin{lrbox}{\PBox}
>     \begin{psmatrix}[colsep=.5cm,rowsep=.25cm,mnode=dot,dotsize=1.5pt]%
>     \forloop{identRow}{0}{\value{identRow} < #1}{%
>        \forloop{identCol}{1}{\value{identCol} < #2}{&}%
>        \ifnum\theidentRow<\theendMatrix \\\fi}%
>     \end{psmatrix}}
> {\end{lrbox}\[\left(\arraycolsep=2pt%
>   \array{c}\usebox\PBox\endarray\right)\]}
> 
> \begin{document}
> 
> \begin{symmatrix}{3}{6}
>   \equalValue{2,3}{3,6}
>   \oppositeValue{2,1}{3,4}
>   \halfOppositeValue{2,2}{3,5}
>   \nonZero{2,5}
> \end{symmatrix}
> 
> \end{document}
> _______________________________________________
> PSTricks mailing list
> PSTricks at tug.org
> http://tug.org/mailman/listinfo/pstricks



More information about the PSTricks mailing list