% furikana.sty by Shinsaku Fujita 2000/01/22 (v1.02)
% furikana.sty by Shinsaku Fujita 1998/08/21 (v1.01)
% furikana.sty by Shinsaku Fujita 1995/07/18 (v1.00)
% Copyright (C) 1995, 1998, 2000 by Shinsaku Fujita, 
% All rights reserved. 
%
%  横組みのルビを自動的に組むためのマクロです．
%
%  作成者: 藤田眞作
%          fujitas@chem.kit.ac.jp
%
%   藤田眞作著「\LaTeX本づくりの八衢」所載
%
%
%  \kana[原則]{親文字}{ルビ}
%  
%     <原則> オプション0-4 (省略時は1)を指定
%              0 親文字とルビの長いほうにあわせて均等割
%              1 原則1 ルビが長いときに両端に前後の文を陥入(陥入度大)
%              2 原則2 ルビが長いときに両端に前後の文を陥入(陥入度小)
%              3 原則3 ルビが長いときに両端に前後の文を陥入なし
%              4 原則4 ルビが長いときの例外　ex. 轟津 (とどろきのつ)
%     <親文字> ベタで漢字を指定
%     <ルビ> ベタでふりがなを指定
%
%  \Kana[原則]{親文字1,親文字2,...}{ルビ1,ルビ2,...}
%  
%     <原則> オプション0-4 (省略時は1)を指定
%              0 親文字とルビの長いほうにあわせて均等割
%              1 原則1 ルビが長いときに両端に前後の文を陥入(陥入度大)
%              2 原則2 ルビが長いときに両端に前後の文を陥入(陥入度小)
%              3 原則3 ルビが長いときに両端に前後の文を陥入なし
%              4 原則4 ルビが長いときの例外　ex. 轟津 (とどろきのつ)
%     <親文字1,...> ベタで漢字を指定 (ルビと対応させて列挙
%     <ルビ1,...> ベタでふりがなを指定
%
% \KANA{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ}
%     <正味幅> 出来上がったルビ付き文字の幅 (非陥入部分)
%     <箱幅> 箱幅(均等割に延ばすべき幅)
%     <ルビ幅> ルビ幅(均等割に延ばすべき幅)
%     <親文字>   ベタで漢字を指定
%     <ルビ>   ベタでふりがなを指定
% 変更 2000/01/22 by Shinsaku Fujita
% \let\KANA=\KANAorig ルビ高さあり
% \let\KANA=\KANAtop ルビ高さなし
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\def\j@urnalname{furikana}
%\def\versi@ndate{July 18, 1995}
%\def\versi@nno{ver1.00}
%\def\copyrighth@lder{SF} % Shinsaku Fujita
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%改良点
% 全体を\hboxで包んで、\kanjiskipの設定が外に及ばないようにした
% by Shinsaku Fujita 1998/8/18
% \rubykatujiの新設
% by Shinsaku Fujita 1998/8/21
%
%\def\j@urnalname{furikana}
%\def\versi@ndate{January 21, 1998}
%\def\versi@nno{ver1.01}
%\def\copyrighth@lder{SF} % Shinsaku Fujita
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\j@urnalname{furikana}
\def\versi@ndate{August 22, 2000}
\def\versi@nno{ver1.02}
\def\copyrighth@lder{S. Fujita} % Shinsaku Fujita
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\typeout{Option Style `\j@urnalname' (\versi@nno) <\versi@ndate>\space 
[\copyrighth@lder]}
\typeout{藤田眞作「入門・縦横文書術」所載}
% ********
% * 警告 *
% ********
% ルビ活字は、本文活字の1/2のものを用いるのが原則です。
% 原則をはずれる場合もなんとか対処できるようにしてありますが、
% 最初に警告を出しておきます。
%
\setbox0=\hbox{漢}
\setbox1=\hbox{\tiny あ}
\dimen0=\wd0 \divide\dimen0 by2\relax
\dimen1=\dimen0
\advance\dimen0 by.01zw
\advance\dimen1 by-.01zw
\ifdim\wd1<\dimen1\relax
\typeout{ルビの活字が小さすぎます。}\fi
\ifdim\wd1>\dimen0\relax
\typeout{ルビの活字が大きすぎます。}\fi
%
%
%
\let\rubykatuji=\tiny
%
% ルビと親文字との間隔
% 標準は0pt。さらに開けたい場合は、プリアンブルで変更。
%
\newdimen\furikanaaki
\furikanaaki=0pt
%
% \nakakintou{長さ}{文字列}
%
%   均等割 (ただし，1文字の場合は中央揃えにする)
%
\def\nakakintou#1#2{\hbox to#1{%
 \hss\kanjiskip=0pt plus 1fill minus 1fill
 \xkanjiskip=\kanjiskip #2\hss}}
%
% \KANA{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ}
% \KANAorig{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ}
%
%   手動の振り仮名
%    \KANAorig <--- \KANA 改名
%    2000/1/22 by Shinsaku Fujita
%
\def\KANAorig#1#2#3#4#5{%
 \def\@rubykatuji{\rubykatuji}%
 \hbox to#1{\vbox{%
 \hbox to#1{\hss\nakakintou{#3}{\hss\@rubykatuji #5\hss}\hss}%
 \nointerlineskip%
 \kern\furikanaaki%
 \hbox to#1{\hss\nakakintou{#2}{#4}\hss}}}}
%
% \KANAtop{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ}
%   手動の振り仮名
%   ルビ幅なし
%   2000/1/22 by Shinsaku Fujita
%
\def\KANAtop#1#2#3#4#5{%
 \def\@rubykatuji{\rubykatuji}%
 \hbox to#1{\vbox{%
 \setbox6=\hbox{\nakakintou{#3}{\hss\@rubykatuji #5\hss}}%
 \setbox6=\hbox to#1{\hss\raise\dp6\hbox{\box6}\hss}%
 \hbox{\ht6=0pt\dp6=0pt\box6}%
 \nointerlineskip%
 \kern\furikanaaki%
 \hbox to#1{\hss\nakakintou{#2}{#4}\hss}}}}
%
% デフォルトはルビ幅あり
%
\def\kanadashioff{\let\KANA=\KANAorig}
\def\kanadashion{\let\KANA=\KANAtop}
\kanadashioff
%
%
%  \k@n@[原則]{親文字}{ルビ}
%
%   メインマクロ
%  
%     <原則> オプション0-3 (省略時は1)を指定
%              0 親文字とルビの長いほうにあわせて均等割
%              1 原則1 ルビが長いときに両端に前後の文を陥入(陥入度大)
%              2 原則2 ルビが長いときに両端に前後の文を陥入(陥入度小)
%              3 原則3 ルビが長いときに両端に前後の文を陥入なし
%              4 原則4 ルビが長いときの例外　ex. 轟津 (とどろきのつ)
%     <親文字> ベタで漢字を指定
%     <ルビ> ベタでふりがなを指定
%
\def\kana{\@ifnextchar[{\k@n@}{\k@n@[1]}}
\def\k@n@[#1]#2#3{\leavevmode%
\ifhmode\edef\@x@sf{\the\spacefactor}\fi
　\kern-1zw%全角の空白
\hbox{%
%全体を伸ばしの設定にしておく
\kanjiskip=0pt plus 1fill minus 1fill
\xkanjiskip=0pt
%
\def\@rubykatuji{\rubykatuji}%
\ifx\#2\empty\else%
\ifx\#3\empty\else%
\setbox0=\hbox{#2}%
\setbox1=\hbox{\@rubykatuji #3}%
\ifcase#1 \ifdim\wd0>\wd1\relax
 \KANA{\wd0}{\wd0}{\wd0}{#2}{#3}\else
 \KANA{\wd1}{\wd1}{\wd1}{#2}{#3}\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\or%#1=1 (原則1--default)
 \ifdim\wd0<1.3zw%
  \ihonji{\wd0}{\wd1}{#2}{#3}%親文字1字
\else
\ifdim\wd0<2.3zw%
  \ihonjii{\wd0}{\wd1}{#2}{#3}%親文字2字
\else
\ifdim\wd0<3.3zw%
  \ihonjiii{\wd0}{\wd1}{#2}{#3}%親文字3字
\else
\ifdim\wd0<4.4zw%
  \ihonjiv{\wd0}{\wd1}{#2}{#3}%親文字4字
\else
%\ifdim\wd0<5.4zw%
  \ihonjv{\wd0}{\wd1}{#2}{#3}%親文字5字以上
\fi\fi\fi\fi%\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\or%#1=2 (原則2--option)
 \ifdim\wd0<1.3zw 
   \iihonji{\wd0}{\wd1}{#2}{#3}%親文字1字
 \else
  \ifdim\wd0<2.3zw 
   \iihonjii{\wd0}{\wd1}{#2}{#3}%親文字2字
 \else
  \ifdim\wd0<3.3zw 
   \iihonjiii{\wd0}{\wd1}{#2}{#3}%親文字3字
 \else
  \ifdim\wd0<4.4zw 
   \iihonjiv{\wd0}{\wd1}{#2}{#3}%親文字4字
  \else
   \iihonjv{\wd0}{\wd1}{#2}{#3}%親文字5字以上
\fi\fi\fi\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\or%#1=3(原則3--option)
 \ifdim\wd0<1.3zw 
   \iiihonji{\wd0}{\wd1}{#2}{#3}%親文字1字
 \else
  \ifdim\wd0<2.3zw 
   \iiihonjii{\wd0}{\wd1}{#2}{#3}%親文字2字
 \else
  \ifdim\wd0<3.3zw 
   \iiihonjiii{\wd0}{\wd1}{#2}{#3}%親文字3字
 \else
  \ifdim\wd0<4.4zw 
   \iiihonjiv{\wd0}{\wd1}{#2}{#3}%親文字4字
  \else
   \iiihonjv{\wd0}{\wd1}{#2}{#3}%親文字5字以上
\fi\fi\fi\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\or%#1=4 (原則4--option)
 \ifdim\wd0<1.3zw 
   \ivhonji{\wd0}{\wd1}{#2}{#3}%親文字1字
 \else
  \ifdim\wd0<2.3zw 
   \ivhonjii{\wd0}{\wd1}{#2}{#3}%親文字2字
 \else
  \ifdim\wd0<3.3zw 
   \ivhonjiii{\wd0}{\wd1}{#2}{#3}%親文字3字
 \else
  \ifdim\wd0<4.4zw 
   \ivhonjiv{\wd0}{\wd1}{#2}{#3}%親文字4字
  \else
   \ivhonjv{\wd0}{\wd1}{#2}{#3}%親文字5字以上
\fi\fi\fi\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\or%for further treatment
\fi\ifhmode\spacefactor\@x@sf\fi\fi\fi}%
\kern-1zw　%全角の空白
}
%
% ***************
% * 通常[1]処理 *
% ***************
%
% 親文字1文字
%
% \ihonji{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\ihonji#1#2#3#4{%
 %親文字1字
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \KANA{#1}{#1}{#1}{#3}{#4}%
   \else
   %親文字のほうが短い
    \kanjinobashi{#1}{#2}{#3}{#4}%
   \fi}
%
% \kanjinobashi (1文字)
%
%　　親文字1文字で、ルビが長い
%
\def\kanjinobashi#1#2#3#4{%
   \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
   \ifdim\dimen0<1.1zw%詰め組み (ルビ約4字まで)
       \KANA{#1}{#1}{#2}{#3}{#4}%
     \else%
%      \ifdim\dimen0<2zw%本文前後二分アキ(ルビ約5字まで)
      \ifdim\dimen0<1.95zw%本文前後二分アキ(ルビ約5字まで)
       \dimen1=#1 \advance\dimen1 by.5zw%
       \KANA{\dimen1}{#1}{#2}{#3}{#4}%
      \else%ルビ両袖に二分陥入
       \dimen1=#2 \advance\dimen1 by-1zw%
      \KANA{\dimen1}{#1}{#2}{#3}{#4}%
\fi\fi}
%
% 親文字2文字
%
% \ihonjii{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\ihonjii#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashii{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \kanjinobashii{#1}{#2}{#3}{#4}%
   \fi}
%
% \kananobashii (2文字)
%　　親文字2文字で、親文字がルビより長い
%
 \def\kananobashii#1#2#3#4{%
  \dimen0=#1\relax \advance\dimen0 by-#2\relax
  \ifdim\dimen0<.5zw%親文字2文字，ルビ3文字
   \KANA{#1}{#1}{#1}{#3}{#4}%
  \else
  \ifdim\dimen0<1zw%親文字2文字，ルビ2文字
   \dimen1=#1 \advance\dimen1 by-.25zw
   \KANA{#1}{#1}{\dimen1}{#3}{#4}%
   \else 
   \ifdim\dimen0<2zw%親文字2文字，ルビ1文字
   \dimen1=#1 \advance\dimen1 by-.5zw
   \KANA{#1}{#1}{\dimen1}{#3}{#4}%
   \else %なし
   \dimen1=#2 \advance\dimen1 by-.5zw
   \KANA{#1}{#1}{\dimen1}{#3}{#4}%
  \fi\fi\fi}
%
% \kanjinobashii (2文字)
%　　親文字2文字で、親文字がルビより短い
%
\def\kanjinobashii#1#2#3#4{%
   \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
%   \ifdim\dimen0<1.5zw%詰め組み (ルビ約6字まで)
   \ifdim\dimen0<1.45zw%詰め組み (ルビ約6字まで)
       \KANA{#1}{#1}{#2}{#3}{#4}%
     \else%ルビ両袖に二分陥入
       \dimen2=#2\relax \advance\dimen2 by-1zw%
       \dimen1=\dimen2\relax \advance\dimen1 by-.5zw%
      \KANA{\dimen2}{\dimen1}{#2}{#3}{#4}%
\fi}
%
% 親文字3文字
%
% \ihonjiii{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\ihonjiii#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashiii{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \kanjinobashiii{#1}{#2}{#3}{#4}%
   \fi}
%
% \kananobashiii (3文字)
%　　親文字3文字で、親文字がルビより長い
%
\def\kananobashiii#1#2#3#4{%
  \dimen0=#1\relax \advance\dimen0 by-#2\relax
  \ifdim\dimen0<.5zw%親文字3文字，ルビ5文字
   \KANA{#1}{#1}{#1}{#3}{#4}%
  \else
  \ifdim\dimen0<1zw%親文字3文字，ルビ4文字
   \dimen1=#1\relax \advance\dimen1 by-.25zw
   \KANA{#1}{#1}{\dimen1}{#3}{#4}%
   \else 
   \ifdim\dimen0<2zw%親文字3文字，ルビ3文字
    \dimen1=#1\relax \advance\dimen1 by-.5zw
    \KANA{#1}{#1}{\dimen1}{#3}{#4}%
   \else %親文字3文字，ルビ2文字以下
    \dimen1=#1\relax \advance\dimen1 by-1zw
    \KANA{#1}{#1}{\dimen1}{#3}{#4}%
\fi\fi\fi}
%
% \kanjinobashiii (3文字)
%　　親文字3文字で、親文字がルビより短い
%

\def\kanjinobashiii#1#2#3#4{%
   \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
   \ifdim\dimen0<1zw%詰め組み (ルビ約7字まで)
       \KANA{#1}{#1}{#2}{#3}{#4}%
     \else%
      \ifdim\dimen0<2zw%本文前後二分アキ(ルビ約9字まで)
       \dimen1=#2\relax \advance\dimen1 by-.5zw%
       \dimen2=\dimen1\relax \advance\dimen2 by-.5zw%
       \KANA{\dimen1}{\dimen2}{#2}{#3}{#4}%KKKK
     \else%
      \ifdim\dimen0<3zw%本文前後二分アキ(ルビ約11字まで)
       \dimen1=#2\relax \advance\dimen1 by-1zw%
       \dimen2=\dimen1\relax \advance\dimen2 by-.5zw%
       \KANA{\dimen1}{\dimen2}{#2}{#3}{#4}%KKKK
      \else%ルビ両袖に二分陥入
       \dimen1=#1\relax \advance\dimen1 by1zw%
       \dimen2=#2\relax \advance\dimen2 by-1zw%
      \KANA{\dimen2}{\dimen1}{#2}{#3}{#4}%
\fi\fi\fi}
%
% 親文字4文字
%
% \ihonjiv{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\ihonjiv#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashiv{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \kanjinobashiv{#1}{#2}{#3}{#4}%
   \fi}
%
% \kananobashiv (4文字)
%　　親文字4文字で、親文字がルビより長い
%
 \def\kananobashiv#1#2#3#4{%
  \dimen0=#1\relax \advance\dimen0 by-#2\relax
  \ifdim\dimen0<1zw%親文字3文字，ルビ8, 7文字
   \KANA{#1}{#1}{#1}{#3}{#4}%
  \else
  \ifdim\dimen0<2zw%親文字3文字，ルビ6文字
   \dimen1=#2\relax \advance\dimen1 by.5zw
   \KANA{#1}{#1}{\dimen1}{#3}{#4}%
   \else 
   \ifdim\dimen0<3zw%親文字3文字，ルビ5, 4文字
    \dimen1=#2\relax \advance\dimen1 by1zw
    \KANA{#1}{#1}{\dimen1}{#3}{#4}%
   \else %親文字3文字，ルビ3文字以下
    \dimen1=#1\relax \advance\dimen1 by-1.5zw
    \KANA{#1}{#1}{\dimen1}{#3}{#4}%
  \fi\fi\fi}
%
% \kanjinobashiv (4文字)
%　　親文字4文字で、親文字がルビより短い
%
 \def\kanjinobashiv#1#2#3#4{%
   \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
   \ifdim\dimen0<1zw%詰め組み (ルビ約9字まで)
       \KANA{#1}{#1}{#2}{#3}{#4}%
   \else%
     \ifdim\dimen0<1.5zw%本文前後四分アキ(ルビ約10字まで)
       \dimen1=#1\relax \advance\dimen1 by.5zw
       \dimen2=\dimen1\relax \advance\dimen2 by.5zw
       \KANA{\dimen2}{\dimen1}{#2}{#3}{#4}%
     \else%
      \ifdim\dimen0<2zw%本文前後二分アキ(ルビ約11字まで)
       \dimen1=#1\relax \advance\dimen1 by1zw%
       \KANA{#2}{\dimen1}{#2}{#3}{#4}%
      \else%
      \ifdim\dimen0<3zw%本文前後二分半アキ(ルビ約12字まで)
       \dimen1=#1\relax \advance\dimen1 by1.5zw%
       \KANA{#2}{\dimen1}{#2}{#3}{#4}%
      \else%ルビ両袖に二分陥入
       \dimen1=#1\relax \advance\dimen1 by1zw%
       \dimen2=#2\relax \advance\dimen2 by-1zw%
      \KANA{\dimen2}{\dimen1}{#2}{#3}{#4}%
    \fi\fi\fi\fi}
%
% 親文字5文字
%
% \ihonjv{箱幅}{ルビ幅}{親文字}{ルビ}
%
% 代用
%
\def\ihonjv#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashiv{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \kanjinobashiv{#1}{#2}{#3}{#4}%
   \fi}
%
% ***************
% * 特殊[2]処理 *
% ***************
%
% 親文字1文字
%
% \iihonji{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\iihonji#1#2#3#4{%
 %親文字1字
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \KANA{#1}{#1}{#1}{#3}{#4}%
   \else
   %親文字のほうが短い
    \Kanjinobashi{#1}{#2}{#3}{#4}%
   \fi}
%
% \Kanjinobashi (1文字)
%
%　　親文字1文字で、ルビが長い
%    (原則)本文前後四分アキ
%
\def\Kanjinobashi#1#2#3#4{%
   \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
   \ifdim\dimen0<.5zw%詰め組み (ルビ約2字まで)
       \KANA{#1}{#1}{#2}{#3}{#4}%
   \else%
%     \ifdim\dimen0<1zw%本文前後八分アキ(ルビ約3字まで)
     \ifdim\dimen0<.95zw%本文前後八分アキ(ルビ約3字まで)
       \dimen1=#1 \advance\dimen1 by.25zw
       \KANA{\dimen1}{#1}{#2}{#3}{#4}%
      \else%ルビ両袖に四分陥入
       \dimen1=#2 \advance\dimen1 by-.5zw%
      \KANA{\dimen1}{#1}{#2}{#3}{#4}%
\fi\fi}
%
% 親文字2文字
%
% \iihonjii{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\iihonjii#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashii{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \Kanjinobashii{#1}{#2}{#3}{#4}%
\fi}
%
% \Kanjinobashii (2文字)
%　　親文字2文字で、親文字がルビより短い
%    (原則)本文前後四分アキ
%
\def\Kanjinobashii#1#2#3#4{%
   \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
%   \ifdim\dimen0<1zw%詰め組み (ルビ約5字まで)
   \ifdim\dimen0<.95zw%詰め組み (ルビ約5字まで)
       \KANA{#1}{#1}{#2}{#3}{#4}%
   \else%本文前後四分アキ
       \dimen1=#2\relax \advance\dimen1 by-1zw%
       \dimen2=#2\relax \advance\dimen2 by-.5zw%
      \KANA{\dimen2}{\dimen1}{#2}{#3}{#4}%
\fi}
%
%
% 親文字3文字
%
% \iihonjiii{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\iihonjiii#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashiii{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \Kanjinobashiii{#1}{#2}{#3}{#4}%
   \fi}
%
% \Kanjinobashiii (3文字)
%　　親文字3文字で、親文字がルビより短い
%    (原則)本文前後四分アキ
%
\let\Kanjinobashiii=\Kanjinobashii
%
% 親文字4文字
%
% \iihonjiv{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\iihonjiv#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashiv{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \Kanjinobashiv{#1}{#2}{#3}{#4}%
   \fi}
%
% \Kanjinobashiv (4文字)
%　　親文字4文字で、親文字がルビより短い
%
\let\Kanjinobashiv=\Kanjinobashii
%
% 親文字5文字
%
% \iihonjv{箱幅}{ルビ幅}{親文字}{ルビ}
%
% 代用
%
\def\iihonjv#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashiv{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \Kanjinobashiv{#1}{#2}{#3}{#4}%
   \fi}
%
% ***************
% * 特殊[3]処理 *
% ***************
%
% 親文字1文字
%
% \iiihonji{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\iiihonji#1#2#3#4{%
 %親文字1字
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \KANA{#1}{#1}{#1}{#3}{#4}%
   \else
   %親文字のほうが短い
    \KAnjinobashi{#1}{#2}{#3}{#4}%
   \fi}
%
% \KAnjinobashi (1文字)
%
%　　親文字1文字で、ルビが長い
%    (原則)本文前後二分アキ
%
\def\KAnjinobashi#1#2#3#4{%
   \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
%   \ifdim\dimen0<.5zw%詰め組み (ルビ約2字まで)
   \ifdim\dimen0<.45zw%詰め組み (ルビ約2字まで)
       \KANA{#1}{#1}{#2}{#3}{#4}%
     \else%%前後文陥入なし
       \KANA{#2}{#1}{#2}{#3}{#4}%
\fi}
%
%
% 親文字2文字
%
% \iiihonjii{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\iiihonjii#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashii{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \KAnjinobashii{#1}{#2}{#3}{#4}%
   \fi}
%
% \KAnjinobashii (2文字)
%　　親文字2文字で、親文字がルビより短い
%    (原則)本文前後二分アキ
%
 \def\KAnjinobashii#1#2#3#4{%
   \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
%   \ifdim\dimen0<.5zw%詰め組み (ルビ約4字まで)
   \ifdim\dimen0<.45zw%詰め組み (ルビ約4字まで)
       \KANA{#1}{#1}{#2}{#3}{#4}%
   \else%
    \ifdim\dimen0<1zw%詰め組み (ルビ約5字まで)
       \dimen1=#2\relax \advance\dimen1 by-.5zw%
       \KANA{#2}{\dimen1}{#2}{#3}{#4}%
    \else%本文前後二分アキ
       \dimen1=#2\relax \advance\dimen1 by-1zw%
      \KANA{#2}{\dimen1}{#2}{#3}{#4}%
\fi\fi}
%
% 親文字3文字
%
% \iiihonjiii{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\iiihonjiii#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashiii{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \KAnjinobashiii{#1}{#2}{#3}{#4}%
   \fi}
%
% \KAnjinobashiii (3文字)
%　　親文字3文字で、親文字がルビより短い
%    (原則)本文前後二分アキ
%
\let\KAnjinobashiii=\KAnjinobashii
%
% 親文字4文字
%
% \iiihonjiv{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\iiihonjiv#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashiv{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \KAnjinobashiv{#1}{#2}{#3}{#4}%
   \fi}
%
% \KAnjinobashiv (4文字)
%　　親文字4文字で、親文字がルビより短い
%
\let\KAnjinobashiv=\KAnjinobashii
%
% 親文字5文字
%
% \iiihonjv{箱幅}{ルビ幅}{親文字}{ルビ}
%
% 代用
%
\def\iiihonjv#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashiv{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \KAnjinobashiv{#1}{#2}{#3}{#4}%
   \fi}
%
% ***************
% * 特殊[4]処理 *
% ***************
%
% 親文字1文字
%
% \ivhonji{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\ivhonji#1#2#3#4{%
 %親文字1字
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \KANA{#1}{#1}{#1}{#3}{#4}%
   \else
   %親文字のほうが短い
    \KANjinobashi{#1}{#2}{#3}{#4}%
   \fi}
%
% \KANjinobashi (1文字)
%
%　　親文字1文字で、ルビが長い
%    (原則)本文前後四分アキ
%
\let\KANjinobashi=\Kanjinobashi
%
% 親文字2文字
%
% \ivhonjii{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\ivhonjii#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashii{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \KANjinobashii{#1}{#2}{#3}{#4}%
   \fi}
%
% \KANjinobashii (2文字)
%　　親文字2文字で、親文字がルビより短い
%    (原則)本文前後四分アキ
%
%
 \def\KANjinobashii#1#2#3#4{%
   \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
   \ifdim\dimen0<0.9zw%詰め組み (ルビ約5字まで)
       \KANA{#1}{#1}{#2}{#3}{#4}%
   \else%
     \ifdim\dimen0<1.5zw%本文前後四分アキ(ルビ約6字まで)
       \dimen1=#1\relax \advance\dimen1 by.5zw
       \KANA{#2}{\dimen1}{#2}{#3}{#4}%
     \else%
      \ifdim\dimen0<2zw%本文前後二分アキ(ルビ約7字まで)
       \dimen1=#1\relax \advance\dimen1 by1zw%
       \KANA{#2}{\dimen1}{#2}{#3}{#4}%
     \else%
      \ifdim\dimen0<3zw%本文前後二分アキ(ルビ約7字まで)
       \dimen1=#1\relax \advance\dimen1 by1.5zw%
       \KANA{#2}{\dimen1}{#2}{#3}{#4}%
     \else%ルビ両袖に二分陥入
       \dimen1=#1\relax \advance\dimen1 by1zw%
       \dimen2=#2\relax \advance\dimen2 by-1zw%
      \KANA{\dimen2}{\dimen1}{#2}{#3}{#4}%
    \fi\fi\fi\fi}
%
%
% 親文字3文字
%
% \ivhonjiii{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\ivhonjiii#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashiii{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \KANjinobashiii{#1}{#2}{#3}{#4}%
   \fi}
%
% \KANjinobashiii (3文字)
%　　親文字3文字で、親文字がルビより短い
%    (原則)本文前後四分アキ
%
\let\KANjinobashiii=\Kanjinobashii
%
% 親文字4文字
%
% \ivhonjiv{箱幅}{ルビ幅}{親文字}{ルビ}
%
\def\ivhonjiv#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashiv{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \KANjinobashiv{#1}{#2}{#3}{#4}%
   \fi}
%
% \KANjinobashiv (4文字)
%　　親文字4文字で、親文字がルビより短い
%
\let\KANjinobashiv=\Kanjinobashii
%
% 親文字5文字
%
% \ivhonjv{箱幅}{ルビ幅}{親文字}{ルビ}
%
% 代用
%
\def\ivhonjv#1#2#3#4{%
   \ifdim#1>#2\relax%
   %親文字のほうが長い
    \kananobashiv{#1}{#2}{#3}{#4}%
   \else
   %親文字のほうが短い
    \KANjinobashiv{#1}{#2}{#3}{#4}%
   \fi}
%%%%%%%%%%%%%
%
%  \Kana[原則]{親文字1,親文字2,...}{ルビ1,ルビ2,...}
%  
%     <原則> オプション0-3 (省略時は1)を指定
%              0 親文字とルビの長いほうにあわせて均等割
%              1 原則1 ルビが長いときに両端に前後の文を陥入(陥入度大)
%              2 原則2 ルビが長いときに両端に前後の文を陥入(陥入度小)
%              3 原則3 ルビが長いときに両端に前後の文を陥入なし
%              4 原則4 ルビが長いときの例外　ex. 轟津 (とどろきのつ)
%     <親文字1,...> ベタで漢字を指定 (ルビと対応させて列挙
%     <ルビ1,...> ベタでふりがなを指定
%
\newcount\TestCnt
\newcount\TestCNT
\def\Kana{\@ifnextchar[{\@Kana}{\@Kana[1]}}
\def\@Kana[#1]#2#3{\leavevmode\TestCnt=\z@
\@for\member:=#2\do{\advance\TestCnt\@ne\TestCNT=\z@
\@for\Member:=#3\do{\advance\TestCNT\@ne
\ifnum\TestCnt=\TestCNT\relax%
\k@n@[#1]{\member}{\Member}\fi}}}
%
% ルビの行末揃え
% 2000/02/11 by Shinsaku Fujita
% ルビの高さなし
\def\KANAmatubi#1#2#3#4#5{%
 \def\@rubykatuji{\rubykatuji}%
 \hbox to#1{\vbox{%
 \setbox6=\hbox{\nakakintou{#3}{\hss\@rubykatuji #5\hss}}%
 \setbox6=\hbox to#1{\hss\raise\dp6\hbox{\box6}}%
 \hbox{\ht6=0pt\dp6=0pt\box6}%ルビの高さなし
% \hbox{\box6}%ルビの高さのそのままにするとき
 \nointerlineskip%
 \kern\furikanaaki%
 \hbox to#1{\hss\nakakintou{#2}{#4}}}}}
% ルビの行末揃え
% 2000/02/11 by Shinsaku Fujita
% ルビの高さあり
\def\KANAorigmatubi#1#2#3#4#5{%
 \def\@rubykatuji{\rubykatuji}%
 \hbox to#1{\vbox{%
 \setbox6=\hbox{\nakakintou{#3}{\hss\@rubykatuji #5\hss}}%
 \setbox6=\hbox to#1{\hss\raise\dp6\hbox{\box6}}%
% \hbox{\ht6=0pt\dp6=0pt\box6}%ルビの高さなし
 \hbox{\box6}%ルビの高さのそのままにするとき
 \nointerlineskip%
 \kern\furikanaaki%
 \hbox to#1{\hss\nakakintou{#2}{#4}}}}}
\endinput
