X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=latex_mk%2Ftest%2Fotsuberuto_zo%2Ffurikana.sty;fp=latex_mk%2Ftest%2Fotsuberuto_zo%2Ffurikana.sty;h=79fe37e61b02562869ad5e4eadeaa4d1554c10b0;hb=c20b687c8f8522a136f5b141da54d2aa86b86963;hp=0000000000000000000000000000000000000000;hpb=304f12a38e1b83b3295c5c11d90e889ccc825c78;p=makefiles.git diff --git a/latex_mk/test/otsuberuto_zo/furikana.sty b/latex_mk/test/otsuberuto_zo/furikana.sty new file mode 100644 index 0000000..79fe37e --- /dev/null +++ b/latex_mk/test/otsuberuto_zo/furikana.sty @@ -0,0 +1,860 @@ +% 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 +