OSDN Git Service

Updated the document of luatexja-ruby.sty
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 20 Mar 2014 07:22:51 +0000 (16:22 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 20 Mar 2014 07:22:51 +0000 (16:22 +0900)
doc/jfm-ujisc33.lua [new file with mode: 0644]
doc/luatexja-ruby.pdf [new file with mode: 0644]
doc/luatexja-ruby.tex [moved from luatexja-ruby.tex with 53% similarity]
luatexja-ruby.pdf [deleted file]
src/addons/luatexja-ruby.sty
src/ltj-jfmglue.lua
src/ltj-ruby.lua

diff --git a/doc/jfm-ujisc33.lua b/doc/jfm-ujisc33.lua
new file mode 100644 (file)
index 0000000..7879f58
--- /dev/null
@@ -0,0 +1,135 @@
+luatexja.jfont.define_jfm {
+   dir = 'yoko',
+   zw = 1.0, zh = 1.0,
+
+   [0] = {
+      align = 'left', left = 0.0, down = 0.0,
+      width = 1.0*0.67, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [1] = { 0.5*0.67 , 0.0, 0.5  },
+        [3] = { 0.25*0.67, 0.0, 0.25 }
+      }
+   },
+
+   [1] = { -- 開き括弧類
+      chars = {
+        '‘', '“', '〈', '《', '「', '『', '【', '〔', '〖', 
+        '〘', '〝', '(', '[', '{', '⦅'
+      },
+      align = 'right', left = 0.0, down = 0.0,
+      width = 0.5*0.67, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [3] = { 0.25*0.67, 0.0, 0.25 }
+      }
+   },
+
+   [2] = { -- 閉じ括弧類
+      chars = {
+        '’', '”', '、', '〉', '》', '」', '』', '】', '〕', 
+        '〗', '〙', '〟', ')', ',', ']', '}', '⦆'
+      },
+      align = 'left', left = 0.0, down = 0.0,
+      width = 0.5*0.67, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [0] = { 0.5*0.67 , 0.0, 0.5  },
+        [1] = { 0.5*0.67 , 0.0, 0.5  },
+        [3] = { 0.25*0.67, 0.0, 0.25 },
+        [5] = { 0.5*0.67 , 0.0, 0.5  },
+        [6] = { 0.5*0.67 , 0.0, 0.5  },
+        [7] = { 0.5*0.67 , 0.0, 0.5  }
+      }
+   },
+
+   [3] = { -- 中点類
+      chars = {'・', ':', ';'},
+      align = 'middle', left = 0.0, down = 0.0,
+      width = 0.5*0.67, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [0] = { 0.25*0.67, 0.0, 0.25 },
+        [1] = { 0.25*0.67, 0.0, 0.25 },
+        [2] = { 0.25*0.67, 0.0, 0.25 },
+        [3] = { 0.5*0.67 , 0.0, 0.5  },
+        [4] = { 0.25*0.67, 0.0, 0.25 },
+        [5] = { 0.25*0.67, 0.0, 0.25 },
+        [6] = { 0.25*0.67, 0.0, 0.25 },
+        [7] = { 0.25*0.67, 0.0, 0.25 }
+      }
+   },
+
+   [4] = { -- 句点類
+      chars = {'。', '.'},
+      align = 'left', left = 0.0, down = 0.0,
+      width = 0.5*0.67, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [0] = { 0.5*0.67 , 0.0, 0.0  },
+        [1] = { 0.5*0.67 , 0.0, 0.0  },
+        [3] = { 0.75*0.67, 0.0, 0.25 },
+        [5] = { 0.5*0.67 , 0.0, 0.0  },
+        [6] = { 0.5*0.67 , 0.0, 0.0  },
+        [7] = { 0.5*0.67 , 0.0, 0.0  }
+      }
+   },
+
+   [5] = { -- ダッシュ
+      chars = { '―', '‥', '…' },
+      align = 'left', left = 0.0, down = 0.0,
+      width = 1.0*0.67, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [1] = { 0.5*0.67 , 0.0, 0.5  },
+        [3] = { 0.25*0.67, 0.0, 0.25 }
+      },
+      kern = {
+        [5] = 0.0
+      }
+   },
+
+   [6] = { -- 感嘆符・疑問符
+      chars = { '?', '!' },
+      align = 'left', left = 0.0, down = 0.0,
+      width = 1.0, height = 0.88, depth = 0.12, italic=0.0,
+      glue = {
+        [0] = { 0.5*0.67 , 0.0, 0.5  },
+        [1] = { 0.5*0.67 , 0.0, 0.5  },
+        [3] = { 0.25*0.67, 0.0, 0.25 },
+        [7] = { 0.5*0.67 , 0.0, 0.5  },
+      },
+      kern = {
+        [5] = 0.0
+      }
+   },
+
+   [7] = { -- 半角カナ
+      chars = {
+        '。', '「', '」', '、', '・', 'ヲ', 'ァ', 'ィ', 'ゥ', 
+        'ェ', 'ォ', 'ャ', 'ュ', 'ョ', 'ッ', 'ー', 'ア', 'イ', 
+        'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 
+        'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト', 
+        'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 
+        'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 
+        'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ン', '゙', '゚',
+        "AJ1-516", "AJ1-517", "AJ1-518", "AJ1-519", "AJ1-520", "AJ1-521", "AJ1-522", 
+        "AJ1-523", "AJ1-524", "AJ1-525", "AJ1-526", "AJ1-527", "AJ1-528", "AJ1-529", 
+        "AJ1-530", "AJ1-531", "AJ1-532", "AJ1-533", "AJ1-534", "AJ1-535", "AJ1-536", 
+        "AJ1-537", "AJ1-538", "AJ1-539", "AJ1-540", "AJ1-541", "AJ1-542", "AJ1-543", 
+        "AJ1-544", "AJ1-545", "AJ1-546", "AJ1-547", "AJ1-548", "AJ1-549", "AJ1-550", 
+        "AJ1-551", "AJ1-552", "AJ1-553", "AJ1-554", "AJ1-555", "AJ1-556", "AJ1-557", 
+        "AJ1-558", "AJ1-559", "AJ1-560", "AJ1-561", "AJ1-562", "AJ1-563", "AJ1-564", 
+        "AJ1-565", "AJ1-566", "AJ1-567", "AJ1-568", "AJ1-569", "AJ1-570", "AJ1-571", 
+        "AJ1-572", "AJ1-573", "AJ1-574", "AJ1-575", "AJ1-576", "AJ1-577", "AJ1-578", 
+        "AJ1-579", "AJ1-580", "AJ1-581", "AJ1-582", "AJ1-583", "AJ1-584", "AJ1-585", 
+        "AJ1-586", "AJ1-587", "AJ1-588", "AJ1-589", "AJ1-590", "AJ1-591", "AJ1-592", 
+        "AJ1-593", "AJ1-594", "AJ1-595", "AJ1-596", "AJ1-597", "AJ1-598",
+      },
+      align = 'left', left = 0.0, down = 0.0,
+      width = 0.5*0.67, height = 0.88, depth = 0.12, italic=0.0,      
+      glue = {
+        [1] = { 0.5*0.67 , 0.0, 0.5  },
+        [3] = { 0.25*0.67, 0.0, 0.25 }
+      }
+   },
+
+   [99] = { -- box末尾
+      chars = {'boxbdd', 'parbdd'},
+   },
+
+}
\ No newline at end of file
diff --git a/doc/luatexja-ruby.pdf b/doc/luatexja-ruby.pdf
new file mode 100644 (file)
index 0000000..f95a490
Binary files /dev/null and b/doc/luatexja-ruby.pdf differ
similarity index 53%
rename from luatexja-ruby.tex
rename to doc/luatexja-ruby.tex
index 97916b0..5fa8f45 100644 (file)
@@ -2,20 +2,40 @@
 %%% a test of ruby.
 \documentclass[a4paper,10pt]{ltjsarticle}
 \usepackage{luatexja-otf,amsmath}
-\usepackage{unicode-math}
-\usepackage[textwidth=45\zw]{geometry}
-\usepackage[kozuka-pr6n]{luatexja-preset}
-\setmathfont{XITS Math}
-\setmainfont[Ligatures=TeX]{TeX Gyre Termes}
-\setsansfont[Ligatures=TeX]{TeX Gyre Heros}
-\setmonofont[Ligatures=TeX]{LMMono10-Regular}
+
+\usepackage[kozuka-pr6n]{luatexja-preset}\normalsize
+\def\emph#1{\textbf{\textgt{#1}}}
+\def\headfont{\normalfont\bfseries\gtfamily}
+\makeatletter
+\DeclareRobustCommand\ttfamily
+        {\not@math@alphabet\ttfamily\mathtt
+         \romanfamily\ttdefault\ttjfam\selectfont}
+\makeatother
+\newjfontfamily\ttjfam{KozGoPr6N-Regular.otf}
+
+\usepackage[textwidth=45\zw, lines=45, footskip=6mm]{geometry}
+\usepackage{luatexja-adjust}%\ltjdisableadjust
+\advance\leftmargini-1\zw\advance\leftmarginii-1\zw
+
+
 \usepackage{luatexja-ruby,showexpl,booktabs}
-\lstset{preset=\Large,basicstyle=\ttfamily}
+\lstset{
+  preset=\normalsize, basicstyle=\small\ttfamily, basewidth=0.5em,
+  explpreset={numberstyle=\tiny, numbers=left, numbersep=1em, columns=fixed},
+}
 \fboxsep=0mm
 
