OSDN Git Service

Japanese version of the manual (Section 9).
[luatex-ja/luatexja.git] / doc / manual.dtx
index 40c1813..bdf8f91 100644 (file)
@@ -7,15 +7,17 @@
 %<*ja>
 \documentclass[a4paper,titlepage]{ltjsarticle}
 \usepackage[margin=25mm, footskip=5mm]{geometry}
+\advance\leftmargini-1\zw\advance\leftmarginii-1\zw
 %</ja>
 
-\usepackage{amsmath,amssymb,xcolor,pict2e,multienum,amsthm,float}
+\usepackage{amsmath,amssymb,xcolor,pict2e,multienum,amsthm,float,makecell}
 \usepackage{booktabs,listings,showexpl,multicol}
 \usepackage{luatexja-otf}
 \usepackage{luatexja-fontspec}
-\usepackage[unicode]{hyperref}
+\usepackage[unicode=true]{hyperref}
 \usepackage[all]{xy}
 \SelectTips{cm}{}
+\def\labelenumii{(\arabic{enumii})}
 
 \DeclareRobustCommand\eTeX{\ensuremath{\varepsilon}-\kern-.125em\TeX}
 \DeclareRobustCommand\LuaTeX{Lua\TeX}
@@ -26,8 +28,6 @@
 \DeclareRobustCommand\pLaTeXe{p\kern-.05em\LaTeXe}
 \DeclareRobustCommand\epTeX{\ensuremath{\varepsilon}-\kern-.125em\pTeX}
 
-\ltjsetparameter{jacharrange={-3}}
-\ltjdefcharrange{6}{`■}
 \theoremstyle{definition}
 %<en>\newtheorem{defn}{Definition}
 %<ja>\newtheorem{defn}{定義}
@@ -104,7 +104,7 @@ Japanese documents when using \LuaTeX.
 %</en>
 %<*ja>
 \LuaTeX-jaパッケージは,次世代標準\TeX である\LuaTeX の上で,\pTeX と同等
-/それ以上の品質の日本語組版を実現させようとするマクロパッケージである.
+それ以上の品質の日本語組版を実現させようとするマクロパッケージである.
 %</ja>
 
 %<en>\subsection{Backgrounds}
@@ -241,9 +241,8 @@ The followings are major changes from \pTeX:
       italic correction are ignored in the insertion process.
 %</en>
 %<*ja>
-\item さらに,2つの文字の間にある行末では効果を持たないノード(例えば
-      \verb+\special+ ノード)や,イタリック補正に伴い挿入されるカーンは
-      挿入処理中では無視される.
+\item さらに,2つの文字の間にある行末では効果を持たないノード(例えば \verb+\special+ ノード)や,
+  イタリック補正に伴い挿入されるカーンは挿入処理中では無視される.
 %</ja>
 
 %<*en>
@@ -262,7 +261,7 @@ The followings are major changes from \pTeX:
       If you want to do so, please put an empty hbox between it instead:
 %</en>
 %<*ja>
-      もし同じことをやりたければ,空のhboxを間に挟めばよい:
+      もし同じことをやりたければ,空の水平ボックスを間に挟めばよい:
 %</ja>
 \begin{verbatim}
   ちょ\hbox{}っと
@@ -293,7 +292,7 @@ The followings are major changes from \pTeX:
 For detailed information, see Part~\ref{part-imp}.
 %</en>
 %<*ja>
-詳細については第 \ref{part-imp} 部を見よ
+詳細については第 \ref{part-imp} 部を参照
 %</ja>
 
 %<en>\subsection{Notations}
@@ -415,7 +414,7 @@ This project is hosted by SourceForge.JP.
 \def\labelenumi{$\bullet$}
 \mitemxxx{Hironori KITAGAWA}{Kazuki MAEDA}{Takayuki YATO}
 \mitemxxx{Yusuke KUROKI}{Noriyuki ABE}{Munehiro YAMAMOTO}
-\mitemxxo{Tomoaki HONDA}{Shuzaburo SAITO}
+\mitemxxx{Tomoaki HONDA}{Shuzaburo SAITO}{MA Qiyuan}
 \end{multienumerate}
 %</en>
 %<*ja>
@@ -423,7 +422,7 @@ This project is hosted by SourceForge.JP.
 \def\labelenumi{$\bullet$}
 \mitemxxx{北川 弘典}{前田 一貴}{八登 崇之}
 \mitemxxx{黒木 裕介}{阿部 紀行}{山本 宗宏}
-\mitemxxo{本田 知亮}{齋藤 修三郎}
+\mitemxxx{本田 知亮}{齋藤 修三郎}{馬 起園}
 \end{multienumerate}
 %</ja>
 
@@ -476,12 +475,12 @@ The installation methods are as follows:
 %<*ja>
 \item ソースアーカイブをダウンロードする.
 
-      ç\8f¾æ\99\82ç\82¹ã\81§ã\81¯ï¼\8c\LuaTeX-ja ã\81®å\85¬å¼\8fã\83ªã\83ªã\83¼ã\82¹ã\81¯ã\81¾ã\81 ã\81ªã\81\84ï¼\8eã\81\9dã\81®ã\81\9fã\82\81ï¼\8cGit ã\83¬ポジトリを
+      ç\8f¾æ\99\82ç\82¹ã\81§ã\81¯ï¼\8c\LuaTeX-ja ã\81®å\85¬å¼\8fã\83ªã\83ªã\83¼ã\82¹ã\81¯ã\81¾ã\81 ã\81ªã\81\84ï¼\8eã\81\9dã\81®ã\81\9fã\82\81ï¼\8cGit ã\83ªポジトリを
       次のようにすることで取得する必要がある:
 %</ja>
 \begin{verbatim}
 $ git clone git://git.sourceforge.jp/gitroot/luatex-ja/luatexja.git
-\end{verbatim} 
+\end{verbatim}
 %<*en>
       or download the archive of HEAD in \texttt{master} branch from
 %</en>
@@ -504,7 +503,7 @@ Note that the forefront of development may not be in \texttt{master} branch.
 \item Extract the archive. You will see \texttt{src/} and several other sub-directories.
 %</en>
 %<*ja>
-\item 後者の方法でアーカイブ取得したならば,それをを展開する.
+\item 後者の方法でアーカイブを取得したならば,それを展開する.
       \texttt{src/} をはじめとしたいくつかのディレクトリができるが,
       動作には \texttt{src/} 以下の内容だけで十分.
 %</ja>
@@ -536,31 +535,8 @@ Note that the forefront of development may not be in \texttt{master} branch.
 %</en>
 %<*ja>
 \item 原稿のソースファイルの文字コードは UTF-8 固定である.
-      従来日本語の文字コードとして用いられてきた EUC-JP や Shift-JIS は使用できません.
-%</ja>
-
-%<*en>
-\item May be conflict with other packages.
-
-      For example, the default setting of \textbf{JAchar} in the present
-      version does not coexist with the \Pkg{unicode-math}
-      package. Putting the following line in preamble makes that
-      mathematical symbols will be typeset correctly, but several
-      Japanese characters will be treated as an \textbf{ALchar} as
-      side-effect:
-%</en>
-%<*ja>
-\item いくつかのパッケージと衝突する.
-
-      例えば,\textbf{JAchar} の範囲の設定がデフォルトのままだと,現行の
-      バージョンでは \Pkg{unicode-math} パッケージと共存できない.
-      以下の行をプリアンブルに追加することで数学記号が正しく出るように
-      なるが,副作用としていくつかの和文文字が \textbf{ALchar} として
-      扱われるようになってしまう:
+      従来日本語の文字コードとして用いられてきた EUC-JP や Shift-JIS は使用できない.
 %</ja>
-\begin{verbatim}
-\ltjsetparameter{jacharrange={-3, -8}}
-\end{verbatim}
 \end{itemize}
 
 %<en>\subsection{Using in plain \TeX}
@@ -845,23 +821,23 @@ $5\in 素:=\{\,p\in\mathbb N:\text{$p$ is a prime}\,\}$.
 %<*en>
 We also believe that using Japanese characters as identifiers is rare,
 hence we don't describe how to change Japanese fonts in math mode in
-this chapter. For the method, please see Part~\ref{part-ref}.
+this chapter. For the method, please see Subsection~\ref{ssec-math}.
 %</en>
 %<*ja>
 また \LuaTeX-ja プロジェクトでは,和文文字が識別子として用いられることはほとんどない
 と考えており,したがってこの節では数式モード中の和文フォントを変更する方法については
-記述しない.この方法については第 \ref{part-ref} 部を参照のこと.
+記述しない.この方法については \ref{ssec-math} 節を参照のこと.
 %</ja>
 
 %<*en>
 \paragraph{plain \TeX}
 To change Japanese fonts in plain \TeX, you must use the primitive
-\verb+\jfont+. So please see Part~\ref{part-ref}.
+\verb+\jfont+. So please see Subsection~\ref{ssec-jfont}.
 %</en>
 %<*ja>
 \paragraph{plain \TeX}
 plain \TeX で和文フォントを変更するためには,\verb+\jfont+ プリミティブを用いなけれ
-ばならない.第 \ref{part-ref} 部を参照せよ
+ばならない.\ref{ssec-jfont} 節を参照
 %</ja>
 
 %<*en>
@@ -871,7 +847,7 @@ For \LaTeXe, \LuaTeX-ja adopted most of the font selection system of \pLaTeXe\ (
 %<*ja>
 \paragraph{NFSS2}
 \LaTeXe については,\LuaTeX-ja ではフォント選択システムを \pLaTeXe\ (\texttt{plfonts.dtx})
-の大部分を採用している.
+の大部分をそのまま採用している.
 %</ja>
 \begin{itemize}
 %<*en>
@@ -940,11 +916,11 @@ auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\
       fonts, \emph{or both}. For detail, see Subsection~\ref{ssub-nfsspat}.
 %</en>
 %<*ja>
-      ここで,\verb+\fontencoding{<encoding>}+は,引数により和文側か欧文
+      ここで,\verb+\fontencoding{<encoding>}+ は,引数により和文側か欧文
       側かのどちらかのエンコーディングを変更する.例えば,
-      \verb+\fontencoding{JY3}+は和文フォントのエンコーディングを
+      \verb+\fontencoding{JY3}+ は和文フォントのエンコーディングを
       \texttt{JY3}に変更し,\verb+\fontencoding{T1}+ は欧文フォント側を
-      \texttt{T1}へと変更する.\verb+\fontfamily+も引数により和文側,欧文
+      \texttt{T1}へと変更する.\verb+\fontfamily+ も引数により和文側,欧文
       側,\textbf{あるいは両方}のフォントファミリを変更する.詳細は
       \ref{ssub-nfsspat}節を参照すること.
 %</ja>
@@ -956,13 +932,14 @@ auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\
       using \verb+\DeclareFontFamily+ doesn't cause any problem.
 %</en>
 %<*ja>
-\item 和文フォントファミリの定義には \verb+\DeclareFontFamily+ の代わりに
-      \verb+\DeclareKanjiFamily+ を用いる.しかし,現在の実装では
-      \verb+\DeclareFontFamily+ を用いても問題は生じない.
+\item 和文フォントファミリの定義には \verb+\DeclareFontFamily+ の
+      代わりに \verb+\DeclareKanjiFamily+ を用いる.しかし,現在の
+      実装では \verb+\DeclareFontFamily+ を用いても問題は生じない.
 %</ja>
 \end{itemize}
 
 \subsection{fontspec}
+\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
@@ -1044,7 +1021,7 @@ feature が \textbf{JAglue} と衝突するためである(\ref{para-kern} 節
 %<*en>
 \paragraph{Caution}
 \Pkg{xunicode} package will be reloaded during the loading of \Pkg{luatexja-fontspec} package.
-However, this reloading won't work for the current version (2011/09/09,~v0.981) of 
+However, this reloading won't work for the current version (2011/09/09,~v0.981) of
 \Pkg{xunicode} package. Hence we have to patch it, using the following patch, for example:
 %</en>
 %<*ja>
@@ -1058,7 +1035,7 @@ However, this reloading won't work for the current version (2011/09/09,~v0.981)
 --- xunicode.sty.orig   2011-09-12 08:31:47.000000000 +0900
 +++ xunicode.sty        2011-11-16 22:06:17.061413113 +0900
 @@ -1475,7 +1475,11 @@
+
  \newtoks\tipasavetokens
  \newtoks\tipachecktokens
 +
@@ -1071,7 +1048,8 @@ However, this reloading won't work for the current version (2011/09/09,~v0.981)
   \def\textipa##1{##1}% prevent recursion
 \end{lstlisting}
 %<*ja>
-なお,上流で v0.984 (2011/10/14) でこの問題は修正されているそうです.
+なお,上流で v0.984 (2011/10/14) でこの問題は修正されているそうです(が,2012/03/20
+現在,まだ CTAN には上がっていない).
 %</ja>
 
 
@@ -1086,10 +1064,10 @@ parameters, you have to use commands \verb+\ltjsetparameter+ and
 \verb+\ltjgetparameter+.
 %</en>
 %<*ja>
-\LuaTeX-ja には多くのパラメータが存在する.そして \LuaTeX の振る舞いのために,
+\LuaTeX-ja には多くのパラメータが存在する.そして \LuaTeX の仕様のために,
 その多くは \TeX のレジスタにではなく,\LuaTeX-ja 独自の方法で保持されている.
-そのため,これらのパラメータを設定・取得するためには \verb+\ltjsetparameter+ と
-\verb+\ltjgetparameter+ を用いる必要がある.
+そのため,これらのパラメータを設定・取得するためには \verb+\ltjsetparameter+ と \verb+\ltjgetparameter+ を
+用いる必要がある.
 %</ja>
 
 %<en>\subsection{Editing the range of \textbf{JAchar}s}
@@ -1099,14 +1077,14 @@ parameters, you have to use commands \verb+\ltjsetparameter+ and
 To edit the range of \textbf{JAchar}s, you have to assign a non-zero
 natural number which is less than 217 to the character range first. This
 can be done by using \verb+\ltjdefcharrange+ primitive. For example, the
-next line assigns whole characters in Supplementary Multilingual Plane
+next line assigns whole characters in Supplementary Ideographic Plane
 and the character `漢' to the range number~100.
 %</en>
 %<*ja>
 \textbf{JAchar} の範囲を設定するためには,まず各文字に0より大きく217より小さい index を
 割り当てる必要がある.これには \verb+\ltjdefcharrange+ プリミティブを用いる.
-例えば,次のように書くことで追加多言語面 (SMP) にある全ての文字と `漢' が
-「100番の文字範囲」に属する設定される.
+例えば,次のように書くことで追加漢字面 (SIP) にある全ての文字と `漢' が
+「100番の文字範囲」に属するように設定される.
 %</ja>
 \begin{lstlisting}
 \ltjdefcharrange{100}{"10000-"1FFFF,`漢}
@@ -1116,21 +1094,21 @@ This assignment of numbers to ranges are always global, so you should
 not do this in the middle of a document.
 %</en>
 %<*ja>
-この文字範囲の割り当てはいつもグローバルであり,したがって文書の途中で
+この文字範囲の割り当ては常にグローバルであり,したがって文書の途中で
 この操作をするべきではない.
 %</ja>
 
 %<*en>
 If some character has been belonged to some non-zero numbered range,
-this will be overwritten by the new setting. For example, whole SMP
+this will be overwritten by the new setting. For example, whole SIP
 belong to the range~4 in the default setting of \LuaTeX-ja, and if you
-specify the above line, then SMP will belong to the range~100 and be
+specify the above line, then SIP will belong to the range~100 and be
 removed from the range~4.
 %</en>
 %<*ja>
 もし指定されたある文字がある非零番号の範囲に属していたならば,これは新しい設定で
-上書きされる.例えば,SMP は全て \LuaTeX-ja のデフォルトでは4番の文字範囲に
-属しているが,上記の指定を行えば SMP は100番に属すようになり,4番からは除かれる.
+上書きされる.例えば,SIP は全て \LuaTeX-ja のデフォルトでは4番の文字範囲に
+属しているが,上記の指定を行えば SIP は100番に属すようになり,4番からは除かれる.
 %</ja>
 
 %<*en>
@@ -1199,7 +1177,7 @@ number shows whether characters in the range is treated as
 %</en>
 %<*ja>
 以下ではこれら8つの文字範囲について記述する.番号のあとのアルファベット `J' と `A'
\81¯ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§ \textbf{JAchar} ã\81¨ã\81\97ã\81¦æ\89±ã\82\8fã\82\8cã\82\8bã\81\8bã\81©ã\81\86ã\81\8bã\82\92示ã\81\99.これらの設定は
\81¯ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§ \textbf{JAchar} ã\81\8b \textbf{ALchar} ã\81\8bã\82\92表ã\81\97ã\81¦ã\81\84ã\82\8b.これらの設定は
 \texttt{PXbase} バンドルで定義されている \texttt{prefercjk} と類似のものである.
 %</ja>
 \begin{description}
@@ -1434,7 +1412,7 @@ This range consist of the following Unicode ranges, \emph{except characters in t
 "FE10--"FE1F&縦書き形&
 "FE30--"FE4F&CJK互換形\\
 "FE50--"FE6F&小字形&
-"{20}000--"{2F}FFF&(追加多言語面)
+"{20}000--"{2F}FFF&(追加漢字面)
 %</ja>
 \end{tabular}
 \end{center}
@@ -1506,7 +1484,7 @@ The block list is indicated in Table~\ref{table-rng7}.
 \begin{itemize}
 %<*en>
 \item Glues/kerns specified in JFM. If \verb+\inhibitglue+ is issued
-      around a Japanese character, this glue will be not inserted at the
+      around a Japanese character, this glue will not be inserted at the
       place.
 %</en>
 %<*ja>
@@ -1549,8 +1527,8 @@ To use these data from JFM, set the value of \Param{kanjiskip} or
 %<*ja>
 JFM は「望ましい \Param{kanjiskip} の値」や「望ましい \Param{xkanjiskip} の値」を
 持っていることがある.
-これらのデータを使うためには,\Param{kanjiskip} や \Param{xkanjiskip} の値を
-\verb+\maxdimen+ の値に設定すればよい.
+これらのデータを使うためには,\Param{kanjiskip} や \Param{xkanjiskip} の
+値を \verb+\maxdimen+ の値に設定すればよい.
 %</ja>
 
 %<en>\subsection{Insertion Setting of \Param{xkanjiskip}}
@@ -1718,6 +1696,7 @@ For example, the following sets banner as `\texttt{filename (YYYY-MM-DD hh:mm)}'
 %<ja>\section{フォントメトリックと和文フォント}
 %<en>\subsection{\texttt{\char92jfont} primitive}
 %<ja>\subsection{\texttt{\char92jfont} プリミティブ}
+\label{ssec-jfont}
 
 %<*en>
 To load a font as a Japanese font, you must use the
@@ -1769,10 +1748,10 @@ which JFM will be used for this font by the following keys:
 指定する必要がある:
 %</ja>
 
-\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}}
+\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 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:
@@ -1906,102 +1885,179 @@ TODO: kanjiskip?
 
 %<en>\subsection{Prefix \texttt{psft}}
 %<ja>\subsection{\texttt{psft} プレフィックス}
+\label{ssec-psft}
 %<*en>
-Besides \texttt{file:}\ and \texttt{name:}\ prefixes, \texttt{psft:}\
-can be used a prefix in \verb+\jfont+ (and~\verb+\font+) primitive.
-Using this prefix, you can specify a `name-only' Japanese font which
-will be not embedded to PDF. Typical use of this prefix is to specify
+Besides \texttt{file:}\ and \texttt{name:}\ prefixes, one can use \texttt{psft:}\
+prefix in \verb+\jfont+ (and~\verb+\font+) primitive,
+to specify a `name-only' Japanese font which
+will not be embedded to PDF. Typical use of this prefix is to specify
 the `standard' Japanese fonts, namely, `Ryumin-Light' and
 `GothicBBB-Medium'. For kerning or other information, that of Kozuka
 Mincho Pr6N Regular (this is a font by Adobe Inc., and included in
-Japanese Font Packs for Adore Reader) will be used.
-
-...
-
+Japanese Font Packs for Adobe Reader) will be used.
 %</en>
 %<*ja>
 \texttt{file:} と \texttt{name:} のプレフィックスに加えて,
 \verb+\jfont+ プリミティブ(と \verb+\font+ プリミティブ)では
-\texttt{psft:} プレフィックス用いることができる.
+\texttt{psft:} プレフィックス用いることができる.
 このプレフィックスを用いることで,PDF には埋め込まれない「名前だけの」
 和文フォントを指定することができる.典型的な使い方は「標準的な」和文フォント,
 つまり `Ryumin-Light' と `GothicBBB-Medium' を指定することである.
 この場合,カーニング他の情報は小塚明朝 Pr6N Regular
 (Adobe 社によるフォントで,Adobe Reader の日本語フォントパックに含まれている)
 が用いられる.
-
-... cid key
 %</ja>
 
+\paragraph{\texttt{cid} key}
+\label{para-cid}
+
+ \texttt{cid} key, ...
 
 
 %<en>\subsection{Structure of JFM file}
 %<ja>\subsection{JFM ファイルの構造}
+
+%<*en>
 A JFM file is a Lua script which has only one function call:
+%</en>
+%<*ja>
+JFM ファイルはただ一つの関数呼び出しを含む Lua スクリプトである:
+%</ja>
 \begin{verbatim}
 luatexja.jfont.define_jfm { ... }
 \end{verbatim}
+%<*en>
 Real data are stored in the table which indicated above by
 \verb+{ ... }+.  So, the rest of this subsection are devoted to describe the
 structure of this table.  Note that all lengths in a JFM file are
 floating-point numbers in design-size unit.
+%</en>
+%<*ja>
+実際のデータは上で \verb+{ ... }+ で示されたテーブルの中に格納されている.
+以下ではこのテーブルの構造について記す.
+なお,JFM ファイル中の長さは全て design-size を単位とする浮動小数点数であることに
+注意する.
+%</ja>
+
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+
+\item[dir=<direction>]
+%<en>(required)
+%<ja>(必須)
 
-\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}}
-\item[dir=<direction>] (required)
+%<en>The direction of JFM. At the present, only \texttt{'yoko'} is supported.
+%<ja>JFM の書字方向.現時点では \texttt{'yoko'} のみがサポートされる.
 
-The direction of JFM. At the present, only \texttt{'yoko'} is supported.
+\item[zw=<length>]
+%<en>(required)
+%<ja>(必須)
 
-\item[zw=<length>] (required)
+%<en>The amount of the length of the `full-width'.
+%<ja>「全角幅」の長さ.
 
-The amount of the length of the `full-width'.
+\item[zh=<length>]
+%<en>(required)
+%<ja>(必須)
 
-\item[zh=<length>] (required)
+%<en>The amount of the length of the `full-height' (height + depth).
+%<ja>「全角高さ」(height + depth)の長さ.
 
-\item[kanjiskip=\{<natural>, <stretch>, <shrink>\}] (optional)
+\item[kanjiskip=\{<natural>, <stretch>, <shrink>\}]
+%<en>(optional)
+%<ja>(任意)
 
+%<*en>
 This field specifies the `ideal' amount of \Param{kanjiskip}. As noted
             in Subsection~\ref{subs-kskip}, if the parameter
             \Param{kanjiskip} is \verb+\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{kanjiskip} の量を指定する.\ref{subs-kskip} 節で述べたように,
+もし \Param{kanjiskip} が \verb+\maxdimen+ の値ならば,このフィールドで指定された
+値が実際には用いられる(もしこのフィールドが JFM で指定されていなければ,
+0\,pt であるものとして扱われる).<stretch> と <shrink> のフィールドも design-size
+が単位であることに注意せよ.
+%</ja>
 
+\item[xkanjiskip=\{<natural>, <stretch>, <shrink>\}]
+%<en>(optional)
+%<ja>(任意)
 
-\item[xkanjiskip=\{<natural>, <stretch>, <shrink>\}] (optional)
-
+%<*en>
 Like the \Param{kanjiskip} field, this field specifies the `ideal'
             amount of \Param{xkanjiskip}.
-
+%</en>
+%<*ja>
+\Param{kanjiskip} フィールドと同様に,\Param{xkanjiskip} の「理想的な」量を
+指定する.
+%</ja>
 \end{list}
 
+%<*en>
 Besides from above fields, a JFM file have several sub-tables those
 indices are natural numbers.  The table indexed by~$i\in\omega$ stores
 information of `character class'~$i$. At least, the character class~0 is
 always present, so each JFM file must have a sub-table whose index is
 \texttt{[0]}.  Each sub-table (its numerical index is denoted by $i$) has
 the following fields:
+%</en>
+%<*ja>
+上記のフィールドに加えて,JFM ファイルはそのインデックスが自然数であるいくつかの
+サブテーブルを持つ.インデックスが $i\in\omega$ であるテーブルは「文字クラス」$i$ の
+情報を格納する.少なくとも,文字クラス0は常に存在するので,JFM ファイルはインデックス
+が \texttt{[0]} のサブテーブルを持たなければならない.それぞれのサブテーブル
+(そのインデックスを $i$ で表わす)は以下のフィールドを持つ:
+%</ja>
 
-\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}}
-\item[chars=\{<character>, ...\}] (required except character class~0)
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+\item[chars=\{<character>, ...\}]
+%<en>(required except character class~0)
+%<ja>(文字クラス0を除いて必須)
 
