summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/support
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-04-13 23:09:10 +0000
committerKarl Berry <karl@freefriends.org>2012-04-13 23:09:10 +0000
commit2d9b64e84ae06eba8f2f5d0e958f4f2f335de076 (patch)
treee49120eb2857c9aa1a11ca26cda4d3ba5db6b8b6 /Master/texmf-dist/doc/support
parent1c08c44c738be3e43fc4411812e7484d2471de7e (diff)
new pstricks+script pedigree-perl (16mar12)
git-svn-id: svn://tug.org/texlive/trunk@25962 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/support')
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/LICENSE340
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/Makefile57
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/NEWS21
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/Pedigree.3166
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/Pedigree/AbortionNode.3167
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Area.3233
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/Pedigree/ChildlessNode.3170
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Language.3197
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Makefile42
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/Pedigree/MarriageNode.3199
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Node.3341
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Parser.3162
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/Pedigree/PersonNode.3212
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/Pedigree/TwinsNode.3169
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/README31
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/doc/Makefile75
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/doc/abortions.tex19
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/doc/english.tex46
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/doc/english1.tex32
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/doc/pedigree.bib49
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/doc/pedigree.pdfbin0 -> 287012 bytes
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/doc/pedigree.tex1153
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/doc/russian.tex27
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/abortions.csv5
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/badsort.csv14
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/childlessness.csv6
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/consanguinic.csv11
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/english.cfg76
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/english.csv12
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/english1.cfg76
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/english_short.cfg76
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/pedigree.cfg47
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/russian.cfg78
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/russian.csv7
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/sort1.csv12
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/sort2.csv12
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/sort3.csv12
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/examples/twins.csv12
-rw-r--r--Master/texmf-dist/doc/support/pedigree-perl/pedigree.1185
39 files changed, 4549 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/LICENSE b/Master/texmf-dist/doc/support/pedigree-perl/LICENSE
new file mode 100644
index 00000000000..f90922eea38
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/LICENSE
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/Makefile b/Master/texmf-dist/doc/support/pedigree-perl/Makefile
new file mode 100644
index 00000000000..446d533238e
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/Makefile
@@ -0,0 +1,57 @@
+#
+# Makefile for pedigree
+# $Id: Makefile,v 2.2 2007-07-29 19:52:51 boris Exp $
+#
+# This file is in public domain
+#
+
+PREFIX = /usr/local
+
+PERLSCRIPTS=pedigree.pl
+
+PERLLIBS = \
+ Pedigree.pm
+
+MANPAGES1=${PERLSCRIPTS:%.pl=%.1}
+MANPAGES3=${PERLLIBS:%.pm=%.3}
+
+
+all: man
+ cd Pedigree; ${MAKE} $@
+
+man: ${MANPAGES1} ${MANPAGES3}
+
+docs:
+ cd doc; ${MAKE} all
+
+install: all
+ install pedigree.pl $(PREFIX)/bin/pedigree
+ mkdir -p $(PREFIX)/lib/site_perl
+ install -m 644 ${PERLLIBS} $(PREFIX)/lib/site_perl
+ cd Pedigree; ${MAKE} $@
+
+installman:
+ install -m 644 pedigree.1 $(PREFIX)/man/man1
+ for x in ${MANPAGES3}; do install -m 644 $$x $(PREFIX)/man/man3/$$x; done
+ cd Pedigree; ${MAKE} $@
+
+%.1: %.pl
+ pod2man --section=1 -n $* -s 1 $< $@
+
+%.3: %.pm
+ pod2man --section=3 -n $* -s 3 $< $@
+
+clean:
+ cd doc; ${MAKE} $@
+ cd Pedigree; ${MAKE} $@
+
+distclean: clean
+ $(RM) ${MANPAGES1} ${MANPAGES3}
+ cd doc; ${MAKE} $@
+ cd Pedigree; ${MAKE} $@
+
+#
+# Archive for the distribution. Includes typeset documentation and man pages
+#
+archive: all docs clean
+ tar -czvf pedigree.tgz --exclude '*~' --exclude '*.tgz' --exclude CVS .
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/NEWS b/Master/texmf-dist/doc/support/pedigree-perl/NEWS
new file mode 100644
index 00000000000..3e8d5ad7b22
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/NEWS
@@ -0,0 +1,21 @@
+pedigree NEWS: History of user interface changes
+
+Changes in v0.4, 2012/03/15
+
+* Added TeXLive compatibility
+
+Changes in v0.3, 2007/07/31
+
+* Added support for twins, infertility, abortions
+
+* Added support for multiple probands
+
+* Added (limited) support for consanguinic unions
+
+* Automatic scaling and rotation of large charts
+
+* Added support for additional node information on the chart
+
+* INCOMPATIBLE CHANGE: requires pst-pdgr v0.3 or later.
+
+This file is in public domain \ No newline at end of file
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/Pedigree.3 b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree.3
new file mode 100644
index 00000000000..bde96a049a1
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree.3
@@ -0,0 +1,166 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "Pedigree 3"
+.TH Pedigree 3 "2007-07-09" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+Pedigree \- the main library for Pedigree.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+use Pedigree;
+.PP
+$node = Pedigree\->MakeNode($params);
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This is the main package for pedigree construction. It calls other
+libraries in the Pedigree:: family
+.IP "\fBMakeNode\fR(\fI$params\fR);" 4
+.IX Item "MakeNode($params);"
+Construct a new node from the given parameters. Check what kind of node
+should we construct.
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+The calling program should define \fB$main::DEBUG\fR and set it to 0
+or 1.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIpedigree\fR\|(1),
+\&\fIPedigree::AbortionNode\fR\|(3),
+\&\fIPedigree::Area\fR\|(3),
+\&\fIPedigree::ChildlessNode\fR\|(3),
+\&\fIPedigree::Language\fR\|(3),
+\&\fIPedigree::MarriageNode\fR\|(3),
+\&\fIPedigree::Node\fR\|(3),
+\&\fIPedigree::Parser\fR\|(3),
+\&\fIPedigree::PersonNode\fR\|(3),
+\&\fIPedigree::TwinsNode\fR\|(3),
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Boris Veytsman, Leila Akhmadeeva, 2007
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/AbortionNode.3 b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/AbortionNode.3
new file mode 100644
index 00000000000..3ae47c203b9
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/AbortionNode.3
@@ -0,0 +1,167 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "Pedigree::AbortionNode 3"
+.TH Pedigree::AbortionNode 3 "2007-07-22" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+Pedigree::AbortionNode \- an abortion in a pedigree
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+use Pedigree::AbortionNode;
+.PP
+$node = new Pedigree::AbortionNode(\fI%params\fR);
+.PP
+$node\->DrawNode(\fI$xidst\fR, \fI$ydist\fR, \fI$belowtextfont\fR, \fI$abovetextfont\fR,
+\&\fI@fieldsfornode\fR);
+.PP
+$node\->PrintLegend(\fI$land\fR, \fI@fields\fR);
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This package contains data about an abortion. Abortion is like a person,
+but it cannot have kids, and it is drawn differently
+.IP "\fBDrawNode\fR(\fI$xdist\fR, \fI$ydist\fR, \fI$belowtextfont\fR, \fI$abovetextfont\fR, \fI@fieldsfornode\fR);" 4
+.IX Item "DrawNode($xdist, $ydist, $belowtextfont, $abovetextfont, @fieldsfornode);"
+Output the command to draw this node. The parameters are
+distances between the nodes (in cm) and fields for abovetext.
+.IP "\fBPrintLegend\fR(\fI$lang\fR, \fI@fields\fR);" 4
+.IX Item "PrintLegend($lang, @fields);"
+Print the legend for the given node, including \fI@fields\fR in the given
+language \fI$lang\fR, and excluding the fields, that have no meaning for
+this node.
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+The calling program should define \fB$main::DEBUG\fR and set it to 0
+or 1.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3)
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Boris Veytsman, Leila Akhmadeeva, 2007
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Area.3 b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Area.3
new file mode 100644
index 00000000000..9e58f6b46c9
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Area.3
@@ -0,0 +1,233 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "Pedigree::Area 3"
+.TH Pedigree::Area 3 "2007-07-08" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+Pedigree::Area \- Calculate the area taken by a tree or a clump
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+use Pedigree::Area;
+.PP
+$area = new Pedigree::Area($node);
+.PP
+$Ymin=$area\->\fIGetYmin()\fR;
+.PP
+$area\->SetYmin($Ymin);
+.PP
+$Ymax=$area\->\fIGetYmax()\fR;
+.PP
+$area\->SetYmax($Ymax);
+.PP
+$Xmin=$area\->GetXmin($y);
+.PP
+$area\->SetXmin($y,$x);
+.PP
+$Xmax=$area\->GetXmax($y);
+.PP
+$area\->SetXmax($y,$x);
+.PP
+$area\->AddRight($otherarea);
+.PP
+$area\->AddLeft($otherarea);
+.PP
+$rootnode=$area\->\fIGetRootNode()\fR;
+.PP
+$area\->MoveLowerLayers($x);
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The algorithm of \fIpedigree\fR\|(1) uses the notion of area: a part of
+a picture taken by a tree or a clump. This package implements this
+notion.
+.PP
+Each Area has \fBrootnode\fR \- the reference node for all calculations.
+All distances are calculated as relative to the coordinates of the
+\&\fBrootnode\fR.
+.PP
+The units are distances between the nodes in X and Y direction. The
+Y axis is \fIdownward\fR: the earlier generations have smaller Y
+coordinates.
+.IP "\fBnew\fR(\fI$rootnode\fR);" 4
+.IX Item "new($rootnode);"
+Construct a new area around the given rootnode
+.IP "\fBGetYmin\fR();" 4
+.IX Item "GetYmin();"
+Get the lower bound of the area.
+.IP "\fBSetYmin\fR(\fI$y\fR);" 4
+.IX Item "SetYmin($y);"
+Set the lower bound of the area.
+.IP "\fBGetYmax\fR();" 4
+.IX Item "GetYmax();"
+Get the upper bound of the area.
+.IP "\fBSetYmax\fR(\fI$y\fR);" 4
+.IX Item "SetYmax($y);"
+Set the upper bound of the area.
+.IP "\fBGetXmin\fR(\fI$y\fR);" 4
+.IX Item "GetXmin($y);"
+Get the minimal X coordinate of the area on the level Y.
+.ie n .IP "\fBSetXmin\fR(\fI$y, \fI$x\fI\fR);" 4
+.el .IP "\fBSetXmin\fR(\fI$y, \f(CI$x\fI\fR);" 4
+.IX Item "SetXmin($y, $x);"
+Set the minimal X coordinate of the area on the level Y.
+.IP "\fBGetXmax\fR(\fI$y\fR);" 4
+.IX Item "GetXmax($y);"
+Get the maximal X coordinate of the area the the level Y.
+.ie n .IP "\fBSetXmax\fR(\fI$y, \fI$x\fI\fR);" 4
+.el .IP "\fBSetXmax\fR(\fI$y, \f(CI$x\fI\fR);" 4
+.IX Item "SetXmax($y, $x);"
+Set the maximal X coordinate of the area the the level Y.
+.IP "\fBAddRight\fR(\fI$otherarea\fR);" 4
+.IX Item "AddRight($otherarea);"
+Add the new area \fI$otherarea\fR to the given area at the right. The
+\&\*(L"other area\*(R" should have a root node that is relative to our root
+node. The relative Y of the other root node is used, the relative
+X is set.
+.IP "\fBAddLeft\fR(\fI$otherarea\fR);" 4
+.IX Item "AddLeft($otherarea);"
+Add the new area \fI$otherarea\fR to the given area at the left. The
+\&\*(L"other area\*(R" should have a root node that is relative to our root
+node. The relative Y of the other root node is used, the relative
+X is set.
+.IP "\fBGetRootNode\fR();" 4
+.IX Item "GetRootNode();"
+Return the root node of the area.
+.IP "\fBMoveLowerLayers\fR(\fI$x\fR);" 4
+.IX Item "MoveLowerLayers($x);"
+Shift the lower layers (>0) of the area in the X direction by \fI$x\fR
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+The calling program should define \fB$main::DEBUG\fR and set it to 0
+or 1.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3)
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Boris Veytsman, Leila Akhmadeeva, 2006, 2007
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/ChildlessNode.3 b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/ChildlessNode.3
new file mode 100644
index 00000000000..08930658c49
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/ChildlessNode.3
@@ -0,0 +1,170 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "Pedigree::ChildlessNode 3"
+.TH Pedigree::ChildlessNode 3 "2007-07-22" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+Pedigree::ChildlessNode \- an abortion in a pedigree
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+use Pedigree::ChildlessNode;
+.PP
+$node = new Pedigree::ChildlessNode(\fI%params\fR);
+.PP
+$node\->DrawNode(\fI$xidst\fR, \fI$ydist\fR, \fI$belowtextfont\fR, \fI$abovetextfont\fR,
+\&\fI@fieldsfornode\fR);
+.PP
+$node\->PrintLegend(\fI$land\fR, \fI@fields\fR);
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This package contains data about a \*(L"childlessness\*(R" node. This node
+is not numbered in pedigree.
+.IP "\fBnew\fR(\fI%params\fR);" 4
+.IX Item "new(%params);"
+Construct a new node from the given parameters.
+.IP "\fBDrawNode\fR(\fI$xdist\fR, \fI$ydist\fR, \fI$belowtextfont\fR, \fI$abovetextfont\fR, \fI@fieldsfornode\fR);" 4
+.IX Item "DrawNode($xdist, $ydist, $belowtextfont, $abovetextfont, @fieldsfornode);"
+Output the command to draw this node. The parameters are
+distances between the nodes (in cm) and fields for abovetext (not used
+here). We only print the Comment field below the node, and draw this
+node higher than other nodes.
+.IP "\fBPrintLegend\fR(\fI$lang\fR, \fI@fields\fR);" 4
+.IX Item "PrintLegend($lang, @fields);"
+This subroutine does nothing since childlessness has no legend.
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+The calling program should define \fB$main::DEBUG\fR and set it to 0
+or 1.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3)
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Boris Veytsman, Leila Akhmadeeva, 2007
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Language.3 b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Language.3
new file mode 100644
index 00000000000..1838308c460
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Language.3
@@ -0,0 +1,197 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "Pedigree::Language 3"
+.TH Pedigree::Language 3 "2007-10-21" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+Pedigree::Language \- encapsulating language issues for pedigree library
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+use Pedigree::Language;
+.PP
+$lang = new Pedigree::Language(\fI$language\fR[, \fI$encoding\fR]);
+.PP
+$lang\->\fIHeader()\fR;
+.PP
+$lang\->\fILanguage()\fR;
+.PP
+$lang\->\fIEncoding()\fR;
+.PP
+$lang\->\fIGetFieldNames()\fR;
+.PP
+$lang\->\fIGetValues()\fR;
+.PP
+$lang\->\fIGetSpecialNames()\fR;
+.PP
+$lang\->PrintField(\fI$field\fR, $<$value>);
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This package defines the language-dependent parts of the pedigree
+library. The idea is to gather everything about language here, so adding
+a new language should be (presumably) be easy.
+.IP "\fBnew\fR(\fI$language\fR[, \fI$encoding\fR]);" 4
+.IX Item "new($language[, $encoding]);"
+Construct the new interpreter from the given language and encoding names.
+.IP "\fBHeader\fR ()" 4
+.IX Item "Header ()"
+Print the language-related lines of the document preamble
+.IP "\fBLanguage\fR ()" 4
+.IX Item "Language ()"
+Print the current language
+.IP "\fBEncoding\fR ()" 4
+.IX Item "Encoding ()"
+Print the current encoding
+.IP "\fBGetFieldNames\fR();" 4
+.IX Item "GetFieldNames();"
+Outputs a reference to a hash
+\&\*(L"field_name_in_this_language\*(R"=>\*(L"field_name_in_English\*(R"
+.IP "\fBGetValues\fR();" 4
+.IX Item "GetValues();"
+Outputs a reference to a hash
+\&\*(L"field_value_in_this_language\*(R"=>\*(L"field_value_in_English\*(R"
+.IP "\fBGetSpecialNames\fR();" 4
+.IX Item "GetSpecialNames();"
+Some values for the 'Name' field start with \f(CW\*(C`#\*(C'\fR. They are special.
+This subroutine outputs a reference to a hash
+\&\*(L"special_name_in_this_language\*(R"=>\*(L"special_name\*(R"
+.IP "\fBPrintField\fR(\fI$field\fR, \fI$value\fR);" 4
+.IX Item "PrintField($field, $value);"
+Formats the value \fI$value\fR of the given field \fI$field\fR according
+to the rules of the given language.
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+The calling program should define \fB$main::DEBUG\fR and set it to 0
+or 1.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3)
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Boris Veytsman, Leila Akhmadeeva, 2006, 2007
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Makefile b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Makefile
new file mode 100644
index 00000000000..5afbb317dd3
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Makefile
@@ -0,0 +1,42 @@
+#
+# Makefile for pedigree
+# $Id: Makefile,v 2.4 2007-07-09 22:49:33 boris Exp $
+#
+# This file is in public domain
+#
+
+PREFIX = /usr/local
+
+
+PERLLIBS = \
+ AbortionNode.pm \
+ Area.pm \
+ ChildlessNode.pm \
+ Language.pm \
+ MarriageNode.pm \
+ Node.pm \
+ Parser.pm \
+ PersonNode.pm \
+ TwinsNode.pm
+
+MANPAGES3=${PERLLIBS:%.pm=%.3}
+
+all: man
+
+man: ${MANPAGES3}
+
+install: all
+ mkdir -p $(PREFIX)/lib/site_perl/Pedigree
+ install -m 644 ${PERLLIBS} $(PREFIX)/lib/site_perl/Pedigree
+
+installman: all
+ for x in ${MANPAGES3}; do install -m 644 $$x $(PREFIX)/man/man3/Pedigree::$$x; done
+
+
+%.3: %.pm
+ pod2man --section=3 -n Pedigree::$* -s 3 $< $@
+
+clean:
+
+distclean: clean
+ $(RM) *.3
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/MarriageNode.3 b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/MarriageNode.3
new file mode 100644
index 00000000000..d36edd4a56c
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/MarriageNode.3
@@ -0,0 +1,199 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "Pedigree::MarriageNode 3"
+.TH Pedigree::MarriageNode 3 "2007-07-15" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+Pedigree::MarriageNode \- a marriage in a pedigree
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+use Pedigree::MarriageNode;
+.PP
+$node = new Pedigree::MarriageNode(\fI%params\fR);
+.PP
+$FSpouse = \f(CW$node\fR\->\fIFSpouse()\fR;
+.PP
+$MSpouse = \f(CW$node\fR\->\fIMSpouse()\fR;
+.PP
+$consang = \f(CW$self\fR\->\fIisConsanguinic()\fR;
+.PP
+$area = \f(CW$node\fR\->\fISetArea()\fR;
+.PP
+$node\->CalcAbsCoord(\fI$x\fR, \fI$y\fR);
+.PP
+$node\->DrawNode(\fI$xidst\fR, \fI$ydist\fR, \fI$belowtextfont\fR, \fI$abovetextfont\fR,
+\&\fI@fieldsfornode\fR);
+.PP
+$node\->\fIDrawConnections()\fR;
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This package contains data about a marriage.
+.IP "\fBnew\fR(\fI%params\fR);" 4
+.IX Item "new(%params);"
+Construct a new node from the given parameters.
+.IP "\fBFSpouse\fR();" 4
+.IX Item "FSpouse();"
+Get female spouse of a node.
+.IP "\fBMSpouse\fR();" 4
+.IX Item "MSpouse();"
+Get female spouse of a node.
+.IP "\fBisConsanguinic\fR();" 4
+.IX Item "isConsanguinic();"
+Check whether the node is consanguinic
+.IP "\fBSetArea\fR();" 4
+.IX Item "SetArea();"
+Calculate relative coordinates for all nodes, that are descendants of
+the given node \fIand\fR the spouses that form the marriage. We create a
+\&\fIPedigree::Area\fR\|(3) around the given node and recursively apply the
+function to all descendants. The subroutine
+returns the reference to the created area.
+.IP "\fBCalcAbsCoor\fR(\fI$x\fR, $<y>);" 4
+.IX Item "CalcAbsCoor($x, $<y>);"
+Set the absolute coordinates of the given node, if the absolute
+coordinates of the parent node are (\fI$x\fR, \fI$y\fR), and recursively
+do this for all descendants of this node, and right and left clumps.
+.IP "\fBDrawNode\fR(\fI$xdist\fR, \fI$ydist\fR, \fI$belowtextfont\fR, \fI$abovetextfont\fR, \fI@fieldsfornode\fR);" 4
+.IX Item "DrawNode($xdist, $ydist, $belowtextfont, $abovetextfont, @fieldsfornode);"
+Output the command to draw this node. The parameters are
+distances between the nodes (in cm).
+.IP "\fBDrawConnections\fR();" 4
+.IX Item "DrawConnections();"
+Draw the connections from the given node to its descendants and
+the spouses
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+The calling program should define \fB$main::DEBUG\fR and set it to 0
+or 1.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3)
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Boris Veytsman, Leila Akhmadeeva, 2006, 2007
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Node.3 b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Node.3
new file mode 100644
index 00000000000..481b37ed9e8
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Node.3
@@ -0,0 +1,341 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "Pedigree::Node 3"
+.TH Pedigree::Node 3 "2009-01-05" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+Pedigree::Node \- the base package for nodes in pedigree charts
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+use Pedigree::Node;
+.PP
+$node = new Pedigree::Node(\fI%params\fR);
+.PP
+$node\->\fICheckAllParents()\fR;
+.PP
+$Id = \f(CW$node\fR\->\fIId()\fR;
+.PP
+$node\->SetSortOrder(\-1|0|1);
+.PP
+$result = \f(CW$node\fR\->\fISortOrder()\fR;
+.PP
+$is_numbered=$node\->\fIisNumbered()\fR;
+.PP
+$type = \f(CW$node\fR\->\fIType()\fR;
+.PP
+$Kids = \f(CW$node\fR\->\fIKids()\fR;
+.PP
+$node\->\fIGetAndSortKids()\fR;
+.PP
+($root, \f(CW$newgen\fR) = \f(CW$node\fR\->FindRoot(\fI$generation\fR, [\fI$sort_order\fR]);
+.PP
+$x = \f(CW$node\fR\->\fIGetRelX()\fR;
+.PP
+$y = \f(CW$node\fR\->\fIGetRelY()\fR;
+.PP
+$node\->SetRelX(\fI$x\fR);
+.PP
+$node\->SetRelX(\fI$y\fR);
+.PP
+$x = \f(CW$node\fR\->\fIGetAbsX()\fR;
+.PP
+$y = \f(CW$node\fR\->\fIGetAbsY()\fR;
+.PP
+$node\->SetIndexX(\fI$n\fR);
+.PP
+$node\->SetAbsX(\fI$x\fR);
+.PP
+$node\->SetAbsY(\fI$y\fR);
+.PP
+$n = \f(CW$node\fR\->\fIGetIndexX()\fR;
+.PP
+$area = \f(CW$node\fR\->\fISetArea()\fR;
+.PP
+$delta = \f(CW$node\fR\->\fICenterKids()\fR;
+.PP
+$node\->CalcAbsCoord(\fI$x\fR, \fI$y\fR);
+.PP
+$node\->\fIAddConsanguinicMarriages()\fR;
+.PP
+$node\->AddTwins($ydist);
+.PP
+$frame = \f(CW$node\fR\->SetFrame(\fI$xdist\fR, \fI$ydist\fR);
+.PP
+$node\->DrawAll(\fI$xdist\fR, \fI$ydist\fR, \fI$belowtextfont\fR, \fI$abovetextfont\fR,
+ \fI@fieldsfornode\fR);
+.PP
+$node\->\fIDrawConnections()\fR;
+.PP
+$node\->PrintAllLegends(\fI$land\fR, \fI@fields\fR);
+.PP
+$node\->PrintLegend(\fI$land\fR, \fI@fields\fR);
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This is the basic package that defines nodes for pedigrees.
+\&\fIPedigree::PersonNode\fR\|(3) and \fIPedigree::MarriageNode\fR\|(3) inherit from
+this package.
+.IP "\fBnew\fR(\fI%params\fR);" 4
+.IX Item "new(%params);"
+Construct a new node from the given parameters. If a node with
+the give Id exists, add new information to the node.
+.IP "\fBCheckAllParents\fR();" 4
+.IX Item "CheckAllParents();"
+Check whether mothers and fathers of all nodes exist
+.IP "\fBId\fR();" 4
+.IX Item "Id();"
+Get Id of a node. Note that there is no way to set an Id of a node
+that was already created.
+.IP "\fBSetSortOrder\fR(\fI\-1|0|1\fR);" 4
+.IX Item "SetSortOrder(-1|0|1);"
+Normally the sibs nodes are sorted by age. However, if the nodes or
+their descendants are connected by a marriage line, we must sort them
+in the special way: all way to the left or all way to the right. The
+procedure \fBSetSortOrder\fR sets this flag for the node or deletes it
+depending on the argument.
+.IP "\fBSortOrder\fR();" 4
+.IX Item "SortOrder();"
+Normally the sibs nodes are sorted by age. However, if the nodes or
+their descendants are connected by a marriage line, we must sort them
+in the special way: all way to the left or all way to the right. The
+procedure \fBSortOrder\fR checks this flag.
+.IP "\fBisNumbered\fR();" 4
+.IX Item "isNumbered();"
+Check whether the node should be numbered in pedigree
+.IP "\fBType\fR()" 4
+.IX Item "Type()"
+Return node type.
+.IP "\fBKids\fR();" 4
+.IX Item "Kids();"
+Get the reference to the array of kids
+.IP "\fBGetAndSortKids\fR();" 4
+.IX Item "GetAndSortKids();"
+Apply sort the array of kids for the given node
+.IP "\fBFindRoot\fR(\fI$generation\fR, [\fI$sort_order\fR]);" 4
+.IX Item "FindRoot($generation, [$sort_order]);"
+Finds the root of the tree to which the current node belongs.
+Takes the current generation number and returns the root and its
+generation number. Here generation numbers go \*(L"backwards\*(R": the older
+generations have higher numbers. The found node is assigned sort order
+\&\fI$sort_order\fR.
+.IP "\fBGetRelX\fR();" 4
+.IX Item "GetRelX();"
+Find the relative x coordinate of the node. The coordinate is
+relative to the precedessor or to the marriage node, which connects
+this node to the proband
+.IP "\fBGetRelY\fR();" 4
+.IX Item "GetRelY();"
+Find the relative Y coordinate of the node. The coordinate is
+relative to the precedessor or to the marriage node, which connects
+this node to the proband. Note that the Y axis is down.
+.IP "\fBSetRelX\fR(\fI$x\fR);" 4
+.IX Item "SetRelX($x);"
+Set the relative x coordinate of the node. The coordinate is
+relative to the precedessor or to the marriage node, which connects
+this node to the proband.
+.IP "\fBSetRelY\fR(\fI$y\fR);" 4
+.IX Item "SetRelY($y);"
+Set the relative y coordinate of the node. The coordinate is
+relative to the precedessor or to the marriage node, which connects
+this node to the proband. Note that the Y axis is down.
+.IP "\fBGetAbsX\fR();" 4
+.IX Item "GetAbsX();"
+Find the absolute x coordinate of the node.
+.IP "\fBGetAbsY\fR();" 4
+.IX Item "GetAbsY();"
+Find the absolute Y coordinate of the node.
+.IP "\fBGetIndexX\fR();" 4
+.IX Item "GetIndexX();"
+Find the number of the node in the given generation.
+.IP "\fBSetAbsX\fR(\fI$x\fR);" 4
+.IX Item "SetAbsX($x);"
+Set the absolute x coordinate of the node.
+.IP "\fBSetAbsY\fR(\fI$y\fR);" 4
+.IX Item "SetAbsY($y);"
+Set the absolute y coordinate of the node.
+.IP "\fBSetIndexX\fR(\fI$n\fR);" 4
+.IX Item "SetIndexX($n);"
+Set the number of the node in the given generation.
+.IP "\fBSetArea\fR();" 4
+.IX Item "SetArea();"
+Calculate relative coordinates for all nodes, that are descendants of
+the given node. We create a \fIPedigree::Area\fR\|(3) around the given node
+and recursively apply the function to all descendants. The subroutine
+returns the reference to the created area.
+.IP "\fBCenterKids\fR();" 4
+.IX Item "CenterKids();"
+Move the relative coordinates of all the kids of the given node
+so the given node is centered in relation to the kids. Returns
+the shift to be applied to the \fIPedigree::Area\fR\|(3).
+.IP "\fBCalcAbsCoor\fR(\fI$x\fR, $<y>);" 4
+.IX Item "CalcAbsCoor($x, $<y>);"
+Set the absolute coordinates of the given node, if the absolute
+coordinates of the parent node are (\fI$x\fR, \fI$y\fR), and recursively
+do this for all descendants of this node. Additionally set up
+\&\fB%node_by_gen\fR.
+.IP "\fBAddConsanguinicMarriages\fR();" 4
+.IX Item "AddConsanguinicMarriages();"
+Check the pedigree and add consanguinic marriages to it. Note
+that this procedure must be called \fBafter\fR SetAbsCoor, so
+the coordinates of all nodes are set.
+.IP "\fBAddTwins\fR(\fI$ydist\fR);" 4
+.IX Item "AddTwins($ydist);"
+Check the pedigree and add twin nodes. Note
+that this procedure must be called \fBafter\fR SetAbsCoor and
+AddConsanguinicMarriages.
+.IP "\fBSetFrame\fR(\fI$xidst\fR, \fI$ydist\fR);" 4
+.IX Item "SetFrame($xidst, $ydist);"
+Calculate the frame: coordinates of the lower left and upper right
+corners of the picture (in ps units). As a side effect, add generation
+numbers to each person node and calculate the X index of each node.
+.IP "\fBDrawConnections\fR();" 4
+.IX Item "DrawConnections();"
+Draw the connections from the given node to its descendants
+.IP "\fBDrawAll\fR(\fI$xdist\fR, \fI$ydist\fR, \fI$belowtextfont\fR, \fI$abovetextfont\fR, \fI@fieldsfornode\fR);" 4
+.IX Item "DrawAll($xdist, $ydist, $belowtextfont, $abovetextfont, @fieldsfornode);"
+Draw all nodes and connections in the form suitable for
+pspicture
+.IP "\fBPrintAllLegends\fR(\fI$lang\fR, \fI@fields\fR);" 4
+.IX Item "PrintAllLegends($lang, @fields);"
+Print legend for all the nodes. The first parameter is the
+language, the other is the fields to be included in the legend.
+.IP "\fBPrintLegend\fR(\fI$lang\fR, \fI@fields\fR);" 4
+.IX Item "PrintLegend($lang, @fields);"
+This subroutine does nothing: a generic node has no legend. It
+is overriden by \fIPedigree::PersonNode\fR\|(3) and \fIPedigree::AbortionNode\fR\|(3).
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+The calling program should define \fB$main::DEBUG\fR and set it to 0
+or 1.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3)
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Boris Veytsman, Leila Akhmadeeva, 2006, 2007
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Parser.3 b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Parser.3
new file mode 100644
index 00000000000..44165db384e
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/Parser.3
@@ -0,0 +1,162 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "Pedigree::Parser 3"
+.TH Pedigree::Parser 3 "2007-07-16" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+Pedigree::Parser \- parser for the input file
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+use Pedigree::Parser;
+.PP
+$parser = new Pedigree::Parser(I{$inputline>, \fI$lang\fR)
+.PP
+$parser\->Parse($inputline);
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This package parses input for the pedigree library and is used to
+define nodes.
+.IP "\fBnew\fR(\fI$inputline\fR, \fI$lang\fR);" 4
+.IX Item "new($inputline, $lang);"
+Construct a new parser from the pipe-separated line at input
+.IP "\fBParse\fR(\fI$inputline\fR);" 4
+.IX Item "Parse($inputline);"
+Take a line of comma-separated values; return a reference to a
+hash of parsed values
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+The calling program should define \fB$main::DEBUG\fR and set it to 0
+or 1.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3)
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Boris Veytsman, Leila Akhmadeeva, 2006, 2007
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/PersonNode.3 b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/PersonNode.3
new file mode 100644
index 00000000000..af03e1c7c89
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/PersonNode.3
@@ -0,0 +1,212 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "Pedigree::PersonNode 3"
+.TH Pedigree::PersonNode 3 "2007-07-22" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+Pedigree::PersonNode \- a person in a pedigree
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+use Pedigree::PersonNode;
+.PP
+$node = new Pedigree::PersonNode(\fI%params\fR);
+.PP
+$Id = \f(CW$node\fR\->\fIMotherId()\fR;
+\&\f(CW$Id\fR = \f(CW$node\fR\->\fIFatherId()\fR;
+.PP
+$isProband = \f(CW$node\fR\->\fIisProband()\fR;
+.PP
+$sex = \f(CW$node\fR\->\fISex()\fR;
+.PP
+$DoB = \f(CW$node\fR\->\fIDoB()\fR;
+.PP
+$DoD = \f(CW$node\fR\->\fIDoD()\fR;
+.PP
+$cond = \f(CW$node\fR\->\fICondition()\fR;
+.PP
+$GenName = \f(CW$node\fR\->\fIGetGenName()\fR;
+.PP
+$node\->SetGenName(\fI$name\fR);
+.PP
+$node\->DrawNode(\fI$xidst\fR, \fI$ydist\fR, \fI$belowtextfont\fR, \fI$abovetextfont\fR,
+\&\fI@fieldsfornode\fR);
+.PP
+$node\->PrintLegend(\fI$land\fR, \fI@fields\fR);
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This package contains data about a person.
+.IP "\fBnew\fR(\fI%params\fR);" 4
+.IX Item "new(%params);"
+Construct a new node from the given parameters.
+.IP "\fBMotherId\fR();" 4
+.IX Item "MotherId();"
+Return Mother Id.
+.IP "\fBFatherId\fR();" 4
+.IX Item "FatherId();"
+Return Father Id.
+.IP "\fBisProband\fR();" 4
+.IX Item "isProband();"
+Return 1 if the pesron is a Proband and zero otherwise
+.IP "\fBSex\fR();" 4
+.IX Item "Sex();"
+Get the sex of the node
+.IP "\fBDoB\fR();" 4
+.IX Item "DoB();"
+Get the DoB of the node
+.IP "\fBDoD\fR();" 4
+.IX Item "DoD();"
+Get the DoB of the node
+.IP "\fBCondition\fR();" 4
+.IX Item "Condition();"
+Returns node conditon.
+.IP "\fBGetGenName\fR();" 4
+.IX Item "GetGenName();"
+Find the generation name for the node
+.IP "\fBSetGenName\fR(\fI$name\fR);" 4
+.IX Item "SetGenName($name);"
+Set the generation name of the node
+.IP "\fBDrawNode\fR(\fI$xdist\fR, \fI$ydist\fR, \fI$belowtextfont\fR, \fI$abovetextfont\fR, \fI@fieldsfornode\fR);" 4
+.IX Item "DrawNode($xdist, $ydist, $belowtextfont, $abovetextfont, @fieldsfornode);"
+Output the command to draw this node. The parameters are
+distances between the nodes (in cm) and fields for abovetext.
+.IP "\fBPrintLegend\fR(\fI$lang\fR, \fI@fields\fR);" 4
+.IX Item "PrintLegend($lang, @fields);"
+Print the legend for the given node, including \fI@fields\fR in the given
+language \fI$lang\fR.
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+The calling program should define \fB$main::DEBUG\fR and set it to 0
+or 1.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3)
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Boris Veytsman, Leila Akhmadeeva, 2006, 2007
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/TwinsNode.3 b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/TwinsNode.3
new file mode 100644
index 00000000000..79f11db2c35
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/Pedigree/TwinsNode.3
@@ -0,0 +1,169 @@
+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "Pedigree::TwinsNode 3"
+.TH Pedigree::TwinsNode 3 "2007-07-15" "perl v5.8.8" "User Contributed Perl Documentation"
+.SH "NAME"
+Pedigree::TwinsNode \- an auxillary twins node in a pedigree
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+use Pedigree::TwinsNode;
+.PP
+$node = new Pedigree::TwinsNode(\fI%params\fR);
+.PP
+$node\->DrawNode(\fI$xidst\fR, \fI$ydist\fR, \fI$belowtextfont\fR, \fI$abovetextfont\fR,
+\&\fI@fieldsfornode\fR);
+.PP
+$node\->\fIDrawConnections()\fR;
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This package contains data about a twins node. Twins node is
+a special node between the parent and the twins.
+.IP "\fBnew\fR(\fI%params\fR);" 4
+.IX Item "new(%params);"
+Construct a new node from the given parameters.
+.IP "\fBDrawNode\fR(\fI$xdist\fR, \fI$ydist\fR, \fI$belowtextfont\fR, \fI$abovetextfont\fR, \fI@fieldsfornode\fR);" 4
+.IX Item "DrawNode($xdist, $ydist, $belowtextfont, $abovetextfont, @fieldsfornode);"
+Output the command to draw this node. The parameters are
+distances between the nodes (in psunits).
+.IP "\fBDrawConnections\fR();" 4
+.IX Item "DrawConnections();"
+Draw the connections from the given node to its descendants and
+the parent
+.SH "ENVIRONMENT"
+.IX Header "ENVIRONMENT"
+The calling program should define \fB$main::DEBUG\fR and set it to 0
+or 1.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fIpedigree\fR\|(1), \fIPedigree\fR\|(3)
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Boris Veytsman, Leila Akhmadeeva, 2007
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/README b/Master/texmf-dist/doc/support/pedigree-perl/README
new file mode 100644
index 00000000000..edc6821f949
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/README
@@ -0,0 +1,31 @@
+ A Program for Generation TeX Pedigrees From CSV Files
+ Boris Veytsman & Leila Akhmadeeva
+ Version 0.4, March 2012
+
+This program generates TeX commands to typeset pedigrees - either TeX
+fragments of full LaTeX files. It has support for multilanguage
+pedigrees (at the present moment English and Russian languages are
+supported).
+
+To create manual pages for this program, issue make in the main
+directory. To install the program and the library files issue make
+install (this command assumes location /usr/local/bin/ for the
+binaries and /usr/local/lib/site_perl for Perl libraries). Optionally
+you can install manual pages to the proper location on your system.
+The typeset manual in in the doc subdirectory.
+
+For manual installation:
+
+1. Install pedigree.pl as /usr/local/bin/pedigree
+
+2. Install Pedigree subdirectory as /usr/local/lib/site_perl/Pedigree
+ and move there all .pm modules.
+
+3. Optionally install man pages & documentation.
+
+Copyright 2006-2012, Boris Veytsman <borisv@lk.net>, Leila Akhmadeeva
+
+This work may be distributed and/or modified under the conditions of
+the GNU Public License, either version 2 of this license or (at your
+option) any later version.
+
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/doc/Makefile b/Master/texmf-dist/doc/support/pedigree-perl/doc/Makefile
new file mode 100644
index 00000000000..864566de3b7
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/doc/Makefile
@@ -0,0 +1,75 @@
+#
+# Makefile for pedigree program
+#
+# This file is in public domain
+#
+# $Id: Makefile,v 2.10 2007-07-29 19:52:53 boris Exp $
+#
+
+TEXFILES = pedigree.tex
+
+INCLUDES = \
+ english.tex \
+ english1.tex \
+ russian.tex \
+ twins.tex \
+ abortions.tex \
+ childlessness.tex \
+ sort1.tex \
+ sort2.tex \
+ sort3.tex \
+ badsort.tex \
+ consanguinic.tex
+
+
+PDFS = ${TEXFILES:%.tex=%.pdf}
+
+all: $(PDFS)
+
+
+%.pdf: %.ps
+ ps2pdf -sAutoRotatePages=None $<
+
+%.ps: %.dvi
+ dvips -Ppdf -o $@ $<
+
+
+#
+# We need to cancel the implicit rule
+#
+%.dvi: %.tex
+
+%.dvi: %.tex $(INCLUDES)
+ latex $<
+ - bibtex $*
+ latex $<
+ latex $<
+ while ( grep -q '^LaTeX Warning: Label(s) may have changed' $*.log) \
+ do latex $<; done
+
+
+%.tex: ../examples/english_short.cfg ../examples/%.csv
+ cd ..; perl -I. pedigree.pl -c examples/english_short.cfg -o doc/$*.tex examples/$*.csv
+
+
+english1.tex: ../examples/english1.cfg ../examples/english.csv
+ cd ..; perl -I. pedigree.pl -c examples/english1.cfg -o doc/$@ examples/english.csv
+
+abortions.tex: ../examples/english.cfg ../examples/abortions.csv
+ cd ..; perl -I. pedigree.pl -c examples/english.cfg -o doc/$@ examples/abortions.csv
+
+
+english.tex: ../examples/english.cfg ../examples/english.csv
+ cd ..; perl -I. pedigree.pl -c examples/english.cfg -o doc/$@ examples/english.csv
+
+russian.tex: ../examples/russian.cfg ../examples/russian.csv
+ cd ..; perl -I. pedigree.pl -c examples/russian.cfg -o doc/$@ examples/russian.csv
+
+
+
+clean:
+ $(RM) *.aux *.bbl *.dvi *.log *.out *.toc *.blg *.lof *.lot *.lol pst-pdgr.tex pst-pdgr.sty
+
+distclean: clean
+ rm -f ${PDFS} $(INCLUDES)
+
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/doc/abortions.tex b/Master/texmf-dist/doc/support/pedigree-perl/doc/abortions.tex
new file mode 100644
index 00000000000..c6d33951c25
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/doc/abortions.tex
@@ -0,0 +1,19 @@
+{%
+\psset{descarmA=0.8}%
+\begin{pspicture}(-4,-4)(4,2)
+\rput(0, 0){\pstPerson[female, affected, belowtext={\small I:1}, abovetext={\scriptsize Ann}]{A0}}
+\rput(2, -2){\pstPerson[male, affected, belowtext={\small II:3}, proband, abovetext={\scriptsize John}]{B3}}
+\rput(-2, -2){\pstAbortion[affected, belowtext={\small II:1}, abovetext={\scriptsize female}]{B1}}
+\rput(0, -2){\pstAbortion[normal, belowtext={\small II:2}, sab, abovetext={\scriptsize male}]{B2}}
+\pstDescent{A0}{B1}
+\pstDescent{A0}{B2}
+\pstDescent{A0}{B3}
+\end{pspicture}%
+}
+
+\begin{description}
+\item[I:1] Ann; born: 1970.06.15.
+\item[II:1] abortion; born: 1990.03.01.
+\item[II:2] abortion; born: 2000.10.10.
+\item[II:3] John; born: 2002.12.01.
+\end{description}
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/doc/english.tex b/Master/texmf-dist/doc/support/pedigree-perl/doc/english.tex
new file mode 100644
index 00000000000..5d812a19c27
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/doc/english.tex
@@ -0,0 +1,46 @@
+{%
+\psset{descarmA=0.8}%
+\begin{pspicture}(-8,-4)(6,4)
+\rput(-6, 2){\pstPerson[male, normal, belowtext={\small I:1}, deceased, abovetext={\scriptsize Joseph Smith}]{GF1}}
+\rput(0, 2){\pstPerson[male, normal, belowtext={\small I:3}, abovetext={\scriptsize Jim Brown}]{GF2}}
+\rput(4, 2){\pstPerson[female, normal, belowtext={\small I:4}, abovetext={\scriptsize Lisa Brown}]{GM2}}
+\rput(2, 2){\pnode{GF2_m_GM2}}
+\rput(-4, 2){\pnode{GF1_m_GM1}}
+\rput(-2, 2){\pstPerson[female, asymptomatic, belowtext={\small I:2}, deceased, abovetext={\scriptsize Joan Smith}]{GM1}}
+\rput(0, 0){\pnode{F1_m_M1}}
+\rput(-5, 0){\pstPerson[female, obligatory, belowtext={\small II:1}, abovetext={\scriptsize Ann Gold}]{A1}}
+\rput(2, 0){\pstPerson[female, normal, belowtext={\small II:3}, abovetext={\scriptsize Mary Smith}]{M1}}
+\rput(-3, 0){\pstPerson[male, affected, belowtext={\small II:2}, abovetext={\scriptsize Bill Smith}]{F1}}
+\rput(0, -2){\pstPerson[female, affected, belowtext={\small III:3}, abovetext={\scriptsize Rebecca Smith}]{S1}}
+\rput(2, -2){\pstPerson[male, normal, belowtext={\small III:4}, abovetext={\scriptsize Alexander Smith}]{S2}}
+\rput(-2, -2){\pstPerson[male, affected, belowtext={\small III:2}, proband, abovetext={\scriptsize John Smith}]{P}}
+\rput(-5, -2){\pstPerson[female, affected, belowtext={\small III:1}, abovetext={\scriptsize Jenny Smith}]{C1}}
+\pstDescent{GF2_m_GM2}{M1}
+\ncline[]{GF2_m_GM2}{GM2}
+\ncline[]{GF2_m_GM2}{GF2}
+\pstDescent{GF1_m_GM1}{A1}
+\pstDescent{GF1_m_GM1}{F1}
+\ncline[]{GF1_m_GM1}{GM1}
+\ncline[]{GF1_m_GM1}{GF1}
+\pstDescent{F1_m_M1}{P}
+\pstDescent{F1_m_M1}{S1}
+\pstDescent{F1_m_M1}{S2}
+\ncline[]{F1_m_M1}{M1}
+\ncline[]{F1_m_M1}{F1}
+\pstDescent{A1}{C1}
+\end{pspicture}%
+}
+
+\begin{description}
+\item[I:1] Joseph Smith; born: unknown; age at death: unknown.
+\item[I:2] Joan Smith; born: 1902/07/01; age at death: 73.
+\item[I:3] Jim Brown; born: 1905/11/01.
+\item[I:4] Lisa Brown; born: 1910/03/03.
+\item[II:1] Ann Gold; born: 1941/09/02; Aunt of the proband.
+\item[II:2] Bill Smith; born: 1938/04/03.
+\item[II:3] Mary Smith; born: 1940/02/05.
+\item[III:1] Jenny Smith; born: 1969/12/03; Cousin of the proband.
+\item[III:2] John Smith; born: 1970/02/05; Evaluated 2005/12/01.
+\item[III:3] Rebecca Smith; born: 1972/12/25.
+\item[III:4] Alexander Smith; born: 1975/11/12.
+\end{description}
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/doc/english1.tex b/Master/texmf-dist/doc/support/pedigree-perl/doc/english1.tex
new file mode 100644
index 00000000000..a652cdbb048
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/doc/english1.tex
@@ -0,0 +1,32 @@
+{%
+\psset{descarmA=0.9}%
+\begin{pspicture}(-6,-3.6)(4.5,3.6)
+\rput(-4.5, 1.8){\pstPerson[male, normal, belowtext={\small I:1}, deceased]{GF1}}
+\rput(0, 1.8){\pstPerson[male, normal, belowtext={\small I:3}]{GF2}}
+\rput(3, 1.8){\pstPerson[female, normal, belowtext={\small I:4}]{GM2}}
+\rput(1.5, 1.8){\pnode{GF2_m_GM2}}
+\rput(-3, 1.8){\pnode{GF1_m_GM1}}
+\rput(-1.5, 1.8){\pstPerson[female, asymptomatic, belowtext={\small I:2}, deceased]{GM1}}
+\rput(0, 0){\pnode{F1_m_M1}}
+\rput(-3.75, 0){\pstPerson[female, obligatory, belowtext={\small II:1}]{A1}}
+\rput(1.5, 0){\pstPerson[female, normal, belowtext={\small II:3}]{M1}}
+\rput(-2.25, 0){\pstPerson[male, affected, belowtext={\small II:2}]{F1}}
+\rput(0, -1.8){\pstPerson[female, affected, belowtext={\small III:3}]{S1}}
+\rput(1.5, -1.8){\pstPerson[male, normal, belowtext={\small III:4}]{S2}}
+\rput(-1.5, -1.8){\pstPerson[male, affected, belowtext={\small III:2}, proband]{P}}
+\rput(-3.75, -1.8){\pstPerson[female, affected, belowtext={\small III:1}]{C1}}
+\pstDescent{GF2_m_GM2}{M1}
+\ncline[]{GF2_m_GM2}{GM2}
+\ncline[]{GF2_m_GM2}{GF2}
+\pstDescent{GF1_m_GM1}{A1}
+\pstDescent{GF1_m_GM1}{F1}
+\ncline[]{GF1_m_GM1}{GM1}
+\ncline[]{GF1_m_GM1}{GF1}
+\pstDescent{F1_m_M1}{P}
+\pstDescent{F1_m_M1}{S1}
+\pstDescent{F1_m_M1}{S2}
+\ncline[]{F1_m_M1}{M1}
+\ncline[]{F1_m_M1}{F1}
+\pstDescent{A1}{C1}
+\end{pspicture}%
+}
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/doc/pedigree.bib b/Master/texmf-dist/doc/support/pedigree-perl/doc/pedigree.bib
new file mode 100644
index 00000000000..a705bc192c7
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/doc/pedigree.bib
@@ -0,0 +1,49 @@
+,-------------------.
+| BIBTEX ENTRIES |
+`-------------------'
+
+@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{pst-pdgr06,
+ title = {Creating Medical Pedigrees with PSTricks and \LaTeX},
+ author = {Boris Veytsman and Leila Akhmadeeva},
+ month = {July},
+ year = 2007,
+ note = {\url{http://ctan.tug.org/tex-archive/graphics/pstricks/contrib/pedigree/pst-pdgr}}
+}
+
+@Manual{PSTricks93,
+ title = {PSTricks: PostScript Macros for Generic \TeX},
+ author = {Van Zandt, Timothy},
+ editor = {Denis Girou},
+ month = {July},
+ year = 2007,
+ note = {\url{http://ctan.tug.org/tex-archive/graphics/pstricks/base/doc}}
+}
+
+
+@book{GraphDrawing99,
+ address = {New Jersey},
+ author = {Di Battista, Giuseppe and Peter Eades and
+ Roberto Tamassia and Ioannis G. Tollis},
+ publisher = {Prentice Hall},
+ series = {An Alan R.~Apt Book},
+ title = {Graph Drawing: Algortihms for the Visualization of
+ Graphs},
+ year = {1999},
+}
+
+This file is in public domain \ No newline at end of file
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/doc/pedigree.pdf b/Master/texmf-dist/doc/support/pedigree-perl/doc/pedigree.pdf
new file mode 100644
index 00000000000..d31d1565a50
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/doc/pedigree.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/doc/pedigree.tex b/Master/texmf-dist/doc/support/pedigree-perl/doc/pedigree.tex
new file mode 100644
index 00000000000..51fb4361011
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/doc/pedigree.tex
@@ -0,0 +1,1153 @@
+\documentclass{article}
+\usepackage[koi8-r]{inputenc}
+\usepackage[russian, english]{babel}
+\usepackage{pst-pdgr}
+\usepackage{pstricks-add}
+\usepackage{url}
+\usepackage{fancyvrb}
+\usepackage{listings}
+\lstset{language=Perl, captionpos=b, basicstyle=\ttfamily,
+abovecaptionskip=\abovedisplayskip,
+belowcaptionskip=\belowdisplayskip}
+\renewcommand{\lstlistlistingname}{List of Listings}
+\usepackage{graphicx}
+\usepackage{paralist}
+\psset{descarmA=1}
+\newcommand{\program}[1]{\textsf{#1}}
+\usepackage[breaklinks,colorlinks,linkcolor=black,citecolor=black,
+ pagecolor=black,urlcolor=black]{hyperref}
+\DefineShortVerb{\|}
+\begin{document}
+\selectlanguage{english}
+\title{A Program For Automatic Pedigree Construction With \path{pst-pdgr}\\
+ User Manual and Algorithm Description}
+\author{Boris Veytsman, \path{borisv@lk.net} \and Leila Akhmadeeva}
+\date{March 2012}
+\maketitle
+\begin{abstract}
+ The set of macros in \path{pst-pdgr} package allows to typeset
+ complex pedigrees. However, a manual placement of pedigree symbols
+ on a canvas is a time-consuming task. This program produces \TeX{}
+ files from spreadsheets with the data on inheritance for a large
+ class of pedigrees. It has a simple interface and can be used for
+ quite complex pedigrees.
+\end{abstract}
+
+\begin{center}
+ \input{english1.tex}
+\end{center}
+
+\clearpage
+
+\tableofcontents
+\listoffigures
+\listoftables
+\lstlistoflistings
+\clearpage
+
+
+\part{User Manual}
+\label{part:manual}
+
+
+\section{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.'' The package
+\path{pst-pdgr}~\cite{pst-pdgr06} provides a set of PSTricks macros
+(see~\cite{PSTricks93}) to typeset pedigrees. In the framework of
+\path{pst-pdgr} the user manually chooses coordinates for each
+pedigree node on the diagram. While this is relatively easy for small
+pedigrees, this task becomes increasingly time-consuming for larger
+ones. There may be several approaches to automate it. For example,
+one may have data about the patients and their families in a
+spreadsheet or database. Then it would be useful to generate
+pedigrees from such data. This is the aim of the program
+\path{pedigree} described in this manual.
+
+Spreadsheets and databases can export the data as separated
+values files (``csv'' files for Comma Separated Values). Our program
+reads these files and outputs LaTeX{} code with \path{pst-pdgr}
+macros. We tried to make this code readable, so a user might tweak it
+if necessary.
+
+Of course, manually produced \LaTeX{} code is more versatile than the
+automatically generated one. There are certain limitations for the
+program:
+\begin{inparaenum}
+\item only persons having common genes with the proband or the
+ ``starting person'' are included in the
+ pedigree;
+\item no adopted children, sperm donors or surrogate
+ mothers are shown on the pedigree;
+\item only one disease is shown on the chart;
+\item the support for consanguinic unions and inbreeding is rather
+ experimental (see Section~\ref{sec:consanguinic}).
+\end{inparaenum}
+Subsequent versions of the program may ease some of these
+limitations.
+
+\section{Installation}
+\label{sec:install}
+
+\subsection{System Requirements}
+\label{sec:reqs}
+
+The program requires \program{Perl} version~5 or newer (it was tested
+with \program{Perl} v5.8.8, but should work with any
+\program{Perl-5}). The \LaTeX{} macros require \path{pst-pdgr}
+version~0.3 (July 2007) or newer.
+
+\subsection{Unix/Linux Installation}
+\label{sec:install_unix}
+
+If your system has a working \program{make} program, which is the
+usual case for Unix-like environments, the supplied \path{Makefile}
+installs the executable \path{pedigree} in \path{/usr/local/bin}, the
+libraries in \path{/usr/local/lib/site_perl} and the manual pages in
+\path{/usr/local/man}. This is done by the usual command
+|make install|. Optionally you can install files in the
+\path{doc} and \path{examples} subdirectories in the proper places in
+your system.
+
+\subsection{Installation in Other Systems}
+\label{sec:other}
+
+If your system does not have \program{make}, you need to manually
+perform the following:
+\begin{enumerate}
+\item Install the executable \path{pedigree.pl} to the place your
+ system can find it.
+\item Install the libraries: \path{Pedigree.pm}, directory
+ \path{Pedigree} and all files in it to the \program{Perl} search
+ path. The latter is listed in the array \path{@INC}, which can be
+ checked by the command |perl -V| or its equivalent.
+\end{enumerate}
+
+\section{Configuration}
+\label{sec:config}
+
+
+\subsection{Configuration Variables and Location of Configuration File}
+\label{sec:conf_file}
+
+The program defaults are sufficient for most cases. However, if you
+want to draw pedigrees in a language other than English, or to tweak
+the layout of the pedigrees, you need to change the program
+configuration.
+
+The behavior of the program \program{pedigree} is determined by
+\emph{configuration variables.} There are several sources of
+configuration variables. They are (in the order of increasing
+priority):
+\begin{enumerate}
+\item Program defaults.
+\item The system configuration file\footnote{On Unix-like systems,
+ where \path{/etc} exists} \path{/etc/pedigree.cfg}. On \TeX Live
+ the system coniguration files are
+ \path{$TEXMFHOME/texmf-config/pedigree/pedigree.cfg} and
+ \path{$TEXMFLOCAL/pedigree/pedigree.cfg}.
+\item User configuration file\footnote{On Unix-like systems, where
+ \path{$HOME} exists} \path{$HOME/.pedigreerc}.
+\item The file specified by the |-c| option (see
+ Section~\ref{sec:invocation}).
+\end{enumerate}
+If a file mentioned in this list does not exists, the program
+silently\footnote{Unless \path{-d} option is selected, see
+ Section~\ref{sec:invocation}} continues.
+
+Note that even if a configuration file with higher priority exists,
+the program reads the files with lower priority first. The former
+\emph{overrides} the latter, but not precludes it from reading. In
+other words, if \path{/etc/pedigree.cfg} defines variables
+\lstinline|$foo| and \lstinline|$bar|, and \path{$HOME/.pedigreerc}
+defines \lstinline|$bar| and \lstinline|$baz|, the program takes
+\lstinline|$foo| from the first file, and \lstinline|$bar| and
+\lstinline|$baz| from the second one.
+
+
+\subsection{Configuration File Format}
+\label{sec:conf_file_format}
+
+All configuration files mentioned in Section~\ref{sec:conf_file}, have
+the same format. They are actually snippets of \program{Perl} code,
+executed by the program \program{pedigree}. This means, by the way,
+that all precautions usually taken with respect to programs and
+scripts, are relevant for configuration files as well. In particular,
+it is a bad idea to have world-writable system-wide configuration
+file \path{/etc/pedigree.cfg}.
+
+The code in configuration files is very simple, and one does not need
+to know \program{Perl} to edit configuration files. There are several
+simple rules which are enough to understand these files:
+\begin{enumerate}
+\item All text after \lstinline|#| to the end of the line is a
+ comments. In particular, the lines starting with \lstinline|#|, are
+ comment lines.
+\item \program{Perl} commands must end by semicolon \lstinline|;|.
+\item The commands like
+ \begin{lstlisting}
+ $xdist=1.5;
+ \end{lstlisting}
+ or
+ \begin{lstlisting}
+ @fieldsforprint=qw(Name DoB);
+ \end{lstlisting}
+ assign values to the variables.
+\item Variables starting with \lstinline|$| are scalars and
+ take numerical or string values. Variables starting with
+ \lstinline|@| are arrays and take list of values.
+\item A backslash in single quotes stands for itself, A backslash in
+ double quotes or inside \lstinline|<<END|\dots\lstinline|END|
+ construction must be doubled. Compare the commands
+ \begin{lstlisting}
+ $foo='\documentclass';
+ $bar="\\documentclass";
+ \end{lstlisting}
+\item The last command in the file must be
+ \begin{lstlisting}
+ 1;
+ \end{lstlisting}
+\end{enumerate}
+
+A number of commented configuration files can be found in the
+\path{examples} subdirectory of the distribution.
+
+In the remaining parts of this section we describe the configuration
+variables in detail.
+
+\subsection{\TeX{} Output Setup}
+\label{sec:conf_tex}
+
+A number of variables determine what kind of \TeX{} file is produced.
+An example of their usage is shown on Listing~\ref{lst:tex}.
+
+The variable \lstinline|$fulldoc| determines whether the program
+produces a full \LaTeX{} file with header and preamble (when
+\lstinline|$fulldoc=1|), or just a snippet to be included in a larger
+document (when \lstinline|$fulldoc=0|). The default is 1.
+
+The variable \lstinline|$documentheader| is used when
+\lstinline|$fulldoc| is 1. It determines the document class of the
+resulting \LaTeX{} file. The default is |article| class, set by
+|\documentclass{article}|.
+
+By default the preamble of the \LaTeX{} file created when
+\lstinline|$fulldoc| is 1, contains only the line
+|\usepackage{pst-pdgr}| and, if the language chosen is not English
+(see Section~\ref{sec:conf_lang}), the calls of \program{babel} and
+\program{inputenc} packages. The variable \lstinline|$addtopreamble|,
+if set, may contain any other \LaTeX{} code you might wish to add to
+the preamble.
+
+The variable \lstinline|$printlegend| determines whether to add legend
+to the pedigree. The default value is 1, and the legend is printed.
+
+\begin{lstlisting}[float, caption={Configuration File: Setting \TeX{} Output},
+ label=lst:tex]
+# Do we want to have a full LaTeX
+# file or just a fragment?
+#
+$fulldoc=1;
+
+# What kind of document do we want
+#
+$documentheader='\documentclass{article}';
+
+# Define additional packages here
+#
+$addtopreamble=<<END;
+\\usepackage{pst-pdgr}
+END
+
+# Do we want to print a legend?
+#
+$printlegend=1;
+\end{lstlisting}
+
+
+\subsection{What to Print}
+\label{sec:what_to_print}
+
+The next groups of configuration variables sets the information to be
+printed in the legend and on the pedigree. It consists of two arrays:
+array \lstinline|@fieldsforlegend| is the list of fields (see
+Section~\ref{sec:data_file}) which are included in the legend, and
+array \lstinline|@fieldsforchart| is the list of fields to print near
+each node in the pedigree (Listing~\ref{lst:what_to_print}). Setting
+\lstinline|@fieldsforchart| to empty array:
+\begin{lstlisting}
+@fieldsforchart = ();
+\end{lstlisting}
+prevents putting additional information on the pedigrees.
+
+The field names are described in Section~\ref{sec:data_file}. Note
+that |AgeAtDeath| is a special field: it is the age at death (or
+empty) calculated as the difference between the death date and the
+birth date.
+
+\begin{lstlisting}[float, caption={Configuration File: Choosing
+Fields to Print}, label=lst:what_to_print]
+# Fields to include in the legend.
+# Delete Name for privacy protection.
+#
+@fieldsforlegend = qw(Name DoB DoD Comment);
+
+#
+# Fields to put at the node.
+# Delete Name for privacy protection.
+#
+@fieldsforchart = qw(Name);
+\end{lstlisting}
+
+\subsection{Language and Encoding}
+\label{sec:conf_lang}
+
+The next group of variables describes the language and encoding of
+the data file input and the \LaTeX{} output. They are shown in
+Listing~\ref{lst:lang_enc}. The variable \lstinline|$language| at
+present can have one of two values: |english| (the default) or
+|russian|. If the value is |russian|, the output document preamble
+includes the line
+\begin{lstlisting}[language=tex]
+\usepackage[russian]{babel}
+\end{lstlisting}
+The variable \lstinline|$encoding| sets the encoding of the \LaTeX{}
+file if the language is not English. By default it is |cp1251|, if
+the language is Russian. Set it to |koi8-r| to choose KOI8 encoding.
+It is worth to note that the data file and the output \LaTeX{} file
+are assumed to have the same language and encoding.
+
+
+\begin{lstlisting}[float, caption={Configuration File: Choosing
+Language and Encoding}, label=lst:lang_enc]
+#
+# Language
+#
+# $language="russian";
+$language="english";
+
+#
+# Override the encoding
+#
+# $encoding="koi8-r";
+\end{lstlisting}
+
+If |$language| is not |english|, the program recognizes both English
+and native names of the fields in the data file (see
+Section~\ref{sec:data_file}).
+
+\subsection{Fonts}
+\label{sec:fonts}
+
+There are two kinds of text on the chart: the text above a node
+and the text below a node\footnote{The \TeX{}
+ package~\cite{pst-pdgr06} also allows to place text at both sides of
+the node, but the program \program{pedigree} currently does not use
+this feature.}. The fonts for them are set by the variables
+\lstinline|$belowtextfont| (by default |\small|) and
+\lstinline|$abovetextfont| (by default |\scriptsize|). Any \LaTeX{}
+font declaration like |\sffamily| or |\itshape| is allowed here. See
+Listing~\ref{lst:fonts} for an example of usage.
+
+\begin{lstlisting}[float, caption={Configuration File: Choosing
+Fonts}, label=lst:fonts]
+#
+# Fonts for the chart
+#
+$belowtextfont='\small';
+$abovetextfont='\scriptsize';
+\end{lstlisting}
+
+\subsection{Lengths}
+\label{sec:conf_dist}
+
+The next group of variables (Listing~\ref{lst:dist}) sets the
+distances between the key elements of the chart. All lengths are in
+centimeters (actually, in |unit|s, are defined in
+PSTricks~\cite{PSTricks93}).
+
+\begin{lstlisting}[float, caption={Configuration File: Choosing
+Lengths}, label=lst:dist]
+#
+# descarmA in cm
+#
+$descarmA = 0.8;
+
+#
+# Distances between nodes (in cm)
+#
+$xdist=2;
+$ydist=2;
+\end{lstlisting}
+
+The variable \lstinline|$descarmA| sets the length of the first
+segment of the descent line: from the parent node to the sibs line,
+as measured from the center of the parent (see~\cite{pst-pdgr06} for
+more details). By default it is 0.8.
+
+The variables \lstinline|$xdist| and \lstinline|$ydist| set the
+distances between the nodes along horizontal and vertical axes
+correspondingly. The default for both is 2.
+
+\subsection{Scaling and Rotation}
+\label{sec:scaling_rotation}
+
+Complex pedigrees might be too large to fit on a page. In this case a
+scaling and (or) rotation might be necessary to print the chart. Of
+course, changing the lengths described in Section~\ref{sec:conf_dist}
+might also help, but the scaling described here also changed the size
+of the pedigree symbols.
+
+There are three variables controlling the scaling and rotation of
+pedigrees: \lstinline|$maxW|, \lstinline|$maxH| and
+\lstinline|$rotate| (see Listing~\ref{lst:scaling_rotation}). The
+variables \lstinline|$maxW| and \lstinline|$maxH| are the maximal
+width and height of the chart in centimeters. Setting any of them to
+zero disables scaling.
+
+The scaling works as follows. If both height and width of the
+pedigree are smaller than the limits, no scaling is done. In the other
+case the chart is scaled while preserving the aspect ratio (by
+changing the value of |unit|, see~\cite{PSTricks93}) to fit into the
+limits.
+
+The variable |$rotate| sets the orientation of the chart. If it is
+|no|, the pedigree is never rotated, while if it |yes|, it is always
+rotated ninety degrees counterclockwise. If this variable is set to
+|maybe| (the default), the program compares the scaling for
+the non-rotated and rotated pedigrees, and chooses the orientation for
+which the scaling is closer to one.
+
+\begin{lstlisting}[float, caption={Configuration File: Choosing
+Scaling and Rotation}, label=lst:scaling_rotation]
+#
+# Maximal width and height of the pedigree in cm.
+# Set this to 0 to switch off scaling
+#
+$maxW = 15;
+$maxH = 19;
+
+#
+# Whether to rotate the page. The values are
+# 'yes', 'no' and 'maybe'
+# If 'maybe' is chosen, the pedigree is rotated
+# if this provides better scaling
+#
+$rotate = 'maybe';
+\end{lstlisting}
+
+\section{Running the Program}
+\label{sec:runnning}
+
+
+
+\subsection{Program Invocation And Options}
+\label{sec:invocation}
+
+The program \path{pedigree} is a command line program. It reads the
+data from a text file \path{input_file} and produces an output file
+with \LaTeX{} macros. The format of the input file is described in
+Section~\ref{sec:data_file}. The program invocation is:
+\begin{verbatim}
+pedigree [-c configuration_file] [-d] [-o output_file]
+ [-s start] input_file
+\end{verbatim}
+(the square brackets show optional arguments).
+
+All arguments but |input_file| are optional. They are described
+below.
+
+The option |-c| selects a \emph{configuration file.} The format
+of the configuration file is described in
+Section~\ref{sec:conf_file}. If this option is absent, the program
+uses its own default parameters, or system-wide or user's defaults, as
+explained in Section~\ref{sec:conf_file}.
+
+
+The option \path{-d} selects debugging mode. In this mode a lot of
+debugging messages are dumped to \path{stderr}.
+
+The parameter |-o| provides the name of the output file. Both
+\path{input_file} and \path{output_file} can be ``-'', which means
+\path{stdin} for the input and \path{stdout} for the output. If the
+parameter |-o| is absent, the program tries to guess the name of
+the output file from the name of the input file. If the input file is
+|foo.csv|, the output file will be |foo.tex|. On the other
+hand, if the input file is \path{stdin}, the output file is
+\path{stdout}.
+
+Usually pedigrees are built starting from the proband\footnote{The
+ proband is the first person among the relatives who came to a
+ geneticist; he or she is the primary patient.}. Only the people
+that share genes with the proband, are shown on the pedigree.
+However, in some cases, for example when there is no proband, or
+where there are several probands, it is neccessary to override this
+default and tell the program from which person to start. This is done
+using the option |-s|. If it is present, it must be followed by the
+Id of a person in the data file (see Section~\ref{sec:data_file} for
+the discussion of Id).
+
+The option |-v| is special. The invocation |pedigree -v|
+outputs the version and license information.
+
+
+\subsection{Data File}
+\label{sec:data_file}
+
+The input for the program is a separated values file. Usually such
+files are called CSV for ``comma separated values''. However, this
+program uses the vertical bar (``pipe'') \verb+|+ as a separator.
+Each line of this file is a \emph{record}. The lines are separated by
+pipes into \emph{fields.} Most SQL programs produce such files by
+default. Spreadsheet programs will make them if you choose ``Save
+As\dots'' option, and select \verb+|+ as the field separator, and
+empty text delimiter. We sometimes will call the records ``rows'' and
+the fields ``columns'' to use the familiar spreadsheet metaphor.
+Normally each row corresponds to a person in a pedigree. We will call
+this person \emph{the current person} when describing the fields.
+
+The width of the fields may not be the same in all rows (or, in other
+words, the pipes \verb+|+ may be disaligned). We make them aligned in
+the examples included in this manual just to make the text more
+readable.
+
+The first line of the data file contains the names of the fields
+(``column headers''). The fields in the subsequent lines must match
+the order of the headers. An empty field must be still included (as
+\verb+||+ or \verb+| |+). Otherwise the order of columns is arbitrary
+as long as it is the same for all rows (i.e. matches the order of
+``column headers'' in the first line).
+
+All fields but |Id| are optional. If the value is empty for all rows,
+the corresponding column can be dropped. If applicable, the default
+values for this field will be substituted by the program.
+
+On the other hand the data file can include any additional columns as
+long as their names do not clash with the names listed below and the
+special name |AgeAtDeath|. These additional columns can be included
+in the chart or legend as described in
+Section~\ref{sec:what_to_print}.
+
+Here is the list of columns and explanation of their meaning:
+\begin{description}
+\item[Id:] Each line (including the special lines described below)
+ must have a unique |Id|. The |Id| may contain only Latin letters
+ and numbers, and start with a letter.
+\item[Name:] The name of the person described in the current row.
+ There are also \emph{special names} when the current row describes
+ abortions or infertility. They are described below. The names
+ should not contain ``special symbols'' like \#, \$, \%, \_,
+ \textasciicircum, etc.
+\item[Sex:] The gender of a person. This column may have one of two
+ values: |male| or |female|. The empty value corresponds to a person
+ with unknown gender.
+\item[DoB:] The date of birth for the current person. The format is
+ |YYYY.MM.DD|. If the date of birth is not known, the field may be
+ empty or the keyword |unknown| may be used.
+\item[DoD:] The date of death for current person. The format is the
+ same as for |DoB|: |YYYY.MM.DD|. If this field is empty, the
+ corresponding person is alive. For deceased persons with an unknown
+ date of death use the keyword |unknown|. Note the subtle difference
+ between the fields |DoB| and |DoD|: an empty value for |DoB| is
+ means ``unknown birth date'' while for |DoD| it means that there is
+ no date of death at all.
+\item[Mother:] The |Id| of the mother of the person (or empty).
+\item[Father:] The |Id| of the father of the person (or empty).
+\item[Proband] This field can be either |yes| for the probands, or
+ empty (or |no|) for other persons. Note that if a pedigree has no
+ probands or several probands, the program does not know, from which
+ node to start the pedigree. Therefore in this case the option |-s|
+ must be used to explicitly set the |Id| of the starting chart node
+ (see Section~\ref{sec:invocation}).
+\item[Condition:] This column can have the values |normal|,
+ |obligatory|, |asymptomatic| or |affected|. If it is empty, the
+ default value |normal| is assumed.
+\item[Comment:] A comment about the person.
+\item[Twins:] If the current person has twins, they are listed in this
+ column separated by spaces and (or) commas. See
+ Section~\ref{sec:twins} for more details.
+\item[Type:] This column is used in certain special cases. For
+ abortions it shows the type of the abortion
+ (Section~\ref{sec:abortions}), for childless people and marriages it
+ shows the type of childnessness (Section~\ref{sec:childless}), and
+ for twins it shows the type of twins (Section~\ref{sec:twins}).
+\item[SortOrder:] This column is used when the algorithm for sorting
+ siblings and unions gives a wrong result, and a manual correction is
+ needed. See Section~\ref{sec:sorting} for the explanation and
+ examples.
+\end{description}
+
+Examples of data files (in English and Russian) are shown in
+Listing~\ref{lst:data_examples} (the Russian keywords are discussed in
+Section~\ref{sec:language}).
+
+\begin{lstlisting}[float, caption={Examples of Data Files (English and
+Russian)}, label=lst:data_examples, escapeinside={`'}]
+`
+\rotatebox{90}{%
+ \begin{minipage}{1.5\linewidth}
+ \small
+ \VerbatimInput{../examples/english.csv}
+ \bigskip
+ \selectlanguage{russian}
+ \VerbatimInput{../examples/russian.csv}
+ \end{minipage}}
+'
+\end{lstlisting}
+
+\begin{figure}
+ \centering
+ \input{english.tex}
+ \caption{Example of the Typeset Pedigree in English (Data File from
+ Listing~\ref{lst:data_examples})}
+ \label{fig:example-english-typeset}
+\end{figure}
+
+\begin{figure}
+ \centering
+ {\selectlanguage{russian}
+ \input{russian.tex}}
+ \caption{Example of the Typeset Pedigree in Russian (Data File from
+ Listing~\ref{lst:data_examples})}
+ \label{fig:example-russian-typeset}
+\end{figure}
+
+
+\subsection{Twins}
+\label{sec:twins}
+
+The column |Twins| (see Section~\ref{sec:twins}) lists all |Id|s of
+all twins of the given person. The column |Type| can be used to show
+the type of the twins. The empty value means polyzygotic twins,
+|monozygotic| means monozygotic twins, and |qzygotic| is used in the
+case when the type of twins is under doubt. An example of a data file
+with twins is shown on Listing~\ref{lst:twins}, and the corresponding
+pedigree on Figure~\ref{fig:twins}.
+
+
+\begin{lstlisting}[float, caption={Example of Data File with Twins},
+label=lst:twins, escapeinside={`'}]
+`
+ \small
+ \VerbatimInput{../examples/twins.csv}
+'
+\end{lstlisting}
+
+\begin{figure}
+ \centering
+ \input{twins.tex}
+ \caption{Example of a Pedigree with Twins (Data File from
+ Listing~\ref{lst:twins})}
+ \label{fig:twins}
+\end{figure}
+
+\subsection{Abortions}
+\label{sec:abortions}
+
+Aborted pregnancies are described by a special entry in the data file.
+The field |Name| has the value |#abortion|; the symbol |#| is used to
+show that this is a special value. The columns |Sex|, |DoB|,
+|Mother|, |Father| and |Condition| have the usual meaning. The
+special column |Type| is either empty or be equal to |sab| for
+self-abortions.
+
+\begin{lstlisting}[float, caption={Example of Data File with Abortions},
+label=lst:abortions, escapeinside={`'}]
+`
+ \small
+ \VerbatimInput{../examples/abortions.csv}
+'
+\end{lstlisting}
+
+\begin{figure}
+ \centering
+ \input{abortions.tex}
+ \caption{Example of a Pedigree with Abortions (Data File from
+ Listing~\ref{lst:abortions})}
+ \label{fig:abortions}
+\end{figure}
+
+\subsection{Childlessness and Infertility}
+\label{sec:childless}
+
+Childlessness is can be a property of a person or a union between two
+persons. Therefore in this implementation we use a special row rather
+than a column to report it. As other rows, this one has a unique
+|Id|. The |Name| column should have a special entry |#childless|.
+Like |#abortion| (Section~\ref{sec:abortions}), this special name
+starts with |#| to distinguish it from ``real'' names. There are four
+other columns that have meaning for this row:
+\begin{description}
+\item[Mother:] The |Id| of the childless female.
+\item[Father:] The |Id| of the childless male. If both |Mother| and
+ |Father| columns are not empty, the entry describes the union
+ between the |Father| and |Mother|. Of only |Mother| or |Father| is
+ not empty, the entry describes the state of the corresponding
+ person.
+\item[Type:] This column might be either empty or have a keyword
+ |infertile|. In the latter case the childlessness of the person or
+ union is caused by a proven infertility.
+\item[Comment:] The vaule of this column is shown under the
+ childlessness symbol on the chart. Put there a short description of
+ the cause of childlessness, like |anospermia| or |vasectomy|.
+\end{description}
+An example of a pedigree with childlessness is shown on
+Listing~\ref{lst:childless} and Figure~\ref{fig:childless}.
+
+\begin{lstlisting}[float, caption={Example of Data File with
+Childlessness}, label=lst:childless, escapeinside={`'}]
+`
+ \small
+ \VerbatimInput{../examples/childlessness.csv}
+'
+\end{lstlisting}
+
+\begin{figure}
+ \centering
+ \input{childlessness.tex}
+ \caption{Example of a Pedigree with Childlessness (Data File from
+ Listing~\ref{lst:childless})}
+ \label{fig:childless}
+\end{figure}
+
+\subsection{Ordering Siblings and Marriage Partners}
+\label{sec:sorting}
+
+The generations in pedigrees are ordered in vertical direction, from
+up do down. How should we order the people on the same generation,
+i.e. siblings and marriage partners?
+
+Usually two rules are used:
+\begin{enumerate}
+\item The siblings are ordered from the oldest on the left to the
+ youngest to the right.\label{item:sibling_order}
+\item In marriage or other union the male is to the left, and the
+ female is to the right.
+\end{enumerate}
+However, the combination of these rules might lead to the situation
+when marriage lines intersect the parental lines. Therefore the
+rule~\ref{item:sibling_order} is usually implicitly modified:
+\begin{enumerate}
+\item[\ref{item:sibling_order}a.] The are ordered from the oldest on
+ the left to the youngest to the right. However, if a sibling's
+ marriage is shown on a pedigree, this sibling is always the
+ rightmost (male) or the leftmost (female).
+\end{enumerate}
+The program follows these rules. It is enough to draw pedigrees in
+most cases. In particular, they always produce correct pedigrees if
+there is only one marriage shown. However, in complex cases these
+rules fail, as shown on Listing~\ref{lst:sort1} and
+Figure~\ref{fig:sort1}. It is possible to extend the rules
+above to account for these cases, however we chose another solution:
+to provide a facility for the manual intervention in the sorting and
+ordering algorithm. For this purpose a special column |SortOrder| is
+used. It can have positive numbers greater than 1 or negative numbers
+smaller than -1. If the value of this column is positive, the
+corresponding person is moved to the left when sorting siblings and
+to the right when sorting marriage partners. If it is negative, the
+opposite sorting rule is applied (see Section~\ref{sec:alg_sorting}
+for more detailed discussion). Note that sibling sorting and marriage
+partners sorting must work in opposite directions, otherwise marriage
+lines intersect paternal lines.
+
+\begin{lstlisting}[float, caption={A Data File with a Sorting
+Problem}, label=lst:sort1, escapeinside={`'}]
+`
+ \small
+ \VerbatimInput{../examples/sort1.csv}
+'
+\end{lstlisting}
+
+\begin{figure}
+ \centering
+ \input{sort1.tex}
+ \caption{Pedigree from Listing~\ref{lst:sort2}}
+ \label{fig:sort1}
+\end{figure}
+
+Let us return to the pedigree on Listing~\ref{lst:sort1}. To improve
+Figure~\ref{fig:sort1} we can either move Peter to the right or Lucy to
+the left. The first solution is shown on Listing~\ref{lst:sort2} and
+Figure~\ref{fig:sort2}. The second is shown on Listing~\ref{lst:sort3} and
+Figure~\ref{fig:sort3}.
+
+\begin{lstlisting}[float, caption={First Solution to the Problem in
+Listing~\ref{lst:sort1} }, label=lst:sort2, escapeinside={`'}]
+`
+ \small
+ \VerbatimInput{../examples/sort2.csv}
+'
+\end{lstlisting}
+
+\begin{figure}
+ \centering
+ \input{sort2.tex}
+ \caption{Pedigree from Listing~\ref{lst:sort2}}
+ \label{fig:sort2}
+\end{figure}
+
+\begin{lstlisting}[float, caption={Second Solution to the Problem in
+Listing~\ref{lst:sort1} }, label=lst:sort3, escapeinside={`'}]
+`
+ \small
+ \VerbatimInput{../examples/sort3.csv}
+'
+\end{lstlisting}
+
+\begin{figure}
+ \centering
+ \input{sort3.tex}
+ \caption{Pedigree from Listing~\ref{lst:sort3}}
+ \label{fig:sort3}
+\end{figure}
+
+
+Of course sometimes a pedigree cannot be drawn without
+self-intersections with any sorting of siblings. An example of such
+pedigree is shown on Listing~\ref{lst:badsort} and
+Figure~\ref{fig:badsort}. Obviously no amount of shuffling the
+siblngs can help in his case.
+
+\begin{lstlisting}[float, caption={A Pedigree with Unavoidable
+Self-Intersections}, label=lst:badsort, escapeinside={`'}]
+`
+ \small
+ \VerbatimInput{../examples/badsort.csv}
+'
+\end{lstlisting}
+
+\begin{figure}
+ \centering
+ \input{badsort.tex}
+ \caption{Pedigree from Listing~\ref{lst:badsort}}
+ \label{fig:badsort}
+\end{figure}
+
+
+If the program cannot avoid self-intersection of marriage lines and
+parental lines despite automatics sorting and manual intervention, as
+the last resort it creates a multi-segment marriage line, as shown on
+Figures~\ref{fig:sort1} and~\ref{fig:badsort}.
+
+
+\subsection{Consanguinic Unions}
+\label{sec:consanguinic}
+
+Consanguinic unions present a technical problem for the program (see
+the discussion in Section~\ref{sec:alg_consanguinic}). Therefore the
+support of consanguinicity is experimental for this release.
+
+There is a number of limitations for consanguinic unions in the data
+file at present. First, the consanguinic unions should not in the
+direct lineage of the proband or the person from which the pedigree
+starts. In many cases this limitation can eliminated by using |-s|
+option (see Section~\ref{sec:invocation}) to choose a different
+starting point for the pedigree. Second, the children of consanguinic
+unions might appear not centerd on the charts. An example of a
+pedigree with consanguinic marriages is shown on
+Listing~\ref{lst:consanguinic}, and the corresponding chart is shown
+on Figure~\ref{fig:consanguinic}. The drawbacks of the program are
+evident from the positions of Laura nad Jack on these charts.
+
+\begin{lstlisting}[float, caption={A Pedigree with Consanguinic
+Unions}, label=lst:consanguinic, escapeinside={`'}]
+`
+ \small
+ \VerbatimInput{../examples/consanguinic.csv}
+'
+\end{lstlisting}
+
+\begin{figure}
+ \centering
+ \input{consanguinic.tex}
+ \caption{Pedigree from Listing~\ref{lst:consanguinic}}
+ \label{fig:consanguinic}
+\end{figure}
+
+
+
+\subsection{Language-Dependent Keywords}
+\label{sec:language}
+
+At present the program \program{pedigree} can work with English and
+Russian languages. As discussed in Section~\ref{sec:conf_lang}, the
+language options chooses \emph{both} the languages of input and output
+files. It is easy to add new languages to the scheme by expanding the
+library |Pedigree::Language.pm| in the distribution.
+
+The English language is the default. Moreover, if the Russian option
+is chosen, English keywords are still recognized in the input file.
+
+The English and Russian keywords are listed in
+Table~\ref{tab:keywords}. Note that some keywords have variants;
+they are listed in the table as well.
+
+\begin{table}
+ \centering
+ \begin{tabular}{lll}
+ \hline
+ English keyword & English variants & Russian keywords \\
+ \hline
+ \multicolumn{3}{l}{\textbf{Field Names}}\\
+ Id & & \foreignlanguage{russian}{Идент}\\
+ Name & & \foreignlanguage{russian}{ФИО}\\
+ Sex & & \foreignlanguage{russian}{Пол}\\
+ DoB & & \foreignlanguage{russian}{Рожд}\\
+ DoD & & \foreignlanguage{russian}{Умер}\\
+ Mother & & \foreignlanguage{russian}{Мать}\\
+ Father & & \foreignlanguage{russian}{Отец}\\
+ Proband & & \foreignlanguage{russian}{Пробанд}\\
+ Condition & & \foreignlanguage{russian}{Состояние}\\
+ Comment & & \foreignlanguage{russian}{Комментарий}\\
+ Type & & \foreignlanguage{russian}{Тип}\\
+ Twins & & \foreignlanguage{russian}{Близнецы}\\
+ SortOrder & Sort & \foreignlanguage{russian}{ПорядокСортировки,
+ Сорт}\\
+ \multicolumn{3}{l}{\textbf{Field Values}}\\
+ male & & \foreignlanguage{russian}{муж, м}\\
+ female & & \foreignlanguage{russian}{жен, ж}\\
+ unknown & & \foreignlanguage{russian}{неизв, неизвестно}\\
+ yes & & \foreignlanguage{russian}{да}\\
+ no & & \foreignlanguage{russian}{нет}\\
+ normal & & \foreignlanguage{russian}{норм, здоров}\\
+ obligatory & obligat & \foreignlanguage{russian}{облигат}\\
+ asymptomatic & asymp & \foreignlanguage{russian}{асимп}\\
+ affected & affect & \foreignlanguage{russian}{больн, болен}\\
+ infertile & & \foreignlanguage{russian}{бесплодн}\\
+ sab & & \foreignlanguage{russian}{выкидыш}\\
+ monozygotic & monzygot & \foreignlanguage{russian}{монозиготн,
+ монозиг, однояйцев}\\
+ qzygotic & qzygot, ? & \foreignlanguage{russian}{?}\\
+ \multicolumn{3}{l}{\textbf{Special Names}}\\
+ |#|abortion & & |#|\foreignlanguage{russian}{аборт}\\
+ |#|childless & & |#|\foreignlanguage{russian}{бездетн}\\
+ \hline
+ \end{tabular}
+ \caption{Keywords in Different Languages}
+ \label{tab:keywords}
+\end{table}
+
+
+
+
+
+\clearpage
+
+\part{Algorithm Description}
+\label{part:algortihm}
+
+
+\section{Introduction}
+\label{sec:alg_intro}
+
+This part is intended for advanced users and is not neccessary for
+runnuing the program.
+
+The problem of nicely typesetting graphs is one of the classical
+problems in the Computer Science~\cite{GraphDrawing99}. One of the
+earliest algorithms here is the classical algorithm for layered rooted
+trees by Reingold and Tilford~\cite[\S~3.1]{GraphDrawing99}. This
+algorithm was implemented by |PSTricks|~\cite{PSTricks93}. However,
+many pedigrees are not trees~\cite{pst-pdgr06}. If we consider a
+subset of pedigrees where inbreeding is absent, the pedigrees become
+trees. However, even in this case the the tree is not necessary
+layered, as can be seen from
+Figure~\ref{fig:example-english-typeset}. Therefore a new approach
+generalizing Reingold-Tilford algorithm is necessary. This approach
+is based on the analysis of the structure of pedigrees and is
+sketched in the remainder of this manual.
+
+\section{Main Algorithm}
+\label{sec:alg}
+
+
+A pedigree consists of nodes (vertices), connected by lines (edges).
+If there is no inbreeding, the graph is acyclic. There are two kinds
+of nodes in the graph: person nodes (squares and circles on
+Figures~\ref{fig:example-english-typeset}
+and~\ref{fig:example-russian-typeset}) and \emph{marriage nodes},
+which are nameless on the figures. We will use the notation ``male
+spouse-female spouse'' for such nodes, so the marriage nodes on
+Figure~\ref{fig:example-english-typeset} are I:1-I:2, I:3-I:4 and
+II:2-II:3. A node has a \emph{precedessor} and \emph{children}. A
+marriage node does not have a precedessor, but has \emph{male spouse}
+and \emph{female spouse} (it is customary to put male spouses to the
+left and female spouses to the right on pedigrees). Any node has a
+\emph{downward tree} of its children, grandchildren etc. The downward
+tree may be empty.
+
+Any node in an acyclic graph can be a root. However, in layered
+trees there is a special root: the one that has no precedessor.
+Similarly we will call a \emph{local root} a node that has no
+predecessor. All marriage nodes are local roots. Some person nodes
+can be local roots as well.
+
+Let us first discuss the case where cobnsanguinic marriages are
+absent. In this case a pedigree is a tree.
+
+The proposed algorithm is recursive and starts from a local root.
+Strictly speaking, it can start from any local root, but medical
+pedigrees have a special person: \emph{proband,} the person who was
+the first to be examined by genetic specialists (the proband is shown by an
+arrow drawn near the node on
+Figures~\ref{fig:example-english-typeset}
+and~\ref{fig:example-russian-typeset}). Therefore it makes sense to
+start from the local root which has proband in its downward tree.
+
+If this local root is a person node, the pedigree is the layered tree,
+and Reingold-Tilford algorithm is sufficient. Therefore we should
+consider only the case when the local root is a marriage node. In
+this case we can typeset the downward tree using Reingold-Tilford
+algorithm. The spouses do not belong to this tree. However, each of
+them belongs to each own subpedigree. We will call them \emph{left
+ subpedigree} and \emph{right subpedigree}. We recursively apply our
+algorithm to typeset left and right subpedigrees. Then we move the
+left subpedigree to the right and right subpedigree to the left as far
+as we can without intersection between them and the downward tree.
+
+This process is shown on Figure~\ref{fig:subpedigrees}. Obviously
+this algorithm converges and leads to typesetting the pedigree without
+intersections between the subtrees and subpedigrees.
+
+\begin{figure}
+ \centering
+ \begin{pspicture}(-7,-4)(5.5,4)
+% \psgrid(-8,-4)(6,4)
+ \rput(-6, 2){\pstPerson[male, normal, belowtext=I:1, deceased]{GF1}}
+ \rput(-4, 2){\pnode{GF1_m_GM1}}
+ \rput(-2, 2){\pstPerson[female, asymptomatic, belowtext=I:2, deceased]{GM1}}
+ \rput(0, 2){\pstPerson[male, normal, belowtext=I:3]{GF2}}
+ \rput(2, 2){\pnode{GF2_m_GM2}}
+ \rput(4, 2){\pstPerson[female, normal, belowtext=I:4]{GM2}}
+ \rput(-5, 0){\pstPerson[female, obligatory, belowtext=II:1]{A1}}
+ \rput(-3, 0){\pstPerson[male, affected, belowtext=II:2]{F1}}
+ \rput(0, 0){\pnode{F1_m_M1}}
+ \rput(2, 0){\pstPerson[female, normal, belowtext=II:3]{M1}}
+ \rput(-5, -2){\pstPerson[female, affected, belowtext=III:1]{C1}}
+ \rput(-2, -2){\pstPerson[male, affected, belowtext=III:2, proband]{P}}
+ \rput(0, -2){\pstPerson[female, affected, belowtext=III:3]{S1}}
+ \rput(2, -2){\pstPerson[male, normal, belowtext=III:4]{S2}}
+ \pstDescent{GF1_m_GM1}{A1}
+ \pstDescent{GF1_m_GM1}{F1}
+ \ncline{GF1_m_GM1}{GM1}
+ \ncline{GF1_m_GM1}{GF1}
+ \pstDescent{GF2_m_GM2}{M1}
+ \ncline{GF2_m_GM2}{GM2}
+ \ncline{GF2_m_GM2}{GF2}
+ \pstDescent{A1}{C1}
+ \pstDescent{F1_m_M1}{P}
+ \pstDescent{F1_m_M1}{S1}
+ \pstDescent{F1_m_M1}{S2}
+ \ncline{F1_m_M1}{M1}
+ \ncline{F1_m_M1}{F1}
+ \ncbox[linestyle=none, boxsize=1, nodesepA=0.7, nodesepB=0.7,
+ boxdepth=0.7, style=TBlue]{GF1}{GM1}
+ \ncbox[linestyle=none, boxsize=1.3, nodesepA=0.7, nodesepB=0.7,
+ boxdepth=0.7, style=TBlue]{A1}{F1}
+ \ncbox[linestyle=none, boxsize=1.3, nodesepA=0.7, nodesepB=0.7,
+ boxdepth=0.7, style=TBlue]{C1}{C1}
+ \rput(-4,3.2){\textcolor{blue}{Left subpedigree}}
+ \ncbox[linestyle=none, boxsize=1, nodesepA=0.7, nodesepB=0.7,
+ boxdepth=0.7, style=TRed]{GF2}{GM2}
+ \ncbox[linestyle=none, boxsize=1.3, nodesepA=0.7, nodesepB=0.7,
+ boxdepth=0.7, style=TRed]{M1}{M1}
+ \rput(2,3.2){\textcolor{red}{Right subpedigree}}
+ \ncbox[linestyle=none, boxsize=1.3, nodesepA=0.7, nodesepB=0.7,
+ boxdepth=0.7, style=TGreen]{P}{S2}
+ \rput(0,-3){\textcolor{green}{Downward tree}}
+ \rput(0,0){\psdot}
+ \rput(0,0.2){Local root}
+ \end{pspicture}
+ \caption{Subpedigrees and Downward Tree}
+ \label{fig:subpedigrees}
+\end{figure}
+
+
+\section{Algorithm for Sorting Siblings and Marriage Partners}
+\label{sec:alg_sorting}
+
+When we create a marriage node, we want to put the male to the left
+and the female to the right. When we then sort siblings, we want this
+male to be the rightmost, and the female to be the leftmost. To do
+so, we assign to each node the special quantity |SortOrder|.
+Initially all nodes have |SortOrder| equal to zero, unless
+specifically set by the user in the input file (see
+Section~\ref{sec:sorting}). Then we use the following rules:
+\begin{enumerate}
+\item When creating the the marriage node:
+ \begin{enumerate}
+ \item If both spouses have equal |SortOrder| field, the male goes to
+ the left, the female goes to the right.
+ \item Otherwise, the spouse with greater |SortOrder| goes to the left.
+ \item If |SortOrder| of a spouse is 0, we set it to 1 (the
+ spouse on the left) or -1 (the spouse on the right).
+ \end{enumerate}
+\item When sorting siblings:
+ \begin{enumerate}
+ \item The sibling with smaller |SortOrder| goes to the left.
+ \item If both siblings have the same |SortOrder|, the oldest one
+ goes to the left.
+ \end{enumerate}
+\end{enumerate}
+
+\section{Modifications for Consangunic Unions}
+\label{sec:alg_consanguinic}
+
+Consanguinic unions present a problem for the described algorithm,
+because pedigrees with them are no longer trees (see
+Figure~\ref{fig:consanguinic}).
+
+In this release of the program we use the following hack. The direct
+lineage of the proband (or, more generally, the starting node) may have
+both mothers and fathers in the pedigree because they share genes from
+the starting node. If any other person has both mother and father in
+the chart, his or her parents both shared their genes with the
+starting node. Therefore they formed a consanguinic union. In this
+case the children of this node appear in two subtrees: their mother's
+and their father's.
+
+We delete them from one of the subtrees (the one with lower generation
+number), connect their parents with a double line (consanguinic union)
+and put the descent line from the middle of the union to them.
+
+There are two problems with this hack (see
+Section~\ref{sec:consanguinic}): the children of consanguinic unions
+are not centered on the diagaram, and the hack fails if the starting
+node itself is a descendant of a consanguinic union.
+
+Probably the next releases will employ better algorithms for
+consanguinic unions.
+
+\section{Conclusion}
+\label{sec:concl}
+
+The algorithm seems to be efficient and producing nicely typeset
+pedigrees. Since the input file format is simple, it may be used by
+the people without special skills in \LaTeX. On the other hand, the
+\TeX{} files produces are easy to understand and edit manually if the
+need arises.
+
+\clearpage
+
+\section{Acknowledgements}
+\label{sec:ack}
+
+The authors are grateful to Herbert Vo\ss{} for help with
+|PSTricks| code. The support of \TeX{} User Group is gratefully
+acknowledged. One of the authors (LA) was supported by Russian
+Foundation for Fundamental Research (travel grant 06-04-58811),
+Russian Federation President Council for Grants Supporting Young
+Scientists and Flagship Science Schools (grant MD-4245.2006.7)
+
+
+\bibliographystyle{unsrt}
+\bibliography{pedigree}
+
+\end{document}
+
+% $Id: pedigree.tex,v 2.18 2012-03-16 01:29:03 boris Exp $ \ No newline at end of file
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/doc/russian.tex b/Master/texmf-dist/doc/support/pedigree-perl/doc/russian.tex
new file mode 100644
index 00000000000..70b3dad5cb4
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/doc/russian.tex
@@ -0,0 +1,27 @@
+{%
+\psset{descarmA=0.8}%
+\begin{pspicture}(-6.6,-9.9)(6.6,3.3)
+\rput(0, 0){\pnode{F1_m_M1}}
+\rput(3.3, 0){\pstPerson[female, normal, belowtext={\small I:2}, deceased, abovetext={\scriptsize Иванова Любовь Ивановна}]{M1}}
+\rput(-3.3, 0){\pstPerson[male, obligatory, belowtext={\small I:1}, deceased, abovetext={\scriptsize Иванов Петр Ильич}]{F1}}
+\rput(0, -6.6){\pstPerson[female, normal, belowtext={\small III:2}, abovetext={\scriptsize Иванова Дарья Сергеевна}]{K2}}
+\rput(-3.3, -6.6){\pstPerson[male, asymptomatic, belowtext={\small III:1}, abovetext={\scriptsize Иванов Иван Сергеевич}]{K1}}
+\rput(1.65, -3.3){\pstPerson[female, normal, belowtext={\small II:2}, abovetext={\scriptsize Иванова Анна Петровна}]{S1}}
+\rput(-1.65, -3.3){\pstPerson[male, affected, belowtext={\small II:1}, proband, abovetext={\scriptsize Иванов Сергей Петрович}]{P}}
+\pstDescent{F1_m_M1}{P}
+\pstDescent{F1_m_M1}{S1}
+\ncline[]{F1_m_M1}{M1}
+\ncline[]{F1_m_M1}{F1}
+\pstDescent{P}{K1}
+\pstDescent{P}{K2}
+\end{pspicture}%
+}
+
+\begin{description}
+\item[I:1] Иванов Петр Ильич; {\cyr\cyrr\cyro\cyrd.} {\cyr\cyrn\cyre\cyri\cyrz\cyrv.}; {\cyr\cyru\cyrm. \cyrv{} \cyrv\cyro\cyrz\cyrr. } {\cyr\cyrn\cyre\cyri\cyrz\cyrv.}.
+\item[I:2] Иванова Любовь Ивановна; {\cyr\cyrr\cyro\cyrd.} 1935/12/01; {\cyr\cyru\cyrm. \cyrv{} \cyrv\cyro\cyrz\cyrr. } 70.
+\item[II:1] Иванов Сергей Петрович; {\cyr\cyrr\cyro\cyrd.} 1965/08/06.
+\item[II:2] Иванова Анна Петровна; {\cyr\cyrr\cyro\cyrd.} 1968/05/05.
+\item[III:1] Иванов Иван Сергеевич; {\cyr\cyrr\cyro\cyrd.} 1990/12/01; Генетич. иссл. 2005/12/08.
+\item[III:2] Иванова Дарья Сергеевна; {\cyr\cyrr\cyro\cyrd.} 1995/03/24; Генетич. иссл. 2005/12/08.
+\end{description}
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/abortions.csv b/Master/texmf-dist/doc/support/pedigree-perl/examples/abortions.csv
new file mode 100644
index 00000000000..0397efb1aa0
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/abortions.csv
@@ -0,0 +1,5 @@
+Id |Name |Sex |DoB |DoD |Mother|Proband|Condition|Type
+A0 |Ann |female|1970.06.15| | | |affected |
+B1 |#abortion|female|1990.03.01| |A0 | |affected |
+B2 |#abortion|male |2000.10.10| |A0 | | |sab
+B3 |John |male |2002.12.01| |A0 |yes |affected |
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/badsort.csv b/Master/texmf-dist/doc/support/pedigree-perl/examples/badsort.csv
new file mode 100644
index 00000000000..26816361950
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/badsort.csv
@@ -0,0 +1,14 @@
+Id |Name |Sex |DoB |Father|Mother|Proband
+A0 |John |male |1915.06.15| | |
+B1 |Sam |male |1935.12.04|A0 | |
+B2 |Ann |female|1937.03.02|A0 | |
+C1 |Paul |male |1952.10.03|B1 | |
+F1 |Scott |male |1912.02.01| | |
+G1 |Simon |male |1934.09.17|F1 | |
+G2 |Sarah |female|1936.12.19|F1 | |
+H1 |Lola |female|1960.04.13|G2 | |
+K1 |Jim |male |1962.11.05|G1 |B2 |
+M1 |Jane |female|1917.02.13| | |
+P1 |Simon |male |1935.10.04| | M1 |
+R1 |Pam |female|1964.02.05|P1 | |
+X1 |James |male |1988.07.12|K1 |R1 |yes \ No newline at end of file
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/childlessness.csv b/Master/texmf-dist/doc/support/pedigree-perl/examples/childlessness.csv
new file mode 100644
index 00000000000..38b524cb457
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/childlessness.csv
@@ -0,0 +1,6 @@
+Id |Name |Sex |Mother|Father|Proband|Type |Comment
+A0 |John |male | | | | |
+B1 |James |male | |A0 | | |
+B1c|#childless |male | |B1 | |infertile |anospermia
+B2 |Ann |female| |A0 |yes | |
+B2c|#childless | |B2 | | | | \ No newline at end of file
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/consanguinic.csv b/Master/texmf-dist/doc/support/pedigree-perl/examples/consanguinic.csv
new file mode 100644
index 00000000000..0aba287f1a4
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/consanguinic.csv
@@ -0,0 +1,11 @@
+Id |Name |Sex |Father|Mother|Proband|DoB
+A0 |Jane |female| | | |1908.12.12
+B1 |John |male | |A0 | |1936.12.15
+B2 |Ann |female| |A0 | |1934.04.17
+B3 |Samantha |female| |A0 | |1932.12.03
+B4 |Nancy |female| |A0 | |1928.01.05
+C1 |Mary |female| |B2 | yes |1955.08.26
+C2 |Paul |male | |B3 | |1964.05.07
+C3 |Jane |female| |B4 | |1950.11.03
+D1 |Jack |male |B1 |C1 | |1975.07.01
+D2 |Laura |female|C2 |C3 | |1974.09.05
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/english.cfg b/Master/texmf-dist/doc/support/pedigree-perl/examples/english.cfg
new file mode 100644
index 00000000000..a8028789a77
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/english.cfg
@@ -0,0 +1,76 @@
+# An example configuration file for pedigree program
+# This file is used for the examples in the program manual.
+
+# Do we want to have a full LaTeX file or just a fragment?
+#
+$fulldoc=0;
+
+# What kind of document do we want
+#
+# $documentheader='\documentclass[landscape]{article}';
+
+# Define additional packages here
+#
+# $addtopreamble=<<END;
+# \\usepackage{pst-pdgr}
+# END
+
+# Do we want to print a legend?
+#
+$printlegend=1;
+
+# Fields to include in the legend. Delete Name for privacy
+# protection.
+#
+@fieldsforlegend = qw(Name DoB AgeAtDeath Comment);
+
+#
+# Fields to put at the node. Delete Name for privacy
+# protection.
+#
+@fieldsforchart = qw(Name);
+
+# Language
+#
+# $language="russian";
+$language="english";
+
+# Override the encoding
+#
+# $encoding="koi8-r";
+
+#
+# Fonts for the chart
+#
+$belowtextfont='\small';
+$abovetextfont='\scriptsize';
+
+#
+# descarmA
+#
+$descarmA = 0.8;
+
+#
+# Distances between nodes (in cm)
+#
+$xdist=2;
+$ydist=2;
+
+#
+# Maximal width and height of the pedigree in cm.
+# Set this to 0 to switch off scaling
+#
+$maxW = 15;
+$maxH = 19;
+
+#
+# Whether to rotate the page. The values are 'yes', 'no' and 'maybe'
+# If 'maybe' is chosen, the pedigree is rotated if it allows better
+# scaling
+#
+$rotate = 'maybe';
+
+
+# Must be the last line
+#
+1;
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/english.csv b/Master/texmf-dist/doc/support/pedigree-perl/examples/english.csv
new file mode 100644
index 00000000000..01a59888bd1
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/english.csv
@@ -0,0 +1,12 @@
+Id |Name |Sex |DoB | DoD |Mother|Father|Proband|Condition |Comment
+P |John Smith |male |1970/02/05| |M1 |F1 | yes | affected|Evaluated 2005/12/01
+M1 |Mary Smith |female|1940/02/05| |GM2 |GF2 | | normal |
+F1 |Bill Smith |male |1938/04/03| |GM1 | GF1 | |affected |
+GM1|Joan Smith |female|1902/07/01|1975/12/13| | | |asymptomatic
+GF1|Joseph Smith |male |unknown |unknown | | | | normal
+GF2|Jim Brown |male |1905/11/01| | | | | normal |
+GM2|Lisa Brown |female|1910/03/03| | | | | normal |
+S1 |Rebecca Smith |female|1972/12/25| |M1 |F1 | | affected
+S2 |Alexander Smith |male |1975/11/12| |M1 |F1 | | normal
+A1 |Ann Gold |female|1941/09/02| |GM1 | GF1 | | obligatory|Aunt of the proband
+C1 | Jenny Smith |female|1969/12/03| |A1 | | | affected | Cousin of the proband
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/english1.cfg b/Master/texmf-dist/doc/support/pedigree-perl/examples/english1.cfg
new file mode 100644
index 00000000000..5ce3a8d3037
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/english1.cfg
@@ -0,0 +1,76 @@
+# An example configuration file for pedigree program
+# This file is used for the examples in the program manual.
+
+# Do we want to have a full LaTeX file or just a fragment?
+#
+$fulldoc=0;
+
+# What kind of document do we want
+#
+# $documentheader='\documentclass[landscape]{article}';
+
+# Define additional packages here
+#
+# $addtopreamble=<<END;
+# \\usepackage{pst-pdgr}
+# END
+
+# Do we want to print a legend?
+#
+$printlegend=0;
+
+# Fields to include in the legend. Delete Name for privacy
+# protection.
+#
+@fieldsforlegend = qw(Name DoB AgeAtDeath Comment);
+
+#
+# Fields to put at the node. Delete Name for privacy
+# protection.
+#
+@fieldsforchart = qw();
+
+# Language
+#
+# $language="russian";
+$language="english";
+
+# Override the encoding
+#
+# $encoding="koi8-r";
+
+#
+# Fonts for nodes
+#
+$belowtextfont='\small';
+$abovetextfont='\scriptsize';
+
+#
+# descarmA
+#
+$descarmA = 0.9;
+
+#
+# Distances between nodes (in cm)
+#
+$xdist=1.5;
+$ydist=1.8;
+
+#
+# Maximal width and height of the pedigree in cm.
+# Set this to 0 to switch off scaling
+#
+$maxW = 15;
+$maxH = 19;
+
+#
+# Whether to rotate the page. The values are 'yes', 'no' and 'maybe'
+# If 'maybe' is chosen, the pedigree is rotated if it allows better
+# scaling
+#
+$rotate = 'maybe';
+
+
+# Must be the last line
+#
+1;
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/english_short.cfg b/Master/texmf-dist/doc/support/pedigree-perl/examples/english_short.cfg
new file mode 100644
index 00000000000..8ee82a474c7
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/english_short.cfg
@@ -0,0 +1,76 @@
+# An example configuration file for pedigree program
+# This file is used for the examples in the program manual.
+
+# Do we want to have a full LaTeX file or just a fragment?
+#
+$fulldoc=0;
+
+# What kind of document do we want
+#
+# $documentheader='\documentclass[landscape]{article}';
+
+# Define additional packages here
+#
+# $addtopreamble=<<END;
+# \\usepackage{pst-pdgr}
+# END
+
+# Do we want to print a legend?
+#
+$printlegend=0;
+
+# Fields to include in the legend. Delete Name for privacy
+# protection.
+#
+@fieldsforlegend = qw(Name DoB AgeAtDeath Comment);
+
+#
+# Fields to put at the node. Delete Name for privacy
+# protection.
+#
+@fieldsforchart = qw(Name);
+
+# Language
+#
+# $language="russian";
+$language="english";
+
+# Override the encoding
+#
+# $encoding="koi8-r";
+
+#
+# Fonts for the chart
+#
+$belowtextfont='\small';
+$abovetextfont='\scriptsize';
+
+#
+# descarmA
+#
+$descarmA = 0.8;
+
+#
+# Distances between nodes (in cm)
+#
+$xdist=2;
+$ydist=2;
+
+#
+# Maximal width and height of the pedigree in cm.
+# Set this to 0 to switch off scaling
+#
+$maxW = 15;
+$maxH = 19;
+
+#
+# Whether to rotate the page. The values are 'yes', 'no' and 'maybe'
+# If 'maybe' is chosen, the pedigree is rotated if it allows better
+# scaling
+#
+$rotate = 'maybe';
+
+
+# Must be the last line
+#
+1;
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/pedigree.cfg b/Master/texmf-dist/doc/support/pedigree-perl/examples/pedigree.cfg
new file mode 100644
index 00000000000..a82689e0e39
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/pedigree.cfg
@@ -0,0 +1,47 @@
+# An example configuration file for pedigree program
+#
+
+# Do we want to have a full LaTeX file or just a fragment?
+#
+$fulldoc=1;
+
+# What kind of document do we want
+#
+# $documentheader='\documentclass[landscape]{article}';
+$documentheader='\documentclass{article}';
+
+# Define additional packages here
+#
+# $addtopreamble=<<END;
+# \\usepackage{graphics}
+# END
+$addtopreamble=<<END;
+\\psset{armB=1}
+END
+
+# Do we want to print a legend?
+#
+$printlegend=1;
+
+# Fields to include in the legend. Delete Name for privacy
+# protection.
+#
+@fieldstoprint = qw(Name DoB AgeAtDeath Comment);
+
+# Language
+#
+# $language="russian";
+$language="english";
+
+# Override the encoding, if neccessary
+#
+# $encoding="koi8-r";
+
+# Distances between nodes (in cm)
+#
+$xdist=2;
+$ydist=2;
+
+# Must be the last line
+#
+1; \ No newline at end of file
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/russian.cfg b/Master/texmf-dist/doc/support/pedigree-perl/examples/russian.cfg
new file mode 100644
index 00000000000..13f16b5974d
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/russian.cfg
@@ -0,0 +1,78 @@
+# An example configuration file for pedigree program
+# This file is used for the examples in the program manual.
+
+# Do we want to have a full LaTeX file or just a fragment?
+#
+$fulldoc=0;
+
+# What kind of document do we want
+#
+# $documentheader='\documentclass[landscape]{article}';
+
+# Define additional packages here
+#
+# $addtopreamble=<<END;
+# \\usepackage{pst-pdgr}
+# END
+
+# Do we want to print a legend?
+#
+$printlegend=1;
+
+# Fields to include in the legend. Delete Name for privacy
+# protection.
+#
+@fieldsforlegend = qw(Name DoB AgeAtDeath Comment);
+
+#
+# Fields to put at the node. Delete Name for privacy
+# protection.
+#
+@fieldsforchart = qw(Name);
+
+# Language
+#
+# $language="english";
+ $language="russian";
+
+
+# Override the encoding
+#
+$encoding="koi8-r";
+
+#
+# Fonts for nodes
+#
+$belowtextfont='\small';
+$abovetextfont='\scriptsize';
+
+#
+# descarmA
+#
+$descarmA = 0.8;
+
+#
+# Distances between nodes (in cm)
+#
+$xdist=3.3;
+$ydist=3.3;
+
+#
+# Maximal width and height of the pedigree in cm.
+# Set this to 0 to switch off scaling
+#
+$maxW = 15;
+$maxH = 19;
+
+#
+# Whether to rotate the page. The values are 'yes', 'no' and 'maybe'
+# If 'maybe' is chosen, the pedigree is rotated if it allows better
+# scaling
+#
+$rotate = 'maybe';
+
+
+
+# Must be the last line
+#
+1;
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/russian.csv b/Master/texmf-dist/doc/support/pedigree-perl/examples/russian.csv
new file mode 100644
index 00000000000..d702582b964
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/russian.csv
@@ -0,0 +1,7 @@
+Идент|ФИО |Пол|Рожд |Умер |Мать|Отец|Пробанд|Состояние | Комментарий
+P |Иванов Сергей Петрович |муж|1965/08/06| |M1 |F1 |да |больн |
+M1 |Иванова Любовь Ивановна|жен|1935/12/01|2005/10/01| | | |норм
+F1 |Иванов Петр Ильич |муж|неизв |2003/01/25| | | |облигат
+S1 |Иванова Анна Петровна |жен|1968/05/05| |M1 |F1 | |норм
+K1 |Иванов Иван Сергеевич |муж|1990/12/01| | |P | |асимп |Генетич. иссл. 2005/12/08
+K2 |Иванова Дарья Сергеевна|жен|1995/03/24| | |P | |норм |Генетич. иссл. 2005/12/08
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/sort1.csv b/Master/texmf-dist/doc/support/pedigree-perl/examples/sort1.csv
new file mode 100644
index 00000000000..315721ebe8a
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/sort1.csv
@@ -0,0 +1,12 @@
+Id |Name |Sex |DoB |Father|Mother|Proband
+A0 |John |male |1915.06.15| | |
+B1 |Joan |female|1940.03.02|A0 | |
+B2 |Jane |female|1942.07.07|A0 | |
+B3 |Bill |male |1944.12.01|A0 | |
+B4 |Peter |male |1941.05.01| | |
+C1 |Jack |male |1963.12.01|B4 |B2 |
+C2 |Sam |male |1961.08.26| |B1 |
+C3 |Ann |female|1965.11.12| |B3 |
+C4 |Lucy |female|1965.12.11| | |
+D1 |Mark |male |1989.06.21|C1 |C4 |yes
+D2 |Dina |female|1991.12.02|C1 |C4 |
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/sort2.csv b/Master/texmf-dist/doc/support/pedigree-perl/examples/sort2.csv
new file mode 100644
index 00000000000..f38830ee3eb
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/sort2.csv
@@ -0,0 +1,12 @@
+Id |Name |Sex |DoB |Father|Mother|Proband|SortOrder
+A0 |John |male |1915.06.15| | | |
+B1 |Joan |female|1940.03.02|A0 | | |
+B2 |Jane |female|1942.07.07|A0 | | |
+B3 |Bill |male |1944.12.01|A0 | | |
+B4 |Peter |male |1941.05.01| | | | 3
+C1 |Jack |male |1963.12.01|B4 |B2 | |
+C2 |Sam |male |1961.08.26| |B1 | |
+C3 |Ann |female|1965.11.12| |B3 | |
+C4 |Lucy |female|1965.12.11| | | |
+D1 |Mark |male |1989.06.21|C1 |C4 |yes |
+D2 |Dina |female|1991.12.02|C1 |C4 | |
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/sort3.csv b/Master/texmf-dist/doc/support/pedigree-perl/examples/sort3.csv
new file mode 100644
index 00000000000..44b60b2dc06
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/sort3.csv
@@ -0,0 +1,12 @@
+Id |Name |Sex |DoB |Father|Mother|Proband|SortOrder
+A0 |John |male |1915.06.15| | | |
+B1 |Joan |female|1940.03.02|A0 | | |
+B2 |Jane |female|1942.07.07|A0 | | |
+B3 |Bill |male |1944.12.01|A0 | | |
+B4 |Peter |male |1941.05.01| | | |
+C1 |Jack |male |1963.12.01|B4 |B2 | |
+C2 |Sam |male |1961.08.26| |B1 | |
+C3 |Ann |female|1965.11.12| |B3 | |
+C4 |Lucy |female|1965.12.11| | | | -3
+D1 |Mark |male |1989.06.21|C1 |C4 |yes |
+D2 |Dina |female|1991.12.02|C1 |C4 | |
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/examples/twins.csv b/Master/texmf-dist/doc/support/pedigree-perl/examples/twins.csv
new file mode 100644
index 00000000000..a07333accc1
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/examples/twins.csv
@@ -0,0 +1,12 @@
+Id |Name |Sex |DoB |DoD |Mother|Father|Proband|Twins|Type
+F0 |Adam |male |unknown |unknown | | | | |
+A0 |Sam |male |1950.01.03|unknown | |F0 | | A1 |qzygotic
+A1 |John |male |1950.01.03|2005.04.12| |F0 | | A0 |qzygotic
+A2 |Jane |female|1951.14.15| | | | | |
+B1 |Jack |male |1975.05.06| |A2 |A1 | |B2 |monozygotic
+B2 |Mike |male |1975.05.06| |A2 |A1 | |B1 |monozygotic
+B3 |Pam |female|1973.11.01| |A2 |A1 | | |
+C1 |Jane |female|1998.12.04| | |B1 | |C2,C3|
+C2 |John |male |1998.12.04| | |B1 | |C1,C3|
+C3 |George|male |1998.12.04| | |B1 | yes |C1,C2|
+C4 |Ann |female|2003.02.04| | |B1 | | | \ No newline at end of file
diff --git a/Master/texmf-dist/doc/support/pedigree-perl/pedigree.1 b/Master/texmf-dist/doc/support/pedigree-perl/pedigree.1
new file mode 100644
index 00000000000..d377a34dfbd
--- /dev/null
+++ b/Master/texmf-dist/doc/support/pedigree-perl/pedigree.1
@@ -0,0 +1,185 @@
+.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "pedigree 1"
+.TH pedigree 1 "2012-03-15" "perl v5.10.0" "User Contributed Perl Documentation"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+pedigree \- create a TeX file for pedigree from a csv file
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBpedigree\fR [\-c \fIconfiguration_file\fR] [\-d] [\-o \fIoutput_file\fR] [\-s \fIstart_id\fR] \fIinput_file\fR
+.PP
+\&\fBpedigree\fR \-v
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The program converts a comma separated \fIinput_file\fR into a TeX file
+with pst-pdgr macros.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-c\fR \fIconfiguration_file\fR" 4
+.IX Item "-c configuration_file"
+The configuration file to read along with the system-wide and user's
+configuration files
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+Debug mode on
+.IP "\fB\-o\fR \-\fIoutput_file\fR" 4
+.IX Item "-o -output_file"
+The ouput file instead of \fIinput_file.tex\fR
+.IP "\fB\-s\fR \-\fIstart_id\fR" 4
+.IX Item "-s -start_id"
+If this option is selected, the pedigree is constructed starting from
+the node with the Id i<start_id>. Otherwise it is started from the
+proband node.
+.Sp
+This option allows to create pedigrees with multiple probands or absent
+probands, or show people who are not proband's relatives.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+Print version information
+.SH "FILES"
+.IX Header "FILES"
+.IP "\fB/etc/pedigree.cfg\fR" 4
+.IX Item "/etc/pedigree.cfg"
+Global configuration file
+.ie n .IP "\fB\fB$HOME\fB/.pedigreerc\fR" 4
+.el .IP "\fB\f(CB$HOME\fB/.pedigreerc\fR" 4
+.IX Item "$HOME/.pedigreerc"
+User configuration file
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+The manual distributed with this program describes the format of the
+configuration file and the input file.
+.PP
+The library functions are described in \fIPedigree::Language\fR\|(3),
+\&\fIPedigree::Parser\fR\|(3), \fIPedigree::Node\fR\|(3), \fIPedigree::PersonNode\fR\|(3),
+\&\fIPedigree::MarriageNode\fR\|(3), \fIPedigree::Area\fR\|(3).
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Boris Veytsman, Leila Akhmadeeva, 2006, 2007