-\usepackage[unicode]{hyperref}
+\usepackage{hyperref,bookmark,xcolor}
+\hypersetup{%
+       unicode,
+       colorlinks,
+       allbordercolors=1 1 1,
+       allcolors=blue,
+       pdftitle={luatexja-ruby.sty}
+}
+
+
 \def\kata{\ltjsetruby{kata}} 
-% 肩つきルビ用簡易設定.グループルビでは使用しないこと
 \def\notalign{\setkeys[ltj]{ruby}{stretchhead = {1}{2}{1}, stretchend = {1}{2}{1}}}
 % 行頭・行末で揃えない
 
@@ -25,7 +45,7 @@
 
 % 三分ルビ用
 \DeclareFontShape{JY3}{mc}{mc}{n}{<-> [0.92487] 
-  psft:Ryumin-Light:extend=0.67;jfm=ujisc33}{}
+  KozMinPr6N-Regular:extend=0.67;jfm=ujisc33}{}
 
 \title{\texttt{luatexja-ruby.sty}}
 \begin{document}
 \tableofcontents
 
 \newpage
-\section{使い方}
+\section{\ltjruby{利|用|方|法}{り|よう|ほう|ほう}}
 パッケージ読み込みは,\verb+\usepackage{luatexja-ruby}+ で良く,
 必要ならば自動的に\LuaTeX-ja本体を読み込む.
 plain \LuaTeX でのロードはまだサポートしておらず,
 \LaTeXe のみサポートしている.
 
-\subsection{用語}
-「進入(intrusion)」「突出(protrusion)」という用語は,ZRさんによるpxrubricaパッケージでの用法に準ずる.
+\subsection{\ltjruby{用|語}{よう|ご}}
+「進入(intrusion)」「突出(protrusion)」という用語は,
+\href{http://zrbabbler.sp.land.to/pxrubrica.html}{\texttt{pxrubrica}\ パッケージ}%
+での用法に準ずる.
 
 \begin{quotation}
 進入あり:と\ltjruby{暁}{あかつき}の
@@ -63,60 +85,16 @@ plain \LuaTeX でのロードはまだサポートしておらず,
 突出なし:{\setkeys[ltj]{ruby}{stretch={0}{2}{0}}\ltjruby{聴衆}{ちようしゆう}}
 \end{quotation}
 
-\subsection{命令}
+\subsection{\ruby{命|令}{めい|れい}}
 \paragraph{\tt\textbackslash ltjruby}
 ルビ出力用命令の本体.\verb+\ruby+ という別名を定義している.
 \begin{quote}
 \tt \textbackslash ltjruby[<option>]\{親|文|字\}\{おや|も|じ\}
 \end{quote}
 のように使用する.
+第2・第3引数内の「\verb+|+」はグループの区切りを表す.詳細は\ref{ssec:grp}\nobreak 小節を参照.
 
-第2・第3引数内の「\verb+|+」はグループの区切りを表す.グループの数は両者で一致しなければならず,
-\verb+\ltjruby{紋章}{もん|しよう}+ のようにはできない.
-\begin{itemize}
-\item 1グループのみのルビ(単純グループルビ)はグループルビとして組まれる.そのため,
-もしモノルビを使いたければ,面倒でも
-\begin{LTXexample}[width=0.4\textwidth]
-の\ltjruby{紋}{もん}\ltjruby{章}{しよう}が
-\end{LTXexample}
-のように,複数回使用すること.
-\item 全てのグループにおいて「ルビ文字列の長さは親文字列以下」であれば,
-単純グループルビの並びとして扱われる.すなわち,次の2行は全くの等価となる.
-\begin{verbatim}
-\ltjruby{普|通|車}{ふ|つう|しや}
-\ltjruby{普}{ふ}\ltjruby{通}{つう}\ltjruby{車}{しや}
-\end{verbatim}
-\item 複数グループかつ上記の条件を満たさない場合は,
-所謂「可動グループルビ」であり,グループの切れ目で改行が可能となる.
-例えば
-\begin{verbatim}
-…の\ltjruby{表|現|力}{ひよう|げん|りよく}は…
-\end{verbatim}
-という入力からは得られる組版結果は,次のいずれかになる.
-\begin{center}
- \begin{tabular}{ll}
- \toprule
- 改行なし(行中形)&\Large …の\ltjruby{表|現|力}{ひよう|げん|りよく}は…\\
- 直前で改行&\Large \vrule \ltjruby[stretch=011]{表|現|力}{ひよう|げん|りよく}は…\\
-&\Large …の\ltjruby[stretch=110]{表}{ひよう}
-    \vrule\ltjruby[stretch=011]{現|力}{げん|りよく}は…\\
-&\Large …の\ltjruby[stretch=110]{表|現}{ひよう|げん}
-    \vrule\ltjruby[stretch=011]{力}{りよく}は…\\
- 直後に改行&\Large …の\ltjruby[stretch=110]{表|現|力}{ひよう|げん|りよく}\vrule\\
-\bottomrule
- \end{tabular}
-\end{center}
-
-上記の例で見られるように,
-2ブロック以上をまとめて組むときは,全体を1つのグループルビのように組版する(JIS~X~4051と同様).
-「日本語組版処理の要件」では,
-附属書Fに「熟語の構成,さらにその熟語の前後にくる文字の種類を考慮して配置する方法」として
-別の方法を解説しているが,こちらの方法は現時点ではサポートしていないので,
-面倒でも手動で \texttt{pre}, \texttt{post} などを使って頑張って欲しい.
-\end{itemize}
-
-
-さて,<option>には以下の内容をkey-valueリストで指定可能である:
+<option>には以下の内容をkey-valueリストで指定可能である:
 \begin{description}
 \def\makelabel#1{\tt#1}
 \item[pre=<real>] 前進入許容量をルビ全角単位で指定.
@@ -175,19 +153,23 @@ plain \LuaTeX でのロードはまだサポートしておらず,
 
 \end{description}
 \item[stretchruby=\{<left>\}\{<middle>\}\{<right>\}] 親文字の合計長が
-ルビ文字の合計長より長い時に,ルビ文字間に入れる空白の割合であり,それぞれ0--7の自然数で指定する.
+ルビ文字の合計長より長い時に,ルビ文字の前・間・後に入れる空白の割合であり,
+それぞれ0--7の自然数で指定する.
 既定値は\ \verb+{1}{2}{1}+ である.
 <left>はルビ文字の先頭までの空き量,<middle>はルビ文字間の空き量,<right>はルビ文字の末尾からの
 空き量(の比)を表す.以下が例である.
-\begin{LTXexample}[width=0.3\textwidth]
+\begin{LTXexample}[width=0.3\textwidth, preset=\Large]
 \ltjruby[stretchruby=123,maxmargin=2]%
   {◯◯◯◯}{◆◆}
 \end{LTXexample}
 \item[stretch=\{<left>\}\{<middle>\}\{<right>\}]
 行中形でルビ文字の方が長い場合,親文字の前・中・後に入れる空白の割合.
-既定値は\ \verb+{1}{2}{1}+ である.
-「親文字均等割禁止」を行う場合は,<middle>を0にした値,例えば\ 
-\verb+{1}{0}{1}+ を指定することになる.
+既定値は\ \verb+{1}{2}{1}+ である.それ以外の代表的な値としては,例えば次のようなものがある.
+\begin{description}
+\item[親文字均等割禁止] \verb+{1}{0}{1}+\ など<middle>を0にした値
+\item[前突出禁止] \verb+{0}{1}{1}+
+\item[後突出禁止] \verb+{1}{1}{0}+
+\end{description}
 
 \item[stretchhead=\{<left>\}\{<middle>\}\{<right>\}] 行頭形〜.
 既定値は\ \verb+{0}{1}{1}+ である.
@@ -201,7 +183,7 @@ plain \LuaTeX でのロードはまだサポートしておらず,
 \item[size=<real>] ルビ文字の親文字に対する大きさ.既定値は0.5.
 \item[intergap=<real>] ルビ文字と親文字との空きを親文字全角単位で指定.既定値は0.
 \item[rubysmash=<bool>] ルビの高さを0にするか.既定値は偽.次が例である.
-\begin{LTXexample}[width=0.3\textwidth]
+\begin{LTXexample}[width=0.3\textwidth, preset=\Large]
 \ \vrule width 0pt height 2\zw depth 1\zw
 \frame{\ltjruby[rubysmash=false]{本}{ほん}}\ 
 \frame{\ltjruby[rubysmash=true]{本}{ほん}}\ 
@@ -217,6 +199,8 @@ plain \LuaTeX でのロードはまだサポートしておらず,
 \item[kenten=<command>]各文字につく圏点の出力命令を指定する.既定値は「\verb+\ltjalchar`•+」
 であり,\texttt{U+2022} (Bullet)を\textbf{ALchar}として出力することを指定している.
 \item[fontcmd=<command>]ルビ用のフォント切り替え命令を指定する.
+このキーの内容が実行された後に\ \verb+\fontsize...\selectfont+\ が実行されるので,
+このキーの指定では最後に\ \verb+\selectfont+ を加える必要はない.
 
 \end{description}
 
@@ -238,21 +222,20 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1}
 
 \paragraph{\tt\textbackslash ltjsetruby\{<option>\}}
 <option>の既定値を指定する.\texttt{luatexja-ruby} 読み込み時の値は
-各項目の所で既に説明してあるが,
+各項目の所で既に説明してあるが,次のようになっている.
 \begin{verbatim}
-  pre = -1, post = -1, mode = 1, 
+  pre=-1, post=-1, mode=1, 
   stretchruby={1}{2}{1}, stretch = {1}{2}{1},
-  stretchhead = {0}{1}{1}, stretchend = {1}{1}{0},
-  maxmargin=0.5, size = 0.5, intergap=0, rubysmash = true, 
+  stretchhead={0}{1}{1}, stretchend={1}{1}{0},
+  maxmargin=0.5, size=0.5, intergap=0, rubysmash=false,
   kenten=\ltjalchar`•, fontcmd=\relax
 \end{verbatim}
-であり,中付きルビで組まれることになっている.
 
 \paragraph{\texttt{\textbackslash ltjsetparamater} に追加されるキー}
 \begin{description}
-\item[\textsf{rubypreintrusion}\tt =\{<chr\_code>, <pre\_int>\}]
+\item[\textsf{\mdseries rubypreintrusion}\tt =\{<chr\_code>, <pre\_int>\}]
 文字<chr\_code> に,その\textbf{直後}のルビによって掛けられるルビ文字列の最大長をルビ全角単位で指定.
-\item[\textsf{rubypostintrusion}\tt =\{<chr\_code>, <post\_int>\}]
+\item[\textsf{\mdseries rubypostintrusion}\tt =\{<chr\_code>, <post\_int>\}]
 文字<chr\_code> に,その\textbf{直前}のルビによって掛けられるルビ文字列の最大長をルビ全角単位で指定.
 \end{description}
 既定値は,\textsf{rubypreintrusion},~\textsf{rubypostintrusion}とも
@@ -260,11 +243,14 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1}
 \begin{quote}
  平仮名(\texttt{U+3040}--\texttt{U+309F}),カギ括弧「」,読点「,」「、」,中黒「・」
 \end{quote}