+%<*en>
 This field is a list of characters which are in this character
             type~$i$. This field is not required if $i=0$, since all
             \textbf{JAchar} which are not in any character class other
-            than 0 (hence, the character class~0 contains most of
+            than 0 are in the character class 0
+             (hence, the character class~0 contains most of
             \textbf{JAchar}s). In the list, a character can be
             specified by its code number, or by the character itself
             (as a string of length~1). Moreover, there are `imaginary
             characters' which specified in the list. We will describe these later.
+%</en>
+%<*ja>
+このフィールドは文字クラス~$i$ に属する文字のリストである.このフィールドは $i=0$ の
+場合には必須ではない.なぜならば,文字クラス 0 には,0 以外の文字クラスに属するものを
+除いた全ての \textbf{JAchar} が属するからである(よって,文字クラス 0 はほとんどの
+\textbf{JAchar} を含む).このリストでは,文字はその文字コードを用いて,もしくは
+文字それ自体(長さ1の文字列)によって指定される.さらに,このリストで指定される
+「仮想的な文字」も存在する.これらについては後に記す.
+%</ja>
 
-\item[width=<length>, height=<length>, depth=<length>, italic=<length>]\ (required)
+\item[width=<length>, height=<length>, depth=<length>, italic=<length>]
+%<en>(required)
+%<ja>(必須)
 
+%<*en>
 Specify width of characters in character class~$i$, height, 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
+%</en>
+%<*ja>
+文字クラス~$i$ に属する文字の幅,高さ,深さ,イタリック補正の量を指定する.
+文字クラス~$i$ に属する全ての文字は,その幅,高さ,深さがこのフィールドで指定した
+値であるものとして扱われる.
+しかし,例外が一つある:もし \texttt{'prop'} が \texttt{width} フィールドに
+指定された場合,文字の幅はその「実際の」グリフの幅となる.
+%</ja>
 
 \item[left=<length>, down=<length>, align=<align>]\
 
+%<*en>
 These fields are for adjusting the position of the `real' glyph. Legal
             values of \texttt{align} field are \texttt{'left'},
             \texttt{'middle'} and \texttt{'right'}. If one of these
@@ -2009,11 +2065,29 @@ These fields are for adjusting the position of the `real' glyph. Legal
             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}.
+%</en>
+%<*ja>
+これらのフィールドは「実際の」グリフの位置を調整するためにある.
+\texttt{align} フィールドに指定できる値は \texttt{'left'}, \texttt{'middle'},
+\texttt{'right'} のいずれかである.もしこれら3つのフィールドのうちの1つが省かれた
+場合,\texttt{left} と \texttt{down} は 0,\texttt{align} フィールドは
+\texttt{'left'} であるものとして扱われる.
+これら3つのフィールドの意味については図\ref{fig-pos} で説明する.
+%</ja>
 
+%<*en>
 In most cases, \texttt{left} and \texttt{down} fields are~0, while
 it is not uncommon that the \texttt{align} field is \texttt{'middle'} or \texttt{'right'}.
 For example, setting the \texttt{align} field to \texttt{'right'} is practically needed
 when the current character class is the class for opening delimiters'.
+%</en>
+%<*ja>
+多くの場合,\texttt{left} と \texttt{down} は 0 である一方,
+\texttt{align} フィールドが \texttt{'middle'} や \texttt{'right'} であることは
+珍しいことではない.
+例えば,\texttt{align} フィールドを \texttt{'right'} に指定することは,
+文字クラスが開き括弧類であるときに実際必要である.
+%</ja>
 \begin{figure}[!tb]
 \begin{minipage}{0.4\textwidth}%
 \begin{center}\unitlength=10pt\small
@@ -2068,19 +2142,49 @@ when the current character class is the class for opening delimiters'.
 \end{center}
 \end{minipage}%
 \begin{minipage}{0.6\textwidth}%
+%<*en>
 Consider a node containing Japanese character whose value of the \texttt{align}
 field is \texttt{'middle'}.
+%</en>
+%<*ja>
+\texttt{align} フィールドの値が \texttt{'middle'} である和文文字を含むノードを
+考えよう.
+%</ja>
 \begin{itemize}
-\item The black rectangle is a frame of the node.
+\item
+%<*en>
+The black rectangle is a frame of the node.
 Its width, height and depth are specified by JFM.
-\item Since the \texttt{align} field is \texttt{'middle'},
+%</en>
+%<*ja>
+黒色の長方形はノードの枠である.
+その幅,高さ,深さは JFM によって指定される.
+%</ja>
+\item
+%<*en>
+Since the \texttt{align} field is \texttt{'middle'},
 the `real' glyph is centered horizontally (the green rectangle).
-\item Furthermore, the glyph is shifted according to values of fields
+%</en>
+%<*ja>
+\texttt{align} フィールドは \texttt{middle} なので,「実際の」グリフは
+水平方向の中心に配置される(緑色の長方形).
+%</ja>
+\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>
 \end{itemize}
 \end{minipage}
-\caption{The position of the `real' glyph.}
+\caption{
+%<en>The position of the `real' glyph.
+%<ja>「実際の」グリフの位置.
+}
 \label{fig-pos}
 \end{figure}
 
@@ -2091,34 +2195,54 @@ the `real' glyph is centered horizontally (the green rectangle).
 \end{list}
 
 %<*en>
-\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}}
-\item['lineend'] An ending of a line.
-\item['diffmet'] Used at a boundary between two \textbf{JAchar}s whose JFM or size is different.
-\item['boxbdd'] The beginning/ending of a horizontal box, and the beginning of a noindented paragraph.
-\item['parbdd'] The beginning of an (indented) paragraph.
-\item['jcharbdd'] A boundary between \textbf{JAchar} and anything else
-            (such as \textbf{ALchar}, kern, glue, ...).
-\item[$-1$] The left/right boundary of an inline math formula.
-\end{list}
+As described before, you can specify several `imaginary characters' in
+\texttt{chars} field. The most of these characters are regarded as the
+characters of class 0 in \pTeX.
+As a result, \LuaTeX-ja can control typesetting finer than \pTeX.
+The following is the list of `imaginary characters':
 %</en>
-
 %<*ja>
 上で説明した通り,\texttt{chars}フィールド中にはいくつかの「特殊文字」も
 指定可能である.これらは,大半が\pTeX のJFMグルーの挿入処理ではみな「文字
 クラス0の文字」として扱われていた文字であり,その結果として\pTeX より細か
 い組版調整ができるようになっている.以下でその一覧を述べる:
-\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}}
-\item['lineend'] 行の終端を表す.
+%</ja>
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+\item['lineend']
+%<en>An ending of a line.
+%<ja>行の終端を表す.
+
 \item['diffmet']
+%<en>Used at a boundary between two \textbf{JAchar}s whose JFM or size is different.
+%<ja>JFM やサイズが異なる2つの \textbf{JAchar} の間の境界として用いられる.
+
+\item['boxbdd']
+%<en>The beginning/ending of a horizontal box, and the beginning of a noindented paragraph.
+%<ja>hboxの先頭と末尾,及びインデントされていない(\verb+\noindent+で開始された)段落の先頭を表す.
 
-\item['boxbdd'] hboxの先頭と末尾,及びインデントされていない
-            (\verb+\noindent+で開始された)段落の先頭を表す.
-\item['parbdd'] 通常の(\verb+\noindent+で開始されていない)段落の先頭.
-\item['jcharbdd'] 和文文字と「その他のもの」(欧文文字,glue,kern等)との境界.
-\item[$-1$] 行中数式と地の文との境界.
+\item['parbdd']
+%<en>The beginning of an (indented) paragraph.
+%<ja>通常の(\verb+\noindent+で開始されていない)段落の先頭.
+
+\item['jcharbdd']
+%<en>A boundary between \textbf{JAchar} and anything else (such as \textbf{ALchar}, kern, glue, ...).
+%<ja>和文文字と「その他のもの」(欧文文字,glue,kern等)との境界.
+
+\item[$-1$]
+%<en>The left/right boundary of an inline math formula.
+%<ja>行中数式と地の文との境界.
 \end{list}
 
-\paragraph{\pTeX 用和文フォントメトリックの移植}
+%<en>\paragraph{Porting JFM from \pTeX}
+%<ja>\paragraph{\pTeX 用和文フォントメトリックの移植}
+
+% ToDo: English version.
+
+%<*en>
+...
+%</en>
+
+%<*ja>
 以下に,\pTeX 用和文フォントメトリックを\LuaTeX-ja用に移植する場合の注意点を挙げておく.
 \begin{itemize}
 \item 実際に出力される和文フォントのサイズがdesign sizeとなる.
@@ -2138,7 +2262,7 @@ the `real' glyph is centered horizontally (the green rectangle).
       文字クラスに関してはglue/kernの設定はしない.
 
 これは,\pTeX では,
-      hboxの先頭・末尾とインデントされていない(\verb+\noindent+で開始さ
+      水平ボックスの先頭・末尾とインデントされていない(\verb+\noindent+で開始さ
       れた)段落の先頭にはJFMグルーは入らないという仕様を実現させるためである.
 \item \pTeX の組版を再現させようというのが目的であれば以上の注意を守れば十分である.
 
@@ -2165,25 +2289,45 @@ the `real' glyph is centered horizontally (the green rectangle).
 
 %<en>\subsection{Math Font Family}
 %<ja>\subsection{数式フォントファミリ}
+\label{ssec-math}
+
+%<*en>
 \TeX\ handles fonts in math formulas by 16~font families\footnote{Omega,
-Aleph, \LuaTeX~and $\varepsilon$-\kern-.125em(u)\pTeX can handles 256~families, but
+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+.
+%</en>
+%<*ja>
+\TeX\ は数式フォントを16のファミリ\footnote{Omega, Aleph, \LuaTeX,そして
+  $\varepsilon$-\kern-.125em(u)\pTeX\ では256 の数式ファミリを扱うことができるが,
+  これをサポートするために plain \TeX と \LaTeX では外部パッケージを読み込む必要が
+  ある.}で管理し,それぞれのファミリは3つのフォントを持っている:\verb+\textfont+, \verb+\scriptfont+ そして \verb+\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.
+you can set both \verb+\fam+ and \verb+\jfam+ to the same value.
+%</en>
+%<*ja>
+\LuaTeX-ja の数式中での和文フォントの扱いも同様である.
+表 \ref{tab-math} は数式フォントファミリに対する \TeX\ のプリミティブと対応する
+ものを示している.\verb+\fam+ と \verb+\jfam+ の値の間には関係はなく,
+適切な設定の下では \verb+\fam+ と \verb+\jfam+ の両方に同じ値を設定することができる.
+%</ja>
 
 \begin{table}[!tb]
-\caption{Primitives for Japanese math fonts.}
+%<en>\caption{Primitives for Japanese math fonts.}
+%<ja>\caption{和文数式フォントに対するプリミティブ.}
 \label{tab-math}
 \begin{center}\def\{{\char`\{}\def\}{\char`\}}
 \begin{tabular}{lll}
 \toprule
-&Japanese fonts&alphabetic fonts\\
+%<en>&Japanese fonts&alphabetic fonts\\
+%<ja>&和文フォント&欧文フォント\\
 \midrule
 font family&\verb+\jfam+${}\in [0,256)$&\verb+\fam+\\
 text size&\tt\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\textfont+<fam>=<font\_cs>\\
@@ -2196,59 +2340,130 @@ scriptscript size&\tt\Param{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\ver
 
 %<en>\subsection{Callbacks}
 %<ja>\subsection{コールバック}
+
+%<*en>
 Like \LuaTeX\ itself, \LuaTeX-ja also has callbacks. These callbacks can
-be accessed via \verb+luatexbase.add_to_callback+ function and so on, as other callbacks
+be accessed via \verb+luatexbase.add_to_callback+ function and so on, as other callbacks.
+%</en>
+%<*ja>
+\LuaTeX 自体のものに加えて,\LuaTeX-ja もコールバックを持っている.
+これらのコールバックには,他のコールバックと同様に \verb+luatexbase.add_to_callback+
+関数などを用いることでアクセスすることができる.
+%</ja>
 \begin{list}{}%
 {\def\makelabel#1{\bfseries#1}}
-\item[\texttt{luatexja.load\_jfm} callback]
+%<en>\item[\texttt{luatexja.load\_jfm} callback]
+%<ja>\item[\texttt{luatexja.load\_jfm} コールバック]
+%<*en>
 With this callback you can overwrite JFMs.
 This callback is called when a new JFM is loaded.
+%</en>
+%<*ja>
+このコールバックを用いることで JFM を上書きすることができる.
+このコールバックは新しい JFM が読み込まれるときに呼び出される.
+%</ja>
 
-\begin{verbatim}
+\begin{lstlisting}[numbers=left]
 function (<table> jfm_info, <string> jfm_name)
   return <table> new_jfm_info
 end
-\end{verbatim}
+\end{lstlisting}
 
+%<*en>
 The argument \verb+jfm_info+ contains a table similar to the table in a JFM file, except
 this argument has \texttt{chars} field which contains character codes
             whose character class is not~0.
+%</en>
+%<*ja>
+引数 \verb+jfm_info+ は JFM ファイルのテーブルと似たものが格納されるが,
+クラス0を除いた文字のコードを含んだ \texttt{chars} フィールドを持つ点が異なる.
+%</ja>
 
+%<*en>
 An example of this callback is the \texttt{ltjarticle} class, with
             forcefully assigning character class~0 to \texttt{'parbdd'}
             in the JFM \texttt{jfm-min.lua}. This callback doesn't
             replace any code of \LuaTeX-ja.
+%</en>
+%<*ja>
+このコールバックの使用例は \texttt{ltjarticle} クラスにあり,
+\texttt{jfm-min.lua} 中の \texttt{'parbdd'} を強制的にクラス0に割り当てている.
+このコールバックは \LuaTeX-ja のコードを書き換えない.
+%</ja>
 
-\item[\texttt{luatexja.define\_font} callback]
+%<en>\item[\texttt{luatexja.define\_font} callback]
+%<ja>\item[\texttt{luatexja.define\_font} コールバック]
+%<*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 \texttt{luatexja.define\_font} callback is called just when new Japanese font is loaded.
-\begin{verbatim}
+%</en>
+%<*ja>
+このコールバックと次のコールバックは組をなしており,Unicode 中に固定された文字コード
+番号を持たない文字を非零の文字クラスに割り当てることができる.
+このコールバックは新しい和文フォントが読み込まれたときに呼び出される.
+%</ja>
+
+\begin{lstlisting}[numbers=left]
 function (<table> jfont_info, <number> font_number)
   return <table> new_jfont_info
 end
-\end{verbatim}
+\end{lstlisting}
 
+%<*en>
 You may assume that \verb+jfont_info+ has the following fields:
+%</en>
+%<*ja>
+\verb+jfont_info+ は以下のフィールドを持つ:
+%</ja>
 \begin{description}
-\item[\tt jfm] The index number of JFM.
-\item[\tt size] Font size in a scaled point (${}=2^{-16}\,\textrm{pt}$).
-\item[\tt var] The value specified in \texttt{jfmvar=...} at a call of \verb+\jfont+.
+\item[\tt jfm]
+%<en>The index number of JFM.
+%<ja>JFM のインデックス番号.
+
+\item[\tt size]
+%<en>Font size in a scaled point (${}=2^{-16}\,\textrm{pt}$).
+%<ja>スケールド・ポイント (${}=2^{-16}\,\textrm{pt}$) を単位としたフォントのサイズ.
+
+\item[\tt var]
+%<en>The value specified in \texttt{jfmvar=...} at a call of \verb+\jfont+.
+%<ja>\verb+\jfont+ の呼び出しの際に \texttt{jfmvar=...} で指定された値.
 \end{description}
 
+%<*en>
 The returned table \verb+new_jfont_info+ also should include these three fields.
 The \verb+font_number+ is a font number.
+%</en>
+%<*ja>
+戻り値の \verb+new_jfont_info+ テーブルもこれら3つのフィールドを含まなければならない.
+\verb+font_number+ はフォント番号である.
+%</ja>
 
+%<*en>
 A good example of this and the next callbacks is the \Pkg{luatexja-otf}
             package, supporting \verb+"AJ1-xxx"+ form for Adobe-Japan1
             CID characters in a JFM. This callback doesn't replace any
             code of \LuaTeX-ja.
+%</en>
+%<*ja>
+これと次のコールバックの良い使用例は \Pkg{luatexja-otf} パッケージであり,
+JFM 中で Adobe-Japan1 CID の文字を \verb+"AJ1-xxx"+ の形で指定するために
+用いられている.
+このコールバックは \LuaTeX-ja のコードを書き換えない.
+%</ja>
 
-
-\item[\texttt{luatexja.find\_char\_class} callback]
-This callback is called just when \LuaTeX-ja inready to determine which
+%<en>\item[\texttt{luatexja.find\_char\_class} callback]
+%<ja>\item[\texttt{luatexja.find\_char\_class} コールバック]
+%<*en>
+This callback is called just when \LuaTeX-ja is trying to determine which
             character class a character \verb+chr_code+ belongs.
 A function used in this callback should be in the following form:
+%</en>
+%<*ja>
+このコールバックは \LuaTeX-ja が \verb+chr_code+ の文字がどの文字クラスに
+属するかを決定しようとする際に呼び出される.
+このコールバックで呼び出される関数は次の形をしていなければならない:
+%</ja>
 \begin{lstlisting}[numbers=left]
 function (<number> char_class, <table> jfont_info, <number> chr_code)
   if char_class~=0 then return char_class
@@ -2259,29 +2474,73 @@ function (<number> char_class, <table> jfont_info, <number> chr_code)
 end
 \end{lstlisting}
 
+%<*en>
 The argument \verb+char_class+ is the result of \LuaTeX-ja's default
             routine or previous function calls in this callback, hence
             this argument may not be 0. Moreover, the returned
             \verb+new_char_class+ should be as same as \verb+char_class+ when \verb+char_class+
             is not~0, otherwise you will overwrite the \LuaTeX-ja's
             default routine.
+%</en>
+%<*ja>
+引数 \verb+char_class+ は \LuaTeX-ja のデフォルトルーチンか,このコールバックの
+直前の関数呼び出しの結果を含んでおり,したがってこの値は0ではないかもしれない.
+さらに,戻り値の \verb+new_char_class+ は \verb+char_class+ が非零のときには
+\verb+char_class+ の値と同じであるべきで,そうでないときは \LuaTeX-ja の
+デフォルトルーチンを書き換えることになる.
+%</ja>
 
+%<*en>
 This callback doesn't replace any code of \LuaTeX-ja.
+%</en>
+%<*ja>
+このコールバックは \LuaTeX-ja のコードを書き換えない.
+%</ja>
 
-\item[\texttt{luatexja.set\_width} callback]
+%<en>\item[\texttt{luatexja.set\_width} callback]
+%<ja>\item[\texttt{luatexja.set\_width} コールバック]
+%<*en>
 This callback is called when \LuaTeX-ja is trying to encapsule a
             \textbf{JAchar} \textit{glyph\_node}, to adjust its
             dimension and position.
+%</en>
+%<*ja>
+このコールバックは \LuaTeX-ja が \textbf{JAchar} の寸法と位置を調節するために
+その \textit{glyph\_node} をカプセル化しようとする際に呼び出される.
+%</ja>
 \begin{lstlisting}[numbers=left]
 function (<table> shift_info, <table> jfont_info, <number> char_class)
   return <table> new_shift_info
 end
 \end{lstlisting}
 
+%<*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.
+%</en>
+%<*ja>
+引数 \verb+shift_info+ と戻り値の \verb+new_shift_info+ は
+\texttt{down} と \texttt{left} のフィールドを持ち,これらの値は
+文字の下/左へのシフト量(スケールド・ポイント単位)である.
+%</ja>
 
+%<*en>
+A good example is \Pkg{test/valign.lua}.
+After loading this file, the vertical position of glyphs is automatically
+adjusted; the ratio $(\hbox{height}:\hbox{depth})$ of glyphs is adjusted
+to be that of letters in the character class~0. For example, suppose that
+\begin{itemize}
+\item The setting of the JFM: $(\hbox{height})=88x$, $(\hbox{depth})=12x$
+  (the standard values of Japanese OpenType fonts);
+\item The value of the real font: $(\hbox{height})=28y$, $(\hbox{depth})=5y$
+  (the standard values of Japanese TrueType fonts).
+\end{itemize}
+Then, the position of glyphs is shifted up by
+\[
+ \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{825}y= 0.03\dot1\dot5y.
+\]
+%</en>
 %<*ja>
 良い例が\Pkg{test/valign.lua}である.このファイルが読み込まれた状態では,
             JFM内で規定された文字クラス0の文字における$(\hbox{高
@@ -2296,7 +2555,7 @@ The argument \verb+shift_info+ and the returned \verb+new_shift_info+ have
 \[
  \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{825}y= 0.03\dot1\dot5y
 \]
\81 ã\81\91ä¸\8aã\81«ã\81\9aã\82\89ã\81\95ã\82\8cã\82\8bã\81\93ã\81¨ã\81«ã\81ªã\82\8bï¼\8c
\81 ã\81\91ä¸\8aã\81«ã\81\9aã\82\89ã\81\95ã\82\8cã\82\8bã\81\93ã\81¨ã\81«ã\81ªã\82\8bï¼\8e
 %</ja>
 \end{list}
 
@@ -2306,13 +2565,24 @@ The argument \verb+shift_info+ and the returned \verb+new_shift_info+ have
 %<ja>\section{パラメータ}
 %<en>\subsection{\texttt{\char92 ltjsetparameter} primitive}
 %<ja>\subsection{\texttt{\char92 ltjsetparameter} プリミティブ}
+
+%<*en>
 As noted before, \verb+\ltjsetparameter+ and \verb+\ltjgetparameter+ are
 primitives 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+)
 is the position of \verb+hpack_filter+ callback in the source
 of \LuaTeX, see Section~\ref{sec-para}.
+%</en>
+%<*ja>
+先に述べたように,\verb+\ltjsetparameter+ と \verb+\ltjgetparameter+ は
+\LuaTeX-ja のほとんどのパラメータにアクセスするためのプリミティブである.
+\LuaTeX-ja が \pTeX のような文法(例えば,\verb+\prebreakpenalty`)=10000+)を
+採用しない理由の一つは,\LuaTeX のソースにおける \verb+\hpack_filter+
+コールバックの位置にある.\ref{sec-para} 節を参照.
+%</ja>
 
