\iffalse
Copyright 2022 Jiro Senju

This package 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
any later version.

This package 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 package.  If not, see <http://www.gnu.org/licenses/>.
\fi

\section{兄弟姉妹関係 (\texttt{ft-sibling.dtx})}

\DescribeMacro{\sblngdef}
\cmd{\sblngdef
  \marg{new box name}
  \marg{name list of individual boxes}
}
\medskip

|\indvdldef|で定義したboxの名前をカンマ区切りのlistとして与える。
同列に並べ、兄弟姉妹間を線でつないだboxを、
指定された\meta{new box name}で定義する。
いづれも\CS ではない点に注意
（冒頭にbackslashを含まない）。

指定された兄弟姉妹の内、|\maleline|属性を持つ者が複数在れば、一番長い
ものに線の長さを揃える。
\smallskip

|\indvdldef|同様に、後で使用する座標（単位は|pt|）を表す\CS も定義する。
座標の原点はそれぞれ、
横書きの場合はbox左下、
縦書きの場合はbox左上である。

\begin{itemize}
\item \meta{box name}|nameCY|
\par
兄弟姉妹達をつなぐ線の中央
\par
兄弟姉妹間をつなぐ線とはすなわち\meta{list先頭box}|nameCY|と\meta{list
末尾box}|nameCY|をつなぐ線である。

\item \meta{box name}\meta{\kern0pt 人物box name}|nameCY|
\par
兄弟姉妹box内での人物名それぞれの高さの中央
（縦書きならば幅の中央）
\par
|\indvdldef|が定義した\meta{\kern0pt 人物box name}|nameCY|が
兄弟姉妹box内での人物名に合わせて平行移動したとも言える。
\end{itemize}
\bigskip

\DescribeMacro{\ivaldef}
\cmd{\ivaldef
  \marg{new box name}
  \marg{length}
}
\medskip

\FamilyTree では兄弟姉妹の子孫が多い場合等、
兄弟姉妹間の間隔を拡げる事がある。
このような場合には|\ivaldef| (interval box)
で生成した、中身が空のboxを手動で挿入する。
このpackageでは予め三つのboxを定義してある。
|\ival|、|\ivali|、|\ivalii|であり、
中身は空だがそれぞれ|0.5zw|、|1zw|、|2zw|のlengthを持つ
（厳密に言うと、日英対応のため|1zw|を|\ft@unit|として再定義しており、ここ
  では|.5\ft@unit|、|1\ft@unit|、|2\ft@unit|のinterval boxとしている）。

|\ivaldef|は|\global\newsavebox|するので、
乱発しては資源消費が問題になる恐れがある。
その場合は後述する|\sblngboxcfg|で全ての兄弟姉妹間に同じ間隔を設ければ問題
を回避できる。または、小さな空白を複数連続して挿入することも可能であ
る。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{カスタマイズ}

% 配置を調整する機能もある。
% 大したことはしていないので必要に応じ参照\jslash 使用する程度のもの。
% 引数等詳細は後述する。
% \smallskip

\DescribeMacro{\sblngboxcfg}
\cmd{\sblngboxcfg
  \marg{space between the siblings}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{例}

\begin{enumerate}
\itemsep=\bigskipamount
\item
\srcfig{fig2base}

\item
\srcfig{fig2Hidetada}

\item
\srcfig{fig2ival}

\needspace{5\baselineskip}
\item
\srcfig{fig2cfg}
\end{enumerate}

\iffalse
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsubsection{interval box}
%
% \DescribeMacro{\ftivaldef}
% \DescribeMacro{\ivaldef}
% サイズは持つが中身が空のboxを生成する。
% 兄弟姉妹間に隙間として挿入する際に使用する。
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \parag{pre-defined interval boxes}
%
% \DescribeMacro{\ftival}
% \DescribeMacro{\ival}
%
% \DescribeMacro{\ftivali}
% \DescribeMacro{\ivali}
%
% \DescribeMacro{\ftivalii}
% \DescribeMacro{\ivalii}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \parag{カスタマイズ}\
%
% \DescribeMacro{\ftsblngboxcfg}
% \DescribeMacro{\sblngboxcfg}
% 兄弟姉妹を整形\jslash 配置したboxを生
% 成する際に使用する兄弟姉妹間の間隔
% をカスタマイズできる。
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsubsection{兄弟姉妹box --- core}
%
% 指定された兄弟姉妹を全て同列に並べ、関係線を結ぶ。
% 指定された名前でboxを生成する。
%
% 指定された兄弟姉妹の内、|\maleline|属性を持つ者が複数在れば、一
% 番長いものに線の長さを揃える。
% 人物名と線の間にはここでも|\ft@namebox@maleline@sp|分の空白を設ける。
%
% \IhadtoSplit
%
% \DescribeMacro{\ft@sblng@maleline}
% |maleline|の長さを揃える。
%
% \DescribeMacro{\ft@sblng@connect}
% 兄弟姉妹間を線でつなぐ。
%
% 線の中点を\meta{box-name}|nameCY|として定義する。
%
% \DescribeMacro{\ft@sblng@layout}
% 配置し、線でつなぐ。
%
% 人物名を配置した高さを\meta{box name}\meta{\kern0pt 人物box
% name}|nameCY|として定義する。
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsubsection{兄弟姉妹box --- interface}
%
% \DescribeMacro{\ftsblngdef}
% \DescribeMacro{\sblngdef}
% 前処理として全体サイズを算出し、coreである|\ft@sblng@layout|を実行する。
% memberに|\maleline|属性を持つものが居るけれど、
% もっとも幅が広い人物boxは|\maleline|属性を持っていない場合、
% このboxの幅を拡げ、malelineの長さを延ばす。
% 延ばす量は|\ft@namebox@maleline@length|である。
\fi
