\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
%%%%%%%%
width:\hfill\ #2\cr height:\hfill\ #3\cr depth:\hfill\ #4\cr
}}}}}\,}
-\protected\def\Param#1{\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}} % parameter name
-\protected\def\DParam#1{\hypertarget{fld:#1}{\underline{\smash{\textsf{#1}}}}} % parameter name (definition)
+\def\myghost{\ifmmode\else\ltjalchar"200C \fi}
+\protected\def\Param#1{\myghost\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} % parameter name
+\protected\def\DParam#1{\myghost\hypertarget{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} % parameter name (definition)
\protected\def\Pkg#1{\textsf{#1}} % packages/classes
-
+\ltjsetparameter{alxspmode={"200C,allow}}
\begin{document}
\lstset{
\toprule
Direction of JFM&\textbf{\texttt{'yoko'} (horizontal)}&\multicolumn{1}{l}{\textbf{\texttt{'tate'} (vertical)}}\\
\midrule
-\texttt{width} field&the width of the ``real'' glyph&1.0~(full-width)\\
-\texttt{height} field&the height of the ``real'' glyph&0.5~(half-width)\\
-\texttt{depth} field&the depth of the ``real'' glyph&0.5~(half-width)\\
+\texttt{width} field&\multicolumn{2}{c}{the width of the ``real'' glyph}\\
+\texttt{height} field&the height of the ``real'' glyph&0.0\\
+\texttt{depth} field&the depth of the ``real'' glyph&0.0\\
\midrule
\texttt{italic} field&\multicolumn{2}{c}{0.0}\\
\bottomrule
\toprule
JFM書字方向&\emph{\texttt{'yoko'}(横組)}&\multicolumn{1}{l}{\emph{\texttt{'tate'}(縦組)}}\\
\midrule
-\texttt{width}&「実際のグリフ」の幅&1.0(全角)\\
-\texttt{height}&「実際のグリフ」の高さ&0.5(二分)\\
-\texttt{depth}&「実際のグリフ」の深さ&0.5(二分)\\
+\texttt{width}&\multicolumn{2}{c}{「実際のグリフ」の幅}\\
+\texttt{height}&「実際のグリフ」の高さ&0.0\\
+\texttt{depth}&「実際のグリフ」の深さ&0.0\\
\midrule
\texttt{italic}&\multicolumn{2}{c}{0.0}\\
\bottomrule
次のキーを指定できる,
\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}
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
\ltjenableadjust[lineend=false,priority=false]
\end{lstlisting}
と同義.
+\end{cslist}
+
+また,優先順位付きの行長調整のために,次の2パラメータが\cs{ltjsetparameter}内で
+追加される.両パラメータともグローバルに効力を発揮する.
+\begin{cslist}[style=standard]
+\item[\DParam{stretch\_priority}\,=\{<list>\}]
+\Param{kanjiskip}, \Param{xkanjiskip},および「\textbf{JAglue}以外のグルー」を,
+「行を自然長より伸ばす」場合の調整に用いる優先度を指定する.
+指定方法は,<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}}
\Node{glyph}{accent}\\\noalign{\medskip}
\Node{hbox}{accent (shifted vert.)}
\end{array}\right\}\longrightarrow
-\Node{kern}{$\mathit{subtype}=2$}}^{\text{(a)}}
+\Node{kern}{$\mathit{subtype}=2$}}^{\text{(b)}}
\longrightarrow
\Node{glyph}{$p$}\longrightarrow
\overbrace{%
-\Node{kern}{italic corr.}}^{\text{(b)}}
+\Node{kern}{italic corr.}}^{\text{(a)}}
\]
%<*en>
\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$つに類別する.
+の$1+1+8+1=10$つに類別する.
そして許容されている伸び量(\texttt{stretch}の値)の合計を
無限のレベルごとに
\begin{align*}
\textit{total}から$a_{j}$全角の大きさだけ引いておく.
\subsection{行末文字の位置調整(行分割での考慮)}
-未完.最終行!
+\texttt{lineend=extended}が指定されている場合,\TeX による行分割が行われる前に
+各\textbf{JAchar}の直後に,その文字が行末に来たときの位置補正用のノードを挿入していく.
+
+\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}|$の分だけが,行中のグルーの伸び量に応じて負担されることになる.
+$|\textit{total}|$の分だけが,行中のグルーの伸び量,あるいは縮み量に応じて負担されることになる.
以下,$\textit{total}\geq 0$であると仮定して話を進めるが,負のときも同様である.
-負担するグルーの優先度は以下の順であり,
-できるだけ\Param{kanjiskip}を自然長のままにすることを
-試みている.
+\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$となれば,
\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
\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}