+%<*en>
 \verb+\ltjsetparameter+ and \verb+\ltjglobalsetparameter+ are primitives
 for assigning parameters. These take one argument which is a
 \texttt{<key>=<value>} list. Allowed keys are described in the next
@@ -2324,46 +2594,105 @@ scope of assignment;
 \verb+\ltjglobalsetparameter+ does a global one.
 They also obey the value of \verb+\globaldefs+,
 like other assignment.
+%</en>
+%<*ja>
+\verb+\ltjsetparameter+ と \verb+\ltjglobalsetparameter+ はパラメータを
+指定するためのプリミティブである.これらは \texttt{<key>=<value>} のリストを
+引数としてとる.許されるキーは次の節に記述する.
+\verb+\ltjsetparameter+ と \verb+\ltjglobalsetparameter+ の違いはスコープの
+違いのみである.
+\verb+\ltjsetparameter+ はローカルな指定,\verb+\ltjglobalsetparameter+ は
+グローバルな指定を行う.
+これらは他のパラメータ指定と同様に \verb+\globaldefs+ の値に従う.
+%</ja>
 
+%<*en>
 \verb+\ltjgetparameter+ is the primitive for acquiring parameters. It
 always takes a parameter name as first argument, and also takes the
 additional argument---a character code, for example---in some cases.
