OSDN Git Service

Merge branch 'kitagawa_test' into kitagawa_lineprofile
[luatex-ja/luatexja.git] / doc / luatexja.dtx
index 617b84a..eb2dbf6 100644 (file)
   width:\hfill\ #2\cr height:\hfill\ #3\cr depth:\hfill\ #4\cr
   }}}}}\,}
 
+\makeatletter
 \def\myghost{\ifmmode\else\ltjalchar"200C \fi}
-\protected\def\Param#1{\myghost\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} % parameter name
+\def\Param#1{\texorpdfstring{\@Param{#1}}{#1}} % parameter name
+\protected\def\@Param#1{\myghost\hyperlink{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost}
 \protected\def\DParam#1{\myghost\hypertarget{fld:#1}{\underline{\smash{\textsf{#1}}}}\myghost} % parameter name (definition)
-\protected\def\Pkg#1{\textsf{#1}} % packages/classes
+\def\Pkg#1{\texorpdfstring{\textsf{#1}}{#1}} % packages/classes
 \ltjsetparameter{alxspmode={"200C,allow}}
 
 \begin{document}
@@ -633,7 +635,7 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}.
 %<en>The following packages are needed for the \LuaTeX-ja\ package.
 %<ja>\LuaTeX-jaパッケージの動作には次のパッケージ類が必要である.
 \begin{itemize}
-\item \LuaTeX\ beta-0.85.0 (or later)
+\item \LuaTeX\ 1.0.0 (or later)
 \item \Pkg{luaotfload} v2.6 (or later)
 \item \Pkg{adobemapping} (Adobe cmap and pdfmapping files)
 \item \Pkg{etoolbox}, \Pkg{everysel} (if you want to use \LuaTeX-ja with \LaTeXe)
@@ -642,9 +644,9 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}.
 %<en>\item \emph{IPAex fonts} (\url{http://ipafont.ipa.go.jp/})
 %<ja>\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})}
 \end{itemize}
-%<en>In summary, \LuaTeX-ja version 20160404.0 (or~later) no longer supports \TeX~Live~2015.
+%<en>In summary, \LuaTeX-ja version 2018****.0 (or~later) no longer supports \TeX~Live~2016.
 %<*ja>
