OSDN Git Service

Updated test14-ruby.tex (test and the manual of luatexja-ruby.sty)
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Wed, 12 Feb 2014 11:12:39 +0000 (20:12 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Wed, 12 Feb 2014 11:12:39 +0000 (20:12 +0900)
src/addons/luatexja-ruby.sty
src/ltj-ruby.lua
src/patches/lltjdefs.sty
test/test14-ruby.pdf
test/test14-ruby.tex

index 6df9a0b..c104576 100644 (file)
 %% attr_ruby_maxmargin
 %% attr は sp 単位だが,ユーザーは親文字全角単位で指定
 \ltj@@rkeydef{maxmargin}
+
+\ltj@@rkeydef{kenten}%% 圏点文字
+
 \savekeys[ltj]{ruby}{%
   mode, intrusionpre, intrusionpost, 
   stretchhead, stretchend, stretch, stretchruby, 
-  maxmargin, rubysize, 
+  maxmargin, rubysize, kenten, 
 }
 
 %%%%%%%% setkeys の別名
 %% ルビと親文字の大きさの比
 \ltj@@rkeydef{rubysize}
 
+% 中つき用簡易設定.
+\define@key[ltj]{ruby}{kata}[none]{\setkeys[ltj]{ruby}{mode=1, stretch=121, stretchruby=121}}
 % 肩つき用簡易設定.
-\define@key[ltj]{ruby}{kata}[none]{\setkeys[ltj]{ruby}{mode=9,stretchruby=001}}
+\define@key[ltj]{ruby}{kata}[none]{\setkeys[ltj]{ruby}{mode=9, stretch=121, stretchruby=001}}
 % 拡張肩つき用簡易設定.
-\define@key[ltj]{ruby}{ekata}[none]{\setkeys[ltj]{ruby}{stretch=001,stretchruby=001}}
+\define@key[ltj]{ruby}{ekata}[none]{\setkeys[ltj]{ruby}{%
+  intrusionpre=0, mode=1, stretch=001,stretchruby=001}}
 
 %%%%%%%% 補助関数
 
   \directlua{table.insert(ruby_tmplist_p, luatexja.ruby.cpbox())}%
 }
 
+\protected\def\ltjkenten{\@ifnextchar[\ltj@@kenten{\ltj@@kenten[]}}%]
+\let\kenten=\ltjkenten
+\def\ltj@@kenten[#1]#2{{%
+  \setkeys[ltj]{ruby}{#1, stretchruby=101}%
+  \@tfor\ltj@@kenten@temp:=#2\do{\ltj@@ruby[]{\ltj@@kenten@temp}{\ltj@@rubyip@kenten}}%
+}}
+
 % 初期値.要調整
 %% ひらがな
 \count@="3040\loop\relax\ifnum \count@<"30A0
   rubypostintrusion={`・,1}}
 
 \setkeys[ltj]{ruby}{
-  maxmargin=0.5, 
   stretchruby={1}{2}{1}, stretch = {1}{2}{1},
   stretchhead = {0}{1}{1}, stretchend = {1}{1}{0},
-  intrusionpre = -1, intrusionpost = -1, 
-  mode = 1, rubysize = 0.5
+  intrusionpre = -1, intrusionpost = -1, maxmargin=0.5, 
+  mode = 1, rubysize = 0.5, kenten=\ltjalchar`•
 }
 
 \endinput
\ No newline at end of file
index d0f8115..42c4074 100644 (file)
@@ -440,6 +440,14 @@ local function pre_low_cal_box(w, cmp)
    return coef
 end
 
+
+local function first_whatsit(n) -- n 以後で最初の whatsit
+   for h in Dnode.traverse_id(id_whatsit, n) do
+      return h
+   end
+   return nil
+end
+
 -- ノード追加
 local function pre_low_app_node(head, w, cmp, coef, ht, dp)
    -- メインの node list 更新
@@ -471,41 +479,37 @@ local function pre_low_app_node(head, w, cmp, coef, ht, dp)
    end
    tex.setattribute(attr_ruby, -0x7FFFFFFF)
    setfield(w, 'user_id', RUBY_POST)
-   return head, node_next(nt)
+   return head, first_whatsit(node_next(nt))
 end
 
 local function pre_high(ahead)
    if not ahead then return ahead end
    local head = to_direct(ahead)
    post_intrusion_backup = 0
-   local n = head
+   local n = first_whatsit(head)
    while n do
-      if getid(n) == id_whatsit then
-         if getsubtype(n) == sid_user and getfield(n, 'user_id') == RUBY_PRE then
-            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)
-           end
-           post_intrusion_backup = 0
-            max_allow_post = has_attr(nv, attr_ruby_maxpostp) or 0
-            max_margin = has_attr(nv, attr_ruby_maxmargin) or 0
-           local coef = pre_low_cal_box(n, getfield(nv, 'value'))
-           local s = node_tail(nv) --ルビ文字
-           head, n = pre_low_app_node(
-              head, n, getfield(nv, 'value'), coef, 
-               getfield(s, 'height'), getfield(s, 'depth')
-           )
-         else 
-            n = node_next(n)
+      if getsubtype(n) == sid_user and getfield(n, 'user_id') == RUBY_PRE then
+         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)
          end
+         post_intrusion_backup = 0
+         max_allow_post = has_attr(nv, attr_ruby_maxpostp) or 0
+         max_margin = has_attr(nv, attr_ruby_maxmargin) or 0
+         local coef = pre_low_cal_box(n, getfield(nv, 'value'))
+         local s = node_tail(nv) --ルビ文字
+         head, n = pre_low_app_node(
+            head, n, getfield(nv, 'value'), coef, 
+            getfield(s, 'height'), getfield(s, 'depth')
+         )
       else
-         n = node_next(n)
+         n = first_whatsit(node_next(n))
       end
    end
    return to_node(head)
@@ -572,27 +576,27 @@ 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 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, 
@@ -613,19 +617,19 @@ local function post_high_break(head)
            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 = hn
-           else
-              setfield(h, 'head', node_remove(getlist(h), ha)); break
-           end
+           -- 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 
index 3fbc353..9d04afe 100644 (file)
@@ -31,7 +31,7 @@
 \DeclareFontShape{JY3}{gt}{bx}{n}{<-> ssub*gt/m/n}{}
 
 %fontencoding{JT3}\selectfont
