系図の組版

系図の組版

LaTeX で系図をタイプセットする簡単な方法を探しています。

特に、私はいわゆる「アーネンターフェル」、つまり私、私の両親、私の祖父母、私の曽祖父母などを示すツリーを組版することに興味があります。言い換えれば、それは各レベルで枝の数が倍増する階層ツリーです。

私を助けてくれるパッケージはありますか?残念ながら、http://www.ctan.org/topic/genealogy空です。

ツリーを描くのに TikZ を推奨する投稿をいくつか目にしました。私は TikZ を使ったことがないので、この目的のためだけに TikZ に飛び込むのは気が進みません。でも、どうしても必要なら、そうしなければなりません。

編集:

私が作成したいものの例は次のとおりです。

これは3世代のアーネンターフェルです。

これは3世代のアーネンターフェルです

答え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) のマニュアルより:

家系図や系図のツリー図は、個人間の遺伝的および関係的なつながりを視覚化するための実証済みのツールです。親ノードと子ノードを持つ数学的なツリー構造の名前は、歴史的な家族図から引き継がれています。ただし、2 人の親と数人の子供で構成される最小の家族エンティティであっても、数学的なツリーではなく、より一般的なグラフです。 genealogytree パッケージは、このような系図ツリーをタイプセットする、またはより正確には、家族のような構造を説明する特別なグラフのセットをタイプセットするツール セットを提供します。このパッケージは、たとえば特定のパスを優先するようにカスタマイズできる自動レイアウト アルゴリズムを使用します。

答え3

forest最近ツリー図に使うことを学んでいるので、これを使うこともできます。このコードは、ゴンサロ・メディナの回答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 出力のいくつかのページのスキャンを追加しました。

関連情報