OSDN Git Service

Now works again as old
[luatex-ja/luatexja.git] / test / test14-ruby.tex
1 %#! luajitlatex
2 %%% a test of ruby.
3 \documentclass[b5paper,10pt]{ltjsarticle}
4 \usepackage{fontspec,luacode,luatexja-otf,amsmath}
5 \usepackage{unicode-math}
6 \setmathfont{XITS Math}
7 \setmainfont{TeX Gyre Termes}
8 \setsansfont{TeX Gyre Heros}
9 \setmonofont{LMMono10-Regular}
10 \usepackage{luatexja-ruby,showexpl,booktabs}
11 \lstset{preset=\huge,basicstyle=\ttfamily}
12 \fboxsep=0mm
13 %\usepackage{lua-visual-debug}
14
15 \def\kata{\ltjsetruby{kata}} 
16 % 肩つきルビ用簡易設定.グループルビでは使用しないこと
17 \def\notalign{\setkeys[ltj]{ruby}{stretchhead = {1}{2}{1}, stretchend = {1}{2}{1}}}
18 % 行頭・行末で揃えない
19
20 \def\Node#1#2{\,\vcenter{\hbox{\fboxsep=1pt\fbox{\vbox{\small\halign{\hfil##\hfil\cr
21   #1\mathstrut\cr\noalign{\hrule height.4pt}\strut#2\cr}}}}\,}}
22 \def\LuaTeX{Lua\TeX}
23
24 % 三分ルビ用
25 \DeclareFontShape{JY3}{mc}{mc}{n}{<-> [0.92487] 
26   psft:Ryumin-Light:extend=0.67;jfm=ujisc33}{}
27
28 \title{ルビ実装のサンプル}
29 \begin{document}
30 %\fontsize{13.19873}{10}\selectfont%
31 %
32 %を\hbox{\ruby{凝}{ぎょう}}あ\ruby{視}{し}する
33 %\end{document}
34 \maketitle
35
36 \section{使い方}
37 \begin{itemize}
38 \item パッケージ読み込み:\verb+\usepackage{luatexja-ruby}+のみ.\LaTeXe のみサポート.
39 \item 命令:
40 \begin{itemize}
41 \item \verb+\ltjruby[option]{親|文|字}{おや|も|じ}+
42 \item \verb|\ltjsetruby{option}|
43 \end{itemize}
44 \item \verb|\ltjsetparameter|に追加のキー
45 \begin{itemize}
46 \item \verb+rubypreintrusion={char_code, pre_int}+:全角単位
47 \item \verb+rubypostintrusion={char_code, post_int}+:全角単位
48 \end{itemize}
49 \item \verb|\ltjsetruby{option}|他でサポートするオプション:後ろに指定したものが優先
50 \begin{itemize}
51 \item \verb+mode+:進入処理のモードを表すbit vector.意味はluatexja-ruby.sty参照.
52 \item \verb+intrusionpre=<real>+:前進入量指定.ルビ全角単位で指定.
53 負の長さは文字種に応じた自動指定を意味.
54 \item \verb+intrusionpost=<real>+:後進入量指定.
55 \item \verb+stretchhead={left}{middle}{right}+:行頭形でルビ文字の合計長が親文字の合計長より
56 長い時に,親文字間に入れる空白の割合.それぞれ0--7の自然数で指定.
57 \item \verb+stretchend={left}{middle}{right}+:行末形〜.
58 \item \verb+stretch={left}{middle}{right}+:行中形〜.
59 \item \verb+stretchruby={left}{middle}{right}+:ルビ文字の方が長い時の空白の割合.
60 \item \verb+maxmargin=<real>+:親文字の方がルビより長い時に,ルビの先頭と親文字の先頭に許される
61 最大の空白量.親文字全角単位.
62 \item \verb+rubysize=<real>+:ルビ文字の親文字に対する大きさ.
63 \end{itemize}
64 \end{itemize}
65
66 \section{実装の大まかな方法}
67 次の例で説明する.
68 \begin{LTXexample}
69 ……を\ruby{流|暢}{りゆう|ちよう}に……
70 \end{LTXexample}
71
72 \begin{enumerate}
73 \item \verb|\ruby|コマンド自体は,一旦次のnode listを値とするwhatsit~$W$を作って,
74 現在の水平リストへと挿入する(必要ならば\verb|\leavevmode|も実行):
75 \[
76  \Node{whatsit $w$}{value: 2}\longrightarrow 
77  \Node{hlist $r_1$}{「りゆう」}\longrightarrow
78  \Node{hlist $p_1$}{「流」}\longrightarrow
79  \Node{hlist $r_2$}{「ちよう」}\longrightarrow
80  \Node{hlist $p_2$}{「暢」}
81 \]
82 ここで,最初の$w$の値2は,ルビが2つのパーツ「\ruby{流}{りゆう}」「\ruby{暢}{ちよう}」からなっていることを
83 表している.$r_i$達の中の文字は既にルビの大きさである.この値を$\mathit{cmp}$とおこう.
84 \item \LuaTeX-jaの和文処理グルー挿入処理においては,「先頭が『流』,最後が『暢』であるようなhboxを\verb|\unhbox|で展開したもの」と扱われる.
85 言い換えれば,ルビ部分を無視した単なる「流暢」という和文文字の並びとして扱われる\footnote{「流」「暢」の間のグルーは既に入っている,と扱われる.}.
86 次のサンプルを参照
87 \begin{LTXexample}
88 \leavevmode\hbox{.}A\\
89 %↑xkanjiskip 
90 \ruby{.}{}A
91 %↑2分
92 \end{LTXexample}
93 \item 和文処理グルーの挿入が終わった後で,可動グループルビのためのノードの挿入に入る.
94 \begin{enumerate}
95 \item $W$の周辺は次のようなノード列になる.
96 \begin{align*}
97  (\text{other nodes})&\longrightarrow
98  \Node{glue $g_0$}{}\longrightarrow \Node{whatsit~$W$}{元からある}\longrightarrow \Node{rule $r_1$}{}
99 \\&\longrightarrow
100  \Node{glue $g_1$}{}\longrightarrow \Node{rule $r_2$}{}\longrightarrow 
101  \Node{glue $g_2$}{}\longrightarrow (\text{other nodes})
102 \end{align*}
103 $W$の前後に$2\mathit{cmp}+1=5$個のノードが挿入される.
104
105 \item このようにノードを挿入する目的は,\TeX の行分割処理自体に影響を加えずに可動グループルビ
106 を実現させることにある.
107 \begin{gather*}
108  (\text{other nodes})\longrightarrow
109  \Node{glue $g_0$}{}\longrightarrow \Node{whatsit~$W$}{元からある}\longrightarrow \Node{rule $r_1$}{}\\
110 \noalign{\hrulefill 行の境目\hrulefill}
111 \Node{rule $r_2$}{}\longrightarrow 
112  \Node{glue $g_2$}{}\longrightarrow (\text{other nodes})
113 \end{gather*}
114 のようになったとしたら,「\ruby{流}{りゆう}」「\ruby{暢}{ちよう}」の間で行分割が起きた,ということがわかり,
115 $g_i$,~$r_i$達のノードを適切に置き換えればよい(後で詳しく説明する).
116
117 \item なお,$r_i$達の高さ・深さは組み上がった後のそれであり,現状では親文字部分の高さ・深さと一致する.
118 $g_i$,~$r_i$達の幅は,以下の対応に沿って計算される.
119
120 \begin{center}\small
121 \begin{tabular}{cllll}
122 \toprule
123 \multicolumn{1}{c}{\sf node名}&\multicolumn{1}{c}{\sf 組み方}&\multicolumn{1}{c}{\sf サンプル}%
124 &\multicolumn{1}{c}{\sf 対応するノード並び}\\
125 \midrule
126 $n_1$&行末1グループ&
127 \huge
128 \fbox{を}{\color{blue}\gt\ruby[intrusionpre=1,mode=5,stretch=110]{流}{りゆう}}\vrule
129 &
130 $g_0\rightarrow W\rightarrow r_1$\\
131 $n_2$&行末2グループ&
132 \huge
133 \fbox{を}{\color{blue}\gt\ruby[intrusionpre=1,mode=1,stretch=110]{流|暢}{りゆう|ちよう}}\vrule
134 &
135 $g_0\rightarrow W\rightarrow r_1\rightarrow g_2 \rightarrow r_2$\\
136 $n_3$&行頭1グループ&
137 \huge
138 \vrule{\color{blue}\gt\ruby[intrusionpost=1,mode=1,stretch=011]{暢}{ちよう}}\fbox{に}
139 &
140 $r_2\rightarrow g_2$\\
141 $n_4$&行頭2グループ&
142 \huge
143 \vrule{\color{blue}\gt\ruby[intrusionpost=1,mode=1,stretch=011]{流|暢}{りゆう|ちよう}}\fbox{に}
144 &
145 $W\rightarrow r_1\rightarrow g_2 \rightarrow r_2\rightarrow g_2$\\
146 $n_5$&行中&
147 \huge
148 \fbox{を}{\color{blue}\gt\ruby[intrusionpost=0.5,intrusionpre=0.5,mode=1]{流|暢}{りゆう|ちよう}}\fbox{に}
149 &
150 $g_0\rightarrow W\rightarrow r_1\rightarrow g_2 \rightarrow r_2\rightarrow g_2$\\
151
152 \bottomrule
153 \end{tabular}
154 \end{center}
155
156
157 この5元連立方程式を解いて$g_i$,~$r_i$達の幅を求める.
158 なお,進入長は予め計算しておく.例えばこの場合,
159 \[
160  g_0+r_1+g_2+r_2+g_2 = 3\,\mathrm{zw}-(0.25\,\mathrm{zw}\times 2)=2.5\,\mathrm{zw}
161 \]
162 である(zwは親文字全角の幅).
163
164 \item また,ルビ処理を統括しているwhatsit~$W$の値も
165 \[
166  \Node{whatsit $w$}{value: 2}\longrightarrow 
167  \Node{vlist $n_1$}{末1}\longrightarrow
168  \Node{vlist $n_2$}{末2}\longrightarrow
169  \Node{vlist $n_3$}{頭1}\longrightarrow
170  \Node{vlist $n_4$}{頭2}\longrightarrow
171  \Node{vlist $n_5$}{中}
172 \]
173 に置き換えておく.
174 \end{enumerate}
175 \item \LuaTeX の行分割処理を普通に行う.
176 \item 行分割の結果に従って,$g_i$,~$r_i$達を適切に置換する.
177
178 例えば行分割の結果
179 \begin{gather*}
180  (\text{other nodes})\longrightarrow
181  \Node{glue $g_0$}{}\longrightarrow \Node{whatsit~$W$}{元からある}\longrightarrow \Node{rule $r_1$}{}
182   \tag{行A}\\
183 \noalign{\hrulefill 行の境目\hrulefill}
184 \Node{rule $r_2$}{}\longrightarrow 
185  \Node{glue $g_2$}{}\longrightarrow (\text{other nodes})\tag{行B}
186 \end{gather*}
187 のようになったとしよう.
188 \begin{enumerate}
189 \item 処理は段落の上の行から順番に行われる.行Aの処理がまわってきたとしよう.
190
191 \item 行Aの先頭から順番に眺めていく.すると「whatsit~$W$由来」のノード,$g_0$,~$W$,~$r_1$が見つかり,
192 行Aはここで終わっている.
193
194 まず,行Aのhboxの中身からwhatsit~$W$を消去(リストから取り除くだけで,$W$のメモリを解放するわけではない)する.
195 $g_0$,~($W$,)~$r_1$というノードの並びは,「行末1グループ」$n_1$に対応しているので,
196 $g_0$,~$r_1$を行Aから除去・メモリ解放し,代わりに$n_1$を行Aの中身に追加する.
197
198 \item 次に行Bの処理にうつる.行Aでルビの処理は完了していない(2パーツのルビなのにまだ1パーツ目しか使っていないからである)ので,
199 「whatsit~$W$由来」のノードがいくつか残っているはずである.
200
201 案の定,$r_2$,~$g_2$というノード列が見つかった.これは「行頭1グループ」$n_3$に対応しているので,
202 $r_2$,~$g_2$を行Bから除去・メモリ解放し,代わりに$n_3$を行Bの中身に挿入する.
203
204 \item これで2パーツとも使い切ったことになるので,
205 隔離しておいた$W$を,(使われなかった$n_2$,~$n_4$,~$n_5$などと共に)メモリ解放する.結果として
206 次のようになった:
207 \begin{gather*}
208  (\text{other nodes})\longrightarrow
209  \Node{vlist $n_1$}{末1}\tag{行A}\\
210 \noalign{\hrulefill 行の境目\hrulefill}
211 \Node{vlist $n_3$}{頭1}\longrightarrow (\text{other nodes})\tag{行B}
212 \end{gather*}
213 \end{enumerate}
214 \end{enumerate}
215
216 \section{TODO}
217 \begin{itemize}
218 \item 熟語ルビの配置が「モノルビの連続」「グループルビ」のどちらかしかない(行分割は可能).
219 「一字だけかけても良い」なんてどうやるんだろう.
220 \item 図3.82のように,ルビ文字のはみ出しが繋がらないようにする処理が不安定である.
221 例えば,
222 \begin{center}\Large
223 \ruby{陵}{りよう}と\ruby{陵}{みささぎ}
224 \end{center}
225 において,後者の「\ruby{陵}{みささぎ}」のルビは前の「と」にかかっていない.
226 これは次の理由によるものである:
227 \begin{enumerate}
228 \item ルビのところで行分割を正しく実装するためには,行分割前に行頭・行中・行末形の幅を
229 決定しておかねばならない.
230 \item 「\ruby{陵}{りよう}」の後側進入量は,行頭形のとき(ルビ全角)が最大となる.
231 \item 「\ruby{陵}{みささぎ}」のルビ文字のはみ出しが重ならないように,前側進入許容量は
232 \[
233  \underbrace{0.5\,\mathrm{zw}}_{\text{元々の許容量}}
234 -\underbrace{0.5\,\mathrm{zw}}_{\text{前のルビの後側進入量の最大値}}=0
235 \]
236 となる.そのため,「\ruby{陵}{みささぎ}」のルビ文字は「と」にはかからない.
237 \end{enumerate}
238 1パスでは厳しいだろうが,2パスでなら
239 全てのルビにおいて「どの形で出力されたか」をauxに保存することでは改善されると思う.
240 しかし,どのように保存するか
241 (具体的には,各\verb|\ruby|命令の呼びだしをどういうキーに変換するか)が問題だ.
242 \item 実装方法の都合上,ルビの直前・直後・途中で2箇所以上の改行が起きる場合(以下のパーツの組み方が出てくる)に対応できない.
243 \begin{center}\small
244 \begin{tabular}{ll}
245 \toprule
246 \multicolumn{1}{c}{\sf 組み方}&\multicolumn{1}{c}{\sf サンプル}\\
247 \midrule
248 単独1&
249 \huge
250 \vrule{\color{blue}\gt\ruby[]{流}{りゆう}}\vrule\\
251 単独2&
252 \huge
253 \vrule{\color{blue}\gt\ruby[]{暢}{ちよう}}\vrule\\
254 単独$(1+2)$&
255 \huge
256 \vrule{\color{blue}\gt\ruby[stretch=010]{流|暢}{りゆう|ちよう}}\vrule\\
257 \bottomrule
258 \end{tabular}
259 \end{center}
260
261 \end{itemize}
262
263 \paragraph{進入(intrusion)と突出(protrusion)}\ 
264
265 進入ありの例:\quad と\ruby{暁}{あかつき}の
266
267 進入なしの例:\quad {\setkeys[ltj]{ruby}{mode=0}と\ruby{暁}{あかつき}の}
268
269 突出ありの例:\quad {\setkeys[ltj]{ruby}{stretch={1}{2}{1}}\ruby{聴衆}{ちようしゆう}}
270
271 突出なしの例:\quad {\setkeys[ltj]{ruby}{stretch={0}{2}{0}}\ruby{聴衆}{ちようしゆう}}
272
273
274 \paragraph{mode}\ 
275
276 mode 00xx: {\setkeys[ltj]{ruby}{mode=1}は\ruby{美}{うつく}しい
277   \quad は\ruby{聴衆}{ちようしゆう}と}
278
279 mode 01xx: {\setkeys[ltj]{ruby}{mode=5}は\ruby{美}{うつく}しい
280   \quad は\ruby{聴衆}{ちようしゆう}と}
281
282 mode 10xx: {\setkeys[ltj]{ruby}{mode=9}は\ruby{美}{うつく}しい
283   \quad は\ruby{聴衆}{ちようしゆう}と}
284
285 mode 11xx: {\setkeys[ltj]{ruby}{mode=13}%
286 \ltjsetparameter{rubypreintrusion={`立,0.5}, 
287   rubypostintrusion={`立,0.5}}は\ruby{暁}{あかつき}立\quad
288 は\ruby{聴衆}{ちようしゆう}立\par}
289 ↑ここでは「立」には0.5字がけを許容
290
291 中付きでは00xx, 11xxを選択して下さい
292
293
294 \section{いくつかの例}
295 \def\rubytest{\ruby{黄金橋}{ゴールデンゲートブリッジ}\relax}
296
297 \setbox0=\vbox{\hsize=22\zw%
298 ああああ\rubytest いうえおかきくけこ
299 あ\rubytest いうえおかきくけこ
300 あ\rubytest いうえおかきくけこ
301 あ\rubytest いうえおかきくけこ
302 あ\rubytest いうえおかきくけこ
303 あ\rubytest いうえおかきくけこ}
304 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
305 \fbox{\box0}
306
307 \def\rubytest{\ruby{国府津}{こうづ}\relax}
308 % グループルビ
309
310 \setbox0=\vbox{\hsize=18\zw%
311 あ\rubytest いうえおかきくけこ
312 あ\rubytest いうえおかきくけこ
313 あ\rubytest いうえおかきくけこ
314 あ\rubytest いうえおかきくけこ
315 あ\rubytest いうえおかきくけこ
316 あ\rubytest いうえおかきくけこ}
317 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
318 \fbox{\box0}
319
320 \def\rubytest{\ruby{●●|◆}{◆◆◆◆◆◆|●●●}\relax}
321 \setbox0=\vbox{\hsize=19\zw%
322 あ\rubytest いうえおかきくけこ
323 あ\rubytest いうえおかきくけこ
324 あ\rubytest いうえおかきくけこ
325 あ\rubytest いうえおかきくけこイ
326 あ\rubytest いうえおかきくけこ
327 あ\rubytest いうえおかきくけこウ
328 あ\rubytest いうえおかきくけこエ
329 あ\rubytest いうえおかきくけこ
330 あ\rubytest いうえおかきくけこ
331 あ\rubytest いうえおかきくけこ}
332 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
333 \fbox{\box0}
334
335 \def\rubytest{\ruby{●●|□}{◆◆◆|●●●}\relax}
336 \setbox0=\vbox{\hsize=19\zw%
337 あ\rubytest いうえおかきくけこ
338 あ\rubytest いうえおかきくけこ
339 あ\rubytest いうえおかきくけこ
340 あ\rubytest いうえおかきくけこイ
341 あ\rubytest いうえおかきくけこ
342 あ\rubytest いうえおかきくけこウ
343 あ\rubytest いうえおかきくけこエ
344 あ\rubytest いうえおかきくけこ
345 あ\rubytest いうえおかきくけこ
346 あ\rubytest いうえおかきくけこ}
347 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
348 \fbox{\box0}
349
350 \def\rubytest{\ruby{異|様}{い|よう}\relax}
351 \setbox0=\vbox{\hsize=19\zw%
352 あ\rubytest いうえくけこ
353 あ\rubytest いうえくけこ
354 あ\rubytest いうえくけこ
355 あ\rubytest いうえくけこイ
356 あ\rubytest いうえおかきくけこ}
357 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
358 \fbox{\box0}
359
360 \def\rubytest{\ruby{□|■|□}{■■|□□□|■■}\relax}
361
362 \setbox0=\vbox{\hsize=23\zw%
363 あ\rubytest いうえおかきくけこうえおかきくけこ
364 あ\rubytest いうえおかきくけこうえおかきくけこ
365 あ\rubytest いう□おかきくけこうえおかきくけこ
366 あ\rubytest いう□おかきくけこうえおかきくけこ
367 あ\rubytest いう□おかきくけこうえおかきくけこ
368 あ\rubytest いうえおかきくけこ}
369 \fbox{\box0}
370
371 \begin{description}
372 \def\sample{又\ruby{承}{うけたまわ}る\quad \ruby{疎}{そ}\quad は\ruby{俄}{にわか}勉強
373   \quad 後\ruby{俄}{にわか}勉強}
374 \item[標準] \sample
375 \item[肩つき] {\kata\sample}
376 \item[拡張肩つき]{\ltjsetruby{ekata}\sample}
377 \end{description}
378
379
380 \newpage
381 \section{jlreq 20120403の例}
382
383 \obeylines\newcommand*{\噂}{\CID{7642}}
384 %================================== 横組
385 \paragraph{3.3.1節}\ \par
386 3.49 \ruby{君|子}{くん|し}は\ruby{和}{わ}して\ruby{同}{どう}ぜず
387 3.50 \ruby{人}{ひと}に\ruby{誨}{おし}えて\ruby{倦}{う}まず\par% 中付き
388 3.51 \ruby{鬼}{き}\ruby{門}{もん}の\ruby{方}{ほう}\ruby{角}{がく}を% モノ中付き
389 \ruby{凝}{ぎょう}\ruby{視}{し}する
390 3.52 \ruby{鬼|門}{き|もん}の\ruby{方|角}{ほう|がく}を% 熟語(グループ扱い)
391 \ruby{凝|視}{ぎよう|し}する
392 3.53 \ruby{茅場町}{かやばちよう}\quad\ruby{茅場}{かやば}\ruby{町}{ちよう}\par% 複合語
393 % 3.53右の説明はこれでいいのか?
394 3.54 \ruby{紫陽花}{あじさい}\quad\ruby{坩堝}{るつぼ}\quad\ruby{田舎}{いなか}\par% 熟字訓 
395 3.55 \ruby{模型}{モデル}\quad\ruby{顧客}{クライアント}\quad% カタカナルビ
396 \ruby{境界面}{インターフエース}\quad\ruby{避難所}{アジール}
397 3.56 \ruby{編集者}{editor}\quad \ruby{editor}{エディター}% 欧文
398
399 \paragraph{3.3.3節}\ \par
400 3.58 に\ruby{幟}{のぼり}を\quad{\kata に\ruby{幟}{のぼり}を}%
401   \quad \ruby{韋}{い}\ruby{編}{へん}\ruby{三}{さん}\ruby{絶}{ぜつ}
402 3.59 に\ruby{幟}{\kanjiseries{mc}\selectfont のぼり}を
403 3.60 \ruby{韋}{い}\ruby{編}{へん}\ruby{三}{さん}\ruby{絶}{ぜつ}\quad%
404 {\setkeys[ltj]{ruby}{rubysize=0.4}% 文字サイズ変更
405   \ruby{韋}{い}\ruby{編}{へん}\ruby{三}{さん}\ruby{絶}{ぜつ}}
406
407 \paragraph{3.3.4節}\ \par
408 3.61図(両側ルビ)はまだ未サポートにより省略
409
410 \paragraph{3.3.5節 モノルビ}\ \par
411 3.62 の\ruby{葯}{やく}に
412 3.63 版面の\ruby{地}{ち}に\quad{\kata 版面の\ruby{地}{ち}に}
413 3.64× {\kata 版面の\ruby{地}{ち}に}(まだ縦組み未サポート)\par% 横組み肩つき
414 3.65 の\ruby{砦}{とりで}に\quad{\kata の\ruby{砦}{とりで}に}
415 {\kata 3.66上 の\ruby{旬}{しゆん}に\quad 後\ruby{旬}{しゆん}に
416 3.66下 の\ruby{旬}{しゆん}又\quad 後\ruby{旬}{しゆん}又\par}
417
418
419 \paragraph{3.3.6節 グループルビ}\ \par
420 3.67 は\ruby{冊子体}{コーデツクス}と
421 3.68 \ruby{模型}{モデル}\quad \ruby{利用許諾}{ライセンス}
422 3.69 {\setkeys[ltj]{ruby}{stretchruby=010}% 両端を揃える流儀
423   \ruby{模型}{モデル}\quad \ruby{利用許諾}{ライセンス}}
424 3.70 \ruby{なげきの聖母像}{ピエタ}←自動調整
425 3.71 \ruby{顧客}{クライアント}\quad \ruby{境界面}{インターフエース}
426 3.72 {\setkeys[ltj]{ruby}{stretch=010, stretchhead = 010, stretchend = 010}% はみ出さない流儀
427   \ruby{顧客}{クライアント}\quad \ruby{境界面}{インターフエース}}
428
429
430 \paragraph{3.3.7節 熟語ルビ}\ \par
431 3.73左 \ruby{杞|憂}{き|ゆう}\quad \ruby{畏|怖}{い|ふ}
432 3.73右 {\kata\ruby{杞|憂}{き|ゆう}\quad \ruby{畏|怖}{い|ふ}}
433 3.74 の\ruby{流|儀}{りゆう|ぎ}を\quad の\ruby{無|常}{む|じよう}を\quad%
434 の\ruby{成|就}{じよう|じゆ}を\quad
435 3.74 の\ruby{紋|章}{もん|しよう}を\quad の\ruby{象|徴}{しよう|ちよう}を
436
437 3.75 {\kata の\ruby{流|儀}{りゆう|ぎ}を\quad の\ruby{無|常}{む|じよう}を\quad%
438 の\ruby{成|就}{じよう|じゆ}を\quad 
439 3.75 の\ruby{紋|章}{もん|しよう}を\quad の\ruby{象|徴}{しよう|ちよう}を}
440
441 3.76× の\ruby{流}{りゆう}\ruby{儀}{ぎ}を\quad の\ruby{無}{む}\ruby{常}{じよう}を\quad%
442
443 要調整 3.77\ {\notalign%この図では揃えない
444 \hbox{\vrule\vbox{\hsize=5\zw ……の\ruby{流|儀}{りゆう|ぎ}を}\vrule}\quad%
445 % ↑どうすれば改行されるのだろう
446 \hbox{\vrule\vbox{\hsize=5\zw ……の\ruby{無|常}{む|じよう}を}\vrule}}
447
448 \paragraph{3.3.8節 ルビはみ出し}\ \par
449 3.78 \ruby{人}{ひと}は\ruby{死}{し}して\ruby{名}{な}を\ruby{残}{のこ}す\par% ベタ
450 要調整3.79 漢字の部首には\ruby{偏}{へん}・\ruby{冠}{かんむり}・\ruby{脚}{きやく}・%
451 \ruby{旁}{つくり}がある
452 要調整3.79 漢字の部首には\ruby{偏}{へん},\ruby{冠}{かんむり},\ruby{脚}{きやく},%
453 \ruby{旁}{つくり}がある
454 3.79 この\ruby{\噂}{うわさ}の好きな人は%
455 \ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を
456 3.80 漢字の部首には「\ruby{偏}{へん}」「\ruby{冠}{かんむり}」「\ruby{脚}{きやく}」%
457 「\ruby{旁}{つくり}」がある
458 3.80 この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を
459 要調整3.81× に\ruby{暁}{あかつき}の\kern-1\zw の\ruby{趣}{おもむき}を
460 3.82 に\ruby{暁}{あかつき}の\ruby{趣}{おもむき}を
461 {%
462   \ltjsetparameter{rubypostintrusion={`好,0.5}}
463   \ltjsetparameter{rubypostintrusion={`具,0.5}}
464   \ltjsetparameter{rubypostintrusion={`材,0.5}}
465 3,83 この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を
466 3.83 この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を
467 }
468 {%
469   \makeatletter\count@="3040\loop\relax\ifnum \count@<"30A0%
470   \ltjsetparameter{rubypreintrusion={\the\count@,0}, %
471     rubypostintrusion={\the\count@,0}}%
472   \advance\count@1 \repeat
473 3.84 この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を
474 3.84 この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を
475 }
476 要調整3.85\ {\notalign%この図では揃えない
477 \hbox{\vrule\vbox{\hsize=15\zw% なぜ行末形にならない!
478 あああああああああああああの\ruby{徑}{こみち}\penalty-1000をあああああああ%
479 ああああああああああああああああいの\ruby{徑}{こみち}}\vrule}}
480
481 3.86\ %
482 \hbox{\vrule\vbox{\hsize=15\zw
483 ああああああああああああの\ruby{徑}{こみち}をあああああああ%
484 あああああああ\ruby{徑}{こみち}を}\vrule}
485
486 要調整3.87\ %
487 \hbox{\vrule\vbox{\hsize=15\zw% なぜ行末形にならない!
488 ああああああああああああの\ruby{飾り}{アクセサリー}等あああああああ%
489 あああああああああああああああ共\ruby{飾り}{アクセサリー}}\vrule}
490
491
492 \newpage
493 {\Large 要調整}
494
495 \paragraph{F.1--2節}\ \par
496
497 F.01 {\kata\ruby{治|癒}{ち|ゆ}\quad\ruby{模|索}{も|さく}\quad%
498 \ruby{遷|移}{せん|い}\quad\ruby{混|沌}{こん|とん}}
499 F.01中 \ruby{治|癒}{ち|ゆ}\quad\ruby{模|索}{も|さく}\quad%
500 \ruby{遷|移}{せん|い}\quad\ruby{混|沌}{こん|とん}
501
502 F.02 \ruby{橋|頭|堡}{きよう|とう|ほ}
503
504 F.03 {\kata\ruby{凝|視}{ぎよう|し}\quad\ruby{調|理|師}{ちよう|り|し}\quad%
505 \ruby{思|春|期}{し|しゆん|き}\quad\ruby{管|状|花}{かん|じよう|か}\quad%
506 \ruby{蒸|気|船}{じよう|き|せん}}
507 F.03 \ruby{凝|視}{ぎよう|し}\quad\ruby{調|理|師}{ちよう|り|し}\quad%
508 \ruby{思|春|期}{し|しゆん|き}\quad\ruby{管|状|花}{かん|じよう|か}\quad%
509 \ruby{蒸|気|船}{じよう|き|せん}
510
511 F.04 {\kata\ruby{未|熟}{み|じゆく}\quad\ruby{法|華|経}{ほ|け|きよう}\quad%
512 \ruby{顕|微|鏡}{けん|び|きよう}\quad\ruby{課|徴|金}{か|ちよう|きん}\quad%
513 \ruby{古|戦|場}{こ|せん|じよう}}
514 F.04 \ruby{未|熟}{み|じゆく}\quad\ruby{法|華|経}{ほ|け|きよう}\quad%
515 \ruby{顕|微|鏡}{けん|び|きよう}\quad\ruby{課|徴|金}{か|ちよう|きん}\quad%
516 \ruby{古|戦|場}{こ|せん|じよう}
517
518 F.05 の\ruby{峻|別}{しゆん|べつ}は
519
520 F.06以降は未チェック
521 \end{document}