+また,ここでは「文字コード$-1$の文字」は,「段落開始の \verb+\parindent+」を表す%
+\footnote{通常の\LuaTeX-jaにおける指定では文中数式境界を表していることに注意.}.
+この「文字」に対する\textsf{rubypreintrusion}の値も1である.
 
 \paragraph{\texttt{\textbackslash ltjkenten}}
 圏点を出力する命令で,\verb+\kenten+ という別名を定義している.
 \begin{quote}
- \tt \textbackslash ltjkenten[<option>]{親文字}
+ \tt \textbackslash ltjkenten[<option>]\{親文字\}
 \end{quote}
 のように使用する.複数文字に圏点をつける場合でも,\verb+\ltjruby+ のように「\texttt{|}」を使って
 文字を区切る\textbf{必要はない}ことに注意してほしい.
@@ -272,19 +258,86 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1}
 圏点として出力される文字は \texttt{kenten} キーによって指定し,
 圏点自身の大きさは(ルビと同様に)\texttt{size} キーで指定する.
 
+\subsection{グループの\ruby{指|定}{し|てい}}
+\label{ssec:grp}
+\begin{quote}
+\tt \textbackslash ltjruby[<option>]\{親|文|字\}\{おや|も|じ\}
+\end{quote}
+のように,\verb+\ltjruby+\ の第2・第3引数内の「\verb+|+」はグループの区切りを表す.
+グループの数は両者で一致しなければならず,
+\verb+\ltjruby{紋章}{もん|しよう}+ のようには\emph{できない}.
+
+1グループのみのルビ(単純グループルビ)はグループルビとして組まれる.そのため,
+もしモノルビを使いたければ,面倒でも
+\begin{LTXexample}[width=0.4\textwidth, preset=\Large]
+の\ltjruby{紋}{もん}\ltjruby{章}{しよう}が
+\end{LTXexample}
+のように,複数回使用すること.
+また,全てのグループにおいて「ルビ文字列の長さは親文字列以下」であれば,
+単純グループルビの並びとして扱われる.すなわち,次の2行は全くの等価となる.
+\begin{verbatim}
+\ltjruby{普|通|車}{ふ|つう|しや}
+\ltjruby{普}{ふ}\ltjruby{通}{つう}\ltjruby{車}{しや}
+\end{verbatim}
+
+\newpage
+複数グループかつ上記の条件を満たさない場合は,
+所謂「可動グループルビ」であり,ルビの前後や各グループの切れ目で行分割が可能となる.
+例えば
+\begin{verbatim}
+…の\ltjruby{表|現|力}{ひよう|げん|りよく}は…
+\end{verbatim}
+という入力からは得られる組版結果は,次のいずれかになる.
+\begin{center}
+ \begin{tabular}{ll}
+ \toprule
+ 改行なし(行中形)&\Large …の\ltjruby{表|現|力}{ひよう|げん|りよく}は…\\
+ 直前で改行&\Large \vrule \ltjruby[stretch=011]{表|現|力}{ひよう|げん|りよく}は…\\
+&\Large …の\ltjruby[stretch=110]{表}{ひよう}
+    \vrule\ltjruby[stretch=011]{現|力}{げん|りよく}は…\\
+&\Large …の\ltjruby[stretch=110]{表|現}{ひよう|げん}
+    \vrule\ltjruby[stretch=011]{力}{りよく}は…\\
+ 直後に改行&\Large …の\ltjruby[stretch=110]{表|現|力}{ひよう|げん|りよく}\vrule\\
+\bottomrule
+ \end{tabular}
+\end{center}
+\begin{itemize}
+ \item これらの行分割によってペナルティは発生しない.
+ \item 上記の例で見られるように,
+2ブロック以上をまとめて組むときは,全体を1つのグループルビのように組版する(JIS~X~4051と同様).
+『日本語組版処理の要件』では,
+附属書Fに「熟語の構成,さらにその熟語の前後にくる文字の種類を考慮して配置する方法」として
+別の方法を解説しているが,こちらの方法は現時点ではサポートしていないので,
+面倒でも手動で \texttt{pre}, \texttt{post} などを使って頑張って欲しい.
+ \item 実装方法の都合により,ルビの直前・直後・途中で2箇所以上の改行が起きる場合,例えば
+\begin{center}
+ \begin{tabular}{lll}
+ \toprule
+ \Large …の\ltjruby[stretch=110]{表}{ひよう}
+    \vrule\ltjruby[stretch=010]{現|力}{げん|りよく}\vrule&
+\Large \vrule\ltjruby[stretch=010]{表|現}{ひよう|げん}
+    \vrule\ltjruby[stretch=011]{力}{りよく}は…&
+\Large \vrule\ltjruby[stretch=010]{表|現|力}{ひよう|げん|りよく}\vrule\\
+\bottomrule
+ \end{tabular}
+\end{center}
+などの組み方は\emph{想定していない}.
+\end{itemize}
+
 \newpage
 
-\section{注意点}
+\section{\ruby{注|意|点}{ちゆう|い|てん}}
 \begin{description}
 \item[ルビ文字のはみ出し]
 「日本語組版処理の要件」の図3.82のように,
-ルビ文字のはみ出しが繋がらないようにする処理について述べる:例えば,
-\begin{center}\Large
-\ltjsetparameter{rubypreintrusion={`◆,1}, 
-  rubypostintrusion={`◆,1}}
-\ltjruby{陵}{りよう}◆\ltjruby{陵}{みささぎ}
-\end{center}
-において,後者の「\ltjruby{陵}{みささぎ}」のルビが前の「◆」にかかる量は次のように決まる:
+ルビ文字のはみ出しが繋がらないようにする処理について述べる.
+
+例えば,
+\begin{LTXexample}[preset=\Large,width=0.3\textwidth]
+\ltjruby{陵}{りよう}と\ltjruby{陵}{みささぎ}\\
+\ltjruby{陵}{りよう}と\ltjruby[pre=1]{陵}{みささぎ}
+\end{LTXexample} 
+において,1行目右側の「\ltjruby{陵}{みささぎ}」のルビが前の「と」にかかる量は次のように決まる:
 \begin{enumerate}
 \item 1回目の実行では,行分割前に「\ltjruby{陵}{りよう}」の後側進入量は前もって知ることはでき
       ない.なので,「\ltjruby{陵}{りよう}」は行中形で組まれるものとして
@@ -293,68 +346,54 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1}
  \underbrace{0.5\,\mathrm{zw}}_{\text{元々の許容量}}
 -\underbrace{0.25\,\mathrm{zw}}_{\text{前のルビの後側進入量(行中形)}}=0.25\,\mathrm{zw}
 \]
-となる.なお,行分割後,「\ltjruby{陵}{りよう}」が実際に組まれた時に使われた後側進入量は
+となる.行分割後,「\ltjruby{陵}{りよう}」の実際の後側進入量は
 auxファイルに記述される.
 \item 2回目以降の実行では,auxファイルに保存された「\ltjruby{陵}{りよう}」の後側進入量
-を用いて,「\ltjruby{陵}{みささぎ}」前側進入許容量を
+を用いて,「\ltjruby{陵}{みささぎ}」前側進入許容量を次のように計算する:
 \[
  \underbrace{0.5\,\mathrm{zw}}_{\text{元々の許容量}}
--\underbrace{0.25\,\mathrm{zw}}_{\text{前のルビの後側進入量 (from aux)}}=0.25\,\mathrm{zw}
+-\underbrace{0.25\,\mathrm{zw}}_{\text{前のルビの後側進入量 (from aux)}}=0.25\,\mathrm{zw}.
 \]
