%</ja>
\usepackage{amsmath,array,tikz,pict2e,multienum,float}
-\usepackage{booktabs,multicol}
+\usepackage{booktabs,multicol,luatexja-ruby}
+\usepackage{xy}
%%%%%%%% listings
\usepackage{luatexja-otf}
%<ja>\usepackage{lmodern}
\directlua{luatexja.otf.enable_ivs()}
+\usepackage[match]{luatexja-fontspec}
\usepackage[kozuka-pr6n]{luatexja-preset}
+\setmonojfont{KozGoPr6N-Regular.otf}
%<*ja>
\def\emph#1{\textbf{\textgt{#1}}}
\def\headfont{\normalfont\bfseries\gtfamily}
\setmathfont{xits-math.otf}
\frenchspacing
%</en>
-\DeclareRobustCommand\ttfamily
- {\not@math@alphabet\ttfamily\mathtt
- \romanfamily\ttdefault\ttjfam\selectfont}
-\newjfontfamily\ttjfam{KozGoPr6N-Regular.otf}
-
%%%%%%%% logo
\usepackage{metalogo}
\newenvironment{cslist}{%
%<ja> \leftskip2\zw
%<en> \leftskip2em
- \parindent=0pt\def\makelabel##1{{\tt\textbackslash ##1}}
+ \parindent=0pt\def\makelabel##1{\cs{##1}}
\def\{{\char`\{}\def\}{\char`\}}
\let\origitem=\item
\def\item[##1]{\par\smallskip\par\hskip-\leftskip\makelabel{##1}\par}
\vskip\belowcaptionskip}
\def\_{\leavevmode \kern .06em\vbox {\hrule \@width .333em}}
+\def\cs#1{\texttt{\upshape\textbackslash #1}}
%%%%%%%%
\makeatother
\def\Node#1#2{\,\vcenter{\hbox{\fboxsep=1pt\fbox{\vbox{\small\halign{\hfil##\hfil\cr
#1\mathstrut\cr\noalign{\hrule height.4pt}\strut#2\cr}}}}\,}}
-\protected\def\Param#1{\textsf{#1}} % parameter name
+\protected\def\Param#1{\hyperlink{fld:#1}{\textsf{#1}}} % parameter name
+\protected\def\DParam#1{\hypertarget{fld:#1}{\textsf{#1}}} % parameter name (definition)
\protected\def\Pkg#1{\underline{\smash{\texttt{#1}}}} % packages/classes
\catcode`\<=13
\def<#1>{{\normalfont\rm\itshape$\langle$#1\/$\rangle$}}
+\let\LARG=<
\maketitle
\tableofcontents
%<*en>
\item Furthermore, nodes between two characters which have no effects in
- line break (\textit{e.g.}, \verb+\special+ node) and kerns from
+ line break (\textit{e.g.}, \cs{special} node) and kerns from
italic correction are ignored in the insertion process.
%</en>
%<*ja>
-\item さらに,2つの文字の間にある行末では効果を持たないノード(例えば \verb+\special+ ノード)や,
+\item さらに,2つの文字の間にある行末では効果を持たないノード(例えば \cs{special} ノード)や,
イタリック補正に伴い挿入されるカーンは挿入処理中では無視される.
%</ja>
%<*en>
\item In the process, two Japanese fonts which only differ in their ``real''
- fonts are identified.
+ fonts are identified.
%</en>
%<*ja>
\item 処理中では,2つの和文フォントは,実フォントが異なるだけの場合には同一視
%<*ja>
\item \LuaTeX-jaでは,\pTeX と同様に漢字・仮名を制御綴内に用いることができ,
-\verb+\西暦+ などが正しく動作するようにしている.
+\cs{西暦} などが正しく動作するようにしている.
但し,制御綴中に使える和文文字が\pTeX・\upTeX と全く同じではないことに注意すること.
%</ja>
-%<*en>
-\item At the present, vertical typesetting (\emph{tategaki}), is not
- supported in \LuaTeX-ja.
-%</en>
%<*ja>
-\item 現時点では,縦書きは\LuaTeX-jaではサポートされていない.
+\item ****版からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている.
+\LuaTeX のコールバックの制限などにより,特に異なった組方向のボックスを扱う場合には
+仕様が異なるので注意すること.
%</ja>
\end{itemize}
\end{itemize}
%<*en>
-We say \emph{alphabetic fonts} for fonts used in \textbf{ALchar},
+We say \emph{alphabetic fonts} for fonts used in \textbf{ALchar},
and \emph{Japanese fonts} for fonts used in \textbf{JAchar}.
%</en>
%<*ja>
\textbf{JAchar}の出力に用いられるフォントを\emph{和文フォント}と呼ぶ.
%</ja>
%<*en>
-\item A word in a sans-serif font (like \Param{\hyperlink{fld:prebp}{prebreakpenalty}})
+\item A word in a sans-serif font (like \Param{prebreakpenalty})
means an internal parameter for Japanese typesetting, and it
- is used as a key in \verb+\ltjsetparameter+ command.
+ is used as a key in \cs{ltjsetparameter} command.
%</en>
%<*ja>
-\item サンセリフ体で書かれた語(例:\Param{\hyperlink{fld:prebp}{prebreakpenalty}})は日本語組版用の
- パラメータを表し,これらは \verb+\ltjsetparameter+ コマンドのキーとして
+\item サンセリフ体で書かれた語(例:\Param{prebreakpenalty})は日本語組版用の
+ パラメータを表し,これらは \cs{ltjsetparameter} 命令のキーとして
用いられる.
%</ja>
%<*en>
パッケージやクラスを表す.
%</ja>
%<*en>
-\item In this document, natural numbers start from~0.
+\item In this document, natural numbers start from~zero.
+ $\omega$ denotes the set of all natural numbers.
%</en>
%<*ja>
-\item 本ドキュメントでは,自然数は0から始まる.
+\item 本ドキュメントでは,自然数は0から始まる.自然数全体の集合は$\omega$と表記する.
%</ja>
\end{itemize}
\item \Pkg{luatexbase} v0.6
\item \Pkg{xunicode} v0.981~(2011/09/09)
\item \Pkg{adobemapping} (Adobe cmap and pdfmapping files)
+\item \Pkg{everysel}
\end{itemize}
%<*en>
Now \LuaTeX-ja is available from the following archive and distributions:
\begin{itemize}
\item CTAN (in the \texttt{macros/luatex/generic/luatexja} directory)
- \item MiK\TeX\ (in \texttt{luatexja.tar.lzma})
+ \item MiK\TeX\ (in \texttt{luatexja.tar.lzma}); see the next subsection
\item \TeX\ Live (in \texttt{texmf-dist/tex/luatex/luatexja})
\item W32\TeX\ (in \texttt{luatexja.tar.xz})
\end{itemize}
-If you are using \TeX~Live~2013, you can install \LuaTeX-ja
+If you are using \TeX~Live~2013, you can install \LuaTeX-ja
from \TeX~Live manager (\texttt{tlmgr}):
\begin{verbatim}
$ tlmgr install luatexja
\item W32\TeX\ (\texttt{luatexja.tar.xz})
\end{itemize}
-例えば\TeX~Live~2013を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を
+例えば\TeX~Live~2013以降を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を
使ってインストールすることができる.
\begin{verbatim}
$ tlmgr install luatexja
\begin{flushleft}
\url{http://git.sourceforge.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}.
\end{flushleft}
-\end{itemize}
+\end{itemize}
Note that the \texttt{master} branch, and hence the archive in CTAN, are not updated frequently;
the forefront of development is not the \texttt{master} branch.
%<*en>
\item If you downloaded this package from CTAN, you have to run following commands
- to generate classes
+ to generate classes
and \texttt{ltj-kinsoku.lua} (the file which stores default ``\textit{kinsoku}'' parameters):
%</en>
%<*ja>
%</ja>
\end{enumerate}
+%<en>\subsection{Cautions}
+%<ja>\subsection{注意点}
+
+\begin{itemize}
+%<*en>
+\item The encoding of your source file must be UTF-8. No other
+ encodings, such as EUC-JP or Shift-JIS, are not supported.
+%</en>
+%<*ja>
+\item 原稿のソースファイルの文字コードはUTF-8固定である.
+ 従来日本語の文字コードとして用いられてきたEUC-JPやShift-JISは使用できない.
+%</ja>
+%<*en>
+\item \LuaTeX-ja is very slower than \pTeX.
+Generally speaking, LuaJIT\TeX\ processes \LuaTeX-ja
+about 30\% faster than \LuaTeX, but not always.
+%</en>
+%<*ja>
+\item \LuaTeX-jaは動作が\pTeX に比べて非常に遅い.
+コードを調整して徐々に速くしているが,まだ満足できる速度ではない.
+LuaJIT\TeX を用いると\LuaTeX のだいたい1.3倍の速度で動くようであるが,
+IPA mj明朝などの大きいフォントを用いた場合には\LuaTeX よりも遅くなることもある.
+%</ja>
+\item%
%<*en>
-\paragraph{Note for MiK\TeX\ users}
+\textbf{Note for MiK\TeX\ users}\quad
\LuaTeX-ja requires that several CMap files%
-\footnote{\texttt{UniJIS2004-UTF32-H} and \texttt{Adobe-Japan1-UCS2}.}
+\footnote{\texttt{UniJIS2004-UTF32-\{H,V\}} and \texttt{Adobe-Japan1-UCS2}.}
must be found from \LuaTeX.
-Strictly speaking, those CMaps are needed
+Strictly speaking, those CMaps are needed
only in the first run of \LuaTeX-ja after installing or updating.
-
-But it seems that MiK\TeX\ does not satisfy this condition,
+But it seems that MiK\TeX\ does not satisfy this condition,
so you will encounter an error like the following:
%</en>
%<*ja>
\LuaTeX-jaが動作するためには,\emph{導入・更新後の初回起動時に}
-\texttt{UniJIS2004-UTF32-H}, \texttt{Adobe-Japan1-UCS2}という2つのCMapが
+\texttt{UniJIS2004-UTF32-\{H,V\}}, \texttt{Adobe-Japan1-UCS2}という3つのCMapが
\LuaTeX によって見つけられることが必要である.
しかしMiK\TeX ではそのようになっていないので,次のエラーが発生するだろう:
%</ja>
%<*en>
If so, please execute a batch file which is written on
\href{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28en%29}{ the Project Wiki (English)}.
-This batch file creates a temporaly directory, copy CMaps in it,
-run \LuaTeX-ja in this directory, and finally delete the temporaly directory.
+This batch file creates a temporary directory, copy CMaps in it,
+run \LuaTeX-ja in this directory, and finally delete the temporary directory.
%</en>
%<*ja>
そのような場合には,
コピーし,その中で\LuaTeX-ja の初回起動を行い,作業用ディレクトリを消す作業をしている.
%</ja>
-%<en>\subsection{Cautions}
-%<ja>\subsection{注意点}
-
-\begin{itemize}
-%<*en>
-\item The encoding of your source file must be UTF-8. No other
- encodings, such as EUC-JP or Shift-JIS, are not supported.
-%</en>
-%<*ja>
-\item 原稿のソースファイルの文字コードはUTF-8固定である.
- 従来日本語の文字コードとして用いられてきたEUC-JPやShift-JISは使用できない.
-%</ja>
-%<*en>
-\item \LuaTeX-ja is very slower than \pTeX.
-Generally speaking, LuaJIT\TeX\ processes \LuaTeX-ja
-about 30\% faster than \LuaTeX, but not always.
-%</en>
-%<*ja>
-\item \LuaTeX-jaは動作が\pTeX に比べて非常に遅い.
-コードを調整して徐々に速くしているが,まだ満足できる速度ではない.
-LuaJIT\TeX を用いると\LuaTeX のだいたい1.3倍の速度で動くようであるが,
-IPA mj明朝などの大きいフォントを用いた場合には\LuaTeX よりも遅くなることもある.
-%</ja>
\end{itemize}
%<en>\subsection{Using in plain \TeX}
\begin{itemize}
%<*en>
-\item The following 6~Japanese fonts are preloaded:
+\item The following 12~Japanese fonts are preloaded:
\begin{center}\small
-\begin{tabular}{ccccc}
+\begin{tabular}{cccccc}
\toprule
+\textbf{direction}&
\textbf{classification}&\textbf{font name}&\bf `10\,pt'&\bf`7\,pt'&\bf`5\,pt'\\\midrule
-\emph{mincho}&Ryumin-Light &\verb+\tenmin+&\verb+\sevenmin+&\verb+\fivemin+\\
-\emph{gothic}&GothicBBB-Medium&\verb+\tengt+ &\verb+\sevengt+ &\verb+\fivegt+\\
+\smash{\raisebox{-1ex}{\emph{yoko} (horizontal)}}&
+\emph{mincho}&Ryumin-Light &\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
+\emph{gothic}&GothicBBB-Medium&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\
+\midrule
+\smash{\raisebox{-1ex}{\emph{tate} (vertical)}}&
+\emph{mincho}&Ryumin-Light &\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\
+\emph{gothic}&GothicBBB-Medium&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\
\bottomrule
\end{tabular}
\end{center}
%</en>
%<*ja>
-\item 以下の6つの和文フォントが定義される:
+\item 以下の12個の和文フォントが定義される:
\begin{center}\small
-\begin{tabular}{ccccc}
+\begin{tabular}{cccccc}
\toprule
-\emph{字体}&\emph{フォント名}&\bf `10\,pt'&\bf`7\,pt'&\bf`5\,pt'\\\midrule
-明朝体&Ryumin-Light &\verb+\tenmin+&\verb+\sevenmin+&\verb+\fivemin+\\
-ゴシック体&GothicBBB-Medium&\verb+\tengt+ &\verb+\sevengt+ &\verb+\fivegt+\\
+\emph{組方向}&\emph{字体}&\emph{フォント名}&\bf `10\,pt'&\bf`7\,pt'&\bf`5\,pt'\\\midrule
+\smash{\raisebox{-1ex}{横組}}&
+明朝体&Ryumin-Light &\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
+ゴシック体&GothicBBB-Medium&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\
+\midrule
+\smash{\raisebox{-1ex}{縦組}}&
+明朝体&Ryumin-Light &\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\
+ゴシック体&GothicBBB-Medium&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\
\bottomrule
\end{tabular}
\end{center}
\item It is widely accepted that fonts ``Ryumin-Light'' and
``GothicBBB-Medium'' aren't embedded into PDF files, and a PDF reader
substitute them by some external Japanese fonts (\textit{e.g.},
- Ryumin-Light is substituted with Kozuka Mincho in Adobe Reader).
+ Ryumin-Light is substituted with Kozuka Mincho in Adobe Reader).
We adopt this custom to the default setting.
%</en>
%<*ja>
%<*en>
\item The amount of glue that are inserted between a \textbf{JAchar} and
- an \textbf{ALchar} (the parameter \Param{\hyperlink{fld:xks}{xkanjiskip}}) is set to
+ an \textbf{ALchar} (the parameter \Param{xkanjiskip}) is set to
%</en>
%<*ja>
-\item \textbf{JAchar}と\textbf{ALchar}の間に入るグルー(\Param{\hyperlink{fld:xks}{xkanjiskip}})の
+\item \textbf{JAchar}と\textbf{ALchar}の間に入るグルー(\Param{xkanjiskip})の
量は次のように設定されている:
%</ja>
\[
\begin{itemize}
%<*en>
-\item \texttt{JY3} is the font encoding for Japanese fonts (in horizontal direction).\\
-When vertical typesetting is supported by \LuaTeX-ja in the future, \texttt{JT3} will be used for vertical fonts.
+\item The font encoding for Japanese fonts (for horizontal direction) is \texttt{JY3}.\\
+\texttt{JT3} is used for Japanese fonts for vertical direction.
%</en>
%<*ja>
-\item \texttt{JY3}は和文フォント用のフォントエンコーディングである(横書き用).\\
-将来的に,\LuaTeX-jaで縦書きがサポートされる際には,\texttt{JT3}を縦書き用として
-用いる予定である.
+\item 和文フォントのエンコーディングとしては,横組用には \texttt{JY3},縦組用には\
+\texttt{JT3}が用いられる.
%</ja>
%<*en>
\begin{tabular}{lllc}
\toprule
\textbf{classification}&&&\textbf{family name}\\\midrule
-\emph{mincho} (明朝体)&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\verb+\mcdefault+\\
-\emph{gothic} (\textgt{ゴシック体})&\verb+\textgt{...}+&\verb+{\gtfamily ...}+&\verb+\gtdefault+\\
+\emph{mincho} (明朝体)&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\cs{mcdefault}\\
+\emph{gothic} (\textgt{ゴシック体})&\verb+\textgt{...}+&\verb+{\gtfamily ...}+&\cs{gtdefault}\\
\bottomrule
\end{tabular}
\end{center}
-\item
+\item
By default, the following fonts are used for \emph{mincho} and \emph{gothic}:
\begin{center}\small
\begin{tabular}{ccccc}
\toprule
-\textbf{classification}&\textbf{family name}&\verb+\mdseries+&\verb+\bfseries+&\textbf{scale}\\\midrule
+\textbf{classification}&\textbf{family name}&\cs{mdseries}&\cs{bfseries}&\textbf{scale}\\\midrule
\emph{mincho} (明朝体)&\tt mc&Ryumin-Light &GothicBBB-Medium&0.962216\\
\emph{gothic} (\textgt{ゴシック体})&\tt gt&GothicBBB-Medium&GothicBBB-Medium&0.962216\\
\bottomrule
\begin{tabular}{cllc}
\toprule
\emph{字体}&&&\emph{ファミリ名}\\\midrule
-明朝体&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\verb+\mcdefault+\\
-\textgt{ゴシック体}&\verb+\textgt{...}+&\verb+{\gtfamily ...}+&\verb+\gtdefault+\\
+明朝体&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\cs{mcdefault}\\
+\textgt{ゴシック体}&\verb+\textgt{...}+&\verb+{\gtfamily ...}+&\cs{gtdefault}\\
\bottomrule
\end{tabular}
\end{center}
\begin{center}\small
\begin{tabular}{ccccc}
\toprule
-\emph{字体}&\emph{ファミリ}&\verb+\mdseries+&\verb+\bfseries+&\emph{スケール}\\\midrule
+\emph{字体}&\emph{ファミリ}&\cs{mdseries}&\cs{bfseries}&\emph{スケール}\\\midrule
明朝体&\tt mc&Ryumin-Light &GothicBBB-Medium&0.962216\\
ゴシック体&\tt gt&GothicBBB-Medium&GothicBBB-Medium&0.962216\\
\bottomrule
日本語文書を組版するためには,\texttt{article.cls}, \texttt{book.cls}といった
欧文用のクラスファイルではなく,和文用のクラスファイルを用いた方がよい.
現時点では,\Pkg{jclasses}(\pLaTeX の標準クラス)と\Pkg{jsclasses}
-ï¼\88奥æ\9d\91æ\99´å½¦æ°\8fã\81«ã\82\88ã\82\8bã\82¯ã\83©ã\82¹ã\83\95ã\82¡ã\82¤ã\83«)に対応するものとして,\Pkg{ltjclasses},
+ï¼\88奥æ\9d\91æ\99´å½¦æ°\8fã\81«ã\82\88ã\82\8bã\80\8c\pLaTeXe æ\96°ã\83\89ã\82ã\83¥ã\83¡ã\83³ã\83\88ã\82¯ã\83©ã\82¹ã\80\8d)に対応するものとして,\Pkg{ltjclasses},
\Pkg{ltjsclasses}がそれぞれ用意されている.
%</ja>
%<ja>\section{フォントの変更}
\subsection{plain \TeX~and~\LaTeXe}
-\label{ssub-chgfnt}
+\label{ssec-chgfnt}
\paragraph{plain \TeX}
%<*en>
To change Japanese fonts in plain \TeX, you must use the command
-\verb+\jfont+. So please see Subsection~\ref{ssec-jfont}.
+\cs{jfont}~and~\cs{tfont}. So please see Subsection~\ref{ssec-jfont}.
%</en>
%<*ja>
-plain \TeX で和文フォントを変更するためには,\pTeX のように \verb+\jfont+ 命令を直接用いる.
+plain \TeX で和文フォントを変更するためには,
+\pTeX のように \cs{jfont} 命令や \cs{tfont} 命令を直接用いる.
\ref{ssec-jfont}節を参照.
%</ja>
%</ja>
\begin{itemize}
%<*en>
-\item Commands \verb+\fontfamily+, \verb+\fontseries+,
- \verb+\fontshape+, and \verb+\selectfont+ can be used to change
+\item Commands \cs{fontfamily}, \cs{fontseries},
+ \cs{fontshape}, and \cs{selectfont} can be used to change
attributes of Japanese fonts.
%</en>
%<*ja>
-\item \verb+\fontfamily+, \verb+\fontseries+, \verb+\fontshape+, そして
- \verb+\selectfont+ が和文フォントの属性を変更するために使用できる.
+\item \cs{fontfamily}, \cs{fontseries}, \cs{fontshape}, そして
+ \cs{selectfont} が和文フォントの属性を変更するために使用できる.
%</ja>
%<*en>
\toprule
&\textbf{encoding}&\textbf{family}&\textbf{series}&\textbf{shape}&\textbf{selection}\\\midrule
alphabetic fonts
-&\verb+\romanencoding+&\verb+\romanfamily+&\verb+\romanseries+&\verb+\romanshape+
-&\verb+\useroman+\\
+&\cs{romanencoding}&\cs{romanfamily}&\cs{romanseries}&\cs{romanshape}
+&\cs{useroman}\\
Japanese fonts
-&\verb+\kanjiencoding+&\verb+\kanjifamily+&\verb+\kanjiseries+&\verb+\kanjishape+
-&\verb+\usekanji+\\
-both&---&--&\verb+\fontseries+&\verb+\fontshape+&---\\
-auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\
+&\cs{kanjiencoding}&\cs{kanjifamily}&\cs{kanjiseries}&\cs{kanjishape}
+&\cs{usekanji}\\
+both&---&--&\cs{fontseries}&\cs{fontshape}&---\\
+auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\
\bottomrule
\end{tabular}
\end{center}
\toprule
&\emph{エンコーディング}&\emph{ファミリ}&\emph{シリーズ}&\emph{シェープ}&\emph{選択}\\\midrule
欧文
-&\verb+\romanencoding+&\verb+\romanfamily+&\verb+\romanseries+&\verb+\romanshape+
-&\verb+\useroman+\\
+&\cs{romanencoding}&\cs{romanfamily}&\cs{romanseries}&\cs{romanshape}
+&\cs{useroman}\\
和文
-&\verb+\kanjiencoding+&\verb+\kanjifamily+&\verb+\kanjiseries+&\verb+\kanjishape+
-&\verb+\usekanji+\\
-両方&---&--&\verb+\fontseries+&\verb+\fontshape+&---\\
-自動選択&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\
+&\cs{kanjiencoding}&\cs{kanjifamily}&\cs{kanjiseries}&\cs{kanjishape}
+&\cs{usekanji}\\
+両方&---&--&\cs{fontseries}&\cs{fontshape}&---\\
+自動選択&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\
\bottomrule
\end{tabular}
\end{center}
\verb+\fontencoding{JY3}+ changes the encoding of Japanese fonts to
\texttt{JY3},and \verb+\fontencoding{T1}+ changes the encoding of
alphabetic fonts to \texttt{T1}.
- \verb+\fontfamily+ also changes the current Japanese font family,
- the current alphabetic font family, \emph{or both}.
- For the detail, see Subsection~\ref{ssub-nfsspat}.
+ \cs{fontfamily} also changes the current Japanese font family,
+ the current alphabetic font family, \emph{or both}.
+ For the detail, see Subsection~\ref{ssec-nfsspat}.
%</en>
%<*ja>
ここで,\verb+\fontencoding{+<encoding>\verb+}+ は,引数により和文側か欧文
側かのどちらかのエンコーディングを変更する.例えば,
\verb+\fontencoding{JY3}+ は和文フォントのエンコーディングを
\texttt{JY3}に変更し,\verb+\fontencoding{T1}+ は欧文フォント側を
- \texttt{T1}へと変更する.\verb+\fontfamily+ も引数により和文側,欧文
+ \texttt{T1}へと変更する.\cs{fontfamily} も引数により和文側,欧文
側,\emph{あるいは両方}のフォントファミリを変更する.詳細は
- \ref{ssub-nfsspat}節を参照すること.
+ \ref{ssec-nfsspat}節を参照すること.
%</ja>
%<*en>
\item For defining a Japanese font family, use
- \verb+\DeclareKanjiFamily+ instead of
- \verb+\DeclareFontFamily+. However, in the present implementation,
- using \verb+\DeclareFontFamily+ doesn't cause any problem.
-\item Defining a Japanese font shape can be done by usual \verb+\DeclareFontShape+:
+ \cs{DeclareKanjiFamily} instead of
+ \cs{DeclareFontFamily}. However, in the present implementation,
+ using \cs{DeclareFontFamily} doesn't cause any problem.
+\item Defining a Japanese font shape can be done by usual \cs{DeclareFontShape}:
%</en>
%<*ja>
-\item 和文フォントファミリの定義には \verb+\DeclareFontFamily+ の
- 代わりに \verb+\DeclareKanjiFamily+ を用いる.しかし,現在の
- 実装では \verb+\DeclareFontFamily+ を用いても問題は生じない.
-\item 和文フォントのシェイプを定義するには,通常の \verb+\DeclareFontShape+ を使えば良い:
+\item 和文フォントファミリの定義には \cs{DeclareFontFamily} の
+ 代わりに \cs{DeclareKanjiFamily} を用いる.しかし,現在の
+ 実装では \cs{DeclareFontFamily} を用いても問題は生じない.
+\item 和文フォントのシェイプを定義するには,通常の \cs{DeclareFontShape} を使えば良い:
%</ja>
\begin{verbatim}
-\DeclareFontShape{JY3}{mc}{bx}{n}{<-> s*KozMinPr6N-Bold:jfm=ujis}{}
+\DeclareFontShape{JY3}{mc}{bx}{n}{<-> s*KozMinPr6N-Bold:jfm=ujis;-kern}{}
% Kozuka Mincho Pr6N Bold
\end{verbatim}
%<*ja>
仮名書体を使う場合など,複数の和文フォントを組み合わせて使いたい場合は
-\ref{ssec-altfont}節の \verb+\ltjdeclarealtfont+ と,その\LaTeX 版の\
-\verb+\DeclareAlternateKanjiFont+(\ref{ssub-nfsspat}節)を参照せよ.
+\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} と,その\LaTeX 版の\
+\cs{DeclareAlternateKanjiFont}(\ref{ssec-nfsspat}節)を参照せよ.
%</ja>
\end{itemize}
\label{ssec-fontspec}
%<*en>
To coexist with the \Pkg{fontspec} package, it is needed to load
-\Pkg{luatexja-fontspec} package in the preamble. This additional
-package automatically loads \Pkg{luatexja} and \Pkg{fontspec}
+\Pkg{luatexja-fontspec} package in the preamble, as follows:
+\begin{quote}
+\ttfamily \textbackslash usepackage[<options>]\{luatexja-fontspec\}
+\end{quote}
+This \Pkg{luatexja-fontspec} package
+automatically loads \Pkg{luatexja} and \Pkg{fontspec}
package, if needed.
%</en>
%<*ja>
-\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いるためには,
-\Pkg{luatexja-fontspec}パッケージをプリアンブルで読み込む必要がある.このパッケージ
+\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いる場合,
+\Pkg{luatexja-fontspec}パッケージを読み込む:
+\begin{quote}
+\ttfamily \textbackslash usepackage[<options>]\{luatexja-fontspec\}
+\end{quote}
+このパッケージ
は必要ならば自動で\Pkg{luatexja}パッケージと\Pkg{fontspec}パッケージを読み込む.
%</ja>
\Pkg{luatexja-fontspec}パッケージでは,以下の7つのコマンドを\Pkg{fontspec}
パッケージの元のコマンドに対応するものとして定義している:
%</ja>
-
%<*en>
\begin{center}\small
\begin{tabular}{ccccc}
\toprule
Japanese fonts
-&\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+&\verb+\newjfontfamily+\\
+&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}$^*$\\
alphabetic fonts
-&\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+&\verb+\newfontfamily+\\
+&\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\
\midrule
Japanese fonts
-&\verb+\newjfontface+&\verb+\defaultjfontfeatures+&\verb+\addjfontfeatures+\\
+&\cs{newjfontfamily}&\cs{newjfontface}
+&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\
alphabetic fonts
-&\verb+\newfontface+&\verb+\defaultfontfeatures+&\verb+\addfontfeatures+\\
+&\cs{newfontfamily}&\cs{newfontface}
+&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\
\bottomrule
\end{tabular}
\end{center}
\begin{tabular}{cccc}
\toprule
和文
-&\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+\\
+&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}\\
欧文
-&\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+\\
+&\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}\\
\midrule
和文
-&\verb+\newjfontfamily+&\verb+\newjfontface+&\verb+\defaultjfontfeatures+\\
+&\cs{newjfontfamily}&\cs{newjfontface}&\cs{defaultjfontfeatures}\\
欧文
-&\verb+\newfontfamily+&\verb+\newfontface+&\verb+\defaultfontfeatures+\\
+&\cs{newfontfamily}&\cs{newfontface}&\cs{defaultfontfeatures}\\
\midrule
和文
-&\verb+\addjfontfeatures+\\
+&\cs{addjfontfeatures}\\
欧文
-&\verb+\addfontfeatures+\\
+&\cs{addfontfeatures}\\
\bottomrule
\end{tabular}
\end{center}
%</ja>
+%<*en>
+The package option of \Pkg{luatexja-fontspec} are the followings:
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+ \item[match] If this option is specified, usual family-changing commands such as
+\cs{rmfamily},~\cs{textrm}, \cs{sffamily},~\dots\ also change Japanese font family.
+
+Note that \emph{\cs{setmonojfont} is defined
+if and only if this \texttt{\textup{match}} option is specified}.
+
+ \item[pass=<opts>]
+Specify options <opts> which will be passed to the \Pkg{fontspec} package.
+\end{list}
+The reason that \cs{setmonojfont} is not defined by default is that
+it is popular for Japanese fonts that nearly all Japanese glyphs have same
+widths. Also note that kerning information in a font is not used
+(that is, \texttt{kern} feature is set off) by default in these seven (or~eight) commands.
+This is because of the compatibility with previous versions of \LuaTeX-ja
+(see \ref{para-kern}).
+%</en>
+%<*ja>
+\Pkg{luatexja-fontspec} パッケージのオプションは以下の通りである:
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+ \item[match] このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\
+\cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} 等が
+欧文フォントだけでなく和文フォントも変更するようになる.
+
+\emph{なお,\cs{setmonojfont} はこの \texttt{match} オプションが
+指定された時のみ定義される.}この命令は標準の「タイプライタ体に対応する和文フォント」を指定する.
+
+ \item[pass=<opts>]
+\Pkg{fontspec} パッケージに渡すオプション <opts> を指定する.
+\end{list}
+標準で \cs{setmonojfont} コマンドが定義されないのは,
+和文フォントではほぼ全ての和文文字のグリフが等幅であるのが伝統的であったことによる.
+また,これらの和文用のコマンドではフォント内のペアカーニング情報は標準では使用されない,
+言い換えれば \texttt{kern} featureは標準では無効化となっている.
+これは以前のバージョンの\LuaTeX-jaとの互換性のためである(\ref{para-kern}節を参照).
+%</ja>
+
\begin{LTXexample}[width=0.4\textwidth]
\fontspec[Numbers=OldStyle]{LMSans10-Regular}
\jfontspec[CJKShape=NLC]{KozMinPr6N-Regular}
JIS~X~0208:1990→辻
\end{LTXexample}
-%<*en>
-Note that there is no command named \verb+\setmonojfont+, since it is
-popular for Japanese fonts that nearly all Japanese glyphs have same
-widths. Also note that the kerning feature is set off by default in
-these seven commands, since this feature and \textbf{JAglue} will clash (see
-\ref{para-kern}).
-%</en>
-%<*ja>
-和文フォントについては全ての和文文字のグリフがほぼ等幅であるのが普通であるため,
-\verb+\setmonojfont+ コマンドは存在しないことに注意.また,これらの和文用の7つのコマ
-ンドではKerning featureはデフォルトではoffとなっている.これはこの
-featureが\textbf{JAglue}と衝突するためである(\ref{para-kern}節を参照).
-%</ja>
-
%<en>\subsection{Presets}
%<ja>\subsection{プリセット設定}
\label{ssec-preset}
%<*en>
To use standard Japanese font settings easily, one can load \Pkg{luatexja-preset}
package with several options. This package provides functions in a part of
-\Pkg{otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato,
+\Pkg{japanese-otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato,
and loads \Pkg{luatexja-fontspec}, hence \Pkg{fontspec} internally.
If you need to pass some options to \Pkg{fontspec}, load \Pkg{fontspec} manually
\Pkg{fontspec}を読み込んでいる.
もし\Pkg{fontspec}パッケージに何らかのオプションを渡す必要がある
-\footnote{例えば,数式フォントまで置換されてしまい,\texttt{\textbackslash mathit}によってギリシャ文字の
+\footnote{例えば,数式フォントまで置換されてしまい,\cs{mathit}によってギリシャ文字の
斜体大文字が出なくなる,など.}場合は,
次のように\Pkg{luatexja-preset}の前に\Pkg{fontspec}を手動で読みこめば良い:
%</ja>
\item[nodeluxe]
%<*en>
Use one-weighted \textit{mincho} and \textit{gothic} font families.
-This means that \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+ and
+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>
%<*en>
Use \textit{mincho} with two weights (medium~and~bold),
\textit{gothic} with three weights (medium, bold~and~heavy), and \textit{rounded gothic}%
-\footnote{Provided by \texttt{\textbackslash mgfamily} and \texttt{\textbackslash textmg\{...\}},
+\footnote{Provided by \cs{mgfamily} and \cs{textmg},
because \textit{rounded gothic} is called \textit{maru gothic} (丸ゴシック) in Japanese.}.
-The heavy weight of \textit{gothic} can be used by ``changing the family'' \verb+\gtebfamily+,
+The heavy weight of \textit{gothic} can be used by ``changing the family'' \cs{gtebfamily},
or \verb+\textgteb{...}+.
-This is because \Pkg{fontspec} package can handle only medium (\verb+\mdseries+) and
-bold (\verb+\bfseries+).
+This is because \Pkg{fontspec} package can handle only medium (\cs{mdseries}) and
+bold (\cs{bfseries}).
%</en>
%<*ja>
明朝体2ウェイト・ゴシック体3ウェイトと,
-丸ゴシック体 (\verb+\mgfamily+, \verb+\textmg{...}+) を使用可能とする.
+丸ゴシック体 (\cs{mgfamily}, \verb+\textmg{...}+) を使用可能とする.
ゴシック体は細字・太字・極太の3ウェイトがあるが,
-極太ゴシック体はファミリの切り替え (\verb+\gtebfamily+, \verb+\textgteb{...}+) %
-で実現している.\Pkg{fontspec}では通常 (\verb+\mdseries+) と太字 (\verb+\bfseries+) しか扱えないために
+極太ゴシック体はファミリの切り替え (\cs{gtebfamily}, \verb+\textgteb{...}+) %
+で実現している.\Pkg{fontspec}では通常 (\cs{mdseries}) と太字 (\cs{bfseries}) しか扱えないために
このような中途半端な実装になっている.
%</ja>
\item[expert]
%<*en>
-Use horizontal kana alternates, and define a command \verb+\rubyfamily+ to use kana
+Use horizontal kana alternates, and define a command \cs{rubyfamily} to use kana
characters designed for ruby.
%</en>
-%<ja>横組専用仮名を用いる.また,\verb+\rubyfamily+ でルビ用仮名が使用可能となる.
+%<ja>横組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる.
\item[bold]
%<en>Substitute bold series of \textit{gothic} for bold series of \textit{mincho}.
%<ja>「明朝の太字」をゴシック体の太字によって代替する.
%<ja>\paragraph{多ウェイト用プリセットの一覧}
%<*en>
Besides \texttt{morisawa-pro}~and~\texttt{morisawa-pr6n} presets,
-fonts are specified by fontname, not by filename.
+fonts are specified by font name, not by file name.
%</en>
%<*ja>
\texttt{morisawa-pro}, \texttt{morisawa-pr6n}以外はフォントの指定は
\midrule
%<en>\textit{rounded gothic}
%<ja>\gt 丸ゴシック
-&&A-OTF-Jun101Pro-Light.otf&A-OTF-Jun101Pr6N-Light.otf\\
+&&A-OTF-Jun101Pro-Light.otf&A-OTF-ShinMGoPr6N-Light.otf\\
\bottomrule
\end{tabular}
\end{center}
- \item[yu-win] Yu fonts bundled with Windows~8.1.
+ \item[yu-win] Yu fonts bundled with Windows~8.1.
%<en> \\[-\dimexpr\medskipamount+\baselineskip\relax]
- \item[yu-osx] Yu fonts bundled with OSX~Mavericks.
+ \item[yu-osx] Yu fonts bundled with OSX~Mavericks.
\begin{center}\small
\begin{tabular}{clll}
\toprule
are internally specified by:
\begin{description}
\item[default] by font name (\texttt{HGMinchoE}, etc.).
-\item[{\tt 90jis}] by filename (\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}).
-\item[{\tt jis2004}] by filename (\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}).
+\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}).
\end{description}
%</en>
%<*ja>
%<*en>
-\subsection{\texttt{\textbackslash CID}, \texttt{\textbackslash UTF}, and macros in \Pkg{otf} package}
-Under \pLaTeX, \Pkg{otf} package (developed by Shuzaburo Saito) is
+\subsection{\cs{CID}, \cs{UTF}, and macros in \Pkg{japanese-otf} package}
+Under \pLaTeX, \Pkg{japanese-otf} package (developed by Shuzaburo Saito) is
used for typesetting characters which is in Adobe-Japan1-6 CID but not
in JIS~X~0208. Since this package is widely used, \LuaTeX-ja
-supports some of functions in \Pkg{otf} package.
+supports some of functions in \Pkg{japanese-otf} package.
If you want to use these functions, load \Pkg{luatexja-otf} package.
%</en>
%<*ja>
-\subsection{\texttt{\textbackslash CID}, \texttt{\textbackslash UTF}と\Pkg{otf}パッケージのマクロ}
+\subsection{\cs{CID}, \cs{UTF}と\Pkg{otf}パッケージのマクロ}
\pLaTeX では,JIS~X~0208にないAdobe-Japan1-6の文字を出力するために,
齋藤修三郎氏による\Pkg{otf}パッケージが用いられていた.このパッケージは
広く用いられているため,\LuaTeX-jaにおいても\Pkg{otf}パッケージの機能の
これら3オプションについては,
\Pkg{luatexja-preset} パッケージにプリセットを使う時に一緒に指定するか,
-あるいは対応する内容を\ref{ssub-chgfnt}節 (NFSS2) や
+あるいは対応する内容を\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節 (NFSS2) や
\ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある.
%</ja>
There are many parameters in \LuaTeX-ja. And due to the behavior of \LuaTeX,
most of them are not stored as internal register of \TeX, but as an
original storage system in \LuaTeX-ja. Hence, to assign or acquire those
-parameters, you have to use commands \verb+\ltjsetparameter+ and
-\verb+\ltjgetparameter+.
+parameters, you have to use commands \cs{ltjsetparameter} and
+\cs{ltjgetparameter}.
%</en>
%<*ja>
\LuaTeX-jaには多くのパラメータが存在する.そして\LuaTeX の仕様のために,
その多くは\TeX のレジスタにではなく,\LuaTeX-ja独自の方法で保持されている.
-これらのパラメータを設定・取得するためには \verb+\ltjsetparameter+ と \verb+\ltjgetparameter+ を
+これらのパラメータを設定・取得するためには \cs{ltjsetparameter} と \cs{ltjgetparameter} を
用いる.
%</ja>
%<*en>
\LuaTeX-ja divides the Unicode codespace \texttt{U+0080}--\texttt{U+10FFFF}
-into \emph{character ranges},
-numbered 1 to 217. The grouping can be (globally) customized by \verb+\ltjdefcharrange+.
+into \emph{character ranges},
+numbered 1 to 217. The grouping can be (globally) customized by \cs{ltjdefcharrange}.
The next line adds whole characters in Supplementary Ideographic Plane
and the character ``漢'' to the character range~100.
%</en>
%<*ja>
\LuaTeX-jaは,Unicodeの \texttt{U+0080}--\texttt{U+10FFFF} の空間を
1番から217番までの\emph{文字範囲}に分割している.
-区分けは \verb+\ltjdefcharrange+ を用いることで(グローバルに)変更することができ,
+区分けは \cs{ltjdefcharrange} を用いることで(グローバルに)変更することができ,
例えば,次は追加漢字面(SIP)にある全ての文字と「漢」を「100番の文字範囲」に追加する.
%</ja>
\begin{lstlisting}
\end{lstlisting}
%<*en>
A character can belong to only one character range.
-For example, whole SIP belong to the range~4 in the default setting of \LuaTeX-ja,
+For example, whole SIP belong to the range~4 in the default setting of \LuaTeX-ja,
and if you execute the above line, then SIP will belong to the range~100 and be
removed from the range~4.
%</en>
\end{verbatim}
%<*en>
The argument to \textsf{jacharrange} parameter is a list of non-zero integer.
-Negative integer $-n$ in the list means that ``each character in the range~$n$ is a \textbf{ALchar}'', and positive integer $+n$ means
-that ``\dots\ is a \textbf{JAchar}''.
+Negative integer $-n$ in the list means that ``each character in the range~$n$ is an
+\textbf{ALchar}'',
+and positive integer $+n$ means that ``\dots\ is a \textbf{JAchar}''.
%</en>
%<*ja>
\textsf{jacharrange}パラメータの引数は非零の整数のリストである.
number shows whether each character in the range is treated as
\textbf{JAchar}s or not by default. These settings are similar to the
\texttt{prefercjk} settings defined in \texttt{PXbase} bundle.
-Any characters above \texttt{U+0080} which does not belong to
+Any characters above \texttt{U+0080} which does not belong to
these eight ranges belongs to the character range~217.
%</en>
%<*ja>
%<ja>\textbf{JAglue}は以下の3つのカテゴリに分類される:
\begin{itemize}
%<*en>
-\item Glues/kerns specified in JFM. If \verb+\inhibitglue+ is issued
+\item Glues/kerns specified in JFM. If \cs{inhibitglue} is issued
around a Japanese character, this glue will not be inserted at the
place.
%</en>
%<*ja>
-\item JFMで指定されたグルー/カーン.もし \verb+\inhibitglue+ が和文文字の周りで
+\item JFMで指定されたグルー/カーン.もし \cs{inhibitglue} が和文文字の周りで
発行されていれば,このグルーは挿入されない.
%</ja>
%<*en>
kanjiskip}).
%</en>
%<*ja>
-\item デフォルトで2つの\textbf{JAchar}の間に挿入されるグルー(\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}).
+\item デフォルトで2つの\textbf{JAchar}の間に挿入されるグルー(\Param{kanjiskip}).
%</ja>
%<*en>
\item The default glue which inserted between a \textbf{JAchar} and an
- \textbf{ALchar} (\Param{\hyperlink{fld:xks}{xkanjiskip}}).
+ \textbf{ALchar} (\Param{xkanjiskip}).
%</en>
%<*ja>
-\item デフォルトで\textbf{JAchar}と\textbf{ALchar}の間に挿入されるグルー(\Param{\hyperlink{fld:xks}{xkanjiskip}}).
+\item デフォルトで\textbf{JAchar}と\textbf{ALchar}の間に挿入されるグルー(\Param{xkanjiskip}).
%</ja>
\end{itemize}
%<*en>
-The value (a skip) of \Param{\hyperlink{fld:kanjiskip}{kanjiskip}} or
-\Param{\hyperlink{fld:xks}{xkanjiskip}} can be changed as the following.
+The value (a skip) of \Param{kanjiskip} or
+\Param{xkanjiskip} can be changed as the following.
Note that only their values \emph{at the end of a paragraph or a hbox are
adopted in the whole paragraph or the whole hbox.
}
%</en>
%<*ja>
-\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}や\Param{\hyperlink{fld:xks}{xkanjiskip}}の値
+\Param{kanjiskip}や\Param{xkanjiskip}の値
は以下のようにして変更可能である.
%</ja>
\begin{lstlisting}
\ltjsetparameter{kanjiskip={0pt plus 0.4pt minus 0.4pt},
xkanjiskip={0.25\zw plus 1pt minus 1pt}}
\end{lstlisting}
+%<*en>
+Here \cs{zw} is a internal dimension
+which stores fullwidth of the current Japanese font.
+This \cs{zw} can be used as the unit \texttt{zw} in \pTeX.
+
+The value of these parameter can be get by \cs{ltjgetparameter}.
+Note that the result by \cs{ltjgetparameter} is \emph{not} the internal quantities,
+but \emph{a string} (hence \cs{the} cannot be prefixed).
+%</en>
+%<*ja>
+ここで,\cs{zw} は現在の和文フォントの全角幅を表す長さであり,
+\pTeX における長さ単位 \texttt{zw} と同じように使用できる.
+
+これらのパラメータの値は以下のように取得できる.
+戻り値は内部値ではなく\emph{文字列}である(\cs{the} は前置できない)ことに注意してほしい:
+%</ja>
+\begin{LTXexample}
+kanjiskip: \ltjgetparameter{kanjiskip},\\
+xkanjiskip: \ltjgetparameter{xkanjiskip}
+\end{LTXexample}
%<*en>
-It may occur that JFM contains the data of ``ideal width of
-\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}''
-and/or ``ideal width of \Param{\hyperlink{fld:xks}{xkanjiskip}}''.
-To use these data from JFM, set the value of \Param{\hyperlink{fld:kanjiskip}{kanjiskip}} or
-\Param{\hyperlink{fld:xks}{xkanjiskip}} to \verb+\maxdimen+.
+It may occur that JFM contains the data of ``ideal width of
+\Param{kanjiskip}''
+and/or ``ideal width of \Param{xkanjiskip}''.
+To use these data from JFM, set the value of \Param{kanjiskip} or
+\Param{xkanjiskip} to \cs{maxdimen}
+(these ``ideal width'' cannot be retrived by \cs{ltjgetparameter}).
%</en>
%<*ja>
-JFMは「望ましい\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の値」や
-「望ましい\Param{\hyperlink{fld:xks}{xkanjiskip}}の値」を持っていることがある.
-これらのデータを使うためには,\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}や%
-\Param{\hyperlink{fld:xks}{xkanjiskip}}の値を \verb+\maxdimen+ の値に設定すればよい.
+JFMは「望ましい\Param{kanjiskip}の値」や
+「望ましい\Param{xkanjiskip}の値」を持っていることがある.
+これらのデータを使うためには,\Param{kanjiskip}や%
+\Param{xkanjiskip}の値を \cs{maxdimen} の値に設定すればよいが,
+\cs{ltjgetparameter} によって取得することはできないので注意が必要である.
%</ja>
%<en>\subsection{Insertion Setting of \Param{xkanjiskip}}
%<ja>\subsection{\Param{xkanjiskip} の挿入設定}
%<*en>
-It is not desirable that \Param{\hyperlink{fld:xks}{xkanjiskip}} is inserted into every
+It is not desirable that \Param{xkanjiskip} is inserted into every
boundary between \textbf{JAchar}s and \textbf{ALchar}s. For example,
-\Param{\hyperlink{fld:xks}{xkanjiskip}} should not be inserted after opening parenthesis
+\Param{xkanjiskip} should not be inserted after opening parenthesis
(\textit{e.g.}, compare ``(あ'' and ``(\hskip\ltjgetparameter{xkanjiskip}あ'').
-\LuaTeX-ja can control whether \Param{\hyperlink{fld:xks}{xkanjiskip}} can be inserted
+\LuaTeX-ja can control whether \Param{xkanjiskip} can be inserted
before/after a character, by changing \Param{jaxspmode} for \textbf{JAchar}s and
\Param{alxspmode} parameters \textbf{ALchar}s respectively.
%</en>
%<*ja>
-\Param{\hyperlink{fld:xks}{xkanjiskip}}がすべての\textbf{JAchar}と\textbf{ALchar}の境界に
-挿入されるのは望ましいことではない.例えば,\Param{\hyperlink{fld:xks}{xkanjiskip}}は開き括弧の
+\Param{xkanjiskip}がすべての\textbf{JAchar}と\textbf{ALchar}の境界に
+挿入されるのは望ましいことではない.例えば,\Param{xkanjiskip}は開き括弧の
後には挿入されるべきではない(「(あ」と「(\hskip\ltjgetparameter{xkanjiskip}あ」を
比べてみよ).
-\LuaTeX-jaでは\Param{\hyperlink{fld:xks}{xkanjiskip}}をある文字の前/後に挿入するかどうかを,
+\LuaTeX-jaでは\Param{xkanjiskip}をある文字の前/後に挿入するかどうかを,
\textbf{JAchar}に対しては\Param{jaxspmode}を,\textbf{ALchar}に対しては
\Param{alxspmode}をそれぞれ変えることで制御することができる.
%</ja>
%<*en>
The second argument \texttt{preonly} means that the insertion of
-\Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed before this character, but not after.
+\Param{xkanjiskip} is allowed before this character, but not after.
the other possible values are \texttt{postonly}, \texttt{allow}, and \texttt{inhibit}.
%</en>
%<*ja>
-2つ目の引数の \texttt{preonly}は「\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入はこの文字の
+2つ目の引数の \texttt{preonly}は「\Param{xkanjiskip}の挿入はこの文字の
前でのみ許され,後では許さない」ことを意味する.他に指定可能な値は
\texttt{postonly}, \texttt{allow}, \texttt{inhibit}である.
%</ja>
%</ja>
%<*en>
-If you want to enable/disable all insertions of \Param{\hyperlink{fld:kanjiskip}{kanjiskip}} and
-\Param{\hyperlink{fld:xks}{xkanjiskip}}, set \Param{autospacing} and \Param{autoxspacing}
+If you want to enable/disable all insertions of \Param{kanjiskip} and
+\Param{xkanjiskip}, set \Param{autospacing} and \Param{autoxspacing}
parameters to \texttt{true}/\texttt{false}, respectively.
%</en>
%<*ja>
-もし全ての\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}と\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入を有効化/無効化
+もし全ての\Param{kanjiskip}と\Param{xkanjiskip}の挿入を有効化/無効化
したければ,それぞれ\Param{autospacing}と\Param{autoxspacing}を
\texttt{true}/\texttt{false}に設定すればよい.
%</ja>
%<*en>
To make a match between a Japanese font and an alphabetic font, sometimes
shifting of the baseline of one of the pair is needed. In \pTeX, this is achieved
-by setting \verb+\ybaselineshift+ to a non-zero length (the
+by setting \cs{ybaselineshift} to a non-zero length (the
baseline of \textbf{ALchar} is shifted below). However, for documents
whose main language is not Japanese, it is good to shift the baseline of
Japanese fonts, but not that of alphabetic fonts.
%</en>
%<*ja>
和文フォントと欧文フォントを合わせるためには,時々どちらかのベースラインの移動が
-必要になる.\pTeX ではこれは \verb+\ybaselineshift+ を設定することで
+必要になる.\pTeX ではこれは \cs{ybaselineshift} を設定することで
なされていた(\textbf{ALchar}のベースラインがその分だけ下がる).しかし,日本語が主ではない
文書に対しては,欧文フォントではなく和文フォントのベースラインを移動した方がよい.
このため,\LuaTeX-jaでは欧文フォントのベースラインのシフト量
%<*ja>
\paragraph{数式における挙動:\pTeX との違い}
\textbf{ALchar}のベースラインを補正する \Param{yalbaselineshift} パラメータは
-ほぼ\pTeX における \verb+\ybaselineshift+ に対応しているものであるが,
+ほぼ\pTeX における \cs{ybaselineshift} に対応しているものであるが,
数式中の挙動は異なっているので注意が必要である.
-例えば,表\ref{tab:math_bsa}のように,数式中に明示的に現れた \verb+\hbox+ は,
+例えば,表\ref{tab:math_bsa}のように,数式中に明示的に現れた \cs{hbox} は,
\begin{itemize}
- \item \pTeX では,ボックス全体が \verb+\ybaselineshift+ だとシフトされるので,
+ \item \pTeX では,ボックス全体が \cs{ybaselineshift} だとシフトされるので,
表\ref{tab:math_bsa}中の``い''のように,ボックス中の和文文字は
- \verb+\ybaselineshift+だけシフトされ,一方,``for all''のように,
+ \ \cs{ybaselineshift} だけシフトされ,一方,``for all''のように,
ボックス内の欧文文字は2重にシフトされることになる.
\item 一方,\LuaTeX-jaではそのようなことはおこらず,
- 数式中に明示的に現れた \verb+\hbox+ はシフトしない.そのため,
+ 数式中に明示的に現れた \cs{hbox} はシフトしない.そのため,
表\ref{tab:math_bsa}中の``い''も``for all''も,それぞれ本文中に
書かれたときと同じ上下位置に組まれる.
\end{itemize}
\par}\\
\noalign{\vskip-\origbaselineskip}
\bottomrule
-\end{tabular}
+\end{tabular}
\end{table}
%</ja>
\label{part-ref}
%<*ja>
-\section{\LuaTeX-jaにおける \texttt{\textbackslash catcode}}
-\subsection{予備知識:\pTeX と\upTeX における \texttt{\textbackslash kcatcode}}
+\section{\LuaTeX-jaにおける \cs{catcode}}
+\subsection{予備知識:\pTeX と\upTeX における \cs{kcatcode}}
\pTeX,\upTeX においては,和文文字が制御綴内で利用できるかどうか
-は \verb+\kcatcode+ の値によって決定されるのであった.
+は \cs{kcatcode} の値によって決定されるのであった.
詳細は表\ref{table-kcat}を参照されたい.
%</ja>
%<*en>
-\section{\texttt{\textbackslash catcode} in \LuaTeX-ja}
-\subsection{Preliminaries: \texttt{\textbackslash kcatcode} in \pTeX\ and \upTeX}
-In \pTeX~and~\upTeX, the value of \verb+\kcatcode+ determines
+\section{\cs{catcode} in \LuaTeX-ja}
+\subsection{Preliminaries: \cs{kcatcode} in \pTeX\ and \upTeX}
+In \pTeX~and~\upTeX, the value of \cs{kcatcode} determines
whether a Japanese character can be used in a control word.
For the detail, see Table~\ref{table-kcat}.
%</en>
\begin{table}[t]
\small
-\caption{\texttt{\textbackslash kcatcode} in \upTeX}
+\caption{\cs{kcatcode} in \upTeX}
\label{table-kcat}
-\medskip
+%<en>\medskip
\noindent\hfill
\begin{tabular}{ccccc}
\toprule
-\bfseries \verb+\kcatcode+&
+\bfseries \cs{kcatcode}&
%<*en>
\bfseries meaning&
\bfseries control word&
\medskip
%<*ja>
-文字ウィドウ処理\hbox{}$^*$: 「漢字が一文字だけ次の行に行くのを防ぐ」\
-\texttt{\textbackslash jcharwidowpenalty} が,
+文字ウィドウ処理\hbox{}$^*$: 「漢字が一文字だけ次の行に行くのを防ぐ」\
+\cs{jcharwidowpenalty} が,
その文字の直前に挿入されうるか否か,を示す.
%</ja>
-\end{table}
+\end{table}
%<*en>
-\verb+\kcatcode+ can be set by a row of JIS~X~0208 in \pTeX,
+\cs{kcatcode} can be set by a row of JIS~X~0208 in \pTeX,
and generally by a Unicode block\footnote{%
\upTeX\ divides \texttt{U+FF00}--\texttt{U+FFEF} (Halfwidth and Fullwidth Forms)
- into three subblocks, and \texttt{\textbackslash kcatcode} can be set by a subblock.
+ into three subblocks, and \cs{kcatcode} can be set by a subblock.
}
-in \upTeX. So characters which can be used in a control word
+in \upTeX. So characters which can be used in a control word
slightly differ between \pTeX~and~\upTeX.
%</en>
%<*ja>
-\pTeX では \verb+\kcatcode+ はJIS~X~0208の区単位,
+\pTeX では \cs{kcatcode} はJIS~X~0208の区単位,
\upTeX では概ねUnicodeブロック単位\footnote{%
\texttt{U+FF00}--\texttt{U+FFEF} (Halfwidth and Fullwidth Forms)は
「全角英数字」「半角カナ」「その他」と3つに分割されており,
- それぞれ別々に \texttt{\textbackslash kcatcode} が指定できるようになっている.
+ それぞれ別々に \cs{kcatcode} が指定できるようになっている.
}で設定可能になっている.そのため,\pTeX と\upTeX の初期状態では
制御綴内で使用可能な文字が微妙に異なっている.
%</ja>
%<*en>
\subsection{Case of \LuaTeX-ja}
-The role of \verb+\kcatcode+ in \pTeX~and~\upTeX\ caan be
-divided into the following four kinds,
+The role of \cs{kcatcode} in \pTeX~and~\upTeX\ can be
+divided into the following four kinds,
and \LuaTeX-ja can control these four kinds separately:
\begin{itemize}
\item
-\emph{Distinction between\textbf{JAchar} or \textbf{ALchar}}
+\emph{Distinction between \textbf{JAchar} or \textbf{ALchar}}
is controlled by using the character range, see Subsection~\ref{ssec-setrange}.
\item
\emph{Whether the character can be used in a control word}
-is controlled by setting \verb+\catcode+ to 11~(enabled) or 12~(disabled), as usual.
+is controlled by setting \cs{catcode} to 11~(enabled) or 12~(disabled), as usual.
\item
\emph{Whether \Param{jcharwidowpenalty} can be inserted before the character}
is controlled by the lowermost bit of the \Param{kcatcode} parameter.
%</en>
%<*ja>
\subsection{\LuaTeX-jaの場合}
-\LuaTeX-jaでは,従来の\pTeX・\upTeX における \verb+\kcatcode+ の役割を
+\LuaTeX-jaでは,従来の\pTeX・\upTeX における \cs{kcatcode} の役割を
分割している:
\begin{description}
- \item[欧文/和文の区別 (\upTeX)]
-\verb+\ltjdefcharrange+ と\textsf{jacharrange}パラメータ(\ref{ssec-setrange}節)
+ \item[欧文/和文の区別 (\upTeX)]
+\cs{ltjdefcharrange} と\textsf{jacharrange}パラメータ(\ref{ssec-setrange}節)
\item[制御綴中に使用可か]
-\LuaTeX 自身の \verb+\catcode+ でよい
+\LuaTeX 自身の \cs{catcode} でよい
\item[\Param{jcharwidowpenalty}が挿入可か]
\Param{kcatcode}パラメータの最下位ビット
\item[直後の改行の無視]
%</ja>
%<*en>
-Default setting of \verb+\catcode+ of \LuaTeX\ can be found
+Default setting of \cs{catcode} of \LuaTeX\ can be found
in \texttt{luatex-unicode-letters.tex},
which is based on \texttt{unicode-letters.tex} (for \XeTeX).
-However, the default setting of \verb+\catcode+ differs
+However, the default setting of \cs{catcode} differs
between \XeTeX\ and \LuaTeX, by the following reasons:
\begin{itemize}
\item \texttt{luatex-unicode-letters.tex} is based on old \texttt{unicode-letters.tex}.
\item The latter half of \texttt{unicode-letters.tex} sets
-\verb+\catcode+ of Kanji and kana characters to 11,
-via setting \verb+\XeTeXcharclass+.
+\cs{catcode} of Kanji and kana characters to 11,
+via setting \cs{XeTeXcharclass}.
However, this latter half is simply omitted in
\texttt{luatex-unicode-letters.tex}, hence
-\verb+\catcode+ of Kanji and kana characters remains 12 in \LuaTeX.
+\cs{catcode} of Kanji and kana characters remains 12 in \LuaTeX.
\end{itemize}
-In other words, Kanji nor kana characters cannot be used in
+In other words, Kanji nor kana characters cannot be used in
a control word, in the default setting of \LuaTeX.
-This would be inconvenient for \pTeX~users to shifting to \LuaTeX-ja,
-since several control words containing Kanji, such as \verb+\西暦+,
+This would be inconvenient for \pTeX~users to shifting to \LuaTeX-ja,
+since several control words containing Kanji, such as \verb+\西暦+,
are used in \pTeX.
Hence, \LuaTeX-ja have a counterpart of \texttt{unicode-letters.tex}
-for \LuaTeX, \emph{to match the \texttt{\textbackslash catcode} setting with that of \XeTeX.}
+for \LuaTeX, \emph{to match the \cs{catcode} setting with that of \XeTeX.}
%</en>
%<*ja>
ネイティブにUnicode全部の文字を扱える\XeTeX や\LuaTeX では,
-文字が制御綴内で使用できるかは通常の欧文文字と同じく \verb+\catcode+
-で指定することとなる.\XeTeX における \verb+\catcode+ の初期設定は\
+文字が制御綴内で使用できるかは通常の欧文文字と同じく \cs{catcode}
+で指定することとなる.\XeTeX における \cs{catcode} の初期設定は\
\texttt{unicode-letters.tex} 中に記述されており,\LuaTeX ではそれを
元にした \texttt{luatex-unicode-letters.tex} を用いている.
-だが,\XeTeX における \verb+\catcode+ の初期設定と
+だが,\XeTeX における \cs{catcode} の初期設定と
\LuaTeX におけるそれは一致していない:
\begin{itemize}
- \item \texttt{luatex-unicode-letters.tex} の元になった\
+ \item \texttt{luatex-unicode-letters.tex} の元になった\
\texttt{unicode-letters.tex} が古い
\item \texttt{unicode-letters.tex} の後半部では
-\verb+\XeTeXcharclass+ の設定を行なっており,
-それによって漢字や仮名の \verb+\catcode+ が11に設定されている.
+\cs{XeTeXcharclass} の設定を行なっており,
+それによって漢字や仮名の \cs{catcode} が11に設定されている.
しかし,\texttt{luatex-unicode-letters.tex} ではこの「後半部」が
-まるごと省略されており,漢字や仮名の \verb+\catcode+ は12のまま.
+まるごと省略されており,漢字や仮名の \cs{catcode} は12のまま.
\end{itemize}
言い換えると,\LuaTeX の初期状態では漢字や仮名を制御綴内に
使用することはできない.
\centering\small
%<en>\caption{Difference of the set of non-kanji JIS~X~0208 characters which can be used in a control word}
%<ja>\caption{制御綴中に使用出来るJIS~X~0208非漢字の違い}
+%<en>\medskip
\label{table-kcat-diff}
\def\D#1#2#3#4{%
{\fboxsep0pt\fcolorbox{cyan}{white}%
{\large\char"#1#2#3#4}}\ (\texttt{U+#1#2#3#4})} %"
\leavevmode\hbox to 0pt{\hss\begin{tabular}{cccccc}
\toprule
-%<en>&\bf row&\bf column&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
+%<en>&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
%<ja>&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\
\midrule
\D 3000&1&1&N&N&Y\\
\end{tabular}\qquad
\begin{tabular}{cccccc}
\toprule
-%<en>&\bf row&\bf column&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
+%<en>&\bf row&\bf col.&\bf \pTeX&\bf \upTeX&\bf\LuaTeX-ja\\
%<ja>&\bf 区&\bf 点&\bf \pTeX&\bf \upTeX&\fontseries{b}\selectfont\LuaTeX-ja\\
\midrule
\D FF0F&1&31&N&N&Y\\
Because the engine differ, so non-kanji JIS~X~0208 characters
which can be used in a control word differ in \pTeX, in \upTeX,~and~in \LuaTeX-ja.
Table~\ref{table-kcat-diff} shows the difference.
-Except for four characters ``・'',~``゛'', ``゜'',~``゠'',
+Except for four characters ``・'',~``゛'', ``゜'',~``゠'',
\LuaTeX-ja admits more characters in a control word than \upTeX.
-\emph{Note that the ideographic space~\texttt{U+3000} can be used
+\emph{Note that the ideographic space~\texttt{U+3000} can be used
in a control word in \LuaTeX-ja.}
-Difference becomes larger, if we consider
+Difference becomes larger, if we consider
non-kanji JIS~X~0213 characters.
For the detail, see \url{https://github.com/h-kitagawa/kct}.
%</en>
\LuaTeX-jaでは制御綴中に使用可能であることである.}
JIS~X~0213の範囲に広げると,差異はさらに大きくなる.
-詳細については例えば \url{https://github.com/h-kitagawa/kct} 中の\
+詳細については例えば \url{https://github.com/h-kitagawa/kct} 中の\
\texttt{kct-uni-out.pdf} などを参照すること.
%</ja>
+
+
+%<*ja>
+\section{縦組}
+\label{sec-direction}
+\LuaTeX 本体でも,$\Omega$・$\aleph$由来の機能として,複数の組方向をサポートしている.
+しかし,\LuaTeX がサポートするのは \texttt{TLT},~\texttt{TRT}, \texttt{RTT},~\texttt{LTL}\
+のみであり,日本語の縦組に使うのは望ましくない\footnote{%
+和文文字だけならば \texttt{RTT} を使えばなんとかなると思うが,
+欧文文字が入ってきた場合はうまくいかず,\texttt{RTR} という組方向が必要になる.
+}.そのため,\LuaTeX-jaでは横組(\texttt{TLT})で組んだボックスを回転させる方式で
+縦組を実装した.
+
+\subsection{サポートする組方向}
+\begin{table}[t]
+\caption{\LuaTeX-ja のサポートする組方向}
+%<en>\medskip
+\label{tab-dir}
+\centering\small
+\def\obox#1{%
+ \setbox0=\hbox{\yoko\hbox{#1%
+ \large\ltjsetparameter{talbaselineshift=0pt}%
+ \vrule height 25pt width 0.4pt depth 15pt\kern-.2pt%
+ \raise25pt\hbox to 0pt{\hss\composite{*r^@{>>}}\hss}%
+ \raise-15pt\hbox to 0pt{\hss\composite{*l^@{>|}}\hss}\kern.2pt%
+ \vrule height.2pt depth.2pt width 60pt\hbox to 0pt{\hss\composite{*d^@{>}}\hss}\kern-60pt
+ \hbox to 60pt{\,銀は、Ag\hss}}}%
+ \raise\dimexpr 0.5\ltjgetdp0-0.5\ltjgetht0\box0%
+}
+\begin{tabular}{>{\bfseries}lcccc}
+\toprule
+&\cs{yoko}(横組)&\cs{tate}(縦組)
+ &\cs{dtou}&\cs{utod}\\
+\midrule
+字送り方向&水平右向き(→)&垂直下向き(↓)&垂直上向き(↑)&垂直下向き(↓)\\
+行送り方向&垂直下向き(↓)&水平左向き(←)&水平右向き(→)&水平左向き(←)\\
+使用する和文フォント&横組用(\cs{jfont})&縦組用(\cs{tfont})&
+\multicolumn{2}{c}{%
+ 横組用(\cs{jfont})の$90^\circ$回転}\\[\smallskipamount]
+組版例\null $^*$ &\obox{\yoko}&\obox{\tate}&\obox{\dtou}&\obox{\utod}\\
+\noalign{\medskip}
+\bottomrule
+\end{tabular}
+
+\medskip\raggedright
+\def\R#1{%
+ \raise0.38\zw\hbox{%
+ \vrule height.2pt depth.2pt width2\zw%
+ \hbox to 0pt{\hss\composite{*d^@{#1}}\hss}%
+ }%
+}
+$^*$\ 幅(width),高さ(height),深さ(depth)の増加方向を,
+それぞれ「\R{>}」,「\R{>>}」,「\R{>|}」で表している.
+\raggedright
+
+\end{table}
+
+\LuaTeX-jaがサポートする組方向は表\ref{tab-dir}に示す4つである.
+4列目の \cs{dtou} は聞き慣れない命令だと思うが,
+実は\pTeX に同名の命令が(ドキュメントには書かれていないが)存在する.
+Down-TO-Upの意味なのだろう.\cs{dtou} を使用する機会はないだろうが,
+\LuaTeX-jaではデバッグ用に実装している.
+5列目の \cs{utod} は,\pTeX で言う「縦数式ディレクション」に相当するものである.
+
+組方向は,\cs{yoko},~\cs{tate}, \cs{dtou},~\cs{utod} をそれぞれ使用することで,
+現在作成中のリストやボックスが空の時にのみ変更可能である.
+また,縦組中の数式内のボックスは\pTeX と同じように組方向が \cs{utod} となる.
+
+\subsection{異方向のボックス}
+
+縦組の中に「42」などの2桁以上の算用数字を横組で組むなど,
+異なる組方向を混在させることがしばしば行われる.
+組方向の混在も\pTeX と同じようにできる:
+\begin{LTXexample}
+ここは横組% yoko
+\hbox{\tate % tate
+ \hbox{縦組}% tate
+ の中に
+ \hbox{\yoko 横組の内容}% yoko
+ を挿入する
+}
+また横組に戻る% yoko
+\end{LTXexample}
+
+異なる組方向のボックスを配置した場合にどう組まれるかの仕様も,\pTeX を
+踏襲している.表\ref{tab-diffdir}に示す.
+この表\ref{tab-diffdir}では \cs{utod} 方向についての記述を省略しているが,
+それは縦組の場合と全く同じであるためである.
+内部では,異なる組方向のボックスを配置補正用のボックス
+(本ドキュメントでは\textit{dir\_node}と呼ぶ)に包む形態をとっている.
+
+\begin{table}[t]
+\caption{異方向のボックスの配置}
+%<en>\medskip
+\label{tab-diffdir}
+ \centering\small\unitlength3mm
+ \def\TATEeg{%
+ \hbox{\smash{\begin{picture}(0,0)(-2,0)
+ \thicklines
+ \polyline(-2,0)(-2,-7)(5,-7)(5,0)
+ \put(0,0){\circle*{0.3}}
+ \put(0,0){\vector(1,0){5}} \put(2.5,-0.2){\makebox(0,0)[t]{$h_{\mathrm{T}}$}}
+ \put(0,0){\vector(-1,0){2}}\put(-1,-0.2){\makebox(0,0)[t]{$d_{\mathrm{T}}$}}
+ \put(0,0){\vector(0,-1){7}}\put(0.2,-3.5){\makebox(0,0)[l]{$w_{\mathrm{T}}$}}
+ \end{picture}}}
+ }
+ \def\DTOUeg{%
+ \hbox{\smash{\begin{picture}(0,0)(-5,0)
+ \thicklines
+ \polyline(-5,0)(-5,7)(2,7)(2,0)
+ \put(0,0){\circle*{0.3}}
+ \put(0,0){\vector(-1,0){5}} \put(-2.5,0.3){\makebox(0,0)[b]{$h_{\mathrm{D}}$}}
+ \put(0,0){\vector(1,0){2}}\put(1,0.3){\makebox(0,0)[b]{$d_{\mathrm{D}}$}}
+ \put(0,0){\vector(0,1){7}}\put(-0.2,3.5){\makebox(0,0)[r]{$w_{\mathrm{D}}$}}
+ \end{picture}}}
+ }
+ \def\YOKOeg{%
+ \hbox{\smash{\begin{picture}(0,0)
+ \thicklines
+ \polyline(0,5)(7,5)(7,-2)(0,-2)
+ \put(0,0){\circle*{0.3}}
+ \put(0,0){\vector(0,1){5}} \put(0.3,2.5){\makebox(0,0)[l]{$h_{\mathrm{Y}}$}}
+ \put(0,0){\vector(0,-1){2}}\put(0.3,-1){\makebox(0,0)[l]{$d_{\mathrm{Y}}$}}
+ \put(0,0){\vector(1,0){7}}\put(3.5,0.2){\makebox(0,0)[b]{$w_{\mathrm{Y}}$}}
+ \end{picture}}}
+ }
+\begin{tabular}{ccc}
+\toprule
+\emph{横組中に配置}&\emph{縦組中に配置}&%
+\emph{組方向 \cs{dtou} 中に配置}\\
+\midrule
+ \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
+ \put(0,0){\line(1,0){3.8}}
+ \put(4,7){\TATEeg}
+ \put(11.2,0){\line(1,0){3.8}}
+%
+ \put(2,7){\line(1,0){1.8}}
+ \put(3,3.5){\vector(0,1){3.5}\vector(0,-1){3.5}}
+ \put(2.8,3.5){\makebox(0,0)[r]{$H_{\mathrm{Y}}$}}
+ \put(3,-2){\vector(0,1){2}}
+ \put(2.8,-1){\makebox(0,0)[r]{$D_{\mathrm{Y}}$}}
+%
+ \put(4,7.2){\line(0,1){1.8}}
+ \put(11,7.2){\line(0,1){1.8}}
+ \put(6,8){\vector(-1,0){2}}
+ \put(9,8){\vector(1,0){2}}
+ \put(7.5,8){\makebox(0,0){$W_{\mathrm{Y}}$}}
+%
+ \end{picture}\vspace{-\baselineskip}
+ \begin{align*}
+ W_{\mathrm{Y}} &= h_{\mathrm{T}}+d_{\mathrm{T}},\\
+ H_{\mathrm{Y}} &= w_{\mathrm{T}},\\
+ D_{\mathrm{Y}} &=0\,\mathrm{pt}
+ \end{align*}%
+ }&
+ \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
+ \put(7.5,-0.2){\line(0,-1){2.8}}
+ \put(4,2){\YOKOeg}
+ \put(7.5, 7.2){\line(0,1){3.8}}
+%
+ \put(2,7){\line(1,0){1.8}}
+ \put(2,0){\line(1,0){1.8}}
+ \put(3,5){\vector(0,1){2}}
+ \put(3,2){\vector(0,-1){2}}
+ \put(3,3.5){\makebox(0,0){$W_{\mathrm{T}}$}}
+%
+ \put(4,7.2){\line(0,1){1.8}}
+ \put(11,7.2){\line(0,1){1.8}}
+ \put(8,8){\vector(-1,0){0.5}\vector(1,0){3}}
+ \put(7,8){\vector(-1,0){3}\vector(1,0){0.5}}
+ \put(9.25,8.2){\makebox(0,0)[b]{$H_{\mathrm{T}}$}}
+ \put(5.75,8.2){\makebox(0,0)[b]{$D_{\mathrm{T}}$}}
+%
+ \end{picture}\vspace{-\baselineskip}
+ \begin{align*}
+ W_{\mathrm{T}} &= h_{\mathrm{Y}}+d_{\mathrm{Y}},\\
+ H_{\mathrm{T}} &= w_{\mathrm{Y}}/2,\\
+ D_{\mathrm{T}} &= w_{\mathrm{Y}}/2
+ \end{align*}%
+ }&
+ \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
+ \put(11,-0.2){\line(0,-1){2.8}}
+ \put(4,2){\YOKOeg}
+ \put(11, 7.2){\line(0,1){3.8}}
+%
+ \put(2,7){\line(1,0){1.8}}
+ \put(2,0){\line(1,0){1.8}}
+ \put(3,5){\vector(0,1){2}}
+ \put(3,2){\vector(0,-1){2}}
+ \put(3,3.5){\makebox(0,0){$W_{\mathrm{D}}$}}
+%
+ \put(4,7.2){\line(0,1){1.8}}
+ \put(11,7.2){\line(0,1){1.8}}
+ \put(7.5,8){\vector(-1,0){3.5}\vector(1,0){3.5}}
+ \put(13,8){\vector(-1,0){2}}
+ \put(7.5,8.2){\makebox(0,0)[b]{$H_{\mathrm{D}}$}}
+ \put(12,8.2){\makebox(0,0)[b]{$D_{\mathrm{D}}$}}
+%
+ \end{picture}\vspace{-\baselineskip}
+ \begin{align*}
+ W_{\mathrm{D}} &= h_{\mathrm{Y}}+d_{\mathrm{Y}},\\
+ H_{\mathrm{D}} &= w_{\mathrm{Y}},\\
+ D_{\mathrm{D}} &= 0\,\mathrm{pt}
+ \end{align*}%
+ }%
+\\\midrule
+ \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
+ \put(0,0){\line(1,0){3.8}}
+ \put(4,0){\DTOUeg}
+ \put(11.2,0){\line(1,0){3.8}}
+%
+ \put(2,7){\line(1,0){1.8}}
+ \put(3,3.5){\vector(0,1){3.5}\vector(0,-1){3.5}}
+ \put(2.8,3.5){\makebox(0,0)[r]{$H_{\mathrm{Y}}$}}
+ \put(3,-2){\vector(0,1){2}}
+ \put(2.8,-1){\makebox(0,0)[r]{$D_{\mathrm{Y}}$}}
+%
+ \put(4,7.2){\line(0,1){1.8}}
+ \put(11,7.2){\line(0,1){1.8}}
+ \put(6,8){\vector(-1,0){2}}
+ \put(9,8){\vector(1,0){2}}
+ \put(7.5,8){\makebox(0,0){$W_{\mathrm{Y}}$}}
+%
+ \end{picture}\vspace{-\baselineskip}
+ \begin{align*}
+ W_{\mathrm{Y}} &= h_{\mathrm{D}}+d_{\mathrm{D}},\\
+ H_{\mathrm{Y}} &= w_{\mathrm{D}},\\
+ D_{\mathrm{Y}} &= 0\,pt
+ \end{align*}%
+ }&
+ \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
+ \put(9,-0.2){\line(0,-1){2.8}}
+ \put(4,0){\DTOUeg}
+ \put(9, 7.2){\line(0,1){3.8}}
+%
+ \put(2,7){\line(1,0){1.8}}
+ \put(2,0){\line(1,0){1.8}}
+ \put(3,5){\vector(0,1){2}}
+ \put(3,2){\vector(0,-1){2}}
+ \put(3,3.5){\makebox(0,0){$W_{\mathrm{T}}$}}
+%
+ \put(4,7.2){\line(0,1){1.8}}
+ \put(11,7.2){\line(0,1){1.8}}
+ \put(6.5,8){\vector(-1,0){2.5}\vector(1,0){2.5}}
+ \put(10,8){\vector(-1,0){1}\vector(1,0){1}}
+ \put(10,8.2){\makebox(0,0)[b]{$H_{\mathrm{T}}$}}
+ \put(6.5,8.2){\makebox(0,0)[b]{$D_{\mathrm{T}}$}}
+%
+ \end{picture}\vspace{-\baselineskip}
+ \begin{align*}
+ W_{\mathrm{T}} &= h_{\mathrm{D}}+d_{\mathrm{D}},\\
+ H_{\mathrm{T}} &= d_{\mathrm{D}},\\
+ D_{\mathrm{T}} &= h_{\mathrm{D}}
+ \end{align*}%
+ }&
+ \parbox[c]{15\unitlength}{\begin{picture}(15,15)(0,-4)
+ \put(6,-0.2){\line(0,-1){2.8}}
+ \put(4,7){\TATEeg}
+ \put(6, 7.2){\line(0,1){3.8}}
+%
+ \put(2,7){\line(1,0){1.8}}
+ \put(2,0){\line(1,0){1.8}}
+ \put(3,5){\vector(0,1){2}}
+ \put(3,2){\vector(0,-1){2}}
+ \put(3,3.5){\makebox(0,0){$W_{\mathrm{D}}$}}
+%
+ \put(4,7.2){\line(0,1){1.8}}
+ \put(11,7.2){\line(0,1){1.8}}
+ \put(5,8){\vector(-1,0){1}\vector(1,0){1}}
+ \put(8.5,8){\vector(-1,0){2.5}\vector(1,0){2.5}}
+ \put(5,8.2){\makebox(0,0)[b]{$H_{\mathrm{D}}$}}
+ \put(8.5,8.2){\makebox(0,0)[b]{$D_{\mathrm{D}}$}}
+%
+ \end{picture}\vspace{-\baselineskip}
+ \begin{align*}
+ W_{\mathrm{D}} &= w_{\mathrm{T}},\\
+ H_{\mathrm{D}} &= d_{\mathrm{T}},\\
+ D_{\mathrm{D}} &= h_{\mathrm{T}}
+ \end{align*}%
+ }\\
+\bottomrule
+\end{tabular}
+\end{table}
+
+
+\paragraph{\cs{wd} は組方向には対応しない}
+ボックスレジスタ \cs{box}<num> にセットされているボックスの幅・高さ・深さの取得や
+変更にはそれぞれ \cs{wd},~\cs{ht},~\cs{dp} プリミティブを用いるのであった.
+\pTeX ではこれらのプリミティブは,「現在の組方向におけるボックスの寸法」を指すものであった.
+
+\LuaTeX-jaにおいては状況が異なり,\cs{wd},~\cs{ht},~\cs{dp} は\emph{組方向が
+混在する状況においては正しく機能しない}.具体的には,現在の組方向に依存しないことが挙げられる.
+\begin{LTXexample}
+% yoko direction
+\setbox0=\hbox to 20pt{foo}
+\the\wd0,~\hbox{\tate\vrule\the\wd0}
+\wd0=100pt
+\the\wd0,~\hbox{\tate \the\wd0}
+\end{LTXexample}
+
+\paragraph{\cs{wd} 等の代替命令}
+
+\pTeX のように現在の組方向に応じたボックスの寸法の取得・設定を行うため,
+次の命令を新設した.
+
+\begin{cslist}
+
+ \item[ltjgetwd\{<num>\}\textrm{, }\cs{ltjgetht}\{<num>\}\textrm{, }%
+ \cs{ltjgetdp}\{<num>\}]
+現在の組方向に応じたボックスの寸法の取得を行う.結果は内部長さであるため,
+{\let\item=\origitem
+\begin{verbatim}
+\dimexpr 2\ltjgetwd{42}-3pt\relax, \the\ltjgetwd{1701}
+\end{verbatim}
+のように \cs{wd}<num> の代わりとして扱うことができる.引数が1桁の場合は,
+\cs{ltjgetwd3} のように引数をグループで括らなくても良いが,そうでない場合は
+(通常の命令への引数のように)\verb+\ltjgetwd{42}+ とグループに括る必要がある.
+使用例は以下の通りである.
+\begin{LTXexample}[width=0.3\textwidth]
+\parindent0pt
+\setbox32767=\hbox{\yoko よこぐみ}
+\fboxsep=0mm\fbox{\copy32767}
+\vbox{\hsize=20mm
+\yoko YOKO \the\ltjgetwd{32767}, \\
+ \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.}
+\vbox{\hsize=20mm\raggedleft
+\tate TATE \the\ltjgetwd{32767}, \\
+ \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.}
+\vbox{\hsize=20mm\raggedleft
+\dtou DTOU \the\ltjgetwd{32767}, \\
+ \the\ltjgetht{32767}, \\ \the\ltjgetdp{32767}.}
+\end{LTXexample}}
+
+ \item[ltjsetwd<num>=<dimen>\textrm{, }\cs{ltjsetht}<num>=<dimen>\textrm{, }%
+ \cs{ltjsetdp}<num>=<dimen>]
+現在の組方向に応じたボックスの寸法の設定を行う.\cs{afterassignment} を2回利用して
+実装しているので,次の4通りは全て同じ意味である.
+{\let\item=\origitem
+\begin{verbatim}
+\ltjsetwd42 20pt, \ltjsetwd42=20pt, \ltjsetwd=42 20pt, \ltjsetwd=42=20pt
+\end{verbatim}
+}%
+
+設定値は「横組」「縦組及び \cs{utod} 方向」「\cs{dtou} 方向」
+の3種ごとに独立して記録される.
+
+\end{cslist}
+
+\subsection{組方向の取得}
+「現在の組方向」や「<num>番のボックスの組方向」は,
+\pTeX では\cs{ifydir} や \cs{ifybox}<num> といった条件判断文を使って
+判断することができた.
+しかし,\LuaTeX-jaはあくまでも\TeX マクロとLuaコードで
+記述されており,それでは新たな条件判断命令を作るのは難しい.
+
+\LuaTeX-jaでは,\Param{direction}パラメータで現在の組方向を,
+\Param{boxdir}パラメータによってボックスの組方向をそれぞれ取得できるようにした.
+戻り値は1文字の数字(文字列)であり,1は \cs{dtou} 方向を,
+3は縦組を,4は横組,11は \cs{utod} 方向を表す:
+\begin{LTXexample}[width=0.3\textwidth]
+\leavevmode\def\DIR{\ltjgetparameter{direction}}
+\hbox{\yoko \DIR}, \hbox{\tate\DIR}, \hbox{\dtou\DIR}, \hbox{\utod\DIR}
+
+\setbox2=\hbox{\tate}\ltjgetparameter{boxdir}{2}
+\end{LTXexample}
+
+これらを用いれば,例えば
+\pTeX の \cs{ifydir}, \cs{iftbox200} と同等の条件判断を
+\begin{verbatim}
+\ifnum\ltjgetparameter{direction}=4
+\ifnum\ltjgetparameter{boxdir}{200}=3
+\end{verbatim}
+のように行うことができる.
+
+\subsection{プリミティブの再定義}
+異なる組方向に対応するために,以下に挙げるプリミティブは
+\LuaTeX-jaによる前処理もしくは後処理が行われるように
+\ \verb+\protected\def+ により再定義してある.
+\begin{cslist}
+ \item[unhbox<num>\textrm{, }\cs{unvbox}<num>]
+ ボックスの組方向が現在のリストと異なる場合は事前にエラーメッセージを出力する.
+ \pTeX と異なり,エラーを無視して無理矢理 \cs{unhbox}, \cs{unvbox} を
+ 続行させることもできるが,その場合の組版結果は保証しない.
+ \item[vadjust\{<material>\}] 一旦プリミティブ本来の挙動を行う.その後,<material>の組方向が
+ 周囲の垂直リストの組方向と一致しない場合にエラーを出力し,
+ 該当の \cs{vadjust} を無効にする.
+ \item[lastbox] 必要ならばボックスの「中身」を包んでいる\textit{dir\_node}を除去し,
+ 正しく「中身」のボックスが返されるように前処理をする.
+ \item[raise<dimen><box>\textrm{, }lower<dimen><box>\textrm{\ etc.}]
+ 一方,こちらでは必要に応じて\textit{dir\_node}を作成する前処理を追加している.
+\end{cslist}
+
+%</ja>
+
%<en>\section{Font Metric and Japanese Font}
%<ja>\section{フォントメトリックと和文フォント}
-%<en>\subsection{\texttt{\textbackslash jfont}}
-%<ja>\subsection{\texttt{\textbackslash jfont} 命令}
+%<en>\subsection{\cs{jfont}}
+%<ja>\subsection{\cs{jfont} 命令}
\label{ssec-jfont}
%<*en>
-To load a font as a Japanese font, you must use the
-\verb+\jfont+ instead of~\verb+\font+, while
-\verb+\jfont+ admits the same syntax used in~\verb+\font+.
+To load a font as a Japanese font (for horizontal direction), you must use the
+\cs{jfont} instead of~\cs{font}, while
+\cs{jfont} admits the same syntax used in~\cs{font}.
\LuaTeX-ja automatically loads \Pkg{luaotfload} package,
so TrueType/OpenType fonts with features can be used for Japanese fonts:
%</en>
%<*ja>
-フォントを和文フォントとして読み込むためには,\verb+\jfont+ を
-\verb+\font+ プリミティブの代わりに用いる.
-\verb+\jfont+ の文法は \verb+\font+ と同じである.
+フォントを(横組用)和文フォントとして読み込むためには,\cs{jfont} を
+\cs{font} プリミティブの代わりに用いる.
+\cs{jfont} の文法は \cs{font} と同じである.
\LuaTeX-jaは\Pkg{luaotfload}パッケージを自動的に読み込むので,
TrueType/OpenTypeフォントにfeatureを指定したものを和文フォントとして用いる
ことができる:
%<*en>
Note that the defined control sequence
-(\verb+\tradgt+ in the example above) using \verb+\jfont+ is not a
+(\cs{tradgt} in the example above) using \cs{jfont} is not a
\textit{font\_def} token, but a macro.
Hence the input like \verb+\fontname\tradgt+
causes a error. We denote control sequences which are defined in
-\verb+\jfont+ by <jfont\_cs>.
+\cs{jfont} by <jfont\_cs>.
%</en>
%<*ja>
-なお,\verb+\jfont+ で定義された制御綴(上の例だと \verb+\tradgt+)
+なお,\cs{jfont} で定義された制御綴(上の例だと \cs{tradgt})
は\textit{font\_def}トークンではなくマクロである.従って,\verb+\fontname\tradgt+ のような
-入力はエラーとなる.以下では \verb+\jfont+ で定義された
+入力はエラーとなる.以下では \cs{jfont} で定義された
制御綴を<jfont\_cs>で表す.
%</ja>
As noted in Introduction, a JFM has measurements of characters and
glues/kerns that are automatically inserted for Japanese
typesetting. The structure of JFM will be described in the next
-subsection. At the calling of \verb+\jfont+, you must specify
+subsection. At the calling of \cs{jfont}, you must specify
which JFM will be used for this font by the following keys:
%</en>
%<*ja>
「はじめに」の節で述べたように,JFMは文字と和文組版で自動的に挿入される
グルー/カーンの寸法情報を持っている.JFMの構造は次の節で述べる.
-\verb+\jfont+ 命令の呼び出しの際には,どのJFMを用いるのかを以下のキーで
+\cs{jfont} 命令の呼び出しの際には,どのJFMを用いるのかを以下のキーで
指定する必要がある:
%</ja>
+
+\begin{table}[t]
+%<en>\caption{Differences between JFMs shipped with \LuaTeX-ja}
+%<ja>\caption{\LuaTeX-ja に同梱されている JFM の違い}
+%<en>\medskip
+\label{tab-difjfm}
+\ltjsetparameter{jacharrange={+3}}
+\centering\small
+\def\r#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 14.43324pt \g
+\setbox0=\vtop{\hsize=7\zw\noindent ◆◆◆◆◆◆◆
+ある日モモちゃんがお使いで迷子になって泣きました.}\copy0
+\vrule height 0pt depth \dp0}}
+\def\s#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 14.43324pt \g
+\setbox0=\vtop{\hsize=7\zw\noindent ちょっと!何}\copy0}}
+\def\t#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 19.24432pt \g
+\setbox0=\hbox{漢}%
+\vrule width 0.4pt height\ht0 depth\dp0\kern-.2pt\copy0
+\kern-\wd0\vrule width\wd0height .2pt depth .2pt
+\kern-\wd0\raise\ht0\hbox{\vrule width\wd0height .2pt depth .2pt}%
+\kern-\wd0\lower\dp0\hbox{\vrule width\wd0height .2pt depth .2pt}%
+\kern-.2pt\vrule width 0.4pt height\ht0 depth \dp0}}
+\begin{tabular}{rccc}
+\toprule
+&\tt jfm-ujis.lua&\tt jfm-jis.lua&\tt jfm-min.lua\\
+\midrule
+%<en>Example~1~\cite{min10}
+%<ja>例1~\cite{min10}
+&\r{ujis}&\r{jis}&\r{min}\\
+%<en>Example~2
+%<ja>例2
+&\s{ujis}&\s{jis}&\s{min}\\
+Bounding Box&\t{ujis}&\t{jis}&\t{min}\\
+\bottomrule
+\end{tabular}
+\ltjsetparameter{jacharrange={-3}}
+\end{table}
+
+
\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
\item[jfm=<name>]
%<*en>
-Specify the name of JFM. If specified JFM has not been loaded, \LuaTeX-ja search and load
+Specify the name of (horizontal) JFM.
+If specified JFM has not been loaded, \LuaTeX-ja search and load
a file named \texttt{jfm-<name>.lua}.
The following JFMs are shipped with \LuaTeX-ja:
%</en>
%<*ja>
-JFMの名前を指定する.もし以前に指定されたJFMが読み込まれていなければ,
-\texttt{jfm-<name>.lua}を読み込む.以下のJFMが\LuaTeX-jaには同梱されている:
+用いる(横組用)JFMの名前を指定する.もし以前に指定されたJFMが読み込まれていなければ,
+\texttt{jfm-<name>.lua}を読み込む.以下の横組用JFMが\LuaTeX-jaには同梱されている:
%</ja>
\begin{description}
%<*en>
%</en>
%<*ja>
\item[\tt jfm-jis.lua] \pTeX で広く用いられている「JISフォントメトリック」
- \verb+jis.tfm+ に相当するJFMである.\texttt{jfm-ujis.lua}とこの
- \texttt{jfm-jis.lua}の主な違いは,\texttt{jfm-ujis.lua}ではほとんどの文字が
- 正方形状であるのに対し,\texttt{jfm-jis.lua}では横長の長方形状である.
+ \verb+jis.tfm+ に相当するJFMである.\texttt{jfm-ujis.lua} とこの
+ \texttt{jfm-jis.lua} の主な違いは,\texttt{jfm-ujis.lua} ではほとんどの文字が
+ 正方形状であるのに対し,\texttt{jfm-jis.lua} では横長の長方形状であることと,
+ \texttt{jfm-ujis.lua} では「?」「!」の直後に半角空白が挿入されることである.
%</ja>
%<*en>
\item[\tt jfm-min.lua] A counterpart for \verb+min10.tfm+, which is one
- of the default Japanese font metric shipped with \pTeX. There
- are notable difference between this JFM and other 2~JFMs, as
- shown in Table~\ref{tab-difjfm}.
+ of the default Japanese font metric shipped with \pTeX.
%</en>
%<*ja>
\item[\tt jfm-min.lua] \pTeX に同梱されているデフォルトの和文用TFM
- である \verb+min10.tfm+ に相当するJFMである.このJFMと他の2つのJFMの間には
- 表\ref{tab-difjfm}に示すような特筆すべき違いがある.
+ である \verb+min10.tfm+ に相当する.
%</ja>
\end{description}
-
%<*en>
-\item[jfmvar=<string>] Sometimes there is a need that \ldots.
+The difference among these three~JFMs is shown in Table~\ref{tab-difjfm}.
%</en>
%<*ja>
-\item[jfmvar=<string>] 標準では,JFMとサイズが同じで,
- 実フォントだけが異なる2つの和文フォントは「区別されない」.例えば
-下の例において,最初の「)」と「【」の実フォントは異なるが,
-JFMもサイズも同じなので,普通に「)【」と入力した時と同じように半角空きとなる.
-
-しかし,時には……
-
+これら3つのJFMの違いは表\ref{tab-difjfm}に示した.
%</ja>
+
+\begin{figure}
\begin{LTXexample}[width=0.3\textwidth]
\ltjsetparameter{differentjfm=both}
\jfont\F=file:KozMinPr6N-Regular.otf:jfm=ujis
\jfont\G=file:KozGoPr6N-Medium.otf:jfm=ujis
\jfont\H=file:KozGoPr6N-Medium.otf:jfm=ujis;jfmvar=hoge
-
\F ){\G 【】}( % halfwidth space
){\H 『』}( % fullwidth space
+ほげ,{\G 「ほげ」}(ほげ)\par
+ほげ,{\H 「ほげ」}(ほげ)% pTeX-like
+
\ltjsetparameter{differentjfm=paverage}
\end{LTXexample}
-\end{list}
-
-\begin{table}[t]
-%<en>\caption{Differences between JFMs shipped with \LuaTeX-ja}
-%<ja>\caption{\LuaTeX-ja に同梱されている JFM の違い}
-\label{tab-difjfm}
-\ltjsetparameter{jacharrange={+3}}
-\centering\small
-\def\r#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 14.43324pt \g
-\setbox0=\vtop{\hsize=7\zw\noindent ◆◆◆◆◆◆◆
-ある日モモちゃんがお使いで迷子になって泣きました.}\copy0
-\vrule height 0pt depth \dp0}}
-\def\s#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 14.43324pt \g
-\setbox0=\vtop{\hsize=7\zw\noindent ちょっと!何}\copy0}}
-\def\t#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 19.24432pt \g
-\setbox0=\hbox{漢}%
-\vrule width 0.4pt height\ht0 depth\dp0\kern-.2pt\copy0
-\kern-\wd0\vrule width\wd0height .2pt depth .2pt
-\kern-\wd0\raise\ht0\hbox{\vrule width\wd0height .2pt depth .2pt}%
-\kern-\wd0\lower\dp0\hbox{\vrule width\wd0height .2pt depth .2pt}%
-\kern-.2pt\vrule width 0.4pt height\ht0 depth \dp0}}
-\begin{tabular}{rccc}
-\toprule
-&\tt jfm-ujis.lua&\tt jfm-jis.lua&\tt jfm-min.lua\\
-\midrule
-%<en>Example~1\cite{min10}
-%<ja>例1\cite{min10}
-&\r{ujis}&\r{jis}&\r{min}\\
-%<en>Example~2
-%<ja>例2
-&\s{ujis}&\s{jis}&\s{min}\\
-Bounding Box&\t{ujis}&\t{jis}&\t{min}\\
-\bottomrule
-\end{tabular}
-\ltjsetparameter{jacharrange={-3}}
-\end{table}
+\caption{Example of \texttt{jfmvar} key}
+\label{fig:jfmvar}
+\end{figure}
-%<en>\paragraph{Note: \texttt{kern} feature}
-%<ja>\paragraph{注意:\texttt{kern} feature}
-\label{para-kern}
%<*en>
-Some fonts have information for inter-glyph spacing. However, this
-information is not well-compatible with \LuaTeX-ja. More concretely,
-this kerning space from this information are inserted \emph{before} the
-insertion process of \textbf{JAglue}, and this causes incorrect spacing
-between two characters when both a glue/kern from the data in the font
-and it from JFM are present.
-%</en>
-%<*ja>
-いくつかのフォントはグリフ間のスペースについての情報を持っている.しかし,
-この情報は\LuaTeX-ja とはあまり相性がよくない.具体的には,この情報に基づいて挿入
-されるカーニングスペースは\textbf{JAglue}の挿入過程の\textbf{前に}挿入され,
-JFMに基づくグルー/カーンも挿入される場合には2文字間の意図しないスペースの原因と
-なる.
-%</ja>
-\begin{itemize}
-%<*en>
-\item You should specify \texttt{-kern} in
- \verb+jfont+ when you want to use other font features,
- such as \texttt{script=...}\,.
+\item[jfmvar=<string>] Sometimes there is a need that \ldots.
%</en>
%<*ja>
-\item \texttt{script=...}といったfeatureを使いたい場合には,\verb+\jfont+
- に\texttt{-kern}を指定するべきである.
+\item[jfmvar=<string>] 標準では,JFMとサイズが同じで,
+ 実フォントだけが異なる2つの和文フォントは「区別されない」.例えば
+図\ref{fig:jfmvar}において,最初の「)」と「【」の実フォントは異なるが,
+JFMもサイズも同じなので,普通に「)【」と入力した時と同じように半角空きとなる.
+
+しかし,JFMとサイズが同じであっても,\texttt{jfmvar} キーの異なる
+2つの和文フォント,例えば図\ref{fig:jfmvar}で言う \cs{F} と \cs{H},
+は「区別される」.異なる和文フォントに異なる \texttt{jfmvar} キーを割り当て,
+かつ\Param{differentjfm}パラメータを \texttt{both} に設定すれば,
+\pTeX と似た状況で組版されることになる.
%</ja>
+\end{list}
+
+\begin{figure}
+\begin{LTXexample}[pos=t]
+\newcommand\test{\vrule ダイナミックダイクマ\vrule\\}
+\jfont\KMFW = KozMinPr6N-Regular:jfm=prop;-kern at 17pt
+\jfont\KMFK = KozMinPr6N-Regular:jfm=prop at 17pt % kern is activated
+\jfont\KMPW = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;-kern at 17pt
+\jfont\KMPK = KozMinPr6N-Regular:jfm=prop;script=dflt;+pwid;+kern at 17pt
+\begin{multicols}{2}
+\ltjsetparameter{kanjiskip=0pt}
+{\KMFW\test \KMFK\test \KMPW\test \KMPK\test}
+
+\ltjsetparameter{kanjiskip=3pt}
+{\KMFW\test \KMFK\test \KMPW\test \KMPK\test}
+\end{multicols}
+\end{LTXexample}
+\caption{Kerning information and \Param{kanjiskip}}
+\label{fig:kern-jfm}
+\end{figure}
+
+%<en>\paragraph{Using kerning information in a font}
+%<ja>\paragraph{ペアカーニング情報の使用}
+\label{para-kern}
%<*en>
-\item If you want to use Japanese fonts in proportional width, and use
- information from this font, use \texttt{jfm-prop.lua} for its JFM, and\,\ldots.
+Some fonts have information for inter-glyph spacing.
+This version of \LuaTeX-ja treats kerning spaces like an italic correction;
+any glue and/or kern from the JFM and a kerning space can coexist.
+See Figure~\ref{fig:kern-jfm} for detail.
+
+Note that in \cs{setmainjfont} etc.\ which are provided by \Pkg{luatexja-fontspec}
+package, kerning option is set \emph{off} (\texttt{Kerning=Off}) by default,
+because of the compatibility with previous versions of \LuaTeX-ja.
%</en>
%<*ja>
-\item もしプロポーショナル幅の和文フォントをそのフォントの情報に基づいて使いたい
- ならば,\texttt{jfm-prop.lua}をJFMとして指定し,……
-%</ja>
-TODO: kanjiskip?
+いくつかのフォントはグリフ間のスペースについての情報を持っている.
+このカーニング情報は以前の\LuaTeX-ja とはあまり相性が良くなかったが,
+本バージョンではカーニングによる空白はイタリック補正と同様に扱うことになっている.
+つまり,カーニング由来の空白とJFM由来のグルー・カーンは同時に入りうる.
+図\ref{fig:kern-jfm}を参照.
+\begin{itemize}
+ \item \emph{\cs{jfont} や,
+NFSS2用の命令(\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節)における指定では
+カーニング情報は標準で使用する}ことになっているようである.
+言い換えれば,カーニング情報を使用しない設定にするには,面倒でも
+\begin{verbatim}
+\jfont\hoge=KozMinPr6N-Regular:jfm=ujis;-kern at 3.5mm
+\DeclareFontShape{JY3}{fuga}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{}
+\end{verbatim}
+のように,\texttt{-kern} という指定を自分で追加しなければいけない.
+ \item
+一方,\emph{\Pkg{luatexja-fontspec} の提供する \cs{setmainjfont}\
+などの命令の標準設定ではカーニング情報は使用しない}(\texttt{Kerning=Off})
+ことになっている.これは以前のバージョンの\LuaTeX-jaとの互換性のためである.
\end{itemize}
-
+%</ja>
%<*ja>
\paragraph{\texttt{extend}と\texttt{slant}}
\begin{description}
\item[\texttt{extend=}<extend>] 横方向に<extend>倍拡大する.
\item[\texttt{slant=}<slant>] <slant>に指定された割合だけ傾ける.
-\end{description}
+\end{description}
の2つがある.
\texttt{extend}や\texttt{slant}を指定した場合は,それに応じたJFMを指定すべきである%
\footnote{\LuaTeX-jaでは,これらに対するJFMを特に提供することはしない予定である.}.
\item[\texttt{slant=}<slant>] slant the font.
\end{description}
Note that \LuaTeX-ja doesn't adjust JFMs by these \texttt{extend} and \texttt{slant}
-settings; you have to write new JFMs on purpose.
+settings; you have to write new JFMs on purpose.
For example, the following example uses the standard JFM \texttt{jfm-ujis.lua}, hence
letter-spacing and the width of italic correction are not correct:
%</en>
\begin{LTXexample}[width=0.3\textwidth]
-\jfont\E=file:KozMinPr6N-Regular.otf:extend=1.5;jfm=ujis
+\jfont\E=file:KozMinPr6N-Regular.otf:extend=1.5;jfm=ujis;-kern
\E あいうえお
-\jfont\S=file:KozMinPr6N-Regular.otf:slant=1;jfm=ujis
+\jfont\S=file:KozMinPr6N-Regular.otf:slant=1;jfm=ujis;-kern
\S あいう\/ABC
\end{LTXexample}
+%<en>\subsection{\cs{tfont}}
+%<ja>\subsection{\cs{tfont} 命令}
+
+%<*en>
+...
+%</en>
+%<*ja>
+\cs{tfont} はフォントを縦組用の和文フォントとして読み込む命令であり,
+\cs{jfont} の文法は \cs{jfont} と同じである.
+\cs{tfont} で定義された縦組用和文フォントは,
+以下の点が \cs{jfont} による横組用和文フォントとは異なる:
+\begin{itemize}
+ \item 出力時に,自動的に「\verb+vert+ feature相当」のグリフ置換が行われる.
+ これは,\Pkg{luaotfload}による各種featureのサポートとは全く別個に行われるもので,
+ いちいち \verb+vert+ featureを指定する必要はない.
+\begin{verbatim}
+\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujis % OK
+\end{verbatim}
+ \item \ref{ssec-math}節で述べる,数式中の和文フォントには縦組用和文フォントは指定できない.
+ \item \texttt{jfm=<name>}\ の部分には縦組用JFMを指定する.現在同梱されているのは,
+OTFパッケージの \verb+upnmlminr-v.tfm+ を元にした\texttt{jfm-ujisv.lua}\ のみである.
+\end{itemize}
+%</ja>
%<en>\subsection{Prefix \texttt{psft}}
%<ja>\subsection{\texttt{psft}プリフィックス}
\label{ssec-psft}
%<*en>
Besides ``\texttt{file:}''\ and ``\texttt{name:}''\ prefixes which
-are introduced in the \Pkg{luaotfload} package,
-\LuaTeX-ja adds ``\texttt{psft:}''\ prefix in \verb+\jfont+ (and~\verb+\font+),
+are introduced in the \Pkg{luaotfload} package,
+\LuaTeX-ja adds ``\texttt{psft:}''\ prefix in \cs{jfont} (and~\cs{font}),
to specify a ``name-only'' Japanese font which
will not be embedded to PDF. Typical use of this prefix is to specify
standard, non-embedded Japanese fonts, namely, ``Ryumin-Light'' and
``GothicBBB-Medium''.
-\emph{OpenType font features, such as ``{\tt +jp90}'',
-have no meaning in name-only fonts using this ``{\tt psft:}''\ prefix.
-This is because we can't expect what fonts are actually used by the PDF reader.}
+\emph{OpenType font features, such as ``{\tt +jp90}'',
+have no meaning in name-only fonts using ``{\tt psft:}''\ prefix,
+because we can't expect what fonts are actually used by the PDF reader.}
Note that \texttt{extend}~and~\texttt{slant} settings (see~above) are supported
with \texttt{psft} prefix, because they are only simple linear transformations.
%</en>
%<*ja>
\Pkg{luaotfload}で使用可能になった
\texttt{file:}\ と \texttt{name:}\ のプリフィックスに加えて,
-\verb+\jfont+(と \verb+\font+ プリミティブ)では
+\cs{jfont}(と \cs{font} プリミティブ)では
\texttt{psft:}プリフィックスを用いることができる.
このプリフィックスを用いることで,PDFには埋め込まれない「名前だけの」
和文フォントを指定することができる.「標準的な」非埋め込み和文フォント,
%<en>(required)
%<ja>(必須)
-%<en>The direction of JFM. At the present, only \texttt{'yoko'} is supported.
-%<ja>JFMの書字方向.現時点では横書き(\texttt{'yoko'})のみがサポートされる.
+%<*en>
+The direction of JFM. \texttt{'yoko'}~(horizontal)
+or \texttt{'tate'}~(vertical) are supported.
+%</en>
+%<*ja>
+JFMの書字方向.\texttt{'yoko'}(横組)と \texttt{'tate'}(縦組)がサポートされる.
+%</ja>
\item[zw=<length>]
%<en>(required)
%<en>(required)
%<ja>(必須)
-%<en>The amount of the ``full-height'' (height + depth).
+%<en>The amount of the ``full-height'' (height + depth).
%<ja>「全角高さ」(height + depth)の長さ.通常は全角幅と同じ長さになるだろう.
\item[kanjiskip=\{<natural>, <stretch>, <shrink>\}]
%<ja>(任意)
%<*en>
-This field specifies the ``ideal'' amount of \Param{\hyperlink{fld:kanjiskip}{kanjiskip}}. As noted
+This field specifies the ``ideal'' amount of \Param{kanjiskip}. As noted
in Subsection~\ref{subs-kskip}, if the parameter
- \Param{\hyperlink{fld:kanjiskip}{kanjiskip}} is \verb+\maxdimen+, the value specified
+ \Param{kanjiskip} is \cs{maxdimen}, the value specified
in this field is actually used (if this field is not specified in
JFM, it is regarded as 0\,pt). Note that <stretch> and <shrink>
fields are in design-size unit too.
%</en>
%<*ja>
-理想的な\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の量を指定する.\ref{subs-kskip}節で述べたように,
-もし\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}が \verb+\maxdimen+ の値ならば,このフィールドで指定された
+理想的な\Param{kanjiskip}の量を指定する.\ref{subs-kskip}節で述べたように,
+もし\Param{kanjiskip}が \cs{maxdimen} の値ならば,このフィールドで指定された
値が実際には用いられる(指定なしは0\,ptとして扱われる).<stretch>と<shrink>のフィールドもdesign-size
が単位であることに注意せよ.
%</ja>
%<*en>
Like the \texttt{kanjiskip} field, this field specifies the ``ideal''
- amount of \Param{\hyperlink{fld:xks}{xkanjiskip}}.
+ amount of \Param{xkanjiskip}.
%</en>
%<*ja>
-\texttt{kanjiskip}フィールドと同様に,\Param{\hyperlink{fld:xks}{xkanjiskip}}の理想的な量を
+\texttt{kanjiskip}フィールドと同様に,\Param{xkanjiskip}の理想的な量を
指定する.
%</ja>
\end{list}
%<ja>(必須)
%<*en>
-Specifythe width of characters in character class~$i$, the height, the depth and
+Specify the width of characters in character class~$i$, the height, the depth and
the amount of italic correction. All characters in character class~$i$ are regarded that its width, height, and depth are
as values of these fields.
-But there is one exception: if \texttt{'prop'} is specified in \texttt{width} field, width of a character becomes that of its ``real'' glyph.
+
+But there is one exception: \texttt{width} field can be \texttt{'prop'}.
+This means that width of a character becomes that of its ``real'' glyph.
%</en>
%<*ja>
文字クラス$i$に属する文字の幅,高さ,深さ,イタリック補正の量を指定する.
文字クラス$i$に属する全ての文字は,その幅,高さ,深さがこのフィールドで指定した
値であるものとして扱われる.
-しかし,例外が一つある:もし \texttt{'prop'} が \texttt{width} フィールドに
-指定された場合,文字の幅はその「実際の」グリフの幅となる.
+
+例外として,\emph{\texttt{width} フィールドには数値以外に \texttt{'prop'} が指定可能である}.
+この場合,文字の幅はその「実際の」グリフの幅となる.OpenTypeの \texttt{prop} featureと併用
+ すれば,これによってプロポーショナル組を行うことができる.
%</ja>
\item[left=<length>, down=<length>, align=<align>]\
3~fields are omitted, \texttt{left} and \texttt{down} are
treated as~0, and \texttt{align} field is treated as
\texttt{'left'}.
-The effects of these 3~fields are indicated in Figure~\ref{fig-pos}.
+The effects of these 3~fields are indicated in
+Figures \ref{fig-pos}~and~\ref{fig-pos-tate}.
%</en>
%<*ja>
これらのフィールドは実際のグリフの位置を調整するためにある.
\texttt{'right'} のいずれかである.もしこれら3つのフィールドのうちの1つが省かれた
場合,\texttt{left} と \texttt{down} は0,\texttt{align} フィールドは
\ \texttt{'left'} であるものとして扱われる.
-これら3つのフィールドの意味については図\ref{fig-pos}で説明する.
+これら3つのフィールドの意味については図\ref{fig-pos}(横組用和文フォント),
+図\ref{fig-pos-tate}(縦組用和文フォント)で説明する.
%</ja>
%<*en>
\begin{minipage}{0.4\textwidth}%
\begin{center}\unitlength=10pt\small
\begin{picture}(15,12)(-1,-4)
-\color{black!10!white}% real glyph :step1
+\color{black!10!white}% jfm
\put(0,0){\vrule width 12\unitlength height 8\unitlength depth 3\unitlength}
-\color{red!20!white}% real glyph :step1
+\color{red!20!white}% step1
\put(-1,-1.5){\vrule width 6\unitlength height 7\unitlength depth 2.5\unitlength}
\color{red}% real glyph
\put(-1,5.5){\line(1,0){6}}
\put(-1,-4){\line(1,0){6}}
-\color{green!20!white}% real glyph :step1
+\color{green!20!white}% real glyph
\put(3,0){\vrule width 6\unitlength height 7\unitlength depth 2.5\unitlength}
-\color{black}% real glyph :step1
+\color{black}% jfm
\thicklines
\put(0,0){\vector(0,1){8}\line(0,-1){3}\vector(1,0){12}}
\put(12,0){\line(0,1){8}\vector(0,-1){3}}
\put(12.2,-1.5){\makebox(0,0)[l]{\texttt{depth}}}
\put(6,0.2){\makebox(0,0)[b]{\texttt{width}}}
-\color{green!50!black}% real glyph :step1
+\color{green!50!black}% step1
\thicklines
\put(3,0){\vector(0,1){7}\vector(0,-1){2.5}\vector(1,0){6}}
\put(9,0){\line(0,1){7}\line(0,-1){2.5}}
\end{minipage}%
\begin{minipage}{0.6\textwidth}%
%<*en>
-Consider a node containing Japanese character whose value of the \texttt{align}
+Consider a Japanese character node which belongs to
+a character class whose the \texttt{align}
field is \texttt{'middle'}.
%</en>
%<*ja>
-\texttt{align}フィールドの値が\texttt{'middle'}である和文文字を含むノードを
-考えよう.
+\texttt{align}フィールドの値が\texttt{'middle'}であるような文字クラスに属する
+和文文字ノードを考えよう.
%</ja>
\begin{itemize}
\item
%<*en>
-The black rectangle is a frame of the node.
+The black rectangle is the imaginary body of the node.
Its width, height, and depth are specified by JFM.
%</en>
%<*ja>
-黒色の長方形はノードの枠である.
-その幅,高さ,深さはJFMによって指定される.
+黒色の長方形はノードの枠であり,
+その幅,高さ,深さはJFMによって指定されている.
+%</ja>
+\item
+%<*en>
+Since the \texttt{align} field is \texttt{'middle'},
+the ``real'' glyph is centered horizontally (the green rectangle) first.
+%</en>
+%<*ja>
+\texttt{align}フィールドは\texttt{middle}なので,
+実際のグリフの位置はまず水平方向に中央揃えしたものとなる(緑色の長方形).
%</ja>
\item
%<*en>
-Since the \texttt{align} field is \texttt{'middle'},
-the ``real'' glyph is centered horizontally (the green rectangle).
+Furthermore, the glyph is shifted according to values of fields
+ \texttt{left} and \texttt{down}. The ultimate position of the real
+ glyph is indicated by the red rectangle.
+%</en>
+%<*ja>
+さらに,グリフは \texttt{left} と \texttt{down} の値に従ってシフトされる.
+最終的な実際のグリフの位置は赤色の長方形で示された位置になる.
+%</ja>
+\end{itemize}
+\end{minipage}
+\medskip
+
+\caption{%
+%<en>The position of the real glyph (horizontal Japanese fonts)
+%<ja>横組和文フォントにおける「実際の」グリフの位置
+}
+\label{fig-pos}
+\end{figure}
+\begin{figure}[!tb]
+\begin{minipage}{0.4\textwidth}%
+\begin{center}\unitlength=10pt\small
+\begin{picture}(15,12)(-6,0)
+\color{black!10!white}% jfm
+\put(-6,0){\vrule width 12\unitlength height 11\unitlength}
+
+\color{red!20!white}% real glyph
+\put(-6.5,5.5){\vrule width 8\unitlength height 6\unitlength depth 3\unitlength}
+
+\color{red}% real glyph
+\thicklines
+\put(-6.5,5.5){\vector(0,1){6}\vector(0,-1){3}\vector(1,0){8}}
+\put( 1.5,5.5){\line(0,1){6}\line(0,-1){3}}
+\put(-6.5,11.5){\line(1,0){8}}
+\put(-6.5,2.5){\line(1,0){8}}
+
+\color{green!20!white}% step1
+\put(-4,3){\vrule width 8\unitlength height 6\unitlength depth 3\unitlength}
+
+\color{black}% jfm
+\thicklines
+\put(0,11){\vector(1,0){6}\vector(-1,0){6}\vector(0,-1){11}}
+\put(0,0){\line(1,0){6}\line(-1,0){6}}
+\put(-6,0){\line(0,1){11}}
+\put( 6,0){\line(0,1){11}}
+\put( 3,10.8){\makebox(0,0)[t]{\texttt{height}}}
+\put(-3,10.8){\makebox(0,0)[t]{\texttt{depth}}}
+\put(0.2,5.5){\makebox(0,0)[l]{\texttt{width}}}
+
+\color{green!50!black}% step1
+\thicklines
+\put(-4,3){\vector(0,1){6}\vector(0,-1){3}\vector(1,0){8}}
+\put( 4,3){\line(0,1){6}\line(0,-1){3}}
+\put(-4,9){\line(1,0){8}}
+\put(-4,0){\line(1,0){8}}
+\savebox{\eqdist}(0,0)[b]{%
+ \thinlines
+ \put(-0.08,0.2){\line(0,-1){0.4}}%
+ \put(0.08,0.2){\line(0,-1){0.4}}}
+\put(2,9){\usebox{\eqdist}}
+\put(-2,9){\usebox{\eqdist}}
+
+
+\color{blue}% shifted
+\thicklines
+\put(-4,3){\vector(0,1){2.5}}
+\put(-3.8,4.25){\makebox(0,0)[l]{\texttt{left}}}
+\put(-4,5.5){\vector(-1,0){2.5}}
+\put(-5.,5.7){\makebox(0,0)[b]{\texttt{down}}}
+\end{picture}
+\end{center}
+\end{minipage}%
+\begin{minipage}{0.6\textwidth}%
+%<*en>
+(\dots)
%</en>
%<*ja>
-\texttt{align}ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81¯\texttt{middle}ã\81ªã\81®ã\81§ï¼\8cå®\9fé\9a\9bã\81®ã\82°ã\83ªã\83\95ã\81¯
-水平方向の中心に配置される(緑色の長方形).
-%</ja>
+\texttt{align}ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81®å\80¤ã\81\8c\texttt{'right'}ã\81§ã\81\82ã\82\8bã\82\88ã\81\86ã\81ªæ\96\87å\97ã\82¯ã\83©ã\82¹ã\81«å±\9eã\81\99ã\82\8b
+和文文字を考えよう.
+\begin{itemize}
\item
-%<*en>
-Furthermore, the glyph is shifted according to values of fields
- \texttt{left} and \texttt{down}. The ultimate position of the real
- glyph is indicated by the red rectangle.
-%</en>
-%<*ja>
-さらに,グリフは\texttt{left}と\texttt{down}の値に従ってシフトされる.
-最終的な実際のグリフの位置は赤色の長方形で示された位置になる.
-%</ja>
+実際のグリフの「垂直位置」は,ベースラインが文字の物理的な左右方向の中央を通る
+位置となる.
+\item
+また,この場合\texttt{align}フィールドは\texttt{middle}なので,
+「水平位置」は字送り方向に「右寄せ」したものとなる(緑色の長方形).
+その際,高さ・深さは,実フォントのascender, descenderの値が使われる.
+\item
+その後さらに \texttt{left} と \texttt{down} の値に従ってシフトされる
+のは横組用和文フォントと変わらない.
\end{itemize}
+%</ja>
\end{minipage}
\medskip
\caption{%
-%<en>The position of the real glyph.
-%<ja>「実際の」グリフの位置.
+%<en>The position of the real glyph (vertical Japanese fonts)
+%<ja>縦組和文フォントにおける「実際の」グリフの位置
}
-\label{fig-pos}
+\label{fig-pos-tate}
\end{figure}
\item[kern={\{[$j$]=<kern>, [$j'$]=\{<kern>, [<ratio>]\}, ...\}}]
<priority>は \Pkg{luatexja-adjust} による優先順位付き
行長調整(\ref{ssec-adj}節)が有効なときのみ意味を持つ.
このフィールドは省略可能であり,行調整処理におけるこのglueの優先
- 度を$-2$から$+2$の間の整数で指定する.<priority>の省略時の値
+ 度を$-2$から$+2$の間の整数で指定する.大きい値ほど「伸びやすく,縮みやすい」
+ ことを意味する.省略時の値
は0であり,範囲外の値が指定されたときの動作は未定義である.
<ratio>も省略可能フィールドであり,$-1$から$+1$の実数値をとる.省略時の値は0である.
\item それ以外の値は,「前の文字」由来のグルーと「後の文字」由来の
グルーが混合されていることを示す.
\end{itemize}
-なお,このフィールドの値は\Param{\hyperlink{fld:diffjfm}{differentjfm}}の値が
+なお,このフィールドの値は\Param{differentjfm}の値が
\texttt{pleft},~\texttt{pright},~\texttt{paverage}の値のときのみ実際に用いられる.
例えば,\cite{x4051}では,句点と中点の間には,
\end{itemize}
%</ja>
%<*en>
-Specifies the width of kern or glue which will be inserted
+\
+
+Specifies the width of kern or glue which will be inserted
between characters in character class~$i$ and those in character class~$j$.
<priority> is an integer in $[-2,2]$ (treated as 0 if omitted), and this is
used only in line adjustment with priority by \Pkg{luatexja-adjust}
-(see Subsection~\ref{ssec-adj}).
-
-<ratio> is \dots
+(see Subsection~\ref{ssec-adj}). Higher value means the glue is easy to shretch,
+and is also easy to shrink.
+
+<ratio> is also an optional value between $-1$ and 1. For example,
+The width of a glue between an ideographic full stop ``。''
+and a fullwidth middle dot ``・'' is three-fourth of fullwidth,
+namely halfwidth from the ideographic full stop, and
+quarter-width from the fullwidth middle dot. In this case,
+we specify <ratio> to
+\[
+ -1\cdot \frac{0.5}{0.5+0.25} + 1 \cdot \frac{0.25}{0.5+0.25} = -\frac13.
+\]
%</en>
by \verb+vert+ feature.
\item The character class of ``\char"FE12'' is zero, hence its width is fullwidth.%"
\item The character class of ``漢'', hence its width is fullwidth.
-\item \verb+\inhibitglue+ makes that no glue will be inserted between ``。'' and ``漢''.
-\item Hence the width of \verb+\hbox+ equals to 20\,pt.
+\item \cs{inhibitglue} makes that no glue will be inserted between ``。'' and ``漢''.
+\item Hence the width of \cs{hbox} equals to 20\,pt.
\end{enumerate}
This example shows that the character class of a character is determined \emph{after
applying font features by \Pkg{luaotfload}}.
では,全角二分(15.0\,pt)となるのが自然……と思うかもしれないが,上の実行結果では20\,ptとなっている.
それは以下の事情によるものである:
\begin{enumerate}
-\item \verb+vert+ featureによって句点(\texttt{U+3002})が縦書き用のグリフと置き換わる(\Pkg{luaotfload} による処理).
-\item この縦書き用句点のグリフは \texttt{U+FE12} であるため,その文字クラスは0となる.
+\item \verb+vert+ featureによって句点(\texttt{U+3002})が縦組用のグリフと置き換わる(\Pkg{luaotfload} による処理).
+\item この縦組用句点のグリフは \texttt{U+FE12} であるため,その文字クラスは0となる.
\item 以上により文字クラス0とみなされるため,結果として「。」の幅は全角だと認識されてしまう.
\end{enumerate}
この例は,\emph{文字クラスの決定はfont featureの適用によるグリフ置換の後に行われる}ことを
%</ja>
%<*en>
-However, a starred specificaion like ``\texttt{'、*'}'' changes the rule.
+However, a starred specification like ``\texttt{'、*'}'' changes the rule.
Consider the following input:
%</en>
%<*ja>
%<*ja>
ここで,読点「、」(\texttt{U+3001})の文字クラスは,以下のようにして決まる.
\begin{enumerate}
-\item とりあえず句点の時と同じように,\Pkg{luaotfload} によって縦書き用読点のグリフに置き換わる.
+\item とりあえず句点の時と同じように,\Pkg{luaotfload} によって縦組用読点のグリフに置き換わる.
\item 置換後のグリフは \texttt{U+FE11} であり,そのままでは文字クラスは0と判定される.
-\item ところが,JFMには「\texttt{'、*'}」指定があるので,置換前の横書き用読点のグリフによって文字クラスを判定する.
+\item ところが,JFMには「\texttt{'、*'}」指定があるので,置換前の横組用読点のグリフによって文字クラスを判定する.
\item 結果として,上の出力例中の読点の文字クラスは2000となる.
\end{enumerate}
%</ja>
%%<ja>JFMやサイズが異なる2つの\textbf{JAchar}の間の境界として用いられる.
\item['boxbdd']
-%<en>The beginning/ending of a hbox, and the beginning of a noindented (i.e., began by \verb+\noindent+) paragraph.
-%<ja>hboxの先頭と末尾,及びインデントされていない(\verb+\noindent+ で開始された)段落の先頭を表す.
+%<en>The beginning/ending of a hbox, and the beginning of a noindented (i.e., began by \cs{noindent}) paragraph.
+%<ja>hboxの先頭と末尾,及びインデントされていない(\cs{noindent} で開始された)段落の先頭を表す.
\item['parbdd']
%<en>The beginning of an (indented) paragraph.
-%<ja>通常の(\verb+\noindent+ で開始されていない)段落の先頭.
+%<ja>通常の(\cs{noindent} で開始されていない)段落の先頭.
\item['jcharbdd']
%<en>A boundary between \textbf{JAchar} and anything else (such as \textbf{ALchar}, kern, glue,\,\ldots).
% ToDo: English version.
%<*en>
-\ldots
+See Japanese version of this manual.
%</en>
%<*ja>
文字クラスに関してはグルー/カーンの設定はしない.
これは,\pTeX では,
- hboxの先頭・末尾とインデントされていない(\verb+\noindent+ で開始さ
+ hboxの先頭・末尾とインデントされていない(\cs{noindent} で開始さ
れた)段落の先頭にはJFMグルーは入らないという仕様を実現させるためである.
\item \pTeX の組版を再現させようというのが目的であれば以上の注意を守れば十分である.
ところで,\pTeX では通常の段落の先頭にJFMグルーが残るという仕様があるので,
段落先頭の開き括弧は全角二分下がりになる.全角下がりを実現させるに
- は,段落の最初に手動で \verb+\inhibitglue+ を追加するか,あるいは
- \ \verb+\everypar+ のハックを行い,それを自動化させるしかなかった.
+ は,段落の最初に手動で \cs{inhibitglue} を追加するか,あるいは
+ \ \cs{everypar} のハックを行い,それを自動化させるしかなかった.
一方,\LuaTeX-jaでは,\texttt{'parbdd'}によって,それがJFM側で調整できるよ
うになった.例えば,\LuaTeX-ja同梱のJFMのように,\texttt{'boxbdd'}と同じ文字クラスに
\texttt{'parbdd'}を入れれば全角下がりとなる.
\begin{LTXexample}[width=0.4\textwidth]
-\jfont\g=file:KozMinPr6N-Regular.otf:jfm=test \g
+\jfont\g=KozMinPr6N-Regular:jfm=test \g
\parindent1\zw\noindent{}◆◆◆◆◆
\par 「◆◆←二分下がり
\par 【◆◆←全角下がり
\end{LTXexample}
\end{itemize}
-但し,\verb+\everypar+ を利用している場合にはこの仕組みは正しく動かない.
-そのような例としては箇条書き中の \verb+\item+ で始まる段落があり,\Pkg{ltjsclasses}では
+但し,\cs{everypar} を利用している場合にはこの仕組みは正しく動かない.
+そのような例としては箇条書き中の \cs{item} で始まる段落があり,\Pkg{ltjsclasses}では
人工的に「\texttt{'parbdd'}の意味を持つ」whatsitノードを作ることによって対処している%
\footnote{\texttt{ltjsclasses.dtx} を参照されたい.
JFM側で一部の対処ができることにより,\Pkg{jsclasses}のようにif文の判定はしていない.}.
Aleph, \LuaTeX~and $\varepsilon$-\kern-.125em(u)\pTeX\ can handles 256~families, but
an external package is needed to support this in plain \TeX\ and
\LaTeX.}, and each family has three fonts:
-\verb+\textfont+, \verb+\scriptfont+ and \verb+\scriptscriptfont+.
+\cs{textfont}, \cs{scriptfont} and \cs{scriptscriptfont}.
%</en>
%<*ja>
\TeX\ は数式フォントを16のファミリ\footnote{Omega, Aleph, \LuaTeX,そして
$\varepsilon$-\kern-.125em(u)\pTeX\ では256の数式ファミリを扱うことができるが,
これをサポートするためにplain \TeX と\LaTeX では外部パッケージを読み込む必要が
ある.}で管理し,それぞれのファミリは3つのフォントを持っている:
-\verb+\textfont+, \verb+\scriptfont+ そして \verb+\scriptscriptfont+ である.
+\cs{textfont}, \cs{scriptfont} そして \cs{scriptscriptfont} である.
%</ja>
%<*en>
\LuaTeX-ja's handling of Japanese fonts in math formulas is similar;
Table~\ref{tab-math} shows counterparts to \TeX's primitives for math
font families. There is no relation between the value of
-\verb+\fam+ and that of \verb+\jfam+; with appropriate settings,
-you can set both \verb+\fam+ and \verb+\jfam+ to the same value.
+\cs{fam} and that of \cs{jfam}; with appropriate settings,
+you can set both \cs{fam} and \cs{jfam} to the same value.
%</en>
%<*ja>
\LuaTeX-jaの数式中での和文フォントの扱いも同様である.
表\ref{tab-math}は数式フォントファミリに対する \TeX のプリミティブと対応する
-ものを示している.\verb+\fam+ と \verb+\jfam+ の値の間には関係はなく,
-適切な設定の下では \verb+\fam+ と \verb+\jfam+ の両方に同じ値を設定することができる.
+ものを示している.\cs{fam} と \cs{jfam} の値の間には関係はなく,
+適切な設定の下では \cs{fam} と \cs{jfam} の両方に同じ値を設定することができる.
%</ja>
\begin{table}[!tb]
%<en>\caption{Commands for Japanese math fonts}
%<ja>\caption{和文数式フォントに対する命令}
\label{tab-math}
+%<en>\medskip
\centering
\def\{{\char`\{}\def\}{\char`\}}\small
\begin{tabular}{ll}
%<en>\bf Japanese fonts&\bf alphabetic fonts\\
%<ja>\bf 和文フォント&\bf 欧文フォント\\
\midrule
-\verb+\jfam+${}\in [0,256)$&\verb+\fam+\\
-\tt\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\textfont+<fam>=<font\_cs>\\
-\tt\Param{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\scriptfont+<fam>=<font\_cs>\\
-\tt\Param{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\scriptscriptfont+<fam>=<font\_cs>\\
+\cs{jfam}${}\in [0,256)$&\cs{fam}\\
+\tt\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\cs{textfont}<fam>=<font\_cs>\\
+\tt\Param{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\cs{scriptfont}<fam>=<font\_cs>\\
+\tt\Param{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\cs{scriptscriptfont}<fam>=<font\_cs>\\
\bottomrule
\end{tabular}
\end{table}
%<ja>\subsection{コールバック}
%<*en>
-Like \LuaTeX\ itself, \LuaTeX-ja also has callbacks. These callbacks can
+\LuaTeX-ja also has several callbacks. These callbacks can
be accessed via \verb+luatexbase.add_to_callback+ function and so on, as other callbacks.
%</en>
%<*ja>
\texttt{jfm-min.lua}中の\texttt{'parbdd'}を強制的にクラス0に割り当てている.
%</ja>
-%<en>\item[\texttt{luatexja.define\_font} callback]
-%<ja>\item[\texttt{luatexja.define\_font}コールバック]
+%<en>\item[\texttt{luatexja.define\_jfont} callback]
+%<ja>\item[\texttt{luatexja.define\_jfont}コールバック]
%<*en>
-This callback and the next callback form a pair, and you can assign letters which don't have
- fixed code points in Unicode to non-zero character classes.
+This callback and the next callback form a pair, and you can assign characters
+ which do not have fixed code points in Unicode to non-zero character classes.
This \texttt{luatexja.define\_font} callback is called just when new Japanese font is loaded.
%</en>
%<*ja>
return <table> new_jfont_info
end
\end{lstlisting}
-
%<*en>
-You may assume that \verb+jfont_info+ has the following fields:
-%</en>
-%<*ja>
-\verb+jfont_info+ は以下の2フィールドを持つ:
-%</ja>
+\verb+jfont_info+ has the following fields,
+\emph{which may not overwritten by a user}:
\begin{description}
-\item[\tt size\_cache]
-%<*ja>
-使用されているJFMの情報が格納されているテーブルで,
-\emph{このテーブルを書き換えてはならない}.
-中身はほぼJFMファイルに書かれている唯一のテーブルであるが,次のように若干変わっている:
+\item[\texttt{size}]
+The font size specified at \cs{jfont} in scaled points ($1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$).
+\item[\texttt{zw}, \texttt{zh}, \texttt{kanjiskip}, \texttt{xkanjiskip}]
+These are scaled value of those specified by the JFM, by the font size.
+\item[\texttt{jfm}]
+The internal number of the JFM.
+\item[\texttt{var}]
+The value of \texttt{jfmvar}~key, which is specified at \cs{jfont}.
+The default value is the empty string.
+\item[\texttt{chars}]
+The mapping table from character codes to its character classes.\\
+The specification \texttt{[i].chars=\{<character>, ...\}} in the JFM will be stored in this
+ field as \texttt{chars=\{[<character>]=\,$i$, ...\}}.
+\item[\texttt{char\_type}]
+For $i\in\omega$, \texttt{char\_type[$i$]} is information of characters whose class is
+ $i$, and has the following fields:
\begin{itemize}
-\item 各文字クラス$i$に属する文字達のテーブル\
-\texttt{[$i$].chars=\{<character>, ...\}} は,トップレベルにまとめられ,
-\texttt{chars=\{[<character>]=\,$i$, ...\}} という形になっている.
-\item \texttt{zw},~\texttt{zh}, \texttt{kanjiskip},~\texttt{xkanjiskip} の各フィールドの値は,
-実際に使われるフォントサイズに合わせたsp ($1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$)単位の長さに変わっている.
-\item 各文字クラス$i$の情報を格納したテーブルも,\texttt{char\_type} フィールドの下にまとめられている.
-例えば,文字クラス1に属する文字の高さは \texttt{char\_type[1].height} で参照できる.
-\item \texttt{dir} フィールドはこのテーブルにはない.
+ \item \texttt{width},~\texttt{height}, \texttt{depth},
+ \texttt{italic}, \texttt{down},~\texttt{left}\ are just
+ scaled value of those specified by the JFM, by the font size.
+ \item \texttt{align} is a number which is determined from \texttt{align}~field in the JFM:
+\[
+ \begin{cases}
+ 0&\text{\texttt{'left'} and the default value}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
+ \end{cases}
+\]
+\item For $j\in \omega$, \texttt{[$j$]} stores a kern or a glue which will be inserted
+between character class~$i$ and class~$j$.
+
+If a kern will be inserted, the value of this field is \texttt{[$j$]=\{false, <kern\_node>, <ratio>\}},
+where <kern\_node> is a node\footnote{%
+ This version of \LuaTeX-ja uses ``direct access
+ model'' for accessing nodes, if possible. }.
+If a glue will be inserted, we have \texttt{[$j$]=\{false, <spec\_node>, <ratio>, <icflag>\}},
+where <spec\_node> is also a node, and $\text{<icflag>}=\textit{from\_jfm}+\text{<priority>}$.
\end{itemize}
-%</ja>
-%<*en>
-A table which contains the information of a JFM, and \emph{this table must not be changed}.
-The contents of this table are similar to that which is written is the JFM file, but
-the following differ:
+\end{description}
+%</en>
+%<*ja>
+\verb+jfont_info+ は最低限以下のフィールドを持つが,これらを書き換えてはならない:
+\begin{description}
+\item[\texttt{size}]
+実際に使われるフォントサイズ(sp単位).$1\,\mathrm{sp}=2^{-16}\,\mathrm{pt}$.
+\item[\texttt{zw}, \texttt{zh}, \texttt{kanjiskip}, \texttt{xkanjiskip}]
+JFMファイルで指定されているそれぞれの値をフォントサイズに合わせてスケーリングしたものを
+sp単位で格納している.
+\item[\texttt{jfm}]
+利用されているJFMを識別するための番号.
+\item[\texttt{var}]
+\cs{jfont}で指定された \texttt{jfmvar} キーの値(未指定のときは空文字列).
+\item[\texttt{chars}]
+文字コードから文字クラスへの対応が記述されたテーブル.\\
+JFM内の \texttt{[i].chars=\{<character>, ...\}} という指定は\
+\texttt{chars=\{[<character>]=\,$i$, ...\}} という形式に変換されている.
+\item[\texttt{char\_type}]
+$i\in\omega$に対して,\texttt{char\_type[$i$]} は文字クラス$i$の文字の寸法を格納しており,
+以下のフィールドを持つ.
\begin{itemize}
-\item There is a \texttt{chars} table, \dots
-\item The value in \texttt{zw},~\texttt{zh}, \texttt{kanjiskip},~\texttt{xkanjiskip} fields are
-now scaled by real font size, and in scaled-pont unit.
-\item ...
-\item There is no \texttt{dir} field in this table.
+ \item \texttt{width},~\texttt{height}, \texttt{depth},
+ \texttt{italic}, \texttt{down},~\texttt{left}\ は
+JFMで指定されているそれぞれの値をスケーリングしたものである.
+ \item \texttt{align} はJFMで指定されている値によって,
+\[
+ \begin{cases}
+ 0&\text{\texttt{'left'}や省略時}\\0.5&\text{\tt 'middle'}\\1&\text{\tt 'right'}
+ \end{cases}
+\]
+のいずれかの値をとる.
+\item $j\in \omega$に対して,\texttt{[$j$]} は文字クラス$i$の文字と$j$の文字の間に挿入されるkern
+ やglueを格納している.
+間に入るものがkernであれば,このフィールドの値は\
+\texttt{[$j$]=\{false, <kern\_node>, <ratio>\}} である.
+<kern\_node>はkernを表すノードそのものである\footnote{%
+本バージョンでは利用可能ならばノードのアクセス手法にdirect access
+ modelを用いている.そのため,例えば\LuaTeX\ beta-0.78.2では,単なる自然数のようにし
+ か見えないことに注意.
+}.
+glueであれば,\texttt{[$j$]=\{false, <spec\_node>, <ratio>, <icflag>\}} である.
+<spec\_node>はglueの長さを表すノードそのものであり,
+ $\text{<icflag>}=\textit{from\_jfm}+\text{<priority>}$である.
\end{itemize}
-%</en>
-
-\item[\tt var]
-%<en>The value specified in \texttt{jfmvar=...} at a call of \verb+\jfont+.
-%<ja>\verb+\jfont+ の呼び出しの際に\texttt{jfmvar=...}で指定された値.
\end{description}
+%</ja>
%<*en>
-The returned table \verb+new_jfont_info+ also should include these two fields.
+The returned table \verb+new_jfont_info+ also should include these fields, but
+you are free to add more fields (to use them in the \texttt{luatexja.find\_char\_class} callback).
The \verb+font_number+ is a font number.
%</en>
%<*ja>
-戻り値の \verb+new_jfont_info+ テーブルもこれら2つのフィールドを含まなければならないが,
+戻り値の \verb+new_jfont_info+ テーブルも上に述べたフィールドをそのまま含まなければならないが,
それ以外にユーザが勝手にフィールドを付け加えることは自由である.
\verb+font_number+ はフォント番号である.
%</ja>
%<*en>
The argument \verb+shift_info+ and the returned \verb+new_shift_info+ have
\texttt{down} and \texttt{left} fields, which are the amount of shifting
- down/left the character in a scaled-point.
+ down/left the character in a scaled point.
%</en>
%<*ja>
引数 \verb+shift_info+ と戻り値の \verb+new_shift_info+ は
\texttt{down}と\texttt{left}のフィールドを持ち,これらの値は
-文字の下/左へのシフト量(スケールド・ポイント単位)である.
+文字の下/左へのシフト量(sp単位)である.
%</ja>
%<*en>
%<en>\section{Parameters}
%<ja>\section{パラメータ}
-\subsection{\texttt{\textbackslash ltjsetparameter}}
+\subsection{\cs{ltjsetparameter}}
\label{ssec-param}
%<*en>
-As described before, \verb+\ltjsetparameter+ and \verb+\ltjgetparameter+ are
+As described before, \cs{ltjsetparameter} and \cs{ltjgetparameter} are
commands for accessing most parameters of \LuaTeX-ja. One of the main
reason that \LuaTeX-ja didn't adopted the syntax similar to that of \pTeX\
(\textit{e.g.},~\verb+\prebreakpenalty`)=10000+)
of \LuaTeX, see Section~\ref{sec-para}.
%</en>
%<*ja>
-先に述べたように,\verb+\ltjsetparameter+ と \verb+\ltjgetparameter+ は
+先に述べたように,\cs{ltjsetparameter} と \cs{ltjgetparameter} は
\LuaTeX-jaのほとんどのパラメータにアクセスするための命令である.
\LuaTeX-jaが\pTeX のような文法(例えば,\verb+\prebreakpenalty`)=10000+)を
採用しない理由の一つは,\LuaTeX のソースにおける \verb+hpack_filter+
%</ja>
%<*en>
-\verb+\ltjsetparameter+ and \verb+\ltjglobalsetparameter+ are commands
+\cs{ltjsetparameter} and \cs{ltjglobalsetparameter} are commands
for assigning parameters. These take one argument which is a
-\texttt{<key>=<value>} list.
+\texttt{<key>=<value>} list.
The list of allowed keys are described in the next subsection.
The difference between
-\verb+\ltjsetparameter+ and \verb+\ltjglobalsetparameter+ is only the
+\cs{ltjsetparameter} and \cs{ltjglobalsetparameter} is only the
scope of assignment;
-\verb+\ltjsetparameter+ does a local assignment and
-\verb+\ltjglobalsetparameter+ does a global one.
-They also obey the value of \verb+\globaldefs+,
+\cs{ltjsetparameter} does a local assignment and
+\cs{ltjglobalsetparameter} does a global one.
+They also obey the value of \cs{globaldefs},
like other assignment.
%</en>
%<*ja>
-\verb+\ltjsetparameter+ と \verb+\ltjglobalsetparameter+ はパラメータを
+\cs{ltjsetparameter} と \cs{ltjglobalsetparameter} はパラメータを
指定するための命令である.これらは\texttt{<key>=<value>}のリストを
引数としてとる.許されるキーの一覧は次の節にある.
-\verb+\ltjsetparameter+ と \verb+\ltjglobalsetparameter+ の違いはスコープの
+\cs{ltjsetparameter} と \cs{ltjglobalsetparameter} の違いはスコープの
違いのみで,
-\verb+\ltjsetparameter+ はローカルな指定,\verb+\ltjglobalsetparameter+ は
+\cs{ltjsetparameter} はローカルな指定,\cs{ltjglobalsetparameter} は
グローバルな指定を行う.
-これらは他のパラメータ指定と同様に \verb+\globaldefs+ の値に従う.
+これらは他のパラメータ指定と同様に \cs{globaldefs} の値に従う.
%</ja>
%<*en>
The following is the list of parameters which can be specified by the
-\verb+\ltjsetparameter+ command. [\verb+\cs+] indicates the counterpart
+\cs{ltjsetparameter} command. [\cs{cs}] indicates the counterpart
in \pTeX, and symbols beside each parameter has the following meaning:
%</en>
%<*ja>
-以下は \verb+\ltjsetparameter+ に指定することができるパラメータの一覧である.
-[\verb+\cs+]は\pTeX における対応物を示す.
+以下は \cs{ltjsetparameter} に指定することができるパラメータの一覧である.
+[\cs{cs}]は\pTeX における対応物を示す.
また,それぞれのパラメータの右上にある記号には次の意味がある:
%</ja>
\begin{itemize}
\end{itemize}
\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
-\item[\Param{jcharwidowpenalty}\,=<penalty>$^\ast$] [\verb+\jcharwidowpenalty+]
+\item[\DParam{jcharwidowpenalty}\,=<penalty>$^\ast$] [\cs{jcharwidowpenalty}]
%<*en>
Penalty value for suppressing orphans. This penalty is inserted just
after the last \textbf{JAchar} which is not regarded as a
挿入される.
%</ja>
-\item[\Param{kcatcode}\,=\{<chr\_code>,<natural number>\}$^\ast$]\
+\item[\DParam{kcatcode}\,=\{<chr\_code>,<natural number>\}$^\ast$]\
%<*en>
An additional attributes which each character whose character code is <chr\_code> has.
At the present version, the lowermost bit of <natural number> indicates
みなされるかどうかを表している(上の\Param{jcharwidowpenalty}の記述を参照).
%</ja>
-\item[\Param{\hypertarget{fld:prebp}{prebreakpenalty}}\,=\{<chr\_code>,<penalty>\}$^\ast$] [\verb+\prebreakpenalty+]\
+\item[\DParam{prebreakpenalty}\,=\{<chr\_code>,<penalty>\}$^\ast$] [\cs{prebreakpenalty}]\
%<*ja>
文字コード<chr\_code>の\textbf{JAchar}が行頭にくることを抑止するために,
この文字の前に挿入/追加されるペナルティの量を指定する.
%</en>
-\item[\Param{\hypertarget{fld:postbp}{postbreakpenalty}}\,=\{<chr\_code>,<penalty>\}$^\ast$] [\verb+\postbreakpenalty+]
+\item[\DParam{postbreakpenalty}\,=\{<chr\_code>,<penalty>\}$^\ast$] [\cs{postbreakpenalty}]
%<*ja>
文字コード<chr\_code>の\textbf{JAchar}が行末にくることを抑止するために,
この文字の後に挿入/追加されるペナルティの量を指定する.
-\pTeX では,\verb+\prebreakpenalty+, \verb+\postbreakpenalty+において,
+\pTeX では,\cs{prebreakpenalty}, \cs{postbreakpenalty}において,
\begin{itemize}
\item 一つの文字に対して,pre, postどちらか一つしか指定することができなかっ
た(後から指定した方で上書きされる).
%</ja>
%<*en>
Set a penalty which is inserted automatically after the character <chr\_code>,
-to prevent a line ends with this character.
-\pTeX\ has following restrictions on \verb+\prebreakpenalty+ and \verb+\postbreakpenalty+,
+to prevent a line ends with this character.
+\pTeX\ has following restrictions on \cs{prebreakpenalty} and \cs{postbreakpenalty},
but they don't exist in \LuaTeX-ja:
-\dots
+\begin{itemize}
+ \item Both \cs{prebreakpenalty} and \cs{postbreakpenalty} cannot be set
+for the same character.
+ \item We can set \cs{prebreakpenalty} and \cs{postbreakpenalty} up to 256~characters.
+\end{itemize}
%</en>
-\item[\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
-%<en>[\verb+\textfont+ in \TeX]
-%<ja>[\TeX の \verb+\textfont+]
-\item[\Param{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
-%<en>[\verb+\scriptfont+ in \TeX]
-%<ja>[\TeX の \verb+\scriptfont+]
-\item[\Param{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
-%<en>[\verb+\scriptscriptfont+ in \TeX]
-%<ja>[\TeX の \verb+\scriptscriptfont+]
-\item[\Param{yjabaselineshift}\,=<dimen>]\
-\item[\Param{yalbaselineshift}\,=<dimen>] [\verb+\ybaselineshift+]
+\item[\DParam{jatextfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
+%<en>[\cs{textfont} in \TeX]
+%<ja>[\TeX の \cs{textfont}]
+\item[\DParam{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
+%<en>[\cs{scriptfont} in \TeX]
+%<ja>[\TeX の \cs{scriptfont}]
+\item[\DParam{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}$^\ast$]
+%<en>[\cs{scriptscriptfont} in \TeX]
+%<ja>[\TeX の \cs{scriptscriptfont}]
+\item[\DParam{yjabaselineshift}\,=<dimen>]\
+\item[\DParam{yalbaselineshift}\,=<dimen>] [\cs{ybaselineshift}]
+\item[\DParam{tjabaselineshift}\,=<dimen>]\
+\item[\DParam{talbaselineshift}\,=<dimen>] [\cs{tbaselineshift}]
-\item[\Param{jaxspmode}\,=\{<chr\_code>,<mode>\}$^\ast$]
+\item[\DParam{jaxspmode}\,=\{<chr\_code>,<mode>\}$^\ast$]
%<*en>
-Setting whether inserting \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed before/after a \textbf{JAchar} whose character code is <chr\_code>.
+Setting whether inserting \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is <chr\_code>.
The followings are allowed for <mode>:
%</en>
%<*ja>
-文字コードが<chr\_code>の\textbf{JAchar}の前/後ろに\Param{\hyperlink{fld:xks}{xkanjiskip}}の
+文字コードが<chr\_code>の\textbf{JAchar}の前/後ろに\Param{xkanjiskip}の
挿入を許すかどうかの設定.
以下の<mode>が許される:
%</ja>
\begin{description}
-%<en>\item[0, \texttt{inhibit}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is inhibited before the character, nor after the character.
-%<ja>\item[0, \texttt{inhibit}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の前/後ろのいずれでも禁止される.
-%<en>\item[1, \texttt{preonly}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed before the character, but not after.
-%<ja>\item[1, \texttt{preonly}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の前では許されるが,後ろでは許されない.
-%<en>\item[2, \texttt{postonly}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed after the character, but not before.
-%<ja>\item[2, \texttt{postonly}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の後ろでは許されるが,前では許されない.
-%<en>\item[3, \texttt{allow}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed both before the character and after the character. This is the default value.
-%<ja>\item[3, \texttt{allow}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である.
+%<en>\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited before the character, nor after the character.
+%<ja>\item[0, \texttt{inhibit}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも禁止される.
+%<en>\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed before the character, but not after.
+%<ja>\item[1, \texttt{preonly}] \Param{xkanjiskip}の挿入は文字の前では許されるが,後ろでは許されない.
+%<en>\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed after the character, but not before.
+%<ja>\item[2, \texttt{postonly}] \Param{xkanjiskip}の挿入は文字の後ろでは許されるが,前では許されない.
+%<en>\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed both before the character and after the character. This is the default value.
+%<ja>\item[3, \texttt{allow}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である.
\end{description}
%<*en>
-This parameter is similar to the \verb+\inhibitxspcode+ primitive of \pTeX, but not compatible with \verb+\inhibitxspcode+.
+This parameter is similar to the \cs{inhibitxspcode} primitive of \pTeX, but not compatible with \cs{inhibitxspcode}.
%</en>
%<*ja>
-このパラメータは\pTeX の \verb+\inhibitxspcode+ プリミティブと似ているが,
+このパラメータは\pTeX の \cs{inhibitxspcode} プリミティブと似ているが,
互換性はない.
%</ja>
-\item[\Param{alxspmode}\,=\{<chr\_code>,<mode>\}$^\ast$] [\verb+\xspcode+]
+\item[\DParam{alxspmode}\,=\{<chr\_code>,<mode>\}$^\ast$] [\cs{xspcode}]
%<*en>
-Setting whether inserting \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed before/after a
+Setting whether inserting \Param{xkanjiskip} is allowed before/after a
\textbf{ALchar} whose character code is <chr\_code>.
The followings are allowed for <mode>:
%</en>
%<*ja>
-文字コードが<chr\_code>の\textbf{ALchar}の前/後ろに\Param{\hyperlink{fld:xks}{xkanjiskip}}の
+文字コードが<chr\_code>の\textbf{ALchar}の前/後ろに\Param{xkanjiskip}の
挿入を許すかどうかの設定.
以下の<mode>が許される:
%</ja>
\begin{description}
-%<en>\item[0, \texttt{inhibit}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is inhibited before the character, nor after the character.
-%<ja>\item[0, \texttt{inhibit}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の前/後ろのいずれでも禁止される.
-%<en>\item[1, \texttt{preonly}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed before the character, but not after.
-%<ja>\item[1, \texttt{preonly}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の前では許されるが,後ろでは許されない.
-%<en>\item[2, \texttt{postonly}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed after the character, but not before.
-%<ja>\item[2, \texttt{postonly}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の後ろでは許されるが,前では許されない.
-%<en>\item[3, \texttt{allow}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed before the character and after the character. This is the default value.
-%<ja>\item[3, \texttt{allow}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である.
+%<en>\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited before the character, nor after the character.
+%<ja>\item[0, \texttt{inhibit}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも禁止される.
+%<en>\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed before the character, but not after.
+%<ja>\item[1, \texttt{preonly}] \Param{xkanjiskip}の挿入は文字の前では許されるが,後ろでは許されない.
+%<en>\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed after the character, but not before.
+%<ja>\item[2, \texttt{postonly}] \Param{xkanjiskip}の挿入は文字の後ろでは許されるが,前では許されない.
+%<en>\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed before the character and after the character. This is the default value.
+%<ja>\item[3, \texttt{allow}] \Param{xkanjiskip}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である.
\end{description}
%<*en>
Note that parameters \Param{jaxspmode} and \Param{alxspmode} share a common table, hence these two parameters are synonyms of each other.
これら2つのパラメータは互いの異名となっていることに注意する.
%</ja>
-\item[\Param{autospacing}\,=<bool>] [\verb+\autospacing+]
-\item[\Param{autoxspacing}\,=<bool>] [\verb+\autoxspacing+]
-\item[\Param{\hypertarget{fld:kanjiskip}{kanjiskip}}\,=<skip>$^\ast$] [\verb+\kanjiskip+]
+\item[\DParam{autospacing}\,=<bool>] [\cs{autospacing}]
+\item[\DParam{autoxspacing}\,=<bool>] [\cs{autoxspacing}]
+\item[\DParam{kanjiskip}\,=<skip>$^\ast$] [\cs{kanjiskip}]
%<*ja>
デフォルトで2つの\textbf{JAchar}の間に挿入されるグルーである.
通常では,\pTeX と同じようにフォントサイズに比例して変わることはない.
-しかし,自然長が \verb+\maxdimen+ の場合は,例外的に和文フォントのJFM側で指定されている
+しかし,自然長が \cs{maxdimen} の場合は,例外的に和文フォントのJFM側で指定されている
値を採用(こちらはフォントサイズに比例)することになっている.
%</ja>
-\item[\Param{\hypertarget{fld:xks}{xkanjiskip}}\,=<skip>$^\ast$] [\verb+\xkanjiskip+]
+\item[\DParam{xkanjiskip}\,=<skip>$^\ast$] [\cs{xkanjiskip}]
%<*ja>
デフォルトで\textbf{JAchar}と\textbf{ALchar}の間に挿入されるグルーである.
-\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}と同じように,通常ではフォントサイズに比例して変わることはないが,
-自然長が \verb+\maxdimen+ の場合が例外である.
+\Param{kanjiskip}と同じように,通常ではフォントサイズに比例して変わることはないが,
+自然長が \cs{maxdimen} の場合が例外である.
%</ja>
-\item[\Param{\hypertarget{fld:diffjfm}{differentjfm}}\,=<mode>$^\dagger$]
+\item[\DParam{differentjfm}\,=<mode>$^\dagger$]
%<*en>
Specify how glues/kerns between two \textbf{JAchar}s whose JFM (or size) are different.
許される値は以下の通り:
%</ja>
\begin{quote}
-\texttt{average},
-\texttt{both},
-\texttt{large},
-\texttt{small},
-\texttt{pleft},
-\texttt{pright},
+\texttt{average},
+\texttt{both},
+\texttt{large},
+\texttt{small},
+\texttt{pleft},
+\texttt{pright},
\texttt{paverage}
\end{quote}
%<*en>
各々の値による差異の詳細は\ref{ssec-cluster-wa}節の「『右空白』の算出」を参照してほしい.
%</ja>
-\item[\Param{jacharrange}\,=<ranges>]
-\item[\Param{kansujichar}\,=\{<digit>, <chr\_code>\}$^\ast$] [\verb+\kansujichar+]
+\item[\DParam{jacharrange}\,=<ranges>]
+\item[\DParam{kansujichar}\,=\{<digit>, <chr\_code>\}$^\ast$] [\cs{kansujichar}]
+
+\item[\DParam{direction}\,=<dir>\ \hbox{\rm (always local)}]
+
+%<*ja>
+組方向を変更する \cs{yoko}~(if $\hbox{<dir>}=4$), \cs{tate}~(if $\hbox{<dir>}=3$),
+\cs{dtou}~(if $\hbox{<dir>}=1$), \cs{utod}~(if $\hbox{<dir>}=11$) と同じ役割を持つ.
+利用可能な状況もこれら4命令と同一である.引数<dir>が4,~3, 1,~11のいずれでも無いときの
+動作は未定義である.
+%</ja>
+
\end{list}
-\subsection{\texttt{\textbackslash ltjgetparameter}}
+\subsection{\cs{ltjgetparameter}}
\label{ssec-getpar}
%<*en>
-\verb+\ltjgetparameter+ is a conteol sequence for acquiring parameters. It
+\cs{ltjgetparameter} is a control sequence for acquiring parameters. It
always takes a parameter name as first argument.
%</en>
%<*ja>
-\verb+\ltjgetparameter+ はパラメータの値を取得するための命令であり,
+\cs{ltjgetparameter} はパラメータの値を取得するための命令であり,
常にパラメータの名前を第一引数にとる.
%</ja>
\begin{LTXexample}
\end{LTXexample}
%<*en>
-\emph{The return value of\/ {\normalfont\tt\textbackslash ltjgetparameter} is
+\emph{The return value of\/ \cs{ltjgetparameter} is
always a string}. This is outputted by \texttt{tex.write()}, so any
character other than space~``\texttt{\char32}''~(\texttt{U+0020}) has the category code
12~(other), while the space has 10~(space).
%</en>
%<*ja>
-\emph{{\normalfont\tt\textbackslash ltjgetparameter}の戻り値は常に文字列である.}
+\emph{\cs{ltjgetparameter} の戻り値は常に文字列である.}
これは\texttt{tex.write()}によって出力しているためで,空白「\texttt{\char32}」
(\texttt{U+0020})を除いた文字のカテゴリーコードは全て12~(other)となる.
一方,空白のカテゴリーコードは10~(space)である.
%</ja>
\begin{itemize}
-\item
+\item
%<*en>
If first argument is one of the
following, no additional argument is needed.
第1引数が次のいずれかの場合には,追加の引数は必要ない.
%</ja>
\begin{quote}
-\sffamily
+\sffamily
jcharwidowpenalty, yjabaselineshift, yalbaselineshift, autospacing, autoxspacing,\\
-kanjiskip, xkanjiskip, differentjfm
+kanjiskip, xkanjiskip, differentjfm, direction
\end{quote}
%<*en>
Note that \verb+\ltjgetparameter{autospacing}+~and~\verb+\ltjgetparameter{autoxspacing}+
-returns 1 or 0, not
+returns 1 or 0, not
\texttt{true}~nor~\texttt{false}.
%</en>
%<*ja>
1と0のいずれかを返すことに注意,
%</ja>
-\item
+\item
%<*en>
If first argument is one of the
following, an additional argument---a character code, for example---is needed.
第1引数が次のいずれかの場合には,さらに文字コードを第二引数としてとる.
%</ja>
\begin{quote}
-\sffamily
+\sffamily
kcatcode, prebreakpenalty, postbreakpenalty, jaxspmode, alxspmode
-\end{quote}
+\end{quote}
%<*en>
\verb+\ltjgetparameter{jaxspmode}{...}+~and~\verb+\ltjgetparameter{alxspmode}{...}+
returns 0,~1, 2,~or~3, instead of \texttt{preonly} etc.
%</en>
%<*ja>
-\verb+\ltjgetparameter{jaxspmode}{...}+ や \verb+\ltjgetparameter{alxspmode}{...}+\
+\verb+\ltjgetparameter{jaxspmode}{...}+ や \verb+\ltjgetparameter{alxspmode}{...}+\
は,\texttt{preonly} などといった文字列ではなく,0から3までの値を返す.
%</ja>
%<*en>
For an integer~<digit> between 0~and~9,
\verb+\ltjgetparameter{kansujichar}{+<digit>\verb+}+ returns the character code
-of the result of \verb+\kansuji+<digit>.
+of the result of \cs{kansuji}<digit>.
%</en>
%<*ja>
0--9の数<digit>に対して,
-\verb+\ltjgetparameter{kansujichar}{+<digit>\verb+}+ は,\verb+\kansuji+<digit>で出力され
+\verb+\ltjgetparameter{kansujichar}{+<digit>\verb+}+ は,\cs{kansuji}<digit>で出力され
る文字の文字コードを返す.
%</ja>
+\item
+%<*en>
+\verb+\ltjgetparameter{adjustdir}+ returns a integer which represents
+the direction of the surrounding vertical list.
+As \Param{direction}, the return value 1 means \emph{down-to-up} direction,
+3 means \emph{tate} direction (vertical typesetting),
+and 4 means \emph{yoko} direction (horizontal typesetting).
+%</en>
+%<*ja>
+\verb+\ltjgetparameter{adjustdir}+ は,周囲のvboxの組方向(言い換えれば,
+\cs{vadjust} で用いられる組方向)を表す数値を返す.
+\Param{direction}と同様に,1は \cs{dtou} 方向を,
+3は縦組みを,4は横組みを表す.
+%</ja>
+
+\item
+%<*en>
+For an integer~<reg\_num> between 0~and~65535,
+\verb+\ltjgetparameter{boxdim}{+<reg\_num>\verb+}+ returns the direction of
+\cs{box}<reg\_num>. If this box is void, the returned value is zero.
+%</en>
+%<*ja>
+0--65535の数<reg\_num>に対して,
+\verb+\ltjgetparameter{boxdim}{+<reg\_num>\verb+}+ は,\cs{box}<reg\_num>に
+格納されているボックスの組方向を表す.もしこのレジスタが空の場合は,0が返される.
+%</ja>
-\item
+\item
%<*en>
-The following parameter names \emph{cannot be specified} in \verb+\ltjgetparameter+.
+The following parameter names \emph{cannot be specified} in \cs{ltjgetparameter}.
%</en>
%<*ja>
-次のパラメータ名を \verb+\ltjgetparameter+ に指定することはできない.
+次のパラメータ名を \cs{ltjgetparameter} に指定することはできない.
%</ja>
\begin{quote}
-\sffamily
+\sffamily
jatextfont, jascriptfont, jascriptscriptfont, jacharrange
\end{quote}
-\item
+\item
%<*en>
-\verb+\ltjgetparameter{chartorange}{+<chr\_code>\verb+}+ returns
+\verb+\ltjgetparameter{chartorange}{+<chr\_code>\verb+}+ returns
the range number which <chr\_code> belongs to
-(although there is no parameter named ``chartorange'').
+(although there is no parameter named ``chartorange'').
If <chr\_code> is between 0 and 127, this <chr\_code> does not belong to
any character range. In this case,
%<*en>
The following commands are implemented for compatibility with \pTeX.
Note that the former five commands don't support JIS~X~0213, but only JIS~X~0208.
-The last \verb+\kansuji+ converts an integer into its Chinese numerals.
+The last \cs{kansuji} converts an integer into its Chinese numerals.
%</en>
%<*ja>
以下の命令は\pTeX との互換性のために実装されている.そのため,JIS~X~0213には対応せず,
\pTeX と同じようにJIS~X~0208の範囲しかサポートしていない.
%</ja>
\begin{center}
-\verb+\kuten+, \verb+\jis+, \verb+\euc+, \verb+\sjis+, \verb+\jis+, \verb+\kansuji+
+\cs{kuten}, \cs{jis}, \cs{euc}, \cs{sjis}, \cs{jis}, \cs{kansuji}
\end{center}
%<*en>
These six commands takes an internal integer, and returns a \emph{string}.
%</en>
-%<en>\subsection{\texttt{\textbackslash inhibitglue}}
-%<ja>\subsection{\texttt{\textbackslash inhibitglue}}
+\subsection{\cs{inhibitglue}}
%<*en>
-\verb+\inhibitglue+ suppresses the insertion of \textbf{JAglue}.
+\cs{inhibitglue} suppresses the insertion of \textbf{JAglue}.
The following is an example, using a special JFM that there will be a glue between
the beginning of a box and ``あ'', and also between ``あ''~and~``ウ''.
%</en>
%<*ja>
-\verb+\inhibitglue+ は\textbf{JAglue}の挿入を抑制する.
+\cs{inhibitglue} は\textbf{JAglue}の挿入を抑制する.
以下は,ボックスの始めと「あ」の間,「あ」「ウ」の間にグルーが入る特別なJFMを用いた例で
ある.
%</ja>
-\begin{LTXexample}
+\begin{LTXexample}[width=0.4\textwidth]
\jfont\g=file:KozMinPr6N-Regular.otf:jfm=test \g
\fbox{\hbox{あウあ\inhibitglue ウ}}
\inhibitglue\par\noindent あ1
\end{LTXexample}
%<*en>
-With the help of this example, we remark the specification of \verb+\inhibitglue+:
+With the help of this example, we remark the specification of \cs{inhibitglue}:
%</en>
%<*ja>
-この例を援用して,\verb+\inhibitglue+ の仕様について述べる.
+この例を援用して,\cs{inhibitglue} の仕様について述べる.
%</ja>
\begin{itemize}
%<*en>
-\item The call of \verb+\inhibitglue+ in the (internal) vertical mode is
+\item The call of \cs{inhibitglue} in the (internal) vertical mode is
simply ignored.
%</en>
%<*ja>
-\item \verb+\inhibitglue+ の垂直モード中での呼び出しは意味を持たない.
-4行目の入力で有効にならないのは,\verb+\inhibitglue+ の時点では垂直モードであり,
-\verb+\noindent+ の時点で水平モードになるからである.
+\item \cs{inhibitglue} の垂直モード中での呼び出しは意味を持たない.
+4行目の入力で有効にならないのは,\cs{inhibitglue} の時点では垂直モードであり,
+\cs{noindent} の時点で水平モードになるからである.
%</ja>
%<*en>
-\item The call of \verb+\inhibitglue+ in the (restricted) horizontal
+\item The call of \cs{inhibitglue} in the (restricted) horizontal
mode is only effective on the spot; does not get over boundary of
- paragraphs. Moreover, \verb+\inhibitglue+ cancels ligatures and
+ paragraphs. Moreover, \cs{inhibitglue} cancels ligatures and
kernings, as shown in the last line of above example.
%</en>
%<*ja>
-\item \verb+\inhibitglue+ の(制限された)水平モード中での呼び出しはその場でのみ
+\item \cs{inhibitglue} の(制限された)水平モード中での呼び出しはその場でのみ
有効であり,段落の境界を乗り越えない.
- さらに,\verb+\inhibitglue+ は上の例の最終行のように(欧文における)リガチャとカーニングを
- 打ち消す.これは,\verb+\inhibitglue+ が内部的には「現在のリスト中にwhatsitノードを
+ さらに,\cs{inhibitglue} は上の例の最終行のように(欧文における)リガチャとカーニングを
+ 打ち消す.これは,\cs{inhibitglue} が内部的には「現在のリスト中にwhatsitノードを
追加する」ことを行なっているからである.
%</ja>
%<*en>
-\item The call of \verb+\inhibitglue+ in math mode is just ignored.
+\item The call of \cs{inhibitglue} in math mode is just ignored.
%</en>
%<*ja>
-\item \verb+\inhibitglue+ を数式モード中で呼び出した場合はただ無視される.
+\item \cs{inhibitglue} を数式モード中で呼び出した場合はただ無視される.
%</ja>
%<*ja>
\item \LaTeX で\LuaTeX-ja を使用する場合は,
-\verb+\inhibitglue+ の代わりとして \verb+\<+ を使うことができる.
+\cs{inhibitglue} の代わりとして \verb+\<+ を使うことができる.
既に \verb+\<+ が定義されていた場合は,\LuaTeX-ja の読み込みで強制的に上書きされるので
注意すること.
%</ja>
\end{itemize}
-\subsection{\texttt{\textbackslash ltjdeclarealtfont}}
+\subsection{\cs{ltjdeclarealtfont}}
\label{ssec-altfont}
%<*en>
-Using \verb+\ltjdeclarealtfont+, one can ``compose'' more than one Japanese fonts.
-This \verb+\ltjdeclarealtfont+ uses in the following form:
+Using \cs{ltjdeclarealtfont}, one can ``compose'' more than one Japanese fonts.
+This \cs{ltjdeclarealtfont} uses in the following form:
\begin{quote}
\ttfamily \textbackslash ltjdeclarealtfont<base\_font\_cs><alt\_font\_cs>{<range>}
\end{quote}
-where <base\_font\_cs>~and~<alt\_font\_cs> are defined by \verb+\jfont+.
+where <base\_font\_cs>~and~<alt\_font\_cs> are defined by \cs{jfont}.
Its meaning is
\begin{quote}
If the current Japanese font is <base\_font\_cs>, characters which belong to <range>
by <base\_font\_cs>. Note that characters which do not exist in <alt\_font\_cs> are
ignored.
-For example, if \verb+\hoge+ uses \texttt{jfm-ujis.lua}, the standard JFM of \LuaTeX-ja,
-then
+For example, if \cs{hoge} uses \texttt{jfm-ujis.lua}, the standard JFM of \LuaTeX-ja,
+then
\begin{verbatim}
\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}}
\end{verbatim}
does
\begin{quote}
-If the current Japanese font is \verb+\hoge+, \texttt{U+3000}-\texttt{U+30FF}
-and characters in class~1 (ideographic opening brackets)
-are typeset by \verb+\piyo+.
+If the current Japanese font is \cs{hoge}, \texttt{U+3000}--\texttt{U+30FF}
+and characters in class~1 (ideographic opening brackets)
+are typeset by \cs{piyo}.
\end{quote}
%</en>
%<*ja>
-\verb+\jfont+ の書式を見ればわかるように,基本的には\LuaTeX-jaにおける1つの和文フォントに
+\cs{jfont} の書式を見ればわかるように,基本的には\LuaTeX-jaにおける1つの和文フォントに
使用出来る「実際のフォント」は1つである.
-しかし,\verb+\ltjdeclarealtfont+ を用いると,この原則から外れることができる.
+しかし,\cs{ltjdeclarealtfont} を用いると,この原則から外れることができる.
-\verb+\ltjdeclarealtfont+ は以下の書式で使用する:
+\cs{ltjdeclarealtfont} は以下の書式で使用する:
\begin{quote}
\ttfamily \textbackslash ltjdeclarealtfont<base\_font\_cs><alt\_font\_cs>{<range>}
\end{quote}
<range>に属する文字は<alt\_font\_cs>を用いて組版される,という意味である.
\begin{itemize}
\item <base\_font\_cs>, <alt\_font\_cs>は
-\verb+\jfont+ によって定義された和文フォントである.
+\cs{jfont} によって定義された和文フォントである.
\item <range>は文字コードの範囲を表すコンマ区切りのリストであるが,
例外として負数$-n$は「<base\_font\_cs>のJFMの文字クラス$n$に属する全ての文字」
を意味する.
その文字に対する設定は無視される.
\end{itemize}
-例えば,\verb+\hoge+ のJFMが\LuaTeX-ja標準の
+例えば,\cs{hoge} のJFMが\LuaTeX-ja標準の
\ \texttt{jfm-ujis.lua} であった場合,
\begin{verbatim}
\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}}
\end{verbatim}
-は「\verb+\hoge+ を利用しているとき,
-\texttt{U+3000}-\texttt{U+30FF}と
-文字クラス1(開き括弧類)中の文字だけは \verb+\piyo+ を用いる」
+は「\cs{hoge} を利用しているとき,
+\texttt{U+3000}--\texttt{U+30FF}と
+文字クラス1(開き括弧類)中の文字だけは \cs{piyo} を用いる」
ことを設定する.\verb+{-1}-{-1}+ という変わった指定の仕方をしているのは,
普通に \texttt{-1} と指定したのでは正しく$-1$と読み取られないという
マクロの都合による.
%<en>\subsection{Patch for NFSS2}
%<ja>\subsection{NFSS2へのパッチ}
-\label{ssub-nfsspat}
+\label{ssec-nfsspat}
\begin{figure}[!tb]
-\begin{lstlisting}[numberstyle=\tiny, numbers=left, numbersep=1em]
-\DeclareKanjiFamily{JY3}{edm}{}
-\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*IPAexMincho:jfm=ujis}{}
-\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*IPAexMincho:jfm=ujis;color=007F00}{}
-\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*IPAexMincho:jfm=ujis;color=0000FF}{}
-\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{green}{"4E00-"67FF,{-2}-{-2}}
-\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{blue}{ "6800-"9FFF}
-{\kanjifamily{edm}\selectfont
-日本国民は、正当に選挙された国会における代表者を通じて行動し、……}
-\end{lstlisting}
-\begin{quote}
+\begin{LTXexample}[pos=b]
\DeclareKanjiFamily{JY3}{edm}{}
-\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis}{}
+\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;}{}
\DeclareFontShape{JY3}{edm}{m}{green}{<-> s*KozMinPr6N-Regular:jfm=ujis;color=007F00}{}
\DeclareFontShape{JY3}{edm}{m}{blue} {<-> s*KozMinPr6N-Regular:jfm=ujis;color=0000FF}{}
\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{green}{"4E00-"67FF,{-2}-{-2}}
\DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{blue}{ "6800-"9FFF}
-
{\kanjifamily{edm}\selectfont
日本国民は、正当に選挙された国会における代表者を通じて行動し、……}
-\end{quote}
-%<ja>\caption{\texttt{\textbackslash DeclareAlternateKanjiFont} の使用例}
-%<en>\caption{An example of \texttt{\textbackslash DeclareAlternateKanjiFont}}
+\end{LTXexample}
+%<ja>\caption{\cs{DeclareAlternateKanjiFont} の使用例}
+%<en>\caption{An example of \cs{DeclareAlternateKanjiFont}}
\label{fig:altkanji}
\end{figure}
Japanese patch for NFSS2 in \LuaTeX-ja
is based on \texttt{plfonts.dtx} which plays the same role in \pLaTeXe.
We will describe
-commands which are not described in Subsection~\ref{ssub-chgfnt}.
+commands which are not described in Subsection~\ref{ssec-chgfnt}.
%</en>
%<*ja>
\LuaTeX-jaのNFSS2への日本語パッチは
\pLaTeXe で同様の役割を果たす \texttt{plfonts.dtx} をベースに,
和文エンコーディングの管理等をLuaで書きなおしたものである.
-ここでは\ref{ssub-chgfnt}節で述べていなかった命令について
+ここでは\ref{ssec-chgfnt}節で述べていなかった命令について
記述しておく.
%</ja>
\begin{cslist}%
+\par\smallskip\par\hskip-\leftskip{\bfseries%
+%<ja>追加の長さ変数達
+%<en>additonal dimensions
+}\par
+
+%<*en>
+Like \pLaTeXe, \LuaTeX-ja defines the following dimensions
+for information of current Japanese font:
+%</en>
+%<*ja>
+\pLaTeXe と同様に,\LuaTeX-jaは「現在の和文フォントの情報」を格納する長さ変数
+%</ja>
+{\let\item=\origitem
+\begin{quote}
+ \cs{cht}~(height), \cs{cdp}~(depth), \cs{cHT}~(sum of former two),\\
+ \cs{cwd}~(width), \cs{cvs}~(lineskip), \cs{chs}~(equals to \cs{cwd})
+\end{quote}}
+%<en>and its \cs{normalsize} version:
+%<ja>と,その \cs{normalsize} 版である
+{\let\item=\origitem
+\begin{quote}
+ \cs{Cht}~(height), \cs{Cdp}~(depth),
+ \cs{Cwd}~(width), \\\cs{Cvs}~(equals to \cs{baselineskip}),
+ \cs{Chs}~(equals to \cs{cwd})%
+%<en>.
+\end{quote}}
+%<*ja>
+を定義している.なお,\cs{cwd} と \cs{zw},また
+\cs{cHT} と \cs{zh} は一致しない可能性がある.なぜなら,
+\cs{cwd},~\cs{cHT} は「あ」の寸法から決定されるのに対し,
+\cs{zw} と \cs{zh} はJFMに指定された値に過ぎないからである.
+%</ja>
+%<*en>
+Note that \cs{cwd}~and~\cs{cHT} may differ from \cs{zw}~and~\cs{zh}
+respectively.
+On the one hand the former dimensions are determined from the character ``あ'',
+but on the other hand \cs{zw}~and~\cs{zh} are specified by JFM.
+%</en>
+
+
+\item[DeclareYokoKanjiEncoding\{<encoding>\}\{<text-settings>\}\{<math-settings>\}]
\item[DeclareYokoKanjiEncoding\{<encoding>\}\{<text-settings>\}\{<math-settings>\}]
%<*en>
and Japanese font families are only made by their
encodings. For example, encodings OT1 and T1 are for
alphabetic font families, and a Japanese font family cannot
- have these encodings. This command defines a new encoding
- scheme for Japanese font family (in horizontal direction).
+ have these encodings. These command define a new encoding
+ scheme for Japanese font family.
%</en>
%<*ja>
\LuaTeX-jaのNFSS2においては,欧文フォントファミリと和文フォントファミリは
そのエンコーディングによってのみ区別される.
例えば,OT1とT1のエンコーディングは欧文フォントファミリに対するものであり,
和文フォントファミリはこれらのエンコーディングを持つことはできない.
-ã\81\93ã\81®ã\82³ã\83\9eã\83³ã\83\89ã\81¯æ¨ªæ\9b¸ã\81\8d用和文フォントのための新しいエンコーディングを
-定義する.
+ã\81\93ã\82\8cã\82\89ã\82³ã\83\9eã\83³ã\83\89ã\81¯æ¨ªçµ\84ç\94¨ã\83»ç¸¦çµ\84用和文フォントのための新しいエンコーディングを
+それぞれ定義する.
%</ja>
\item[DeclareKanjiEncodingDefaults\{<text-settings>\}\{<math-settings>\}]
\item[DeclareErrorKanjiFont\{<encoding>\}\{<family>\}\{<series>\}\{<shape>\}\{<size>\}]
%<*en>
-The above 3~commands are just the counterparts for \verb+\DeclareFontEncodingDefaults+ and~others.
+The above 3~commands are just the counterparts for \cs{DeclareFontEncodingDefaults} and~others.
%</en>
%<*ja>
-上記3つのコマンドはちょうど \verb+DeclareFontEncodingDefaults+ などに対応するものである.
+上記3つのコマンドはちょうど \cs{DeclareFontEncodingDefaults} などに対応するものである.
%</ja>
\item[reDeclareMathAlphabet\{<unified-cmd>\}\{<al-cmd>\}\{<ja-cmd>\}]
% ToDo: en
%<*ja>
和文・欧文の数式用フォントファミリを一度に変更する命令を作成する.
-具体的には,欧文数式用フォントファミリ変更の命令<al-cmd>(\verb+\mathrm+ 等)と,和文数式用フォ
- ントファミリ変更の命令<ja-cmd>(\verb+\mathmc+ 等)の2つを同時に行う命令として
+具体的には,欧文数式用フォントファミリ変更の命令<al-cmd>(\cs{mathrm} 等)と,和文数式用フォ
+ ントファミリ変更の命令<ja-cmd>(\cs{mathmc} 等)の2つを同時に行う命令として
<unified-cmd>を(再)定義する.実際の使用では<unified-cmd>と
<al-cmd>に同じものを指定する,すなわち,<al-cmd>で和文側も変
更させるようにするのが一般的と思われる.
%<ja>\advance\linewidth-2\zw
\begin{itemize}
\item <al-cmd>,~<ja-cmd>は既に定義されていなければならない.
- \verb+\reDeclareMathAlphabet+\\の後に
+ \cs{reDeclareMathAlphabet}\\の後に
両命令の内容を再定義しても,<unified-cmd>の内容にそれは反映されない.
-\item <al-cmd>,~<ja-cmd>に\verb+\@mathrm+などと\texttt{@}をつけた命令を指定した時の動作は保証できない.
+\item <al-cmd>,~<ja-cmd>に\verb+\@mathrm+などと \texttt{@} をつけた命令を指定した時の動作は保証できない.
\end{itemize}}
%</ja>
-\item[DeclareRelationFont\{<ja-encoding>\}\{<ja-family>\}\{<ja-series>\}\{<ja-shape>\}\\
+\item[DeclareRelationFont\{<ja-encoding>\}\{<ja-family>\}\{<ja-series>\}\{<ja-shape>\}\\*
\null\hfill\{<al-encoding>\}\{<al-family>\}\{<al-series>\}\{<al-shape>\}]
%<*en>
This command sets the ``accompanied'' alphabetic font family (given by the latter 4~arguments)
%</ja>
\item[SetRelationFont]
%<*en>
-This command is almost same as \verb+\DeclareRelationFont+, except that this command does a local
-assignment, where \verb+\DeclareRelationFont+ does a global assignment.
+This command is almost same as \cs{DeclareRelationFont}, except that this command does a local
+assignment, where \cs{DeclareRelationFont} does a global assignment.
%</en>
%<*ja>
-このコマンドは \verb+\DeclareRelationFont+ とローカルな指定であることを除いて
-ほとんど同じである(\verb+\DeclareRelationFont+ はグローバル).
+このコマンドは \cs{DeclareRelationFont} とローカルな指定であることを除いて
+ほとんど同じである(\cs{DeclareRelationFont} はグローバル).
%</ja>
\item[userelfont]
Change current alphabetic font encoding/family/\dots\ to the `accompanied' alphabetic
font family with respect to current Japanese font family,
which was set by
- \verb+\DeclareRelationFont+ or \verb+\SetRelationFont+.
-Like \verb+\fontfamily+, \verb+\selectfont+ is required to take an effect.
+ \cs{DeclareRelationFont} or \cs{SetRelationFont}.
+Like \cs{fontfamily}, \cs{selectfont} is required to take an effect.
%</en>
%<*ja>
-現在の欧文フォントエンコーディング/ファミリ/…… を,
-\verb+\DeclareRelationFont+ か \verb+\SetRelationFont+ で指定された
+ç\8f¾å\9c¨ã\81®æ¬§æ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\81®ã\82¨ã\83³ã\82³ã\83¼ã\83\87ã\82£ã\83³ã\82°ï¼\8fã\83\95ã\82¡ã\83\9fã\83ªï¼\8fâ\80¦â\80¦ ã\82\92ï¼\8c
+\cs{DeclareRelationFont} か \cs{SetRelationFont} で指定された
現在の和文フォントファミリに対応する「従属欧文」フォントファミリに変更する.
-\verb+\fontfamily+ のように,有効にするためには \verb+\selectfont+ が必要である.
+\cs{fontfamily} のように,有効にするためには \cs{selectfont} が必要である.
%</ja>
\item[adjustbaseline]
-\ldots
+%<*en>
+In \pLaTeXe, \cs{adjustbaseline} sets \cs{tbaselineshift}
+to match the vertical center of ``M'' and that of ``あ'' in vertical typesetting:
+\[
+\text{\cs{tbaselineshift}} \leftarrow
+\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{あ}}+d_{\text{あ}})}2
+ + 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.
+%</en>
+%<*ja>
+\pLaTeXe では,\cs{adjustbaseline} は縦組時に「M」と「あ」の中心線を一致させるために,
+\cs{tbaselineshift} を設定する役割を持っていた:
+\[
+\text{\cs{tbaselineshift}} \leftarrow
+\frac{(h_{\text{M}}+d_{\text{M}}) - (h_{\text{あ}}+d_{\text{あ}})}2
+ + d_{\text{あ}} - d_{\text{M}},
+\]
+ここで,$h_{a}$,~$d_{a}$はそれぞれ「$a$」の高さ・深さを表す.
+\LuaTeX-jaにおいても\cs{adjustbaseline} は同様の処理を行っている.
+%</ja>
\item[fontfamily\{<family>\}]
%<*en>
\begin{itemize}
%<*en>
\item The family <family> under the encoding <ja-enc> has been already defined by
- \verb+\DeclareKanijFamily+.
+ \cs{DeclareKanijFamily}.
%</en>
%<*ja>
-\item エンコーディング<ja-enc>におけるファミリ<family>が既に \verb+\DeclareKanjiFamily+ によって定義されている.
+\item エンコーディング<ja-enc>におけるファミリ<family>が
+既に \cs{DeclareKanjiFamily} によって定義されている.
%</ja>
%<*en>
\item A font definition named \texttt{<ja-enc><family>.fd} (the file name is
\item[DeclareAlternateKanjiFont\{<base-encoding>\}\{<base-family>\}\{<base-series>\}\{<base-shape>\}\\
\null\hfill\{<alt-encoding>\}\{<alt-family>\}\{<alt-series>\}\{<alt-shape>\}\{<range>\}]
%<*ja>
-\ref{ssec-altfont}節の
-\verb+\ltjdeclarealtfont+ と同様に,前半の4引数の和文フォント(基底フォント)のうち<range>中の文字を
-第5--第8引数の和文フォントを使って組むように指示する.使用例を図\ref{fig:altkanji}に載せた.
+\ref{ssec-altfont}節の\
+\cs{ltjdeclarealtfont} と同様に,前半の4引数の
+和文フォント(基底フォント)のうち<range>中の文字を
+第5--第8引数の和文フォントを使って組むように指示する.
+使用例を図\nobreak\ref{fig:altkanji}に載せた.
{\let\item\origitem
%<en>\advance\linewidth-2em
%<ja>\advance\linewidth-2\zw
\vspace{-\medskipamount}
\begin{itemize}
- \item
-\verb+\ltjdeclarealtfont+ では基底フォント・置き換え先和文フォントはあらかじめ定義されてい
+ \item
+\cs{ltjdeclarealtfont} では基底フォント・置き換え先和文フォントはあらかじめ定義されてい
ないといけない(その代わり即時発効)であったが,
-\verb+\DeclareAlternateKanjiFont+ の設定が
+\cs{DeclareAlternateKanjiFont} の設定が
実際に効力が発揮するのは,書体変更やサイズ変更を行った時,
-あるいは(これらを含むが)\verb+\selectfont+ が実行された時である.
- \item
+あるいは(これらを含むが)\cs{selectfont} が実行された時である.
+ \item
段落やhboxの最後での設定値が段落/hbox全体にわたって通用する点や,
<range>に負数$-n$を指定した場合,それが「基底フォントの文字クラス$n$に属する文字全体」
-と解釈されるのは \verb+\ltjdeclarealtfont+ と同じである.
+と解釈されるのは \cs{ltjdeclarealtfont} と同じである.
\end{itemize}%
}
%</ja>
%<*en>
-As \verb+\ltjdeclarealtfont+~(Subsection~\ref{ssec-altfont}),
+As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}),
characters in <range> of the Japanese font (we say the \emph{base font})
-which specified by first 4 arguments are typeset
+which specified by first 4 arguments are typeset
by the Japanese font which specified by fifth to eighth arguments
(we say the \emph{alternate font}).
An example is shown in Figure~\ref{fig:altkanji}.
%<ja>\advance\linewidth-2\zw
\vspace{-\medskipamount}
\begin{itemize}
- \item
-In \verb+\ltjdeclarealtfont+, the base font and the alternate font must be already defined.
-But this \verb+\DeclareAlternateKanjiFont+ is not so.
-In other words, \verb+\DeclareAlternateKanjiFont+ is effective only after
-current Japanese font is changed, or only after \verb+\selectfont+ is executed.
+ \item
+In \cs{ltjdeclarealtfont}, the base font and the alternate font must be already defined.
+But this \cs{DeclareAlternateKanjiFont} is not so.
+In other words, \cs{DeclareAlternateKanjiFont} is effective only after
+current Japanese font is changed, or only after \cs{selectfont} is executed.
\item \dots
\end{itemize}%
\vspace{-\medskipamount}
%<*en>
As closing this subsection, we shall introduce an example of
-\verb+\SetRelationFont+ and \verb+\userelfont+:
+\cs{SetRelationFont} and \cs{userelfont}:
%</en>
%<*ja>
-この節の終わりに,\verb+\SetRelationFont+ と \verb+\userelfont+ の例を
-紹介しておこう.\verb+\userelfont+ の使用によって,「abc」の部分のフォントが
+この節の終わりに,\cs{SetRelationFont} と \cs{userelfont} の例を
+紹介しておこう.\cs{userelfont} の使用によって,「abc」の部分のフォントが
Avant Garde (OT1/pag/m/n) に変わっていることがわかる.
%</ja>
\begin{LTXexample}[width=0.3\textwidth]
\userelfont\selectfont あいうabc
\end{LTXexample}
-%<en>\section{Extensions}
-%<ja>\section{拡張}
+%<*en>
+\section{Addons}
+\LuaTeX-ja has several addon packages.
+These addons are written as \LaTeX\ packages, but
+\Pkg{luatexja-otf} and~\Pkg{luatexja-adjust} can be loaded in plain \LuaTeX\
+by \cs{input}.
+%</en>
+%<*ja>
+\section{拡張}
+\LuaTeX-jaには(動作には必須ではないが)自由に読み込める拡張が付属している.
+これらは\LaTeX のパッケージとして制作しているが,
+\Pkg{luatexja-otf}と\Pkg{luatexja-adjust}についてはplain \LuaTeX でも\
+\cs{input} で読み込み可能である.
+%</ja>
\subsection{\texttt{luatexja-fontspec.sty}}
-
+\label{ssec-fontspec2}
%<*en>
As described in Subsection~\ref{ssec-fontspec}, this optional package
provides the counterparts for several commands defined in the
\item[JFM-var=<name>] \
%<*en>
-These 3 font features correspond to \texttt{cid}, \texttt{jfm} and
-\texttt{jfmvar} keys for \verb+\jfont+ respectively.
+These 3 keys correspond to \texttt{cid}, \texttt{jfm} and
+\texttt{jfmvar} keys for \cs{jfont} respectively.
\texttt{CID} is effective only when with \texttt{NoEmbed}
described below.
See Subsections~\ref{ssec-jfont} and \ref{ssec-psft} for details.
%</en>
%<*ja>
-これら3つのキーはそれぞれ \verb+\jfont+ に対する
+これら3つのキーはそれぞれ \cs{jfont} に対する
\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーとそれぞれ対応する.
\texttt{CID} は下の \texttt{NoEmbed} と合わせて用いられたときのみ有効である.
-\verb+\jfont+ プリミティブに対する
+\cs{jfont} プリミティブに対する
\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーの詳細は\ref{ssec-jfont}節
と\ref{ssec-psft}節を参照.
%</ja>
\item[NoEmbed]
%<*en>
-By specifying this font feature, one can use ``name-only'' Japanese font which
+By specifying this key, one can use ``name-only'' Japanese font which
will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}.
%</en>
%<*ja>
これを指定することで,PDFに埋め込まれない「名前だけ」のフォントを指定することが
できる.\ref{ssec-psft}節を参照.
%</ja>
+
+
+\begin{figure}[!tb]
+\begin{LTXexample}[pos=b]
+\jfontspec[
+ AltFont={
+ {Range="4E00-"67FF, Color=007F00},
+ {Range="6800-"9EFF, Color=0000FF},
+ {Range="3040-"306F, Font=KozGoPr6N-Regular},
+ }
+]{KozMinPr6N-Regular}
+日本国民は、正当に選挙された国会における代表者を通じて行動し、われらとわれらの子孫のために、
+諸国民との協和による成果と、わが国全土にわたつて自由のもたらす恵沢を確保し、……
+\end{LTXexample}
+%<ja>\caption{\texttt{AltFont} の使用例}
+%<en>\caption{An example of \texttt{AltFont}}
+\label{fig:altkanji-fontspec}
+\end{figure}
+
+\item[AltFont]\
+
+%<*en>
+As \cs{ltjdeclarealtfont}~(Subsection~\ref{ssec-altfont}) and
+\cs{DeclareAlternateKanjiFont}~(Subsection~\ref{ssec-nfsspat}),
+with this key, one can typeset some Japanese characters
+by a different font and/or using different features.
+The \texttt{AltFont} feature takes a comma-separated list of comma-separated lists,
+as the following:
+%</en>
+%<*ja>
+\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} や,
+\ref{ssec-nfsspat}節の \cs{DeclareAlternateKanjiFont} と同様に,
+このキーを用いると一部の文字を異なったフォントやfont featureを使って組むことができる.
+\texttt{AltFont} に指定する値は,次のように二重のコンマ区切りリストである:
+%</ja>
+\begin{lstlisting}[escapechar=\#]
+AltFont = {
+ ...
+ { Range=#\LARG range>#, #\LARG features>#},
+ { Range=#\LARG range>#, Font=#\LARG font~name>#, #\LARG features># },
+ { Range=#\LARG range>#, Font=#\LARG font~name># },
+ ...
+}
+\end{lstlisting}
+%<*en>
+Each sublist should have the \texttt{Range} key
+(sublist which does not contain \texttt{Range} key is simply ignored).
+A demonstrarion is shown in Figure~\ref{fig:altkanji-fontspec}.
+%</en>
+%<*ja>
+各部分リストには \texttt{Range} キーが必須である(含まれない部分リストは
+単純に無視される).
+指定例は図\ref{fig:altkanji-fontspec}に示した.
+%</ja>
\end{list}
%<*ja>
%</ja>
-
\subsection{\texttt{luatexja-otf.sty}}
\label{ssec-ltjotf}
%<*en>
This optional package supports typesetting characters in
-Adobe-Japan1. the package \Pkg{luatexja-otf} offers the following 2~low-level
+Adobe-Japan1 character collection
+(or other CID character collection, if the font is supported).
+The package \Pkg{luatexja-otf} offers the following 2~low-level
commands:
%</en>
%<*ja>
-この追加パッケージはAdobe-Japan1の文字の出力をサポートする.
+この追加パッケージはAdobe-Japan1(フォント自身が持っていれば,
+別のCID文字セットでも可)の文字の出力をサポートする.
\Pkg{luatexja-otf}は以下の2つの低レベルコマンドを提供する:
%</ja>
-\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
-\item[\textbackslash CID\{<number>\}]
+\begin{cslist}
+\item[CID\{<number>\}]
%<*en>
Typeset a character whose CID number is <number>.
%</en>
CID番号が<number>の文字を出力する.
%</ja>
-\item[\textbackslash UTF\{<hex\_number>\}]
+\item[UTF\{<hex\_number>\}]
%<*en>
Typeset a character whose character code is <hex\_number> (in hexadecimal).
This command is similar to \verb+\char"+<hex\_number>,\ %"
文字コードが(16進で)<hex\_number>の文字を出力する.
このコマンドは \verb+\char"+<hex\_number>と似ているが,下の記述に注意すること.%"
%</ja>
-\end{list}
+\end{cslist}
+
+%<*ja>
+このパッケージは,\texttt{ajmacros.sty}(\Pkg{otf}パッケージ付属のマクロ集,井上浩一氏作)から
+漢字コードをUTF8にしたり,plain \LuaTeX でも利用可能するという
+修正を加えた \texttt{luatexja-ajmacros.sty} も自動的に読み込む.
+そのため,マクロ集にある \verb+\aj半角+ などのマクロもそのまま使用可能である.
+%</ja>
%<en>\paragraph{Remarks}
%<ja>\paragraph{注意}
%<*en>
-Characters by \verb+\CID+ and \verb+\UTF+ commands are different from
+Characters by \cs{CID} and \cs{UTF} commands are different from
ordinary characters in the following points:
%</en>
%<*ja>
-\verb+\CID+ と \verb+\UTF+ コマンドによって出力される文字は
+\cs{CID} と \cs{UTF} コマンドによって出力される文字は
以下の点で通常の文字と異なる:
%</ja>
\begin{itemize}
%</ja>
\end{itemize}
-
%<en>\paragraph{Additional syntax of JFM}
%<ja>\paragraph{JFMへの記法の追加}
\verb+'AJ1-xxx'+, which stands for the character
whose CID number in Adobe-Japan1 is \verb+xxx+.
-This extened notation is used in the standard JFM \texttt{jfm-ujis.lua}
+This extended notation is used in the standard JFM \texttt{jfm-ujis.lua}
to typeset halfwidth Hiragana glyphs (CID~516--598) in halfwidth.
%</en>
%<*ja>
\end{tabular}\par}
\smallskip
-Note: the value of
-\Param{\hyperlink{fld:kanjiskip}{kanjiskip}} is 0\,pt${}^{+1/5\,\mathrm{em}}_{-1/5\,\mathrm{em}}$ in this figure,
+Note: the value of
+\Param{kanjiskip} is 0\,pt${}^{+1/5\,\mathrm{em}}_{-1/5\,\mathrm{em}}$ in this figure,
for making the difference obvious.
%<ja>\caption{行長調整}\label{fig-adj}
%<en>\caption{Line adjustment}\label{fig-adj}
%<*en>
-...
+(see Japanese version of this manual)
%</en>
%<*ja>
\pTeX では,行長調整において優先度の概念が存在しなかったため,図
\ref{fig-adj}上段における半角分の半端は,図\ref{fig-adj}中段のように,鍵
-括弧周辺の空白と和文間空白(\Param{\hyperlink{fld:kanjiskip}{kanjiskip}})の両方によって負担される.し
+括弧周辺の空白と和文間空白(\Param{kanjiskip})の両方によって負担される.し
かし,「日本語組版処理の要件」\cite{jlreq}やJIS~X~4051~\cite{x4051}におい
ては,このような状況では半端は鍵括弧周辺の空白のみで負担し,その他の和文
文字はベタ組で組まれる(図\ref{fig-adj}下段)ことになっている.この追加
また,\verb+\hbox to ... {...}+ のような「幅が指定されたhbox」では無効である.
\item 優先度付き行長調整を行うと,和文処理グルーの自然長は変化しないが,伸び量や縮み量は
-一般に変化する.そのため,既に組まれた段落を \verb+\unhbox+ などを利用して組み直す処理を
+一般に変化する.そのため,既に組まれた段落を \cs{unhbox} などを利用して組み直す処理を
行う場合には注意が必要である.
\end{itemize}
\Pkg{luatexja-adjust} は,以下の命令を提供する.これらはすべてグローバルに効力を発揮する.
-\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
-\item[\textbackslash ltjdisableadjust]
+\begin{cslist}
+\item[ltjdisableadjust]
優先順位付きの行長調整を無効化する.
-\item[\textbackslash ltjenableadjust]
+\item[ltjenableadjust]
優先順位付きの行長調整を有効化する.
-\item[\textsf{adjust}=<bool>] \verb+\ltjsetparameter+ で指定可能な追加パラメータであり,
-<bool>が\textit{true}なら \verb+\ltjenableadjust+ を,
-そうでなければ \verb+\ltjdisableadjust+ を実行する.
-
+\origitem[\textsf{adjust}\,=<bool>] \cs{ltjsetparameter} で指定可能な追加パラメータであり,
+<bool>が\textit{true}なら \cs{ltjenableadjust} を,
+そうでなければ \cs{ltjdisableadjust} を実行する.
+\end{cslist}
+%</ja>
-\end{list}
+\subsection{\texttt{luatexja-ruby.sty}}
+%<*en>
+This addon package provides functionality of ``ruby'' (\emph{furigana}) annotations
+using callbacks of \LuaTeX-ja.
+There is no detailed manual of \Pkg{luatexja-ruby.sty} in English.
+(Japanese manual is another PDF file, \url{luatexja-ruby.pdf}.)
+%</en>
+%<*ja>
+この追加パッケージは,\LuaTeX-jaの機能を利用したルビ(振り仮名)の組版機能を提供する.
+前後の文字種に応じた前後への自動進入や,
+行頭形・行中形・行末形の自動的な使い分けが特徴である.
+ルビ組版に設定可能な項目や注意事項が多いため,本追加パッケージの詳細な説明は
+使用例と共に \url{luatexja-ruby.pdf}\ という別ファイルに載せている.
+この節では簡単な使用方法のみ述べる.
+%</ja>
+\begin{description}
+%<*en>
+ \item[Group-ruby]
+By default, ruby characters (the second argument of \cs{ruby})
+are attached to base characters (the first argument), as one object.
+This type of ruby is called \emph{group-ruby}.
+%</en>
+%<*ja>
+ \item[グループルビ] 標準ではグループルビの形で組まれる.第1引数に親文字,
+第2引数にルビを記述する.
+%</ja>
+\begin{LTXexample}[width=0.3\textwidth]
+東西線\ruby{妙典}{みようでん}駅は……\\
+東西線の\ruby{妙典}{みようでん}駅は……\\
+東西線の\ruby{妙典}{みようでん}という駅……\\
+東西線\ruby{葛西}{かさい}駅は……
+\end{LTXexample}
+%<*en>
+As the above example, ruby hangover is allowed on the Hiragana before/after
+its base characters.
+%</en>
+%<ja> この例のように,標準では前後の平仮名にルビ全角までかかるようになっている.
+%<*en>
+\item[Mono-ruby]
+To attach ruby characters to each base characters (\emph{mono-ruby}),
+one should use \cs{ruby} multiple times:
+%</en>
+%<*ja>
+ \item[モノルビ] 親文字を1文字にするとモノルビとなる.
+2文字以上の熟語をモノルビの形で組みたい場合は,面倒でも
+その数だけ \cs{ruby} を書く必要がある.
+%</ja>
+\begin{LTXexample}[width=0.3\textwidth]
+東西線の\ruby{妙}{みよう}\ruby{典}{でん}駅は……
+\end{LTXexample}
+%<*en>
+ \item[Jukugo-ruby]
+Vertical bar~\verb+|+ denotes a boundary of \emph{groups}.
+%</en>
+%<*ja>
+ \item[熟語ルビ] 引数内の縦棒 \verb+|+ はグループの区切りを表し,
+複数グループのルビは熟語ルビとして組まれる.
+\cite{x4051}にあるように,
+どのグループでも「親文字」が対応するルビ以上の長さの場合は
+各グループごとに,そうでないときは全体をまとめて1つのグループルビとして組まれる.
+\cite{jlreq}で規定されている組み方とは異なるので注意.
+%</ja>
+\begin{LTXexample}
+\ruby{妙|典}{みよう|でん}\
+\ruby{葛|西}{か|さい}\
+\ruby{神楽|坂}{かぐら|ざか}
+\end{LTXexample}
+%<*en>
+If there are multiple groups in one \cs{ruby} call,
+A linebreak between two groups is allowed.
+%</en>
+%<ja> 複数ルビではグループとグループの間で改行が可能である.
+\begin{LTXexample}[width=0.3\textwidth]
+\vbox{\hsize=6\zw\noindent
+ \hbox to 2.5\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た}
+ \hbox to 2.5\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た}
+ \hbox to 3\zw{}\ruby{京|急|蒲|田}{けい|きゆう|かま|た}
+}
+\end{LTXexample}
+\end{description}
+%<*en>
+If the width of ruby characters are longer than that of base characters,
+\cs{ruby} automatically selects the appropriate form
+among the line-head form, the line-middle form, and the line-end form.
+%</en>
+%<*ja>
+また,ルビ文字のほうが親文字よりも長い場合は,自動的に
+行頭形・行中形・行末形のいずれか適切なものを選択する.
%</ja>
+\begin{LTXexample}[width=0.3\textwidth]
+\vbox{\hsize=8\zw\noindent
+\null\kern3\zw ……を\ruby{承}{うけたまわ}る
+ \kern1\zw ……を\ruby{承}{うけたまわ}る\\
+\null\kern5\zw ……を\ruby{承}{うけたまわ}る
+}
+\end{LTXexample}
+
+
+
\begin{list}{}{%
\def\makelabel{\ttfamily}\advance\leftmargin1\zw
\def\dim#1{\item[\textbackslash #1\ \textrm{(dimension)}]}
+\def\cnt#1{\item[\textbackslash #1\ \textrm{(counter)}]}
\def\attr#1{\item[\textbackslash #1\ \textrm{(attribute)}]}
}
\dim{jQ}
%<*en>
-\verb+\jQ+ is equal to
+\cs{jQ} is equal to
$1\,\textrm{Q}=0.25\,\textrm{mm}$, where ``Q''~(also called ``級'') is
- a unit used in Japanese phototypesetting.
+ a unit used in Japanese phototypesetting.
So one should not change the value of this dimension.
%</en>
%<*ja>
-\verb+\jQ+ は写植で用いられた$1\,\textrm{Q}=0.25\,\textrm{mm}$%
+\cs{jQ} は写植で用いられた$1\,\textrm{Q}=0.25\,\textrm{mm}$%
(「級」とも書かれる)に等しい.したがって,
この寸法レジスタの値を変更してはならない.
%</ja>
\dim{jH}
%<*en>
There is also a unit called ``歯'' which equals to $0.25\,\textrm{mm}$ and
- used in Japanese phototypesetting.
-This \verb+\jH+ is the same \verb+\dimen+ register as \verb+\jQ+.
+ used in Japanese phototypesetting.
+This \cs{jH} is the same \cs{dimen} register as \cs{jQ}.
%</en>
%<*ja>
同じく写植で用いられていた単位として「歯」があり,これも$0.25\,\textrm{mm}$と
-等しい.この \verb+\jH+ は \verb+\jQ+ と同じ寸法レジスタを指す.
+等しい.この \cs{jH} は \cs{jQ} と同じ寸法レジスタを指す.
%</ja>
\dim{ltj@zw}
%<*en>
A temporal register for the ``full-width'' of current Japanese font.
+The command \cs{zw} sets this register to the correct value, and
+``return'' this register itself.
%</en>
%<*ja>
現在の和文フォントの「全角幅」を保持する一時レジスタ.
+\cs{zw} 命令は,このレジスタを適切な値に設定した後,
+「このレジスタ自体を返す」.
%</ja>
\dim{ltj@zh}
%<*en>
A temporal register for the ``full-height'' (usually the sum of height of imaginary body and its depth) of current Japanese font.
+The command \cs{zh} sets this register to the correct value, and
+``return'' this register itself.
%</en>
%<*ja>
現在の和文フォントの「全角高さ」(通常,高さと深さの和)を保持する一時レジスタ.
+\cs{zh} 命令は,このレジスタを適切な値に設定した後,
+「このレジスタ自体を返す」.
%</ja>
\attr{jfam}
\attr{ltj@curjfnt}
%<*en>
-The font index of current Japanese font.
+The font index of current Japanese font for horizontal direction.
+%</en>
+%<*ja>
+現在の横組用和文フォントのフォント番号.
+%</ja>
+
+\attr{ltj@curtfnt}
+%<*en>
+The font index of current Japanese font for vertical direction.
%</en>
%<*ja>
-現在の和文フォントのフォント番号.
+現在の縦組用和文フォントのフォント番号.
%</ja>
\attr{ltj@charclass}
スケールド・ポイント($2^{-16}\,\textrm{pt}$)を単位とした和文フォントのベースラインの移動量.
%</ja>
+\attr{ltj@tablshift}
+\attr{ltj@tkblshift}
+
\attr{ltj@autospc}
%<*en>
-Whether the auto insertion of \Param{\hyperlink{fld:kanjiskip}{kanjiskip}} is allowed at the node.
+Whether the auto insertion of \Param{kanjiskip} is allowed at the node.
%</en>
%<*ja>
-そのノードで\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の自動挿入が許されるかどうか.
+そのノードで\Param{kanjiskip}の自動挿入が許されるかどうか.
%</ja>
\attr{ltj@autoxspc}
%<*en>
-Whether the auto insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed at the node.
+Whether the auto insertion of \Param{xkanjiskip} is allowed at the node.
%</en>
%<*ja>
-そのノードで\Param{\hyperlink{fld:xks}{xkanjiskip}}の自動挿入が許されるかどうか.
+そのノードで\Param{xkanjiskip}の自動挿入が許されるかどうか.
%</ja>
\attr{ltj@icflag}
\begin{description}
\item[\textit{italic} (1)]
%<*en>
-Glues from an italic correction
- (\verb+\/+). This distinction of origins of glues
- (from explicit \verb+\kern+, or from \verb+\/+)
- is needed in the insertion process of \Param{\hyperlink{fld:xks}{xkanjiskip}}.
+Kerns from italic correction (\verb+\/+), or from kerning information of a Japanese font.
+These kerns are ``ignored'' in the insertion process of \textbf{JAglue},
+unlike explicit \cs{kern}.
%</en>
%<*ja>
-イタリック補正(\verb+\/+)によるグルー.このグルーの由来の区別(\verb+\kern+ か
-\hskip\ltjgetparameter{xkanjiskip}
-\verb+\/+ か)は\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入過程において必要になる.
+イタリック補正(\verb+\/+)によるカーン,
+または \Pkg{luaotfload} によって挿入されたフォントのカーニング情報由来のカーン.
+これらのカーンは通常の \cs{kern} とは異なり,
+\textbf{JAglue}の挿入処理においては透過する.
%</ja>
\item[\textit{packed} (2)]
Penalties inserted for the word-wrapping process (\emph{kinsoku shori}) of Japanese characters.
%</en>
%<ja>禁則処理のために挿入されたペナルティ.
-\item[\textit{from\_jfm} (6)]
+\item[\mathversion{bold}$(\textit{from\_jfm}-2)$--$(\textit{from\_jfm}+2)$~(4--8)]
%<en>Glues/kerns from JFM.
%<ja>JFM由来のグルー/カーン.
-\item[\textit{kanji\_skip} (9)]
-%<en>Glues for \Param{\hyperlink{fld:kanjiskip}{kanjiskip}}.
-%<ja>\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}のグルー.
-\item[\textit{xkanji\_skip} (10)]
-%<en>Glues for \Param{\hyperlink{fld:xks}{xkanjiskip}}.
-%<ja>\Param{\hyperlink{fld:xks}{xkanjiskip}}のグルー.
-\item[\textit{processed} (11)]
+\item[\textit{kanji\_skip}~(9), \textit{kanji\_skip\_jfm}~(10)]
+%<en>Glues from \Param{kanjiskip}.
+%<ja>和文間空白\Param{kanjiskip}を表すグルー.
+\item[\textit{xkanji\_skip}~(11), \textit{xkanji\_skip\_jfm}~(12)]
+%<en>Glues from \Param{xkanjiskip}.
+%<ja>和欧文間空白\Param{xkanjiskip}を表すグルー.
+\item[\textit{processed} (13)]
%<en>Nodes which is already processed by \ldots.
%<ja>\LuaTeX-ja の内部処理によって既に処理されたノード.
-\item[\textit{ic\_processed} (12)]
+\item[\textit{ic\_processed} (14)]
%<*en>
Glues from an italic correction, but already processed in the insertion process of \textbf{JAglue}s.
%</en>
%<*ja>
また,挿入処理の結果であるリストの最初のノードでは,\verb+\ltj@icflag+ の値に
-\textit{processed\_begin\_flag}~(32)が追加される.これによって,\verb+\unhbox+ が
+\textit{processed\_begin\_flag}~(128)が追加される.これによって,\cs{unhbox} が
連続した場合でも「ボックスの境界」が識別できるようになっている.
%</ja>
これら7つの属性レジスタは,どの文字ブロックが\textbf{JAchar}のブロックとして
扱われるかを示すビットベクトルを格納する.
%</ja>
+
+\attr{ltj@dir}
+%<*ja>
+ボックスにおける組方向を示す.通常のボックスでは
+\begin{description}
+\item[\textit{dir\_dtou} (1)]
+\item[\textit{dir\_tate} (3)]
+\item[\textit{dir\_yoko} (4)]
+\end{description}
+のいずれかに次を加えた値(17,~19, 20, 33, 35,~36)をとるボックスが作られることもあ
+ る(\ref{sec-dir-imp}章参照).
+%</ja>
+\begin{description}
+\item[\textit{dir\_node\_auto} (16)]
+%<ja> 異なる組方向に配置するために自動的に作られたボックス.
+\item[\textit{dir\_node\_manual} (32)]
+%<ja> \cs{ltjsetwd} によって「ボックスの本来の組方向とは異なる組方向での寸法」を
+%<ja> 設定したときに,それを記録するためのボックス.
+\end{description}
+%<ja> \TeX 側から見える値,つまり \verb+\the\ltj@dir+ の値は常に0である.
+
\end{list}
%<*en>
Furthermore, \LuaTeX-ja uses several user-defined whatsit nodes for
-inrernal processing. All those nodes store a natural number (hence the node's
-\texttt{type} is 100).
-Their \texttt{user\_id} (used for distinguish user-defined whatsits)
+internal processing. All those nodes except \emph{direction} whatsits
+store a natural number (hence its \texttt{type} is 100).
+\emph{direction} whatsits store a node list, hence its \texttt{type} is 110.
+Their \texttt{user\_id} (used for distinguish user-defined whatsits)
are allocated by \texttt{luatexbase.newuserwhatsitid}.
%</en>
%<*ja>
さらに,\LuaTeX-jaはいくつかのuser-defined whatsit nodeを内部処理に用いる.
-これらのwhatsitノードの \texttt{type} は100であり,ノードは自然数を格納している.
-user-defined whatsitを識別するための \texttt{user\_id} は\
+\textit{direction} whatsitはノードリストを格納するが,
+それ以外のwhatsitノードの \texttt{type} は100であり,ノードは自然数を格納している.
+user-defined whatsitを識別するための \texttt{user\_id} は\
\texttt{luatexbase.newuserwhatsitid} により確保されており,
下の見出しは単なる識別用でしかない.
%</ja>
\begin{description}
\item[\textit{inhibitglue}]
%<*en>
-Nodes for indicating that \verb+\inhibitglue+ is
+Nodes for indicating that \cs{inhibitglue} is
specified. The \texttt{value} field of these nodes doesn't matter.
%</en>
%<*ja>
-\verb+\inhibitglue+ が指定されたことを示すノード.これらのノードの\
+\cs{inhibitglue} が指定されたことを示すノード.これらのノードの\
\texttt{value} フィールドは意味を持たない.
%</ja>
\item[\textit{char\_by\_cid}]
%<*en>
-Nodes for Japanese Characters which the callback process of
+Nodes for \textbf{JAchar} which the callback process of
\Pkg{luaotfload} won't be applied, and the character code is
- stored in the \texttt{value} field. Each node of this type are
+ stored in the \texttt{value} field. Each node of this type are
converted to a \textit{glyph\_node} \emph{after}
the callback process of luaotfload.
-Nodes of this type is used in \verb+\CID+, \verb+\UTF+ and IVS support.
+Nodes of this type is used in \cs{CID}, \cs{UTF} and IVS support.
%</en>
%<*ja>
-\Pkg{luaotfload}のコールバックによる処理が適用されない和文文字のためのノードで,
+\Pkg{luaotfload}のコールバックによる処理が適用されない\textbf{JAchar}のためのノードで,
\texttt{value} フィールドに文字コードが格納されている.
この種類のノードはそれぞれが\Pkg{luaotfload}のコールバックの処理の
\emph{後で}\textit{glyph\_node}に変換される.
-\verb+\CID+, \verb+\UTF+やIVS対応処理でこの種類のノードが利用されている.
+\cs{CID}, \cs{UTF}やIVS対応処理でこの種類のノードが利用されている.
+%</ja>
+
+\item[\textit{replace\_vs}]
+%<*en>
+Similar to \textit{char\_by\_cid} whatsits above.
+These nodes are for \textbf{ALchar} which the callback process of
+ \Pkg{luaotfload} won't be applied.
+%</en>
+%<*ja>
+上の\textit{char\_by\_cid}と同様に,
+これらのノードは\Pkg{luaotfload}のコールバックによる処理が適用されない\textbf{ALchar}のた
+ めものである.
%</ja>
\item[\textit{begin\_par}]
%<*en>
Nodes for indicating beginning of a paragraph.
-A paragraph which is started by \verb+\item+ in list-like environments has a horizontal box
+A paragraph which is started by \cs{item} in list-like environments has a horizontal box
for its label before the actual contents. So \dots
%</en>
%<*ja>
「段落の開始」を意味するノード.
-list環境,itemize環境などにおいて,\verb+\item+ で始まる各項目は……
+list環境,itemize環境などにおいて,\cs{item} で始まる各項目は……
%</ja>
+
+\item[\textit{direction}]
+
\end{description}
%<*en>
%<*en>
\LuaTeX-ja has its own stack system, and most parameters of \LuaTeX-ja
are stored in it. To clarify the reason, imagine the parameter
-\Param{\hyperlink{fld:kanjiskip}{kanjiskip}} is stored by a skip, and consider the following
+\Param{kanjiskip} is stored by a skip, and consider the following
source:
%</en>
%<*ja>
\LuaTeX-jaは独自のスタックシステムを持ち,\LuaTeX-jaのほとんどのパラメータは
これを用いて保持されている.その理由を明らかにするために,
-\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}パラメータがスキップレジスタで保持されているとし,
+\Param{kanjiskip}パラメータがスキップレジスタで保持されているとし,
以下のコードを考えてみよう:
%</ja>
\begin{LTXexample}
%<*en>
As described in Subsection~\ref{ssec-param}, the only effective value of
-\Param{\hyperlink{fld:kanjiskip}{kanjiskip}} in an hbox is the latest value, so the value of
-\Param{\hyperlink{fld:kanjiskip}{kanjiskip}} which applied in the entire hbox should be 5\,pt.
+\Param{kanjiskip} in an hbox is the latest value, so the value of
+\Param{kanjiskip} which applied in the entire hbox should be 5\,pt.
However, by the implementation method of \LuaTeX, this ``5\,pt'' cannot be
known from any callbacks. In the \texttt{tex/packaging.w}, which is a
file in the source of \LuaTeX, there are the following codes:
%</en>
%<*ja>
\ref{ssec-param}節で述べたように,あるhboxの中で効力を持つ
-\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の値は最後に現れた値のみであり,したがってボックス全体に適用される
-\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}は5\,ptであるべきである.しかし,\LuaTeX の実
+\Param{kanjiskip}の値は最後に現れた値のみであり,したがってボックス全体に適用される
+\Param{kanjiskip}は5\,ptであるべきである.しかし,\LuaTeX の実
装を観察すると,この5\,ptという長さはどのコールバックからも知ることはできないことがわかる.
\LuaTeX のソースファイルの1つ \texttt{tex/packaging.w} の中に,
以下のコードがある:
the \TeX's group level when the last assignment was done. Parameters
are stored in one big table named \texttt{charprop\_stack\_table}, where
\texttt{charprop\_stack\_table[$i$]} stores data of stack level~$i$. If
-a new stack level is created by \verb+\ltjsetparameter+, all data of the
+a new stack level is created by \cs{ltjsetparameter}, all data of the
previous level is copied.
%</en>
%<*ja>
なされた時点での\TeX のグループレベルを保持している.
パラメータは\texttt{charprop\_stack\_table}という名前のひとつの大きなテーブルに
格納される.ここで,\texttt{charprop\_stack\_table[$i$]}はスタックレベル$i$の
-データを格納している.もし新しいスタックレベルが \verb+\ltjsetparameter+ によって
+データを格納している.もし新しいスタックレベルが \cs{ltjsetparameter} によって
生成されたら,前のレベルの全てのデータがコピーされる.
%</ja>
%<*en>
Note that to work this trick correctly, assignments to
\verb+\ltj@@stack+ and \verb+\ltj@@group@level+ have to be local always,
-regardless the value of \verb+\globaldefs+.
-To solve this problem, we use another trick: the assignment
+regardless the value of \cs{globaldefs}.
+To solve this problem, we use another trick: the assignment
\hbox{\verb+\directlua{tex.globaldefs=0}+} is always local.
%</en>
%<*ja>
このトリックを正しく働かせるためには,\verb+\ltj@@stack+ と \verb+\ltj@@group@level+ への
-代入は \verb+\globaldefs+ の値によらず常にローカルでなければならないことに注意する.
+代入は \cs{globaldefs} の値によらず常にローカルでなければならないことに注意する.
この問題は \hbox{\verb+\directlua{tex.globaldefs=0}+}(この代入は常にローカル)を
用いることで解決している.
%</ja>
\begin{verbatim}
luatexja.stack.set_stack_table(index, <any> data)
\end{verbatim}
-Any values which except \texttt{nil}~and~NaN are usable as \textit{index}.
-However, a user should use only negative integers or strings as \textit{index},
+Any values which except \texttt{nil}~and~NaN are usable as \textit{index}.
+However, a user should use only negative integers or strings as \textit{index},
since natural numbers are used by \LuaTeX-ja itself.
-Also, whether \textit{data} is stored locally or globally
+Also, whether \textit{data} is stored locally or globally
is determined by \texttt{luatexja.isglobal}
(stored globally if and only if \texttt{luatexja.isglobal == 'global'}).
%</en>
%<*ja>
-スタックに値を設定するには,以下のLua関数を呼びだせば良い:
+スタックに値を設定するには,以下のLua関数を呼び出せば良い:
\begin{verbatim}
luatexja.stack.set_stack_table(<any> index, <any> data)
\end{verbatim}
\begin{verbatim}
luatexja.stack.get_stack_table(index, <any> default, <number> level)
\end{verbatim}
-where \textit{level} is the stack level, which is usually the value of \verb+\ltj@@stack+,
-and \textit{default} is the default value which will be returned if no values are stored
+where \textit{level} is the stack level, which is usually the value of \verb+\ltj@@stack+,
+and \textit{default} is the default value which will be returned if no values are stored
in the stack table whose level is \textit{level}.
%</en>
%<*ja>
\relax\ifnum\globaldefs<0\directlua{luatexja.isglobal=''}%
\else\directlua{luatexja.isglobal='global'}\fi%
\setkeys[ltj]{japaram}{#1}\ignorespaces}
-\end{lstlisting}
+\end{lstlisting}
%<ja>\caption{パラメータ設定命令の定義}
%<en>\caption{Definiton of parameter setting commands}
\label{fig:setpar-def}
%<*en>
\subsection{Extending Parameters}
-Keys for \verb+\ltjsetparameter+~and~\verb+\ltjgetparameter+ can be extended,
+Keys for \cs{ltjsetparameter}~and~\cs{ltjgetparameter} can be extended,
as in \Pkg{luatexja-adjust}.
%</en>
%<*ja>
\subsection{パラメータの拡張}
ここでは,\Pkg{luatexja-adjust}で行なっているように,
-\verb+\ltjsetparameter+,~\verb+\ltjgetparameter+に指定可能なキーを追加する方法
+\cs{ltjsetparameter},~\cs{ltjgetparameter}に指定可能なキーを追加する方法
を述べる.
%</ja>
%<*en>
\paragraph{Setting parameters}
-Figure~\ref{fig:setpar-def} shows the ``most outer'' definition of
-two commands,
-\verb+\ltjsetparameter+ and \verb+\ltjglobalsetparameter+.
-Most important part is the last \verb+\setkeys+,
+Figure~\ref{fig:setpar-def} shows the ``most outer'' definition of
+two commands,
+\cs{ltjsetparameter} and \cs{ltjglobalsetparameter}.
+Most important part is the last \cs{setkeys},
which is offered by the \Pkg{xkeyval} package.
-Hence, to add a key in \verb+\ltjsetparameter+, one only have to add a key
+Hence, to add a key in \cs{ltjsetparameter}, one only have to add a key
whose prefix is \texttt{ltj} and whose family is \texttt{japaram}, as the following.
\begin{verbatim}
\define@key[ltj]{japaram}{...}{...}
\end{verbatim}
-\verb+\ltjsetparameter+~and~\verb+\ltjglobalsetparameter+ automatically sets
+\cs{ltjsetparameter}~and~\cs{ltjglobalsetparameter} automatically sets
\texttt{luatexja.isglobal}. Its meaning is the following.
\begin{align}
- \texttt{luatexja.isglobal} =
+ \texttt{luatexja.isglobal} =
\begin{cases}
\texttt{'global'}&\text{global}\\
\texttt{''}&\text{local}
\end{cases}
\end{align}
This is determined not only by command name
-(\verb+\ltjsetparameter+~or~\verb+\ltjglobalsetparameter+),
-but also by the value of \verb+\globaldefs+.
+(\cs{ltjsetparameter}~or~\cs{ltjglobalsetparameter}),
+but also by the value of \cs{globaldefs}.
%</en>
%<*ja>
\paragraph{パラメータの設定}
-\verb+\ltjsetparameter+ と,\verb+\ltjglobalsetparameter+ の定義は図\ref{fig:setpar-def}の
+\cs{ltjsetparameter} と,\cs{ltjglobalsetparameter} の定義は図\ref{fig:setpar-def}の
のようになっている.
-本質的なのは最後の \verb+\setkeys+ で,これは\Pkg{xkeyval}パッケージの提供する命令である.
+本質的なのは最後の \cs{setkeys} で,これは\Pkg{xkeyval}パッケージの提供する命令である.
-このため,\verb+\ltjsetparameter+ に指定可能なパラメータを追加するには,
+このため,\cs{ltjsetparameter} に指定可能なパラメータを追加するには,
<prefix>を \texttt{ltj},<family>を \texttt{japaram} としたキーを
\begin{verbatim}
\define@key[ltj]{japaram}{...}{...}
のように定義すれば良いだけである.
なお,パラメータ指定がグローバルかローカルかどうかを示す \texttt{luatexja.isglobal} が,
\begin{align}
- \texttt{luatexja.isglobal} =
+ \texttt{luatexja.isglobal} =
\begin{cases}
\texttt{'global'}&\text{パラメータ設定はグローバル}\\
\texttt{''}&\text{パラメータ設定はローカル}
\end{cases}
\end{align}
-として自動的にセットされる\footnote{命令が \texttt{\textbackslash ltjglobalsetparameter} かどうかだけでは
-なく,実行時の \texttt{\textbackslash globaldefs} の値にも依存して定まる.}.
+として自動的にセットされる\footnote{命令が \cs{ltjglobalsetparameter} かどうかだけでは
+なく,実行時の \cs{globaldefs} の値にも依存して定まる.}.
%</ja>
%<*ja>
\paragraph{パラメータの取得}
-一方,\verb+\ltjgetparameter+ はLuaスクリプトによって実装されている.
-値を取得するのに追加引数の要らないパラメータについては,\verb+luatexja.unary_pars+\
+一方,\cs{ltjgetparameter} はLuaスクリプトによって実装されている.
+値を取得するのに追加引数の要らないパラメータについては,\verb+luatexja.unary_pars+\
内に処理内容を記述した関数を定義すれば良い.例えば,Luaスクリプトで
-\begin{lstlisting}[numbers=left]
+\begin{lstlisting}[numbers=left]
function luatexja.unary_pars.hoge (t)
return 42
end
一方,追加引数(\emph{数値しか許容しない})が必要なパラメータについては,
まずLuaスクリプトで処理内容の本体を記述しておく:
-\begin{lstlisting}[numbers=left]
+\begin{lstlisting}[numbers=left]
function luatexja.binary_pars.fuga (c, t)
return tostring(c) .. ', ' .. tostring(42)
end
\end{lstlisting}
-引数$t$は,先に述べた通りのスタックレベルである.一方,引数$c$は\
-\verb+\ltjgetparameter+ の第2引数を表す数値である.
+引数$t$は,先に述べた通りのスタックレベルである.一方,引数$c$は\
+\cs{ltjgetparameter} の第2引数を表す数値である.
しかしこれだけでは駄目で,
\begin{verbatim}
\ltj@@decl@array@param{fuga}
(midline) edge node {5\ [\sp]} (endm)
(midline) edge [loop left] node {G, O} (midline)
(skipspc) edge node [right] {5} (ends)
- (newline) edge node {5 [{\tt\textbackslash par}]} (endn);
+ (newline) edge node {5 [\cs{par}]} (endn);
\begin{scope}[red]
\path (newline) edge [bend right] node [right=25,below=3]{J} (kanji)
(midline) edge node [below]{J} (kanji)
\item[\textsf{5}] \textit{end-of-line} (usually \verb+^+\verb+^J+).
\item[\textsf{10}] space (usually \sp).
\item[\textsf{O}] other characters, whose category code is in $\{3,4,6,7,8,11,12,13\}$.
-\item[\textsf{[\sp]}, \textsf{[{\tt\textbackslash par}]}]
-emits a space, or~\verb+\par+.
+\item[\textsf{[\sp]}, \textsf{[\cs{par}]}]
+emits a space, or~\cs{par}.
\end{description}
\end{minipage}
\begin{itemize}
\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 \verb+\endlinechar+%
+\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}).
u
\end{LTXexample}
It is not strange that ``あ'' does not printed in the above output.
-This is because \TeX\ Gyre\ Termes does not contain ``あ'', and because
+This is because \TeX\ Gyre\ Termes does not contain ``あ'', and because
``あ'' in line~3 is considered as an \textbf{ALchar}.
Note that there is no space before ``y'' in the output, but
\begin{itemize}
\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},
+Since line~3 ends with an \textbf{JAchar},
the comment character \texttt{U+FFFFF} 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,
\footnote{この文字はコメント文字として扱われるように\LuaTeX-ja内部で設定をしている.}
を末尾に追加する.よって,その場合に改行は空白とは見做されないこととなる.
\begin{enumerate}
-\item \verb+\endlinechar+の文字\footnote{普通は,改行文字(文字コード13番)である.}
+\item \cs{endlinechar}の文字\footnote{普通は,改行文字(文字コード13番)である.}
のカテゴリーコードが5~(\textit{end-of-line})である.
\item \texttt{U+FFFFF}のカテゴリーコードが14~(\textit{comment})である.
\item 入力行は次の「正規表現」にマッチしている:
「い」は欧文文字扱いである.よって4行目は欧文文字で終わることになり,
直後の改行文字は空白に置き換わる.
\end{itemize}
-このため,トラブルを避けるために,和文文字の範囲を\verb+\ltjsetparameter+で編集した場合,
+このため,トラブルを避けるために,和文文字の範囲を\cs{ltjsetparameter}で編集した場合,
その行はそこで改行するようにした方がいいだろう.
%</ja>
\begin{itemize}
\item JFMグルーの挿入は,和文文字を表すトークンを元に水平リストに(文字を表す)<char\_node>を
追加する過程で行われる.
-\item \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は,hboxへのパッケージングや行分割前に行われる.
-\item \Param{\hyperlink{fld:kanjiskip}{kanjiskip}}はノードとしては挿入されない.パッケージングや行分割の計算時に
-「和文文字を表す2つの<char\_node>の間には\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}がある」ものとみなされる.
+\item \Param{xkanjiskip}の挿入は,hboxへのパッケージングや行分割前に行われる.
+\item \Param{kanjiskip}はノードとしては挿入されない.パッケージングや行分割の計算時に
+「和文文字を表す2つの<char\_node>の間には\Param{kanjiskip}がある」ものとみなされる.
\end{itemize}
しかし,\LuaTeX-jaでは,hboxへのパッケージングや行分割前に全ての
-\textbf{JAglue},即ちJFMグルー・\Param{\hyperlink{fld:xks}{xkanjiskip}}・\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の
+\textbf{JAglue},即ちJFMグルー・\Param{xkanjiskip}・\Param{kanjiskip}の
3種類を一度に挿入することになっている.これは,\LuaTeX において欧文の合字・
カーニング処理がノードベースになったことに対応する変更である.
\LuaTeX-jaにおける\textbf{JAglue}挿入処理では,次節で定義する
「クラスタ」を単位にして行われる.大雑把にいうと,「クラスタ」は文字とそれに付随す
るノード達(アクセント位置補正用のカーンや,イタリック補正)をまとめたもの
-であり,2つのクラスタの間には,ペナルティ,\verb+\vadjust+,whatsitなど,行組版
+であり,2つのクラスタの間には,ペナルティ,\cs{vadjust},whatsitなど,行組版
には関係しないものがある.
%<*en>
\item Nodes whose value of\ \verb+\ltj@icflag+ is in $[3,15)$. These
nodes come from a hbox which is already packaged, by unpackaging
- (\verb+\unhbox+).
+ (\cs{unhbox}).
The \textit{id} is \textit{id\_pbox}.
%</en>
%<*ja>
\item その \verb+\ltj@icflag+ の値が$[3,15)$に入るノードのリスト.
- これらのノードはある既にパッケージングされたhboxから \verb+\unhbox+ で
+ これらのノードはある既にパッケージングされたhboxから \cs{unhbox} で
アンパックされたものである.
その\textit{id}は\textit{id\_pbox}である.
%</ja>
%</ja>
%<*en>
-\item An accent attached to $p$ by \verb+\accent+.
+\item An accent attached to $p$ by \cs{accent}.
%</en>
%<*ja>
-\item \verb+\accent+ による$p$に付随したアクセント.
+\item \cs{accent} による$p$に付随したアクセント.
%</ja>
\end{enumerate}
\[
%</ja>
%<*en>
-\item An box-like node, that is, an hbox, a vbox, a rule (\verb+\vrule+) and an \textit{unset\_node}.
+\item An box-like node, that is, an hbox, a vbox, a rule (\cs{vrule}) and an \textit{unset\_node}.
The \textit{id} is \textit{id\_hlist} if the node is an
hbox which is not shifted vertically, or \textit{id\_box\_like}
otherwise.
%</en>
%<*ja>
-\item ボックス様のノード,つまり水平ボックス,垂直ボックス,罫線 (\verb+\vrule+),
+\item ボックス様のノード,つまり水平ボックス,垂直ボックス,罫線 (\cs{vrule}),
そして\textit{unset\_node}.
その\textit{id}は垂直に移動していないhboxならば\textit{id\_hlist},
そうでなければ\textit{id\_box\_like}となる.
\textit{id}が\textit{id\_pbox}であって$\mathit{Np}.\mathit{head}$が\textbf{JAchar}であるとき.
\item[和文B] リスト中のhboxの中身の先頭として出現した和文文字.和文Aとの違いは,これの前に
-JFMグルーの挿入が行われない(\Param{\hyperlink{fld:xks}{xkanjiskip}},~\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}は入り得る)ことである.\\
+JFMグルーの挿入が行われない(\Param{xkanjiskip},~\Param{kanjiskip}は入り得る)ことである.\\
\textit{id}が\textit{id\_hlist}か\textit{id\_disc}であって$\mathit{Np}.\mathit{head}$が\textbf{JAchar}であるとき.
\item[欧文] リスト中に直接/hboxの中身として出現している欧文文字.次の3つの場合が該当:
まず,段落/hboxの一番最初にあるクラスタ\textit{Np}を探索する.
hboxの場合は何の問題もないが,段落の場合では以下のノード達を事前に読み飛ばしておく:
\begin{itemize}
-\item \verb+\parindent+ 由来のhbox($\mathit{subtype}=3$)
+\item \cs{parindent} 由来のhbox($\mathit{subtype}=3$)
\item \textit{subtype}が44~(\textit{user\_defined})でないようなwhatsit
\end{itemize}
-これは,\verb+\parindent+由来のhboxがクラスタを構成しないようにするためである.
+これは,\cs{parindent}由来のhboxがクラスタを構成しないようにするためである.
次に,\textit{Np}の直前に空白$g$を必要なら挿入する:
\begin{enumerate}
\item この処理が働くような\textit{Np}は\textsf{和文A}である.
-\item 問題のリストが字下げありの段落(\verb+\parindent+ 由来のhboxあり)の場合は,
+\item 問題のリストが字下げありの段落(\cs{parindent} 由来のhboxあり)の場合は,
この空白$g$は「文字コード \texttt{'parbdd'} の文字」と\textit{Np}の間に入るグルー/カーンである.
\item そうでないとき(\verb+noindent+ で開始された段落やhbox)は,
$g$は「文字コード \texttt{'boxbdd'} の文字」と\textit{Np}の間に入るグルー/カーンである.
\end{enumerate}
ただし,もし$g$がglueであった場合,この挿入によって\textit{Np}による行分割が新たに可能になるべきではない.
-そこで,以下の場合には,$g$の直前に \verb+\penalty10000+ を挿入する:
+そこで,以下の場合には,$g$の直前に \cs{penalty10000} を挿入する:
\begin{itemize}
\item 問題にしているリストが段落であり,かつ
\item \textit{Np}の前には予めペナルティがなく,$g$はglue.
\paragraph{末尾の処理}
末尾の処理は,問題のリストが段落のものかhboxのものかによって異なる.
-後者の場合は容易い:最後のクラスタを\textit{Nq}とおくと,\textit{Nq}と「文字コード\
+後者の場合は容易い:最後のクラスタを\textit{Nq}とおくと,\textit{Nq}と「文字コード\
\texttt{'boxbdd'} の文字」の間に入るグルー/カーンを,
\textit{Nq}の直後に挿入するのみである.
-一方.前者(段落)の場合は,リストの末尾は常に \verb+\penalty10000+ と,
-\verb+\parfillskip+ 由来のグルーが存在する.%よって,最後のクラスタ\textit{Np}は
-%この \verb+\parfillskip+ 由来のグルーとなり,実質的な中身の最後はその1つ前のクラスタ\textit{Nq}となる.
+一方.前者(段落)の場合は,リストの末尾は常に \cs{penalty10000} と,
+\cs{parfillskip} 由来のグルーが存在する.%よって,最後のクラスタ\textit{Np}は
+%この \cs{parfillskip} 由来のグルーとなり,実質的な中身の最後はその1つ前のクラスタ\textit{Nq}となる.
段落の最後の「通常の和文文字${}+{}$句点」が独立した行となるのを防ぐために,
\Param{jcharwidowpenalty}の値の分だけ適切な場所のペナルティを増やす.
\subsection{概観と典型例:2つの「和文A」の場合}
\label{ssec-cluster-wa}
先に述べたように,2つの隣り合ったクラスタ,\textit{Nq}と\textit{Np}の間には,
-ペナルティ,\verb+\vadjust+,whatsitなど,行組版には関係しないものがある.模式的に表すと,
+ペナルティ,\cs{vadjust},whatsitなど,行組版には関係しないものがある.模式的に表すと,
\[
\Node{cluster}{\textit{Nq}}\longrightarrow
\overbrace{
\[
\Node{cluster}{\textit{Nq}}\longrightarrow%\Node{kern}{左空白}\longrightarrow
\overbrace{
-\Node{penalty}{$p+x$}\longrightarrow \cdots\longrightarrow
-\Node{whatsit}{}}^{\textrm{(a)}}\longrightarrow
+\Node{penalty}{$p+x$}\longrightarrow \cdots\longrightarrow
+\Node{whatsit}{}}^{\textrm{(a)}}\longrightarrow
\Node{glue or kern}{\raisebox{-.2\zw}{右空白}}\longrightarrow
\Node{cluster}{\textit{Np}}
\]
まず,「右空白」にあたる量を算出する.通常はこれが,隣り合った2つの和文文字間に入る空白量となる.
\begin{description}
\item[JFM由来{[M]}] JFMの文字クラス指定によって入る空白を以下によって求める.この段階で空白量が未定義(未指定)だった場合,
- デフォルト値\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}を採用することとなるので,次へ.
+ デフォルト値\Param{kanjiskip}を採用することとなるので,次へ.
\begin{enumerate}
-\item もし両クラスタの間で \verb+\inhibitglue+ が実行されていた場合(証としてwhatsitノードが自動挿入される),
- 代わりに\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}が挿入されることとなる.次へ.
+\item もし両クラスタの間で \cs{inhibitglue} が実行されていた場合(証としてwhatsitノードが自動挿入される),
+ 代わりに\Param{kanjiskip}が挿入されることとなる.次へ.
\item \textit{Nq}と\textit{Np}が同じJFM・同じ\texttt{jfmvar}キー・同じサイズの和文フォントであったならば,
共通に使っているJFM内で挿入される空白(グルーかカーン)が決まっているか調べ,決まっていればそれを採用.
\item 1.でも2.でもない場合は,JFM・\texttt{jfmvar}・サイズの3つ組は\textit{Nq}と\textit{Np}で異なる.
$\mathit{gb}$,~$\mathit{ga}$それぞれに対する<ratio>の値を$d_b$,~$d_a$とする.
\begin{itemize}
-\item
+\item
$\mathit{ga}$と$\mathit{gb}$の両方が未定義であるならば,JFM由来のグルーは挿入されず,
-\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}を採用することとなる.
+\Param{kanjiskip}を採用することとなる.
どちらか片方のみが未定義であるならば,次のステップでその未定義の方は長さ0のkernで,<ratio>の値は0であるかのように扱われる.
-\item
-\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}の値が \texttt{pleft}, \texttt{pright},
+\item
+\Param{diffrentjfm}の値が \texttt{pleft}, \texttt{pright},
\texttt{paverage} のとき,
<ratio>の指定に従って比例配分を行う.
JFM由来のグルー/カーンは以下の値となる:
ここで.$f(x,y)$は
\[
f(x,y)=\begin{cases}
-x&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{pleft};\\
-y&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{pright};\\
-(x+y)/2&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{paverage};
+x&\text{if\ }\Param{diffrentjfm}=\texttt{pleft};\\
+y&\text{if\ }\Param{diffrentjfm}=\texttt{pright};\\
+(x+y)/2&\text{if\ }\Param{diffrentjfm}=\texttt{paverage};
\end{cases}.
\]
-\item
+\item
\Param{differentjfm}がそれ以外の値の時は,<ratio>の値は無視され,JFM由来のグルー/カーンは以下の値となる:
\[
f(\textit{gb},\textit{ga})
ここで.$f(x,y)$は
\[
f(x,y)=\begin{cases}
-\min(x,y)&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{small};\\
-\max(x,y)&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{large};\\
-(x+y)/2&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{average};\\
-x+y&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{both};
+\min(x,y)&\text{if\ }\Param{diffrentjfm}=\texttt{small};\\
+\max(x,y)&\text{if\ }\Param{diffrentjfm}=\texttt{large};\\
+(x+y)/2&\text{if\ }\Param{diffrentjfm}=\texttt{average};\\
+x+y&\text{if\ }\Param{diffrentjfm}=\texttt{both};
\end{cases}.
\]
\end{itemize}
例えば,
\begin{verbatim}
-\jfont\foo=psft:Ryumin-Light:jfm=ujis
-\jfont\bar=psft:GothicBBB-Medium:jfm=ujis
-\jfont\baz=psft:GothicBBB-Medium:jfm=ujis;jfmvar=piyo
+\jfont\foo=psft:Ryumin-Light:jfm=ujis;-kern
+\jfont\bar=psft:GothicBBB-Medium:jfm=ujis;-kern
+\jfont\baz=psft:GothicBBB-Medium:jfm=ujis;jfmvar=piyo;-kern
\end{verbatim}
という3フォントを考え,
\[
- \overbrace{\Node{glyph}{{\tt\textbackslash foo}, `あ'}}^{p}
-\longrightarrow \overbrace{\Node{glyph}{{\tt\textbackslash bar}, `い'}}^{q}
-\longrightarrow \overbrace{\Node{glyph}{{\tt\textbackslash baz}, `う'}}^{r}
+ \overbrace{\Node{glyph}{\cs{ foo}, `あ'}}^{p}
+\longrightarrow \overbrace{\Node{glyph}{\cs{bar}, `い'}}^{q}
+\longrightarrow \overbrace{\Node{glyph}{\cs{baz}, `う'}}^{r}
\]
という3ノードを考える(それぞれ単独でクラスタをなす).
この場合,$p$と$q$の間は,実フォントが異なるにもかかわらず2.の状況となる一方で,
$q$と$r$の間は(実フォントが同じなのに)\texttt{jfmvar} キーの内容が異なるので3.の状況となる.
\item[\Param{kanjiskip}~{[K]}] 上の[M]において空白が定まらなかった場合,
以下で定めた量「右空白」として採用する.
-この段階においては,\verb+\inhibitglue+ は効力を持たないため,
+この段階においては,\cs{inhibitglue} は効力を持たないため,
結果として,2つの和文文字間には常に何らかのグルー/カーンが挿入されることとなる.
\begin{enumerate}
\item 両クラスタ(厳密には$\mathit{Nq}.\mathit{tail}$,$\mathit{Np}.\mathit{head}$)の中身の文字コードに対する
\Param{autospacing}パラメタが両方ともfalseだった場合は,長さ0のglueとする.
-\item ユーザ側から見た\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}パラメタの自然長が${\tt \textbackslash maxdimen}=(2^{30}-1)\,{\rm sp}$で
-なければ,\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}パラメタの値を持つglueを採用する.
-\item 2.でない場合は,\textit{Nq}, \textit{Np}で使われているJFMに指定されている\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の値を用いる.
+\item ユーザ側から見た\Param{kanjiskip}パラメタの自然長が$\cs{maxdimen}=(2^{30}-1)\,{\rm sp}$で
+なければ,\Param{kanjiskip}パラメタの値を持つglueを採用する.
+\item 2.でない場合は,\textit{Nq}, \textit{Np}で使われているJFMに指定されている\Param{kanjiskip}の値を用いる.
どちらか片方のクラスタだけが和文文字(\textsf{和文A}・\textsf{和文B})のときは,そちらのクラスタで使われている
JFM由来の値だけを用いる.もし両者で使われているJFMが異なった場合は,上の[M]~3.と同様の方法を用いて調整する.
\end{enumerate}
\paragraph{禁則用ペナルティの挿入}
まず,
\[
- a:=(\text{\textit{Nq}{\footnotemark}の文字に対する\Param{\hyperlink{fld:postbp}{postbreakpenalty}}の値})
-+(\text{\textit{Np}{\footnotemark}の文字に対する\Param{\hyperlink{fld:prebp}{prebreakpenalty}}の値})
+ a:=(\text{\textit{Nq}{\footnotemark}の文字に対する\Param{postbreakpenalty}の値})
++(\text{\textit{Np}{\footnotemark}の文字に対する\Param{prebreakpenalty}の値})
\]
とおく\footnotetext{厳密にはそれぞれ$\mathit{Nq}.\mathit{tail}$,$\mathit{Np}.\mathit{head}$.}.
ペナルティは通常$[-10000,10000]$の整数値をとり,また$\pm 10000$は正負の無限大を意味することになっているが,この$a$の
%<en>\caption{Summary of JFM glues}
%<ja>\caption{JFM グルーの概要}
\label{tab-jfmglue}
+%<en>\medskip
\begin{center}
\small
\begin{tabular}{c|cccccc}
%</ja>
% %<*en>
-% \item The ``left space'' between \textit{Nq}~and~\textit{Np} is
+% \item The ``left space'' between \textit{Nq}~and~\textit{Np} is
% determined by the method ``\textsf{line-end~[E]}''.
% %</en>
% %<*ja>
% %</ja>
%<*en>
-\item \LuaTeX-ja adopts the method ``\textsf{P-normal~[PN]}'' to adjust the penalty
+\item \LuaTeX-ja adopts the method ``\textsf{P-normal~[PN]}'' to adjust the penalty
between two clusters for \emph{kinsoku shori}.
%</en>
%<*ja>
\textit{Nq}が\textsf{和文A}で,\textit{Np}が\textsf{欧文}の場合,JFMグルー挿入処理は次のようにして行われる.
\begin{itemize}
\item 「右空白」については,まず以下に述べる\textsf{Boundary-B~[\OB]}により空白を決定しようと試みる.
-それが失敗した場合は,\textsf{\Param{\hyperlink{fld:xks}{xkanjiskip}}~[X]}によって定める.
+それが失敗した場合は,\textsf{\Param{xkanjiskip}~[X]}によって定める.
%\item 「左空白」については,既に述べた\textsf{line-end~[E]}をそのまま採用する.それに伴う「右空白」の補正も%同じ.
\item 禁則用ペナルティも,以前述べた\textsf{P-normal~[PN]}と同じである.
\end{itemize}
\textsf{JFM-origin~[M]}の変種と考えて良い.
これによって定まる空白の典型例は,和文の閉じ括弧と欧文文字の間に入る半角アキである.
\begin{enumerate}
-\item もし両クラスタの間で \verb+\inhibitglue+ が実行されていた場合%
+\item もし両クラスタの間で \cs{inhibitglue} が実行されていた場合%
(証としてwhatsitノードが自動挿入される),「右空白」は未定義.
\item そうでなければ,
\textit{Nq}と「文字コードが {\tt'jcharbdd'} の文字」との間に入るグルー/カーンとして定まる.
\item[\Param{xkanjiskip}~{[X]}]
この段階では,\textsf{\Param{kanjiskip}~[K]}のときと同じように,
以下で定めた量を「右空白」として採用する.
-\verb+\inhibitglue+ は効力を持たない.
+\cs{inhibitglue} は効力を持たない.
\begin{enumerate}
-\item 以下のいずれかの場合は,\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は抑止される.しかし,実際には行分割を許容するために,長さ0のglueを採用する:
+\item 以下のいずれかの場合は,\Param{xkanjiskip}の挿入は抑止される.しかし,実際には行分割を許容するために,長さ0のglueを採用する:
\begin{itemize}
\item 両クラスタにおいて,それらの中身の文字コードに対する\Param{autoxspacing}パラメタが共にfalseである.
-\item \textit{Nq}の中身の文字コードについて,「直後への\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入」が禁止されている
+\item \textit{Nq}の中身の文字コードについて,「直後への\Param{xkanjiskip}の挿入」が禁止されている
(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが2以上).
-\item \textit{Np}の中身の文字コードについて,「直前への\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入」が禁止されている
+\item \textit{Np}の中身の文字コードについて,「直前への\Param{xkanjiskip}の挿入」が禁止されている
(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが偶数).
\end{itemize}
-\item ユーザ側から見た\Param{\hyperlink{fld:xks}{xkanjiskip}}パラメタの自然長が${\tt \textbackslash maxdimen}=(2^{30}-1)\,{\rm sp}$で
-なければ,\Param{\hyperlink{fld:xks}{xkanjiskip}}パラメタの値を持つglueを採用する.
+\item ユーザ側から見た\Param{xkanjiskip}パラメタの自然長が$\cs{maxdimen}=(2^{30}-1)\,{\rm sp}$で
+なければ,\Param{xkanjiskip}パラメタの値を持つglueを採用する.
\item 2.でない場合は,\textit{Nq}, \textit{Np}(\textsf{和文A}/\textsf{和文B}なのは片方だけ)
-で使われているJFMに指定されている\Param{\hyperlink{fld:xks}{xkanjiskip}}の値を用いる.
+で使われているJFMに指定されている\Param{xkanjiskip}の値を用いる.
\end{enumerate}
\end{description}
\textsf{和文A}のクラスタが逆になるので,\textsf{Boundary-A~[\OA]}の部分が変わるだけ.
\begin{itemize}
\item 「右空白」については,まず以下に述べる\textsf{Boundary-A~[\OA]}により空白を決定しようと試みる.
-それが失敗した場合は,\textsf{\Param{\hyperlink{fld:xks}{xkanjiskip}}~[X]}によって定める.
+それが失敗した場合は,\textsf{\Param{xkanjiskip}~[X]}によって定める.
%\item \textit{Nq}が和文でないので,「左空白」は算出されない.
\item 禁則用ペナルティは,以前述べた\textsf{P-normal~[PN]}と同じである.
\end{itemize}
\textsf{JFM-origin~[M]}の変種と考えて良い.
これによって定まる空白の典型例は,欧文文字と和文の開き括弧との間に入る半角アキである.
\begin{enumerate}
-\item もし両クラスタの間で \verb+\inhibitglue+ が実行されていた場合(証としてwhatsitノードが自動挿入される),次へ.
+\item もし両クラスタの間で \cs{inhibitglue} が実行されていた場合(証としてwhatsitノードが自動挿入される),次へ.
\item そうでなければ,
「文字コードが {\tt'jcharbdd'} の文字」と\textit{Np}との間に入るグルー/カーンとして定まる.
\end{enumerate}
%\item 「左空白」については,既に述べた\textsf{line-end~[E]}の算出方法をそのまま採用する.それに伴う「右空白」の補正も同じ.
\item 禁則用ペナルティの処理は,後ろのクラスタ\textit{Np}の種類によって異なる.
なお,$\mathit{Np}.\mathit{head}$は無意味であるから,
-「$\mathit{Np}.\mathit{head}$に対する\Param{\hyperlink{fld:prebp}{prebreakpenalty}}の値」は0とみなされる.言い換えれば,
+「$\mathit{Np}.\mathit{head}$に対する\Param{prebreakpenalty}の値」は0とみなされる.言い換えれば,
\[
- a:=(\text{\textit{Nq}の文字に対する\Param{\hyperlink{fld:postbp}{postbreakpenalty}}の値}).
+ a:=(\text{\textit{Nq}の文字に対する\Param{postbreakpenalty}の値}).
\]
\begin{description}
\item[箱] \textit{Np}が\textsf{箱}であった場合は,両クラスタの間での行分割は
-(明示的に両クラスタの間に \verb+\penalty10000+ があった場合を除き)いつも許容される.そのため,
+(明示的に両クラスタの間に \cs{penalty10000} があった場合を除き)いつも許容される.そのため,
ペナルティ処理は,後に述べる\textsf{P-allow~[PA]}が\textsf{P-normal~[PN]}の代わりに用いられる.
\item[グルー] \textit{Np}がグルーの場合,ペナルティ処理は\textsf{P-normal~[PN]}を用いる.
\item[カーン] \textit{Np}がカーンであった場合は,両クラスタの間での行分割は
(a)部分にペナルティが存在していない場合,
\textit{Nq}と\textit{Np}の間の行分割は元々不可能のはずだったのであるが,
\LuaTeX-ja はそれをわざわざ行分割可能にはしない.
-そのため,「右空白」がglueであれば,その直前に \verb+\penalty10000+ を挿入する.
+そのため,「右空白」がglueであれば,その直前に \cs{penalty10000} を挿入する.
\end{description}
なお,「右空白」はカーンの%,「左空白」は未定義の
\overbrace{\Node{glyph}{`あ'}}^{\mathit{Nq}}\longrightarrow \overbrace{\Node{glue}{1\,pt}}^{\mathit{Np}}
\]
のような状況を考える.
-このとき,$a$,即ち「あ」の\Param{\hyperlink{fld:postbp}{postbreakpenalty}}がいかなる値であっても,
+このとき,$a$,即ち「あ」の\Param{postbreakpenalty}がいかなる値であっても,
この2クラスタ間は最終的に
\begin{equation}
\overbrace{\Node{glyph}{`あ'}}^{\mathit{Nq}}\longrightarrow
\label{eq-gref}
\end{equation}
となり,$a$分のペナルティは挿入されないことに注意して欲しい.
-\Param{\hyperlink{fld:postbp}{postbreakpenalty}}は($a$は)殆どの場合が非負の値と考えられ,そのような場合では
+\Param{postbreakpenalty}は($a$は)殆どの場合が非負の値と考えられ,そのような場合では
\eqref{eq-gref}と
\[
\overbrace{\Node{glyph}{`あ'}}^{\mathit{Nq}}\longrightarrow
\item 禁則用ペナルティの処理は,\textit{Nq}の種類によって異なる.
$\mathit{Nq}.\mathit{tail}$は無意味なので,
\[
- a:=(\text{\textit{Np}の文字に対する\Param{\hyperlink{fld:prebp}{prebreakpenalty}}の値}).
+ a:=(\text{\textit{Np}の文字に対する\Param{prebreakpenalty}の値}).
\]
\begin{description}
\item[箱] \textit{Nq}が\textsf{箱}の場合は,\textsf{P-allow~[PA]}を用いる.
\item \textsf{和文B}と箱・グルー・カーンが隣接したとき(どちらが前かは関係ない),間にJFMグルー・ペナルティの挿入は一切しない.
\item \textsf{和文B}と\textsf{和文B},また\textsf{和文B}と\textsf{欧文}とが隣接した時は,禁則用ペナルティ挿入処理は
\textsf{P-suppress~[PS]}が用いられる.
-\item \textsf{和文B}の文字に対する\Param{\hyperlink{fld:prebp}{prebreakpenalty}},~\Param{\hyperlink{fld:postbp}{postbreakpenalty}}の値は使われず,0として計算される.
+\item \textsf{和文B}の文字に対する\Param{prebreakpenalty},~\Param{postbreakpenalty}の値は使われず,0として計算される.
\end{itemize}
あ.A
\end{LTXexample}
\begin{itemize}
-\item 1行目の\verb+\inhibitglue+は\textsf{Boundary-B~[\OB]}の処理のみを抑止するので,ピリオドと「A」の間には
-\Param{\hyperlink{fld:xks}{xkanjiskip}}(四分アキ)が入ることに注意.
+\item 1行目の\cs{inhibitglue}は\textsf{Boundary-B~[\OB]}の処理のみを抑止するので,ピリオドと「A」の間には
+\Param{xkanjiskip}(四分アキ)が入ることに注意.
\item 2行目のピリオドと「A」の間においては,前者が\textsf{和文B}となる(hboxの中身の末尾として登場しているから)ので,
-そもそも\textsf{Boundary-B~[\OB]}の処理は行われない.よって,\Param{\hyperlink{fld:xks}{xkanjiskip}}が入ることとなる.
+そもそも\textsf{Boundary-B~[\OB]}の処理は行われない.よって,\Param{xkanjiskip}が入ることとなる.
\item 3行目では,ピリオドの属するクラスタは\textsf{和文A}である.これによって,
ピリオドと「A」の間には\textsf{Boundary-B~[\OB]}由来の半角アキが入ることになる.
\end{itemize}
例えば次のような入力を考えよう:
%</ja>
\begin{verbatim*}
-\begin{lstlisting}[escapechar=`\#]
+\begin{lstlisting}[escapechar=\#]
#\ほげ xぴよ#
\end{lstlisting}
\end{verbatim*}
\end{lstlisting}
%<*en>
before the line is actually processed.
-In the escape (between the character ``\verb+#+''),
+In the escape (between the character ``\verb+#+''),
the category code of \texttt{U+FFFFF} is set to 9~(\emph{ignored}).
-Hence the control symbol ``\verb+\+\IVSA FFFFF'' will be executed,
+Hence the control symbol ``\cs{}\IVSA FFFFF'' will be executed,
instead of ``\verb+\ほげ+''.
%</en>
%<*ja>
「\verb+#+」で挟まれた「\LaTeX へのエスケープ」中では\
\texttt{U+FFFFF} のカテゴリーコードは9~(\textit{ignored})となるので,
結局「\verb+\ほげ+」の代わりに
-「\verb+\+\IVSA FFFFF」というcontrol symbolが実行されることになる.
+「\cs{}\IVSA FFFFF」というcontrol symbolが実行されることになる.
%</ja>
%<*ja>
\paragraph{異体字セレクタの扱い}
\texttt{lstlisting} 環境などの内部にある異体字セレクタを扱うため,
\Pkg{lltjp-listings} では \texttt{vsraw} と \texttt{vscmd} という2つのキーを追加した.
-しかし,\Pkg{lltjp-listings} が実際にロードされるのは \verb+\begin{document}+\
+しかし,\Pkg{lltjp-listings} が実際に読み込まれるのは \verb+\begin{document}+\
のところであるので,プリアンブル内ではこれらの追加キーは使用できない.
-\texttt{ivsraw}は,ブール値の値をとるキーであり,標準ではfalseである.
+\texttt{vsraw}は,ブール値の値をとるキーであり,標準ではfalseである.
\begin{itemize}
\item trueの場合は,異体字セレクタは「直前の文字に続けて」出力される.
もしもIVSサポート(\ref{ssec-ltjotf}節)が有効になっていた場合は,
どのような形で出力されるかを規定するのが \texttt{vscmd} キーであり,
\Pkg{lltjp-listings} の標準設定では以下の例の右側のように出力される.
\begin{LTXexample}
-\begin{lstlisting}[vsraw=false,
+\begin{lstlisting}[vsraw=false,
vscmd=\ltjlistingsvsstdcmd]
葛󠄀城市,葛󠄁飾区,葛西
\end{lstlisting}
}}}
\lstset{vscmd=\IVSB}
\end{lstlisting}
-\end{itemize}
+\end{itemize}
+既定の出力命令を復活させたい場合は\ \verb+vsraw=\ltjlistingsvsstdcmd+\
+とすれば良い.
%</ja>
%<en>\subsection{Class of Characters}
%<*en>
For Japanese characters, line breaks are permitted on both sides
except for brackets, dashes, etc.
-Hence the patch \Pkg{lltjp-listings} introduces
+Hence the patch \Pkg{lltjp-listings} introduces
a new flag \verb+\lst@ifkanji+, which indicates
whether the previous character is a Japanese character or not.
For illustration, we introduce following classes of characters:
%<ja>\item 「収集」は,後側の文字を,現在収集された文字列に追加(行分割不可)を意味する.
\end{itemize}
-%<*en>
-Charatcers above \texttt{U+0080} \emph{except Variation Selectors}
+%<*en>
+Characters above \texttt{U+0080} \emph{except Variation Selectors}
are classified into above 5~classes by the following rules:
%</en>
%<*ja>
%<en>\item \textbf{JAchar}s are classified in the order as follows:
%<ja>\item \textbf{JAchar}については,以下の順序に従って文字種を決める:
\begin{enumerate}
-%<en>\item Characters whose \Param{\hyperlink{fld:prebp}{prebreakpenalty}} is greater than or equal to 0 are classified as Open.
-%<ja>\item \Param{\hyperlink{fld:prebp}{prebreakpenalty}}が0以上の文字はOpen扱いである.
+%<en>\item Characters whose \Param{prebreakpenalty} is greater than or equal to 0 are classified as Open.
+%<ja>\item \Param{prebreakpenalty}が0以上の文字はOpen扱いである.
-%<en>\item Characters whose \Param{\hyperlink{fld:postbp}{postbreakpenalty}} is greater than or equal to 0 are classified as Close.
-%<ja>\item \Param{\hyperlink{fld:postbp}{postbreakpenalty}}が0以上の文字はClose扱いである.
+%<en>\item Characters whose \Param{postbreakpenalty} is greater than or equal to 0 are classified as Close.
+%<ja>\item \Param{postbreakpenalty}が0以上の文字はClose扱いである.
%<en>\item Characters that don't satisfy the above two conditions are classified as Kanji.
%<ja>\item 上の3条件のどちらにも当てはまらなかった文字は,Kanji扱いである.
\end{itemize}
%<*en>
-The width of halfwidth kana (\texttt{U+FF61}--\texttt{U+FF9F})
+The width of halfwidth kana (\texttt{U+FF61}--\texttt{U+FF9F})
is same as the width of \textbf{ALchar};
the width of the other \textbf{JAchar}s is double the width of \textbf{ALchar}.
%</en>
べる.大まかに述べると,次のようになる.
\begin{itemize}
\item 通常の\TeX の行分割方法に従って,段落を行分割する.この段階では,行
- 長に半端が出た場合,その半端分は\textbf{JAglue}(\Param{\hyperlink{fld:xks}{xkanjiskip}},
- \Param{\hyperlink{fld:kanjiskip}{kanjiskip}},JFMグルー)と
+ 長に半端が出た場合,その半端分は\textbf{JAglue}(\Param{xkanjiskip},
+ \Param{kanjiskip},JFMグルー)と
それ以外のグルーの全てで(優先順位なく)負担される.
\item その後,\texttt{post\_linebreak\_filter} callbackを使い,\emph{段
落中の各行ごとに},行末文字の位置を調整したり,優先度付きの行長調整
\ref{ssec-jfm-str}節にあるように,
各JFMグルーには$-2$から2までの優先度がついている.}%
別にまとめられる)
-\item 和欧文間空白(\Param{\hyperlink{fld:xks}{xkanjiskip}})
-\item 和文間空白(\Param{\hyperlink{fld:kanjiskip}{kanjiskip}})
+\item 和欧文間空白(\Param{xkanjiskip})
+\item 和文間空白(\Param{kanjiskip})
\end{itemize}
の$1+1+5+1=8$つに類別し,それぞれの種別ごとに
許容されている伸び量(\texttt{stretch}の値)の合計を計算する.
[2] = {
chars = { '。', ... }, width = 0.5, ...,
end_stretch = 0.5, end_shrink = 0.5,
- },
+ },
\end{verbatim}
という指定があった場合,この行末の句点は
\begin{itemize}
\subsection{グルーの調整}
\textit{total}の分だけが,行中のグルーの伸び量に応じて負担されることになる.
負担するグルーの優先度は以下の順であり,
-できるだけ\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}を自然長のままにすることを
+できるだけ\Param{kanjiskip}を自然長のままにすることを
試みている.
\begin{enumerate}\def\labelenumi{(\Alph{enumi})}
\item \textbf{JAglue}以外のグルー
\item 優先度0のJFMグルー
\item 優先度$-1$のJFMグルー
\item 優先度$-2$のJFMグルー
- \item \Param{\hyperlink{fld:xks}{xkanjiskip}}
- \item \Param{\hyperlink{fld:kanjiskip}{kanjiskip}}
+ \item \Param{xkanjiskip}
+ \item \Param{kanjiskip}
\end{enumerate}
\begin{enumerate}
\item 行末の和文文字を移動したことで$\textit{total}=0$となれば,
%</ja>
%<*ja>
-\section{IVS対応(未完)}
+\section{IVS対応}
\verb+luatexja.otf.enable_ivs()+ を実行し,IVS対応を有効にした状態では,
\verb+pre_linebreak_filter+ や \verb+hpack_filter+ コールバックには
次の4つが順に実行される状態となっている:
しかし,単に$p.\textit{char}$を変更するだけでは,後から
font featureの適用(すぐ下)により置換される可能性がある.そのため,
-\verb+\CID+ や \verb+\UTF+ と同じように,\textit{glyph\_node}~$p$の代わりに
+\cs{CID} や \cs{UTF} と同じように,\textit{glyph\_node}~$p$の代わりに
\texttt{user\_id} が\textit{char\_by\_cid}であるようなuser-defined whatsitを用いている.
\item[(\Pkg{luaotfload} によるfont featureの適用)]
\item[\tt ltj.otf] \texttt{user\_id} が\textit{char\_by\_cid}であるようなuser-defined whatsitを
-きちんと\textit{glyph\_node}に変換する.この処理は,\verb+\CID+, \verb+\UTF+やIVSによる置換が,
+きちんと\textit{glyph\_node}に変換する.この処理は,\cs{CID}, \cs{UTF}やIVSによる置換が,
font featureの適用で上書きされてしまうのを防止するためである.
\item[\tt ltj.main\_process] \textbf{JAglue}の挿入処理(\ref{sec-jfmglue}章)と,
JFMの指定に従って各\textbf{JAchar}の「寸法を補正」することを行う.
\end{description}
問題は各フォントの持っているIVS情報をどのように取得するか,である.
-\Pkg{luaotfload} はフォント番号<font\_number>の情報を\
+\Pkg{luaotfload} はフォント番号<font\_number>の情報を\
\texttt{fonts.hashes.identifiers[<font\_number>]} 以下に格納している.
しかし,OpenTypeフォントのIVS情報は格納されていないようである%
\footnote{TrueTypeフォントに関しては,
OpenTypeフォントでもTrueTypeフォントでもIVS情報が格納されている.
具体的には……
-そのため,\LuaTeX-jaのIVS対応においては,\LuaTeX 内部の\
+そのため,\LuaTeX-jaのIVS対応においては,\LuaTeX 内部の\
\texttt{fontloader} を直接用いることで,フォントのIVS情報を取得している.
20140114.0以降でキャッシュを用いるようにした要因はここにあり,
\texttt{fontloader} の呼び出しでかなり時間を消費することから,
%%% to_table を使わなくしたことで,メモリ使用量は減った
IVS情報をキャッシュに保存することで2回目以降の実行時間を節約している.
+
\section{複数フォントの「合成」(未完)}
\section{\LuaTeX-jaにおけるキャッシュ}
-\Pkg{luaotfload}パッケージが,各TrueType・]OpenTypeフォントの情報を
+\Pkg{luaotfload}パッケージが,各TrueType・OpenTypeフォントの情報を
キャッシュとして保存しているのと同様の方法で,
\LuaTeX-jaもいくつかのキャッシュファイルを作成するようになった.
\begin{itemize}
%</ja>
%<*en>
\section{Cache Management of \LuaTeX-ja}
-\LuaTeX-ja creates some cache files to reduce the loading time.
+\LuaTeX-ja creates some cache files to reduce the loading time.
in a similar way to the \Pkg{luaotfload} package:
\begin{itemize}
\item Cache files are usually stored in (and loaded from)
\item We cannot share same binary cache for \LuaTeX\ and LuaJIT\TeX.
Hence we distinguish them by their extension, ``\texttt{.luc}'' for \LuaTeX\
and ``\texttt{.lub}'' for LuaJIT\TeX.
- \item In loading a cache, the binary cache precedes
+ \item In loading a cache, the binary cache precedes
the text form.
- \item When \LuaTeX-ja updates a cache \texttt{hoge.lua},
+ \item When \LuaTeX-ja updates a cache \texttt{hoge.lua},
its binary version is also updated.
\end{itemize}
\end{itemize}
\LuaTeX-ja では以下の3種類のキャッシュを使用している:
\begin{list}{}%
{\def\makelabel#1{\ttfamily#1}}
-\item[ltj-cid-auto-adobe-japan1.lua]
+\item[ltj-cid-auto-adobe-japan1.lua]
Ryumin-Lightのような非埋め込みフォントの情報を格納しており,
(それらが\LuaTeX-jaの標準和文フォントなので)\LuaTeX-jaの読み込み時に自動で読まれる.
生成には\texttt{UniJIS2004-UTF32-H}, \texttt{Adobe-Japan1-UCS2}という2つの
\LuaTeX-ja uses the following cache:
\begin{list}{}%
{\def\makelabel#1{\ttfamily#1}}
-\item[ltj-cid-auto-adobe-japan1.lua]
+\item[ltj-cid-auto-adobe-japan1.lua]
The font table of a CID-keyed non-embedded Japanese font.
This is loaded in every run.
It is created from two CMaps, \texttt{UniJIS2004-UTF32-H} and
- \texttt{Adobe-Japan1-UCS2},
+ \texttt{Adobe-Japan1-UCS2},
and this is why these two CMaps are needed in the first run of \LuaTeX-ja.
-Similar caches are created as Table~\ref{tab:cid-cache},
-if you specified \texttt{cid} key in \verb+\jfont+
+Similar caches are created as Table~\ref{tab:cid-cache},
+if you specified \texttt{cid} key in \cs{jfont}
to use other CID-keyed non-embedded fonts for Chinese or Korean,
as in Page~\pageref{para-cid}.
\item[ivs\_***.lua]
-This file stores the table of Unicode variants in a font ``\texttt{***}''.
+This file stores the table of Unicode variants in a font ``\texttt{***}''.
The structure of the table is the following:
%</en>
%</ja>
%<*en>
\item[ltj-jisx0208.\{luc|lub\}]
-The binary version of \texttt{ltj-jisx0208.lua}.
+The binary version of \texttt{ltj-jisx0208.lua}.
This is the conversion table between JIS~X~0208 and Unicode
which is used in Kanji-code conversion commands for compatibility with \pTeX.
%</en>
\subsection{Internal}
Cache management system of \LuaTeX-ja is stored in \texttt{luatexja.base}
(\texttt{ltj-base.lua}).
-There are three public functions for cache management in \texttt{luatexja.base},
-where <filename> stands for the filename \emph{without suffix}:
+There are three public functions for cache management in \texttt{luatexja.base},
+where <filename> stands for the file name \emph{without suffix}:
\begin{list}{}%
{\def\makelabel#1{\ttfamily#1}}
\item[save\_cache(<filename>, <data>)]
Save a non-nil table <data> into a cache <filename>.
-Both the text form <filename>\texttt{.lua} and its binary version
+Both the text form <filename>\texttt{.lua} and its binary version
are created or updated.
-\item[save\_cache\_luc(<filename>, <data>{[, <serialized\_data>]})]\
+\item[save\_cache\_luc(<filename>, <data>{[, <serialized\_data>]})]\
-Same as \texttt{save\_cache}, except that only the binary cache is updated.
-The third argument <serialized data> is not usually given.
+Same as \texttt{save\_cache}, except that only the binary cache is updated.
+The third argument <serialized\_data> is not usually given.
But if this is given, it is treated as a string representation of <data>.
\item[load\_cache(<filename>, <outdate>)]
<outdate> is a function which takes one argument (the contents of the cache),
and its return value is whether the cache is outdated.
-\texttt{load\_cache} first tries to
+\texttt{load\_cache} first tries to
read the binary cache <filename>\texttt{.\{luc|lub\}}.
If its contents is up-to-date, \texttt{load\_cache} returns the contents.
-If the binary cache is not found or
-its contents is outdated, \texttt{load\_cache} tries to
+If the binary cache is not found or
+its contents is outdated, \texttt{load\_cache} tries to
read the text form <filename>\texttt{.lua}.
Hence, the return value of \texttt{load\_cache} is non-nil,
if and only if the updated cache is found.
\end{list}
%</en>
+%<*ja>
+\subsection{内部命令}
+\LuaTeX-jaにおけるキャッシュ管理は,\texttt{luatexja.base}~(\texttt{ltj-base.lua})に
+実装しており,以下の3関数が公開されている.
+ここで,<filename>は保存するキャッシュのファイル名を\emph{拡張子なしで}指定する.
+\begin{list}{}%
+{\def\makelabel#1{\ttfamily#1}}
+\item[save\_cache(<filename>, <data>)]
+nilでない<data>をキャッシュ<filename>に保存する.
+テキスト形式の<filename>\texttt{.lua}のみならず,
+そのバイナリ版も作成/更新される.
+
+\item[save\_cache\_luc(<filename>, <data>{[, <serialized\_data>]})]\
+
+\texttt{save\_cache}と同様だが,バイナリキャッシュのみが更新される.
+第3引数<serialized\_data>が与えられた場合,それを
+<data>の文字列化表現として使用する.
+そのため,<serialized\_data>は普通は指定しないことになるだろう.
+
+\item[load\_cache(<filename>, <outdate>)]
+キャッシュ<filename>を読み込む.
+<outdate>は1引数(キャッシュの中身)をとる関数であり,
+その戻り値は「キャッシュの更新が必要」かどうかを示すブール値でないといけない.
+
+\texttt{load\_cache}は,まずバイナリキャッシュ<filename>\texttt{.\{luc|lub\}}を
+読みこむ.もしその内容が「新しい」,つまり<outdate>の評価結果が \texttt{false} なら
+\texttt{load\_cache}はこのバイナリキャッシュの中身を返す.
+もしバイナリキャッシュが見つからなかったか,「古すぎる」ならばテキスト版
+ <filename>\texttt{.lua}を読み込み,その値を返す.
+
+以上より,\texttt{load\_cache}自体がnilでない値を返すのは,ちょうど「新しい」キャッシュが
+見つかった場合である.
+\end{list}
+%</ja>
+
+
+%<*ja>
+\section{縦組の実装}
+\label{sec-dir-imp}
+\ref{sec-direction}章の最初でも述べたように,
+\LuaTeX-jaは横組(\texttt{TLT})で組んだボックスを回転させる方式で
+縦組を実装している.
+
+\LuaTeX-jaにおける縦組の実装は
+\pTeX における実装(\cite{ptexdoc,ptextug})をベースにしており,……
+
+\subsection{\textit{direction}~whatsit}
+\textit{direction}~whatsitとは,\textit{direction}という特定の \verb+user_id+ を持つ
+whatsitのことである.このwhatsitは,以下の3つの役割がある.
+\begin{enumerate}
+\def\labelenumi{(\roman{enumi})}
+ \item 「現在作成中のリストの組方向が \cs{tate} 等により変更された」ことを表す.\\
+「現在の組方向」は \verb+\ltj@dir@count+ というカウンタに格納されているが,それだけでは
+\verb+hpack_filter+コールバックなどから正しく処理対象のリストの組方向を正しく取得すること
+ はできない(\ref{ssec-stack}節参照)ため,このように別途whatsitを用いている.
+ \item \cs{hbox},~\cs{vbox}によって作成されたボックスの組方向を表す.\\
+原則として,ボックスの組方向はattribute \verb+\ltj@dir+ に格納されることになっている.しか
+ し,新規に作成されるボックスのattributeをコールバックの内部から制御するには,
+\verb+tex.setattribute+ による方法しかなく,これは不安定である.
+
+なお,この役割のdirection whatsitは,次の(iii)の役割も一緒に持っている.
+ \item 「異方向における寸法」の記録用.\\
+例えば \cs{box0} に横組のボックスが格納されている時,縦組や \cs{dtou} 方向
+における寸法値は((ii)の役割として作成された)direction~whatsitが
+格納しているノードリストに格納される.
+\end{enumerate}
+このように複数の役割をもたせているので,
+\begin{verbatim}
+% yoko direction
+\setbox0=\hbox{\tate B}
+\noindent \unhbox0 A
+\end{verbatim}
+のような場合に,「(ii)の役割の\textit{direction}~whatsitが(i)の役割として認識され,
+このリストは縦組とみなされるのではないか?」と思うかもしれない.しかし,
+(i)の役割と(ii)の枠割の\textit{direction}~whatsitは \verb+\ltj@icflag+ の値により
+区別されているので,そのような混乱は起こらない.
+
+\medskip
+(ii)の役割のdirection whatsitは,各ボックスの内容を表すリストの先頭に挿入されるが,
+例外が以下の2つある:
+\begin{itemize}
+ \item \verb+\hbox{}+, \verb+\vbox{}+ といった,
+\begin{itemize}
+ \item \cs{tate} 等によりボックス内部の組方向を変更していない
+ \item ボックスの中身のリストが空である
+\end{itemize}
+場合は,\LuaTeX の \verb+hpack_filter+, \verb+vpack_filter+ といった
+callbackに処理が回らないので,この場合にはdirection whatsitは挿入されない.
+ \item \verb+\vtop{...}+ の場合は,先頭にdirection whatsitを置くと
+ボックスの高さが正しく設定されない.そのため,この場合に限っては
+direction whatsitはリストの2番目に挿入されることとなる.
+\end{itemize}
+
+\subsection{異方向のボックスの整合処理}
+縦中横など異方向のボックスを配置する場合に,周囲の組方向と大きさを整合させるため,
+\LuaTeX-jaでは \verb+\ltj@dir+ が128以降の\textit{hlist\_node}, \textit{vlist\_node}を
+用いる.これらは\pTeX における\textit{dir\_node}の役割と同じ果たしており,
+この文章中でも\textit{dir\_node}と呼称する.
+
+%</ja>
\begin{thebibliography}{99}
\addcontentsline{toc}{section}{\refname}
Victor Eijkhout. \newblock \textit{\TeX\ by Topic, A \TeX nician's Reference}, Addison-Wesley, 1992.
\bibitem{listings} C.\ Heinz, B.\ Moses. \newblock The \textsf{Listings} Package.
\bibitem{uptex} Takuji Tanaka. \newblock
-upTeX---Unicode version of pTeX with CJK extensions,
+upTeX---Unicode version of pTeX with CJK extensions,
TUG 2013, October 2013.
%<ja>\newblock
%<en>\\\null\hfill
\url{http://tug.org/tug2013/slides/TUG2013_upTeX.pdf}
-\bibitem{jlisting} Thor Watanabe. \newblock Listings\ -\ MyTeXpert.
+\bibitem{jlisting} Thor Watanabe. \newblock Listings\ -\ MyTeXpert.
%<en>\newblock
%<ja>\\\null\hfill
\url{http://mytexpert.sourceforge.jp/index.php?Listings}
Requirements for Japanese Text Layout (W3C Working Group Note), 2011, 2012. \newblock
\url{http://www.w3.org/TR/jlreq/}%
%<ja> \\日本語訳の書籍版:W3C日本語組版タスクフォース(編),『W3C技術ノート 日本語組版処理の要件』,東京電機大学出版局,2012.
-\bibitem{min10} ä¹\99é\83¨å\8e³å·±ï¼\8cmin10フォントについて.\\\null\hfill
+\bibitem{min10} ä¹\99é\83¨å\8e³å·±ï¼\8emin10フォントについて.\\\null\hfill
\url{http://argent.shinshu-u.ac.jp/~otobe/tex/files/min10.pdf}
-\bibitem{x4051} 日本工業規格(Japanese Industrial Standard), JIS~X~4051,
+\bibitem{x4051} 日本工業規格(Japanese Industrial Standard). JIS~X~4051,
日本語文書の組版方法(Formatting rules for Japanese documents), 1993, 1995, 2004.
+\bibitem{ptexdoc} 濱野尚人,田村明史,倉沢良一.\TeX の出版への応用—縦組み機能の組み込み—.
+\\\null\hfill\texttt{.../texmf-dist/doc/ptex/base/ptexdoc.pdf}
+\bibitem{ptextug} Hisato Hamano. \newblock
+\textit{Vertical Typesetting with \TeX}, TUGBoat~\textbf{11}(3), 346--352, 1990.
\end{thebibliography}
\newpage