3

I use pstricks, and psmatrix, with some frequency to gnerate a variety of figures. One of the things I've always struggled with is how to explicitly control the radius of (say) circle nodes. In order to set the radius, I need to use mnode=Circle, instead of mnode=circle. However, I've noticed that when I use mnode=Circle, the 'centering' of the text/symbol within the node is 'off' by some perceptible amount (to confirm it 'wasn't just me', I had 3-4 different students in my class look, and they all reached the same conclusion).

The following MWE demonstrates the issue -- first graphic uses mnode=circle (everything nicely centered within the nodes), second figure uses mnode=Circle (things not centered). Perhaps a bit anal on my part, but there it is...

Suggestions? Fixes!?

Thanks...

\documentclass[10pt,letterpaper,oneside]{article}

\usepackage[dvips,top=1.2in,bottom=0.65in,left=1.0in,right=1.0in,includefoot]{geometry}

\usepackage{pst-node,pstricks-add,pst-func}
% set up float for putting figures where you want them
\usepackage{float}


\begin{document}

Using \texttt{circle}:

\begin{figure}[H]
\centering
\newpsstyle{Cempty}{fillstyle=solid,mnode=none}
\newpsstyle{Cfill}{fillstyle=solid,fillcolor=blue!7,shadow=false}
\rule[1.8cm]{0.0pt}{3.0cm}
\psscalebox{0.935}{
$
\psmatrix[colsep=1cm,rowsep=1cm,
    arrowscale=1.5,mnode=circle]
 [style=Cempty] ~ &  [name=N1,style=Cfill] \phi_tp_t & [style=Cempty]  ~\\
[name=N2,style=Cfill] \phi_. p_t &  [style=Cempty] ~ & [name=N3,style=Cfill]  \phi_t p_. \\
 [style=Cempty] ~ &  [name=N4,style=Cfill] \phi_.{p_.} &  [style=Cempty] ~
% node connections
\psset{nodesep=5pt,arrows=->}
\ncline[linecolor=red,linewidth=.05cm]{N1}{N2}
\nbput*[nrot=0]{\textbf{?}}
\ncline[linestyle=dashed]{N1}{N3}
\ncline[linestyle=dashed]{N1}{N4}
\ncline[linestyle=dashed]{N2}{N4}
\ncline[linecolor=red,linewidth=.05cm]{N3}{N4}
\naput*[nrot=0]{\textbf{?}}
\endpsmatrix
$
}
\end{figure}


Using \texttt{Circle}, in order to control radius of the nodes:

\begin{figure}[H]
\centering
\newpsstyle{Cempty}{fillstyle=solid,mnode=none}
\newpsstyle{Cfill}{fillstyle=solid,fillcolor=blue!7,shadow=false}
\rule[1.8cm]{0.0pt}{3.0cm}
\psscalebox{0.935}{
$
\psmatrix[colsep=1cm,rowsep=1cm,
    arrowscale=1.5,mnode=Circle,radius=0.55cm]
 [style=Cempty] ~ &  [name=N1,style=Cfill] \phi_tp_t & [style=Cempty]  ~\\
[name=N2,style=Cfill] \phi_. p_t &  [style=Cempty] ~ & [name=N3,style=Cfill]  \phi_t p_. \\
 [style=Cempty] ~ &  [name=N4,style=Cfill] \phi_.{p_.} &  [style=Cempty] ~
% node connections
\psset{nodesep=5pt,arrows=->}
\ncline[linecolor=red,linewidth=.05cm]{N1}{N2}
\nbput*[nrot=0]{\textbf{?}}
\ncline[linestyle=dashed]{N1}{N3}
\ncline[linestyle=dashed]{N1}{N4}
\ncline[linestyle=dashed]{N2}{N4}
\ncline[linecolor=red,linewidth=.05cm]{N3}{N4}
\naput*[nrot=0]{\textbf{?}}
\endpsmatrix
$
}
\end{figure}


\end{document} 
2

It seems the \Circlenode is centred on the base line, not at the centre of the contents. A workaround consists in putting the contents in a \raisebox{\depth}. That's tedious, but you can define a shortcut macro:

\documentclass[10pt,letterpaper,oneside]{article}

\usepackage[dvips,top=1.2in,bottom=0.65in,left=1.0in,right=1.0in,includefoot]{geometry}

\usepackage{pstricks-add,pst-func,}
% set up float for putting figures where you want them \usepackage{float}

\begin{document}

Using \texttt{circle}:

\begin{figure}[H]
\centering
\newpsstyle{Cempty}{fillstyle=solid,mnode=none}
\newpsstyle{Cfill}{fillstyle=solid,fillcolor=blue!7,shadow=false}
\rule[1.8cm]{0.0pt}{3.0cm}
\psscalebox{0.935}{
$
\psmatrix[colsep=1cm,rowsep=1cm,
    arrowscale=1.5,mnode=circle, radius = 1cm]
 [style=Cempty] ~ & [name=N1,style=Cfill] \phi_tp_t & [style=Cempty] ~\\
[name=N2,style=Cfill] \phi_. p_t & [style=Cempty] ~ & [name=N3,style=Cfill] \phi_t p_. \\
 [style=Cempty] ~ & [name=N4,style=Cfill] \phi_.{p_.} & [style=Cempty] ~
% node connections
\psset{nodesep=5pt,arrows=->}
\ncline[linecolor=red,linewidth=.05cm]{N1}{N2}
\nbput*[nrot=0]{\textbf{?}}
\ncline[linestyle=dashed]{N1}{N3}
\ncline[linestyle=dashed]{N1}{N4}
\ncline[linestyle=dashed]{N2}{N4}
\ncline[linecolor=red,linewidth=.05cm]{N3}{N4}
\naput*[nrot=0]{\textbf{?}}
\endpsmatrix
$
}
\end{figure}


Using \texttt{Circle}, in order to control radius of the nodes:

\begin{figure}[H]
\centering
\newpsstyle{Cempty}{fillstyle=solid,mnode=none}
\newpsstyle{Cfill}{fillstyle=solid,fillcolor=blue!7,shadow=false}
\rule[1.8cm]{0.0pt}{3.0cm}
\psscalebox{0.935}{
$
\psmatrix[colsep=1cm,rowsep=1cm,
 arrowscale=1.5,mnode=Circle, radius=0.55cm]%,C
 [style=Cempty] ~ &[name=N1,style=Cfill]\raisebox{\depth}{$ \phi_tp_t $} & [style=Cempty] ~\\
[name=N2,style=Cfill] \raisebox{\depth}{$ \phi_. p_t $} & [style=Cempty] ~ & [name=N3,style=Cfill] \raisebox{\depth}{$ \phi_t p_. $} \\
 [style=Cempty] ~ & [name=N4,style=Cfill] \raisebox{\depth}{$ \phi_.{p_.} $} & [style=Cempty] ~
% node connections
\psset{nodesep=5pt,arrows=->}
\ncline[linecolor=red,linewidth=.05cm]{N1}{N2}
\nbput*[nrot=0]{\textbf{?}}
\ncline[linestyle=dashed]{N1}{N3}
\ncline[linestyle=dashed]{N1}{N4}
\ncline[linestyle=dashed]{N2}{N4}
\ncline[linecolor=red,linewidth=.05cm]{N3}{N4}
\naput*[nrot=0]{\textbf{?}}
\endpsmatrix
$
}
\end{figure}

\end{document} 

enter image description here

1

looks like a bug and will be fixed. Update your current TeX distribution. For TeXLive it is available from today. If you cannot update use the follwing fix:

\documentclass[10pt,letterpaper,oneside]{article}
\usepackage{pst-node}
\makeatletter
\def\Circlenode@ii#1{%
    \begingroup
    \pst@useboxpar
    \pst@dima=\dimexpr\ht\pst@hbox-\dp\pst@hbox
    \divide\pst@dima\tw@
    \pssetlength\pst@dimb\psk@radius
    \setbox\pst@hbox=\hbox{%
        \Cnodeput@iv{#1}%
        \pscircle(.5\wd\pst@hbox,\pst@dima){\pst@dimb}%
        \box\pst@hbox}%
    \ifPst@nodealign \psboxseptrue \fi
    \ifpsboxsep \psCirclebox@sep \fi
    \leavevmode
    \ifPst@nodealign\pst@nodealign\fi
    \box\pst@hbox
    \endgroup}
\makeatother

\begin{document}
    Using \texttt{Circle}, in order to control radius of the nodes:

\newpsstyle{Cempty}{mnode=none}
\newpsstyle{Cfill}{fillstyle=solid,fillcolor=blue!7}
%
$
\psmatrix[colsep=1cm,rowsep=1cm,arrowscale=1.5,mnode=Circle,radius=0.55cm,
    emnode=p]
        &  [name=N1,style=Cfill] \phi_tp_t         &          [style=Cempty]~        \\
           [name=N2,style=Cfill] \phi_. p_t        &      & [name=N3,style=Cfill]  \phi_t p_. \\
        &  [name=N4,style=Cfill] \strut\phi_.{p_.} &  [style=Cempty]~
            % node connections
            \psset{nodesep=5pt,arrows=->}
            \ncline[linecolor=red,linewidth=.05cm]{N1}{N2}
            \nbput*[nrot=0]{\textbf{?}}
            \ncline[linestyle=dashed]{N1}{N3}
            \ncline[linestyle=dashed]{N1}{N4}
            \ncline[linestyle=dashed]{N2}{N4}
            \ncline[linecolor=red,linewidth=.05cm]{N3}{N4}
            \naput*[nrot=0]{\textbf{?}}
\endpsmatrix
$   

\end{document} 

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.