-要約すると,バージョン20160404.0以降の\LuaTeX-jaは\TeX~Live~2015以前では動作しない\footnote{%
+要約すると,バージョン2018****.0以降の\LuaTeX-jaは\TeX~Live~2016以前では動作しない\footnote{%
   もっとも,自分で\LuaTeX のバイナリをSubversionリポジトリからビルドしていれば話は別である.
 }.
 %</ja>
@@ -672,21 +674,6 @@ IPAex fonts are also available in these distributions.
 W32\TeX においてはIPAexフォントは \texttt{luatexja.tar.xz} 内にある.
 %</ja>
 
-% %<*ja>
-% 例えば\TeX~Live~2015を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を
-% 使ってインストールすることができる.
-% \begin{lstlisting}
-% $ tlmgr install luatexja
-% \end{lstlisting}
-% %</ja>
-% %<*en>
-% If you are using \TeX~Live~2015, you can install \LuaTeX-ja
-% from \TeX~Live manager (\texttt{tlmgr}):
-% \begin{lstlisting}
-% $ tlmgr install luatexja
-% \end{lstlisting}
-% %</en>
-
 %<en>\paragraph{Manual installation}
 %<ja>\paragraph{手動インストール方法}
 
@@ -815,8 +802,9 @@ For changes from \pTeX, see Subsection~\ref{ssec:chgptex}.
   Generally speaking, LuaJIT\TeX\ processes \LuaTeX-ja
   about 30\% faster than \LuaTeX, but not always%
   \footnote{%
-    LuaJIT has the 1\,GB~(or~2\,GB) memory limitation. So typesetting a large source by LuaJIT\TeX\ 
-    may cause an ``out of memory'' error.
+    LuaJIT has several limitations such as 1\,GB~(or~2\,GB) memory limitation.
+       So typesetting a large source by LuaJIT\TeX may cause an ``out of memory'' error,
+       or failure of loading/saving font cache of \Pkg{luaotfload}.
   }.
 %</en>
 %<*ja>
@@ -825,11 +813,13 @@ For changes from \pTeX, see Subsection~\ref{ssec:chgptex}.
 LuaJIT\TeX を用いると\LuaTeX のだいたい1.3倍の速度で動くようであるが,
 IPA mj明朝などの大きいフォントを用いた場合には\LuaTeX よりも遅くなることもある
   \footnote{%
-    LuaJITは1\,GB(あるいは2\,GB)のメモリ制限があることが知られている.そのため,
+    LuaJITã\81¯1\,GBï¼\88ã\81\82ã\82\8bã\81\84ã\81¯2\,GBï¼\89ã\81®ã\83¡ã\83¢ã\83ªå\88¶é\99\90ã\81ªã\81©ï¼\8cã\81\84ã\81\8fã\81¤ã\81\8bã\81®å\88¶é\99\90äº\8bé \85ã\81\8cã\81\82ã\82\8bã\81\93ã\81¨ã\81\8cç\9f¥ã\82\89ã\82\8cã\81¦ã\81\84ã\82\8bï¼\8eã\81\9dã\81®ã\81\9fã\82\81ï¼\8c
     大きいソースファイルをLuaJIT\TeX でタイプセットするとLuaの側で``out of memory''エラーが発生してしまう.
     本ドキュメントのように,「各ページごとにLuaで使っているメモリ容量をチェックし,
     必要なら\texttt{collectgarbage("collect")}でガベージコレクタを実行」すると
     状況が多少改善されるかもしれない.
+       また,LuaJIT\TeX でIPA mj明朝などの「大きい」フォントを利用した場合はフォントキャッシュの保存に失敗し,
+       毎回フォントを読み込まなければならず結果的に時間がかかることがある.
   }.
 %</ja>
 
@@ -1016,9 +1006,9 @@ By default, the following fonts are used for these two families.
 \bottomrule
 \end{tabular}
 \end{center}
-Note that the bold series in both family are same as the medium series of gothic
-     family. There is no italic nor slanted shape for
-      these \texttt{mc}~and~\texttt{gt}.
+Note that the bold series (series \texttt{bx}~or~\texttt{b}) in both family
+     are same as the medium series of gothic family.
+     There is no italic nor slanted shape for these \texttt{mc}~and~\texttt{gt}.
 %</en>
 %<*ja>
 \item \pLaTeX と同様に,標準では「明朝体」「ゴシック体」の2種類を用いる:
@@ -1044,6 +1034,11 @@ Note that the bold series in both family are same as the medium series of gothic
 どちらのファミリにおいても,太字(\cs{bfseries})のフォントは
 ゴシック体中字(\cs{gtfamily}\cs{mdseries})で使われるフォントと同じであることに注意.
 また,どちらのファミリでもイタリック体・スラント体は定義されない.
+
+  和文の太字を表すシリーズ名は,(元々のComputer Modernが
+  太字に\texttt{bx}を用いていたことから)伝統的に\texttt{bx}~(Bold Extended)が使われてきた.
+  しかし,太字にシリーズ\texttt{b}を使うフォントも増えてきたため,
+  バージョン20180616.0以降では和文の太字として\texttt{bx},~\texttt{b}の両方を扱えるようにした.
 %</ja>
 
 %<en>\item Japanese characters in math mode are typeset by the font family \texttt{mc}.
@@ -1113,9 +1108,11 @@ Okumura), namely, \Pkg{ltjclasses}\footnote{%
 
 Original \Pkg{jsclasses} use \cs{mag}~primitive to set the main document font size.
 However, \LuaTeX\ beta-0.87.0~or~later does not support \cs{mag} in PDF~output,
-so \Pkg{ltjsclasses} use different method%
-\footnote{Similar to \texttt{magstyle=xreal} in the \Pkg{BXjscls} classes (by Takayuki Yato).}
-to set the main document font size.
+so \Pkg{ltjsclasses} uses the \texttt{nomag*} option\footnote{Same effect as 
+  the \Pkg{BXjscls} classes (by Takayuki Yato) and \Pkg{jsclasses}.
+  However, these classes uses only \TeX\ code, but \Pkg{ltjsclasses} uses Lua code.}
+ by default to set the main font size. If this causes some unexpected behavior, specify
+\texttt{nomag} option in \cs{documentclass}.
 %</en>
 %<*ja>
 しかしながら,上記の設定は日本語の文書にとって十分とは言えない.
@@ -1131,11 +1128,15 @@ to set the main document font size.
   \texttt{ltjsarticle.cls},~\texttt{ltjsbook.cls}, \texttt{ltjsreport.cls},~\texttt{ltjskiyou.cls}.}%
 がそれぞれ用意されている.
 
-元々の\Pkg{ltjsclasses}ではフォントサイズを指定するのに\cs{mag}プリミティブが使われていたが,
+元々の\Pkg{jsclasses}では本文のフォントサイズを設定するのに\cs{mag}プリミティブが使われていたが,
 \LuaTeX~beta-0.87.0以降ではPDF出力時の\cs{mag}のサポートが廃止された.
-そのため,\Pkg{ltjsclasses}では別の方法
-\footnote{八登崇之氏による\Pkg{BXjscls}クラスにおける\texttt{magstyle=xreal}指定時と類似している.}で
-フォントサイズを指定することにしている.
+そのため,\Pkg{ltjsclasses}では\texttt{nomag*}オプション
+\footnote{\Pkg{jsclasses}や,八登崇之氏による\Pkg{BXjscls}クラスにおける同名のオプションと
+  同じ.上記クラスは\TeX コードのみで実装しているが,\Pkg{ltjsclasses}ではLuaコードも用いている.}が標準で
+有効になっており,これを使って本文フォントサイズの設定を行っている.
+しかし,この\texttt{nomag*}オプションでは(20180121.0版より前の版において\Pkg{unicode-math}パッケージ使用時に
+起きたように)予想外の意図しない現象に遭遇する危険がある.そのような場合は
+\cs{documentclass}において\texttt{nomag}オプションを指定してほしい.
 %</ja>
 
 %<*ja>