-\fontencoding{JY3}\selectfont\adjustbaseline
+\kanjiencoding{JY3}\selectfont\adjustbaseline
 
 \DeclareTextFontCommand{\textmc}{\mcfamily}
 \DeclareTextFontCommand{\textgt}{\gtfamily}
index f877e99..049c98b 100644 (file)
Binary files a/test/test14-ruby.pdf and b/test/test14-ruby.pdf differ
index cf76953..a803de0 100644 (file)
@@ -1,7 +1,7 @@
 %#! luajitlatex
 %%% a test of ruby.
 \documentclass[b5paper,10pt]{ltjsarticle}
-\usepackage{fontspec,luacode,luatexja-otf,amsmath}
+\usepackage{luatexja-otf,amsmath,fontspec}
 \usepackage{unicode-math}
 \setmathfont{XITS Math}
 \setmainfont[Ligatures=TeX]{TeX Gyre Termes}
@@ -10,7 +10,6 @@
 \usepackage{luatexja-ruby,showexpl,booktabs}
 \lstset{preset=\huge,basicstyle=\ttfamily}
 \fboxsep=0mm
-%\usepackage{lua-visual-debug}
 
 \def\kata{\ltjsetruby{kata}} 
 % 肩つきルビ用簡易設定.グループルビでは使用しないこと
 \DeclareFontShape{JY3}{mc}{mc}{n}{<-> [0.92487] 
   psft:Ryumin-Light:extend=0.67;jfm=ujisc33}{}
 
-\title{ルビ実装のサンプル}
+\title{\texttt{luatexja-ruby.sty}}
 \begin{document}
