OSDN Git Service

Merge branch 'kmaeda-ltjclasses'
[luatex-ja/luatexja.git] / doc / manual.dtx
index 0bfa617..4ae38f1 100644 (file)
@@ -2,24 +2,26 @@
 
 %<*en>
 \documentclass[a4paper,titlepage]{article}
-\usepackage[margin=20mm]{geometry}
+\usepackage[margin=20mm,footskip=5mm]{geometry}
 %</en>
 %<*ja>
 \documentclass[a4paper,titlepage]{bxjsarticle}
-\setpagelayout*{margin=20mm}
+\setpagelayout*{margin=20mm,footskip=5mm}
 \def\headfont{\normalfont\bfseries}
 % \def\headfont{\sffamily\gtfamily} is needed in ordinal documents
+% This document cannot typeset in ltjsclasses (conflict with showexpl?)
 %</ja>
 
-\usepackage{amsmath,amssymb,xcolor,pict2e,multienum,amsthm}
+\usepackage{amsmath,amssymb,xcolor,pict2e,multienum,amsthm,float}
 \usepackage{booktabs,listings,lltjlisting,showexpl,multicol}
 \usepackage{luatexja-otf}
-\usepackage[unicode=true]{hyperref}
+\usepackage[unicode=false]{hyperref}
 \usepackage[all]{xy}
 \SelectTips{cm}{}
 
 \DeclareRobustCommand\eTeX{\ensuremath{\varepsilon}-\kern-.125em\TeX}
 \DeclareRobustCommand\LuaTeX{Lua\TeX}
+\DeclareRobustCommand\pdfTeX{pdf\TeX}
 \DeclareRobustCommand\pTeX{p\kern-.05em\TeX}
 \DeclareRobustCommand\upTeX{p\kern-.05em\TeX}
 \DeclareRobustCommand\pLaTeX{p\kern-.05em\LaTeX}
 \theoremstyle{definition}
 \newtheorem{defn}{Definition}
 
+\newenvironment{cslist}{%
+  \leftskip2em\parindent=0pt\def\makelabel##1{{\tt\char92##1}}
+  \def\{{\char`\{}\def\}{\char`\}}
+  \let\origitem=\item
+  \def\item[##1]{\par\smallskip\par\hskip-\leftskip\makelabel{##1}\par}
+}{}
+
 \makeatletter
 \long\def\@makecaption#1#2{%
   \vskip\abovecaptionskip
@@ -57,6 +66,9 @@
 }
 
 \parskip=\smallskipamount
+\protected\def\Param#1{\textsf{#1}} % parameter name
+\protected\def\Pkg#1{\underline{\smash{\texttt{#1}}}} % packages/classes
+
 \begin{document}
 \catcode`\<=13
 \def<#1>{{\normalfont\rm\itshape$\langle$#1$\rangle$}}
@@ -90,6 +102,7 @@ Japanese documents when using \LuaTeX.
 %</ja>
 
 \subsection{Backgrounds}
+%<*en>
 Traditionally, ASCII \pTeX, an extension of \TeX, and its derivatives
 are used to typeset Japanese documents in \TeX. \pTeX\ is an engine
 extension of \TeX: so it can produce high-quality Japanese documents
@@ -108,13 +121,50 @@ using Lua `callbacks', users can customize the internal processing of
 \LuaTeX. So there is no need to modify sources of engines to
 support Japanese typesetting: to do this, we only have to write Lua
 scripts for appropriate callbacks.
-
+%</en>
+%<*ja>
+従来,「\TeX を用いて日本語組版を行う」といったとき,エンジンとしては
+ASCII \pTeX やそれの拡張物が用いられることが一般的であった.\pTeX は\TeX
+のエンジン拡張であり,(少々仕様上不便な点はあるものの)商業印刷の分野に
+も用いられるほどの高品質な日本語組版を可能としている.だが,それは弱点に
+もなってしまった:\pTeX という(組版的に)満足なものがあったため,海外で
+行われている数々の\TeX の拡張──例えば\eTeX や\pdfTeX ──や,TrueType,
+OpenType, Unicodeといった計算機で日本語を扱う際の状況の変化に追従すること
+を怠ってしまったのだ.
+
+ここ数年,若干状況は改善されてきた.現在手に入る大半の\pTeX バイナリでは
+外部UTF-8入力が利用可能となり,さらにUnicode化を推進し,\pTeX の内部処理
+までUnicode化した\upTeX も開発されている.また,\pTeX に\eTeX 拡張をマー
+ジした\epTeX も登場し,\TeX\ Live\ 2011では\pLaTeX が\epTeX の上で動作す
+るようになった.だが,\pdfTeX 拡張(pdf直接出力やmicro-typesetting)を
+\pTeX に対応させようという動きはなく,海外とのgapは未だにあるのが現状であ
+る.
+
+しかし,\LuaTeX の登場で,状況は大きく変わることになった.Luaコードで
+`callback'を書くことにより,\LuaTeX の内部処理に割り込みをかけることが可
+能となった.これは,エンジン拡張という真似をしなくても,Luaコードとそれに
+関する\TeX マクロを書けば,エンジン拡張とほぼ同程度のことができるようになっ
+たということを意味する.\LuaTeX-jaは,このアプローチによってLuaコード・
+\TeX マクロによって日本語組版を\LuaTeX の上で実現させようという目的で開発
+が始まったパッケージである.
+%</ja>
 
 \subsection{Major Changes from \pTeX}
+%<*en>
 The \LuaTeX-ja package is under much influence of \pTeX\ engine. The initial
 target of development was to implement features of \pTeX. However,
 \emph{\LuaTeX-ja is not a just porting of \pTeX; unnatural
 specifications/behaviors of \pTeX\ were not adopted}.
+%</en>
+
+%<*ja>
+\LuaTeX-jaは,\pTeX に多大な影響を受けている.初期の開発目標は,\pTeX の機
+能をLuaコードにより実装することであった.しかし,開発が進むにつれ,\pTeX
+の完全な移植は不可能であり,また\pTeX における実装がいささか不可解になっ
+ているような状況も発見された.そのため,\textbf{\LuaTeX-ja は,もはや
+\pTeX の完全な移植は目標とはしない.\pTeX における不自然な仕様・挙動があ
+れば,そこは積極的に改める.}
+%</ja>
 
 The followings are major changes from \pTeX:
 \begin{itemize}
@@ -160,9 +210,11 @@ In this document, the following terms and notations are used:
 \end{itemize}
 We say `alphabetic fonts' for fonts used in \textbf{ALchar}, and `Japanese fonts' for fonts used in \textbf{JAchar}.
 