@@ -2546,23 +2547,23 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.}
 %</en>
 %<*ja>
 ネイティブにUnicode全部の文字を扱える\XeTeX や\LuaTeX では,
-文字が制御綴内で使用できるかは通常の欧文文字と同じく \cs{catcode}
-で指定することとなる.plain \XeTeX における \cs{catcode} の初期設定は\
-\texttt{unicode-letters.tex} 中に記述されており,plain \LuaTeX ではそれを
-元にした \texttt{luatex-unicode-letters.tex} を用いている.
-\LaTeX では \cs{catcode} の設定はカーネルに \texttt{unicode-letters.def} として統合され.
+文字が制御綴内で使用できるかは通常の欧文文字と同じく\cs{catcode}%
+で指定することとなる.plain \XeTeX における\cs{catcode}の初期設定は%
+\texttt{unicode-letters.tex}中に記述されており,plain \LuaTeX ではそれを
+元にした\texttt{luatex-unicode-letters.tex}を用いている.
+\LaTeX では\cs{catcode}の設定はカーネルに\texttt{unicode-letters.def}として統合され.
 このファイルを\XeLaTeX, \LuaLaTeX の両方が用いている.
 
-だが,\XeTeX における \cs{catcode} の初期設定と
+だが,\XeTeX における\cs{catcode}の初期設定と
 \LuaTeX におけるそれは一致していない:
 \begin{itemize}
- \item \texttt{luatex-unicode-letters.tex} の元になった\
-\texttt{unicode-letters.tex} が古い
- \item \texttt{unicode-letters.tex} 後半部や \texttt{unicode-letters.def} 後半部では
-\cs{XeTeXcharclass} の設定を行なっており,
-それによって漢字や仮名,および全角英数字の \cs{catcode} が11に設定されている.
-しかし,\texttt{luatex-unicode-letters.tex} ではこの「後半部」が
-まるごと省略されており,また\LuaLaTeX でも \texttt{unicode-letters.def} 後半部は実行されな
+ \item \texttt{luatex-unicode-letters.tex} の元になった
+  \texttt{unicode-letters.tex}が古い
+ \item \texttt{unicode-letters.tex} 後半部や\texttt{unicode-letters.def}後半部では
+\cs{XeTeXcharclass}の設定を行なっており,
+それによって漢字や仮名,および全角英数字の\cs{catcode}が11に設定されている.
+しかし,\texttt{luatex-unicode-letters.tex}ではこの「後半部」が
+まるごと省略されており,また\LuaLaTeX でも\texttt{unicode-letters.def}後半部は実行されな
        い.
 \end{itemize}
 言い換えると,
@@ -2573,10 +2574,10 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.}
 \LuaLaTeX では漢字や仮名を制御綴内に
 使用することが可能になったが,全角英数字は相変わらず使用できない,
 \end{description}
-これでは \pTeX で使用できた \verb+\1年目西暦+\footnote{科研費\LaTeX で使用されているそうです.}などが使えないこととなり,
+これでは\pTeX で使用できた\verb+\1年目西暦+\footnote{科研費\LaTeX で使用されているそうです.}などが使えないこととなり,
 \LuaTeX-jaへの移行で手間が生じる.そのため,\LuaTeX-jaでは
-\texttt{unicode-letters.tex} の後半部にあたる内容を自前でパッチし,
-結果として\textbf{\XeTeX における初期設定と同じになるようにしている.}
+\texttt{unicode-letters.tex}の後半部にあたる内容を自前でパッチし,
+結果として\emph{\XeTeX における初期設定と同じになるようにしている.}
 %</ja>
 
 \begin{table}
@@ -3575,6 +3576,28 @@ JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
 3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp} を複数回指定した場合は,
 最後に指定したものが有効となる.
 %</ja>
+%<*en>
+\paragraph{\texttt{ltjksp}}
+\label{pg:ltjksp}
+\texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
+\texttt{kanjiskip\_shrink} keys (Page~\pageref{pg:ksp_nat}) makes tha
+\LuaTeX-ja inserts not only a glue which is specified by a JFM, and also
+the natural width/stretch part/shrink part of \Param{kanjiskip}.
+
+This functionality is disabled by \texttt{-ltjksp} specification.
+\begin{LTXexample}[width=16\zw]
+\leavevmode
+\ltjsetparameter{kanjiskip=0pt plus 3\zw}
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+
+\jfont\G=file:KozMinPr6N-Regular.otf%
+  :jfm=ujis;-ltjksp at 9.2487pt
+\G\leavevmode%
+\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+\end{LTXexample}
+%</en>
+
+
 
 
 %<en>\subsection{\cs{tfont}}
