summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/pst-pdgr/pst-pdgr.dtx
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2007-11-16 11:29:57 +0000
committerNorbert Preining <preining@logic.at>2007-11-16 11:29:57 +0000
commit36e468865ab64e283898151fca03ea3e5586a766 (patch)
treeec4514e666b7897764fc4e27005c1ac7ae5e0105 /Master/texmf-dist/source/generic/pst-pdgr/pst-pdgr.dtx
parent31a15e363ba80d73d0472a77e44b958bb2273651 (diff)
pst-pdgr v0.3
git-svn-id: svn://tug.org/texlive/trunk@5462 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/generic/pst-pdgr/pst-pdgr.dtx')
-rw-r--r--Master/texmf-dist/source/generic/pst-pdgr/pst-pdgr.dtx262
1 files changed, 148 insertions, 114 deletions
diff --git a/Master/texmf-dist/source/generic/pst-pdgr/pst-pdgr.dtx b/Master/texmf-dist/source/generic/pst-pdgr/pst-pdgr.dtx
index 784a068fd81..9e58a6ca480 100644
--- a/Master/texmf-dist/source/generic/pst-pdgr/pst-pdgr.dtx
+++ b/Master/texmf-dist/source/generic/pst-pdgr/pst-pdgr.dtx
@@ -1,8 +1,8 @@
% \iffalse
%<*gobble>
-% $Id: pst-pdgr.dtx,v 1.43 2006/05/16 22:16:43 boris Exp $
+% $Id: pst-pdgr.dtx,v 2.8 2007-07-23 16:40:25 boris Exp $
%
-% Copyright 2006, Boris Veytsman <borisv@lk.net>, Leila Akhmadeeva
+% Copyright 2006, 2007, Boris Veytsman <borisv@lk.net>, Leila Akhmadeeva
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3 of this license or (at your option) any
@@ -20,10 +20,11 @@
% derived files pst-pdgr.tex, pst-pdgr.sty, pst-pdgr.pdf.
%
% \fi
-% \CheckSum{505}
+% \CheckSum{0}
%
% \changes{v0.1}{2006/04/18}{The interface is mostly done}
% \changes{v0.2}{2006/04/19}{Added new examples}
+% \changes{v0.3}{2007/07/20}{Documentation update}
%
%
%% \CharacterTable
@@ -67,65 +68,6 @@
\\\strut\MacroFont\@tempa\SpecialOptionIndex\@tempa
}}\@esphack\ignorespaces}
\makeatother
-\DoNotIndex{\@Alph,\@alph,\@arabic,\@badmath}
-\DoNotIndex{\@centercr}
-\DoNotIndex{\@empty,\@ignoretrue}
-\DoNotIndex{\@ixpt}
-\DoNotIndex{\@M,\@minus,\@ne,\@plus}
-\DoNotIndex{\\,\addtolength}
-\DoNotIndex{\advance}
-\DoNotIndex{\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
-\DoNotIndex{\bullet}
-\DoNotIndex{\cdot,\cr,\day,\DeclareOption}
-\DoNotIndex{\def,\DocInput,\documentclass}
-\DoNotIndex{\DoNotIndex,\egroup,\ifx,\else,\fi,\endtrivlist}
-\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
-\DoNotIndex{\endlist,\everycr,\ExecuteOptions}
-\DoNotIndex{\filedate,\filename,\fileversion}
-\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
-\DoNotIndex{\hsize,\hskip,\hspace,\hss,\ifcase,\or,\fi}
-\DoNotIndex{\ifvmode,\fi,\ifnum,\fi,\input}
-\DoNotIndex{\kern,\leavevmode,\let,\leftmark}
-\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark}
-\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
-\DoNotIndex{\NeedsTeXFormat,\newdimen}
-\DoNotIndex{\newpage,\nobreak,\noindent,\number}
-\DoNotIndex{\p@}
-\DoNotIndex{\pagestyle,\par}
-\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
-\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
-\DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
-\DoNotIndex{\rightmargin,\rlap,\rmfamily}
-\DoNotIndex{\setbox,\setcounter,\setlength}
-\DoNotIndex{\skip,\slshape,\space}
-\DoNotIndex{\trivlist,\typeout,\tw@}
-\DoNotIndex{\vskip,\vspace,\year,\z@}
-%
-\DoNotIndex{\@ptsize,\@sptoken,\addtocounter,\afterassignment}
-\DoNotIndex{\AtEndOfPackage,\baselineskip,\boxmaxdepth,\clearpage}
-\DoNotIndex{\clubpenalty,\csname,\CurrentOption,\DeclareRobustCommand}
-\DoNotIndex{\eject,\endcsname,\evensidemargin,\expandafter}
-\DoNotIndex{\footnotesize,\footskip,\fromaddress,\futurelet}
-\DoNotIndex{\headheight,\headsep,\hfuzz,\ignorespaces}
-\DoNotIndex{\InputIfFileExists,\large,\lineskip,\loop}
-\DoNotIndex{\MakeUppercase,\MessageBreak,\mbox,\multiply}
-\DoNotIndex{\newcount,\newif,\newlength,\newtoks,\nolinebreak}
-\DoNotIndex{\nopagebreak,\normalfont,\normalsize,\null,\newline}
-\DoNotIndex{\oddsidemargin,\PackageError,\PackageInfo}
-\DoNotIndex{\paperheight,\paperwidth,\parbox,\parindent}
-\DoNotIndex{\PassOptionsToPackage,\ProvidesPackage,\RequirePackage}
-\DoNotIndex{\rule,\selectfont,\sffamily,\sloppy,\small,\spaceskip}
-\DoNotIndex{\stepcounter,\textheight,\textwidth,\the,\topmargin}
-\DoNotIndex{\unhbox,\voidb@x,\vsize,\vfuzz,\widowpenalty,\xspaceskip}
-\DoNotIndex{\AtBeginDocument,\AtEndDocument}
-\DoNotIndex{\endinput,\ProvidesFile,\message,\catcode,\@}
-\DoNotIndex{\PSTricksLoaded,\PSTXKeyLoaded,\PSTnodesLoaded,\PSTreeLoaded}
-\DoNotIndex{\pst@addfams,\define@key,\define@choicekey,\pssetlength}
-\DoNotIndex{\@nameuse,\@namedef,\psset,\rnode,\@ifnextchar,\pscircle}
-\DoNotIndex{\psdot,\pscircle,\pspolygon,\qline,\rput,\psline,\psframe}
-\DoNotIndex{\@pstrickserr,\@ehpa,\pst@checknum,\lput,\ncline,\pspicture}
-\DoNotIndex{\ncangle,\pnode,\pspicture,\endpspicture,\Tr}
-\DoNotIndex{\ifdim,\fi}
\PageIndex
\CodelineIndex
\RecordChanges
@@ -139,8 +81,8 @@
% \MakeShortVerb{|}
%
%\GetFileInfo{pst-pdgr.sty}
-%\title{Creating Medical Pedigree with PSTricks and \LaTeX.
-% \thanks{\copyright Boris Veytsman, Leila Akhmadeeva 2006}}
+%\title{Creating Medical Pedigrees with PSTricks and \LaTeX.
+% \thanks{\copyright Boris Veytsman, Leila Akhmadeeva 2006, 2007}}
%\author{Boris Veytsman, \path{borisv@lk.net} \and Leila Akhmadeeva}
%\date{\filedate, \fileversion}
%\maketitle
@@ -154,6 +96,30 @@
% from spreadsheets is provided elsewhere on |CTAN|.
%\end{abstract}
%
+% \begin{center}
+% \begin{pspicture}(0,1)(7,7)
+% \rput(3,4){%
+% \pstree{\TpstPerson[female, obligatory, belowtext=Ann]{Ann}}{%
+% \def\psedge{\pstDescent}\psset{descarmA=1}
+% \pstree{\TpstPerson[male, affected, belowtext=John]{John}}{%
+% \TpstPerson[female, belowtext=Sue]{Sue}
+% \TpstPerson[male, belowtext=Paul]{Paul}
+% \TpstAbortion[affected, belowtext=male]{A1}
+% \pstree[thislevelsep=1.2]{\TpstPerson[male,
+% belowtext=Peter, affected, proband]{Peter}}{%
+% \def\psedge{\ncline}
+% \TpstChildless[infertile]{C1}
+% }
+% }
+% \pstree{\TpstPerson[female, belowtext=Mary]{Mary}}{
+% \TpstPerson[female, belowtext=Joan]{Joan}
+% }
+% }
+% }
+% \pstRelationship[consanguinic]{Peter}{Joan}
+% \end{pspicture}
+% \end{center}
+%
% \clearpage
%
%\tableofcontents
@@ -683,20 +649,28 @@
%\subsubsection{Descent}
%\label{sec:pstDescent}
%
+% \changes{v0.3}{2007/06/24}{Added option descarmA}
% The paper~\cite{PedigreeNomenclature95} distinguishes between
% descent line and sibs line. We, however, will call all segments of
-% the line, joining a parent (or a descent node) and a child the
+% the line, joining a parent (or a descent node) and a child, the
% descent line. \DescribeMacro{\pstDescent} The main command for
% showing parent-child relations is
-% |\pstDescent|\oarg{options}\marg{Parent}\marg{Child}. It has no
-% special options, but the usual |\PSTricks| options for lines are
-% valid. The most important option is |armB|: the length of the
-% segment between the parent node and the sib line. Note that to make
-% the sib line straight the actual direction of the |\ncangle| used by
-% |\pstRelationship| internally is \emph{reversed}: from \marg{Child}
-% to \marg{Parent}. Examples of this command are shown in
-% Table~\ref{tab:pstDescent}. Note the option |linestyle=dashed| used
-% to show social parentage in the first example.
+% |\pstDescent|\oarg{options}\marg{Parent}\marg{Child}.
+% \DescribeOption{descarmA}
+% \marginpar{New in v0.3}
+% The descent line consists of three segments: the vertical arm from the
+% parent node, the vertical arm from the child node and the
+% horizontal segment connecting these arms. When there are several
+% sibs, the horizontal segments form the sibs line. The length
+% |descarmA| is the length of the first segment. By default it is 0.8
+% (in |PSTricks| units), but it can be changed by the usual |\psset|
+% command or in the option list of |\pstDescent|. Note that it is
+% calculated from the center of the node rather than from the node
+% edge.
+%
+% Examples of |\pstDescent| are shown in Table~\ref{tab:pstDescent}.
+% Note the |PSTricks| option |linestyle=dashed| used to show social
+% parentage in the first example.
%
%
%
@@ -724,7 +698,7 @@
% \pstDescent{A}{C}
% \pstDescent{A}{D}
% \end{pspicture}\\
-% \bslash psset\{armB=1\}
+% \bslash psset\{descarmA=1\}
% \bslash rput(0.5,2)\{\bslash pstPerson[male, belowtext=Fred]\{A\}\}
% \bslash rput(2.5,2)\{\bslash pstPerson[female, obligatory, belowtext=Ginger]\{B\}\}
% \bslash pstRelationship[descentnode=AB]\{A\}\{B\}
@@ -736,7 +710,7 @@
% \bslash pstDescent\{AB\}\{C3\}
% &
% \begin{pspicture}[shift=-1](0,-0.2)(3.5,2.5)
-% \psset{armB=1}
+% \psset{descarmA=1}
% \rput(0.5,2){\pstPerson[male, belowtext=Fred]{A}}
% \rput(2.5,2){\pstPerson[female, obligatory, belowtext=Ginger]{B}}
% \pstRelationship[descentnode=AB]{A}{B}
@@ -779,7 +753,7 @@
% lines: \\
% |\pstTwins|\oarg{options}\marg{Parent}\marg{TwinNode}\marg{LeftTwin}\marg{RightTwin}.
%
-% \DescribeOptions{monozygotic,qzygotic,mzlinepos,addtwins}
+% \DescribeOptions{monozygotic,qzygotic,mzlinepos,addtwin}
% The options for this command are listed in
% Table~\ref{tab:twin_opts}. The option |monozygotic| allows to show
% that the twins are monozygotic. The actual position of the
@@ -791,6 +765,13 @@
% |addtwin| allows to draw pedigrees with more than two twins. It can
% be repeated several times if necessary. Examples of the usage of
% this command are shown in Table~\ref{tab:pstTwins}.
+%
+% \DescribeOption{descarmA}
+% The first part of the |pstTwins| line has the same shape as
+% |\pstDescent|. The option |descarmA| has the same meaning, as for
+% |\pstDescent|. Therefore if there are both twins and non-twins, as
+% in the first example in Table~\ref{tab:pstTwins}, the sibs segment
+% is drawn correctly.
%
% \begin{table}
% \centering
@@ -862,7 +843,8 @@
% \bslash rput(1.2,0.5)\{\bslash pstPerson[female]\{C\}\}
% \bslash rput(1.9,0.5)\{\bslash pstPerson[female]\{D\}\}
% \bslash rput(2.6,0.5)\{\bslash pstPerson[female]\{E\}\}
-% \bslash pstTwins[addtwin=C, addtwin=D]\{A\}\{Twins\}\{B\}\{E\}
+% \bslash pstTwins[descarmA=0.5,
+% addtwin=C, addtwin=D]\{A\}\{Twins\}\{B\}\{E\}
% &
% \begin{pspicture}(3,2.5)
% \rput(1.5,2){\pstPerson[male]{A}}
@@ -871,7 +853,7 @@
% \rput(1.2,0.5){\pstPerson[female]{C}}
% \rput(1.9,0.5){\pstPerson[female]{D}}
% \rput(2.6,0.5){\pstPerson[female]{E}}
-% \pstTwins[addtwin=C, addtwin=D]{A}{Twins}{B}{E}
+% \pstTwins[descarmA=0.5, addtwin=C, addtwin=D]{A}{Twins}{B}{E}
% \end{pspicture}\\
% \hline
% \end{tabular}
@@ -899,7 +881,7 @@
% probably need to use command like
% \begin{verbatim}
% \def\psedge{\pstDescent}
-% \psset{armB=1}
+% \psset{descarmA=1}
% \end{verbatim}
% in your code. An example of us of such commands is shown on
% Figure~\ref{fig:example_tree}. Note that the resulting figure is
@@ -911,7 +893,7 @@
% \begin{pspicture}(0,1)(7,7)
% \rput(3,4){%
% \pstree{\TpstPerson[female, obligatory, belowtext=Ann]{Ann}}{%
-% \def\psedge{\pstDescent}\psset{armB=1}
+% \def\psedge{\pstDescent}\psset{descarmA=1}
% \pstree{\TpstPerson[male, affected, belowtext=John]{John}}{%
% \TpstPerson[female, belowtext=Sue]{Sue}
% \TpstPerson[male, belowtext=Paul]{Paul}
@@ -939,7 +921,7 @@
% \begin{pspicture}(0,1)(7,7)
% \rput(3,4){%
% \pstree{\TpstPerson[female, obligatory, belowtext=Ann]{Ann}}{%
-% \def\psedge{\pstDescent}\psset{armB=1}
+% \def\psedge{\pstDescent}\psset{descarmA=1}
% \pstree{\TpstPerson[male, affected, belowtext=John]{John}}{%
% \TpstPerson[female, belowtext=Sue]{Sue}
% \TpstPerson[male, belowtext=Paul]{Paul}
@@ -977,7 +959,7 @@
% \begin{figure}
% \centering
% \begin{pspicture}(6,6)
-% \psset{belowtextrp=t, armB=1}
+% \psset{belowtextrp=t, descarmA=1}
% \rput(2.5,5.5){\pstPerson[male, deceased, belowtext=I:1]{I:1}}
% \rput(3.5,5.5){\pstPerson[female, deceased, belowtext=I:2]{I:2}}
% \pstRelationship[descentnode=I:1_2]{I:1}{I:2}
@@ -1016,7 +998,7 @@
% \centering
% \begin{verbatim}
% \begin{pspicture}(6,6)
-% \psset{belowtextrp=t, armB=1}
+% \psset{belowtextrp=t, descarmA=1}
% \rput(2.5,5.5){\pstPerson[male, deceased, belowtext=I:1]{I:1}}
% \rput(3.5,5.5){\pstPerson[female, deceased, belowtext=I:2]{I:2}}
% \pstRelationship[descentnode=I:1_2]{I:1}{I:2}
@@ -1062,10 +1044,10 @@
% \centering
% \rotatebox{90}{
% \begin{pspicture}(0.7,0)(21.3,9)
-% \psset{armB=1.1, hatchsep=1.5pt}
+% \psset{descarmA=1.1, hatchsep=1.5pt}
% \rput(3.5,8){Ethnic Background}
% \rput(18.5,8){Ethnic Background}
-% \rput(3.5,7.5){\rnode{OType1}{O'Type}}
+% \rput(3.5,7.6){\rnode[b]{OType1}{O'Type}}
% \rput(18.5,7.5){\pnode{Origin2}}
% \rput(6.5,7.5){\rnode{Quest1}{?}}
% \rput(1,6.5){\Huge I}
@@ -1078,10 +1060,10 @@
% belowtext=6]{I6}}
% \rput(2,7.2){\pnode{Twins1}}
% \rput(4,7.2){\pnode{Twins2}}
-% \pstTwins[armB=0]{OType1}{Twins1}{I1}{I2}
-% \pstTwins[qzygotic, armB=0, mzlinepos=0.8]{OType1}{Twins2}{I3}{I4}
-% \pstDescent[armB=0]{OType1}{I5}
-% \pstDescent[armB=0]{Quest1}{I6}
+% \pstTwins[descarmA=0]{OType1}{Twins1}{I1}{I2}
+% \pstTwins[qzygotic, descarmA=0, mzlinepos=0.8]{OType1}{Twins2}{I3}{I4}
+% \pstDescent[descarmA=0]{OType1}{I5}
+% \pstDescent[descarmA=0]{Quest1}{I6}
% \pstRelationship[descentnode=I5I6]{I5}{I6}
% \rput(1.5,5.5){\pstChildless{CI1}}
% \ncline{I1}{CI1}
@@ -1092,8 +1074,8 @@
% \pstRelationship[descentnode=I7I8]{I7}{I8}
% \rput(21,6.5){\pstPerson[insidetext=5, belowtext=9--14,
% belowtextrp=rt]{I9}}
-% \pstDescent[armB=0]{Origin2}{I8}
-% \pstDescent[armB=0]{Origin2}{I9}
+% \pstDescent[descarmA=0]{Origin2}{I8}
+% \pstDescent[descarmA=0]{Origin2}{I9}
% \rput(1,4.5){\Huge II}
% \rput(2.5,4.5){\pstPerson[male, affected, belowtext=1,
% abovetext=Proto, abovetextrp=rB]{II1}}
@@ -1136,7 +1118,7 @@
% \rput(17,4.5){\pstPerson[male, affected, abovetext=Sam,
% belowtext=\parbox{3cm}{31 y\\ $E_2+$\\
% 11}, hatchsep=3pt]{II11}}
-% \rput(17,3.5){\pstChildless[infertile]{C2}}
+% \rput(17,3.6){\pstChildless[infertile]{C2}}
% \ncline{II11}{C2}
% \rput(18,4.5){\pstPerson[male, obligatory,
% abovetext=Donald,
@@ -1206,7 +1188,7 @@
% \begin{figure}
% \centering
% \begin{verbatim}
-% \psset{armB=1.1, hatchsep=1.5pt}
+% \psset{descarmA=1.1, hatchsep=1.5pt}
% \rput(3.5,8){Ethnic Background}
% \rput(18.5,8){Ethnic Background}
% \rput(3.5,7.5){\rnode{OType1}{O'Type}}
@@ -1222,10 +1204,10 @@
% belowtext=6]{I6}}
% \rput(2,7.2){\pnode{Twins1}}
% \rput(4,7.2){\pnode{Twins2}}
-% \pstTwins[armB=0]{OType1}{Twins1}{I1}{I2}
-% \pstTwins[qzygotic, armB=0, mzlinepos=0.8]{OType1}{Twins2}{I3}{I4}
-% \pstDescent[armB=0]{OType1}{I5}
-% \pstDescent[armB=0]{Quest1}{I6}
+% \pstTwins[descarmA=0]{OType1}{Twins1}{I1}{I2}
+% \pstTwins[qzygotic, descarmA=0, mzlinepos=0.8]{OType1}{Twins2}{I3}{I4}
+% \pstDescent[descarmA=0]{OType1}{I5}
+% \pstDescent[descarmA=0]{Quest1}{I6}
% \pstRelationship[descentnode=I5I6]{I5}{I6}
% \rput(1.5,5.5){\pstChildless{CI1}}
% \ncline{I1}{CI1}
@@ -1236,8 +1218,8 @@
% \pstRelationship[descentnode=I7I8]{I7}{I8}
% \rput(21,6.5){\pstPerson[insidetext=5, belowtext=9--14,
% belowtextrp=rt]{I9}}
-% \pstDescent[armB=0]{Origin2}{I8}
-% \pstDescent[armB=0]{Origin2}{I9}
+% \pstDescent[descarmA=0]{Origin2}{I8}
+% \pstDescent[descarmA=0]{Origin2}{I9}
% \end{verbatim}
% \caption{Code for Figure~\ref{fig:complex_example}: Generation I}
% \label{fig:complex_example_codeI}
@@ -1288,7 +1270,7 @@
% \rput(17,4.5){\pstPerson[male, affected, abovetext=Sam,
% belowtext=\parbox{3cm}{31 y\\ $E_2+$\\
% 11}, hatchsep=3pt]{II11}}
-% \rput(17,3.5){\pstChildless[infertile]{C2}}
+% \rput(17,3.6){\pstChildless[infertile]{C2}}
% \ncline{II11}{C2}
% \rput(18,4.5){\pstPerson[male, obligatory,
% abovetext=Donald,
@@ -1363,7 +1345,19 @@
%\clearpage
%
%
-%\StopEventually{}
+%\StopEventually{%
+% \clearpage
+% \section{Acknowledgements}
+% The authors are grateful to Herbert Vo\ss{} for help with
+% |PSTricks| code. The support of \TeX{} User Group is gratefully
+% acknowledged. One of the authors (LA) was supported by Russian
+% Foundation for Fundamental Research (travel grant 06-04-58811),
+% Russian Federation President Council for Grants Supporting Young
+% Scientists and Flagship Science Schools (grant MD-4245.2006.7)
+%
+% \bibliography{pst-pdgr}
+% \bibliographystyle{plain}
+%}
%
%\section{Implementation}
%\label{sec:implementation}
@@ -1399,7 +1393,7 @@
%<latex>\ProvidesPackage{pst-pdgr}
%<cfg>\ProvidesFile{pst-pdgr.cfg}
%<tex>\message{
-[2006/04/18 v0.2a Medical Pedigree with PSTricks]
+[2007/07/20 v0.3 Medical Pedigree with PSTricks]
%<tex>}
% \end{macrocode}
%
@@ -1716,6 +1710,19 @@
%
% The options to set up numerical values.
%
+%
+% \begin{macro}{\psk@descarmA}
+% \changes{v0.3}{2007/06/24}{Introduced new length}
+% The length of the arm A on the |\pstDescent| line.
+% \begin{macrocode}
+\newdimen\psk@descarmA%
+\define@key[psset]{pst-pdgr}{descarmA}{\pssetlength\psk@descarmA{#1}}%
+\psset{descarmA=0.8}%
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
% \begin{macro}{\pst@pdgr@descentnodepos}
% The position of the descent node on the relationship line
% \begin{macrocode}
@@ -2032,23 +2039,54 @@
%\subsection{Drawing a Descent Line}
%\label{sec:impl_pstDescent}
%
+% \begin{macro}{\ncAngles}
+% \changes{v0.3}{2007/06/24}{Introduced the macro}
+% In the new version of pst-node.tex (1.00 and up) |\ncangles| has the
+% option |pcRef| for the arm lengths to be calculated from the node
+% center. Unfortunately at this time we cannot be sure the users have
+% the new version.
+%
+% This macro is from Herbert Vo\ss{}
+% (\url{http://www.tug.org/mail-archives/pstricks/2007/004608.html})
+% \begin{macrocode}
+\def\ncAngles{\pst@object{ncAngles}}
+\def\ncAngles@i{\check@arrow{\ncAngles@ii}}
+\def\ncAngles@ii#1#2{%
+ \nc@object{Open}{#1}{#2}{1.5}{\ncAngles@iii \tx@NCAngles}}
+%
+\def\ncAngles@iii{%
+ tx@Dict begin \psline@iii pop end
+ /AngleA \psk@angleA def
+ /AngleB \psk@angleB def
+ /ArmA \psk@armA GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul add
+sqrt sub def
+ /ArmB \psk@armB def
+ /ArmTypeA \psk@armtypeA def
+ /ArmTypeB \psk@armtypeB def }
+% \end{macrocode}
+%
+%
+% \end{macro}
+%
% \begin{macro}{\pstDescent}
+% \changes{v0.3}{2007/06/24}{Rewrote using new code from Herbert Vo\ss}
% The standard option processing command:
% \begin{macrocode}
\def\pstDescent{\@ifnextchar[{\pstDescent@i}{\pstDescent@i[]}}%
% \end{macrocode}
% \end{macro}
% \begin{macro}{\pstDescent@i}
-% The actual macro. Note the ``reverse'' direction of the line:
-% this is because for |\ncangle| only |armB| is constant, and we
-% want the sib line to be straight
+% The actual macro. Note that we want to set |armA| \emph{after}
+% processing user input, but all other options are processed after
+% standard ones.
% \begin{macrocode}
\def\pstDescent@i[#1]#2#3{%
\begingroup%
- \psset{arrows=-, linestyle=solid, angleA=90, %
- angleB=-90}%
+ \psset{arrows=-, linestyle=solid, angleA=-90, %
+ angleB=90, armB=0}%
\psset{#1}%
- \ncangle{#3}{#2}%
+ \psset{armA=\psk@descarmA}%
+ \ncAngles{#2}{#3}%
\endgroup}%
% \end{macrocode}
% \end{macro}
@@ -2145,12 +2183,8 @@
%</tex>
% \end{macrocode}
%\Finale
+%
%\clearpage
-%
-%\iffalse\bibliography{genetics,neurology,tex}\fi
-%\bibliography{pst-pdgr}
-%\bibliographystyle{plain}
-%
%\PrintChanges
%\clearpage
%\PrintIndex