+\catcode`\<=13
+\def<#1>{{\normalfont\rm\itshape$\langle$#1\/$\rangle$}}
 %\fontsize{13.19873}{15}\selectfont%
 
 \maketitle
 
+\texttt{luatexja-ruby.sty} は,\LuaTeX-jaの機能を利用してルビの組版処理を行う追加パッケージである.
 \section{使い方}
+パッケージ読み込みは,\verb+\usepackage{luatexja-ruby}+ で良い.
+plain \LuaTeX でのロードはまだサポートしておらず,
+\LaTeXe のみサポート.
+
+\subsection{用語}
+「進入(intrusion)」「突出(protrusion)」という用語は,ZRさんによるpxrubricaパッケージでの用法に準ずる.
+
+\begin{quotation}
+進入あり:と\ltjruby{暁}{あかつき}の
+
+進入なし:{\setkeys[ltj]{ruby}{mode=0}と\ltjruby{暁}{あかつき}の}
+
+突出あり:{\setkeys[ltj]{ruby}{stretch={1}{2}{1}}\ltjruby{聴衆}{ちようしゆう}}
+
+突出なし:{\setkeys[ltj]{ruby}{stretch={0}{2}{0}}\ltjruby{聴衆}{ちようしゆう}}
+\end{quotation}
+
+\subsection{命令}
+\paragraph{\tt\textbackslash ltjruby}
+ルビ出力用命令の本体.\verb+\ruby+ という別名を定義している.
+\begin{quote}
+\tt \textbackslash ltjruby[<option>]\{親|文|字\}\{おや|も|じ\}
+\end{quote}
+のように使用する.
+
+第2・第3引数内の「\verb+|+」はグループの区切りを表す.グループの数は両者で一致しなければならず,
+\verb+\ltjruby{紋章}{もん|しよう}+ のようにはできない.
 \begin{itemize}
-\item パッケージ読み込み:\verb+\usepackage{luatexja-ruby}+ のみ.\LaTeXe のみサポート.
-\item 命令:
-\begin{itemize}
-\item \verb+\ltjruby[option]{親|文|字}{おや|も|じ}+
-\item \verb|\ltjsetruby{option}|
-\end{itemize}
-\item \verb|\ltjsetparameter|に追加のキー
-\begin{itemize}
-\item \verb+rubypreintrusion={<char_code>, <pre_int>}+:ルビ全角単位.
-\verb+<char_code>+ の文字に掛けられる前のルビ文字列の最大長.
-\item \verb+rubypostintrusion={<char_code>, <post_int>}+:ルビ全角単位.
-\end{itemize}
-\item \verb|\ltjsetruby{option}| 他でサポートするオプション:後ろに指定したものが優先
-\begin{itemize}
-\item \verb+mode+:進入処理のモードを表すbit vector.意味はluatexja-ruby.sty参照.
-\item \verb+intrusionpre=<real>+:前進入量指定.ルビ全角単位で指定.
-負の長さは文字種に応じた自動指定を意味.
-\item \verb+intrusionpost=<real>+:後進入量指定.
-\item \verb+stretchhead={left}{middle}{right}+:行頭形でルビ文字の合計長が親文字の合計長より
-長い時に,親文字間に入れる空白の割合.それぞれ0--7の自然数で指定.
-\item \verb+stretchend={left}{middle}{right}+:行末形〜.
-\item \verb+stretch={left}{middle}{right}+:行中形〜.
-\item \verb+stretchruby={left}{middle}{right}+:ルビ文字の方が長い時の空白の割合.
-\item \verb+maxmargin=<real>+:親文字の方がルビより長い時に,ルビの先頭と親文字の先頭に許される
-最大の空白量.親文字全角単位.
-\item \verb+rubysize=<real>+:ルビ文字の親文字に対する大きさ.
-\end{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に「熟語の構成,さらにその熟語の前後にくる文字の種類を考慮して配置する方法」として
+別の方法を解説しているが,こちらの方法は現時点ではサポートしない.
+
 \end{itemize}
-\section{TODO}
+
+
+さて,<option>には以下の内容をkey-valueリストで指定可能である:
+\begin{description}
+\def\makelabel#1{\tt#1}
+\item[intrusionpre=<real>] 前進入許容量をルビ全角単位で指定.
+負の長さを指定した場合は,ルビの状況や直前の文字に応じた自動指定を意味する.
+デフォルト値は負(つまり,自動指定).
+
+\item[intrusionpost=<real>] 同様に,後進入許容量を指定する.デフォルト値は負(つまり,自動指定).
+
+\item[mode] 進入処理のモードを表すbit vector.下位2\,bitは,\texttt{intrusionpre}や
+\texttt{intrusionpost}が負であるの場合にしか効力を発揮しない.デフォルト値は$0001_2 = 1$.
+\begin{description}
+ \item[bit 0] 進入を無効にするならば0,有効にするならば1.
+ \item[bit 1] 前進入許容量$B$と後進入許容量$A$が異なった場合,
+そのまま処理する場合は0,小さい方に揃えるならば1.
+ \item[bit 2--3] ルビ文字の突出量$x$から実際の前進入量$b$,後進入量$a$の計算方法を指定する.
+親文字の文字数が$k+1$,親文字の前に入る空白量・間の空白量・後ろの空白量の比が$p:q:r$のとき,
+\begin{description}
+ \item[00] $b=\min\{B, xp/[p+kq+r]\}$, \ $a=\min\{A, xr/[p+kq+r]\}$
+ \item[01] $b=\min(B, x)$, \ $a=\min[A, \max(x-b,0)]$
+ \item[10] $a=\min(A, x)$, \ $b=\min[B, \max(x-a,0)]$
+ \item[11] $M=\min(B,A)$とおく.もし$x\le 2M$ならば$b=a=x/2$.そうでなければ
+\[
+ b=\min\left(B, \frac x2 + \frac{(x-2M)p}{p+kp+r}\right),\qquad 
+ a=\min\left(A, \frac x2 + \frac{(x-2M)r}{p+kp+r}\right)
+\]
+\end{description}
+
+組み方の具体例を実際に示す.例示のため,平仮名にはルビが1字まで,「立」にはルビを
+0.5字分までかけてよいことにしている.
+\begin{description}
+\item[00]{\setkeys[ltj]{ruby}{mode=1}%
+\ltjsetparameter{rubypreintrusion={`立,0.5}, rubypostintrusion={`立,0.5}}%
+は\ltjruby{美}{うつく}しい
+  \quad は\ltjruby{聴衆}{ちようしゆう}と\quad
+は\ltjruby{暁}{あかつき}立\quad
+は\ltjruby{聴衆}{ちようしゆう}立\par}
+\item[01]{\setkeys[ltj]{ruby}{mode=5}%
+\ltjsetparameter{rubypreintrusion={`立,0.5}, rubypostintrusion={`立,0.5}}%
+は\ltjruby{美}{うつく}しい
+  \quad は\ltjruby{聴衆}{ちようしゆう}と\quad
+は\ltjruby{暁}{あかつき}立\quad
+は\ltjruby{聴衆}{ちようしゆう}立\par}
+\item[10]{\setkeys[ltj]{ruby}{mode=9}%
+\ltjsetparameter{rubypreintrusion={`立,0.5}, rubypostintrusion={`立,0.5}}%
+は\ltjruby{美}{うつく}しい
+  \quad は\ltjruby{聴衆}{ちようしゆう}と\quad
+は\ltjruby{暁}{あかつき}立\quad
+は\ltjruby{聴衆}{ちようしゆう}立\par}
+\item[11]{\setkeys[ltj]{ruby}{mode=13}%
+\ltjsetparameter{rubypreintrusion={`立,0.5}, rubypostintrusion={`立,0.5}}%
+は\ltjruby{美}{うつく}しい\quad
+は\ltjruby{聴衆}{ちようしゆう}と\quad
+は\ltjruby{暁}{あかつき}立\quad
+は\ltjruby{聴衆}{ちようしゆう}立\par}
+\end{description} 
+
+\end{description}
+\item[stretchruby=\{<left>\}\{<middle>\}\{<right>\}] 親文字の合計長が
+ルビ文字の合計長より長い時に,ルビ文字間に入れる空白の割合であり,それぞれ0--7の自然数で指定する.
+デフォルト値は\ \verb+{1}{2}{1}+ である.
+
+<left>はルビ文字の先頭までの空き量,<middle>はルビ文字間の空き量,<right>はルビ文字の末尾からの
+空き量(の比)を表す.以下が例である.
+\begin{LTXexample}[width=0.3\textwidth]
+\Large
+\ltjruby[stretchruby=123,maxmargin=2]%
+  {◯◯◯◯}{◆◆}
+\end{LTXexample}
+\item[stretch=\{<left>\}\{<middle>\}\{<right>\}]
+行中形でルビ文字の方が長い場合,親文字の前・中・後に入れる空白の割合.
+デフォルト値は\ \verb+{1}{2}{1}+ である.
+\item[stretchhead=\{<left>\}\{<middle>\}\{<right>\}] 行頭形〜.
+デフォルト値は\ \verb+{0}{1}{1}+ である.
+\item[stretchend=\{<left>\}\{<middle>\}\{<right>\}] 行末形〜.
+デフォルト値は\ \verb+{1}{1}{0}+ である.
+
+\item[maxmargin=<real>] 親文字の方がルビより長い時に,ルビの先頭と親文字の先頭,及び
+ルビ末尾と親文字の末尾の間に許される最大の空白量.\emph{親文字全角単位}で指定し,デフォルト値は0.5.
+\item[rubysize=<real>] ルビ文字の親文字に対する大きさ.デフォルト値は0.5.
+
+\medskip
+\item[naka] 以下のオプションを同時に設定する.主に中付きルビを組むときに用いる.
+\begin{verbatim}
+mode=1, stretch=121, stretchruby=121
+\end{verbatim}
+\item[kata] 同様に,肩付きルビ用に \verb+mode=9, stretch=121, stretchruby=001+ を設定.
+\item[ekata] pxrubricaパッケージで言う「拡張肩付き」用に,次を設定する.
+\begin{verbatim}
+intrusionpre=0, mode=1, stretch=001, stretchruby=001
+\end{verbatim}
+\end{description}
+\paragraph{\tt\textbackslash ltjsetruby\{<option>\}}
+<option>の規定値を指定する.デフォルト値は各項目の所で既に説明してあるが,
+\begin{verbatim}
+stretchruby={1}{2}{1}, stretch = {1}{2}{1},
+stretchhead = {0}{1}{1}, stretchend = {1}{1}{0},
+intrusionpre = -1, intrusionpost = -1, maxmargin=0.5, 
+mode = 1, rubysize = 0.5, kenten=\ltjalchar`•
+\end{verbatim}
+である.
+
+\paragraph{\texttt{\textbackslash ltjsetparamater} に追加されるキー}
+\begin{description}
+\item[\textsf{rubypreintrusion}\tt =\{<chr\_code>, <pre\_int>\}]
+文字<chr\_code> に,その\emph{直後}のルビによって掛けられるルビ文字列の最大長をルビ全角単位で指定.
+\item[\textsf{rubypostintrusion}\tt =\{<chr\_code>, <post\_int>\}]
+文字<chr\_code> に,その\emph{直後}のルビによって掛けられるルビ文字列の最大長をルビ全角単位で指定.
+\end{description} 
+デフォルト値は,\textsf{rubypreintrusion},~\textsf{rubypostintrusion}とも
+以下の文字に対しては1,その他の文字については0である:
+\begin{quote}
+ 平仮名(\texttt{U+3040}--\texttt{U+309F}),カギ括弧「」,読点「,」「、」,中黒「・」
+\end{quote}
+
+\section{注意点}
 \begin{itemize}
-\item 熟語ルビの配置が「モノルビの連続」「グループルビ」のどちらかしかない(行分割は可能).
-「一字だけかけても良い」なんてどうやるんだろう.
 \item ルビ文字のはみ出しが繋がらないようにする処理(図3.82)には注意.
 例えば,
 \begin{center}\Large
 \ltjsetparameter{rubypreintrusion={`◆,1}, 
   rubypostintrusion={`◆,1}}
-\ruby{陵}{りよう}◆\ruby{陵}{みささぎ}
+\ltjruby{陵}{りよう}◆\ltjruby{陵}{みささぎ}
 \end{center}
-において,後者の「\ruby{陵}{みささぎ}」のルビが前の「◆」にかかる量は次のように決まる:
+において,後者の「\ltjruby{陵}{みささぎ}」のルビが前の「◆」にかかる量は次のように決まる:
 \begin{enumerate}
-\item 1回目の実行では,行分割前に「\ruby{陵}{りよう}」の後側進入量は前もって知ることはでき
-      ない.なので,「\ruby{陵}{りよう}」は行中形で組まれるものとして
-「\ruby{陵}{みささぎ}」前側進入許容量は
+\item 1回目の実行では,行分割前に「\ltjruby{陵}{りよう}」の後側進入量は前もって知ることはでき
+      ない.なので,「\ltjruby{陵}{りよう}」は行中形で組まれるものとして
+「\ltjruby{陵}{みささぎ}」前側進入許容量は
 \[
  \underbrace{0.5\,\mathrm{zw}}_{\text{元々の許容量}}
 -\underbrace{0.25\,\mathrm{zw}}_{\text{前のルビの後側進入量}}=0.25\,\mathrm{zw}
 \]
-となる.なお,行分割後,「\ruby{陵}{りよう}」が実際に組まれた時に使われた後側進入量は
+となる.なお,行分割後,「\ltjruby{陵}{りよう}」が実際に組まれた時に使われた後側進入量は
 auxファイルに記述される.
-\item 2回目以降の実行では,auxファイルに保存された「\ruby{陵}{りよう}」の後側進入量
-を用いて,「\ruby{陵}{みささぎ}」前側進入許容量を計算する.
+\item 2回目以降の実行では,auxファイルに保存された「\ltjruby{陵}{りよう}」の後側進入量
+を用いて,「\ltjruby{陵}{みささぎ}」前側進入許容量を計算する.
 \end{enumerate}
-なお,auxファイルに保存する際,各 \verb+\ruby+ 命令の呼び出しを識別するキーが必要になるが,
-そのキーとしては単純に「何個目の \verb+\ruby+ 命令か」である.
+なお,auxファイルに保存する際,各 \verb+\ltjruby+ 命令の呼び出しを識別するキーが必要になるが,
+そのキーとしては単純に「何個目の \verb+\ltjruby+ 命令か」である.
 
 \item 実装方法の都合上,ルビの直前・直後・途中で2箇所以上の改行が起きる場合
 (以下のパーツの組み方が出てくる)に対応できない.
@@ -98,29 +253,34 @@ auxファイルに記述される.
 \midrule
 単独1&
 \huge
-\vrule{\color{blue}\gt\ruby[]{流}{りゆう}}\vrule\\
+\vrule{\color{blue}\gt\ltjruby[]{流}{りゆう}}\vrule\\
 単独2&
 \huge
-\vrule{\color{blue}\gt\ruby[]{暢}{ちよう}}\vrule\\
+\vrule{\color{blue}\gt\ltjruby[]{暢}{ちよう}}\vrule\\
 単独$(1+2)$&
 \huge
-\vrule{\color{blue}\gt\ruby[stretch=010]{流|暢}{りゆう|ちよう}}\vrule\\
+\vrule{\color{blue}\gt\ltjruby[stretch=010]{流|暢}{りゆう|ちよう}}\vrule\\
 \bottomrule
 \end{tabular}
 \end{center}
 
-\item 段落最終行の \verb+\parfillskip+ が(伸縮の結果)0\,pt以下であり,かつ
-その直前がルビだった場合,該当のルビは行末形になる.
+\item 段落がルビで終わった場合,そのルビが行末形で組まれることはない.
+これは,段落の「本当の」末尾には \verb+\penalty10000\parfillskip+ があるためで,
+ルビ処理用に作った最後のグルー(下の説明では$g_2$)が消去されないことによる.
+
+\verb+\parfillskip+ の長さ(や,場合によっては \verb+\rightskip+)を実測し,
+それによって処理を変えるのも可能だが,そのようなことはしなかった.
+段落がルビで終わることは普通ない(最低でも句点が続くだろう)と思うからである.
 \end{itemize}
 
 \section{実装の大まかな方法}
 次の例で説明する.
 \begin{LTXexample}
-……を\ruby{流|暢}{りゆう|ちよう}に……
+……を\ltjruby{流|暢}{りゆう|ちよう}に……
 \end{LTXexample}
 
 \begin{enumerate}
-\item \verb|\ruby|コマンド自体は,一旦次のnode listを値とするwhatsit~$W$を作って,
+\item \verb|\ltjruby|コマンド自体は,一旦次のnode listを値とするwhatsit~$W$を作って,
 現在の水平リストへと挿入する(必要ならば\verb|\leavevmode|も実行):
 \[
  \Node{whatsit $w$}{value: 2}\longrightarrow 
@@ -129,23 +289,23 @@ auxファイルに記述される.
  \Node{hlist $s_2$}{「ちよう」}\longrightarrow
  \Node{hlist $p_2$}{「暢」}
 \]
-ここで,最初の$w$の値2は,ルビが2つのパーツ「\ruby{流}{りゆう}」「\ruby{暢}{ちよう}」からなっていることを
+ここで,最初の$w$の値2は,ルビが2つのパーツ「\ltjruby{流}{りゆう}」「\ltjruby{暢}{ちよう}」からなっていることを
 表している.この値を$\mathit{cmp}$とおこう.
 $s_i$達の中の文字は既にルビの大きさである.
 \item \LuaTeX-jaの和文処理グルー挿入処理において,
-whatsit~$W$は,
-「先頭が『流』,最後が『暢』であるようなhboxを\verb|\unhbox|で展開したもの」と扱われる.
+このwhatsit~$W$はまとめて
+「先頭が『流』,最後が『暢』であるようなhboxを \verb|\unhbox| で展開したもの」と扱われる.
 言い換えれば,ルビ部分を無視した単なる「流暢」という和文文字の並びとして扱われる\footnote{「流」「暢」の間のグルーは既に入っている,と扱われる.}.
 次のサンプルを参照
 \begin{LTXexample}
 \leavevmode\hbox{.}A\\
 %↑xkanjiskip 
-\ruby{.}{}A
+\ltjruby{.}{}A
 %↑2分
 \end{LTXexample}
 \item 和文処理グルーの挿入が終わった後で,可動グループルビのためのノードの挿入に入る.
 \begin{enumerate}
-\item $W$の周辺は次のようなノード列になる.
+\item $W$ã\81®å\89\8då¾\8cã\81«$2\mathit{cmp}+1=5$å\80\8bã\81®ã\83\8eã\83¼ã\83\89ã\81\8cæ\8c¿å\85¥ã\81\95ã\82\8cï¼\8c$W$ã\81®å\91¨è¾ºã\81¯æ¬¡ã\81®ã\82\88ã\81\86ã\81ªã\83\8eã\83¼ã\83\89å\88\97ã\81«ã\81ªã\82\8bï¼\8e
 \begin{align*}
  (\text{other nodes})&\longrightarrow
  \Node{glue $g_0$}{}\longrightarrow \Node{whatsit~$W$}{元からある}\longrightarrow \Node{rule $r_1$}{}
@@ -153,7 +313,6 @@ whatsit~$W$は,
  \Node{glue $g_1$}{}\longrightarrow \Node{rule $r_2$}{}\longrightarrow 
  \Node{glue $g_2$}{}\longrightarrow (\text{other nodes})
 \end{align*}
-$W$の前後に$2\mathit{cmp}+1=5$個のノードが挿入される.
 
 \item このようにノードを挿入する目的は,\TeX の行分割処理自体に影響を加えずに可動グループルビ
 を実現させることにある.
@@ -164,7 +323,7 @@ $W$の前後に$2\mathit{cmp}+1=5$個のノードが挿入される.
 \Node{rule $r_2$}{}\longrightarrow 
  \Node{glue $g_2$}{}\longrightarrow (\text{other nodes})
 \end{gather*}
-のようになったとしたら,「\ruby{流}{りゆう}」「\ruby{暢}{ちよう}」の間で行分割が起きた,ということがわかり,
+のようになったとしたら,「\ltjruby{流}{りゆう}」「\ltjruby{暢}{ちよう}」の間で行分割が起きた,ということがわかり,
 $g_i$,~$r_i$達のノードを適切に置き換えればよい(後で詳しく説明する).
 
 \item なお,$r_i$達の高さ・深さは組み上がった後のそれである.
@@ -178,27 +337,27 @@ $g_i$,~$r_i$達の幅は,以下の対応に沿って算出する.
 \midrule
 $n_1$&行末1グループ&
 \huge
-\fbox{を}{\color{blue}\gt\ruby[intrusionpre=1,mode=5,stretch=110]{流}{りゆう}}\vrule
+\fbox{を}{\color{blue}\gt\ltjruby[intrusionpre=1,mode=5,stretch=110]{流}{りゆう}}\vrule
 &
 $g_0\rightarrow W\rightarrow r_1$\\
 $n_2$&行末2グループ&
 \huge
-\fbox{を}{\color{blue}\gt\ruby[intrusionpre=1,mode=1,stretch=110]{流|暢}{りゆう|ちよう}}\vrule
+\fbox{を}{\color{blue}\gt\ltjruby[intrusionpre=1,mode=1,stretch=110]{流|暢}{りゆう|ちよう}}\vrule
 &
 $g_0\rightarrow W\rightarrow r_1\rightarrow g_2 \rightarrow r_2$\\
 $n_3$&行頭1グループ&
 \huge
-\vrule{\color{blue}\gt\ruby[intrusionpost=1,mode=1,stretch=011]{暢}{ちよう}}\fbox{に}
+\vrule{\color{blue}\gt\ltjruby[intrusionpost=1,mode=1,stretch=011]{暢}{ちよう}}\fbox{に}
 &
 $r_2\rightarrow g_2$\\
 $n_4$&行頭2グループ&
 \huge
-\vrule{\color{blue}\gt\ruby[intrusionpost=1,mode=1,stretch=011]{流|暢}{りゆう|ちよう}}\fbox{に}
+\vrule{\color{blue}\gt\ltjruby[intrusionpost=1,mode=1,stretch=011]{流|暢}{りゆう|ちよう}}\fbox{に}
 &
 $W\rightarrow r_1\rightarrow g_2 \rightarrow r_2\rightarrow g_2$\\
 $n_5$&行中&
 \huge
-\fbox{を}{\color{blue}\gt\ruby[intrusionpost=0.5,intrusionpre=0.5,mode=1]{流|暢}{りゆう|ちよう}}\fbox{に}
+\fbox{を}{\color{blue}\gt\ltjruby[intrusionpost=0.5,intrusionpre=0.5,mode=1]{流|暢}{りゆう|ちよう}}\fbox{に}
 &
 $g_0\rightarrow W\rightarrow r_1\rightarrow g_2 \rightarrow r_2\rightarrow g_2$\\
 
@@ -225,7 +384,9 @@ $g_i$,~$r_i$達の幅が求まる.
  \Node{vlist $n_5$}{中}
 \]
 に置き換えておく.