@@ -4304,6 +4327,9 @@ JFMによって本来挿入されるグルーの他に
 自然長・縮み量半角,伸び量0のグルー
 となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け
        た分だけ伸びることが許される.
+ \item 一方,開き括弧類と通常の文字の間,また通常の文字と閉じ括弧類の間は
+  自然長・縮み量・伸び量0のグルーだが,\Param{kanjiskip}の縮み量に
+  \texttt{kanjiskip\_shrink}(ここでは1)を掛けた分だけ縮むことが許される.
 \end{itemize}
 となっている.従って,以下のような組版結果を得る.
 
@@ -4312,6 +4338,10 @@ JFMによって本来挿入されるグルーの他に
 \leavevmode
 \ltjsetparameter{kanjiskip=0pt plus 3\zw}
 \vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+
+\vrule\hbox{あ「い」う,えお}\vrule\par
+\ltjsetparameter{kanjiskip=0pt minus \zw}
+\vrule\hbox to 6.5\zw{あ「い」う,えお}\vrule
 \end{LTXexample}
 
 \end{cslist}
@@ -4346,6 +4376,10 @@ a glue whose natural part and shrink part are both half-width, while its stretch
        Again, this glue also can be stretched
        as much as the stretch part of \Param{kanjiskip} times the value of
        \texttt{kanjiskip\_stretch} key (1 in this case).
+ \item Between an ideographic opening bracket and an ordinal letter
+  and between an ordinal letter and an ideographic closing bracket,
+  we have a glue whose natural part and stretch part are both zero, while its shrink part as much as
+  the shrink part of \Param{kanjiskip}.
 \end{itemize}
 Hence we have the following result:
 
@@ -4354,11 +4388,15 @@ Hence we have the following result:
 \leavevmode
 \ltjsetparameter{kanjiskip=0pt plus 3\zw}
 \vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+
+\vrule\hbox{あ「い」う,えお}\vrule\par
+\ltjsetparameter{kanjiskip=0pt minus \zw}
+\vrule\hbox to 6.5\zw{あ「い」う,えお}\vrule
 \end{LTXexample}
 
 \end{cslist}
 %</en>
-
+  
 \item[end\_stretch=<kern>, end\_shrink=<kern>]
 %<*ja>
 (任意,バージョン1のみ)
@@ -4373,7 +4411,7 @@ Hence we have the following result:
 
   \item[end\_adjust=\{<kern>, <kern>, ...\}]
 %<*ja>
