%%%%% section ==> 章
%%%%% subsection => 節
+\IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{}
%<en>\documentclass[a4paper,titlepage]{article}
%<ja>\documentclass[a4paper,titlepage]{ltjsarticle}
%<*en>
\paragraph{Greek and Cyrillic letters, and ISO~8859-1 symbols}
By default, \LuaTeX-ja uses Japanese fonts to typeset Greek and Cyrillic letters,
- To change this behavior,
+ To change this behavior,
put \verb!\ltjsetparameter{jacharrange={-2,-3}}! in the preamble.
For the detailed description, see Subsection~\ref{ssec-setrange}.
If so, please execute a batch file which is written on
\href{https://osdn.jp/projects/luatex-ja/wiki/FrontPage%28en%29}{ the Project Wiki (English)}.
This batch file creates a temporary directory, copy CMaps in it,
-run a test file which loads \LuaTeX-ja in this directory,
+run a test file which loads \LuaTeX-ja in this directory,
and finally delete the temporary directory.
%</en>
%<*ja>
The latter \texttt{ltjt*.cls} are for vertically writtened Japanese documents.
} and \Pkg{ltjsclasses}\footnote{%
\texttt{ltjsarticle.cls},~\texttt{ltjsbook.cls},~\texttt{ltjskiyou.cls}.}.
+
+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=real} in the \Pkg{BXjscls} classes (by Takayuki Yato).}
+to set the main document font size.
%</en>
%<*ja>
しかしながら,上記の設定は日本語の文書にとって十分とは言えない.
\Pkg{ltjsclasses}\footnote{%
\texttt{ltjsarticle.cls},~\texttt{ltjsbook.cls},~\texttt{ltjskiyou.cls}.}%
がそれぞれ用意されている.
+
+元々の\Pkg{ltjsclasses}ではフォントサイズを指定するのに\cs{mag}プリミティブが使われていたが,
+\LuaTeX~beta-0.87.0以降ではPDF出力時の\cs{mag}のサポートが廃止された.
+そのため,\Pkg{ltjsclasses}では別の方法
+\footnote{八登崇之氏による\Pkg{BXjscls}クラスにおける\texttt{magstyle=real}指定時と類似している.}で
+フォントサイズを指定することにしている.
%</ja>
%<*ja>
%<*en>
\item For defining a Japanese font family, use
\cs{DeclareKanjiFamily} instead of
- \cs{DeclareFontFamily}. (In previous version of \LuaTeX-ja,
+ \cs{DeclareFontFamily}. (In previous version of \LuaTeX-ja,
using \cs{DeclareFontFamily} didn't cause any problem. But this no longer applies
the current version.)
\item Defining a Japanese font shape can be done by usual \cs{DeclareFontShape}:
%<ja>\subsection{\Pkg{luatexja-fontspec}パッケージ}
\label{ssec-fontspec}
%<*en>
-To use the functionality of the \Pkg{fontspec} package to Japanese fonts,
+To use the functionality of the \Pkg{fontspec} package to Japanese fonts,
it is needed to load the \Pkg{luatexja-fontspec} package in the preamble, as follows:
\begin{quote}
\ttfamily \textbackslash usepackage[<options>]\{luatexja-fontspec\}
%<*en>
One can load the \Pkg{luatexja-preset}
-package to use several ``presets'' of Japanese fonts.
+package to use several ``presets'' of Japanese fonts.
This package provides functions in a part of
\Pkg{japanese-otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato.
This option is ignored when \Pkg{luatexja-fontspec} package is loaded.
When this option is specified, \Pkg{fontspec}~and~\Pkg{luatexja-fontspec} are
-\emph{not} loaded by default. Nevertheless,
+\emph{not} loaded by default. Nevertheless,
the package\Pkg{fontspec} can coexist with the option, as the following:
\begin{lstlisting}
\usepackage{fontspec}
このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\
\cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} 等が
欧文フォントだけでなく和文フォントも変更するようになる.
-\ \texttt{fontspec}\
+\ \texttt{fontspec}\
オプションが有効になっている場合は,このオプションは \Pkg{luatexja-fontspec} パッケージへと渡される.
%</ja>
\item[bold]
%<*en>
Substitute bold series of \textit{gothic} for bold series of \textit{mincho}.
-If \texttt{nodeluxe} option is enabled, medium series of \textit{gothic} is also changed,
+If \texttt{nodeluxe} option is enabled, medium series of \textit{gothic} is also changed,
since we use same font for both series of \textit{gothic}.
%</en>
%<*ja>
\item \texttt{U+0180}--\texttt{U+024F}: Latin Extended-B
\item \texttt{U+0250}--\texttt{U+02AF}: IPA Extensions
\item \texttt{U+02B0}--\texttt{U+02FF}: Spacing Modifier Letters
-%<en>\par\
+%<en>\par\
\item \texttt{U+0300}--\texttt{U+036F}: \\*\null\hfill Combining Diacritical Marks
\item \texttt{U+1E00}--\texttt{U+1EFF}: \\*\null\hfill Latin Extended Additional
%<ja>\par\
%<*en>
\paragraph{Notes on \texttt{U+0080}--\texttt{U+00FF}}
-You should treat characters in \\texttt{U+0080}--\texttt{U+00FF} as \textbf{ALchar},
+You should treat characters in \\texttt{U+0080}--\texttt{U+00FF} as \textbf{ALchar},
when you use traditional 8-bit fonts, such as the \Pkg{textcomp} package or the
\Pkg{marvosym} package.
Similarly, \cs{Frowny} which is provided by the \Pkg{marvosym} package has
the same codepoint as \S\ (\text{U+00A7}).
Hence, as previous versions of \LuaTeX-ja, if these characters are treated as
-\text{JAchar}s, then \cs{textparagraph} produces ``ltjjachar`¶'' (in a Japanese font),
+\text{JAchar}s, then \cs{textparagraph} produces ``ltjjachar`¶'' (in a Japanese font),
and \cs{Frowny} produces ``\ltjjachar`§'' (in a Japanese font).
To avoid such situations, the default setting of \LuaTeX-ja is changed in this release
sets\cs{catcode} of several characters to 11, via setting \cs{XeTeXcharclass}.
However, this latter half does not exist (plain case), or not executed (\LaTeX~case) in \LuaTeX.
\end{itemize}
-In other words,
+In other words,
\begin{description}
\item[plain \LuaTeX]
Kanji nor kana characters cannot be used in
\paragraph{\texttt{ltjksp} 指定}
\label{pg:ltjksp}
\LuaTeX-ja標準では,
-JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
+JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の使用によって,
「JFM由来のグルーの他に,\Param{kanjiskip}の自然長/伸び量/縮み量の一部が
同じ場所に挿入される」という状況が起こりうる.
\hbox{\tate\Large\vrule
\parbox{7\zw}{%
\addjfontfeatures{TateFeatures={Opacity=0.5, Color=#2, JFM=#1}}\noindent
- ◆◆◆◆◆◆◆\
- ã\81\82ã\82\8bæ\97¥ã\83¢ã\83¢ã\81¡ã\82\83ã\82\93ã\81\8cã\81\8a使ã\81\84で迷子になって泣きました。
+ ◆◆◆◆◆◆◆
+ ã\81\82ã\82\8bæ\97¥ã\83¢ã\83¢ã\81¡ã\82\83ã\82\93ã\81\8cã\80\8cã\81\8a使ã\81\84ã\80\8dで迷子になって泣きました。
}\vrule}}
\def\s#1#2{%
\hbox{\tate\Large
kanjiskip\_stretch=<num>\textrm{, }kanjiskip\_shrink=<num>]\leavevmode
These keys specifies the amount of the natural width of \Param{kanjiskip}
-(the stretch/shrink part, respectively) which will be inserted
+(the stretch/shrink part, respectively) which will be inserted
in addition to the original JFM glue. Default values of them are all 0.
As an example, in \texttt{jfm-ujis.lua}, the standard JFM in horizontal writing, we have
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 closeing brackets (the ideographic comma ``,''
- is included) and an ordinal letter, we have the same glue.
+ is included) and an ordinal letter, we have the same glue.
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).
%</ja>
\begin{itemize}
%<*en>
-\item ``\ast'' : values at the end of a paragraph or a hbox are
+\item ``$\ast$'' : values at the end of a paragraph or a hbox are
adopted in the whole paragraph or the whole hbox.
%</en>
%<*ja>
-\item ``\ast'':段落やhboxの終端での値がその段落/hbox全体で用いられる.
+\item ``$\ast$'':段落やhboxの終端での値がその段落/hbox全体で用いられる.
%</ja>
%<*en>
\item ``\dagger'': assignments are always global.
+ d_{\text{あ}} - d_{\text{M}},
\]
where $h_{a}$~and~$d_{a}$ denote the height of ``$a$'' and the depth, respectively.
-In \LuaTeX-ja, this \cs{adjustbaseline} does same task, namely setting the
+In \LuaTeX-ja, this \cs{adjustbaseline} does similar task, namely setting the
\Param{talbaselineshift} parameter.
+If the \LaTeX\ is 2015/10/01 release or later, \LuaTeX-ja use a Japanese
+character whose character class is zero, instead of `あ'.
%</en>
%<*ja>
\pLaTeXe では,\cs{adjustbaseline} は縦組時に「M」と「あ」の中心線を一致させるために,
\LuaTeX-jaにおいても\cs{adjustbaseline} は同様に\Param{talbaselineshift}パラメータの調整処
理を行っている.
-同時に,これも\pLaTeXe の \cs{adjustbaseline} で行われていたが,
-「漢」の寸法を元に,(本節の最初に述べた,小文字で始まる)\cs{cht}, \cs{cwd} といった長さ変数を設定する.
+同時に,これも\pLaTeXe の \cs{adjustbaseline} で同様の処理が行われていたが,
+「漢」の寸法を元に(本節の最初に述べた,小文字で始まる)\cs{cht}, \cs{cwd}
+といった長さ変数を設定する.
+
+なお,\LaTeX が2015/10/01 版以降の場合は,「あ」「漢」の代わりに
+「文字クラス0の和文文字」を用いる.
%</ja>
\item[\cs{fontfamily}\{<family>\}]
\item If the \Pkg{luatexja-fontspec} package is loaded, we stop here, and <family> is not
recognized as a Japanese font family.
- If the \Pkg{luatexja-fontspec} package is \emph{not} loaded,
+ If the \Pkg{luatexja-fontspec} package is \emph{not} loaded,
now \LuaTeX-ja looks whether there exists a Japanese font encoding~<enc> such that
a font definition named \texttt{<enc><family>.fd} (the file name is
- all lowercase) exists. If so, <family> is recognized as a Japanese font family (the font definition file won't be loaded here).
- If not, <family> is not a Japanese font family, and
+ all lowercase) exists. If so, <family> is recognized as a Japanese font family (the font definition file won't be loaded here).
+ If not, <family> is not a Japanese font family, and
<family> is appended to the list~$N_{\mathrm{J}}$.
%</en>
%<*ja>
%<*en>
\paragraph{Recognition as alphabetic font family}
Next, whether alphabetic font family will be changed is determined in following order.
-We use auxiliary lists $F_{\mathrm{A}}$~and~$N_{\mathrm{A}}$,
+We use auxiliary lists $F_{\mathrm{A}}$~and~$N_{\mathrm{A}}$,
%</en>
%<*ja>
\paragraph{欧文フォントファミリとしての認識}
\begin{enumerate}
%<*en>
-\item If the family~<family> has been listed in a list~$F_{\mathrm{A}}$,
+\item If the family~<family> has been listed in a list~$F_{\mathrm{A}}$,
<family> is recognized as an alphabetic font family.
%</en>
%<*ja>
\item Now \LuaTeX-ja looks whether there exists an alphabetic font encoding~<enc> such that
a font definition named \texttt{<enc><family>.fd} (the file name is
all lowercase) exists. If so, current alphabetic font family will be changed to
- <family>~(the font definition file won't be loaded here).
+ <family>~(the font definition file won't be loaded here).
If not, current alphabetic font family won't be changed, and
<family> is appended to the list~$N_{\mathrm{A}}$.
%</en>
%<*en>
The above order is very similar to \cs{fontfamily} in \pLaTeXe, but more complicated (clause~3.).
-This is because \pLaTeXe\ is a \emph{format} however \LuaTeX-ja is not,
+This is because \pLaTeXe\ is a \emph{format} however \LuaTeX-ja is not,
hence \LuaTeX-ja does not know calls of \cs{DeclareFontFamily} \emph{before} itself is
loaded.
%</en>
%<*ja>
\pageref{pg:ltjksp}ページで説明した \verb+\jfont+ 中での \texttt{ltjksp} 指定と
同一の効力を持ち,
-JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
+JFM中における \texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
\texttt{kanjiskip\_shrink}キー(\pageref{pg:ksp_nat}ページ)の有効/無効を切り替える.
標準値は \texttt{true} である.
%</ja>
Recent fonts support Ideographic Variation Selector (IVS).
It seems that \Pkg{luaotfload} and \Pkg{fontspec} packages do not support
IVS, so we implemented IVS support in \Pkg{luatexja-otf}.
-\emph{IVS support is experimental; if you want to enable this, load
+\emph{IVS support by the \Pkg{luatexja-otf} package is experimental.
+If you want to enable IVS support, load
\Pkg{luatexja-otf} and execute the following:}
%</en>
%<*ja>
\medskip
-\emph{IVS対応は試験的なものである.
-有効にするには,\Pkg{luatexja-otf}パッケージを読み込んだ上で以下の命令を実行する%
+\emph{\Pkg{luatexja-otf}によるIVS対応は試験的なものである.
+有効にするには,
+\Pkg{luatexja-otf}パッケージを読み込んだ上で以下の命令を実行する%
\footnote{この命令を2回以上実行しても意味がない.}:}
%</ja>
\begin{lstlisting}
\end{description}
%<ja> \TeX 側から見える値,つまり \verb+\the\ltj@dir+ の値は常に0である.
+\cnt{ltjlineendcomment}
+%<*ja>
+ \LuaTeX-jaは\textbf{JAchar}で入力行が終了した場合,その直後にコメント文字を
+ おくことで余計な空白が挿入されることを防いでいる.
+ \cs{ltjlineendcomment}はその際のコメント文字のUnicodeにおける符号位置を指定する
+ (詳細は\ref{ssec:lineend}節を参照).
+
+ \LuaTeX-jaにおける既定値は$\texttt{"FFFFF}=1048575$であり,
+ ユーザは内部動作を熟知していない限りこのカウンタの値を変更してはならない.
+ \cs{ltjlineendcomment}の値がUnicodeの範囲外(負や,$\texttt{"10FFFF}=1114111$を超えた場合)
+ にくることは想定されていない.
+%</ja>
\end{list}
%<*en>
%<en>\subsection{Behavior in \LuaTeX-ja}
%<ja>\subsection{\LuaTeX-jaの動作}
+ \label{ssec:lineend}
%<*en>
States in the input processor of \LuaTeX\ is the same as that of \TeX,
and they can't be customized by any callbacks. Hence, we can only use
Considering these situations, handling of an end-of-line in \LuaTeX-ja are as follows:
\begin{quote}
-A character \texttt{U+FFFFF} (its category code is set to 14~(\textit{comment}) by
-\LuaTeX-ja) is appended to an input line, \emph{before \LuaTeX\ actually
+A character whose character code is \cs{ltjlineendcomment}%
+\footnote{Its default value is \texttt{"FFFFF}, so \texttt{U+FFFFF} is used.
+The category code of \texttt{U+FFFFF} is set to 14~(\textit{comment}) by
+\LuaTeX-ja.} is appended to an input line, \emph{before \LuaTeX\ actually
process it}, if and only if the following three conditions are satisfied:
\begin{enumerate}
\item The category code of \cs{endlinechar}%
\footnote{Usually, it is $\langle$\textit{return}$\rangle$
(whose character code is 13).} is 5~(\textit{end-of-line}).
-\item The category code of \texttt{U+FFFFF} itself is 14~(\textit{comment}).
+\item The category code of \cs{ltjlineendcomment} itself is 14~(\textit{comment}).
\item The input line matches the following ``regular expression'':
\[
(\text{any char})^*(\textbf{JAchar})
\item When line~3 is processed by \texttt{process\_input\_buffer} callback,
``あ'' is considered as an \textbf{JAchar}.
Since line~3 ends with an \textbf{JAchar},
-the comment character \texttt{U+FFFFF} is appended to this line,
+the comment character (whose character code is \cs{ltjlineendcomment}) is appended to this line,
and hence the linebreak immediately after this line is ignored.
\item When line~4 is processed by \texttt{process\_input\_buffer} callback,
``い'' is considered as an \textbf{ALchar}.
\begin{quote}
各入力行に対し,\emph{その入力行が読まれる前の内部状態で}
-以下の3条件が満たされている場合,\LuaTeX-jaは\texttt{U+FFFFF}の文字
-\footnote{この文字はコメント文字として扱われるように\LuaTeX-ja内部で設定をしている.}
+以下の3条件が満たされている場合,\LuaTeX-jaは\cs{ltjlineendcomment}番の文字
+\footnote{\cs{ltjlineendcomment}の既定値は\texttt{"FFFFF}であるので,
+ 既定では\texttt{U+FFFFF}が使われることになる.この文字はコメント文字として扱われるように
+ \LuaTeX-ja内部で設定をしている.}%
を末尾に追加する.よって,その場合に改行は空白とは見做されないこととなる.
\begin{enumerate}
\item \cs{endlinechar}の文字\footnote{普通は,改行文字(文字コード13番)である.}
のカテゴリーコードが5~(\textit{end-of-line})である.
-\item \texttt{U+FFFFF}のカテゴリーコードが14~(\textit{comment})である.
+\item \cs{ltjlineendcomment}のカテゴリーコードが14~(\textit{comment})である.
\item 入力行は次の「正規表現」にマッチしている:
\[
(\text{any char})^*(\textbf{JAchar})
\begin{itemize}
\item 3行目を \texttt{process\_input\_buffer} で処理する時点では,
「あ」は\textbf{JAchar}(和文扱い)である.よって3行目は\textbf{JAchar}で終わることになり,
- コメント文字 \texttt{U+FFFFF} が追加される.
+ \cs{ltjlineendcomment}番のコメント文字が追加される.
よって,直後の改行文字は無視されることになり,空白は入らない.
\item 4行目を \texttt{process\_input\_buffer} で処理する時点では,
「い」は\textbf{ALchar}である.よって4行目は\textbf{ALchar}で終わることになり,
%<*en>
In \LuaTeX-ja, the problem is resolved by using the \verb+process_input_buffer+ callback.
-The callback function inserts the output command (active character \texttt{U+FFFFF})
+The callback function inserts the output command (active character \cs{ltjlineendcomment})
before each letter above \texttt{U+0080}.
This method can omits the process to make all Japanese characters active
(most of the activated characters are not used in many cases).
%<*ja>
\LuaTeX-jaでは,\verb+process_input_buffer+ コールバックを利用することで,
「各行に出現する\texttt{U+0080}以降の文字に対して,それらの出力命令を前置する」
-という方法をとっている.出力命令としては,アクティブ文字化した \texttt{U+FFFFF} を用いている.
+という方法をとっている.出力命令としては,アクティブ文字化した\cs{ltjlineendcomment}を用いている.
これにより,(入力には使用されていないかもしれない)和文文字をもすべてアクティブ化する手間もなく,
見通しが良い実装になっている.
%</ja>