-\item A word in a sans-serif font (like \textsf{prebreakpenalty})
-      represents an internal parameter for Japanese typesetting, and it
+\item A word in a sans-serif font (like \Param{prebreakpenalty})
+      means an internal parameter for Japanese typesetting, and it
       is used as a key in \verb+\ltjsetparameter+ command.
+\item A word in typewriter font with underline (like \Pkg{fontspec})
+      means a package of a class of \LaTeX.
 \item The word `primitive' is used not only for primitives in \LuaTeX,
       but also for control sequences that defined in the core module of
       \LuaTeX-ja.
@@ -179,12 +231,23 @@ We say `alphabetic fonts' for fonts used in \textbf{ALchar}, and `Japanese fonts
 This project is hosted by SourceForge.JP.
 
 \paragraph{Members}\ 
+%<*en>
+\begin{multienumerate}
+\def\labelenumi{$\bullet$}
+\mitemxxx{Hironori KITAGAWA}{Kazuki MAEDA}{Takayuki YATO}
+\mitemxxx{Yusuke KUROKI}{Noriyuki ABE}{Munehiro YAMAMOTO}
+\mitemx{Tomoaki HONDA}
+\end{multienumerate}
+%</en>
+%<*ja>
 \begin{multienumerate}
 \def\labelenumi{$\bullet$}
 \mitemxxx{Hironori KITAGAWA}{Kazuki MAEDA}{Takayuki YATO}
 \mitemxxx{Yusuke KUROKI}{Noriyuki ABE}{Munehiro YAMAMOTO}
-\mitemxx{Tomoaki HONDA}{}{}
+\mitemx{Tomoaki HONDA}
 \end{multienumerate}
+%</ja>
+
 
 % \paragraph{Acknowledgments} -- 挿入するならここ
 
@@ -226,7 +289,7 @@ Note that the forefront of development may not be in \texttt{master} branch.
 \item May be conflict with other packages. 
 
 For example, the default setting of \textbf{JAchar} in the present
-      version does not coexist with \texttt{unicode-math}
+      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
@@ -270,7 +333,7 @@ This does minimal settings (like {\tt ptex.tex}) for typesetting Japanese docume
       fonts, namely scaled by 0.962216.
 \end{itemize}
 \item The amount of glue that are inserted between a \textbf{JAchar} and
-      an \textbf{ALchar} (the parameter \textsf{xkanjiskip}) is set to
+      an \textbf{ALchar} (the parameter \Param{xkanjiskip}) is set to
 \[
  (0.25\cdot 13.5\,\textrm{Q})^{+1\,\text{pt}}_{-1\,\text{pt}} 
  = {27\over 32}\,\mathrm{mm}^{+1\,\text{pt}}_{-1\,\text{pt}}.
@@ -309,15 +372,15 @@ This is a convention in \pLaTeX.
 However, above settings are not sufficient for Japanese-based
 documents. To typeset Japanese-based documents, You are better to use
 class files other than {\tt article.cls}, {\tt book.cls}, and so on.  At
-the present, we have the counterparts of \texttt{jclasses} (standard
-classes in \pLaTeX) and \texttt{jsclasses} (classes by Haruhiko
-Okumura), namely, \texttt{ltjclasses} and \texttt{ltjsclasses}.
+the present, we have the counterparts of \Pkg{jclasses} (standard
+classes in \pLaTeX) and \Pkg jsclasses (classes by Haruhiko
+Okumura), namely, \Pkg{ltjclasses} and \Pkg{ltjsclasses}.
 
 \paragraph{{\tt\char92 CID, {\tt\char92 UTF}} and macros in OTF package}
-Under \pTeX, \texttt{OTF} package (developed by Shuzaburo Saito) is
+Under \pTeX, \Pkg{otf} package (developed by Shuzaburo Saito) is
 used for typesetting characters which is in Adobe-japan1-6 CID but not
 in JIS~X~0208. Since this package is widely used, \LuaTeX-ja
-supports some of functions in \texttt{OTF} package.
+supports some of functions in \Pkg{otf} package.
 
 \begin{LTXexample}
 森\UTF{9DD7}外と内田百\UTF{9592}とが\UTF{9AD9}島屋に行く。
@@ -328,7 +391,7 @@ supports some of functions in \texttt{OTF} package.
 %lltjlisting.sty要修正?:↑「森」の直後で改行.
 
 
-\subsection{Changing Fonts}
+\subsection{Changing Fonts}\label{ssub-chgfnt}
 \paragraph{Remark: Japanese Characters in Math Mode}
 Since \pTeX\ supports Japanese characters in math mode, there are
 sources like the following:
@@ -378,30 +441,48 @@ of \pLaTeXe\ (in {\tt plfonts.dtx}).
       \verb+\fontshape+ and \verb+\selectfont+ can be used to change
       attributes of Japanese fonts. 
 \begin{center}
-\begin{tabular}{ccccc}
+\begin{tabular}{cccccc}
 \toprule
-&\textbf{encoding}&\textbf{family}&\textbf{series}&\textbf{shape}\\\midrule
+&\textbf{encoding}&\textbf{family}&\textbf{series}&\textbf{shape}&\textbf{selection}\\\midrule
 alphabetic fonts
-&\verb+\romanencoding+&\verb+\romanfamily+&\verb+\romanseries+&\verb+\romanshape+\\
+&\verb+\romanencoding+&\verb+\romanfamily+&\verb+\romanseries+&\verb+\romanshape+
+&\verb+\useroman+\\
 Japanese fonts
-&\verb+\kanjiencoding+&\verb+\kanjifamily+&\verb+\kanjiseries+&\verb+\kanjishape+\\
-both&---&--&\verb+\fontseries+&\verb+\fontshape+\\
-auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---\\
+&\verb+\kanjiencoding+&\verb+\kanjifamily+&\verb+\kanjiseries+&\verb+\kanjishape+
+&\verb+\usekanji+\\
+both&---&--&\verb+\fontseries+&\verb+\fontshape+&---\\
+auto select&\verb+\fontencoding+&\verb+\fontfamily+&---&---&\verb+\usefont+\\
 \bottomrule
 \end{tabular}
 \end{center}
-\item For defining a Japanese font family, use \verb+\DeclareKanjiFamily+
-      instead of \verb+\DeclareFontFamily+.
+
+%<*ja>
+ここで,\verb+\fontencoding{<encoding>}+は,引数により和文側か欧文側かの
+      どちらかが切り替わる.例えば,次の入力で最初の\verb+\fontencoding+
+      の呼び出しは和文フォントのエンコーディングを\texttt{JT3}に変更し,
+      2回目の呼びだしでは欧文フォント側を\texttt{T1}へと変更する.
+\begin{verbatim}
+\fontencoding{JY3}\fontencoding{T1}
+\end{verbatim}
+\verb+\fontfamily+も引数により和文側,欧文側,\textbf{あるいは両方}のフォ
+      ントファミリが切り替わる.
+詳細はSubsection~\ref{ssub-nfsspat}を参照すること.
+%</ja>
+
+\item For defining a Japanese font family, use
+      \verb+\DeclareKanjiFamily+ instead of
+      \verb+\DeclareFontFamily+. However, in the present implementation,
+      using \verb+\DeclareFontFamily+ doesn't cause any problem.
 \end{itemize}
 
 \paragraph{fontspec}
-To coexist with the \texttt{fontspec} package, it is needed to load
-\texttt{luatexja-fontspec} package in the preamble. This additional
-package automatically loads \texttt{luatexja} and \texttt{fontspec}
+To coexist with the \Pkg{fontspec} package, it is needed to load
+\Pkg{luatexja-fontspec} package in the preamble. This additional
+package automatically loads \Pkg{luatexja} and \Pkg{fontspec}
 package, if needed.
 
-In \texttt{luatexja-fontspec} package, the following 7~commands are defined as
-counterparts of original commands in \texttt{fontspec}:
+In \Pkg{luatexja-fontspec} package, the following 7~commands are defined as
+counterparts of original commands in the \Pkg{fontspec} package:
 \begin{center}
 \begin{tabular}{ccccc}
 \toprule
@@ -460,8 +541,7 @@ setting of \LuaTeX-ja):
 \begin{verbatim}
 \ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, +8}}
 \end{verbatim}
