\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 . \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