-と計算する.
 \end{enumerate}
 auxファイルに保存する際,各 \verb+\ltjruby+ 命令の呼び出しを識別するキーが必要になるが,
 そのキーとしては単純に「何個目の \verb+\ltjruby+ 命令か」である.
 
-\item[可動グループルビの制限] 
-実装方法の都合上,ルビの直前・直後・途中で2箇所以上の改行が起きる場合
-(以下のパーツの組み方が出てくる)に対応できない.
-\begin{center}\small
-\begin{tabular}{ll}
-\toprule
-\multicolumn{1}{c}{\sf 組み方}&\multicolumn{1}{c}{\sf サンプル}\\
-\midrule
-単独1&
-\huge
-\vrule{\color{blue}\gt\ltjruby[]{流}{りゆう}}\vrule\\
-単独2&
-\huge
-\vrule{\color{blue}\gt\ltjruby[]{暢}{ちよう}}\vrule\\
-単独$(1+2)$&
-\huge
-\vrule{\color{blue}\gt\ltjruby[stretch=010]{流|暢}{りゆう|ちよう}}\vrule\\
-\bottomrule
-\end{tabular}
-\end{center}
+なお,以上の処理は,1行目と2行目を比較すれば分かるように,
+「\ltjruby{陵}{みささぎ}」の\emph{前進入許容量指定(\texttt{pre})が自動}になっている場合のみ
+実施される.
 
-\newpage
-\item[段落末尾のルビ]\ 
-\begin{itemize}
-\item 段落がルビで終わった場合,そのルビが行末形で組まれることはない.
+\item[段落末尾のルビ]
+段落がルビで終わった場合,そのルビが行末形で組まれることはない.
 これは,段落の「本当の」末尾には \verb+\penalty10000\parfillskip+ があるためで,
-ルビ処理用に作った最後のグルー(の説明では$g_2$)が消去されないことによる.
+ルビ処理用に作った最後のグルー(\ref{sec:impl}\nobreak 節の説明では$g_2$)が消去されないことによる.
 
 \verb+\parfillskip+ の長さ(や,場合によっては \verb+\rightskip+)を実測し,
 それによって処理を変えるのも可能だが,そのようなことはしなかった.
 段落がルビで終わることは普通ない(最低でも句点が続くだろう)と思うからである.
-\end{itemize} 
+
+
 
 \item[段落先頭のルビ]
-同様に,段落先頭のルビは行頭形にはならず,また
-\texttt{pre}が負(つまり,自動指定)のときは段落最初のインデント部分への進入は行わない.
-\begin{LTXexample}
+同様に,段落先頭のルビは行頭形にはならない.
+\texttt{pre}が負(つまり,自動指定)のとき,段落最初の \verb+\parindent+ 部分への
+進入は可能である.\verb+\parindent+ 部分への進入許容量は
+「文字$-1$」に対する\textsf{rubypreintrusion}(既定値は1,ルビ全角単位)と
+\ \verb+\parindent+ の長さのうち小さい方である.
+\begin{LTXexample}[preset=\Large,width=0.4\textwidth]
 \parindent1\zw\noindent 012345\par
 \ltjruby{陵}{みささぎ}は……\par
-\ltjruby[pre=1]{陵}{みささぎ}は……
-% 手動で指定するのはOK
+\ltjruby{承}{うけたまわ}り……\par
+\parindent0.25\zw\ltjruby{陵}{みささぎ}は……
 \end{LTXexample}
 
 
 \end{description}
 
-\section{実装の大まかな方法}
-次の例で説明する.
-\begin{LTXexample}
+\newpage
+\section{\ruby{実|装}{じつ|そう}について}
+\label{sec:impl}
+次の例で実装の大まかな方法を説明する.
+\begin{LTXexample}[preset=\Large]
 ……を\ltjruby{流|暢}{りゆう|ちよう}に……
 \end{LTXexample}
 
@@ -376,7 +415,7 @@ $s_i$達の中の文字は既にルビの大きさである.
 「先頭が『流』,最後が『暢』であるようなhboxを \verb|\unhbox| で展開したもの」と扱われる.
 言い換えれば,ルビ部分を無視した単なる「流暢」という和文文字の並びとして扱われる\footnote{「流」「暢」の間のグルーは既に入っている,と扱われる.}.
 次のサンプルを参照
-\begin{LTXexample}
+\begin{LTXexample}[preset=\Large]
 \leavevmode\hbox{.}A\\
 %↑xkanjiskip 
 \ltjruby{.}{}A
@@ -405,48 +444,47 @@ $s_i$達の中の文字は既にルビの大きさである.
 のようになったとしたら,「\ltjruby{流}{りゆう}」「\ltjruby{暢}{ちよう}」の間で行分割が起きた,ということがわかり,
 $g_i$,~$r_i$達のノードを適切に置き換えればよい(後で詳しく説明する).
 
-\item なお,$r_i$達の高さ・深さは組み上がった後のそれである.
-$g_i$,~$r_i$達の幅は,以下の対応に沿って算出する.
-
-\begin{center}\small
+\begin{figure}\centering\small
 \begin{tabular}{cllll}
 \toprule
-\multicolumn{1}{c}{\sf node名}&\multicolumn{1}{c}{\sf 組み方}&\multicolumn{1}{c}{\sf サンプル}%
-&\multicolumn{1}{c}{\sf 対応するノード並び}\\
+\multicolumn{1}{c}{\bf ノード}&\multicolumn{1}{c}{\bf 組み方}&\multicolumn{1}{c}{\bf サンプル}%
+&\multicolumn{1}{c}{\bf 対応するノード並び}\\
 \midrule
 $n_1$&行末1グループ&
 \Large
-\fbox{を}{\color{blue}\gt\ltjruby[pre=1,mode=5,stretch=110]{流}{りゆう}}\vrule
+\fbox{を}{\color{blue!50!black}\gt\ltjruby[pre=1,mode=5,stretch=110]{流}{りゆう}}\vrule
 &
 $g_0\rightarrow W\rightarrow r_1$\\
 $n_2$&行末2グループ&
 \Large
-\fbox{を}{\color{blue}\gt\ltjruby[pre=1,mode=1,stretch=110]{流|暢}{りゆう|ちよう}}\vrule
+\fbox{を}{\color{blue!50!black}\gt\ltjruby[pre=1,mode=1,stretch=110]{流|暢}{りゆう|ちよう}}\vrule
 &
 $g_0\rightarrow W\rightarrow r_1\rightarrow g_2 \rightarrow r_2$\\
 $n_3$&行頭1グループ&
 \Large
-\vrule{\color{blue}\gt\ltjruby[post=1,mode=1,stretch=011]{暢}{ちよう}}\fbox{に}
+\vrule{\color{blue!50!black}\gt\ltjruby[post=1,mode=1,stretch=011]{暢}{ちよう}}\fbox{に}
 &
 $r_2\rightarrow g_2$\\
 $n_4$&行頭2グループ&
 \Large
-\vrule{\color{blue}\gt\ltjruby[post=1,mode=1,stretch=011]{流|暢}{りゆう|ちよう}}\fbox{に}
+\vrule{\color{blue!50!black}\gt\ltjruby[post=1,mode=1,stretch=011]{流|暢}{りゆう|ちよう}}\fbox{に}
 &
 $W\rightarrow r_1\rightarrow g_2 \rightarrow r_2\rightarrow g_2$\\
 $n_5$&行中&
 \Large
-\fbox{を}{\color{blue}\gt\ltjruby[post=0.5,pre=0.5,mode=1]{流|暢}{りゆう|ちよう}}\fbox{に}
+\fbox{を}{\color{blue!50!black}\gt\ltjruby[post=0.5,pre=0.5,mode=1]{流|暢}{りゆう|ちよう}}\fbox{に}
 &
 $g_0\rightarrow W\rightarrow r_1\rightarrow g_2 \rightarrow r_2\rightarrow g_2$\\
 
 \bottomrule
 \end{tabular}
-\end{center}
+\caption{ルビの組み方と対応するノード並び}
+\label{fig:node}
+\end{figure}
 
-\medskip
-
-例えばこの場合,$n_5$に対して
+\item なお,$r_i$達の高さ・深さは組み上がった後のそれである.
+$g_i$,~$r_i$達の幅は,図\nobreak\ref{fig:node}に示したような対応に沿って算出する.
+例えばこの場合,行中形$n_5$に対して
 \[
  g_0+r_1+g_2+r_2+g_2 = 3\,\mathrm{zw}-(0.25\,\mathrm{zw}\times 2)=2.5\,\mathrm{zw}
 \]
@@ -489,13 +527,13 @@ $g_i$,~$r_i$達の幅が求まる.
 $g_0$,~($W$,)~$r_1$というノードの並びは,「行末1グループ」$n_1$に対応しているので,
 $g_0$,~$r_1$を行Aから除去・メモリ解放し,代わりに$n_1$を行Aの中身に追加する.
 