-
-
+The argument to {\sf jacharrange} parameter is a list of integer. Negative interger $-n$ in the list means that `the character range~$n$ is ...'.
 
 \paragraph{Default Setting}
 Lua\TeX-ja predefines eight character ranges for convinience. They are
@@ -518,31 +598,30 @@ This range consist of the following Unicode ranges, \emph{except characters in t
 \end{multicols}
 \item[Range~3${}^{\text{J}}$] Punctuations and Miscellaneous symbols. The block list is
           indicated in Table~\ref{table-rng3}.
-\begin{table}[p]
+\begin{table}[!tb]
 \caption{Unicode blocks in predefined character range~3.}\label{table-rng3}
 \catcode`\"=13\def"#1#2#3#4{{\tt U+#1#2#3#4}}%"
-\begin{center}
-\begin{tabular}{ll}
-"2000--"206F&General Punctuation\\
+\begin{center}\small
+\begin{tabular}{llll}
+"2000--"206F&General Punctuation&
 "2070--"209F&Superscripts and Subscripts\\
-"20A0--"20CF&Currency Symbols\\
-"20D0--"20FF&Combining Diacritical Marks for Symbols\\
-"2100--"214F&Letterlike Symbols\\
+"20A0--"20CF&Currency Symbols&
+"20D0--"20FF&Comb.\ Diacritical Marks for Symbols\\
+"2100--"214F&Letterlike Symbols&
 "2150--"218F&Number Forms\\
-"2190--"21FF&Arrows\\
+"2190--"21FF&Arrows&
 "2200--"22FF&Mathematical Operators\\
-"2300--"23FF&Miscellaneous Technical\\
+"2300--"23FF&Miscellaneous Technical&
 "2400--"243F&Control Pictures\\
-"2500--"257F&Box Drawing\\
+"2500--"257F&Box Drawing&
 "2580--"259F&Block Elements\\
-"25A0--"25FF&Geometric Shapes\\
+"25A0--"25FF&Geometric Shapes&
 "2600--"26FF&Miscellaneous Symbols\\
-"2700--"27BF&Dingbats\\
+"2700--"27BF&Dingbats&
 "2900--"297F&Supplemental Arrows-B\\
-"2980--"29FF&Miscellaneous Mathematical Symbols-B\\
+"2980--"29FF&Misc.\ Mathematical Symbols-B&
 "2B00--"2BFF&Miscellaneous Symbols and Arrows\\
-"E000--"F8FF&Private Use Area\\
-"FB00--"FB4F&Alphabetic Presentation Forms
+"E000--"F8FF&Private Use Area&
 \end{tabular}
 \end{center}
 \end{table}
@@ -554,52 +633,52 @@ This range consist of the following Unicode ranges, \emph{except characters in t
 \ltjdefcharrange{4}{%
    "500-"10FF, "1200-"1DFF, "2440-"245F, "27C0-"28FF, "2A00-"2AFF, 
   "2C00-"2E7F, "4DC0-"4DFF, "A4D0-"A82F, "A840-"ABFF, "FB50-"FE0F, 
-  "FE20-"FE2F, "FE70-"FEFF, "10000-"1FFFF} % non-Japanese
+  "FE20-"FE2F, "FE70-"FEFF, "FB00-"FB4F, "10000-"1FFFF} % non-Japanese
 \end{lstlisting}
 \item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas.
 \item[Range~6${}^{\text{J}}$] Characters used in Japanese. The block list is indicated in Table~\ref{table-rng6}.
-\begin{table}[p]
+\begin{table}[!tb]
 \caption{Unicode blocks in predefined character range~6.}\label{table-rng6}
 \catcode`\"=13\def"#1#2#3#4{{\tt U+#1#2#3#4}}%"
-\begin{center}
-\begin{tabular}{ll}
-"2460--"24FF&Enclosed Alphanumerics\\
+\begin{center}\small
+\begin{tabular}{llll}
+"2460--"24FF&Enclosed Alphanumerics&
 "2E80--"2EFF&CJK Radicals Supplement\\
-"3000--"303F&CJK Symbols and Punctuation\\
+"3000--"303F&CJK Symbols and Punctuation&
 "3040--"309F&Hiragana\\
-"30A0--"30FF&Katakana\\
+"30A0--"30FF&Katakana&
 "3190--"319F&Kanbun\\
-"31F0--"31FF&Katakana Phonetic Extensions\\
+"31F0--"31FF&Katakana Phonetic Extensions&
 "3200--"32FF&Enclosed CJK Letters and Months\\
-"3300--"33FF&CJK Compatibility\\
+"3300--"33FF&CJK Compatibility&
 "3400--"4DBF&CJK Unified Ideographs Extension A\\
-"4E00--"9FFF&CJK Unified Ideographs\\
+"4E00--"9FFF&CJK Unified Ideographs&
 "F900--"FAFF&CJK Compatibility Ideographs\\
-"FE10--"FE1F&Vertical Forms\\
+"FE10--"FE1F&Vertical Forms&
 "FE30--"FE4F&CJK Compatibility Forms\\
-"FE50--"FE6F&Small Form Variants\\
+"FE50--"FE6F&Small Form Variants&
 "{20}000--"{2F}FFF&(Supplementary Ideographic Plane)
 \end{tabular}
 \end{center}
 \end{table}
 \item[Range~7${}^{\text{J}}$] Characters used in CJK languages, but not included in  Adobe-Japan1-6.
 The block list is indicated in Table~\ref{table-rng7}.
-\begin{table}[p]
+\begin{table}[!tb]
 \caption{Unicode blocks in predefined character range~7.}\label{table-rng7}
 \catcode`\"=13\def"#1#2#3#4{{\tt U+#1#2#3#4}}%"
