X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=doc%2Fluatexja.dtx;h=7c27d29b6805a2ea72c549414d757a5c678cd3a9;hb=55a3d0259d58f0ced648662986e92fc94c08f1f4;hp=829e5b2c73b8f908c80590ac01a32fafc424134e;hpb=db6d2535ae6275cb9192ec7f2675879e25624e79;p=luatex-ja%2Fluatexja.git diff --git a/doc/luatexja.dtx b/doc/luatexja.dtx index 829e5b2..7c27d29 100644 --- a/doc/luatexja.dtx +++ b/doc/luatexja.dtx @@ -72,7 +72,12 @@ \usepackage{luatexja-adjust}%\ltjdisableadjust \advance\leftmargini-1\zw\advance\leftmarginii-1\zw % - +%\long\def\fakefn#1#2{\par\noindent{\footnotesize\hbox to1.8em{\hss#1}#2\par}} +%<*ja> +\long\def\fakefn#1#2{% + \par{\footnotesize\advance\leftskip 3\zw\parindent1\zw\noindent + \llap{#1\hskip.3\zw}#2\par}} +% %%%%%%%% listings %%%%%%%% IVS @@ -202,10 +207,12 @@ 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,18 +640,18 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. %The following packages are needed for the \LuaTeX-ja\ package. %\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) \item \Pkg{ltxcmds}, \Pkg{pdftexcmds}, \Pkg{filehook}, \Pkg{atbegshi} -\item \Pkg{fontspec} v2.4 (or later) +\item \Pkg{fontspec} v2.5c (or later) %\item \emph{IPAex fonts} (\url{http://ipafont.ipa.go.jp/}) %\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})} \end{itemize} -%In summary, \LuaTeX-ja version 20160404.0 (or~later) no longer supports \TeX~Live~2015. +%In summary, \LuaTeX-ja version 20180825.0 (or~later) no longer supports \TeX~Live~2016. %<*ja> -要約すると,バージョン20160404.0以降の\LuaTeX-jaは\TeX~Live~2015以前では動作しない\footnote{% +要約すると,バージョン20180825.0以降の\LuaTeX-jaは\TeX~Live~2016以前では動作しない\footnote{% もっとも,自分で\LuaTeX のバイナリをSubversionリポジトリからビルドしていれば話は別である. }. % @@ -672,21 +679,6 @@ IPAex fonts are also available in these distributions. W32\TeX においてはIPAexフォントは \texttt{luatexja.tar.xz} 内にある. % -% %<*ja> -% 例えば\TeX~Live~2015を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を -% 使ってインストールすることができる. -% \begin{lstlisting} -% $ tlmgr install luatexja -% \end{lstlisting} -% % -% %<*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} -% % - %\paragraph{Manual installation} %\paragraph{手動インストール方法} @@ -1019,9 +1011,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}. % %<*ja> \item \pLaTeX と同様に,標準では「明朝体」「ゴシック体」の2種類を用いる: @@ -1047,6 +1039,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}の両方を扱えるようにした. % %\item Japanese characters in math mode are typeset by the font family \texttt{mc}. @@ -1422,16 +1419,21 @@ TrueType・OpenTypeフォントを容易に扱うためのパッケージであ % %<*en> -In the \Pkg{luatexja-fontspec} package, the following seven~commands are defined as -counterparts of original commands in the \Pkg{fontspec} package: +In the \Pkg{luatexja-fontspec} package, several commands are defined as +counterparts of original commands in the \Pkg{fontspec} package +(see \autoref{tab:ltj_fntspc}): % %<*ja> -\Pkg{luatexja-fontspec}パッケージでは,以下の7つのコマンドを\Pkg{fontspec} -パッケージの元のコマンドに対応するものとして定義している: +\Pkg{luatexja-fontspec}パッケージでは,\autoref{tab:ltj_fntspc}の +「和文」行に示した命令を\Pkg{fontspec}パッケージの元のコマンド(「欧文」行) +に対応するものとして定義している: % %<*en> -\begin{center}\small -\begin{tabular}{ccccc} +\begin{table} +\caption{Commands of \Pkg{luatexja-fontspec}}\label{tab:ltj_fntspc} +\medskip +{\centering\small +\begin{tabular}{cllll} \toprule Japanese fonts &\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}$^*$\\ @@ -1439,18 +1441,33 @@ alphabetic fonts &\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\ \midrule Japanese fonts -&\cs{newjfontfamily}&\cs{newjfontface} -&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\ +&\cs{newjfontfamily}&\cs{renewjfontfamily}$^{**}$&\cs{setjfontfamily}$^{**}$\\ +alphabetic fonts +&\cs{newfontfamily}&\cs{renewfontfamily}$^{**}$&\cs{setfontfamily}$^{**}$\\ +\midrule +Japanese fonts +&\cs{newjfontface}&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\ alphabetic fonts -&\cs{newfontfamily}&\cs{newfontface} -&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\ +&\cs{newfontface}&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\ \bottomrule -\end{tabular} -\end{center} +\end{tabular}\par} +\medskip +\fakefn{$^*$}{% + \cs{setmonojfont} is defined if and only if \texttt{match} option is specified.} +\fakefn{$^{**}$}{% + \cs{renewfontfamily}~and~\cs{setfontfamily} are new commands + in \Pkg{fontspec}~v2.6h (2018/7/30). + Hence, \Pkg{luatexja-fontspec} define \cs{renewjfontfamily}~and~\cs{setjfontfamily} + only when \Pkg{fontspec}~v2.6h (or later) is used. +} +\end{table} % %<*ja> -\begin{center}\small -\begin{tabular}{ccccc} +\begin{table} +\caption{\Pkg{luatexja-fontspec}で定義される命令}\label{tab:ltj_fntspc} +\medskip +{\centering\small +\begin{tabular}{cllll} \toprule 和文 &\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}$^*$\\ @@ -1458,14 +1475,28 @@ alphabetic fonts &\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\ \midrule 和文 -&\cs{newjfontfamily}&\cs{newjfontface} -&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\ +&\cs{newjfontfamily}&\cs{renewjfontfamily}$^{**}$&\cs{setjfontfamily}$^{**}$\\ 欧文 -&\cs{newfontfamily}&\cs{newfontface} -&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\ +&\cs{newfontfamily}&\cs{renewfontfamily}$^{**}$&\cs{setfontfamily}$^{**}$\\ +\midrule +和文 +&\cs{newjfontface}&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\ +欧文 +&\cs{newfontface}&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\ \bottomrule -\end{tabular} -\end{center} +\end{tabular}\par} + +\medskip +\fakefn{$^*$}{\cs{setmonojfont} は \texttt{match} オプションが +指定された時のみ定義される.} +\fakefn{$^{**}$}{% + \cs{renewfontfamily} と \cs{setfontfamily} は + \Pkg{fontspec}~v2.6h (2018/7/30)で新たに追加された命令である. + そのため,\Pkg{luatexja-fontspec}が \cs{renewjfontfamily} と \cs{setjfontfamily} を + 定義するのはv2.6h以降の\Pkg{fontspec}を使用した時のみになっている. +} + +\end{table} % % The package option of \Pkg{luatexja-fontspec} are the followings: @@ -2555,23 +2586,23 @@ for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.} % %<*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} 言い換えると, @@ -2582,10 +2613,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 における初期設定と同じになるようにしている.} % \begin{table} @@ -3584,6 +3615,28 @@ JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\ 3キーは再び有効化される.\texttt{-ltjksp}, \texttt{+ltjksp} を複数回指定した場合は, 最後に指定したものが有効となる. % +%<*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} +% + + %\subsection{\cs{tfont}} @@ -4313,6 +4366,9 @@ JFMによって本来挿入されるグルーの他に 自然長・縮み量半角,伸び量0のグルー となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け た分だけ伸びることが許される. + \item 一方,開き括弧類と通常の文字の間,また通常の文字と閉じ括弧類の間は + 自然長・縮み量・伸び量0のグルーだが,\Param{kanjiskip}の縮み量に + \texttt{kanjiskip\_shrink}(ここでは1)を掛けた分だけ縮むことが許される. \end{itemize} となっている.従って,以下のような組版結果を得る. @@ -4321,6 +4377,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} @@ -4355,6 +4415,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: @@ -4363,11 +4427,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} % - + \item[end\_stretch=, end\_shrink=] %<*ja> (任意,バージョン1のみ) @@ -4382,7 +4450,7 @@ Hence we have the following result: \item[end\_adjust=\{, , ...\}] %<*ja> -(任意,バージョン2のみ) +(任意,バージョン2以降) 優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が 行末に来た時に,この文字と行末の間には指定された値のいずれかの大きさのカーンが @@ -4392,14 +4460,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$かいずれかのカーンが常に行末に追加される. % %<*en> -(optional, version~2 only) +(optional, version~2 or~later) % \end{cslist} @@ -4544,7 +4612,7 @@ The following is the list of imaginary characters: \item['glue'] %(version 3~or~later) A boundary between \textbf{JAchar}, and, a glue or kern. -%(バージョン3以降))\textbf{JAchar}とglue,kernとの境界. +%(バージョン3以降)\textbf{JAchar}とglue,kernとの境界. \item[$-1$] %The left/right boundary of an inline math formula. @@ -6133,11 +6201,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) に変わっていることがわかる. % \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} @@ -6334,7 +6402,7 @@ for example, the meaning of \cs{TU\cs{textquotedblleft}} is \cs{ltjalchar8220\lt \begin{table}[t] \centering\small - \caption{strut}\label{tab:strutbox} + \caption{strut}\label{tab:strutbox}\medskip \begin{tabular}{llcccl} \toprule \textbf{box}&\textbf{direction}&\textbf{width}&\textbf{height}&\textbf{depth} @@ -6751,11 +6819,11 @@ with priority&% \\ \bottomrule \end{tabular}\par} -\smallskip +\medskip -Note: the value of +\fakefn{}{The value of \Param{kanjiskip} is 0\,pt${}^{+1/5\,\mathrm{em}}_{-1/5\,\mathrm{em}}$ in this figure, -for making the difference obvious. +for making the difference obvious.} %\caption{行長調整}\label{fig:adj} %\caption{Line adjustment}\label{fig:adj} \end{figure} @@ -6767,12 +6835,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 % ぶら下げの場合 @@ -6782,48 +6850,184 @@ 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とした状況である. + + なお,この機能は表組時(\cs{halign},~\cs{valign})には無効である. + \LaTeX における表組環境(tabular, arrayなど)では,\cs{baselineskip},~\cs{lineskip}はどちらも0に設定されているので + (代わりに各行に\cs{@arstrut}という支柱が入る)ために意味がないことと, + 数式を内部で表組を使って組むalign環境などではかえって行間が不揃いになってしまうからである. \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} @@ -6834,13 +7038,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}\,=\{\}] \Param{kanjiskip}, \Param{xkanjiskip},および「\textbf{JAglue}以外のグルー」を, @@ -6859,8 +7063,14 @@ stretch_priority={kanjiskip=-35,xkanjiskip=-25,others=50} \item[\DParam{shrink\_priority}\,=\{\}] 同様に,「行を自然長より縮める」場合の調整に用いる優先度を指定する. それ以外は\Param{stretch\_priority}と指定の形式は変わらない. + + \item[\DParam{linestep\_factor}\,=] + 段階的な行送り調整の際,\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} @@ -7365,12 +7575,12 @@ since we use same font for both series of gothic. いため, 「ゴシック体の中字」も同時に変更されることになる. % -\item[90jis] -%Use 90JIS glyph variants if possible. -%出来る限り90JISの字形を使う. -\item[jis2004] -%Use JIS2004 glyph variants if possible. -%出来る限りJIS2004の字形を使う. +\item[jis90\textrm{,~}90jis] +%Use JIS~X~0208:1990 glyph variants if possible. +%出来る限りJIS~X~0208:1990の字形を使う. +\item[jis2004\textrm{,~}2004jis] +%Use JIS~X~0213:2004 glyph variants if possible. +%出来る限りJIS~X~0213:2004の字形を使う. \item[jfm\_yoko=] %<*en> Use the JFM \texttt{jfm-.lua} for horizontal direction, instead of \texttt{jfm-ujis.lua}~(default JFM). @@ -7394,14 +7604,14 @@ Use the JFM \texttt{jfm-.lua} for vertical direction, instead of \texttt{jf \end{cslist} %<*en> -Note that \texttt{90jis} and \texttt{jis2004} only affect with mincho, +Note that \texttt{jis90},~\texttt{90jis}, \texttt{jis2004}~and~\texttt{2004jis} only affect with mincho, gothic (and, possibly rounded gothic) families defined by this package. -We didn't taken account of when both \texttt{90jis} and \texttt{jis2004} are specified. +We didn't taken account of when more than one options among them are specified. % %<*ja> -\texttt{90jis}と\texttt{jis2004}については本パッケージで定義された +\texttt{jis90},~\texttt{90jis}, \texttt{jis2004},~\texttt{2004jis}については本パッケージで定義された 明朝体・ゴシック体(・丸ゴシック体)にのみ有効である. -両オプションが同時に指定された場合の動作については全く考慮していない. +これら4オプションのうち複数が同時に指定された場合の動作については全く考慮していない. % %\subsubsection{Presets which support multi weights} @@ -7774,17 +7984,17 @@ Note that HG~Mincho~E, HG~Gothic~E, HG Soei Kaku Gothic UB, and HG Maru Gothic P are internally specified by: \begin{description} \item[default] by font name (\texttt{HGMinchoE}, etc.). -\item[{\tt 90jis}] by file name (\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}). -\item[{\tt jis2004}] by file name (\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}). +\item[\texttt{jis90}, \texttt{90jis}] by file name (\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}). +\item[\texttt{jis2004}, \texttt{2004jis}] by file name (\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}). \end{description} % %<*ja> なお,HG明朝E・HGゴシックE・HG創英角ゴシックUB・HG丸ゴシック体PROの4つについては,内部で \begin{description} \item[標準] フォント名(\texttt{HGMinchoE} など) -\item[{\tt 90jis}指定時] ファイル名 (% +\item[\texttt{jis90}, \texttt{90jis}指定時] ファイル名 (% \texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}) -\item[{\tt jis2004}指定時] ファイル名 (% +\item[\texttt{jis2004}, \texttt{2004jis}指定時] ファイル名 (% \texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}) \end{description} として指定を行っているので注意すること. @@ -7794,11 +8004,11 @@ are internally specified by: %\subsubsection{新たなプリセットの定義} %<*ja> -バージョン********.0以降では,自分で新たなプリセットを定義することが出来るようになった. +バージョン20170904.0以降では,自分で新たなプリセットを定義することが出来るようになった. 以下に説明する2命令はプリアンブルでしか実行できない. % %<*en> -From version~********.0, one can define new presets using \cs{ltjnewpreset}, +From version~20170904.0, one can define new presets using \cs{ltjnewpreset}, and use them by \cs{ltjapplypreset}. These two commands can only be used in the preamble. % \begin{cslist}