-\item æ¬¡ã\81«è¡\8c\81®å\87¦ç\90\86ã\81«ã\81\86ã\81¤ã\82\8bï¼\8eè¡\8c\81§ã\83«ã\83\93ã\81®å\87¦ç\90\86ã\81¯å®\8cäº\86ã\81\97ã\81¦ã\81\84ã\81ªã\81\84ï¼\88\83\91ã\83¼ã\83\84ã\81®ã\83«ã\83\93ã\81ªã\81®ã\81«ã\81¾ã\81 1ã\83\91ã\83¼ã\83\84ç\9b®ã\81\97ã\81\8b使ã\81£ã\81¦ã\81\84ã\81ªã\81\84ã\81\8bã\82\89ã\81§ã\81\82ã\82\8b)ので,
-「whatsit~$W$由来」のノードがいくつか残っているはずである.
+\item æ¬¡ã\81«è¡\8c\81®å\87¦ç\90\86ã\81«ã\81\86ã\81¤ã\82\8bï¼\8eè¡\8c\81§ã\83«ã\83\93ã\81®å\87¦ç\90\86ã\81¯å®\8cäº\86ã\81\97ã\81¦ã\81\84ã\81ªã\81\84ï¼\88\82°ã\83«ã\83¼ã\83\97ã\81®ã\83«ã\83\93ã\81ªã\81®ã\81«ã\81¾ã\81 1ã\82°ã\83«ã\83¼ã\83\97ã\81\97ã\81\8b使ã\81£ã\81¦ã\81\84ã\81ªã\81\84)ので,
+「whatsit~$W$由来」のノードがいくつか行B内に残っているはずである.
 
 案の定,$r_2$,~$g_2$というノード列が見つかった.これは「行頭1グループ」$n_3$に対応しているので,
 $r_2$,~$g_2$を行Bから除去・メモリ解放し,代わりに$n_3$を行Bの中身に挿入する.
 
-\item ã\81\93ã\82\8cã\81§2ã\83\91ã\83¼ã\83\84とも使い切ったことになるので,
+\item ã\81\93ã\82\8cã\81§2ã\82°ã\83«ã\83¼ã\83\97とも使い切ったことになるので,
 隔離しておいた$W$を,(使われなかった$n_2$,~$n_4$,~$n_5$などと共に)メモリ解放する.結果として
 次のようになった:
 \begin{gather*}
@@ -509,240 +547,261 @@ $r_2$,~$g_2$を行Bから除去・メモリ解放し,代わりに$n_3$を行B
 
 \newpage
 \section{いくつかの例}
-\def\ltjrubytest{\ltjruby{黄金橋}{ゴールデンゲートブリッジ}\relax}
+\def\rubytest{\ruby{黄金橋}{ゴールデンゲートブリッジ}\relax}
 
 \setbox0=\vbox{\hsize=22\zw%
-ああああ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ}
+ああああ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ}
 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
 \fbox{\box0}
 
-\def\ltjrubytest{\ltjruby{国府津}{こうづ}\relax}
+\def\rubytest{\ruby{国府津}{こうづ}\relax}
 % グループルビ
 
 \setbox0=\vbox{\hsize=18\zw%
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ}
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ}
 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
 \fbox{\box0}
 
-\def\ltjrubytest{\ltjruby{●●|◆}{◆◆◆◆◆◆|●●●}\relax}
+\def\rubytest{\ruby{●●|◆}{◆◆◆◆◆◆|●●●}\relax}
 \setbox0=\vbox{\hsize=19\zw%
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこイ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこウ
-あ\ltjrubytest いうえおかきくけこエ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ}
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこイ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこウ
+あ\rubytest いうえおかきくけこエ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ}
 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
 \fbox{\box0}
 
-\def\ltjrubytest{\ltjruby{●●|□}{◆◆◆|●●●}\relax}
+\def\rubytest{\ruby{●●|□}{◆◆◆|●●●}\relax}
 \setbox0=\vbox{\hsize=19\zw%
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこイ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこウ
-あ\ltjrubytest いうえおかきくけこエ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ}
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこイ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこウ
+あ\rubytest いうえおかきくけこエ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ
+あ\rubytest いうえおかきくけこ}
 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
 \fbox{\box0}
 
-\def\ltjrubytest{\ltjruby{異|様}{い|よう}\relax}
+\def\rubytest{\ruby{異|様}{い|よう}\relax}
 \setbox0=\vbox{\hsize=19\zw%
-あ\ltjrubytest いうえくけ
-あ\ltjrubytest いうえくけこ
-あ\ltjrubytest いうえくけこ
-あ\ltjrubytest いうえくけこイ
-あ\ltjrubytest いうえおかきくけこ}
+あ\rubytest いうえくけ
+あ\rubytest いうえくけこ
+あ\rubytest いうえくけこ
+あ\rubytest いうえくけこイ
+あ\rubytest いうえおかきくけこ}
 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
 \fbox{\box0}
 
-\def\ltjrubytest{\ltjruby{□|■|□}{■■|□□□|■■}\relax}
+\def\rubytest{\ruby{□|■|□}{■■|□□□|■■}\relax}
 
 \setbox0=\vbox{\hsize=23\zw%
-あ\ltjrubytest いうえおかきくけこうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこうえおかきくけこ
-あ\ltjrubytest いう□おかきくけこうえおかきくけこ
-あ\ltjrubytest いう□おかきくけこうえおかきくけこ
-あ\ltjrubytest いう□おかきくけこうえおかきくけこ
-あ\ltjrubytest いうえおかきくけこ}
+あ\rubytest いうえおかきくけこうえおかきくけこ
+あ\rubytest いうえおかきくけこうえおかきくけこ
+あ\rubytest いう□おかきくけこうえおかきくけこ
+あ\rubytest いう□おかきくけこうえおかきくけこ
+あ\rubytest いう□おかきくけこうえおかきくけこ
+あ\rubytest いうえおかきくけこ}
 \fbox{\box0}
 
 \begin{description}
-\def\sample{又\ltjruby{承}{うけたまわ}る\quad \ltjruby{疎}{そ}\quad は\ltjruby{俄}{にわか}勉強
-  \quad 後\ltjruby{俄}{にわか}勉強\quad は\ltjruby{暁}{あかつき}に
-  は\ltjruby{俄}{にわか}に
-  \quad \ltjruby{休|憩|中}{きゆう|けい|ちゆう}かつ\ltjruby{視|聴|中}{し|ちよう|ちゆう}}
+\def\sample{又\ruby{承}{うけたまわ}る\quad \ruby{疎}{そ}\quad は\ruby{俄}{にわか}勉強
+  \quad 後\ruby{俄}{にわか}勉強\quad は\ruby{暁}{あかつき}に
+  は\ruby{俄}{にわか}に
+  \quad \ruby{休|憩|中}{きゆう|けい|ちゆう}かつ\ruby{視|聴|中}{し|ちよう|ちゆう}}
 \item[標準] \sample
 \item[肩つき] {\kata\sample}
-\item[親文字均等割禁止] {\ltjsetruby{stretch=101}\sample}
 \end{description}
 
-\textgt{\ltjruby{勉|強}{べん|きよう}\ltjruby[fontcmd=\mcfamily]{勉|強}{べん|きよう}}
+\newpage
+\begin{LTXexample}[pos=t]
+{\ltjsetruby{stretch=101}% 親文字均等割り禁止
+    \ruby{休|憩|中}{きゆう|けい|ちゆう}かつ\ruby{視|聴|中}{し|ちよう|ちゆう}%
+}\quad
+\textgt{\ruby{勉|強}{べん|きよう}と%
+    \ruby[fontcmd=\mcfamily]{勉|強}{べん|きよう}}\quad% ルビは明朝体
+\ruby{コギト・エルゴ・スム}{Cogito ergo sum}\quad   % 欧文空白は伸長しない
+\ruby[size=1]{Cogito ergo sum}{コギト・エルゴ・スム}% 欧文空白は伸長しない
+\end{LTXexample}
 
 \newpage
-\section{ã\80\8cæ\97¥æ\9c¬èª\9eçµ\84ç\89\88å\87¦ç\90\86ã\81®è¦\81件ã\80\8d20120403の例}
+\section{ã\80\8eæ\97¥æ\9c¬èª\9eçµ\84ç\89\88å\87¦ç\90\86ã\81®è¦\81件ã\80\8f20120403の例}
 
-\obeylines\newcommand*{\噂}{\CID{7642}}
+\newcommand*{\噂}{\CID{7642}}
+\newcommand*{\倦}{\CID{7674}}
 %================================== 横組
