%% %% This is file `pst-pdgr.tex', %% generated with the docstrip utility. %% %% The original source files were: %% %% pst-pdgr.dtx (with options: `tex') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% %% Any modified versions of this file must be renamed %% with new filenames distinct from pst-pdgr.tex. %% %% For distribution of the original source see the terms %% for copying and modification in the file pst-pdgr.dtx. %% %% This generated file may be distributed as long as the %% original source files, as listed above, are part of the %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \csname PSTPedigreeLoaded\endcsname \let\PSTPedigreeLoaded\endinput \message{ [2017/11/20 v0.4 Medical Pedigree with PSTricks] } \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 \catcode`\@=11\relax \pst@addfams{pst-pdgr} \def\affectedbgcolor{gray} \def\affectedfgcolor{white} \def\affectedstyle{fillstyle=solid, fillcolor=\affectedbgcolor} \def\pst@pdgr@instxtcolor{\relax} \def\pst@pdgr@sex{0} \define@choicekey[psset]{pst-pdgr}{sex}[\pst@pdgr@temp \pst@pdgr@sex]{% unknown,male,female}[unknown]{} \def\pst@pdgr@condition{0} \define@choicekey[psset]{pst-pdgr}{% condition}[\pst@pdgr@temp \pst@pdgr@condition]{% normal,obligatory,asymptomatic,affected}[normal]{} \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}} \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}}} \pst@pdgr@defineboolkey{deceased} \pst@pdgr@defineboolkey{proband} \pst@pdgr@defineboolkey{adopted} \pst@pdgr@defineboolkey{evaluated} \pst@pdgr@defineboolkey{sab} \pst@pdgr@defineboolkey{infertile} \pst@pdgr@defineboolkey{broken} \pst@pdgr@defineboolkey{consanguinic} \pst@pdgr@defineboolkey{monozygotic} \pst@pdgr@defineboolkey{qzygotic} \def\pst@pdgr@insidetext{}% \define@key[psset]{pst-pdgr}{insidetext}{% \def\pst@pdgr@insidetext{#1}}% \def\pst@pdgr@belowtext{}% \define@key[psset]{pst-pdgr}{belowtext}{% \def\pst@pdgr@belowtext{#1}}% \def\pst@pdgr@abovetext{}% \define@key[psset]{pst-pdgr}{abovetext}{% \def\pst@pdgr@abovetext{#1}}% \def\pst@pdgr@lefttext{}% \define@key[psset]{pst-pdgr}{lefttext}{% \def\pst@pdgr@lefttext{#1}}% \def\pst@pdgr@righttext{}% \define@key[psset]{pst-pdgr}{righttext}{% \def\pst@pdgr@righttext{#1}}% \def\pst@pdgr@descentnode{}% \define@key[psset]{pst-pdgr}{descentnode}{% \def\pst@pdgr@descentnode{#1}}% \def\pst@pdgr@rellinecmd{\ncline}% \define@key[psset]{pst-pdgr}{rellinecmd}{% \def\pst@pdgr@rellinecmd{\@nameuse{#1}}}% \def\pst@pdgr@abovetextrp{lB}% \define@key[psset]{pst-pdgr}{abovetextrp}{% \def\pst@pdgr@abovetextrp{#1}}% \def\pst@pdgr@belowtextrp{lt}% \define@key[psset]{pst-pdgr}{belowtextrp}{% \def\pst@pdgr@belowtextrp{#1}}% \def\pst@pdgr@lefttextrp{r}% \define@key[psset]{pst-pdgr}{lefttextrp}{% \def\pst@pdgr@lefttextrp{#1}}% \def\pst@pdgr@righttextrp{l}% \define@key[psset]{pst-pdgr}{righttextrp}{% \def\pst@pdgr@righttextrp{#1}}% \define@key[psset]{pst-pdgr}{addtwin}{\ncline{\pst@pdgr@tempnode}{#1}}% \define@key[psset]{pst-pdgr}{descentnode}{% \def\pst@pdgr@descentnode{#1}}% \newdimen\psk@descarmA% \define@key[psset]{pst-pdgr}{descarmA}{\pssetlength\psk@descarmA{#1}}% \psset{descarmA=0.8}% \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}% \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}% \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}% \def\pstPerson{\@ifnextchar[{\pstPerson@i}{\pstPerson@i[]}} \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)% \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% \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% \psset{fillstyle=none}% \ifpst@pdgr@deceased% \qline(-0.33,-0.33)(0.33,0.33)% \fi% \ifpst@pdgr@proband% \psline[arrows=->](-0.55,-0.55)(-0.29,-0.29)% \fi% \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% \ifpst@pdgr@evaluated% \rput(0.4,-0.4){$\ast$}% \fi% \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% \ifx\pst@pdgr@insidetext\@empty\relax\else% \rput(0,0){\pst@pdgr@instxtcolor\pst@pdgr@insidetext}% \fi% \endpspicture% }}% \def\pstAbortion{\@ifnextchar[{\pstAbortion@i}{\pstAbortion@i[]}}% \def\pstAbortion@i[#1]#2{% \rnode{#2}{% \psset{arrows=-, linestyle=solid}% \psset{#1}% \pspicture[shift=-0.25](-0.25,-0.25)(0.25,0.5)% \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% \ifpst@pdgr@sab\relax\else% \qline(-0.25,0.1)(0.25,0.6)% \fi% \pspolygon(-0.25,0.25)(0,0.5)(0.25,0.25) \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% }}% \def\pstChildless{\@ifnextchar[{\pstChildless@i}{\pstChildless@i[]}}% \def\pstChildless@i[#1]#2{% \rnode{#2}{% \psset{arrows=-, linestyle=solid}% \psset{#1}% \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% \ifx\pst@pdgr@belowtext\@empty\relax\else% \rput[t](0,-0.2){\pst@pdgr@belowtext}% \fi% }}% \def\pstRelationship{\@ifnextchar[{% \pstRelationship@i}{\pstRelationship@i[]}}% \def\pstRelationship@i[#1]#2#3{% \begingroup% \psset{arrows=-, linestyle=solid, nodesep=0.7\pslinewidth}% \psset{#1}% \ifpst@pdgr@consanguinic% \psset{doubleline=true}% \else% \psset{doubleline=false}% \fi% \pst@pdgr@rellinecmd{#2}{#3}% \ifpst@pdgr@broken% \lput(\pst@pdgr@brokenpos){/\kern-0.7ex/}% \fi% \ifx\pst@pdgr@descentnode\@empty\relax% \else% \lput(\pst@pdgr@descentnodepos){\pnode{\pst@pdgr@descentnode}}% \fi% \endgroup% }% \def\ncAngles{\pst@object{ncAngles}} \def\ncAngles@i{\check@arrow{\ncAngles@ii}} \def\ncAngles@ii#1#2{% \nc@object{Open}{#1}{#2}{1.5}{\ncAngles@iii \tx@NCAngles}} \def\ncAngles@iii{% tx@Dict begin \psline@iii pop end /AngleA \psk@angleA def /AngleB \psk@angleB def /ArmA \psk@armA GetEdgeA yA yA1 sub dup mul xA xA1 sub dup mul add sqrt sub def /ArmB \psk@armB def /ArmTypeA \psk@armtypeA def /ArmTypeB \psk@armtypeB def } \def\pstDescent{\@ifnextchar[{\pstDescent@i}{\pstDescent@i[]}}% \def\pstDescent@i[#1]#2#3{% \begingroup% \psset{arrows=-, linestyle=solid, angleA=-90, % angleB=90, armB=0}% \psset{#1}% \psset{armA=\psk@descarmA}% \ncAngles{#2}{#3}% \endgroup}% \def\pstTwins{\@ifnextchar[{\pstTwins@i}{\pstTwins@i[]}}% \def\pstTwins@i[#1]#2#3#4#5{% \begingroup% \def\pst@pdgr@tempnode{#3} \psset{arrows=-, linestyle=solid, angleA=90, % angleB=-90}% \psset{#1}% \pstDescent{#2}{#3}% \ncline{#3}{#4}% \lput(\pst@pdgr@mzlinepos){\pnode{pst@pdgr@tempnodeA}}% \ncline{#3}{#5}% \lput(\pst@pdgr@mzlinepos){\pnode{pst@pdgr@tempnodeB}}% \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}% \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}}}}% \pst@pdgr@makeTcommand{pstPerson}% \pst@pdgr@makeTcommand{pstAbortion}% \pst@pdgr@makeTcommand{pstChildless}% \endinput %% %% End of file `pst-pdgr.tex'.