-\begin{center}
-\begin{tabular}{ll}
-"1100--"11FF&Hangul Jamo\\
+\begin{center}\small
+\begin{tabular}{llll}
+"1100--"11FF&Hangul Jamo&
 "2F00--"2FDF&Kangxi Radicals\\
-"2FF0--"2FFF&Ideographic Description Characters\\
+"2FF0--"2FFF&Ideographic Description Characters&
 "3100--"312F&Bopomofo\\
-"3130--"318F&Hangul Compatibility Jamo\\
+"3130--"318F&Hangul Compatibility Jamo&
 "31A0--"31BF&Bopomofo Extended\\
-"31C0--"31EF&CJK Strokes\\
+"31C0--"31EF&CJK Strokes&
 "A000--"A48F&Yi Syllables\\
-"A490--"A4CF&Yi Radicals\\
+"A490--"A4CF&Yi Radicals&
 "A830--"A83F&Common Indic Number Forms\\
-"AC00--"D7AF&Hangul Syllables\\
+"AC00--"D7AF&Hangul Syllables&
 "D7B0--"D7FF&Hangul Jamo Extended-B
 \end{tabular}
 \end{center}
@@ -607,7 +686,7 @@ The block list is indicated in Table~\ref{table-rng7}.
 \end{description}
 
 
-\subsection{\textsf{kanjiskip} and \textsf{xkanjiskip}}\label{subs-kskip}
+\subsection{\Param{kanjiskip} and \Param{xkanjiskip}}\label{subs-kskip}
 \textbf{JAglue} is divided into the following three categories:
 \begin{itemize}
 \item Glues/kerns specified in JFM. If \verb+\inhibitglue+ is issued
@@ -616,9 +695,9 @@ The block list is indicated in Table~\ref{table-rng7}.
 \item The default glue which inserted between two \textbf{JAchar}s ({\sf
       kanjiskip}).
 \item The default glue which inserted between a \textbf{JAchar} and an
-      \textbf{ALchar} (\textsf{xkanjiskip}).
+      \textbf{ALchar} (\Param{xkanjiskip}).
 \end{itemize}
-The value (a skip) of \textsf{kanjiskip} or \textsf{xkanjiskip} can be
+The value (a skip) of \Param{kanjiskip} or \Param{xkanjiskip} can be
 changed as the following.
 \begin{lstlisting}
 \ltjsetparameter{kanjiskip={0pt plus 0.4pt minus 0.4pt}, 
@@ -627,34 +706,34 @@ changed as the following.
 
 
 It may occur that JFM contains the data of `ideal width of {\sf
-kanjiskip}' and/or `ideal width of \textsf{xkanjiskip}'.
-To use these data from JFM, set the value of \textsf{kanjiskip} or 
-\textsf{xkanjiskip} to \verb+\maxdimen+.
+kanjiskip}' and/or `ideal width of \Param{xkanjiskip}'.
+To use these data from JFM, set the value of \Param{kanjiskip} or 
+\Param{xkanjiskip} to \verb+\maxdimen+.
 
-\subsection{Insertion Setting of \textsf{xkanjiskip}}
-It is not desirable that \textsf{xkanjiskip} is inserted between every
+\subsection{Insertion Setting of \Param{xkanjiskip}}
+It is not desirable that \Param{xkanjiskip} is inserted between every
 boundary between \textbf{JAchar}s and \textbf{ALchar}s. For example,