+%</en>
+%<*ja>
+\verb+\ltjgetparameter+ はパラメータの値を取得するためのプリミティブであり,
+常にパラメータの名前を第一引数にとる.
+そして,いくつかの場合には加えてさらに引数(例えば文字コード)をとる.
+%</ja>
 \begin{LTXexample}
 \ltjgetparameter{differentjfm},
 \ltjgetparameter{autospacing},
 \ltjgetparameter{prebreakpenalty}{`)}.
 \end{LTXexample}
+%<*en>
 \emph{The return value of\/ {\normalfont\tt\char92ltjgetparameter} is
 always a string}. This is outputted by \texttt{tex.write()}, so any
 character other than space~`\texttt{\char32}'~(U+0020) has the category code
 12~(other), while the space has 10~(space).
+%</en>
+%<*ja>
+\textbf{{\normalfont\tt\char92ltjgetparameter} の戻り値は常に文字列である.}
+これは \texttt{tex.write()} によって出力しているためで,スペース `\texttt{\char32}'~(U+0020) を除いた文字のカテゴリーコードは全て 12~(other) となる.
+一方,スペースのカテゴリーコードは 10~(space) である.
+%</ja>
 
 %<en>\subsection{List of Parameters}
 %<ja>\subsection{パラメータ一覧}
+
+%<*en>
 The following is the list of parameters which can be specified by the
 \verb+\ltjsetparameter+ command. [\verb+\cs+] indicates the counterpart
 in \pTeX, and symbols beside each parameter has the following meaning:
+%</en>
+%<*ja>
+以下は \verb+\ltjsetparameter+ に指定することができるパラメータの一覧である.
+[\verb+\cs+] は \pTeX における対応物を示す.
+また,それぞれのパラメータの右上にある記号には次の意味がある:
+%</ja>
 \begin{itemize}
+%<*en>
 \item No mark: values at the end of the paragraph or the hbox are
       adopted in the whole paragraph/hbox.
+%</en>
+%<*ja>
+\item 記号なし:段落や水平ボックスの終端での値がその段落/水平ボックス全体で用いられる.
+%</ja>
+%<*en>
 \item `\ast' : local parameters, which can change everywhere inside a paragraph/hbox.
+%</en>
+%<*ja>
+\item `\ast':ローカルなパラメータであり,段落/水平ボックス内のどこででも値を変えることができる.
+%</ja>
+%<*en>
 \item `\dagger': assignments are always global.
+%</en>
+%<*ja>
+\item `\dagger':指定は常にグローバルになる.
+%</ja>
 \end{itemize}
 
-\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}}
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
 \item[\Param{jcharwidowpenalty}\,=<penalty>] [\verb+\jcharwidowpenalty+]
-
+%<*en>
 Penalty value for suppressing orphans. This penalty is inserted just
             after the last \textbf{JAchar} which is not regarded as a
             (Japanese) punctuation mark.
+%</en>
+%<*ja>
+パラグラフの最後の字が孤立して改行されるのを防ぐためのペナルティの値.
+このペナルティは(日本語の)句読点として扱われない最後の \textbf{JAchar} の直後に
+挿入される.
+%</ja>
 
 \item[\Param{kcatcode}\,=\{<chr\_code>,<natural number>\}]\
-
-An additional attributes having each character whose character code is <chr\_code>.
+%<*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
             whether the character is considered as a punctuation mark
             (see the description of \Param{jcharwidowpenalty} above).
-
+%</en>
+%<*ja>
+文字コードが <chr\_code> の文字が持つ付加的な属性値 (attribute).
+現在のバージョンでは,<natural number> の最下位ビットが,その文字が句読点と
+みなされるかどうかを表している(上の \Param{jcharwidowpenalty} の記述を参照).
+%</ja>
 
 \item[\Param{prebreakpenalty}\,=\{<chr\_code>,<penalty>\}] [\verb+\prebreakpenalty+]\
 %<*ja>
@@ -2397,43 +2726,76 @@ At the present version, the lowermost bit of <natural number> indicates
 という制限があったが,\LuaTeX-ja ではこれらの制限は解消されている.
 %</ja>
 
-\item[\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}] [\verb+\textfont+ in \TeX]
-\item[\Param{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}] [\verb+\scriptfont+ in \TeX]
-\item[\Param{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}] [\verb+\scriptscriptfont+ in \TeX]
+\item[\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}]
+%<en>[\verb+\textfont+ in \TeX]
+%<ja>[\TeX の \verb+\textfont+]
+\item[\Param{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}]
+%<en>[\verb+\scriptfont+ in \TeX]
+%<ja>[\TeX の \verb+\scriptfont+]
+\item[\Param{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}]
+%<en>[\verb+\scriptscriptfont+ in \TeX]
+%<ja>[\TeX の \verb+\scriptscriptfont+]
 \item[\Param{yjabaselineshift}\,=<dimen>$^\ast$]\
 \item[\Param{yalbaselineshift}\,=<dimen>$^\ast$] [\verb+\ybaselineshift+]
 
 \item[\Param{jaxspmode}\,=\{<chr\_code>,<mode>\}]
 
-Setting whether inserting  \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is <chr\_code>.
+%<*en>
+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{xkanjiskip} の
+挿入を許すかどうかの設定.
+以下の <mode> が許される:
+%</ja>
 \begin{description}
-\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited before the character, nor after the character.
-\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed before the character, but not after.
-\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed after the character, but not before.
-\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed before the character and after the character.
-This is the default value.
+%<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+.
-
+%</en>
+%<*ja>
+このパラメータは \pTeX の \verb+\inhibitxspcode+ プリミティブと似ているが,
+互換性はない.
+%</ja>
 
 \item[\Param{alxspmode}\,=\{<chr\_code>,<mode>\}] [\verb+\xspcode+]
 
+%<*en>
 Setting whether inserting \Param{xkanjiskip} is allowed before/after a
             \textbf{ALchar} whose character code is <chr\_code>.
-The followings are allowed for <mode>:
+             The followings are allowed for <mode>:
+%</en>
+%<*ja>
+文字コードが <chr\_code> の \textbf{ALchar} の前/後ろに \Param{xkanjiskip} の
+挿入を許すかどうかの設定.
+以下の <mode> が許される:
+%</ja>
 \begin{description}
-\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited
-          before the character, nor after the character.
-\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed
-          before the character, but not after.
-\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed
-          after the character, but not before.
-\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed both
-          before the character and after the character.
-This is the default value.
+%<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} use a common table, hence these two parameters are synonyms of each other.
+%</en>
+%<*ja>
+\Param{jaxspmode} と \Param{alxspmode} は共通のテーブルを用いているため,
+これら2つのパラメータは互いの異名となっていることに注意する.
+%</ja>
 
 \item[\Param{autospacing}\,=<bool>$^\ast$] [\verb+\autospacing+]
 \item[\Param{autoxspacing}\,=<bool>$^\ast$] [\verb+\autoxspacing+]
@@ -2442,8 +2804,15 @@ Note that parameters \Param{jaxspmode} and \Param{alxspmode} use a common table,
 
 \item[\Param{differentjfm}\,=<mode>$^\dagger$]
 
+%<*en>
 Specify how glues/kerns between two \textbf{JAchar}s whose JFM (or size) are different.
 The allowed arguments are the followings:
+%</en>
+%<*ja>
+JFM(もしくはサイズ)が異なる2つの \textbf{JAchar} の間にグルー/カーンをどのように
+入れるかを指定うる.
+許される値は以下の通り:
+%</ja>
 \begin{description}
 \item[\texttt{average}]
 \item[\texttt{both}]
@@ -2460,8 +2829,14 @@ The allowed arguments are the followings:
 %<ja>\section{その他のプリミティブ}
 %<en>\subsection{Primitives for Compatibility}
 %<ja>\subsection{互換プリミティブ}
+
+%<*en>
 The following primitives are implemented for compatibility with \pTeX:
-\begin{list}{}{\def\makelabel{\ttfamily\char92 }}
+%</en>
+%<*ja>
+以下のプリミティブは \pTeX との互換性のために実装されている:
+%</ja>
+\begin{list}{}{\def\makelabel{\ttfamily\char92 }\advance\leftmargin1\zw}
 \item[kuten]
 \item[jis]
 \item[euc]
@@ -2469,11 +2844,20 @@ The following primitives are implemented for compatibility with \pTeX:
 \item[ucs]
 \item[kansuji]
 \end{list}
+
 %<en>\subsection{\texttt{\char92 inhibitglue} primitive}
 %<ja>\subsection{\texttt{\char92 inhibitglue} プリミティブ}
+
+%<*en>
 The primitive \verb+\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} の挿入を抑制する.
+以下は,ボックスの始めと`あ'の間,`あ'と`ウ'の間にグルーが入る特別な JFM を用いた例で
+ある.
+%</ja>
 
 \begin{LTXexample}
 \jfont\g=psft:Ryumin-Light:jfm=test \g
@@ -2484,44 +2868,99 @@ the beginning of a box and `あ', and also between `あ' and `ウ'.
 \par\inhibitglue\hrule あoff\inhibitglue ice
 \end{LTXexample}
 
+%<*en>
 With the help of this example, we remark the specification of \verb+\inhibitglue+:
+%</en>
+%<*ja>
+この例を援用して,\verb+\inhibitglue+ の仕様について述べる.
+%</ja>
 \begin{itemize}
+%<*en>
 \item The call of \verb+\inhibitglue+ in the (internal) vertical mode is
       effective at the beginning of the next paragraph. This is realized
       by hacking \verb+\everypar+.
-\item The call of \verb+\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
-      kernings, as shown in line~4 of above example.
+%</en>
+%<*ja>
+\item \verb+\inhibitglue+ の垂直モード中での呼び出しは次の段落の始めで効力を持つ.
+  これは \verb+\everypar+ のハックによって実現されている.
+%</ja>
+
+%<*en>
+\item The call of \verb+\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
+      kernings, as shown in line~4 of above example.
+%</en>
+%<*ja>
+\item \verb+\inhibitglue+ の(制限された)水平モード中での呼び出しはその場でのみ
+  有効であり,段落の境界を乗り越えない.
+  さらに,\verb+\inhibitglue+ は上の例の4行目のようにリガチャとカーニングを
+  打ち消す.
+%</ja>
+
+%<*en>
 \item The call of \verb+\inhibitglue+ in math mode is just ignored.
+%</en>
+%<*ja>
+\item \verb+\inhibitglue+ を数式モード中で呼び出した場合はただ無視される.
+%</ja>
 \end{itemize}
 
 %<en>\section{Control Sequences for \LaTeXe}
 %<ja>\section{\LaTeXe 用のコントロールシーケンス}
+
 %<en>\subsection{Patch for NFSS2}
 %<ja>\subsection{NFSS2 へのパッチ}
 \label{ssub-nfsspat}
+
+%<*en>
 As described in Subsection~\ref{ssec-ltx}, \LuaTeX-ja simply adopted
 \texttt{plfonts.dtx} in \pLaTeXe\ for the Japanese patch for NFSS2.
 For an convenience, we will describe
 commands which are not described in Subsection~\ref{ssub-chgfnt}.
+%</en>
+%<*ja>
+\ref{ssec-ltx} 節で述べたように,\LuaTeX-ja は NFSS2 への日本語パッチである
+\pLaTeXe の \texttt{plfonts.dtx} を単純に取り入れている.
+便宜のため,ここでは \ref{ssub-chgfnt} 節で述べていなかったコマンドについて
+記述しておく.
+%</ja>
 
 \begin{cslist}%
 \item[DeclareYokoKanjiEncoding\{<encoding>\}\{<text-settings>\}\{<math-settings>\}]
+
+%<*en>
 In NFSS2 under \LuaTeX-ja, distinction between alphabetic font families
-            and Japanese font families is only made by its
-            encoding. For example, encodings OT1 and T1 are for
+            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).
+%</en>
+%<*ja>
+\LuaTeX-ja の NFSS2 においては,欧文フォントファミリと和文フォントファミリは
+そのエンコーディングからのみ作られる.
+例えば,OT1 と T1 のエンコーディングは欧文フォントファミリに対するものであり,
+和文フォントファミリはこれらのエンコーディングを持つことはできない.
+このコマンドは和文フォントファミリ(横書き用)のための新しいエンコーディングを
+定義する.
+%</ja>
 
 \item[DeclareKanjiEncodingDefaults\{<text-settings>\}\{<math-settings>\}]
 \item[DeclareKanjiSubstitution\{<encoding>\}\{<family>\}\{<series>\}\{<shape>\}]
 \item[DeclareErrorKanjiFont\{<encoding>\}\{<family>\}\{<series>\}\{<shape>\}\{<size>\}]
 
+%<*en>
 The above 3~commands are just the counterparts for \verb+DeclareFontEncodingDefaults+ and~others.
+%</en>
+%<*ja>
+上記3つのコマンドはちょうど \verb+DeclareFontEncodingDefaults+ などに対応するものである.
+%</ja>
 
 \item[reDeclareMathAlphabet\{<unified-cmd>\}\{<al-cmd>\}\{<ja-cmd>\}]
+
+% ToDo: en
+%<*ja>
 和文・欧文の数式用フォントファミリを一度に変更する命令を作成する.
 具体的には,欧文数式用フォントファミリ変更の命令<al-cmd> (\verb+\mathrm+等)と,和文数式用フォ
             ントファミリ変更の命令<ja-cmd>(\verb+\mathmc+等)の2つを同時に行う命令として
@@ -2541,6 +2980,7 @@ The above 3~commands are just the counterparts for \verb+DeclareFontEncodingDefa
 両命令の内容を再定義しても,<unified-cmd>の内容にそれは反映されない.
 \item <al-cmd>,~<ja-cmd>に\verb+\@mathrm+などと \texttt{@} をつけた命令を指定した時の動作は保証できない.
 \end{itemize}}
+%</ja>
 
 \item[DeclareRelationFont\{<ja-encoding>\}\{<ja-family>\}\{<ja-series>\}\{<ja-shape>\}\\
   \hfill\{<al-encoding>\}\{<al-family>\}\{<al-series>\}\{<al-shape>\}]
@@ -2553,47 +2993,106 @@ with respect to a Japanese font family given by the former 4~arguments.
 そのフォントに対応する「従属欧文」フォントファミリを後半の4引数により与える.
 %</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.
+%</en>
+%<*ja>
+このコマンドは \verb+\DeclareRelationFont+ とローカルな指定であることを除いて
+ほとんど同じである(\verb+\DeclareRelationFont+ はグローバル).
+%</ja>
+
 \item[userelfont]
+%<*en>
 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+.
+            \verb+\DeclareRelationFont+ or \verb+\SetRelationFont+.
 Like \verb+\fontfamily+, \verb+\selectfont+ is required to take an effect.
+%</en>
+%<*ja>
+現在の欧文フォントエンコーディング/ファミリ/…… を,
+\verb+\DeclareRelationFont+ か \verb+\SetRelationFont+ で指定された
+現在の和文フォントファミリに対応する「従属欧文」フォントファミリに変更する.
+\verb+\fontfamily+ のように,有効にするためには \verb+\selectfont+ が必要である.
+%</ja>
 
 \item[adjustbaseline]
 ...
 
 \item[fontfamily\{<family>\}]
 {\let\item\origitem
+%<*en>
 As in \LaTeXe, this command changes current font family (alphabetic, Japanese,~\emph{or both})
 to <family>. Which family will be changed is determined as follows:
+%</en>
+%<*ja>
+元々の \LaTeXe におけるものと同様に,このコマンドは現在のフォントファミリ(欧文,
+和文,\textbf{もしくは両方})を <family> に変更する.
+どのファミリが変更されるかは以下のようにして決定される:
+%</ja>
 \begin{itemize}
+%<*en>
 \item Let current encoding scheme for Japanese fonts be
       <ja-enc>. Current Japanese font family will be changed to
       <family>, if one of the following two conditions is met:
+%</en>
+%<*ja>
+\item 現在の和文フォントに対するエンコーディングが <ja-enc> であるとしよう.
+  現在の和文フォントファミリは,以下の2つの条件のうちの1つが満たされているときに
+  <family> に変更される:
+%</ja>
 \begin{itemize}
-\item The family <fam> under the encoding <ja-enc> is already defined by
+%<*en>
+\item The family <fam> under the encoding <ja-enc> has been already defined by
       \verb+\DeclareKanijFamily+.
+%</en>
+%<*ja>
+\item エンコーディング <ja-enc> におけるファミリ <fam> が既に \verb+\DeclareKanjiFamily+ によって定義されている.
+%</ja>
+%<*en>
 \item A font definition named \texttt{<enc><ja-enc>.fd} (the file name is
       all lowercase) exists.
+%</en>
+%<*ja>
+\item フォント定義ファイル \texttt{<enc><ja-enc>.fd}(ファイル名は全て小文字)が存在する.
+%</ja>
 \end{itemize}
-\item Let current encoding scheme for Japanese fonts be
+%<*en>
+\item Let current encoding scheme for alphabetic fonts be
       <al-enc>. For alphabetic font family, the criterion as above is used.
+%</en>
+%<*ja>
+\item 現在の欧文フォントに対するエンコーディングを <al-enc> とする.
+  欧文フォントファミリに対しても,上記の基準が用いられる.
+%</ja>
+%<*en>
 \item There is a case which none of the above applies, that is, the font
       family named <family> doesn't seem to be defined neither under the
       encoding <ja-enc>, nor under <al-enc>.
-
 In this case, the default family for font substitution is used for
       alphabetic and Japanese fonts. Note that current encoding will not
       be set to <family>, unlike the original implementation in \LaTeX.
+%</en>
+%<*ja>
+\item 上記のいずれもが適用されない,つまり <family> が <ja-enc> と <al-enc> の
+  どちらでも定義されないような場合がある.
+  この場合,代替フォントに用いられるデフォルトのフォントファミリが欧文フォントと
+  和文フォントに用いられる.\LaTeX のオリジナルの実装とは異なり,
+  現在のエンコーディングは <family> には設定されないことに注意する.
+%</ja>
 \end{itemize}
 }
 \end{cslist}
 
+%<*en>
 As closing this subsection, we shall introduce an example of
-\verb+SetRelationFont+ and \verb+\userelfont+:
+\verb+\SetRelationFont+ and \verb+\userelfont+:
+%</en>
+%<*ja>
+この節の終わりに,\verb+\SetRelationFont+ と \verb+\userelfont+ の例を
+紹介しておこう.
+%</ja>
 \begin{LTXexample}
 \gtfamily{}あいうabc
 \SetRelationFont{JY3}{gt}{m}{n}{OT1}{pag}{m}{n}
@@ -2603,40 +3102,128 @@ As closing this subsection, we shall introduce an example of
 
 %<en>\subsection{Cropmark/`tombow'}
 %<ja>\subsection{トンボ}
+% ToDo
 
 %<en>\section{Extensions}
 %<ja>\section{拡張}
 \subsection{\texttt{luatexja-fontspec.sty}}
 
+%<*en>
+As described in Subsection~\ref{ssec-fontspec}, this optional package
+provides the counterparts for several commands defined in the
+\Pkg{fontspec} package.
+In addition to `font features' in the original \Pkg{fontspec},
+the following `font features' specifications are allowed for
+the commands of Japanese version:
+%</en>
+%<*ja>
+\ref{ssec-fontspec} 節で述べたように,この追加パッケージは \Pkg{fontspec}
+パッケージで定義されているコマンドに対応する和文フォント用のコマンドを提供する.
+オリジナルの \Pkg{fontspec} での `font feature' に加えて,和文版のコマンドには
+以下の `font feature' を指定することができる:
+%</ja>
+
+
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+\item[JFM=<name>]
+\item[JFM-var=<name>]
+
+%<*en>
+These 2 font features correspond to \texttt{jfm} and \texttt{jfmvar} keys for
+\verb+\jfont+ primitive, respectively. See Subsection~\ref{ssec-jfont}.
+%</en>
+%<*ja>
+これらの2つはそれぞれ \verb+\jfont+ プリミティブに対する
+\texttt{jfm}, \texttt{jfmvar} キーとそれぞれ対応する.
+\ref{ssec-jfont} 節を参照.
+%</ja>
+
+\item[NoEmbed]
+%<*en>
+By specifying this font feature, you 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>
+\end{list}
+
 \subsection{\texttt{luatexja-otf.sty}}
+
+%<*en>
 This optional package supports typesetting characters in
 Adobe-Japan1. \texttt{luatexja-otf.sty} offers the following 2~low-level
 commands:
-\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}}
+%</en>
+%<*ja>
+この追加パッケージは Adobe-Japan1 の文字の出力をサポートする.
+\texttt{luatexja-otf.sty} は以下の2つの低レベルコマンドを提供する:
+%</ja>
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
 \item[\char92CID\{<number>\}]
