]> git.donarmstrong.com Git - lib.git/commitdiff
add pst-pdr
authorDon Armstrong <don@donarmstrong.com>
Wed, 18 Oct 2006 04:01:10 +0000 (04:01 +0000)
committerDon Armstrong <don@donarmstrong.com>
Wed, 18 Oct 2006 04:01:10 +0000 (04:01 +0000)
texmf/invoice.sty
texmf/ls-R
texmf/tex/latex/pst-pdgr/Makefile [new file with mode: 0644]
texmf/tex/latex/pst-pdgr/README [new file with mode: 0644]
texmf/tex/latex/pst-pdgr/pst-pdgr.bib [new file with mode: 0644]
texmf/tex/latex/pst-pdgr/pst-pdgr.dtx [new file with mode: 0644]
texmf/tex/latex/pst-pdgr/pst-pdgr.ins [new file with mode: 0644]

index 60848d07afdeb7ab7091b61657101c238d799ac6..195f12a474bb6b6bea1aceb5690d32b836e70bac 100644 (file)
                %
                \gdef\Flag{1}%
                \begin{center}%
-               \begin{longtable}{p{7cm}lrrr}%
+               \begin{longtable}{p{9cm}lrrr}%
                %
        \else \error@message{\NoInvoiceNesting}%
        \fi}%
index 911e7d3f3f1f0b75cfb704dbedc315baa626d1cc..9bb395ce42095fcae99a45e34be2536d280e9dfd 100644 (file)
@@ -22,21 +22,16 @@ bst
 unsrtdon.bst
 
 ./bibtex/bst/.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./bibtex/bst/.svn/prop-base:
-unsrtdon.bst.svn-base
 
 ./bibtex/bst/.svn/props:
-unsrtdon.bst.svn-work
 
 ./bibtex/bst/.svn/text-base:
 unsrtdon.bst.svn-base
@@ -55,18 +50,13 @@ wcprops
 
 ./bibtex/bst/.svn/tmp/wcprops:
 
-./bibtex/bst/.svn/wcprops:
-
 ./bibtex/.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./bibtex/.svn/prop-base:
 
@@ -88,8 +78,6 @@ wcprops
 
 ./bibtex/.svn/tmp/wcprops:
 
-./bibtex/.svn/wcprops:
-
 ./fonts:
 pk
 .svn
@@ -128,57 +116,26 @@ grktxt.mf
 .svn
 
 ./fonts/pk/ljfour/kelly/.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./fonts/pk/ljfour/kelly/.svn/prop-base:
 cmg10.600pk.svn-base
-cmg10.mf.svn-base
 cmg10.tfm.svn-base
 cmgb10.600pk.svn-base
-cmgb10.mf.svn-base
 cmgb10.tfm.svn-base
 cmgi10.600pk.svn-base
-cmgi10.mf.svn-base
 cmgi10.tfm.svn-base
 cmgtt10.600pk.svn-base
-cmgtt10.mf.svn-base
 cmgtt10.tfm.svn-base
-greek.aux.svn-base
 greek.dvi.svn-base
-greek.log.svn-base
 greek.pdf.svn-base
-greek.sty.svn-base
-greek.tex.svn-base
-grktxt.mf.svn-base
 
 ./fonts/pk/ljfour/kelly/.svn/props:
-cmg10.600pk.svn-work
-cmg10.mf.svn-work
-cmg10.tfm.svn-work
-cmgb10.600pk.svn-work
-cmgb10.mf.svn-work
-cmgb10.tfm.svn-work
-cmgi10.600pk.svn-work
-cmgi10.mf.svn-work
-cmgi10.tfm.svn-work
-cmgtt10.600pk.svn-work
-cmgtt10.mf.svn-work
-cmgtt10.tfm.svn-work
-greek.aux.svn-work
-greek.dvi.svn-work
-greek.log.svn-work
-greek.pdf.svn-work
-greek.sty.svn-work
-greek.tex.svn-work
-grktxt.mf.svn-work
 
 ./fonts/pk/ljfour/kelly/.svn/text-base:
 cmg10.600pk.svn-base
@@ -215,24 +172,17 @@ wcprops
 
 ./fonts/pk/ljfour/kelly/.svn/tmp/wcprops:
 
-./fonts/pk/ljfour/kelly/.svn/wcprops:
-
 ./fonts/pk/ljfour/.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./fonts/pk/ljfour/.svn/prop-base:
-ls-R.svn-base
 
 ./fonts/pk/ljfour/.svn/props:
-ls-R.svn-work
 
 ./fonts/pk/ljfour/.svn/text-base:
 ls-R.svn-base
@@ -251,24 +201,18 @@ wcprops
 
 ./fonts/pk/ljfour/.svn/tmp/wcprops:
 
-./fonts/pk/ljfour/.svn/wcprops:
-
 ./fonts/pk/.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./fonts/pk/.svn/prop-base:
 ljfour.svn-base
 
 ./fonts/pk/.svn/props:
-ljfour.svn-work
 
 ./fonts/pk/.svn/text-base:
 ljfour.svn-base
@@ -287,24 +231,18 @@ wcprops
 
 ./fonts/pk/.svn/tmp/wcprops:
 
-./fonts/pk/.svn/wcprops:
-
 ./fonts/.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./fonts/.svn/prop-base:
 tfm.svn-base
 
 ./fonts/.svn/props:
-tfm.svn-work
 
 ./fonts/.svn/text-base:
 tfm.svn-base
@@ -323,8 +261,6 @@ wcprops
 
 ./fonts/.svn/tmp/wcprops:
 
-./fonts/.svn/wcprops:
-
 ./fonts/tfm:
 kelly
 ls-R
@@ -354,57 +290,26 @@ grktxt.mf
 .svn
 
 ./fonts/tfm/kelly/.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./fonts/tfm/kelly/.svn/prop-base:
 cmg10.600pk.svn-base
-cmg10.mf.svn-base
 cmg10.tfm.svn-base
 cmgb10.600pk.svn-base
-cmgb10.mf.svn-base
 cmgb10.tfm.svn-base
 cmgi10.600pk.svn-base
-cmgi10.mf.svn-base
 cmgi10.tfm.svn-base
 cmgtt10.600pk.svn-base
-cmgtt10.mf.svn-base
 cmgtt10.tfm.svn-base
-greek.aux.svn-base
 greek.dvi.svn-base
-greek.log.svn-base
 greek.pdf.svn-base
-greek.sty.svn-base
-greek.tex.svn-base
-grktxt.mf.svn-base
 
 ./fonts/tfm/kelly/.svn/props:
-cmg10.600pk.svn-work
-cmg10.mf.svn-work
-cmg10.tfm.svn-work
-cmgb10.600pk.svn-work
-cmgb10.mf.svn-work
-cmgb10.tfm.svn-work
-cmgi10.600pk.svn-work
-cmgi10.mf.svn-work
-cmgi10.tfm.svn-work
-cmgtt10.600pk.svn-work
-cmgtt10.mf.svn-work
-cmgtt10.tfm.svn-work
-greek.aux.svn-work
-greek.dvi.svn-work
-greek.log.svn-work
-greek.pdf.svn-work
-greek.sty.svn-work
-greek.tex.svn-work
-grktxt.mf.svn-work
 
 ./fonts/tfm/kelly/.svn/text-base:
 cmg10.600pk.svn-base
@@ -441,24 +346,17 @@ wcprops
 
 ./fonts/tfm/kelly/.svn/tmp/wcprops:
 
-./fonts/tfm/kelly/.svn/wcprops:
-
 ./fonts/tfm/.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./fonts/tfm/.svn/prop-base:
-ls-R.svn-base
 
 ./fonts/tfm/.svn/props:
-ls-R.svn-work
 
 ./fonts/tfm/.svn/text-base:
 ls-R.svn-base
@@ -477,8 +375,6 @@ wcprops
 
 ./fonts/tfm/.svn/tmp/wcprops:
 
-./fonts/tfm/.svn/wcprops:
-
 ./metafont:
 kelly
 ls-R
@@ -508,57 +404,26 @@ grktxt.mf
 .svn
 
 ./metafont/kelly/.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./metafont/kelly/.svn/prop-base:
 cmg10.600pk.svn-base
-cmg10.mf.svn-base
 cmg10.tfm.svn-base
 cmgb10.600pk.svn-base
-cmgb10.mf.svn-base
 cmgb10.tfm.svn-base
 cmgi10.600pk.svn-base
-cmgi10.mf.svn-base
 cmgi10.tfm.svn-base
 cmgtt10.600pk.svn-base
-cmgtt10.mf.svn-base
 cmgtt10.tfm.svn-base
-greek.aux.svn-base
 greek.dvi.svn-base
-greek.log.svn-base
 greek.pdf.svn-base
-greek.sty.svn-base
-greek.tex.svn-base
-grktxt.mf.svn-base
 
 ./metafont/kelly/.svn/props:
-cmg10.600pk.svn-work
-cmg10.mf.svn-work
-cmg10.tfm.svn-work
-cmgb10.600pk.svn-work
-cmgb10.mf.svn-work
-cmgb10.tfm.svn-work
-cmgi10.600pk.svn-work
-cmgi10.mf.svn-work
-cmgi10.tfm.svn-work
-cmgtt10.600pk.svn-work
-cmgtt10.mf.svn-work
-cmgtt10.tfm.svn-work
-greek.aux.svn-work
-greek.dvi.svn-work
-greek.log.svn-work
-greek.pdf.svn-work
-greek.sty.svn-work
-greek.tex.svn-work
-grktxt.mf.svn-work
 
 ./metafont/kelly/.svn/text-base:
 cmg10.600pk.svn-base
@@ -595,24 +460,17 @@ wcprops
 
 ./metafont/kelly/.svn/tmp/wcprops:
 
-./metafont/kelly/.svn/wcprops:
-
 ./metafont/.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./metafont/.svn/prop-base:
-ls-R.svn-base
 
 ./metafont/.svn/props:
-ls-R.svn-work
 
 ./metafont/.svn/text-base:
 ls-R.svn-base
@@ -631,32 +489,17 @@ wcprops
 
 ./metafont/.svn/tmp/wcprops:
 
-./metafont/.svn/wcprops:
-
 ./.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./.svn/prop-base:
-aliases.svn-base
-invoice.def.svn-base
-invoice.sty.svn-base
-ls-R.svn-base
-realcalc.tex.svn-base
 
 ./.svn/props:
-aliases.svn-work
-invoice.def.svn-work
-invoice.sty.svn-work
-ls-R.svn-work
-realcalc.tex.svn-work
 
 ./.svn/text-base:
 aliases.svn-base
@@ -669,6 +512,7 @@ realcalc.tex.svn-base
 ./.svn/tmp:
 prop-base
 props
+tempfile.tmp
 text-base
 wcprops
 
@@ -680,15 +524,12 @@ wcprops
 
 ./.svn/tmp/wcprops:
 
-./.svn/wcprops:
-
 ./tex:
 latex
 .svn
 
 ./tex/latex:
 beamerouterthemedebiansidebar.sty
-beamerouterthemedebiansidebar.sty~
 curve.cls
 envlab.sty
 exam.cls
@@ -696,41 +537,66 @@ fixme.sty
 hypernat.sty
 invoice.def
 invoice.sty
+pst-pdgr
 realcalc.tex
 .svn
 
+./tex/latex/pst-pdgr:
+Makefile
+pst-pdgr.bib
+pst-pdgr.dtx
+pst-pdgr.ins
+README
+.svn
+
+./tex/latex/pst-pdgr/.svn:
+entries
+format
+prop-base
+props
+text-base
+tmp
+
+./tex/latex/pst-pdgr/.svn/prop-base:
+
+./tex/latex/pst-pdgr/.svn/props:
+
+./tex/latex/pst-pdgr/.svn/text-base:
+
+./tex/latex/pst-pdgr/.svn/tmp:
+prop-base
+props
+text-base
+
+./tex/latex/pst-pdgr/.svn/tmp/prop-base:
+
+./tex/latex/pst-pdgr/.svn/tmp/props:
+
+./tex/latex/pst-pdgr/.svn/tmp/text-base:
+
 ./tex/latex/.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./tex/latex/.svn/prop-base:
-curve.cls.svn-base
 envlab.sty.svn-base
-exam.cls.svn-base
 invoice.def.svn-base
 invoice.sty.svn-base
 realcalc.tex.svn-base
 
 ./tex/latex/.svn/props:
-curve.cls.svn-work
-envlab.sty.svn-work
-exam.cls.svn-work
-invoice.def.svn-work
-invoice.sty.svn-work
-realcalc.tex.svn-work
 
 ./tex/latex/.svn/text-base:
+beamerouterthemedebiansidebar.sty.svn-base
 curve.cls.svn-base
 envlab.sty.svn-base
 exam.cls.svn-base
 fixme.sty.svn-base
+hypernat.sty.svn-base
 invoice.def.svn-base
 invoice.sty.svn-base
 realcalc.tex.svn-base
@@ -749,18 +615,13 @@ wcprops
 
 ./tex/latex/.svn/tmp/wcprops:
 
-./tex/latex/.svn/wcprops:
-
 ./tex/.svn:
-empty-file
 entries
 format
 prop-base
 props
-README.txt
 text-base
 tmp
-wcprops
 
 ./tex/.svn/prop-base:
 
@@ -781,5 +642,3 @@ wcprops
 ./tex/.svn/tmp/text-base:
 
 ./tex/.svn/tmp/wcprops:
-
-./tex/.svn/wcprops:
diff --git a/texmf/tex/latex/pst-pdgr/Makefile b/texmf/tex/latex/pst-pdgr/Makefile
new file mode 100644 (file)
index 0000000..9717ba3
--- /dev/null
@@ -0,0 +1,54 @@
+#
+# Makefile for pst-pdgr package
+#
+# This file is in public domain
+#
+# $Id: Makefile,v 1.10 2006/05/17 16:27:18 boris Exp $
+#
+
+PACKAGE=pst-pdgr
+
+all:  $(PACKAGE).pdf
+
+%.pdf:   %.ps
+       ps2pdf -sAutoRotatePages=None $<
+
+%.ps:  %.dvi
+       dvips -Ppdf -o $@ $<
+
+%.dvi:  %.dtx   $(PACKAGE).sty $(PACKAGE).tex
+       latex $<
+       - bibtex $*
+       latex $<
+       - makeindex -s gind.ist -o $*.ind $*.idx
+       - makeindex -s gglo.ist -o $*.gls $*.glo
+       latex $<
+       while ( grep -q '^LaTeX Warning: Label(s) may have changed' $*.log) \
+       do latex $<; done
+
+
+%.sty:   %.ins %.dtx  
+       latex $<
+
+
+%.tex:   %.ins %.dtx  
+       latex $<
+
+.PRECIOUS:  $(PACKAGE).cfg $(PACKAGE).tex $(PACKAGE).sty
+
+
+clean:
+       $(RM) $(PACKAGE).tex $(PACKAGE).sty $(PACKAGE).log $(PACKAGE).aux \
+       $(PACKAGE).cfg $(PACKAGE).glo $(PACKAGE).idx $(PACKAGE).toc \
+       $(PACKAGE).ilg $(PACKAGE).ind $(PACKAGE).out $(PACKAGE).lof \
+       $(PACKAGE).lot $(PACKAGE).bbl $(PACKAGE).blg $(PACKAGE).gls \
+       $(PACKAGE).dvi $(PACKAGE).ps
+
+veryclean: clean
+       $(RM) $(PACKAGE).pdf
+
+#
+# Archive for the distribution. Includes typeset documentation
+#
+archive:  all clean
+       tar -czvf pst-pdgr.tgz --exclude '*~' --exclude '*.tgz' --exclude CVS .
diff --git a/texmf/tex/latex/pst-pdgr/README b/texmf/tex/latex/pst-pdgr/README
new file mode 100644 (file)
index 0000000..bac5e7b
--- /dev/null
@@ -0,0 +1,26 @@
+         Creating Medical Pedigree with PSTricks and LaTeX
+                 Boris Veytsman & Leila Akhmadeeva
+                      Version 0.2a, April 2006
+       
+This package is a set of macros based on PSTricks to draw medical
+pedigrees according to the recommendations for standardized human
+pedigree nomenclature.  The drawing commands place the symbols on a
+pspicture canvas.  An interface for making trees is also provided.
+The package can be used both with LaTeX and PlainTeX.  A separate
+Perl program for generating TeX files from spreadsheets is
+provided elsewhere on CTAN.
+
+To extract the files, run pst-pdgr.ins through latex.  Then move the
+files pst-pdgr.sty & pst-pdgr.cfg to the place where LaTeX files are
+kept in your system, e. g. /usr/share/texmf/tex/latex/pst-pdgr/, and
+the file pst-pdgr.tex to the place where generic TeX files are kept in
+your system, e.g.  /usr/share/texmf/tex/generic/pstricks/pst-pdgr/.
+
+The documentation is in the file pst-pdgr.pdf. You may use the
+provided Makefile to re-typeset it.
+
+Copyright 2006, 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 later version.
diff --git a/texmf/tex/latex/pst-pdgr/pst-pdgr.bib b/texmf/tex/latex/pst-pdgr/pst-pdgr.bib
new file mode 100644 (file)
index 0000000..c9ab559
--- /dev/null
@@ -0,0 +1,50 @@
+Generated on Wed Apr 19 11:55:35 2006 (1145462135).
+
+
+,-------------------.
+|  BIBTEX ENTRIES   |
+`-------------------'
+
+@book{Harper01:MDBook,
+  address =       {Philadelphia},
+  author =        {Peter Harper},
+  edition =       {Third},
+  publisher =     {W. B. Saunders},
+  title =         {Myotonic Dystrophy},
+  year =          {2001},
+}
+
+@article{PedigreeNomenclature95,
+  author =        {Robin L. Bennett and Kathryn A. Steinhaus and
+                   Stefanie B. Uhrich and Corrine K. O'Sullivan and
+                   Robert G. Resta and Debra Lochner-Doyle and
+                   Dorene S. Markei and Victoria Vincent and
+                   Jan Hamanishi},
+  journal =       {Am. J. Hum. Genet.},
+  number =        {3},
+  pages =         {745--752},
+  title =         {Recommendations for Standardized Human Pedigree
+                   Nomenclature},
+  volume =        {56},
+  year =          {1995},
+}
+
+
+@manual{PSTricks93,
+  author =        {Van Zandt, Timothy},
+  month =         {March},
+  note =          {Available from CTAN at
+                   \path{tex-archive/graphics/pstricks/obsolete/doc}},
+  title =         {PSTricks: PostScript Macros for Generic \TeX},
+  year =          {1993},
+}
+
+@manual{pedigree-perl,
+  author =      {Boris Veytsman and Leila Akhmadeeva},
+  month =       {April},
+  note =        {Available from CTAN at \path{support/pedigree}},
+  title =       {A Program For Automatic Pedigree Construction With pst-pdgr.
+                  User Manual and Algorithm Description},
+  year =        {2006},
+
+}
diff --git a/texmf/tex/latex/pst-pdgr/pst-pdgr.dtx b/texmf/tex/latex/pst-pdgr/pst-pdgr.dtx
new file mode 100644 (file)
index 0000000..784a068
--- /dev/null
@@ -0,0 +1,2158 @@
+% \iffalse
+%<*gobble>
+% $Id: pst-pdgr.dtx,v 1.43 2006/05/16 22:16:43 boris Exp $
+%
+% Copyright 2006, 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 
+% later version.
+% The latest version of the license is in
+%    http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2003/06/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Boris Veytsman
+%
+% This work consists of the file pst-pdgr.dtx and the
+% derived files pst-pdgr.tex, pst-pdgr.sty, pst-pdgr.pdf. 
+%
+% \fi 
+% \CheckSum{505}
+%
+% \changes{v0.1}{2006/04/18}{The interface is mostly done}
+% \changes{v0.2}{2006/04/19}{Added new examples}
+%
+%
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~} 
+%
+%\iffalse
+%    \begin{macrocode}
+\documentclass{ltxdoc}
+\usepackage{array}
+\usepackage{url}
+\usepackage{graphicx}
+\usepackage{pst-pdgr}
+\usepackage{pstricks-add}
+% Taken from xkeyval.dtx
+\makeatletter
+\def\DescribeOption#1{\leavevmode\@bsphack
+              \marginpar{\raggedleft\PrintDescribeOption{#1}}%
+              \SpecialOptionIndex{#1}\@esphack\ignorespaces}
+\def\PrintDescribeOption#1{\strut\emph{option}\\\MacroFont #1\ }
+\def\SpecialOptionIndex#1{\@bsphack
+    \index{#1\actualchar{\protect\ttfamily#1}
+           (option)\encapchar usage}%
+    \index{options:\levelchar#1\actualchar{\protect\ttfamily#1}\encapchar
+           usage}\@esphack}
+\def\DescribeOptions#1{\leavevmode\@bsphack
+  \marginpar{\raggedleft\strut\emph{options}%
+  \@for\@tempa:=#1\do{%
+    \\\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
+\EnableCrossrefs
+\begin{document}
+  \DocInput{pst-pdgr.dtx}
+\end{document}
+%    \end{macrocode}
+%</gobble> 
+% \fi
+% \MakeShortVerb{|}
+%
+%\GetFileInfo{pst-pdgr.sty}
+%\title{Creating Medical Pedigree with PSTricks and \LaTeX.
+%  \thanks{\copyright Boris Veytsman, Leila Akhmadeeva 2006}}
+%\author{Boris Veytsman, \path{borisv@lk.net} \and Leila Akhmadeeva}
+%\date{\filedate, \fileversion}
+%\maketitle
+%\begin{abstract}
+%  A set of macros based on |PSTricks| to draw medical pedigrees
+%  according to the recommendations for standardized human pedigree
+%  nomenclature.  The drawing commands place the symbols on a
+%  |pspicture| canvas.  An interface for making trees is also
+%  provided.  The package can be used both with \LaTeX{} and
+%  \PlainTeX.  A separate |Perl| program for generating \TeX{} files
+%  from spreadsheets is provided elsewhere on |CTAN|.
+%\end{abstract}
+%
+% \clearpage
+%
+%\tableofcontents
+%
+% \clearpage
+%
+%\listoffigures
+%\listoftables
+% \clearpage
+%
+%\section{User Guide}
+%\label{sec:user_guide}
+% 
+%
+%\subsection{Introduction}
+%\label{sec:intro}
+%
+% Medical pedigree is a very important tool for clinicians, genetic
+% researchers and educators.  As stated
+% in~\cite{PedigreeNomenclature95}, ``The construction of an accurate
+% family pedigree is a fundamental component of a clinical genetic
+% evaluation and of human genetic research.''  Unfortunately, up to
+% now most geneticians make the pedigrees manually.  There are several
+% programs for doing so (see a list at
+% \url{http://www.kumc.edu/gec/prof/genecomp.html#pedigree}), but they
+% are rather expensive, lack multilanguage support and the quality of
+% typesetting is somewhat lacking.  This package tries to offer a
+% \LaTeX-based solution for this problem.  It could be used with a
+% companion \path{Perl} program \path{pedigree}~\cite{pedigree-perl},
+% which converts databases of patients into a \LaTeX{} file.
+%
+% Note that there are ways to draw genealogical trees with
+% |PSTricks|~\cite{PSTricks93}; see the beautiful ones at
+% \url{http://www.tug.org/PSTricks/main.cgi?file=Examples/Genealogy/genealogy}.
+% Unfortunately, medical pedigrees are often not \emph{trees}.
+% Therefore we do not use tree approach throughout, but provide it as
+% an alternative.   Our general approach is based on the use of
+% nodes~\cite[Part~VII]{PSTricks93}.  Each person or entity is a node,
+% and the lines are in fact |\ncline|s.  This provides a flexibility
+% to draw complex pedigrees.
+%
+% Each node in the system \emph{must} have a name.  To prevent
+% confusion with names of individuals, we call such name an \emph{id}.
+% As usual in |PSTricks|, it is a sequence of letters and numbers
+% starting with a letter.  This rule is very important; a name like 1
+% or 1-1 can lead to mysterious PostScript errors.
+%
+% Our symbols follows the standard~\cite{PedigreeNomenclature95} with
+% the exception that we do not implement showing several conditions
+% on the same chart.
+%
+% To use the package, add the line
+% \begin{verbatim}
+% \usepackage{pst-pdgr}
+% \end{verbatim}
+% to a \LaTeX{} document or
+% \begin{verbatim}
+% \input pst-pdgr.tex
+% \end{verbatim}
+% to a \PlainTeX{} one.  Note that since this is a |PSTricks|
+% package, you need to use \path{tex-dvips} path to compile your
+% document.  If you need a PDF document, you can use \path{ps2pdf} or
+% packages like \path{pst-pdf}, \path{ps4pdf}, \path{pstricks}.
+%
+% If you are using the package in a \LaTeX{} document, you have an
+% added benefit of a local configuration file |pst-pdgr.cfg|.  Such
+% file, if exists, will be read. It can be used to override package
+% settings (use |\AtEndOfPackage| for this).
+%
+%
+%
+%\subsection{Global Settings}
+%\label{sec:globals}
+% 
+% By default the size of each node is |0.5 unit|.  You can change
+% the size by setting the value of  |unit| (1\,cm by default)
+% with |\psset|
+%
+%\DescribeMacro{\affectedstyle}
+%\DescribeMacro{\affectedbgcolor}
+% By default the affected individual is drawn as a black node.  This
+% could be changed by setting |\affectedstyle| and
+% |\affectedbgcolor|, see Figure~\ref{fig:affectedstyle}.  
+%\DescribeMacro{\affectedfgcolor}
+% Sometimes we need to write something inside a node representing an
+% affected individual.  An example in~\cite{PedigreeNomenclature95}
+% changes in this situation the style from filled to hatched, which
+% looks inconsistent.  We rather change the color of the foreground,
+% as shown on Fig.~\ref{fig:affectedfgcolor}. 
+%
+% \begin{figure}
+%   \centering
+%   \begin{minipage}[t]{0.4\linewidth}
+%     \centering
+%       \begin{pspicture}(2,2)
+%         \def\affectedbgcolor{blue}
+%          \expandafter\pscircle\expandafter[\affectedstyle](1,1){1}
+%       \end{pspicture}\leavevmode\\
+%       \small
+%     |\def\affectedbgcolor{%|\\
+%       |blue}|
+%   \end{minipage}
+%   \begin{minipage}[t]{0.4\linewidth}
+%     \centering
+%       \begin{pspicture}(2,2)
+%         \def\affectedstyle{fillstyle=hlines, hatchcolor=\affectedbgcolor}
+%          \expandafter\pscircle\expandafter[\affectedstyle](1,1){1}
+%       \end{pspicture}\leavevmode\\
+%       \small
+%       |\def\affectedstyle{fillstyle=%|\\
+%         |hlines,hatchcolor=\affectedbgcolor}|
+%   \end{minipage}
+%   \caption{Setting Style of Affected Individuals}
+%   \label{fig:affectedstyle}
+% \end{figure}
+%
+% \begin{figure}
+%   \centering
+%   \begin{minipage}[t]{0.4\linewidth}
+%     \centering
+%       \begin{pspicture}(2,2)
+%          \expandafter\pscircle\expandafter[\affectedstyle](1,1){1}
+%          \rput(1,1){\expandafter\textcolor\expandafter{%
+%              \affectedfgcolor}{\Huge 2}}
+%       \end{pspicture}\leavevmode\\
+%       \small
+%     default
+%   \end{minipage}
+%   \begin{minipage}[t]{0.4\linewidth}
+%     \centering
+%       \begin{pspicture}(2,2)
+%         \def\affectedfgcolor{green}
+%          \expandafter\pscircle\expandafter[\affectedstyle](1,1){1}
+%          \rput(1,1){\expandafter\textcolor\expandafter{%
+%              \affectedfgcolor}{\Huge 2}}
+%       \end{pspicture}
+%       \small
+%     |\def\affectedfgcolor{green}|
+%   \end{minipage}
+%   \caption{Use of Foreground Colors for Affected Individuals }
+%   \label{fig:affectedfgcolor}
+% \end{figure}
+%
+%
+%\subsection{Node Drawing Commands}
+%\label{sec:node_commands}
+%
+%
+% The node drawing commands are based on the |\pnode| commands from
+% |PSTricks|~\cite[Part~VII]{PSTricks93}.  It is the preferred command
+% for drawing, for example, a ``marriage node'' (see the examples
+% below).  It is useful to remember this when drawing complex
+% pedigrees.  
+%
+%
+%\subsubsection{One Person}
+%\label{sec:person}
+%
+% \DescribeMacro{\pstPerson} The main command in the package is
+% |\pstPerson|.  It draws one person, which is a |PSTricks| node.  It
+% has the following structure: |\pstPerson|\oarg{options}\marg{id}.
+% The parameter \meta{id} is the name of the node.  It can be used to
+% make connections to the node (see below).
+%
+% There are many options to this command.  As other |PSTricks|
+% options, the also can be set globally through |\psset| command.
+%
+% 
+% \DescribeOptions{sex,condition,deceased,proband,adopted,evaluated}
+% The first group of options describes the state of the person:  sex,
+% condition with respect to the decease, whether the person is
+% deceased, is a proband, was adopted and was evaluated.  These
+% options are listed in Table~\ref{tab:person_state_opts}.  Some 
+% options of this group can take only two values: |true| or |false|.
+% For simplicity the clause |=true| can be omitted, so the clauses
+% |adopted=true| and |adopted| are equivalent.  Two options: |sex| and
+% |condition| can take several values each (geneticians consider three
+% possibilities for sex: |male|, |female| and |unknown|).  Again for
+% simplicity the clauses |sex=| and |condition=| can be omitted, so
+% the invocations |sex=male| and |male| are equivalent, as well as
+% |condition=asymptomatic| and |asymptomatic|.
+%
+% \DescribeOptions{insidetext,abovetext,belowtext,lefttext,righttext}
+% The second group of options (Table~\ref{tab:person_text_opts}) is
+% used to putting text comments inside the symbol, above it, below it
+% or to the right or left to it.  The text will be typeset in a
+% |PSTricks| LR-box~\cite{PSTricks93}; additional control over the
+% text position can be achieved by using |\parbox| or \PlainTeX{}
+% boxes. 
+%
+% \DescribeOptions{abovetextrp,belowtextrp,lefttextrp,righttextrp} 
+% The third group of options (Table~\ref{tab:person_text_rp_opts}) is
+% used to set the text position with respect to the node.  They set
+% the reference point of the text.  They correspond to the usual
+% notation: |r| being right, |l| being left, |t| being top, |b| being
+% bottom and |B| being baseline.  The setting |={}| makes the
+% reference point to be the center of the box.  Note that to prevent
+% the text above and below the symbol to clash with the descent lines,
+% the spaces of |2\pslinewidth| are added to the right and to the left
+% of the symbol.
+%
+% Examples of usage of this command are shown in
+% Table~\ref{tab:pstPerson}.
+%
+%
+% \begin{table}
+%   \centering
+%   \begin{tabular}{l>{\raggedright\obeylines
+%       }p{0.3\linewidth}lp{0.3\linewidth}}
+%     \hline
+%     Option  & Values  & Default  & Description \\
+%     \hline
+%     |sex| & |male|, |female|, |unknown| & |unknown| & Sex of the
+%     person\\
+%     |condition| & |normal|, |obligatory|, |asymptomatic|, |affected|
+%     & |normal|  & The condition of the person\\
+%     |deceased| & |true|, |false|  & |false|  & Whether the person is
+%     deceased \\
+%     |proband| & |true|, |false| & |false| & Whether the person is a
+%     proband\\  
+%     |adopted| & |true|, |false| & |false| & Whether the individual
+%     is adopted \\
+%     |evaluated|  & |true|, |false| & |false| & Whether a documented
+%     evaluation took place\\
+%     \hline
+%   \end{tabular}
+%   \caption{Options Showing State of a Person}
+%   \label{tab:person_state_opts}
+% \end{table}
+%
+%
+%
+% \begin{table}
+%   \centering
+%   \begin{tabular}{l>{\raggedright\obeylines
+%       }llp{0.5\linewidth}}
+%     \hline
+%     Option  & Values  & Default  & Description \\
+%     \hline
+%     |insidetext| & String  & None & A text to be placed inside the
+%     symbol (number of individuals, pregnancy, etc.)\\ 
+%     |abovetext| & String  & None & A text to be placed above the
+%     symbol (name, number, etc.)\\ 
+%     |belowtext| & String  & None & A text to be placed below the
+%     symbol (name, number, etc.)\\ 
+%     |lefttext| & String  & None & A text to be placed to the left of the
+%     symbol (name, number, etc.)\\ 
+%     |righttext| & String  & None & A text to be placed to the right of the
+%     symbol (name, number, etc.)\\ 
+%     \hline
+%   \end{tabular}
+%   \caption{Options for Making Textual Comments}
+%   \label{tab:person_text_opts}
+% \end{table}
+%
+% \begin{table}
+%   \centering
+%   \begin{tabular}{l>{\raggedright\obeylines
+%       }p{0.25\linewidth}lp{0.35\linewidth}}
+%     \hline
+%     Option  & Values  & Default  & Description \\
+%     \hline
+%     |abovetextrp| & Combination of |r| or |l| and |t|, |b| or |B|  &
+%     |lB| & The reference point for the text above the symbol\\ 
+%     |belowtextrp| & Combination of |r| or |l| and |t|, |b| or |B|  &
+%     |lt| & The reference point for the text below the symbol\\ 
+%     |lefttextrp| & Combination of |r| or |l| and |t|, |b| or |B|  &
+%     |r| & The reference point for the text to the left the symbol\\ 
+%     |righttextrp| & Combination of |r| or |l| and |t|, |b| or |B|  &
+%     |l| & The reference point for the text to the right the symbol\\ 
+%     \hline
+%   \end{tabular}
+%   \caption{Options for Setting Text Reference Point}
+%   \label{tab:person_text_rp_opts}
+% \end{table}
+%
+%
+% \begin{table}
+%   \centering
+%     \def\arraystretch{1.5}
+%     \begin{tabular}{>{\tt\bslash pstPerson[}p{0.6\textwidth}<{]\{P\}}c}
+%       \hline
+%       \multicolumn{1}{l}{Command} & Result\rule{0.5cm}{0cm}\\
+%       \hline
+%       condition=asymptomatic &
+%       \pstPerson[condition=asymptomatic]{A} \\
+%       condition=affected, sex=male, evaluated &
+%       \pstPerson[condition=affected,sex=male, evaluated]{A} \\
+%       obligatory, female &
+%       \pstPerson[obligatory, female]{A} \\
+%       asymptomatic, male, proband &
+%       \pstPerson[asymptomatic, male, proband]{A} \\
+%       condition=obligatory, sex=male, deceased &
+%       \pstPerson[condition=obligatory, sex=male, deceased]{A} \\
+%       sex=female, adopted, condition=affected, abovetext=Jane &
+%       \pstPerson[sex=female, adopted, condition=affected,
+%       abovetext=Jane]{A} \\ 
+%       sex=male, condition=affected, belowtext=20 yr, deceased &
+%       \pstPerson[sex=male,  condition=affected, deceased,
+%       belowtext=20 yr]{A} \\[5ex]
+%       unknown, affected, righttext=\bslash
+%       parbox\{1cm\}\{\bslash footnotesize A \bslash\bslash 1 w\} &
+%       \pstPerson[unknown,  affected,
+%       righttext=\parbox{1cm}{\footnotesize A\\1 w}]{A} \\
+%       sex=male, insidetex=5 &
+%       \pstPerson[sex=male,  insidetext=5]{A}\\
+%       sex=female, condition=affected, insidetext=P &
+%       \pstPerson[sex=female, condition=affected, insidetext=P]{A}\\
+%       sex=female, affected, belowtext=\bslash
+%       parbox\{1cm\}\{\bslash centering SB\bslash\bslash 2wks\}, deceased &
+%       \pstPerson[sex=female,  affected, deceased,
+%       belowtext=\parbox{1cm}{\centering SB\\ 2wks}]{A} \\[7ex]
+%       \hline
+%     \end{tabular}
+%   \caption{Examples of Persons}
+%   \label{tab:pstPerson}
+% \end{table}
+%
+%
+%\subsubsection{Pregnancy Not Carried To Term}
+%\label{sec:abortion}
+% 
+% \DescribeMacro{\pstAbortion} 
+% The command |\pstAbortion| is used to draw a pregnancy not carried
+% to term: spontaneous abortions or terminated pregnancies.  The
+% format of it the same as for the command |\pstPerson| (see
+% Section~\ref{sec:person}): |\pstAbortion|\oarg{options}\marg{id}.
+% However, many of options listed in Table~\ref{tab:person_state_opts} are
+% silently ignored.  The only options meaningful for these nodes are
+% |sex| and |condition| (only |normal| and |affected| values are
+% possible).  All options listed in Table~\ref{tab:person_text_opts}
+% and \ref{tab:person_text_rp_opts} are valid and have the same
+% meaning as in Section~\ref{sec:person}. 
+%
+% \DescribeOption{sab} 
+% The command has also an option |sab| with the values |true| or
+% |false|.  If it is |true|, the pregnancy is a spontaneous abortion.
+% Otherwise it is terminated.  Examples of usage of this command are
+% shown in Table~\ref{tab:abortions}.
+%
+%
+% \begin{table}
+%   \centering
+%     \def\arraystretch{2}
+%     \begin{tabular}{>{\tt\bslash pstAbortion[}p{0.6\textwidth}<{]\{A\}}c}
+%       \hline
+%       \multicolumn{1}{l}{Command} & Symbol\\
+%       \hline
+%         belowtext=male   & \rule{0cm}{1cm} \pstAbortion[belowtext=male]{A}\\
+%         sab, righttext=1w &  \pstAbortion[sab, righttext=1w]{A}\\
+%         affected &  \pstAbortion[affected]{A}\\
+%       \hline
+%     \end{tabular}
+%   \caption{Examples of Abortion Symbols}
+%   \label{tab:abortions}
+% \end{table}
+%
+%\subsubsection{Childlessness and Infertility}
+%\label{sec:childness}
+% 
+% The symbols for childlessness and infertility are listed under
+% ``line definitions'' in~\cite{PedigreeNomenclature95}.  However, to
+% make the placing the symbols on the chart more flexible, we assign
+% nodes to them.  
+%
+% \DescribeMacro{\pstChildless} 
+% The command for drawing these symbols
+% has the same structure as the other node drawing commands:
+% |\pstChildless}|\oarg{options}\marg{id}.  
+% While all options listed in Table~\ref{tab:pstPerson} are valid, the
+% only meaningful one is |belowtext|.  Note that the option
+% |belowtextrp| is silently ignored:  the text is always centered
+% below the infertility symbol.  
+%
+% \DescribeOption{infertile}
+% There is one additional option
+% |infertile|, which can have values |true| of |false|.  If it is
+% |false|, the person (or relationship) is childless by choice (or by
+% an unknown reason).  The clause |=true| can be omitted.
+% 
+%
+% \begin{table}
+%   \centering
+%     \def\arraystretch{2}
+%     \begin{tabular}{>{\tt\bslash pstChildless[}p{0.6\textwidth}<{]\{C\}}c}
+%       \hline
+%       \multicolumn{1}{l}{Command} & Symbol\rule{0.5cm}{0cm}\\
+%       \hline
+%         belowtext=vasectomy   &
+%         \pstChildless[belowtext=vasectomy]{A}\\
+%         belowtext=anospermia, infertile   &
+%         \pstChildless[belowtext=anospermia, infertile]{A}\\
+%       \hline
+%     \end{tabular}
+%   \caption{Examples of Childlessness or Infertility Symbols}
+%   \label{tab:childness}
+% \end{table}
+%
+%
+%
+%\subsection{Connection Drawing Commands}
+%\label{sec:lines}
+%
+% The connections in pedigrees are based on |\ncline| and friends.
+% There are, however, some additional features for pedigree
+% connections.  
+%
+%
+%\subsubsection{Relationship}
+%\label{sec:relationship}
+%
+%\DescribeMacro{\pstRelationship}
+% Relationships are marriages or other unions.  The main command for
+% drawing relationships is 
+% |\pstRelationship|\oarg{options}\marg{nodeA}\marg{nodeB}.  It draws
+% a relationship line between \marg{nodeA} and \marg{nodeB}.  Normal
+% |PSTricks| options like |linestyle=dashed| can be used with the
+% expected effect.
+%
+% \DescribeOptions{broken,consanguinic,descentnode,brokenpos,descentnodepos,rellinecmd}
+% There are also several options specific for this command, listed in
+% Table~\ref{tab:relationship_opts}. The options |broken| and
+% |consanguinic| are self-explanatory.  The option |descentnode| is
+% used, if we want the descent lines to start at a node on the
+% relationship line.  The name of this descent node must satisfy the
+% usual criteria for the node (see Section~\ref{sec:intro}).  The
+% options |brokenpos| and |descentnodepos| determine, where on the
+% relationship line the corresponding objects are placed.  The option
+% |rellinecmd| allows to change the default straight line for the
+% relationship to something else, like |ncbar|, |ncangle|, etc.
+% Examples of this command use are shown in
+% Table~\ref{tab:pstRelationship}
+%
+%
+%
+% \begin{table}
+%   \centering
+%   \begin{tabular}{l>{\raggedright\obeylines
+%       }p{0.2\linewidth}lp{0.3\linewidth}}  
+%     \hline
+%     Option  & Values  & Default  & Description \\
+%     \hline
+%     |broken|  & |true|, |false|  & |false| & Whether the
+%     relationship no longer exists\\
+%     |consanguinic| & |true|, |false|  & |false|  & Whether the
+%     relationship is consanguinic\\
+%     |descentnode|  &  Node name  & None  & A node that will be used
+%     to draw descent lines for the relationship \\
+%     |brokenpos|  & A number between 0 and 1  & 0.3 & Where to put the
+%     symbol for broken relationship on the line (as a fraction of the
+%     line length)\\
+%     |descentnodepos|  & A number &  0.5 & Where
+%     to put the the descent node on the relationship line\\
+%     |rellinecmd|  & Name  & |ncline|  & Name of the line drawing
+%     command (without \textbackslash)\\
+%     \hline
+%   \end{tabular}
+%   \caption{Options for Relationship Lines}
+%   \label{tab:relationship_opts}
+% \end{table}
+%
+% \begin{table}
+%   \centering
+%     \def\arraystretch{1.5}
+%     \begin{tabular}{>{\tt\raggedright\obeylines }b{0.6\textwidth}c}
+%       \hline
+%       \multicolumn{1}{l}{Command} & Result\\
+%       \hline
+%         \bslash rput(0.5,0.5)\{\bslash pstPerson[male]\{A\}\}
+%         \bslash rput(2.5,0.5)\{\bslash pstPerson[female]\{B\}\}
+%         \bslash pstRelationship[broken]\{A\}\{B\}
+%       &
+%       \begin{pspicture}[shift=-1](3,1)
+%         \rput(0.5,0.5){\pstPerson[male]{A}}
+%         \rput(2.5,0.5){\pstPerson[female]{B}}
+%         \pstRelationship[broken]{A}{B}
+%       \end{pspicture}\\
+%         \bslash rput(0.5,0.5)\{\bslash pstPerson[male]\{A\}\}
+%         \bslash rput(2.5,0.5)\{\bslash pstPerson[female]\{B\}\}
+%         \bslash pstRelationship[consanguinic]\{A\}\{B\}
+%       &
+%       \begin{pspicture}[shift=-1](3,1)
+%         \rput(0.5,0.5){\pstPerson[male]{A}}
+%         \rput(2.5,0.5){\pstPerson[female]{B}}
+%         \pstRelationship[consanguinic]{A}{B}
+%       \end{pspicture}\\
+%         \bslash rput(0.5,1.5)\{\bslash pstPerson[male]\{A\}\}
+%         \bslash rput(2.5,1.5)\{\bslash pstPerson[female]\{B\}\}
+%         \bslash rput(1.5,0.5)\{\bslash pstPerson[female]\{C\}\}
+%         \bslash pstRelationship[descentnode=AB]\{A\}\{B\}
+%         \bslash ncline\{AB\}\{C\}
+%       &
+%       \begin{pspicture}[shift=-1](3,2)
+%         \rput(0.5,1.5){\pstPerson[male]{A}}
+%         \rput(2.5,1.5){\pstPerson[female]{B}}
+%         \rput(1.5,0.5){\pstPerson[female]{C}}
+%         \pstRelationship[descentnode=AB]{A}{B}
+%         \ncline{AB}{C}
+%       \end{pspicture}\\
+%         \bslash rput(0.5,1.5)\{\bslash
+%         pstPerson[male, belowtext=1-1]\{A\}\} 
+%         \bslash rput(2.5,1.5)\{\bslash
+%         pstPerson[affected, female, belowtext=1-2]\{B\}\} 
+%         \bslash rput(1.5,0.6)\{\bslash pstPerson[male,
+%         belowtext=2-1]\{C\}\} 
+%         \bslash pstRelationship[descentnode=AB, rellinecmd=ncangle,
+%         angleA=90, angleB=90, descentnodepos=1.5,
+%         broken, brokenpos=1.2]\{A\}\{B\}
+%         \bslash ncline\{AB\}\{C\}
+%       &
+%       \begin{pspicture}[shift=-1](3,3)
+%         \rput(0.5,1.5){\pstPerson[male,belowtext=1-1]{A}}
+%         \rput(2.5,1.5){\pstPerson[affected,female, belowtext=1-2]{B}}
+%         \rput(1.5,0.6){\pstPerson[male, belowtext=2-1]{C}}
+%         \pstRelationship[descentnode=AB, rellinecmd=ncangle,
+%         angleA=90, angleB=90, descentnodepos=1.5,
+%         broken, brokenpos=1.2]{A}{B}
+%         \ncline{AB}{C}
+%       \end{pspicture}\\
+%       \hline
+%     \end{tabular}
+%   \caption{Examples of Relationships}
+%   \label{tab:pstRelationship}
+% \end{table}
+%
+%
+%\subsubsection{Descent}
+%\label{sec:pstDescent}
+% 
+% 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
+% 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.
+%
+%
+%
+% \begin{table}
+%   \centering
+%     \def\arraystretch{1.5}
+%     \begin{tabular}{>{\tt\raggedright\obeylines }b{0.6\textwidth}c}
+%       \hline
+%       \multicolumn{1}{l}{Command} & Result\\
+%       \hline
+%         \bslash rput(1.5,2)\{\bslash pstPerson[female]\{A\}\}
+%         \bslash rput(0.5,0.5)\{\bslash pstPerson[female, adopted]\{B\}\}
+%         \bslash rput(1.5,0.5)\{\bslash pstPerson[male]\{C\}\}
+%         \bslash rput(2.5,0.5)\{\bslash pstAbortion[female]\{D\}\}
+%         \bslash pstDescent[linestyle=dashed]\{A\}\{B\}
+%         \bslash pstDescent\{A\}\{C\}
+%         \bslash pstDescent\{A\}\{D\}
+%       &
+%       \begin{pspicture}[shift=-1](3,2.5)
+%         \rput(1.5,2){\pstPerson[female]{A}}
+%         \rput(0.5,0.5){\pstPerson[female, adopted]{B}}
+%         \rput(1.5,0.5){\pstPerson[male]{C}}
+%         \rput(2.5,0.5){\pstAbortion[female]{D}}
+%         \pstDescent[linestyle=dashed]{A}{B}
+%         \pstDescent{A}{C}
+%         \pstDescent{A}{D}
+%       \end{pspicture}\\
+%         \bslash psset\{armB=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\}
+%         \bslash rput(0.5,0.5)\{\bslash pstPerson[male,asymptomatic, belowtext=John]\{C1\}\}
+%         \bslash rput(1.5,0.5)\{\bslash pstPerson[female, belowtext=Mary]\{C2\}\}
+%         \bslash rput(2.5,0.5)\{\bslash pstAbortion[sab, affected, belowtext=male]\{C3\}\}
+%         \bslash pstDescent\{AB\}\{C1\}
+%         \bslash pstDescent\{AB\}\{C2\}
+%         \bslash pstDescent\{AB\}\{C3\}
+%       &
+%       \begin{pspicture}[shift=-1](0,-0.2)(3.5,2.5)
+%         \psset{armB=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}
+%         \rput(0.5,0.5){\pstPerson[male,asymptomatic, belowtext=John]{C1}}
+%         \rput(1.5,0.5){\pstPerson[female, belowtext=Mary]{C2}}
+%         \rput(2.5,0.5){\pstAbortion[sab, affected, belowtext=male]{C3}}
+%         \pstDescent{AB}{C1}
+%         \pstDescent{AB}{C2}
+%         \pstDescent{AB}{C3}
+%       \end{pspicture}\\
+%         \bslash rput(0.5,1.5)\{\bslash pstPerson[male]\{A\}\}
+%         \bslash rput(2.5,1.5)\{\bslash pstPerson[female]\{B\}\}
+%         \bslash pstRelationship[descentnode=AB]\{A\}\{B\}
+%         \bslash rput(1.5,0.5)\{\bslash pstChildless[infertile, belowtext=anospermia]\{C\}\}
+%         \bslash pstDescent\{AB\}\{C\}
+%       &
+%       \begin{pspicture}[shift=-1](0,-0.2)(3,2)
+%         \rput(0.5,1.5){\pstPerson[male]{A}}
+%         \rput(2.5,1.5){\pstPerson[female]{B}}
+%         \pstRelationship[descentnode=AB]{A}{B}
+%         \rput(1.5,0.5){\pstChildless[belowtext=anospermia, infertile]{C}}
+%         \pstDescent{AB}{C}
+%       \end{pspicture}\\
+%       \hline
+%     \end{tabular}
+%   \caption{Examples of Descent Lines}
+%   \label{tab:pstDescent}
+% \end{table}
+% 
+%
+%\subsubsection{Twins}
+%\label{sec:pstTwins}
+%
+%
+%
+% \DescribeMacro{\pstTwins} A special care is needed when we talk
+% about twins.  First, the user must define a \emph{twin node}: the
+% node which is used as a nexus for twin lines.  Then the following
+% command draws all the necessary
+% lines: \\
+% |\pstTwins|\oarg{options}\marg{Parent}\marg{TwinNode}\marg{LeftTwin}\marg{RightTwin}.
+%
+% \DescribeOptions{monozygotic,qzygotic,mzlinepos,addtwins}
+% 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
+% horizontal line is determined by the option |mzlinepos|.  If it is
+% unknown, whether the twins are monozygotic or not, |qzygotic|
+% options draws a question mark, as recommended
+% by~\cite{PedigreeNomenclature95}.  Note that |mzlinepos| in this
+% situation helps to position the question mark properly.  The option
+% |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}.
+% 
+% \begin{table}
+%   \centering
+%   \begin{tabular}{l>{\raggedright\obeylines
+%       }p{0.2\linewidth}lp{0.3\linewidth}}  
+%     \hline
+%     Option  & Values  & Default  & Description \\
+%     \hline
+%     |monozygotic|  & |true|, |false|  & |false| & Whether the twins
+%     are monozygotic\\
+%     |qzygotic|  & |true|, |false|  & |false| & Whether the
+%     monozygoticity of twins is questionable\\
+%     |addtwin| & Twin node  & Node  & Additional twin node id if
+%     there are more than two twins (this
+%     option may be repeated)\\
+%     |mzlinepos|  & A number &  0.5 & Where to put the horizontal
+%     line for monozygotic twins (as a factor of the total line length)\\
+%     \hline
+%   \end{tabular}
+%   \caption{Options for Twins Lines}
+%   \label{tab:twin_opts}
+% \end{table}
+%
+%
+% \begin{table}
+%   \centering
+%     \def\arraystretch{1.5}
+%     \begin{tabular}{>{\tt\raggedright\obeylines }b{0.6\textwidth}c}
+%       \hline
+%       \multicolumn{1}{l}{Command} & Result\\
+%       \hline
+%         \bslash rput(1.5,2)\{\bslash pstPerson[female]\{A\}\}
+%         \bslash rput(1,1.1)\{\bslash pnode\{Twins\}\}
+%         \bslash rput(0.5,0.5)\{\bslash pstPerson[male]\{B\}\}
+%         \bslash rput(1.5,0.5)\{\bslash pstPerson[male]\{C\}\}
+%         \bslash rput(2.5,0.5)\{\bslash pstPerson[female]\{D\}\}
+%         \bslash pstTwins[monozygotic]\{A\}\{Twins\}\{B\}\{C\}
+%         \bslash pstDescent\{A\}\{D\}
+%       &
+%       \begin{pspicture}(3,2.5)
+%         \rput(1.5,2){\pstPerson[female]{A}}
+%         \rput(1,1.1){\pnode{Twins}}
+%         \rput(0.5,0.5){\pstPerson[male]{B}}
+%         \rput(1.5,0.5){\pstPerson[male]{C}}
+%         \rput(2.5,0.5){\pstPerson[female]{D}}
+%         \pstTwins[monozygotic]{A}{Twins}{B}{C}
+%         \pstDescent{A}{D}
+%       \end{pspicture}\\
+%         \bslash rput(0.5,2)\{\bslash pstPerson[male]\{A\}\}
+%         \bslash rput(2.5,2)\{\bslash pstPerson[female]\{B\}\}
+%         \bslash pstRelationship[descentnode=AB]\{A\}\{B\}
+%         \bslash rput(1.5,1.2)\{\bslash pnode\{Twins\}\}
+%         \bslash rput(1,0.5)\{\bslash pstPerson[male]\{C1\}\}
+%         \bslash rput(2,0.5)\{\bslash pstPerson[male]\{C2\}\}
+%         \bslash pstTwins[qzygotic, mzlinepos=0.8]\{AB\}\{Twins\}\{C1\}\{C2\}
+%       &
+%       \begin{pspicture}(3,2.5)
+%         \rput(0.5,2){\pstPerson[male]{A}}
+%         \rput(2.5,2){\pstPerson[female]{B}}
+%         \pstRelationship[descentnode=AB]{A}{B}
+%         \rput(1.5,1.2){\pnode{Twins}}
+%         \rput(1,0.5){\pstPerson[male]{C1}}
+%         \rput(2,0.5){\pstPerson[male]{C2}}
+%         \pstTwins[qzygotic, mzlinepos=0.8]{AB}{Twins}{C1}{C2}
+%       \end{pspicture}\\
+%         \bslash rput(1.5,2)\{\bslash pstPerson[male]\{A\}\}
+%         \bslash rput(1.5,1.5)\{\bslash pnode\{Twins\}\}
+%         \bslash rput(0.5,0.5)\{\bslash pstPerson[female]\{B\}\}
+%         \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\}
+%       &
+%       \begin{pspicture}(3,2.5)
+%         \rput(1.5,2){\pstPerson[male]{A}}
+%         \rput(1.5,1.5){\pnode{Twins}}
+%         \rput(0.5,0.5){\pstPerson[female]{B}}
+%         \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}
+%       \end{pspicture}\\
+%       \hline
+%     \end{tabular}
+%   \caption{Examples of Twins Lines}
+%   \label{tab:pstTwins}
+% \end{table}
+% 
+%
+%
+%\subsection{Making Trees}
+%\label{sec:trees}
+%
+% As discussed above (Section~\ref{sec:intro}), the medical pedigrees
+% are not necessary trees.  Even if they are, they are usually not
+% simple layered trees.  Nevertheless sometimes pedigree can be
+% represented as a layered tree.  For such cases we provide tree
+% drawing commands.  See the discussion in~\cite{pedigree-perl} for
+% more details.
+%
+% \DescribeMacro{\TpstPerson}
+% \DescribeMacro{\TpstAbortion}
+% \DescribeMacro{\TpstChildless}
+% The macros |\TpstPerson|, |\TpstAbortion| and |\TpstChildless| have
+% the same options and arguments as their ``normal'' counterparts.  You
+% probably need to use command like
+% \begin{verbatim}
+% \def\psedge{\pstDescent}
+% \psset{armB=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
+% \emph{not} a tree!  The corresponding code is shown on
+% Figure~\ref{fig:example_tree_code}. 
+%
+% \begin{figure}
+%   \centering
+%     \begin{pspicture}(0,1)(7,7)
+%     \rput(3,4){%
+%       \pstree{\TpstPerson[female, obligatory, belowtext=Ann]{Ann}}{%
+%         \def\psedge{\pstDescent}\psset{armB=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}
+%   \caption{Example of Using Tree-Making Commands}
+%   \label{fig:example_tree}
+% \end{figure}
+%
+% \begin{figure}
+%   \centering
+% \begin{verbatim}
+%  \begin{pspicture}(0,1)(7,7)
+%     \rput(3,4){%
+%       \pstree{\TpstPerson[female, obligatory, belowtext=Ann]{Ann}}{%
+%         \def\psedge{\pstDescent}\psset{armB=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{verbatim}
+%   \caption{Code Producing Figure~\ref{fig:example_tree}}
+%   \label{fig:example_tree_code}
+% \end{figure}
+%
+%
+%
+%\subsection{More Examples}
+%\label{sec:examples}
+%
+% A number of examples were listed above.  Here we show even more
+% examples of complex pedigrees.
+%
+% On Figure~\ref{fig:example_PROMM} we show an example of a pedigree
+% from~\cite{Harper01:MDBook}.  The corresponding code is listed on
+% Figure~\ref{fig:example_PROMM_code}. 
+%
+% \begin{figure}
+%   \centering
+%   \begin{pspicture}(6,6)
+%     \psset{belowtextrp=t, armB=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}
+%     \rput(1,3.5){\pstPerson[female, affected, belowtext=II:1]{II:1}}
+%     \pstDescent{I:1_2}{II:1}
+%     \rput(2,3.5){\pstPerson[male, belowtext=II:2]{II:2}}
+%     \pstRelationship[descentnode=II:1_2]{II:1}{II:2}
+%     \rput(3.5,3.5){\pstPerson[male, affected, belowtext=II:3]{II:3}}
+%     \pstDescent{I:1_2}{II:3}
+%     \rput(4.5,3.5){\pstPerson[female, belowtext=II:4]{II:4}}
+%     \pstRelationship[descentnode=II:3_4]{II:3}{II:4}
+%     \rput(5.5,3.5){\pstPerson[female, affected, deceased, proband,
+%       belowtext=II:5]{II:5}}
+%     \pstDescent{I:1_2}{II:5}
+%     \rput(0.5,1.5){\pstPerson[female, belowtext=III:1]{III:1}}
+%     \pstDescent{II:1_2}{III:1}
+%     \rput(1.5,1.5){\pstPerson[female, belowtext=III:2]{III:2}}
+%     \pstDescent{II:1_2}{III:2}
+%     \rput(2.5,1.5){\pstPerson[female, deceased,
+%       belowtext=\parbox{2cm}{\centering III:3\\4/52}]{III:3}} 
+%     \pstDescent{II:1_2}{III:3}
+%     \rput(3.5,1.5){\pstPerson[female, affected,
+%       belowtext=III:4]{III:4}} 
+%     \pstDescent{II:3_4}{III:4}
+%     \rput(4.5,1.5){\pstPerson[male, insidetext=?,
+%       belowtext=III:5]{III:5}} 
+%     \pstDescent{II:3_4}{III:5}
+%   \end{pspicture}
+%   \caption{Example of a Pedigree of a Family With PROMM
+%   From~\cite[p.~48]{Harper01:MDBook}} 
+%   \label{fig:example_PROMM}
+% \end{figure}
+%
+%
+% \begin{figure}
+%   \centering
+% \begin{verbatim}
+%   \begin{pspicture}(6,6)
+%     \psset{belowtextrp=t, armB=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}
+%     \rput(1,3.5){\pstPerson[female, affected, belowtext=II:1]{II:1}}
+%     \pstDescent{I:1_2}{II:1}
+%     \rput(2,3.5){\pstPerson[male, belowtext=II:2]{II:2}}
+%     \pstRelationship[descentnode=II:1_2]{II:1}{II:2}
+%     \rput(3.5,3.5){\pstPerson[male, affected, belowtext=II:3]{II:3}}
+%     \pstDescent{I:1_2}{II:3}
+%     \rput(4.5,3.5){\pstPerson[female, belowtext=II:4]{II:4}}
+%     \pstRelationship[descentnode=II:3_4]{II:3}{II:4}
+%     \rput(5.5,3.5){\pstPerson[female, affected, deceased, proband,
+%       belowtext=II:5]{II:5}}
+%     \pstDescent{I:1_2}{II:5}
+%     \rput(0.5,1.5){\pstPerson[female, belowtext=III:1]{III:1}}
+%     \pstDescent{II:1_2}{III:1}
+%     \rput(1.5,1.5){\pstPerson[female, belowtext=III:2]{III:2}}
+%     \pstDescent{II:1_2}{III:2}
+%     \rput(2.5,1.5){\pstPerson[female, deceased,
+%       belowtext=\parbox{2cm}{\centering III:3\\4/52}]{III:3}} 
+%     \pstDescent{II:1_2}{III:3}
+%     \rput(3.5,1.5){\pstPerson[female, affected,
+%       belowtext=III:4]{III:4}} 
+%     \pstDescent{II:3_4}{III:4}
+%     \rput(4.5,1.5){\pstPerson[male, insidetext=?,
+%       belowtext=III:5]{III:5}} 
+%     \pstDescent{II:3_4}{III:5}
+%   \end{pspicture}
+% \end{verbatim}
+%   \caption{Code Producing Figure~\ref{fig:example_PROMM}}
+%   \label{fig:example_PROMM_code}
+% \end{figure}
+%
+%
+% A very complex pedigree is used as an example
+% in~\cite{PedigreeNomenclature95}.  On
+% Figure~\ref{fig:complex_example} we reproduce this pedigree. The
+% corresponding code is shown on
+% Figures~\ref{fig:complex_example_codeI},
+% \ref{fig:complex_example_codeII} and~\ref{fig:complex_example_codeIII}.
+%
+% \begin{figure}
+%   \centering
+%   \rotatebox{90}{
+%       \begin{pspicture}(0.7,0)(21.3,9)
+%         \psset{armB=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(18.5,7.5){\pnode{Origin2}}
+%         \rput(6.5,7.5){\rnode{Quest1}{?}}
+%         \rput(1,6.5){\Huge I}
+%         \rput(1.5,6.5){\pstPerson[male, belowtext=1]{I1}}
+%         \rput(2.5,6.5){\pstPerson[female, obligatory, belowtext=2]{I2}}
+%         \rput(3.5,6.5){\pstPerson[male, belowtext=3]{I3}}
+%         \rput(4.5,6.5){\pstPerson[male, belowtext=4]{I4}}
+%         \rput(5.5,6.5){\pstPerson[male, belowtext=5]{I5}}
+%         \rput(6.5,6.5){\pstPerson[female, affected,
+%             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}
+%         \pstRelationship[descentnode=I5I6]{I5}{I6}
+%         \rput(1.5,5.5){\pstChildless{CI1}}
+%         \ncline{I1}{CI1}
+%         \rput(13.5,6.5){\pstPerson[male, deceased, belowtextrp=t,
+%              belowtext=\parbox{2cm}{\centering d. 72 y\\7}]{I7}}
+%         \rput(15.5,6.5){\pstPerson[female, deceased, belowtextrp=t,
+%              belowtext=\parbox{2cm}{\centering d. 70 y\\8}]{I8}}
+%         \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}
+%         \rput(1,4.5){\Huge II}
+%         \rput(2.5,4.5){\pstPerson[male, affected, belowtext=1,
+%              abovetext=Proto, abovetextrp=rB]{II1}} 
+%         \pstDescent{I2}{II1}
+%         \rput(4.5,4.5){\pstPerson[female, asymptomatic,
+%             belowtext=\parbox{3cm}{32 y\\
+%             $E_3-$\\$E_4+$(45n/18n)\\2}, abovetext={Sterrie},
+%             abovetextrp=rB, evaluated]{II2}}  
+%         \pstDescent{I5I6}{II2}
+%         \pstRelationship[consanguinic, descentnode=II1II2]{II1}{II2}
+%         \rput(5.5,5.2){\rnode{Quest2}{?}}
+%         \rput(5.5,4.5){\pstPerson[female, insidetext=D,
+%             belowtext=3]{II3}}
+%         \ncline{Quest2}{II3}
+%         \rput(6.5,5.2){\rnode{Quest3}{?}}
+%         \rput(6.5,4.5){\pstPerson[male, insidetext=D,
+%             belowtext=4]{II4}}
+%         \ncline{Quest3}{II4}
+%         \rput(7.5,4.5){\pstPerson[female, belowtext=5]{II5}}
+%         \rput(8.5,4.5){\pstPerson[male, abovetext=Gary, abovetextrp=rB,
+%            belowtext=\parbox{2cm}{36 y\\$E_3-$\\6},
+%            evaluated]{II6}} 
+%         \rput(9.5,4.5){\pstPerson[male, abovetext={Gene},
+%            belowtext=\parbox{2cm}{36 y\\$E_3-$\\7},
+%            evaluated]{II7}} 
+%         \rput(9,5.2){\pnode{Twins3}}
+%         \pstTwins[monozygotic]{I5I6}{Twins3}{II6}{II7}
+%         \pstRelationship{II5}{II6}
+%         \rput(7.5,5.7){O'Type}
+%         \rput(11.5,4.5){\pstPerson[female, proband,
+%             belowtext=\parbox{1cm}{35 y\\8}, abovetext=Feene]{II8}}
+%         \pstRelationship[descentnode=II7II8]{II7}{II8}
+%         \rput(13.5,4.5){\pstPerson[male, belowtext=9]{II9}}
+%         \pstRelationship[broken, descentnode=II8II9,
+%              descentnodepos=0.85]{II8}{II9} 
+%         \rput(16,4.5){\pstPerson[abovetext=Stacey, female,
+%             abovetextrp=rB, 
+%             belowtext=\parbox{1cm}{33y\\ 10}]{II10}}
+%         \def\affectedstyle{fillstyle=crosshatch}
+%         \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}}
+%         \ncline{II11}{C2}
+%         \rput(18,4.5){\pstPerson[male, obligatory,
+%             abovetext=Donald, 
+%             belowtext=\parbox{3cm}{29 y\\ $E_2+$ \\
+%             12}]{II12}}
+%         \pstDescent{I7I8}{II8}
+%         \pstDescent{I7I8}{II10}
+%         \pstDescent{I7I8}{II11}
+%         \pstDescent{I7I8}{II12}
+%         \rput(19,4.5){\pstPerson[female, belowtext=13]{II13}}
+%         \pstRelationship[descentnode=II12II13]{II12}{II13}
+%         \rput(20,4.5){\pstPerson[female, insidetext=S, 
+%             belowtext=14]{II14}}
+%         \rput(21,4.5){\pstPerson[insidetext=n]{II15}}
+%         \pstDescent{I9}{II15}
+%         \rput(1,2.5){\Huge III}
+%         \rput(3,2.5){\pstPerson[male, adopted, belowtext=1]{III1}}
+%         \rput(4,2.5){\pstPerson[insidetext=P, belowtext=2]{III2}}
+%         \pstDescent[linestyle=dashed]{II1II2}{III1}
+%         \pstDescent{II1II2}{III2}
+%         \ncline{II3}{III2}
+%         \rput(7.5,2.5){\pstPerson[insidetext=P,
+%              belowtext=\parbox{2cm}{6 wk\\3}]{III3}}
+%         \pstDescent{II5}{III3}
+%         \ncline{II4}{III3}
+%         \def\affectedstyle{fillstyle=vlines}
+%         \rput(10,2.5){\pstAbortion[affected, 
+%             belowtext=\parbox{2cm}{\centering 
+%               female\\18wk\\$E_1+$(tri 21)\\4},
+%               belowtextrp=t]{III4}}
+%           \rput(11,2.5){\pstPerson[insidetext=P,
+%               belowtext=\parbox{1cm}{16wk\\5}]{III5}}
+%         \pstDescent{II7II8}{III4}
+%         \pstDescent{II7II8}{III5}
+%         \rput(12,2.5){\pstAbortion[belowtext=6]{III6}}
+%         \rput(13,2.5){\pstAbortion[sab, belowtextrp=t,
+%               belowtext=\parbox{2cm}{\centering female\\19 wk\\
+%               7}]{III7}}
+%         \rput(14,2.5){\pstPerson[adopted, male,
+%               belowtext=\parbox{1cm}{10 y\\ 8}]{III8}}
+%         \pstDescent{II8II9}{III6}
+%         \pstDescent{II8II9}{III7}
+%         \pstDescent{II8II9}{III8}
+%         \ncline[linestyle=dashed]{II10}{III8}
+%         \rput(15,2.5){\pstAbortion[sab, belowtext=9]{III9}}
+%         \def\affectedstyle{fillstyle=hlines}
+%         \rput(16,2.5){\pstAbortion[sab, belowtextrp=t, affected, 
+%             belowtext=\parbox{2cm}{\centering male\\ 20 wk\\ $E_1+$
+%             (tri 18)\\ 10}]{III10}}
+%         \rput(17,2.5){\pstPerson[deceased, female,
+%             belowtext=\parbox{1cm}{\centering SB\\32 wk\\
+%             11}]{III11}}
+%         \pstDescent{II10}{III9}
+%         \pstDescent{II10}{III10}
+%         \pstDescent{II10}{III11}
+%         \rput(20,2.5){\pstPerson[insidetext=P, 
+%             belowtext=12]{III12}}
+%         \pstDescent{II14}{III12}
+%         \ncline{II12II13}{III12}
+%       \end{pspicture}
+%   }
+%   \caption{A Complex Pedigree From~\cite{PedigreeNomenclature95}}
+%   \label{fig:complex_example}
+% \end{figure}
+%
+%
+% \begin{figure}
+%   \centering
+% \begin{verbatim}
+%         \psset{armB=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(18.5,7.5){\pnode{Origin2}}
+%         \rput(6.5,7.5){\rnode{Quest1}{?}}
+%         \rput(1,6.5){\Huge I}
+%         \rput(1.5,6.5){\pstPerson[male, belowtext=1]{I1}}
+%         \rput(2.5,6.5){\pstPerson[female, obligatory, belowtext=2]{I2}}
+%         \rput(3.5,6.5){\pstPerson[male, belowtext=3]{I3}}
+%         \rput(4.5,6.5){\pstPerson[male, belowtext=4]{I4}}
+%         \rput(5.5,6.5){\pstPerson[male, belowtext=5]{I5}}
+%         \rput(6.5,6.5){\pstPerson[female, affected,
+%             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}
+%         \pstRelationship[descentnode=I5I6]{I5}{I6}
+%         \rput(1.5,5.5){\pstChildless{CI1}}
+%         \ncline{I1}{CI1}
+%         \rput(13.5,6.5){\pstPerson[male, deceased, belowtextrp=t,
+%              belowtext=\parbox{2cm}{\centering d. 72 y\\7}]{I7}}
+%         \rput(15.5,6.5){\pstPerson[female, deceased, belowtextrp=t,
+%              belowtext=\parbox{2cm}{\centering d. 70 y\\8}]{I8}}
+%         \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}
+% \end{verbatim}
+%   \caption{Code for Figure~\ref{fig:complex_example}:  Generation I}
+%   \label{fig:complex_example_codeI}
+% \end{figure}
+%
+% \begin{figure}
+%   \centering
+% \begin{verbatim}
+%         \rput(1,4.5){\Huge II}
+%         \rput(2.5,4.5){\pstPerson[male, affected, belowtext=1,
+%              abovetext=Proto, abovetextrp=rB]{II1}} 
+%         \pstDescent{I2}{II1}
+%         \rput(4.5,4.5){\pstPerson[female, asymptomatic,
+%             belowtext=\parbox{3cm}{32 y\\
+%             $E_3-$\\$E_4+$(45n/18n)\\2}, abovetext={Sterrie},
+%             abovetextrp=rB, evaluated]{II2}}  
+%         \pstDescent{I5I6}{II2}
+%         \pstRelationship[consanguinic, descentnode=II1II2]{II1}{II2}
+%         \rput(5.5,5.2){\rnode{Quest2}{?}}
+%         \rput(5.5,4.5){\pstPerson[female, insidetext=D,
+%             belowtext=3]{II3}}
+%         \ncline{Quest2}{II3}
+%         \rput(6.5,5.2){\rnode{Quest3}{?}}
+%         \rput(6.5,4.5){\pstPerson[male, insidetext=D,
+%             belowtext=4]{II4}}
+%         \ncline{Quest3}{II4}
+%         \rput(7.5,4.5){\pstPerson[female, belowtext=5]{II5}}
+%         \rput(8.5,4.5){\pstPerson[male, abovetext=Gary, abovetextrp=rB,
+%            belowtext=\parbox{2cm}{36 y\\$E_3-$\\6},
+%            evaluated]{II6}} 
+%         \rput(9.5,4.5){\pstPerson[male, abovetext={Gene},
+%            belowtext=\parbox{2cm}{36 y\\$E_3-$\\7},
+%            evaluated]{II7}} 
+%         \rput(9,5.2){\pnode{Twins3}}
+%         \pstTwins[monozygotic]{I5I6}{Twins3}{II6}{II7}
+%         \pstRelationship{II5}{II6}
+%         \rput(7.5,5.7){O'Type}
+%         \rput(11.5,4.5){\pstPerson[female, proband,
+%             belowtext=\parbox{1cm}{35 y\\8}, abovetext=Feene]{II8}}
+%         \pstRelationship[descentnode=II7II8]{II7}{II8}
+%         \rput(13.5,4.5){\pstPerson[male, belowtext=9]{II9}}
+%         \pstRelationship[broken, descentnode=II8II9,
+%              descentnodepos=0.85]{II8}{II9} 
+%         \rput(16,4.5){\pstPerson[abovetext=Stacey, female,
+%             abovetextrp=rB, 
+%             belowtext=\parbox{1cm}{33y\\ 10}]{II10}}
+%         \def\affectedstyle{fillstyle=crosshatch}
+%         \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}}
+%         \ncline{II11}{C2}
+%         \rput(18,4.5){\pstPerson[male, obligatory,
+%             abovetext=Donald, 
+%             belowtext=\parbox{3cm}{29 y\\ $E_2+$ \\
+%             12}]{II12}}
+%         \pstDescent{I7I8}{II8}
+%         \pstDescent{I7I8}{II10}
+%         \pstDescent{I7I8}{II11}
+%         \pstDescent{I7I8}{II12}
+%         \rput(19,4.5){\pstPerson[female, belowtext=13]{II13}}
+%         \pstRelationship[descentnode=II12II13]{II12}{II13}
+%         \rput(20,4.5){\pstPerson[female, insidetext=S, 
+%             belowtext=14]{II14}}
+%         \rput(21,4.5){\pstPerson[insidetext=n]{II15}}
+%         \pstDescent{I9}{II15}
+% \end{verbatim}
+%   \caption{Code for Figure~\ref{fig:complex_example}:  Generation II}
+%   \label{fig:complex_example_codeII}
+% \end{figure}
+%
+% \begin{figure}
+%   \centering
+% \begin{verbatim}
+%         \rput(1,2.5){\Huge III}
+%         \rput(3,2.5){\pstPerson[male, adopted, belowtext=1]{III1}}
+%         \rput(4,2.5){\pstPerson[insidetext=P, belowtext=2]{III2}}
+%         \pstDescent[linestyle=dashed]{II1II2}{III1}
+%         \pstDescent{II1II2}{III2}
+%         \ncline{II3}{III2}
+%         \rput(7.5,2.5){\pstPerson[insidetext=P,
+%              belowtext=\parbox{2cm}{6 wk\\3}]{III3}}
+%         \pstDescent{II5}{III3}
+%         \ncline{II4}{III3}
+%         \def\affectedstyle{fillstyle=vlines}
+%         \rput(10,2.5){\pstAbortion[affected, 
+%             belowtext=\parbox{2cm}{\centering 
+%               female\\18wk\\$E_1+$(tri 21)\\4},
+%               belowtextrp=t]{III4}}
+%           \rput(11,2.5){\pstPerson[insidetext=P,
+%               belowtext=\parbox{1cm}{16wk\\5}]{III5}}
+%         \pstDescent{II7II8}{III4}
+%         \pstDescent{II7II8}{III5}
+%         \rput(12,2.5){\pstAbortion[belowtext=6]{III6}}
+%         \rput(13,2.5){\pstAbortion[sab, belowtextrp=t,
+%               belowtext=\parbox{2cm}{\centering female\\19 wk\\
+%               7}]{III7}}
+%         \rput(14,2.5){\pstPerson[adopted, male,
+%               belowtext=\parbox{1cm}{10 y\\ 8}]{III8}}
+%         \pstDescent{II8II9}{III6}
+%         \pstDescent{II8II9}{III7}
+%         \pstDescent{II8II9}{III8}
+%         \ncline[linestyle=dashed]{II10}{III8}
+%         \rput(15,2.5){\pstAbortion[sab, belowtext=9]{III9}}
+%         \def\affectedstyle{fillstyle=hlines}
+%         \rput(16,2.5){\pstAbortion[sab, belowtextrp=t, affected, 
+%             belowtext=\parbox{2cm}{\centering male\\ 20 wk\\ $E_1+$
+%             (tri 18)\\ 10}]{III10}}
+%         \rput(17,2.5){\pstPerson[deceased, female,
+%             belowtext=\parbox{1cm}{\centering SB\\32 wk\\
+%             11}]{III11}}
+%         \pstDescent{II10}{III9}
+%         \pstDescent{II10}{III10}
+%         \pstDescent{II10}{III11}
+%         \rput(20,2.5){\pstPerson[insidetext=P, 
+%             belowtext=12]{III12}}
+%         \pstDescent{II14}{III12}
+%         \ncline{II12II13}{III12}
+% \end{verbatim}
+%   \caption{Code for Figure~\ref{fig:complex_example}:  Generation III}
+%   \label{fig:complex_example_codeIII}
+% \end{figure}
+%\clearpage
+%
+%
+%\StopEventually{}
+%
+%\section{Implementation}
+%\label{sec:implementation}
+%
+%
+%
+%\subsection{Identification and Setting Up}
+%\label{sec:identification}
+%
+%
+%Traditionally |PSTricks| works in two regimes:  the \LaTeX one and
+%the plain one.  Probably it is a good idea to keep this
+%tradition. Therefore we will use a \TeX{} file \path{pst-pdgr.tex}
+%and a \LaTeX file \path{pst-pdgr.sty}.  They have different means of
+%preserving from loading twice and identification.  
+%
+% \begin{macro}{\PSTPedigreeLoaded}
+% A \TeX{} guard |\PSTPedigreeLoaded| prevents the double loading
+% of the file:
+%    \begin{macrocode}
+%<*tex>
+\csname PSTPedigreeLoaded\endcsname
+\let\PSTPedigreeLoaded\endinput
+%</tex>
+%    \end{macrocode}
+% \end{macro}
+%
+%Now we can start real identification.  Note the difference between
+%the ways a \LaTeX{} style, a \LaTeX{} configuration file and a \TeX{}
+%file announce itself
+%    \begin{macrocode}
+%<latex>\NeedsTeXFormat{LaTeX2e}
+%<latex>\ProvidesPackage{pst-pdgr}
+%<cfg>\ProvidesFile{pst-pdgr.cfg}
+%<tex>\message{
+[2006/04/18 v0.2a Medical Pedigree with PSTricks]
+%<tex>}
+%    \end{macrocode}
+%
+% The \LaTeX{} style is in fact just a wrapper: it calls the
+% configuration file, and then the \TeX file, which does the real
+% work:
+%    \begin{macrocode}
+%<*latex>
+\InputIfFileExists{pst-pdgr.cfg}{%
+  \typeout{Loading configuration file pst-pdgr.cfg}}{%
+  \typeout{Configuration file pst-pdgr.cfg is not found}}
+\input{pst-pdgr.tex}
+%</latex>
+%    \end{macrocode}
+%
+% Now we are dealing (almost) exclusively with \TeX.
+%    \begin{macrocode}
+%<*tex>
+%    \end{macrocode}
+%
+% Check the packages we use  are loaded:
+%    \begin{macrocode}
+\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
+\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi
+\ifx\PSTreeLoaded\endinput\else\input pst-tree.tex\fi
+\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey.tex\fi
+%    \end{macrocode}
+%
+% We set up that |@| symbol:
+%    \begin{macrocode}
+\catcode`\@=11\relax
+%    \end{macrocode}
+% and set up keys for our package
+%    \begin{macrocode}
+\pst@addfams{pst-pdgr}
+%    \end{macrocode}
+%
+%\subsection{Global Parameters}
+%\label{sec:impl_globals}
+%
+% These macros define the way affected individuals are drawn
+% \begin{macro}{\affectedbgcolor}
+% The background color:
+%    \begin{macrocode}
+\def\affectedbgcolor{gray}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\affectedfgcolor}
+% The foreground color for the text:
+%    \begin{macrocode}
+\def\affectedfgcolor{white}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\affectedstyle}
+%   And the style:
+%    \begin{macrocode}
+\def\affectedstyle{fillstyle=solid, fillcolor=\affectedbgcolor}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@intxtcolor}
+% Normally the color of the inside text for normal persons is the
+% current color:
+%    \begin{macrocode}
+\def\pst@pdgr@instxtcolor{\relax}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+%
+%\subsection{Options}
+%\label{sec:impl_opts}
+%
+% Here we define the option for the commands and their action.
+%
+%
+%\subsubsection{Choice Options}
+%\label{sec:impl_choice}
+%
+% This groups of options sets a key from a given set of choices.
+% \begin{macro}{\pst@pdgr@sex}
+%   First, the sex of the person.  The numbers 0, 1 and 2 correspond
+%   to the sequence in the alternatives list
+%    \begin{macrocode}
+\def\pst@pdgr@sex{0}
+\define@choicekey[psset]{pst-pdgr}{sex}[\pst@pdgr@temp \pst@pdgr@sex]{%
+  unknown,male,female}[unknown]{}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@condition}
+%   Next, the condition of the person.  The numbers again correspond
+%   to the sequence in the alternatives list
+%    \begin{macrocode}
+\def\pst@pdgr@condition{0}
+\define@choicekey[psset]{pst-pdgr}{%
+  condition}[\pst@pdgr@temp \pst@pdgr@condition]{%
+  normal,obligatory,asymptomatic,affected}[normal]{}
+%    \end{macrocode}
+% \end{macro}
+%
+% A bunch of shortcuts
+%    \begin{macrocode}
+\define@key[psset]{pst-pdgr}{unknown}[]{\psset{sex=unknown}}
+\define@key[psset]{pst-pdgr}{male}[]{\psset{sex=male}}
+\define@key[psset]{pst-pdgr}{female}[]{\psset{sex=female}}
+\define@key[psset]{pst-pdgr}{normal}[]{\psset{condition=normal}}
+\define@key[psset]{pst-pdgr}{obligatory}[]{\psset{condition=obligatory}}
+\define@key[psset]{pst-pdgr}{asymptomatic}[]{\psset{condition=asymptomatic}}
+\define@key[psset]{pst-pdgr}{affected}[]{\psset{condition=affected}}
+%    \end{macrocode}
+%
+%
+%
+%\subsubsection{Boolean Options}
+%\label{sec:impl_bool}
+%
+% True or false options.  
+%
+%
+% \begin{macro}{\pst@pdgr@defineboolkey}
+%   We use use our own version of definition of boolean keys, rather
+%   than the one provided by |xkeyval|.
+%    \begin{macrocode}
+\def\pst@pdgr@defineboolkey#1{%
+\expandafter\newif\csname ifpst@pdgr@#1\endcsname%
+\csname pst@pdgr@#1false\endcsname%
+\define@key[psset]{pst-pdgr}{#1}[true]{%
+  \@nameuse{pst@pdgr@#1##1}}}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\ifpst@pdgr@deceased}
+% Whether the individual is deceased:
+%    \begin{macrocode}
+\pst@pdgr@defineboolkey{deceased}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ifpst@pdgr@proband}
+% Whether the individual is a proband:
+%    \begin{macrocode}
+\pst@pdgr@defineboolkey{proband}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ifpst@pdgr@adopted}
+% Whether the individual is adopted:
+%    \begin{macrocode}
+\pst@pdgr@defineboolkey{adopted}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ifpst@pdgr@evaluated}
+% Whether the individual is evaluated:
+%    \begin{macrocode}
+\pst@pdgr@defineboolkey{evaluated}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ifpst@pdgr@sab}
+% Whether the abortion is SAB:
+%    \begin{macrocode}
+\pst@pdgr@defineboolkey{sab}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ifpst@pdgr@infertile}
+% Whether the individual or relationship is infertile:
+%    \begin{macrocode}
+\pst@pdgr@defineboolkey{infertile}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ifpst@pdgr@broken}
+% Whether the relationship is broken:
+%    \begin{macrocode}
+\pst@pdgr@defineboolkey{broken}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ifpst@pdgr@consanguinic}
+% Whether the relationship is consanguinic:
+%    \begin{macrocode}
+\pst@pdgr@defineboolkey{consanguinic}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ifpst@pdgr@monozygotic}
+% Whether the twins are monozygotic:
+%    \begin{macrocode}
+\pst@pdgr@defineboolkey{monozygotic}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ifpst@pdgr@qzygotic}
+% Whether the are questionably monozygotic:
+%    \begin{macrocode}
+\pst@pdgr@defineboolkey{qzygotic}
+%    \end{macrocode}
+% \end{macro}
+% 
+%
+%
+%
+%\subsubsection{String Options}
+%\label{sec:impl_string}
+%
+% Options setting up strings.
+%
+%  
+% \begin{macro}{\pst@pdgr@insidetext}
+% Text inside the symbol
+%    \begin{macrocode}
+\def\pst@pdgr@insidetext{}%
+\define@key[psset]{pst-pdgr}{insidetext}{%
+  \def\pst@pdgr@insidetext{#1}}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@belowtext}
+% Text below the symbol
+%    \begin{macrocode}
+\def\pst@pdgr@belowtext{}%
+\define@key[psset]{pst-pdgr}{belowtext}{%
+  \def\pst@pdgr@belowtext{#1}}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@abovetext}
+% Text above the symbol
+%    \begin{macrocode}
+\def\pst@pdgr@abovetext{}%
+\define@key[psset]{pst-pdgr}{abovetext}{%
+  \def\pst@pdgr@abovetext{#1}}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@lefttext}
+% Text to the left of the symbol
+%    \begin{macrocode}
+\def\pst@pdgr@lefttext{}%
+\define@key[psset]{pst-pdgr}{lefttext}{%
+  \def\pst@pdgr@lefttext{#1}}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@righttext}
+% Text to the right of the symbol
+%    \begin{macrocode}
+\def\pst@pdgr@righttext{}%
+\define@key[psset]{pst-pdgr}{righttext}{%
+  \def\pst@pdgr@righttext{#1}}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@descentnode}
+% Name of the descent node
+%    \begin{macrocode}
+\def\pst@pdgr@descentnode{}%
+\define@key[psset]{pst-pdgr}{descentnode}{%
+  \def\pst@pdgr@descentnode{#1}}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@rellinecmd}
+% Command to draw relationship lines:
+%    \begin{macrocode}
+\def\pst@pdgr@rellinecmd{\ncline}%
+\define@key[psset]{pst-pdgr}{rellinecmd}{%
+  \def\pst@pdgr@rellinecmd{\@nameuse{#1}}}%
+%    \end{macrocode}
+% \end{macro}
+%
+% A number of text positioning commands.
+% \begin{macro}{\pst@pdgr@abovetextrp}
+% The command to set the reference position for the text above the
+% symbol.
+%    \begin{macrocode}
+\def\pst@pdgr@abovetextrp{lB}%
+\define@key[psset]{pst-pdgr}{abovetextrp}{%
+  \def\pst@pdgr@abovetextrp{#1}}%
+%    \end{macrocode}
+%   \changes{v0.2}{2006/04/18}{Added the command}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@belowtextrp}
+% The command to set the reference position for the text below the
+% symbol.
+%    \begin{macrocode}
+\def\pst@pdgr@belowtextrp{lt}%
+\define@key[psset]{pst-pdgr}{belowtextrp}{%
+  \def\pst@pdgr@belowtextrp{#1}}%
+%    \end{macrocode}
+%   \changes{v0.2}{2006/04/18}{Added the command}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@lefttextrp}
+% The command to set the reference position for the text to the left
+% of the symbol.
+%    \begin{macrocode}
+\def\pst@pdgr@lefttextrp{r}%
+\define@key[psset]{pst-pdgr}{lefttextrp}{%
+  \def\pst@pdgr@lefttextrp{#1}}%
+%    \end{macrocode}
+%   \changes{v0.2}{2006/04/18}{Added the command}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@righttextrp}
+% The command to set the reference position for the text to the right
+% of the symbol.
+%    \begin{macrocode}
+\def\pst@pdgr@righttextrp{l}%
+\define@key[psset]{pst-pdgr}{righttextrp}{%
+  \def\pst@pdgr@righttextrp{#1}}%
+%    \end{macrocode}
+%   \changes{v0.2}{2006/04/18}{Added the command}
+% \end{macro}
+%
+% The option |addtwin| for |\pstTwin| command is special.  Since it
+% can be repeated, we want it to be executed immediately.  We store
+% the name of the descentnode in |\pst@pdgr@tempnode|
+%    \begin{macrocode}
+\define@key[psset]{pst-pdgr}{addtwin}{\ncline{\pst@pdgr@tempnode}{#1}}%
+\define@key[psset]{pst-pdgr}{descentnode}{%
+  \def\pst@pdgr@descentnode{#1}}%
+%    \end{macrocode}
+%
+%
+%
+%\subsubsection{Numerical Options}
+%\label{sec:impl_opts_num}
+%
+% The options to set up numerical values.
+%
+% \begin{macro}{\pst@pdgr@descentnodepos}
+% The position of the descent node on the relationship line
+%    \begin{macrocode}
+\def\pst@pdgr@descentnodepos{0.5}
+\define@key[psset]{pst-pdgr}{descentnodepos}{%
+  \pst@checknum{#1}\pst@pdgr@descentnodepos%
+  \ifdim\pst@pdgr@descentnodepos \p@<\z@
+  \def\pst@pdgr@descentnodepos{0.5}%
+  \@pstrickserr{Bad `descentnodepos' value: `#1'. Must be >0}\@ehpa%
+  \fi}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@brokenpos}
+% The position of the broken line symbol on the relationship line
+%    \begin{macrocode}
+\def\pst@pdgr@brokenpos{0.3}
+\define@key[psset]{pst-pdgr}{brokenpos}{%
+  \pst@checknum{#1}\pst@pdgr@brokenpos%
+  \ifdim\pst@pdgr@brokenpos \p@<\z@
+  \def\pst@pdgr@brokenpos{0.3}%
+  \@pstrickserr{Bad `brokenpos' value: `#1'. Must be >0}\@ehpa%
+  \fi}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pst@pdgr@mzlinepos}
+% The position of the monozygotic line or question mark on the twins
+% line: 
+%    \begin{macrocode}
+\def\pst@pdgr@mzlinepos{0.5}
+\define@key[psset]{pst-pdgr}{mzlinepos}{%
+  \pst@checknum{#1}\pst@pdgr@mzlinepos%
+  \ifdim\pst@pdgr@mzlinepos \p@<\z@%
+    \def\pst@pdgr@mzlinepos{0.5}%
+    \@pstrickserr{Bad `mzlinepos' value: `#1'. Must be >0}\@ehpa%
+  \fi%
+  \ifdim\pst@pdgr@mzlinepos \p@>\p@\relax%
+    \def\pst@pdgr@mzlinepos{0.5}%
+    \@pstrickserr{Bad `mzlinepos' value: `#1'. Must be <1}\@ehpa%
+  \fi}%
+%    \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+%\subsection{Drawing A Person}
+%\label{sec:impl_pstPerson}
+%
+% And now the main macro.
+%
+% \begin{macro}{\pstPerson}
+%   First, the standard processing of optional parameter
+%    \begin{macrocode}
+\def\pstPerson{\@ifnextchar[{\pstPerson@i}{\pstPerson@i[]}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pstPerson@i}
+%   And now we are ready for a real work.  Actually we create a
+%   |rnode| and put everything inside.  We add a |\pspicture| for the
+%   node to have non-zero size.
+%    \begin{macrocode}
+\def\pstPerson@i[#1]#2{%
+  \rnode{#2}{%
+   \psset{arrows=-, linestyle=solid}%
+   \psset{#1}%
+    \pspicture[shift=-0.25](-0.25,-0.25)(0.25,0.25)%
+%    \end{macrocode}
+% Condition processing. 
+%    \begin{macrocode}
+     \ifcase\pst@pdgr@condition\relax  % Nothing to do if normal
+     \or  % obligatory
+       \psdot(0,0)%
+     \or % asymptomatic
+       \qline(0,0.25)(0,-0.25)%
+     \or % affected
+        \expandafter\psset\expandafter{\affectedstyle}%
+        \def\pst@pdgr@instxtcolor{\csname\affectedfgcolor\endcsname}%
+     \fi%
+%    \end{macrocode}
+% The actual drawing
+%    \begin{macrocode}
+     \ifcase\pst@pdgr@sex\relax  % First, unknown sex.  A diamond 
+         \pspolygon(0,0.25)(0.25,0)(0,-0.25)(-0.25,0)%
+      \or  % Male.  A square with side 0.5
+         \pspolygon(-0.25,-0.25)(-0.25,0.25)(0.25,0.25)(0.25,-0.25)%
+      \or  % Female.  A circle with radius 0.25
+          \pscircle{0.25}%
+      \fi%
+%    \end{macrocode}
+% Necessary for next
+%    \begin{macrocode}
+      \psset{fillstyle=none}%
+%    \end{macrocode}
+%
+% Deceased or not?
+%    \begin{macrocode}
+     \ifpst@pdgr@deceased%
+        \qline(-0.33,-0.33)(0.33,0.33)%
+      \fi%
+%    \end{macrocode}
+% Proband or not?
+%    \begin{macrocode}
+     \ifpst@pdgr@proband%
+        \psline[arrows=->](-0.55,-0.55)(-0.29,-0.29)%
+     \fi%
+%    \end{macrocode}
+% Adopted or not?
+%    \begin{macrocode}
+     \ifpst@pdgr@adopted%
+       \psline(-0.25,-0.35)(-0.35,-0.35)(-0.35,0.35)(-0.25,0.35)%
+       \psline(0.25,-0.35)(0.35,-0.35)(0.35,0.35)(0.25,0.35)%
+     \fi%
+%    \end{macrocode}
+% \changes{v0.2}{2006/04/18}{Slightly increased brackets for the ``adopted''
+%   symbol} 
+% Evaluated or not?
+%    \begin{macrocode}
+     \ifpst@pdgr@evaluated%
+        \rput(0.4,-0.4){$\ast$}%
+      \fi%
+%    \end{macrocode}
+%
+% Now a bunch of text putting commands
+%    \begin{macrocode}
+     \ifx\pst@pdgr@abovetext\@empty\relax\else%
+        \rput[\pst@pdgr@abovetextrp](0,0.4){%
+          \kern2\pslinewidth\pst@pdgr@abovetext\kern2\pslinewidth}%
+     \fi%
+     \ifx\pst@pdgr@belowtext\@empty\relax\else%
+        \rput[\pst@pdgr@belowtextrp](0,-0.4){%
+          \kern2\pslinewidth\pst@pdgr@belowtext\kern2\pslinewidth}%
+     \fi%
+     \ifx\pst@pdgr@righttext\@empty\relax\else%
+        \rput[\pst@pdgr@righttextrp](0.4,0){\pst@pdgr@righttext}%
+     \fi%
+     \ifx\pst@pdgr@lefttext\@empty\relax\else%
+        \rput[\pst@pdgr@lefttextrp](-0.4,0){\pst@pdgr@lefttext}%
+     \fi%
+%    \end{macrocode}
+% Inside text is a bit more difficult since we want to be able to
+% do reverse video if necessary
+%    \begin{macrocode}
+     \ifx\pst@pdgr@insidetext\@empty\relax\else%
+        \rput(0,0){\pst@pdgr@instxtcolor\pst@pdgr@insidetext}%
+     \fi%
+     \endpspicture%
+}}%
+%    \end{macrocode}
+% \changes{v0.2}{2006/04/18}{Changed text positioning}
+% \end{macro}
+%
+%
+%\subsection{Drawing A Terminated Pregnancy}
+%\label{sec:impl_pstAbortion}
+%
+% \begin{macro}{\pstAbortion}
+%   First, the standard processing of optional parameter
+%    \begin{macrocode}
+\def\pstAbortion{\@ifnextchar[{\pstAbortion@i}{\pstAbortion@i[]}}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pstAbortion@i}
+%   And the actual macro:
+%    \begin{macrocode}
+\def\pstAbortion@i[#1]#2{%
+  \rnode{#2}{%
+    \psset{arrows=-, linestyle=solid}%
+    \psset{#1}%
+%    \end{macrocode}
+%
+% The standard~\cite{PedigreeNomenclature95} requires the lines for
+% the terminated pregnancies to be shorter than for the normal ones.
+% A way to do this is to make the node \emph{higher}:
+%    \begin{macrocode}
+     \pspicture[shift=-0.25](-0.25,-0.25)(0.25,0.5)%
+%    \end{macrocode}
+%
+%
+% Condition processing:
+%    \begin{macrocode}
+     \ifcase\pst@pdgr@condition\relax  % Nothing to do if normal
+     \or  \relax % Nothing to do if obligatory
+     \or \relax  % Nothing to do if asymptomatic
+     \or % affected
+        \expandafter\psset\expandafter{\affectedstyle}%
+     \fi%
+%    \end{macrocode}
+%
+% If this is a terminated pregnancy, we use the same symbol as for
+% |deceased|:
+%    \begin{macrocode}
+    \ifpst@pdgr@sab\relax\else%
+       \qline(-0.25,0.1)(0.25,0.6)%
+     \fi%
+%    \end{macrocode}
+%  
+%  The actual drawing
+%    \begin{macrocode}
+    \pspolygon(-0.25,0.25)(0,0.5)(0.25,0.25)
+%    \end{macrocode}
+%
+% And text putting commands
+%    \begin{macrocode}
+     \ifx\pst@pdgr@abovetext\@empty\relax\else%
+        \rput[\pst@pdgr@abovetextrp](0,0.65){%
+          \kern2\pslinewidth\pst@pdgr@abovetext\kern2\pslinewidth}%
+     \fi%
+     \ifx\pst@pdgr@belowtext\@empty\relax\else%
+        \rput[\pst@pdgr@belowtextrp](0,0.1){%
+          \kern2\pslinewidth\pst@pdgr@belowtext\kern2\pslinewidth}%
+     \fi%
+     \ifx\pst@pdgr@righttext\@empty\relax\else%
+        \rput[\pst@pdgr@righttextrp](0.4,0.35){\pst@pdgr@righttext}%
+     \fi%
+     \ifx\pst@pdgr@lefttext\@empty\relax\else%
+        \rput[\pst@pdgr@lefttextrp](-0.4,0.35){\pst@pdgr@lefttext}%
+     \fi%
+     \endpspicture%
+}}%
+%    \end{macrocode}
+% \changes{v0.2}{2006/04/18}{Changed text positioning}
+% \end{macro}
+%
+%
+%\subsection{Drawing A Childlessness Symbol}
+%\label{sec:impl_childless}
+%
+% \begin{macro}{\pstChildless}
+%   Again, the standard processing of optional parameter
+%    \begin{macrocode}
+\def\pstChildless{\@ifnextchar[{\pstChildless@i}{\pstChildless@i[]}}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pstChildless@i}
+%   And the actual macro:
+%    \begin{macrocode}
+\def\pstChildless@i[#1]#2{%
+  \rnode{#2}{%
+    \psset{arrows=-, linestyle=solid}%
+    \psset{#1}%
+%    \end{macrocode}
+% The actual drawing depends on the |infertile| option.  If it is
+% true, we want a double line (an non-zero height).  Otherwise this is
+% a single line with zero height:
+%    \begin{macrocode}
+    \ifpst@pdgr@infertile  % double line
+      \pspicture[shift=-0.05](-0.2,-0.05)(0.2,0.05)%
+        \qline(-0.2,-0.05)(0.2,-0.05)%
+         \qline(-0.2,0.05)(0.2,0.05)%
+      \endpspicture%
+    \else  % single line
+      \qline(-0.2,0)(0.2,0)%
+    \fi%
+%    \end{macrocode}
+% And the text below the symbol:
+%    \begin{macrocode}
+     \ifx\pst@pdgr@belowtext\@empty\relax\else%
+        \rput[t](0,-0.2){\pst@pdgr@belowtext}%
+     \fi%
+}}%
+%    \end{macrocode}
+%
+% \end{macro}
+%
+%\subsection{Drawing A Relationship Line}
+%\label{sec:impl_pstRelationship}
+%
+% \begin{macro}{\pstRelationship}
+%   The |\pstRelationship| command can have both optional and
+%   non-optional parameters:
+%    \begin{macrocode}
+\def\pstRelationship{\@ifnextchar[{%
+    \pstRelationship@i}{\pstRelationship@i[]}}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pstRelationship@i}
+%   The actual macro:
+%    \begin{macrocode}
+\def\pstRelationship@i[#1]#2#3{%
+  \begingroup%
+  \psset{arrows=-, linestyle=solid, nodesep=0.7\pslinewidth}%
+  \psset{#1}%
+%    \end{macrocode}
+% A consanguinic relationship is shown by a double line:
+%    \begin{macrocode}
+   \ifpst@pdgr@consanguinic%
+      \psset{doubleline=true}%
+   \else%
+      \psset{doubleline=false}%
+   \fi%
+%    \end{macrocode}
+% The actual drawing
+%    \begin{macrocode}
+   \pst@pdgr@rellinecmd{#2}{#3}%
+%    \end{macrocode}
+% The broken relationships are shown using  //:
+%    \begin{macrocode}
+    \ifpst@pdgr@broken%
+         \lput(\pst@pdgr@brokenpos){/\kern-0.7ex/}%
+    \fi%
+%    \end{macrocode}
+% And the descent node
+%    \begin{macrocode}
+     \ifx\pst@pdgr@descentnode\@empty\relax%
+     \else%
+         \lput(\pst@pdgr@descentnodepos){\pnode{\pst@pdgr@descentnode}}%
+      \fi%
+      \endgroup%
+}%    
+%    \end{macrocode}
+%
+% \end{macro}
+%
+%\subsection{Drawing a Descent Line}
+%\label{sec:impl_pstDescent}
+%
+% \begin{macro}{\pstDescent}
+%   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
+%    \begin{macrocode}
+\def\pstDescent@i[#1]#2#3{%
+  \begingroup%
+  \psset{arrows=-, linestyle=solid, angleA=90, %
+         angleB=-90}%
+  \psset{#1}%
+  \ncangle{#3}{#2}%
+  \endgroup}%
+%    \end{macrocode}
+% \end{macro}
+%
+%
+%
+%\subsection{Drawing Twins}
+%\label{sec:impl_pstTwins}
+%
+% \begin{macro}{\pstTwins}
+%   The standard option processing command:
+%    \begin{macrocode}
+\def\pstTwins{\@ifnextchar[{\pstTwins@i}{\pstTwins@i[]}}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pstTwins@i}
+%   The actual macro.  Note that we need to keep the twin node in
+%   |\pst@pdgr@tempnode| to correctly process |addtwin|.
+%    \begin{macrocode}
+\def\pstTwins@i[#1]#2#3#4#5{%
+  \begingroup%
+  \def\pst@pdgr@tempnode{#3}
+  \psset{arrows=-, linestyle=solid, angleA=90, %
+         angleB=-90}%
+  \psset{#1}%
+%    \end{macrocode}
+% The descent line from the parent to the twin node
+%    \begin{macrocode}
+  \pstDescent{#2}{#3}%
+%    \end{macrocode}
+% And the twin lines and nodes
+%    \begin{macrocode}
+  \ncline{#3}{#4}%
+  \lput(\pst@pdgr@mzlinepos){\pnode{pst@pdgr@tempnodeA}}%
+  \ncline{#3}{#5}%
+  \lput(\pst@pdgr@mzlinepos){\pnode{pst@pdgr@tempnodeB}}%
+%    \end{macrocode}
+% The monozygotic or qzygotic line
+%    \begin{macrocode}
+  \ifpst@pdgr@monozygotic%
+     \ncline{pst@pdgr@tempnodeA}{pst@pdgr@tempnodeB}%
+  \else%
+      \ifpst@pdgr@qzygotic%
+         \ncline[linestyle=none]{pst@pdgr@tempnodeA}{pst@pdgr@tempnodeB}%
+         \lput(0.5){?}%
+      \fi%
+  \fi%
+  \endgroup}%
+%    \end{macrocode}
+%
+%
+% \end{macro}
+%
+%
+%\subsection{Tree Making Commands}
+%\label{sec:impl_trees}
+%
+% \begin{macro}{\pst@pdgr@makeTcommand}
+%   The general macro to create a tree command from the normal command
+%    \begin{macrocode}
+\def\pst@pdgr@makeTcommand#1{%
+  \@namedef{T#1}{%
+    \@ifnextchar[{\@nameuse{T#1@i}}{\@nameuse{T#1@i}[]}}%
+  \@namedef{T#1@i}[##1]##2{%
+      \Tr{\@nameuse{#1@i}[##1]{##2}}}}%
+%    \end{macrocode}
+% \end{macro}
+%
+% And the macros
+% \begin{macro}{\TpstPerson}
+% Drawing a person
+%    \begin{macrocode}
+\pst@pdgr@makeTcommand{pstPerson}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TpstAbortion}
+% Drawing an abortion
+%    \begin{macrocode}
+\pst@pdgr@makeTcommand{pstAbortion}%
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\TpstChildless}
+% Drawing a childlessness symbol
+%    \begin{macrocode}
+\pst@pdgr@makeTcommand{pstChildless}%
+%    \end{macrocode}
+% \end{macro}
+%
+%\subsection{Finishing Touch}
+%\label{sec:finish}
+%
+%
+%    \begin{macrocode}
+%</tex>
+%    \end{macrocode}
+%\Finale
+%\clearpage
+%
+%\iffalse\bibliography{genetics,neurology,tex}\fi
+%\bibliography{pst-pdgr}
+%\bibliographystyle{plain}
+%
+%\PrintChanges
+%\clearpage
+%\PrintIndex
+%
+\endinput
diff --git a/texmf/tex/latex/pst-pdgr/pst-pdgr.ins b/texmf/tex/latex/pst-pdgr/pst-pdgr.ins
new file mode 100644 (file)
index 0000000..544dcde
--- /dev/null
@@ -0,0 +1,48 @@
+%
+% Doctrip file for pst-pedigree
+% This file is in public domain
+% $Id: pst-pdgr.ins,v 1.6 2006/04/19 20:30:09 boris Exp $
+%
+\def\batchfile{pst-pdgr.ins}
+\input docstrip
+\keepsilent
+\showprogress
+
+\declarepreamble\cfg
+
+You are allowed and encouraged to modify THIS file.
+
+Good luck
+
+\endpreamble
+
+% This should be deleted in the final version
+\askforoverwritefalse
+
+\generate{%
+  \file{pst-pdgr.tex}{\from{pst-pdgr.dtx}{tex}}
+  \file{pst-pdgr.sty}{\from{pst-pdgr.dtx}{latex}}
+  \usepreamble\empty\usepreamble\cfg\file{pst-pdgr.cfg}{\from{pst-pdgr.dtx}{cfg}}}
+
+\obeyspaces
+\Msg{*********************************************************}%
+\Msg{* Congratulations!  You successfully generated the      *}%
+\Msg{* pst-pdgr package.                                     *}%
+\Msg{*                                                       *}%
+\Msg{* Please move the files pst-pdgr.sty & pst-pdgr.cfg to  *}%
+\Msg{* the place where LaTeX files are kept in your system;  *}%
+\Msg{* e. g.  /usr/share/texmf/tex/latex/pst-pdgr/.  Please  *}%
+\Msg{* move the file pst-pdgr.tex to the place where generic *}%
+\Msg{* TeX files are kept in your system, for example        *}%
+\Msg{* /usr/share/texmf/tex/generic/pstricks/pst-pdgr/.      *}%
+\Msg{*                                                       *}%
+\Msg{* You may customize your settings by changing the file  *}%
+\Msg{* pst-pdgr.cfg.                                         *}%
+\Msg{*                                                       *}%
+\Msg{* The documentation is in the file pst-pdgr.pdf. You    *}%
+\Msg{* may use the provided Makefile to re-typeset it.       *}%
+\Msg{*                                                       *}%
+\Msg{* The package is released under LPPL                    *}%
+\Msg{*                                                       *}%
+\Msg{* Happy TeXing!                                         *}%
+\Msg{*********************************************************}%
\ No newline at end of file