# changing how mnode specified changes centering in psmatrix

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}

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


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}

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


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@
\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}