-(任意,バージョン2のみ
+(任意,バージョン2以降
 
 優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が
   行末に来た時に,この文字と行末の間には指定された値のいずれかの大きさのカーンが
@@ -4383,14 +4421,14 @@ Hence we have the following result:
 \begin{lstlisting}[escapechar=\$]
     end_stretch = $a$, end_shrink = $b$
 \end{lstlisting}
-という指定は,バージョン2では次の指定と同じになる.
+という指定は,バージョン2以降では次の指定と同じになる.
 \begin{lstlisting}[escapechar=\$]
     end_adjust = {$-b$, 0.0, $a$}
 \end{lstlisting}
 もし真ん中の \texttt{0.0} がない場合は,$a$か$-b$かいずれかのカーンが常に行末に追加される.
 %</ja>
 %<*en>
-(optional, version~2 only)
+(optional, version~2 or~later)
 %</en>
 
 \end{cslist}
@@ -4535,7 +4573,7 @@ The following is the list of imaginary characters:
 
 \item['glue']
 %<en>(version 3~or~later) A boundary between \textbf{JAchar}, and, a glue or kern.
-%<ja>(バージョン3以降)\textbf{JAchar}とglue,kernとの境界.
+%<ja>(バージョン3以降)\textbf{JAchar}とglue,kernとの境界.
 
 \item[$-1$]
 %<en>The left/right boundary of an inline math formula.
@@ -5448,6 +5486,56 @@ The correct way is using a temporary register.
 
 \end{itemize}
 
+
+%<*en>
+\subsection{Alternative Commands to \cs{ltjsetparameter}}
+The basic method to set parameters of \LuaTeX-ja is to use
+\cs{ltjsetparameter}~or~\cs{ltjglobalsetparameter}.
+However, these commands are slow, because they parse a key-value list,
+so several alternative commands are used in \LuaTeX-ja.
+\emph{This subsection is not for general \LuaTeX-ja users.}
+
+\paragraph{Setting \Param{kanjiskip}~or~\Param{xkanjiskip}}
+In \Pkg{ltjsclasses}, every size-changing command such as \cs{Large}
+changes \cs{kanjiskip}~and~\cs{xkanjiskip}.
+But a simple implementation, as the code below, is slow since
+two key-value lists are parsed by \cs{ltjsetparameter}:
+\begin{lstlisting}
+  \ltjsetparameter{kanjiskip=0\zw plus .1\zw minus .01\zw}
+  \@tempskipa=\ltjgetparameter{xkanjiskip}
+  \ifdim\@tempskipa>\z@
+    \if@slide
+      \ltjsetparameter{xkanjiskip=0.1em}
+    \else
+      \ltjsetparameter{xkanjiskip=0.25em plus 0.15em minus 0.06em}
+    \fi
+  \fi
+\end{lstlisting}
+
+Hence, \LuaTeX-ja defines more primitive commands, namely \cs{ltj@setpar@global},
+\cs{ltjsetkanjiskip}, and~\cs{ltjsetxkanjiskip}. Here
+\begin{quote}
+  \lstinline+\ltj@setpar@global\ltjsetkanjiskip 10pt+
+\end{quote}
+and \lstinline+\ltjsetparameter{kanjiskip=10pt}+ has the same effect.
+The actual code of \Pkg{ltjsclasses} is shown below:
+\begin{lstlisting}
+  \ltj@setpar@global
+  \ltjsetkanjiskip{\z@ plus .1\zw minus .01\zw}
+  \@tempskipa=\ltjgetparameter{xkanjiskip}
+  \ifdim\@tempskipa>\z@
+    \if@slide
+      \ltjsetxkanjiskip.1em
+    \else
+      \ltjsetxkanjiskip.25em plus .15em minus .06em
+    \fi
+  \fi
+\end{lstlisting}
+
+Note that using \cs{ltjsetkanjiskip}~or~\cs{ltjsetxkanjiskip} alone,
+that is, without executing \cs{ltj@setpar@global} in advance, is \emph{not} supported.
+%</en>
+
 %<*ja>
 \subsection{\cs{ltjsetparameter} の代替}
 原則として各種内部パラメータの設定には \cs{ltjsetparameter} もしくは
@@ -5456,7 +5544,7 @@ The correct way is using a temporary register.
 \LuaTeX-ja の内部ではより高速に実行できる別の形式を用いている.
 \emph{本節は一般利用者むけの内容ではない.}
 
-\paragraph{\Param{kanjiskip}, \Param{xkanjiskip} の設定}
+\paragraph{\Param{kanjiskip}, \Param{xkanjiskip}の設定}
 \pLaTeXe 新ドキュメントクラスでは,
 \begin{lstlisting}
 \def\@setfontsize#1#2#3{%
@@ -6074,11 +6162,11 @@ As closing this subsection, we shall introduce an example of
 %<*ja>
 この節の終わりに,\cs{SetRelationFont} と \cs{userelfont} の例を
 紹介しておこう.\cs{userelfont} の使用によって,「abc」の部分のフォントが
-Avant Garde (OT1/pag/m/n) に変わっていることがわかる.
+Latin Modern Sans Serif (TU/lmss/m/n) に変わっていることがわかる.
 %</ja>
 \begin{LTXexample}[width=0.3\textwidth]
 \makeatletter
-\SetRelationFont{JY3}{\k@family}{m}{n}{OT1}{pag}{m}{n}
+\SetRelationFont{JY3}{\k@family}{m}{n}{TU}{lmss}{m}{n}
   % \k@family: current Japanese font family
 \userelfont\selectfont あいうabc
 \end{LTXexample}
@@ -6708,12 +6796,12 @@ for making the difference obvious.
 %<*ja>
 この追加パッケージは以下の機能を提供する.詳細な仕様については\ref{sec-adjspec}章を参照してほしい.
 \begin{description}
-\item[行末文字の位置調整]
+ \item[行末文字の位置調整]
   \pTeX では,(是非はともかく)「行末の読点はぶら下げか二分取りか全角取りのいずれかに」のように
   行末文字と実際の行末の位置関係を2通り以上にすることは面倒であった.
   和文フォントメトリックだけでは「常に行末の読点はぶら下げ」といったことしかできず,
   前の文に書いたことを実現するには
-\begin{lstlisting}
+  \begin{lstlisting}
 \def\。{%
   \penalty10000 % 禁則ペナルティ
   \hbox to0pt{。\hss}\penalty0 % ぶら下げの場合
@@ -6723,48 +6811,179 @@ for making the difference obvious.
 \end{lstlisting}
   のような命令を定義し,文中の全ての句点を \lstinline+\。+ で書くことが必要だった.
 
-\Pkg{luatexja-adjust}パッケージは,上で述べた行末文字と実際の行末との位置関係を
-2通り以上から自動的に選択する機能を提供する.
-\pdfTeX と同じように,「\TeX による行分割の後で行末文字の位置を補正する」方法と
-  「行分割の過程で行末文字の位置を考慮に入れる」方法を選べるようにした
-\Pkg{luatexja-adjust}パッケージの既定では前者).
+  \Pkg{luatexja-adjust}パッケージは,上で述べた行末文字と実際の行末との位置関係を
+  2通り以上から自動的に選択する機能を提供する.
+  \pdfTeX と同じように,「\TeX による行分割の後で行末文字の位置を補正する」方法と
+  「行分割の過程で行末文字の位置を考慮に入れる」方法を選べるようにした
+  (\Pkg{luatexja-adjust}パッケージの既定では前者).
   
-\item[優先順位付きの行長調整]
-\pTeX では,行長調整において優先度の概念が存在しなかったため,図
-\ref{fig:adj}上段における半角分の半端は,\autoref{fig:adj}中段のように,鍵
-括弧周辺の空白と和文間空白(\Param{kanjiskip})の両方によって負担される.し
-かし,「日本語組版処理の要件」\cite{jlreq}やJIS~X~4051~\cite{x4051}におい
-ては,このような状況では半端は鍵括弧周辺の空白のみで負担し,その他の和文
-文字はベタ組で組まれる(\autoref{fig:adj}下段)ことになっている.
-\Pkg{luatexja-adjust}パッケージの提供する第2の機能は,
-\cite{jlreq}や\cite{x4051}における規定のような,優先順位付き
-の行長調整である.
-\begin{itemize}
- \item 優先度付き行長調整は,段落を行分割した後に個々の行について行われるものである.
-そのため,行分割の位置は変化することはない.
+ \item[優先順位付きの行長調整]
+  \pTeX では,行長調整において優先度の概念が存在しなかったため,図
+  \ref{fig:adj}上段における半角分の半端は,\autoref{fig:adj}中段のように,鍵
+  括弧周辺の空白と和文間空白(\Param{kanjiskip})の両方によって負担される.し
+  かし,「日本語組版処理の要件」\cite{jlreq}やJIS~X~4051~\cite{x4051}におい
+  ては,このような状況では半端は鍵括弧周辺の空白のみで負担し,その他の和文
+  文字はベタ組で組まれる(\autoref{fig:adj}下段)ことになっている.
+  \Pkg{luatexja-adjust}パッケージの提供する第2の機能は,
+  \cite{jlreq}や\cite{x4051}における規定のような,優先順位付き
+  の行長調整である.
+  \begin{itemize}
+   \item 優先度付き行長調整は,段落を行分割した後に個々の行について行われるものである.
+       そのため,行分割の位置は変化することはない.
+       
+       \verb+\hbox{...}+ といった「途中で改行できない水平ボックス」では(たとえ幅が指定されていても)無効である.
+   \item 優先度付き行長調整を行うと,和文処理グルーの自然長は変化しないが,伸び量や縮み量は
+       一般に変化する.そのため,既に組まれた段落を \cs{unhbox} などを利用して組み直す処理を
+       行う場合には注意が必要である.
+  \end{itemize}
+  
+ \item[「中身までみた」行送り計算]
+  複数行に渡る文章を組版するときには行間に空きが入ることが普通である.
+  \TeX では各行が一つずつの水平ボックスをなしていることを思い出すと,隣り合った
+  2つの行(つまり水平ボックス)の間の空きは次のようにして決まるのだった:
+  \begin{itemize}
+   \item 「通常に組んだときの行間」$d$を,\cs{baselineskip}から
+       「前の行」の深さと「次の行」の高さを加えたものを引いた値とする.
+   \item $d\ge\cs{lineskiplimit}$の場合,
+       標準の行送り\cs{baselineskip}で組んでも十分な間隔があると判断され,
+       2行の間には長さ$d$の空白が挿入される.つまり行送りは\cs{baselineskip}.
+   \item {\catcode`\<=12$d<\cs{lineskiplimit}$}の場合,
+       2行の間には長さ\cs{lineskip}の空白が挿入される.
+       そのため(設定値によるが,多くの場合)行送りは\cs{baselineskip}より広がる.
+  \end{itemize}
 
-\verb+\hbox{...}+ といった「途中で改行できない水平ボックス」では(たとえ幅が指定されていても)無効である.
- \item 優先度付き行長調整を行うと,和文処理グルーの自然長は変化しないが,伸び量や縮み量は
-一般に変化する.そのため,既に組まれた段落を \cs{unhbox} などを利用して組み直す処理を
-行う場合には注意が必要である.
-\end{itemize}
+  \begin{figure}[t]
+       \noindent\centering
+       \begin{minipage}[b]{18\zw}
+         \ltjenableadjust[profile=false, linestep=false]
+         ……だから,①より$\dfrac{a^2}{b} = \dfrac{1+\sqrt{5}}2$.\\
+         よって$b=\dfrac{1-\sqrt{5}}2$である.\\
+         これを②式に代入すると……
+         \par\vskip\abovecaptionskip
+         \ltjenableadjust[profile=false, linestep=false]
+         \par\centering\leavevmode{\small (a)}
+       \end{minipage}%
+       \kern2\zw
+       \begin{minipage}[b]{18\zw}
+         \ltjenableadjust[profile]
+         ……だから,①より$\dfrac{a^2}{b} = \dfrac{1+\sqrt{5}}2$.\\
+         よって$b=\dfrac{1-\sqrt{5}}2$である.\\
+         これを②式に代入すると……
+         \par\vskip\abovecaptionskip
+         \ltjenableadjust[profile=false, linestep=false]
+         \par\centering\leavevmode{\small (b)}
+       \end{minipage}\par
+         \caption{高い行が連続したときの状況}\label{fig:linegap1}
+  \end{figure}
+
+  ここで,\TeX は行送りの決定で「高さ・深さを取っているものが
+  行のどの水平位置にあるか」は一切考慮しないことに注意してほしい.そのため,
+  \autoref{fig:linegap1}~(a)のように「必要以上に行間が空いて見える」状況が起こることがある.
+
+  \Pkg{luatexja-adjust}パッケージでは,「通常に組んだときの行間」$d$を
+  各行の中身の文字・グルー・ボックスの寸法を勘案して計算するという方法を
+  利用できるようにした.この機能を使うと,\autoref{fig:linegap1}~(b)のように
+  行間の空きが必要以上に大きくなることを避けることができる.
+  \begin{itemize}
+       \item 段落中の隣り合った二行だけでなく,行間の空きは
+       新たに水平ボックス$h$を(内部・外部問わず)垂直モードで追加した時にも自動で挿入される.
+       その場合には,前段落で述べた「中身までみる」処理は
+       \begin{itemize}
+        \item 現在のリストにおける最後のノード
+         \footnote{最後のノードが\cs{parskip}によるグルーであった場合のみ
+               さらに一つ前のノードを参照する}が水平ボックス$h'$であり,かつ
+         \item \cs{prevdepth}の値とその$h'$の深さの値が一致している
+       \end{itemize}
+       場合にのみ発動するようにしている.
+       \item 行の中身に水平ボックス$h''$が入ってくることもあるが,その場合は$h''$の中身までは参照しない.
+       参照するようにしてしまうと,\cs{smash}など手動で行った高さ・深さ調整の意味がなくなってしまうからである.
+  \end{itemize}
+  
+  \begin{figure}[t]
+       \noindent\centering
+       \begin{minipage}[b]{16\zw}
+         \ltjenableadjust[profile]
+         ……だから,①より$\dfrac{a^2}{b}= \dfrac{1+\sqrt{5}}2$.\\
+         よって$b=\dfrac{1-\sqrt{5}}2$である.\\
+         これを②式に代入すると……
+         \par\vskip\abovecaptionskip
+         \ltjenableadjust[profile=false, linestep=false]
+         \par\centering\leavevmode{\small (a): 無効}
+       \end{minipage}%
+       \kern2\zw
+       \begin{minipage}[b]{16\zw}
+         \ltjsetparameter{linestep_factor=0.25}
+         \ltjenableadjust[profile, linestep]
+         ……だから,①より$\dfrac{a^2}{b} = \dfrac{1+\sqrt{5}}2$.\\
+         よって$b=\dfrac{1-\sqrt{5}}2$である.\\
+         これを②式に代入すると……
+         \par\vskip\abovecaptionskip
+         \ltjenableadjust[profile=false, linestep=false]
+         \par\centering\leavevmode{\small (b): $0.25$\cs{baselineskip}刻み}
+       \end{minipage}\par\medskip
+       \begin{minipage}[b]{16\zw}
+         \ltjsetparameter{linestep_factor=0.5}
+         \ltjenableadjust[profile, linestep]
+         ……だから,①より$\dfrac{a^2}{b} = \dfrac{1+\sqrt{5}}2$.\\
+         よって$b=\dfrac{1-\sqrt{5}}2$である.\\
+         これを②式に代入すると……
+         \par\vskip\abovecaptionskip
+         \ltjenableadjust[profile=false, linestep=false]
+         \par\centering\leavevmode{\small (c): 0.5\cs{baselineskip}刻み}
+       \end{minipage}%
+       \kern2\zw
+       \begin{minipage}[b]{16\zw}
+         \ltjsetparameter{linestep_factor=1}
+         \ltjenableadjust[profile, linestep]
+         ……だから,①より$\dfrac{a^2}{b} = \dfrac{1+\sqrt{5}}2$.\\
+         よって$b=\dfrac{1-\sqrt{5}}2$である.\\
+         これを②式に代入すると……
+         \par\vskip\abovecaptionskip
+         \ltjenableadjust[profile=false, linestep=false]
+         \par\centering\leavevmode{\small (d): \cs{baselineskip}刻み}
+       \end{minipage}\par
+         \caption{段階的な行送り増加}\label{fig:linegap2}
+  \end{figure}
+
+ \item[段階的な行送り調整]
+  既に述べたように,
+  「通常に組んだときの行間」$d$が\cs{lineskiplimit}より小さい場合,\TeX 標準では
+  行間は\cs{lineskip}となるのだった.
+  このとき行送りは「前の行の深さ」,「次の行の高さ」,\cs{lineskip}の3つの和になるわけだが,
+  場合によっては行送りを「\cs{baselineskip}の整数倍」などと切りのいい値に揃えたいという状況が
+  考えられなくもない.
+  
+  \Pkg{luatexja-adjust}パッケージでは,{\catcode`\<=12$d<\cs{lineskiplimit}$}のときに
+  行送りを\cs{baselineskip}の\Param{linestep\_factor}倍ずつ増減させて
+  \begin{quote}
+       行間が\cs{lineskip}以上となるような,
+       最小の$(1+k\cdot \Param{linestep\_factor})\cs{baselineskip}$($k$は整数)の値
+  \end{quote}
+  とする機能を利用できるようにした.
+  \autoref{fig:linegap2}の(a)がこの機能を無効にした状況で,(b),~(c),~(d)が
+  それぞれ\Param{linestep\_factor}を0.25,~0.5,~1とした状況である.
 \end{description}
 
-\Pkg{luatexja-adjust}パッケージは,上記で述べた2機能を有効化/無効化するための
+\Pkg{luatexja-adjust}パッケージは,上記で述べた4機能を有効化/無効化するための
 以下の命令を提供する.これらはすべてグローバルに効力を発揮する.
 
 \begin{cslist}
 \item[\cs{ltjenableadjust[...]}]
-\verb+...+ に指定したkey-valueリストに従い,「行末文字の位置調整」「優先順位付きの行長調整」を有効化/無効化する.
+\verb+...+ に指定したkey-valueリストに従い,「行末文字の位置調整」「優先順位付きの行長調整」
+  「『中身までみた』行送り計算」「段階的な行送り調整」を有効化/無効化する.
 指定できるキーは以下の通り.
 \begin{description}
   \item[\texttt{lineend=[false,true,extended]}]
   行末文字の位置調整の機能を無効化(\texttt{false}),「行分割後に調整」の形で有効化(\texttt{true}),
-  「行分割の仮定で考慮」(\texttt{extended})する.
+  「行分割の仮定で考慮」の形で有効化(\texttt{extended})する.
   \item[\texttt{priority=[false,true]}]
-  優先順位付きの行長調整を無効化(\texttt{false}),または有効化(\texttt{true})する.
+  優先順位付きの行長調整を無効化(\texttt{false}),または有効化(\texttt{true}).
+  \item[\texttt{profile=[false,true]}]
+  「中身までみた」行送り計算を無効化(\texttt{false}),または有効化(\texttt{true}).
+  \item[\texttt{linestep=[false,true]}]
+  段階的な行送り調整を無効化(\texttt{false}),または有効化(\texttt{true}).
 \end{description}
-キーともキー名のみを指定した場合は値として\texttt{true}が指定されたものと扱われる.
+どのキーともキー名のみを指定した場合は値として\texttt{true}が指定されたものと扱われる.
 
 互換性の為,オプション無しでただ\cs{ltjenableadjust}が呼び出された場合は,
 \begin{lstlisting}
@@ -6775,13 +6994,13 @@ for making the difference obvious.
 \item[\cs{ltjdisableadjust}]
 \Pkg{luatexja-adjust}パッケージの機能を無効化する.
 \begin{lstlisting}
-\ltjenableadjust[lineend=false,priority=false]
+\ltjenableadjust[lineend=false,priority=false,profile=false,linestep=false]
 \end{lstlisting}
 と同義.
 \end{cslist}
 
-また,優先順位付きの行長調整のために,次の2パラメータが\cs{ltjsetparameter}内で
-追加される.両パラメータともグローバルに効力を発揮する.
+また,優先順位付きの行長調整のために,次の3パラメータが\cs{ltjsetparameter}内で
+追加される.いずれもグローバルに効力を発揮する.
 \begin{cslist}[style=standard]
 \item[\DParam{stretch\_priority}\,=\{<list>\}]
 \Param{kanjiskip}, \Param{xkanjiskip},および「\textbf{JAglue}以外のグルー」を,
@@ -6800,8 +7019,14 @@ stretch_priority={kanjiskip=-35,xkanjiskip=-25,others=50}
 \item[\DParam{shrink\_priority}\,=\{<list>\}]
 同様に,「行を自然長より縮める」場合の調整に用いる優先度を指定する.
 それ以外は\Param{stretch\_priority}と指定の形式は変わらない.
+
+ \item[\DParam{linestep\_factor}\,=<float>]
+  段階的な行送り調整の際,\cs{baselineskip}の何倍単位で行送りを変えるかを指定する.
+  0を指定すると無効になるのと変わらない.また負数を指定すると,
+  その絶対値が指定されたかのように扱われる.
+  初期値は0.5(つまり半行単位)である.
 \end{cslist}
-初期値は\Param{stretch\_priority}, \Param{shrink\_priority}と
+\Param{stretch\_priority}, \Param{shrink\_priority}の初期値はどちら
 \begin{lstlisting}
 {kanjiskip=-35,xkanjiskip=-25,others=50}
 \end{lstlisting}