diff options
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexja/README | 8 | ||||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf | bin | 446031 -> 446443 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf | bin | 822869 -> 839665 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx | 314 |
4 files changed, 243 insertions, 79 deletions
diff --git a/Master/texmf-dist/doc/luatex/luatexja/README b/Master/texmf-dist/doc/luatex/luatexja/README index 0c8bc79e53b..619d9ce6659 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/README +++ b/Master/texmf-dist/doc/luatex/luatexja/README @@ -1,4 +1,4 @@ -The LuaTeX-ja Package 20160828.0 +The LuaTeX-ja Package 20160905.0 -------------------------------- Copyright (c) 2011--2016 The LuaTeX-ja project License: modified BSD (see COPYING) @@ -34,9 +34,9 @@ Installation 2. If you must/want to install manually: a. Download the source archive from CTAN, - or tagged as 20160828.0 in the Git repository by + or tagged as 20160905.0 in the Git repository by <http://git.osdn.jp/view?p=luatex-ja/luatexja.git - ;a=snapshot;h=refs/tags/20160828.0;sf=tgz> + ;a=snapshot;h=refs/tags/20160905.0;sf=tgz> b. Extract the archive and process following three files by LuaLaTeX to generate classes for Japanese typesetting: @@ -81,4 +81,4 @@ Notes * src/*.{ins.dtx} and src/ltj-kinsoku_make.tex are not needed in regular use. -Last commit date: Sun Aug 28 15:42:51 2016 +0900 +Last commit date: Mon Sep 5 07:29:17 2016 +0900 diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf b/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf Binary files differindex 399f8a7bb86..7e4af86671e 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja-en.pdf diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf Binary files differindex 0d41f18a74e..8ba04870ac2 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja-ja.pdf diff --git a/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx b/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx index d9a85b82b6e..9814a3548ea 100644 --- a/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx +++ b/Master/texmf-dist/doc/luatex/luatexja/luatexja.dtx @@ -165,7 +165,7 @@ \def\_{\leavevmode \kern .06em\vbox {\hrule \@width .333em}} \def\cs#1{\texttt{\upshape \texorpdfstring{\textbackslash\ltjsetparameter{autoxspacing=false}#1}{\textbackslash#1}}} - +\ltjsetparameter{alxspmode={`\\,allow}} %%%%%%%% \makeatother %%%%%%%% @@ -183,7 +183,6 @@ \protected\def\Pkg#1{\textsf{#1}} % packages/classes \ltjsetparameter{alxspmode={"200C,allow}} - \begin{document} \lstset{ vscmd=\IVSB @@ -4175,6 +4174,17 @@ floating-point numbers in design-size unit. \begin{cslist}[style=standard] +\item[version=$1\mathrel{\textrm{or}}2$] +%<en>(optional, default value is~1) +%<ja>(任意,既定値は1) + +%<*en> +The version JFM. Currently 1~and~2 are supported +%</en> +%<*ja> +JFMのバージョン.1または2がサポートされる. +%</ja> + \item[dir=<direction>] %<en>(required) %<ja>(必須) @@ -4600,12 +4610,16 @@ we specify <ratio> to $0.25/(0.5+0.25)=1/3$. 次のキーを指定できる, \begin{cslist}[style=standard] \item[priority=<priority>] - \Pkg{luatexja-adjust} による優先順位付き - 行長調整(\ref{ssec-adj}節)の際に使われる値であり, -行調整処理におけるこのglueの優先 - 度を$-2$から$+2$の間の整数で指定する.大きい値ほど「伸びやすく,縮みやすい」 - ことを意味する.省略時の値 - は0であり,範囲外の値が指定されたときの動作は未定義である. + \Pkg{luatexja-adjust}による優先順位付き + 行長調整(\ref{ssec-adj}節)において,このグルーの優先度を指定する.許される値は以下の通り: + \begin{description} + \item[バージョン1のとき] $-4$から$+3$の間の整数 + \item[バージョン2のとき] $-4$から$+3$の間の整数の2つ組\texttt{\{<stretch>, <shrink>\}}か, + または$-4$から$+3$の間の整数.<stretch>, <shrink>はそれぞれこのグルーが伸びるときの優先度,縮むときの + 優先度であり,単に整数$i$が指定された場合は\texttt{\{$i$, $i$\}}であると解釈される. + \end{description} + ここで指定する値は,大きい値ほど「先に伸ばされる」「先に縮ませる」ことを意味しており,省略時の値 + は0である.範囲外の値が指定されたときの動作は未定義である. \item[kanjiskip\_natural=<num>\textrm{, }% kanjiskip\_stretch=<num>\textrm{, }kanjiskip\_shrink=<num>]\leavevmode \label{pg:ksp_nat} @@ -4642,10 +4656,12 @@ In case of glue, one can specify following additional keys in each \texttt{[$j$] subtable: \begin{cslist}[style=standard] \item[priority=<priority>] -An integer in $[-2,2]$ (treated as 0 if omitted), and this is +An integer in $[-4,3]$ (treated as 0 if omitted), or +a pair of these integers \texttt{\{<stretch>, <shrink>\}} (version~2 only). +This is used only in line adjustment with priority by \Pkg{luatexja-adjust} (see Subsection~\ref{ssec-adj}). Higher value means the glue is easy to stretch, -and is also easy to shrink. +and is also easy to shrink. \item[kanjiskip\_natural=<num>\textrm{, }% kanjiskip\_stretch=<num>\textrm{, }kanjiskip\_shrink=<num>]\leavevmode @@ -4680,12 +4696,37 @@ Hence we have the following result: \item[end\_stretch=<kern>, end\_shrink=<kern>] %<*ja> -(任意) +(任意,バージョン1のみ) 優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が行 末に来た時に,行長を詰める調整・伸ばす調整のた めにこの文字と行末の間に挿入可能なカーンの大きさを指定する. %</ja> +%<*en> +(optional, version~1 only) +%</en> + + \item[end\_adjust=\{<kern>, <kern>, ...\}] +%<*ja> +(任意,バージョン2のみ) + +優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が + 行末に来た時に,この文字と行末の間には指定された値のいずれかの大きさのカーンが + 挿入される(\autoref{ssec-adj}参照). + +バージョン1における +\begin{lstlisting}[escapechar=\$] + end_stretch = $a$, end_shrink = $b$ +\end{lstlisting} +という指定は,バージョン2では次の指定と同じになる. +\begin{lstlisting}[escapechar=\$] + end_adjust = {$-b$, 0.0, $a$} +\end{lstlisting} +もし真ん中の \texttt{0.0} がない場合は,$a$か$-b$かいずれかのカーンが常に行末に追加される. +%</ja> +%<*en> +(optional, version~2 only) +%</en> \end{cslist} @@ -6878,38 +6919,106 @@ for making the difference obvious. (see Japanese version of this manual) %</en> %<*ja> +この追加パッケージは以下の機能を提供する.詳細な仕様については\ref{sec-adjspec}章を参照してほしい. +\begin{description} +\item[行末文字の位置調整] + \pTeX では,(是非はともかく)「行末の読点はぶら下げか二分取りか全角取りのいずれかに」のように + 行末文字と実際の行末の位置関係を2通り以上にすることは面倒であった. + 和文フォントメトリックだけでは「常に行末の読点はぶら下げ」といったことしかできず, + 前の文に書いたことを実現するには +\begin{lstlisting} +\def\。{% + \penalty10000 % 禁則ペナルティ + \hbox to0pt{。\hss}\penalty0 % ぶら下げの場合 + \kern.5\zw\penalty0 % 二分取りの場合 + \kern.5\zw\penalty0 % 全角取りの場合 +} +\end{lstlisting} + のような命令を定義し,文中の全ての句点を \lstinline+\。+ で書くことが必要だった. + +\Pkg{luatexja-adjust}パッケージは,上で述べた行末文字と実際の行末との位置関係を +2通り以上から自動的に選択する機能を提供する. +\pdfTeX と同じように,「\TeX による行分割の後で行末文字の位置を補正する」方法と + 「行分割の過程で行末文字の位置を考慮に入れる」方法を選べるようにした( +\Pkg{luatexja-adjust}パッケージの既定では前者). + +\item[優先順位付きの行長調整] \pTeX では,行長調整において優先度の概念が存在しなかったため,図 \ref{fig-adj}上段における半角分の半端は,図\ref{fig-adj}中段のように,鍵 括弧周辺の空白と和文間空白(\Param{kanjiskip})の両方によって負担される.し かし,「日本語組版処理の要件」\cite{jlreq}やJIS~X~4051~\cite{x4051}におい ては,このような状況では半端は鍵括弧周辺の空白のみで負担し,その他の和文 -文字はベタ組で組まれる(図\ref{fig-adj}下段)ことになっている.この追加 -パッケージは\cite{jlreq}や\cite{x4051}における規定のような,優先順位付き -の行長調整を提供する.詳細な仕様については\ref{sec-adjspec}章を参照してほしい. +文字はベタ組で組まれる(図\ref{fig-adj}下段)ことになっている. +\Pkg{luatexja-adjust}パッケージの提供する第2の機能は, +\cite{jlreq}や\cite{x4051}における規定のような,優先順位付き +の行長調整である. \begin{itemize} \item 優先度付き行長調整は,段落を行分割した後に個々の行について行われるものである. そのため,行分割の位置は変化することはない. -また,\verb+\hbox to ... {...}+ のような「幅が指定されたhbox」では無効である. +\verb+\hbox{...}+ といった「途中で改行できない水平ボックス」では(たとえ幅が指定されていても)無効である. \item 優先度付き行長調整を行うと,和文処理グルーの自然長は変化しないが,伸び量や縮み量は 一般に変化する.そのため,既に組まれた段落を \cs{unhbox} などを利用して組み直す処理を 行う場合には注意が必要である. \end{itemize} +\end{description} - -\Pkg{luatexja-adjust} は,以下の命令を提供する.これらはすべてグローバルに効力を発揮する. +\Pkg{luatexja-adjust}パッケージは,上記で述べた2機能を有効化/無効化するための +以下の命令を提供する.これらはすべてグローバルに効力を発揮する. \begin{cslist} +\item[\cs{ltjenableadjust[...]}] +\verb+...+ に指定したkey-valueリストに従い,「行末文字の位置調整」「優先順位付きの行長調整」を有効化/無効化する. +指定できるキーは以下の通り. +\begin{description} + \item[\texttt{lineend=[false,true,extended]}] + 行末文字の位置調整の機能を無効化(\texttt{false}),「行分割後に調整」の形で有効化(\texttt{true}), + 「行分割の仮定で考慮」(\texttt{extended})する. + \item[\texttt{priority=[false,true]}] + 優先順位付きの行長調整を無効化(\texttt{false}),または有効化(\texttt{true})する. +\end{description} +両キーともキー名のみを指定した場合は値として\texttt{true}が指定されたものと扱われる. + +互換性の為,オプション無しでただ\cs{ltjenableadjust}が呼び出された場合は, +\begin{lstlisting} +\ltjenableadjust[lineend=true,priority=true] +\end{lstlisting} +と扱われる. + \item[\cs{ltjdisableadjust}] -優先順位付きの行長調整を無効化する. +\Pkg{luatexja-adjust}パッケージの機能を無効化する. +\begin{lstlisting} +\ltjenableadjust[lineend=false,priority=false] +\end{lstlisting} +と同義. +\end{cslist} -\item[\cs{ltjenableadjust}] -優先順位付きの行長調整を有効化する. +また,優先順位付きの行長調整のために,次の2パラメータが\cs{ltjsetparameter}内で +追加される.両パラメータともグローバルに効力を発揮する. +\begin{cslist}[style=standard] +\item[\DParam{stretch\_priority}\,=\{<list>\}] +\Param{kanjiskip}, \Param{xkanjiskip},および「\textbf{JAglue}以外のグルー」を, +「行を自然長より伸ばす」場合の調整に用いる優先度を指定する. -\item[\textsf{adjust}\,=<bool>] \cs{ltjsetparameter} で指定可能な追加パラメータであり, -<bool>が\textit{true}なら \cs{ltjenableadjust} を, -そうでなければ \cs{ltjdisableadjust} を実行する. +指定方法は,<list>の中にkey-value listの形で +\begin{lstlisting} +stretch_priority={kanjiskip=-35,xkanjiskip=-25,others=50} +\end{lstlisting} +のようにして行う.キー名\texttt{kanjiskip},~\texttt{xkanjiskip}については +そのままの意味であり, +\texttt{others}キーが「\textbf{JAglue}以外のグルー」を表す. +各キーの値は,JFMグルーにおける「優先度$i$」を$10i$に対応させた整数値であり, + 大きい方が先に伸ばされることを意味している. + +\item[\DParam{shrink\_priority}\,=\{<list>\}] +同様に,「行を自然長より縮める」場合の調整に用いる優先度を指定する. +それ以外は\Param{stretch\_priority}と指定の形式は変わらない. \end{cslist} +初期値は\Param{stretch\_priority}, \Param{shrink\_priority}とも +\begin{lstlisting} +{kanjiskip=-35,xkanjiskip=-25,others=50} +\end{lstlisting} +であり,「優先度$-4$」と指定されているJFMグルーが最も伸び(縮み)にくいようになっている. %</ja> \subsection{\Pkg{luatexja-ruby}} @@ -9230,93 +9339,148 @@ the \texttt{lstlisting} environment or other environments/commands. %<*ja> \section{和文の行長補正方法} \label{sec-adjspec} -\Pkg{luatexja-adjust} で提供される優先順位付きの行長調整の詳細を述 -べる.大まかに述べると,次のようになる. +\Pkg{luatexja-adjust}で提供される優先順位付きの行長調整の詳細を大まかに述べると,次のようになる. \begin{itemize} +\item (\texttt{lineend=extended}の場合)\textbf{JAglue}の挿入処理のところで, + …… \item 通常の\TeX の行分割方法に従って,段落を行分割する.この段階では,行 長に半端が出た場合,その半端分は\textbf{JAglue}(\Param{xkanjiskip}, \Param{kanjiskip},JFMグルー)と それ以外のグルーの全てで(優先順位なく)負担される. \item その後,\texttt{post\_linebreak\_filter} callbackを使い,\emph{段 - 落中の各行ごとに},行末文字の位置を調整したり,優先度付きの行長調整 + 落中の各行ごとに},行末文字の位置を調整(\texttt{lineend=true}の場合)したり,優先度付きの行長調整 を実現するためにグルーの伸縮度を調整する. その処理においては,グルーの自然長と\textbf{JAglue}以外の グルーの伸び量・縮み量は変更せず,必要に応じて\textbf{JAglue}の伸び量・縮み量のみを 変更する設計とした. - -\Pkg{luatexja-adjust} の作用は,この処理を行うcallbackを追加するだけであり, - この章の残りではcallbackでの処理について解説する. \end{itemize} +この章の残りでは各処理について解説する. \paragraph{準備:合計伸縮量の計算} グルーの伸縮度(\texttt{plus} や \texttt{minus} で指定されている値)には, 有限値の他に,\texttt{fi},\texttt{fil},\texttt{fill},\texttt{filll}と -いう4つの無限大レベル(後ろの方ほど大きい)があり,行の調整に -\texttt{fi} などの\emph{無限大レベルの伸縮度が用いられている場合は,そ -の行に対しての処理を中止}する. - -よって,以降,問題にしている行の行長調整は伸縮度が有限長のグルーを用いて -行われているとして良い.さらに,簡単のため,この行はグルーが広げられている -(自然長で組むと望ましい行長よりの短い)場合しか扱わない. +いう4つの無限大レベル(後ろの方ほど大きい)がある.行の調整に +\texttt{fi} などの\emph{無限大レベルの伸縮度が用いられている行では, +「行末文字の位置調整」のみ行い,「グルーの調整」は行わない.} まず,段落中の行中のグルーを \begin{itemize} \item \textbf{JAglue}ではないグルー \item JFMグルー(優先度\footnote{% \ref{ssec-jfm-str}節にあるように, - 各JFMグルーには$-2$から2までの優先度がついている.}% + 各JFMグルーには$-4$から3までの優先度がついている.場合によっては + 伸びと縮みで異なる優先度が付いているかもしれない.}% 別にまとめられる) \item 和欧文間空白(\Param{xkanjiskip}) \item 和文間空白(\Param{kanjiskip}) \end{itemize} -の$1+1+5+1=8$つに類別し,それぞれの種別ごとに -許容されている伸び量(\texttt{stretch}の値)の合計を計算する. -また,行長と自然長との差を\textit{total}とおく. - +の$1+1+8+1=10$つに類別する. +そして許容されている伸び量(\texttt{stretch}の値)の合計を +無限のレベルごとに +\begin{align*} + T^{+}_{l}&:= \sum_{\text{$\texttt{stretch\_order}(p) = l$}} \texttt{stretch}(p),& + l\in \{\text{(finite)}, \texttt{fi}, \texttt{fil}, \texttt{fill}, \texttt{filll}\} +\end{align*} +と計算する.さらに, +\begin{align*} +T^{+}&:=T^{+}_{L^+},&L^{+} = \max \{l\in + \{\text{(finite)}, \texttt{fi}, \texttt{fil}, \texttt{fill}, \texttt{filll}\}: + T^{+}_l\neq 0\} +\end{align*} +とおく.有限の伸び量については,上記の8種類の類別ごとにも合計を計算する. +さらに縮み量(\texttt{shrink}の値)についても同様の処理を行い,$T^{-}$を計算する. + +また,行長から自然長を引いた値を\textit{total}とおく. + +\subsection{行末文字の位置調整(行分割後の場合)} +行末が\textbf{JAchar}であり,この文字の属する文字クラスでは +\begin{quote} + \texttt{end\_adjust = \{$a_{1}$, $a_{2}$, ..., $a_{n}$\}} +\end{quote} +であったとする. +このとき,以下の条件を満たした場合, +この文字クラスに対する\texttt{end\_adjust}の値のいずれかだけこの文字の位置を移動させる. +\begin{description} + \item[最終行以外] 行長調整に無限大の伸縮度が用いられていない. + すなわち,$\textit{total}>0$ならば$L^{+}=(\text{finite})$であり, + $\textit{total}>0$ならば$L^{-}=(\text{finite})$である. + \item[最終行] 行長調整に無限大に伸び縮みするグルーが用いられたなら,それは\cs{parfillskip}のみであり, + かつ,次の不等式が成立する: + \[ + \min\{0,a_{1}\}\text{\cs{zw}}\leq (\text{\cs{parfillskip}の実際の長さ}) \leq \max\{0,a_{n}\}\text{\cs{zw}} + \] +\end{description} -\subsection{行末文字の位置調整} -行末が文字クラス$n$の\textbf{JAchar}であった場合, -それを動かすことによって,\textit{total}のうち -\textbf{JAglue}が負担する分を少なくしようとする. -この行末文字の左右の移動可能量は, -JFM中にある文字クラス$n$の定義の -\texttt{end\_stretch},~\texttt{end\_shrink}フィールドに -全角単位の値として記述されている. +各$1\leq i\leq n$に対して, +「行末に$a_{i}$全角だけのカーンを追加した時の,\textit{glue\_set}の値」を +$b_{i}$とおく.式で書くと, +\[ +\catcode`\<=12 +b_{i} = \begin{cases} + |\textit{total}-a_{i}\text{\cs{zw}}|/T^{+} + &(\textit{total}-a_{i}\text{\cs{zw}}\geq 0)\\ + |\textit{total}-a_{i}\text{\cs{zw}}|/T^{-} + &(\textit{total}-a_{i}\text{\cs{zw}}<0) +\end{cases}. +\] +$b_{i}$達の最小値を与えるような$i$を$j$としたとき\footnote{% + そのような$i$が2つ以上あるときは,$|\textit{total}-a_{i}\cdot \text{\cs{zw}}|$, + $|a_{i}|$, $a_i$の順で比較して一番小さくなるものが選ばれる. +}, +行末に大きさ$a_{j}$のカーンを追加する. +\textit{total}から$a_{j}$全角の大きさだけ引いておく. -例えば,行末文字が句点「。」であり,そこで用いられているJFM中に -\begin{lstlisting} - [2] = { - chars = { '。', ... }, width = 0.5, ..., - end_stretch = 0.5, end_shrink = 0.5, - }, -\end{lstlisting} -という指定があった場合,この行末の句点は -\begin{itemize} -\item 通常の\TeX の行分割処理で「半角以上の詰め」が行われていた場合, -この行中の\textbf{JAglue}の負担を軽減するため, -行末の句点を半角だけ右に移動する(ぶら下げ組を行う). -\item 通常の\TeX の行分割処理で「半角以上の空き」が行われていた場合, -逆に行末句点を半角左に移動させる(見た目的に全角取りとなる). -\item 以上のどちらでもない場合,行末句点の位置調整は行わない. -\end{itemize} -となる. +\subsection{行末文字の位置調整(行分割での考慮)} +\texttt{lineend=extended}が指定されている場合,\TeX による行分割が行われる前に +各\textbf{JAchar}の直後に,その文字が行末に来たときの位置補正用のノードを挿入していく. -行末文字を移動した場合,その分だけ\textit{total}の値を引いておく. +\ref{sec-jfmglue}章の用語を使って述べる. +前側のクラスタ\textit{Nq}が「和文A」「和文B」であり, +JFMによって\texttt{end\_adjust}の値が +\begin{quote} + \texttt{end\_adjust = \{$a_{1}$, $a_{2}$, ..., $a_{n}$\}} +\end{quote} +であったとする.このとき,次のクラスタ\textit{Np}の直前に以下のノード列を挿入する. +\textbf{JAglue}の挿入過程で禁則処理のために「\textit{Nq}と\textit{Np}の間のペナルティ値を増やす」ことが +行われることがあるが,以下で述べられている$(n+1)$個のペナルティはみなその処理対象になっている. +\begin{align*} + \Node{kern}{$a_{1}\text{\cs{zw}}$} + &\longrightarrow \Node{penalty}{$0$} \longrightarrow\Node{kern}{$(a_{2}-a_{1})\text{\cs{zw}}$} + \longrightarrow \Node{penalty}{$0$} \longrightarrow\Node{kern}{$(a_{3}-a_{2})\text{\cs{zw}}$}\\ + &\longrightarrow + \cdots \longrightarrow\Node{penalty}{$0$} \longrightarrow + \Node{kern}{$(a_{n}-a_{n-1})\text{\cs{zw}}$} + \longrightarrow \Node{penalty}{$0$} \longrightarrow + \Node{kern}{$-a_{n}\text{\cs{zw}}$} \longrightarrow \Node{penalty}{$10000$} +\end{align*} +$n$個あるペナルティの箇所が改行可能箇所である.いずれかで改行された場合は, +その前にあるカーン($n$箇所のうちどこで改行しても,合計の長さは$a_{i}$の形)は行末に残るが, +後ろのペナルティ・カーンは除去される.なお,$a_1=0$のときは最初の幅が$a_{1}\text{\cs{zw}}$のカーンは不要なので挿入されず, +さらにかつ$n=1$であった場合は後ろのペナルティも挿入されない. + +なお,段落の末尾には\cs{penalty10000}と\cs{parfillskip}由来のグルーが自動的に入るが, +これらとの兼ね合いのため\emph{最後のクラスタについては上記のノード挿入処理は行われない}. +段落最終行の行末文字の位置調整は,すでに述べた「行分割後の場合」における最終行の処理をそのまま用いている. \subsection{グルーの調整} -\textit{total}の分だけが,行中のグルーの伸び量に応じて負担されることになる. -負担するグルーの優先度は以下の順であり, -できるだけ\Param{kanjiskip}を自然長のままにすることを -試みている. +$|\textit{total}|$の分だけが,行中のグルーの伸び量,あるいは縮み量に応じて負担されることになる. +以下,$\textit{total}\geq 0$であると仮定して話を進めるが,負のときも同様である. +\Pkg{luatexja-adjust}の初期値では以下の順に伸び量を負担するようになっており, +(優先度$-4$のJFMグルーは例外として)できるだけ\Param{kanjiskip}を自然長のままにすることを +試みている.この順番は\Param{stretch\_priority}(縮み量については\Param{shrink\_priority}) +パラメータで変更可能である. \begin{enumerate}\def\labelenumi{(\Alph{enumi})} \item \textbf{JAglue}以外のグルー + \item 優先度3のJFMグルー \item 優先度2のJFMグルー \item 優先度1のJFMグルー \item 優先度0のJFMグルー \item 優先度$-1$のJFMグルー \item 優先度$-2$のJFMグルー \item \Param{xkanjiskip} + \item 優先度$-3$のJFMグルー \item \Param{kanjiskip} + \item 優先度$-4$のJFMグルー \end{enumerate} \begin{enumerate} \item 行末の\textbf{JAchar}を移動したことで$\textit{total}=0$となれば, @@ -9333,7 +9497,7 @@ JFM中にある文字クラス$n$の定義の \texttt{glue\_set}, \texttt{glue\_sign}, \texttt{glue\_order}を再計算する. これによって,\textit{total}は\textbf{JAglue}以外のグルーによって負担される. \end{enumerate} -\item \textit{total}が「(A)の伸び量の合計」以上ならば,(A)--(H)のどこまで負担すれば +\item \textit{total}が「(A)の伸び量の合計」以上ならば,(A)--(K)のどこまで負担すれば \textit{total}以上になるかを計算する. 例えば, \[\catcode`\<=12 @@ -9344,17 +9508,17 @@ JFM中にある文字クラス$n$の定義の \begin{itemize} \item (A),~(B)に属するグルーは各グルーで許された伸び量まで伸ばす. \item (C)に属するグルーはそれぞれ$p\times (\text{伸び量})$だけ伸びる. - \item (D)--(H)に属するグルーは自然長のまま. + \item (D)--(K)に属するグルーは自然長のまま. \end{itemize} 実際には,前に述べた「設計」に従い,次のように処理している: \begin{enumerate} \item (C)に属するグルーの伸び量を$p$倍する. -\item (D)--(H)に属するグルーの伸び量を0とする. +\item (D)--(K)に属するグルーの伸び量を0とする. \item 行が格納されているhboxの \texttt{glue\_set}, \texttt{glue\_sign}, \texttt{glue\_order}を再計算する. これによって,\textit{total}は\textbf{JAglue}以外のグルーによって負担される. \end{enumerate} -\item \textit{total}が(A)--(H)の伸び量の合計よりも大きい場合,どうしようもないので +\item \textit{total}が(A)--(K)の伸び量の合計よりも大きい場合,どうしようもないので \verb+^^;+何もしない. \end{enumerate} |