+
 \end{enumerate}
+
 \item \LuaTeX の行分割処理を普通に行う.
 \item 行分割の結果に従って,$g_i$,~$r_i$達を適切に置換する.
 
@@ -268,117 +429,86 @@ $r_2$,~$g_2$を行Bから除去・メモリ解放し,代わりに$n_3$を行B
 \end{enumerate}
 
 
-\paragraph{進入(intrusion)と突出(protrusion)}\ 
-
-進入ありの例:\quad と\ruby{暁}{あかつき}の
-
-進入なしの例:\quad {\setkeys[ltj]{ruby}{mode=0}と\ruby{暁}{あかつき}の}
-
-突出ありの例:\quad {\setkeys[ltj]{ruby}{stretch={1}{2}{1}}\ruby{聴衆}{ちようしゆう}}
-
-突出なしの例:\quad {\setkeys[ltj]{ruby}{stretch={0}{2}{0}}\ruby{聴衆}{ちようしゆう}}
-
-
-\paragraph{mode}\ 
-
-mode 00xx: {\setkeys[ltj]{ruby}{mode=1}は\ruby{美}{うつく}しい
-  \quad は\ruby{聴衆}{ちようしゆう}と}
-
-mode 01xx: {\setkeys[ltj]{ruby}{mode=5}は\ruby{美}{うつく}しい
-  \quad は\ruby{聴衆}{ちようしゆう}と}
-
-mode 10xx: {\setkeys[ltj]{ruby}{mode=9}は\ruby{美}{うつく}しい
-  \quad は\ruby{聴衆}{ちようしゆう}と}
-
-mode 11xx: {\setkeys[ltj]{ruby}{mode=13}%
-\ltjsetparameter{rubypreintrusion={`立,0.5}, 
-  rubypostintrusion={`立,0.5}}は\ruby{暁}{あかつき}立\quad
-は\ruby{聴衆}{ちようしゆう}立\par}
-↑ここでは「立」には0.5字がけを許容
-
-中付きでは00xx, 11xxを選択して下さい
-
-
 \section{いくつかの例}
