X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=doc%2Fsample1.tex;h=b4e3f0ea4b2695d80f0f4f92ba9ef6069002a17b;hb=cfd3ad7961c4538d018120a9fa76fab9c157fce4;hp=2447e81107883a3946339375aa9b2a69af1d82d9;hpb=56311d986255a471a4c7f744e2315ed11311f960;p=luatex-ja%2Fluatexja.git diff --git a/doc/sample1.tex b/doc/sample1.tex index 2447e81..b4e3f0e 100644 --- a/doc/sample1.tex +++ b/doc/sample1.tex @@ -49,8 +49,6 @@ \itemitem |\showmode|, |\jfam|. \itemitem 縦組み関連一式.|\tate|, |\tfont|, |\tbaselineshift|, |\dtou|,$\,\ldots$ -\item 和文間・和欧文間空白の自動挿入がglobalでしかできていません. -←解決はさほど難しくないので,仕様を決定した後に書き上げます. \enditem @@ -180,8 +178,7 @@ p\TeX の|\prebreakpenalty|に対応した設定項目である. \itemitem : 文字コードを指定する.一旦補助カウンタに代入されるので, 16進法での数値の指定 (|"abcd|) や,%" 文字トークンによる指定 (|`あ|) も可能である. -\itemitem : penalty の値を0から10000までの自然数で指定する -{\small(範囲外でも可能だが)\inhibitglue}. +\itemitem : penalty の値を$-10000$から10000までの整数で指定する. \item |postbreakpenalty={, }|★\par\noindent 同様に,p\TeX の|\postbreakpenalty|に対応した設定項目である. @@ -199,17 +196,17 @@ p\TeX では,同一文字に対して|\prebreakpenalty|, |\postbreakpenalty| \item |jaxspmode={, }|★\par\noindent p\TeX の|\inhibitxspcode|に対応した設定項目である.で許される値は, -\itemitem |0|, |inhibit|: 前後の欧文文字との間の|\xkanjiskip|自動挿入を禁止. -\itemitem |2|, |preonly|: 前の欧文文字との間の|\xkanjiskip|自動挿入のみを許可. -\itemitem |1|, |postonly|: 後の欧文文字との間の|\xkanjiskip|自動挿入のみを許可. -\itemitem |3|, |allow|: 前後の欧文文字との間の|\xkanjiskip|自動挿入を許可. +\itemitem |0|, |inhibit|: 前後の欧文文字との間の|xkanjiskip|自動挿入を禁止. +\itemitem |2|, |preonly|: 前の欧文文字との間の|xkanjiskip|自動挿入のみを許可. +\itemitem |1|, |postonly|: 後の欧文文字との間の|xkanjiskip|自動挿入のみを許可. +\itemitem |3|, |allow|: 前後の欧文文字との間の|xkanjiskip|自動挿入を許可. \item |alxspmode={, }|★\par\noindent 同様に,p\TeX の|\xspcode|に対応した設定項目である. で許される値は, -\itemitem |0|, |inhibit|: 前後の和文文字との間の|\xkanjiskip|自動挿入を禁止. -\itemitem |1|, |preonly|: 前の和文文字との間の|\xkanjiskip|自動挿入のみを許可. -\itemitem |2|, |postonly|: 後の和文文字との間の|\xkanjiskip|自動挿入のみを許可. -\itemitem |3|, |allow|: 前後の和文文字との間の|\xkanjiskip|自動挿入を許可. +\itemitem |0|, |inhibit|: 前後の和文文字との間の|xkanjiskip|自動挿入を禁止. +\itemitem |1|, |preonly|: 前の和文文字との間の|xkanjiskip|自動挿入のみを許可. +\itemitem |2|, |postonly|: 後の和文文字との間の|xkanjiskip|自動挿入のみを許可. +\itemitem |3|, |allow|: 前後の和文文字との間の|xkanjiskip|自動挿入を許可. \item |yalbaselineshift=|: p\TeX の|\ybaselineshift|に対応したものであり, @@ -226,12 +223,38 @@ p\TeX では「和文が主」という考えからか,常に和文文字の また,この値を適切に調整することで,% {\small 異なる文字サイズの文字を「上下中央揃え」で組む}ことも可能である. -\item |kanjiskip=|★\inhibitglue: 後に述べる|\kanjiskip=|と同じ意味. -\item |xkanjiskip=|★\inhibitglue: 後に述べる|\xkanjiskip=|と同じ意味. -\item |jcharwidowpenalty=|★\inhibitglue: -後に述べる|\jcharwidowpenalty=|と同じ意味. +\item |kanjiskip=|★\par\noindent +和文文字同士の間に入る空白量を指定.p\TeX の同名の命令と同様に, +基本的には段落/hbox終了時の値が,その段落/hbox全体に適用される. つまり, +\begintt +\ltjsetparameter{kanjiskip=3pt}あい% +{\ltjsetparameter{kanjiskip=10pt}うえ}} +\endtt +の組版結果は(段落終了時の値が$3\,{\rm pt}$のため), +$$ + \hbox{\ltjsetparameter{kanjiskip=3pt}あい{\ltjsetparameter{kanjiskip=10pt}うえ}} +$$ +となる. + +但し,|kanjiskip|の自然長が$\hbox{|\maxdimen|}=16383.99998\,{\rm pt}$の場合は, +\itemitem (和文文字の間それぞれについて)JFMに指定されている +|kanjiskip|の値を採用する. +\itemitem 左側JFM,右側JFMのどちらかにおいて指定されていれば,そちらを使用する. +\itemitem どちらにおいても指定されていない場合は,0とみなす. + +\item |xkanjiskip=|★\par\noindent +和文文字と欧文文字の間に入る空白量.p\TeX の同名の命令と同様. +これも,自然長が|\maxdimen|の場合は,JFMで指定された値を使う. + + +\item |jcharwidowpenalty=|★\par\noindent +段落において「最後の1文字のみが次の行に」くることを +抑制するためのpenalty値.このpenaltyは,段落内にある,最後の「|kcatcode|の最下位bitが +1で{\bf ない}ような和文文字」の直前に挿入される. + + \item |autospacing[=]|\par\noindent -和文文字間のglue(|\kanjiskip|)の自動挿入をするかしないかを制御. +和文文字間のglue(|kanjiskip|)の自動挿入をするかしないかを制御. p\TeX では段落/hbox 単位での設定となったが,Lua\TeX-ja では そうではなくなった. 挿入可能な箇所の両端のノードにおいて,片方でも @@ -239,9 +262,9 @@ p\TeX では段落/hbox 単位での設定となったが,Lua\TeX-ja では \begintt あ\ltjsetparameter{autospacing=false}いう \endtt -の場合,「あい」の間には|\kanjiskip|が挿入され,「いう」の間には入らない. +の場合,「あい」の間には|kanjiskip|が挿入され,「いう」の間には入らない. \item |autoxspacing[=]|\par\noindent -和欧文間のglue(|\xkanjiskip|)の自動挿入をするかしないかを制御. +和欧文間のglue(|xkanjiskip|)の自動挿入をするかしないかを制御. その他は|autospacing|と同様. \item |differentjfm=(large/small/average/both)|★◎\par\noindent @@ -252,7 +275,7 @@ glue/kernの計算方法を設定する. \itemitem {\tt small}: 両者のうち小さい方. \itemitem {\tt average}: 両者の相加平均. \itemitem {\tt both}: 両者の合計値の幅をもつglue/kernを挿入する. -この指定は,JFM由来の|\kanjiskip|の値が左右の和文文字で異なったときの +この指定は,JFM由来の|kanjiskip|の値が左右の和文文字で異なったときの 挙動にも適用される. \item |jacharrange={,,...}|: @@ -297,25 +320,6 @@ $n\notin [1,216]$の場合は,「どの文字範囲にも属さない|U+0080| \beginparagraph その他の命令 -\item skip |\kanjiskip|: 和文文字同士の間に入る空白量を指定. -p\TeX の同名の命令と同様に,基本的には段落/hbox終了時の値が,その段落/hbox全体に適用される. - -{\bf TODO}: 現在の実装では,hboxにおいては,hbox終了{\gt 後}の値が適用される. -要検討. - -但し,|\kanjiskip|の自然長が$\hbox{|\maxdimen|}=16383.99998\,{\rm pt}$の場合は, -\itemitem (和文文字の間それぞれについて)JFMに指定されている -|\kanjiskip|の値を採用する. -\itemitem 左側JFM,右側JFMのどちらかにおいて指定されていれば,そちらを使用する. -\itemitem どちらにおいても指定されていない場合は,0とみなす. - -\item skip |\xkanjiskip|: 和文文字と欧文文字の間に入る空白量.p\TeX の同名の命令と同様.これも,自然長が|\maxdimen|の場合は,JFMで指定された値を使う. - - -\item count |\jcharwidowpenalty|: 段落において「最後の1文字のみが次の行に」くることを -抑制するためのpenalty値.このpenaltyは,段落内にある,最後の「|kcatcode|の最下位bitが -1で{\bf ない}ような和文文字」の直前に挿入される. - \item dimen |\zw|, |\zh|: 現在の和文フォントの「幅」/「高さ」(メトリックから指定) \item dimen |\jQ|, |\jH|${}= 0.25\,{\rm mm}$. \item |\inhibitglue|: @@ -398,8 +402,9 @@ $i$番の文字クラスの文字と$j$番の文字クラスの文字の間に \noindent という意味である. -\itemitem |chars|: 文字クラスに属する「文字」達のUnicodeにおけるコード番号を -リストの形|{...}|で記述する. +\itemitem |chars|: 文字クラスに属する「文字」達をリストの形|{...}|で記述する. +文字の指定には,Unicodeにおけるコード番号か,その文字1文字だけからなる文字列(|'字'|のように) +を用いる. どの文字クラスにも属さなかった文字は,0番の文字クラスに属するとみなされる. そのため,0番以外の文字クラスではこの項目は必須である. @@ -448,7 +453,7 @@ Lua\TeX-jaパッケージでは,次のような流れで実際の処理を行 この部分のコードは前田氏のjafontspecパッケージの部分から拝借したが,挿入する文字を|%|から (通常使用されることはないと思われる)|U+FFFFF|へと変更している. -\item {\bf 和文フォントへの置換: |hyphenate|, |hpack_filter| callbacks} +\item {\bf 和文フォントへの置換: |hyphenate| callback} この段階の前では,和文文字であっても,それを内部で表している|glyph_node|~$p$は, 「|\tenrm あ|」のように,欧文フォントが指定されている状態になっている.しかし, @@ -463,7 +468,7 @@ $p$は「現在の和文フォント」の番号もattribute |\ltj@curjfnt|と \item {\bf (luaotfloadパッケージによるグリフ置換等の処理はこの位置で)} -\item {\bf JFM由来glue/kernの挿入: |pre_linebreak_filter|, |hpack_filter|} +\item {\bf JFM由来glue/kernの挿入: |pre_linebreak_filter|, |hpack_filter| callbacks} ここで,JFMに由来する和文文字間のglue/kernを挿入する. 基本的には連続する和文文字(を表すnode)間に挿入するが, @@ -492,12 +497,12 @@ $$ \itemT |\kern| $k$: 本来の$Q$と$P$の間に入る空き(glueであることも). $w$のために自然長を補正している. -\item {\bf |\kanjiskip|, |\xkanjiskip|の挿入: |pre_linebreak_filter|, |hpack_filter|} +\item {\bf |kanjiskip|, |xkanjiskip|の挿入: |pre_linebreak_filter|, |hpack_filter| callbacks} p\TeX の|adjust_hlist| procedureとほぼ同様の処理を用いて, -和文間glue |\kanjiskip|や和欧文間glue |\xkanjiskip|を +和文間glue |kanjiskip|や和欧文間glue |xkanjiskip|を 挿入する. -\itemitem 数式境界 (|math_node|) との間に|\xkanjiskip|を自動挿入するかの決定は, +\itemitem 数式境界 (|math_node|) との間に|xkanjiskip|を自動挿入するかの決定は, p\TeX では数字{\tt 0}との間に挿入するかどうかで判定していたが,Lua\TeX-jaでは 「文字コード$-1$の文字」で判定している. \itemitem 合字の周囲の空白挿入については,構成要素の文字列を通じて判断している.例えば, @@ -505,7 +510,7 @@ p\TeX では数字{\tt 0}との間に挿入するかどうかで判定してい \itemT 「漢」と「ffi」間の空白挿入:「漢」と「f」間に入るかで判断 \itemT 「ffi」と「字」間の空白挿入:「i」と「字」間に入るかで判断 -\item {\bf ベースライン補正: |pre_linebreak_filter|, |hpack_filter|} +\item {\bf ベースライン補正: |pre_linebreak_filter|, |hpack_filter| callbacks} この段階では,(主として)欧文文字のベースラインをずらす作業を行う.幸いにして, Lua\TeX で文字を表す|glyph_node|には|y_offset| fieldがあるので,作業は楽である. @@ -518,7 +523,7 @@ Lua\TeX で文字を表す|glyph_node|には|y_offset| fieldがあるので, \itemitem 文字 (|glyph_node|) \itemitem ボックス・rule(文中数式内部).これによって,数式全体が下がったように見えるはず. -\item {\bf 和文文字の幅の補正: |pre_linebreak_filter|, |hpack_filter|} +\item {\bf 和文文字の幅の補正: |pre_linebreak_filter|, |hpack_filter| callbacks} 例えば,括弧類は「フォント中では全角幅だが,組版では半角幅として扱う」ことが多いが,このように 文字幅を補正する処理を最後に行う.jafontspecパッケージのように,補正対象となる|glyph_node|~$p$%