-\paragraph{3.3.1節}\ \par
-3.49 \ltjruby{君|子}{くん|し}は\ltjruby{和}{わ}して\ltjruby{同}{どう}ぜず
-3.50 \ltjruby{人}{ひと}に\ltjruby{誨}{おし}えて\ltjruby{倦}{う}まず\par% 中付き
-3.51 \ltjruby{鬼}{き}\ltjruby{門}{もん}の\ltjruby{方}{ほう}\ltjruby{角}{がく}を% モノ中付き
-\ltjruby{凝}{ぎょう}\ltjruby{視}{し}する
-3.52 \ltjruby{鬼|門}{き|もん}の\ltjruby{方|角}{ほう|がく}を% 熟語(グループ扱い)
-\ltjruby{凝|視}{ぎよう|し}する
-3.53 \ltjruby{茅場町}{かやばちよう}\quad\ltjruby{茅場}{かやば}\ltjruby{町}{ちよう}\par% 複合語
-% 3.53右の説明はこれでいいのか?
-3.54 \ltjruby{紫陽花}{あじさい}\quad\ltjruby{坩堝}{るつぼ}\quad\ltjruby{田舎}{いなか}\par% 熟字訓 
-3.55 \ltjruby{模型}{モデル}\quad\ltjruby{顧客}{クライアント}\quad% カタカナルビ
-\ltjruby{境界面}{インターフエース}\quad\ltjruby{避難所}{アジール}
-3.56 \ltjruby{編集者}{editor}\quad \ltjruby{editor}{エディター}% 欧文
-
-\paragraph{3.3.3節}\ \par
-3.58 に\ltjruby{幟}{のぼり}を\quad{\kata に\ltjruby{幟}{のぼり}を}%
-  \quad \ltjruby{韋}{い}\ltjruby{編}{へん}\ltjruby{三}{さん}\ltjruby{絶}{ぜつ}
-3.59 に\ltjruby{幟}{\kanjiseries{mc}\selectfont のぼり}を
-3.60 \ltjruby{韋}{い}\ltjruby{編}{へん}\ltjruby{三}{さん}\ltjruby{絶}{ぜつ}\quad%
-{\setkeys[ltj]{ruby}{size=0.4}% 文字サイズ変更
-  \ltjruby{韋}{い}\ltjruby{編}{へん}\ltjruby{三}{さん}\ltjruby{絶}{ぜつ}}
-
-\paragraph{3.3.4節}\ \par
-3.61図(両側ルビ)はまだ未サポートにより省略
-
-\paragraph{3.3.5節 モノルビ}\ \par
-3.62 の\ltjruby{葯}{やく}に
-3.63 版面の\ltjruby{地}{ち}に\quad{\kata 版面の\ltjruby{地}{ち}に}
-3.64× {\kata 版面の\ltjruby{地}{ち}に}(まだ縦組み未サポート)\par% 横組み肩つき
-3.65 の\ltjruby{砦}{とりで}に\quad{\kata の\ltjruby{砦}{とりで}に}
-{\kata 3.66上 の\ltjruby{旬}{しゆん}に\quad 後\ltjruby{旬}{しゆん}に
-3.66下 の\ltjruby{旬}{しゆん}又\quad 後\ltjruby{旬}{しゆん}又\par}
-
-
-\paragraph{3.3.6節 グループルビ}\ \par
-3.67 は\ltjruby{冊子体}{コーデツクス}と
-3.68 \ltjruby{模型}{モデル}\quad \ltjruby{利用許諾}{ライセンス}
-3.69 {\setkeys[ltj]{ruby}{stretchruby=010}% 両端を揃える流儀
-  \ltjruby{模型}{モデル}\quad \ltjruby{利用許諾}{ライセンス}}
-3.70 \ltjruby{なげきの聖母像}{ピエタ}←自動調整
-3.71 \ltjruby{顧客}{クライアント}\quad \ltjruby{境界面}{インターフエース}
-3.72 {\setkeys[ltj]{ruby}{stretch=010, stretchhead = 010, stretchend = 010}% はみ出さない流儀
-  \ltjruby{顧客}{クライアント}\quad \ltjruby{境界面}{インターフエース}}
-
-
-\paragraph{3.3.7節 熟語ルビ}\ \par
-3.73左 \ltjruby{杞|憂}{き|ゆう}\quad \ltjruby{畏|怖}{い|ふ}
-3.73右 {\kata\ltjruby{杞|憂}{き|ゆう}\quad \ltjruby{畏|怖}{い|ふ}}
-3.74 の\ltjruby{流|儀}{りゆう|ぎ}を\quad の\ltjruby{無|常}{む|じよう}を\quad%
-の\ltjruby{成|就}{じよう|じゆ}を\quad
-3.74 の\ltjruby{紋|章}{もん|しよう}を\quad の\ltjruby{象|徴}{しよう|ちよう}を
-
-3.75 {\kata の\ltjruby{流|儀}{りゆう|ぎ}を\quad の\ltjruby{無|常}{む|じよう}を\quad%
-の\ltjruby{成|就}{じよう|じゆ}を\quad 
-3.75 の\ltjruby{紋|章}{もん|しよう}を\quad の\ltjruby{象|徴}{しよう|ちよう}を}
-
-3.76× の\ltjruby{流}{りゆう}\ltjruby{儀}{ぎ}を\quad の\ltjruby{無}{む}\ltjruby{常}{じよう}を\quad%
-
-要調整 3.77\ {\notalign%この図では揃えない
-\hbox{\vrule\vbox{\hsize=10\zw あああああああの%
-  \ltjruby{流|儀}{りゆう|ぎ}がある.}\vrule}\quad%
-\textbf{←ルビ中で改行するには?}
-\hbox{\vrule\vbox{\hsize=5\zw ……の\ltjruby{無|常}{む|じよう}を}\vrule}}
-
-\paragraph{3.3.8節 ルビはみ出し}\ \par
-3.78 \ltjruby{人}{ひと}は\ltjruby{死}{し}して\ltjruby{名}{な}を\ltjruby{残}{のこ}す\par% ベタ
-要調整3.79 漢字の部首には\ltjruby{偏}{へん}・\ltjruby{冠}{かんむり}・\ltjruby{脚}{きやく}・%
-\ltjruby{旁}{つくり}がある
-要調整3.79 漢字の部首には\ltjruby{偏}{へん},\ltjruby{冠}{かんむり},\ltjruby{脚}{きやく},%
-\ltjruby{旁}{つくり}がある
-3.79 この\ltjruby{\噂}{うわさ}の好きな人は%
-\ltjruby{懐}{ふところ}ぐあいもよく、\ltjruby{檜}{ひのき}を
-3.80 漢字の部首には「\ltjruby{偏}{へん}」「\ltjruby{冠}{かんむり}」「\ltjruby{脚}{きやく}」%
-「\ltjruby{旁}{つくり}」がある
-3.80 この\ltjruby{\噂}{うわさ}好きな人は\ltjruby{懐}{ふところ}具合もよく、\ltjruby{檜}{ひのき}材を
-3.81× に\ltjruby{暁}{あかつき}の\kern-1\zw の\ltjruby{趣}{おもむき}を
-3.82 に\ltjruby{暁}{あかつき}の\ltjruby{趣}{おもむき}を
+\paragraph{3.3.1節}\ 
+\begin{LTXexample}[pos=t]
+\obeylines
+3.49 \ruby{君|子}{くん|し}は\ruby{和}{わ}して\ruby{同}{どう}ぜず
+3.50 \ruby{人}{ひと}に\ruby{誨}{おし}えて\ruby{\倦}{う}まず
+% モノルビ.面倒でも複数回の実行が必要
+3.51 \ruby{鬼}{き}\ruby{門}{もん}の\ruby{方}{ほう}\ruby{角}{がく}を%
+     \ruby{凝}{ぎょう}\ruby{視}{し}する
+% 熟語ルビ
+3.52 \ruby{鬼|門}{き|もん}の\ruby{方|角}{ほう|がく}を\ruby{凝|視}{ぎよう|し}する
+3.53 \ruby{茅場町}{かやばちよう}\quad\ruby{茅|場}{かや|ば}\ruby{町}{ちよう}
+% 熟字訓
+3.54 \ruby{紫陽花}{あじさい}\quad\ruby{坩堝}{るつぼ}\quad\ruby{田舎}{いなか}
+% グループルビ
+3.55 \ruby{模型}{モデル}\quad\ruby{顧客}{クライアント}\quad%
+     \ruby{境界面}{インターフエース}\quad\ruby{避難所}{アジール}
+3.56 \ruby{編集者}{editor}\quad \ruby{editor}{エデイター}
+\end{LTXexample}
+
+\paragraph{3.3.3節}\ 
+\begin{LTXexample}[pos=t]
+\obeylines
+3.58 に\ruby{幟}{のぼり}を\quad に\ruby[kata]{幟}{のぼり}を\quad%
+     \ruby{韋}{い}\ruby{編}{へん}\ruby{三}{さん}\ruby{絶}{ぜつ}
+% 三分ルビ.JY3/mc/mc は本文書のプリアンブルで独自に定義
+3.59 に\ruby[fontcmd=\kanjifamily{mc}\kanjiseries{mc}]{幟}{のぼり}を
+% ルビ文字を小さくする
+3.60 {\Large%
+  \ruby{韋}{い}\ruby{編}{へん}\ruby{三}{さん}\ruby{絶}{ぜつ}\quad% 比較用
+  \ltjsetruby{size=0.375}% 0.5 -> 0.375
+  \ruby{韋}{い}\ruby{編}{へん}\ruby{三}{さん}\ruby{絶}{ぜつ}}
+\end{LTXexample}
+
+\paragraph{3.3.4節}
+3.61図(両側ルビ)は未サポートにより省略
+
+\newpage
+\paragraph{3.3.5節 モノルビ}\ 
+\begin{LTXexample}[pos=t]
+\obeylines
+3.62 の\ruby{葯}{やく}に
+3.63 版面の\ruby{地}{ち}に\quad 版面の\ruby[kata]{地}{ち}に
+% 横組肩つきはしないが,現状では縦組未サポートだし,仕方ないね
+3.65 の\ruby{砦}{とりで}に
+{\ltjsetruby{kata}%
+3.66上 の\ruby{旬}{しゆん}に\quad 後\ruby{旬}{しゆん}に
+3.66下 の\ruby{旬}{しゆん}又\quad 後\ruby{旬}{しゆん}又}
+\end{LTXexample}
+
+
+\paragraph{3.3.6節 グループルビ}\ 
+\begin{LTXexample}[pos=t]
+\obeylines
+3.67 は\ruby{冊子体}{コーデツクス}と
+3.68 \ruby{模型}{モデル}\quad \ruby{利用許諾}{ライセンス}
+% 両端を揃える流儀
+3.69 {\ltjsetruby{stretchruby=010}%
+     \ruby{模型}{モデル}\quad \ruby{利用許諾}{ライセンス}}
+% ルビが極端に短い場合
+3.70 \ruby{なげきの聖母像}{ピエタ}\quad% ルビ全角まで許容
+     \ruby[maxmargin=0.75]{なげきの聖母像}{ピエタ}% ルビ全角1.5倍まで
+% ルビが長い場合
+3.71 \ruby{顧客}{クライアント}\quad \ruby{境界面}{インターフエース}
+3.72 {\ltjsetruby{stretch=010, stretchhead=010, stretchend=010}% はみ出さない流儀
+     \ruby{顧客}{クライアント}\quad \ruby{境界面}{インターフエース}}
+\end{LTXexample} 
+
+\newpage
+\paragraph{3.3.7節 熟語ルビ}\ 
+\begin{LTXexample}[pos=t]
+\obeylines
+3.73 \ruby{杞|憂}{き|ゆう}\quad \ruby{畏|怖}{い|ふ}\quad%
+     \ruby[kata]{杞|憂}{き|ゆう}\quad \ruby[kata]{畏|怖}{い|ふ}
+3.74 の\ruby{流|儀}{りゆう|ぎ}を\quad   の\ruby{無|常}{む|じよう}を\quad%
+     の\ruby{成|就}{じよう|じゆ}を\quad の\ruby{紋|章}{もん|しよう}を\quad%
+     の\ruby{象|徴}{しよう|ちよう}を
+% 熟語の構成を考慮した方法は現行ではできない.
+% 行分割はできるのだが,「他の漢字にルビ全角までかかって良い」は難しい.
+3.75 {\ltjsetruby{kata}%
+     の\ruby{流|儀}{りゆう|ぎ}を\quad   の\ruby{無|常}{む|じよう}を\quad%
+     の\ruby{成|就}{じよう|じゆ}を\quad の\ruby{紋|章}{もん|しよう}を\quad%
+     の\ruby{象|徴}{しよう|ちよう}を}
+% モノルビ配置.望ましくない
+3.76× の\ruby{流}{りゆう}\ruby{儀}{ぎ}を\quad の\ruby{無}{む}\ruby{常}{じよう}を\quad%
+
+要調整 3.77\ {\ltjsetruby{stretchhead=121, stretchend=121}% 行頭・行末揃えず
+     \hbox{\vrule\vbox{\hsize=10\zw ああああああああの%
+        \ruby{流|儀}{りゆう|ぎ}がある.}\vrule}\textbf{←なぜ改行できない}\quad%
+     \hbox{\vrule\vbox{\hsize=5\zw ……等の\ruby{無|常}{む|じよう}を}\vrule}}
+\end{LTXexample} 
+
+\paragraph{3.3.8節 ルビはみ出し}\ 
+\begin{LTXexample}[pos=t]
+\obeylines
+3.78 \ruby{人}{ひと}は\ruby{死}{し}して\ruby{名}{な}を\ruby{残}{のこ}す
+% 現在の自動設定の仕様では「脚」の前が四分だけ「要件」の例より空く
+3.79 漢字の部首には\ruby{偏}{へん}・\ruby{冠}{かんむり}・\ruby{脚}{きやく}・%
+     \ruby{旁}{つくり}がある
+3.79 漢字の部首には\ruby{偏}{へん},\ruby{冠}{かんむり},\ruby{脚}{きやく},%
+     \ruby{旁}{つくり}がある
+\end{LTXexample}
+\begin{LTXexample}[pos=t]
+\obeylines
+% もちろん手動で進入量を指定すれば話は別
+3.79 漢字の部首には\ruby{偏}{へん}・\ruby{冠}{かんむり}・\ruby[pre=1]{脚}{きやく}・%
+     \ruby{旁}{つくり}がある
+3.79 漢字の部首には\ruby{偏}{へん},\ruby{冠}{かんむり},\ruby[pre=1]{脚}{きやく},%
+     \ruby{旁}{つくり}がある
+3.79 この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を
+3.80 漢字の部首には「\ruby{偏}{へん}」「\ruby{冠}{かんむり}」「\ruby{脚}{きやく}」%
+「\ruby{旁}{つくり}」がある
+3.80 この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を
+3.81× に\ruby{暁}{あかつき}の\kern-1\zw の\ruby{趣}{おもむき}を
+3.82 に\ruby{暁}{あかつき}の\ruby{趣}{おもむき}を
+
+% 漢字にルビを2分まで掛けても良い流儀
 {%
   \ltjsetparameter{rubypostintrusion={`好,0.5}}
   \ltjsetparameter{rubypostintrusion={`具,0.5}}
   \ltjsetparameter{rubypostintrusion={`材,0.5}}
-3,83 この\ltjruby{\噂}{うわさ}の好きな人は\ltjruby{懐}{ふところ}ぐあいもよく、\ltjruby{檜}{ひのき}を
-3.83 この\ltjruby{\噂}{うわさ}好きな人は\ltjruby{懐}{ふところ}具合もよく、\ltjruby{檜}{ひのき}材を
+3.83 この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を
+3.83 この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を
 }
+% 平仮名にもルビを掛けない流儀
 {\catcode`\<12%
   \makeatletter\count@="3040\loop\relax\ifnum \count@<"30A0%
   \ltjsetparameter{rubypreintrusion={\the\count@,0}, %
     rubypostintrusion={\the\count@,0}}%
   \advance\count@1 \repeat
-3.84 この\ltjruby{\噂}{うわさ}の好きな人は\ltjruby{懐}{ふところ}ぐあいもよく、\ltjruby{檜}{ひのき}を
-3.84 この\ltjruby{\噂}{うわさ}好きな人は\ltjruby{懐}{ふところ}具合もよく、\ltjruby{檜}{ひのき}材を
+3.84 この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を
+3.84 この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を
 }
-要調整3.85\ {\notalign%この図では揃えない
-\hbox{\vrule\vbox{\hsize=15\zw% なぜ行末形にならない!
-あああああああああああああの\ltjruby{徑}{こみち}\penalty-1000をあああああああ%
-あああああああああああああああああいの\ltjruby{徑}{こみち}ああ}\vrule}}%
-\textbf{なぜ行末形にならない}
-
-3.86\ %
+\end{LTXexample}
+\begin{LTXexample}[pos=t]
+\obeylines
+3.85\ {\ltjsetruby{stretchhead=121, stretchend=121}% 行頭・行末揃えず
 \hbox{\vrule\vbox{\hsize=15\zw
-ああああああああああああの\ltjruby{徑}{こみち}をあああああああ%
-あああああああ\ltjruby{徑}{こみち}を}\vrule}
-
-3.87\ %
-\hbox{\vrule\vbox{\hsize=15\zw%
-ああああああああああああの\ltjruby{飾り}{アクセサリー}等あああああああ%
-あああああああああああああああ共\ltjruby{飾り}{アクセサリー}あ.}\vrule}
+ \hskip9.5\zw……の\ruby{徑}{こみち}を……%
+\hskip9\zw……の\ruby{徑}{こみち}を……}\vrule}}
+3.86\ \hbox{\vrule\vbox{\hsize=15\zw
+ \hskip10\zw……の\ruby{徑}{こみち}を……%
+\hskip9\zw……の\ruby{徑}{こみち}を……}\vrule}
+3.87\  \hbox{\vrule\vbox{\hsize=15\zw
+ \hskip8\zw……共\ruby{飾り}{アクセサリー}等……%
+\hskip9\zw……共\ruby{飾り}{アクセサリー}等……}\vrule}
+\end{LTXexample}
 
 
 \paragraph{圏点の例(常用漢字表前書きより)}
 この表は,法令,公⽤⽂書,新聞,雑誌,放送など,⼀般の社会⽣活におい%
 て\kenten[kenten=﹅]{現代の国語を書き表す}場合の\kenten{漢字使⽤の⽬安を⽰す}ものである。
 