-\def\rubytest{\ruby{黄金橋}{ゴールデンゲートブリッジ}\relax}
+\def\ltjrubytest{\ltjruby{黄金橋}{ゴールデンゲートブリッジ}\relax}
 
 \setbox0=\vbox{\hsize=22\zw%
-ああああ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ}
+ああああ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ}
 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
 \fbox{\box0}
 
-\def\rubytest{\ruby{国府津}{こうづ}\relax}
+\def\ltjrubytest{\ltjruby{国府津}{こうづ}\relax}
 % グループルビ
 
 \setbox0=\vbox{\hsize=18\zw%
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ}
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ}
 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
 \fbox{\box0}
 
-\def\rubytest{\ruby{●●|◆}{◆◆◆◆◆◆|●●●}\relax}
+\def\ltjrubytest{\ltjruby{●●|◆}{◆◆◆◆◆◆|●●●}\relax}
 \setbox0=\vbox{\hsize=19\zw%
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこイ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこウ
-あ\rubytest いうえおかきくけこエ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ}
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこイ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこウ
+あ\ltjrubytest いうえおかきくけこエ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ}
 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
 \fbox{\box0}
 
-\def\rubytest{\ruby{●●|□}{◆◆◆|●●●}\relax}
+\def\ltjrubytest{\ltjruby{●●|□}{◆◆◆|●●●}\relax}
 \setbox0=\vbox{\hsize=19\zw%
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこイ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこウ
-あ\rubytest いうえおかきくけこエ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ
-あ\rubytest いうえおかきくけこ}
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこイ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこウ
+あ\ltjrubytest いうえおかきくけこエ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ}
 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
 \fbox{\box0}
 
