\usepackage{amsmath,array,tikz,pict2e,multienum,float}
\usepackage{booktabs,multicol,luatexja-ruby}
-\usepackage{xy,lltjext}
+\usepackage[all]{xy}
+\usepackage{lltjext,alltt}
%%%%%%%% listings
%%%%%%%%
\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}}}}\,}}
+ #1\mathstrut\cr\noalign{\vskip1pt\hrule height.4pt\vskip1pt}\strut#2\cr}}}}}\,}
+\def\HNode#1#2#3#4{\,\vcenter{\hbox{\fboxsep=1pt\fbox{\vbox{\small\halign{\hfil##\hfil\cr
+ #1\mathstrut\cr\noalign{\vskip1pt\hrule height.4pt\vskip1pt}%
+ width:\hfill\ #2\cr height:\hfill\ #3\cr depth:\hfill\ #4\cr
+ }}}}}\,}
\protected\def\Param#1{\hyperlink{fld:#1}{\textsf{#1}}} % parameter name
\protected\def\DParam#1{\hypertarget{fld:#1}{\textsf{#1}}} % parameter name (definition)
\item \emph{注意:上の2つの変更により,従来\textbf{JAglue}の挿入処理を分断するのに
使われていたいくつかの方法は用いることができない.具体的には,次の方法はもはや無効である:}
%</ja>
-\begin{verbatim}
+\begin{lstlisting}
ちょ{}っと ちょ\/っと
-\end{verbatim}
+\end{lstlisting}
%<*en>
If you want to do so, please put an empty horizontal box (hbox) between it instead:
%</en>
%<*ja>
もし同じことをやりたければ,空の水平ボックス(hbox)を間に挟めばよい:
%</ja>
-\begin{verbatim}
+\begin{lstlisting}
ちょ\hbox{}っと
-\end{verbatim}
+\end{lstlisting}
%<*en>
%<*ja>
\item \LuaTeX-jaでは,\pTeX と同様に漢字・仮名を制御綴内に用いることができ,
\cs{西暦} などが正しく動作するようにしている.
-但し,制御綴中に使える和文文字が\pTeX・\upTeX と全く同じではないことに注意すること.
+但し,制御綴中に使える和文文字が\pTeX・\upTeX と全く同じではない(\ref{sec-catcode}章参照).
%</ja>
%<*ja>
\item ****版からは,不安定ながらも\LuaTeX-ja における縦組みをサポートしている.
\LuaTeX のコールバックの制限などにより,特に異なった組方向のボックスを扱う場合には
-仕様が異なるので注意すること.
+仕様が異なるので注意.
+%</ja>
+
+%<*en>
+\item Japanese characters in discretionary break (\cs{discretionary}) is not supported.
+%</en>
+%<*ja>
+\item \cs{discretionary} 内に直接和文文字を記述することはサポートされない.和文文字をどう
+ しても使いたい場合は \cs{hbox} で括ること.
%</ja>
\end{itemize}
%<en>\subsection{Installation}
%<ja>\subsection{インストール}
-%<en>To install the \LuaTeX-ja\ package, you will need:
-%<ja>\LuaTeX-jaã\83\91ã\83\83ã\82±ã\83¼ã\82¸ã\81®ã\82¤ã\83³ã\82¹ã\83\88ã\83¼ã\83«ã\81«ã\81¯ï¼\8c次ã\81®ã\82\82ã\81®が必要である.
+%<en>The following packages are needed for the \LuaTeX-ja\ package.
+%<ja>\LuaTeX-jaã\83\91ã\83\83ã\82±ã\83¼ã\82¸ã\81«ã\81¯ï¼\8c次ã\81®ã\83\91ã\83\83ã\82±ã\83¼ã\82¸é¡\9eが必要である.
\begin{itemize}
\item \LuaTeX\ beta-0.74.0 (or later)
\item \Pkg{luaotfload} v2.2 (or later)
-\item \Pkg{luatexbase} v0.6
-\item \Pkg{xunicode} v0.981~(2011/09/09)
\item \Pkg{adobemapping} (Adobe cmap and pdfmapping files)
-\item \Pkg{everysel}
+\item \Pkg{everysel} (if you want to use \LuaTeX-ja with \LaTeXe)
+%<en>\item \emph{IPAex fonts(\url{http://ipafont.ipa.go.jp/})}
+%<ja>\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})}
\end{itemize}
%<*en>
\medskip
-Now \LuaTeX-ja is available from the following archive and distributions:
+Now \LuaTeX-ja is available from
+CTAN (in the \texttt{macros/luatex/generic/luatexja} directory), and
+the following distributions:
\begin{itemize}
- \item CTAN (in the \texttt{macros/luatex/generic/luatexja} directory)
\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}
+IPAex fonts are also available in these distributions.
If you are using \TeX~Live~2014, you can install \LuaTeX-ja
from \TeX~Live manager (\texttt{tlmgr}):
-\begin{verbatim}
+\begin{lstlisting}
$ tlmgr install luatexja
-\end{verbatim}
+\end{lstlisting}
%</en>
%<*ja>
\emph{本バージョンの\LuaTeX-jaは\TeX~Live~2012以前では動作しない.}
\medskip
-現在,\LuaTeX-jaは以下のアーカイブ,およびディストリビューションに収録されている:
+現在,\LuaTeX-jaはCTAN (\texttt{macros/luatex/generic/luatexja})に収録されている他,
+以下のディストリビューションにも収録されている:
\begin{itemize}
- \item CTAN (\texttt{macros/luatex/generic/luatexja})
\item MiK\TeX\ (\texttt{luatexja.tar.lzma})
\item \TeX\ Live (\texttt{texmf-dist/tex/luatex/luatexja})
\item W32\TeX\ (\texttt{luatexja.tar.xz})
\end{itemize}
+これらのディストリビューションはIPAexフォントも収録している.
+W32\TeX においてはIPAexフォントは \texttt{luatexja.tar.xz} 内にある.
例えば\TeX~Live~2014を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を
使ってインストールすることができる.
-\begin{verbatim}
+\begin{lstlisting}
$ tlmgr install luatexja
-\end{verbatim}
+\end{lstlisting}
%</ja>
%<en>\paragraph{Manual installation}
\begin{itemize}
\item Copy the Git repository:
-\begin{verbatim}
+\begin{lstlisting}
$ git clone git://git.sourceforge.jp/gitroot/luatex-ja/luatexja.git
-\end{verbatim}
+\end{lstlisting}
\item Download the \texttt{tar.gz} archive of HEAD in the \texttt{master} branch from
\begin{flushleft}
\url{http://git.sourceforge.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}.
\begin{itemize}
\item Gitリポジトリの内容をコピーする:
-\begin{verbatim}
+\begin{lstlisting}
$ git clone git://git.sourceforge.jp/gitroot/luatex-ja/luatexja.git
-\end{verbatim}
+\end{lstlisting}
\item \texttt{master}ブランチのスナップショット(\texttt{tar.gz}形式)をダウンロードする.
\begin{flushleft}
\url{http://git.sourceforge.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}.
格納した \texttt{ltj-kinsoku.lua} を生成するために,
以下を実行する必要がある:
%</ja>
-\begin{verbatim}
+\begin{lstlisting}
$ cd src
$ lualatex ltjclasses.ins
$ lualatex ltjsclasses.ins
$ lualatex ltjltxdoc.ins
$ luatex ltj-kinsoku_make.tex
-\end{verbatim}
+\end{lstlisting}
%<*en>
Note that \texttt{*.\{dtx,ins\}} and \texttt{ltj-kinsoku\_make.tex} are not needed in regular use.
%</en>
%</en>
%<*ja>
\item \texttt{src}の中身を自分の\texttt{TEXMF}ツリーにコピーする.
- 場所の例としては,例えば\texttt{TEXMF/tex/luatex/luatexja/}がある.
+ 場所の例としては,例えば
+\begin{quote}
+ \texttt{TEXMF/tex/luatex/luatexja/}
+\end{quote}
+ がある.
シンボリックリンクが利用できる環境で,かつリポジトリを直接取得したのであれば,
(更新を容易にするために)コピーではなくリンクを貼ることを勧める.
%</ja>
\LuaTeX によって見つけられることが必要である.
しかしMiK\TeX ではそのようになっていないので,次のエラーが発生するだろう:
%</ja>
-\begin{verbatim}
+\begin{lstlisting}
! LuaTeX error ...iles (x86)/MiKTeX 2.9/tex/luatex/luatexja/ltj-rmlgbm.lua
bad argument #1 to 'open' (string expected, got nil)
-\end{verbatim}
+\end{lstlisting}
%<*en>
If so, please execute a batch file which is written on
%<en>To use \LuaTeX-ja in plain \TeX, simply put the following at the beginning of the document:
%<ja>\LuaTeX-jaを plain \TeX で使うためには,単に次の行をソースファイルの冒頭に追加すればよい:
-\begin{verbatim}
+\begin{lstlisting}
\input luatexja.sty
-\end{verbatim}
+\end{lstlisting}
%<en>This does minimal settings (like \texttt{ptex.tex}) for typesetting Japanese documents:
%<ja>これで(\texttt{ptex.tex}のように)日本語組版のための最低限の設定がなされる:
\textbf{direction}&
\textbf{classification}&\textbf{font name}&\bf `10\,pt'&\bf`7\,pt'&\bf`5\,pt'\\\midrule
\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}\\
+\emph{mincho}&IPAex Mincho&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
+&\emph{gothic}&IPAex Gothic&\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}\\
+\emph{mincho}&IPAex Mincho&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\
+&\emph{gothic}&IPAex Gothic&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\
\bottomrule
\end{tabular}
\end{center}
\toprule
\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}\\
+明朝体&IPAex明朝&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\
+&ゴシック体&IPAexゴシック&\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}\\
+明朝体&IPAex明朝&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\
+&ゴシック体&IPAexゴシック&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\
\bottomrule
\end{tabular}
\end{center}
%</ja>
\begin{itemize}
%<*en>
-\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).
- We adopt this custom to the default setting.
+\item With \texttt{luatexja.cfg}, one can use other fonts
+as ``default'' Japanese fonts (Subsection~\ref{ssec-cfg}).
%</en>
%<*ja>
-\item ``Ryumin-Light''と``GothicBBB-Medium''はPDFファイルに埋め込まずに
- 名前参照のみで用いることが広く受け入れられており,この場合PDFリーダーが
- 適切な外部フォントで代用する(例えば,Adobe ReaderではRyumin-Lightは
- 小塚明朝で代替される).そこで,これらを引き続きデフォルトのフォントと
- して採用する.
+\item \texttt{luatexja.cfg} を用いることによって,標準和文フォントを
+IPAexフォントから別のフォントに置き換えることができる.\ref{ssec-cfg}節を参照.
%</ja>
%<*en>
%<ja>\subsection{\LaTeX で使う}
\label{ssec-ltx}
-\paragraph{\LaTeXe}
-
%<*en>
Using in \LaTeXe\ is basically same. To set up the minimal environment
for Japanese, you only have to load \texttt{luatexja.sty}:
\LaTeXe を用いる場合も基本的には同じである.日本語組版のための最低限の環境を
設定するためには,\texttt{luatexja.sty}を読み込むだけでよい:
%</ja>
-\begin{verbatim}
+\begin{lstlisting}
\usepackage{luatexja}
-\end{verbatim}
+\end{lstlisting}
%<*en>
It also does minimal settings (counterparts in \pLaTeX\ are \texttt{%
plfonts.dtx} and \texttt{pldefs.ltx}):
\begin{center}\small
\begin{tabular}{ccccc}
\toprule
-\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\\
+\textbf{classification}&\textbf{family}&\cs{mdseries}&\cs{bfseries}&\textbf{scale}\\\midrule
+\emph{mincho} (明朝体)&\tt mc&IPAex Mincho&IPAex Gothic&0.962216\\
+\emph{gothic} (\textgt{ゴシック体})&\tt gt&IPAex Gothic&IPAex Gothic&0.962216\\
\bottomrule
\end{tabular}
\end{center}
-Note that the bold series in both family are same as the medium series of \emph{gothic} family.
-This is a convention in \pLaTeX. This is trace that there were only 2~fonts (these are Ryumin-Light
-and GothicBBB-Medium) in early years of DTP. There is no italic nor slanted shape for
+Note that the bold series in both family are same as the medium series of \emph{gothic}
+ family. There is no italic nor slanted shape for
these \texttt{mc}~and~\texttt{gt}.
%</en>
%<*ja>
\begin{tabular}{ccccc}
\toprule
\emph{字体}&\emph{ファミリ}&\cs{mdseries}&\cs{bfseries}&\emph{スケール}\\\midrule
-明朝体&\tt mc&Ryumin-Light &GothicBBB-Medium&0.962216\\
-ゴシック体&\tt gt&GothicBBB-Medium&GothicBBB-Medium&0.962216\\
+明朝体&\tt mc&IPAex明朝&IPAexゴシック&0.962216\\
+ゴシック体&\tt gt&IPAexゴシック&IPAexゴシック&0.962216\\
\bottomrule
\end{tabular}
\end{center}
どちらのファミリにおいても,そのboldシリーズで使われるフォントは
-ゴシック体のmediumシリーズで使われるフォントと同じあることに注意.
-これは初期のDTPにおいて和文フォントが2つ(それがちょうど\
-Ryumin-Light, GothicBBB-Mediumだった)しか利用できなかった時の名残であり,\pLaTeX{}
-での標準設定とも同じである.
+ゴシック体のmediumシリーズで使われるフォントと同じであることに注意.
+また,どちらのファミリでもイタリック体・スラント体は定義されない.
%</ja>
がそれぞれ用意されている.
%</ja>
+%<*ja>
+\paragraph{脚注とボトムフロートの出力順序}
+オリジナルの\LaTeX では脚注がボトムフロートの上に来るようになっており,
+\pLaTeX では脚注がボトムフロートの下に来るように変更されている.
+
+\LuaTeX-jaでは「欧文クラスの中にちょっとだけ日本語を入れる」という利用も考慮し,
+脚注とボトムフロートの順序は\LaTeX 通りとした.もし\pLaTeX の出力順序が好みならば,
+\Pkg{stfloats}パッケージを利用して
+\begin{lstlisting}
+ \usepackage{stfloats} \fnbelowfloat
+\end{lstlisting}
+のようにすればよい.\Pkg{footmisc}パッケージを \texttt{bottom}\ オプションを指定して
+読み込むという方法もあるが,それだとボトムフロートと脚注の間が開いてしまう.
+%</ja>
+
%<en>\section{Changing Fonts}
%<ja>\section{フォントの変更}
実装では \cs{DeclareFontFamily} を用いても問題は生じない.
\item 和文フォントのシェイプを定義するには,通常の \cs{DeclareFontShape} を使えば良い:
%</ja>
-\begin{verbatim}
+\begin{lstlisting}
\DeclareFontShape{JY3}{mc}{bx}{n}{<-> s*KozMinPr6N-Bold:jfm=ujis;-kern}{}
% Kozuka Mincho Pr6N Bold
-\end{verbatim}
+\end{lstlisting}
%<*ja>
仮名書体を使う場合など,複数の和文フォントを組み合わせて使いたい場合は
\ref{ssec-altfont}節の \cs{ltjdeclarealtfont} と,その\LaTeX 版の\
斜体大文字が出なくなる,など.}場合は,
次のように\Pkg{luatexja-preset}の前に\Pkg{fontspec}を手動で読みこめば良い:
%</ja>
-\begin{verbatim}
+\begin{lstlisting}
\usepackage[no-math]{fontspec}
\usepackage[...]{luatexja-preset}
-\end{verbatim}
+\end{lstlisting}
%<en>\paragraph{General options}
%<ja>\paragraph{一般的なオプション}
-\begin{cslist}
+\begin{cslist}[before*=]
\item[nodeluxe]
%<*en>
%<*ja>
\LaTeXe 環境下での標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する.
より具体的に言うと,この設定の下では
-\ \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+,
+\ \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+,
\verb+\gtfamily\mdseries+はみな同じフォントとなる.
\emph{このオプションは標準で有効になっている.}
%</ja>
%</ja>
\item[expert]
%<*en>
-Use horizontal kana alternates, and define a command \cs{rubyfamily} to use kana
+Use horizontal/vertical kana alternates, and define a command \cs{rubyfamily} to use kana
characters designed for ruby.
%</en>
-%<ja>横組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる.
+%<ja>横組・縦組専用仮名を用いる.また,\cs{rubyfamily} でルビ用仮名が使用可能となる.
\item[bold]
%<en>Substitute bold series of \textit{gothic} for bold series of \textit{mincho}.
%<ja>「明朝の太字」をゴシック体の太字によって代替する.
同時に指定された場合の動作については全く考慮していない.
%</ja>
-\newpage
%<en>\paragraph{Presets for multi weight}
%<ja>\paragraph{多ウェイト用プリセットの一覧}
%<*en>
\end{tabular}
\end{center}
-%<ja>\medskip
+%<ja>\newpage
\item[morisawa-pro] Morisawa Pro (Adobe-Japan1-4) fonts.
%<en> \\*[-\dimexpr\medskipamount+\baselineskip\relax]
\end{tabular}
\end{center}
-\newpage
\item[yu-win] Yu fonts bundled with Windows~8.1.
%<en> \\*[-\dimexpr\medskipamount+\baselineskip\relax]
\item[yu-osx] Yu fonts bundled with OSX~Mavericks.
\end{tabular}
\end{center}
-\end{cslist}
+\end{cslist}
%<en>\paragraph{Presets for single weight}
%<ja>\paragraph{単ウェイト用プリセット一覧}
%<*en>
\midrule
%<*en>
\it mincho&Ryumin-Light (non-embedded)
-&IPAMincho&IPAexMincho&MS Mincho\\
+&IPA Mincho&IPAex Mincho&MS Mincho\\
\it gothic&GothicBBB-Medium (non-embedded)
-&IPAGothic&IPAexGothic&MS Gothic\\
+&IPA Gothic&IPAex Gothic&MS Gothic\\
%</en>
%<*ja>
\gtfamily 明朝体&Ryumin-Light(非埋込)
\bottomrule
\end{tabular}\par\medskip}
-
%<en>\paragraph{Using HG fonts}
%<ja>\paragraph{HGフォントの利用}
%<*en>
\midrule
%<*en>
\bf mincho medium
-&IPAMincho&IPAexMincho&MS Mincho\\\midrule
+&IPA Mincho&IPAex Mincho&MS Mincho\\\midrule
\bf mincho bold&
\multicolumn{3}{c}{HG Mincho E}\\\midrule
\bf Gothic medium\\
~~without \texttt{deluxe}
-&IPAGothic&IPAexGothic&MS Gothic\\
+&IPA Gothic&IPAex Gothic&MS Gothic\\
~~with {\tt jis2004}
-&IPAGothic&IPAexGothic&MS Gothic\\
+&IPA Gothic&IPAex Gothic&MS Gothic\\
\cmidrule(lr){1-4}
~~otherwise&
\multicolumn{3}{c}{HG Gothic M}\\\midrule
\end{description}
%</en>
%<*ja>
+\newpage
なお,HG明朝E・HGゴシックE・HG創英角ゴシックUB・HG丸ゴシック体PROの4つについては,内部で
\begin{description}
\item[標準] フォント名(\texttt{HGMinchoE} など)
%<*ja>
\Pkg{otf}パッケージでは,それぞれ次のようなオプションが存在した:
\begin{cslist}
-\item[\cs{deluxe}] 明朝体・ゴシック体各2ウェイトと,丸ゴシック体を扱えるようになる.
-\item[\cs{expert}] 仮名が横組・縦組専用のものに切り替わり,ルビ用仮名も
+\item[deluxe] 明朝体・ゴシック体各2ウェイトと,丸ゴシック体を扱えるようになる.
+\item[expert] 仮名が横組・縦組専用のものに切り替わり,ルビ用仮名も
\ \cs{rubyfamily}\ によって扱えるようになる.
-\item[\cs{bold}] ゴシック体を標準で太いウェイトのものに設定する.
+\item[bold] ゴシック体を標準で太いウェイトのものに設定する.
\end{cslist}
しかしこれらのオプションは\Pkg{luatexja-otf}パッケージには存在しない.
\Pkg{otf}パッケージが文書中で使用する和文用TFMを自前の物に置き換えていたのに対し,
\ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある.
%</ja>
+%<en>\subsection{Changing default Japanese fonts}
+%<ja>\subsection{標準和文フォントの変更}
+\label{ssec-cfg}
+%<*en>
+If \texttt{luatexja.cfg} can be seen from \LuaTeX, \LuaTeX-ja automatically reads it.
+The main use of \texttt{luatexja.cfg} is for changing default Japanese fonts,
+when IPAex fonts cannot be installed in \TeX~system.
+One should not overuse this \texttt{luatexja.cfg}; fonts which will be used in
+a document should be specified in its source.
+
+For example,
+\begin{lstlisting}
+\def\ltj@stdmcfont{IPAMincho}
+\def\ltj@stdgtfont{IPAGothic}
+\end{lstlisting}
+makes that IPA~Mincho and IPA~Gothic will be used as default Japanese fonts, instead of
+IPAex~Mincho and IPAex~Gothic.
+
+For another example, the following two lines makes that
+non-embedded fonts Ryumin-Light~and~GothicBBB-Medium as default Japanese fonts
+(as the earlier version of \LuaTeX-ja):
+\begin{lstlisting}
+\def\ltj@stdmcfont{psft:Ryumin-Light}
+\def\ltj@stdgtfont{psft:GothicBBB-Medium}
+\end{lstlisting}
+%</en>
+%<*ja>
+\LuaTeX から見える位置に \texttt{luatexja.cfg} があれば,\LuaTeX-jaはそれを読み込む.
+このファイルを用いるとplain~\TeX, \LaTeXe における標準和文フォントを
+IPAex明朝・IPAexゴシックから変更することができる.
+しかし,基本的には\emph{文章中で用いるフォントは(例えば \Pkg{luatexja-preset} などで)
+文書ソース内で指定するべき}であり,この \texttt{luatexja.cfg} は,
+「IPAexフォントがインストールできない」など,IPAexフォントが使用できない場合にのみ
+応急処置的に用いるべきである.
+
+例えば
+\begin{lstlisting}
+\def\ltj@stdmcfont{IPAMincho}
+\def\ltj@stdgtfont{IPAGothic}
+\end{lstlisting}
+と記述しておけば,標準和文フォントがIPA明朝・IPAゴシックへと変
+更される.
+
+
+なお,20140906.0以前のバージョンのように,
+Ryumin-Light, GothicBBB-Mediumという名前の非埋込フォントを用いる場合は
+\begin{lstlisting}
+\def\ltj@stdmcfont{psft:Ryumin-Light}
+\def\ltj@stdgtfont{psft:GothicBBB-Medium}
+\end{lstlisting}
+と記述すればよい.
+%</ja>
+
%<en>\section{Changing Parameters}
%<ja>\section{パラメータの変更}
\item 2番,3番,6番,7番,8番の文字範囲に属する文字は\textbf{JAchar}.
\end{itemize}
%</ja>
-\begin{verbatim}
+\begin{lstlisting}
\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, +8}}
-\end{verbatim}
+\end{lstlisting}
%<*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 an
%</ja>
\begin{description}
%<*en>
-\newpage
+
\item[Range~8${}^{\text{J}}$] The intersection of the upper half of ISO~8859-1
(Latin-1 Supplement) and JIS~X~0208 (a basic character set for Japanese). This character range
consists of the following characters:
\end{table}
\end{description}
-
-%<en>\newpage\subsection{\Param{kanjiskip} and \Param{xkanjiskip}}
+%<en>\subsection{\Param{kanjiskip} and \Param{xkanjiskip}}
%<ja>\subsection{\Param{kanjiskip}と\Param{xkanjiskip}}
\label{subs-kskip}
仕様では,\Param{jaxspmode}, \Param{alxspmode}はテーブルを共有しており,
上のコードの1行目を次のように変えても同じことになる:
%</ja>
-\begin{verbatim}
+\begin{lstlisting}
\ltjsetparameter{alxspmode={`あ,preonly}, jaxspmode={`\!,postonly}}
-\end{verbatim}
+\end{lstlisting}
%<*en>
One can use also numbers to specify these two parameters (see Subsection~\ref{ssec-param}).
%</en>
}abcかな
\end{LTXexample}
+%<*en>
+Note that setting positive \Param{yalbaselineshift}~or~\Param{talbaselineshift}
+parameters does not increase the depth of one-letter ``syllable'' $p$ of \textbf{Alchar}, if
+its left-protrusion~(\cs{lpcode}) and right-protrusion~(\cs{rpcode}) are both non-zero.
+This is because
+\begin{itemize}
+\item These two parameters are implemented by setting yoffset field of a
+glyph node, and this does not increase the depth of the glyph.
+\item To cope with the above situation, \LuaTeX-ja automatically supplies
+a rule in every ``syllable''.
+\item However, we cannot use this ``supplying a rule'' method if \dots
+\end{itemize}
+
+This problem does not apply for \Param{yjabaselineshift}~nor~\Param{tjabaselineshift}.
+%</en>
+%<*ja>
+なお,以下の場合には1文字の\textbf{ALchar}からなる「音節」の深さは増加しないことに注意.
+\begin{itemize}
+ \item \Param{yalbaselineshift},~\Param{talbaselineshift}パラメータが正になっている.
+ \item 「音節」を構成する唯一の文字$p$の
+左余白への突出量(\cs{lpcode}),右余白への突出量(\cs{rpcode})がどちらも非零である.
+\end{itemize}
+\Param{yjabaselineshift},~\Param{tjabaselineshift}パラメータについてはこのような問題は起こらない.
+%</ja>
%<*ja>
\paragraph{数式における挙動:\pTeX との違い}
\begin{tabular}{lp{30\zw}}
\toprule
\emph{入力}&\vspace*{\dimexpr-\origbaselineskip-\smallskipamount}
-\begin{verbatim}
+\begin{lstlisting}
数式abc: $あa\hbox{い}$, $\int_0^x t\,dt=x^2\!/2$,
$\Phi\vdash F(x)\ \hbox{for all}\ x\in A$
-\end{verbatim}\\
+\end{lstlisting}\\
\noalign{\vskip-\origbaselineskip}
\midrule
\emph{\pTeX}&
\suppressfloats[t]
%<*ja>
\section{\LuaTeX-jaにおける \cs{catcode}}
+\label{sec-catcode}
\subsection{予備知識:\pTeX と\upTeX における \cs{kcatcode}}
\pTeX,\upTeX においては,和文文字が制御綴内で利用できるかどうか
は \cs{kcatcode} の値によって決定されるのであった.
%</ja>
%<*en>
\section{\cs{catcode} in \LuaTeX-ja}
+\label{sec-catcode}
\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.
%<*en>
\LuaTeX-ja supports four directions, as shown in Table~\ref{tab-dir}.
-The second column (\emph{yoko} direction) is just horizontal writing,
+The second column (\emph{yoko} direction) is just horizontal writing,
and the third column (\emph{tate} direction) is vertical writing.
The fourth column (\emph{dtou} direction) is actually a hidden feature of \pTeX.
We implemented this for debugging purpose.
\the\wd0,~\hbox{\tate \the\wd0}
\end{LTXexample}
-To access box dimensions \emph{with respect to current direction},
+To access box dimensions \emph{with respect to current direction},
one have to use the following commands instead of \cs{wd} wtc.
\begin{cslist}
\item[\cs{ltjgetwd}\{<num>\}\textrm{, }\cs{ltjgetht}\{<num>\}\textrm{, }%
\cs{ltjgetdp}\{<num>\}]
-These commands return \emph{an internal dimension} of \cs{box<num>} with respect to
+These commands return \emph{an internal dimension} of \cs{box<num>} with respect to
the current direction. One can use these in \cs{dimexpr} primitive, as the followings.
-\begin{verbatim}
+\begin{lstlisting}
\dimexpr 2\ltjgetwd{42}-3pt\relax, \the\ltjgetwd{1701}
-\end{verbatim}
+\end{lstlisting}
By implementaion, the argument must be grouped as \verb+\ltjgetwd{42}+,
if the argument consists of more than one token.
\begin{LTXexample}[width=0.3\textwidth]
\cs{ltjsetdp}<num>=<dimen>]
These commands set the dimension of \cs{box<num>}. Unlike \cs{ltjgetwd}, one does not need
to group the argument <num>; four calls of \cs{ltjsetwd} below have the same meaning.
-\begin{verbatim}
+\begin{lstlisting}
\ltjsetwd42 20pt, \ltjsetwd42=20pt, \ltjsetwd=42 20pt, \ltjsetwd=42=20pt
-\end{verbatim}
+\end{lstlisting}
\end{cslist}
%</en>
\item[\cs{ltjgetwd}\{<num>\}\textrm{, }\cs{ltjgetht}\{<num>\}\textrm{, }%
\cs{ltjgetdp}\{<num>\}]
現在の組方向に応じたボックスの寸法の取得を行う.結果は内部長さであるため,
-\begin{verbatim}
+\begin{lstlisting}
\dimexpr 2\ltjgetwd{42}-3pt\relax, \the\ltjgetwd{1701}
-\end{verbatim}
+\end{lstlisting}
のように \cs{wd}<num> の代わりとして扱うことができる.引数が1桁の場合は,
\cs{ltjgetwd3} のように引数をグループで括らなくても良いが,そうでない場合は
(通常の命令への引数のように)\verb+\ltjgetwd{42}+ とグループに括る必要がある.
\cs{ltjsetdp}<num>=<dimen>]
現在の組方向に応じたボックスの寸法の設定を行う.\cs{afterassignment} を2回利用して
実装しているので,次の4通りは全て同じ意味である.
-\begin{verbatim}
+\begin{lstlisting}
\ltjsetwd42 20pt, \ltjsetwd42=20pt, \ltjsetwd=42 20pt, \ltjsetwd=42=20pt
-\end{verbatim}
+\end{lstlisting}
設定値は「横組」「縦組及び \cs{utod} 方向」「\cs{dtou} 方向」
の3種ごとに独立して記録される.参考として,Gitリポジトリ内の
%<*ja>
\subsection{組方向の取得}
「現在の組方向」や「<num>番のボックスの組方向」は,
-\pTeX では\cs{ifydir} や \cs{ifybox}<num> といった条件判断文を使って
+\pTeX では \cs{ifydir} や \cs{ifybox}<num> といった条件判断文を使って
判断することができた.
しかし,\LuaTeX-jaはあくまでも\TeX マクロとLuaコードで
記述されており,それでは新たな条件判断命令を作るのは難しい.
\end{LTXexample}
これらを用いれば,例えば
-\pTeX の \cs{ifydir}, \cs{iftbox200} と同等の条件判断を
-\begin{verbatim}
+\pTeX の \cs{ifydir},~\cs{ifybox200} と同等の条件判断を
+\begin{lstlisting}
\ifnum\ltjgetparameter{direction}=4
-\ifnum\ltjgetparameter{boxdir}{200}=3
-\end{verbatim}
+\ifnum\ltjgetparameter{boxdir}{200}=4
+\end{lstlisting}
のように行うことができる.
+\cs{iftdir} は少々面倒であるが
+\begin{lstlisting}
+\ifnum\numexpr
+ \ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8=3
+\end{lstlisting}
+とすればよい.
%</ja>
%<*en>
\item[\cs{unhbox}<num>\textrm{, }\cs{unvbox}<num>\textrm{, }\cs{unhcopy}<num>\textrm{, }\cs{unvcopy}<num>]
\item[\cs{vadjust}\{<material>\}]
\item[\cs{lastbox}]
- \item[\cs{raise}<dimen><box>\textrm{, }\cs{lower}<dimen><box>\textrm{\ etc., }\cs{vcenter}]
+ \item[\cs{raise}<dimen><box>\textrm{, }\cs{lower}<dimen><box>\textrm{\ etc., }\cs{vcenter}]
\item[\cs{vcenter}]
\end{cslist}
%</en>
周囲の垂直リストの組方向と一致しない場合にエラーを出力し,
該当の \cs{vadjust} を無効にする.
\item[\cs{lastbox}] ボックスの「中身」を現在の組方向に合わせるためのノード
- (\textit{dir\_node}という)を必要ならば除去し,
+ (\textit{dir\_box}という)を必要ならば除去し,
正しく「中身」のボックスが返されるように前処理をする.
\item[\cs{raise}<dimen><box>\textrm{, }\cs{lower}<dimen><box>\textrm{\ etc., }\cs{vcenter}]
- 一方,こちらでは必要に応じて\textit{dir\_node}を作成する前処理を追加している.
+ 一方,こちらでは必要に応じて\textit{dir\_box}を作成する前処理を追加している.
\end{cslist}
%</ja>
NFSS2用の命令(\ref{ssec-chgfnt}節,\ref{ssec-nfsspat}節)における指定では
カーニング情報は標準で使用する}ことになっているようである.
言い換えれば,カーニング情報を使用しない設定にするには,面倒でも
-\begin{verbatim}
+\begin{lstlisting}
\jfont\hoge=KozMinPr6N-Regular:jfm=ujis;-kern at 3.5mm
\DeclareFontShape{JY3}{fuga}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;-kern}{}
-\end{verbatim}
+\end{lstlisting}
のように,\texttt{-kern} という指定を自分で追加しなければいけない.
\item
一方,\emph{\Pkg{luatexja-fontspec} の提供する \cs{setmainjfont}\
\item 出力時に,自動的に「\verb+vert+ feature相当」のグリフ置換が行われる.
これは,\Pkg{luaotfload}による各種featureのサポートとは全く別個に行われるもので,
いちいち \verb+vert+ featureを指定する必要はない.
-\begin{verbatim}
+\begin{lstlisting}
\tfont\S=file:KozMinPr6N-Regular.otf:jfm=ujis % OK
-\end{verbatim}
+\end{lstlisting}
\item \ref{ssec-math}節で述べる,数式中の和文フォントには縦組用和文フォントは指定できない.
\item \texttt{jfm=<name>}\ の部分には縦組用JFMを指定する.
以下の縦組用JFMが\LuaTeX-jaには同梱されており,違いを表\ref{tab-difjfm-tate}に示した.
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''.
+will not be embedded to PDF.
+Note that these non-embedded fonts under current \LuaTeX\ has Identity-H encoding,
+and this violates the standard ISO32000-1:2008~(\cite{pdfstd}).
\emph{OpenType font features, such as ``{\tt +jp90}'',
have no meaning in name-only fonts using ``{\tt psft:}''\ prefix,
\cs{jfont}(と \cs{font} プリミティブ)では
\texttt{psft:}プリフィックスを用いることができる.
このプリフィックスを用いることで,PDFには埋め込まれない「名前だけの」
-和文フォントを指定することができる.「標準的な」非埋め込み和文フォント,
-つまり「Ryumin-Light」「GothicBBB-Medium」の指定でこのプリフィックスが使われる.
+和文フォントを指定することができる.
+なお,現行の\LuaTeX で非埋め込みフォントを作成するとPDF内でのエンコーディングが
+Identity-Hとなり,PDFの標準規格ISO32000-1:2008~(\cite{pdfstd})に非準拠になってしまう
+ので注意してほしい.
\emph{\texttt{psft} プリフィックスの下では
\texttt{+jp90} などのOpenType font featureの効力はない.
\label{ssec-jfm-str}
%<en>A JFM file is a Lua script which has only one function call:
%<ja>JFMファイルはただ一つの関数呼び出しを含むLuaスクリプトである:
-\begin{verbatim}
+\begin{lstlisting}
luatexja.jfont.define_jfm { ... }
-\end{verbatim}
+\end{lstlisting}
%<*en>
Real data are stored in the table which indicated above by
\verb+{ ... }+. So, the rest of this subsection are devoted to describe the
%<ja>(必須)
%<en>The amount of the length of the ``full-width''.
-%<ja>「全角幅」の長さ.この量が \cs{zw} の長さを決定する.
+%<*ja>
+「全角幅」の長さ.この量が \cs{zw} の長さとなる.\pTeX では
+「全角幅」\texttt{1zw} は「文字クラス0の文字」の幅と決められていたが,
+\LuaTeX-jaではここで指定する.
+%</ja>
\item[zh=<length>]
%<en>(required)
%<ja>(必須)
%<en>The amount of the ``full-height'' (height + depth).
-%<ja>「全角高さ」(height + depth)の長さ.通常は全角幅と同じ長さになるだろう.
+%<*ja>
+「全角高さ」(height + depth)の長さ.通常は全角幅と同じ長さになるだろう.
+\pTeX では 「全角高さ」\texttt{1zh} は「文字クラス0の文字」の高さと深さの和と決められていたが,
+\LuaTeX-jaではここで指定する.
+%</ja>
\item[kanjiskip=\{<natural>, <stretch>, <shrink>\}]
%<en>(optional)
\item 「\hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ*'+}」のような,文字それ自体の後にアスタリスクをつけたもの
\item いくつかの「仮想的な文字」(後に説明する)
\end{itemize}
-%</ja>
+%</ja>
\item[width=<length>, height=<length>, depth=<length>, italic=<length>]
%<en>(required)
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
+The effects of these 3~fields are indicated in
Figures \ref{fig-pos}~and~\ref{fig-pos-tate}.
%</en>
%<*ja>
\end{minipage}%
\begin{minipage}{0.6\textwidth}%
%<*en>
-Consider a Japanese character node which belongs to
+Consider a Japanese character node which belongs to
a character class whose the \texttt{align}
field is \texttt{'middle'}.
%</en>
\item
実際のグリフの「垂直位置」は,ベースラインが文字の物理的な左右方向の中央を通る
位置となる.
-\item
+\item
また,この場合\texttt{align}フィールドは \texttt{'right'} なので,
「水平位置」は字送り方向に「右寄せ」したものとなる(緑色の長方形).
その際,高さ・深さは,実フォントのascender, descenderの値が使われる.
-\item
+\item
その後さらに \texttt{left} と \texttt{down} の値に従ってシフトされる
のは横組用和文フォントと変わらない.
\end{itemize}
\item JFM中の全ての数値を$1/0.962216$倍しておく.
\item \TeX ソース中で使用するところで,サイズ指定を0.962216倍にする.
\LaTeX でのフォント宣言なら,例えば次のように:
-\begin{verbatim}
+\begin{lstlisting}
\DeclareFontShape{JY3}{mc}{m}{n}{<-> s*[0.962216] psft:Ryumin-Light:jfm=jis}{}
-\end{verbatim}
+\end{lstlisting}
\end{itemize}
\item 上に述べた特殊文字は,\texttt{'boxbdd'}を除き文字クラスを全部0とする
(JFM中に単に書かなければよい).
font families. There is no relation between the value of
\cs{fam} and that of \cs{jfam}; with appropriate settings,
you can set both \cs{fam} and \cs{jfam} to the same value.
+Here <jfont\_cs> in the argument of \Param{jatextfont} etc.\ is
+a control sequence which is defined by \cs{jfont}, i.e.,
+a \emph{horizontal} Japanese font.
%</en>
%<*ja>
\LuaTeX-jaの数式中での和文フォントの扱いも同様である.
表\ref{tab-math}は数式フォントファミリに対する \TeX のプリミティブと対応する
ものを示している.\cs{fam} と \cs{jfam} の値の間には関係はなく,
適切な設定の下では \cs{fam} と \cs{jfam} の両方に同じ値を設定することができる.
+\Param{jatextfont} 他の第2引数<jfont\_cs>は,\cs{jfont} で定義された
+\emph{横組用}和文フォントである.\cs{tfont} で定義された
+\emph{縦組用}和文フォントを指定することは想定していない.
%</ja>
\begin{table}[!tb]
of \LuaTeX, see Section~\ref{sec-para}.
%</en>
%<*ja>
-先に述べたように,\cs{ltjsetparameter} と \cs{ltjgetparameter} は
-\LuaTeX-jaのほとんどのパラメータにアクセスするための命令である.
+先に述べたように,\LuaTeX-jaのほとんどの内部パラメータにアクセスするには
+\cs{ltjsetparameter} と \cs{ltjgetparameter} を用いる.
\LuaTeX-jaが\pTeX のような文法(例えば,\verb+\prebreakpenalty`)=10000+)を
採用しない理由の一つは,\LuaTeX のソースにおける \verb+hpack_filter+
コールバックの位置にある.\ref{sec-para}章を参照.
%</ja>
\end{itemize}
-\begin{description}[font=\mdseries]
-\item[\DParam{jcharwidowpenalty}\,=<penalty>$^\ast$] [\cs{jcharwidowpenalty}]\
+\begin{cslist}[style=standard]
+\item[\DParam{jcharwidowpenalty}\,=<penalty>$^\ast$] [\cs{jcharwidowpenalty}]\
%<*en>
Penalty value for suppressing orphans. This penalty is inserted just
この文字の前に挿入/追加されるペナルティの量を指定する.
例えば閉じ括弧「〗」は絶対に行頭にきてはならないので,
-\begin{verbatim}
+\begin{lstlisting}
\ltjsetparameter{prebreakpenalty={`〙,10000}}
-\end{verbatim}
+\end{lstlisting}
と,最大値の10000が標準で指定されている.他にも,小書きのカナなど,絶対禁止とい
うわけではないができれば行頭にはきて欲しくない場合に,0と
10000の間の値を指定するのも有用であろう.
Set a penalty which is inserted automatically before the character <chr\_code>,
to prevent a line starts from this character. For example, a line cannot started
with one of closing brackets ``〗'', so \LuaTeX-ja sets
-\begin{verbatim}
+\begin{lstlisting}
\ltjsetparameter{prebreakpenalty={`〙,10000}}
-\end{verbatim}
+\end{lstlisting}
by default.
%</en>
%</en>
%<*ja>
\Param{jaxspmode}と\Param{alxspmode}は共通のテーブルを用いているため,
-これら2つのパラメータは互いの異名となっていることに注意する.
+これら2つのパラメータは互いの別名となっていることに注意する.
%</ja>
\item[\DParam{autospacing}\,=<bool>] [\cs{autospacing}]
\item[\DParam{jacharrange}\,=<ranges>]
\item[\DParam{kansujichar}\,=\{<digit>, <chr\_code>\}$^\ast$] [\cs{kansujichar}]
-\item[\DParam{direction}\,=<dir>\ \hbox{\rm (always local)}]\
+\item[\DParam{direction}\,=<dir>\ \hbox{\rm (always local)}]\
%<*en>
Assigning to this parameter has the same effect as
\cs{yoko}~(if $\hbox{<dir>}=4$), \cs{tate}~(if $\hbox{<dir>}=3$),
\cs{dtou}~(if $\hbox{<dir>}=1$) or \cs{utod}~(if $\hbox{<dir>}=11$).
-If the argument <dir> is not one of 4,~3, 1~nor~11,
+If the argument <dir> is not one of 4,~3, 1~nor~11,
the behavior of this assignment is undefined.
%</en>
%<*ja>
動作は未定義である.
%</ja>
-\end{description}
+\end{cslist}
\subsection{\cs{ltjgetparameter}}
\label{ssec-getpar}
For example, if \cs{hoge} uses \texttt{jfm-ujis.lua}, the standard JFM of \LuaTeX-ja,
then
-\begin{verbatim}
+\begin{lstlisting}
\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}}
-\end{verbatim}
+\end{lstlisting}
does
\begin{quote}
If the current Japanese font is \cs{hoge}, \texttt{U+3000}--\texttt{U+30FF}
例えば,\cs{hoge} のJFMが\LuaTeX-ja標準の
\ \texttt{jfm-ujis.lua} であった場合,
-\begin{verbatim}
+\begin{lstlisting}
\ltjdeclarealtfont\hoge\piyo{"3000-"30FF, {-1}-{-1}}
-\end{verbatim}
+\end{lstlisting}
は「\cs{hoge} を利用しているとき,
\texttt{U+3000}--\texttt{U+30FF}と
文字クラス1(開き括弧類)中の文字だけは \cs{piyo} を用いる」
%<*en>
As described in Subsection~\ref{ssec-fontspec}, this optional package
provides the counterparts for several commands defined in the
-\Pkg{fontspec} package (recommends v2.4).
+\Pkg{fontspec} package (requires \Pkg{fontspec}~v2.4).
In addition to OpenType font features in the original \Pkg{fontspec},
the following ``font features'' specifications are allowed for
the commands of Japanese version:
%<*ja>
\ref{ssec-fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}
パッケージで定義されているコマンドに対応する和文フォント用のコマンドを提供する.
-\Pkg{fontspec} パッケージが2.3であっても動作するが,
-\emph{以降の説明は \Pkg{fontspec}~v2.4 使用時にのみ当てはまる.}
+\emph{以下に述べる和文版の命令の説明は \Pkg{fontspec}~v2.4 使用時にのみ当てはまる.}
\Pkg{fontspec}パッケージで指定可能な各種font featureに加えて,和文版のコマンドには
以下の``font feature''を指定することができる:
The \texttt{CID} key is effective only when with \texttt{NoEmbed}
described below. The same JFM cannot be used in both horizontal Japanese fonts and
- vertical Japanese fonts, hence the \texttt{JFM} key
+ vertical Japanese fonts, hence the \texttt{JFM} key
will be actually used in \texttt{YokoFeatures}~and~\texttt{TateFeatures} keys.
%</en>
%<*ja>
\paragraph{Remark on \texttt{AltFont}, \texttt{YokoFeatures}, \texttt{TateFeatures} keys}
In \texttt{AltFont},~\texttt{YokoFeatures},~\texttt{TateFeatures} keys,
one cannot specify per-shape settings such as \texttt{BoldFeatures}.
-For example,
+For example,
\begin{lstlisting}
AltFont = {
- { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold,
+ { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold,
Range="3000-"30FF, BoldFeatures={Color=007F00} }
}
\end{lstlisting}
\end{lstlisting}
On the other hand, \texttt{YokoFeatures}, \texttt{TateFeatures} and \texttt{TateFont}
-keys can be specified in each list in the \texttt{AltFont} key. Also,
+keys can be specified in each list in the \texttt{AltFont} key. Also,
one can specify \texttt{AltFont} inside \texttt{YokoFeatures},~\texttt{TateFeatures}.
%</en>
%<*ja>
例えば.
\begin{lstlisting}
AltFont = {
- { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold,
+ { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold,
Range="3000-"30FF, BoldFeatures={Color=007F00} }
}
\end{lstlisting}
%<*ja>
このパッケージは,\texttt{ajmacros.sty}(\Pkg{otf}パッケージ付属のマクロ集,井上浩一氏作)から
-漢字コードをUTF8にしたり,plain \LuaTeX でも利用可能するという
+æ¼¢å\97ã\82³ã\83¼ã\83\89ã\82\92UTF8ã\81«ã\81\97ã\81\9fã\82\8aï¼\8cplain \LuaTeX ã\81§ã\82\82å\88©ç\94¨å\8f¯è\83½ã\81«ã\81\99ã\82\8bã\81¨ã\81\84ã\81\86
修正を加えた \texttt{luatexja-ajmacros.sty} も自動的に読み込む.
-そのため,マクロ集にある \verb+\aj半角+ などのマクロもそのまま使用可能である.
+そのため,\texttt{ajmacros.sty} マクロ集にある \verb+\aj半角+ などのマクロもそのまま使用可能である.
%</ja>
%<en>\paragraph{Remarks}
有効にするには,\Pkg{luatexja-otf}パッケージを読み込んだ上で以下の命令を実行する%
\footnote{この命令を2回以上実行しても意味がない.}:}
%</ja>
-\begin{verbatim}
+\begin{lstlisting}
\directlua{luatexja.otf.enable_ivs()}
-\end{verbatim}
+\end{lstlisting}
%<ja> すると,上の命令を実行した箇所以降では,以下のようにIVSによる字形指定が有効となる.
%<en> After executing the command above, you can use IVS like the following:
\begin{LTXexample}
\begin{itemize}
\item 組方向オプション \texttt{<y>}(横組),\texttt{<t>}(縦組),
\texttt{<z>}\ の他に\ \texttt{<d>}(dtou方向),\texttt{<u>}(utod方向)を追加した.
-\texttt{<z>} と \texttt{<u>} の違いは,\texttt{<z>} が周囲の組方向が縦組のときにしか意味を持たない
+\texttt{<z>} と \texttt{<u>} の違いは,\texttt{<z>} が(\Pkg{plext} パッケージと同様に)
+周囲の組方向が縦組のときにしか意味を持たない
のに対し,\texttt{<u>} にはそのような制限がないことである.
\item \Pkg{plext} パッケージでは,表組(\texttt{tabular} 環境,\texttt{align} 環境等)や
(中身の最後が罫線などの時は,ボックスの下端)に一致するように配置する.
\item それ以外のときは,ボックスの中央が「数式の軸」に一致するように配置する.
\end{itemize}
-特に縦組の場合,「数式の軸」は……
- \item 連数字用命令 \cs{rensuji} における位置合わせオプション……
+ \item 連数字用命令 \cs{rensuji} における位置合わせオプション \texttt{[l]}, \texttt{[c]},
+ \texttt{[r]} の挙動を若干変更した.
+
\end{itemize}
}
%</ja>
\begin{cslist}
\item[tabular\textrm{, }array\textrm{, }minipage環境]
これらの環境は,
-\begin{verbatim}
+\begin{lstlisting}
\begin{tabular}<dir>[pos]{table spec} ... \end{tabular}
\begin{array}<dir>[pos]{table spec} ... \end{array}
\begin{minipage}<dir>[pos]{width} ... \end{minipage}
-\end{verbatim}
+\end{lstlisting}
のように,組方向オプション \texttt{\<dir\>} が拡張されている.
既に述べたように,組方向オプションに指定できる値は以下の5つであり,
それ以外を指定した時や無指定時は周囲の組方向と同じ組方向になる.
中央揃え(それ以外)される.
\item[picture環境]
図表作成に用いる \texttt{picture} 環境も,
-\begin{verbatim}
+\begin{lstlisting}
\begin{picture}<dir>(x_size, y_size)(x_offset,y_offset)
...
\end{picture}
-\end{verbatim}
+\end{lstlisting}
と組方向が指定できるように拡張されている.
$x$成分の増加方向は字送り方向,$y$成分の増加方向は行送り方向の\emph{反対方向}となる.
\Pkg{plext} パッケージと同様に
\item[tabular\textrm{, }array\textrm{, }minipage\textrm{ environments}]
These environments are extended by \texttt{\<dir\>}, which specifies the direction,
as follows:
-\begin{verbatim}
+\begin{lstlisting}
\begin{tabular}<dir>[pos]{table spec} ... \end{tabular}
\begin{array}<dir>[pos]{table spec} ... \end{array}
\begin{minipage}<dir>[pos]{width} ... \end{minipage}
-\end{verbatim}
+\end{lstlisting}
This option permits one of the following five values. If none of them is specified,
the direction inside the environment is same as that outside the enviromnent.
\begin{description}
\attr{ltj@dir}
%<*ja>
-ボックスにおける組方向を示す.通常のボックスでは
+\textit{direction}~whatsit(後述)において組方向を示すために,あるいは\textit{dir\_box}の
+ 組方向を用いる.\textit{direction}~whatsitにおいては値は
\begin{quote}
- \textit{dir\_dtou} (1), \textit{dir\_tate} (3),
+ \textit{dir\_dtou} (1), \textit{dir\_tate} (3),
\textit{dir\_yoko} (4), \textit{dir\_utod} (11)
\end{quote}
-のいずれかであり,これらに次を加えた値をとるボックスが作られることもあ
- る(\ref{sec-dir-imp}章参照).
+のいずれかであり,\textit{dir\_box}ではこれらに次を加えた値をとる(\ref{sec-dir-imp}章参照).
%</ja>
\begin{description}
\item[\textit{dir\_node\_auto} (128)]
%<*en>
The following function can be used to store data into a stack:
-\begin{verbatim}
+\begin{lstlisting}
luatexja.stack.set_stack_table(index, <any> data)
-\end{verbatim}
+\end{lstlisting}
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.
%</en>
%<*ja>
スタックに値を設定するには,以下のLua関数を呼び出せば良い:
-\begin{verbatim}
+\begin{lstlisting}
luatexja.stack.set_stack_table(<any> index, <any> data)
-\end{verbatim}
+\end{lstlisting}
直感的には,スタックテーブル中のインデックス\textit{index}の値を\textit{data}にする,という意味である.
\textit{index}の値としては \texttt{nil} とNaN以外の任意の値を使えるが,
自然数は\LuaTeX-jaが使用する(将来の拡張用も含む)ので,
%<*en>
Stored data can be obtained as the return value of
-\begin{verbatim}
+\begin{lstlisting}
luatexja.stack.get_stack_table(index, <any> default, <number> level)
-\end{verbatim}
+\end{lstlisting}
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>
スタックの値は,
-\begin{verbatim}
+\begin{lstlisting}
luatexja.stack.get_stack_table(<any> index, <any> default, <number> level)
-\end{verbatim}
+\end{lstlisting}
の戻り値で取得できる.\textit{level}はスタックレベルであり,
通常は \verb+\ltj@@stack+ の値を指定することになるだろう.
\textit{default}はレベル\textit{level}のスタックに値が設定されていなかった場合に
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}
+\begin{lstlisting}
\define@key[ltj]{japaram}{...}{...}
-\end{verbatim}
+\end{lstlisting}
\cs{ltjsetparameter}~and~\cs{ltjglobalsetparameter} automatically sets
\texttt{luatexja.isglobal}. Its meaning is the following.
このため,\cs{ltjsetparameter} に指定可能なパラメータを追加するには,
<prefix>を \texttt{ltj},<family>を \texttt{japaram} としたキーを
-\begin{verbatim}
+\begin{lstlisting}
\define@key[ltj]{japaram}{...}{...}
-\end{verbatim}
+\end{lstlisting}
のように定義すれば良いだけである.
なお,パラメータ指定がグローバルかローカルかどうかを示す \texttt{luatexja.isglobal} が,
\begin{align}
For parameters that do not need additional arguments, one only have to
define a function in the table \verb+luatexja.unary_pars+.
-For example, with the following function,
+For example, with the following function,
\verb+\ltjgetparameter{hoge}+ returns a \emph{string} \texttt{42}.
\begin{lstlisting}[numbers=left]
function luatexja.unary_pars.hoge (t)
Here the first argument $t$ is the stack level, as before.
The second argument $c$ is just the second argument of \cs{ltjgetparameter}.
-For parameters that need an additional argument, one also have to
+For parameters that need an additional argument, one also have to
execute the \TeX\ code like
-\begin{verbatim}
+\begin{lstlisting}
\ltj@@decl@array@param{fuga}
-\end{verbatim}
+\end{lstlisting}
to indicate that ``the parameter \texttt{fuga} needs an additional argument''.
%</en>
%<*ja>
引数$t$は,先に述べた通りのスタックレベルである.一方,引数$c$は\
\cs{ltjgetparameter} の第2引数を表す数値である.
しかしこれだけでは駄目で,
-\begin{verbatim}
+\begin{lstlisting}
\ltj@@decl@array@param{fuga}
-\end{verbatim}
+\end{lstlisting}
を実行し,\TeX インターフェース側に
「\verb+\ltjgetparameter{fuga}+ は追加引数が必要」ということを通知する必要がある.
%</ja>
\end{quote}
この仕様は,前節で述べた\pTeX の仕様にできるだけ近づけたものとなっている.条件1.は,
-\texttt{verbatim}系環境などの日本語対応マクロを書かなくてすませるためのものである.
+\texttt{lstlisting}系環境などの日本語対応マクロを書かなくてすませるためのものである.
しかしながら,\pTeX と完全に同じ挙動が実現できたわけではない.
次のように,和文文字の範囲を変更したちょうどその行においては挙動が異なる:
\def\OB{$\text{\sf O}_{\text{\sf B}}$}
\begin{defn}
%<*en>
-A \emph{cluster} is a list of consecutive nodes in one of the following forms,
+A \emph{cluster} is consecutive nodes in one of the following forms,
with the \textit{id} of it:
%</en>
%<*ja>
-\emph{クラスタ}は以下の形のうちのどれかひとつをとる連続的なノードのリストである:
+\emph{クラスタ}は以下の形のうちのどれかひとつをとるノードのリストである:
%</ja>
\begin{enumerate}
%<*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
(\cs{unhbox}).
- The \textit{id} is \textit{id\_pbox}.
+ The \textit{id} of the cluster is \textit{id\_pbox}.
%</en>
%<*ja>
\item その \verb+\ltj@icflag+ の値が$[3,15)$に入るノードのリスト.
これらのノードはある既にパッケージングされたhboxから \cs{unhbox} で
アンパックされたものである.
- ã\81\9dの\textit{id}は\textit{id\_pbox}である.
+ ã\81\93ã\81®å ´å\90\88ï¼\8cã\82¯ã\83©ã\82¹ã\82¿の\textit{id}は\textit{id\_pbox}である.
%</ja>
%<*en>
\item A inline math formula, including two \textit{math\_node}s at the boundary of it.
- The \textit{id} is \textit{id\_math}.
+ The \textit{id} of the cluster is \textit{id\_math}.
%</en>
%<*ja>
\item インライン数式でその境界に2つの\textit{math\_node}を含むもの.
- ã\81\9dの\textit{id}は\textit{id\_math}である.
+ ã\81\93ã\81®å ´å\90\88ï¼\8cã\82¯ã\83©ã\82¹ã\82¿の\textit{id}は\textit{id\_math}である.
%</ja>
%<*en>
-\item A \textit{glyph\_node}~$p$ with nodes which relate with it:
+\item A \textit{glyph\_node}~$p$, which represents a \textbf{JAchar}, with nodes which relate with it:
%</en>
%<*ja>
-\item \textit{glpyh\_node}~$p$とそれに関係するノード:
+\item \textbf{JAchar}を表す\textit{glyph\_node}~$p$とそれに関係するノード:
%</ja>
\begin{enumerate}
%<*en>
-\item A kern for the italic correction of~$p$.
+\item[(a)] A kern for the italic correction of~$p$.
%</en>
%<*ja>
-\item $p$のイタリック補正のためのカーン.
+\item[(a)] $p$のイタリック補正のためのカーン.
%</ja>
%<*en>
-\item An accent attached to $p$ by \cs{accent}.
+\item[(b)] An accent attached to $p$ by \cs{accent}.
%</en>
%<*ja>
-\item \cs{accent} による$p$に付随したアクセント.
+\item[(b)] \cs{accent} による$p$に付随したアクセント.
%</ja>
\end{enumerate}
\[
\]
%<*en>
-The \textit{id} is \textit{id\_jglyph} or
-\textit{id\_glyph}, according to whether the \textit{glyph\_node}
-represents a Japanese character or not.
+In this case, the \textit{id} is \textit{id\_jglyph}.
+%</en>
+%<*ja>
+この場合の\textit{id}は\textit{id\_jglyph}である.
+%</ja>
+
+%<*en>
+\item A list which begins from a \textit{glyph\_node} which represents a \textbf{ALchar},
+ and consists of \textbf{ALchar} \textit{glyph\_node}s,
+ kerns for adjusting accents~(its subtype is 2), kerns for italic corrections and
+ kerns which are automatically inserted by \LuaTeX~or~luaotfload.
+ In this case, the \textit{id} is \textit{id\_glyph}.
%</en>
%<*ja>
-\textit{id}は\textit{glyph\_node}が和文文字を表すかどうかによって
-\textit{id\_jglyph},もしくは\textit{id\_glyph}となる.
+\item \textbf{ALchar}を表す\textit{glyph\_node},\cs{accent} によるアクセント位置補正用の
+ カーン(subtypeが2),そしてイタリック補正・カーニングによって挿入されたカーン達が連続
+ したもの.この場合の\textit{id}は\textit{id\_glyph}である.
%</ja>
%<*en>
\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
+The \textit{id} of the cluster is \textit{id\_hlist} if the node is an
hbox which is not shifted vertically, or \textit{id\_box\_like}
otherwise.
%</en>
%<*ja>
-\item ボックス様のノード,つまり水平ボックス,垂直ボックス,罫線 (\cs{vrule}),
+\item 水平ボックス(hbox),垂直ボックス,罫線 (\cs{vrule}),
そして\textit{unset\_node}.
- ã\81\9dの\textit{id}は垂直に移動していないhboxならば\textit{id\_hlist},
+ ã\82¯ã\83©ã\82¹ã\82¿の\textit{id}は垂直に移動していないhboxならば\textit{id\_hlist},
そうでなければ\textit{id\_box\_like}となる.
%</ja>
%<*en>
\item A glue, a kern whose subtype is not 2~(\textit{accent}), and a discretionary break.
-The \textit{id} is \textit{id\_glue}, \textit{id\_kern}
+The \textit{id} of the cluster is \textit{id\_glue}, \textit{id\_kern}
and \textit{id\_disc}, respectively.
%</en>
%<*ja>
-\item グルー,subtypeが 2~(\textit{accent})ではないカーン,そして任意改行.
- その\textit{id}はそれぞれ\textit{id\_glue}, \textit{id\_kern},そして
+\item グルー,subtypeが 2~(\textit{accent})ではないカーン,そしてdiscretionary break.
+ その\textit{id} of the clusterはそれぞれ\textit{id\_glue}, \textit{id\_kern},そして
\textit{id\_disc}である.
%</ja>
\end{enumerate}
%<*en>
-Let \textit{Np}, \textit{Nq} and \textit{Nr} denote a cluster.
+We use \textit{Np}, \textit{Nq} and \textit{Nr} to denote a cluster.
%</en>
%<*ja>
以下では\textit{Np}, \textit{Nq}, \textit{Nr}でクラスタを表す.
\item[\textit{id\_hlist}] 縦方向にシフトされていないhbox.\\
この場合,$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$はそれぞれ$p$の内容を表すリストの,
先頭・末尾のノードである.
+\medskip
\begin{itemize}
\item 状況によっては,\TeX ソースで言うと
-\begin{verbatim}
+\begin{lstlisting}
\hbox{\hbox{abc}...\hbox{\lower1pt\hbox{xyz}}}
-\end{verbatim}
+\end{lstlisting}
のように,$p$の内容が別のhboxで開始・終了している可能性も十分あり得る.そのような場合,
$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$の算出は,
\emph{垂直方向にシフトされていない}hboxの
\end{enumerate}
例えば,
-\begin{verbatim}
+\begin{lstlisting}
\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}
+\end{lstlisting}
という3フォントを考え,
\[
\overbrace{\Node{glyph}{\cs{ foo}, `あ'}}^{p}
全角単位の値として記述されている.
例えば,行末文字が句点「。」であり,そこで用いられているJFM中に
-\begin{verbatim}
+\begin{lstlisting}
[2] = {
chars = { '。', ... }, width = 0.5, ...,
end_stretch = 0.5, end_shrink = 0.5,
},
-\end{verbatim}
+\end{lstlisting}
という指定があった場合,この行末の句点は
\begin{itemize}
\item 通常の\TeX の行分割処理で「半角以上の詰め」が行われていた場合,
縦組を実装している.
\LuaTeX-jaにおける縦組の実装は
-\pTeX ã\81«ã\81\8aã\81\91ã\82\8bå®\9fè£\85(\cite{ptexdoc,ptextug})ã\82\92ã\83\99ã\83¼ã\82¹ã\81«ã\81\97ã\81¦ã\81\8aã\82\8aï¼\8câ\80¦â\80¦
+\pTeX ã\81«ã\81\8aã\81\91ã\82\8bå®\9fè£\85(\cite{ptexdoc,ptextug})ã\82\92ã\83\99ã\83¼ã\82¹ã\81«ã\81\97ã\81¦ã\81\84ã\82\8bï¼\8e
-\subsection{\textit{direction}~whatsit}
+\subsection{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つある:
+whatsitのことであり,以下のタイミングで作られる.
\begin{itemize}
- \item \verb+\hbox{}+, \verb+\vbox{}+ といった,
+ \item 組方向を \cs{tate} 等で変更したとき.
+ \item \cs{hbox}, \cs{vbox}, \cs{vtop} による明示的なボックスの開始時.\\
+\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番目に挿入されることとなる.
+callbackに処理が回らない.そこで,\LuaTeX-ja では,\cs{everyhbox}, \cs{everyvbox} を利用す
+ ることで各ボックスの先頭に確実に追加するようにしている\footnote{%
+ 問題は \cs{hbox to 25pt\{\}} という状況である.実際のこのボックスの中身は空でない(少な
+ くともdirection whatsitがある)ため,何も対策をしなければhpack時にUnderfill警告が発
+ 生してしまうことになる.\LuaTeX-jaではそうならないように「\cs{hbadness},
+ \cs{vbadness} を一時的に10000に変更し,hpack, vpack後に元の値に戻す」処理を行ってい
+ る.
+}.
+ \item \cs{vsplit}によってvboxを分割した時の「残り」.
+ \item \LuaTeX-ja読み込み前に作成したボックスの寸法を \cs{ltjsetwd} 等によって変更した時.
\end{itemize}
+なお,\verb+\vtop{...}+ の場合は,先頭にdirection whatsitを置くと
+ボックスの高さが常に0\,ptになるという問題が発生する.そのため,この場合に限っては
+vpack時にdirection whatsitをリストの2番目に移動させている.
-\subsection{異方向のボックスの整合処理}
+direction whatsitはあくまでも組方向処理のための補助的なノードであるので,
+\cs{unhbox}, \cs{unhcopy} によってボックスの中身が展開される時には展開直前に削除される.
+これは
+\begin{lstlisting}
+ % yoko direction
+\setbox0=\hbox{\tate B}
+\noindent % 水平モードに入る.この時点でのリストの中身は空
+\unhbox0 A
+\end{lstlisting}
+といった場合に,段落が縦組で組まれたり,あるいは
+\begin{lstlisting}
+\setbox0=\hbox{}
+\leavevmode \hbox{A}\unhbox0
+\setbox1=\lastbox % \box1 はどうなる?
+\end{lstlisting}
+で \cs{box1} が \cs{hbox\{A\}} でなく空になってしまうことを防ぐためである.
+
+
+\subsection{\textit{dir\_box}}
縦中横など異方向のボックスを配置する場合に,周囲の組方向と大きさを整合させるため,
\LuaTeX-jaでは \verb+\ltj@dir+ が128以降の\textit{hlist\_node}, \textit{vlist\_node}を
用いる.これらは\pTeX における\textit{dir\_node}の役割と同じ果たしており,
-この文章中でも\textit{dir\_node}と呼称する.
+この文章中では\textit{dir\_box}と呼称する.
+
+\subsubsection{異方向のボックスの整合}
+\textit{dir\_box}の第一の使用目的は,異方向のボックスの大きさを整合させることである.
+例えば,
+\begin{lstlisting}
+ % yoko direction
+平成\hbox{\tate 26}年
+\end{lstlisting}
+は段落中で
+\[
+ \xymatrix{
+ {}\Node{glyph}{`平'}\ar[r]&{}\Node{glyph}{`成'}\ar[r]&
+ {}\HNode{hlist}{10.00003}{3.02779}{0.0}\ar[r]\ar[d]^{\text{中身}}&{}\Node{glyph}{`年'}\\
+ &&{}\Node{whatsit}{\cs{tate}}\ar[r]&{}\Node{glyph}{`2'}\ar[r]&{}\Node{glyph}{`6'}
+ }
+\]
+というリストを作る.その後,この段落が終了したときに,
+\LuaTeX-jaの\textbf{JAglue}挿入処理が行われ
+\[
+ \xymatrix{
+ {}\Node{glyph}{`平'}\ar[r]
+ &{}\textcolor{blue}{\Node{glue}{\Param{xkanjiskip}}}\ar[r]
+ &{}\Node{glyph}{`成'}\ar[r]
+ &{}\textcolor{blue}{\Node{penalty}{0}}
+ \ar`r[d] `[l] `[ddll] `[dl] [dl]
+ \\
+ &&{}\textcolor{red}{\HNode{hlist}{3.02779}{10.00003}{0.0}}\ar[r]\ar[d]^{\text{中身}}
+ &{}\textcolor{blue}{\Node{penalty}{0}}\ar[r]
+ &{}\Node{glyph}{`年'}\\
+ &&{}\HNode{\textit{dir\_box} (\cs{yoko})}{10.00003}{3.02779}{0.0}\ar[d]^{\text{中身}}\\
+ &&{}\Node{whatsit}{\cs{tate}}\ar[r]&{}\Node{glyph}{`2'}\ar[r]&{}\Node{glyph}{`6'}
+ }
+\]
+のようになる(青字は\textbf{JAglue},赤字が整合処理のための\textit{dir\_box}である).
+\TeX の \cs{showbox} 形式で書けば
+
+\medskip{\narrowbaselines\ttfamily\obeylines\parindent0pt
+\catcode`\@=0 @catcode`@\=12
+.\tenmin 平
+@textcolor{blue}{.\glue 0.0 plus 0.4 minus 0.4}
+.\tenmin 成
+@textcolor{blue}{.\penalty 0}
+@textcolor{red}{.\hbox(10.00003+0.0)x3.02779, direction TLT}
+..\hbox(3.02779+0.0)x10.00003, direction TLT
+...\whatsit4=[]
+...\tenrm 2
+...\tenrm 6
+@textcolor{blue}{.\penalty 0}
+.\tenmin 年
+}\medskip
+
+\noindent である.
+
+なお,\cs{raise},~\cs{lower}, \cs{moveleft},~\cs{moveright} といったボックス移動命令では.
+移動を正しく表現するために段落やボックスの途中でも異方向のボックスは\textit{dir\_box}にカ
+プセル化している.
+例えば
+\begin{lstlisting}
+ % yoko direction
+平成\raise1pt\hbox{\tate 26}年\showlists
+\end{lstlisting}
+は以下のような結果を得る.
+
+\medskip{\narrowbaselines\ttfamily\obeylines\parindent0pt
+\catcode`\@=0 @catcode`@\=12
+(前略)
+\tenrm 平
+\tenrm 成
+@textcolor{red}{\hbox(10.00003+0.0)x3.02779, shifted -1.0, direction TLT}
+.\hbox(3.02779+0.0)x10.00003, direction TLT
+..\whatsit4=[]
+..\tenrm 2
+..\tenrm 6
+\tenrm 年
+}\medskip
+
+また,メインの垂直リストに異方向のボックスが追加される場合にも同様に即座に
+\textit{dir\_box}にカプセル化している.ページ分割のタイミングを正
+しく\TeX が判断するためである.
+\cs{lastbox} によるボックスの取得では,\textit{dir\_box}は削除される.
+
+\subsubsection{異方向のボックス寸法の格納}
+第二の使用目的は,現在の組方向がボックス本来の組方向とは異なる状況で,
+\cs{ltjsetwd} によってボックス寸法を設定されたことを記録することである.
+
+例えば
+\begin{lstlisting}[numbers=left]
+\setbox0=\hbox{\vrule width 10pt height 5pt depth 2pt}
+\setbox1=\hbox{\tate\ltjsetwd0=20pt}
+\wd0=9pt
+\setbox1=\hbox{\dtou\ltjsetwd0=20pt}
+\setbox0=\hbox{\dtou a\box0}
+\end{lstlisting}
+というコードを考える.1行目で \cs{box0} には横組の
+幅10\,pt,高さ5\,pt,深さ2\,ptのボックスが代入される.
+よって,
+\begin{itemize}
+ \item 縦組下では \cs{box0} は幅7\,pt,高さ・深さ5\,ptのボックスとして扱われる.
+ \item \cs{dtou} 下では \cs{box0} は幅7\,pt,高さ10\,pt,深さ0\,ptのボックスとして扱われる.
+\end{itemize}
+このとき,\cs{box0} の\emph{中身}は
+\[
+ \xymatrix{
+ {}\Node{whatsit}{\cs{yoko}}\ar[r]&{}\Node{rule}{}
+ }
+\]
+である.
+さて,2行目で縦組時の \cs{box0} の幅が20\,ptに設定される.この情報が
+direction~whatsit内部のノードリストに,\textit{dir\_box}として格納される:
+\[
+ \xymatrix{
+ {}\Node{whatsit}{\cs{yoko}}\ar[r]\ar[d]_{\text{中身}}&{}\Node{rule}{}\\
+ {}\textcolor{red}{\HNode{\textit{dir\_box} (\cs{tate})}{20.0}{5.0}{5.0}}
+ }
+\]
+
+次に,3行目では横組時の,つまり \cs{box0} 本来の組方向での深さが9\,ptに変更される.
+このとき,\cs{box0} は
+\begin{itemize}
+ \item 縦組下では寸法代入が既に行われているので,2行目で作成された\textit{dir\_box}の通り
+ に幅20\,pt,高さ・深さ5\,ptのボックスとして扱われる.
+ \item \cs{dtou} 下ではまだ寸法代入が行われていないので,
+\cs{box0} の寸法変更に追従し,幅7\,pt,高さ9\,pt,深さ0\,ptのボックスとして扱われる.
+\end{itemize}
+
+4行目では \cs{dtou} 下での\cs{box0} の幅が20\,ptに設定されるので,2行目と同じように
+\[
+ \xymatrix{
+ {}\Node{whatsit}{\cs{yoko}}\ar[r]\ar[d]_{\text{中身}}&{}\Node{rule}{}\\
+ {}\textcolor{red}{\HNode{\textit{dir\_box} (\cs{dtou})}{20.0}{9.0}{0.0}}\ar[r]&
+ {}\HNode{\textit{dir\_box} (\cs{tate})}{20.0}{5.0}{5.0}
+ }
+\]
+と\textit{dir\_box}が作成される.
+
+このように寸法代入によってつくられた\textit{dir\_box}は,前節の整合過程のときに再利用され
+る.上記の例でいえば,5行目を実行した後の \cs{box0} の内容は
+\[
+ \xymatrix{
+ {}\Node{whatsit}{\cs{dtou}}\ar[r]&
+ {}\Node{glyph}{`a'}\ar[r]&
+ {}\textcolor{red}{\HNode{\textit{dir\_box} (\cs{dtou})}{20.0}{9.0}{0.0}}\ar[d]_{\text{中身}}\\
+ &&{}\HNode{hlist}{9.0}{5.0}{2.0}\ar[d]_{\text{中身}}\\
+ &&{}\Node{whatsit}{\cs{yoko}}\ar[r]&{}\Node{rule}{}
+ }
+\]
+のようになる.
%</ja>
+\newpage
\begin{thebibliography}{99}
\addcontentsline{toc}{section}{\refname}
\bibitem{texbytopic}
\\\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.
+\bibitem{pdfstd} International Organization for Standardization. \newblock
+ISO 32000-1:2008, \textit{Document management -- Portable document format -- Part 1: PDF
+ 1.7}, 2008. \newblock
+\\\null\hfill
+\url{http://www.iso.org/iso/iso\_catalogue/catalogue_tc/catalogue\_detail.htm?csnumber=51502}
\end{thebibliography}
\newpage