テストに、相互参照に関するものを追加。また、エラーが発生するテストの名前をerrorではじまるよう変更
[makefiles.git] / latex_mk / test / otsuberuto_zo / furikana.sty
1 % furikana.sty by Shinsaku Fujita 2000/01/22 (v1.02)
2 % furikana.sty by Shinsaku Fujita 1998/08/21 (v1.01)
3 % furikana.sty by Shinsaku Fujita 1995/07/18 (v1.00)
4 % Copyright (C) 1995, 1998, 2000 by Shinsaku Fujita, 
5 % All rights reserved. 
6 %
7 %  横組みのルビを自動的に組むためのマクロです.
8 %
9 %  作成者: 藤田眞作
10 %          fujitas@chem.kit.ac.jp
11 %
12 %   藤田眞作著「\LaTeX本づくりの八衢」所載
13 %
14 %
15 %  \kana[原則]{親文字}{ルビ}
16 %  
17 %     <原則> オプション0-4 (省略時は1)を指定
18 %              0 親文字とルビの長いほうにあわせて均等割
19 %              1 原則1 ルビが長いときに両端に前後の文を陥入(陥入度大)
20 %              2 原則2 ルビが長いときに両端に前後の文を陥入(陥入度小)
21 %              3 原則3 ルビが長いときに両端に前後の文を陥入なし
22 %              4 原則4 ルビが長いときの例外 ex. 轟津 (とどろきのつ)
23 %     <親文字> ベタで漢字を指定
24 %     <ルビ> ベタでふりがなを指定
25 %
26 %  \Kana[原則]{親文字1,親文字2,...}{ルビ1,ルビ2,...}
27 %  
28 %     <原則> オプション0-4 (省略時は1)を指定
29 %              0 親文字とルビの長いほうにあわせて均等割
30 %              1 原則1 ルビが長いときに両端に前後の文を陥入(陥入度大)
31 %              2 原則2 ルビが長いときに両端に前後の文を陥入(陥入度小)
32 %              3 原則3 ルビが長いときに両端に前後の文を陥入なし
33 %              4 原則4 ルビが長いときの例外 ex. 轟津 (とどろきのつ)
34 %     <親文字1,...> ベタで漢字を指定 (ルビと対応させて列挙
35 %     <ルビ1,...> ベタでふりがなを指定
36 %
37 % \KANA{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ}
38 %     <正味幅> 出来上がったルビ付き文字の幅 (非陥入部分)
39 %     <箱幅> 箱幅(均等割に延ばすべき幅)
40 %     <ルビ幅> ルビ幅(均等割に延ばすべき幅)
41 %     <親文字>   ベタで漢字を指定
42 %     <ルビ>   ベタでふりがなを指定
43 % 変更 2000/01/22 by Shinsaku Fujita
44 % \let\KANA=\KANAorig ルビ高さあり
45 % \let\KANA=\KANAtop ルビ高さなし
46 %
47 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
48 %\def\j@urnalname{furikana}
49 %\def\versi@ndate{July 18, 1995}
50 %\def\versi@nno{ver1.00}
51 %\def\copyrighth@lder{SF} % Shinsaku Fujita
52 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
53 %改良点
54 % 全体を\hboxで包んで、\kanjiskipの設定が外に及ばないようにした
55 % by Shinsaku Fujita 1998/8/18
56 % \rubykatujiの新設
57 % by Shinsaku Fujita 1998/8/21
58 %
59 %\def\j@urnalname{furikana}
60 %\def\versi@ndate{January 21, 1998}
61 %\def\versi@nno{ver1.01}
62 %\def\copyrighth@lder{SF} % Shinsaku Fujita
63 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
64 \def\j@urnalname{furikana}
65 \def\versi@ndate{August 22, 2000}
66 \def\versi@nno{ver1.02}
67 \def\copyrighth@lder{S. Fujita} % Shinsaku Fujita
68 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
69 \typeout{Option Style `\j@urnalname' (\versi@nno) <\versi@ndate>\space 
70 [\copyrighth@lder]}
71 \typeout{藤田眞作「入門・縦横文書術」所載}
72 % ********
73 % * 警告 *
74 % ********
75 % ルビ活字は、本文活字の1/2のものを用いるのが原則です。
76 % 原則をはずれる場合もなんとか対処できるようにしてありますが、
77 % 最初に警告を出しておきます。
78 %
79 \setbox0=\hbox{漢}
80 \setbox1=\hbox{\tiny あ}
81 \dimen0=\wd0 \divide\dimen0 by2\relax
82 \dimen1=\dimen0
83 \advance\dimen0 by.01zw
84 \advance\dimen1 by-.01zw
85 \ifdim\wd1<\dimen1\relax
86 \typeout{ルビの活字が小さすぎます。}\fi
87 \ifdim\wd1>\dimen0\relax
88 \typeout{ルビの活字が大きすぎます。}\fi
89 %
90 %
91 %
92 \let\rubykatuji=\tiny
93 %
94 % ルビと親文字との間隔
95 % 標準は0pt。さらに開けたい場合は、プリアンブルで変更。
96 %
97 \newdimen\furikanaaki
98 \furikanaaki=0pt
99 %
100 % \nakakintou{長さ}{文字列}
101 %
102 %   均等割 (ただし,1文字の場合は中央揃えにする)
103 %
104 \def\nakakintou#1#2{\hbox to#1{%
105  \hss\kanjiskip=0pt plus 1fill minus 1fill
106  \xkanjiskip=\kanjiskip #2\hss}}
107 %
108 % \KANA{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ}
109 % \KANAorig{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ}
110 %
111 %   手動の振り仮名
112 %    \KANAorig <--- \KANA 改名
113 %    2000/1/22 by Shinsaku Fujita
114 %
115 \def\KANAorig#1#2#3#4#5{%
116  \def\@rubykatuji{\rubykatuji}%
117  \hbox to#1{\vbox{%
118  \hbox to#1{\hss\nakakintou{#3}{\hss\@rubykatuji #5\hss}\hss}%
119  \nointerlineskip%
120  \kern\furikanaaki%
121  \hbox to#1{\hss\nakakintou{#2}{#4}\hss}}}}
122 %
123 % \KANAtop{正味幅}{箱幅}{ルビ幅}{親文字}{ルビ}
124 %   手動の振り仮名
125 %   ルビ幅なし
126 %   2000/1/22 by Shinsaku Fujita
127 %
128 \def\KANAtop#1#2#3#4#5{%
129  \def\@rubykatuji{\rubykatuji}%
130  \hbox to#1{\vbox{%
131  \setbox6=\hbox{\nakakintou{#3}{\hss\@rubykatuji #5\hss}}%
132  \setbox6=\hbox to#1{\hss\raise\dp6\hbox{\box6}\hss}%
133  \hbox{\ht6=0pt\dp6=0pt\box6}%
134  \nointerlineskip%
135  \kern\furikanaaki%
136  \hbox to#1{\hss\nakakintou{#2}{#4}\hss}}}}
137 %
138 % デフォルトはルビ幅あり
139 %
140 \def\kanadashioff{\let\KANA=\KANAorig}
141 \def\kanadashion{\let\KANA=\KANAtop}
142 \kanadashioff
143 %
144 %
145 %  \k@n@[原則]{親文字}{ルビ}
146 %
147 %   メインマクロ
148 %  
149 %     <原則> オプション0-3 (省略時は1)を指定
150 %              0 親文字とルビの長いほうにあわせて均等割
151 %              1 原則1 ルビが長いときに両端に前後の文を陥入(陥入度大)
152 %              2 原則2 ルビが長いときに両端に前後の文を陥入(陥入度小)
153 %              3 原則3 ルビが長いときに両端に前後の文を陥入なし
154 %              4 原則4 ルビが長いときの例外 ex. 轟津 (とどろきのつ)
155 %     <親文字> ベタで漢字を指定
156 %     <ルビ> ベタでふりがなを指定
157 %
158 \def\kana{\@ifnextchar[{\k@n@}{\k@n@[1]}}
159 \def\k@n@[#1]#2#3{\leavevmode%
160 \ifhmode\edef\@x@sf{\the\spacefactor}\fi
161  \kern-1zw%全角の空白
162 \hbox{%
163 %全体を伸ばしの設定にしておく
164 \kanjiskip=0pt plus 1fill minus 1fill
165 \xkanjiskip=0pt
166 %
167 \def\@rubykatuji{\rubykatuji}%
168 \ifx\#2\empty\else%
169 \ifx\#3\empty\else%
170 \setbox0=\hbox{#2}%
171 \setbox1=\hbox{\@rubykatuji #3}%
172 \ifcase#1 \ifdim\wd0>\wd1\relax
173  \KANA{\wd0}{\wd0}{\wd0}{#2}{#3}\else
174  \KANA{\wd1}{\wd1}{\wd1}{#2}{#3}\fi
175 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
176 \or%#1=1 (原則1--default)
177  \ifdim\wd0<1.3zw%
178   \ihonji{\wd0}{\wd1}{#2}{#3}%親文字1字
179 \else
180 \ifdim\wd0<2.3zw%
181   \ihonjii{\wd0}{\wd1}{#2}{#3}%親文字2字
182 \else
183 \ifdim\wd0<3.3zw%
184   \ihonjiii{\wd0}{\wd1}{#2}{#3}%親文字3字
185 \else
186 \ifdim\wd0<4.4zw%
187   \ihonjiv{\wd0}{\wd1}{#2}{#3}%親文字4字
188 \else
189 %\ifdim\wd0<5.4zw%
190   \ihonjv{\wd0}{\wd1}{#2}{#3}%親文字5字以上
191 \fi\fi\fi\fi%\fi
192 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
193 \or%#1=2 (原則2--option)
194  \ifdim\wd0<1.3zw 
195    \iihonji{\wd0}{\wd1}{#2}{#3}%親文字1字
196  \else
197   \ifdim\wd0<2.3zw 
198    \iihonjii{\wd0}{\wd1}{#2}{#3}%親文字2字
199  \else
200   \ifdim\wd0<3.3zw 
201    \iihonjiii{\wd0}{\wd1}{#2}{#3}%親文字3字
202  \else
203   \ifdim\wd0<4.4zw 
204    \iihonjiv{\wd0}{\wd1}{#2}{#3}%親文字4字
205   \else
206    \iihonjv{\wd0}{\wd1}{#2}{#3}%親文字5字以上
207 \fi\fi\fi\fi
208 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
209 \or%#1=3(原則3--option)
210  \ifdim\wd0<1.3zw 
211    \iiihonji{\wd0}{\wd1}{#2}{#3}%親文字1字
212  \else
213   \ifdim\wd0<2.3zw 
214    \iiihonjii{\wd0}{\wd1}{#2}{#3}%親文字2字
215  \else
216   \ifdim\wd0<3.3zw 
217    \iiihonjiii{\wd0}{\wd1}{#2}{#3}%親文字3字
218  \else
219   \ifdim\wd0<4.4zw 
220    \iiihonjiv{\wd0}{\wd1}{#2}{#3}%親文字4字
221   \else
222    \iiihonjv{\wd0}{\wd1}{#2}{#3}%親文字5字以上
223 \fi\fi\fi\fi
224 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
225 \or%#1=4 (原則4--option)
226  \ifdim\wd0<1.3zw 
227    \ivhonji{\wd0}{\wd1}{#2}{#3}%親文字1字
228  \else
229   \ifdim\wd0<2.3zw 
230    \ivhonjii{\wd0}{\wd1}{#2}{#3}%親文字2字
231  \else
232   \ifdim\wd0<3.3zw 
233    \ivhonjiii{\wd0}{\wd1}{#2}{#3}%親文字3字
234  \else
235   \ifdim\wd0<4.4zw 
236    \ivhonjiv{\wd0}{\wd1}{#2}{#3}%親文字4字
237   \else
238    \ivhonjv{\wd0}{\wd1}{#2}{#3}%親文字5字以上
239 \fi\fi\fi\fi
240 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
241 %\or%for further treatment
242 \fi\ifhmode\spacefactor\@x@sf\fi\fi\fi}%
243 \kern-1zw %全角の空白
244 }
245 %
246 % ***************
247 % * 通常[1]処理 *
248 % ***************
249 %
250 % 親文字1文字
251 %
252 % \ihonji{箱幅}{ルビ幅}{親文字}{ルビ}
253 %
254 \def\ihonji#1#2#3#4{%
255  %親文字1字
256    \ifdim#1>#2\relax%
257    %親文字のほうが長い
258     \KANA{#1}{#1}{#1}{#3}{#4}%
259    \else
260    %親文字のほうが短い
261     \kanjinobashi{#1}{#2}{#3}{#4}%
262    \fi}
263 %
264 % \kanjinobashi (1文字)
265 %
266 %  親文字1文字で、ルビが長い
267 %
268 \def\kanjinobashi#1#2#3#4{%
269    \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
270    \ifdim\dimen0<1.1zw%詰め組み (ルビ約4字まで)
271        \KANA{#1}{#1}{#2}{#3}{#4}%
272      \else%
273 %      \ifdim\dimen0<2zw%本文前後二分アキ(ルビ約5字まで)
274       \ifdim\dimen0<1.95zw%本文前後二分アキ(ルビ約5字まで)
275        \dimen1=#1 \advance\dimen1 by.5zw%
276        \KANA{\dimen1}{#1}{#2}{#3}{#4}%
277       \else%ルビ両袖に二分陥入
278        \dimen1=#2 \advance\dimen1 by-1zw%
279       \KANA{\dimen1}{#1}{#2}{#3}{#4}%
280 \fi\fi}
281 %
282 % 親文字2文字
283 %
284 % \ihonjii{箱幅}{ルビ幅}{親文字}{ルビ}
285 %
286 \def\ihonjii#1#2#3#4{%
287    \ifdim#1>#2\relax%
288    %親文字のほうが長い
289     \kananobashii{#1}{#2}{#3}{#4}%
290    \else
291    %親文字のほうが短い
292     \kanjinobashii{#1}{#2}{#3}{#4}%
293    \fi}
294 %
295 % \kananobashii (2文字)
296 %  親文字2文字で、親文字がルビより長い
297 %
298  \def\kananobashii#1#2#3#4{%
299   \dimen0=#1\relax \advance\dimen0 by-#2\relax
300   \ifdim\dimen0<.5zw%親文字2文字,ルビ3文字
301    \KANA{#1}{#1}{#1}{#3}{#4}%
302   \else
303   \ifdim\dimen0<1zw%親文字2文字,ルビ2文字
304    \dimen1=#1 \advance\dimen1 by-.25zw
305    \KANA{#1}{#1}{\dimen1}{#3}{#4}%
306    \else 
307    \ifdim\dimen0<2zw%親文字2文字,ルビ1文字
308    \dimen1=#1 \advance\dimen1 by-.5zw
309    \KANA{#1}{#1}{\dimen1}{#3}{#4}%
310    \else %なし
311    \dimen1=#2 \advance\dimen1 by-.5zw
312    \KANA{#1}{#1}{\dimen1}{#3}{#4}%
313   \fi\fi\fi}
314 %
315 % \kanjinobashii (2文字)
316 %  親文字2文字で、親文字がルビより短い
317 %
318 \def\kanjinobashii#1#2#3#4{%
319    \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
320 %   \ifdim\dimen0<1.5zw%詰め組み (ルビ約6字まで)
321    \ifdim\dimen0<1.45zw%詰め組み (ルビ約6字まで)
322        \KANA{#1}{#1}{#2}{#3}{#4}%
323      \else%ルビ両袖に二分陥入
324        \dimen2=#2\relax \advance\dimen2 by-1zw%
325        \dimen1=\dimen2\relax \advance\dimen1 by-.5zw%
326       \KANA{\dimen2}{\dimen1}{#2}{#3}{#4}%
327 \fi}
328 %
329 % 親文字3文字
330 %
331 % \ihonjiii{箱幅}{ルビ幅}{親文字}{ルビ}
332 %
333 \def\ihonjiii#1#2#3#4{%
334    \ifdim#1>#2\relax%
335    %親文字のほうが長い
336     \kananobashiii{#1}{#2}{#3}{#4}%
337    \else
338    %親文字のほうが短い
339     \kanjinobashiii{#1}{#2}{#3}{#4}%
340    \fi}
341 %
342 % \kananobashiii (3文字)
343 %  親文字3文字で、親文字がルビより長い
344 %
345 \def\kananobashiii#1#2#3#4{%
346   \dimen0=#1\relax \advance\dimen0 by-#2\relax
347   \ifdim\dimen0<.5zw%親文字3文字,ルビ5文字
348    \KANA{#1}{#1}{#1}{#3}{#4}%
349   \else
350   \ifdim\dimen0<1zw%親文字3文字,ルビ4文字
351    \dimen1=#1\relax \advance\dimen1 by-.25zw
352    \KANA{#1}{#1}{\dimen1}{#3}{#4}%
353    \else 
354    \ifdim\dimen0<2zw%親文字3文字,ルビ3文字
355     \dimen1=#1\relax \advance\dimen1 by-.5zw
356     \KANA{#1}{#1}{\dimen1}{#3}{#4}%
357    \else %親文字3文字,ルビ2文字以下
358     \dimen1=#1\relax \advance\dimen1 by-1zw
359     \KANA{#1}{#1}{\dimen1}{#3}{#4}%
360 \fi\fi\fi}
361 %
362 % \kanjinobashiii (3文字)
363 %  親文字3文字で、親文字がルビより短い
364 %
365
366 \def\kanjinobashiii#1#2#3#4{%
367    \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
368    \ifdim\dimen0<1zw%詰め組み (ルビ約7字まで)
369        \KANA{#1}{#1}{#2}{#3}{#4}%
370      \else%
371       \ifdim\dimen0<2zw%本文前後二分アキ(ルビ約9字まで)
372        \dimen1=#2\relax \advance\dimen1 by-.5zw%
373        \dimen2=\dimen1\relax \advance\dimen2 by-.5zw%
374        \KANA{\dimen1}{\dimen2}{#2}{#3}{#4}%KKKK
375      \else%
376       \ifdim\dimen0<3zw%本文前後二分アキ(ルビ約11字まで)
377        \dimen1=#2\relax \advance\dimen1 by-1zw%
378        \dimen2=\dimen1\relax \advance\dimen2 by-.5zw%
379        \KANA{\dimen1}{\dimen2}{#2}{#3}{#4}%KKKK
380       \else%ルビ両袖に二分陥入
381        \dimen1=#1\relax \advance\dimen1 by1zw%
382        \dimen2=#2\relax \advance\dimen2 by-1zw%
383       \KANA{\dimen2}{\dimen1}{#2}{#3}{#4}%
384 \fi\fi\fi}
385 %
386 % 親文字4文字
387 %
388 % \ihonjiv{箱幅}{ルビ幅}{親文字}{ルビ}
389 %
390 \def\ihonjiv#1#2#3#4{%
391    \ifdim#1>#2\relax%
392    %親文字のほうが長い
393     \kananobashiv{#1}{#2}{#3}{#4}%
394    \else
395    %親文字のほうが短い
396     \kanjinobashiv{#1}{#2}{#3}{#4}%
397    \fi}
398 %
399 % \kananobashiv (4文字)
400 %  親文字4文字で、親文字がルビより長い
401 %
402  \def\kananobashiv#1#2#3#4{%
403   \dimen0=#1\relax \advance\dimen0 by-#2\relax
404   \ifdim\dimen0<1zw%親文字3文字,ルビ8, 7文字
405    \KANA{#1}{#1}{#1}{#3}{#4}%
406   \else
407   \ifdim\dimen0<2zw%親文字3文字,ルビ6文字
408    \dimen1=#2\relax \advance\dimen1 by.5zw
409    \KANA{#1}{#1}{\dimen1}{#3}{#4}%
410    \else 
411    \ifdim\dimen0<3zw%親文字3文字,ルビ5, 4文字
412     \dimen1=#2\relax \advance\dimen1 by1zw
413     \KANA{#1}{#1}{\dimen1}{#3}{#4}%
414    \else %親文字3文字,ルビ3文字以下
415     \dimen1=#1\relax \advance\dimen1 by-1.5zw
416     \KANA{#1}{#1}{\dimen1}{#3}{#4}%
417   \fi\fi\fi}
418 %
419 % \kanjinobashiv (4文字)
420 %  親文字4文字で、親文字がルビより短い
421 %
422  \def\kanjinobashiv#1#2#3#4{%
423    \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
424    \ifdim\dimen0<1zw%詰め組み (ルビ約9字まで)
425        \KANA{#1}{#1}{#2}{#3}{#4}%
426    \else%
427      \ifdim\dimen0<1.5zw%本文前後四分アキ(ルビ約10字まで)
428        \dimen1=#1\relax \advance\dimen1 by.5zw
429        \dimen2=\dimen1\relax \advance\dimen2 by.5zw
430        \KANA{\dimen2}{\dimen1}{#2}{#3}{#4}%
431      \else%
432       \ifdim\dimen0<2zw%本文前後二分アキ(ルビ約11字まで)
433        \dimen1=#1\relax \advance\dimen1 by1zw%
434        \KANA{#2}{\dimen1}{#2}{#3}{#4}%
435       \else%
436       \ifdim\dimen0<3zw%本文前後二分半アキ(ルビ約12字まで)
437        \dimen1=#1\relax \advance\dimen1 by1.5zw%
438        \KANA{#2}{\dimen1}{#2}{#3}{#4}%
439       \else%ルビ両袖に二分陥入
440        \dimen1=#1\relax \advance\dimen1 by1zw%
441        \dimen2=#2\relax \advance\dimen2 by-1zw%
442       \KANA{\dimen2}{\dimen1}{#2}{#3}{#4}%
443     \fi\fi\fi\fi}
444 %
445 % 親文字5文字
446 %
447 % \ihonjv{箱幅}{ルビ幅}{親文字}{ルビ}
448 %
449 % 代用
450 %
451 \def\ihonjv#1#2#3#4{%
452    \ifdim#1>#2\relax%
453    %親文字のほうが長い
454     \kananobashiv{#1}{#2}{#3}{#4}%
455    \else
456    %親文字のほうが短い
457     \kanjinobashiv{#1}{#2}{#3}{#4}%
458    \fi}
459 %
460 % ***************
461 % * 特殊[2]処理 *
462 % ***************
463 %
464 % 親文字1文字
465 %
466 % \iihonji{箱幅}{ルビ幅}{親文字}{ルビ}
467 %
468 \def\iihonji#1#2#3#4{%
469  %親文字1字
470    \ifdim#1>#2\relax%
471    %親文字のほうが長い
472     \KANA{#1}{#1}{#1}{#3}{#4}%
473    \else
474    %親文字のほうが短い
475     \Kanjinobashi{#1}{#2}{#3}{#4}%
476    \fi}
477 %
478 % \Kanjinobashi (1文字)
479 %
480 %  親文字1文字で、ルビが長い
481 %    (原則)本文前後四分アキ
482 %
483 \def\Kanjinobashi#1#2#3#4{%
484    \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
485    \ifdim\dimen0<.5zw%詰め組み (ルビ約2字まで)
486        \KANA{#1}{#1}{#2}{#3}{#4}%
487    \else%
488 %     \ifdim\dimen0<1zw%本文前後八分アキ(ルビ約3字まで)
489      \ifdim\dimen0<.95zw%本文前後八分アキ(ルビ約3字まで)
490        \dimen1=#1 \advance\dimen1 by.25zw
491        \KANA{\dimen1}{#1}{#2}{#3}{#4}%
492       \else%ルビ両袖に四分陥入
493        \dimen1=#2 \advance\dimen1 by-.5zw%
494       \KANA{\dimen1}{#1}{#2}{#3}{#4}%
495 \fi\fi}
496 %
497 % 親文字2文字
498 %
499 % \iihonjii{箱幅}{ルビ幅}{親文字}{ルビ}
500 %
501 \def\iihonjii#1#2#3#4{%
502    \ifdim#1>#2\relax%
503    %親文字のほうが長い
504     \kananobashii{#1}{#2}{#3}{#4}%
505    \else
506    %親文字のほうが短い
507     \Kanjinobashii{#1}{#2}{#3}{#4}%
508 \fi}
509 %
510 % \Kanjinobashii (2文字)
511 %  親文字2文字で、親文字がルビより短い
512 %    (原則)本文前後四分アキ
513 %
514 \def\Kanjinobashii#1#2#3#4{%
515    \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
516 %   \ifdim\dimen0<1zw%詰め組み (ルビ約5字まで)
517    \ifdim\dimen0<.95zw%詰め組み (ルビ約5字まで)
518        \KANA{#1}{#1}{#2}{#3}{#4}%
519    \else%本文前後四分アキ
520        \dimen1=#2\relax \advance\dimen1 by-1zw%
521        \dimen2=#2\relax \advance\dimen2 by-.5zw%
522       \KANA{\dimen2}{\dimen1}{#2}{#3}{#4}%
523 \fi}
524 %
525 %
526 % 親文字3文字
527 %
528 % \iihonjiii{箱幅}{ルビ幅}{親文字}{ルビ}
529 %
530 \def\iihonjiii#1#2#3#4{%
531    \ifdim#1>#2\relax%
532    %親文字のほうが長い
533     \kananobashiii{#1}{#2}{#3}{#4}%
534    \else
535    %親文字のほうが短い
536     \Kanjinobashiii{#1}{#2}{#3}{#4}%
537    \fi}
538 %
539 % \Kanjinobashiii (3文字)
540 %  親文字3文字で、親文字がルビより短い
541 %    (原則)本文前後四分アキ
542 %
543 \let\Kanjinobashiii=\Kanjinobashii
544 %
545 % 親文字4文字
546 %
547 % \iihonjiv{箱幅}{ルビ幅}{親文字}{ルビ}
548 %
549 \def\iihonjiv#1#2#3#4{%
550    \ifdim#1>#2\relax%
551    %親文字のほうが長い
552     \kananobashiv{#1}{#2}{#3}{#4}%
553    \else
554    %親文字のほうが短い
555     \Kanjinobashiv{#1}{#2}{#3}{#4}%
556    \fi}
557 %
558 % \Kanjinobashiv (4文字)
559 %  親文字4文字で、親文字がルビより短い
560 %
561 \let\Kanjinobashiv=\Kanjinobashii
562 %
563 % 親文字5文字
564 %
565 % \iihonjv{箱幅}{ルビ幅}{親文字}{ルビ}
566 %
567 % 代用
568 %
569 \def\iihonjv#1#2#3#4{%
570    \ifdim#1>#2\relax%
571    %親文字のほうが長い
572     \kananobashiv{#1}{#2}{#3}{#4}%
573    \else
574    %親文字のほうが短い
575     \Kanjinobashiv{#1}{#2}{#3}{#4}%
576    \fi}
577 %
578 % ***************
579 % * 特殊[3]処理 *
580 % ***************
581 %
582 % 親文字1文字
583 %
584 % \iiihonji{箱幅}{ルビ幅}{親文字}{ルビ}
585 %
586 \def\iiihonji#1#2#3#4{%
587  %親文字1字
588    \ifdim#1>#2\relax%
589    %親文字のほうが長い
590     \KANA{#1}{#1}{#1}{#3}{#4}%
591    \else
592    %親文字のほうが短い
593     \KAnjinobashi{#1}{#2}{#3}{#4}%
594    \fi}
595 %
596 % \KAnjinobashi (1文字)
597 %
598 %  親文字1文字で、ルビが長い
599 %    (原則)本文前後二分アキ
600 %
601 \def\KAnjinobashi#1#2#3#4{%
602    \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
603 %   \ifdim\dimen0<.5zw%詰め組み (ルビ約2字まで)
604    \ifdim\dimen0<.45zw%詰め組み (ルビ約2字まで)
605        \KANA{#1}{#1}{#2}{#3}{#4}%
606      \else%%前後文陥入なし
607        \KANA{#2}{#1}{#2}{#3}{#4}%
608 \fi}
609 %
610 %
611 % 親文字2文字
612 %
613 % \iiihonjii{箱幅}{ルビ幅}{親文字}{ルビ}
614 %
615 \def\iiihonjii#1#2#3#4{%
616    \ifdim#1>#2\relax%
617    %親文字のほうが長い
618     \kananobashii{#1}{#2}{#3}{#4}%
619    \else
620    %親文字のほうが短い
621     \KAnjinobashii{#1}{#2}{#3}{#4}%
622    \fi}
623 %
624 % \KAnjinobashii (2文字)
625 %  親文字2文字で、親文字がルビより短い
626 %    (原則)本文前後二分アキ
627 %
628  \def\KAnjinobashii#1#2#3#4{%
629    \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
630 %   \ifdim\dimen0<.5zw%詰め組み (ルビ約4字まで)
631    \ifdim\dimen0<.45zw%詰め組み (ルビ約4字まで)
632        \KANA{#1}{#1}{#2}{#3}{#4}%
633    \else%
634     \ifdim\dimen0<1zw%詰め組み (ルビ約5字まで)
635        \dimen1=#2\relax \advance\dimen1 by-.5zw%
636        \KANA{#2}{\dimen1}{#2}{#3}{#4}%
637     \else%本文前後二分アキ
638        \dimen1=#2\relax \advance\dimen1 by-1zw%
639       \KANA{#2}{\dimen1}{#2}{#3}{#4}%
640 \fi\fi}
641 %
642 % 親文字3文字
643 %
644 % \iiihonjiii{箱幅}{ルビ幅}{親文字}{ルビ}
645 %
646 \def\iiihonjiii#1#2#3#4{%
647    \ifdim#1>#2\relax%
648    %親文字のほうが長い
649     \kananobashiii{#1}{#2}{#3}{#4}%
650    \else
651    %親文字のほうが短い
652     \KAnjinobashiii{#1}{#2}{#3}{#4}%
653    \fi}
654 %
655 % \KAnjinobashiii (3文字)
656 %  親文字3文字で、親文字がルビより短い
657 %    (原則)本文前後二分アキ
658 %
659 \let\KAnjinobashiii=\KAnjinobashii
660 %
661 % 親文字4文字
662 %
663 % \iiihonjiv{箱幅}{ルビ幅}{親文字}{ルビ}
664 %
665 \def\iiihonjiv#1#2#3#4{%
666    \ifdim#1>#2\relax%
667    %親文字のほうが長い
668     \kananobashiv{#1}{#2}{#3}{#4}%
669    \else
670    %親文字のほうが短い
671     \KAnjinobashiv{#1}{#2}{#3}{#4}%
672    \fi}
673 %
674 % \KAnjinobashiv (4文字)
675 %  親文字4文字で、親文字がルビより短い
676 %
677 \let\KAnjinobashiv=\KAnjinobashii
678 %
679 % 親文字5文字
680 %
681 % \iiihonjv{箱幅}{ルビ幅}{親文字}{ルビ}
682 %
683 % 代用
684 %
685 \def\iiihonjv#1#2#3#4{%
686    \ifdim#1>#2\relax%
687    %親文字のほうが長い
688     \kananobashiv{#1}{#2}{#3}{#4}%
689    \else
690    %親文字のほうが短い
691     \KAnjinobashiv{#1}{#2}{#3}{#4}%
692    \fi}
693 %
694 % ***************
695 % * 特殊[4]処理 *
696 % ***************
697 %
698 % 親文字1文字
699 %
700 % \ivhonji{箱幅}{ルビ幅}{親文字}{ルビ}
701 %
702 \def\ivhonji#1#2#3#4{%
703  %親文字1字
704    \ifdim#1>#2\relax%
705    %親文字のほうが長い
706     \KANA{#1}{#1}{#1}{#3}{#4}%
707    \else
708    %親文字のほうが短い
709     \KANjinobashi{#1}{#2}{#3}{#4}%
710    \fi}
711 %
712 % \KANjinobashi (1文字)
713 %
714 %  親文字1文字で、ルビが長い
715 %    (原則)本文前後四分アキ
716 %
717 \let\KANjinobashi=\Kanjinobashi
718 %
719 % 親文字2文字
720 %
721 % \ivhonjii{箱幅}{ルビ幅}{親文字}{ルビ}
722 %
723 \def\ivhonjii#1#2#3#4{%
724    \ifdim#1>#2\relax%
725    %親文字のほうが長い
726     \kananobashii{#1}{#2}{#3}{#4}%
727    \else
728    %親文字のほうが短い
729     \KANjinobashii{#1}{#2}{#3}{#4}%
730    \fi}
731 %
732 % \KANjinobashii (2文字)
733 %  親文字2文字で、親文字がルビより短い
734 %    (原則)本文前後四分アキ
735 %
736 %
737  \def\KANjinobashii#1#2#3#4{%
738    \dimen0=#2\relax \advance\dimen0 by-#1\relax%親文字とルビの差で判断
739    \ifdim\dimen0<0.9zw%詰め組み (ルビ約5字まで)
740        \KANA{#1}{#1}{#2}{#3}{#4}%
741    \else%
742      \ifdim\dimen0<1.5zw%本文前後四分アキ(ルビ約6字まで)
743        \dimen1=#1\relax \advance\dimen1 by.5zw
744        \KANA{#2}{\dimen1}{#2}{#3}{#4}%
745      \else%
746       \ifdim\dimen0<2zw%本文前後二分アキ(ルビ約7字まで)
747        \dimen1=#1\relax \advance\dimen1 by1zw%
748        \KANA{#2}{\dimen1}{#2}{#3}{#4}%
749      \else%
750       \ifdim\dimen0<3zw%本文前後二分アキ(ルビ約7字まで)
751        \dimen1=#1\relax \advance\dimen1 by1.5zw%
752        \KANA{#2}{\dimen1}{#2}{#3}{#4}%
753      \else%ルビ両袖に二分陥入
754        \dimen1=#1\relax \advance\dimen1 by1zw%
755        \dimen2=#2\relax \advance\dimen2 by-1zw%
756       \KANA{\dimen2}{\dimen1}{#2}{#3}{#4}%
757     \fi\fi\fi\fi}
758 %
759 %
760 % 親文字3文字
761 %
762 % \ivhonjiii{箱幅}{ルビ幅}{親文字}{ルビ}
763 %
764 \def\ivhonjiii#1#2#3#4{%
765    \ifdim#1>#2\relax%
766    %親文字のほうが長い
767     \kananobashiii{#1}{#2}{#3}{#4}%
768    \else
769    %親文字のほうが短い
770     \KANjinobashiii{#1}{#2}{#3}{#4}%
771    \fi}
772 %
773 % \KANjinobashiii (3文字)
774 %  親文字3文字で、親文字がルビより短い
775 %    (原則)本文前後四分アキ
776 %
777 \let\KANjinobashiii=\Kanjinobashii
778 %
779 % 親文字4文字
780 %
781 % \ivhonjiv{箱幅}{ルビ幅}{親文字}{ルビ}
782 %
783 \def\ivhonjiv#1#2#3#4{%
784    \ifdim#1>#2\relax%
785    %親文字のほうが長い
786     \kananobashiv{#1}{#2}{#3}{#4}%
787    \else
788    %親文字のほうが短い
789     \KANjinobashiv{#1}{#2}{#3}{#4}%
790    \fi}
791 %
792 % \KANjinobashiv (4文字)
793 %  親文字4文字で、親文字がルビより短い
794 %
795 \let\KANjinobashiv=\Kanjinobashii
796 %
797 % 親文字5文字
798 %
799 % \ivhonjv{箱幅}{ルビ幅}{親文字}{ルビ}
800 %
801 % 代用
802 %
803 \def\ivhonjv#1#2#3#4{%
804    \ifdim#1>#2\relax%
805    %親文字のほうが長い
806     \kananobashiv{#1}{#2}{#3}{#4}%
807    \else
808    %親文字のほうが短い
809     \KANjinobashiv{#1}{#2}{#3}{#4}%
810    \fi}
811 %%%%%%%%%%%%%
812 %
813 %  \Kana[原則]{親文字1,親文字2,...}{ルビ1,ルビ2,...}
814 %  
815 %     <原則> オプション0-3 (省略時は1)を指定
816 %              0 親文字とルビの長いほうにあわせて均等割
817 %              1 原則1 ルビが長いときに両端に前後の文を陥入(陥入度大)
818 %              2 原則2 ルビが長いときに両端に前後の文を陥入(陥入度小)
819 %              3 原則3 ルビが長いときに両端に前後の文を陥入なし
820 %              4 原則4 ルビが長いときの例外 ex. 轟津 (とどろきのつ)
821 %     <親文字1,...> ベタで漢字を指定 (ルビと対応させて列挙
822 %     <ルビ1,...> ベタでふりがなを指定
823 %
824 \newcount\TestCnt
825 \newcount\TestCNT
826 \def\Kana{\@ifnextchar[{\@Kana}{\@Kana[1]}}
827 \def\@Kana[#1]#2#3{\leavevmode\TestCnt=\z@
828 \@for\member:=#2\do{\advance\TestCnt\@ne\TestCNT=\z@
829 \@for\Member:=#3\do{\advance\TestCNT\@ne
830 \ifnum\TestCnt=\TestCNT\relax%
831 \k@n@[#1]{\member}{\Member}\fi}}}
832 %
833 % ルビの行末揃え
834 % 2000/02/11 by Shinsaku Fujita
835 % ルビの高さなし
836 \def\KANAmatubi#1#2#3#4#5{%
837  \def\@rubykatuji{\rubykatuji}%
838  \hbox to#1{\vbox{%
839  \setbox6=\hbox{\nakakintou{#3}{\hss\@rubykatuji #5\hss}}%
840  \setbox6=\hbox to#1{\hss\raise\dp6\hbox{\box6}}%
841  \hbox{\ht6=0pt\dp6=0pt\box6}%ルビの高さなし
842 % \hbox{\box6}%ルビの高さのそのままにするとき
843  \nointerlineskip%
844  \kern\furikanaaki%
845  \hbox to#1{\hss\nakakintou{#2}{#4}}}}}
846 % ルビの行末揃え
847 % 2000/02/11 by Shinsaku Fujita
848 % ルビの高さあり
849 \def\KANAorigmatubi#1#2#3#4#5{%
850  \def\@rubykatuji{\rubykatuji}%
851  \hbox to#1{\vbox{%
852  \setbox6=\hbox{\nakakintou{#3}{\hss\@rubykatuji #5\hss}}%
853  \setbox6=\hbox to#1{\hss\raise\dp6\hbox{\box6}}%
854 % \hbox{\ht6=0pt\dp6=0pt\box6}%ルビの高さなし
855  \hbox{\box6}%ルビの高さのそのままにするとき
856  \nointerlineskip%
857  \kern\furikanaaki%
858  \hbox to#1{\hss\nakakintou{#2}{#4}}}}}
859 \endinput
860 \1a