-\def\rubytest{\ruby{異|様}{い|よう}\relax}
+\def\ltjrubytest{\ltjruby{異|様}{い|よう}\relax}
 \setbox0=\vbox{\hsize=19\zw%
-あ\rubytest いうえくけこ
-あ\rubytest いうえくけこ
-あ\rubytest いうえくけこ
-あ\rubytest いうえくけこイ
-あ\rubytest いうえおかきくけこ}
+あ\ltjrubytest いうえくけこ
+あ\ltjrubytest いうえくけこ
+あ\ltjrubytest いうえくけこ
+あ\ltjrubytest いうえくけこイ
+あ\ltjrubytest いうえおかきくけこ}
 %\directlua{ltj.ext_show_node_list(tex.box[0], '? ', print)}
 \fbox{\box0}
 
-\def\rubytest{\ruby{□|■|□}{■■|□□□|■■}\relax}
+\def\ltjrubytest{\ltjruby{□|■|□}{■■|□□□|■■}\relax}
 
 \setbox0=\vbox{\hsize=23\zw%
-あ\rubytest いうえおかきくけこうえおかきくけこ
-あ\rubytest いうえおかきくけこうえおかきくけこ
-あ\rubytest いう□おかきくけこうえおかきくけこ
-あ\rubytest いう□おかきくけこうえおかきくけこ
-あ\rubytest いう□おかきくけこうえおかきくけこ
-あ\rubytest いうえおかきくけこ}
+あ\ltjrubytest いうえおかきくけこうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこうえおかきくけこ
+あ\ltjrubytest いう□おかきくけこうえおかきくけこ
+あ\ltjrubytest いう□おかきくけこうえおかきくけこ
+あ\ltjrubytest いう□おかきくけこうえおかきくけこ
+あ\ltjrubytest いうえおかきくけこ}
 \fbox{\box0}
 
 \begin{description}
-\def\sample{又\ruby{承}{うけたまわ}る\quad \ruby{疎}{そ}\quad は\ruby{俄}{にわか}勉強
-  \quad 後\ruby{俄}{にわか}勉強}
+\def\sample{又\ltjruby{承}{うけたまわ}る\quad \ltjruby{疎}{そ}\quad は\ltjruby{俄}{にわか}勉強
+  \quad 後\ltjruby{俄}{にわか}勉強\quad は\ltjruby{暁}{あかつき}に}
 \item[標準] \sample
 \item[肩つき] {\kata\sample}
 \item[拡張肩つき]{\ltjsetruby{ekata}\sample}
