排版家谱

排版家谱

我正在寻找一种在 LaTeX 中排版家谱的简单方法。

我特别感兴趣的是排版所谓的“Ahnentafel”,这是一棵树,显示我、我的父母、我的祖父母、我的曾祖父母等。换句话说,它是一棵层次树,其中每个级别的分支数量都会加倍。

有没有可以帮助我的软件包?遗憾的是,http://www.ctan.org/topic/genealogy是空的。

我注意到有几篇帖子推荐使用 TikZ 来绘制树木。我从未使用过 TikZ,也不愿意仅仅为了这个目的而深入研究它。但如果必须,那我就必须。

编辑:

这是我想要创建的示例:

这是第三代 Ahnentafel。

这是三代 Ahnentafel

答案1

这是另一个选项forest说明其其他一些特点:

\documentclass{standalone}
\usepackage{tabularx}
\usepackage{forest}
\usetikzlibrary{shapes.geometric}

% comment out the following four lines if the Helvet Neue font are not available:
\usepackage{fontspec}
\newfontfamily\namefont[]{Helvetica Neue Condensed Bold}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont[Mapping=tex-text, Color=textcolor]{Helvetica Neue Light}

\definecolor{color1}{HTML}{FFCB73}
\definecolor{color2}{HTML}{FFA100}

\newcommand\Person[5]{%
  {\namefont #1} \\
  \begin{tabularx}{4.5cm}[t]{@{}r@{\hspace*{2pt}}X@{}}
  b: & #2 \\
  & #3 \\
  d: & #4 \\
  & #5
  \end{tabularx}%
}

\begin{document}

\begin{forest}
delay={
  for tree={
    edge path={
      \noexpand\path[\forestoption{edge}]
        ([xshift=-(6pt-1pt*level)].child anchor) to[out=180,in=0]
        ([xshift=(6pt-1pt*level)]!u.parent anchor)\forestoption{edge label};
    },
    if n=1
      {fill=color1,shape=tape,tape bend bottom=none}
      {if n'=1
        {fill=color2,shape=tape,tape bend top=none}
        {}
      }
  }
},
for tree={
  line width=3pt,
  inner sep=8pt,
  draw=brown,
  minimum size=1cm,
  text width=4.5cm,
  child anchor=west,
  parent anchor=east,
  grow=east,
  l sep=2cm,
  s sep=10pt,
  draw,
  anchor=west,
  edge={line width=(18pt-3pt*level),line cap=rect,color=brown},
}
[\Person{Abraham /LINCOLN/}{12 Feb 1809}{Hardin (Larue), KY}{15 Apr 1865}{Washington, DC},fill=color2
  [\Person{Nancy /HANKS/}{5 Feb 1784}{Campbell Co., Virginia}{5 Oct 1818}{Centryville, Spencer, Ind}
   [\Person{Nancy /SHIPLEY/}{ABT 1745}{Pembroke, Wash, ME}{}{Amelia, Amelia, VA}
     [\Person{Sarah Or Rachel}{ABT 1723}{}{}{}
     ]
     [\Person{Robert /SHIPLEY/}{ABT 1719}{}{}{}
     ]
   ]
   [\Person{Joseph /HANKS/}{ABT 1740}{Pembroke, Wash, ME}{}{Amelia, Amelia, VA}
     [\Person{Sarah /EVANS/}{ABT 1714}{Pembroke, Wash, ME}{}{}
     ]
     [\Person{John /HANKS/}{22 Oct 1709}{Pembroke, Wash, ME}{6 Sep 1742}{Pembroke, Wash, ME}
     ]
   ]
  ]
  [\Person{Thomas /LINCOLN/}{20 Jan 1780}{Rockingham, VA}{17 Jan 1851}{Beechland, Co., KY.}
    [\Person{Bethsheba /HERRING/}{1746}{Rockingham, Co., VA.}{}{}
      []
      []
    ]
    [\Person{Abraham /LINCOLN/}{17 May 1744}{Berks, Co., Penn.}{1786}{Jefferson County, KY}
      [\Person{Rebecca /FLOWERS/}{30 Mar 1720}{Berks, Co., Penn.}{1806}{Berks, Co., Penn}
      ]
      [\Person{John /LINCOLN/}{3 May 1711}{Freehold, Monmouth, N.J.}{1778}{PA}
      ]
    ]
  ]
]
\end{forest}

\end{document}

结果:

在此处输入图片描述

在这个解决方案中,边缘是弯曲的,以暗示一棵树,并且树枝的厚度随着级别的增加而自动减小;此外,通过为节点选择不同的属性(形状、填充)来区分男性和女性;所有这些都是在树规范中完成的。

我的示例中使用的字体Helvet Neue可以从以下位置下载:rebba pocket

答案2

新发布的 genealogytree 软件包将帮助您!这篇文章之前提到了 0.10 alpha 版本,我必须手动安装当前版本,因为当前的 Latex 发行版在新的升级之前处于冻结状态。

该包可以做什么的当前示例:http://mirrors.ctan.org/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf 示例2

我无法从这张图片中添加 MWE,因为我自己无法解析它。

您可以在这里找到该包:http://www.ctan.org/pkg/genealogytree

来自 genealogytree 软件包手册 0.90 版本(2015/05/22):

谱系和家谱树形图是可视化个人之间遗传和关系联系的有效工具。具有父节点和子节点的数学树形结构的命名源自历史家族图。然而,即使是由两个父母和几个孩子组成的最小家族实体也不是数学树,而是一个更通用的图表。genealogytree 软件包提供了一组工具来排版此类家谱树,或者更准确地说,排版一组用于描述类似家族结构的特殊图表。该软件包使用自动布局算法,可以自定义该算法,例如优先考虑某些路径。

答案3

你可以使用forest它,我最近一直在学习使用树形图。这段代码几乎全部归功于Gonzalo Medina 的回答对于我关于forest以这种方式使用的问题:

\documentclass[tikz,12pt]{standalone}
\usetikzlibrary{calc,positioning,backgrounds,arrows.meta}
\usepackage{forest}
\pagestyle{empty}

\begin{document}

\begin{forest}
  for tree={
    child anchor=west,
    parent anchor=east,
    grow=east,
    draw,
    anchor=west,
    edge path={
      \noexpand\path[\forestoption{edge}]
        (.child anchor) -| +(-5pt,0) -- +(-5pt,0) |-
        (!u.parent anchor)\forestoption{edge label};
    },
  }
  [Me
    [My Father
      [My Father's Father
      ]
      [My Father's Mother
      ]
    ]
    [My Mother
      [My Mother's Father
      ]
      [My Mother's Mother
      ]
    ]
  ]
\end{forest}

\end{document}

家庭森林

答案4

在此处输入图片描述

另一个间接解决方案。几年前,我使用了一个叫做 LifeLines 的程序http://lifelines.sourceforge.net它读取 GEDCOM(尝试谷歌搜索)文件并可以生成 LaTeX 格式(以及其他格式)的各种报告和树。

编辑上面我添加了几页 LaTeX 输出的扫描件。

相关内容