+%<*en>
 Typeset a character whose CID number is <number>.
+%</en>
+%<*ja>
+CID 番号が <number> の文字を出力する.
+%</ja>
+
 \item[\char92UTF\{<hex\_number>\}]
+%<*en>
 Typeset a character whose character code is <hex\_number> (in hexadecimal).
 This command is similar to \verb+\char"+<hex\_number>,\ %"
 but please remind remarks below.
+%</en>
+%<*ja>
+文字コードが(16進で)<hex\_number> の文字を出力する.
+このコマンドは \verb+\char"+<hex\_number> と似ているが,下の記述に注意すること.
+%</ja>
 \end{list}
 
-\paragraph{Remarks}
+%<en>\paragraph{Remarks}
+%<ja>\paragraph{注意}
+%<*en>
 Characters by \verb+\CID+ and \verb+\UTF+ commands are different from
 ordinary characters in the following points:
+%</en>
+%<*ja>
+\verb+\CID+ と \verb+\UTF+ コマンドによって出力される文字は
+以下の点で通常の文字と異なる:
+%</ja>
 \begin{itemize}
+%<*en>
 \item Always treated as \textbf{JAchar}s.
+%</en>
+%<*ja>
+\item 常に \textbf{JAchar} として扱われる.
+%</ja>
+%<*en>
 \item Processing codes for supporting OpenType features (\textit{e.g.},
       glyph replacement and kerning) by the \Pkg{luaotfload} package
       is not performed to these characters.
+%</en>
+%<*ja>
+\item OpenType feature(例えばグリフ置換やカーニング)をサポートするための
+  \Pkg{luaotfload} パッケージのコードはこれらの文字には働かない.
+%</ja>
 \end{itemize}
 
 
-\paragraph{Additionally Syntax of JFM}
+%<en>\paragraph{Additional Syntax of JFM}
+%<ja>\paragraph{JFM への記法の追加}
+
+%<*en>
 \texttt{luatexja-otf.sty} extends the syntax of JFM; the entries of \texttt{
 chars} table in JFM now allows a string in the form
 \verb+'AJ1-xxx'+, which stands for the character
 whose CID number in Adobe-Japan1 is \verb+xxx+.
+%</en>
+%<*ja>
+\texttt{luatexja-otf.sty} は JFM の記法を拡張する.
+JFM の \texttt{chars} テーブルのエントリとして \verb+'AJ1-xxx'+ の形の文字列が
+使えるようになる.これは Adobe-Japan1 における CID 番号が \verb+xxx+ の文字を表す.
+%</ja>
 
 %<en>\part{Implementations}
 %<ja>\part{実装}
@@ -2645,91 +3232,310 @@ whose CID number in Adobe-Japan1 is \verb+xxx+.
 %<ja>\section{パラメータの保持}
 \label{sec-para}
 %<en>\subsection{Used Dimensions, Attributes and whatsit nodes}
-%<ja>\subsection{用いられる寸法レジスタ,属性レジスタ,whatsit ノード}
+%<ja>\subsection{\LuaTeX-ja で用いられる寸法レジスタ,属性レジスタ,whatsit ノード}
+
+%<*en>
 Here the following is the list of dimensions and attributes which are used in \LuaTeX-ja.
+%</en>
+%<*ja>
+以下は \LuaTeX-ja で用いられる寸法レジスタ (dimension),属性レジスタ (attribute) の
+リストである.
+%</ja>
 \begin{list}{}{%
-\def\makelabel{\ttfamily}
+\def\makelabel{\ttfamily}\advance\leftmargin1\zw
 \def\dim#1{\item[\char92 #1\ \textrm{(dimension)}]}
 \def\attr#1{\item[\char92 #1\ \textrm{(attribute)}]}
 }
 
 \dim{jQ}
+%<*en>
 As explained in Subsection~\ref{ssec-plain}, \verb+\jQ+ is equal to
                        $1\,\textrm{Q}=0.25\,\textrm{mm}$, where `Q'~(also called `級') is
                        a unit used in Japanese phototypesetting. So one should not change the value of this dimension.
+%</en>
+%<*ja>
+\ref{ssec-plain} 節で述べたように,\verb+\jQ+ は $1\,\textrm{Q}=0.25\,\textrm{mm}$
+と等しい.ここで,`Q'(もしくは「級」)は日本の写植で用いられる単位である.したがって,
+この寸法レジスタの値を変更してはならない.
+%</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 a synonym of \verb+\jQ+.
-\dim{ltj@zw} A temporal register for the `full-width' of current Japanese font.
-\dim{ltj@zh} A temporal register for the `full-height' (usually the sum of height of imaginary body and its depth) of current Japanese font.
-\attr{jfam} Current number of Japanese font family for math formulas.
-\attr{ltj@curjfnt} The font index of current Japanese font.
-\attr{ltj@charclass} The character class of Japanese \textit{glyph\_node}.
-\attr{ltj@yablshift} The amount of shifting the baseline of alphabetic
-                       fonts in scaled point ($2^{-16}\,\textrm{pt}$).
-\attr{ltj@ykblshift} The amount of shifting the baseline of Japanese
-                       fonts in scaled point ($2^{-16}\,\textrm{pt}$).
-\attr{ltj@autospc} Whether the auto insertion of \Param{kanjiskip} is allowed at the node.
-\attr{ltj@autoxspc} Whether the auto insertion of \Param{xkanjiskip} is allowed at the node.
-\attr{ltj@icflag} An attribute for distinguishing `kinds' of a node. One of the following value is
-                       assigned to this attribute:
+%</en>
+%<*ja>
+同じく写植で用いられていた単位として「歯」があり,これは $0.25\,\textrm{mm}$ と
+等しい.\verb+\jH+ は \verb+\jQ+ の別名である.
+%</ja>
+
+\dim{ltj@zw}
+%<*en>
+A temporal register for the `full-width' of current Japanese font.
+%</en>
+%<*ja>
+現在の和文フォントの「全角幅」を保持する一時レジスタ.
+%</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.
+%</en>
+%<*ja>
+現在の和文フォントの「全角高さ」(通常,高さと深さの和)を保持する一時レジスタ.
+%</ja>
+
+\attr{jfam}
+%<*en>
+Current number of Japanese font family for math formulas.
+%</en>
+%<*ja>
+数式用の和文フォントファミリの現在の番号.
+%</ja>
+
+\attr{ltj@curjfnt}
+%<*en>
+The font index of current Japanese font.
+%</en>
+%<*ja>
+現在の和文フォントのフォント番号.
+%</ja>
+
+\attr{ltj@charclass}
+%<*en>
+The character class of Japanese \textit{glyph\_node}.
+%</en>
+%<*ja>
+和文文字の \textit{glyph\_node} の文字クラス.
+%</ja>
+
+\attr{ltj@yablshift}
+%<*en>
+The amount of shifting the baseline of alphabetic fonts in scaled point ($2^{-16}\,\textrm{pt}$).
+%</en>
+%<*ja>
+スケールド・ポイント ($2^{-16}\,\textrm{pt}$) を単位とした欧文フォントのベースラインの移動量.
+%</ja>
+
+\attr{ltj@ykblshift}
+%<*en>
+The amount of shifting the baseline of Japanese fonts in scaled point ($2^{-16}\,\textrm{pt}$).
+%</en>
+%<*ja>
+スケールド・ポイント ($2^{-16}\,\textrm{pt}$) を単位とした和文フォントのベースラインの移動量.
+%</ja>
+
+\attr{ltj@autospc}
+%<*en>
+Whether the auto insertion of \Param{kanjiskip} is allowed at the node.
+%</en>
+%<*ja>
+そのノードで \Param{kanjiskip} の自動挿入が許されるかどうか.
+%</ja>
+
+\attr{ltj@autoxspc}
+%<*en>
+Whether the auto insertion of \Param{xkanjiskip} is allowed at the node.
+%</en>
+%<*ja>
+そのノードで \Param{xkanjiskip} の自動挿入が許されるかどうか.
+%</ja>
+
+\attr{ltj@icflag}
+%<*en>
+An attribute for distinguishing `kinds' of a node. One of the following value is
+assigned to this attribute:
+%</en>
+%<*ja>
+ノードの「種類」を区別するための属性.以下のうちのひとつが値として割り当てられる:
+%</ja>
 \begin{description}
-\item[\textit{italic} (1)] Glues from an italic correction
+\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{xkanjiskip}.
+%</en>
+%<*ja>
+イタリック補正 (\verb+\/+) によるグルー.このグルーの由来の区別(\verb+\kern+ か
+\verb+\/+ か)は \Param{xkanjiskip} の挿入過程において必要になる.
+%</ja>
+
 \item[\textit{packed} (2)]