@@ -391,111 +521,118 @@ mode 11xx: {\setkeys[ltj]{ruby}{mode=13}%
 \obeylines\newcommand*{\噂}{\CID{7642}}
 %================================== 横組
 \paragraph{3.3.1節}\ \par
-3.49 \ruby{君|子}{くん|し}は\ruby{和}{わ}して\ruby{同}{どう}ぜず
-3.50 \ruby{人}{ひと}に\ruby{誨}{おし}えて\ruby{倦}{う}まず\par% 中付き
-3.51 \ruby{鬼}{き}\ruby{門}{もん}の\ruby{方}{ほう}\ruby{角}{がく}を% モノ中付き
-\ruby{凝}{ぎょう}\ruby{視}{し}する
-3.52 \ruby{鬼|門}{き|もん}の\ruby{方|角}{ほう|がく}を% 熟語(グループ扱い)
-\ruby{凝|視}{ぎよう|し}する
-3.53 \ruby{茅場町}{かやばちよう}\quad\ruby{茅場}{かやば}\ruby{町}{ちよう}\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 \ruby{紫陽花}{あじさい}\quad\ruby{坩堝}{るつぼ}\quad\ruby{田舎}{いなか}\par% 熟字訓 
-3.55 \ruby{模型}{モデル}\quad\ruby{顧客}{クライアント}\quad% カタカナルビ
-\ruby{境界面}{インターフエース}\quad\ruby{避難所}{アジール}
-3.56 \ruby{編集者}{editor}\quad \ruby{editor}{エディター}% 欧文
+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 に\ruby{幟}{のぼり}を\quad{\kata に\ruby{幟}{のぼり}を}%
-  \quad \ruby{韋}{い}\ruby{編}{へん}\ruby{三}{さん}\ruby{絶}{ぜつ}
-3.59 に\ruby{幟}{\kanjiseries{mc}\selectfont のぼり}を
-3.60 \ruby{韋}{い}\ruby{編}{へん}\ruby{三}{さん}\ruby{絶}{ぜつ}\quad%
+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}{rubysize=0.4}% 文字サイズ変更
-  \ruby{韋}{い}\ruby{編}{へん}\ruby{三}{さん}\ruby{絶}{ぜつ}}
+  \ltjruby{韋}{い}\ltjruby{編}{へん}\ltjruby{三}{さん}\ltjruby{絶}{ぜつ}}
 
 \paragraph{3.3.4節}\ \par
 3.61図(両側ルビ)はまだ未サポートにより省略
 
 \paragraph{3.3.5節 モノルビ}\ \par
-3.62 の\ruby{葯}{やく}に
-3.63 版面の\ruby{地}{ち}に\quad{\kata 版面の\ruby{地}{ち}に}
-3.64× {\kata 版面の\ruby{地}{ち}に}(まだ縦組み未サポート)\par% 横組み肩つき
-3.65 の\ruby{砦}{とりで}に\quad{\kata の\ruby{砦}{とりで}に}
-{\kata 3.66上 の\ruby{旬}{しゆん}に\quad 後\ruby{旬}{しゆん}に
-3.66下 の\ruby{旬}{しゆん}又\quad 後\ruby{旬}{しゆん}又\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 は\ruby{冊子体}{コーデツクス}と
-3.68 \ruby{模型}{モデル}\quad \ruby{利用許諾}{ライセンス}
+3.67 は\ltjruby{冊子体}{コーデツクス}と
+3.68 \ltjruby{模型}{モデル}\quad \ltjruby{利用許諾}{ライセンス}
 3.69 {\setkeys[ltj]{ruby}{stretchruby=010}% 両端を揃える流儀
-  \ruby{模型}{モデル}\quad \ruby{利用許諾}{ライセンス}}
-3.70 \ruby{なげきの聖母像}{ピエタ}←自動調整
-3.71 \ruby{顧客}{クライアント}\quad \ruby{境界面}{インターフエース}
+  \ltjruby{模型}{モデル}\quad \ltjruby{利用許諾}{ライセンス}}
+3.70 \ltjruby{なげきの聖母像}{ピエタ}←自動調整
+3.71 \ltjruby{顧客}{クライアント}\quad \ltjruby{境界面}{インターフエース}
 3.72 {\setkeys[ltj]{ruby}{stretch=010, stretchhead = 010, stretchend = 010}% はみ出さない流儀
-  \ruby{顧客}{クライアント}\quad \ruby{境界面}{インターフエース}}
+  \ltjruby{顧客}{クライアント}\quad \ltjruby{境界面}{インターフエース}}
 
 
 \paragraph{3.3.7節 熟語ルビ}\ \par
-3.73左 \ruby{杞|憂}{き|ゆう}\quad \ruby{畏|怖}{い|ふ}
-3.73右 {\kata\ruby{杞|憂}{き|ゆう}\quad \ruby{畏|怖}{い|ふ}}
-3.74 の\ruby{流|儀}{りゆう|ぎ}を\quad の\ruby{無|常}{む|じよう}を\quad%
-の\ruby{成|就}{じよう|じゆ}を\quad
-3.74 の\ruby{紋|章}{もん|しよう}を\quad の\ruby{象|徴}{しよう|ちよう}を
+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 の\ruby{流|儀}{りゆう|ぎ}を\quad の\ruby{無|常}{む|じよう}を\quad%
-の\ruby{成|就}{じよう|じゆ}を\quad 
-3.75 の\ruby{紋|章}{もん|しよう}を\quad の\ruby{象|徴}{しよう|ちよう}を}
+3.75 {\kata の\ltjruby{流|儀}{りゆう|ぎ}を\quad の\ltjruby{無|常}{む|じよう}を\quad%
+の\ltjruby{成|就}{じよう|じゆ}を\quad 
+3.75 の\ltjruby{紋|章}{もん|しよう}を\quad の\ltjruby{象|徴}{しよう|ちよう}を}
 
-3.76× の\ruby{流}{りゆう}\ruby{儀}{ぎ}を\quad の\ruby{無}{む}\ruby{常}{じよう}を\quad%
+3.76× の\ltjruby{流}{りゆう}\ltjruby{儀}{ぎ}を\quad の\ltjruby{無}{む}\ltjruby{常}{じよう}を\quad%
 
 要調整 3.77\ {\notalign%この図では揃えない
 \hbox{\vrule\vbox{\hsize=10\zw あああああああの%
-  \ruby{流|儀}{りゆう|ぎ}がある.}\vrule}\quad%
+  \ltjruby{流|儀}{りゆう|ぎ}がある.}\vrule}\quad%
 % ↑どうすれば改行されるのだろう
