OSDN Git Service

regenerated pdf
[luatex-ja/luatexja.git] / doc / luatexja.dtx
index fd1a763..465ef20 100644 (file)
 \usepackage{luatexja-adjust}%\ltjdisableadjust
 \advance\leftmargini-1\zw\advance\leftmarginii-1\zw
 %</ja>
-
+%<en>\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}}
+%</ja>
 %%%%%%%% listings
 
 %%%%%%%% IVS
   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}
@@ -638,7 +645,7 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}.
 \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)
 %<en>\item \emph{IPAex fonts} (\url{http://ipafont.ipa.go.jp/})
 %<ja>\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})}
 \end{itemize}
@@ -1019,9 +1026,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種類を用いる:
@@ -1047,6 +1054,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}.
@@ -1422,16 +1434,21 @@ TrueType・OpenTypeフォントを容易に扱うためのパッケージであ
 %</ja>
 
 %<*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}):
 %</en>
 %<*ja>
-\Pkg{luatexja-fontspec}パッケージでは,以下の7つのコマンドを\Pkg{fontspec}
-パッケージの元のコマンドに対応するものとして定義している:
+\Pkg{luatexja-fontspec}パッケージでは,\autoref{tab:ltj_fntspc}の
+「和文」行に示した命令を\Pkg{fontspec}パッケージの元のコマンド(「欧文」行)
+に対応するものとして定義している:
 %</ja>
 %<*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 +1456,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}
 %</en>
 %<*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 +1490,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{renewfontfamily}$^{**}$&\cs{setfontfamily}$^{**}$\\
+\midrule
+和文
+&\cs{newjfontface}&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\
 欧文
-&\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} は \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}
 %</ja>
 
 %<en> The package option of \Pkg{luatexja-fontspec} are the followings:
@@ -2555,23 +2601,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}
 言い換えると,
@@ -2582,10 +2628,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}
@@ -3584,6 +3630,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}}
@@ -4313,6 +4381,9 @@ JFMによって本来挿入されるグルーの他に
 自然長・縮み量半角,伸び量0のグルー
 となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け
        た分だけ伸びることが許される.
+ \item 一方,開き括弧類と通常の文字の間,また通常の文字と閉じ括弧類の間は
+  自然長・縮み量・伸び量0のグルーだが,\Param{kanjiskip}の縮み量に
+  \texttt{kanjiskip\_shrink}(ここでは1)を掛けた分だけ縮むことが許される.
 \end{itemize}
 となっている.従って,以下のような組版結果を得る.
 
@@ -4321,6 +4392,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 +4430,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 +4442,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のみ)
@@ -4382,7 +4465,7 @@ Hence we have the following result:
 
   \item[end\_adjust=\{<kern>, <kern>, ...\}]
 %<*ja>
-(任意,バージョン2のみ
+(任意,バージョン2以降
 
 優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が
   行末に来た時に,この文字と行末の間には指定された値のいずれかの大きさのカーンが
@@ -4392,14 +4475,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}
@@ -4544,7 +4627,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.
@@ -5457,6 +5540,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} もしくは
@@ -5465,7 +5598,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{%
@@ -6083,11 +6216,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}
@@ -6284,7 +6417,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}
@@ -6701,11 +6834,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.}
 %<ja>\caption{行長調整}\label{fig:adj}
 %<en>\caption{Line adjustment}\label{fig:adj}
 \end{figure}