%%%%% section ==> 章
%%%%% subsection => 節
+\IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{}
%<en>\documentclass[a4paper,titlepage]{article}
%<ja>\documentclass[a4paper,titlepage]{ltjsarticle}
%%%%%%%%
\makeatletter
%%%%%%%%
+\def\pgfsysdriver{pgfsys-pdftex.def}
\directlua{if jit then jit.on() end}
\usepackage{metalogo,amsmath,array,tikz,pict2e,multienum,float}
\usepackage{booktabs,multicol,luatexja-ruby}
%%%%%%%% fonts
\usepackage{luatexja-otf}
\directlua{luatexja.otf.enable_ivs()}
-\usepackage[match,no-math]{luatexja-fontspec}
-\usepackage[kozuka-pr6n]{luatexja-preset}
-\usepackage{unicode-math}
+\usepackage[no-math]{fontspec}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setmonofont[Scale=MatchLowercase, ItalicFont=lmmono10-italic.otf,
BoldFont=lmmonolt10-bold.otf, BoldItalicFont=lmmonolt10-boldoblique.otf
]{lmmono10-regular.otf}
+\setsansfont[Scale=MatchLowercase,Ligatures=TeX]{Linux Biolinum O}
+\usepackage[match]{luatexja-fontspec}
+\usepackage[kozuka-pr6n]{luatexja-preset}
+\usepackage{unicode-math}
\setmonojfont{KozGoPr6N-Regular.otf}
\setmathfont[Scale=MatchLowercase]{xits-math.otf}
-\setsansfont[Scale=MatchLowercase,Ligatures=TeX]{Linux Biolinum O}
\setLaTeXa{\scshape a}
%<*ja>
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}
%<*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}.
%<en>The following packages are needed for the \LuaTeX-ja\ package.
%<ja>\LuaTeX-jaパッケージの動作には次のパッケージ類が必要である.
\begin{itemize}
-\item \LuaTeX\ beta-0.80.0 (or later)
-\item \Pkg{luaotfload} v2.5 (or later)
+\item \LuaTeX\ beta-0.85.0 (or later)
+\item \Pkg{luaotfload} v2.6 (or later)
\item \Pkg{adobemapping} (Adobe cmap and pdfmapping files)
\item \Pkg{everysel} (if you want to use \LuaTeX-ja with \LaTeXe)
\item \Pkg{fontspec} v2.4
%<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, this version of \LuaTeX-ja no longer supports \TeX~Live~2014 (or older version).
+%<en>In summary, this version of \LuaTeX-ja no longer supports \TeX~Live~2015 (or older version).
%<*ja>
-要約すると,本バージョンの\LuaTeX-jaは\TeX~Live~2014以前では動作しない\footnote{%
+要約すると,本バージョンの\LuaTeX-jaは\TeX~Live~2015以前では動作しない\footnote{%
もっとも,自分で\LuaTeX のバイナリをSubversionリポジトリからビルドしていれば話は別である.
}.
%</ja>
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>
%<en>\item Japanese characters in math mode are typeset by the font family \texttt{mc}.
%<ja>\item 数式モード中の和文文字は明朝体(\texttt{mc})で出力される.
+%<*en>
+ \item \cs{jttdefault}%
+ \footnote{%
+ When \Pkg{ltjsclasses} classes are used, or
+ \Pkg{luatexja-fontspec} (or \Pkg{luatexja-preset}) is loaded with \texttt{match} option,
+ \cs{ttfamily} changes the current Japanese font amily to \cs{jttdefault}.
+ These classes and packages also redefine \cs{jttdefault} to
+ \cs{gtdefault} (\emph{gothic}~family).
+ } specifies the Japanese font family in \cs{verb}~or~\texttt{verbatim} environment.
+ The default value of \cs{jttdefault} is \cs{mcdefault}, so \emph{mincho} family is used.
+%</en>
+%<*ja>
+ \item \cs{verb} や \texttt{verbatim} 環境中の和文文字に使われる和文フォントファミリは
+ \ \cs{jttdefault} で指定する%
+ \footnote{%
+ \Pkg{ltjsclasses}を使用したり,あるいは \texttt{match} オプションを指定して\Pkg{luatexja-fontspec}%
+ や\Pkg{luatexja-preset}パッケージを読み込んだときは,単なる \cs{ttfamily} によっても和文フォントが
+ \ \cs{jttdefault}\ に変更される.また,これらのクラスファイルやパッケージは
+ \ \cs{jttdefault}\ を \cs{gtdefault}(ゴシック体)に再定義する.
+ }.標準値は \cs{mcdefault},つまり明朝体として用いるのと
+ 同じフォントファミリである.
+%</ja>
%<*en>
\item If you use the \Pkg{beamer} class with the default font theme (which uses sans serif
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=xreal} 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=xreal}指定時と類似している.}で
+フォントサイズを指定することにしている.
%</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.
%<en>\paragraph{General options}
%<ja>\paragraph{一般的なオプション}
\begin{cslist}[before*=]
-
-\item[fontspec]
+\item[fontspec%
+%<en>\textrm{~(enabled by default)}
+%<ja>\emph{\gtfamily (既定)}
+]
%<*en>
With this option, Japanese fonts are selected using functionality of
the \Pkg{luatexja-fontspec} package. This means that the \Pkg{fontspec} package is
automatically loaded by this package.
-\emph{This option is enabled by default.}
If you need to pass some options to \Pkg{fontspec}, you can load \Pkg{fontspec} manually
before \Pkg{luatexja-preset}:
%<*ja>
\Pkg{luatexja-fontspec}パッケージの機能を用いて和文フォントを選択する.
これは,\Pkg{fontspec}パッケージが自動で読み込まれることを意味する.
-\emph{このオプションは標準で有効になっている.}
もし\Pkg{fontspec}パッケージに何らかのオプションを渡す必要がある
\footnote{例えば,数式フォントまで置換されてしまい,\cs{mathit}によってギリシャ文字の
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}
いる場合は \texttt{nfssonly} オプションは無視される.
%</ja>
-\item[nodeluxe]
+\item[match]
%<*en>
+If this option is specified, usual family-changing commands such as
+\cs{rmfamily},~\cs{textrm}, \cs{sffamily},~\dots\ also change Japanese font family.
+This option is passed to \Pkg{luatexja-fontspec}, if \texttt{fontspec}
+option is specifed.
+%</en>
+
+%<*ja>
+このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\
+\cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} 等が
+欧文フォントだけでなく和文フォントも変更するようになる.
+\ \texttt{fontspec}\
+オプションが有効になっている場合は,このオプションは \Pkg{luatexja-fontspec} パッケージへと渡される.
+%</ja>
+
+
+\item[nodeluxe%
+%<en>\textrm{~(enabled by default)}
+%<ja>\emph{\gtfamily (既定)}
+]
+%<*en>
+The nagation of \texttt{deluxe} option.
Use one-weighted \textit{mincho} and \textit{gothic} font families.
This means that \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+ and
\verb+\gtfamily\mdseries+ use the same font.
-\emph{This option is enabled by default.}
%</en>
%<*ja>
+\texttt{deluxe}オプションの否定.
\LaTeXe 環境下の標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する.
より具体的に言うと,この設定の下では
\ \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+,
\verb+\gtfamily\mdseries+はみな同じフォントとなる.
-\emph{このオプションは標準で有効になっている.}
%</ja>
\item[deluxe]
%<*en>
}.
%</ja>
\item[bold]
-%<en>Substitute bold series of \textit{gothic} for bold series of \textit{mincho}.
-%<ja>「明朝の太字」をゴシック体の太字によって代替する.
+%<*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,
+since we use same font for both series of \textit{gothic}.
+%</en>
+%<*ja>
+「明朝の太字」をゴシック体の太字によって代替する.
+もし\texttt{nodeluxe}オプションが指定されている場合は,ゴシック体は1ウェイトしか使用されな
+ いため,
+「ゴシック体の中字」も同時に変更されることになる.
+%</ja>
\item[90jis]
%<en>Use 90JIS glyph variants if possible.
%<ja>出来る限り90JISの字形を使う.
用いるJFMを(JISフォントメトリック類似の)\texttt{jfm-jis.lua}にする.このオプションがない時は
\LuaTeX-ja標準の\texttt{jfm-ujis.lua}が用いられる.
%</ja>
+
\end{cslist}
%<*en>
Note that \texttt{90jis} and \texttt{jis2004} only affect with \textit{mincho},
%</en>
%<*ja>
\texttt{90jis}と\texttt{jis2004}については本パッケージで定義された
-明朝体・ゴシック体(・丸ゴシック体)にのみ有効である.両オプションが
-同時に指定された場合の動作については全く考慮していない.
+明朝体・ゴシック体(・丸ゴシック体)にのみ有効である.
+両オプションが同時に指定された場合の動作については全く考慮していない.
%</ja>
%<en>\paragraph{Presets for multi weight}
\end{tabular}
\end{center}
-%<ja>\medskip
+%<ja>\newpage
\item[morisawa-pro] Morisawa Pro (Adobe-Japan1-4) fonts.
%<en> \\*[-\dimexpr\medskipamount+\baselineskip\relax]
\end{tabular}
\end{center}
- \item[moga-mobo] MogaMincho, MogaGothic, and MoboGothic.
+%<en>\newpage
+\item[moga-mobo] MogaMincho, MogaGothic, and MoboGothic.
%<en>These fonts can be downloaded from\\\hfill \url{http://yozvox.web.fc2.com/}.
%<ja>これらのフォントは \url{http://yozvox.web.fc2.com/} からダウンロードできる.
%<ja>\smash{\raisebox{1.5ex}{\gt 明朝}}%
&bold&Moga90Mincho Bold&MogaMincho Bold\\
\midrule
- &&Moga90Gothic&MogaGothic\\
+ &&Moga90Gothic*&MogaGothic*\\
&\smash{\raisebox{1.5ex}{medium}}
- &Moga90Gothic&MogaGothic\\
+ &Moga90Gothic Bold&MogaGothic Bold\\
\cmidrule(l){2-4}
%<en>\textit{gothic}%
%<ja>\gt ゴシック
\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
数式中の挙動は異なっているので注意が必要である.
例えば,表\ref{tab:math_bsa}のように,数式中に明示的に現れた \cs{hbox} は,
\begin{itemize}
- \item \pTeX では,ボックス全体が \cs{ybaselineshift} だとシフトされるので,
+ \item 2015年以前の\pTeX では,ボックス全体が \cs{ybaselineshift} だとシフトされるので,
表\ref{tab:math_bsa}中の``い''のように,ボックス中の和文文字は
\ \cs{ybaselineshift} だけシフトされ,一方,``for all''のように,
ボックス内の欧文文字は2重にシフトされることになる.
数式中に明示的に現れた \cs{hbox} はシフトしない.そのため,
表\ref{tab:math_bsa}中の``い''も``for all''も,それぞれ本文中に
書かれたときと同じ上下位置に組まれる.
+
+ なお,\TeX~Live~2016以降の\pTeX では改修がなされ,\LuaTeX-jaと
+ 近い挙動になるようにしているが,数式中に直に書かれた``あ''のベースラインについては
+ まだ違いが見られる.
\end{itemize}
\begin{table}
\small\centering
\end{lstlisting}\\
\noalign{\vskip-\origbaselineskip}
\midrule
-\emph{\pTeX}&
+\emph{\pTeX~(--2015)}&
{\ltjsetparameter{yalbaselineshift=10pt}%
-数式abc: $あa\lower10pt\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
+数式abc: $\lower10pt\hbox{あ}a\lower10pt\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
$\Phi\vdash F(x)\ \lower10pt\hbox{for all}\ x\in A$
-\par}\\
-\midrule
+\par}\\\noalign{\vskip-\origbaselineskip}\midrule
+\emph{\pTeX~(2016--)}&
+{\ltjsetparameter{yalbaselineshift=10pt}%
+数式abc: $\lower10pt\hbox{あ}a\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
+$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$
+\par}\\\noalign{\vskip-\origbaselineskip}\midrule
\emph{\LuaTeX-ja}&
{\ltjsetparameter{yalbaselineshift=10pt}%
数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2/2$,
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}の自然長/伸び量/縮み量の一部が
同じ場所に挿入される」という状況が起こりうる.
\catcode`\<=12\catcode`\>=12
\ltjsetparameter{jacharrange={+3}}
\small
-
\def\r#1#2{%
\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§è¿·å\90ã\81«ã\81ªã\81£ã\81¦æ³£ã\81\8dã\81¾ã\81\97ã\81\9fï¼\8e
+ ã\81\82ã\82\8bæ\97¥ã\83¢ã\83¢ã\81¡ã\82\83ã\82\93ã\81\8cã\80\8cã\81\8a使ã\81\84ã\80\8dã\81§è¿·å\90ã\81«ã\81ªã\81£ã\81¦æ³£ã\81\8dã\81¾ã\81\97ã\81\9fã\80\82
}\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.
\pTeX と同じようにJIS~X~0208の範囲しかサポートしていない.
%</ja>
\begin{center}
-\cs{kuten}, \cs{jis}, \cs{euc}, \cs{sjis}, \cs{jis}, \cs{kansuji}
+\cs{kuten}, \cs{jis}, \cs{euc}, \cs{sjis}, \cs{ucs}, \cs{kansuji}
\end{center}
%<*en>
These six commands takes an internal integer, and returns a \emph{string}.
+ 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>
%<*en>
\paragraph{IVS support}
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
-\Pkg{luatexja-otf} and execute the following:}
+\Pkg{luaotfload} and \Pkg{fontspec} packages used to be not supported IVS,
+so we implemented experimental IVS support in \Pkg{luatexja-otf},
+which is activated by
+\begin{lstlisting}
+\directlua{luatexja.otf.enable_ivs()}
+\end{lstlisting}
+However, recent \Pkg{luaotfload} and \Pkg{fontspec} packages seem to support IVS,
+so we don't execute above command anymore.
%</en>
%<*ja>
\paragraph{IVSサポート}
(漢字用異体字セレクタ)を後置することによって
字形を指定する仕組み(IVS)が含まれている.
執筆時点の2013年12月では,\Pkg{luaotfload}や\Pkg{fontspec}パッケージ類は
-IVSに対応してはいないようである.これらのパッケージで対応してくれるのが理想的だが,
-それまでのつなぎとして,\Pkg{luatexja-otf}パッケージ内にIVS対応を仕込んでおいた.
-
-\medskip
-
-\emph{IVS対応は試験的なものである.
-有効にするには,\Pkg{luatexja-otf}パッケージを読み込んだ上で以下の命令を実行する%
-\footnote{この命令を2回以上実行しても意味がない.}:}
-%</ja>
+IVSに対応してはいないようであったため,
+\Pkg{luatexja-otf}パッケージ内に試験的なIVS対応を実装した.これは以下の命令の実行で有効になる:
\begin{lstlisting}
\directlua{luatexja.otf.enable_ivs()}
\end{lstlisting}
-%<ja> すると,上の命令を実行した箇所以降では,以下のようにIVSによる字形指定が有効となる.
-%<en> After executing the command above, you can use IVS like the following:
-\begin{LTXexample}
-\Large
-\jfontspec{KozMinPr6N-Regular}
-奈良県葛󠄀城市と,東京都葛󠄁飾区.\\
-こんにちは,渡
-邉󠄀邉󠄁邉󠄂邉󠄃邉󠄄
-邉󠄅邉󠄆邉󠄇邉󠄈邉󠄉
-邉󠄊邉󠄋邉󠄌邉󠄍邉󠄎
-さん.
-\end{LTXexample}
-%<*ja>
-左上側の入力においては,漢字用異体字セレクタを明示するため,
-例えばVariation~Selector~18 (\texttt{U+E0101})を\IVSB{18}のように表記している.
-%</ja>
-\medskip
-
-%<*en>
-Specifying glyph variants by IVS precedes glyph replacement by font features.
-For example, only ``葛'' in ``葛西'' is changed by font features
-\texttt{jp78}~or~\texttt{jp90}, which does not followed by any variation selector.
-%</en>
-%<*ja>
-また,IVSによる字形指定は,OpenType機能によるそれに優先されることとした.
-下の例において,\texttt{jp78}, \texttt{jp90} 指定で字形が変化した文字は
-異体字セレクタが続いていない「葛西」中の「葛」のみである.
+しかし,現在の\Pkg{luaotfload}や\Pkg{fontspec}パッケージは
+IVSに対応しているようであるので,もはや上の命令を実行する必要はない.
%</ja>
-\begin{LTXexample}
- \def\TEST#1{%
- {\jfontspec[#1]{KozMinPr6N-Regular}%
- 葛󠄀城市,葛󠄁飾区,葛西}\\}
- 指定なし:\TEST{}
- \texttt{jp78}:\TEST{CJKShape=JIS1978}
- \texttt{jp90}:\TEST{CJKShape=JIS1990}
-\end{LTXexample}
-
-%<*ja>
-現状では,\TeX 側のインターフェースとなる \Pkg{luatexja-otf.sty} は一切変更していない
-ので,ZRさんによる\Pkg{PXipamjm}パッケージ%
-\footnote{\url{https://github.com/zr-tex8r/PXipamjm}. 説明は彼のブログ記事
-「pxipamjm パッケージの説明書のような何か(\url{http://d.hatena.ne.jp/zrbabbler/20131221})」
-にある.}
-にあるような気の利いた命令はまだない.
-異体字の一覧表示を行いたい場合は,gitリポジトリ内の \texttt{test/test19-ivs.tex} 中にある
-Lua・\TeX コードが参考になるだろう.
-%</ja>
-
\subsection{\Pkg{luatexja-adjust}}
\label{ssec-adj}
\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}で終わることになり,
\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>
%<*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>
%<en>\subsection{Notes and additional keys}
%<ja>\subsection{注意}
-%<*en>
-\paragraph{Escaping to \LaTeX}
-We used the \verb+process_input_buffer+ callback to output \textbf{JAchar}s.
-But it has a drawback; any commands whose name contains a \textbf{JAchar}
-cannot be used in any ``escape to \LaTeX''.
+% %<*en>
+% \paragraph{Escaping to \LaTeX}
+% We used the \verb+process_input_buffer+ callback to output \textbf{JAchar}s.
+% But it has a drawback; any commands whose name contains a \textbf{JAchar}
+% cannot be used in any ``escape to \LaTeX''.
-Consider the following input:
-%</en>
-%<*ja>
-\paragraph{\LaTeX へのエスケープ}
-日本語対応を行うために \verb+process_input_buffer+ を使用したことで,
-\texttt{texcl},~\texttt{escapeinside}といった\emph{「\LaTeX へのエスケープ」中では,
-\textbf{JAchar}を名称の一部に含む制御綴は使用不可能}である.
-例えば次のような入力を考えよう:
-%</ja>
-\begin{verbatim*}
-\begin{lstlisting}[escapechar=\#]
-#\ほげ xぴよ#
-\end{lstlisting}
-\end{verbatim*}
-%<en>The line~2 is transformed by the callback to
-%<ja>ここで,2行目は \verb+process_input_buffer+ の作用により,
-\begin{lstlisting}[showspaces, escapechar=\!]
-#\!\IVSA FFFFF!ほ!\IVSA FFFFF!げ x!\IVSA FFFFF!ぴ!\IVSA FFFFF!よ#
-\end{lstlisting}
-%<*en>
-before the line is actually processed.
-In the escape (between the character ``\verb+#+''),
-the category code of \texttt{U+FFFFF} is set to 9~(\emph{ignored}).
-Hence the control symbol ``\cs{}\IVSA FFFFF'' will be executed,
-instead of ``\verb+\ほげ+''.
-%</en>
-%<*ja>
-と変換されてから,実際の処理に回される.
-「\verb+#+」で挟まれた「\LaTeX へのエスケープ」中では\
-\texttt{U+FFFFF} のカテゴリーコードは9~(\textit{ignored})となるので,
-結局「\verb+\ほげ+」の代わりに
-「\cs{}\IVSA FFFFF」というcontrol symbolが実行されることになる.
-%</ja>
+% Consider the following input:
+% %</en>
+% %<*ja>
+% \paragraph{\LaTeX へのエスケープ}
+% 日本語対応を行うために \verb+process_input_buffer+ を使用したことで,
+% \texttt{texcl},~\texttt{escapeinside}といった\emph{「\LaTeX へのエスケープ」中では,
+% \textbf{JAchar}を名称の一部に含む制御綴は使用不可能}である.
+% 例えば次のような入力を考えよう:
+% %</ja>
+% \begin{verbatim*}
+% \begin{lstlisting}[escapechar=\#]
+% #\ほげ xぴよ#
+% \end{lstlisting}
+% \end{verbatim*}
+% %<en>The line~2 is transformed by the callback to
+% %<ja>ここで,2行目は \verb+process_input_buffer+ の作用により,
+% \begin{lstlisting}[showspaces, escapechar=\!]
+% #\!\IVSA FFFFF!ほ!\IVSA FFFFF!げ x!\IVSA FFFFF!ぴ!\IVSA FFFFF!よ#
+% \end{lstlisting}
+% %<*en>
+% before the line is actually processed.
+% In the escape (between the character ``\verb+#+''),
+% the category code of \texttt{U+FFFFF} is set to 9~(\emph{ignored}).
+% Hence the control symbol ``\cs{}\IVSA FFFFF'' will be executed,
+% instead of ``\verb+\ほげ+''.
+% %</en>
+% %<*ja>
+% と変換されてから,実際の処理に回される.
+% 「\verb+#+」で挟まれた「\LaTeX へのエスケープ」中では\
+% \texttt{U+FFFFF} のカテゴリーコードは9~(\textit{ignored})となるので,
+% 結局「\verb+\ほげ+」の代わりに
+% 「\cs{}\IVSA FFFFF」というcontrol symbolが実行されることになる.
+% %</ja>
%<*en>
\paragraph{Variation selectors}
[0]=37001, -- <9089 E0100>
991049, -- <9089 E0101>
...
- ["vert"]=995025, -- vertical variant
+ ["vform"]=995025, -- vertical variant
},
...
+ ["unicodes"]={
+ ["aj102.pe.vert"]=984163, -- glyph name to unicode
+ ...
+ }
},
["chksum"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", -- checksum of the fontfile
- ["version"]=2, -- version of the cache
+ ["version"]=11, -- version of the cache
}
\end{lstlisting}
%<*ja>