-\hbox{\vrule\vbox{\hsize=5\zw ……の\ruby{無|常}{む|じよう}を}\vrule}}
+\hbox{\vrule\vbox{\hsize=5\zw ……の\ltjruby{無|常}{む|じよう}を}\vrule}}
 
 \paragraph{3.3.8節 ルビはみ出し}\ \par
-3.78 \ruby{人}{ひと}は\ruby{死}{し}して\ruby{名}{な}を\ruby{残}{のこ}す\par% ベタ
-要調整3.79 漢字の部首には\ruby{偏}{へん}・\ruby{冠}{かんむり}・\ruby{脚}{きやく}・%
-\ruby{旁}{つくり}がある
-要調整3.79 漢字の部首には\ruby{偏}{へん},\ruby{冠}{かんむり},\ruby{脚}{きやく},%
-\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{趣}{おもむき}を
+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{趣}{おもむき}を
 {%
   \ltjsetparameter{rubypostintrusion={`好,0.5}}
   \ltjsetparameter{rubypostintrusion={`具,0.5}}
   \ltjsetparameter{rubypostintrusion={`材,0.5}}
-3,83 この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を
-3.83 この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を
+3,83 この\ltjruby{\噂}{うわさ}の好きな人は\ltjruby{懐}{ふところ}ぐあいもよく、\ltjruby{檜}{ひのき}を
+3.83 この\ltjruby{\噂}{うわさ}好きな人は\ltjruby{懐}{ふところ}具合もよく、\ltjruby{檜}{ひのき}材を
 }
-{%
+{\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 この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を
-3.84 この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を
+3.84 この\ltjruby{\噂}{うわさ}の好きな人は\ltjruby{懐}{ふところ}ぐあいもよく、\ltjruby{檜}{ひのき}を
+3.84 この\ltjruby{\噂}{うわさ}好きな人は\ltjruby{懐}{ふところ}具合もよく、\ltjruby{檜}{ひのき}材を
 }
 要調整3.85\ {\notalign%この図では揃えない
 \hbox{\vrule\vbox{\hsize=15\zw% なぜ行末形にならない!
-あああああああああああああの\ruby{徑}{こみち}\penalty-1000をあああああああ%
-あああああああああああああああああいの\ruby{徑}{こみち}ああ}\vrule}}
+あああああああああああああの\ltjruby{徑}{こみち}\penalty-1000をあああああああ%
+あああああああああああああああああいの\ltjruby{徑}{こみち}ああ}\vrule}}
 
 3.86\ %
 \hbox{\vrule\vbox{\hsize=15\zw
-ああああああああああああの\ruby{徑}{こみち}をあああああああ%
-あああああああ\ruby{徑}{こみち}を}\vrule}
+ああああああああああああの\ltjruby{徑}{こみち}をあああああああ%
+あああああああ\ltjruby{徑}{こみち}を}\vrule}
 
 3.87\ %
 \hbox{\vrule\vbox{\hsize=15\zw%
-ああああああああああああの\ruby{飾り}{アクセサリー}等あああああああ%
-あああああああああああああああ共\ruby{飾り}{アクセサリー}}\vrule}
+ああああああああああああの\ltjruby{飾り}{アクセサリー}等あああああああ%
+あああああああああああああああ共\ltjruby{飾り}{アクセサリー}あ.}\vrule}
+
+
+\paragraph{圏点の例(常用漢字表前書きより)}
+  \ltjgetparameter{chartorange}{`﹅}%
+\ltjgetparameter{jacharrange}{6}
+この表は,法令,公⽤⽂書,新聞,雑誌,放送など,⼀般の社会⽣活におい
+て\kenten[kenten=﹅]{現代の国語を書き表す}場合の\kenten{漢字使⽤の⽬安を⽰す}ものである。
 
 
 \newpage
@@ -503,28 +640,28 @@ mode 11xx: {\setkeys[ltj]{ruby}{mode=13}%
 
 \paragraph{F.1--2節}\ \par
 
-F.01 {\kata\ruby{治|癒}{ち|ゆ}\quad\ruby{模|索}{も|さく}\quad%
-\ruby{遷|移}{せん|い}\quad\ruby{混|沌}{こん|とん}}
-F.01中 \ruby{治|癒}{ち|ゆ}\quad\ruby{模|索}{も|さく}\quad%
-\ruby{遷|移}{せん|い}\quad\ruby{混|沌}{こん|とん}
+F.01 {\kata\ltjruby{治|癒}{ち|ゆ}\quad\ltjruby{模|索}{も|さく}\quad%
+\ltjruby{遷|移}{せん|い}\quad\ltjruby{混|沌}{こん|とん}}
+F.01中 \ltjruby{治|癒}{ち|ゆ}\quad\ltjruby{模|索}{も|さく}\quad%
+\ltjruby{遷|移}{せん|い}\quad\ltjruby{混|沌}{こん|とん}
 
-F.02 \ruby{橋|頭|堡}{きよう|とう|ほ}
+F.02 \ltjruby{橋|頭|堡}{きよう|とう|ほ}
 
-F.03 {\kata\ruby{凝|視}{ぎよう|し}\quad\ruby{調|理|師}{ちよう|り|し}\quad%
-\ruby{思|春|期}{し|しゆん|き}\quad\ruby{管|状|花}{かん|じよう|か}\quad%
-\ruby{蒸|気|船}{じよう|き|せん}}
-F.03 \ruby{凝|視}{ぎよう|し}\quad\ruby{調|理|師}{ちよう|り|し}\quad%
-\ruby{思|春|期}{し|しゆん|き}\quad\ruby{管|状|花}{かん|じよう|か}\quad%
-\ruby{蒸|気|船}{じよう|き|せん}
+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\ruby{未|熟}{み|じゆく}\quad\ruby{法|華|経}{ほ|け|きよう}\quad%
-\ruby{顕|微|鏡}{けん|び|きよう}\quad\ruby{課|徴|金}{か|ちよう|きん}\quad%
-\ruby{古|戦|場}{こ|せん|じよう}}
-F.04 \ruby{未|熟}{み|じゆく}\quad\ruby{法|華|経}{ほ|け|きよう}\quad%
-\ruby{顕|微|鏡}{けん|び|きよう}\quad\ruby{課|徴|金}{か|ちよう|きん}\quad%
-\ruby{古|戦|場}{こ|せん|じよう}
+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 の\ruby{峻|別}{しゆん|べつ}は
+F.05 の\ltjruby{峻|別}{しゆん|べつ}は
 
 F.06以降は未チェック