-\textsf{xkanjiskip} should not be inserted after opening parenthesis
+\Param{xkanjiskip} should not be inserted after opening parenthesis
 (\textit{e.g.}, compare `(あ' and `(\hskip\ltjgetparameter{xkanjiskip}あ').
 
-\LuaTeX-ja can control whether \textsf{xkanjiskip} can be inserted
-before/after a character, by changing \textsf{jaxspmode} for \textbf{JAchar}s and
-\textsf{alxspmode} parameters \textbf{ALchar}s respectively. 
+\LuaTeX-ja can control whether \Param{xkanjiskip} can be inserted
+before/after a character, by changing \Param{jaxspmode} for \textbf{JAchar}s and
+\Param{alxspmode} parameters \textbf{ALchar}s respectively. 
 \begin{LTXexample}
 \ltjsetparameter{jaxspmode={`あ,preonly}, alxspmode={`\!,postonly}} 
 pあq い!う
 \end{LTXexample}
 
 The second argument {\tt preonly} means `the insertion of
-\textsf{xkanjiskip} is allowed before this character, but not after'.
+\Param{xkanjiskip} is allowed before this character, but not after'.
 the other possible values are {\tt postonly}, {\tt allow} and {\tt
 inhibit}. For the compatibility with \pTeX, natural numbers between
 0~and~3 are also allowed as the second argument\footnote{But we don't
 recommend this: since numbers 1~and~2 have opposite meanings in
-\textsf{jaxspmode} and \textsf{alxspmode}.}.
+\Param{jaxspmode} and \Param{alxspmode}.}.
 
-If you want to enable/disable all insertions of \textsf{kanjiskip} and
-\textsf{xkanjiskip}, set \textsf{autospacing} and \textsf{autoxspacing}
+If you want to enable/disable all insertions of \Param{kanjiskip} and
+\Param{xkanjiskip}, set \Param{autospacing} and \Param{autoxspacing}
 parameters to {\tt false}, respectively.
 
 
@@ -666,8 +745,8 @@ baseline of alphabetic fonts is shifted below). However, for documents
 whose main language is not Japanese, it is good to shift the baseline of
 Japanese fonts, but not that of alphabetic fonts.
 Because of this, \LuaTeX-ja can independently set the shifting amount
-of the baseline of alphabetic fonts (\textsf{yalbaselineshift}
-parameter) and that of Japanese fonts (\textsf{yjabaselineshift}
+of the baseline of alphabetic fonts (\Param{yalbaselineshift}
+parameter) and that of Japanese fonts (\Param{yjabaselineshift}
 parameter). 
 
 \begin{LTXexample}
@@ -722,7 +801,7 @@ For example, the following sets banner as `{\tt filename (2012-01-01 17:01)}':
 To load a font as a Japanese font, you must use the
 \verb+\jfont+ primitive instead of~\verb+\font+, while
 \verb+\jfont+ admits the same syntax used in~\verb+\font+. 
-\LuaTeX-ja automatically loads \texttt{luaotfload} package,
+\LuaTeX-ja automatically loads \Pkg{luaotfload} package,
 so TrueType/OpenType fonts with features can be used for Japanese fonts:
 \begin{LTXexample}
 \jfont\tradgt={file:ipaexg.ttf:script=latn;%
@@ -762,7 +841,7 @@ The followings are JFMs shipped with Lua\TeX-ja:
 \begin{description}
 \item[\tt jfm-ujis.lua] A standard JFM in Lua\TeX-ja. This JFM is
       based on \verb+upnmlminr-h.tfm+, a metric for UTF/OTF package that
-      is used in \upTeX. When you use \texttt{luatexja-otf.sty}, please use this JFM.
+      is used in \upTeX. When you use the \Pkg{luatexja-otf} package, please use this JFM.
 \item[\tt jfm-jis.lua] A counterpart for \verb+jis.tfm+, `JIS font
           metric' which is widely used in \pTeX. A major difference of
           \texttt{jfm-ujis.lua} and this \texttt{jfm-jis.lua} is that
@@ -773,15 +852,40 @@ The followings are JFMs shipped with Lua\TeX-ja:
 \item[\tt jfm-min.lua] A counterpart for \verb+min10.tfm+, which is one
           of the default Japanese font metric shipped with \pTeX. There
           are notable difference between this JFM and other 2~JFMs, as
-          showed below:
-
-何かいい例.単純に「min10にはバグあり」ではなく,プロポーショナルな側面も見せたいよね
-(乙部さんのmin10.pdfの例を使う?)
+          shown in Table~\ref{tab-difjfm}.
 \end{description}
 
 \item[jfmvar=<string>] Sometimes there is a need that 
 \end{list}
 
+\begin{table}[t]
+\caption{Differences between JFMs shipped with \LuaTeX-ja}
+\label{tab-difjfm}
+\begin{center}
+\def\r#1{{\jfont\g=psft:Ryumin-Light:jfm=#1 at 14.43324pt \g
+\setbox0=\vtop{\hsize=7\zw\noindent ◆◆◆◆◆◆◆
+ある日モモちゃんがお使いで迷子になって泣きました.}\copy0
+\vrule height 0pt depth \dp0}}
+\def\s#1{{\jfont\g=psft:Ryumin-Light:jfm=#1 at 14.43324pt \g
+\setbox0=\vtop{\hsize=7\zw\noindent ちょっと!何}\copy0}}
+\def\t#1{{\jfont\g=psft:Ryumin-Light:jfm=#1 at 19.24432pt \g
+\setbox0=\hbox{漢}%
+\vrule width 0.4pt height\ht0 depth\dp0\kern-.2pt\copy0
+\kern-\wd0\vrule width\wd0height .2pt depth .2pt
+\kern-\wd0\raise\ht0\hbox{\vrule width\wd0height .2pt depth .2pt}%
+\kern-\wd0\lower\dp0\hbox{\vrule width\wd0height .2pt depth .2pt}%
+\kern-.2pt\vrule width 0.4pt height\ht0 depth \dp0}}
+\begin{tabular}{rccc}
+\toprule
+&\tt jfm-ujis.lua&\tt jfm-jis.lua&\tt jfm-min.lua\\
+\midrule
+Example~1&\r{ujis}&\r{jis}&\r{min}\\
+Example~2&\s{ujis}&\s{jis}&\s{min}\\
+Bounding Box&\t{ujis}&\t{jis}&\t{min}\\
+\bottomrule
+\end{tabular}
+\end{center}
+\end{table}
 
 \paragraph{Note: kern feature}\label{para-kern}
 Some fonts have information for inter-glyph spacing. However, this
@@ -825,9 +929,9 @@ The amount of the length of the `full-width'.
 
 \item[kanjiskip=\{<natural>, <stretch>, <shrink>\}] (optional)
 
-This field specifies the `ideal' amount of \textsf{kanjiskip}. As noted
+This field specifies the `ideal' amount of \Param{kanjiskip}. As noted
             in Subsection~\ref{subs-kskip}, if the parameter
-            \textsf{kanjiskip} is \verb+\maxdimen+, the value specified
+            \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.
@@ -835,8 +939,8 @@ This field specifies the `ideal' amount of \textsf{kanjiskip}. As noted
 
 \item[xkanjiskip=\{<natural>, <stretch>, <shrink>\}] (optional)
 
-Like the \texttt{kanjiskip} field, this field specifies the `ideal'
-            amount of \textsf{xkanjiskip}.
+Like the \Param{kanjiskip} field, this field specifies the `ideal'
+            amount of \Param{xkanjiskip}.
 
 \end{list}
 
@@ -880,7 +984,7 @@ 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'. 
-\begin{figure}[tb]
+\begin{figure}[!tb]
 \begin{minipage}{0.4\textwidth}%
 \begin{center}\unitlength=10pt\small
 \begin{picture}(15,12)(-1,-4)
@@ -1037,20 +1141,22 @@ an external package is needed to support this in plain \TeX\ and
 
 \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.
+font families. There is no relation between the value of
+\verb+\fam+ and that of \verb+\jfam+; with appropreate settings, 
+you can set both \verb+\fam+ and \verb+\jfam+ to~the same value.
 
-\begin{table}[tb]
-\label{tab-math}
+\begin{table}[!tb]
 \caption{Primitives for Japanese math fonts.}
+\label{tab-math}
 \begin{center}\def\{{\char`\{}\def\}{\char`\}}
 \begin{tabular}{lll}
 \toprule
 &Japanese fonts&alphabetic fonts\\
 \midrule
 font family&\verb+\jfam+${}\in [0,256)$&\verb+\fam+\\
-text size&\tt\textsf{jatextfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\textfont+<fam>=<font\_cs>\\
-script size&\tt\textsf{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\scriptfont+<fam>=<font\_cs>\\
-scriptscript size&\tt\textsf{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\scriptscriptfont+<fam>=<font\_cs>\\
+text size&\tt\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\textfont+<fam>=<font\_cs>\\
+script size&\tt\Param{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\scriptfont+<fam>=<font\_cs>\\
+scriptscript size&\tt\Param{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\scriptscriptfont+<fam>=<font\_cs>\\
 \bottomrule
 \end{tabular}
 \end{center}
@@ -1072,7 +1178,12 @@ end
 
 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. This callback doesn't replace any code of \LuaTeX-ja.
+            whose character class is not~0.
+
+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.
 
 \item[\texttt{luatexja.define\_font} callback]
 This callback and the next callback form a pair, and you can assign letters which don't have
@@ -1094,10 +1205,10 @@ You may assume that \verb+jfont_info+ has the following fields:
 The returned table \verb+new_jfont_info+ also should include these three fields. 
 The \verb+font_number+ is a font number. 
 
-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.
+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.
 
 
 \item[\texttt{luatexja.find\_char\_class} callback]
@@ -1116,11 +1227,11 @@ end
 
 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. 
+            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.
 
-A good example of this and the next callbacks is \texttt{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.
 
 
@@ -1164,7 +1275,9 @@ character other than space~`{\tt\char32}'~(U+0020) has the category code
 12~(other), while the space has 10~(space).
 
 \subsection{List of Parameters}
-In the following list of parameters, [\verb+\cs+] indicates the counterpart in \pTeX, and each symbol has the following meaning:
+The following is the list of parameters which can be specificated by the
+\verb+\ltjsetparameter+ command. [\verb+\cs+] indicates the counterpart
+in \pTeX, and symbols beside each parameter has the following meaning:
 \begin{itemize}
 \item No mark: values at the end of the paragraph or the hbox are
       adopted in the whole paragraph/hbox.
@@ -1173,59 +1286,94 @@ In the following list of parameters, [\verb+\cs+] indicates the counterpart in \
 \end{itemize}
 
 \begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}}
-\item[\textsf{jcharwidowpenalty}\,=<penalty>] [\verb+\jcharwidowpenalty+]
+\item[\Param{jcharwidowpenalty}\,=<penalty>] [\verb+\jcharwidowpenalty+]
 
 Penalty value for supressing orphans. This penalty is inserted just
             after the last \textbf{JAchar} which is not regarded as a
             (Japanese) punctuation mark.
 
-\item[\textsf{kcatcode}\,=\{<chr\_code>,<natural number>\}]\
+\item[\Param{kcatcode}\,=\{<chr\_code>,<natural number>\}]\
 
 An additional attributes having each character whose character code is <chr\_code>.  
 At the present version, the lowermost bit of <natural number> indicates
             whether the character is considered as a punctuation mark
-            (see the description of \textsf{jcharwidowpenalty} above).
+            (see the description of \Param{jcharwidowpenalty} above).
 
 
-\item[\textsf{prebreakpenalty}\,=\{<chr\_code>,<penalty>\}] [\verb+\prebreakpenalty+]
-\item[\textsf{postbreakpenalty}\,=\{<chr\_code>,<penalty>\}] [\verb+\postbreakpenalty+]
-\item[\textsf{jatextfont}\,=\{<jfam>,<jfont\_cs>\}] [\verb+\textfont+ in \TeX]
-\item[\textsf{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}] [\verb+\scriptfont+ in \TeX]
-\item[\textsf{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}] [\verb+\scriptscriptfont+ in \TeX]
-\item[\textsf{yjabaselineshift}\,=<dimen>$^\ast$]\ 
-\item[\textsf{yalbaselineshift}\,=<dimen>$^\ast$] [\verb+\ybaselineshift+]
+\item[\Param{prebreakpenalty}\,=\{<chr\_code>,<penalty>\}] [\verb+\prebreakpenalty+]\ 
+%<*ja>
+文字コード<chr\_code>の\textbf{JAchar}が行頭にくることを抑止するために,
+            この文字の前に挿入/追加されるペナルティの量を指定する.
 
-\item[\textsf{jaxspmode}\,=\{<chr\_code>,<mode>\}] [\verb+\inhibitxspcode+]
+例えば閉じ括弧「〗」は絶対に行頭にきてはならないので,標準で読み込まれる
+            \texttt{luatexja-kinsoku.tex}において
+\begin{verbatim}
+\ltjsetparameter{prebreakpenalty={`〙,10000}}
+\end{verbatim}
+と,最大値の10000が指定されている.他にも,小書きのカナなど,絶対禁止とい
+            うわけではないができれば行頭にはきて欲しくない場合に,0と
+            10000の間の値を指定するのも有用であろう.
+\begin{verbatim}
+\ltjsetparameter{prebreakpenalty={`ゕ,150}}
+\end{verbatim}
+%</ja>
 
-Setting whether inserting  \textsf{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is <chr\_code>.
+\item[\Param{postbreakpenalty}\,=\{<chr\_code>,<penalty>\}] [\verb+\postbreakpenalty+]
+%<*ja>
+文字コード<chr\_code>の\textbf{JAchar}が行末にくることを抑止するために,
+            この文字の後に挿入/追加されるペナルティの量を指定する.
+
+\pTeX では,\verb+\prebreakpenalty+, \verb+\postbreakpenalty+において,
+\begin{itemize}
+\item 一つの文字に対して,pre, postどちらか一つしか指定することができなかっ
+      た(後から指定した方で上書きされる).
+\item pre, post合わせて256文字分の情報を格納することしかできなかった.
+\end{itemize}
+という制限があったが,\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{yjabaselineshift}\,=<dimen>$^\ast$]\ 
+\item[\Param{yalbaselineshift}\,=<dimen>$^\ast$] [\verb+\ybaselineshift+]
+
+\item[\Param{jaxspmode}\,=\{<chr\_code>,<mode>\}] [\verb+\inhibitxspcode+]
+
+Setting whether inserting  \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is <chr\_code>.
 The followings are allowed for <mode>:
 \begin{description}
-\item[0, \texttt{inhibit}] Insertion of \textsf{xkanjiskip} is inhibited before the charater, nor after the charater.
-\item[2, \texttt{preonly}] Insertion of \textsf{xkanjiskip} is allowed before the charater, but not after.
-\item[1, \texttt{postonly}] Insertion of \textsf{xkanjiskip} is allowed after the charater, but not before.
-\item[3, \texttt{allow}] Insertion of \textsf{xkanjiskip} is allowed before the charater and after the charater.
+\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited before the charater, nor after the charater.
+\item[2, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed before the charater, but not after.
+\item[1, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed after the charater, but not before.
+\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed before the charater and after the charater.
 This is the default value.
 \end{description}
 
-\item[\textsf{alxspmode}\,=\{<chr\_code>,<mode>\}] [\verb+\xspcode+]
+\item[\Param{alxspmode}\,=\{<chr\_code>,<mode>\}] [\verb+\xspcode+]
 
-Setting whether inserting  \textsf{xkanjiskip} is allowed before/after a \textbf{ALchar} whose character code is <chr\_code>.
+Setting whether inserting \Param{xkanjiskip} is allowed before/after a
+            \textbf{ALchar} whose character code is <chr\_code>.
 The followings are allowed for <mode>:
 \begin{description}
-\item[0, \texttt{inhibit}] Insertion of \textsf{xkanjiskip} is inhibited before the charater, nor after the charater.
-\item[1, \texttt{preonly}] Insertion of \textsf{xkanjiskip} is allowed before the charater, but not after.
-\item[2, \texttt{postonly}] Insertion of \textsf{xkanjiskip} is allowed after the charater, but not before.
-\item[3, \texttt{allow}] Insertion of \textsf{xkanjiskip} is allowed before the charater and after the charater.
+\item[0, \texttt{inhibit}] Insertion of \Param{xkanjiskip} is inhibited
+          before the charater, nor after the charater.
+\item[1, \texttt{preonly}] Insertion of \Param{xkanjiskip} is allowed
+          before the charater, but not after.
+\item[2, \texttt{postonly}] Insertion of \Param{xkanjiskip} is allowed
+          after the charater, but not before.
+\item[3, \texttt{allow}] Insertion of \Param{xkanjiskip} is allowed both
+          before the charater and after the charater.
 This is the default value.
 \end{description}
-Note that parameters \textsf{jaxspmode} and \textsf{alxspmode} use a common table.
+Note that parameters \Param{jaxspmode} and \Param{alxspmode} use a common table.
 
-\item[\textsf{autospacing}\,=<bool>$^\ast$] [\verb+\autospacing+]
-\item[\textsf{autoxspacing}\,=<bool>$^\ast$] [\verb+\autoxspacing+]
-\item[\textsf{kanjiskip}\,=<skip>] [\verb+\kanjiskip+]
-\item[\textsf{xkanjiskip}\,=<skip>] [\verb+\xkanjiskip+]
+\item[\Param{autospacing}\,=<bool>$^\ast$] [\verb+\autospacing+]
+\item[\Param{autoxspacing}\,=<bool>$^\ast$] [\verb+\autoxspacing+]
+\item[\Param{kanjiskip}\,=<skip>] [\verb+\kanjiskip+]
+\item[\Param{xkanjiskip}\,=<skip>] [\verb+\xkanjiskip+]
 
-\item[\textsf{differentjfm}\,=<mode>$^\dagger$]
+\item[\Param{differentjfm}\,=<mode>$^\dagger$]
 
 Specify how glues/kerns between two \textbf{JAchar}s whose JFM (or size) are different. 
 The allowed arguments are the followings:
@@ -1236,13 +1384,14 @@ The allowed arguments are the followings:
 \item[\texttt{small}]
 \end{description}
 
-\item[\textsf{jacharrange}\,=<ranges>$^\ast$]
-\item[\textsf{kansujichar}\,=\{<digit>, <chr\_code>\}] [\verb+\kansujichar+]
+\item[\Param{jacharrange}\,=<ranges>$^\ast$]
+\item[\Param{kansujichar}\,=\{<digit>, <chr\_code>\}] [\verb+\kansujichar+]
 \end{list}
 
 
 \section{Other Primitives}
-\subsection{Compatibility with \pTeX}
+\subsection{Primitives for Compatibility}
+The following primtives are implemented for compatibility with \pTeX:
 \begin{list}{}{\def\makelabel{\ttfamily\char92 }}
 \item[kuten]
 \item[jis]
@@ -1271,14 +1420,101 @@ With the help of this example, we remark the specification of \verb+\inhibitglue
 \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 l.~4 of above example.
+      kernings, as shown in line~4 of above example.
 \item The call of \verb+\inhibitglue+ in math mode is just ignored.
 \end{itemize}
 
 \section{Control Sequences for \LaTeXe}
-\subsection{Patch for NFSS2}
+\subsection{Patch for NFSS2}\label{ssub-nfsspat}
 As described in Subsection~\ref{ssec-ltx}, \LuaTeX-ja simply adopted
 \texttt{plfonts.dtx} in \pLaTeXe\ for the Japanese patch for NFSS2.
+For an convinience, we will describe
+commands which are not described in Subsection~\ref{ssub-chgfnt}.
+
+\begin{cslist}%
+\item[DeclareYokoKanjiEncoding\{<encoding>\}\{<text-settings>\}\{<math-settings>\}]
+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
+            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).
+
+\item[DeclareKanjiEncodingDefaults\{<text-settings>\}\{<math-settings>\}]
+\item[DeclareKanjiSubstitution\{<encoding>\}\{<family>\}\{<series>\}\{<shape>\}]
+\item[DeclareErrorKanjiFont\{<encoding>\}\{<family>\}\{<series>\}\{<shape>\}\{<size>\}]
+
+The above 3~commands are just the counterparts for \verb+DeclareFontEncodingDefaults+ and~others.
+
+\item[reDeclareMathAlphabet\{<unified-cmd>\}\{<al-cmd>\}\{<ja-cmd>\}]
+和文・欧文の数式用フォントファミリを一度に変更する命令を作成する.
+具体的には,欧文数式用フォントファミリ変更の命令<al-cmd>と,和文数式用フォ
+            ントファミリ変更の命令<ja-cmd>の2つを同時に行う命令として
+            <unified-cmd>を(再)定義する.実際の使用では<unified-cmd>と
+            <al-cmd>に同じものを指定する,すなわち,<al-cmd>に和文側も変
+            更させるようにするのが一般的と思われる.
+
+本コマンドの使用については,\pLaTeX 配布中の\texttt{plfonts.dtx}に詳しく
+            注意点が述べられているので,そちらを参照されたい.
+
+\item[DeclareRelationFont\{<ja-encoding>\}\{<ja-family>\}\{<ja-series>\}\{<ja-shape>\}\\
+  \hfill\{<al-encoding>\}\{<al-family>\}\{<al-series>\}\{<al-shape>\}]
+%<*en>
+This command sets the `accompanied' alphabetic font family (given by the latter 4~arguments) 
+with respect to a Japanese font family given by the former 4~arguments. 
+%</en>
+%<*ja>
+いわゆる「従属欧文」を設定するための命令である.前半の4引数で表される和文フォントファミリに対して,
+そのフォントに対応する「従属欧文」フォントファミリを後半の4引数により与える.
+%</ja>
+\item[SetRelationFont]
+This command is almost same as \verb+\DeclareRelationFont+, except that this command does a local 
+assignment, where \verb+\DeclareRelationFont+ does a global assignment.
+\item[userelfont]
+Change current alphabetic font encoding/family/\dots\ to the `accompanied' alphabetic
+            font family with respect to current Japanese font family,
+            which was set by
+            \verb+\DeclareRelationFont+ or \verb+SetRelationFont+.
+Like \verb+\fontfamily+, \verb+\selectfont+ is required to take an effect.
+
+\item[adjustbaseline]
+...
+
+\item[fontfamily\{<family>\}]
+{\let\item\origitem
+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:
+\begin{itemize}
+\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:
+\begin{itemize}
+\item The family <fam> under the encoding <ja-enc> is already defined by
+      \verb+\DeclareKanijFamily+.
+\item A font definition named \texttt{<enc><ja-enc>.fd} (the filename is
+      all lowercase) exists.
+\end{itemize}
+\item Let current encoding scheme for Japanese fonts be
+      <al-enc>. For alphabetic font family, the criterion as above is used.
+\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 inplementation in \LaTeX.
+\end{itemize}
+}
+\end{cslist}
+
+As closing this subsection, we shall introduce an example of
+\verb+SetRelationFont+ and \verb+\userelfont+:
+\begin{LTXexample}
+\gtfamily{}あいうabc
+\SetRelationFont{JY3}{gt}{m}{n}{OT1}{pag}{m}{n}
+\userelfont\selectfont{}あいうabc
+\end{LTXexample}
+
 
 \subsection{Cropmark/`tombow'}
 
@@ -1304,7 +1540,7 @@ ordinary characters in the following points:
 \begin{itemize}
 \item Always treated as \textbf{JAchar}s.
 \item Processing codes for supporting OpenType features (\textit{e.g.},
-      glyph replacement and kerning) by the \texttt{luaotfload} package
+      glyph replacement and kerning) by the \Pkg{luaotfload} package
       is not performed to these characters.
 \end{itemize}
 
@@ -1342,21 +1578,21 @@ There is also a unit called `歯' which equals to $0.25\,\textrm{mm}$ and
                        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 \textsf{kanjiskip} is allowed at the node.
-\attr{ltj@autoxspc} Whether the auto insertion of \textsf{xkanjiskip} is allowed at the node.
+\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:
 \begin{description}
 \item[\textit{italic} (1)] Glues from an itaric correction
           (\verb+\/+). This distinction of origins of glues 
           (from explicit \verb+\kern+, or from \verb+\/+)
-          is needed in the insertion process of \textsf{xkanjiskip}.
+          is needed in the insertion process of \Param{xkanjiskip}.
 \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 \textsf{kanjiskip}.
-\item[\textit{xkanji\_skip} (7)] Glues for \textsf{xkanjiskip}.
+\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 itaric 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.
@@ -1386,7 +1622,7 @@ These whatsits will be removed during the process of inserting \textbf{JAglue}s.
 \paragraph{Background}
 \LuaTeX-ja has its own stack system, and most parameters of \LuaTeX-ja
 are stored in it.  To clarify the reason, imagine the parameter
-\textsf{kanjiskip} is stored by a skip, and consider the following
+\Param{kanjiskip} is stored by a skip, and consider the following
 source:
 \begin{LTXexample}
 \ltjsetparameter{kanjiskip=0pt}ふがふが.%
@@ -1395,8 +1631,8 @@ source:
 \end{LTXexample}
 
 As described in Part~\ref{part-ref}, the only effective value of
-\textsf{kanjiskip} in an hbox is the latest value, so the value of
-\textsf{kanjiskip} which applied in the entire hbox should be 5\,pt.
+\Param{kanjiskip} in an hbox is the latest value, so the value of
+\Param{kanjiskip} which applied in the entire hbox should be 5\,pt.
 However, by the implementation method of \LuaTeX, this `5\,pt' cannot be
 known from any callbacks.  In the \texttt{tex/packaging.w} (which is a
 file in the source of \LuaTeX), there are the following codes:
@@ -1519,7 +1755,7 @@ after `beginning/ending of a group' characters.
 ということである.
 %</ja>
 
-\begin{figure}[tb]
+\begin{figure}[!tb]
 \begin{gather*}
  \def\sp{\text{\tt\char32}}
  \xymatrix{&&
@@ -1645,7 +1881,7 @@ u
 %</ja>
 
 
-\section{Insertion of JFM glues, \textsf{kanjiskip} and \textsf{xkanjiskip}}
+\section{Insertion of JFM glues, \Param{kanjiskip} and \Param{xkanjiskip}}
 \subsection{Overview}
 %<*en>
 NOT COMPLETED
@@ -1657,12 +1893,12 @@ NOT COMPLETED
 \begin{itemize}
 \item JFMグルーの挿入は,和文文字を表すトークンを元に水平リストに(文字を表す)<char\_node>を
 追加する過程で行われる.
-\item \textsf{xkanjiskip}の挿入は,hboxへのパッケージングや行分割前に行われる.
-\item \textsf{kanjiskip}はノードとしては挿入されない.パッケージングや行分割の計算時に
-「和文文字を表す2つの<char\_node>の間には\textsf{kanjiskip}がある」ものとみなされる.
+\item \Param{xkanjiskip}の挿入は,hboxへのパッケージングや行分割前に行われる.
+\item \Param{kanjiskip}はノードとしては挿入されない.パッケージングや行分割の計算時に
+「和文文字を表す2つの<char\_node>の間には\Param{kanjiskip}がある」ものとみなされる.
 \end{itemize}
 しかし,\LuaTeX-jaでは,hboxへのパッケージングや行分割前に全ての
-\textbf{JAglue},即ちJFMグルー・\textsf{xkanjiskip}・\textsf{kanjiskip}の
+\textbf{JAglue},即ちJFMグルー・\Param{xkanjiskip}・\Param{kanjiskip}の
 3種類を一度に挿入することになっている.これは,\LuaTeX において欧文の合字・
 カーニング処理がノードベースになったことに対応する変更である.
 
@@ -1673,7 +1909,7 @@ NOT COMPLETED
 には関係しないものがある.そのため,……
 %</ja>
 
-% \begin{figure}[tb]
+% \begin{figure}[!tb]
 % \unitlength=10mm
 % \end{figure}
 
@@ -1682,7 +1918,7 @@ NOT COMPLETED
 \begin{defn}
 A \emph{cluster} is a list of nodes in one of the following forms, with the \textit{id} of it:
 \begin{enumerate}
-\item Nodes whose value of \verb+\ltj@icflag+ is in $[3,15)$.  These
+\item Nodes whose value of\ \verb+\ltj@icflag+ is in $[3,15)$.  These
       nodes come from a hbox which is already packaged, by unpackaging
       (\verb+\unhbox+).
       The \textit{id} is \textit{id\_pbox}.