-\newpage
-{\Large 以下は要調整}
-
-\paragraph{F.1--2節}\ \par
-
-F.01 {\kata\ltjruby{治|癒}{ち|ゆ}\quad\ltjruby{模|索}{も|さく}\quad%
-\ltjruby{遷|移}{せん|い}\quad\ltjruby{混|沌}{こん|とん}}
-F.01中 \ltjruby{治|癒}{ち|ゆ}\quad\ltjruby{模|索}{も|さく}\quad%
-\ltjruby{遷|移}{せん|い}\quad\ltjruby{混|沌}{こん|とん}
-
-F.02 \ltjruby{橋|頭|堡}{きよう|とう|ほ}
-
-F.03 {\kata\ltjruby{凝|視}{ぎよう|し}\quad\ltjruby{調|理|師}{ちよう|り|し}\quad%
-\ltjruby{思|春|期}{し|しゆん|き}\quad\ltjruby{管|状|花}{かん|じよう|か}\quad%
-\ltjruby{蒸|気|船}{じよう|き|せん}}
-F.03 \ltjruby{凝|視}{ぎよう|し}\quad\ltjruby{調|理|師}{ちよう|り|し}\quad%
-\ltjruby{思|春|期}{し|しゆん|き}\quad\ltjruby{管|状|花}{かん|じよう|か}\quad%
-\ltjruby{蒸|気|船}{じよう|き|せん}
-
-F.04 {\kata\ltjruby{未|熟}{み|じゆく}\quad\ltjruby{法|華|経}{ほ|け|きよう}\quad%
-\ltjruby{顕|微|鏡}{けん|び|きよう}\quad\ltjruby{課|徴|金}{か|ちよう|きん}\quad%
-\ltjruby{古|戦|場}{こ|せん|じよう}}
-F.04 \ltjruby{未|熟}{み|じゆく}\quad\ltjruby{法|華|経}{ほ|け|きよう}\quad%
-\ltjruby{顕|微|鏡}{けん|び|きよう}\quad\ltjruby{課|徴|金}{か|ちよう|きん}\quad%
-\ltjruby{古|戦|場}{こ|せん|じよう}
-
-F.05 の\ltjruby{峻|別}{しゆん|べつ}は
-
-F.06以降は未チェック
-
+\subparagraph{「﹅」の大きさを親文字の0.33倍にした例}
+この表は,法令,公⽤⽂書,新聞,雑誌,放送など,⼀般の社会⽣活におい%
+て\kenten[size=0.33, kenten=﹅]{現代の国語を書き表す}場合の\kenten{漢字使⽤の⽬安を⽰す}ものである。
 \end{document}
