-%#! lualatex -shell-escape manual.ins
+%<*!showexpl>
+%#! lualatex -shell-escape
-%<*en>
-\documentclass[a4paper,titlepage]{article}
-\usepackage[margin=25mm,footskip=5mm]{geometry}
+% To typeset this manual, you need following two fonts:
+% - KozMinPr6N-Regular.otf
+% - KozGoPr6N-Medium.otf
+
+
+%<en>\documentclass[a4paper,titlepage]{article}
+%<ja>\documentclass[a4paper,titlepage]{ltjsarticle}
+
+%%%%%%%%
+\makeatletter
+%%%%%%%%
+
+%%%%%%%% record loaded packages
+\let\ltjpkglist\empty
+\newif\if@real@append@list
+\def\@append@newentry#1#2{{%
+ \@real@append@listtrue \def\@tempa{#2}%
+ \let\@pkglist\@append@newentry@pkglist#1%
+ \if@real@append@list
+ \let\@pkglist=\relax\xdef#1{#1\@pkglist{#2}}%
+ \fi}}
+\def\@append@newentry@pkglist#1{%
+ \def\@tempb{#1}%
+ \ifx\@tempa\@tempb\@real@append@listfalse\fi}
+\def\@addtofilelist#1{\@append@newentry\ltjpkglist{#1}}
+\let\@listfiles\empty
+
+%<*en>
+\usepackage[margin=25mm,footskip=6mm]{geometry}
+\usepackage{luatexja-adjust}\ltjdisableadjust
+\parskip=\smallskipamount
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries\raisebox{.2ex}{$\mdlgblksquare\mkern1mu$}}}
%</en>
%<*ja>
-\documentclass[a4paper,titlepage]{ltjsarticle}
-\usepackage[margin=25mm, footskip=5mm]{geometry}
+\usepackage[textwidth=45\zw, lines=45, footskip=6mm]{geometry}
+\usepackage{luatexja-adjust}%\ltjdisableadjust
\advance\leftmargini-1\zw\advance\leftmarginii-1\zw
%</ja>
-\usepackage{amsmath,amssymb,xcolor,pict2e,multienum,amsthm,float,makecell}
-\usepackage{mathptmx}
-\usepackage{booktabs,listings,showexpl,multicol}
+\usepackage{amsmath,tikz,pict2e,multienum,float}
+\usepackage{booktabs,multicol}
+
+%%%%%%%% listings
+\usepackage{listings,showexpl}
+\lstset{
+ basicstyle=\ttfamily\small, pos=r, breaklines=true,
+ numbers=none, rframe={}, basewidth=0.5em, numberstyle=\tiny, numbersep=0.5em,
+ explpreset={numberstyle=\tiny, numbers=left, numbersep=1em}
+}
+% Suppress output from showexpl to stdout.
+\let\SX@Info\relax
+
+%%%%%%%% hyperref
+\usepackage{hyperref}
+%<*en>
+\title{The \LuaTeX-ja package}
+\author{The \LuaTeX-ja project team}
+%</en>
+%<*ja>
+\title{\LuaTeX-jaパッケージ}
+\author{\LuaTeX-jaプロジェクトチーム}
+%</ja>
+\hypersetup{%
+ unicode,
+ colorlinks,
+ allbordercolors=1 1 1,
+ allcolors=blue,
+%<*en>
+ pdfauthor={The LuaTeX-ja project team},
+ pdftitle={The LuaTeX-ja package}
+%</en>
+%<*ja>
+ pdfauthor={LuaTeX-jaプロジェクトチーム},
+ pdftitle={LuaTeX-jaパッケージ}
+%</ja>
+}
+
+%%%%%%%% definition env.
+\usepackage{amsthm}
+\theoremstyle{definition}
+%<en>\newtheorem{defn}{Definition}
+%<ja>\newtheorem{defn}{定義}
+
+%%%%%%%% fonts
\usepackage{luatexja-otf}
-\usepackage{luatexja-fontspec}
-\usepackage[unicode=true]{hyperref}
-\usepackage[all]{xy}
-%<ja> \SelectTips{cm}{}
+\usepackage[kozuka-pr6n]{luatexja-preset}
+%<!en>\usepackage{amssymb}
%<*en>
-\usepackage{mathptmx}
+\usepackage{unicode-math}
\setmainfont[Ligatures=TeX]{TeX Gyre Termes}
-\setsansfont[Ligatures=TeX]{TeX Gyre Heros}
+\setsansfont[Scale=0.95,Ligatures=TeX]{TeX Gyre Heros}
+\setmathfont{xits-math.otf}
\frenchspacing
%</en>
-\def\labelenumii{(\arabic{enumii})}
+%%%%%%%% logo
+\usepackage{metalogo}
\DeclareRobustCommand\eTeX{\ensuremath{\varepsilon}-\kern-.125em\TeX}
\DeclareRobustCommand\LuaTeX{Lua\TeX}
\DeclareRobustCommand\pdfTeX{pdf\TeX}
-\DeclareRobustCommand\pTeX{p\kern-.05em\TeX}
-\DeclareRobustCommand\upTeX{up\kern-.05em\TeX}
+\DeclareRobustCommand\pTeX{p\kern-.15em\TeX}
+\DeclareRobustCommand\upTeX{up\kern-.15em\TeX}
\DeclareRobustCommand\pLaTeX{p\kern-.05em\LaTeX}
\DeclareRobustCommand\pLaTeXe{p\kern-.05em\LaTeXe}
\DeclareRobustCommand\epTeX{\ensuremath{\varepsilon}-\kern-.125em\pTeX}
-\theoremstyle{definition}
-%<en>\newtheorem{defn}{Definition}
-%<ja>\newtheorem{defn}{定義}
-
+%%%%%%%% other macros
\newenvironment{cslist}{%
\leftskip2em\parindent=0pt\def\makelabel##1{{\tt\char92##1}}
\def\{{\char`\{}\def\}{\char`\}}
\def\item[##1]{\par\smallskip\par\hskip-\leftskip\makelabel{##1}\par}
}{}
-\makeatletter
+\def\labelenumii{(\arabic{enumii})}
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\sbox\@tempboxa{{\small #1. #2}}%
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
-% Suppress output from showexpl to stdout.
-\let\SX@Info\relax
+
+%%%%%%%%
\makeatother
+%%%%%%%%
\def\Node#1#2{\,\vcenter{\hbox{\fboxsep=1pt\fbox{\vbox{\small\halign{\hfil##\hfil\cr
#1\mathstrut\cr\noalign{\hrule height.4pt}\strut#2\cr}}}}\,}}
-%<*en>
-\title{The \LuaTeX-ja package}
-\author{The \LuaTeX-ja project team}
-%</en>
-%<*ja>
-\title{\LuaTeX-jaパッケージ}
-\author{\LuaTeX-jaプロジェクトチーム}
-%</ja>
-
-\lstset{
- basicstyle=\ttfamily\small, pos=o, breaklines=true,
- numbers=none, rframe={}, basewidth=0.5em
-}
-
-\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$}}
%<*en>
\textbf{This documentation is far from complete. It may have many
grammatical (and contextual) errors.} Also, several parts
-(especially, Section~\ref{sec-jfmglue}) are written in Japanese only.
+are written in Japanese only.
%</en>
%<*ja>
\textbf{\large 本ドキュメントはまだまだ未完成です.}
%<en>\section{Introduction}
%<ja>\section{はじめに}
+
%<*en>
The \LuaTeX-ja package is a macro package for typesetting high-quality
Japanese documents when using \LuaTeX.
\LuaTeX-jaパッケージは,次世代標準\TeX である\LuaTeX の上で,\pTeX と同等
/それ以上の品質の日本語組版を実現させようとするマクロパッケージである.
%</ja>
-
%<en>\subsection{Backgrounds}
%<ja>\subsection{背景}
のエンジン拡張であり,(少々仕様上不便な点はあるものの)商業印刷の分野に
も用いられるほどの高品質な日本語組版を可能としている.だが,それは弱点に
もなってしまった:\pTeX という(組版的に)満足なものがあったため,海外で
-è¡\8cã\82\8fã\82\8cã\81¦ã\81\84ã\82\8bæ\95°ã\80\85ã\81®\TeX ã\81®æ\8b¡å¼µâ\94\80â\94\80ä¾\8bã\81\88ã\81°\eTeX ã\82\84\pdfTeX â\94\80â\94\80や,TrueType,
+è¡\8cã\82\8fã\82\8cã\81¦ã\81\84ã\82\8bæ\95°ã\80\85ã\81®\TeX ã\81®æ\8b¡å¼µâ\80\95â\80\95ä¾\8bã\81\88ã\81°\eTeX ã\82\84\pdfTeX â\80\95â\80\95や,TrueType,
OpenType, Unicodeといった計算機で日本語を扱う際の状況の変化に追従すること
を怠ってしまったのだ.
%</ja>
外部UTF-8入力が利用可能となり,さらにUnicode化を推進し,\pTeX の内部処理
までUnicode化した\upTeX も開発されている.また,\pTeX に\eTeX 拡張をマー
ジした\epTeX も登場し,\TeX\ Live\ 2011では\pLaTeX が\epTeX の上で動作す
-るようになった.だが,\pdfTeX 拡張(PDF 直接出力やmicro-typesetting)を
+るようになった.だが,\pdfTeX 拡張(PDF直接出力やmicro-typesetting)を
\pTeX に対応させようという動きはなく,海外とのgapは未だにあるのが現状であ
る.
%</ja>
%<en>\subsection{Major Changes from \pTeX}
%<ja>\subsection{\pTeX からの主な変更点}
+\label{ssec:chgptex}
%<*en>
The \LuaTeX-ja package is under much influence of \pTeX\ engine. The initial
\LuaTeX-jaは,\pTeX に多大な影響を受けている.初期の開発目標は,\pTeX の機
能をLuaコードにより実装することであった.しかし,開発が進むにつれ,\pTeX
の完全な移植は不可能であり,また\pTeX における実装がいささか不可解になっ
-ているような状況も発見された.そのため,\textbf{\LuaTeX-ja は,もはや
+ているような状況も発見された.そのため,\textbf{\LuaTeX-jaは,もはや
\pTeX の完全な移植は目標とはしない.\pTeX における不自然な仕様・挙動があ
れば,そこは積極的に改める.}
%</ja>
\begin{itemize}
%<*en>
\item A Japanese font is a tuple of a `real' font, a Japanese font
- metric (\textbf{JFM}, for short), and an optional string called
- `variation'.
+ metric (\textbf{JFM}, for short).
%</en>
%<*ja>
-\item 和文フォントは(小塚明朝,IPA明朝などの)実際のフォント,和文フォントメトリック(JFM と呼ぶ),そ
- して `variation' と呼ばれる文字列の組である.
+\item 和文フォントは(小塚明朝,IPA明朝などの)実際のフォント,和文フォン
+ トメトリック(JFMと呼ぶ\footnote{混乱を防ぐため,p\TeX の意味での
+ JFM (\texttt{min10.tfm}) などは本ドキュメントでは\textbf{和文用
+ TFM}とよぶことにする.})の組である.
%</ja>
%<*en>
%<*en>
\item The insertion process of glues/kerns between two Japanese
characters and between a Japanese character and other characters
- (we refer these glues/kerns as \textbf{JAglue}) is rewritten from
+ (we refer glues/kerns of both kinds as \textbf{JAglue}) is rewritten from
scratch.
%</en>
%<*ja>
-\item 2つの和文文字の間,和文文字と欧文文字の間に入るグルー/カーン
- (\textbf{JAglue} と呼ぶ)の挿入処理が0から書き直されている.
+\item 2つの和文文字の間や,和文文字と欧文文字の間に入るグルー/カーン
+ (両者をあわせて\textbf{JAglue}と呼ぶ)の挿入処理が0から書き直されている.
%</ja>
\begin{itemize}
%</en>
%<*ja>
\item \LuaTeX の内部での文字の扱いが「ノードベース」になっているように(例えば,
- \verb+of{}fice+ で合字は抑制されない),\textbf{JAglue} の挿入処理も
+ \verb+of{}fice+ で合字は抑制されない),\textbf{JAglue}の挿入処理も
「ノードベース」である.
%</ja>
effective anymore.} In concrete terms, the following two methods are not effective anymore:
%</en>
%<*ja>
-\item \textbf{注意:上の2つの変更により,従来 \textbf{JAglue} の挿入処理を分断するのに
+\item \textbf{注意:上の2つの変更により,従来\textbf{JAglue}の挿入処理を分断するのに
使われていたいくつかの方法は用いることができない.具体的には,次の方法はもはや無効である:}
%</ja>
\begin{verbatim}
- ちょ{}っと ちょ\/っと
+\hskip2\zw ちょ{}っと\hskip2\zw ちょ\/っと
\end{verbatim}
%<*en>
If you want to do so, please put an empty hbox between it instead:
もし同じことをやりたければ,空の水平ボックスを間に挟めばよい:
%</ja>
\begin{verbatim}
- ちょ\hbox{}っと
+\hskip2\zw ちょ\hbox{}っと
\end{verbatim}
%<*en>
\item In the process, two Japanese fonts which only differ in their `real'
- fonts are identified.
+ fonts are identified.
%</en>
%<*ja>
-\item å\87¦ç\90\86ä¸ã\81§ã\81¯ï¼\8c2ã\81¤ã\81®å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\81¯ï¼\8cã\80\8cå®\9fé\9a\9bã\81®ã\80\8dã\83\95ã\82©ã\83³ã\83\88ã\81®ã\81¿ã\81\8cç\95°ã\81ªã\82\8bå ´å\90\88ã\81«同一視
+\item å\87¦ç\90\86ä¸ã\81§ã\81¯ï¼\8c2ã\81¤ã\81®å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\81¯ï¼\8cã\80\8cå®\9fé\9a\9bã\81®ã\80\8dã\83\95ã\82©ã\83³ã\83\88ã\81\8cç\95°ã\81ªã\82\8bã\81 ã\81\91ã\81®å ´å\90\88ã\81«ã\81¯同一視
される.
%</ja>
\end{itemize}
+%<*ja>
+\item \LuaTeX-jaでは,\pTeX と同様に漢字・仮名を制御綴内に用いることができ,
+\verb+\西暦+ などが正しく動作するようにしている.
+但し,制御綴中に使える和文文字が\pTeX・\upTeX と全く同じではないことに注意すること.
+%</ja>
+
%<*en>
\item At the present, vertical typesetting (\emph{tategaki}), is not
supported in \LuaTeX-ja.
%</en>
%<*ja>
-\item 現時点では,縦書きは \LuaTeX-ja ではサポートされていない.
+\item 現時点では,縦書きは\LuaTeX-jaではサポートされていない.
%</ja>
-
\end{itemize}
%<*en>
For detailed information, see Part~\ref{part-imp}.
%</en>
%<*ja>
-詳細については第 \ref{part-imp} 部を参照.
+詳細については第\ref{part-imp}部を参照.
%</ja>
%<en>\subsection{Notations}
%<*ja>
本ドキュメントでは,以下の用語と記法を用いる:
%</ja>
-
\begin{itemize}
%<*en>
\item Characters are divided into two types:
%</ja>
\begin{itemize}
%<*en>
-\item \textbf{JAchar}: standing for Japanese characters such as
- Hiragana, Katakana, Kanji and other punctuation marks for
- Japanese.
+\item \textbf{JAchar}: standing for characters which used in Japanese typesetting,
+ such as Hiragana, Katakana, Kanji and other Japanese punctuation marks.
%</en>
%<*ja>
-\item \textbf{JAchar}: ひらがな,カタカナ,漢字,和文用の約物といった和文文字の
- ことを指す.
+\item \textbf{JAchar}: ひらがな,カタカナ,漢字,和文用の約物といった
+ 日本語組版に使われる文字のことを指す.
%</ja>
-%<*en>
-\item \textbf{ALchar}: standing for all other characters like alphabets.
-%</en>
-%<*ja>
-\item \textbf{ALchar}: アルファベットを始めとする,その他全ての文字を指す.
-%</ja>
+%<en>\item \textbf{ALchar}: standing for all other characters like alphabets.
+%<ja>\item \textbf{ALchar}: アルファベットを始めとする,その他全ての文字を指す.
\end{itemize}
%<*en>
We say `alphabetic fonts' for fonts used in \textbf{ALchar}, and `Japanese fonts' for fonts used in \textbf{JAchar}.
%</en>
%<*ja>
-そして,\textbf{ALchar} の出力に用いられるフォントを「欧文フォント」と呼び,
-\textbf{JAchar} の出力に用いられるフォントを「和文フォント」と呼ぶ.
+そして,\textbf{ALchar}の出力に用いられるフォントを「欧文フォント」と呼び,
+\textbf{JAchar}の出力に用いられるフォントを「和文フォント」と呼ぶ.
%</ja>
-
%<*en>
-\item A word in a sans-serif font (like \Param{prebreakpenalty})
+\item A word in a sans-serif font (like \Param{\hyperlink{fld:prebp}{prebreakpenalty}})
means an internal parameter for Japanese typesetting, and it
is used as a key in \verb+\ltjsetparameter+ command.
%</en>
%<*ja>
-\item サンセリフ体で書かれた語(例:\Param{prebreakpenalty})は日本語組版用の
+\item サンセリフ体で書かれた語(例:\Param{\hyperlink{fld:prebp}{prebreakpenalty}})は日本語組版用の
パラメータを表し,これらは \verb+\ltjsetparameter+ コマンドのキーとして
用いられる.
%</ja>
-
%<*en>
\item A word in typewriter font with underline (like \Pkg{fontspec})
means a package or a class of \LaTeX.
%</en>
%<*ja>
-\item ä¸\8bç·\9aä»\98ã\81\8dã\81®ã\82¿ã\82¤ã\83\97ã\83©ã\82¤ã\82¿ä½\93ã\81§æ\9b¸ã\81\8bã\82\8cã\81\9fèª\9eï¼\88ä¾\8bï¼\9a\Pkg{fontspec}ï¼\89ã\81¯ \LaTeX の
+\item ä¸\8bç·\9aä»\98ã\81\8dã\82¿ã\82¤ã\83\97ã\83©ã\82¤ã\82¿ä½\93ã\81®èª\9eï¼\88ä¾\8bï¼\9a\Pkg{fontspec}ï¼\89ã\81¯\LaTeX の
パッケージやクラスを表す.
%</ja>
-
-%<*en>
-\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.
-%</en>
-%<*ja>
-\item 「プリミティブ」という語を,\LuaTeX のプリミティブだけではなく \LuaTeX-ja
- のコアモジュールで定義されたコントロールシーケンスに対しても用いる.
-%</ja>
-
%<*en>
\item In this document, natural numbers start from~0.
%</en>
%<en>\subsection{About the project}
%<ja>\subsection{プロジェクトについて}
-%<*en>
-\paragraph{Project Wiki} Project Wiki is under construction.
-%</en>
-%<*ja>
-\paragraph{プロジェクト Wiki} プロジェクト Wiki は構築中である.
-%</ja>
-
+%<en>\paragraph{Project Wiki} Project Wiki is under construction.
+%<ja>\paragraph{プロジェクトWiki} プロジェクトWikiは構築中である.
%<*en>
\begin{itemize}
\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28en%29} (English)
\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage} (Japanese)
+\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28zh%29} (Chinese)
\end{itemize}
%</en>
%<*ja>
\begin{itemize}
\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage}(日本語)
\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28en%29}(英語)
+\item \url{http://sourceforge.jp/projects/luatex-ja/wiki/FrontPage%28zh%29}(中国語)
\end{itemize}
%</ja>
-%<*en>
-This project is hosted by SourceForge.JP.
-%</en>
-%<*ja>
-本プロジェクトは SourceForge.JP のサービスを用いて運営されている.
-%</ja>
+%<en>This project is hosted by SourceForge.JP.
+%<ja>本プロジェクトはSourceForge.JPのサービスを用いて運営されている.
%<en>\paragraph{Members}\
%<ja>\paragraph{開発メンバー}\
+
%<*en>
\begin{multienumerate}
\def\labelenumi{$\bullet$}
\end{multienumerate}
%</ja>
-
% \paragraph{Acknowledgments} -- 挿入するならここ
\clearpage
%<en>\subsection{Installation}
%<ja>\subsection{インストール}
-%<*en>
-To install the \LuaTeX-ja\ package, you will need:
-%</en>
-%<*ja>
-\LuaTeX-ja パッケージのインストールには,次のものが必要である.
-%</ja>
+%<en>To install the \LuaTeX-ja\ package, you will need:
+%<ja>\LuaTeX-jaパッケージのインストールには,次のものが必要である.
\begin{itemize}
-%<*en>
-\item \LuaTeX\ (version 0.65.0-beta or later) and its supporting packages.\\
-If you are using \TeX~Live~2011 or current W32\TeX, you don't have to worry.
-%</en>
-%<*ja>
-\item \LuaTeX(バージョン 0.65.0-beta 以降)とその支援パッケージ.
- \TeX~Live~2011 や W32\TeX の最新版ならば問題ない.
-%</ja>
-%<*en>
-\item The source archive of \LuaTeX-ja, of course\texttt{:)}
-%</en>
-%<*ja>
-\item \LuaTeX-ja のソースアーカイブ(もちろん \texttt{:)}).
-%</ja>
-%<*en>
-\item The \Pkg{xunicode} package, which version is \emph{just v0.981 (2011/09/09)}.\\
-If you have the \Pkg{fontspec} package, this \Pkg{xunicode} package must be exist.
-But be careful about the version; other versions may not work correctly with \LuaTeX-ja.
-%</en>
-%<*ja>
-\item \Pkg{xunicode} パッケージ (\textbf{2011/09/09,~v0.981}).\\
-\Pkg{fontspec} パッケージが導入されていればこのパッケージも導入されているはずであるが,
-この v0.981 以外のバージョンでは\LuaTeX-ja 上で正しく動作しない危険性がある.
-%</ja>
+\item \LuaTeX\ beta-0.74.0 (or later)
+\item \Pkg{luaotfload} v2.2
+\item \Pkg{luatexbase} v0.6~(2013/05/04)
+\item \Pkg{xunicode} v0.981~(2011/09/09)
\end{itemize}
%<*en>
-The installation methods are as follows:
+\emph{From this version of \LuaTeX-ja, \TeX~Live~2012 (or older version) is
+no longer supported, since \LuaTeX\ binary and \Pkg{luaotfload} is updated in
+\TeX~Live~2013.}
+And conversely, older versions of \LuaTeX-ja (20130318.1 or earlier) don't work in
+\TeX~Live~2013.
+
+\medskip
+
+Now \LuaTeX-ja is available from the following archive and distributions:
+ \begin{itemize}
+ \item CTAN (in the \texttt{macros/luatex/generic/luatexja} directory)
+ \item MiK\TeX\ (in \texttt{luatexja.tar.lzma})
+ \item \TeX\ Live (in \texttt{texmf-dist/tex/luatex/luatexja})
+ \item W32\TeX\ (in \texttt{luatexja.tar.xz})
+ \end{itemize}
+
+If you are using \TeX~Live~2013, you can install \LuaTeX-ja
+from \TeX~Live manager (\texttt{tlmgr}):
+\begin{verbatim}
+$ tlmgr install luatexja
+\end{verbatim}
+
+\medskip
+
+If you want to install manually, do the following instruvtions:
%</en>
%<*ja>
-インストール方法は以下のようになる:
+\textbf{本バージョン以降の\LuaTeX-jaは\TeX~Live~2012以前では動作しない.}
+これは,\LuaTeX と\Pkg{luaotfload}が\TeX~Live~2013において更新されたことによる.
+逆に,20130318.1以前の\LuaTeX-jaは\TeX~Live~2013では動作しない.
+
+\medskip
+
+現在,\LuaTeX-jaは以下のアーカイブ,およびディストリビューションに収録されている:
+ \begin{itemize}
+ \item CTAN (\texttt{macros/luatex/generic/luatexja})
+ \item MiK\TeX\ (\texttt{luatexja.tar.lzma})
+ \item \TeX\ Live (\texttt{texmf-dist/tex/luatex/luatexja})
+ \item W32\TeX\ (\texttt{luatexja.tar.xz})
+ \end{itemize}
+
+例えば\TeX~Live~2013を利用しているなら,\LuaTeX-jaは\TeX~Live manager (\texttt{tlmgr})を
+使ってインストールすることができる.
+\begin{verbatim}
+$ tlmgr install luatexja
+\end{verbatim}
+
+\medskip
+
+手動でインストールする場合の方法は以下のようになる:
%</ja>
\begin{enumerate}
%<*en>
\begin{flushleft}
\url{http://git.sourceforge.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}.
\end{flushleft}
-\item Now Lua\TeX-ja is included in CTAN (in the \texttt{macros/luatex/generic/luatexja} directory)
-and W32\TeX\ (in \texttt{luatexja.tar.xz}). These are based on the \texttt{master} branch.
-\end{itemize}
+\end{itemize}
Note that the \texttt{master} branch, and hence the archive in CTAN, are not updated frequently;
the forefront of development is not the \texttt{master} branch.
開発版であって,安定版でないことに注意.
\begin{itemize}
-\item Git リポジトリの内容をコピーする:
+\item Gitリポジトリの内容をコピーする:
\begin{verbatim}
$ git clone git://git.sourceforge.jp/gitroot/luatex-ja/luatexja.git
\end{verbatim}
-\item \texttt{master} ブランチのスナップショット(\texttt{tar.gz} 形式)をダウンロードする.
+\item \texttt{master}ブランチのスナップショット(\texttt{tar.gz}形式)をダウンロードする.
\begin{flushleft}
\url{http://git.sourceforge.jp/view?p=luatex-ja/luatexja.git;a=snapshot;h=HEAD;sf=tgz}.
\end{flushleft}
-\item 今や,Lua\TeX-ja は CTAN (\texttt{macros/luatex/generic/luatexja}) や
-W32\TeX\ (\texttt{luatexja.tar.xz}) にも収録されている.
-これらは \texttt{master} ブランチの内容を元にしている.
\end{itemize}
-
-\texttt{master} ブランチ(従って,CTAN 内のアーカイブも)はたまにしか更新されないことに注意.
-主な開発は \texttt{master} の外で行われ,比較的まとまってきたらそれを \texttt{master} に
+\texttt{master}ブランチ(従って,CTAN内のアーカイブも)はたまにしか更新されないことに注意.
+主な開発は\texttt{master}の外で行われ,比較的まとまってきたらそれを\texttt{master}に
反映させることにしている.
%</ja>
But only the contents in \texttt{src/} are needed to work \LuaTeX-ja.
%</en>
%<*ja>
-\item 「Git リポジトリをコピー」以外の方法でアーカイブを取得したならば,それを展開する.
- \texttt{src/} をはじめとしたいくつかのディレクトリができるが,
- 動作には \texttt{src/} 以下の内容だけで十分.
+\item 「Gitリポジトリをコピー」以外の方法でアーカイブを取得したならば,それを展開する.
+ \texttt{src/}をはじめとしたいくつかのディレクトリができるが,
+ 動作には\texttt{src/}以下の内容だけで十分.
%</ja>
%<*en>
instead copying is also good.
%</en>
%<*ja>
-\item \texttt{src/} の中身を自分の \texttt{TEXMF} ツリーにコピーする.
- 場所の例としては,例えば \texttt{TEXMF/tex/luatex/luatexja/} がある.
+\item \texttt{src}の中身を自分の\texttt{TEXMF}ツリーにコピーする.
+ 場所の例としては,例えば\texttt{TEXMF/tex/luatex/luatexja/}がある.
シンボリックリンクが利用できる環境で,かつリポジトリを直接取得したのであれば,
(更新を容易にするために)コピーではなくリンクを貼ることを勧める.
%</ja>
-
%<*en>
\item If \texttt{mktexlsr} is needed to update the file name database, make it so.
%</en>
%<*ja>
-\item 必要があれば,\texttt{mktexlsr} を実行する.
+\item 必要があれば,\texttt{mktexlsr}を実行する.
%</ja>
\end{enumerate}
-
%<en>\subsection{Cautions}
%<ja>\subsection{注意点}
encodings, such as EUC-JP or Shift-JIS, are not supported.
%</en>
%<*ja>
-\item 原稿のソースファイルの文字コードは UTF-8 固定である.
- 従来日本語の文字コードとして用いられてきた EUC-JP や Shift-JIS は使用できない.
+\item 原稿のソースファイルの文字コードはUTF-8固定である.
+ 従来日本語の文字コードとして用いられてきたEUC-JPやShift-JISは使用できない.
+%</ja>
+%<*en>
+\item \LuaTeX-ja is very slower than \pTeX. Using LuaJIT\TeX slightly improve the situation.
+%</en>
+%<*ja>
+\item \LuaTeX-jaは動作が\pTeX に比べて非常に遅い.コードを変更して徐々に速くしているが,
+まだ満足できる速度ではない.LuaJIT\TeX を用いると\LuaTeX のだいたい1.3倍の速度で動くようである.
%</ja>
\end{itemize}
%<ja>\subsection{plain \TeX で使う}
\label{ssec-plain}
-%<*en>
-To use \LuaTeX-ja in plain \TeX, simply put the following at the beginning of the document:
-%</en>
-%<*ja>
-\LuaTeX-ja を plain \TeX で使うためには,単に次の行をソースファイルの冒頭に追加すればよい:
-%</ja>
+%<en>To use \LuaTeX-ja in plain \TeX, simply put the following at the beginning of the document:
+%<ja>\LuaTeX-jaを plain \TeX で使うためには,単に次の行をソースファイルの冒頭に追加すればよい:
\begin{verbatim}
\input luatexja.sty
\end{verbatim}
-%<*en>
-This does minimal settings (like \texttt{ptex.tex}) for typesetting Japanese documents:
-%</en>
-%<*ja>
-これで(\texttt{ptex.tex} のように)日本語組版のための最低限の設定がなされる:
-%</ja>
+%<en>This does minimal settings (like \texttt{ptex.tex}) for typesetting Japanese documents:
+%<ja>これで(\texttt{ptex.tex}のように)日本語組版のための最低限の設定がなされる:
\begin{itemize}
%<*en>
\item The following 6~Japanese fonts are preloaded:
-\begin{center}
+\begin{center}\small
\begin{tabular}{ccccc}
\toprule
\textbf{classification}&\textbf{font name}&\bf `10\,pt'&\bf`7\,pt'&\bf`5\,pt'\\\midrule
%</en>
%<*ja>
\item 以下の6つの和文フォントが定義される:
-\begin{center}
+\begin{center}\small
\begin{tabular}{ccccc}
\toprule
\textbf{字体}&\textbf{フォント名}&\bf `10\,pt'&\bf`7\,pt'&\bf`5\,pt'\\\midrule
%</ja>
\begin{itemize}
%<*en>
-\item The `Q(級)' is a unit used in Japanese phototypesetting, and
- $1\,\textrm{Q}=0.25\,\textrm{mm}$. This length is stored in a
- dimension \verb+\jQ+.
-%</en>
-%<*ja>
-\item `Q(級)' は日本の写植で用いられる単位で,$1\,\textrm{Q}=0.25\,\textrm{mm}$
- である.この長さは \verb+\jQ+ に保持されている.
-%</ja>
-
-%<*en>
-\item It is widely accepted that the font `Ryumin-Light' and
- `GothicBBB-Medium' aren't embedded into PDF files, and PDF reader
+\item It is widely accepted that fonts `Ryumin-Light' and
+ `GothicBBB-Medium' aren't embedded into PDF files, and a PDF reader
substitute them by some external Japanese fonts (\textit{e.g.},
- Kozuka Mincho is used for Ryumin-Light in Adobe Reader). We adopt this custom to
- the default setting.
+ Ryumin-Light is substituted with Kozuka Mincho in Adobe Reader).
+ We adopt this custom to the default setting.
%</en>
%<*ja>
-\item `Ryumin-Light' と `GothicBBB-Medium' は PDF ファイルに埋め込まずに
- 名前参照のみで用いることが広く受け入れられており,この場合 PDF リーダーが
- 適切な外部フォントで代用する(例えば,Adobe Reader では Ryumin-Light は
+\item `Ryumin-Light'と`GothicBBB-Medium'はPDFファイルに埋め込まずに
+ 名前参照のみで用いることが広く受け入れられており,この場合PDFリーダーが
+ 適切な外部フォントで代用する(例えば,Adobe ReaderではRyumin-Lightは
小塚明朝で代替される).そこで,これらを引き続きデフォルトのフォントと
して採用する.
%</ja>
%<*ja>
\item 欧文フォントの文字は和文フォントの文字よりも,同じ文字サイズでも
一般に小さくデザインされている.そこで,標準ではこれらの和文フォントの実際のサイズは指定された値よりも
- 小さくなるように設定されており,具体的には指定の 0.962216 倍にスケールされる.
- この 0.962216 という数値も,p\TeX におけるスケーリングを踏襲した値である.
+ 小さくなるように設定されており,具体的には指定の0.962216倍にスケールされる.
+ この0.962216という数値も,\pTeX におけるスケーリングを踏襲した値である.
%</ja>
\end{itemize}
%<*en>
\item The amount of glue that are inserted between a \textbf{JAchar} and
- an \textbf{ALchar} (the parameter \Param{xkanjiskip}) is set to
+ an \textbf{ALchar} (the parameter \Param{\hyperlink{fld:xks}{xkanjiskip}}) is set to
%</en>
%<*ja>
-\item \textbf{JAchar} と \textbf{ALchar} の間に入るグルー (\Param{xkanjiskip}) の
+\item \textbf{JAchar}と\textbf{ALchar}の間に入るグルー(\Param{\hyperlink{fld:xks}{xkanjiskip}})の
量は次のように設定されている:
%</ja>
\[
%</en>
%<*ja>
\LaTeXe を用いる場合も基本的には同じである.日本語組版のための最低限の環境を
-設定するためには,\texttt{luatexja.sty} を読み込むだけでよい:
+設定するためには,\texttt{luatexja.sty}を読み込むだけでよい:
%</ja>
\begin{verbatim}
\usepackage{luatexja}
plfonts.dtx} and \texttt{pldefs.ltx}):
%</en>
%<*ja>
-これで \pLaTeX の \texttt{plfonts.dtx} と \texttt{pldefs.ltx} に相当する最低限の設定が
+これで\pLaTeX の\texttt{plfonts.dtx}と\texttt{pldefs.ltx}に相当する最低限の設定が
なされる:
%</ja>
When vertical typesetting is supported by \LuaTeX-ja in the future, \texttt{JT3} will be used for vertical fonts.
%</en>
%<*ja>
-\item \texttt{JY3} は和文フォント用のフォントエンコーディングである(横書き用).\\
-将来的に,\LuaTeX-ja で縦書きがサポートされる際には,\texttt{JT3} を縦書き用として
+\item \texttt{JY3}は和文フォント用のフォントエンコーディングである(横書き用).\\
+将来的に,\LuaTeX-jaで縦書きがサポートされる際には,\texttt{JT3}を縦書き用として
用いる予定である.
%</ja>
%<*en>
-\item Two font families \texttt{mc} and \texttt{gt} are defined:
-\begin{center}
+\item Traditionally, Japanese documents use two typeface category: \emph{mincho}~(明朝体) and
+ \emph{gothic}~(\textgt{ゴシック体}). \emph{mincho} is used in the main text, while \emph{gothic}
+ is used in the headings or for emphasis.
+\begin{center}\small
+\begin{tabular}{lllc}
+\toprule
+\textbf{classification}&&&\textbf{family name}\\\midrule
+\emph{mincho} (明朝体)&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\verb+\mcdefault+\\
+\emph{gothic} (\textgt{ゴシック体})&\verb+\textgt{...}+&\verb+{\gtfamily ...}+&\verb+\gtdefault+\\
+\bottomrule
+\end{tabular}
+\end{center}
+\item
+By default, the following fonts are used for \emph{mincho} and \emph{gothic}:
+\begin{center}\small
\begin{tabular}{ccccc}
\toprule
-\textbf{classification}&\textbf{family}&\verb+\mdseries+&\verb+\bfseries+&\textbf{scale}\\\midrule
-\emph{mincho}&\tt mc&Ryumin-Light &GothicBBB-Medium&0.962216\\
-\emph{gothic}&\tt gt&GothicBBB-Medium&GothicBBB-Medium&0.962216\\
+\textbf{classification}&\textbf{family name}&\verb+\mdseries+&\verb+\bfseries+&\textbf{scale}\\\midrule
+\emph{mincho} (明朝体)&\tt mc&Ryumin-Light &GothicBBB-Medium&0.962216\\
+\emph{gothic} (\textgt{ゴシック体})&\tt gt&GothicBBB-Medium&GothicBBB-Medium&0.962216\\
\bottomrule
\end{tabular}
\end{center}
-Remark that the bold series in both family are same as the medium series of \emph{gothic} family.
-This is a convention in \pLaTeX. This is a trace that there were only 2~fonts (these are Ryumin-Light
-and GothicBBB-Medium) in early years of DTP.
+Note that the bold series in both family are same as the medium series of \emph{gothic} family.
+This is a convention in \pLaTeX. This is trace that there were only 2~fonts (these are Ryumin-Light
+and GothicBBB-Medium) in early years of DTP. There is no italic nor slanted shape for
+ these \texttt{mc}~and~\texttt{gt}.
%</en>
%<*ja>
-\item 2つのフォントファミリ \texttt{mc} と \texttt{gt} が定義されている:
-\begin{center}
+\item \pLaTeX と同様に,標準では「明朝体」「ゴシック体」の2種類を用いる:
+\begin{center}\small
+\begin{tabular}{cllc}
+\toprule
+\textbf{字体}&&&\textbf{ファミリ名}\\\midrule
+明朝体&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\verb+\mcdefault+\\
+\textgt{ゴシック体}&\verb+\textgt{...}+&\verb+{\gtfamily ...}+&\verb+\gtdefault+\\
+\bottomrule
+\end{tabular}
+\end{center}
+\item 標準では,次のフォントファミリが用いられる:
+\begin{center}\small
\begin{tabular}{ccccc}
\toprule
\textbf{字体}&\textbf{ファミリ}&\verb+\mdseries+&\verb+\bfseries+&\textbf{スケール}\\\midrule
\bottomrule
\end{tabular}
\end{center}
-どちらのファミリにおいても,その bold シリーズはゴシック体の medium シリーズで
-あることに注意.これは初期の DTP において和文フォントが2つ(それがちょうど\
-Ryumin-Light, GothicBBB-Medium だった)しか利用できなかった時の名残であり,\pLaTeX{}
+どちらのファミリにおいても,そのboldシリーズで使われるフォントは
+ゴシック体のmediumシリーズで使われるフォントと同じあることに注意.
+これは初期のDTPにおいて和文フォントが2つ(それがちょうど\
+Ryumin-Light, GothicBBB-Mediumだった)しか利用できなかった時の名残であり,\pLaTeX{}
での標準設定とも同じである.
%</ja>
-%<*en>
-\item Japanese characters in math mode are typeset by the font family \texttt{mc}.
-%</en>
-%<*ja>
-\item 数式モード中の和文文字は \texttt{mc} ファミリで出力される.
-%</ja>
+
+%<en>\item Japanese characters in math mode are typeset by the font family \texttt{mc}.
+%<ja>\item 数式モード中の和文文字は明朝体(\texttt{mc})で出力される.
\end{itemize}
%<*en>
%</en>
%<*ja>
しかしながら,上記の設定は日本語の文書にとって十分とは言えない.
-日本語文書を組版するためには,\texttt{article.cls}, \texttt{book.cls} といった
+日本語文書を組版するためには,\texttt{article.cls}, \texttt{book.cls}といった
欧文用のクラスファイルではなく,和文用のクラスファイルを用いた方がよい.
-現時点では,\Pkg{jclasses} (\pLaTeX の標準クラス)と \Pkg{jsclasses}
+現時点では,\Pkg{jclasses}(\pLaTeX の標準クラス)と\Pkg{jsclasses}
(奥村晴彦氏によるクラスファイル)に対応するものとして,\Pkg{ltjclasses},
-\Pkg{ltjsclasses} がそれぞれ用意されている.
-%</ja>
-
-%<*en>
-\paragraph{\texttt{\char92 CID, \texttt{\char92 UTF}} and macros in OTF package}
-Under \pLaTeX, \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 \Pkg{otf} package.
-If you want to use these functions, load \Pkg{luatexja-otf} package.
-%</en>
-%<*ja>
-\paragraph{\texttt{\char92 CID, \texttt{\char92 UTF}} と OTF パッケージのマクロ}
-\pLaTeX では,JIS~X~0208 にない Adobe-Japan1-6 の文字を出力するために,
-齋藤修三郎氏による \Pkg{otf} パッケージが用いられていた.このパッケージは
-広く用いられているため,\LuaTeX-ja においても \Pkg{otf} パッケージの機能の
-一部をサポートしている.これらの機能を用いるためには \Pkg{luatexja-otf} パッケージ
-を読み込めばよい.
+\Pkg{ltjsclasses}がそれぞれ用意されている.
%</ja>
-\begin{LTXexample}
-森\UTF{9DD7}外と内田百\UTF{9592}とが\UTF{9AD9}島屋に行く。
-
-\CID{7652}飾区の\CID{13706}野家,
-葛飾区の吉野家
-\end{LTXexample}
+%<en>\section{Changing Fonts}
+%<ja>\section{フォントの変更}
-%<en>\subsection{Changing Fonts}
-%<ja>\subsection{フォントの変更}
+\subsection{plain \TeX~and~\LaTeXe}
\label{ssub-chgfnt}
-%<*en>
-\paragraph{Remark: Japanese Characters in Math Mode}
-Since \pTeX\ supports Japanese characters in math mode, there are
-sources like the following:
-%</en>
-%<*ja>
-\paragraph{意見:数式モード中の和文文字}
-\pTeX では,特に何もしないでも数式中に和文文字を記述することができた.そのため,
-以下のようなソースが見られた:
-%</ja>
-\begin{LTXexample}
-$f_{高温}$~($f_{\text{high temperature}}$).
-\[ y=(x-1)^2+2\quad よって\quad y>0 \]
-$5\in 素:=\{\,p\in\mathbb N:\text{$p$ is a prime}\,\}$.
-\end{LTXexample}
-%<*en>
-We (the project members of \LuaTeX-ja) think that using
-Japanese characters in math mode are allowed if and only if these are used as identifiers.
-In this point of view,
-%</en>
-%<*ja>
-\LuaTeX-ja プロジェクトでは,数式モード中での和文文字はそれらが識別子として用いられる
-ときのみ許されると考えている.
-この観点から,
-%</ja>
-\begin{itemize}
-%<*en>
-\item The lines 1~and~2 above are not correct, since `高温' in above is used as a textual label, and
-`よって' is used as a conjunction.
-%</en>
-%<*ja>
-\item 上記数式のうち 1, 2 行目は正しくない.なぜならば `高温' が意味のあるラベルと
- して,`よって' が接続詞として用いられているからである.
-%</ja>
-%<*en>
-\item However, the line~3 is correct, since `素' is used as an identifier.
-%</en>
-%<*ja>
-\item しかしながら,3行目は `素' が識別子として用いられているので正しい.
-%</ja>
-\end{itemize}
-%<*en>
-Hence, in our opinion, the above input should be corrected as:
-%</en>
-%<*ja>
-したがって,\LuaTeX-ja プロジェクトの意見としては,上記の入力は次のように直されるべき
-である:
-%</ja>
-\begin{LTXexample}
-$f_{\text{高温}}$~%
-($f_{\text{high temperature}}$).
-\[ y=(x-1)^2+2\quad
- \mathrel{\text{よって}}\quad y>0 \]
-$5\in 素:=\{\,p\in\mathbb N:\text{$p$ is a prime}\,\}$.
-\end{LTXexample}
-%BUG?: \{\}がなければ「素」がでない.上の段落の「よって」もでてない.
-%<*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 Subsection~\ref{ssec-math}.
-%</en>
-%<*ja>
-また \LuaTeX-ja プロジェクトでは,和文文字が識別子として用いられることはほとんどない
-と考えており,したがってこの節では数式モード中の和文フォントを変更する方法については
-記述しない.この方法については \ref{ssec-math} 節を参照のこと.
-%</ja>
-
-%<*en>
\paragraph{plain \TeX}
-To change Japanese fonts in plain \TeX, you must use the primitive
+%<*en>
+To change Japanese fonts in plain \TeX, you must use the control sequence
\verb+\jfont+. So please see Subsection~\ref{ssec-jfont}.
%</en>
%<*ja>
-\paragraph{plain \TeX}
-plain \TeX で和文フォントを変更するためには,\verb+\jfont+ プリミティブを用いなけれ
-ばならない.\ref{ssec-jfont} 節を参照.
+plain \TeX で和文フォントを変更するためには,\pTeX のように \verb+\jfont+ 命令を直接用いる.
+\ref{ssec-jfont}節を参照.
%</ja>
+\paragraph{\LaTeXe\ (NFSS2)}
%<*en>
-\paragraph{NFSS2}
For \LaTeXe, \LuaTeX-ja adopted most of the font selection system of \pLaTeXe\ (in \texttt{plfonts.dtx}).
%</en>
%<*ja>
-\paragraph{NFSS2}
-\LaTeXe については,\LuaTeX-ja ではフォント選択システムを \pLaTeXe\ (\texttt{plfonts.dtx})
+\LaTeXe については,\LuaTeX-jaではフォント選択システムを\pLaTeXe\ (\texttt{plfonts.dtx})
の大部分をそのまま採用している.
%</ja>
\begin{itemize}
%<*en>
-\item Two control sequences \verb+\mcdefault+ and \verb+\gtdefault+ are
- used to specify the default font families for \emph{mincho} and
- \emph{gothic}, respectively. Default values: \texttt{mc} for
- \verb+\mcdefault+ and \texttt{gt} for \verb+\gtdefault+.
-%</en>
-%<*ja>
-\item 2つのコントロールシーケンス \verb+\mcdefault+ と \verb+\gtdefault+ がそれぞ
- れ明朝体とゴシック体のデフォルトのフォントファミリを指定するために用いられる.
- 初期値:\verb+\mcdefault+ は \texttt{mc},\verb+\gtdefault+ は \texttt{gt}.
-%</ja>
-%<*en>
\item Commands \verb+\fontfamily+, \verb+\fontseries+,
\verb+\fontshape+ and \verb+\selectfont+ can be used to change
attributes of Japanese fonts.
%</ja>
%<*en>
-\begin{center}
+\begin{center}\small
\begin{tabular}{cccccc}
\toprule
&\textbf{encoding}&\textbf{family}&\textbf{series}&\textbf{shape}&\textbf{selection}\\\midrule
\end{center}
%</en>
%<*ja>
-\begin{center}
+\begin{center}\small
\begin{tabular}{cccccc}
\toprule
&\textbf{エンコーディング}&\textbf{ファミリ}&\textbf{シリーズ}&\textbf{シェープ}&\textbf{選択}\\\midrule
-欧文フォント
+欧文
&\verb+\romanencoding+&\verb+\romanfamily+&\verb+\romanseries+&\verb+\romanshape+
&\verb+\useroman+\\
-和文フォント
+和文
&\verb+\kanjiencoding+&\verb+\kanjifamily+&\verb+\kanjiseries+&\verb+\kanjishape+
&\verb+\usekanji+\\
両方&---&--&\verb+\fontseries+&\verb+\fontshape+&---\\
%</ja>
\end{itemize}
+%<*en>
+\paragraph{Remark: Japanese Characters in Math Mode}
+Since \pTeX\ supports Japanese characters in math mode, there are
+sources like the following:
+%</en>
+%<*ja>
+\paragraph{注意:数式モード中の和文文字}
+\pTeX では,特に何もしないでも数式中に和文文字を記述することができた.そのため,
+以下のようなソースが見られた:
+%</ja>
+
+\begin{LTXexample}
+$f_{高温}$~($f_{\text{high temperature}}$).
+\[ y=(x-1)^2+2\quad よって\quad y>0 \]
+$5\in 素:=\{\,p\in\mathbb N:\text{$p$ is a prime}\,\}$.
+\end{LTXexample}
+%<*en>
+We (the project members of \LuaTeX-ja) think that using
+Japanese characters in math mode are allowed if and only if these are used as identifiers.
+In this point of view,
+%</en>
+%<*ja>
+\LuaTeX-jaプロジェクトでは,数式モード中での和文文字はそれらが識別子として用いられる
+ときのみ許されると考えている.
+この観点から,
+%</ja>
+
+\begin{itemize}
+%<*en>
+\item The lines 1~and~2 above are not correct, since `高温' in above is used as a textual label, and
+`よって' is used as a conjunction.
+%</en>
+%<*ja>
+\item 上記数式のうち1, 2行目は正しくない.なぜならば`高温'が意味のあるラベルと
+ して,`よって'が接続詞として用いられているからである.
+%</ja>
+%<en>\item However, the line~3 is correct, since `素' is used as an identifier.
+%<ja>\item しかしながら,3行目は`素'が識別子として用いられているので正しい.
+\end{itemize}
+%<en>Hence, in our opinion, the above input should be corrected as:
+%<ja>したがって,\LuaTeX-jaプロジェクトの意見としては,上記の入力は次のように直されるべきである:
+\begin{LTXexample}
+$f_{\text{高温}}$~%
+($f_{\text{high temperature}}$).
+\[ y=(x-1)^2+2\quad
+ \mathrel{\text{よって}}\quad y>0 \]
+$5\in 素:=\{\,p\in\mathbb N:\text{$p$ is a prime}\,\}$.
+\end{LTXexample}
+%<*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 Subsection~\ref{ssec-math}.
+%</en>
+%<*ja>
+また\LuaTeX-jaプロジェクトでは,和文文字が識別子として用いられることはほとんどない
+と考えており,したがってこの節では数式モード中の和文フォントを変更する方法については
+記述しない.この方法については\ref{ssec-math}節を参照のこと.
+%</ja>
+
+
\subsection{fontspec}
\label{ssec-fontspec}
%<*en>
package, if needed.
%</en>
%<*ja>
-\Pkg{fontspec} パッケージと同様の機能を和文フォントに対しても用いるためには,
-\Pkg{luatexja-fontspec} パッケージをプリアンブルで読み込む必要がある.このパッケージ
-は必要ならば自動で \Pkg{luatexja} パッケージと \Pkg{fontspec} パッケージを読み込む.
+\Pkg{fontspec}パッケージと同様の機能を和文フォントに対しても用いるためには,
+\Pkg{luatexja-fontspec}パッケージをプリアンブルで読み込む必要がある.このパッケージ
+は必要ならば自動で\Pkg{luatexja}パッケージと\Pkg{fontspec}パッケージを読み込む.
+%</ja>
+
+%<*en>
+In \Pkg{luatexja-fontspec} package, the following 7~commands are defined as
+counterparts of original commands in the \Pkg{fontspec} package:
+%</en>
+%<*ja>
+\Pkg{luatexja-fontspec}パッケージでは,以下の7つのコマンドを\Pkg{fontspec}
+パッケージの元のコマンドに対応するものとして定義している:
+%</ja>
+
+%<*en>
+\begin{center}\small
+\begin{tabular}{ccccc}
+\toprule
+Japanese fonts
+&\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+&\verb+\newjfontfamily+\\
+alphabetic fonts
+&\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+&\verb+\newfontfamily+\\
+\midrule
+Japanese fonts
+&\verb+\newjfontface+&\verb+\defaultjfontfeatures+&\verb+\addjfontfeatures+\\
+alphabetic fonts
+&\verb+\newfontface+&\verb+\defaultfontfeatures+&\verb+\addfontfeatures+\\
+\bottomrule
+\end{tabular}
+\end{center}
+%</en>
+%<*ja>
+\begin{center}\small
+\begin{tabular}{cccc}
+\toprule
+和文
+&\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+\\
+欧文
+&\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+\\
+\midrule
+和文
+&\verb+\newjfontfamily+&\verb+\newjfontface+&\verb+\defaultjfontfeatures+\\
+欧文
+&\verb+\newfontfamily+&\verb+\newfontface+&\verb+\defaultfontfeatures+\\
+\midrule
+和文
+&\verb+\addjfontfeatures+\\
+欧文
+&\verb+\addfontfeatures+\\
+\bottomrule
+\end{tabular}
+\end{center}
+%</ja>
+\begin{LTXexample}[width=0.4\textwidth]
+\fontspec[Numbers=OldStyle]{LMSans10-Regular}
+\jfontspec{IPAexMincho}
+JIS~X~0213:2004→辻
+
+\jfontspec[CJKShape=JIS1990]{IPAexMincho}
+JIS~X~0208:1990→辻
+\end{LTXexample}
+
+%<*en>
+Note that there is no command named \verb+\setmonojfont+, since it is
+popular for Japanese fonts that nearly all Japanese glyphs have same
+widths. Also note that the kerning feature is set off by default in
+these 7~commands, since this feature and \textbf{JAglue} will clash (see
+\ref{para-kern}).
+%</en>
+%<*ja>
+和文フォントについては全ての和文文字のグリフがほぼ等幅であるのが普通であるため,
+\verb+\setmonojfont+ コマンドは存在しないことに注意.また,これらの和文用の7つのコマ
+ンドではKerning featureはデフォルトではoffとなっている.これはこの
+featureが\textbf{JAglue}と衝突するためである(\ref{para-kern}節を参照).
+%</ja>
+
+%<en>\subsection{Preset}
+%<ja>\subsection{プリセット設定}
+\label{ssec-preset}
+
+%<*en>
+To use standard Japanese font settings easily, one can load \Pkg{luatexja-preset}
+package with several options. This package provides functions in a part of
+\Pkg{otf} package and a part of \Pkg{PXchfon} package by Takayuki Yato,
+and loads \Pkg{luatexja-fontspec} internally.
+%</en>
+%<*ja>
+よく使われている和文フォント設定を一行で指定できるようにしたのが
+\Pkg{luatexja-preset}パッケージである.このパッケージは,
+\Pkg{otf}パッケージの一部機能と八登崇之氏による\Pkg{PXchfon}パッケージの一部機能とを
+合わせたような格好をしており,内部で\Pkg{luatexja-fontspec}を読み込んでいる.
+%</ja>
+
+%<en>\paragraph{General options}
+%<ja>\paragraph{一般的なオプション}
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+\item[nodeluxe]
+%<*en>
+Use one-weighted \textit{mincho} and \textit{gothic} font families.
+This means that \verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+ and
+\verb+\gtfamily\mdseries+ use the same font.
+\emph{This option is enabled by default.}
+%</en>
+%<*ja>
+\LaTeXe 環境下での標準設定のように,明朝体・ゴシック体を各1ウェイトで使用する.
+より具体的に言うと,この設定の下では
+\verb+\mcfamily\bfseries+, \verb+\gtfamily\bfseries+, \verb+\gtfamily\mdseries+は
+みな同じフォントとなる.\emph{このオプションは標準で有効になっている.}
+%</ja>
+\item[deluxe]
+%<*en>
+Use \textit{mincho} with two weights (medium~and~bold),
+\textit{gothic} with three weights (medium,~bold and~heavy), and \textit{rounded gothic}%
+\footnote{Provided by \texttt{\char92mgfamily},
+because \textit{rounded gothic} is called \textit{maru gothic} (丸ゴシック) in Japanese.}.
+The heavy weight of \textit{gothic} can be used by ``changing the family'' \verb+\gtebfamily+,
+because \Pkg{fontspec} package can handle only medium (\verb+\mdseries+) and
+bold (\verb+\bfseries+).
+%</en>
+%<*ja>
+明朝体2ウェイト・ゴシック体3ウェイトと,
+丸ゴシック体 (\verb+\mgfamily+) を使用可能とする.
+ゴシック体は細字・太字・極太の3ウェイトがあるが,極太ゴシック体はファミリの切り替え (\verb+\gtebfamily+) %
+で実現している.\Pkg{fontspec}では通常 (\verb+\mdseries+) と太字 (\verb+\bfseries+) しか扱えないために
+このような中途半端な実装になっている.
+%</ja>
+\item[expert]
+%<*en>
+Use horizontal kana alternates, and define a control sequence \verb+\rubyfamily+ to use kana
+characters designed for ruby.
+%</en>
+%<ja>横組専用仮名を用いる.また,\verb+\rubyfamily+ でルビ用仮名が使用可能となる.
+\item[bold]
+%<en>Use bold gothic as bold mincho.
+%<ja>明朝の太字をゴシック体の太字とする.
+\item[90jis]
+%<en>Use 90JIS glyph variants if possible.
+%<ja>出来る限り90JISの字形を使う.
+\item[jis2004]
+%<en>Use JIS2004 glyph variants if possible.
+%<ja>出来る限りJIS2004の字形を使う.
+\item[jis]
+%<*en>
+Use the JFM \texttt{jfm-jis.lua}, instead of \texttt{jfm-ujis.lua}, which is the default JFM of
+\LuaTeX-ja.
+%</en>
+%<*ja>
+用いるJFMを(JISフォントメトリック類似の)\texttt{jfm-jis.lua}にする.このオプションがない時は
+\LuaTeX-ja標準の\texttt{jfm-ujis.lua}が用いられる.
+%</ja>
+\end{list}
+%<*en>
+Note that \texttt{90jis} and \texttt{jis2004} only affect with \textit{mincho},
+\textit{gothic} (and possibly \textit{rounded gothic}) defined by this package.
+We didn't taken accound of when both \texttt{90jis} and \texttt{jis2004} are specified.
+%</en>
+%<*ja>
+\texttt{90jis}と\texttt{jis2004}については本パッケージで定義された
+明朝体・ゴシック体(・丸ゴシック体)にのみ有効である.両オプションが
+同時に指定された場合に動作については全く考慮していない.
+%</ja>
+
+%<en>\paragraph{Kozuka fonts}
+%<ja>\paragraph{小塚フォント}
+%<*en>
+There is not `Kozuka Maru Gothic', therefore Kozuka~Gothic~H is used
+as a substitute for \textit{rounded gothic}.
+%</en>
+%<*ja>
+丸ゴシック体はないので便宜上小塚ゴシックHで代用している.
+%</ja>
+\par\nobreak\medskip
+{\centering\small
+\begin{tabular}{llll}
+\toprule
+&\tt kozuka-pro&\tt kozuka-pr6&\tt kozuka-pr6n\\
+\midrule
+%<*en>
+\bf mincho medium&Kozuka Mincho Pro R&Kozuka Mincho ProVI R&Kozuka Mincho Pr6N R\\
+\bf mincho bold&Kozuka Mincho Pro B&Kozuka Mincho ProVI B&Kozuka Mincho Pr6N B\\
+\midrule
+\bf gothic medium\\
+ without \texttt{deluxe}
+&Kozuka Gothic Pro M&Kozuka Gothic ProVI M&Kozuka Gothic Pr6N M\\
+ with \texttt{deluxe}
+&Kozuka Gothic Pro R&Kozuka Gothic ProVI R&Kozuka Gothic Pr6N R\\
+\midrule
+\bf gothic bold
+&Kozuka Gothic Pro B&Kozuka Gothic ProVI B&Kozuka Gothic Pr6N B\\
+\bf gothic heavy
+&Kozuka Gothic Pro H&Kozuka Gothic ProVI H&Kozuka Gothic Pr6N H\\
+(rounded gothic)
+&Kozuka Gothic Pro H&Kozuka Gothic ProVI H&Kozuka Gothic Pr6N H\\
+%</en>
+%<*ja>
+\gtfamily 明朝体細字&小塚明朝Pro~R&小塚明朝ProVI~R&小塚明朝Pr6N~R\\
+\gtfamily 明朝体太字&小塚明朝Pro~B&小塚明朝ProVI~B&小塚明朝Pr6N~B\\
+\midrule
+\gtfamily ゴシック体細字\\
+ 単ウェイト時
+&小塚ゴシックPro~M&小塚ゴシックProVI~M&小塚ゴシックPr6N~M\\
+ 多ウェイト時
+&小塚ゴシックPro~R&小塚ゴシックProVI~R&小塚ゴシックPr6N~R\\
+\midrule
+\gtfamily ゴシック体太字
+&小塚ゴシックPro~B&小塚ゴシックProVI~B&小塚ゴシックPr6N~B\\
+\gtfamily ゴシック体極太
+&小塚ゴシックPro~H&小塚ゴシックProVI~H&小塚ゴシックPr6N~H\\
+\inhibitglue(丸ゴシック体)\inhibitglue
+&小塚ゴシックPro~H&小塚ゴシックProVI~H&小塚ゴシックPr6N~H\\
+%</ja>
+\bottomrule
+\end{tabular}\par\medskip}
+
+%<en>\paragraph{Hiragino and Morisawa}\
+%<ja>\paragraph{ヒラギノ・モリサワ}\
+\par\nobreak\medskip
+{\centering\small
+\begin{tabular}{lll}
+\toprule
+&\tt hiragino-pro&\tt hiragino-pron\\
+\midrule
+%<*en>
+\bf mincho medium&
+Hiragino Mincho Pro W3&Hiragino Mincho Pr6N W3\\
+\bf mincho bold&
+Hiragino Mincho Pro W6&Hiragino Mincho Pr6N W6\\
+\midrule
+\bf gothic medium\\
+ without \texttt{deluxe}
+&Hiragino Kaku Gothic Pro W6&Hiragino Kaku Gothic ProN W6\\
+ with \texttt{deluxe}
+&Hiragino Kaku Gothic Pro W3&Hiragino Kaku Gothic ProN W3\\
+\midrule
+\bf gothic bold&
+Hiragino Kaku Gothic Pro W6&Hiragino Kaku Gothic ProN W6\\
+\bf gothic heavy&
+Hiragino Kaku Gothic Std W8&Hiragino Kaku Gothic StdN W8\\
+\bf rounded gothic&
+Hiragino Maru Gothic Pro W4&Hiragino Maru Gothic ProN W4\\
+%</en>
+%<*ja>
+\gtfamily 明朝体細字&
+ヒラギノ明朝体Pro~W3&ヒラギノ明朝体Pr6N~W3\\
+\gtfamily 明朝体太字&
+ヒラギノ明朝体Pro~W6&ヒラギノ明朝体Pr6N~W6\\
+\midrule
+\gtfamily ゴシック体細細字\\
+ 単ウェイト時
+&ヒラギノ角ゴPro~W6&ヒラギノ角ゴProN~W6\\
+ 多ウェイト時
+&ヒラギノ角ゴPro~W3&ヒラギノ角ゴProN~W3\\
+\midrule
+\gtfamily ゴシック体太字&
+ヒラギノ角ゴPro~W6&ヒラギノ角ゴProN~W6\\
+\gtfamily ゴシック体極太&
+ヒラギノ角ゴStd~W8&ヒラギノ角ゴStdN~W8\\
+\gtfamily 丸ゴシック体&
+ヒラギノ丸ゴPro~W4&ヒラギノ丸ゴProN~W4\\
+%</ja>
+\midrule
+\midrule
+&\tt morisawa-pro&\tt morisawa-pr6n\\
+\midrule
+%<*en>
+\bf mincho medium&
+Ryumin Pro L-KL&Ryumin Pr6N L-KL\\
+\bf mincho bold&
+Futo Min A101 Pro Bold&Futo Min A101 Pr6N Bold\\
+\bf gothic medium&
+Chu Gothic BBB Pro Med&Chu Gothic BBB Pr6N Med\\
+\bf gothic bold&
+Futo Go B101 Pro Bold&Futo Go B101 Pr6N Bold\\
+\bf gothic heavy&
+Midashi Go Pro MB31&Midashi Go Pr6N MB31\\
+\bf rounded gothic&
+Jun Pro 101&Jun Pr6N 101\\
+%</en>
+%<*ja>
+\gtfamily 明朝体細字&
+リュウミンPro~L-KL&リュウミンPr6N~L-KL\\
+\gtfamily 明朝体太字&
+太ミンA101~Pro~Bold&太ミンA101~Pr6N~Bold\\
+\gtfamily ゴシック体細字&
+中ゴシックBBB~Pro~Med&中ゴシックBBB~Pr6N~Med\\
+\gtfamily ゴシック体太字&
+太ゴB101~Pro~Bold&太ゴB101~Pr6N~Bold\\
+\gtfamily ゴシック体極太&
+見出ゴPro~MB31&見出ゴPr6N~MB31\\
+\gtfamily 丸ゴシック体&
+じゅんPro 101&じゅんPr6N 101\\
%</ja>
+\bottomrule
+\end{tabular}\par\medskip}
+%<en>\paragraph{Settings for single weight}
+%<ja>\paragraph{単ウェイト用設定}
%<*en>
-In \Pkg{luatexja-fontspec} package, the following 7~commands are defined as
-counterparts of original commands in the \Pkg{fontspec} package:
+Next, we describe settings for using only single weight.
+In four settings below, we use same fonts for medium and bold (and heavy) weights.
+(Hence \verb+\mcfamily\bfseries+ and \verb+\mcfamily\mdseries+ yields same Japanese fonts,
+even if \texttt{deluxe} option is also specified).
%</en>
%<*ja>
-\Pkg{luatexja-fontspec} パッケージでは,以下の7つのコマンドを \Pkg{fontspec}
-ã\83\91ã\83\83ã\82±ã\83¼ã\82¸ã\81®å\85\83ã\81®ã\82³ã\83\9eã\83³ã\83\89ã\81«å¯¾å¿\9cã\81\99ã\82\8bã\82\82ã\81®ã\81¨ã\81\97ã\81¦å®\9a義ã\81\97ã\81¦ã\81\84ã\82\8bï¼\9a
+次に,単ウェイト用の設定を述べる.この4設定では「細字」「太字」の区別はない.
+ã\81¾ã\81\9fï¼\8c丸ã\82´ã\82·ã\83\83ã\82¯ä½\93ã\81¯ã\82´ã\82·ã\83\83ã\82¯ä½\93ã\81¨å\90\8cã\81\98ã\83\95ã\82©ã\83³ã\83\88ã\82\92ç\94¨ã\81\84ã\82\8bï¼\8e
%</ja>
-%<*en>
-\begin{center}
-\begin{tabular}{ccccc}
+\par\nobreak\medskip
+{\centering\small
+\begin{tabular}{lllll}
\toprule
-Japanese fonts
-&\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+&\verb+\newjfontfamily+\\
-alphabetic fonts
-&\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+&\verb+\newfontfamily+\\
+&\tt noembed&\tt ipa&\tt ipaex&\tt ms\\
\midrule
-Japanese fonts
-&\verb+\newjfontface+&\verb+\defaultjfontfeatures+&\verb+\addjfontfeatures+\\
-alphabetic fonts
-&\verb+\newfontface+&\verb+\defaultfontfeatures+&\verb+\addfontfeatures+\\
+%<*en>
+\bf mincho&Ryumin-Light (non-embedded)
+&IPAMincho&IPAexMincho&MS Mincho\\
+\bf gothic&GothicBBB-Medium (non-embedded)
+&IPAGothic&IPAexGothic&MS Gothic\\
+%</en>
+%<*ja>
+\gtfamily 明朝体&Ryumin-Light(非埋込)
+&IPA明朝&IPAex明朝&MS明朝\\
+\gtfamily ゴシック体&GothicBBB-Medium(非埋込)
+&IPAゴシック&IPAexゴシック&MSゴシック\\
+%</ja>
\bottomrule
-\end{tabular}
-\end{center}
+\end{tabular}\par\medskip}
+
+%<en>\paragraph{Using HG fonts}
+%<ja>\paragraph{HGフォントの利用}
+%<*en>
+We can use HG~fonts bundled with Microsoft Office for realizing multiple weights in Japanese fonts.
%</en>
%<*ja>
-\begin{center}
-\begin{tabular}{ccccc}
+すぐ前に書いた単ウェイト用設定を,Microsoft Office等に付属するHGフォントを使って
+多ウェイト化した設定もある.
+%</ja>
+\par\nobreak\medskip
+{\centering\small
+\begin{tabular}{llll}
\toprule
-和文フォント
-&\verb+\jfontspec+&\verb+\setmainjfont+&\verb+\setsansjfont+&\verb+\newjfontfamily+\\
-欧文フォント
-&\verb+\fontspec+&\verb+\setmainfont+&\verb+\setsansfont+&\verb+\newfontfamily+\\
+&\tt ipa-hg&\tt ipaex-hg&\tt ms-hg\\
\midrule
-和文フォント
-&\verb+\newjfontface+&\verb+\defaultjfontfeatures+&\verb+\addjfontfeatures+\\
-欧文フォント
-&\verb+\newfontface+&\verb+\defaultfontfeatures+&\verb+\addfontfeatures+\\
+%<*en>
+\bf mincho medium
+&IPAMincho&IPAexMincho&MS Mincho\\\midrule
+\bf mincho bold&
+\multicolumn{3}{c}{HG Mincho E}\\\midrule
+\bf Gothic medium\\
+~~without \texttt{deluxe}
+&IPAGothic&IPAexGothic&MS Gothic\\
+~~with {\tt jis2004}
+&IPAGothic&IPAexGothic&MS Gothic\\
+\cmidrule(lr){1-4}
+~~otherwise&
+\multicolumn{3}{c}{HG Gothic M}\\\midrule
+\bf gothic bold&
+\multicolumn{3}{c}{HG Gothic E}\\\midrule
+\bf gothic heavy&
+\multicolumn{3}{c}{HG Soei Kaku Gothic UB}\\\midrule
+\bf rounded gothic&
+\multicolumn{3}{c}{HG Maru Gothic PRO}\\
+%</en>
+%<*ja>
+\gtfamily 明朝体細字
+&IPA明朝&IPAex明朝&MS明朝\\\midrule
+\gtfamily 明朝体太字&
+\multicolumn{3}{c}{HG明朝E}\\\midrule
+\gtfamily ゴシック体細字\\
+ 単ウェイト時
+&IPAゴシック&IPAexゴシック&MSゴシック\\
+ {\tt jis2004}指定時
+&IPAゴシック&IPAexゴシック&MSゴシック\\
+\cmidrule(lr){1-4}
+ それ以外の時&
+\multicolumn{3}{c}{HGゴシックM}\\\midrule
+\gtfamily ゴシック体太字&
+\multicolumn{3}{c}{HGゴシックE}\\\midrule
+\gtfamily ゴシック体極太&
+\multicolumn{3}{c}{HG創英角ゴシックUB}\\\midrule
+\gtfamily 丸ゴシック体&
+\multicolumn{3}{c}{HG丸ゴシック体PRO}\\
+%</ja>
\bottomrule
-\end{tabular}
-\end{center}
+\end{tabular}\par\medskip}
+
+%<*en>
+Note that HG~Mincho~E, HG~Gothic~E, HG Soei Kaku Gothic UB and HG Maru Gothic PRO
+are internally specified by:
+\begin{description}
+\item[default] by font name (\texttt{HGMinchoE}, etc.).
+\item[{\tt 90jis}] by filename (\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf}).
+\item[{\tt jis2004}] by filename (\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf}).
+\end{description}
+%</en>
+%<*ja>
+なお,HG明朝E・HGゴシックE・HG創英角ゴシックUB・HG丸ゴシック体PROの4つについては,内部で
+\begin{description}
+\item[標準] フォント名(\texttt{HGMinchoE} など)
+\item[{\tt 90jis}指定時] ファイル名 (%
+\texttt{hgrme.ttc}, \texttt{hgrge.ttc}, \texttt{hgrsgu.ttc}, \texttt{hgrsmp.ttf})
+\item[{\tt jis2004}指定時] ファイル名 (%
+\texttt{hgrme04.ttc}, \texttt{hgrge04.ttc}, \texttt{hgrsgu04.ttc}, \texttt{hgrsmp04.ttf})
+\end{description}
+として指定を行っているので注意すること.
+%</ja>
+
+
+%<*en>
+\subsection{\texttt{\char92 CID}, \texttt{\char92 UTF} and macros in \Pkg{otf} package}
+Under \pLaTeX, \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 \Pkg{otf} package.
+If you want to use these functions, load \Pkg{luatexja-otf} package.
+%</en>
+%<*ja>
+\subsection{\texttt{\char92 CID}, \texttt{\char92 UTF}と\Pkg{otf}パッケージのマクロ}
+\pLaTeX では,JIS~X~0208にないAdobe-Japan1-6の文字を出力するために,
+齋藤修三郎氏による\Pkg{otf}パッケージが用いられていた.このパッケージは
+広く用いられているため,\LuaTeX-jaにおいても\Pkg{otf}パッケージの機能の
+一部をサポートしている.これらの機能を用いるためには\Pkg{luatexja-otf}パッケージ
+を読み込めばよい.
%</ja>
\begin{LTXexample}
-\fontspec[Numbers=OldStyle]{TeX Gyre Termes}
-\jfontspec{IPAexMincho}
-JIS~X~0213:2004→辻
+\jfontspec{KozMinPr6N-Regular.otf}
+森\UTF{9DD7}外と内田百\UTF{9592}とが\UTF{9AD9}島屋に行く。
-\addjfontfeatures{CJKShape=JIS1990}
-JIS~X~0208:1990→辻
+\CID{7652}飾区の\CID{13706}野家,
+\CID{1481}城市,葛西駅,
+高崎と\CID{8705}\UTF{FA11}
+
+\aj半角{はんかくカタカナ}
\end{LTXexample}
-%<*en>
-Note that there is no command named \verb+\setmonojfont+, since it is
-popular for Japanese fonts that nearly all Japanese glyphs have same
-widths. Also note that the kerning feature is set off by default in
-these 7~commands, since this feature and \textbf{JAglue} will clash (see
-\ref{para-kern}).
-%</en>
%<*ja>
-和文フォントについては全ての和文文字のグリフがほぼ等幅であるのが普通であるため,
-\verb+\setmonojfont+ コマンドは存在しないことに注意.また,これらの和文用の7つのコマ
-ンドでは Kerning feature はデフォルトでは off となっている.これはこの
-feature が \textbf{JAglue} と衝突するためである(\ref{para-kern} 節を参照).
+\Pkg{otf}パッケージでは,それぞれ次のようなオプションが存在した:
+\begin{description}
+\item[\texttt{deluxe}] 明朝体・ゴシック体各2ウェイトと,丸ゴシック体を扱えるようになる.
+\item[\texttt{expert}] 仮名が横組・縦組専用のものに切り替わり,ルビ用仮名も扱えるようになる.
+\item[\texttt{bold}] ゴシック体を標準で太いウェイトのものに設定する.
+\end{description}
+しかしこれらのオプションは\Pkg{luatexja-otf}パッケージには存在しない.
+\Pkg{otf}パッケージが文書中で使用する和文用TFMを自前の物に置き換えていたのに対し,
+\Pkg{luatexja-otf}パッケージでは,そのようなことは行わないからである.
+
+これら3オプションについては,
+\Pkg{luatexja-preset} パッケージにプリセットを使う時に一緒に指定するか,
+あるいは対応する内容を\ref{ssub-chgfnt}節 (NFSS2) や
+\ref{ssec-fontspec}節 (\Pkg{fontspec}) の方法で手動で指定する必要がある.
%</ja>
%<en>\section{Changing Parameters}
\verb+\ltjgetparameter+.
%</en>
%<*ja>
-\LuaTeX-ja には多くのパラメータが存在する.そして \LuaTeX の仕様のために,
-その多くは \TeX のレジスタにではなく,\LuaTeX-ja 独自の方法で保持されている.
+\LuaTeX-jaには多くのパラメータが存在する.そして\LuaTeX の仕様のために,
+その多くは\TeX のレジスタにではなく,\LuaTeX-ja独自の方法で保持されている.
そのため,これらのパラメータを設定・取得するためには \verb+\ltjsetparameter+ と \verb+\ltjgetparameter+ を
用いる必要がある.
%</ja>
%<en>\subsection{Editing the range of \textbf{JAchar}s}
-%<ja>\subsection{\textbf{JAchar} の範囲の設定}
+%<ja>\subsection{\textbf{JAchar}の範囲の設定}
+\label{ssec-setrange}
%<*en>
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
+can be done by using \verb+\ltjdefcharrange+. For example, the
next line assigns whole characters in Supplementary Ideographic Plane
and the character `漢' to the range number~100.
%</en>
%<*ja>
-\textbf{JAchar} の範囲を設定するためには,まず各文字に0より大きく217より小さい index を
-å\89²ã\82\8aå½\93ã\81¦ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8bï¼\8eã\81\93ã\82\8cã\81«ã\81¯ \verb+\ltjdefcharrange+ ã\83\97ã\83ªã\83\9fã\83\86ã\82£ã\83\96ã\82\92ç\94¨ã\81\84ã\82\8bï¼\8e
-例えば,次のように書くことで追加漢字面 (SIP) にある全ての文字と `漢' が
+\textbf{JAchar}の範囲を設定するためには,まず各文字に0より大きく217より小さいindexを
+割り当てる必要がある.これには \verb+\ltjdefcharrange+ を用いる.
+例えば,次のように書くことで追加漢字面(SIP)にある全ての文字と`漢'が
「100番の文字範囲」に属するように設定される.
%</ja>
\begin{lstlisting}
-\ltjdefcharrange{100}{"10000-"1FFFF,`漢}
+\ltjdefcharrange{100}{"20000-"2FFFF,`漢}
\end{lstlisting}
%<*en>
This assignment of numbers to ranges are always global, so you should
%</en>
%<*ja>
もし指定されたある文字がある非零番号の範囲に属していたならば,これは新しい設定で
-上書きされる.例えば,SIP は全て \LuaTeX-ja のデフォルトでは4番の文字範囲に
-属しているが,上記の指定を行えば SIP は100番に属すようになり,4番からは除かれる.
+上書きされる.例えば,SIPは全て\LuaTeX-jaのデフォルトでは4番の文字範囲に
+属しているが,上記の指定を行えばSIPは100番に属すようになり,4番からは除かれる.
%</ja>
%<*en>
setting of \LuaTeX-ja):
%</en>
%<*ja>
-文字範囲に番号を割り当てた後は,\textsf{jacharrange} パラメータが \textbf{JAchar} と
-して扱われる文字の範囲を設定するために用いられる.例えば,以下は \LuaTeX-ja の
+文字範囲に番号を割り当てた後は,\textsf{jacharrange}パラメータが\textbf{JAchar}と
+して扱われる文字の範囲を設定するために用いられる.例えば,以下は\LuaTeX-jaの
初期設定である:
%</ja>
\begin{verbatim}
that `the characters that belong to range~$n$ are treated as \textbf{JAchar}'.
%</en>
%<*ja>
-\textsf{jacharrange} パラメータには整数のリストを与える.
-リスト中の負の整数 $-n$ は「文字範囲 $n$ に属する文字は \textbf{ALchar} として
-扱われる」ことを意味し,正の整数 $+n$ は \textbf{JAchar} として扱うことを意味する.
+\textsf{jacharrange}パラメータには整数のリストを与える.
+リスト中の負の整数$-n$は「文字範囲$n$に属する文字は\textbf{ALchar}として
+扱われる」ことを意味し,正の整数$+n$は\textbf{JAchar}として扱うことを意味する.
%</ja>
%<*en>
%</en>
%<*ja>
\paragraph{初期設定}
-\LuaTeX-ja では8つの文字範囲を設定している.これらは以下のデータに基づいて決定して
+\LuaTeX-jaでは8つの文字範囲を設定している.これらは以下のデータに基づいて決定して
いる.
%</ja>
\begin{itemize}
-%<*en>
-\item Blocks in Unicode~6.0.
-%</en>
-%<*ja>
-\item Unicode~6.0 のブロック.
-%</ja>
-%<*en>
-\item The \texttt{Adobe-Japan1-UCS2} mapping between a CID Adobe-Japan1-6 and Unicode.
-%</en>
-%<*ja>
-\item \texttt{Adobe-Japan1-UCS2} による Adobe-Japan1-6 の CID と Unicode の間の
- マッピング.
-%</ja>
-%<*en>
-\item The \texttt{PXbase} bundle for \upTeX\ by Takayuki Yato.
-%</en>
-%<*ja>
-\item 八登崇之氏による \upTeX 用の \texttt{PXbase} バンドル.
-%</ja>
+%<en>\item Blocks in Unicode~6.0.
+%<ja>\item Unicode~6.0のブロック.
+%<en>\item The \texttt{Adobe-Japan1-UCS2} mapping between a CID Adobe-Japan1-6 and Unicode.
+%<ja>\item Adobe-Japan1-6のCIDとUnicodeの間の対応表\texttt{Adobe-Japan1-UCS2}.
+%<en>\item The \Pkg{PXbase} bundle for \upTeX\ by Takayuki Yato.
+%<ja>\item 八登崇之氏による\upTeX 用の\Pkg{PXbase}バンドル.
\end{itemize}
%<*en>
\texttt{prefercjk} settings defined in \texttt{PXbase} bundle.
%</en>
%<*ja>
-以下ではこれら8つの文字範囲について記述する.番号のあとのアルファベット `J' と `A'
-はデフォルトで \textbf{JAchar} か \textbf{ALchar} かを表している.これらの設定は
-\texttt{PXbase} バンドルで定義されている \texttt{prefercjk} と類似のものである.
+以下ではこれら8つの文字範囲について記述する.番号のあとのアルファベット`J'と`A'
+はデフォルトで\textbf{JAchar}か\textbf{ALchar}かを表している.これらの設定は
+\texttt{PXbase}バンドルで定義されている\texttt{prefercjk}と類似のものである.
%</ja>
\begin{description}
%<*en>
consists of the following characters:
%</en>
%<*ja>
-\item[範囲 8${}^{\text{J}}$] ISO~8859-1 の上位領域(ラテン1補助)と
- JIS~X~0208 の共通部分にある記号.この文字範囲は
+\item[範囲8${}^{\text{J}}$] ISO~8859-1の上位領域(ラテン1補助)と
+ JIS~X~0208の共通部分にある記号.この文字範囲は
以下の文字で構成される:
%</ja>
\begin{multicols}{2}
\begin{itemize}
\def\ch#1#2{\item \char"#1\ (\texttt{U+00#1}, #2)}%"
-%<*en>
\ch{A7}{Section Sign}
\ch{A8}{Diaeresis}
\ch{B0}{Degree sign}
\ch{B6}{Paragraph sign}
\ch{D7}{Multiplication sign}
\ch{F7}{Division Sign}
-%</en>
-%<*ja>
-\ch{A7}{節記号}
-\ch{A8}{トレマ}
-\ch{B0}{度}
-\ch{B1}{正又は負符号}
-\ch{B4}{アキュート・アクセント}
-\ch{B6}{段落記号}
-\ch{D7}{乗算記号}
-\ch{F7}{除算記号}
-%</ja>
\end{itemize}
\end{multicols}
This range consist of the following Unicode ranges, \emph{except characters in the range~8 above}:
%</en>
%<*ja>
-\item[範囲 1${}^{\text{A}}$] ラテン文字.一部はAdobe-Japan1-6 にも含まれている.
- この範囲は以下の Unicode のブロックから構成されている.
- \textbf{ただし,範囲 8 は除く.}
+\item[範囲1${}^{\text{A}}$] ラテン文字.一部はAdobe-Japan1-6にも含まれている.
+ この範囲は以下のUnicodeのブロックから構成されている.
+ \textbf{ただし,範囲8は除く.}
%</ja>
\begin{multicols}{2}
\begin{itemize}
-%<*en>
\item \texttt{U+0080}--\texttt{U+00FF}: Latin-1 Supplement
\item \texttt{U+0100}--\texttt{U+017F}: Latin Extended-A
\item \texttt{U+0180}--\texttt{U+024F}: Latin Extended-B
\item \texttt{U+02B0}--\texttt{U+02FF}: Spacing Modifier Letters
\item \texttt{U+0300}--\texttt{U+036F}: Combining Diacritical Marks
\item \texttt{U+1E00}--\texttt{U+1EFF}: Latin Extended Additional
-%</en>
-%<*ja>
-\item \texttt{U+0080}--\texttt{U+00FF}: ラテン1補助
-\item \texttt{U+0100}--\texttt{U+017F}: ラテン文字拡張A
-\item \texttt{U+0180}--\texttt{U+024F}: ラテン文字拡張B
-\item \texttt{U+0250}--\texttt{U+02AF}: IPA拡張(国際音声記号)
-\item \texttt{U+02B0}--\texttt{U+02FF}: 前進を伴う修飾文字
-\item \texttt{U+0300}--\texttt{U+036F}: ダイアクリティカルマーク(合成可能)
-\item \texttt{U+1E00}--\texttt{U+1EFF}: ラテン文字拡張追加
-%</ja>
\par\
\end{itemize}
\end{multicols}
fonts) has some of these characters.
%</en>
%<*ja>
-\item[範囲 2${}^{\text{J}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがって多くの
+\item[範囲2${}^{\text{J}}$] ギリシャ文字とキリル文字.JIS~X~0208(したがってほとんどの
和文フォント)はこれらの文字を持つ.
%</ja>
\begin{multicols}{2}
\item \texttt{U+1F00}--\texttt{U+1FFF}: Greek Extended
%</en>
%<*ja>
-\item \texttt{U+0370}--\texttt{U+03FF}: ギリシア文字及びコプト文字
+\item \texttt{U+0370}--\texttt{U+03FF}: ギリシア文字・コプト文字
\item \texttt{U+0400}--\texttt{U+04FF}: キリル文字
\item \texttt{U+1F00}--\texttt{U+1FFF}: キリル文字補助
%</ja>
indicated in Table~\ref{table-rng3}.
%</en>
%<*ja>
-\item[範囲 3${}^{\text{J}}$] 句読点と記号類.ブロックのリストは表~\ref{table-rng3}
+\item[範囲3${}^{\text{J}}$] 句読点と記号類.ブロックのリストは表\ref{table-rng3}%
に示してある.
%</ja>
\begin{table}[!tb]
-%<*en>
-\caption{Unicode blocks in predefined character range~3.}
-%</en>
-%<*ja>
-\caption{文字範囲 3 に指定されている Unicode ブロック.}
-%</ja>
+%<en>\caption{Unicode blocks in predefined character range~3.}
+%<ja>\caption{文字範囲3に指定されているUnicodeブロック.}
\label{table-rng3}
\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%"
\begin{center}\small
\begin{tabular}{llll}
-%<*en>
"2000--"206F&General Punctuation&
"2070--"209F&Superscripts and Subscripts\\
"20A0--"20CF&Currency Symbols&
"2700--"27BF&Dingbats&
"2900--"297F&Supplemental Arrows-B\\
"2980--"29FF&Misc.\ Mathematical Symbols-B&
-"2B00--"2BFF&Miscellaneous Symbols and Arrows\\
-"E000--"F8FF&Private Use Area&
-%</en>
-%<*ja>
-"2000--"206F&一般句読点&
-"2070--"209F&上付き・下付き\\
-"20A0--"20CF&通貨記号&
-"20D0--"20FF&記号用ダイアクリティカルマーク(合成可能)\\
-"2100--"214F&文字様記号&
-"2150--"218F&数字に準じるもの\\
-"2190--"21FF&矢印&
-"2200--"22FF&数学記号(演算子)\\
-"2300--"23FF&その他の技術用記号&
-"2400--"243F&制御機能用記号\\
-"2500--"257F&罫線素片&
-"2580--"259F&ブロック要素\\
-"25A0--"25FF&幾何学模様&
-"2600--"26FF&その他の記号\\
-"2700--"27BF&装飾記号&
-"2900--"297F&補助矢印B\\
-"2980--"29FF&その他の数学記号B&
-"2B00--"2BFF&その他の記号及び矢印\\
-"E000--"F8FF&私用領域(外字領域)&
-%</ja>
+"2B00--"2BFF&Miscellaneous Symbols and Arrows
\end{tabular}
\end{center}
\end{table}
we put the definition of this range itself:
%</en>
%<*ja>
-\item[範囲 4${}^{\text{A}}$] 通常和文フォントには含まれていない文字.
- この範囲は他の範囲にないほとんど全ての Unicode ブロック
+\item[範囲4${}^{\text{A}}$] 通常和文フォントには含まれていない文字.
+ この範囲は他の範囲にないほとんど全てのUnicodeブロック
で構成されている.したがって,ブロックのリストを示す
代わりに,範囲の定義そのものを示す:
%</ja>
\begin{lstlisting}
\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, "FB00-"FB4F, "10000-"1FFFF} % non-Japanese
+ "2C00-"2E7F, "4DC0-"4DFF, "A4D0-"A82F, "A840-"ABFF, "FB00-"FE0F,
+ "FE20-"FE2F, "FE70-"FEFF, "10000-"1FFFF, "E000-"F8FF} % non-Japanese
\end{lstlisting}
-%<*en>
-\item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas.
-%</en>
-%<*ja>
-\item[範囲 5${}^{\text{A}}$] 代用符号と補助私用領域.
-%</ja>
-%<*en>
-\item[Range~6${}^{\text{J}}$] Characters used in Japanese. The block list is indicated in Table~\ref{table-rng6}.
-%</en>
-%<*ja>
-\item[範囲 6${}^{\text{J}}$] 日本語で用いられる文字.ブロックのリストは
- 表~\ref{table-rng6} に示す.
-%</ja>
+%<en>\item[Range~5${}^{\text{A}}$] Surrogates and Supplementary Private Use Areas.
+%<ja>\item[範囲5${}^{\text{A}}$] 代用符号と補助私用領域.
+%<en>\item[Range~6${}^{\text{J}}$] Characters used in Japanese. The block list is indicated in Table~\ref{table-rng6}.
+%<ja>\item[範囲6${}^{\text{J}}$] 日本語で用いられる文字.ブロックのリストは表\ref{table-rng6}に示す.
\begin{table}[!tb]
-%<*en>
-\caption{Unicode blocks in predefined character range~6.}
-%</en>
-%<*ja>
-\caption{文字範囲 6 に指定されている Unicode ブロック.}
-%</ja>
+%<en>\caption{Unicode blocks in predefined character range~6.}
+%<ja>\caption{文字範囲6に指定されているUnicodeブロック.}
\label{table-rng6}
\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%"
\begin{center}\small
\begin{tabular}{llll}
-%<*en>
"2460--"24FF&Enclosed Alphanumerics&
"2E80--"2EFF&CJK Radicals Supplement\\
"3000--"303F&CJK Symbols and Punctuation&
"FE30--"FE4F&CJK Compatibility Forms\\
"FE50--"FE6F&Small Form Variants&
"{20}000--"{2F}FFF&(Supplementary Ideographic Plane)
-%</en>
-%<*ja>
-"2460--"24FF&囲み英数字&
-"2E80--"2EFF&CJK部首補助\\
-"3000--"303F&CJKの記号及び句読点&
-"3040--"309F&平仮名\\
-"30A0--"30FF&片仮名&
-"3190--"319F&漢文用記号(返り点)\\
-"31F0--"31FF&片仮名拡張&
-"3200--"32FF&囲みCJK文字・月\\
-"3300--"33FF&CJK互換用文字&
-"3400--"4DBF&CJK統合漢字拡張A\\
-"4E00--"9FFF&CJK統合漢字&
-"F900--"FAFF&CJK互換漢字\\
-"FE10--"FE1F&縦書き形&
-"FE30--"FE4F&CJK互換形\\
-"FE50--"FE6F&小字形&
-"{20}000--"{2F}FFF&(追加漢字面)
-%</ja>
\end{tabular}
\end{center}
\end{table}
The block list is indicated in Table~\ref{table-rng7}.
%</en>
%<*ja>
-\item[範囲 7${}^{\text{J}}$] CJK 言語で用いられる文字のうち,Adobe-Japan1-6 に
+\item[範囲7${}^{\text{J}}$] CJK言語で用いられる文字のうち,Adobe-Japan1-6に
含まれていないもの.
- ブロックのリストは表~\ref{table-rng7} に示す.
+ ブロックのリストは表\ref{table-rng7}に示す.
%</ja>
\begin{table}[!tb]
-%<*en>
-\caption{Unicode blocks in predefined character range~7.}
-%</en>
-%<*ja>
-\caption{文字範囲 7 に指定されている Unicode ブロック.}
-%</ja>
+%<en>\caption{Unicode blocks in predefined character range~7.}
+%<ja>\caption{文字範囲7に指定されているUnicodeブロック.}
\label{table-rng7}
\catcode`\"=13\def"#1#2#3#4{\texttt{U+#1#2#3#4}}%"
\begin{center}\small
\begin{tabular}{llll}
-%<*en>
"1100--"11FF&Hangul Jamo&
"2F00--"2FDF&Kangxi Radicals\\
"2FF0--"2FFF&Ideographic Description Characters&
"A830--"A83F&Common Indic Number Forms\\
"AC00--"D7AF&Hangul Syllables&
"D7B0--"D7FF&Hangul Jamo Extended-B
-%</en>
-%<*ja>
-"1100--"11FF&ハングル字母&
-"2F00--"2FDF&康熙部首\\
-"2FF0--"2FFF&漢字構成記述文字&
-"3100--"312F&注音字母 (注音符号)\\
-"3130--"318F&ハングル互換字母&
-"31A0--"31BF&注音字母拡張\\
-"31C0--"31EF&CJKの筆画&
-"A000--"A48F&イ文字\\
-"A490--"A4CF&イ文字部首&
-"A830--"A83F&共通インド数字に準じるもの\\
-"AC00--"D7AF&ハングル音節文字&
-"D7B0--"D7FF&ハングル字母拡張B
-%</ja>
\end{tabular}
\end{center}
\end{table}
%<en>\subsection{\Param{kanjiskip} and \Param{xkanjiskip}}
-%<ja>\subsection{\Param{kanjiskip} と \Param{xkanjiskip}}
+%<ja>\subsection{\Param{kanjiskip}と\Param{xkanjiskip}}
\label{subs-kskip}
-%<*en>
-\textbf{JAglue} is divided into the following three categories:
-%</en>
-%<*ja>
-\textbf{JAglue} は以下の3つのカテゴリに分類される:
-%</ja>
+%<en>\textbf{JAglue} is divided into the following three categories:
+%<ja>\textbf{JAglue}は以下の3つのカテゴリに分類される:
\begin{itemize}
%<*en>
\item Glues/kerns specified in JFM. If \verb+\inhibitglue+ is issued
place.
%</en>
%<*ja>
-\item JFM で指定されたグルー/カーン.もし \verb+\inhibitglue+ が和文文字の周りで
+\item JFMで指定されたグルー/カーン.もし \verb+\inhibitglue+ が和文文字の周りで
発行されていれば,このグルーは挿入されない.
%</ja>
%<*en>
kanjiskip}).
%</en>
%<*ja>
-\item デフォルトで2つの \textbf{JAchar} の間に挿入されるグルー(\Param{kanjiskip}).
+\item デフォルトで2つの\textbf{JAchar}の間に挿入されるグルー(\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}).
%</ja>
%<*en>
\item The default glue which inserted between a \textbf{JAchar} and an
- \textbf{ALchar} (\Param{xkanjiskip}).
+ \textbf{ALchar} (\Param{\hyperlink{fld:xks}{xkanjiskip}}).
%</en>
%<*ja>
-\item デフォルトで \textbf{JAchar} と \textbf{ALchar} の間に挿入されるグルー(\Param{xkanjiskip}).
+\item デフォルトで\textbf{JAchar}と\textbf{ALchar}の間に挿入されるグルー(\Param{\hyperlink{fld:xks}{xkanjiskip}}).
%</ja>
\end{itemize}
%<*en>
-The value (a skip) of \Param{kanjiskip} or \Param{xkanjiskip} can be
+The value (a skip) of \Param{\hyperlink{fld:kanjiskip}{kanjiskip}} or \Param{\hyperlink{fld:xks}{xkanjiskip}} can be
changed as the following.
%</en>
%<*ja>
-\Param{kanjiskip} や \Param{xkanjiskip} の値は以下のようにして変更可能である.
+\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}や\Param{\hyperlink{fld:xks}{xkanjiskip}}の値は以下のようにして変更可能である.
%</ja>
\begin{lstlisting}
\ltjsetparameter{kanjiskip={0pt plus 0.4pt minus 0.4pt},
\end{lstlisting}
%<*en>
-It may occur that JFM contains the data of `ideal width of \Param{kanjiskip}'
-and/or `ideal width of \Param{xkanjiskip}'.
-To use these data from JFM, set the value of \Param{kanjiskip} or
-\Param{xkanjiskip} to \verb+\maxdimen+.
+It may occur that JFM contains the data of `ideal width of \Param{\hyperlink{fld:kanjiskip}{kanjiskip}}'
+and/or `ideal width of \Param{\hyperlink{fld:xks}{xkanjiskip}}'.
+To use these data from JFM, set the value of \Param{\hyperlink{fld:kanjiskip}{kanjiskip}} or
+\Param{\hyperlink{fld:xks}{xkanjiskip}} to \verb+\maxdimen+.
%</en>
%<*ja>
-JFM は「望ましい \Param{kanjiskip} の値」や「望ましい \Param{xkanjiskip} の値」を
+JFMは「望ましい\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の値」や「望ましい\Param{\hyperlink{fld:xks}{xkanjiskip}}の値」を
持っていることがある.
-これらのデータを使うためには,\Param{kanjiskip} や \Param{xkanjiskip} の
+これらのデータを使うためには,\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}や\Param{\hyperlink{fld:xks}{xkanjiskip}}の
値を \verb+\maxdimen+ の値に設定すればよい.
%</ja>
%<en>\subsection{Insertion Setting of \Param{xkanjiskip}}
-%<ja>\subsection{\Param{xkanjiskip} の設定の挿入}
+%<ja>\subsection{\Param{xkanjiskip} の挿入設定}
%<*en>
-It is not desirable that \Param{xkanjiskip} is inserted into every
+It is not desirable that \Param{\hyperlink{fld:xks}{xkanjiskip}} is inserted into every
boundary between \textbf{JAchar}s and \textbf{ALchar}s. For example,
-\Param{xkanjiskip} should not be inserted after opening parenthesis
+\Param{\hyperlink{fld:xks}{xkanjiskip}} should not be inserted after opening parenthesis
(\textit{e.g.}, compare `(あ' and `(\hskip\ltjgetparameter{xkanjiskip}あ').
-\LuaTeX-ja can control whether \Param{xkanjiskip} can be inserted
+\LuaTeX-ja can control whether \Param{\hyperlink{fld:xks}{xkanjiskip}} can be inserted
before/after a character, by changing \Param{jaxspmode} for \textbf{JAchar}s and
\Param{alxspmode} parameters \textbf{ALchar}s respectively.
%</en>
%<*ja>
-\Param{xkanjiskip} がすべての \textbf{JAchar} と \textbf{ALchar} の境界に
-挿入されるのは望ましいことではない.例えば,\Param{xkanjiskip} は開き括弧の
-後には挿入されるべきではない(`(あ' と `(\hskip\ltjgetparameter{xkanjiskip}あ' を
+\Param{\hyperlink{fld:xks}{xkanjiskip}}がすべての\textbf{JAchar}と\textbf{ALchar}の境界に
+挿入されるのは望ましいことではない.例えば,\Param{\hyperlink{fld:xks}{xkanjiskip}}は開き括弧の
+後には挿入されるべきではない(`(あ'と`(\hskip\ltjgetparameter{xkanjiskip}あ'を
比べてみよ).
-\LuaTeX-ja では \Param{xkanjiskip} をある文字の前/後に挿入するかどうかを,
-\textbf{JAchar} に対しては \Param{jaxspmode} を,\textbf{ALchar} に対しては
-\Param{alxspmode} をそれぞれ変えることで制御することができる.
+\LuaTeX-jaでは\Param{\hyperlink{fld:xks}{xkanjiskip}}をある文字の前/後に挿入するかどうかを,
+\textbf{JAchar}に対しては\Param{jaxspmode}を,\textbf{ALchar}に対しては
+\Param{alxspmode}をそれぞれ変えることで制御することができる.
%</ja>
\begin{LTXexample}
\ltjsetparameter{jaxspmode={`あ,preonly}, alxspmode={`\!,postonly}}
%<*en>
The second argument \texttt{preonly} means `the insertion of
-\Param{xkanjiskip} is allowed before this character, but not after'.
+\Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed before this character, but not after'.
the other possible values are \texttt{postonly}, \texttt{allow} and \texttt{
inhibit}.
%</en>
%<*ja>
-2つ目の引数の \texttt{preonly} は「\Param{xkanjiskip} の挿入はこの文字の
+2つ目の引数の \texttt{preonly}は「\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入はこの文字の
前でのみ許され,後では許さない」ことを意味する.他に指定可能な値は
-\texttt{postonly}, \texttt{allow}, \texttt{inhibit} である.
+\texttt{postonly}, \texttt{allow}, \texttt{inhibit}である.
%</ja>
%<*en>
%</en>
%<*ja>
なお,現行の
-仕様では,\Param{jaxspmode}, \Param{alxspmode} はテーブルを共有しており,
+仕様では,\Param{jaxspmode}, \Param{alxspmode}はテーブルを共有しており,
上のコードの1行目を次のように変えても同じことになる:
%</ja>
\begin{verbatim}
\ltjsetparameter{alxspmode={`あ,preonly}, jaxspmode={`\!,postonly}}
\end{verbatim}
%<*en>
-One can use also numbers to specify these two parameters (see Subsection \ref{ssec-param}).
+One can use also numbers to specify these two parameters (see Subsection~\ref{ssec-param}).
%</en>
%<*ja>
-また,これら2パラメータには数値で値を指定することもできる(\ref{ssec-param} 節を参照).
+また,これら2パラメータには数値で値を指定することもできる(\ref{ssec-param}節を参照).
%</ja>
%<*en>
-If you want to enable/disable all insertions of \Param{kanjiskip} and
-\Param{xkanjiskip}, set \Param{autospacing} and \Param{autoxspacing}
+If you want to enable/disable all insertions of \Param{\hyperlink{fld:kanjiskip}{kanjiskip}} and
+\Param{\hyperlink{fld:xks}{xkanjiskip}}, set \Param{autospacing} and \Param{autoxspacing}
parameters to \texttt{true}/\texttt{false}, respectively.
%</en>
%<*ja>
-もし全ての \Param{kanjiskip} と \Param{xkanjiskip} の挿入を有効化/無効化
-したければ,それぞれ \Param{autospacing} と \Param{autoxspacing} を
-\texttt{true}/\texttt{false} に設定すればよい.
+もし全ての\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}と\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入を有効化/無効化
+したければ,それぞれ\Param{autospacing}と\Param{autoxspacing}を
+\texttt{true}/\texttt{false}に設定すればよい.
%</ja>
%<en>\subsection{Shifting Baseline}
%<ja>\subsection{ベースラインの移動}
-
%<*en>
To make a match between a Japanese font and an alphabetic font, sometimes
shifting of the baseline of one of the pair is needed. In \pTeX, this is achieved
必要になる.\pTeX ではこれは \verb+\ybaselineshift+ を非零の長さに設定することで
なされていた(欧文フォントのベースラインが下がる).しかし,日本語が主ではない
文書に対しては,欧文フォントではなく和文フォントのベースラインを移動した方がよい.
-このため,\LuaTeX-ja では欧文フォントのベースラインのシフト量
-(\Param{yalbaselineshift} パラメータ)と和文フォントのベースラインのシフト量
+このため,\LuaTeX-jaでは欧文フォントのベースラインのシフト量
+(\Param{yalbaselineshift}パラメータ)と和文フォントのベースラインのシフト量
(\Param{yjabaselineshift}パラメータ)を独立に設定できるようになっている.
%</ja>
%</en>
%<*ja>
この機能には面白い使い方がある:2つのパラメータを適切に設定することで,サイズの
-異なる文字を中心線に揃えることができるのだ.
+異なる文字を中心線に揃えることができる.
以下は一つの例である(値はあまり調整されていないことに注意):
%</ja>
\begin{LTXexample}
\end{LTXexample}
-%<en>\subsection{Cropmark}
-%<ja>\subsection{トンボ}
-
-%<*en>
-Cropmark is a mark for indicating 4~corners and horizontal/vertical
-center of the paper. In Japanese, we call cropmark as tombo(w).
-\pLaTeX\ and this \LuaTeX-ja support `tombow' by their kernel.
-The following steps are needed to typeset cropmark:
-%</en>
-%<*ja>
-トンボは用紙の四つ角と水平/垂直方向の中心を表す印である.
-\pLaTeX と \LuaTeX-ja ではトンボの出力をサポートしている.
-トンボを出力するためには以下の手順が必要である:
-%</ja>
-
-\begin{enumerate}
-%<*en>
-\item First, define the banner which will be printed at the upper left
- of the paper. This is done by assigning a token list to
- \verb+\@bannertoken+.
-
-For example, the following sets banner as `\texttt{filename (YYYY-MM-DD hh:mm)}':
-%</en>
-%<*ja>
-\item まず,用紙の左上に印刷されるバナーを定義する.これは \verb+\@bannertoken+
- にトークンリストを与えることでなされる.
-
-例えば,以下はバナーとして `\texttt{filename (YYYY-MM-DD hh:mm)}' を設定する:
-%</ja>
-
-\begin{verbatim}
-\makeatletter
-
-\hour\time \divide\hour by 60 \@tempcnta\hour \multiply\@tempcnta 60\relax
-\minute\time \advance\minute-\@tempcnta
-\@bannertoken{%
- \jobname\space(\number\year-\two@digits\month-\two@digits\day
- \space\two@digits\hour:\two@digits\minute)}%
-\end{verbatim}
-
-\item ...
-\end{enumerate}
-
-
%<en>\part{Reference}
%<ja>\part{リファレンス}
\label{part-ref}
%<en>\section{Font Metric and Japanese Font}
%<ja>\section{フォントメトリックと和文フォント}
-%<en>\subsection{\texttt{\char92jfont} primitive}
-%<ja>\subsection{\texttt{\char92jfont} プリミティブ}
+%<en>\subsection{\texttt{\char92jfont}}
+%<ja>\subsection{\texttt{\char92jfont} 命令}
\label{ssec-jfont}
%<*en>
To load a font as a Japanese font, you must use the
-\verb+\jfont+ primitive instead of~\verb+\font+, while
+\verb+\jfont+ instead of~\verb+\font+, while
\verb+\jfont+ admits the same syntax used in~\verb+\font+.
\LuaTeX-ja automatically loads \Pkg{luaotfload} package,
so TrueType/OpenType fonts with features can be used for Japanese fonts:
%</en>
%<*ja>
-ã\83\95ã\82©ã\83³ã\83\88ã\82\92å\92\8cæ\96\87ã\83\95ã\82©ã\83³ã\83\88ã\81¨ã\81\97ã\81¦èªã\81¿è¾¼ã\82\80ã\81\9fã\82\81ã\81«ã\81¯ï¼\8c\verb+\jfont+ ã\83\97ã\83ªã\83\9fã\83\86ã\82£ã\83\96ã\82\92
+フォントを和文フォントとして読み込むためには,\verb+\jfont+ を
\verb+\font+ プリミティブの代わりに用いる.
-\verb+\jfont+ ã\83\97ã\83ªã\83\9fã\83\86ã\82£ã\83\96ã\81®æ\96\87æ³\95ã\81¯ \verb+\font+ ã\81¨å\90\8cã\81\98ã\81§ã\81\82ã\82\8bï¼\8e
-\LuaTeX-ja は \Pkg{luaotfload} パッケージを自動的に読み込むので,
-TrueType/OpenType フォントに feature を指定したものを和文フォントとして用いる
+\verb+\jfont+ の文法は \verb+\font+ と同じである.
+\LuaTeX-jaは\Pkg{luaotfload}パッケージを自動的に読み込むので,
+TrueType/OpenTypeフォントにfeatureを指定したものを和文フォントとして用いる
ことができる:
%</ja>
-\begin{LTXexample}
-\jfont\tradgt={file:ipaexg.ttf:script=latn;%
+\begin{LTXexample}[width=0.3\textwidth]
+\jfont\tradgt={file:KozMinPr6N-Regular.otf:script=latn;%
+trad;-kern;jfm=ujis} at 14pt
-\tradgt{}当/体/医/区
+\tradgt 当/体/医/区
\end{LTXexample}
%<*en>
%</en>
%<*ja>
なお,\verb+\jfont+ で定義されたコントロールシーケンス(上の例だと \verb+\tradgt+)
-は \textit{font\_def} トークンではないので,\verb+\fontname\tradgt+ のような
+は\textit{font\_def}トークンではないので,\verb+\fontname\tradgt+ のような
入力はエラーとなることに注意する.以下では \verb+\jfont+ で定義された
-コントロールシーケンスを <jfont\_cs> で表す.
+コントロールシーケンスを<jfont\_cs>で表す.
%</ja>
\paragraph{JFM}
As noted in Introduction, a JFM has measurements of characters and
glues/kerns that are automatically inserted for Japanese
typesetting. The structure of JFM will be described in the next
-subsection. At the calling of \verb+\jfont+ primitive, you must specify
+subsection. At the calling of \verb+\jfont+, you must specify
which JFM will be used for this font by the following keys:
%</en>
%<*ja>
-「はじめに」の節で述べたように,JFM は文字と和文組版で自動的に挿入される
-グルー/カーンの寸法情報を持っている.JFM の構造は次の小節で述べる.
-\verb+\jfont+ プリミティブの呼び出しの際には,どの JFM を用いるのかを以下のキーで
+「はじめに」の節で述べたように,JFMは文字と和文組版で自動的に挿入される
+グルー/カーンの寸法情報を持っている.JFMの構造は次の小節で述べる.
+\verb+\jfont+ 命令の呼び出しの際には,どのJFMを用いるのかを以下のキーで
指定する必要がある:
%</ja>
The following JFMs are shipped with \LuaTeX-ja:
%</en>
%<*ja>
-JFM の名前を指定する.もし以前に指定されたJFMが読み込まれていなければ,
-\texttt{jfm-<name>.lua} を読み込む.
-
-以下の JFM が \LuaTeX-ja には同梱されている:
+JFMの名前を指定する.もし以前に指定されたJFMが読み込まれていなければ,
+\texttt{jfm-<name>.lua}を読み込む.以下のJFMが\LuaTeX-jaには同梱されている:
%</ja>
\begin{description}
%<*en>
is used in \upTeX. When you use the \Pkg{luatexja-otf} package, you should use this JFM.
%</en>
%<*ja>
-\item[\tt jfm-ujis.lua] \LuaTeX-ja の標準 JFM である.この JFM は \upTeX で
- 用いられる UTF/OTF パッケージ用のメトリックである \verb+upnmlminr-h.tfm+ を
- 元にしている.\Pkg{luatexja-otf} パッケージを使うときはこの JFM を指定するべきである.
+\item[\tt jfm-ujis.lua] \LuaTeX-jaの標準JFMである.このJFMは\upTeX で
+ 用いられるUTF/OTFパッケージ用の和文用TFMである \verb+upnmlminr-h.tfm+ を
+ 元にしている.\Pkg{luatexja-otf}パッケージを使うときはこのJFMを指定するべきである.
%</ja>
%<*en>
\item[\tt jfm-jis.lua] A counterpart for \verb+jis.tfm+, `JIS font
rectangles.
%</en>
%<*ja>
-\item[\tt jfm-jis.lua] \pTeX で広く用いられている「JIS フォントメトリック」
- \verb+jis.tfm+ に相当する JFM である.\texttt{jfm-ujis.lua} とこの
- \texttt{jfm-jis.lua} の主な違いは,\texttt{jfm-ujis.lua} ではほとんどの文字が
- 正方形状であるのに対し,\texttt{jfm-jis.lua} では横長の長方形状である.
+\item[\tt jfm-jis.lua] \pTeX で広く用いられている「JISフォントメトリック」
+ \verb+jis.tfm+ に相当するJFMである.\texttt{jfm-ujis.lua}とこの
+ \texttt{jfm-jis.lua}の主な違いは,\texttt{jfm-ujis.lua}ではほとんどの文字が
+ 正方形状であるのに対し,\texttt{jfm-jis.lua}では横長の長方形状である.
%</ja>
%<*en>
\item[\tt jfm-min.lua] A counterpart for \verb+min10.tfm+, which is one
shown in Table~\ref{tab-difjfm}.
%</en>
%<*ja>
-\item[\tt jfm-min.lua] \pTeX に同梱されているデフォルトの和文フォントメトリック
- である \verb+min10.tfm+ に相当する JFM である.この JFM と他の2つの JFM の間には
- 表 \ref{tab-difjfm} に示すような特筆すべき違いがある.
+\item[\tt jfm-min.lua] \pTeX に同梱されているデフォルトの和文用TFM
+ である \verb+min10.tfm+ に相当するJFMである.このJFMと他の2つのJFMの間には
+ 表\ref{tab-difjfm}に示すような特筆すべき違いがある.
%</ja>
\end{description}
-\item[jfmvar=<string>] Sometimes there is a need that ...
+%<*en>
+\item[jfmvar=<string>] Sometimes there is a need that \ldots.
+%</en>
+%<*ja>
+\item[jfmvar=<string>] 標準では,JFMとサイズが同じで,
+ 実フォントだけが異なる2つの和文フォントは……
+%</ja>
+\begin{LTXexample}[width=0.3\textwidth]
+\ltjsetparameter{differentjfm=both}
+\jfont\F=file:KozMinPr6N-Regular.otf:jfm=ujis
+\jfont\G=file:KozGoPr6N-Medium.otf:jfm=ujis
+\jfont\H=file:KozGoPr6N-Medium.otf:jfm=ujis;jfmvar=hoge
+
+\F ){\G 【】}( % halfwidth space
+ ){\H 『』}( % fullwidth space
+
+\ltjsetparameter{differentjfm=paverage}
+\end{LTXexample}
\end{list}
\begin{table}[t]
%<ja>\caption{\LuaTeX-ja に同梱されている JFM の違い}
\label{tab-difjfm}
\ltjsetparameter{jacharrange={+3}}
-\begin{center}
-\def\r#1{{\jfont\g=psft:Ryumin-Light:jfm=#1 at 14.43324pt \g
+\begin{center}\small
+\def\r#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 14.43324pt \g
\setbox0=\vtop{\hsize=7\zw\noindent ◆◆◆◆◆◆◆
ある日モモちゃんがお使いで迷子になって泣きました.}\copy0
\vrule height 0pt depth \dp0}}
-\def\s#1{{\jfont\g=psft:Ryumin-Light:jfm=#1 at 14.43324pt \g
+\def\s#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 14.43324pt \g
\setbox0=\vtop{\hsize=7\zw\noindent ちょっと!何}\copy0}}
-\def\t#1{{\jfont\g=psft:Ryumin-Light:jfm=#1 at 19.24432pt \g
+\def\t#1{{\jfont\g=file:KozMinPr6N-Regular.otf:jfm=#1 at 19.24432pt \g
\setbox0=\hbox{漢}%
\vrule width 0.4pt height\ht0 depth\dp0\kern-.2pt\copy0
\kern-\wd0\vrule width\wd0height .2pt depth .2pt
\toprule
&\tt jfm-ujis.lua&\tt jfm-jis.lua&\tt jfm-min.lua\\
\midrule
-%<en>Example~1\footnotemark
-%<ja>例1\footnotemark
+%<en>Example~1\cite{min10}
+%<ja>例1\cite{min10}
&\r{ujis}&\r{jis}&\r{min}\\
%<en>Example~2
%<ja>例2
\end{center}
\ltjsetparameter{jacharrange={-3}}
\end{table}
-\footnotetext{from: 乙部厳己, min10フォントについて.
-\texttt{http://argent.shinshu-u.ac.jp/\~{\ }otobe/tex/files/min10.pdf}.}
%<en>\paragraph{Note: kern feature}
%<ja>\paragraph{注意:kern feature}
%</en>
%<*ja>
いくつかのフォントはグリフ間のスペースについての情報を持っている.しかし,
-この情報は \LuaTeX-ja とはあまり相性がよくない.具体的には,この情報に基づいて挿入
-されるカーニングスペースは \textbf{JAglue} の挿入過程の\textbf{前に}挿入され,
-JFM に基づくグルー/カーンも挿入される場合には2文字間の意図しないスペースの原因と
+この情報は\LuaTeX-ja とはあまり相性がよくない.具体的には,この情報に基づいて挿入
+されるカーニングスペースは\textbf{JAglue}の挿入過程の\textbf{前に}挿入され,
+JFMに基づくグルー/カーンも挿入される場合には2文字間の意図しないスペースの原因と
なる.
%</ja>
-
\begin{itemize}
%<*en>
\item You should specify \texttt{-kern} in
- \verb+jfont+ primitive, when you want to use other font features,
+ \verb+jfont+ when you want to use other font features,
such as \texttt{script=...}\,.
%</en>
%<*ja>
-\item \texttt{script=...} といった feature を使いたい場合には,\verb+\jfont+
- ã\83\97ã\83ªã\83\9fã\83\86ã\82£ã\83\96ã\81« \texttt{-kern} を指定するべきである.
+\item \texttt{script=...}といったfeatureを使いたい場合には,\verb+\jfont+
+ ã\81«\texttt{-kern}を指定するべきである.
%</ja>
%<*en>
\item If you want to use Japanese fonts in proportional width, and use
- information from this font, use \texttt{jfm-prop.lua} for its JFM, and ...
+ information from this font, use \texttt{jfm-prop.lua} for its JFM, and\,\ldots.
%</en>
%<*ja>
\item もしプロポーショナル幅の和文フォントをそのフォントの情報に基づいて使いたい
- ならば,\texttt{jfm-prop.lua} を JFM として指定し,……
+ ならば,\texttt{jfm-prop.lua}をJFMとして指定し,……
%</ja>
-
TODO: kanjiskip?
\end{itemize}
+%<*ja>
+\paragraph{\texttt{extend}と\texttt{slant}}
+OpenType font featureと見かけ上同じような形式で指定できるものに,
+\begin{description}
+\item[\texttt{extend=}<extend>] 横方向に<extend>倍拡大する.
+\item[\texttt{slant=}<slant>] <slant>に指定された割合だけ傾ける.
+\end{description}
+の2つがある.
+\texttt{extend}や\texttt{slant}を指定した場合は,それに応じたJFMを指定すべきである%
+\footnote{\LuaTeX-jaでは,これらに対するJFMを特に提供することはしない予定である.}.
+例えば,次の例では無理やり通常のJFMを使っているために,文字間隔やイタリック補正量が
+正しくない:
+%</ja>
+%<*en>
+\paragraph{\texttt{extend} and \texttt{slant}}
+The following setting can be specified as OpenType font features:
+\begin{description}
+\item[\texttt{extend=}<extend>] expand the font horizontally by <extend>.
+\item[\texttt{slant=}<slant>] slant the font.
+\end{description}
+Note that \LuaTeX-ja doesn't adjust JFMs by these \texttt{extend} and \texttt{slant}
+settings; you have to write new JFMs on purpose.
+For example, the following example uses the standard JFM \texttt{jfm-ujis.lua}, hence
+letter-spacing and the width of italic correction are not correct:
+%</en>
+\begin{LTXexample}[width=0.3\textwidth]
+\jfont\E=file:KozMinPr6N-Regular.otf:extend=1.5;jfm=ujis
+\E あいうえお
+
+\jfont\S=file:KozMinPr6N-Regular.otf:slant=1;jfm=ujis
+\S あいう\/ABC
+\end{LTXexample}
+
+
%<en>\subsection{Prefix \texttt{psft}}
-%<ja>\subsection{\texttt{psft} プレフィックス}
+%<ja>\subsection{\texttt{psft}プリフィックス}
\label{ssec-psft}
%<*en>
-Besides \texttt{file:}\ and \texttt{name:}\ prefixes, one can use \texttt{psft:}\
-prefix in \verb+\jfont+ (and~\verb+\font+) primitive,
+Besides `\texttt{file:}'\ and `\texttt{name:}'\ prefixes, one can use `\texttt{psft:}'\
+prefix in \verb+\jfont+ (and~\verb+\font+),
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 Adobe Reader) will be used.
+`GothicBBB-Medium'.
+
+\emph{OpenType font features, such as `{\tt +jp90}',
+have no meaning in `name-only' fonts using this `{\tt psft:}'\ prefix.
+This is because we can't expect what fonts are actually used by the PDF reader.}
+Note that \texttt{extend}~and~\texttt{slant} settings (see~above) are supported
+with \texttt{psft} prefix, because they are only simple linear transformations.
%</en>
%<*ja>
-\texttt{file:} と \texttt{name:} のプレフィックスに加えて,
-\verb+\jfont+ プリミティブ(と \verb+\font+ プリミティブ)では
-\texttt{psft:} プレフィックスを用いることができる.
-このプレフィックスを用いることで,PDF には埋め込まれない「名前だけの」
-和文フォントを指定することができる.典型的な使い方は「標準的な」和文フォント,
-つまり `Ryumin-Light' と `GothicBBB-Medium' を指定することである.
-この場合,カーニング他の情報は小塚明朝 Pr6N Regular
-(Adobe 社によるフォントで,Adobe Reader の日本語フォントパックに含まれている)
-が用いられる.
+\texttt{file:} と \texttt{name:} のプリフィックスに加えて,
+\verb+\jfont+(と \verb+\font+ プリミティブ)では
+\texttt{psft:}プリフィックスを用いることができる.
+このプリフィックスを用いることで,PDFには埋め込まれない「名前だけの」
+和文フォントを指定することができる.「標準的な」和文フォント,
+つまり`Ryumin-Light'と`GothicBBB-Medium'の指定でこのプリフィックスが使われる.
+
+\textbf{\texttt{psft}プリフィックスの下では
+\texttt{+jp90} などのOpenType font featureの効力はない.
+非埋込フォントをPDFに使用すると,実際にどのようなフォントが
+表示に用いられるか予測できないからである.}
+\texttt{extend}と\texttt{slant}指定は単なる変形のため
+\texttt{psft}プリフィックスでも使用可能である.
%</ja>
-\paragraph{\texttt{cid} key}
+%<en>\paragraph{\texttt{cid} key}
+%<ja>\paragraph{\texttt{cid}キー}
\label{para-cid}
- \texttt{cid} key, ...
-
+%<*en>
+The default font defined by using \texttt{psft:} prefix is for Japanese typesetting;
+it is Adobe-Japan1-6 CID-keyed font.
+One can specify \texttt{cid} key to use other CID-keyed non-embedded fonts
+for Chinese or Korean typesetting.
+%</en>
+%<*ja>
+標準で\texttt{psft:}プリフィックスで定義されるフォントは日本語用のもので
+あり,Adobe-Japan1-6のCIDに対応したものとなる.しかし,\LuaTeX-jaは中国語
+の組版にも威力を発揮することが分かり,日本語フォントでない非埋込フォント
+の対応も必要となった.そのために追加されたのが\texttt{cid}キーである.
-%<en>\subsection{Structure of JFM file}
-%<ja>\subsection{JFM ファイルの構造}
+\texttt{cid}キーに値を指定すると,そのCIDを持った非埋込フォントを定義することができる:
+%</ja>
+\begin{lstlisting}[numbers=left]
+\jfont\testJ={psft:Ryumin-Light:cid=Adobe-Japan1-6;jfm=jis} % Japanese
+\jfont\testD={psft:Ryumin-Light:jfm=jis} % default value is Adobe-Japan1-6
+\jfont\testC={psft:AdobeMingStd-Light:cid=Adobe-CNS1-6;jfm=jis} % Traditional Chinese
+\jfont\testG={psft:SimSun:cid=Adobe-GB1-5;jfm=jis} % Simplified Chinese
+\jfont\testK={psft:Batang:cid=Adobe-Korea1-2;jfm=jis} % Korean
+\end{lstlisting}
+%<*en>
+Note that the code above specifies \texttt{jfm-jis.lua}, which is for Japanese fonts,
+as JFM for Chinese and Korean fonts.
+%</en>
+%<*ja>
+上のコードでは中国語・韓国語用フォントに対してもJFMに
+日本語用の\texttt{jfm-jis.lua}を指定しているので注意されたい.
+%</ja>
%<*en>
-A JFM file is a Lua script which has only one function call:
+At present, \LuaTeX-ja supports only 4 values written in the sample code above.
+Specifying other values, e.g.,
+%</en>
+%<*ja>
+今のところ,\LuaTeX-jaは上のサンプルコード中に書いた4つの値しかサポートしていない.
+%</ja>
+\begin{lstlisting}
+\jfont\test={psft:Ryumin-Light:cid=Adobe-Japan2;jfm=jis}
+\end{lstlisting}
+%<*en>
+produces the following error:
%</en>
%<*ja>
-JFM ファイルはただ一つの関数呼び出しを含む Lua スクリプトである:
+のようにそれら以外の値を指定すると,エラーが発生する:
%</ja>
+\begin{lstlisting}[numbers=left]
+! Package luatexja Error: bad cid key `Adobe-Japan2'.
+
+See the luatexja package documentation for explanation.
+Type H <return> for immediate help.
+<to be read again>
+ \par
+l.78
+
+? h
+I couldn't find any non-embedded font information for the CID
+`Adobe-Japan2'. For now, I'll use `Adobe-Japan1-6'.
+Please contact the LuaTeX-ja project team.
+?
+\end{lstlisting}
+
+%<en>\subsection{Structure of JFM file}
+%<ja>\subsection{JFMファイルの構造}
+
+%<en>A JFM file is a Lua script which has only one function call:
+%<ja>JFMファイルはただ一つの関数呼び出しを含むLuaスクリプトである:
\begin{verbatim}
luatexja.jfont.define_jfm { ... }
\end{verbatim}
%<*ja>
実際のデータは上で \verb+{ ... }+ で示されたテーブルの中に格納されている.
以下ではこのテーブルの構造について記す.
-なお,JFM ファイル中の長さは全て design-size を単位とする浮動小数点数であることに
+なお,JFMファイル中の長さは全てdesign-sizeを単位とする浮動小数点数であることに
注意する.
%</ja>
%<ja>(必須)
%<en>The direction of JFM. At the present, only \texttt{'yoko'} is supported.
-%<ja>JFM の書字方向.現時点では \texttt{'yoko'} のみがサポートされる.
+%<ja>JFMの書字方向.現時点では横書き(\texttt{'yoko'})のみがサポートされる.
\item[zw=<length>]
%<en>(required)
%<en>(required)
%<ja>(必須)
-%<en>The amount of the length of the `full-height' (height + depth).
-%<ja>「全角高さ」(height + depth)の長さ.
+%<en>The amount of the `full-height' (height + depth).
+%<ja>「全角高さ」(height + depth)の長さ.
\item[kanjiskip=\{<natural>, <stretch>, <shrink>\}]
%<en>(optional)
%<ja>(任意)
%<*en>
-This field specifies the `ideal' amount of \Param{kanjiskip}. As noted
+This field specifies the `ideal' amount of \Param{\hyperlink{fld:kanjiskip}{kanjiskip}}. As noted
in Subsection~\ref{subs-kskip}, if the parameter
- \Param{kanjiskip} is \verb+\maxdimen+, the value specified
+ \Param{\hyperlink{fld:kanjiskip}{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
+「理想的な」\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の量を指定する.\ref{subs-kskip}節で述べたように,
+もし\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}が \verb+\maxdimen+ の値ならば,このフィールドで指定された
+値が実際には用いられる(もしこのフィールドがJFMで指定されていなければ,
+0\,ptであるものとして扱われる).<stretch>と<shrink>のフィールドもdesign-size
が単位であることに注意せよ.
%</ja>
%<ja>(任意)
%<*en>
-Like the \Param{kanjiskip} field, this field specifies the `ideal'
- amount of \Param{xkanjiskip}.
+Like the \texttt{kanjiskip} field, this field specifies the `ideal'
+ amount of \Param{\hyperlink{fld:xks}{xkanjiskip}}.
%</en>
%<*ja>
-\Param{kanjiskip} フィールドと同様に,\Param{xkanjiskip} の「理想的な」量を
+\texttt{kanjiskip}フィールドと同様に,\Param{\hyperlink{fld:xks}{xkanjiskip}}の「理想的な」量を
指定する.
%</ja>
\end{list}
%<*en>
+\paragraph{Character classes}
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
the following fields:
%</en>
%<*ja>
-上記のフィールドに加えて,JFM ファイルはそのインデックスが自然数であるいくつかの
-サブテーブルを持つ.インデックスが $i\in\omega$ であるテーブルは「文字クラス」$i$ の
-情報を格納する.少なくとも,文字クラス0は常に存在するので,JFM ファイルはインデックス
-が \texttt{[0]} のサブテーブルを持たなければならない.それぞれのサブテーブル
-(そのインデックスを $i$ で表わす)は以下のフィールドを持つ:
+\paragraph{文字クラス}
+上記のフィールドに加えて,JFMファイルはそのインデックスが自然数であるいくつかの
+サブテーブルを持つ.インデックスが$i\in\omega$であるテーブルは「文字クラス」$i$の
+情報を格納する.少なくとも,文字クラス0は常に存在するので,JFMファイルはインデックス
+が\texttt{[0]}のサブテーブルを持たなければならない.それぞれのサブテーブル
+(そのインデックスを$i$で表わす)は以下のフィールドを持つ:
%</ja>
\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
%<*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
+ type~$i$. This field is optional if $i=0$, since all
+ \textbf{JAchar} which do not belong any character classes other
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.
+ \textbf{JAchar}s). In the list, character(s) can be specified in the following form:
+\begin{itemize}
+\item a Unicode code point
+\item the character itself (as a Lua string, like \hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ'+})
+\item a string like \hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ*'+} (the character followed by an asterisk)
+\item several ``imaginary'' characters (We will describe these later.)
+\end{itemize}
%</en>
%<*ja>
-このフィールドは文字クラス~$i$ に属する文字のリストである.このフィールドは $i=0$ の
-場合には必須ではない.なぜならば,文字クラス 0 には,0 以外の文字クラスに属するものを
-除いた全ての \textbf{JAchar} が属するからである(よって,文字クラス 0 はほとんどの
-\textbf{JAchar} を含む).このリストでは,文字はその文字コードを用いて,もしくは
-文字それ自体(長さ1の文字列)によって指定される.さらに,このリストで指定される
-「仮想的な文字」も存在する.これらについては後に記す.
+このフィールドは文字クラス$i$に属する文字のリストである.このフィールドは$i=0$の
+場合には任意である(文字クラス0には,0以外の文字クラスに属するものを
+除いた全ての\textbf{JAchar}が属するから).このリスト中で文字を指定するには,以下の方法がある:
+\begin{itemize}
+\item Unicode におけるコード番号
+\item 「\hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ'+}」のような,文字それ自体
+\item 「\hbox{\ltjsetparameter{autoxspacing=false}\verb+'あ*'+}」のような,文字それ自体の後にアスタリスクをつけたもの
+\item いくつかの「仮想的な文字」(後に説明する)
+\end{itemize}
%</ja>
\item[width=<length>, height=<length>, depth=<length>, italic=<length>]
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$ に属する全ての文字は,その幅,高さ,深さがこのフィールドで指定した
+文字クラス$i$に属する文字の幅,高さ,深さ,イタリック補正の量を指定する.
+文字クラス$i$に属する全ての文字は,その幅,高さ,深さがこのフィールドで指定した
値であるものとして扱われる.
しかし,例外が一つある:もし \texttt{'prop'} が \texttt{width} フィールドに
指定された場合,文字の幅はその「実際の」グリフの幅となる.
%</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} で説明する.
+\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>
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{left}と\texttt{down}は0である一方,
+\texttt{align}フィールドが\texttt{'middle'}や\texttt{'right'}であることは
珍しいことではない.
-例えば,\texttt{align} フィールドを \texttt{'right'} に指定することは,
+例えば,\texttt{align}フィールドを\texttt{'right'}に指定することは,
文字クラスが開き括弧類であるときに実際必要である.
%</ja>
+
\begin{figure}[!tb]
\begin{minipage}{0.4\textwidth}%
\begin{center}\unitlength=10pt\small
field is \texttt{'middle'}.
%</en>
%<*ja>
-\texttt{align} フィールドの値が \texttt{'middle'} である和文文字を含むノードを
+\texttt{align}フィールドの値が\texttt{'middle'}である和文文字を含むノードを
考えよう.
%</ja>
\begin{itemize}
%</en>
%<*ja>
黒色の長方形はノードの枠である.
-その幅,高さ,深さは JFM によって指定される.
+その幅,高さ,深さはJFMによって指定される.
%</ja>
\item
%<*en>
the `real' glyph is centered horizontally (the green rectangle).
%</en>
%<*ja>
-\texttt{align} フィールドは \texttt{middle} なので,「実際の」グリフは
+\texttt{align}フィールドは\texttt{middle}なので,「実際の」グリフは
水平方向の中心に配置される(緑色の長方形).
%</ja>
\item
glyph is indicated by the red rectangle.
%</en>
%<*ja>
-さらに,グリフは \texttt{left} と \texttt{down} の値に従ってシフトされる.
+さらに,グリフは\texttt{left}と\texttt{down}の値に従ってシフトされる.
最終的な実際のグリフの位置は赤色の長方形で示された位置になる.
%</ja>
\end{itemize}
\end{minipage}
-\caption{
+\medskip
+
+\caption{%
%<en>The position of the `real' glyph.
%<ja>「実際の」グリフの位置.
}
\label{fig-pos}
\end{figure}
+\item[kern={\{[$j$]=<kern>, [$j'$]=\{<kern>, [<ratio>]\}, ...\}}]
+
+\item[glue={\{[$j$]=\{<width>, <stretch>, <shrink>, [<priority>], [<ratio>]\}, ...\}}]
+%<*ja>
+文字クラス$i$の文字と$j$の文字の間に挿入されるkernやglueの量を指定する.
+
+ <priority>は\texttt{luatexja-adjust.sty} による優先順位付き
+ 行長調整(\ref{ssec-adj}節)が有効なときのみ意味を持つ.
+このフィールドは省略可能であり,行調整処理におけるこのglueの優先
+ 度を$-2$から$+2$の間の整数で指定する.<priority>の省略時の値
+ は0であり,範囲外の値が指定されたときの動作は未定義である).
+
+<ratio>も省略可能フィールドであり,$-1$から$+1$の実数値をとる.省略時の値は0である.
+\begin{itemize}
+\item $-1$はこのグルーが「前の文字」由来であることを示す.
+\item $+1$はこのグルーが「後の文字」由来であることを示す.
+\item それ以外の値は,「前の文字」由来のグルーと「後の文字」由来の
+グルーが混合されていることを示す.
+\end{itemize}
+なお,このフィールドの値は\Param{\hyperlink{fld:diffjfm}{differentjfm}}の値が\texttt{pleft},~\texttt{pright},~\texttt{paverage}の値のときのみ実際に用いられる.
+
+例えば,\cite{x4051}では,句点と中点の間には,
+句点由来の二分空きと中点由来の四分空きが挿入されるが,この場合には
+\begin{itemize}
+\item <width>には$0.5+0.25=0.75$を指定する.
+\item <ratio>には次の値を指定する.
+\[
+ -1\cdot \frac{0.5}{0.5+0.25} + 1 \cdot \frac{0.25}{0.5+0.25} = -\frac13
+\]
+\end{itemize}
+
+%</ja>
-\item[kern={\{[$j$]=<kern>, ...\}}]
+\item[end\_stretch=<kern>]
+\item[end\_shrink=<kern>]
+%<*ja>
+これらのフィールドは省略可能である.
+優先順位付き行長調整が有効であり,かつ現在の文字クラスの文字が行
+ 末に来た時に,行長を詰める調整・伸ばす調整のた
+ めにこの文字と行末の間に挿入可能なカーンの大きさを指定する.
+%</ja>
-\item[glue={\{[$j$]=\{<width>, <stretch>, <shrink>\}, ...\}}]
\end{list}
+%<*ja>
+\paragraph{文字クラスの決定}
+文字クラスの決定は少々複雑である.ここでは例を用いて説明しよう.
+
+
+たとえば,次の内容を一部に含んだ \texttt{jfm-test.lua} を考えよう:
+\begin{lstlisting}
+ [0] = {
+ chars = { '漢', 'ヒ*' },
+ align = 'left', left = 0.0, down = 0.0,
+ width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
+ },
+ [2000] = {
+ chars = { '。', '、*', 'ヒ' },
+ align = 'left', left = 0.0, down = 0.0,
+ width = 0.5, height = 0.88, depth = 0.12, italic=0.0,
+ },
+\end{lstlisting}
+句点「。」の幅は二分であるので
+\begin{LTXexample}
+\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert
+\setbox0\hbox{\a 。\inhibitglue 漢}
+\the\wd0
+\end{LTXexample}
+では,全角二分(15.0\,pt)とならなければおかしいが,上の実行結果では20\,ptとなっている.
+それは以下の事情によるものである:
+\begin{enumerate}
+\item \verb+vert+ featureによって句点が縦書き用のグリフと置き換わる(\Pkg{luaotfload} による処理).
+\item しかしこのグリフは「文字コード」U+F0000以降とみなされている
+(実際にいくらになるかは,フォントによって異なる).
+\item よって,文字クラス0とみなされるため,結果として「。」の幅は全角だと認識されてしまう.
+\end{enumerate}
+
+一方,「\texttt{'、*'}」のようにアスタリスクつきの指定があると,
+状況は異なってくる.
+\begin{LTXexample}[width=0.3\textwidth]
+\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+vert
+\a 漢、\inhibitglue 漢
+\end{LTXexample}
+ここで,読点「、」の文字クラスは,以下のようにして決まる.
+\begin{enumerate}
+\item とりあえず句点の時と同じように,\Pkg{luaotfload} によって縦書き用読点のグリフに置き換わる.
+\item 置換後のグリフの「文字コード」はU+F0000以降であり,
+そのままでは文字クラスは0と判定される.
+\item ところが,JFMには「\texttt{'、*'}」指定があるので,置換前の横書き用読点のグリフ「、」(文字コードはU+3001)によって文字クラスを判定する.
+\item 結果として,上の出力例中の読点の文字クラスは2000となる.
+\end{enumerate}
+
+なお,置換後のグリフで判定した文字クラスの値が0でなければ,そちらをそのまま作用する.
+\begin{LTXexample}[width=0.3\textwidth]
+\jfont\a=file:KozMinPr6N-Regular.otf:jfm=test;+hwid
+\a 漢ヒひ
+\end{LTXexample}
+上の例では,
+\texttt{hwid} featureにより,「ヒ」が半角の「ヒ」に置き換わるが,
+文字クラスは「ヒ」の属する0\textbf{ではなく},「ヒ」の属する2000となる.
+%</ja>
+
+%<ja>\paragraph{仮想的な文字}
+%<en>\paragraph{Imaginary characters}
%<*en>
As described before, you can specify several `imaginary characters' in
\texttt{chars} field. The most of these characters are regarded as the
クラス0の文字」として扱われていた文字であり,その結果として\pTeX より細か
い組版調整ができるようになっている.以下でその一覧を述べる:
%</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} の間の境界として用いられる.
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+%%\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+で開始された)段落の先頭を表す.
+%<ja>水平ボックスの先頭と末尾,及びインデントされていない(\verb+\noindent+ で開始された)段落の先頭を表す.
\item['parbdd']
%<en>The beginning of an (indented) paragraph.
-%<ja>通常の(\verb+\noindent+で開始されていない)段落の先頭.
+%<ja>通常の(\verb+\noindent+ で開始されていない)段落の先頭.
\item['jcharbdd']
-%<en>A boundary between \textbf{JAchar} and anything else (such as \textbf{ALchar}, kern, glue, ...).
+%<en>A boundary between \textbf{JAchar} and anything else (such as \textbf{ALchar}, kern, glue,\,\ldots).
%<ja>和文文字と「その他のもの」(欧文文字,glue,kern等)との境界.
\item[$-1$]
\end{list}
%<en>\paragraph{Porting JFM from \pTeX}
-%<ja>\paragraph{\pTeX 用和文フォントメトリックの移植}
+%<ja>\paragraph{\pTeX 用和文用TFMの移植}
% ToDo: English version.
%<*en>
-...
+\ldots
%</en>
%<*ja>
-以下に,\pTeX 用和文フォントメトリックを\LuaTeX-ja用に移植する場合の注意点を挙げておく.
+以下に,\pTeX 用に作られた和文用TFMを\LuaTeX-ja用に移植する場合の注意点を挙げておく.
\begin{itemize}
\item 実際に出力される和文フォントのサイズがdesign sizeとなる.
このため,例えば$1\,\textrm{zw}$がdesign sizeの0.962216倍であるJISフォン
文字クラスに関してはグルー/カーンの設定はしない.
これは,\pTeX では,
- 水平ボックスの先頭・末尾とインデントされていない(\verb+\noindent+で開始さ
+ 水平ボックスの先頭・末尾とインデントされていない(\verb+\noindent+ で開始さ
れた)段落の先頭にはJFMグルーは入らないという仕様を実現させるためである.
\item \pTeX の組版を再現させようというのが目的であれば以上の注意を守れば十分である.
ところで,\pTeX では通常の段落の先頭にJFMグルーが残るという仕様があるので,
段落先頭の開き括弧は全角二分下がりになる.全角下がりを実現させるに
- は,段落の最初に手動で\verb+\inhibitglue+を追加するか,あるいは
- \verb+\everypar+のhackを行い,それを自動化させるしかなかった.
+ は,段落の最初に手動で \verb+\inhibitglue+ を追加するか,あるいは
+ \ \verb+\everypar+ のハックを行い,それを自動化させるしかなかった.
一方,\LuaTeX-jaでは,\texttt{'parbdd'}によって,それがJFM側で調整できるよ
うになった.例えば,\LuaTeX-ja同梱のJFMのように,\texttt{'boxbdd'}と同じ文字クラスに
\texttt{'parbdd'}を入れれば全角下がりとなる.
-\ltjsetparameter{jacharrange={+3}}
\begin{LTXexample}
-\jfont\g=psft:Ryumin-Light:jfm=test \g
+\jfont\g=file:KozMinPr6N-Regular.otf:jfm=test \g
\parindent1\zw\noindent{}◆◆◆◆◆
\par 「◆◆←二分下がり
\par 【◆◆←全角下がり
\par 〔◆◆←全角二分下がり
\end{LTXexample}
\end{itemize}
-\ltjsetparameter{jacharrange={-3}}
+
+但し,\verb+\everypar+ を利用している場合にはこの仕組みは正しく動かない.
+そのような例としては箇条書き中の \verb+\item+ で始まる段落があり,\Pkg{ltjsclasses}では
+人工的に「\texttt{'parbdd'}の意味を持つ」whatsitノードを作ることによって対処している%
+\footnote{\texttt{no\_runtime/ltjsclasses.dtx} を参照されたい.
+JFM側で一部の対処ができることにより,\Pkg{jsclasses}のようにif文の判定はしていない.}
%</ja>
%<en>\subsection{Math Font Family}
%</en>
%<*ja>
\TeX\ は数式フォントを16のファミリ\footnote{Omega, Aleph, \LuaTeX,そして
- $\varepsilon$-\kern-.125em(u)\pTeX\ では256 の数式ファミリを扱うことができるが,
- これをサポートするために plain \TeX と \LaTeX では外部パッケージを読み込む必要が
+ $\varepsilon$-\kern-.125em(u)\pTeX\ では256の数式ファミリを扱うことができるが,
+ これをサポートするためにplain \TeX と\LaTeX では外部パッケージを読み込む必要が
ある.}で管理し,それぞれのファミリは3つのフォントを持っている:\verb+\textfont+, \verb+\scriptfont+ そして \verb+\scriptscriptfont+ である.
%</ja>
you can set both \verb+\fam+ and \verb+\jfam+ to the same value.
%</en>
%<*ja>
-\LuaTeX-ja の数式中での和文フォントの扱いも同様である.
-表 \ref{tab-math} は数式フォントファミリに対する \TeX\ のプリミティブと対応する
+\LuaTeX-jaの数式中での和文フォントの扱いも同様である.
+表\ref{tab-math}は数式フォントファミリに対する \TeX のプリミティブと対応する
ものを示している.\verb+\fam+ と \verb+\jfam+ の値の間には関係はなく,
適切な設定の下では \verb+\fam+ と \verb+\jfam+ の両方に同じ値を設定することができる.
%</ja>
\begin{table}[!tb]
-%<en>\caption{Primitives for Japanese math fonts.}
-%<ja>\caption{和文数式フォントに対するプリミティブ.}
+%<en>\caption{Control sequences for Japanese math fonts}
+%<ja>\caption{和文数式フォントに対する命令}
\label{tab-math}
-\begin{center}\def\{{\char`\{}\def\}{\char`\}}
-\begin{tabular}{lll}
+\begin{center}
+\def\{{\char`\{}\def\}{\char`\}}\small
+\begin{tabular}{ll}
\toprule
-%<en>&Japanese fonts&alphabetic fonts\\
-%<ja>&和文フォント&欧文フォント\\
+%<en>\bf Japanese fonts&\bf alphabetic fonts\\
+%<ja>\bf 和文フォント&\bf 欧文フォント\\
\midrule
-font family&\verb+\jfam+${}\in [0,256)$&\verb+\fam+\\
-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>\\
+\verb+\jfam+${}\in [0,256)$&\verb+\fam+\\
+\tt\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\textfont+<fam>=<font\_cs>\\
+\tt\Param{jascriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\scriptfont+<fam>=<font\_cs>\\
+\tt\Param{jascriptscriptfont}\,=\{<jfam>,<jfont\_cs>\}&\tt\verb+\scriptscriptfont+<fam>=<font\_cs>\\
\bottomrule
\end{tabular}
\end{center}
be accessed via \verb+luatexbase.add_to_callback+ function and so on, as other callbacks.
%</en>
%<*ja>
-\LuaTeX 自体のものに加えて,\LuaTeX-ja もコールバックを持っている.
+\LuaTeX 自体のものに加えて,\LuaTeX-jaもコールバックを持っている.
これらのコールバックには,他のコールバックと同様に \verb+luatexbase.add_to_callback+
関数などを用いることでアクセスすることができる.
%</ja>
\begin{list}{}%
{\def\makelabel#1{\bfseries#1}}
%<en>\item[\texttt{luatexja.load\_jfm} callback]
-%<ja>\item[\texttt{luatexja.load\_jfm} コールバック]
+%<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 が読み込まれるときに呼び出される.
+このコールバックを用いることでJFMを上書きすることができる.
+このコールバックは新しいJFMが読み込まれるときに呼び出される.
%</ja>
\begin{lstlisting}[numbers=left]
whose character class is not~0.
%</en>
%<*ja>
-引数 \verb+jfm_info+ は JFM ファイルのテーブルと似たものが格納されるが,
-クラス0を除いた文字のコードを含んだ \texttt{chars} フィールドを持つ点が異なる.
+引数 \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.
+ in the JFM \texttt{jfm-min.lua}.
%</en>
%<*ja>
-このコールバックの使用例は \texttt{ltjarticle} クラスにあり,
-\texttt{jfm-min.lua} 中の \texttt{'parbdd'} を強制的にクラス0に割り当てている.
-このコールバックは \LuaTeX-ja のコードを書き換えない.
+このコールバックの使用例は\texttt{ltjarticle}クラスにあり,
+\texttt{jfm-min.lua}中の\texttt{'parbdd'}を強制的にクラス0に割り当てている.
%</ja>
%<en>\item[\texttt{luatexja.define\_font} callback]
-%<ja>\item[\texttt{luatexja.define\_font} コールバック]
+%<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.
%</en>
%<*ja>
-このコールバックと次のコールバックは組をなしており,Unicode 中に固定された文字コード
+このコールバックと次のコールバックは組をなしており,Unicode中に固定された文字コード
番号を持たない文字を非零の文字クラスに割り当てることができる.
このコールバックは新しい和文フォントが読み込まれたときに呼び出される.
%</ja>
\end{lstlisting}
%<*en>
-You may assume that \verb+jfont_info+ has the following fields:
+You may assume that \verb+jfont_info+ has the following fields:
+%</en>
+%<*ja>
+\verb+jfont_info+ は以下の2フィールドを持つ:
+%</ja>
+\begin{description}
+\item[\tt size\_cache]
+%<*ja>
+使用されているJFMの情報が格納されているテーブルで,
+\textbf{このテーブルを書き換えてはならない}.
+中身はほぼJFMファイルに書かれている唯一のテーブルであるが,次のように若干変わっている:
+\begin{itemize}
+\item 各文字クラス$i$に属する文字達のテーブル
+\texttt{[$i$].chars=\{<character>, ...\}}は,トップレベルにまとめられ,
+\texttt{chars=\{[<character>]=$i$, ...\}}という形になっている.
+\item \texttt{zw},~\texttt{zh}, \texttt{kanjiskip},~\texttt{xkanjiskip} の各フィールドの値は,
+実際に使われるフォントサイズに合わせたsp ($1\,\mathrm{sp}=2^{-6}\,\mathrm{pt}$)単位の長さに変わっている.
+\item 各文字クラス$i$の情報を格納したテーブルも,\texttt{char\_type} フィールドの下にまとめられている.
+例えば,文字クラス1に属する文字の高さは \texttt{char\_type[1].height} で参照できる.
+\item \texttt{dir} フィールドはこのテーブルにはない.
+\end{itemize}
+%</ja>
+%<*en>
+A table which contains the information of a JFM, and \emph{this table must not be changed}.
+The contents of this table are similar to that which is written is the JFM file, but
+the following differ:
+\begin{itemize}
+\item There is a \texttt{chars} table, \dots
+\item The value in \texttt{zw},~\texttt{zh}, \texttt{kanjiskip},~\texttt{xkanjiskip} fields are
+now scaled by real font size, and in scaled-pont unit.
+\item ...
+\item There is no \texttt{dir} field in this table.
+\end{itemize}
%</en>
-%<*ja>
-\verb+jfont_info+ は以下のフィールドを持つ:
-%</ja>
-\begin{description}
-\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=...} で指定された値.
+%<ja>\verb+\jfont+ の呼び出しの際に\texttt{jfmvar=...}で指定された値.
\end{description}
%<*en>
-The returned table \verb+new_jfont_info+ also should include these three fields.
+The returned table \verb+new_jfont_info+ also should include these two fields.
The \verb+font_number+ is a font number.
%</en>
%<*ja>
-戻り値の \verb+new_jfont_info+ テーブルもこれら3つのフィールドを含まなければならない.
+戻り値の \verb+new_jfont_info+ テーブルもこれら2つのフィールドを含まなければならないが,
+それ以外にユーザが勝手にフィールドを付け加えることは自由である.
\verb+font_number+ はフォント番号である.
%</ja>
code of \LuaTeX-ja.
%</en>
%<*ja>
-これと次のコールバックの良い使用例は \Pkg{luatexja-otf} パッケージであり,
-JFM 中で Adobe-Japan1 CID の文字を \verb+"AJ1-xxx"+ の形で指定するために
+これと次のコールバックの良い使用例は\Pkg{luatexja-otf}パッケージであり,
+JFM中でAdobe-Japan1 CIDの文字を \verb+"AJ1-xxx"+ の形で指定するために
用いられている.
-このコールバックは \LuaTeX-ja のコードを書き換えない.
%</ja>
%<en>\item[\texttt{luatexja.find\_char\_class} callback]
-%<ja>\item[\texttt{luatexja.find\_char\_class} コールバック]
+%<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+ の文字がどの文字クラスに
+このコールバックは\LuaTeX-jaが \verb+chr_code+ の文字がどの文字クラスに
属するかを決定しようとする際に呼び出される.
このコールバックで呼び出される関数は次の形をしていなければならない:
%</ja>
default routine.
%</en>
%<*ja>
-引数 \verb+char_class+ は \LuaTeX-ja のデフォルトルーチンか,このコールバックの
+引数 \verb+char_class+ は\LuaTeX-jaのデフォルトルーチンか,このコールバックの
直前の関数呼び出しの結果を含んでおり,したがってこの値は0ではないかもしれない.
さらに,戻り値の \verb+new_char_class+ は \verb+char_class+ が非零のときには
-\verb+char_class+ の値と同じであるべきで,そうでないときは \LuaTeX-ja の
+\verb+char_class+ の値と同じであるべきで,そうでないときは\LuaTeX-jaの
デフォルトルーチンを書き換えることになる.
%</ja>
-%<*en>
-This callback doesn't replace any code of \LuaTeX-ja.
-%</en>
-%<*ja>
-このコールバックは \LuaTeX-ja のコードを書き換えない.
-%</ja>
-
%<en>\item[\texttt{luatexja.set\_width} callback]
-%<ja>\item[\texttt{luatexja.set\_width} コールバック]
+%<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} をカプセル化しようとする際に呼び出される.
+このコールバックは\LuaTeX-jaが\textbf{JAchar}の寸法と位置を調節するために
+その\textit{glyph\_node}をカプセル化しようとする際に呼び出される.
%</ja>
\begin{lstlisting}[numbers=left]
function (<table> shift_info, <table> jfont_info, <number> char_class)
%</en>
%<*ja>
引数 \verb+shift_info+ と戻り値の \verb+new_shift_info+ は
-\texttt{down} と \texttt{left} のフィールドを持ち,これらの値は
+\texttt{down}と\texttt{left}のフィールドを持ち,これらの値は
文字の下/左へのシフト量(スケールド・ポイント単位)である.
%</ja>
(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}である.このファイルが読み込まれた状態では,
(和文OpenTypeフォントの標準値)
\item 実フォント側の数値:$(\hbox{高さ})=28y$, $(\hbox{深さ})=5y$(和文TrueTypeフォントの標準値)
\end{itemize}
-となっていたとする.すると,実際の文字の出力位置は,
+となっていたとする.すると,実際の文字の出力位置は,以下の量だけ上にぜらされることとなる:
+%</ja>
\[
- \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{825}y= 0.03\dot1\dot5y
+ \frac{88x}{88x+12x} (28y+5y) - 28y = \frac{26}{25}y= 1.04y.
\]
-だけ上にずらされることになる.
-%</ja>
\end{list}
%<en>\section{Parameters}
%<ja>\section{パラメータ}
-%<en>\subsection{\texttt{\char92 ltjsetparameter} primitive}
-%<ja>\subsection{\texttt{\char92 ltjsetparameter} プリミティブ}
+%<en>\subsection{\texttt{\char92 ltjsetparameter}}
+%<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
+control sequences 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
%</en>
%<*ja>
先に述べたように,\verb+\ltjsetparameter+ と \verb+\ltjgetparameter+ は
-\LuaTeX-ja のほとんどのパラメータにアクセスするためのプリミティブである.
-\LuaTeX-ja が \pTeX のような文法(例えば,\verb+\prebreakpenalty`)=10000+)を
-採用しない理由の一つは,\LuaTeX のソースにおける \verb+\hpack_filter+
-コールバックの位置にある.\ref{sec-para} 節を参照.
+\LuaTeX-jaのほとんどのパラメータにアクセスするための命令である.
+\LuaTeX-jaが\pTeX のような文法(例えば,\verb+\prebreakpenalty`)=10000+)を
+採用しない理由の一つは,\LuaTeX のソースにおける \verb+hpack_filter+
+コールバックの位置にある.\ref{sec-para}節を参照.
%</ja>
%<*en>
-\verb+\ltjsetparameter+ and \verb+\ltjglobalsetparameter+ are primitives
+\verb+\ltjsetparameter+ and \verb+\ltjglobalsetparameter+ are control sequences
for assigning parameters. These take one argument which is a
\texttt{<key>=<value>} list. Allowed keys are described in the next
subsection.
%</en>
%<*ja>
\verb+\ltjsetparameter+ と \verb+\ltjglobalsetparameter+ はパラメータを
-指定するためのプリミティブである.これらは \texttt{<key>=<value>} のリストを
+指定するための命令である.これらは\texttt{<key>=<value>}のリストを
引数としてとる.許されるキーは次の節に記述する.
\verb+\ltjsetparameter+ と \verb+\ltjglobalsetparameter+ の違いはスコープの
違いのみである.
%</ja>
%<*en>
-\verb+\ltjgetparameter+ is the primitive for acquiring parameters. It
+\verb+\ltjgetparameter+ is 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+ はパラメータの値を取得するためのプリミティブであり,
+\verb+\ltjgetparameter+ はパラメータの値を取得するための命令であり,
常にパラメータの名前を第一引数にとる.
そして,いくつかの場合には加えてさらに引数(例えば文字コード)をとる.
%</ja>
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) である.
+\textbf{{\normalfont\tt\char92ltjgetparameter}の戻り値は常に文字列である.}
+これは\texttt{tex.write()}によって出力しているためで,スペース`\texttt{\char32}'~(U+0020)を除いた文字のカテゴリーコードは全て12~(other)となる.
+一方,スペースのカテゴリーコードは10~(space)である.
%</ja>
%<en>\subsection{List of Parameters}
%</en>
%<*ja>
以下は \verb+\ltjsetparameter+ に指定することができるパラメータの一覧である.
-[\verb+\cs+] は \pTeX における対応物を示す.
+[\verb+\cs+]は\pTeX における対応物を示す.
また,それぞれのパラメータの右上にある記号には次の意味がある:
%</ja>
\begin{itemize}
%</en>
%<*ja>
パラグラフの最後の字が孤立して改行されるのを防ぐためのペナルティの値.
-このペナルティは(日本語の)句読点として扱われない最後の \textbf{JAchar} の直後に
+このペナルティは(日本語の)句読点として扱われない最後の\textbf{JAchar}の直後に
挿入される.
%</ja>
(see the description of \Param{jcharwidowpenalty} above).
%</en>
%<*ja>
-文字コードが <chr\_code> の文字が持つ付加的な属性値 (attribute).
-現在のバージョンでは,<natural number> の最下位ビットが,その文字が句読点と
-みなされるかどうかを表している(上の \Param{jcharwidowpenalty} の記述を参照).
+文字コードが<chr\_code>の文字が持つ付加的な属性値(attribute).
+現在のバージョンでは,<natural number>の最下位ビットが,その文字が句読点と
+みなされるかどうかを表している(上の\Param{jcharwidowpenalty}の記述を参照).
%</ja>
-\item[\Param{prebreakpenalty}\,=\{<chr\_code>,<penalty>\}] [\verb+\prebreakpenalty+]\
+\item[\Param{\hypertarget{fld:prebp}{prebreakpenalty}}\,=\{<chr\_code>,<penalty>\}] [\verb+\prebreakpenalty+]\
%<*ja>
文字コード<chr\_code>の\textbf{JAchar}が行頭にくることを抑止するために,
この文字の前に挿入/追加されるペナルティの量を指定する.
-例えば閉じ括弧「〗」は絶対に行頭にきてはならないので,標準で読み込まれる
- \texttt{luatexja-kinsoku.tex}において
+例えば閉じ括弧「〗」は絶対に行頭にきてはならないので,
\begin{verbatim}
\ltjsetparameter{prebreakpenalty={`〙,10000}}
\end{verbatim}
-と,最大値の10000が指定されている.他にも,小書きのカナなど,絶対禁止とい
+ã\81¨ï¼\8cæ\9c\80大å\80¤ã\81®10000ã\81\8cæ¨\99æº\96ã\81§æ\8c\87å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bï¼\8eä»\96ã\81«ã\82\82ï¼\8cå°\8fæ\9b¸ã\81\8dã\81®ã\82«ã\83\8aã\81ªã\81©ï¼\8c絶対ç¦\81æ¢ã\81¨ã\81\84
うわけではないができれば行頭にはきて欲しくない場合に,0と
10000の間の値を指定するのも有用であろう.
-\begin{verbatim}
-\ltjsetparameter{prebreakpenalty={`ゕ,150}}
-\end{verbatim}
%</ja>
-\item[\Param{postbreakpenalty}\,=\{<chr\_code>,<penalty>\}] [\verb+\postbreakpenalty+]
+\item[\Param{\hypertarget{fld:postbp}{postbreakpenalty}}\,=\{<chr\_code>,<penalty>\}] [\verb+\postbreakpenalty+]
%<*ja>
文字コード<chr\_code>の\textbf{JAchar}が行末にくることを抑止するために,
この文字の後に挿入/追加されるペナルティの量を指定する.
た(後から指定した方で上書きされる).
\item pre, post合わせて256文字分の情報を格納することしかできなかった.
\end{itemize}
-という制限があったが,\LuaTeX-ja ではこれらの制限は解消されている.
+という制限があったが,\LuaTeX-jaではこれらの制限は解消されている.
%</ja>
\item[\Param{jatextfont}\,=\{<jfam>,<jfont\_cs>\}]
\item[\Param{jaxspmode}\,=\{<chr\_code>,<mode>\}]
%<*en>
-Setting whether inserting \Param{xkanjiskip} is allowed before/after a \textbf{JAchar} whose character code is <chr\_code>.
+Setting whether inserting \Param{\hyperlink{fld:xks}{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} の
+文字コードが<chr\_code>の\textbf{JAchar}の前/後ろに\Param{\hyperlink{fld:xks}{xkanjiskip}}の
挿入を許すかどうかの設定.
-以下の <mode> が許される:
+以下の<mode>が許される:
%</ja>
\begin{description}
-%<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} の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である.
+%<en>\item[0, \texttt{inhibit}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is inhibited before the character, nor after the character.
+%<ja>\item[0, \texttt{inhibit}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の前/後ろのいずれでも禁止される.
+%<en>\item[1, \texttt{preonly}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed before the character, but not after.
+%<ja>\item[1, \texttt{preonly}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の前では許されるが,後ろでは許されない.
+%<en>\item[2, \texttt{postonly}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed after the character, but not before.
+%<ja>\item[2, \texttt{postonly}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の後ろでは許されるが,前では許されない.
+%<en>\item[3, \texttt{allow}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed both before the character and after the character. This is the default value.
+%<ja>\item[3, \texttt{allow}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である.
\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+ プリミティブと似ているが,
+このパラメータは\pTeX の \verb+\inhibitxspcode+ プリミティブと似ているが,
互換性はない.
%</ja>
-
\item[\Param{alxspmode}\,=\{<chr\_code>,<mode>\}] [\verb+\xspcode+]
%<*en>
-Setting whether inserting \Param{xkanjiskip} is allowed before/after a
+Setting whether inserting \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed before/after a
\textbf{ALchar} whose character code is <chr\_code>.
The followings are allowed for <mode>:
%</en>
%<*ja>
-文字コードが <chr\_code> の \textbf{ALchar} の前/後ろに \Param{xkanjiskip} の
+文字コードが<chr\_code>の\textbf{ALchar}の前/後ろに\Param{\hyperlink{fld:xks}{xkanjiskip}}の
挿入を許すかどうかの設定.
-以下の <mode> が許される:
+以下の<mode>が許される:
%</ja>
\begin{description}
-%<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} の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である.
+%<en>\item[0, \texttt{inhibit}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is inhibited before the character, nor after the character.
+%<ja>\item[0, \texttt{inhibit}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の前/後ろのいずれでも禁止される.
+%<en>\item[1, \texttt{preonly}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed before the character, but not after.
+%<ja>\item[1, \texttt{preonly}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の前では許されるが,後ろでは許されない.
+%<en>\item[2, \texttt{postonly}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed after the character, but not before.
+%<ja>\item[2, \texttt{postonly}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の後ろでは許されるが,前では許されない.
+%<en>\item[3, \texttt{allow}] Insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed before the character and after the character. This is the default value.
+%<ja>\item[3, \texttt{allow}] \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は文字の前/後ろのいずれでも許される.これがデフォルトの値である.
\end{description}
%<*en>
-Note that parameters \Param{jaxspmode} and \Param{alxspmode} use a common table, hence these two parameters are synonyms of each other.
+Note that parameters \Param{jaxspmode} and \Param{alxspmode} share a common table, hence these two parameters are synonyms of each other.
%</en>
%<*ja>
-\Param{jaxspmode} と \Param{alxspmode} は共通のテーブルを用いているため,
+\Param{jaxspmode}と\Param{alxspmode}は共通のテーブルを用いているため,
これら2つのパラメータは互いの異名となっていることに注意する.
%</ja>
\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[\Param{\hypertarget{fld:kanjiskip}{kanjiskip}}\,=<skip>] [\verb+\kanjiskip+]
+%<*ja>
+デフォルトで2つの\textbf{JAchar}の間に挿入されるグルーである.
+通常では,\pTeX と同じようにフォントサイズに比例して変わることはない.
+しかし,自然長が \verb+\maxdimen+ の場合は,例外的に和文フォントのJFM側で指定されている
+値を採用(こちらはフォントサイズに比例)することになっている.
+%</ja>
+
+\item[\Param{\hypertarget{fld:xks}{xkanjiskip}}\,=<skip>] [\verb+\xkanjiskip+]
+%<*ja>
+デフォルトで\textbf{JAchar}と\textbf{ALchar}の間に挿入されるグルーである.
+\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}と同じように,通常ではフォントサイズに比例して変わることはないが,
+自然長が \verb+\maxdimen+ の場合が例外である.
+%</ja>
+
-\item[\Param{differentjfm}\,=<mode>$^\dagger$]
+\item[\Param{\hypertarget{fld:diffjfm}{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} の間にグルー/カーンをどのように
-å\85¥ã\82\8cã\82\8bã\81\8bã\82\92æ\8c\87å®\9aã\81\86る.
+JFM(もしくはサイズ)が異なる2つの\textbf{JAchar}の間にグルー/カーンをどのように
+å\85¥ã\82\8cã\82\8bã\81\8bã\82\92æ\8c\87å®\9aã\81\99る.
許される値は以下の通り:
%</ja>
\begin{description}
\item[\texttt{both}]
\item[\texttt{large}]
\item[\texttt{small}]
+\item[\texttt{pleft}]
+\item[\texttt{pright}]
+\item[\texttt{paverage}]
\end{description}
\item[\Param{jacharrange}\,=<ranges>$^\ast$]
\end{list}
-%<en>\section{Other Primitives}
-%<ja>\section{その他のプリミティブ}
-%<en>\subsection{Primitives for Compatibility}
-%<ja>\subsection{互換プリミティブ}
+%<en>\section{Other Control Sequences}
+%<ja>\section{その他の命令}
+%<en>\subsection{Control Sequences for Compatibility}
+%<ja>\subsection{\pTeX 互換用命令}
%<*en>
-The following primitives are implemented for compatibility with \pTeX:
+The following control sequences are implemented for compatibility with \pTeX.
+Note that these don't support JIS~X~0213, but only JIS~X~0208.
%</en>
%<*ja>
-以下のプリミティブは \pTeX との互換性のために実装されている:
+以下の命令は\pTeX との互換性のために実装されている.そのため,JIS~X~0213には対応せず,
+\pTeX と同じようにJIS~X~0208の範囲しかサポートしていない.
%</ja>
\begin{list}{}{\def\makelabel{\ttfamily\char92 }\advance\leftmargin1\zw}
\item[kuten]
\item[kansuji]
\end{list}
-%<en>\subsection{\texttt{\char92 inhibitglue} primitive}
-%<ja>\subsection{\texttt{\char92 inhibitglue} プリミティブ}
-
+%<en>\subsection{\texttt{\char92 inhibitglue}}
+%<ja>\subsection{\texttt{\char92 inhibitglue}}
%<*en>
-The primitive \verb+\inhibitglue+ suppresses the insertion of \textbf{JAglue}.
+\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+ ã\83\97ã\83ªã\83\9fã\83\86ã\82£ã\83\96ã\81¯ \textbf{JAglue} の挿入を抑制する.
-以下は,ボックスの始めと`あ'の間,`あ'と`ウ'の間にグルーが入る特別な JFM を用いた例で
+\verb+\inhibitglue+ ã\81¯\textbf{JAglue}の挿入を抑制する.
+以下は,ボックスの始めと`あ'の間,`あ'と`ウ'の間にグルーが入る特別なJFMを用いた例で
ある.
%</ja>
\begin{LTXexample}
-\jfont\g=psft:Ryumin-Light:jfm=test \g
+\jfont\g=file:KozMinPr6N-Regular.otf:jfm=test \g
\fbox{\hbox{あウあ\inhibitglue ウ}}
\inhibitglue\par\noindent あ1
\par\inhibitglue\noindent あ2
\par\noindent\inhibitglue あ3
-\par\inhibitglue\hrule あoff\inhibitglue ice
+\par\hrule\noindent あoff\inhibitglue ice
\end{LTXexample}
%<*en>
\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+.
+ simply ignored.
%</en>
%<*ja>
-\item \verb+\inhibitglue+ の垂直モード中での呼び出しは次の段落の始めで効力を持つ.
- これは \verb+\everypar+ のハックによって実現されている.
+\item \verb+\inhibitglue+ の垂直モード中での呼び出しは意味を持たない.
+4行目の入力で有効にならないのは,\verb+\inhibitglue+ の時点では垂直モードであり,
+\verb+\noindent+ の時点で水平モードになるからである.
%</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.
+ kernings, as shown in the last line of above example.
%</en>
%<*ja>
\item \verb+\inhibitglue+ の(制限された)水平モード中での呼び出しはその場でのみ
有効であり,段落の境界を乗り越えない.
- さらに,\verb+\inhibitglue+ は上の例の4行目のようにリガチャとカーニングを
- 打ち消す.
+ さらに,\verb+\inhibitglue+ は上の例の最終行のように(欧文における)リガチャとカーニングを
+ 打ち消す.これは,\verb+\inhibitglue+ が内部的には「現在のリスト中にwhatsitノードを
+ 追加する」ことを行なっているからである.
%</ja>
%<*en>
\end{itemize}
%<en>\section{Control Sequences for \LaTeXe}
-%<ja>\section{\LaTeXe 用のコントロールシーケンス}
+%<ja>\section{\LaTeXe 用の命令}
%<en>\subsection{Patch for NFSS2}
-%<ja>\subsection{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}.
+control sequences which are not described in Subsection~\ref{ssub-chgfnt}.
%</en>
%<*ja>
-\ref{ssec-ltx} 節で述べたように,\LuaTeX-ja は NFSS2 への日本語パッチである
-\pLaTeXe の \texttt{plfonts.dtx} を単純に取り入れている.
-便宜のため,ここでは \ref{ssub-chgfnt} 節で述べていなかったコマンドについて
+\ref{ssec-ltx}節で述べたように,\LuaTeX-jaはNFSS2への日本語パッチである
+\pLaTeXe の\texttt{plfonts.dtx}を単純に取り入れている.
+便宜のため,ここでは\ref{ssub-chgfnt}節で述べていなかった命令について
記述しておく.
%</ja>
scheme for Japanese font family (in horizontal direction).
%</en>
%<*ja>
-\LuaTeX-ja の NFSS2 においては,欧文フォントファミリと和文フォントファミリは
+\LuaTeX-jaのNFSS2においては,欧文フォントファミリと和文フォントファミリは
そのエンコーディングからのみ作られる.
-例えば,OT1 と T1 のエンコーディングは欧文フォントファミリに対するものであり,
+例えば,OT1とT1のエンコーディングは欧文フォントファミリに対するものであり,
和文フォントファミリはこれらのエンコーディングを持つことはできない.
このコマンドは和文フォントファミリ(横書き用)のための新しいエンコーディングを
定義する.
% ToDo: en
%<*ja>
和文・欧文の数式用フォントファミリを一度に変更する命令を作成する.
-具体的には,欧文数式用フォントファミリ変更の命令<al-cmd> (\verb+\mathrm+等)と,和文数式用フォ
- ントファミリ変更の命令<ja-cmd>(\verb+\mathmc+等)の2つを同時に行う命令として
+具体的には,欧文数式用フォントファミリ変更の命令<al-cmd>(\verb+\mathrm+ 等)と,和文数式用フォ
+ ントファミリ変更の命令<ja-cmd>(\verb+\mathmc+ 等)の2つを同時に行う命令として
<unified-cmd>を(再)定義する.実際の使用では<unified-cmd>と
<al-cmd>に同じものを指定する,すなわち,<al-cmd>で和文側も変
更させるようにするのが一般的と思われる.
\begin{itemize}
\item <al-cmd>,~<ja-cmd>は既に定義されていなければならない.\verb+\reDeclareMathAlphabet+後に
両命令の内容を再定義しても,<unified-cmd>の内容にそれは反映されない.
-\item <al-cmd>,~<ja-cmd>に\verb+\@mathrm+などと \texttt{@} をつけた命令を指定した時の動作は保証できない.
+\item <al-cmd>,~<ja-cmd>に\verb+\@mathrm+などと\texttt{@}をつけた命令を指定した時の動作は保証できない.
\end{itemize}}
%</ja>
%</ja>
\item[adjustbaseline]
-...
+\ldots
\item[fontfamily\{<family>\}]
{\let\item\origitem
to <family>. Which family will be changed is determined as follows:
%</en>
%<*ja>
-元々の \LaTeXe におけるものと同様に,このコマンドは現在のフォントファミリ(欧文,
-和文,\textbf{もしくは両方})を <family> に変更する.
+元々の\LaTeXe におけるものと同様に,このコマンドは現在のフォントファミリ(欧文,
+和文,\textbf{もしくは両方})を<family>に変更する.
どのファミリが変更されるかは以下のようにして決定される:
%</ja>
\begin{itemize}
<family>, if one of the following two conditions is met:
%</en>
%<*ja>
-\item 現在の和文フォントに対するエンコーディングが <ja-enc> であるとしよう.
+\item 現在の和文フォントに対するエンコーディングが<ja-enc>であるとしよう.
現在の和文フォントファミリは,以下の2つの条件のうちの1つが満たされているときに
- <family> に変更される:
+ <family>に変更される:
%</ja>
\begin{itemize}
%<*en>
-\item The family <fam> under the encoding <ja-enc> has been already defined by
+\item The family <family> under the encoding <ja-enc> has been already defined by
\verb+\DeclareKanijFamily+.
%</en>
%<*ja>
-\item エンコーディング <ja-enc> におけるファミリ <fam> が既に \verb+\DeclareKanjiFamily+ によって定義されている.
+\item エンコーディング<ja-enc>におけるファミリ<family>が既に \verb+\DeclareKanjiFamily+ によって定義されている.
%</ja>
%<*en>
-\item A font definition named \texttt{<enc><ja-enc>.fd} (the file name is
+\item A font definition named \texttt{<ja-enc><family>.fd} (the file name is
all lowercase) exists.
%</en>
%<*ja>
-\item フォント定義ファイル \texttt{<enc><ja-enc>.fd}(ファイル名は全て小文字)が存在する.
+\item フォント定義ファイル\texttt{<ja-enc><family>.fd}(ファイル名は全て小文字)が存在する.
%</ja>
\end{itemize}
%<*en>
<al-enc>. For alphabetic font family, the criterion as above is used.
%</en>
%<*ja>
-\item 現在の欧文フォントに対するエンコーディングを <al-enc> とする.
+\item 現在の欧文フォントに対するエンコーディングを<al-enc>とする.
欧文フォントファミリに対しても,上記の基準が用いられる.
%</ja>
%<*en>
be set to <family>, unlike the original implementation in \LaTeX.
%</en>
%<*ja>
-\item 上記のいずれもが適用されない,つまり <family> が <ja-enc> と <al-enc> の
+\item 上記のいずれもが適用されない,つまり<family>が<ja-enc>と<al-enc>の
どちらでも定義されないような場合がある.
この場合,代替フォントに用いられるデフォルトのフォントファミリが欧文フォントと
和文フォントに用いられる.\LaTeX のオリジナルの実装とは異なり,
- 現在のエンコーディングは <family> には設定されないことに注意する.
+ 現在のエンコーディングは<family>には設定されないことに注意する.
%</ja>
\end{itemize}
}
%</en>
%<*ja>
この節の終わりに,\verb+\SetRelationFont+ と \verb+\userelfont+ の例を
-紹介しておこう.
+紹介しておこう.\verb+\userelfont+ の使用によって,「abc」の部分のフォントが
+Avant Garde (OT1/pag/m/n) に変わっていることがわかる.
%</ja>
-\begin{LTXexample}
-\gtfamily{}あいうabc
-\SetRelationFont{JY3}{gt}{m}{n}{OT1}{pag}{m}{n}
-\userelfont\selectfont{}あいうabc
+\begin{LTXexample}[width=0.3\textwidth]
+\makeatletter
+\SetRelationFont{JY3}{\k@family}{m}{n}{OT1}{pag}{m}{n}
+ % \k@family: current Japanese font family
+\userelfont\selectfont あいうabc
\end{LTXexample}
-
-%<en>\subsection{Cropmark/`tombow'}
-%<ja>\subsection{トンボ}
-% ToDo
-
%<en>\section{Extensions}
%<ja>\section{拡張}
\subsection{\texttt{luatexja-fontspec.sty}}
the commands of Japanese version:
%</en>
%<*ja>
-\ref{ssec-fontspec} 節で述べたように,この追加パッケージは \Pkg{fontspec}
+\ref{ssec-fontspec}節で述べたように,この追加パッケージは\Pkg{fontspec}
パッケージで定義されているコマンドに対応する和文フォント用のコマンドを提供する.
-オリジナルの \Pkg{fontspec} での `font feature' に加えて,和文版のコマンドには
-以下の `font feature' を指定することができる:
+オリジナルの\Pkg{fontspec}での`font feature'に加えて,和文版のコマンドには
+以下の`font feature'を指定することができる:
%</ja>
\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+\item[CID=<name>]
\item[JFM=<name>]
-\item[JFM-var=<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}.
+These 3 font features correspond to \texttt{cid}, \texttt{jfm} and
+\texttt{jfmvar} keys for \verb+\jfont+ respectively.
+\texttt{CID} is effective only when with \texttt{NoEmbed}
+described below.
+See Subsections~\ref{ssec-jfont} and \ref{ssec-psft} for details.
%</en>
%<*ja>
-これら2つのキーはそれぞれ \verb+\jfont+ プリミティブに対する
-\texttt{jfm}, \texttt{jfmvar} キーとそれぞれ対応する.
-\ref{ssec-jfont} 節を参照.
+これら3つのキーはそれぞれ \verb+\jfont+ に対する
+\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーとそれぞれ対応する.
+\texttt{CID} は下の \texttt{NoEmbed} と合わせて用いられたときのみ有効である.
+\verb+\jfont+ プリミティブに対する
+\texttt{cid}, \texttt{jfm}, \texttt{jfmvar}キーの詳細は\ref{ssec-jfont}節
+ と\ref{ssec-psft}節を参照.
%</ja>
\item[NoEmbed]
%<*en>
-By specifying this font feature, you can use `name-only' Japanese font which
+By specifying this font feature, one can use `name-only' Japanese font which
will not be embedded in the output PDF file. See Subsection~\ref{ssec-psft}.
%</en>
%<*ja>
-これを指定することで,PDF に埋め込まれない「名前だけ」のフォントを指定することが
-できる.\ref{ssec-psft} 節を参照.
+これを指定することで,PDFに埋め込まれない「名前だけ」のフォントを指定することが
+できる.\ref{ssec-psft}節を参照.
%</ja>
+\end{list}
-\item[CID=<name>]
-%<*en>
-This feature is effective only when with NoEmbed feature.
-You can use the non-embedded CID-keyed font whose glyphs are addressed according
-to the specified character collection defined by Adobe Inc.
-The default value is Adobe-Japan1. See also Subsection~\ref{ssec-psft}.
-%</en>
%<*ja>
-NoEmbed キーと合わせて用いる.
-非埋め込みの CID-keyed フォントがどの文字コレクションに基づくものかを指定する.
-デフォルトは Adobe-Japan1 である.\ref{ssec-psft} 節も参照.
+なお,\texttt{luatexja-fontspec.sty} 読み込み時には和文フォント定義ファイル%
+\texttt{<ja-enc><family>.fd}は全く参照されなくなる.
%</ja>
-\end{list}
+
+
\subsection{\texttt{luatexja-otf.sty}}
commands:
%</en>
%<*ja>
-この追加パッケージは Adobe-Japan1 の文字の出力をサポートする.
-\texttt{luatexja-otf.sty} は以下の2つの低レベルコマンドを提供する:
+この追加パッケージはAdobe-Japan1の文字の出力をサポートする.
+\texttt{luatexja-otf.sty}は以下の2つの低レベルコマンドを提供する:
%</ja>
\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
\item[\char92CID\{<number>\}]
Typeset a character whose CID number is <number>.
%</en>
%<*ja>
-CID 番号が <number> の文字を出力する.
+CID番号が<number>の文字を出力する.
%</ja>
\item[\char92UTF\{<hex\_number>\}]
but please remind remarks below.
%</en>
%<*ja>
-文字コードが(16進で)<hex\_number> の文字を出力する.
-このコマンドは \verb+\char"+<hex\_number> と似ているが,下の記述に注意すること.%"
+文字コードが(16進で)<hex\_number>の文字を出力する.
+このコマンドは \verb+\char"+<hex\_number>と似ているが,下の記述に注意すること.%"
%</ja>
\end{list}
\item Always treated as \textbf{JAchar}s.
%</en>
%<*ja>
-\item 常に \textbf{JAchar} として扱われる.
+\item 常に\textbf{JAchar}として扱われる.
%</ja>
%<*en>
\item Processing codes for supporting OpenType features (\textit{e.g.},
%</en>
%<*ja>
\item OpenType feature(例えばグリフ置換やカーニング)をサポートするための
- \Pkg{luaotfload} パッケージのコードはこれらの文字には働かない.
+ \Pkg{luaotfload}パッケージのコードはこれらの文字には働かない.
%</ja>
\end{itemize}
%<en>\paragraph{Additional Syntax of JFM}
-%<ja>\paragraph{JFM への記法の追加}
+%<ja>\paragraph{JFMへの記法の追加}
%<*en>
\texttt{luatexja-otf.sty} extends the syntax of JFM; the entries of \texttt{
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+ の文字を表す.
+\texttt{luatexja-otf.sty}はJFMの記法を拡張する.
+JFMの\texttt{chars}テーブルのエントリとして \verb+'AJ1-xxx'+ の形の文字列が
+使えるようになる.これはAdobe-Japan1におけるCID番号が \verb+xxx+ の文字を表す.
+%</ja>
+
+\subsection{\texttt{luatexja-adjust.sty}}
+\label{ssec-adj}
+\begin{figure}[t]
+\def\sq{%
+ \hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{%
+ \hskip\dimexpr-.5\zw-.2pt\vrule width.4pt height.08\zw depth.12\zw%
+ \hskip\dimexpr.5\zw-.2pt\relax}\hss}}
+\def\sb{\hbox to 1\zw{\hss\fboxsep=-.5\fboxrule\fbox{%
+ ■\hskip\dimexpr-.5\zw-.2pt\vrule width.4pt height.08\zw depth.12\zw%
+ \hskip\dimexpr.5\zw-.2pt\relax}\hss}}
+\newbox\gridbox
+\def\outbox#1{{\Large%
+ \ltjsetparameter{kanjiskip=0pt plus .2\zw minus .2\zw}%
+ \setbox\gridbox=\hbox to 20\zw{\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb\sq\sq\sq\sq\sb}%
+ \hbox{\textcolor{cyan!50!white}{\copy\gridbox}\hskip-20\zw%
+ \vbox{\hsize=20\zw\noindent\leftskip0pt\rightskip0pt\parfillskip0pt#1}\vrule}%
+}}
+
+{\centering
+\begin{tabular}{lc}
+\toprule
+no adjustment&\outbox{以上の原理は,「包除原理」とよく呼ばれるが\hskip-.5\zw\null}\\
+without priority&%
+\ltjdisableadjust
+\outbox{以上の原理は,「包除原理」とよく呼ばれるが}%
+\ltjenableadjust\\
+with priority&%
+\outbox{以上の原理は,「包除原理」とよく呼ばれるが}
+%<en>\ltjdisableadjust
+\\
+\bottomrule
+\end{tabular}\par}
+\smallskip
+
+Note: the value of
+\Param{\hyperlink{fld:kanjiskip}{kanjiskip}} is 0\,pt${}^{+1/5\,\mathrm{em}}_{-1/5\,\mathrm{em}}$ in this figure,
+for making the difference obvious.
+%<ja>\caption{行長調整}\label{fig-adj}
+%<en>\caption{Line adjustment}\label{fig-adj}
+\end{figure}
+
+
+%<*en>
+...
+%</en>
+%<*ja>
+\pTeX では,行長調整において優先度の概念が存在しなかったため,図
+\ref{fig-adj}上段における半角分の半端は,図\ref{fig-adj}中段のように,鍵
+括弧周辺の空白と和文間空白(\Param{\hyperlink{fld:kanjiskip}{kanjiskip}})の両方によって負担される.し
+かし,「日本語組版処理の要件」\cite{jlreq}やJIS~X~4051~\cite{x4051}におい
+ては,このような状況では半端は鍵括弧周辺の空白のみで負担し,その他の和文
+文字はベタ組で組まれる(図\ref{fig-adj}下段)ことになっている.この追加
+パッケージは\cite{jlreq}や\cite{x4051}における規定のような,優先順位付き
+の行長調整を提供する.詳細な仕様については\ref{sec-adjspec}を参照.
+
+
+\texttt{luatexja-adjust.sty}は,以下の命令を提供する.これらはすべてグローバルに効力を発揮する.
+
+\begin{list}{}{\def\makelabel{\ttfamily}\def\{{\char`\{}\def\}{\char`\}}\advance\leftmargin1\zw}
+\item[\char92ltjdisableadjust]
+優先順位付きの行長調整を無効化する.
+
+\item[\char92ltjenableadjust]
+優先順位付きの行長調整を有効化する.
+
+\item[優先度設定……]
+
+\end{list}
+
+
+
+
+
%</ja>
+
+
%<en>\part{Implementations}
%<ja>\part{実装}
\label{part-imp}
%<ja>\section{パラメータの保持}
\label{sec-para}
%<en>\subsection{Used Dimensions, Attributes and whatsit nodes}
-%<ja>\subsection{\LuaTeX-ja で用いられる寸法レジスタ,属性レジスタ,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) の
+以下は\LuaTeX-jaで用いられる寸法レジスタ(dimension),属性レジスタ(attribute)の
リストである.
%</ja>
\begin{list}{}{%
\dim{jQ}
%<*en>
-As explained in Subsection~\ref{ssec-plain}, \verb+\jQ+ is equal to
+\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}$
+\verb+\jQ+ は$1\,\textrm{Q}=0.25\,\textrm{mm}$
と等しい.ここで,`Q'(もしくは「級」)は日本の写植で用いられる単位である.したがって,
この寸法レジスタの値を変更してはならない.
%</ja>
\verb+\jH+ is a synonym of \verb+\jQ+.
%</en>
%<*ja>
-å\90\8cã\81\98ã\81\8få\86\99æ¤\8dã\81§ç\94¨ã\81\84ã\82\89ã\82\8cã\81¦ã\81\84ã\81\9få\8d\98ä½\8dã\81¨ã\81\97ã\81¦ã\80\8cæ¯ã\80\8dã\81\8cã\81\82ã\82\8aï¼\8cã\81\93ã\82\8cã\81¯ $0.25\,\textrm{mm}$ と
+å\90\8cã\81\98ã\81\8få\86\99æ¤\8dã\81§ç\94¨ã\81\84ã\82\89ã\82\8cã\81¦ã\81\84ã\81\9få\8d\98ä½\8dã\81¨ã\81\97ã\81¦ã\80\8cæ¯ã\80\8dã\81\8cã\81\82ã\82\8aï¼\8cã\81\93ã\82\8cã\82\82$0.25\,\textrm{mm}$と
等しい.\verb+\jH+ は \verb+\jQ+ の別名である.
%</ja>
The character class of Japanese \textit{glyph\_node}.
%</en>
%<*ja>
-和文文字の \textit{glyph\_node} の文字クラス.
+和文文字の\textit{glyph\_node}の文字クラス.
%</ja>
\attr{ltj@yablshift}
The amount of shifting the baseline of alphabetic fonts in scaled point ($2^{-16}\,\textrm{pt}$).
%</en>
%<*ja>
-スケールド・ポイント ($2^{-16}\,\textrm{pt}$) を単位とした欧文フォントのベースラインの移動量.
+スケールド・ポイント($2^{-16}\,\textrm{pt}$)を単位とした欧文フォントのベースラインの移動量.
%</ja>
\attr{ltj@ykblshift}
The amount of shifting the baseline of Japanese fonts in scaled point ($2^{-16}\,\textrm{pt}$).
%</en>
%<*ja>
-スケールド・ポイント ($2^{-16}\,\textrm{pt}$) を単位とした和文フォントのベースラインの移動量.
+スケールド・ポイント($2^{-16}\,\textrm{pt}$)を単位とした和文フォントのベースラインの移動量.
%</ja>
\attr{ltj@autospc}
%<*en>
-Whether the auto insertion of \Param{kanjiskip} is allowed at the node.
+Whether the auto insertion of \Param{\hyperlink{fld:kanjiskip}{kanjiskip}} is allowed at the node.
%</en>
%<*ja>
-そのノードで \Param{kanjiskip} の自動挿入が許されるかどうか.
+そのノードで\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の自動挿入が許されるかどうか.
%</ja>
\attr{ltj@autoxspc}
%<*en>
-Whether the auto insertion of \Param{xkanjiskip} is allowed at the node.
+Whether the auto insertion of \Param{\hyperlink{fld:xks}{xkanjiskip}} is allowed at the node.
%</en>
%<*ja>
-そのノードで \Param{xkanjiskip} の自動挿入が許されるかどうか.
+そのノードで\Param{\hyperlink{fld:xks}{xkanjiskip}}の自動挿入が許されるかどうか.
%</ja>
\attr{ltj@icflag}
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}.
+ is needed in the insertion process of \Param{\hyperlink{fld:xks}{xkanjiskip}}.
%</en>
%<*ja>
-イタリック補正 (\verb+\/+) によるグルー.このグルーの由来の区別(\verb+\kern+ か
-\verb+\/+ か)は \Param{xkanjiskip} の挿入過程において必要になる.
+イタリック補正(\verb+\/+)によるグルー.このグルーの由来の区別(\verb+\kern+ か
+\verb+\/+ か)は\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入過程において必要になる.
%</ja>
\item[\textit{packed} (2)]
Penalties inserted for the word-wrapping process of Japanese characters (\emph{kinsoku}).
%</en>
%<*ja>
-和文文字のワードラップ過程において挿入されたペナルティ (\emph{kinsoku}).
+和文文字のワードラップ過程において挿入されたペナルティ(\emph{kinsoku}).
%</ja>
-\item[\textit{from\_jfm} (4)]
+\item[\textit{from\_jfm} (6)]
%<*en>
Glues/kerns from JFM.
%</en>
%<*ja>
-JFM 由来のグルー/カーン.
+JFM由来のグルー/カーン.
%</ja>
-\item[\textit{line\_end} (5)]
-%<*en>
-Kerns for ...
-%</en>
-%<*ja>
-カーン ...
-%</ja>
+%%\item[\textit{line\_end} (5)]
+%%%<*en>
+%%Kerns for \ldots
+%%%</en>
+%%%<*ja>
+%%和文文字が行末にきたとき,行末との間に挿入されるカーンである.
+%%% ぶら下げ組への応用
+%%%</ja>
-\item[\textit{kanji\_skip} (6)]
+\item[\textit{kanji\_skip} (9)]
%<*en>
-Glues for \Param{kanjiskip}.
+Glues for \Param{\hyperlink{fld:kanjiskip}{kanjiskip}}.
%</en>
%<*ja>
-\Param{kanjiskip} のグルー.
+\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}のグルー.
%</ja>
-\item[\textit{xkanji\_skip} (7)]
+\item[\textit{xkanji\_skip} (10)]
%<*en>
-Glues for \Param{xkanjiskip}.
+Glues for \Param{\hyperlink{fld:xks}{xkanjiskip}}.
%</en>
%<*ja>
-\Param{xkanjiskip} のグルー.
+\Param{\hyperlink{fld:xks}{xkanjiskip}}のグルー.
%</ja>
-\item[\textit{processed} (8)]
+\item[\textit{processed} (11)]
%<*en>
-Nodes which is already processed by ...
+Nodes which is already processed by \ldots.
%</en>
%<*ja>
-... によって既に処理されたノード.
+\LuaTeX-ja の内部処理によって既に処理されたノード.
%</ja>
-\item[\textit{ic\_processed} (9)]
+\item[\textit{ic\_processed} (12)]
%<*en>
Glues from an italic correction, but also already processed.
%</en>
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} のブロックとして
+$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).
+inrernal processing. All those nodes store a natural number (hence the node's
+\texttt{type} is 100).
%</en>
%<*ja>
-さらに,\LuaTeX-ja はいくつかの「ユーザ定義の」whatsit ノードを組版に用いる.
-これらの全てのノードは自然数を格納している(したがってノードの \texttt{type} は
-100 である).
+さらに,\LuaTeX-jaはいくつかの「ユーザ定義の」whatsitノードを内部処理に用いる.
+これらの全てのノードは自然数を格納している(したがってノードの\texttt{type}は
+100である).
%</ja>
\begin{description}
-\item[30111]
+\item[\texttt{inhibitglue}]
%<*en>
Nodes for indicating that \verb+\inhibitglue+ is
specified. The \texttt{value} field of these nodes doesn't matter.
%</en>
%<*ja>
\verb+\inhibitglue+ が指定されたことを示すノード.これらのノードの
-\texttt{value} フィールド は意味を持たない.
+\texttt{value}フィールドは意味を持たない.
%</ja>
-\item[30112]
+\item[\texttt{stack\_marker}]
%<*en>
Nodes for \LuaTeX-ja's stack system (see the next
subsection). The \texttt{value} field of these nodes is
current group.
%</en>
%<*ja>
-\LuaTeX-ja のスタックシステム(次の節を参照)のためのノード.
-これらのノードの \texttt{value} フィールドは現在のグループを表す.
+\LuaTeX-jaのスタックシステム(次の節を参照)のためのノード.
+これらのノードの\texttt{value}フィールドは現在のグループを表す.
%</ja>
-\item[30113]
+\item[\texttt{char\_by\_cid}]
%<*en>
Nodes for Japanese Characters which the callback process of
- luaotfload won't be applied, and the character code is
+ \Pkg{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.
+ This \verb+user_id+ is only used by the \Pkg{luatexja-otf} package.
%</en>
%<*ja>
-luaotfload のコールバックによる処理が適用されない和文文字のためのノードで,
-\texttt{value} フィールドにその文字のコードが格納されている.
-この \verb+user_id+ を持つノードはそれぞれが luaotfload のコールバックの処理の
-\textbf{後で} `glyph\_node' に変換される.
+\Pkg{luaotfload}のコールバックによる処理が適用されない和文文字のためのノードで,
+\texttt{value}フィールドにその文字のコードが格納されている.
+この \verb+user_id+ を持つノードはそれぞれが\Pkg{luaotfload}のコールバックの処理の
+\textbf{後で}`glyph\_node'に変換される.この \verb+user_id+ は %
+\Pkg{luatexja-otf} パッケージでのみ使用される.
%</ja>
+
+\item[\texttt{begin\_par}]
+Nodes for indicating beginning of a paragraph.
+A paragraph which is started by \verb+\item+ in list-like environments has a horizontal box
+for its label before the actual contents. So \dots
\end{description}
%<*en>
These whatsits will be removed during the process of inserting \textbf{JAglue}s.
%</en>
%<*ja>
-これらの whatsit ノードは \textbf{JAglue} の挿入処理の間に取り除かれる.
+これらのwhatsitノードは\textbf{JAglue}の挿入処理の間に取り除かれる.
%</ja>
%<en>\subsection{Stack System of \LuaTeX-ja}
-%<ja>\subsection{\LuaTeX-ja のスタックシステム}
+%<ja>\subsection{\LuaTeX-jaのスタックシステム}
\label{ssec-stack}
%<en>\paragraph{Background}
%<*en>
\LuaTeX-ja has its own stack system, and most parameters of \LuaTeX-ja
are stored in it. To clarify the reason, imagine the parameter
-\Param{kanjiskip} is stored by a skip, and consider the following
+\Param{\hyperlink{fld:kanjiskip}{kanjiskip}} is stored by a skip, and consider the following
source:
%</en>
%<*ja>
-\LuaTeX-ja は独自のスタックシステムを持ち,\LuaTeX-ja のほとんどのパラメータは
+\LuaTeX-jaは独自のスタックシステムを持ち,\LuaTeX-jaのほとんどのパラメータは
これを用いて保持されている.その理由を明らかにするために,
-\Param{kanjiskip} パラメータがスキップレジスタで保持されているとし,
+\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}パラメータがスキップレジスタで保持されているとし,
以下のコードを考えてみよう:
%</ja>
\begin{LTXexample}
%<*en>
As described in Subsection~\ref{ssec-param}, 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.
+\Param{\hyperlink{fld:kanjiskip}{kanjiskip}} in an hbox is the latest value, so the value of
+\Param{\hyperlink{fld:kanjiskip}{kanjiskip}} which applied in the entire hbox should be 5\,pt.
However, by the implementation method of \LuaTeX, this `5\,pt' cannot be
known from any callbacks. In the \texttt{tex/packaging.w} (which is a
file in the source of \LuaTeX), there are the following codes:
%</en>
%<*ja>
-\ref{ssec-param} 節で述べたように,ある水平ボックスの中で効力を持つ
-\Param{kanjiskip} の値は最後に現れた値のみであり,したがってボックス全体に適用される
-\Param{kanjiskip} は 5\,pt であるべきである.しかし,\LuaTeX の実装のために,
-この `5\,pt' はどのコールバックからも知ることはできない.
-\texttt{tex/packaging.w}(これは \LuaTeX のソースファイルである)の中に,
+\ref{ssec-param}節で述べたように,ある水平ボックスの中で効力を持つ
+\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の値は最後に現れた値のみであり,したがってボックス全体に適用される
+\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}は5\,ptであるべきである.しかし,\LuaTeX の実装のために,
+この`5\,pt'はどのコールバックからも知ることはできない.
+\texttt{tex/packaging.w}(これは\LuaTeX のソースファイルである)の中に,
以下のコードがある:
%</ja>
\begin{lstlisting}
%<*ja>
\verb+unsave+ が \verb+filtered_hpack+(これは \verb+hpack_filter+ コールバックが
実行されるところである)の\textbf{前に}実行されていることに注意する.
-したがって,上記ソース中で `5\,pt' は \verb+unsave+ のところで捨てられ,
+したがって,上記ソース中で`5\,pt'は \verb+unsave+ のところで捨てられ,
\verb+hpack_filter+ からはアクセスすることができない.
%</ja>
\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 の投稿.}を
+スタックシステムのコードはDev-luatexメーリングリストのある投稿\footnote{\texttt{[Dev-luatex] tex.currentgrouplevel}: Jonathan Sauerによる2008/8/19の投稿.}を
ベースにしている.
%</ja>
previous level is copied.
%</en>
%<*ja>
-情報を保持するために,2つの \TeX の整数レジスタを用いている:
+情報を保持するために,2つの\TeX の整数レジスタを用いている:
\verb+\ltj@@stack+ でスタックレベル,\verb+\ltj@@group@level+ で最後の代入が
-なされた時点での \TeX のグループレベルを保持している.
-パラメータは \texttt{charprop\_stack\_table} という名前のひとつの大きなテーブルに
-格納される.ここで,\texttt{charprop\_stack\_table[$i$]} はスタックレベル $i$ の
+なされた時点での\TeX のグループレベルを保持している.
+パラメータは\texttt{charprop\_stack\_table}という名前のひとつの大きなテーブルに
+格納される.ここで,\texttt{charprop\_stack\_table[$i$]}はスタックレベル$i$の
データを格納している.もし新しいスタックレベルが \verb+\ltjsetparameter+ によって
生成されたら,前のレベルの全てのデータがコピーされる.
%</ja>
group, then:
%</en>
%<*ja>
-上の「背景」で述べた問題を解決するために,\LuaTeX-ja ではもう一つの手法を導入する:
-新しいスタックレベルが生成されようとするとき,type, subtype, value がそれぞれ
-44~(\textit{user\_defined}), 30112,そして現在のグループレベルである whatsit ノード
-を現在のリストに付け加える(このノードを \textit{stack\_flag} とする).
+上の「背景」で述べた問題を解決するために,\LuaTeX-jaではもう一つの手法を導入する:
+新しいスタックレベルが生成されようとするとき,type, subtype, valueがそれぞれ
+44~(\textit{user\_defined}), 30112,そして現在のグループレベルであるwhatsitノード
+を現在のリストに付け加える(このノードを\textit{stack\_flag}とする).
これにより,ある水平ボックスの中で代入がなされたかどうかを知ることが可能
-となる.スタックレベルを $s$,その水平ボックスグループの直後の \TeX のグループレベルを
-$t$ とすると:
+となる.スタックレベルを$s$,その水平ボックスグループの直後の\TeX のグループレベルを
+$t$とすると:
%</ja>
\begin{itemize}
%<*en>
level~$s$.
%</en>
%<*ja>
-\item もしその水平ボックスのリストの中に \textit{stack\_flag} ノードがなければ,
+\item もしその水平ボックスのリストの中に\textit{stack\_flag}ノードがなければ,
水平ボックスの中では代入は起こらなかったということになる.
- したがって,その水平ボックスの終わりにおけるパラメータの値はスタックレベル $s$ に
+ したがって,その水平ボックスの終わりにおけるパラメータの値はスタックレベル$s$に
格納されている.
%</ja>
stack level~$s+1$.
%</en>
%<*ja>
-\item もし値が $t+1$ の \textit{stack\_flag} ノードがあれば,その
+\item もし値が$t+1$の\textit{stack\_flag}ノードがあれば,その
水平ボックスグループの中で代入が起こったことになる.
- したがって,水平ボックスの終わりにおけるパラメータの値はスタックレベル $s+1$ に
+ したがって,水平ボックスの終わりにおけるパラメータの値はスタックレベル$s+1$に
格納されている.
%</ja>
level~$s$.
%</en>
%<*ja>
-\item もし \textit{stack\_flag} ノードがあるがそれらの値が全て $t+1$ より大きい
+\item もし\textit{stack\_flag}ノードがあるがそれらの値が全て$t+1$より大きい
場合,そのボックスの中で代入が起こったが,それは「より内部の」グループで
起こったということになる.したがって,水平ボックスの終わりでのパラメータの
- 値はスタックレベル $s$ に格納されている.
+ 値はスタックレベル$s$に格納されている.
%</ja>
\end{itemize}
%<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,
\item State~$M$: 行中.
\item State~$K$: 行中(和文文字の後).
\end{itemize}
-また,状態遷移は,図 \ref{fig-ptexipro} のようになっており,図中の数字は
+また,状態遷移は,図\ref{fig-ptexipro}のようになっており,図中の数字は
カテゴリーコードを表している.最初の3状態は\TeX の入力処理部と同じであり,
図中から状態$K$と「$j$」と書かれた矢印を取り除けば,\TeX の入力処理部と同
じものになる.
%</ja>
\begin{figure}[!tb]
-\begin{gather*}
- \def\sp{\texttt{\char32}}
- \xymatrix{&&
- {\text{scan a cs}}\ar@(r,ul)[dr]&\\
-\ar[r]&
- *++[o][F-]{N}\ar[ur]^0\ar[dd]_{d,\ g}\ar[u]^{5\ (\texttt{\char92par})}
- \ar@{->}@(d,l)[ddrr]_(0.45){j}&&
- *++[o][F-]{S}\ar@(l,dr)[ul]^0\ar@(l,ur)[ddll]_{d,\ g}\ar[u]_{5}
- \ar@{->}@(r,r)[dd]^{j}\\&\\&
- *++[o][F-]{M}\ar[uuur]^0\ar@(r,dl)[uurr]_(0.55){10\ (\sp)}
- \ar[d]_{5\ ({\sp})}\ar@{->}@(dr,dl)[rr]_{j}&&
- *++[o][F-]{K}\ar@{->}@(ul,d)[uuul]^0\ar@{->}[ll]^{d}
- \ar@{->}@(ur,dr)[uu]^{10\ (\sp)}\ar@{->}[d]_5\\
- &&&
- }\\
- d:=\{3,4,6,7,8,11,12,13\},\quad g:=\{1,2\},\quad j:=(\text{Japanese characters})
-\end{gather*}
+\let\sp\textvisiblespace\small
+\begin{minipage}{.6\textwidth}%
+\begin{center}
+\unitlength=6.5mm\sf\mathversion{bold}
+\begin{tikzpicture}[
+ ->, auto, shorten >=1pt
+]
+\node [shape=rectangle, font=\scriptsize] (init) at (2,7) {start};
+\node [shape=circle,draw, fill=blue!20] (newline) at (4,7) {$N$};
+\node [shape=circle,draw, fill=blue!20] (midline) at (4,4) {$M$};
+\node [shape=circle,draw, fill=blue!20] (skipspc) at (8,7) {$S$};
+\node [shape=circle,draw, fill=red!20] (kanji) at (8,4) {$K$};
+\node [shape=rectangle,draw, fill=green!20] (scanacs) at (6,8) {scan a c.s.};
+\node (endk) at (8,2.5) {} ;
+\node (endm) at (4,2.5) {} ;
+\node (ends) at (8,8.5) {} ;
+\node (endn) at (4,8.5) {} ;
+\begin{scope}[font=\scriptsize]
+\path (newline) edge [bend right] node [left]{G, O} (midline)
+ (init) edge node {} (newline)
+ (midline) edge [bend right=10] node {10} (skipspc)
+ (skipspc) edge [bend right] node [left,right=10,above=7]{G, O} (midline)
+ (skipspc) edge [loop right] node {10} (skipspc)
+ (newline) edge [loop right] node {10} (newline)
+ (scanacs) edge [bend left] node [left=3,below]{$(*)$} (skipspc)
+ (scanacs) edge [bend right] node [right=30,above=20]{$(*)$} (midline)
+ (midline) edge node {5\ [\sp]} (endm)
+ (midline) edge [loop left] node {G, O} (midline)
+ (skipspc) edge node [right] {5} (ends)
+ (newline) edge node {5 [{\tt\char92par}]} (endn);
+\begin{scope}[red]
+\path (newline) edge [bend right] node [right=25,below=3]{J} (kanji)
+ (midline) edge node [below]{J} (kanji)
+ (kanji) edge [bend left] node {O} (midline)
+ (kanji) edge node {10} (skipspc)
+ (kanji) edge [loop right] node {G, J} (kanji)
+ (skipspc) edge [bend left] node {J} (kanji)
+ (kanji) edge node {5} (endk)
+;
+\end{scope}
+\end{scope}
+\end{tikzpicture}
+\end{center}
+\end{minipage}%
+\begin{minipage}{.4\textwidth}
+\begin{description}
+\item[\textsf{G}] Beginning of group (usually \verb+{+)\\
+ and ending of group (usually \verb+}+).
+\item[\textsf{J}] Japanese characters.
+\item[\textsf{5}] \textit{end-of-line} (usually \verb+^^J+).
+\item[\textsf{10}] space (usually \sp).
+\item[\textsf{O}] other characters, whose category code is in $\{3,4,6,7,8,11,12,13\}$.
+\item[\textsf{[\sp]}, \textsf{[{\tt\char92par}]}]
+emits a space, or~\verb+\par+.
+\end{description}
+\end{minipage}
\begin{itemize}
-%<*en>
-\item Numbers represent category codes.
-%</en>
-%<*ja>
-\item 数字はカテゴリーコードを表わしている.
-%</ja>
-%<*en>
-\item Category codes 9~(ignored), 14~(comment)~and~15~(invalid) are omitted in the above diagram.
-%</en>
-%<*ja>
-\item カテゴリーコード 9(無視する文字),14(コメント文字),15(無効文字)は上の図では省かれている.
-%</ja>
+\item We omitted about category codes
+9~(\textit{ignored}), 14~(\textit{comment})~and~15~(\textit{invalid})
+from the above diagram. We also ignored the input like `\verb+^^A+' or `\verb+^+\verb+^df+'.
+\item When a character whose category code is 0 (\textit{escape character}) is seen by \TeX,
+the input processor scans a control sequence (\textsf{scan a c.s.}).
+These paths are not shown in the above diagram.
+
+After that, the state is changed to State~$S$ (skipping blanks) in most cases, but
+to State~$M$ (middle of line) sometimes.
\end{itemize}
%<en>\caption{State transitions of \pTeX's input processor.}
%<ja>\caption{\pTeX の入力処理部の状態遷移.}
%<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{quote}
A character U+FFFFF (its category code is set to 14~(comment) by
\LuaTeX-ja) is appended to an input line, \emph{before \LuaTeX\ actually
-process it}, if and only if the following two conditions are satisfied:
+process it}, if and only if the following three conditions are satisfied:
\begin{enumerate}
-\item The category code of the character $\langle${return}$\rangle$
- (whose character code is 13) is 5~(end-of-line).
+\item The category code of \verb+\endlinechar+%
+\footnote{Usually, it is $\langle${return}$\rangle$
+ (whose character code is 13).} is 5~(end-of-line).
+\item The category code of U+FFFFF itself is 14~(comment).
\item The input line matches the following `regular expression':
\[
(\text{any char})^*(\textbf{JAchar})
%</en>
%<*ja>
-\LuaTeX の入力処理部は\TeX のそれと全く同じであり,callbackによりユーザが
+\LuaTeX の入力処理部は\TeX のそれと全く同じであり,コールバックによりユーザが
カスタマイズすることはできない.このため,改行抑制の目的でユーザが利用で
-きそうなcallbackとしては,\verb+process_input_buffer+や
+きそうなコールバックとしては,\verb+process_input_buffer+や
\verb+token_filter+に限られてしまう.しかし,\TeX の入力処理部をよく見る
と,後者も役には経たないことが分かる:改行文字は,入力処理部によってトー
クン化される時に,カテゴリーコード10の32番文字へと置き換えられてしまうた
\begin{quote}
各入力行に対し,\textbf{その入力行が読まれる前の内部状態で}
-以下の2条件が満たされている場合,\LuaTeX-jaはU+FFFFF番の文字
+以下の3条件が満たされている場合,\LuaTeX-jaはU+FFFFF番の文字
\footnote{この文字はコメント文字として扱われるように\LuaTeX-ja内部で設定をしている.}
を末尾に追加する.よって,その場合に改行は空白とは見做されないこととなる.
\begin{enumerate}
-\item 改行文字(文字コード13番)のカテゴリーコードが5~(end-of-line)である.
+\item \verb+\endlinechar+の文字\footnote{普通は,改行文字(文字コード13番)である.}
+のカテゴリーコードが5~(end-of-line)である.
+\item U+FFFFFのカテゴリーコードが14~(comment)である.
\item 入力行は次の「正規表現」にマッチしている:
\[
(\text{any char})^*(\textbf{JAchar})
その行はそこで改行するようにした方がいいだろう.
%</ja>
+%<*ja>
%<en>\section{Insertion of JFM glues, \Param{kanjiskip} and \Param{xkanjiskip}}
-%<ja>\section{JFM グルーの挿入,\Param{kanjiskip} と \Param{xkanjiskip}}
+%<ja>\section{JFMグルーの挿入,\Param{kanjiskip}と\Param{xkanjiskip}}
\label{sec-jfmglue}
%<en>\subsection{Overview}
%<ja>\subsection{概要}
-\LuaTeX-ja における和文処理グルーの挿入方法は,\pTeX のそれとは全く異なる.
+\LuaTeX-jaにおける \textbf{JAglue} の挿入方法は,\pTeX のそれとは全く異なる.
\pTeX では次のような仕様であった:
\begin{itemize}
\item JFMグルーの挿入は,和文文字を表すトークンを元に水平リストに(文字を表す)<char\_node>を
追加する過程で行われる.
-\item \Param{xkanjiskip}の挿入は,水平ボックスへのパッケージングや行分割前に行われる.
-\item \Param{kanjiskip}はノードとしては挿入されない.パッケージングや行分割の計算時に
-「和文文字を表す2つの<char\_node>の間には\Param{kanjiskip}がある」ものとみなされる.
+\item \Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は,水平ボックスへのパッケージングや行分割前に行われる.
+\item \Param{\hyperlink{fld:kanjiskip}{kanjiskip}}はノードとしては挿入されない.パッケージングや行分割の計算時に
+「和文文字を表す2つの<char\_node>の間には\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}がある」ものとみなされる.
\end{itemize}
しかし,\LuaTeX-jaでは,水平ボックスへのパッケージングや行分割前に全ての
-\textbf{JAglue},即ちJFMグルー・\Param{xkanjiskip}・\Param{kanjiskip}の
+\textbf{JAglue},即ちJFMグルー・\Param{\hyperlink{fld:xks}{xkanjiskip}}・\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}の
3種類を一度に挿入することになっている.これは,\LuaTeX において欧文の合字・
カーニング処理がノードベースになったことに対応する変更である.
The \textit{id} is \textit{id\_pbox}.
%</en>
%<*ja>
-\item その \verb+\ltj@icflag+ の値が $[3,15)$ に入るノードのリスト.
+\item その \verb+\ltj@icflag+ の値が$[3,15)$に入るノードのリスト.
これらのノードはある既にパッケージングされた水平ボックスから \verb+\unhbox+ で
アンパックされたものである.
- その \textit{id} は \textit{id\_pbox} である.
+ その\textit{id}は\textit{id\_pbox}である.
%</ja>
%<*en>
The \textit{id} is \textit{id\_math}.
%</en>
%<*ja>
-\item インライン数式でその境界に2つの \textit{math\_node} を含むもの.
- その \textit{id} は \textit{id\_math} である.
+\item インライン数式でその境界に2つの\textit{math\_node}を含むもの.
+ その\textit{id}は\textit{id\_math}である.
%</ja>
%<*en>
\item A \textit{glyph\_node}~$p$ with nodes which relate with it:
%</en>
%<*ja>
-\item \textit{glpyh\_node}~$p$ とそれに関係するノード:
+\item \textit{glpyh\_node}~$p$とそれに関係するノード:
%</ja>
\begin{enumerate}
%<*en>
\item A kern for the italic correction of~$p$.
%</en>
%<*ja>
-\item $p$ のイタリック補正のためのカーン.
+\item $p$のイタリック補正のためのカーン.
%</ja>
%<*en>
\item An accent attached to $p$ by \verb+\accent+.
%</en>
%<*ja>
-\item \verb+\accent+ による $p$ に付随したアクセント.
+\item \verb+\accent+ による$p$に付随したアクセント.
%</ja>
\end{enumerate}
\[
represents a Japanese character or not.
%</en>
%<*ja>
-\textit{id} は \textit{glyph\_node} が和文文字を表すかどうかによって
-\textit{id\_jglyph},もしくは \textit{id\_glyph} となる.
+\textit{id}は\textit{glyph\_node}が和文文字を表すかどうかによって
+\textit{id\_jglyph},もしくは\textit{id\_glyph}となる.
%</ja>
%<*en>
%</en>
%<*ja>
\item ボックス様のノード,つまり水平ボックス,垂直ボックス,罫線 (\verb+\vrule+),
- そして \textit{unset\_node}.
- その \textit{id} は垂直に移動していない水平ボックスならば \textit{id\_hlist},
- そうでなければ \textit{id\_box\_like} となる.
+ そして\textit{unset\_node}.
+ その\textit{id}は垂直に移動していない水平ボックスならば\textit{id\_hlist},
+ そうでなければ\textit{id\_box\_like}となる.
%</ja>
%<*en>
and \textit{id\_disc}, respectively.
%</en>
%<*ja>
-\item グルー,subtype が 2~(\textit{accent}) ではないカーン,そして任意改行.
- その \textit{id} はそれぞれ \textit{id\_glue}, \textit{id\_kern},そして
- \textit{id\_disc} である.
+\item グルー,subtypeが 2~(\textit{accent})ではないカーン,そして任意改行.
+ その\textit{id}はそれぞれ\textit{id\_glue}, \textit{id\_kern},そして
+ \textit{id\_disc}である.
%</ja>
\end{enumerate}
%<*en>
Let \textit{Np}, \textit{Nq} and \textit{Nr} denote a cluster.
%</en>
%<*ja>
-以下では \textit{Np}, \textit{Nq}, \textit{Nr} でクラスタを表す.
+以下では\textit{Np}, \textit{Nq}, \textit{Nr}でクラスタを表す.
%</ja>
\end{defn}
「最後の文字」を表す\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 コード中にそのように書かれているわけではないことに注意.
+説明用に準備した概念であって,実際のLuaコード中にそのように書かれているわけではないことに注意.
\begin{description}
\item[\textit{id\_jglyph}] 和文文字.\\
\begin{verbatim}
\hbox{\hbox{abc}...\hbox{\lower1pt\hbox{xyz}}}
\end{verbatim}
-のように,$p$の内容が別の hbox で開始・終了している可能性も十分あり得る.そのような場合,
+のように,$p$の内容が別の水平ボックスで開始・終了している可能性も十分あり得る.そのような場合,
$\mathit{Np}.\mathit{head}$, $\mathit{Np}.\mathit{tail}$の算出は,\textbf{垂直方向にシフトされていない}水平ボックスの
場合だけ内部を再帰的に探索する.例えば上の例では,$\mathit{Np}.\mathit{head}$は文字「a」を表すノードであり,
一方$\mathit{Np}.\mathit{tail}$は垂直方向にシフトされた水平ボックス,\verb+\lower1pt\hbox{xyz}+に対応するノードである.
\textit{id}が\textit{id\_pbox}であって$\mathit{Np}.\mathit{head}$が\textbf{JAchar}であるとき.
\item[和文B] リスト中の水平ボックスの中身の先頭として出現した和文文字.和文Aとの違いは,これの前に
-JFMグルーの挿入が行われない(\Param{xkanjiskip},~\Param{kanjiskip}は入り得る)ことである.\\
+JFMグルーの挿入が行われない(\Param{\hyperlink{fld:xks}{xkanjiskip}},~\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}は入り得る)ことである.\\
\textit{id}が\textit{id\_hlist}か\textit{id\_disc}であって$\mathit{Np}.\mathit{head}$が\textbf{JAchar}であるとき.
\item[欧文] リスト中に直接/水平ボックスの中身として出現している欧文文字.次の3つの場合が該当:
まず,「右空白」にあたる量を算出する.通常はこれが,隣り合った2つの和文文字間に入る空白量となる.
\begin{description}
\item[JFM由来{[M]}] JFMの文字クラス指定によって入る空白を以下によって求める.この段階で空白量が未定義(未指定)だった場合,
- デフォルト値\Param{kanjiskip}を採用することとなるので,次へ.
+ デフォルト値\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}を採用することとなるので,次へ.
\begin{enumerate}
\item もし両クラスタの間で\verb+\inhibitglue+が実行されていた場合(証としてwhatsitノードが自動挿入される),
- 代わりに\Param{kanjiskip}が挿入されることとなる.次へ.
+ 代わりに\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}が挿入されることとなる.次へ.
\item \textit{Nq}と\textit{Np}が同じJFM・同じ\texttt{jfmvar}キー・同じサイズの和文フォントであったならば,
- 共通に使っているJFM内で挿入される空白(グルーかカーン)が決まっているか調べる.
+ 共通に使っているJFM内で挿入される空白(グルーかカーン)が決まっているか調べ,決まっていればそれを採用.
\item 1.でも2.でもない場合は,\textit{Nq}と\textit{Np}が違うJFM/\texttt{jfmvar}/サイズである.
この場合,まず
\[
-\vcenter{\halign{\hfil$#:={}$&(\inhibitglue#\inhibitglue)\cr
-gb&\textit{Nq}と「文字コードが{\tt'diffmet'}の文字」との間に入るグルー/カーン\cr
-ga&「文字コードが{\tt'diffmet'}の文字」と\textit{Np}との間に入るグルー/カーン\cr
+\vcenter{\halign{\hfil$#:={}$&\inhibitglue#\inhibitglue\cr
+gb&(\textit{Nq}と「使用フォントが\textit{Nq}のそれと同じで,\hfil\cr
+\omit&\quad 文字コードが\textit{Np}のそれの文字」との間に入るグルー/カーン)\hfil\cr
+ga&(\inhibitglue 「使用フォントが\textit{Np}のそれと同じで,\hfil\cr
+\omit&\quad 文字コードが\textit{Nq}のそれの文字」と\textit{Np}との間に入るグルー/カーン)\hfil\cr
}}
\]
-として,左側由来・右側由来の空白(グルー/カーン)を(それぞれのJFMから)求める.
-$\mathit{ga}$と$\mathit{gb}$のどちらか片方が未定義であるならば,定義されている側の値をそのまま採用する.
-もし$\mathit{ga}$と$\mathit{gb}$が両方決まっているならば,両者の値を平均\footnote{\Param{differentjfm}パラメタの
-値によって,「大きい方」「小さい方」「合計」に変えることができる.}した値を採用する.
+として,前側の文字のJFMを使った時の空白(グルー/カーン)と,後側の文字のJFMを使った時のそれを求める.
+
+$\mathit{gb}$,~$\mathit{ga}$それぞれに対する<ratio>の値を$d_b$,~$d_a$とする.
+\begin{itemize}
+\item
+$\mathit{ga}$と$\mathit{gb}$の両方が未定義であるならば,JFM由来のグルーは挿入されず,\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}を採用することとなる.どちらか片方のみが未定義であるならば,次のステップでその未定義の方は長さ0のkernで,<ratio>の値は0であるかのように扱われる.
+\item
+\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}の値が\texttt{pleft}, \texttt{pright}, \texttt{paverage}のとき,
+<ratio>の指定に従って比例配分を行う.
+JFM由来のグルー/カーンは以下の値となる:
+\[
+ f\left(\frac{1-d_b}2\textit{gb} + \frac{1+d_b}2\textit{ga},
+\frac{1-d_a}2\textit{gb} + \frac{1+d_a}2\textit{ga}\right)
+\]
+ここで.$f(x,y)$は
+\[
+ f(x,y)=\begin{cases}
+x&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{pleft};\\
+y&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{pright};\\
+(x+y)/2&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{paverage};
+\end{cases}.
+\]
+\item
+\Param{differentmet}がそれ以外の値の時は,<ratio>の値は無視され,JFM由来のグルー/カーンは以下の値となる:
+\[
+ f(\textit{gb},\textit{ga})
+\]
+ここで.$f(x,y)$は
+\[
+ f(x,y)=\begin{cases}
+\min(x,y)&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{small};\\
+\max(x,y)&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{large};\\
+(x+y)/2&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{average};\\
+x+y&\text{if\ }\Param{\hyperlink{fld:diffjfm}{diffrentjfm}}=\texttt{both};
+\end{cases}.
+\]
+\end{itemize}
\end{enumerate}
例えば,
この場合,$p$と$q$の間は,実フォントが異なるにもかかわらず(2)の状況となる一方で,
$q$と$r$の間は(実フォントが同じなのに)\texttt{jfmvar}キーの内容が異なるので(3)の状況となる.
\item[\Param{kanjiskip}~{[K]}] 上の[M]において空白が定まらなかった場合,
-\Param{kanjiskip}の値を以下で定め,それを「右空白」として採用する.
+以下で定めた量「右空白」として採用する.
この段階においては,\verb+\inhibitglue+は効力を持たないため,
結果として,2つの和文文字間には常に何らかのグルー/カーンが挿入されることとなる.
\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}の値を用いる.
+\item ユーザ側から見た\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}パラメタの自然長が${\tt \char92 maxdimen}=(2^{30}-1)\,{\rm sp}$で
+なければ,\Param{\hyperlink{fld:kanjiskip}{kanjiskip}}パラメタの値を持つglueを採用する.
+\item 2.でない場合は,\textit{Nq}, \textit{Np}で使われているJFMに指定されている\Param{\hyperlink{fld:kanjiskip}{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 既に算出した「右空白」がカーンである場合は,「左空白」は挿入されない.
-\item 「右空白」がglueか未定義(長さ0のglueとみなす)の場合は,「左空白」は
-\textit{Nq}と「文字コード\texttt{'lineend'}の文字」との間に入るカーンとして,JFMから決定される.
-\item 2.で決まった「左空白」の長さが0でなければ,その分だけ先ほど算出した「右空白」の自然長を引く.
-\end{enumerate}
-\end{description}
+「左空白」は過去のバージョンでは定義していたが,このバージョンでは挿入は一切行われない(機能自体削除している).しかし,仕様は流動的であり,将来復活する可能性もあるため,マニュアル中の記述は今のところ極力変更しない.
\paragraph{禁則用ペナルティの挿入}
まず,
\[
- a:=(\text{\textit{Nq}{\footnotemark}の文字に対する\Param{postbreakpenalty}の値})
-+(\text{\textit{Np}{\footnotemark}の文字に対する\Param{prebreakpenalty}の値})
+ a:=(\text{\textit{Nq}{\footnotemark}の文字に対する\Param{\hyperlink{fld:postbp}{postbreakpenalty}}の値})
++(\text{\textit{Np}{\footnotemark}の文字に対する\Param{\hyperlink{fld:prebp}{prebreakpenalty}}の値})
\]
とおく\footnotetext{厳密にはそれぞれ$\mathit{Nq}.\mathit{tail}$,$\mathit{Np}.\mathit{head}$.}.
ペナルティは通常$[-10000,10000]$の整数値をとり,また$\pm 10000$は正負の無限大を意味することになっているが,この$a$の
\label{tab-jfmglue}
\begin{center}
\small
-\begin{tabular}{>{\sf}c|cccccc}
+\begin{tabular}{c|cccccc}
\toprule
{\bf\textit{Np}}↓&\sf 和文A&\sf 和文B&\sf 欧文&\sf 箱&\sf glue&\sf kern\\\midrule
-和文A&
+\sf 和文A&
\gkf{E}{M→K}{PN}&
\gkf{---}{\OA →K}{PN}&
\gkf{---}{\OA →X}{PN}&
\gkf{---}{\OA}{PA}&
\gkf{---}{\OA}{PN}&
\gkf{---}{\OA}{PS}\\
-和文B&
+\sf 和文B&
\gkf{E}{\OB→K}{PA}&
\gkf{---}{K}{PS}&
\gkf{---}{X}{PS}\\
-欧文&
+\sf 欧文&
\gkf{E}{\OB →X}{PA}&
\gkf{---}{X}{PS}\cr
-箱&\gkf{E}{\OB}{PA}\\
-glue&\gkf{E}{\OB}{PN}\\
-kern&\gkf{E}{\OB}{PS}\\
+\sf 箱&\gkf{E}{\OB}{PA}\\
+\sf glue&\gkf{E}{\OB}{PN}\\
+\sf kern&\gkf{E}{\OB}{PS}\\
\bottomrule
\end{tabular}
\end{center}
\item \LuaTeX-ja adopts the method `\textsf{P-normal~[PN]}' to adjust the penalty between two clusters for \emph{kinsoku shori}.
%</en>
%<*ja>
-\item \LuaTeX-ja は2つのクラスタの間の禁則処理用のペナルティを調節するために「\textsf{P-normal~[PN]}」の方法を採用する.
+\item \LuaTeX-jaは2つのクラスタの間の禁則処理用のペナルティを調節するために「\textsf{P-normal~[PN]}」の方法を採用する.
%</ja>
\end{enumerate}
\end{quote}
\end{table}
\subsection{その他の場合}
-本節の内容は表 \ref{tab-jfmglue} にまとめてある.
+本節の内容は表\ref{tab-jfmglue}にまとめてある.
\paragraph{和文Aと欧文の間}
\textit{Nq}が\textsf{和文A}で,\textit{Np}が\textsf{欧文}の場合,JFMグルー挿入処理は次のようにして行われる.
\begin{itemize}
\item 「右空白」については,まず以下に述べる\textsf{Boundary-B~[\OB]}により空白を決定しようと試みる.
-それが失敗した場合は,\textsf{\Param{xkanjiskip}~[X]}によって定める.
+それが失敗した場合は,\textsf{\Param{\hyperlink{fld:xks}{xkanjiskip}}~[X]}によって定める.
\item 「左空白」については,既に述べた\textsf{line-end~[E]}をそのまま採用する.それに伴う「右空白」の補正も同じ.
\item 禁則用ペナルティも,以前述べた\textsf{P-normal~[PN]}と同じである.
\end{itemize}
\item そうでなければ,
\textit{Nq}と「文字コードが{\tt'jcharbdd'}の文字」との間に入るグルー/カーンとして定まる.
\end{enumerate}
-\item[\Param{xkanjiskip}~{[X]}]
+\item[\Param{\hyperlink{fld:xks}{xkanjiskip}}~{[X]}]
この段階では,\textsf{\Param{kanjiskip}~[K]}のときと同じように,
-\Param{xkanjiskip}の値を以下で定め,それを「右空白」として採用する.
+以下で定めた量を「右空白」として採用する.
この段階で\verb+\inhibitglue+は効力を持たないのも同じである.
\begin{enumerate}
-\item 以下のいずれかの場合は,\Param{xkanjiskip}の挿入は抑止される.しかし,実際には行分割を許容するために,長さ0のglueを採用する:
+\item 以下のいずれかの場合は,\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入は抑止される.しかし,実際には行分割を許容するために,長さ0のglueを採用する:
\begin{itemize}
\item 両クラスタにおいて,それらの中身の文字コードに対する\Param{autoxspacing}パラメタが共にfalseである.
-\item \textit{Nq}の中身の文字コードについて,「直後への\Param{xkanjiskip}の挿入」が禁止されている
+\item \textit{Nq}の中身の文字コードについて,「直後への\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入」が禁止されている
(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが2以上).
-\item \textit{Np}の中身の文字コードについて,「直前への\Param{xkanjiskip}の挿入」が禁止されている
+\item \textit{Np}の中身の文字コードについて,「直前への\Param{\hyperlink{fld:xks}{xkanjiskip}}の挿入」が禁止されている
(つまり,\Param{jaxspmode}~(or \Param{alxspmode})パラメタが偶数).
\end{itemize}
-\item ユーザ側から見た\Param{xkanjiskip}パラメタの自然長が${\tt \char92 maxdimen}=(2^{30}-1)\,{\rm sp}$で
-なければ,\Param{xkanjiskip}パラメタの値を持つglueを採用する.
+\item ユーザ側から見た\Param{\hyperlink{fld:xks}{xkanjiskip}}パラメタの自然長が${\tt \char92 maxdimen}=(2^{30}-1)\,{\rm sp}$で
+なければ,\Param{\hyperlink{fld:xks}{xkanjiskip}}パラメタの値を持つglueを採用する.
\item 2.でない場合は,\textit{Nq}, \textit{Np}(\textsf{和文A}/\textsf{和文B}なのは片方だけ)
-で使われているJFMに指定されている\Param{xkanjiskip}の値を用いる.
+で使われているJFMに指定されている\Param{\hyperlink{fld:xks}{xkanjiskip}}の値を用いる.
\end{enumerate}
\end{description}
\textsf{和文A}のクラスタが逆になるので,\textsf{Boundary-A~[\OA]}の部分が変わるだけ.
\begin{itemize}
\item 「右空白」については,まず以下に述べる\textsf{Boundary-A~[\OA]}により空白を決定しようと試みる.
-それが失敗した場合は,\textsf{\Param{xkanjiskip}~[X]}によって定める.
+それが失敗した場合は,\textsf{\Param{\hyperlink{fld:xks}{xkanjiskip}}~[X]}によって定める.
\item \textit{Nq}が和文でないので,「左空白」は算出されない.
\item 禁則用ペナルティは,以前述べた\textsf{P-normal~[PN]}と同じである.
\end{itemize}
\item 「左空白」については,既に述べた\textsf{line-end~[E]}の算出方法をそのまま採用する.それに伴う「右空白」の補正も同じ.
\item 禁則用ペナルティの処理は,後ろのクラスタ\textit{Np}の種類によって異なる.
なお,$\mathit{Np}.\mathit{head}$は無意味であるから,
-「$\mathit{Np}.\mathit{head}$に対する\Param{prebreakpenalty}の値」は0とみなされる.言い換えれば,
+「$\mathit{Np}.\mathit{head}$に対する\Param{\hyperlink{fld:prebp}{prebreakpenalty}}の値」は0とみなされる.言い換えれば,
\[
- a:=(\text{\textit{Nq}{\footnotemark}の文字に対する\Param{postbreakpenalty}の値}).
+ a:=(\text{\textit{Nq}{\footnotemark}の文字に対する\Param{\hyperlink{fld:postbp}{postbreakpenalty}}の値}).
\]
\begin{description}
\item[箱] \textit{Np}が\textsf{箱}であった場合は,両クラスタの間での行分割は
\overbrace{\Node{glyph}{`あ'}}^{\mathit{Nq}}\longrightarrow \overbrace{\Node{glue}{1\,pt}}^{\mathit{Np}}
\]
のような状況を考える.
-このとき,$a$,即ち「あ」の\Param{postbreakpenalty}がいかなる値であっても,
+このとき,$a$,即ち「あ」の\Param{\hyperlink{fld:postbp}{postbreakpenalty}}がいかなる値であっても,
この2クラスタ間は最終的に
\begin{equation}
\overbrace{\Node{glyph}{`あ'}}^{\mathit{Nq}}\longrightarrow
\label{eq-gref}
\end{equation}
となり,$a$分のペナルティは挿入されないことに注意して欲しい.
-\Param{postbreakpenalty}は($a$は)殆どの場合が非負の値と考えられ,そのような場合では
+\Param{\hyperlink{fld:postbp}{postbreakpenalty}}は($a$は)殆どの場合が非負の値と考えられ,そのような場合では
\eqref{eq-gref}と
\[
\overbrace{\Node{glyph}{`あ'}}^{\mathit{Nq}}\longrightarrow
\item 禁則用ペナルティの処理は,\textit{Nq}の種類によって異なる.
$\mathit{Nq}.\mathit{tail}$は無意味なので,
\[
- a:=(\text{\textit{Np}{\footnotemark}の文字に対する\Param{prebreakpenalty}の値}).
+ a:=(\text{\textit{Np}{\footnotemark}の文字に対する\Param{\hyperlink{fld:prebp}{prebreakpenalty}}の値}).
\]
\begin{description}
\item[箱] \textit{Nq}が\textsf{箱}の場合は,\textsf{P-allow~[PA]}を用いる.
\item \textsf{和文B}と箱・グルー・カーンが隣接したとき(どちらが前かは関係ない),間にJFMグルー・ペナルティの挿入は一切しない.
\item \textsf{和文B}と\textsf{和文B},また\textsf{和文B}と\textsf{欧文}とが隣接した時は,禁則用ペナルティ挿入処理は
\textsf{P-suppress~[PS]}が用いられる.
-\item \textsf{和文B}の文字に対する\Param{prebreakpenalty},~\Param{postbreakpenalty}の値は使われず,0として計算される.
+\item \textsf{和文B}の文字に対する\Param{\hyperlink{fld:prebp}{prebreakpenalty}},~\Param{\hyperlink{fld:postbp}{postbreakpenalty}}の値は使われず,0として計算される.
\end{itemize}
\end{LTXexample}
\begin{itemize}
\item 1行目の\verb+\inhibitglue+は\textsf{Boundary-B~[\OB]}の処理のみを抑止するので,ピリオドと「A」の間には
-\Param{xkanjiskip}(四分アキ)が入ることに注意.
+\Param{\hyperlink{fld:xks}{xkanjiskip}}(四分アキ)が入ることに注意.
\item 2行目のピリオドと「A」の間においては,前者が\textsf{和文B}となる(水平ボックスの中身の末尾として登場しているから)ので,
-そもそも\textsf{Boundary-B~[\OB]}の処理は行われない.よって,\Param{xkanjiskip}が入ることとなる.
+そもそも\textsf{Boundary-B~[\OB]}の処理は行われない.よって,\Param{\hyperlink{fld:xks}{xkanjiskip}}が入ることとなる.
\item 3行目では,ピリオドの属するクラスタは\textsf{和文A}である.これによって,
ピリオドと「A」の間には\textsf{Boundary-B~[\OB]}由来の半角アキが入ることになる.
\end{itemize}
+%</ja>
+
+%<en>\section{Patch for the \Pkg{listings} package}
+%<ja>\section{\Pkg{listings} パッケージへの対応}
+
+%<*en>
+It is well-known that the \Pkg{listings} package outputs weird results
+for Japanese input.
+The \Pkg{listings} package makes most of letters active and assigns
+output command for each letter \cite{listings}.
+But Japanese characters are not included in these activated letters.
+For \pTeX{} series, there is no method to make Japanese characters active;
+a patch \Pkg{jlisting.sty} \cite{jlisting} resolves the problem forcibly.
+%</en>
+%<*ja>
+\Pkg{listings} パッケージが,そのままでは日本語をまともに出力できないこと
+はよく知られている.きちんと整形して出力するために,\Pkg{listings}パッケー
+ジは内部で「ほとんどの文字」をアクティブにし,各文字に対してその文字の出
+力命令を割り当てている \cite{listings}.
+しかし,そこでアクティブにする文字の中に,和文文
+字がないためである.\pTeX 系列では,和文文字をアクティブにする手法がなく,
+\Pkg{jlisting.sty} というパッチ\cite{jlisting}を用いることで無理やり解決していた.
+%</ja>
+
+%<*en>
+In \LuaTeX-ja, the problem is resolved by using \verb+process_input_buffer+ callback.
+The callback function inserts the output command before each letter above U+0080.
+This method can omits the process to make all Japanese characters active
+(most of the activated characters are not used in many cases).
+%</en>
+%<*ja>
+\LuaTeX-jaでは,\verb+process_input_buffer+ コールバックを利用することで,
+「各行に出現するU+0080以降の文字に対して,それらの出力命令を前置する」という方法をとっている.
+これにより,(入力には使用されていないかもしれない)和文文字をもすべてアクティブ化する手間もなく,
+見通しが良い実装になっている.
+%</ja>
+
+%<*en>
+If \Pkg{listings.sty} and \LuaTeX-ja were loaded,
+then the patch \Pkg{lltjp-listings.sty} is loaded automatically at \verb+\begin{document}+.
+%</en>
+%<*ja>
+\LuaTeX-ja で利用される \Pkg{listings} パッケージへのパッチ \Pkg{lltjp-listings.sty} は,
+\Pkg{listings.sty} と\LuaTeX-jaを読み込んでおけば,
+\verb+\begin{document}+ の箇所において自動的に読み込まれるので,通常はあまり
+意識する必要はない.
+%</ja>
+
+%<en>\paragraph{Class of characters}
+%<ja>\paragraph{文字種}
+
+%<en>Roughly speaking, the \Pkg{listings} package processes input as follows:
+%<ja>\Pkg{listings} パッケージの内部では,大雑把に言うと
+\begin{enumerate}
+%<en>\item Collects \textit{letters} and \textit{digits}, which can be used for the name of identifiers.
+%<ja>\item 識別子として使える文字 (``letter'',~``digit'') たちを集める.
+%<en>\item When reading an \textit{other}, outputs the collected character string (with modification, if needed).
+%<ja>\item letterでもdigitでもない文字が現れた時に,収集した文字列を(必要なら修飾して)出力する.
+%<en>\item Collects \textit{others}.
+%<ja>\item 今度は逆に,letterでない文字たちをletterが現れるまで集める.
+%<en>\item When reading a \textit{letter} or a \textit{digit}, outputs the collected character string.
+%<ja>\item letterが出現したら集めた文字列を出力する.
+%<en>\item Turns back to 1.
+%<ja>\item 1.に戻る.
+\end{enumerate}
+%<*en>
+By the above process, line breaks inside of an identifier are blocked.
+A flag \verb+\lst@ifletter+ indicates whether the previous character can be used
+for the name of identifiers or not.
+%</en>
+%<*ja>
+という処理が行われている.これにより,識別子の途中では行分割が行われないようになっている.
+直前の文字が識別子として使えるか否かは \verb+\lst@ifletter+ というフラグに格納されている.
+%</ja>
+
+%<*en>
+For Japanese characters, line breaks are permitted on both sides
+except for parentheses, dashes, etc.
+To process Japanese characters,
+The pacth \Pkg{lltjp-listings.sty} introduces a new flag \verb+\lst@ifkanji+, which indicates
+whether the previous character is Japanese character or not.
+For illustration, we introduce the following classes of character:
+%</en>
+%<*ja>
+さて,日本語の処理である.殆どの和文文字の前後では行分割が可能であるが,その一方で
+括弧類や音引きなどでは禁則処理が必要なことから,\Pkg{lltjp-listings.sty} では,
+直前が和文文字であるかを示すフラグ \verb+\lst@ifkanji+ を新たに導入した.
+以降,説明のために以下のように文字を分類する:
+%</ja>
+\begin{center}
+\small
+\begin{tabular}{lccccc}
+\toprule
+&Letter&Other&Kanji&Open&Close\\\midrule
+\verb+\lst@ifletter+&T&F&T&F&T\\
+\verb+\lst@ifkanji+&F&F&T&T&F\\
+%<en>Meaning&identifier char&other alphabet&most of Japanese char&open paren&close paren\\
+%<ja>意図&識別子中の文字&その他欧文文字&殆どの和文文字&開き括弧類&閉じ括弧類\\
+\bottomrule
+\end{tabular}
+\end{center}
+%<*en>
+Note that \textit{digits} in the \Pkg{listings} package can be Letter or
+Other according to circumstances.
+%</en>
+%<*ja>
+なお,本来の\Pkg{listings} パッケージでの分類``digit''は,
+出現状況によって,上の表のLetterとOtherのどちらにもなりうる.
+また,KanjiとCloseは \verb+\lst@ifletter+ と \verb+\lst@ifkanji+ の値が一致しているが,
+これは間違いではない.
+%</ja>
+
+%<*en>
+For example, let us consider the case an Open comes after a Letter.
+Since an Open represents Japanese open parenthesis,
+it is preferred to be permitted to insert line break after the Letter.
+Therefore, the collected character string is output in this case.
+%</en>
+%<*ja>
+例えば,Letterの直後にOpenが来た場合を考える.
+文字種Openは和文開き括弧類を想定しているので,Letterの直後では行分割が可能であることが望ましい.
+そのため,この場合では,すでに収集されている文字列を出力することで行分割を許容するようにした.
+%</ja>
+
+%<*en>
+The following table summarizes $5\times 5=25$ cases:
+%</en>
+%<*ja>
+同じように,$5\times 5=25$通り全てについて書くと,次のようになる:
+%</ja>
+\begin{center}
+\small
+\begin{tabular}{llccccc}
+\toprule
+%<*en>
+&&\multicolumn{4}{c}{Next}\\\cmidrule(lr){3-7}
+&&\hbox to 4em{\hss Letter\hss}&\hbox to 4em{\hss Other\hss}
+&\hbox to 4em{\hss Kanji\hss}&\hbox to 4em{\hss Open\hss}&Close\\\midrule
+&Letter&collects&\multicolumn{3}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\
+&Other&outputs&collects&\multicolumn{2}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\
+Prev&Kanji&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\
+&Open&\multicolumn{5}{c}{\hrulefill \ collects\ \hrulefill}\\
+&Close&\multicolumn{4}{c}{\hrulefill \ outputs\ \hrulefill}&collects\\
+%</en>
+%<*ja>
+&&\multicolumn{4}{c}{後ろ側の文字}\\\cmidrule(lr){3-7}
+&&\hbox to 4em{\hss Letter\hss}&\hbox to 4em{\hss Other\hss}
+&\hbox to 4em{\hss Kanji\hss}&\hbox to 4em{\hss Open\hss}&Close\\\midrule
+直&Letter&収集&\multicolumn{3}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\
+前&Other&出力&収集&\multicolumn{2}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\
+文&Kanji&\multicolumn{4}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\
+字&Open&\multicolumn{5}{c}{\hrulefill \ 収集\ \hrulefill}\\
+種&Close&\multicolumn{4}{c}{\hrulefill \ 出力\ \hrulefill}&収集\\
+%</ja>
+\bottomrule
+\end{tabular}
+\end{center}
+%<en>In the above table,
+%<ja>上の表において,
+\begin{itemize}
+%<en>\item ``outputs'' means to output the collected character string (i.e., line breaking is permitted there).
+%<ja>\item 「出力」は,それまでに集めた文字列を出力(≒ここで行分割可能)を意味する.
+
+%<en>\item ``collects'' means to append the next character to the collected character string (i.e., line breaking is prohibited there).
+%<ja>\item 「収集」は,後側の文字を,現在収集された文字列に追加(行分割不可)を意味する.
+\end{itemize}
+
+%<en>\paragraph{Classification of characters}
+%<ja>\paragraph{和文文字扱いとなる文字}
+
+%<*en>
+Characters are classified according to \Param{jacharrange} parameter (see Section \ref{ssec-setrange}):
+%</en>
+%<*ja>
+\Pkg{listings} パッケージにおいて和文文字と扱われる
+(前に述べたKanji, Open,あるいは「閉じ括弧類」分類)か否かは,
+通常の\textbf{JAchar}/\textbf{Alchar}の範囲の設定(\Param{jacharrange} パラメータ,\ref{ssec-setrange}節を参照)に従って行われる:
+%</ja>
+\begin{itemize}
+
+%<en>\item \textbf{ALchars} above U+0080 are Letter.
+%<ja>\item (U+0080以降の)\textbf{ALchar}は,すべてLetter扱いである.
+
+%<en>\item \textbf{JAchars} are classified in the order as follows:
+%<ja>\item (U+0080以降の)\textbf{JAchar}については,以下の順序に従って文字種を決める:
+\begin{enumerate}
+%<en>\item Characters whose \Param{\hyperlink{fld:prebp}{prebreakpenalty}} is greater than or equal to 0 are Open.
+%<ja>\item \Param{\hyperlink{fld:prebp}{prebreakpenalty}}が0以上の文字はOpen扱いである.
+
+%<en>\item Characters whose \Param{\hyperlink{fld:postbp}{postbreakpenalty}} is greater than or equal to 0 are Close.
+%<ja>\item \Param{\hyperlink{fld:postbp}{postbreakpenalty}}が0以上の文字はClose扱いである.
+
+%<en>\item Characters that don't satisfy the above two conditions are Kanji.
+%<ja>\item 上の2条件のどちらにも当てはまらなかった文字は,Kanji扱いである.
+\end{enumerate}
+\end{itemize}
+
+%<*en>
+The width of halfwidth kana (U+FF61--U+FF9F) is same as the width of \textbf{ALchar};
+the width of the other \textbf{JAchars} is double the width of \textbf{ALchar}.
+%</en>
+%<*ja>
+なお,半角カナ(U+FF61--U+FF9F)以外の\textbf{JAchar}は欧文文字2文字分の幅をとるものとみなされる.
+半角カナは欧文文字1文字分の幅となる.
+%</ja>
+
+%<*en>
+The classification process is executed every time a character appears in
+listing environments.
+%</en>
+%<*ja>
+これらの文字種決定は,実際に \texttt{lstlisting} 環境などの内部で文字が出てくるたびに行われる.
+%</ja>
+
+%<*ja>
+\section{和文の行長補正方法}
+\label{sec-adjspec}
+\texttt{luatexja-adjust.sty} で提供される優先順位付きの行長調整の詳細を述
+べる.大まかに述べると,次のようになる.
+\begin{itemize}
+\item 通常の\TeX の行分割方法に従って,段落を行分割する.この段階では,行
+ 長に半端が出た場合,その半端分は\Param{\hyperlink{fld:xks}{xkanjiskip}},
+ \Param{\hyperlink{fld:kanjiskip}{kanjiskip}},JFMグルーの全てで(優先順位なく)負担される.
+\item その後,\texttt{post\_linebreak\_filter} callbackを使い,\textbf{段
+ 落中の各行ごとに},行末文字の位置を調整したり,優先度付きの行長調整
+ を実現するためにグルーの伸縮度を調整する.
+\texttt{luatexja-adjust.sty} の作用は,このcallbackを追加するだけであり,
+ この章の残りではcallbackでの処理について解説する.
+\end{itemize}
+
+\paragraph{準備:合計伸縮量の計算}
+グルーの伸縮度(\texttt{plus} や \texttt{minus} で指定されている値)には,
+有限値の他に,\texttt{fi},\texttt{fil},\texttt{fill},\texttt{filll}と
+いう4つの無限大レベル(後ろの方ほど大きい)があり,行の調整に
+\texttt{fi} などの\textbf{無限大レベルの伸縮度が用いられている場合は,そ
+の行に対しての処理を中止}する.
+
+よって,以降,問題にしている行の行長調整は伸縮度が有限長のグルーを用いて
+行われているとして良い.まず,段落中の行中のグルーを
+\begin{itemize}
+\item 下のどれにも該当しないグルー
+\item JFMグルー(優先度別にまとめられる)
+\item 和欧文間空白(\Param{\hyperlink{fld:xks}{xkanjiskip}})
+\item 和文間空白(\Param{\hyperlink{fld:kanjiskip}{kanjiskip}})
+\end{itemize}
+の$1+1+5+1=8$つに類別し,それぞれの種別ごとに許容されている伸縮度の合計を計算する.
+また,行長と自然長との差の絶対値を計算し,それを\textit{total}とおく.
+
+\subsection{行末文字の位置調整}
+まず,行末が文字クラス$n$の\textbf{JAchar}であった場合,
+それを動かすことによって,\textbf{JAglue} が負担する調整量を少なくしようとする.
+この行末文字の左右の移動可能量は,JFM中にある文字クラス$n$の定義の
+\texttt{end\_stretch},~\texttt{end\_shrink}フィールドに全角単位の値として記述されている.
+
+例えば,行末文字が句点「。」であり,そこで用いられているJFM中に
+\begin{verbatim}
+ [2] = {
+ chars = { '。', ... }, width = 0.5, ...,
+ end_stretch = 0.5, end_shrink = 0.5,
+ },
+\end{verbatim}
+という指定があった場合,この行末の句点は
+\begin{itemize}
+\item 通常の\TeX の行分割処理で「半角以上の詰め」が行われていた場合,
+この分の行中の\textbf{JAglue}の負担を軽減するため,
+行末の句点を半角だけ右に移動する(ぶら下げ組を行う).
+\item 通常の\TeX の行分割処理で「半角以上の空き」が行われていた場合,
+逆に行末句点を半角左に移動させる(見た目的に全角取りとなる).
+\item 以上のどちらでもない場合,行末句点の位置調整は行わない.
+\end{itemize}
+となる.
+
+行末文字を移動した場合,その分だけ\textit{total}の値を引いておく.
+
+\subsection{グルーの調整}
+\textit{total}の分だけが,行中のグルーの伸縮度に応じて負担されることになる.
+……
+
+%</ja>
+
+
-\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.
+\bibitem{listings} C.\ Heinz, B.\ Moses. The \textsf{Listings} Package.
+\bibitem{jlisting} Thor Watanabe. Listings\ -\ MyTeXpert. \newblock
+\url{http://mytexpert.sourceforge.jp/index.php?Listings}
+\bibitem{min10} 乙部厳己,min10フォントについて.
+\url{http://argent.shinshu-u.ac.jp/~otobe/tex/files/min10.pdf}
+\bibitem{jlreq} W3C Japanese Layout Task Force~(ed), Requirements for Japanese Text Layout (W3C Working Group Note), 2011, 2012. \newblock
+\url{http://www.w3.org/TR/jlreq/}%
+%<ja> \\日本語訳の書籍版:W3C日本語組版タスクフォース(編),『W3C技術ノート 日本語組版処理の要件』,東京電機大学出版局,2012.
+\bibitem{x4051} 日本工業規格(Japanese Industrial Standard) JIS~X~4051,
+日本語文書の組版方法(Formatting rules for Japanese documents), 1993, 1995, 2004.
\end{thebibliography}
+
+\newpage
+\appendix
+\batchmode
+%<en>\section{The category code of non-kanji characters defined in JIS~X~0213}
+%<ja>\section{\LuaTeX-jaにおけるJIS~X~0213非漢字のcatcode}
+
+%<*en>
+In these tables, the default catcode (\LuaTeX-ja) and kcatcode ((u)\pTeX) of non-kanji
+characters defined in JIS~X~0213 from row 1 to row 13 is summarized.
+Each character is printed as follows:
+%</en>
+%<*ja>
+ここでは,JIS~X~0213の非漢字部分(第1区〜第13区)のうち,
+どの文字が(u)\pTeX や\LuaTeX-jaで制御綴内に使用可能かを表にしてまとめる.
+各文字は
+%</ja>
+\begin{center}
+\tt\fboxsep=1pt\fbox{\hbox to \zw{\gtfamily あ\hss}}\,\scriptsize LUP
+\end{center}
+%<*ja>
+のように表示しており,各文字は次の意味を持っている.
+この表の生成は,JIS~X~0208の範囲内の文字については\verb+\jis+命令を使って行なっている.
+%</ja>
+%<*en>
+The tables are generated by using \verb+\jis+ command for characters included in
+JIS~X~0208.
+Each character in the tables means:
+%</en>
+\begin{itemize}
+%<*en>
+\item The background of a character regarded as \textbf{ALchar} in \LuaTeX-ja
+ is colored light blue.
+%</en>
+%<*ja>
+\item 背景が薄く青く塗られている文字は,
+\LuaTeX-ja の標準で\textbf{ALchar}として認識されている文字である.
+%</ja>
+
+%<*en>
+\item The first letter {\tt L} means that the character is available for
+ the name of a control sequence in \XeTeX{} and \LuaTeX-ja (its catcode is 11).
+%</en>
+%<*ja>
+\item 1文字目の {\tt L} は,\XeTeX や\LuaTeX-jaにおいてこの文字が制御綴内に
+使用可能(catcodeが11)であることを表している.
+%</ja>
+
+%<*en>
+\item The second letter {\tt U} means that the character is available for
+ the name of a control sequence in \upTeX{} (its kcatcode is 16 or 17).
+ \upTeX{} regards these characters as Japanese character.
+%</en>
+%<*ja>
+\item 2文字目の{\tt U} は,\upTeX においてこの文字が制御綴内に使用可能(kcatcodeは16,~17)であることを
+表している.この範囲内では,\upTeX は標準で全文字を和文文字として扱うようである.
+%</ja>
+
+%<*en>
+\item The third letter {\tt P} means that the character is available for
+ the name of a control sequence in \pTeX{} (its kcatcode is 16 or 17).
+%</en>
+%<*ja>
+\item 3文字目の {\tt P} は,\pTeX においてこの文字が制御綴内に使用可能(kcatcodeは16,~17)であることを
+表している.
+%</ja>
+
+%<*en>
+\item If the third letter is {\tt -} (or the character is printed in red),
+ the character is not included in JIS~X~0208.
+ Therefore, you can consider the character is not available in \pTeX.
+%</en>
+%<*ja>
+\item 3文字目が{\tt -}となっているもの(本体の文字も赤身がかっている)は,
+JIS~X~0208にないため\pTeX では使用不能と考えて良いものである.
+%</ja>
+
+%<en>\item The kana for Japanese syllable beginning with a voiced velar nasal
+%<en> consonant.kana in rows 4~and~5 are omitted.
+%<ja>\item 第4区と第5区にある,鼻濁音の仮名については省略した.
+\end{itemize}
+
+
+\makeatletter
+\def\uplist{% upTeX で \kcatcode!=18 なもの
+ \@elt {8486}\@elt {8491}\@elt {8492}\@elt {8499}\@elt {8500}\@elt {8501}%
+ \@elt {8502}\@elt {8504}\@elt {8508}\@elt {9008}\@elt {9009}\@elt {9010}%
+ \@elt {9011}\@elt {9012}\@elt {9013}\@elt {9014}\@elt {9015}\@elt {9016}%
+ \@elt {9017}\@elt {9025}\@elt {9026}\@elt {9027}\@elt {9028}\@elt {9029}%
+ \@elt {9030}\@elt {9031}\@elt {9032}\@elt {9033}\@elt {9034}\@elt {9035}%
+ \@elt {9036}\@elt {9037}\@elt {9038}\@elt {9039}\@elt {9040}\@elt {9041}%
+ \@elt {9042}\@elt {9043}\@elt {9044}\@elt {9045}\@elt {9046}\@elt {9047}%
+ \@elt {9048}\@elt {9049}\@elt {9050}\@elt {9057}\@elt {9058}\@elt {9059}%
+ \@elt {9060}\@elt {9061}\@elt {9062}\@elt {9063}\@elt {9064}\@elt {9065}%
+ \@elt {9066}\@elt {9067}\@elt {9068}\@elt {9069}\@elt {9070}\@elt {9071}%
+ \@elt {9072}\@elt {9073}\@elt {9074}\@elt {9075}\@elt {9076}\@elt {9077}%
+ \@elt {9078}\@elt {9079}\@elt {9080}\@elt {9081}\@elt {9082}\@elt {9249}%
+ \@elt {9250}\@elt {9251}\@elt {9252}\@elt {9253}\@elt {9254}\@elt {9255}%
+ \@elt {9256}\@elt {9257}\@elt {9258}\@elt {9259}\@elt {9260}\@elt {9261}%
+ \@elt {9262}\@elt {9263}\@elt {9264}\@elt {9265}\@elt {9266}\@elt {9267}%
+ \@elt {9268}\@elt {9269}\@elt {9270}\@elt {9271}\@elt {9272}\@elt {9273}%
+ \@elt {9274}\@elt {9275}\@elt {9276}\@elt {9277}\@elt {9278}\@elt {9279}%
+ \@elt {9280}\@elt {9281}\@elt {9282}\@elt {9283}\@elt {9284}\@elt {9285}%
+ \@elt {9286}\@elt {9287}\@elt {9288}\@elt {9289}\@elt {9290}\@elt {9291}%
+ \@elt {9292}\@elt {9293}\@elt {9294}\@elt {9295}\@elt {9296}\@elt {9297}%
+ \@elt {9298}\@elt {9299}\@elt {9300}\@elt {9301}\@elt {9302}\@elt {9303}%
+ \@elt {9304}\@elt {9305}\@elt {9306}\@elt {9307}\@elt {9308}\@elt {9309}%
+ \@elt {9310}\@elt {9311}\@elt {9312}\@elt {9313}\@elt {9314}\@elt {9315}%
+ \@elt {9316}\@elt {9317}\@elt {9318}\@elt {9319}\@elt {9320}\@elt {9321}%
+ \@elt {9322}\@elt {9323}\@elt {9324}\@elt {9325}\@elt {9326}\@elt {9327}%
+ \@elt {9328}\@elt {9329}\@elt {9330}\@elt {9331}\@elt {9505}\@elt {9506}%
+ \@elt {9507}\@elt {9508}\@elt {9509}\@elt {9510}\@elt {9511}\@elt {9512}%
+ \@elt {9513}\@elt {9514}\@elt {9515}\@elt {9516}\@elt {9517}\@elt {9518}%
+ \@elt {9519}\@elt {9520}\@elt {9521}\@elt {9522}\@elt {9523}\@elt {9524}%
+ \@elt {9525}\@elt {9526}\@elt {9527}\@elt {9528}\@elt {9529}\@elt {9530}%
+ \@elt {9531}\@elt {9532}\@elt {9533}\@elt {9534}\@elt {9535}\@elt {9536}%
+ \@elt {9537}\@elt {9538}\@elt {9539}\@elt {9540}\@elt {9541}\@elt {9542}%
+ \@elt {9543}\@elt {9544}\@elt {9545}\@elt {9546}\@elt {9547}\@elt {9548}%
+ \@elt {9549}\@elt {9550}\@elt {9551}\@elt {9552}\@elt {9553}\@elt {9554}%
+ \@elt {9555}\@elt {9556}\@elt {9557}\@elt {9558}\@elt {9559}\@elt {9560}%
+ \@elt {9561}\@elt {9562}\@elt {9563}\@elt {9564}\@elt {9565}\@elt {9566}%
+ \@elt {9567}\@elt {9568}\@elt {9569}\@elt {9570}\@elt {9571}\@elt {9572}%
+ \@elt {9573}\@elt {9574}\@elt {9575}\@elt {9576}\@elt {9577}\@elt {9578}%
+ \@elt {9579}\@elt {9580}\@elt {9581}\@elt {9582}\@elt {9583}\@elt {9584}%
+ \@elt {9585}\@elt {9586}\@elt {9587}\@elt {9588}\@elt {9589}\@elt {9590}%
+ % ここから JIS X 0213
+ \@elt {8760}\@elt {8761}\@elt {9083}\@elt {9332}\@elt {9333}\@elt {9334}%
+ \@elt {9335}\@elt {9336}\@elt {9337}\@elt {9338}\@elt {9339}\@elt {9591}%
+ \@elt {9592}\@elt {9593}\@elt {9594}\@elt {9595}\@elt {9596}\@elt {9597}%
+ \@elt {9598}\@elt {9838}\@elt {9839}\@elt {9840}\@elt {9841}\@elt {9842}%
+ \@elt {9843}\@elt {9844}\@elt {9845}\@elt {9846}\@elt {9847}\@elt {9848}%
+ \@elt {9849}\@elt {9850}\@elt {9851}\@elt {9852}\@elt {9853}\@elt {9854}%
+ \@elt {10098}\@elt {10099}\@elt {10100}\@elt {10101}%
+}
+\def\plist{% pTeX で \kcatcode!=18 なもの
+ \@elt {8993}\@elt {8994}\@elt {8995}\@elt {8996}\@elt {8997}\@elt {8998}%
+ \@elt {8999}\@elt {9000}\@elt {9001}\@elt {9002}\@elt {9003}\@elt {9004}%
+ \@elt {9005}\@elt {9006}\@elt {9007}\@elt {9008}\@elt {9009}\@elt {9010}%
+ \@elt {9011}\@elt {9012}\@elt {9013}\@elt {9014}\@elt {9015}\@elt {9016}%
+ \@elt {9017}\@elt {9018}\@elt {9019}\@elt {9020}\@elt {9021}\@elt {9022}%
+ \@elt {9023}\@elt {9024}\@elt {9025}\@elt {9026}\@elt {9027}\@elt {9028}%
+ \@elt {9029}\@elt {9030}\@elt {9031}\@elt {9032}\@elt {9033}\@elt {9034}%
+ \@elt {9035}\@elt {9036}\@elt {9037}\@elt {9038}\@elt {9039}\@elt {9040}%
+ \@elt {9041}\@elt {9042}\@elt {9043}\@elt {9044}\@elt {9045}\@elt {9046}%
+ \@elt {9047}\@elt {9048}\@elt {9049}\@elt {9050}\@elt {9051}\@elt {9052}%
+ \@elt {9053}\@elt {9054}\@elt {9055}\@elt {9056}\@elt {9057}\@elt {9058}%
+ \@elt {9059}\@elt {9060}\@elt {9061}\@elt {9062}\@elt {9063}\@elt {9064}%
+ \@elt {9065}\@elt {9066}\@elt {9067}\@elt {9068}\@elt {9069}\@elt {9070}%
+ \@elt {9071}\@elt {9072}\@elt {9073}\@elt {9074}\@elt {9075}\@elt {9076}%
+ \@elt {9077}\@elt {9078}\@elt {9079}\@elt {9080}\@elt {9081}\@elt {9082}%
+ \@elt {9083}\@elt {9084}\@elt {9085}\@elt {9086}\@elt {9249}\@elt {9250}%
+ \@elt {9251}\@elt {9252}\@elt {9253}\@elt {9254}\@elt {9255}\@elt {9256}%
+ \@elt {9257}\@elt {9258}\@elt {9259}\@elt {9260}\@elt {9261}\@elt {9262}%
+ \@elt {9263}\@elt {9264}\@elt {9265}\@elt {9266}\@elt {9267}\@elt {9268}%
+ \@elt {9269}\@elt {9270}\@elt {9271}\@elt {9272}\@elt {9273}\@elt {9274}%
+ \@elt {9275}\@elt {9276}\@elt {9277}\@elt {9278}\@elt {9279}\@elt {9280}%
+ \@elt {9281}\@elt {9282}\@elt {9283}\@elt {9284}\@elt {9285}\@elt {9286}%
+ \@elt {9287}\@elt {9288}\@elt {9289}\@elt {9290}\@elt {9291}\@elt {9292}%
+ \@elt {9293}\@elt {9294}\@elt {9295}\@elt {9296}\@elt {9297}\@elt {9298}%
+ \@elt {9299}\@elt {9300}\@elt {9301}\@elt {9302}\@elt {9303}\@elt {9304}%
+ \@elt {9305}\@elt {9306}\@elt {9307}\@elt {9308}\@elt {9309}\@elt {9310}%
+ \@elt {9311}\@elt {9312}\@elt {9313}\@elt {9314}\@elt {9315}\@elt {9316}%
+ \@elt {9317}\@elt {9318}\@elt {9319}\@elt {9320}\@elt {9321}\@elt {9322}%
+ \@elt {9323}\@elt {9324}\@elt {9325}\@elt {9326}\@elt {9327}\@elt {9328}%
+ \@elt {9329}\@elt {9330}\@elt {9331}\@elt {9332}\@elt {9333}\@elt {9334}%
+ \@elt {9335}\@elt {9336}\@elt {9337}\@elt {9338}\@elt {9339}\@elt {9340}%
+ \@elt {9341}\@elt {9342}\@elt {9505}\@elt {9506}\@elt {9507}\@elt {9508}%
+ \@elt {9509}\@elt {9510}\@elt {9511}\@elt {9512}\@elt {9513}\@elt {9514}%
+ \@elt {9515}\@elt {9516}\@elt {9517}\@elt {9518}\@elt {9519}\@elt {9520}%
+ \@elt {9521}\@elt {9522}\@elt {9523}\@elt {9524}\@elt {9525}\@elt {9526}%
+ \@elt {9527}\@elt {9528}\@elt {9529}\@elt {9530}\@elt {9531}\@elt {9532}%
+ \@elt {9533}\@elt {9534}\@elt {9535}\@elt {9536}\@elt {9537}\@elt {9538}%
+ \@elt {9539}\@elt {9540}\@elt {9541}\@elt {9542}\@elt {9543}\@elt {9544}%
+ \@elt {9545}\@elt {9546}\@elt {9547}\@elt {9548}\@elt {9549}\@elt {9550}%
+ \@elt {9551}\@elt {9552}\@elt {9553}\@elt {9554}\@elt {9555}\@elt {9556}%
+ \@elt {9557}\@elt {9558}\@elt {9559}\@elt {9560}\@elt {9561}\@elt {9562}%
+ \@elt {9563}\@elt {9564}\@elt {9565}\@elt {9566}\@elt {9567}\@elt {9568}%
+ \@elt {9569}\@elt {9570}\@elt {9571}\@elt {9572}\@elt {9573}\@elt {9574}%
+ \@elt {9575}\@elt {9576}\@elt {9577}\@elt {9578}\@elt {9579}\@elt {9580}%
+ \@elt {9581}\@elt {9582}\@elt {9583}\@elt {9584}\@elt {9585}\@elt {9586}%
+ \@elt {9587}\@elt {9588}\@elt {9589}\@elt {9590}\@elt {9591}\@elt {9592}%
+ \@elt {9593}\@elt {9594}\@elt {9595}\@elt {9596}\@elt {9597}\@elt {9598}%
+ \@elt {9761}\@elt {9762}\@elt {9763}\@elt {9764}\@elt {9765}\@elt {9766}%
+ \@elt {9767}\@elt {9768}\@elt {9769}\@elt {9770}\@elt {9771}\@elt {9772}%
+ \@elt {9773}\@elt {9774}\@elt {9775}\@elt {9776}\@elt {9777}\@elt {9778}%
+ \@elt {9779}\@elt {9780}\@elt {9781}\@elt {9782}\@elt {9783}\@elt {9784}%
+ \@elt {9785}\@elt {9786}\@elt {9787}\@elt {9788}\@elt {9789}\@elt {9790}%
+ \@elt {9791}\@elt {9792}\@elt {9793}\@elt {9794}\@elt {9795}\@elt {9796}%
+ \@elt {9797}\@elt {9798}\@elt {9799}\@elt {9800}\@elt {9801}\@elt {9802}%
+ \@elt {9803}\@elt {9804}\@elt {9805}\@elt {9806}\@elt {9807}\@elt {9808}%
+ \@elt {9809}\@elt {9810}\@elt {9811}\@elt {9812}\@elt {9813}\@elt {9814}%
+ \@elt {9815}\@elt {9816}\@elt {9817}\@elt {9818}\@elt {9819}\@elt {9820}%
+ \@elt {9821}\@elt {9822}\@elt {9823}\@elt {9824}\@elt {9825}\@elt {9826}%
+ \@elt {9827}\@elt {9828}\@elt {9829}\@elt {9830}\@elt {9831}\@elt {9832}%
+ \@elt {9833}\@elt {9834}\@elt {9835}\@elt {9836}\@elt {9837}\@elt {9838}%
+ \@elt {9839}\@elt {9840}\@elt {9841}\@elt {9842}\@elt {9843}\@elt {9844}%
+ \@elt {9845}\@elt {9846}\@elt {9847}\@elt {9848}\@elt {9849}\@elt {9850}%
+ \@elt {9851}\@elt {9852}\@elt {9853}\@elt {9854}%
+}
+
+\def\jlist{% JIS X 0213 だけにあるもの
+\@elt{"222F}{"FF07}\@elt{"2230}{"FF02}\@elt{"2231}{"FF0D}\@elt{"2232}{"FF5E}%
+\@elt{"2233}{"3033}\@elt{"2234}{"3034}\@elt{"2235}{"3035}\@elt{"2236}{"303B}%
+\@elt{"2237}{"303C}\@elt{"2238}{"30FF}\@elt{"2239}{"309F}\@elt{"2242}{"2284}%
+\@elt{"2243}{"2285}\@elt{"2244}{"228A}\@elt{"2245}{"228B}\@elt{"2246}{"2209}%
+\@elt{"2247}{"2205}\@elt{"2248}{"2305}\@elt{"2249}{"2306}\@elt{"2251}{"2295}%
+\@elt{"2252}{"2296}\@elt{"2253}{"2297}\@elt{"2254}{"2225}\@elt{"2255}{"2226}%
+\@elt{"2256}{"FF5F}\@elt{"2257}{"FF60}\@elt{"2258}{"3018}\@elt{"2259}{"3019}%
+\@elt{"225A}{"3016}\@elt{"225B}{"3017}\@elt{"226B}{"2262}\@elt{"226C}{"2243}%
+\@elt{"226D}{"2245}\@elt{"226E}{"2248}\@elt{"226F}{"2276}\@elt{"2270}{"2277}%
+\@elt{"2271}{"2194}\@elt{"227A}{"266E}\@elt{"227B}{"266B}\@elt{"227C}{"266C}%
+\@elt{"227D}{"2669}\@elt{"2321}{"25B7}\@elt{"2322}{"25B6}\@elt{"2323}{"25C1}%
+\@elt{"2324}{"25C0}\@elt{"2325}{"2197}\@elt{"2326}{"2198}\@elt{"2327}{"2196}%
+\@elt{"2328}{"2199}\@elt{"2329}{"21C4}\@elt{"232A}{"21E8}\@elt{"232B}{"21E6}%
+\@elt{"232C}{"21E7}\@elt{"232D}{"21E9}\@elt{"232E}{"2934}\@elt{"232F}{"2935}%
+\@elt{"233A}{"29BF}\@elt{"233B}{"25C9}\@elt{"233C}{"303D}\@elt{"233D}{"FE46}%
+\@elt{"233E}{"FE45}\@elt{"233F}{"25E6}\@elt{"2340}{"2022}\@elt{"235B}{"2213}%
+\@elt{"235C}{"2135}\@elt{"235D}{"210F}\@elt{"235E}{"33CB}\@elt{"235F}{"2113}%
+\@elt{"2360}{"2127}\@elt{"237B}{"30A0}\@elt{"237C}{"2013}\@elt{"237D}{"29FA}%
+\@elt{"237E}{"29FB}\@elt{"2474}{"3094}\@elt{"2475}{"3095}\@elt{"2476}{"3096}%
+\@elt{"2639}{"2664}\@elt{"263A}{"2660}\@elt{"263B}{"2662}%
+\@elt{"263C}{"2666}\@elt{"263D}{"2661}\@elt{"263E}{"2665}\@elt{"263F}{"2667}%
+\@elt{"2640}{"2663}\@elt{"2659}{"03C2}\@elt{"265A}{"24F5}\@elt{"265B}{"24F6}%
+\@elt{"265C}{"24F7}\@elt{"265D}{"24F8}\@elt{"265E}{"24F9}\@elt{"265F}{"24FA}%
+\@elt{"2660}{"24FB}\@elt{"2661}{"24FC}\@elt{"2662}{"24FD}\@elt{"2663}{"24FE}%
+\@elt{"2664}{"2616}\@elt{"2665}{"2617}\@elt{"2666}{"3020}\@elt{"2667}{"260E}%
+\@elt{"2668}{"2600}\@elt{"2669}{"2601}\@elt{"266A}{"2602}\@elt{"266B}{"2603}%
+\@elt{"266C}{"2668}\@elt{"266D}{"25B1}\@elt{"266E}{"31F0}\@elt{"266F}{"31F1}%
+\@elt{"2670}{"31F2}\@elt{"2671}{"31F3}\@elt{"2672}{"31F4}\@elt{"2673}{"31F5}%
+\@elt{"2674}{"31F6}\@elt{"2675}{"31F7}\@elt{"2676}{"31F8}\@elt{"2677}{"31F9}%
+\@elt{"2678}{"31F7}\@elt{"2679}{"31FA}\@elt{"267A}{"31FB}\@elt{"267B}{"31FC}%
+\@elt{"267C}{"31FD}\@elt{"267D}{"31FE}\@elt{"267E}{"31FF}\@elt{"2742}{"23BE}%
+\@elt{"2743}{"23BF}\@elt{"2744}{"23C0}\@elt{"2745}{"23C1}\@elt{"2746}{"23C2}%
+\@elt{"2747}{"23C3}\@elt{"2748}{"23C4}\@elt{"2749}{"23C5}\@elt{"274A}{"23C6}%
+\@elt{"274B}{"23C7}\@elt{"274C}{"23C8}\@elt{"274D}{"23C9}\@elt{"274E}{"23CA}%
+\@elt{"274F}{"23CB}\@elt{"2750}{"23CC}\@elt{"2772}{"30F7}\@elt{"2773}{"30F8}%
+\@elt{"2774}{"30F9}\@elt{"2775}{"30FA}\@elt{"2776}{"22DA}\@elt{"2777}{"22DB}%
+\@elt{"2778}{"2153}\@elt{"2779}{"2154}\@elt{"277A}{"2155}\@elt{"277B}{"2713}%
+\@elt{"277C}{"2318}\@elt{"277D}{"2423}\@elt{"277E}{"23CE}\@elt{"2841}{"3251}%
+\@elt{"2842}{"3252}\@elt{"2843}{"3253}\@elt{"2844}{"3254}\@elt{"2845}{"3255}%
+\@elt{"2846}{"3256}\@elt{"2847}{"3257}\@elt{"2848}{"3258}\@elt{"2849}{"3259}%
+\@elt{"284A}{"325A}\@elt{"284B}{"325B}\@elt{"284C}{"325C}\@elt{"284D}{"325D}%
+\@elt{"284E}{"325E}\@elt{"284F}{"325F}\@elt{"2850}{"32B1}\@elt{"2851}{"32B2}%
+\@elt{"2852}{"32B3}\@elt{"2853}{"32B4}\@elt{"2854}{"32B5}\@elt{"2855}{"32B6}%
+\@elt{"2856}{"32B7}\@elt{"2857}{"32B8}\@elt{"2858}{"32B9}\@elt{"2859}{"32BA}%
+\@elt{"285A}{"32BB}\@elt{"285B}{"32BC}\@elt{"285C}{"32BD}\@elt{"285D}{"32BE}%
+\@elt{"285E}{"32BF}\@elt{"2867}{"25D0}\@elt{"2868}{"25D1}\@elt{"2869}{"25D2}%
+\@elt{"286A}{"25D3}\@elt{"286B}{"203C}\@elt{"286C}{"2047}\@elt{"286D}{"2048}%
+\@elt{"286E}{"2049}\@elt{"286F}{"01CD}\@elt{"2870}{"01CE}\@elt{"2871}{"01D0}%
+\@elt{"2872}{"1E3E}\@elt{"2873}{"1E3F}\@elt{"2874}{"01F8}\@elt{"2875}{"01F9}%
+\@elt{"2876}{"01D1}\@elt{"2877}{"01D2}\@elt{"2878}{"01D4}\@elt{"2879}{"01D6}%
+\@elt{"287A}{"01D8}\@elt{"287B}{"01DA}\@elt{"287C}{"01DC}\@elt{"2921}{"20AC}%
+\@elt{"2922}{"00A0}\@elt{"2923}{"00A1}\@elt{"2924}{"00A4}\@elt{"2925}{"00A6}%
+\@elt{"2926}{"00A9}\@elt{"2927}{"00AA}\@elt{"2928}{"00AB}\@elt{"2929}{"00AD}%
+\@elt{"292A}{"00AE}\@elt{"292B}{"00AF}\@elt{"292C}{"00B2}\@elt{"292D}{"00B3}%
+\@elt{"292E}{"00B7}\@elt{"292F}{"00B8}\@elt{"2930}{"00B9}\@elt{"2931}{"00BA}%
+\@elt{"2932}{"00BB}\@elt{"2933}{"00BC}\@elt{"2934}{"00BD}\@elt{"2935}{"00BE}%
+\@elt{"2936}{"00BF}\@elt{"2937}{"00C0}\@elt{"2938}{"00C1}\@elt{"2939}{"00C2}%
+\@elt{"293A}{"00C3}\@elt{"293B}{"00C4}\@elt{"293C}{"00C5}\@elt{"293D}{"00C6}%
+\@elt{"293E}{"00C7}\@elt{"293F}{"00C8}\@elt{"2940}{"00C9}\@elt{"2941}{"00CA}%
+\@elt{"2942}{"00CB}\@elt{"2943}{"00CC}\@elt{"2944}{"00CD}\@elt{"2945}{"00CE}%
+\@elt{"2946}{"00CF}\@elt{"2947}{"00D0}\@elt{"2948}{"00D1}\@elt{"2949}{"00D2}%
+\@elt{"294A}{"00D3}\@elt{"294B}{"00D4}\@elt{"294C}{"00D5}\@elt{"294D}{"00D6}%
+\@elt{"294E}{"00D8}\@elt{"294F}{"00D9}\@elt{"2950}{"00DA}\@elt{"2951}{"00DB}%
+\@elt{"2952}{"00DC}\@elt{"2953}{"00DD}\@elt{"2954}{"00DE}\@elt{"2955}{"00DF}%
+\@elt{"2956}{"00E0}\@elt{"2957}{"00E1}\@elt{"2958}{"00E2}\@elt{"2959}{"00E3}%
+\@elt{"295A}{"00E4}\@elt{"295B}{"00E5}\@elt{"295C}{"00E6}\@elt{"295D}{"00E7}%
+\@elt{"295E}{"00E8}\@elt{"295F}{"00E9}\@elt{"2960}{"00EA}\@elt{"2961}{"00EB}%
+\@elt{"2962}{"00EC}\@elt{"2963}{"00ED}\@elt{"2964}{"00EE}\@elt{"2965}{"00EF}%
+\@elt{"2966}{"00F0}\@elt{"2967}{"00F1}\@elt{"2968}{"00F2}\@elt{"2969}{"00F3}%
+\@elt{"296A}{"00F4}\@elt{"296B}{"00F5}\@elt{"296C}{"00F6}\@elt{"296D}{"00F8}%
+\@elt{"296E}{"00F9}\@elt{"296F}{"00FA}\@elt{"2970}{"00FB}\@elt{"2971}{"00FC}%
+\@elt{"2972}{"00FD}\@elt{"2973}{"00FE}\@elt{"2974}{"00FF}\@elt{"2975}{"0100}%
+\@elt{"2976}{"012A}\@elt{"2977}{"016A}\@elt{"2978}{"0112}\@elt{"2979}{"014C}%
+\@elt{"297A}{"0101}\@elt{"297B}{"012B}\@elt{"297C}{"016B}\@elt{"297D}{"0113}%
+\@elt{"297E}{"014D}\@elt{"2A21}{"0104}\@elt{"2A22}{"02D8}\@elt{"2A23}{"0141}%
+\@elt{"2A24}{"013D}\@elt{"2A25}{"015A}\@elt{"2A26}{"0160}\@elt{"2A27}{"015E}%
+\@elt{"2A28}{"0164}\@elt{"2A29}{"0179}\@elt{"2A2A}{"017D}\@elt{"2A2B}{"017B}%
+\@elt{"2A2C}{"0105}\@elt{"2A2D}{"02DB}\@elt{"2A2E}{"0142}\@elt{"2A2F}{"013E}%
+\@elt{"2A30}{"015B}\@elt{"2A31}{"02C7}\@elt{"2A32}{"0161}\@elt{"2A33}{"015F}%
+\@elt{"2A34}{"0165}\@elt{"2A35}{"017A}\@elt{"2A36}{"02DD}\@elt{"2A37}{"017E}%
+\@elt{"2A38}{"017C}\@elt{"2A39}{"0154}\@elt{"2A3A}{"0102}\@elt{"2A3B}{"0139}%
+\@elt{"2A3C}{"0106}\@elt{"2A3D}{"010C}\@elt{"2A3E}{"0118}\@elt{"2A3F}{"011A}%
+\@elt{"2A40}{"010E}\@elt{"2A41}{"0143}\@elt{"2A42}{"0147}\@elt{"2A43}{"0150}%
+\@elt{"2A44}{"0158}\@elt{"2A45}{"016E}\@elt{"2A46}{"0170}\@elt{"2A47}{"0162}%
+\@elt{"2A48}{"0155}\@elt{"2A49}{"0103}\@elt{"2A4A}{"013A}\@elt{"2A4B}{"0107}%
+\@elt{"2A4C}{"010D}\@elt{"2A4D}{"0119}\@elt{"2A4E}{"011B}\@elt{"2A4F}{"010F}%
+\@elt{"2A50}{"0111}\@elt{"2A51}{"0144}\@elt{"2A52}{"0148}\@elt{"2A53}{"0151}%
+\@elt{"2A54}{"0159}\@elt{"2A55}{"016F}\@elt{"2A56}{"0171}\@elt{"2A57}{"0163}%
+\@elt{"2A58}{"02D9}\@elt{"2A59}{"0108}\@elt{"2A5A}{"011C}\@elt{"2A5B}{"0124}%
+\@elt{"2A5C}{"0134}\@elt{"2A5D}{"015C}\@elt{"2A5E}{"016C}\@elt{"2A5F}{"0109}%
+\@elt{"2A60}{"011D}\@elt{"2A61}{"0125}\@elt{"2A62}{"0135}\@elt{"2A63}{"015D}%
+\@elt{"2A64}{"016D}\@elt{"2A65}{"0271}\@elt{"2A66}{"028B}\@elt{"2A67}{"027E}%
+\@elt{"2A68}{"0283}\@elt{"2A69}{"0292}\@elt{"2A6A}{"026C}\@elt{"2A6B}{"026E}%
+\@elt{"2A6C}{"0279}\@elt{"2A6D}{"0288}\@elt{"2A6E}{"0256}\@elt{"2A6F}{"0273}%
+\@elt{"2A70}{"027D}\@elt{"2A71}{"0282}\@elt{"2A72}{"0290}\@elt{"2A73}{"027B}%
+\@elt{"2A74}{"026D}\@elt{"2A75}{"025F}\@elt{"2A76}{"0272}\@elt{"2A77}{"029D}%
+\@elt{"2A78}{"028E}\@elt{"2A79}{"0261}\@elt{"2A7A}{"014B}\@elt{"2A7B}{"0270}%
+\@elt{"2A7C}{"0281}\@elt{"2A7D}{"0127}\@elt{"2A7E}{"0295}\@elt{"2B21}{"0294}%
+\@elt{"2B22}{"0266}\@elt{"2B23}{"0298}\@elt{"2B24}{"01C2}\@elt{"2B25}{"0253}%
+\@elt{"2B26}{"0257}\@elt{"2B27}{"0284}\@elt{"2B28}{"0260}\@elt{"2B29}{"0193}%
+\@elt{"2B2A}{"0153}\@elt{"2B2B}{"0152}\@elt{"2B2C}{"0268}\@elt{"2B2D}{"0289}%
+\@elt{"2B2E}{"0258}\@elt{"2B2F}{"0275}\@elt{"2B30}{"0259}\@elt{"2B31}{"025C}%
+\@elt{"2B32}{"025E}\@elt{"2B33}{"0250}\@elt{"2B34}{"026F}\@elt{"2B35}{"028A}%
+\@elt{"2B36}{"0264}\@elt{"2B37}{"028C}\@elt{"2B38}{"0254}\@elt{"2B39}{"0251}%
+\@elt{"2B3A}{"0252}\@elt{"2B3B}{"028D}\@elt{"2B3C}{"0265}\@elt{"2B3D}{"02A2}%
+\@elt{"2B3E}{"02A1}\@elt{"2B3F}{"0255}\@elt{"2B40}{"0291}\@elt{"2B41}{"027A}%
+\@elt{"2B42}{"0267}\@elt{"2B43}{"025A}\@elt{"2B44}{"00E6}\@elt{"2B45}{"01FD}%
+\@elt{"2B46}{"1F70}\@elt{"2B47}{"1F71}\@elt{"2B48}{"0254}\@elt{"2B49}{"0254}%
+\@elt{"2B4A}{"028C}\@elt{"2B4B}{"028C}\@elt{"2B4C}{"0259}\@elt{"2B4D}{"0259}%
+\@elt{"2B4E}{"025A}\@elt{"2B4F}{"025A}\@elt{"2B50}{"1F72}\@elt{"2B51}{"1F73}%
+\@elt{"2B52}{"0361}\@elt{"2B53}{"02C8}\@elt{"2B54}{"02CC}\@elt{"2B55}{"02D0}%
+\@elt{"2B56}{"02D1}\@elt{"2B57}{"0306}\@elt{"2B58}{"203F}\@elt{"2B59}{"030B}%
+\@elt{"2B5A}{"0301}\@elt{"2B5B}{"0304}\@elt{"2B5C}{"0300}\@elt{"2B5D}{"030F}%
+\@elt{"2B5E}{"030C}\@elt{"2B5F}{"0302}\@elt{"2B60}{"02E5}\@elt{"2B61}{"02E6}%
+\@elt{"2B62}{"02E7}\@elt{"2B63}{"02E8}\@elt{"2B64}{"02E9}\@elt{"2B65}{"02E9}%
+\@elt{"2B66}{"02E5}\@elt{"2B67}{"0325}\@elt{"2B68}{"032C}\@elt{"2B69}{"0339}%
+\@elt{"2B6A}{"031C}\@elt{"2B6B}{"031F}\@elt{"2B6C}{"0320}\@elt{"2B6D}{"0308}%
+\@elt{"2B6E}{"033D}\@elt{"2B6F}{"0329}\@elt{"2B70}{"032F}\@elt{"2B71}{"02DE}%
+\@elt{"2B72}{"0324}\@elt{"2B73}{"0330}\@elt{"2B74}{"033C}\@elt{"2B75}{"0334}%
+\@elt{"2B76}{"031D}\@elt{"2B77}{"031E}\@elt{"2B78}{"0318}\@elt{"2B79}{"0319}%
+\@elt{"2B7A}{"032A}\@elt{"2B7B}{"033A}\@elt{"2B7C}{"033B}\@elt{"2B7D}{"0303}%
+\@elt{"2B7E}{"031A}\@elt{"2C21}{"2776}\@elt{"2C22}{"2777}\@elt{"2C23}{"2778}%
+\@elt{"2C24}{"2779}\@elt{"2C25}{"277A}\@elt{"2C26}{"277B}\@elt{"2C27}{"277C}%
+\@elt{"2C28}{"277D}\@elt{"2C29}{"277E}\@elt{"2C2A}{"277F}\@elt{"2C2B}{"24EB}%
+\@elt{"2C2C}{"24EC}\@elt{"2C2D}{"24ED}\@elt{"2C2E}{"24EE}\@elt{"2C2F}{"24EF}%
+\@elt{"2C30}{"24F0}\@elt{"2C31}{"24F1}\@elt{"2C32}{"24F2}\@elt{"2C33}{"24F3}%
+\@elt{"2C34}{"24F4}\@elt{"2C35}{"2170}\@elt{"2C36}{"2171}\@elt{"2C37}{"2172}%
+\@elt{"2C38}{"2173}\@elt{"2C39}{"2174}\@elt{"2C3A}{"2175}\@elt{"2C3B}{"2176}%
+\@elt{"2C3C}{"2177}\@elt{"2C3D}{"2178}\@elt{"2C3E}{"2179}\@elt{"2C3F}{"217A}%
+\@elt{"2C40}{"217B}\@elt{"2C41}{"24D0}\@elt{"2C42}{"24D1}\@elt{"2C43}{"24D2}%
+\@elt{"2C44}{"24D3}\@elt{"2C45}{"24D4}\@elt{"2C46}{"24D5}\@elt{"2C47}{"24D6}%
+\@elt{"2C48}{"24D7}\@elt{"2C49}{"24D8}\@elt{"2C4A}{"24D9}\@elt{"2C4B}{"24DA}%
+\@elt{"2C4C}{"24DB}\@elt{"2C4D}{"24DC}\@elt{"2C4E}{"24DD}\@elt{"2C4F}{"24DE}%
+\@elt{"2C50}{"24DF}\@elt{"2C51}{"24E0}\@elt{"2C52}{"24E1}\@elt{"2C53}{"24E2}%
+\@elt{"2C54}{"24E3}\@elt{"2C55}{"24E4}\@elt{"2C56}{"24E5}\@elt{"2C57}{"24E6}%
+\@elt{"2C58}{"24E7}\@elt{"2C59}{"24E8}\@elt{"2C5A}{"24E9}\@elt{"2C5B}{"32D0}%
+\@elt{"2C5C}{"32D1}\@elt{"2C5D}{"32D2}\@elt{"2C5E}{"32D3}\@elt{"2C5F}{"32D4}%
+\@elt{"2C60}{"32D5}\@elt{"2C61}{"32D6}\@elt{"2C62}{"32D7}\@elt{"2C63}{"32D8}%
+\@elt{"2C64}{"32D9}\@elt{"2C65}{"32DA}\@elt{"2C66}{"32DB}\@elt{"2C67}{"32DC}%
+\@elt{"2C68}{"32DD}\@elt{"2C69}{"32DE}\@elt{"2C6A}{"32DF}\@elt{"2C6B}{"32E0}%
+\@elt{"2C6C}{"32E1}\@elt{"2C6D}{"32E2}\@elt{"2C6E}{"32E3}\@elt{"2C6F}{"32FA}%
+\@elt{"2C70}{"32E9}\@elt{"2C71}{"32E5}\@elt{"2C72}{"32ED}\@elt{"2C73}{"32EC}%
+\@elt{"2C7D}{"2051}\@elt{"2C7E}{"2042}\@elt{"2D21}{"2460}\@elt{"2D22}{"2461}%
+\@elt{"2D23}{"2462}\@elt{"2D24}{"2463}\@elt{"2D25}{"2464}\@elt{"2D26}{"2465}%
+\@elt{"2D27}{"2466}\@elt{"2D28}{"2467}\@elt{"2D29}{"2468}\@elt{"2D2A}{"2469}%
+\@elt{"2D2B}{"246A}\@elt{"2D2C}{"246B}\@elt{"2D2D}{"246C}\@elt{"2D2E}{"246D}%
+\@elt{"2D2F}{"246E}\@elt{"2D30}{"246F}\@elt{"2D31}{"2470}\@elt{"2D32}{"2471}%
+\@elt{"2D33}{"2472}\@elt{"2D34}{"2473}\@elt{"2D35}{"2160}\@elt{"2D36}{"2161}%
+\@elt{"2D37}{"2162}\@elt{"2D38}{"2163}\@elt{"2D39}{"2164}\@elt{"2D3A}{"2165}%
+\@elt{"2D3B}{"2166}\@elt{"2D3C}{"2167}\@elt{"2D3D}{"2168}\@elt{"2D3E}{"2169}%
+\@elt{"2D3F}{"216A}\@elt{"2D40}{"3349}\@elt{"2D41}{"3314}\@elt{"2D42}{"3322}%
+\@elt{"2D43}{"334D}\@elt{"2D44}{"3318}\@elt{"2D45}{"3327}\@elt{"2D46}{"3303}%
+\@elt{"2D47}{"3336}\@elt{"2D48}{"3351}\@elt{"2D49}{"3357}\@elt{"2D4A}{"330D}%
+\@elt{"2D4B}{"3326}\@elt{"2D4C}{"3323}\@elt{"2D4D}{"332B}\@elt{"2D4E}{"334A}%
+\@elt{"2D4F}{"333B}\@elt{"2D50}{"339C}\@elt{"2D51}{"339D}\@elt{"2D52}{"339E}%
+\@elt{"2D53}{"338E}\@elt{"2D54}{"338F}\@elt{"2D55}{"33C4}\@elt{"2D56}{"33A1}%
+\@elt{"2D57}{"216B}\@elt{"2D5F}{"337B}\@elt{"2D60}{"301D}\@elt{"2D61}{"301F}%
+\@elt{"2D62}{"2116}\@elt{"2D63}{"33CD}\@elt{"2D64}{"2121}\@elt{"2D65}{"32A4}%
+\@elt{"2D66}{"32A5}\@elt{"2D67}{"32A6}\@elt{"2D68}{"32A7}\@elt{"2D69}{"32A8}%
+\@elt{"2D6A}{"3231}\@elt{"2D6B}{"3232}\@elt{"2D6C}{"3239}\@elt{"2D6D}{"337E}%
+\@elt{"2D6E}{"337D}\@elt{"2D6F}{"337C}\@elt{"2D73}{"222E}\@elt{"2D78}{"221F}%
+\@elt{"2D79}{"22BF}\@elt{"2D7D}{"2756}\@elt{"2D7E}{"261E}%
+}
+
+\newcount\cntA
+\newcount\cntB
+\newcount\flag
+\def\chk@in@#1#2{{\global\flag=0\relax%
+ \def\@elt##1{\ifnum#2=##1\global\flag=1 \fi}%
+ #1}}
+\def\get@in@#1#2{{%
+ \global\flag=0\relax%
+ \def\@elt##1##2{\ifnum#2=##1\global\flag##2 \fi}%
+ #1}}
+
+\def\outi{%
+\get@in@{\jlist}{\cntA}\cntB=\flag
+\ifnum\cntB=0{}%
+ \cntB=\jis\cntA{}%
+ \ifnum\cntB=0 \else
+ \ifnum\ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{\cntB}}=0
+ \def\@@@tmp{white}\else\def\@@@tmp{white!85!blue}\fi
+ \fcolorbox{black}{\@@@tmp}{%
+ \hbox to \zw{\gtfamily \hskip-\zw\ltjjachar\cntB \hss}}\,\scriptsize%
+ \ifnum\catcode\cntB=11 L\else\ \fi
+ \chk@in@{\uplist}{\cntA}\ifnum\flag=1 U\else~\fi
+ \chk@in@{\plist}{\cntA}\ifnum\flag=1 P\else~\fi
+ \fi
+\else
+ \ifnum\ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{\cntB}}=0
+ \def\@@@tmp{white}\else\def\@@@tmp{white!85!blue}\fi
+ \fcolorbox{black}{\@@@tmp}{\color{red!50!black}%
+ \hbox to \zw{\gtfamily \hskip-\zw\ltjjachar\cntB \hss}}\,\scriptsize%
+ \ifnum\catcode\cntB=11 L\else~\fi
+ \chk@in@{\uplist}{\cntA}\ifnum\flag=1 U\else~\fi-%
+\fi\global\advance\cntA1 }
+
+\def\out#1#2{%
+\midrule\global\cntA=\numexpr 8192+#1*256+#2*16\relax
+"#2{}x&\ifnum#2=2\global\advance\cntA1\else\outi\fi&\outi&\outi&\outi&\outi&\outi&\outi&\outi%"
+&\outi&\outi&\outi&\outi&\outi&\outi&\outi&\ifnum#2=7\global\advance\cntA1\else\outi\fi\\
+}
+
+\def\test#1{{%
+%<en>\subsection*{Row #1}
+%<ja>\subsection*{第#1区}
+\tt\small\fboxsep=1pt\centering\tabcolsep=0.25\zw
+\begin{tabular}{ccccccccccccccccc}\toprule&"0&"1&"2&"3&"4&"5&"6&"7&"8&"9&"A&"B&"C&"D&"E&"F\\
+\out{#1}{2}\out{#1}{3}\out{#1}{4}\out{#1}{5}\out{#1}{6}\out{#1}{7}\bottomrule
+\end{tabular}\par}\medskip}
+
+\test{1}\test{2}\test{3}\test{4}\test{5}\test{6}\test{7}\test{8}
+\test{9}\test{10}\test{11}\test{12}\test{13}
+
+\errorstopmode
+
+\section{Package versions used in this document}
+This document was typeset using the following packages:
+
+\medskip
+
+{\makeatletter\tt\footnotesize
+ \def\@pkglist#1{%
+ \filename@parse{#1}\def\@temp{sty}
+ \ifx\@temp\filename@ext
+ \edef\reserved@a{%
+ \filename@base.%
+ \ifx\filename@ext\relax tex\else\filename@ext\fi}%
+ \leavevmode\hskip-13em\hbox to 13em{\filename@area\reserved@a\hss}%
+ \csname ver@\reserved@a\endcsname\par
+ \fi
+ }%
+\parindent0pt\leftskip13em
+\ltjpkglist
+
+\makeatother}
\end{document}
+%</!showexpl>
+%<*showexpl>
+%%
+%% config file for showexpl.sty
+%%
+%% Copyright The LuaTeX-ja project team, 2012
+%%
+\ProvidesFile{showexpl.cfg}
+ [2012/05/20 v0.01 Definitions for the showexpl package (luatexja)]
+\lstset{}
+\def\SX@Info{}
+\endinput
+%</*showexpl>