pLaTEXでは縦組用の拡張として plextパッケージが用意されていたが,それをLuaTEX-ja用に書き
なおしたものが本追加パッケージlltjextである.
従来のplextパッケージとの違いは,
• 組方向オプション<y>(横組),<t>(縦組),<z>の他に<d>(dtou方向),<u>(utod方向)を 追加した.<z> と<u> の違いは,<z>が(plextパッケージと同様に)周囲の組方向が縦組のと きにしか意味を持たないのに対し,<u>にはそのような制限がないことである.
• plextパッケージでは,表組(tabular環境,align環境等)やminipage環境,\parbox命令 において,垂直位置指定[t],[b]の挙動が非読み込み時と微妙に変わることがあった.
lltjext パッケージでは,垂直位置指定がLaTEX 2𝜀と同様の挙動(以下に示す)になるように修正
した.
– [t] オプション指定時は,ボックスのベースラインが中身の1行目のベースライン(1行目の 上に罫線などが来た時は,ボックスの上端)に一致するように配置する.
– [b]オプション指定時は,ボックスのベースラインが中身の最終行のベースライン(中身の最 後が罫線などの時は,ボックスの下端)に一致するように配置する.
– それ以外のときは,ボックスの中央が「数式の軸」に一致するように配置する.
• 連数字用命令\rensujiにおける位置合わせオプション[l],[c],[r]の挙動を若干変更した.
念の為,本lltjextパッケージで追加・変更している命令の一覧を載せておく.
tabular,array,minipage環境 これらの環境は,
\begin{tabular}<dir>[pos]{table spec} ... \end{tabular}
\begin{array}<dir>[pos]{table spec} ... \end{array}
\begin{minipage}<dir>[pos]{width} ... \end{minipage}
のように,組方向オプション<dir>が拡張されている.既に述べたように,組方向オプションに 指定できる値は以下の5つであり,それ以外を指定した時や無指定時は周囲の組方向と同じ組方 向になる.
y 横組(\yoko) t 縦組(\tate)
z 周囲が縦組の時はutod方向,それ以外はそのまま d dtou方向
u utod方向
\parbox<⟨dir⟩>[⟨pos⟩]{⟨width⟩}{⟨contents⟩}
\parbox命令も同様に,組方向の指定ができるように拡張されている.
\pbox<⟨dir⟩>[⟨width⟩][⟨pos⟩]{⟨contents⟩}
組方向 ⟨dir⟩ で ⟨contents⟩ の中身を LRモードで組む命令である.⟨width⟩ が正の値であるとき は,ボックス全体の幅がその値となる.その際,中身は ⟨pos⟩ の値に従い,左寄せ (l),右揃え (r),中央揃え(それ以外)される.
picture環境
図表作成に用いるpicture環境も,
と組方向が指定できるように拡張されている.𝑥 成分の増加方向は字送り方向,𝑦 成分の増 加方向は行送り方向の反対方向となる.plext パッケージと同様に内部ではベースライン補正
(yalbaselineshiftパラメータなど)の影響を受けないように,\put, \line, \vector, \dashbox,
\oval,\circleもベースライン補正を受けないように再定義されている.
\rensuji[⟨pos⟩]{⟨contents⟩},\rensujiskip
\Kanji{⟨counter name⟩}
\kasen{⟨contents⟩},\bou{⟨contents⟩},\boutenchar
参照番号
第 III 部
実装
12 パラメータの保持
12.1 LuaTEX-ja で用いられるレジスタと whatsit ノード
以下は LuaTEX-ja で用いられる寸法レジスタ (dimension),属性レジスタ (attribute) のリストで
ある.
\jQ (dimension) \jQは写植で用いられた1Q= 0.25mm(「級」とも書かれる)に等しい.したがっ
て,この寸法レジスタの値を変更してはならない.
\jH (dimension) 同じく写植で用いられていた単位として「歯」があり,これも 0.25mmと等しい.
この\jHは\jQと同じ寸法レジスタを指す.
\ltj@zw (dimension) 現在の和文フォントの「全角幅」を保持する一時レジスタ.\zw命令は,この レジスタを適切な値に設定した後,「このレジスタ自体を返す」.
\ltj@zh (dimension) 現在の和文フォントの「全角高さ」(通常,高さと深さの和)を保持する一時 レジスタ.\zh命令は,このレジスタを適切な値に設定した後,「このレジスタ自体を返す」.
\jfam (attribute) 数式用の和文フォントファミリの現在の番号.
\ltj@curjfnt (attribute) 現在の横組用和文フォントのフォント番号.
\ltj@curtfnt (attribute) 現在の縦組用和文フォントのフォント番号.
\ltj@charclass (attribute) JAchar の文字クラス.JAchar が格納された glyph node でのみ使わ れる.
\ltj@yablshift (attribute) スケールド・ポイント (2−16pt) を単位とした欧文フォントのベースラ インの移動量.
\ltj@ykblshift (attribute) スケールド・ポイント (2−16pt) を単位とした和文フォントのベースラ インの移動量.
\ltj@tablshift (attribute)
\ltj@tkblshift (attribute)
\ltj@autospc (attribute) そのノードでkanjiskipの自動挿入が許されるかどうか.
\ltj@autoxspc (attribute) そのノードでxkanjiskipの自動挿入が許されるかどうか.
\ltj@icflag (attribute) ノードの「種類」を区別するための属性.以下のうちのひとつが値として
割り当てられる:
italic(1) イタリック補正(\/)によるカーン,またはluaotfload によって挿入されたフォント のカーニング情報由来のカーン.これらのカーンは通常の\kernとは異なり,JAglueの挿 入処理においては透過する.
packed(2)
kinsoku(3) 禁則処理のために挿入されたペナルティ.
(from jfm− 2)–(from jfm+ 2)(4–8) JFM由来のグルー/カーン.
kanji skip(9),kanji skip jfm(10) 和文間空白kanjiskipを表すグルー.
xkanji skip(11),xkanji skip jfm(12) 和欧文間空白xkanjiskipを表すグルー.
processed(13) LuaTEX-jaの内部処理によって既に処理されたノード.
ic processed(14) イタリック補正に由来するグルーであって,既にJAglue挿入処理にかかっ たもの.
boxbdd(15) hboxか段落の最初か最後に挿入されたグルー/カーン.
ま た, 挿 入 処 理 の 結 果 で あ る リ ス ト の 最 初 の ノ ー ド で は,\ltj@icflag の 値 に pro-cessed begin flag (128) が追加される.これによって,\unhbox が連続した場合でも「ボック スの境界」が識別できるようになっている.
\ltj@kcat𝑖 (attribute) 𝑖は7より小さい自然数.これら7つの属性レジスタは,どの文字ブロック
がJAcharのブロックとして扱われるかを示すビットベクトルを格納する.
\ltj@dir (attribute) directionwhatsit(後述)において組方向を示すために,あるいはdir boxの組 方向を用いる.directionwhatsitにおいては値は
dir dtou(1),dir tate(3),dir yoko(4),dir utod(11)
のいずれかであり,dir boxではこれらに次を加えた値をとる(21章参照).
dir node auto(128) 異なる組方向に配置するために自動的に作られたボックス.
dir node manual(256) \ltjsetwdによって「ボックスの本来の組方向とは異なる組方向で の寸法」を設定したときに,それを記録するためのボックス.
TEX側から見える値,つまり\the\ltj@dirの値は常に0である.
\ltjlineendcomment (counter) LuaTEX-jaはJAcharで入力行が終了した場合,その直後にコメン ト文字をおくことで余計な空白が挿入されることを防いでいる.\ltjlineendcomment はそ の際のコメント文字のUnicodeにおける符号位置を指定する(詳細は13.2節を参照).
LuaTEX-jaにおける既定値は"FFFFF = 1048575であり,ユーザは内部動作を熟知していない
限りこのカウンタの値を変更してはならない.\ltjlineendcommentの値が Unicode の範囲 外(負や,"10FFFF= 1114111を超えた場合)にくることは想定されていない.
さらに,LuaTEX-jaはいくつかのuser-defined whatsit nodeを内部処理に用いる.directionwhatsit はノードリストを格納するが,それ以外のwhatsitノードの type は100であり,ノードは自然数を 格納している.user-defined whatsitを識別するためのuser idはluatexbase.newuserwhatsitid により確保されており,下の見出しは単なる識別用でしかない.
inhibitglue \inhibitglueが指定されたことを示すノード.これらのノードのvalue フィールド は意味を持たない.
stack marker LuaTEX-ja のスタックシステム(次の節を参照)のためのノード.これらのノードの
valueフィールドは現在のグループネストレベルを表す.
char by cid luaotfloadのコールバックによる処理が適用されないJAcharのためのノードで,value フィールドに文字コードが格納されている.この種類のノードはそれぞれがluaotfloadのコール
replace vs 上のchar by cidと同様に,これらのノードはluaotfloadのコールバックによる処理が適 用されないALcharのためものである.
begin par 「段落の開始」を意味するノード.list環境,itemize環境などにおいて,\itemで始まる 各項目は……
direction
これらのwhatsitノードはJAglueの挿入処理の間に取り除かれる.