diff --git a/luatexja-ruby.pdf b/luatexja-ruby.pdf
deleted file mode 100644 (file)
index abfe979..0000000
Binary files a/luatexja-ruby.pdf and /dev/null differ
index cddaddc..22c7ebf 100644 (file)
 
 %%%%%%%% TeX command
 \protected\def\ltjruby{\@ifnextchar[\ltj@@ruby{\ltj@@ruby[]}}%]
-\let\ruby=\ltjruby
+\AtBeginDocument{\ifdefined\ruby\else\let\ruby=\ltjruby\fi}
 \def\ltj@@ruby[#1]#2#3{{% #1: option #2: 親文字群,#3: ルビ文字列群,共に| 区切り
   \setkeys[ltj]{ruby}{#1}%
   \directlua{ruby_tmplist_r = \string{\string}; ruby_tmplist_p = \string{\string}}%
 %% ・
 \ltjsetparameter{rubypreintrusion={`・,1}, 
   rubypostintrusion={`・,1}}
+%% 段落インデント部分
+\ltjsetparameter{rubypreintrusion={-1,1}}
 
 \setkeys[ltj]{ruby}{
-  pre = -1, post = -1, mode = 1, 
+  pre=-1, post=-1, mode=1, 
   stretchruby={1}{2}{1}, stretch = {1}{2}{1},
-  stretchhead = {0}{1}{1}, stretchend = {1}{1}{0},
-  maxmargin=0.5, size = 0.5, intergap=0, rubysmash = false,
+  stretchhead={0}{1}{1}, stretchend={1}{1}{0},
+  maxmargin=0.5, size=0.5, intergap=0, rubysmash=false,
   kenten=\ltjalchar`•, fontcmd=\relax
 }
 
index 99fcd66..eb01747 100644 (file)
@@ -941,10 +941,13 @@ do
         local lp, par_indented, lpi, lps  = head, 'boxbdd', getid(head), getsubtype(head)
         while lp and ((lpi==id_whatsit and lps~=sid_user) 
                       or ((lpi==id_hlist) and (lps==3))) do
-           if (lpi==id_hlist) and (lps==3) then par_indented = 'parbdd' end
+           if (lpi==id_hlist) and (lps==3) then 
+               Np.char, par_indented = 'parbdd', 'parbdd'
+               Np.width = getfield(lp, 'width')
+            end
            lp=node_next(lp); lpi, lps = getid(lp), getsubtype(lp) end
         return lp, node_tail(head), par_indented
-      else 
+      else
         return head, nil, 'boxbdd'
       end
    end
index b9ebe67..2368b42 100644 (file)
@@ -501,12 +501,16 @@ local function pre_high(ahead)
          local nv = getfield(n, 'value')
          max_allow_pre = has_attr(nv, attr_ruby_maxprep) or 0
          local atr = has_attr(n, attr_ruby) or 0
-         if atr >0 then 
-            -- 直前のルビで intrusion がおこる可能性あり.
-            -- 前 run のデータが残っていればそれを使用,
-            -- そうでなければ行中形のデータを利用する
-            local op = old_break_info[atr] or post_intrusion_backup
-            max_allow_pre = max(0, max_allow_pre - op)
+         if max_allow_pre < 0 then
+            if atr>0 then
+               -- 直前のルビで intrusion がおこる可能性あり.
+               -- 前 run のデータが残っていればそれを使用,
+               -- そうでなければ行中形のデータを利用する
+               local op = old_break_info[atr] or post_intrusion_backup
+               max_allow_pre = max(0, -max_allow_pre - op)
+            else
+               max_allow_pre = -max_allow_pre
+            end
          end
          post_intrusion_backup = 0
          max_allow_post = has_attr(nv, attr_ruby_maxpostp) or 0
@@ -585,28 +589,6 @@ do
    end
 end
 
--- local function is_zero_parfillskip(h,n)
---    if getid(n)==id_glue then
---       if getsubtype(n)==15 then
---      local ns = getfield(n, 'spec')
---      local n_width = getfield(ns, 'width')
---      if getfield(h, 'glue_sign')==1 
---         and getfield(h, 'glue_order') == getfield(ns, 'stretch_order') then
---            n_width = n_width 
---               + round(getfield(h, 'glue_set')*getfield(ns, 'stretch'))
---      elseif getfield(h, 'glue_sign')==2
---         and getfield(h, 'glue_order') == getfield(ns, 'shrink_order') then
---            n_width = n_width 
---               - round(getfield(h, 'glue_set')*getfield(n,s 'shrink'))
---      end
---      n = node_next(n) -- rightskip 未完
---      return (n_width <= 0)
---       else return false
---       end
---    else return false
---    end
--- end
-
 local function post_high_break(head)
    local rs = {}   -- rs: sequence of ruby_nodes, 
    local rw = nil  -- rw: main whatsit
@@ -625,20 +607,6 @@ local function post_high_break(head)
            setfield(h, 'head', post_lown(rs, rw, cmp, getlist(h)))
            for i = 2, #rs do rs[i] = nil end -- rs[1] is set by the next statement
            rs[1], rw = ha, nil; ha = node_next(ha)
-        elseif i==2*cmp+2 then
-           -- local par_not_end = true
-           -- local hn = node_next(ha)
-           -- if hn and getid(hn)==id_penalty and getfield(hn, 'penalty')==10000 then
-           --    local hm = node_next(hn)
-           --    if is_zero_parfillskip(h,hm) then
-           --       par_not_end = false
-           --    end
-           -- end
-           -- if par_not_end then
-              rs[#rs+1] = ha; ha = node_next(ha)
-           -- else
-           --   setfield(h, 'head', node_remove(getlist(h), ha)); break
-           -- end
         elseif i>=3 then 
            rs[#rs+1] = ha; ha = node_next(ha)
         elseif i==2 then 
@@ -700,18 +668,32 @@ do
          local lpv = getfield(lp, 'value')
          local x = node_next(node_next(lpv))
          Np.last_char = luatexja.jfmglue.check_box_high(Np, getlist(x), nil)
-         if Nq.id ~=id_pbox_w and  type(Nq.char)=='number' then
-           -- Nq is a JAchar
-            if has_attr(lpv, attr_ruby_maxprep) < 0 then -- auto
-               local p = round((ltjs.table_current_stack[RIPRE + Nq.char] or 0)
-                                  *has_attr(lpv, attr_ruby))
-               if has_attr(lpv, attr_ruby_mode)%2 == 0 then -- intrusion 無効
-                  p = 0
+         if Nq.id ~=id_pbox_w then
+            if type(Nq.char)=='number' then
+               -- Nq is a JAchar
+               if has_attr(lpv, attr_ruby_maxprep) < 0 then -- auto
+                  local p = round((ltjs.table_current_stack[RIPRE + Nq.char] or 0)
+                                     *has_attr(lpv, attr_ruby))
+                  if has_attr(lpv, attr_ruby_mode)%2 == 0 then -- intrusion 無効
+                     p = 0
+                  end
+                  set_attr(lpv, attr_ruby_maxprep, -p)
+               end
+               if Nq.prev_ruby then
+                  set_attr(lp, attr_ruby, Nq.prev_ruby)
+               end
+            elseif has_attr(lpv, attr_ruby_maxprep) < 0 then -- auto
+               if Nq.char == 'parbdd' then
+                  local p = round((ltjs.table_current_stack[RIPRE-1] or 0)
+                                     *has_attr(lpv, attr_ruby))
+                  p = min(p, Nq.width)
+                 if has_attr(lpv, attr_ruby_mode)%2 == 0 then -- intrusion 無効
+                     p = 0
+                  end
+                  set_attr(lpv, attr_ruby_maxprep, p)
+               else
+                  set_attr(lpv, attr_ruby_maxprep, 0)
                end
-               set_attr(lpv, attr_ruby_maxprep, p)
-            end
-            if Nq.prev_ruby then
-               set_attr(lp, attr_ruby, Nq.prev_ruby)
             end
          elseif has_attr(lpv, attr_ruby_maxprep) < 0 then -- auto
             set_attr(lpv, attr_ruby_maxprep, 0)
@@ -759,9 +741,6 @@ do
               if has_attr(nqnv, attr_ruby_mode)%4 >= 2 then
                  set_attr(nqnv, attr_ruby_maxprep, 0)
               end
-              --if Np and Np.id == id_pbox_w then
-               --  set_attr(nqnv, attr_ruby_maxprep, 0)
-              --end
            end
          end
         return true