-\item[\textit{kinsoku} (3)] Penalties inserted for the word-wrapping  process of Japanese characters (\emph{kinsoku}).
-\item[\textit{from\_jfm} (4)] Glues/kerns from JFM.
-\item[\textit{line\_end} (5)] Kerns for ...
-\item[\textit{kanji\_skip} (6)] Glues for \Param{kanjiskip}.
-\item[\textit{xkanji\_skip} (7)] Glues for \Param{xkanjiskip}.
-\item[\textit{processed} (8)] Nodes which is already processed by ...
-\item[\textit{ic\_processed} (9)] Glues from an italic correction, but also already processed.
-\item[\textit{boxbdd} (15)] Glues/kerns that inserted just the beginning or the ending of an hbox or a paragraph.
+
+\item[\textit{kinsoku} (3)]
+%<*en>
+Penalties inserted for the word-wrapping process of Japanese characters (\emph{kinsoku}).
+%</en>
+%<*ja>
+和文文字のワードラップ過程において挿入されたペナルティ (\emph{kinsoku}).
+%</ja>
+
+\item[\textit{from\_jfm} (4)]
+%<*en>
+Glues/kerns from JFM.
+%</en>
+%<*ja>
+JFM 由来のグルー/カーン.
+%</ja>
+
+\item[\textit{line\_end} (5)]
+%<*en>
+Kerns for ...
+%</en>
+%<*ja>
+カーン ...
+%</ja>
+
+\item[\textit{kanji\_skip} (6)]
+%<*en>
+Glues for \Param{kanjiskip}.
+%</en>
+%<*ja>
+\Param{kanjiskip} のグルー.
+%</ja>
+
+\item[\textit{xkanji\_skip} (7)]
+%<*en>
+Glues for \Param{xkanjiskip}.
+%</en>
+%<*ja>
+\Param{xkanjiskip} のグルー.
+%</ja>
+
+\item[\textit{processed} (8)]
+%<*en>
+Nodes which is already processed by ...
+%</en>
+%<*ja>
+... によって既に処理されたノード.
+%</ja>
+
+\item[\textit{ic\_processed} (9)]
+%<*en>
+Glues from an italic correction, but also already processed.
+%</en>
+%<*ja>
+イタリック補正に由来するグルーであるが,まだ処理されていないもの.
+%</ja>
+
+\item[\textit{boxbdd} (15)]
+%<*en>
+Glues/kerns that inserted just the beginning or the ending of an hbox or a paragraph.
+%</en>
+%<*ja>
+ある水平ボックスか段落の最初か最後に挿入されたグルー/カーン.
+%</ja>
 \end{description}
-\attr{ltj@kcat$i$} Where $i$~is a natural number which is less than~7.
+
+\attr{ltj@kcat$i$}
+%<*en>
+Where $i$~is a natural number which is less than~7.
 These 7~attributes store bit~vectors indicating which character block is regarded as a block of \textbf{JAchar}s.
+%</en>
+%<*ja>
+$i$ は7より小さい自然数.
+これら7つの属性レジスタは,どの文字ブロックが \textbf{JAchar} のブロックとして
+扱われるかを示すビットベクトルを格納する.
+%</ja>
 \end{list}
 
+%<*en>
 Furthermore, \LuaTeX-ja uses several `user-defined' whatsit nodes for
 typesetting. All those nodes store a natural number (hence the node's
 \texttt{type} is 100).
+%</en>
+%<*ja>
+さらに,\LuaTeX-ja はいくつかの「ユーザ定義の」whatsit ノードを組版に用いる.
+これらの全てのノードは自然数を格納している(したがってノードの \texttt{type} は
+100 である).
+%</ja>
 \begin{description}
-\item[30111] Nodes for indicating that \verb+\inhibitglue+ is
+\item[30111]
+%<*en>
+Nodes for indicating that \verb+\inhibitglue+ is
           specified. The \texttt{value} field of these nodes doesn't matter.
-\item[30112] Nodes for \LuaTeX-ja's stack system (see the next
+%</en>
+%<*ja>
+\verb+\inhibitglue+ が指定されたことを示すノード.これらのノードの
+\texttt{value} フィールド は意味を持たない.
+%</ja>
+
+\item[30112]
+%<*en>
+Nodes for \LuaTeX-ja's stack system (see the next
           subsection). The \texttt{value} field of these nodes is
           current group.
-\item[30113] Nodes for Japanese Characters which the callback process of
+%</en>
+%<*ja>
+\LuaTeX-ja のスタックシステム(次の節を参照)のためのノード.
+これらのノードの \texttt{value} フィールドは現在のグループを表す.
+%</ja>
+
+\item[30113]
+%<*en>
+Nodes for Japanese Characters which the callback process of
           luaotfload won't be applied, and the character code is
           stored in the \texttt{value} field. Each node having this
           \verb+user_id+ is converted to a `glyph\_node' \emph{after}
           the callback process of luaotfload.
+%</en>
+%<*ja>
+luaotfload のコールバックによる処理が適用されない和文文字のためのノードで,
+\texttt{value} フィールドにその文字のコードが格納されている.
+この \verb+user_id+ を持つノードはそれぞれが luaotfload のコールバックの処理の
+\textbf{後で} `glyph\_node' に変換される.
+%</ja>
 \end{description}
+%<*en>
 These whatsits will be removed during the process of inserting \textbf{JAglue}s.
+%</en>
+%<*ja>
+これらの whatsit ノードは \textbf{JAglue} の挿入処理の間に取り除かれる.
+%</ja>
 
 %<en>\subsection{Stack System of \LuaTeX-ja}
 %<ja>\subsection{\LuaTeX-ja のスタックシステム}
 \label{ssec-stack}
-\paragraph{Background}
+
+%<en>\paragraph{Background}
+%<ja>\paragraph{背景}
+%<*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
+are stored in it. To clarify the reason, imagine the parameter
 \Param{kanjiskip} is stored by a skip, and consider the following
 source:
+%</en>
+%<*ja>
+\LuaTeX-ja は独自のスタックシステムを持ち,\LuaTeX-ja のほとんどのパラメータは
+これを用いて保持されている.その理由を明らかにするために,
+\Param{kanjiskip} パラメータがスキップレジスタで保持されているとし,
+以下のコードを考えてみよう:
+%</ja>
 \begin{LTXexample}
 \ltjsetparameter{kanjiskip=0pt}ふがふが.%
 \setbox0=\hbox{\ltjsetparameter{kanjiskip=5pt}ほげほげ}
 \box0.ぴよぴよ\par
 \end{LTXexample}
 
+%<*en>
 As described in Part~\ref{part-ref}, the only effective value of
 \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{part-ref} 部で述べたように,ある水平ボックスの中で効力を持つ
+\Param{kanjiskip} の値は最後に現れた値のみであり,したがってボックス全体に適用される
+\Param{kanjiskip} は 5\,pt であるべきである.しかし,\LuaTeX の実装のために,
+この `5\,pt' はどのコールバックからも知ることはできない.
+\texttt{tex/packaging.w}(これは \LuaTeX のソースファイルである)の中に,
+以下のコードがある:
+%</ja>
 \begin{lstlisting}
 void package(int c)
 {
@@ -2747,16 +3553,33 @@ void package(int c)
                                  saved_level(1), grp, saved_level(2));
         subtype(cur_box) = HLIST_SUBTYPE_HBOX;
 \end{lstlisting}
+%<*en>
 Notice that \verb+unsave+ is executed \emph{before}
 \verb+filtered_hpack+ (this is where \verb+hpack_filter+ callback is
 executed): so `5\,pt' in the above source is orphaned at
-\texttt+unsave+, and hence it can't be accessed from \verb+hpack_filter+
+\verb+unsave+, and hence it can't be accessed from \verb+hpack_filter+
 callback.
+%</en>
+%<*ja>
+\verb+unsave+ が \verb+filtered_hpack+(これは \verb+hpack_filter+ コールバックが
+実行されるところである)の\textbf{前に}実行されていることに注意する.
+したがって,上記ソース中で `5\,pt' は \verb+unsave+ のところで捨てられ,
+\verb+hpack_filter+ からはアクセスすることができない.
+%</ja>
+
+%<en>\paragraph{The method}
+%<ja>\paragraph{解決法}
 
-\paragraph{The method}
+%<*en>
 The code of stack system is based on that in a post of Dev-luatex mailing list\footnote{%
 \texttt{[Dev-luatex] tex.currentgrouplevel}, a post at 2008/8/19 by Jonathan Sauer.}.
+%</en>
+%<*ja>
+スタックシステムのコードは Dev-luatex メーリングリスト\footnote{\texttt{[Dev-luatex] tex.currentgrouplevel} の Jonathan Sauer による 2008/8/19 の投稿.}のある投稿を
+ベースにしている.
+%</ja>
 
+%<*en>
 These are two \TeX\ count registers for maintaining information:
 \verb+\ltj@@stack+ for the stack level, and \verb+\ltj@@group@level+ for
 the \TeX's group level when the last assignment was done.  Parameters
@@ -2764,7 +3587,18 @@ 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
 previous level is copied.
+%</en>
+%<*ja>
+情報を保持するために,2つの \TeX の整数レジスタを用いている:
+\verb+\ltj@@stack+ でスタックレベル,\verb+\ltj@@group@level+ で最後の代入が
+なされた時点での \TeX のグループレベルを保持している.
+パラメータは \texttt{charprop\_stack\_table} という名前のひとつの大きなテーブルに
+格納される.ここで,\texttt{charprop\_stack\_table[$i$]} はスタックレベル $i$ の
+データを格納している.もし新しいスタックレベルが \verb+\ltjsetparameter+ によって
+生成されたら,前のレベルの全てのデータがコピーされる.
+%</ja>
 
+%<*en>
 To resolve the problem mentioned in `Background' above, \LuaTeX-ja uses
 another thing: When a new stack level is about to be created, a whatsit
 node whose type, subtype and value are 44~(\textit{user\_defined}),
@@ -2773,34 +3607,77 @@ list (we refer this node by \textit{stack\_flag}). This enables us to
 know whether assignment is done just inside a hbox. Suppose that the
 stack level is~$s$ and the \TeX's group level is~$t$ just after the hbox
 group, then:
+%</en>
+%<*ja>
+上の「背景」で述べた問題を解決するために,\LuaTeX-ja ではもう一つの手法を導入する:
+新しいスタックレベルが生成されようとするとき,type, subtype, value がそれぞれ
+44~(\textit{user\_defined}), 30112,そして現在のグループレベルである whatsit ノード
+を現在のリストに付け加える(このノードを \textit{stack\_flag} とする).
+これにより,ある水平ボックスの中で代入がなされたかどうかを知ることが可能
+となる.スタックレベルを $s$,その水平ボックスグループの直後の \TeX のグループレベルを
+$t$ とすると:
+%</ja>
 \begin{itemize}
-\item If there is no \textit{stack\_flag} node in the list of hbox, then
+%<*en>
+\item If there is no \textit{stack\_flag} node in the list of the hbox, then
       no assignment was occurred inside the hbox. Hence values of
       parameters at the end of the hbox are stored in the stack
       level~$s$.
+%</en>
+%<*ja>
+\item もしその水平ボックスのリストの中に \textit{stack\_flag} ノードがなければ,
+  水平ボックスの中では代入は起こらなかったということになる.
+  したがって,その水平ボックスの終わりにおけるパラメータの値はスタックレベル $s$ に
+  格納されている.
+%</ja>
+
+%<*en>
 \item If there is a \textit{stack\_flag} node whose value is~$t+1$, then
       an assignment was occurred just inside the hbox group. Hence
       values of parameters at the end of the hbox are stored in the
       stack level~$s+1$.
+%</en>
+%<*ja>
+\item もし値が $t+1$ の \textit{stack\_flag} ノードがあれば,その
+  水平ボックスグループの中で代入が起こったことになる.
+  したがって,水平ボックスの終わりにおけるパラメータの値はスタックレベル $s+1$ に
+  格納されている.
+%</ja>
+
+%<*en>
 \item If there are \textit{stack\_flag} nodes but all of their values
       are more than~$t+1$, then an assignment was occurred in the box,
       but it is done is `more internal' group. Hence values of
       parameters at the end of the hbox are stored in the stack
       level~$s$.
+%</en>
+%<*ja>
+\item もし \textit{stack\_flag} ノードがあるがそれらの値が全て $t+1$ より大きい
+  場合,そのボックスの中で代入が起こったが,それは「より内部の」グループで
+  起こったということになる.したがって,水平ボックスの終わりでのパラメータの
+  値はスタックレベル $s$ に格納されている.
+%</ja>
 \end{itemize}
 
+%<*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+.
 This problem is resolved by using
 \hbox{\verb+\directlua{tex.globaldefs=0}+} (this assignment is local).
-
+%</en>
+%<*ja>
+このトリックを正しく働かせるためには,\verb+\ltj@@stack+ と \verb+\ltj@@group@level+ への
+代入は \verb+\globaldefs+ の値によらず常にローカルでなければならないことに注意する.
+この問題は \hbox{\verb+\directlua{tex.globaldefs=0}+}(この代入は常にローカル)を
+用いることで解決している.
+%</ja>
 
 %<en>\section{Linebreak after Japanese Character}
 %<ja>\section{和文文字直後の改行}
 \label{sec-lbreak}
 %<en>\subsection{Reference: Behavior in \pTeX}
-%<ja>\subsection{参考: \pTeX の挙動}
+%<ja>\subsection{参考: \pTeX の動作}
 %<*en>
 In~\pTeX, a line break after a Japanese character doesn't emit a space,
 since words are not separated by spaces in Japanese writings. However,
@@ -2880,7 +3757,7 @@ after `beginning/ending of a group' characters.
 
 
 %<en>\subsection{Behavior in \LuaTeX-ja}
-%<ja>\subsection{\LuaTeX-ja の挙動}
+%<ja>\subsection{\LuaTeX-ja の動作}
 %<*en>
 States in the input processor of \LuaTeX\ is the same as that of \TeX,
 and they can't be customized by any callbacks. Hence, we can only use
 \begin{itemize}
 \item JFMグルーの挿入は,和文文字を表すトークンを元に水平リストに(文字を表す)<char\_node>を
 追加する過程で行われる.
-\item \Param{xkanjiskip}の挿入は,hboxへのパッケージングや行分割前に行われる.
+\item \Param{xkanjiskip}の挿入は,水平ボックスへのパッケージングや行分割前に行われる.
 \item \Param{kanjiskip}はノードとしては挿入されない.パッケージングや行分割の計算時に
 「和文文字を表す2つの<char\_node>の間には\Param{kanjiskip}がある」ものとみなされる.
 \end{itemize}
-しかし,\LuaTeX-jaでは,hboxへのパッケージングや行分割前に全ての
+しかし,\LuaTeX-jaでは,水平ボックスへのパッケージングや行分割前に全ての
 \textbf{JAglue},即ちJFMグルー・\Param{xkanjiskip}・\Param{kanjiskip}の
 3種類を一度に挿入することになっている.これは,\LuaTeX において欧文の合字・
 カーニング処理がノードベースになったことに対応する変更である.
@@ -3009,6 +3886,8 @@ u
 %<en>\subsection{definition of a `cluster'}
 %<ja>\subsection{「クラスタ」の定義}
 
+\def\OA{$\text{\sf O}_{\text{\sf A}}$}
+\def\OB{$\text{\sf O}_{\text{\sf B}}$}
 \begin{defn}
 A \emph{cluster} is a list of consecutive nodes in one of the following forms,
 with the \textit{id} of it:
@@ -3021,8 +3900,8 @@ with the \textit{id} of it:
       The \textit{id} is \textit{id\_math}.
 \item A \textit{glyph\_node}~$p$ with nodes which relate with it:
 \begin{enumerate}
-\item A kern for the italic correction of~$p$. 
-\item An accent attached to $p$ by \verb+\accent+. 
+\item A kern for the italic correction of~$p$.
+\item An accent attached to $p$ by \verb+\accent+.
 \end{enumerate}
 \[
 \overbrace{%
@@ -3033,7 +3912,7 @@ with the \textit{id} of it:
 \end{array}\right\}\longrightarrow
 \Node{kern}{$\mathit{subtype}=2$}}^{\text{(a)}}
 \longrightarrow
-\Node{glyph}{$p$}\longrightarrow 
+\Node{glyph}{$p$}\longrightarrow
 \overbrace{%
 \Node{kern}{italic corr.}}^{\text{(b)}}
 \]
@@ -3041,7 +3920,7 @@ with the \textit{id} of it:
 The \textit{id} is \textit{id\_jglyph} or
 \textit{id\_glyph}, according to whether the \textit{glyph\_node}
 represents a Japanese character or not.
