% furiknkt.sty by Shinsaku Fujita v1.01 2000/02/11 % furiknkt.sty by Shinsaku Fujita v1.00 1998/08/18 % Copyright (C) 1998, 2000 by Shinsaku Fujita, All rights reserved. % % 縦組みの肩ツキルビを自動的に組むためのマクロです. % % 作成者: 藤田眞作 % fujitas@chem.kit.ac.jp % % 藤田眞作著「続\LaTeX2e階梯・縦組編」所載 % % % (縦組みの中ツキルビは横組み用のfurikana.styを流用することが % できます。 % % \kanakt[原則]{親文字}{ルビ} % <原則> オプション0-4 (省略時は1)を指定 % 0 親文字とルビの長いほうにあわせて肩付き、短い方を均等割 % 1 原則1 肩ツキルビが長いときに下端に、後の文を陥入(ルビ一字分) % 2 原則2 肩ツキルビが長いときに下端に、後の文を陥入(ルビ二分) % 3 原則3 肩ツキルビが長いときに下端に、後の文の陥入なし % 4 原則4 ルビが長いときの例外 ex. 轟津 (とどろきのつ) % <親文字> ベタで漢字を指定 % <ルビ> ベタでふりがなを指定 % % \Kanakt[原則]{親文字1,親文字2,...}{ルビ1,ルビ2,...} % % <原則> オプション0-4 (省略時は1)を指定 % 0 親文字とルビの長いほうにあわせて肩付き、短い方を均等割 % 1 原則1 肩ツキルビが長いときに下端に、後の文を陥入(ルビ一字分) % 2 原則2 肩ツキルビが長いときに下端に、後の文を陥入(ルビ二分) % 3 原則3 肩ツキルビが長いときに下端に、後の文の陥入なし % 4 原則4 ルビが長いときの例外 ex. 轟津 (とどろきのつ) % <親文字1,...> ベタで漢字を指定 (ルビと対応させて列挙 % <ルビ1,...> ベタでふりがなを指定 % % \KANAkt{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ} % \KANAktorig{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ}に改名 % <正味幅> 出来上がったルビ付き文字の幅 (非陥入部分) % <箱幅> 箱幅(均等割に延ばすべき幅) % <ルビ幅> ルビ幅(均等割に延ばすべき幅) % <親文字> ベタで漢字を指定 % <ルビ> ベタでふりがなを指定 % % 2000/02/11 v1.01 by Shinsaku Fujita % \KANAkttop{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ} % ルビの高さなし % 藤田眞作著「入門・縦横文書術」所載 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\def\j@urnalname{furiknkt} %\def\versi@ndate{August 18, 1998} %\def\versi@nno{ver1.00} %\def\copyrighth@lder{SF} % Shinsaku Fujita %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\j@urnalname{furiknkt} \def\versi@ndate{February 11, 2000} \def\versi@nno{ver1.01} \def\copyrighth@lder{S. Fujita} % Shinsaku Fujita %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \typeout{Option Style `\j@urnalname' (\versi@nno) <\versi@ndate>\space [\copyrighth@lder]} \typeout{藤田眞作著「続\LaTeX2e階梯・縦組編」所載} \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。さらに開けたい場合は、プリアンブルで変更。 % \@ifundefined{furikanaaki}{%furikana.styと併用のとき \newdimen\furikanaaki \furikanaaki=0pt}{} % % % % \nakakintou{長さ}{文字列} % % 均等割 (ただし,1文字の場合は中央揃えにする) % \@ifundefined{nakakintou}{%furikana.styと併用のとき \def\nakakintou#1#2{\hbox to#1{% \hss\kanjiskip=0pt plus 1fill minus 1fill \xkanjiskip=\kanjiskip #2\hss}}% }{} % % \katatsukiK{長さ}{文字列} % % 文字列を肩ツキで、広げる % \def\katatsukiK#1#2{\hbox to#1{% \kanjiskip=0pt plus 1fill%%minus 1fill \xkanjiskip=0pt\hbox{}#2\hss}} % % \katatsukiR{長さ}{文字列} % % 文字列を肩ツキで、詰める % \def\katatsukiR#1#2{\hbox to#1{#2\hss}} % % \KANA{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ} % % 手動の振り仮名 (横組みのときと同じ) % \@ifundefined{KANA}{%furikana.styと併用のとき \def\KANA#1#2#3#4#5{% \def\@rubykatuji{\rubykatuji}% \hbox to#1{\vbox{% \hbox to#1{\hss\nakakintou{#3}{\hss\@rubykatuji #5\hss}\hss}% \kern\furikanaaki \nointerlineskip \hbox to#1{\hss\nakakintou{#2}{#4}\hss}}}} }{} % % \KANAkt{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ} % \KANAktorig{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ} % % 手動の振り仮名 % ルビを詰める(ルビが長いとき) % \def\KANAktorig#1#2#3#4#5{% \def\@rubykatuji{\rubykatuji}% \hbox to#1{\vbox{% \hbox to#1{\katatsukiR{#3}{\@rubykatuji #5\hss}\hss}% \kern\furikanaaki \nointerlineskip \hbox to#1{\katatsukiK{#2}{#4}\hss}}}} % % \KANAktS{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ} % \KANAktSorig{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ} % % 手動の振り仮名 % ルビを広げる(ルビが短いとき) % \def\KANAktSorig#1#2#3#4#5{% \def\@rubykatuji{\rubykatuji}% \hbox to#1{\vbox{% \hbox to#1{\katatsukiK{#3}{\@rubykatuji #5\hss}\hss}% \kern\furikanaaki \nointerlineskip \hbox to#1{\katatsukiK{#2}{#4}\hss}}}} % % \KANAkttop{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ} % % 手動の振り仮名 % ルビを詰める(ルビが長いとき)、ルビ高さなし % 2000/2/11 by Shinsaku Fujita % \def\KANAkttop#1#2#3#4#5{% \def\@rubykatuji{\rubykatuji}% \hbox to#1{\vbox{% \setbox6=\hbox{\katatsukiR{#3}{\@rubykatuji #5\hss}}% \setbox6=\hbox to#1{\raise\dp6\hbox{\box6}\hss}% \hbox{\ht6=0pt\dp6=0pt\box6}% \kern\furikanaaki \nointerlineskip \hbox to#1{\katatsukiK{#2}{#4}\hss}}}} % % \KANAktStop{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ} % % 手動の振り仮名 % ルビを広げる(ルビが短いとき)、ルビ高さなし % 2000/2/11 by Shinsaku Fujita % \def\KANAktStop#1#2#3#4#5{% \def\@rubykatuji{\rubykatuji}% \hbox to#1{\vbox{% \setbox6=\hbox{\katatsukiK{#3}{\@rubykatuji #5\hss}}% \setbox6=\hbox to#1{\raise\dp6\hbox{\box6}\hss}% \hbox{\ht6=0pt\dp6=0pt\box6}% \kern\furikanaaki \nointerlineskip \hbox to#1{\katatsukiK{#2}{#4}\hss}}}} % % ルビ高さ、標準はあり % \def\kanaktdashioff{\let\KANAkt=\KANAktorig \let\KANAktS=\KANAktSorig} \def\kanaktdashion{\let\KANAkt=\KANAkttop \let\KANAktS=\KANAktStop} \kanaktdashioff % % \k@n@kt[原則]{親文字}{ルビ} % % メインマクロ % % <原則> オプション0-4 (省略時は1)を指定 % 0 親文字とルビの長いほうにあわせて肩付き、短い方を均等割 % 1 原則1 肩ツキルビが長いときに下端に、後の文を陥入(ルビ一字分) % 2 原則2 肩ツキルビが長いときに下端に、後の文を陥入(ルビ二分) % 3 原則3 肩ツキルビが長いときに下端に、後の文の陥入なし % 4 原則4 ルビが長いときの例外 ex. 轟津 (とどろきのつ) % <親文字> ベタで漢字を指定 % <ルビ> ベタでふりがなを指定 % \def\kanakt{\@ifnextchar[{\k@n@kt}{\k@n@kt[1]}} \def\k@n@kt[#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 \KANAktS{\wd0}{\wd0}{\wd0}{#2}{#3}\else \KANAkt{\wd1}{\wd1}{\wd1}{#2}{#3}\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \or%#1=1 (原則1--default) \ifdim\wd0<1.3zw% \iKThonji{\wd0}{\wd1}{#2}{#3}%親文字1字 \else \ifdim\wd0<2.3zw% \iKThonjii{\wd0}{\wd1}{#2}{#3}%親文字2字 \else \ifdim\wd0<3.3zw% \iKThonjiii{\wd0}{\wd1}{#2}{#3}%親文字3字 \else \ifdim\wd0<4.4zw% \iKThonjiv{\wd0}{\wd1}{#2}{#3}%親文字4字 \else %\ifdim\wd0<5.4zw% \iKThonjv{\wd0}{\wd1}{#2}{#3}%親文字5字以上 \fi\fi\fi\fi%\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \or%#1=2 (原則2--option) \ifdim\wd0<1.3zw \iiKThonji{\wd0}{\wd1}{#2}{#3}%親文字1字 \else \ifdim\wd0<2.3zw \iiKThonjii{\wd0}{\wd1}{#2}{#3}%親文字2字 \else \ifdim\wd0<3.3zw \iiKThonjiii{\wd0}{\wd1}{#2}{#3}%親文字3字 \else \ifdim\wd0<4.4zw \iiKThonjiv{\wd0}{\wd1}{#2}{#3}%親文字4字 \else \iiKThonjv{\wd0}{\wd1}{#2}{#3}%親文字5字以上 \fi\fi\fi\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \or%#1=3(原則3--option) \ifdim\wd0<1.3zw \iiiKThonji{\wd0}{\wd1}{#2}{#3}%親文字1字 \else \ifdim\wd0<2.3zw \iiiKThonjii{\wd0}{\wd1}{#2}{#3}%親文字2字 \else \ifdim\wd0<3.3zw \iiiKThonjiii{\wd0}{\wd1}{#2}{#3}%親文字3字 \else \ifdim\wd0<4.4zw \iiiKThonjiv{\wd0}{\wd1}{#2}{#3}%親文字4字 \else \iiiKThonjv{\wd0}{\wd1}{#2}{#3}%親文字5字以上 \fi\fi\fi\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \or%#1=4 (原則4--option) \ifdim\wd0<1.3zw \ivKThonji{\wd0}{\wd1}{#2}{#3}%親文字1字 \else \ifdim\wd0<2.3zw \ivKThonjii{\wd0}{\wd1}{#2}{#3}%親文字2字 \else \ifdim\wd0<3.3zw \ivKThonjiii{\wd0}{\wd1}{#2}{#3}%親文字3字 \else \ifdim\wd0<4.4zw \ivKThonjiv{\wd0}{\wd1}{#2}{#3}%親文字4字 \else \ivKThonjv{\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文字 % % \iKThonji{箱幅}{ルビ幅}{親文字}{ルビ} % \def\iKThonji#1#2#3#4{% %親文字1字 \ifdim#1>#2\relax% %親文字のほうが長い \KANAkt{#1}{#1}{#1}{#3}{#4}% \else %親文字のほうが短い \KTkanjinobashi{#1}{#2}{#3}{#4}% \fi} % % \KTkanjinobashi (1文字) % %  親文字1文字で、ルビが長い % \def\KTkanjinobashi#1#2#3#4{% \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断 \ifdim\dimen0<0.95zw%詰め組み (ルビ約3字まで) \KANAkt{#1}{#1}{#2}{#3}{#4}% \else% \ifdim\dimen0<1.95zw%本文詰め組み(ルビ約5字まで) \dimen1=#2 \advance\dimen1 by-.5zw% \KANAkt{\dimen1}{#1}{#2}{#3}{#4}% \else%本文詰め組み \dimen1=#2 \advance\dimen1 by-.5zw% \KANAkt{\dimen1}{#1}{#2}{#3}{#4}% \fi\fi} % % 親文字2文字 % % \iKThonjii{箱幅}{ルビ幅}{親文字}{ルビ} % \def\iKThonjii#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashii{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTkanjinobashii{#1}{#2}{#3}{#4}% \fi} % % \kananobashii (2文字) %  親文字2文字で、親文字がルビより長い % \def\KTkananobashii#1#2#3#4{% \dimen0=#1\relax \advance\dimen0 by-#2\relax \ifdim\dimen0<.55zw%親文字2文字,ルビ3文字 \KANAkt{#1}{#1}{#1}{#3}{#4}%詰め組み \else \ifdim\dimen0<1.1zw%親文字2文字,ルビ2文字 \dimen1=#1 \advance\dimen1 by-.5zw \KANAktS{#1}{#1}{\dimen1}{#3}{#4}%肩付き \else \ifdim\dimen0<1.55zw%親文字2文字,ルビ1文字 \dimen1=#1 \advance\dimen1 by-.5zw \KANA{#1}{#1}{\dimen1}{#3}{#4}%元のまま(例外) \else %なし \dimen1=#2 \advance\dimen1 by-.5zw \KANAkt{#1}{#1}{\dimen1}{#3}{#4}% \fi\fi\fi} % % \kanjinobashii (2文字) %  親文字2文字で、親文字がルビより短い % \def\KTkanjinobashii#1#2#3#4{% \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断 \ifdim\dimen0<0.55zw%詰め組み (ルビ5字まで) \KANAkt{#1}{#1}{#2}{#3}{#4}% \else \ifdim\dimen0<1.45zw%少しひらく (ルビ6字まで) \dimen2=#2 \advance\dimen2-0.5zw \dimen1=\dimen2 \advance\dimen1-0.25zw \KANAkt{\dimen2}{\dimen1}{#2}{#3}{#4}% \else%本文末端二分アキ \dimen2=#2\relax \advance\dimen2 by-.5zw% \dimen1=\dimen2\relax \advance\dimen1 by-.5zw% \KANAkt{\dimen2}{\dimen1}{#2}{#3}{#4}% \fi\fi} % % 親文字3文字 % % \iKThonjiii{箱幅}{ルビ幅}{親文字}{ルビ} % \def\iKThonjiii#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashiii{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTkanjinobashiii{#1}{#2}{#3}{#4}% \fi} % % \KTkananobashiii (3文字) %  親文字3文字で、親文字がルビより長い % \def\KTkananobashiii#1#2#3#4{% \dimen0=#1\relax \advance\dimen0 by-#2\relax \ifdim\dimen0<.5zw%親文字3文字,ルビ5文字 \KANAkt{#1}{#1}{#1}{#3}{#4}% \else \ifdim\dimen0<1zw%親文字3文字,ルビ4文字 \dimen1=#1\relax \advance\dimen1 by-.25zw \KANAktS{#1}{#1}{\dimen1}{#3}{#4}% \else \ifdim\dimen0<2zw%親文字3文字,ルビ3文字 \dimen1=#1\relax \advance\dimen1 by-.5zw \KANAktS{#1}{#1}{\dimen1}{#3}{#4}% \else \ifdim\dimen0<2.2zw%親文字3文字,ルビ2文字 \dimen1=#1\relax \advance\dimen1 by-.5zw \KANAktS{#1}{#1}{\dimen1}{#3}{#4}% \else %親文字3文字,ルビ1文字 \dimen1=#1\relax \advance\dimen1 by-1zw \KANA{#1}{#1}{\dimen1}{#3}{#4}% \fi\fi\fi\fi} % % \KTkanjinobashiii (3文字) %  親文字3文字で、親文字がルビより短い % \def\KTkanjinobashiii#1#2#3#4{% \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断 \ifdim\dimen0<1zw%詰め組み (ルビ約7字まで) \KANAkt{#1}{#1}{#2}{#3}{#4}% \else% \ifdim\dimen0<2zw%本文後四分アキ(ルビ約9字まで) \dimen1=#2\relax \advance\dimen1 by-.5zw% \dimen2=\dimen1\relax \advance\dimen2 by-.25zw% \KANAkt{\dimen1}{\dimen2}{#2}{#3}{#4}%KKKK \else% \ifdim\dimen0<3zw%本文後二分アキ(ルビ約11字まで) \dimen1=#2\relax \advance\dimen1 by-.5zw% \dimen2=\dimen1\relax \advance\dimen2 by-.5zw% \KANAkt{\dimen1}{\dimen2}{#2}{#3}{#4}%KKKK \else%ルビ両袖に二分陥入 \dimen1=#1\relax \advance\dimen1 by1zw% \dimen2=#2\relax \advance\dimen2 by-1zw% \KANAkt{\dimen2}{\dimen1}{#2}{#3}{#4}% \fi\fi\fi} % % 親文字4文字 % % \iKThonjiv{箱幅}{ルビ幅}{親文字}{ルビ} % \def\iKThonjiv#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashiv{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTkanjinobashiv{#1}{#2}{#3}{#4}% \fi} % % \kananobashiv (4文字) %  親文字4文字で、親文字がルビより長い % \def\KTkananobashiv#1#2#3#4{% \dimen0=#1\relax \advance\dimen0 by-#2\relax \ifdim\dimen0<.6zw%親文字4文字,ルビ8, 7文字 \KANAkt{#1}{#1}{#1}{#3}{#4}% \else \ifdim\dimen0<1.2zw%親文字4文字,ルビ6文字 \dimen1=#1\relax \advance\dimen1 by-.5zw \KANAktS{#1}{#1}{\dimen1}{#3}{#4}% \else \ifdim\dimen0<1.6zw%親文字4文字,ルビ5, 4文字 \dimen1=#1\relax \advance\dimen1 by-.5zw \KANAktS{#1}{#1}{\dimen1}{#3}{#4}% \else \ifdim\dimen0<2.6zw%親文字4文字,ルビ3文字以下 \dimen1=#1\relax \advance\dimen1 by-.5zw \KANAktS{#1}{#1}{\dimen1}{#3}{#4}% \else \ifdim\dimen0<3.2zw%親文字4文字,ルビ2文字以下 \dimen1=#1\relax \advance\dimen1 by-.5zw \KANAktS{#1}{#1}{\dimen1}{#3}{#4}% \else \dimen1=#1\relax \advance\dimen1 by-1.5zw \KANA{#1}{#1}{\dimen1}{#3}{#4}% \fi\fi\fi\fi\fi} % % \KTkanjinobashiv (4文字) %  親文字4文字で、親文字がルビより短い % \def\KTkanjinobashiv#1#2#3#4{% \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断 \ifdim\dimen0<.6zw%詰め組み (ルビ約9字まで) \KANAkt{#1}{#1}{#2}{#3}{#4}% \else% \ifdim\dimen0<1.2zw%本文後四分アキ(ルビ約10字まで) \dimen1=#1\relax \advance\dimen1 by.25zw \dimen2=\dimen1\relax \advance\dimen2 by.25zw \KANAkt{\dimen2}{\dimen1}{#2}{#3}{#4}% \else% \ifdim\dimen0<1.6zw%本文後四分アキ(ルビ約11字まで) \dimen1=#2\relax \advance\dimen1 by-.5zw% \dimen2=#1\relax \advance\dimen2 by.75zw \KANAkt{\dimen1}{\dimen2}{#2}{#3}{#4}% \else% \ifdim\dimen0<2.2zw%本文後四分アキ(ルビ約12字まで) \dimen1=#2\relax \advance\dimen1 by-.5zw% \dimen2=#1\relax \advance\dimen2 by1.25zw \KANAkt{\dimen1}{\dimen2}{#2}{#3}{#4}% \else%ルビ両袖に二分陥入 \dimen1=#1\relax \advance\dimen1 by1zw% \dimen2=#2\relax \advance\dimen2 by-1zw% \KANAkt{\dimen2}{\dimen1}{#2}{#3}{#4}% \fi\fi\fi\fi} % % 親文字5文字 % % \iKThonjv{箱幅}{ルビ幅}{親文字}{ルビ} % % 代用 % \def\iKThonjv#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashiv{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTkanjinobashiv{#1}{#2}{#3}{#4}% \fi} % % *************** % * 特殊[2]処理 * % *************** % % 親文字1文字 % % \iiKThonji{箱幅}{ルビ幅}{親文字}{ルビ} % \def\iiKThonji#1#2#3#4{% %親文字1字 \ifdim#1>#2\relax% %親文字のほうが長い \KANAkt{#1}{#1}{#1}{#3}{#4}% \else %親文字のほうが短い \KTKanjinobashi{#1}{#2}{#3}{#4}% \fi} % % \KTKanjinobashi (1文字) % %  親文字1文字で、ルビが長い % (原則)本文前後四分アキ % \def\KTKanjinobashi#1#2#3#4{% \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断 \ifdim\dimen0<.5zw%詰め組み (ルビ約2字まで) \KANAkt{#1}{#1}{#2}{#3}{#4}% \else% \ifdim\dimen0<.95zw%本文前後八分アキ(ルビ約3字まで) \dimen1=#1 \advance\dimen1 by.25zw \KANAkt{\dimen1}{#1}{#2}{#3}{#4}% \else%ルビ両袖に四分陥入 \dimen1=#2 \advance\dimen1 by-.25zw% \KANAkt{\dimen1}{#1}{#2}{#3}{#4}% \fi\fi} % % 親文字2文字 % % \iiKThonjii{箱幅}{ルビ幅}{親文字}{ルビ} % \def\iiKThonjii#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashii{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTKanjinobashii{#1}{#2}{#3}{#4}% \fi} % % \KTKanjinobashii (2文字) %  親文字2文字で、親文字がルビより短い % (原則)本文後四分アキ % \def\KTKanjinobashii#1#2#3#4{% \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断 \ifdim\dimen0<0.1zw%詰め組み (ルビ約4字まで) \KANAkt{#1}{#1}{#2}{#3}{#4}% \else \ifdim\dimen0<.95zw%詰め組み (ルビ約5字まで) \dimen1=#2\relax \advance\dimen1 by-.25zw% \dimen2=\dimen1\relax \advance\dimen2 by-.25zw% \KANAkt{\dimen1}{\dimen2}{#2}{#3}{#4}% \else%本文後四分アキ \dimen1=#2\relax \advance\dimen1 by-.25zw% \dimen2=\dimen1\relax \advance\dimen2 by-.5zw% \KANAkt{\dimen1}{\dimen2}{#2}{#3}{#4}% \fi\fi} % % % 親文字3文字 % % \iiKThonjiii{箱幅}{ルビ幅}{親文字}{ルビ} % \def\iiKThonjiii#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashiii{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTKanjinobashiii{#1}{#2}{#3}{#4}% \fi} % % \KTKanjinobashiii (3文字) %  親文字3文字で、親文字がルビより短い % (原則)本文前後四分アキ % \let\KTKanjinobashiii=\KTKanjinobashii % % 親文字4文字 % % \iiKThonjiv{箱幅}{ルビ幅}{親文字}{ルビ} % \def\iiKThonjiv#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashiv{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTKanjinobashiv{#1}{#2}{#3}{#4}% \fi} % % \Kanjinobashiv (4文字) %  親文字4文字で、親文字がルビより短い % \let\KTKanjinobashiv=\KTKanjinobashii % % 親文字5文字 % % \iiKThonjv{箱幅}{ルビ幅}{親文字}{ルビ} % % 代用 % \def\iiKThonjv#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashiv{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTKanjinobashiv{#1}{#2}{#3}{#4}% \fi} % % *************** % * 特殊[3]処理 * % *************** % % 親文字1文字 % % \iiiKThonji{箱幅}{ルビ幅}{親文字}{ルビ} % \def\iiiKThonji#1#2#3#4{% %親文字1字 \ifdim#1>#2\relax% %親文字のほうが長い \KANAkt{#1}{#1}{#1}{#3}{#4}% \else %親文字のほうが短い \KTKAnjinobashi{#1}{#2}{#3}{#4}% \fi} % % \KAnjinobashi (1文字) % %  親文字1文字で、ルビが長い % (原則)本文前後二分アキ % \def\KTKAnjinobashi#1#2#3#4{% \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断 \ifdim\dimen0<.45zw%詰め組み (ルビ約2字まで) \KANAkt{#1}{#1}{#2}{#3}{#4}% \else%%前後文陥入なし \KANAkt{#2}{#1}{#2}{#3}{#4}% \fi} % % % 親文字2文字 % % \iiiKThonjii{箱幅}{ルビ幅}{親文字}{ルビ} % \def\iiiKThonjii#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashii{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTKAnjinobashii{#1}{#2}{#3}{#4}% \fi} % % \KTKAnjinobashii (2文字) %  親文字2文字で、親文字がルビより短い % (原則)本文前後二分アキ % \def\KTKAnjinobashii#1#2#3#4{% \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断 \ifdim\dimen0<.2zw%詰め組み (ルビ約4字まで) \KANAkt{#1}{#1}{#2}{#3}{#4}% \else% \ifdim\dimen0<.6zw%詰め組み (ルビ約5字まで) \dimen1=#2\relax \advance\dimen1 by-.25zw% \KANAkt{#2}{\dimen1}{#2}{#3}{#4}% \else%本文前二分アキ \dimen1=#2\relax \advance\dimen1 by-.5zw% \KANAkt{#2}{\dimen1}{#2}{#3}{#4}% \fi\fi} % % 親文字3文字 % % \iiiKThonjiii{箱幅}{ルビ幅}{親文字}{ルビ} % \def\iiiKThonjiii#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashiii{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTKAnjinobashiii{#1}{#2}{#3}{#4}% \fi} % % \KTKAnjinobashiii (3文字) %  親文字3文字で、親文字がルビより短い % (原則)本文前後二分アキ % \let\KTKAnjinobashiii=\KTKAnjinobashii % % 親文字4文字 % % \iiiKThonjiv{箱幅}{ルビ幅}{親文字}{ルビ} % \def\iiiKThonjiv#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashiv{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTKAnjinobashiv{#1}{#2}{#3}{#4}% \fi} % % \KAnjinobashiv (4文字) %  親文字4文字で、親文字がルビより短い % \let\KTKAnjinobashiv=\KTKAnjinobashii % % 親文字5文字 % % \iiiKThonjv{箱幅}{ルビ幅}{親文字}{ルビ} % % 代用 % \def\iiiKThonjv#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashiv{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTKAnjinobashiv{#1}{#2}{#3}{#4}% \fi} % % *************** % * 特殊[4]処理 * % *************** % % 親文字1文字 % % \ivKThonji{箱幅}{ルビ幅}{親文字}{ルビ} % \def\ivKThonji#1#2#3#4{% %親文字1字 \ifdim#1>#2\relax% %親文字のほうが長い \KANAkt{#1}{#1}{#1}{#3}{#4}% \else %親文字のほうが短い \KTKANjinobashi{#1}{#2}{#3}{#4}% \fi} % % \KTKANjinobashi (1文字) % %  親文字1文字で、ルビが長い % (原則)本文後アキ % \let\KTKANjinobashi=\KTKanjinobashi % % 親文字2文字 % % \ivKThonjii{箱幅}{ルビ幅}{親文字}{ルビ} % \def\ivKThonjii#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashii{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTKANjinobashii{#1}{#2}{#3}{#4}% \fi} % % \KTKANjinobashii (2文字) %  親文字2文字で、親文字がルビより短い % (原則)本文後アキなし % % \def\KTKANjinobashii#1#2#3#4{% \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断 \ifdim\dimen0<0.2zw%詰め組み (ルビ約4字まで) \KANAkt{#1}{#1}{#2}{#3}{#4}% \else \ifdim\dimen0<0.9zw%本文後八分アケ (ルビ約5字まで) \dimen1=#2\relax \advance\dimen1 by-.25zw \KANAkt{\dimen1}{\dimen1}{#2}{#3}{#4}% \else% \ifdim\dimen0<1.2zw%本文前後四分アキ(ルビ約6字まで) \dimen1=#2\relax \advance\dimen1 by-.25zw \KANAkt{\dimen1}{\dimen1}{#2}{#3}{#4}% \else% \ifdim\dimen0<1.6zw%本文前後二分アキ(ルビ約7字まで) \dimen1=#2\relax \advance\dimen1 by-.25zw% \KANAkt{\dimen1}{\dimen1}{#2}{#3}{#4}% \else% \ifdim\dimen0<2.2zw%本文前後二分アキ(ルビ約8字まで) \dimen1=#2\relax \advance\dimen1 by-.25zw% \KANAkt{\dimen1}{\dimen1}{#2}{#3}{#4}% \else%ルビ両袖に二分陥入 \dimen1=#2\relax \advance\dimen1 by-.25zw% \KANAkt{\dimen1}{\dimen1}{#2}{#3}{#4}% \fi\fi\fi\fi\fi} % % % 親文字3文字 % % \ivKThonjiii{箱幅}{ルビ幅}{親文字}{ルビ} % \def\ivKThonjiii#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashiii{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTKANjinobashiii{#1}{#2}{#3}{#4}% \fi} % % \KTKANjinobashiii (3文字) %  親文字3文字で、親文字がルビより短い % (原則)本文前後四分アキ % \let\KTKANjinobashiii=\KTKanjinobashii % % 親文字4文字 % % \ivKThonjiv{箱幅}{ルビ幅}{親文字}{ルビ} % \def\ivKThonjiv#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashiv{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTKANjinobashiv{#1}{#2}{#3}{#4}% \fi} % % \KTKANjinobashiv (4文字) %  親文字4文字で、親文字がルビより短い % \let\KTKANjinobashiv=\KTKanjinobashii % % 親文字5文字 % % \ivKThonjv{箱幅}{ルビ幅}{親文字}{ルビ} % % 代用 % \def\ivKThonjv#1#2#3#4{% \ifdim#1>#2\relax% %親文字のほうが長い \KTkananobashiv{#1}{#2}{#3}{#4}% \else %親文字のほうが短い \KTKANjinobashiv{#1}{#2}{#3}{#4}% \fi} %%%%%%%%%%%%% % % \Kanakt[原則]{親文字1,親文字2,...}{ルビ1,ルビ2,...} % % <原則> オプション0-3 (省略時は1)を指定 % 0 親文字とルビの長いほうにあわせて均等割 % 1 原則1 ルビが長いときに両端に前後の文を陥入(陥入度大) % 2 原則2 ルビが長いときに両端に前後の文を陥入(陥入度小) % 3 原則3 ルビが長いときに両端に前後の文を陥入なし % 4 原則4 ルビが長いときの例外 ex. 轟津 (とどろきのつ) % <親文字1,...> ベタで漢字を指定 (ルビと対応させて列挙 % <ルビ1,...> ベタでふりがなを指定 % \newcount\TestCnt \newcount\TestCNT \def\Kanakt{\@ifnextchar[{\@Kanakt}{\@Kanakt[1]}} \def\@Kanakt[#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@kt[#1]{\member}{\Member}\fi}}} \endinput