OSDN Git Service

Improve \ltj@pkgpatch in luatexja-latex.sty.
[luatex-ja/luatexja.git] / doc / sample1.tex
index f3031e4..094da7e 100644 (file)
@@ -11,7 +11,6 @@
 \def\XyM{X\kern-.30em\smash{\raise.50ex\hbox{\UPSILON}}\kern-.30em{M}}%
 \def\XyMTeX{\XyM\kern-.1em\TeX}%
 
-
 % main matter
 \centerline{\big Lua\TeX-jaパッケージ}\bigskip
 \centerline{\large\the\year/\the\month/\the\day}\medskip
@@ -20,7 +19,7 @@
 
 本パッケージは,(最低でもp\TeX と同等の水準の)日本語組版をLua\TeX 上で実現させることを
 目標としたマクロである.まだまだ足りないところはあるが,とりあえず動くようになった?ので公開する. 
-
+{\bf 本文章の更新は事実上停止しています.以降の更新は{\tt manual.dtx}と,そこから作られる{\tt man-en.pdf}, {\tt man-ja.pdf}で行います.}
 
 \beginparagraph 特徴
 
@@ -31,7 +30,8 @@
 ほげほげ){\gt (ふがふが}
 \endtt
 \item 欧文や和文のベースライン補正が可能.
-\item p\TeX とある程度コマンド名が互換.
+\item p\TeX とある程度コマンド名が互換ではあるが,{\bf 内部動作についてはp\TeX との100\%互換は
+目指していません{\small (p\TeX で不自然なところがあれば,積極的に改める)\inhibitglue}}.
 \enditem
 
 \beginparagraph 制限
 
 \beginparagraph ファイル構成
 
-
-\item {\tt luatexja-core.sty}: 
-コア部分.拡張子は{\tt sty}であるが,この単一のファイルでplain \TeX と\LaTeX 両方に
-対応するように設計する方針である.しかし,
-{\bf 現時点で\LaTeX での使用は全く考慮されていない.}
-\item {\tt luatexja-core.lua}: コア部分に使われるLuaコード.
-\item {\tt luatexja-jfont.lua}: 和文フォント定義部のLuaコード.
-\item {\tt luatexja-xkanji.lua}: |\[x]kanjiskip|自動挿入処理のLuaコード.
-\item {\tt luatexja-rmlgbm-data.lua}: 非埋込和文フォント用のデータ(小塚明朝Pr6N R由来).
-\item {\tt luatexja-rmlgbm.lua}: 非埋込和文フォント (Ryumin-Light etc.) 定義部.
-\item {\tt mk-rmlgbm-data.tex}: {\tt luatexja-rmlgbm-data.lua}作成用スクリプト
+\item {\tt src/}: 核となる\TeX ソースとLuaコードはこのディレクトリ内に入っている.
+\itemitem \TeX 用スタイルファイル達
+\itemT {\tt luatexja.sty}: 利用者はこのファイルを読み込む.
+拡張子は{\tt sty}であるが,plain \TeX と\LaTeX 両方に対応させる方針である.
+\itemT {\tt luatexja-core.sty}: 
+\itemT {\tt luatexja-base.sty}: 
+\itemT {\tt luatexja-cctbreg.sty}: 
+\itemT {\tt luatexja-compat.sty}: p\TeX 互換用primitive(|\euc|, |\kansuji|)定義部.
+\itemT {\tt luatexja-compat-ptex.sty}: 
+\itemT {\tt luatexja-plain.sty}: 
+\itemT {\tt luatexja-kinsoku.tex}: 禁則用ペナルティ等のパラメータを書いたファイル.
+{\tt ukinsoku.tex} (in up\TeX-0.30) から自動生成されたもの.
+
+\itemT {\tt mk-rmlgbm-data.tex}: {\tt luatexja-rmlgbm-data.lua}作成用スクリプト
 {\small(小塚明朝を{\tt luaotfload}で読み込んだ時のキャッシュが必要)\inhibitglue}.
-\item {\tt luatexja-kinsoku.tex}: 禁則用ペナルティ等のパラメータを書いたファイル.
-下のファイルによって{\tt ukinsoku.tex} (in up\TeX-0.30) から自動生成されたもの.
-\item {\tt jfm-ujis.lua}: up\TeX-0.30の{\tt ujis.tfm}ベースのメトリックサンプル.
-\item {\tt jfm-mono.lua}: 「全文字が全角幅」のメトリックサンプル.
+
+\itemitem \LaTeX 用スタイルファイル達
+\itemT {\tt luatexja-latex.sty}: 
+\itemT {\tt lltjdefs.sty}: 
+\itemT {\tt lltjfont.sty}: 
+
+
+\itemitem Luaコード達(旧フォーマット)
+\itemT {\tt luatexja-core.lua}: コア部分に使われるLuaコード.
+\itemT {\tt luatexja-rmlgbm-data.lua}: 非埋込和文フォント用のデータ(小塚明朝Pr6N R由来).
+\itemT {\tt jfm-ujis.lua}: up\TeX-0.30の{\tt ujis.tfm}ベースのメトリックサンプル.
+\itemT {\tt jfm-mono.lua}: 「全文字が全角幅」のメトリックサンプル.
+
+\itemitem Luaコード達(新フォーマット,{\tt src/luatexja/}以下)
+
+\itemT {\tt base.lua}
+\itemT {\tt compat.lua}: p\TeX 互換用primitive(|\euc|, |\kansuji|)実装部.
+\itemT {\tt jisx0208.lua}: |\euc|等で使うJIS~X~0208→Unicode変換表.
+\itemT {\tt infomute.lua}
+\itemT {\tt jfont.lua}: 和文フォント定義部のLuaコード.
+\itemT {\tt rmlgbm.lua}: 非埋込和文フォント (Ryumin-Light etc.) 定義用コード.
+\itemT {\tt jfmglue.lua}: 和文処理に伴う空白の挿入処理部.
+\itemT {\tt math.lua}: 数式モード中の和文文字のフォント置換部分.
+\itemT {\tt tangle.lua}
+\itemT {\tt charrange.lua}: 「和文文字の範囲」管理部.
+\itemT {\tt debug.lua}
+\itemT {\tt inputbuf.lua}: 「和文文字直後の改行」処理用.
+\itemT {\tt stack.lua}: Lua\TeX-ja スタック管理システム.
 \enditem
 
 \beginsection 使用方法
 
-大é\9b\91æ\8a\8aã\81«è¨\80ã\81\86ã\81¨ï¼\8cplain \TeX ã\81®ç\8a¶æ³\81ã\81§ï¼\8c以ä¸\8bã\81®ã\82\88ã\81\86ã\81«ã\81\99ã\82\8cã\81°ã\82\88ã\81\84ï¼\8e
+大é\9b\91æ\8a\8aã\81«è¨\80ã\81\86ã\81¨ï¼\8cplain \TeX ã\81®ç\8a¶æ³\81ã\81§ï¼\8c以ä¸\8bã\81®ã\82\88ã\81\86ã\81«ã\81\99ã\82\8bã\81\8bï¼\8c
 \begintt
-\input luatexja-core.sty               % ←マクロ本体を読み込み
+\input luatexja.sty               % ←マクロ本体を読み込み
 \jfont\tenipam={file:ipam.ttf:jfm=ujis} at 13.5\jQ 
 \tenipam\parindent=1\zw 
 
 \rm\tenipam abcほげほげ)(あいう本文本文……
 \endtt
+\LaTeX において preamble 部で
+\begintt
+\usepackage{luatexja}
+\endtt
+と書けばよい.標準では非埋込の標準和文フォントRyumin-Light, GothicBBB-Mediumが使われる.
 
 \beginparagraph 和文フォントの定義
 
@@ -97,7 +129,6 @@ JFM は和文文字の幅や,和文文字間の空白の入り方などを規
   \globaljfont<font>={<font_name>:<features>} <size> % global に定義
 \endtt
 
-
 \item {\bf <font_name> の指定について}\par\noindent
 内部でluaotfloadパッケージを読み込んでいる.大きくわけて,以下の4種類がある.
 このうち,前の2つはluaotfloadパッケージの機能である.
@@ -318,7 +349,9 @@ $n\notin [1,216]$の場合は,「どの文字範囲にも属さない|U+0080|
 
 \beginparagraph その他の命令
 
-\item dimen |\zw|, |\zh|: 現在の和文フォントの「幅」/「高さ」(メトリックから指定)
+\item |\zw|, |\zh|: 現在の和文フォントの「幅」/「高さ」(メトリックにより指定)\hfil\break
+今の版では,これは純粋なdimenレジスタではなくなっている.
+
 \item dimen |\jQ|, |\jH|${}= 0.25\,{\rm mm}$.
 \item |\inhibitglue|: 
 指定箇所でのJFM由来のglue/kernの挿入を禁止する.
@@ -332,7 +365,7 @@ Lua\TeX-jaで用いる和文用のメトリック情報は,次のようなLua
 見本として,|jfm-ujis.lua|を入れてある.
 
 \begintt
-ltj.define_jfm {
+luatexja.jfont.define_jfm {
    dir = 'yoko', zw = 1.0, zh = 1.0,
    [0] = {
       align = 'left', left = 0.0, down = 0.0,
@@ -359,7 +392,7 @@ ltj.define_jfm {
 }
 \endtt
 
-全体は,「関数|ltj.define_jfm|にテーブルを引数として与える」という構造になっている.
+全体は,「関数|luatexja.jfont.define_jfm|にテーブルを引数として与える」という構造になっている.
 以下に,テーブルの中身を述べる.
 \item |dir|: 組方向を指定する.将来的にはいずれ縦組(|'tate'|)を実装したいが,
 現時点では横組(|'yoko'|)のみの対応.
@@ -437,9 +470,11 @@ $i$番の文字クラスの文字と$j$番の文字クラスの文字の間に
 \beginsection 互換用命令(書きかけ)
 
 {\tt luatexja-compat.sty}を読み込むことで,次が追加.
-\item |\euc|, |\jis|, |\sjis|, |\kuten|
+\item |\euc|, |\jis|, |\sjis|, |\kuten|, |\ucs|: 
+それぞれEUC-JP,ISO-2022-JP,Shift-JIS,区点コードからUnicodeへの変換を行う.
+JIS~X~0208→Unicodeへの変換テーブルとしては,up\TeX-0.30で用いられているものを利用している.
 \item |\kansuji|
-\item |kansujichar={<num>, <char>}| key in |\ltjsetparameter|.
+\item |kansujichar={<num>, <char>}|~key in |\ltjsetparameter|.
 \enditem
 
 
@@ -490,47 +525,9 @@ $p$は「現在の和文フォント」の番号もattribute |\ltj@curjfnt|と
 
 \item {\bf (luaotfloadパッケージによるグリフ置換等の処理はこの位置で)}
 
-\item {\bf JFM由来glue/kernの挿入: |pre_linebreak_filter|, |hpack_filter| callbacks}
-
-ここで,JFMに由来する和文文字間のglue/kernを挿入する.
-基本的には連続する和文文字(を表すnode)間に挿入するが,
-\itemitem 水平ボックスの先頭/末尾,段落の先頭/末尾には「文字コード|'boxbdd'|の文字」があると
-見做して空白を挿入する.
-\itemitem 和文文字とそうでないもの(欧文文字,ボックス等)の間に関しては,
-和文文字でない方は「文字コード|'jcharbdd'|の文字」であると見做す.
-\itemitem フォントの異なる2つの和文文字においても,
-両者のフォントのJFMとsizeが一致した場合は,
-挿入処理においては「同じフォント」であるかのように扱う.
-\itemitem  そうでない場合は,両者の間に「文字コード|'diffmet'|の文字」があると見做して,
-両和文文字からそれぞれglue/kern |gb|, |ga|を計算し,そこから実際に入るglue/kernを
-計算している(|\ltjsetparameter|中の|differentjfm|キーを参照).
-\itemitem もうちょっと詳しく書くと,本処理前において,和文文字を表す
-2つの連続した|glyph_node| $Q$, $P$の間には,次のnode達が挿入される:
-$$
- \ldots,\ Q,\ (\hbox{|\kern|}\ w\,{\rm pt}),\ (\hbox{|\penalty|}\ p),\ 
-(\hbox{|\kern|}\ (k-w)\,{\rm pt})
-,\ P,\ \ldots
-$$
-上に書いた全てのnodeが挿入されるとは限らず,また4つめのkernもglueに変わる可能性がある.
-上に出てきた量の意味は次の通りである:
-\itemT $w$: $Q$が行末にきたときに,行末からどれだけずらすかを指定した量.
-\itemT $p$: $Q$の行末禁則用penaltyと$P$の行頭禁則用penaltyの合計値.ウィドウ防止用の
-|\jcharwidowpenalty|が挿入される時は,値はここに加算される.
-\itemT |\kern| $k$: 本来の$Q$と$P$の間に入る空き(glueであることも).
-$w$のために自然長を補正している.
-
-\item {\bf |kanjiskip|, |xkanjiskip|の挿入: |pre_linebreak_filter|, |hpack_filter| callbacks}
-
-p\TeX の|adjust_hlist| procedureとほぼ同様の処理を用いて,
-和文間glue |kanjiskip|や和欧文間glue |xkanjiskip|を
-挿入する.
-\itemitem 数式境界 (|math_node|) との間に|xkanjiskip|を自動挿入するかの決定は,
-p\TeX では数字{\tt 0}との間に挿入するかどうかで判定していたが,Lua\TeX-jaでは
-「文字コード$-1$の文字」で判定している.
-\itemitem 合字の周囲の空白挿入については,構成要素の文字列を通じて判断している.例えば,
-「漢ffi字」という文字列に対して,
-\itemT 「漢」と「ffi」間の空白挿入:「漢」と「f」間に入るかで判断
-\itemT 「ffi」と「字」間の空白挿入:「i」と「字」間に入るかで判断
+\item {\bf 和文処理グルーの挿入: |pre_linebreak_filter|, |hpack_filter| callbacks}
+
+動作の詳細については,{\tt jfmglue.pdf}(未完)を参照.
 
 \item {\bf ベースライン補正: |pre_linebreak_filter|, |hpack_filter| callbacks}