-\item An box-like node, that is, an hbox, an vbox, an rule (\verb+\vrule+) and an \textit{unset\_node}.
+\item An box-like node, that is, an hbox, a vbox, a rule (\verb+\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.
@@ -3054,10 +3933,13 @@ We denote a cluster by \textit{Np}, \textit{Nq} and \textit{Nr}.
 
 以降は日本語.
 
-次に,$\mathit{Np}.\mathit{id}$の意味を述べるとともに,
+\paragraph{\textit{id}の意味}
+$\mathit{Np}.\mathit{id}$の意味を述べるとともに,
 「先頭の文字」を表す\textit{glyph\_node}~$\mathit{Np}.\mathit{head}$と,
 「最後の文字」を表す\textit{glyph\_node}~$\mathit{Np}.\mathit{tail}$を次のように定義する.
-
+直感的に言うと,\textit{Np}は$\mathit{Np}.\mathit{head}$で始まり$\mathit{Np}.\mathit{tail}$で終わるような単語,
+と見做すことができる.これら$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$は
+説明用に準備した概念であって,実際の Lua コード中にそのように書かれているわけではないことに注意.
 
 \begin{description}
 \item[\textit{id\_jglyph}] 和文文字.\\
@@ -3074,12 +3956,10 @@ $\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$は,その和文文字
 と再帰的に検索していってたどり着いた\textit{glyph\_node}である.
 \item $\mathit{Np}.\mathit{last}$は,同様に末尾→末尾→と検索してたどり着いた\textit{glyph\_node}である.
 \end{itemize}
-
-
 \item[\textit{id\_math}] インライン数式.\\
 便宜的に,$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$ともに
 「文字コード$-1$の欧文文字」とおく.
-\item[\textit{id\_hlist}] 縦方向にシフトされていない hbox.\\
+\item[\textit{id\_hlist}] 縦方向にシフトされていない水平ボックス.\\
 この場合,$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$はそれぞれ$p$の内容を表すリストの,
 先頭・末尾のノードである.
 \begin{itemize}
@@ -3088,15 +3968,16 @@ $\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$は,その和文文字
 \hbox{\hbox{abc}...\hbox{\lower1pt\hbox{xyz}}}
 \end{verbatim}
 のように,$p$の内容が別の hbox で開始・終了している可能性も十分あり得る.そのような場合,
-$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$の算出は,\textbf{垂直方向にシフトされていない} hbox 
+$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$の算出は,\textbf{垂直方向にシフトされていない}水平ボックス
 場合だけ内部を再帰的に探索する.例えば上の例では,$\mathit{Np}.\mathit{head}$は文字「a」を表すノードであり,
-一方$\mathit{Np}.\mathit{tail}$は垂直方向にシフトされた hbox,\verb+\lower1pt\hbox{xyz}+に対応するノードである.
+一方$\mathit{Np}.\mathit{tail}$は垂直方向にシフトされた水平ボックス,\verb+\lower1pt\hbox{xyz}+に対応するノードである.
 \item また,先頭にアクセント付きの文字がきたり,末尾にイタリック補正用の kern が
 来ることもあり得る.この場合は,クラスタの定義のところにもあったように,それらは無視して算出を行う.
 \item 最初・最後のノードが合字によって作られた\textit{glyph\_node}のときは,それぞれに対して\textit{id\_glyph}%
 と同様に再帰的に構成要素をたどっていく.
 \end{itemize}
-\item[\textit{id\_pbox}] 「既に処理された」ノードのリスト.\\
+\item[\textit{id\_pbox}] 「既に処理された」ノードのリストであり,これらのノードが二度処理を受けないために
+まとめて1つのクラスタとして取り扱うだけである.
 \textit{id\_hlist}と同じ方法で$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$を算出する,
 \item[\textit{id\_disc}] discretionary break (\verb+\discretionary{pre}{post}{nobreak}+).\\
 \textit{id\_hlist}と同じ方法で$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$を算出するが,
@@ -3108,7 +3989,434 @@ $\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$の算出は,\textbf{
 \item[他] 以上にない\textit{id}に対しても,$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$の算出は無意味.
 \end{description}
 
-\subsection{クラスタ間のグルー:概観}
+\paragraph{クラスタの別の分類}
+さらに,JFMグルー挿入処理の実際の説明により便利なように,\textit{id}とは別のクラスタの分類を行っておく.
+挿入処理では2つの隣り合ったクラスタの間に
+空白等の実際の挿入を行うことは前に書いたが,ここでの説明では,問題にしているクラスタ\textit{Np}は「後ろ側」のクラスタである
+とする.「前側」のクラスタについては,以下の説明で\textit{head}が\textit{last}に置き換わることに注意すること.
+\begin{description}
+\item[和文A] リスト中に直接出現している和文文字.
+\textit{id}が\textit{id\_jglyph}であるか,\\
+\textit{id}が\textit{id\_pbox}であって$\mathit{Np}.\mathit{head}$が\textbf{JAchar}であるとき.
+
+\item[和文B] リスト中の水平ボックスの中身の先頭として出現した和文文字.和文Aとの違いは,これの前に
+JFMグルーの挿入が行われない(\Param{xkanjiskip},~\Param{kanjiskip}は入り得る)ことである.\\
+\textit{id}が\textit{id\_hlist}か\textit{id\_disc}であって$\mathit{Np}.\mathit{head}$が\textbf{JAchar}であるとき.
+
+\item[欧文] リスト中に直接/水平ボックスの中身として出現している欧文文字.次の3つの場合が該当:
+\begin{itemize}
+\item \textit{id}が\textit{id\_glyph}である.
+\item \textit{id}が\textit{id\_math}である.
+\item \textit{id}が\textit{id\_pbox}か\textit{id\_hlist}か\textit{id\_disc}であって,$\mathit{Np}.\mathit{head}$が\textbf{ALchar}.
+\end{itemize}
+\item[箱] box,またはそれに類似するもの.次の2つが該当:
+\begin{itemize}
+\item \textit{id}が\textit{id\_pbox}か\textit{id\_hlist}か\textit{id\_disc}であって,$\mathit{Np}.\mathit{head}$が\textit{glyph\_node}でない.
+\item \textit{id}が\textit{id\_box\_like}である.
+\end{itemize}
+
+\end{description}
+
+\subsection{段落/水平ボックスの先頭や末尾}
+\paragraph{先頭部の処理}
+まず,段落/水平ボックスの一番最初にあるクラスタ\textit{Np}を探索する.
+水平ボックスの場合は何の問題もないが,段落の場合では以下のノード達を事前に読み飛ばしておく:
+\begin{center}
+\verb+\parindent+由来の水平ボックス ($\mathit{subtype}=3$),及び\textit{subtype}が44~(\textit{user\_defined})でない
+ようなwhatsit.
+\end{center}
+これは,\verb+\parindent+由来の水平ボックスがクラスタを構成しないようにするためである.
+
+次に,\textit{Np}の直前に空白$g$を必要なら挿入する:
+\begin{enumerate}
+\item この処理が働くような\textit{Np}は\textsf{和文A}である.
+\item 問題のリストが字下げありの段落(\verb+\parindent+由来の水平ボックスあり)の場合は,
+この空白$g$は「文字コード\texttt{'parbdd'}の文字」と\textit{Np}の間に入るglue/kernである.
+\item そうでないとき(\verb+noindent+で開始された段落や水平ボックス)は,
+$g$は「文字コード\texttt{'boxbdd'}の文字」と\textit{Np}の間に入るglue/kernである.
+\end{enumerate}
+ただし,もし$g$がglueであった場合,この挿入によって\textit{Np}による行分割が新たに可能になるべきではない.
+そこで,以下の場合には,$g$の直前に\verb+\penalty10000+を挿入する:
+\begin{itemize}
+\item 問題にしているリストが段落であり,かつ
+\item \textit{Np}の前には予めペナルティがなく,$g$はglue.
+\end{itemize}
+
+\paragraph{末尾の処理}
+末尾の処理は,問題のリストが段落のものか水平ボックスのものかによって異なる.
+後者の場合は容易い:最後のクラスタを\textit{Nq}とおくと,\textit{Nq}と「文字コード\texttt{'boxbdd'}の文字」の間に入るglue/kernを,
+\textit{Nq}の直後に挿入するのみである.
+
+一方.前者(段落)の場合は,リストの末尾は常に\verb+\penalty10000+と,
+\verb+\parfillskip+由来のグルーが存在する.よって,最後のクラスタ\textit{Np}は
+この\verb+\parfillskip+由来のグルーとなり,実質的な中身の最後はその1つ前のクラスタ\textit{Nq}となる.
+\begin{enumerate}
+\item まず\textit{Nq}の直後に(後に述べる)\textsf{line-end~[E]}によって定まる空白を挿入する.
+\item 次に,段落の最後の「通常の和文文字${}+{}$句点」が独立した行となるのを防ぐために,
+\Param{jcharwidowpenalty}の値の分だけ適切な場所のペナルティを増やす.
+
+ペナルティ量を増やす場所は,\textit{head}が\textbf{JAchar}であり,かつその文字の\Param{kcatcode}が偶数であるような
+最後のクラスタの直前にあるものたちである\footnote{大雑把に言えば,\Param{kcatcode}が奇数であるような\textbf{JAchar}
+を約物として考えていることになる.\Param{kcatcode}の最下位ビットはこの\Param{jcharwidowpenalty}用にのみ利用される.}.
+\end{enumerate}
+
+\subsection{概観と典型例:2つの「和文A」の場合}
+先に述べたように,2つの隣り合ったクラスタ,\textit{Nq}と\textit{Np}の間には,
+ペナルティ,\verb+\vadjust+,whatsitなど,行組版には関係しないものがある.模式的に表すと,
+\[
+ \Node{cluster}{\textit{Nq}}\longrightarrow
+\overbrace{
+\Node{penalty}{$p$}\longrightarrow \cdots\longrightarrow \Node{whatsit}{}}^{(a)}
+\longrightarrow \Node{cluster}{\textit{Np}}
+\]
+のようになっている.間の(a)に相当する部分には,何のノードもない場合ももちろんあり得る.
+そうして,JFMグルー挿入後には,この2クラスタ間は次のようになる:
+\[
+ \Node{cluster}{\textit{Nq}}\longrightarrow\Node{kern}{左空白}\longrightarrow
+\overbrace{
+\Node{penalty}{$p+x$}\longrightarrow \cdots\longrightarrow \Node{whatsit}{}}^{(a)}
+\longrightarrow \Node{glue or kern}{右空白}\longrightarrow \Node{cluster}{\textit{Np}}
+\]
+
+以後,\textbf{典型的な例として,クラスタ\textit{Nq}と\textit{Np}が共に\textsf{\textmd{和文A}}である場合を見ていこう,}
+この場合が全ての場合の基本となる.
+
+\paragraph{「右空白」の算出}
+まず,「右空白」にあたる量を算出する.通常はこれが,隣り合った2つの和文文字間に入る空白量となる.
+\begin{description}
+\item[JFM由来{[M]}] JFMの文字クラス指定によって入る空白を以下によって求める.この段階で空白量が未定義(未指定)だった場合,
+      デフォルト値\Param{kanjiskip}を採用することとなるので,次へ.
+\begin{enumerate}
+\item もし両クラスタの間で\verb+\inhibitglue+が実行されていた場合(証としてwhatsitノードが自動挿入される),
+      代わりに\Param{kanjiskip}が挿入されることとなる.次へ.
+\item \textit{Nq}と\textit{Np}が同じJFM・同じ\texttt{jfmvar}キー・同じサイズの和文フォントであったならば,
+      共通に使っているJFM内で挿入される空白 (glue or kern) が決まっているか調べる.
+\item 1.でも2.でもない場合は,\textit{Nq}と\textit{Np}が違うJFM/\texttt{jfmvar}/サイズである.
+この場合,まず
+\[
+\vcenter{\halign{\hfil$#:={}$&(\inhibitglue#\inhibitglue)\cr
+gb&\textit{Nq}と「文字コードが{\tt'diffmet'}の文字」との間に入るglue/kern\cr
+ga&「文字コードが{\tt'diffmet'}の文字」と\textit{Np}との間に入るglue/kern\cr
+}}
+\]
+として,左側由来・右側由来の空白 (glue/kern) を(それぞれのJFMから)求める.
+$\mathit{ga}$と$\mathit{gb}$のどちらか片方が未定義であるならば,定義されている側の値をそのまま採用する.
+もし$\mathit{ga}$と$\mathit{gb}$が両方決まっているならば,両者の値を平均\footnote{\Param{differentjfm}パラメタの
+値によって,「大きい方」「小さい方」「合計」に変えることができる.}した値を採用する.
+\end{enumerate}
+
+例えば,
+\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
+\end{verbatim}
+という3フォントを考え,
+\[
+ \overbrace{\Node{glyph}{{\tt\char92 foo}, `あ'}}^{p}
+\longrightarrow \overbrace{\Node{glyph}{{\tt\char92 bar}, `い'}}^{q}
+\longrightarrow \overbrace{\Node{glyph}{{\tt\char92 baz}, `う'}}^{r}
+\]
+という3ノードを考える(それぞれ単独でクラスタをなす).
+この場合,$p$と$q$の間は,実フォントが異なるにもかかわらず(2)の状況となる一方で,
+$q$と$r$の間は(実フォントが同じなのに)\texttt{jfmvar}キーの内容が異なるので(3)の状況となる.
+\item[\Param{kanjiskip}~{[K]}] 上の[M]において空白が定まらなかった場合,
+\Param{kanjiskip}の値を以下で定め,それを「右空白」として採用する.
+この段階においては,\verb+\inhibitglue+は効力を持たないため,
+結果として,2つの和文文字間には常に何らかのglue/kernが挿入されることとなる.
+\begin{enumerate}
+\item 両クラスタ(厳密には$\mathit{Nq}.\mathit{tail}$,$\mathit{Np}.\mathit{head}$)の中身の文字コードに対する
+\Param{autospacing}パラメタが両方ともfalseだった場合は,長さ0のglueとする.
+\item ユーザ側から見た\Param{kanjiskip}パラメタの自然長が${\tt \char92 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}
+\end{description}
+\paragraph{「左空白」の算出とそれに伴う補正}
+次に,「左空白」にあたる量を算出する:
+\begin{description}
+\item[line-end~{[E]}]
+\textit{Nq}と\textit{Np}の間で行分割が起きたときに,
+\textit{Nq}と行末の間に入る空白である.ぶら下げ組の組版などに用いられることを期待している.
+\begin{enumerate}
+\item 既に算出した「右空白」がkernである場合は,「左空白」は挿入されない.
+\item 「右空白」がglueか未定義(長さ0のglueとみなす)の場合は,「左空白」は
+\textit{Nq}と「文字コード\texttt{'lineend'}の文字」との間に入るkernとして,JFMから決定される.
+\item 2.で決まった「左空白」の長さが0でなければ,その分だけ先ほど算出した「右空白」の自然長を引く.
+\end{enumerate}
+\end{description}
+\paragraph{禁則用ペナルティの挿入}
+まず,
+\[
+ 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$の
+算出では単純な整数の加減算を行う.
+
+$a$は禁則処理用に\textit{Nq}と\textit{Np}の間に加えられるべきペナルティ量である.
+\begin{description}
+\item[P-normal~{[PN]}]
+\textit{Nq}と\textit{Np}の間の(a)部分にペナルティ(\textit{penalty\_node})があれば処理は簡単である:
+それらの各ノードにおいて,ペナルティ値を($\pm 10000$を無限大として扱いつつ)$a$だけ増加させればよい.
+また,$10000 + (-10000) = 0$としている.
+
+少々困るのは,(a)部分にペナルティが存在していない場合である.
+直感的に,補正すべき量$a$が0でないとき,その値をもつ\textit{penalty\_node}を作って
+「右空白」の(もし未定義なら\textit{Np}の)直前に挿入……
+ということになるが,実際には僅かにこれより複雑である.
+\begin{itemize}
+\item 「右空白」がkernであるとき,
+それは「\textit{Nq}と\textit{Np}の間で改行は許されない」ことを意図している.そのため,
+この場合は$a\neq 0$であってもペナルティの挿入はしない.
+\item 「左空白」がkernとしてきっちり定義されている時(このとき,「右空白」はkernでない),
+この「左空白」の直後での行分割を許容しないといけないので,$a=0$であっても
+\textit{penalty\_node}を作って挿入する.
+\item 以上のどれでもないときは,$a\neq 0$ならば\textit{penalty\_node}を作って挿入する.
+\end{itemize}
+\end{description}
+
+\def\gkf#1#2#3{\sf$\displaystyle\vphantom{\Bigg(}%
+  \frac{\hbox to 1\zw{#1}\hbox to 4.5\zw{\hss #2}}{\hbox{#3}}$}
+\begin{table}[t]
+\caption{Summary of JFM glues}
+\label{tab-jfmglue}
+\begin{center}
+\small
+\begin{tabular}{>{\sf}c|cccccc}
+\toprule
+{\bf\textit{Np}}↓&\sf 和文A&\sf 和文B&\sf 欧文&\sf 箱&\sf glue&\sf kern\\\midrule
+和文A&
+\gkf{E}{M→K}{PN}&
+\gkf{---}{\OA →K}{PN}&
+\gkf{---}{\OA →X}{PN}&
+\gkf{---}{\OA}{PA}&
+\gkf{---}{\OA}{PN}&
+\gkf{---}{\OA}{PS}\\
+和文B&
+\gkf{E}{\OB→K}{PA}&
+\gkf{---}{K}{PS}&
+\gkf{---}{X}{PS}\\
+欧文&
+\gkf{E}{\OB →X}{PA}&
+\gkf{---}{X}{PS}\cr
+箱&\gkf{E}{\OB}{PA}\\
+glue&\gkf{E}{\OB}{PN}\\
+kern&\gkf{E}{\OB}{PS}\\
+\bottomrule
+\end{tabular}
+\end{center}
+\begin{quote}
+Here {\small\gkf{E}{M→K}{PN}} means that
+\begin{enumerate}
+\item To determine the `right-space', \LuaTeX-ja first attempts by the method `\textsf{JFM-origin~[M]}'.
+If this attempt fails, \LuaTeX-ja use the method `\textsf{\Param{kanjiskip}~[K]}'.
+\item The `left space' between \textit{Nq}~and~\textit{Np} is determined by the method `\textsf{line-end~[E]}'.
+\item \LuaTeX-ja adopts the method `\textsf{P-normal~[PN]}' to adjust the penalty between two clusters for \emph{kinsoku shori}.
+\end{enumerate}
+\end{quote}
+\end{table}
+
+\subsection{その他の場合}
+本節の内容は表\ref{tab-jfmglue}にまとめてある.
+
+\paragraph{和文Aと欧文の間}
+\textit{Nq}が\textsf{和文A}で,\textit{Np}が\textsf{欧文}の場合,JFMグルー挿入処理は次のようにして行われる.
+\begin{itemize}
+\item 「右空白」については,まず以下に述べる\textsf{Boundary-B~[\OB]}により空白を決定しようと試みる.
+それが失敗した場合は,\textsf{\Param{xkanjiskip}~[X]}によって定める.
+\item 「左空白」については,既に述べた\textsf{line-end~[E]}をそのまま採用する.それに伴う「右空白」の補正も同じ.
+\item 禁則用ペナルティも,以前述べた\textsf{P-normal~[PN]}と同じである.
+\end{itemize}
+\begin{description}
+\item[Boundary-B~{[\OB]}] 和文文字と「和文でないもの」との間に入る空白を以下によって求め,
+未定義でなければそれを「右空白」として採用する.
+\textsf{JFM-origin~[M]}の変種と考えて良い.
+これによって定まる空白の典型例は,和文の閉じ括弧と欧文文字の間に入る半角アキである.
+\begin{enumerate}
+\item もし両クラスタの間で\verb+\inhibitglue+が実行されていた場合(証としてwhatsitノードが自動挿入される),次へ.
+\item そうでなければ,
+\textit{Nq}と「文字コードが{\tt'jcharbdd'}の文字」との間に入るglue/kernとして定まる.
+\end{enumerate}
+\item[\Param{xkanjiskip}~{[X]}]
+この段階では,\textsf{\Param{kanjiskip}~[K]}のときと同じように,
+\Param{xkanjiskip}の値を以下で定め,それを「右空白」として採用する.
+この段階で\verb+\inhibitglue+は効力を持たないのも同じである.
+\begin{enumerate}
+\item 以下のいずれかの場合は,\Param{xkanjiskip}の挿入は抑止される.しかし,実際には行分割を許容するために,長さ0のglueを採用する:
+\begin{itemize}
+\item 両クラスタにおいて,それらの中身の文字コードに対する\Param{autoxspacing}パラメタが共にfalseである.
+\item \textit{Nq}の中身の文字コードについて,「直後への\Param{xkanjiskip}の挿入」が禁止されている
+(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが2以上).
+\item \textit{Np}の中身の文字コードについて,「直前への\Param{xkanjiskip}の挿入」が禁止されている
+(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが偶数).
+\end{itemize}
+\item ユーザ側から見た\Param{xkanjiskip}パラメタの自然長が${\tt \char92 maxdimen}=(2^{30}-1)\,{\rm sp}$で
+なければ,\Param{xkanjiskip}パラメタの値を持つglueを採用する.
+\item 2.でない場合は,\textit{Nq}, \textit{Np}(\textsf{和文A}/\textsf{和文B}なのは片方だけ)
+で使われているJFMに指定されている\Param{xkanjiskip}の値を用いる.
+\end{enumerate}
+\end{description}
+
+\paragraph{欧文と和文Aの間}
+\textit{Nq}が\textsf{欧文}で,\textit{Np}が\textsf{和文A}の場合,JFMグルー挿入処理は上の場合とほぼ同じである.
+\textsf{和文A}のクラスタが逆になるので,\textsf{Boundary-A~[\OA]}の部分が変わるだけ.
+\begin{itemize}
+\item 「右空白」については,まず以下に述べる\textsf{Boundary-A~[\OA]}により空白を決定しようと試みる.
+それが失敗した場合は,\textsf{\Param{xkanjiskip}~[X]}によって定める.
+\item \textit{Nq}が和文でないので,「左空白」は算出されない.
+\item 禁則用ペナルティは,以前述べた\textsf{P-normal~[PN]}と同じである.
+\end{itemize}
+\begin{description}
+\item[Boundary-A~{[\OA]}] 「和文でないもの」と和文文字との間に入る空白を以下によって求め,
+未定義でなければそれを「右空白」として採用する.
+\textsf{JFM-origin~[M]}の変種と考えて良い.
+これによって定まる空白の典型例は,欧文文字と和文の開き括弧との間に入る半角アキである.
+\begin{enumerate}
+\item もし両クラスタの間で\verb+\inhibitglue+が実行されていた場合(証としてwhatsitノードが自動挿入される),次へ.
+\item そうでなければ,
+「文字コードが{\tt'jcharbdd'}の文字」と\textit{Np}との間に入るglue/kernとして定まる.
+\end{enumerate}
+\end{description}
+
+\paragraph{和文Aと箱・glue・kernの間}
+\textit{Nq}が\textsf{和文A}で,\textit{Np}が\textsf{箱}・glue・kernのいずれかであった場合,
+両者の間に挿入されるJFMグルーについては同じ処理である.しかし,そこでの行分割に対する仕様が異なるので,
+ペナルティの挿入処理は若干異なったものとなっている.
+
+\begin{itemize}
+\item 「右空白」については,既に述べた\textsf{Boundary-B~[\OB]}により空白を決定しようと試みる.
+それが失敗した場合は,「右空白」は挿入されない.
+\item 「左空白」については,既に述べた\textsf{line-end~[E]}の算出方法をそのまま採用する.それに伴う「右空白」の補正も同じ.
+\item 禁則用ペナルティの処理は,後ろのクラスタ\textit{Np}の種類によって異なる.
+なお,$\mathit{Np}.\mathit{head}$は無意味であるから,
+「$\mathit{Np}.\mathit{head}$に対する\Param{prebreakpenalty}の値」は0とみなされる.言い換えれば,
+\[
+ a:=(\text{\textit{Nq}{\footnotemark}の文字に対する\Param{postbreakpenalty}の値}).
+\]
+\begin{description}
+\item[箱] \textit{Np}が\textsf{箱}であった場合は,両クラスタの間での行分割は
+(明示的に両クラスタの間に\verb+\penalty10000+があった場合を除き)いつも許容される.そのため,
+ペナルティ処理は,後に述べる\textsf{P-allow~[PA]}が\textsf{P-normal~[PN]}の代わりに用いられる.
+\item[glue] \textit{Np}がglueの場合,ペナルティ処理は\textsf{P-normal~[PN]}を用いる.
+\item[kern] \textit{Np}がkernであった場合は,両クラスタの間での行分割は
+(明示的に両クラスタの間にペナルティがあった場合を除き)許容されない.
+ペナルティ処理は,後に述べる\textsf{P-suppress~[PS]}を使う.
+\end{description}
+これらの\textsf{P-normal~[PN]},\textsf{P-allow~[PA]},\textsf{P-suppress~[PS]}の違いは,
+\textit{Nq}と\textit{Np}の間(以前の図だと(a)の部分)にペナルティが存在しない場合にのみ存在する.
+\end{itemize}
+
+\begin{description}
+\item[P-allow~{[PA]}]
+\textit{Nq}と\textit{Np}の間の(a)部分にペナルティがあれば,\textsf{P-normal~[PN]}と同様に,
+それらの各ノードにおいてペナルティ値を$a$だけ増加させる.
+
+(a)部分にペナルティが存在していない場合,
+\LuaTeX-ja は\textit{Nq}と\textit{Np}の間の行分割を可能にしようとする.
+そのために,以下の場合に$a$をもつ\textit{penalty\_node}を作って
+「右空白」の(もし未定義なら\textit{Np}の)直前に挿入する:
+\begin{itemize}
+\item 「右空白」がglueでない(kernか未定義)であるとき.
+\item 「左空白」がkernとしてきっちり定義されている時.
+\end{itemize}
+
+\item[P-suppress~{[PS]}]
+\textit{Nq}と\textit{Np}の間の(a)部分にペナルティがあれば,\textsf{P-normal~[PN]}と同様に,
+それらの各ノードにおいてペナルティ値を$a$だけ増加させる.
+
+(a)部分にペナルティが存在していない場合,
+\textit{Nq}と\textit{Np}の間の行分割は元々不可能のはずだったのであるが,
+\LuaTeX-ja はそれをわざわざ行分割可能にはしない.
+そのため,「右空白」がglueであれば,その直前に\verb+\penalty10000+を挿入する.
+\end{description}
+
+なお,「右空白」はkern,「左空白」は未定義の
+\[
+ \overbrace{\Node{glyph}{`あ'}}^{\mathit{Nq}}\longrightarrow \overbrace{\Node{glue}{1\,pt}}^{\mathit{Np}}
+\]
+のような状況を考える.
+このとき,$a$,即ち「あ」の\Param{postbreakpenalty}がいかなる値であっても,
+この2クラスタ間は最終的に
+\begin{equation}
+ \overbrace{\Node{glyph}{`あ'}}^{\mathit{Nq}}\longrightarrow
+\Node{kern}{右空白}\longrightarrow \overbrace{\Node{glue}{1\,pt}}^{\mathit{Np}}
+\label{eq-gref}
+\end{equation}
+となり,$a$分のペナルティは挿入されないことに注意して欲しい.
+\Param{postbreakpenalty}は($a$は)殆どの場合が非負の値と考えられ,そのような場合では
+\eqref{eq-gref}と
+\[
+ \overbrace{\Node{glyph}{`あ'}}^{\mathit{Nq}}\longrightarrow
+\Node{penalty}{$a$}\longrightarrow
+\Node{kern}{右空白}\longrightarrow \overbrace{\Node{glue}{1\,pt}}^{\mathit{Np}}
+\]
+との間に差異は生じない%
+\footnote{kern$\rightarrow$glueが1つの行分割可能点(行分割に伴うペナルティは0)
+であるため,たとえ$a=10000$であっても,\textit{Nq}と\textit{Np}の間で行分割を禁止することはできない.}.
+
+\paragraph{箱・glue・kernと和文Aの間}
+\textit{Np}が\textsf{箱}・glue・kernのいずれかで,\textit{Np}が\textsf{和文A}であった場合は,
+すぐ上の(\textit{Nq}と\textit{Np}の順序が逆になっている)場合とほぼ同じであるが,「左空白」がなくなることにのみ注意.
+\begin{itemize}
+\item 「右空白」については,既に述べた\textsf{Boundary-A~[\OA]}により空白を決定しようと試みる.
+それが失敗した場合は,「右空白」は挿入されない.
+\item \textit{Nq}が和文でないので,「左空白」は算出されない.
+\item 禁則用ペナルティの処理は,\textit{Nq}の種類によって異なる.
+$\mathit{Nq}.\mathit{tail}$は無意味なので,
+\[
+ a:=(\text{\textit{Np}{\footnotemark}の文字に対する\Param{prebreakpenalty}の値}).
+\]
+\begin{description}
+\item[箱] \textit{Nq}が\textsf{箱}の場合は,\textsf{P-allow~[PA]}を用いる.
+\item[glue] \textit{Nq}がglueの場合は,\textsf{P-normal~[PN]}を用いる.
+\item[kern] \textit{Nq}がkernの場合は,\textsf{P-suppress~[PS]}を用いる.
+\end{description}
+\end{itemize}
+
+\paragraph{和文Aと和文Bの違い}
+先に述べたように,\textsf{和文B}は水平ボックスの中身の先頭(or 末尾)として出現している
+和文文字である.リスト内に直接ノードとして現れている和文文字(\textsf{和文A})との違いは,
+\begin{itemize}
+\item \textsf{和文B}に対しては,JFMの文字クラス指定から定まる空白
+\textsf{JFM-origin~[M]},\textsf{Boundary-A~[\OA]},\textsf{Boundary-B~[\OB]})の挿入は行われない.
+「左空白」の算出も行われない.例えば,
+\begin{itemize}
+\item 片方が\textsf{和文A},もう片方が\textsf{和文B}のクラスタの場合,
+\textsf{Boundary-A~[\OA]}または\textsf{Boundary-B~[\OB]}の挿入を試み,それがダメなら
+\Param{kanjiskip}~\textsf{[K]}の挿入を行う.
+\item \textsf{和文B}の2つのクラスタの間には,\Param{kanjiskip}~\textsf{[K]}が自動的に入る.
+\end{itemize}
+\item \textsf{和文B}と箱・glue・kernが隣接したとき(どちらが前かは関係ない),間にJFMグルー・ペナルティの挿入は一切しない.
+\item \textsf{和文B}と\textsf{和文B},また\textsf{和文B}と\textsf{欧文}とが隣接した時は,禁則用ペナルティ挿入処理は
+\textsf{P-suppress~[PS]}が用いられる.
+\item \textsf{和文B}の文字に対する\Param{prebreakpenalty},~\Param{postbreakpenalty}の値は使われず,0として計算される.
+\end{itemize}
+
+
+次が具体例である:
+\begin{LTXexample}
+あ.\inhibitglue A\\
+\hbox{あ.}A\\
+あ.A
+\end{LTXexample}
+\begin{itemize}
+\item 1行目の\verb+\inhibitglue+は\textsf{Boundary-B~[\OB]}の処理のみを抑止するので,ピリオドと「A」の間には
+\Param{xkanjiskip}(四分アキ)が入ることに注意.
+\item 2行目のピリオドと「A」の間においては,前者が\textsf{和文B}となる(水平ボックスの中身の末尾として登場しているから)ので,
+そもそも\textsf{Boundary-B~[\OB]}の処理は行われない.よって,\Param{xkanjiskip}が入ることとなる.
+\item 3行目では,ピリオドの属するクラスタは\textsf{和文A}である.これによって,
+ピリオドと「A」の間には\textsf{Boundary-B~[\OB]}由来の半角アキが入ることになる.
+\end{itemize}
 
+\section{psft}
 
+\begin{thebibliography}{99}
+  \addcontentsline{toc}{section}{\refname}
+\bibitem{texbytopic}
+Victor Eijkhout,  \emph{\TeX\ by Topic, A \TeX nician's Reference}, Addison-Wesley, 1992.
+\end{thebibliography}
 \end{document}