texlive[44082] Master/texmf-dist: pxrubrica (27apr17)

commits+karl at tug.org commits+karl at tug.org
Thu Apr 27 23:35:21 CEST 2017


Revision: 44082
          http://tug.org/svn/texlive?view=revision&revision=44082
Author:   karl
Date:     2017-04-27 23:35:21 +0200 (Thu, 27 Apr 2017)
Log Message:
-----------
pxrubrica (27apr17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/platex/pxrubrica/README-ja.md
    trunk/Master/texmf-dist/doc/platex/pxrubrica/README.md
    trunk/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.pdf
    trunk/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.tex
    trunk/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica.pdf
    trunk/Master/texmf-dist/source/platex/pxrubrica/pxrubrica.dtx
    trunk/Master/texmf-dist/tex/platex/pxrubrica/pxrubrica.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/platex/pxrubrica/sample/test-sample.pdf
    trunk/Master/texmf-dist/doc/platex/pxrubrica/sample/test-sample.tex

Modified: trunk/Master/texmf-dist/doc/platex/pxrubrica/README-ja.md
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxrubrica/README-ja.md	2017-04-27 20:20:44 UTC (rev 44081)
+++ trunk/Master/texmf-dist/doc/platex/pxrubrica/README-ja.md	2017-04-27 21:35:21 UTC (rev 44082)
@@ -7,6 +7,8 @@
 で述べられているような、日本において一般的な様式に従ってルビを付ける
 機能を提供する。
 
+1.3 版より、圏点出力機能が追加された。
+
 [日本語組版処理の要件]: <http://www.w3.org/TR/jlreq/ja/>
 
 ### 前提環境
@@ -13,7 +15,7 @@
 
   * フォーマット: LaTeX
   * エンジン: pTeX/upTeX/LuaTeX/XeTeX
-  * DVI ウェア: pTeX 対応のもの
+  * DVI ウェア(DVI 出力時): pTeX 対応のもの
 
 ### 構成物
 
@@ -45,6 +47,10 @@
 更新履歴
 --------
 
+  * Version 1.3  〈2017/04/27〉
+      - 圏点出力機能(ルビ圏点同時付加を含む)。
+      - 和文ゴースト処理の改良。
+      - hyperref の PDF 文字列に対する対策。
   * Version 1.2  〈2017/04/20〉
       - 自動切換のモノルビ・熟語ルビ。
       - 安全モード。

Modified: trunk/Master/texmf-dist/doc/platex/pxrubrica/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxrubrica/README.md	2017-04-27 20:20:44 UTC (rev 44081)
+++ trunk/Master/texmf-dist/doc/platex/pxrubrica/README.md	2017-04-27 21:35:21 UTC (rev 44082)
@@ -8,13 +8,16 @@
 the W3C technical note “Requirements for Japanese Text Layout” ([JLREQ])
 and the JIS specification JIS X 4051.
 
+Starting with version 1.3, this package also provides function to add
+kenten (emphasis marks) to Japanese text.
+
 [JLREQ]: <http://www.w3.org/TR/jlreq/>
 
 ### SYSTEM REQUIREMENTS
 
   * TeX format: LaTeX.
-  * TeX engine: pTeX and its derivatives.
-  * DVI driver: Anything that supports pTeX DVI.
+  * TeX engine: pTeX, upTeX, LuaTeX, XeTeX.
+  * DVI driver (in DVI output): Anything that supports pTeX DVI.
 
 ### CONTENT
 
@@ -47,6 +50,10 @@
 Revision History
 ----------------
 
+  * Version 1.3  〈2017/04/27〉
+      - Kenten function.
+      - Improve Japanese-text ghost insertion.
+      - Support the use in PDF strings.
   * Version 1.2  〈2017/04/20〉
       - Mono-ruby and jukugo-ruby with switching.
       - Safe mode.

Modified: trunk/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.tex
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.tex	2017-04-27 20:20:44 UTC (rev 44081)
+++ trunk/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica-en.tex	2017-04-27 21:35:21 UTC (rev 44082)
@@ -8,8 +8,8 @@
 \newcommand*{\Eg}{E.\,g.\mbox{}}
 \newcommand*{\eg}{e.\,g.\mbox{}}
 \newcommand*{\ie}{i.\,e.\mbox{}}
-\newcommand*{\myfileversion}{1.2}
-\newcommand*{\myfiledate}{2017/04/20}
+\newcommand*{\myfileversion}{1.3}
+\newcommand*{\myfiledate}{2017/04/27}
 \newsavebox{\myexample}
 \begin{document}
 

Modified: trunk/Master/texmf-dist/doc/platex/pxrubrica/pxrubrica.pdf
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/doc/platex/pxrubrica/sample/test-sample.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/platex/pxrubrica/sample/test-sample.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxrubrica/sample/test-sample.pdf	2017-04-27 20:20:44 UTC (rev 44081)
+++ trunk/Master/texmf-dist/doc/platex/pxrubrica/sample/test-sample.pdf	2017-04-27 21:35:21 UTC (rev 44082)

Property changes on: trunk/Master/texmf-dist/doc/platex/pxrubrica/sample/test-sample.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/platex/pxrubrica/sample/test-sample.tex
===================================================================
--- trunk/Master/texmf-dist/doc/platex/pxrubrica/sample/test-sample.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/platex/pxrubrica/sample/test-sample.tex	2017-04-27 21:35:21 UTC (rev 44082)
@@ -0,0 +1,136 @@
+\documentclass[autodetect-engine,dvi=dvipdfmx,ja=standard,
+  a4paper]{bxjsarticle}
+\usepackage{setspace}
+\usepackage{pxrubrica}
+\newcommand*{\vb}{\symbol{`\|}}
+\newcommand*{\Opt}[1]{\texttt{#1}}
+\newcommand*{\PKN}[1]{\textsf{#1}}
+\newsavebox{\myexample}
+\rubysetup{f}
+\begin{document}
+
+\title{\PKN{pxrubrica}パッケージサンプル}
+\author{某ZR}
+\date{コンパイル日付: \today}
+\maketitle
+
+\section{サンプル}
+
+\subsection{基本的な用法}
+
+\begin{itemize}
+\item モノルビ(\Opt{m}オプション):各漢字に一つのルビブロック\\
+例:\quad
+\verb+\ruby[m]{鷹}{たか}+ → \ruby[m]{鷹}{たか}\quad
+\verb+\ruby[m]{鶯}{うぐいす}+ → \ruby[m]{鶯}{うぐいす}
+\item グループルビ(\Opt{m}オプション):漢字列全体に一つのルビブロック\\
+例:\quad
+\verb+\ruby[g]{雲雀}{ひばり}+ → \ruby[g]{雲雀}{ひばり}\quad
+\verb+\ruby[g]{不如帰}{ほととぎす}+ → \ruby[g]{不如帰}{ほととぎす}
+\item 熟語ルビ(\Opt{j}オプション):各漢字にルビを対応させるが熟語として読む\\
+例:\quad
+\verb+\ruby[j]{孔雀}{く|じゃく}+ → \ruby[j]{孔雀}{く|じゃく}\quad
+\verb+\ruby[j]{七面鳥}{しち|めん|ちょう}+ → \ruby[j]{七面鳥}{しち|めん|ちょう}
+\item ルビ文字列中の \verb+|+ は各漢字の読みの境界を示す。
+(孔=く、雀=じゃく)。
+グループルビでは不要である。
+\item 組版結果の比較:
+\begin{quote}\begin{tabular}{ll@{\ }l@{\ }c*3{@{\quad}c}}
+モノルビ & (\verb+\ruby[m]{小鳩}{こ|ばと}+) & →
+  & \ruby[m]{小鳩}{こ|ばと}
+  & \ruby[m]{鶺鴒}{せき|れい}
+  & \ruby[m]{雷鳥}{らい|ちょう}
+  & \ruby[m]{燕}{つばめ}
+\\
+グループルビ & (\verb+\ruby[g]{小鳩}{こばと}+) & →
+  & \ruby[g]{小鳩}{こばと}
+  & \ruby[g]{鶺鴒}{せきれい}
+  & \ruby[g]{雷鳥}{らいちょう}
+  & \ruby[g]{燕}{つばめ}
+\\
+熟語ルビ & (\verb+\ruby[j]{小鳩}{こ|ばと}+) & →
+  & \ruby[j]{小鳩}{こ|ばと}
+  & \ruby[j]{鶺鴒}{せき|れい}
+  & \ruby[j]{雷鳥}{らい|ちょう}
+  & \ruby[j]{燕}{つばめ}
+\end{tabular}\end{quote}
+熟語の各漢字とルビが対応する場合は、熟語ルビ(\Opt{j})を使い、
+そうでない(熟字訓の)場合はグループルビ(\Opt{g})を使うのが通例である。
+特に熟語の各漢字ごとの読みを明示したい場合は
+モノルビ(\Opt{m})を使うとよい。
+なお、漢字一文字に対するルビの場合は、
+\Opt{m}、\Opt{g}、\Opt{j}の何れも同じ結果になる。
+\item オプションの既定値を \verb+\rubysetup+ 命令で設定できる。
+例えば、\verb+\rubysetup{g}\ruby{軍鶏}{しゃも}+
+は \verb+\ruby[g]{軍鶏}{しゃも}+ と等価になる。
+“既定値の既定値”は\Opt{|cjPeF|}である。
+\end{itemize}
+
+\subsection{進入・突出}
+
+\begin{itemize}
+\item ルビの進入の制御:
+\begin{center}\begin{tabular}{ll@{\ }l@{\ }c*2{@{\quad}c}}
+進入無し & \verb+この\ruby[|-|]{鵲}{かささぎ}の+ & →
+ & この\ruby[|-|]{鵲}{かささぎ}の
+ & この\ruby[|-|]{鸛}{こうのとり}の
+ & この\ruby[|-|]{鵜}{う}の
+\\
+進入量小 & \verb+この\ruby[(-)]{鵲}{かささぎ}の+ & →
+ & この\ruby[(-)]{鵲}{かささぎ}の
+ & この\ruby[(-)]{鸛}{こうのとり}の
+ & この\ruby[(-)]{鵜}{う}の
+\\
+進入量大 & \verb+この\ruby[<->]{鵲}{かささぎ}の+ & →
+ & この\ruby[<->]{鵲}{かささぎ}の
+ & この\ruby[<->]{鸛}{こうのとり}の
+ & この\ruby[<->]{鵜}{う}の
+\end{tabular}\end{center}
+\item もし「ルビは仮名にはかけてよいが漢字はダメ」という場合は、
+“\verb+この\ruby[<-|]{鵲}{かささぎ}等+”
+と書くと「この\ruby[<-|]{鵲}{かささぎ}等」の出力が得られる。
+\item 基本モード(\Opt{m}/\Opt{g}/\Opt{j})と進入を同時に指定したい場合は、
+オプション文字列を \Opt{|g|} や \Opt{|m>} のようにする。
+ここで、“\Opt{-}”は「基本モードは既定値を用いる」ことを意味する。
+\item 突出の制御:
+オプション \Opt{||} で突出が抑止される。
+\begin{quote}
+\begin{lrbox}{\myexample}
+\small$\leftarrow$ \verb+\ruby[||->]{雀}{すずめ}+
+\end{lrbox}
+\fbox{\parbox{.42\linewidth}{%
+\ruby[||->]{雀}{すずめ}の…
+\quad \usebox{\myexample}%
+\rule{0pt}{12pt}\\
+インコの
+}}\quad vs.\quad
+\begin{lrbox}{\myexample}
+\small$\leftarrow$ \verb+\ruby[|->]{雀}{すずめ}+
+\end{lrbox}
+\fbox{\parbox{.42\linewidth}{%
+\ruby[|->]{雀}{すずめ}の…
+\quad \usebox{\myexample}%
+\rule{0pt}{12pt}\\
+インコの
+}}
+\end{quote}
+\end{itemize}
+
+\subsection{発展的な用法}
+
+\begin{itemize}
+\item \verb+\aruby+:欧文に対してルビを付ける:
+\par\noindent 例:\quad
+\verb+\aruby{Get out}{ゲラウッ}!+ →\
+  \aruby{Get out}{ゲラウッ}!
+\item \verb+\rubyfontsetup+:ルビ出力のためのフォントを指定する。
+例えば、ゴシック体の漢字列に対して明朝体のルビを振りたい場合は、
+次のようにする:
+\par\noindent
+{\small
+\verb+\rubyfontsetup{\mcfamily}この{\gtfamily \ruby[j]{明朝体}{みん|ちょう|たい}}+}
+→\
+{\rubyfontsetup{\mcfamily}この{\gtfamily \ruby[j]{明朝体}{みん|ちょう|たい}}}
+\end{itemize}
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/platex/pxrubrica/sample/test-sample.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/platex/pxrubrica/pxrubrica.dtx
===================================================================
--- trunk/Master/texmf-dist/source/platex/pxrubrica/pxrubrica.dtx	2017-04-27 20:20:44 UTC (rev 44081)
+++ trunk/Master/texmf-dist/source/platex/pxrubrica/pxrubrica.dtx	2017-04-27 21:35:21 UTC (rev 44082)
@@ -20,9 +20,9 @@
 %<*driver>
 \ProvidesFile{pxrubrica.dtx}
 %</driver>
-  [2017/04/20 v1.2 PX Japanese-style ruby]
+  [2017/04/27 v1.3 PX Japanese-style ruby]
 %<*driver>
-\documentclass{jsarticle}
+\documentclass[uplatex]{jsarticle}
 \usepackage{doc}
 \addtolength{\textwidth}{-1in}
 \addtolength{\evensidemargin}{1in}
@@ -68,6 +68,7 @@
 % \setcounter{tocdepth}{3}
 % \tableofcontents
 %
+%^^A------------------------------------
 % \section{$B%Q%C%1!<%8FI9~(B}
 %
 % |\usepackage| $BL?Na$rMQ$$$FFI$_9~$`!#(B
@@ -76,7 +77,8 @@
 %\usepackage{pxrubrica}
 %\end{verbatim}\end{quote}
 %
-% \section{$B4pK\5!G=(B}
+%^^A------------------------------------
+% \section{$B%k%S5!G=(B}
 %
 % \subsection{$BMQ8l=8(B}
 % 
@@ -515,6 +517,252 @@
 %
 % \end{itemize}
 %
+%^^A------------------------------------
+% \section{$B7wE at 5!G=(B}
+%
+% \subsection{$B7wE at MQL?Na(B}
+%
+% \begin{itemize}
+% \item |\kenten[|\jmeta{$B%*%W%7%g%s(B}|]{|\jmeta{$B?FJ8;z(B}|}|
+%
+% $BOBJ8J8;zNs$N>eB&!J2#AH!K!?1&B&!J=DAH!K$K7wE@$rIU$9(B
+% $B!J%*%W%7%g%s$G5UB&$K$b$G$-$k!K!#(B
+%
+% \jmeta{$B%*%W%7%g%s(B}$B$OJ#?t;XDj2DG=$G!"GSB>$J;XDj$,J;B8$7$?>l9g$O(B
+% $B8e$N$b$N$,M-8z$K$J$k!#(B
+% $B$^$?!">JN,$5$l$?;XDj$K$D$$$F$O(B |\kentensetup| $B$G;XDj$5$l$?(B
+% $B4{DjCM$,MQ$$$i$l$k!#(B
+%
+% $B%*%W%7%g%s$K;XDj$G$-$kCM$O0J2<$NDL$j!#(B
+% \begin{quote}
+%   \newcommand*\fro[1]{{\scriptsize($<$\,\textit{#1})}}
+%   \begin{tabular}[t]{l@{ }ll}
+%     \texttt{p} & \fro{primary}   & $B<g%^!<%/(B\\
+%     \texttt{s} & \fro{seconday}  & $BI{%^!<%/(B\\
+%     \texttt{f} & \fro{full}      & $BA4J8;zIU2CM-8z(B\\
+%     \texttt{F} &                 & $BA4J8;zIU2CL58z(B
+%   \end{tabular}\qquad
+%   \begin{tabular}[t]{l@{ }ll}
+%     \texttt{P} & \fro{primary}    & $B>eB&G[CV(B\\
+%     \texttt{S} & \fro{secondary}  & $B2<B&G[CV(B
+%   \end{tabular}
+% \end{quote}
+%
+% \begin{itemize}
+% \item |p|$B!"(B|s| $B$OIU2C$9$k7wE@$N<oN`$rI=$9!#(B
+%   $B2#AH$G$O<g%^!<%/!J(B|p|$B!K$O9uCfE@!"I{%^!<%/!J(B|s|$B!K$O9u%4%^E@$,(B
+%   $BMQ$$$i$l!"=DAH$G$O5U$K<g%^!<%/$,9u%4%^E@!"I{%^!<%/$,9uCfE@$H$J$k!#(B
+%   $B$?$@$7 at _DjL?Na$K$h$j7wE@$N<oN`$OJQ99$G$-$k!#(B
+% \item |P| $B$O?FJ8;zNs$N>eB&!J2#AH!K!?1&B&!J=DAH!K!"(B
+%   |S| $B$O?FJ8;zNs$N2<B&!J2#AH!K!?:8B&!J=DAH!K$K7wE@$rIU$9;XDj!#(B
+% \item |f| $B;XDj;~$O!"?FJ8;zNs$K4^$^$l$k!HDL>oJ8;z!I$NA4$F$K7wE@$rIU2C$9$k!#(B
+%   |F| $B;XDj;~$O!"LsJ*$G$"$k!HDL>oJ8;z!I$K$O7wE@$rIU2C$7$J$$!#(B
+% \end{itemize}
+%
+% \end{itemize}
+%
+% \subsection{$B7wE at L?Na$N?FJ8;zNs(B}
+%
+% $B7wE at IU2C$N=hM}$G$O?FJ8;zNs$rJ8;zKh$KJ,2r$9$kI,MW$,$"$k!#(B
+% $B$3$N$?$a!"7wE at L?Na$N?FJ8;zNs$O0lDj$N5,B'$K=>$C$F(B
+% $B=q$+$l$kI,MW$,$"$k!#(B
+%
+% $B7wE at L?Na$N?FJ8;zNs$K$O0J2<$N$b$N$r4^$a$k$3$H$,$G$-$k!#(B
+%
+% \begin{itemize}
+% \item $BDL>oJ8;z(B\Means {\LaTeX}$B$NL?Na$dFC<lJ8;z$d2$J86uGr$G$J$$!"(B
+%   $B2$J8$^$?$OOBJ8$NJ8;z$r;X$9!#(B
+%   $BDL>oJ8;z$K$O0l$D$N7wE@$,IU2C$5$l$k!#(B
+%   \begin{itemize}
+%   \item |F| $B%*%W%7%g%s$r;XDj$7$?>l9g!"LsJ*!J6gFIE at Ey!K$NJ8;z$K$O(B
+%     $B7wE@$,IU2C$5$l$J$$!#(B
+%   \item $B2$J8J8;z$K7wE@$rIU$1$?>l9g!"$=$NJ8;z$OAHHG>e(B
+%     $B!HOBJ8J8;z$N$h$&$K!I?6Iq$&!#(B
+%   \end{itemize}
+% \item {\LaTeX}$B$NL?Na$*$h$S2$J86uGr(B\Means $B$3$l$i$K$O(B
+%   $B7wE@$,IU2C$5$l$J$$!#(B
+%   \begin{itemize}
+%   \item $B<g$K(B |\,| $B$d(B |\quad| $B$N$h$&$J6uGrMQ$NL?Na$N;HMQ$r(B
+%     $B0U?^$7$F$$$k!#(B
+%   \item |\hspace{1zw}| $B$N$h$&$J0z?t$r<h$kL?Na$r$=$N$^$^=q$/$3$H$O(B
+%     $B$G$-$J$$!#(B
+%     $B$3$N>l9g$O!"0J9_$K<($92?$l$+$N=q<0$rMxMQ$9$kI,MW$,$"$k!#(B
+%     \footnote{$BA43Q6uGr!J(B\verb|\hspace{1zw}|$B!K$dOB2$J84V6uGr(B
+%       $B!J(B\verb|\hspace{\kanjiskip}|$B!K$r=PNO$9$k at lMQ$N%^%/%m$rMQ0U$7$F(B
+%       $B$*$/$HJXMx$+$b$7$l$J$$!#(B}
+%   \end{itemize}
+% \item $B%0%k!<%W(B\Means $B$9$J$o$A!"(B|{ }| $B$K0O$^$l$?G$0U$N%F%-%9%H!#(B
+%   $B%k%SL?Na$N%0%k!<%W$HF1MM$K!"0l$D$N!TJ8;z!U$H$7$F07$o$l!"(B
+%   $BA4BN$KBP$7$F0l$D$N7wE@$,IU2C$5$l$k!#(B
+%   \begin{itemize}
+%   \item \PKN{japanese-otf}$B%Q%C%1!<%8$N(B |\CID| $BL?Na$N$h$&$J!"(B
+%     $B!VFC<l$JOBJ8J8;z$r=PNO$9$kL?Na!W$N;HMQ$r0U?^$7$F$$$k!#(B
+%   \end{itemize}
+% \item |\kspan{|\jmeta{$B%F%-%9%H(B}|}|\Means $B$3$l$O!"(B
+%   $B=PNO$5$l$k%F%-%9%H$NI}$K1~$8$?8D?t$N7wE@$,IU2C$5$l$k!#(B
+%   \begin{itemize}
+%   \item $BNc$($P!"!H$/$N;zE@!I$K7wE@$rIU$9>l9g$K;H$($k!#(B
+%   \item $B$"$k$$$O!"!J>/!9<jH4$-$G$"$k$,(B
+%     \footnote{$BK\Mh$O!"(B\verb|\textgt| $B$NCf$G2~$a$F(B \verb|\kenten|
+%       $B$r;H$&$Y$-$G$"$k!#(B}%
+%     $B!K(B|\kenten{$B$3$N(B\kspan{\textgt{$BJ8;z(B}}$B$@(B}| $B$_$?$$$J;H$$J}$b(B
+%     $B9M$($i$l$k!#(B
+%   \end{itemize}
+% \item |\kspan*{|\jmeta{$B%F%-%9%H(B}|}|\Means $B$3$l$O(B
+%   $B7wE@$rIU$5$:$K%F%-%9%H$r$=$N$^$^=PNO$9$k!#(B
+% \item $B%k%SL?Na!J(B|\ruby| $BEy!K(B\Means $BNc$($P(B
+%\begin{quote}\begin{verbatim}
+%\kenten{$B$3$l$,(B\ruby[|j|]{$B7wE@(B}{$B$1$s(B|$B$F$s(B}$B$G$9(B}$B!#(B
+%\end{verbatim}\end{quote}
+%   $B$N$h$&$K!"%k%SL?Na$O$=$N$^$^=q$/$3$H$,$G$-$k!#(B
+%   \begin{itemize}
+%   \item |\kentenrubycombination| $B$N at _Dj$K$h$C$F$O!"%k%S$H7wE@$NN>J}$,(B
+%     $BIU2C$5$l$k!#(B
+%   \item $B<BAu>e$N@)8B(B
+%     \footnote{$B7wE at L?Na$O>o$K%4!<%9%H=hM}$rH<$&$?$a!"@h=R$N(B
+%     $B!V%4!<%9%H=hM}$H?JF~$O6&B8$7$J$$!W$H$$$&@)8B$K0z$C$+$+$k$N$G$"$k!#(B}%
+%     $B$N$?$a!"7wE at L?Na$N at hF,$K%k%SL?Na$,$"$k>l9g!"(B
+%     $B%k%S$NA0B&$N?JF~$,L58z$K$J$k!#(B
+%     $BF1MM$K!"7wE at L?Na$NKvHx$K%k%SL?Na$,$"$k>l9g!"(B
+%     $B%k%S$N8eB&$N?JF~$,L58z$K$J$k!#(B
+%   \item $B7wE at L?NaCf$N%k%S$N=hM}$ODL>o$N>l9g$HHf$Y$F!HJ#;(!I$G$"$k$?$a!"(B
+%     $B<+F0E*$J6XB'=hM}$,F/$+$J$$2DG=@-$,9b$$!#(B
+%     $B=>$C$F!"I,MW$K1~$8$FJd=u at _Dj$GJ,3d6X;_!J(B|*|$B!K$r;XDj$9$kI,MW$,$"$k!#(B
+%   \item $B5U$K%k%SL?Na$NF~NO$K7wE at L?Na$r$=$N$^$^=q$/$3$H$O$G$-$J$$!#(B
+%\begin{quote}\begin{verbatim}
+%\ruby[|j|]{\kenten{$B7wE@(B}}{$B$1$s(B|$B$F$s(B}% $BIT2D(B
+%\end{verbatim}\end{quote}
+%     |{ }| $B$G0O$C$?!TJ8;z!U$NCf$G$O;H$($k$,!"$3$N>l9g$OF1;~IU2C$H$O(B
+%     $B8+$J$5$l$:!"FHN)$KF0:n$9$k$3$H$K$J$k!#(B
+%   \end{itemize}
+% \end{itemize}
+%
+% \subsection{$B%4!<%9%H=hM}(B}
+%
+% $B7wE@=PNO$G$O%k%S$H0[$J$j?JF~$N=hM}$,ITMW$G$"$k!#(B
+% $B$3$N$?$a!"8=>u$G$O!"7wE at L?Na$K$D$$$F$O(B
+% \textgt{$B>o$K(B}$BOBJ8%4!<%9%H=hM}$rE,MQ$9$k!#(B
+%
+% \Note $BHsI8=`$NOBJ8%a%H%j%C%/!J(BJFM$B!K$,;H$o$l$F$$$kEy$NM}M3$G!"(B
+% $BOBJ8%4!<%9%H=hM}$, at 5>o$K5!G=$7$J$$>l9g$,B8:_$9$k!#(B
+% $B$3$N$?$a!">-MhE*$K!"7wE at L?Na$K$D$$$F$bOBJ8%4!<%9%H=hM}$r(B
+% $B9T$o$J$$!J%k%SL?Na$HF1MM$NJd=u at _Dj$rE,MQ$9$k!K at _Dj$r(B
+% $BMQ0U$9$kM=Dj$G$"$k!#(B
+%
+% \subsection{$B%Q%i%a%?@_DjL?Na(B}
+%
+% \begin{itemize}
+%
+% \item |\kentensetup{|\jmeta{$B%*%W%7%g%s(B}|}|
+%
+% $B%*%W%7%g%s$N4{DjCM at _Dj!#(B
+% $B!N4{Dj(B = \texttt{pPF}$B!O(B
+%
+% \item |\kentenmarkinyoko{|\jmeta{$BL>A0$^$?$O%F%-%9%H(B}|}|
+%
+% $B2#AH;~$N<g%^!<%/!J(B|p| $B;XDj;~!K$H$7$F;H$o$l$k7wE@$r;XDj$9$k!#(B
+% $B!N4{Dj(B = |bullet*|$B!O(B
+%
+% $B%Q%C%1!<%8$GM=$aMQ0U$5$l$F$$$k7wE@<oJL$K$D$$$F$OL>A0$G;XDj$G$-$k!#(B
+% \begin{quote}
+%   \newcommand*\Us[1]{\symbol{"#1}}
+%   \newcommand*\Ucomp{{\small \<$B!J9g at .!K(B\<}}
+%   \newcommand*\U[1]{\texttt{#1}}
+%   \begin{tabular}[t]{ll@{ }ll}
+%     \texttt{bullet*}   & {$B!&(B}      & \Ucomp   & $B9uCfE@(B\\
+%     \texttt{bullet}    & {$B!&(B}      & \U{2022*}& $B9uCfE@(B\\
+%     \texttt{Bullet}    & \Us{25E6} & \U{25E6*}& $BGrCfE@(B\\
+%     \texttt{sesame*}   & \Us{FE45} & \Ucomp   & $B9u%4%^E@(B\\
+%     \texttt{sesame}    & \Us{FE45} & \U{FE45*}& $B9u%4%^E@(B\\
+%     \texttt{Sesame}    & \Us{FE46} & \U{FE46*}& $BGr%4%^E@(B
+%   \end{tabular}\qquad
+%   \begin{tabular}[t]{ll@{ }ll}
+%     \texttt{triangle}  & \Us{25B2} & \U{25B2} & $B9u;03Q(B\\
+%     \texttt{Triangle}  & \Us{25B3} & \U{25B3} & $BGr;03Q(B\\
+%     \texttt{circle}    & \Us{25CF} & \U{25CF} & $B9u4](B\\
+%     \texttt{Circle}    & \Us{25CB} & \U{25CB} & $BGr4](B\\
+%     \texttt{bullseye}  & \Us{25CE} & \U{25CE} & $BFs=E4](B\\
+%     \texttt{fisheye}   & \Us{25C9} & \U{25C9*}& $B<X$NL\E@(B
+%   \end{tabular}
+% \end{quote}
+% \begin{itemize}
+% \item $B$3$l$i$N7wE@<oJL$N$&$A!"(B
+%   |bullet*| $B$OCf9u!H(B{$B!&(B}$B!I!J(BU+30FB$B!K!"(B
+%   |sesame*| $B$OFIE@!H(B{$B!"(B}$B!I!J(BU+3001$B!K$N(B
+%   $B;z7A$r2C9)$7$?$b$N$rMxMQ$9$k!#(B
+%   $B$3$l$i$O$I$s$JF|K\8l%U%)%s%H$G$b%5%]!<%H$5$l$F$$$k$N$G!"(B
+%   $B3N<B$K;HMQ$G$-$k!#(B
+% \item $B$=$l0J30$N7wE@<oJL$O!"5-:\$NJ8;z%3!<%I$r$b$D(B
+%   Unicode$BJ8;z$r=PNO$9$k!#(B
+%   $B;HMQ$9$k%U%)%s%H$K$h$C$F$O!";z7A$r;}$C$F$$$J$$$?$a2?$b=PNO$5$l$J$$!"(B
+%   $B$"$k$$$O;z7A$,A43QI}$G$J$$$?$a at 5>o$K=PNO$5$l$J$$!"(B
+%   $B$H$$$&2DG=@-$,$"$k!#(B
+% \item $BJ8;z%3!<%ICM$K(B |*| $B$rIU$1$?$b$N$O!"$=$NJ8;z$,(B
+%   JIS~X~0208$B$K$J$$$3$H$rI=$9!#(B
+%   {\pLaTeX}$B$G$3$l$i$N7wE@<oJL$rMxMQ$9$k$?$a$K$O(B
+%   \PKN{japanese-otf}$B%Q%C%1!<%8$rFI$_9~$`I,MW$,$"$k!#(B
+% \end{itemize}
+%
+% $B$"$k$$$O!"L>A0$NBe$o$j$KG$0U$N(B{\LaTeX}$B$N%F%-%9%H$r=q$/$3$H$,$G$-$k!#(B
+% \footnote{$B$?$@$7!"0z?t$N at hF,$NJ8;z$,(BASCII$B1Q;z$G$"$k>l9g$O(B
+%   $BL>A0$N;XDj$H8+$J$5$l$k$?$a!"%F%-%9%H$H$7$F07$$$?$$>l9g$O(B
+%   $BE,59(B \verb|{ }| $B$rJd$&Ey$NA<CV$,I,MW$G$"$k!#(B}%
+%\begin{quote}\begin{verbatim}
+%\kentenmarkinyoko{$B"((B}
+%\end{verbatim}\end{quote}
+%
+% \item |\kentensubmarkinyoko{|\jmeta{$BL>A0$^$?$O%F%-%9%H(B}|}|
+%
+% $B2#AH;~$NI{%^!<%/!J(B|s| $B;XDj;~!K$H$7$F;H$o$l$k7wE@$r;XDj$9$k!#(B
+% $B!N4{Dj(B = |sesame*|$B!O(B
+%
+% \item |\kentenmarkintate{|\jmeta{$BL>A0$^$?$O%F%-%9%H(B}|}|
+%
+% $B=DAH;~$N<g%^!<%/!J(B|p| $B;XDj;~!K$H$7$F;H$o$l$k7wE@$r;XDj$9$k!#(B
+% $B!N4{Dj(B = |sesame*|$B!O(B
+%
+% \item |\kentensubmarkintate{|\jmeta{$BL>A0$^$?$O%F%-%9%H(B}|}|
+%
+% $B=DAH;~$NI{%^!<%/!J(B|s| $B;XDj;~!K$H$7$F;H$o$l$k7wE@$r;XDj$9$k!#(B
+% $B!N4{Dj(B = |bullet*|$B!O(B
+%
+% \item |\kentenfontsetup{|\jmeta{$BL?Na(B}|}|
+%
+% $B7wE at MQ$N%U%)%s%H at ZBXL?Na$r at _Dj$9$k!#(B
+%
+% \item |\kentenintergap{|\jmeta{$B<B?t(B}|}|
+%
+% $B7wE@$H?FJ8;z$N4V$N6u$-!J?FJ8;zA43QC10L!K!#(B
+% $B!N4{Dj(B = 0$B!O(B
+%
+% \item |\kentensizeratio{|\jmeta{$B<B?t(B}|}|
+%
+% $B7wE@%5%$%:$N?FJ8;z%5%$%:$KBP$9$k3d9g!#(B
+% $B!N4{Dj(B = 0.5$B!O(B
+%
+% \end{itemize}
+%
+% $B7wE@$H%k%S$NF1;~IU2C$K4X$9$k at _Dj!#(B
+%
+% \begin{itemize}
+%
+% \item |\kentenrubycombination{|\jmeta{$BCM(B}|}|
+% $B7wE at L?Na$N?FJ8;zCf$G%k%SL?Na$,;H$o$l$?;~$N5sF0$r;XDj$9$k!#(B
+% $B!N4{Dj(B = |both|$B!O(B
+% \begin{itemize}
+% \item |ruby|$B!'(B $B%k%S$N$_$r=PNO$9$k!#(B
+% \item |both|$B!'(B $B%k%S$N30B&$K7wE@$r=PNO$9$k!#(B
+% \end{itemize}
+%
+% \item |\kentenrubyintergap{|\jmeta{$B<B?t(B}|}|
+%
+% $B7wE@$H%k%S$,F1$8B&$KIU$$$?;~$N4V$N6u$-!J?FJ8;zA43QC10L!K!#(B
+% $B!N4{Dj(B = 0$B!O(B
+%
+% \end{itemize}
+%
+%^^A------------------------------------
+%\iffalse
 % \section{$B>-Mh$N3HD%5!G=(B\<$B!JL$<BAu!K(B}
 %
 % $B!J$3$N at a$G$O!"$^$@<BAu$5$l$F$$$J$$$,!"(B
@@ -576,10 +824,15 @@
 % $B!N4{Dj(B = $B5v$5$J$$!O(B
 %
 % \end{itemize}
-%
+%\fi
+%^^A========================================================
+% \StopEventually
+% \newpage
 % \setlength{\parindent}{0pt}
+% \newcommand*{\cs}[1]{\texttt{\symbol{`\\}#1}}
 %
-% \section{$B<BAu(B}
+%^^A------------------------------------
+% \section{$B<BAu!J%k%S4XO"!K(B}
 %
 % \subsection{$BA0Ds%Q%C%1!<%8(B}
 %
@@ -1046,8 +1299,12 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \subsubsection{$B%k%S8F=P;~$N at _Dj(B}
+% \subsubsection{$B8F=P;~%Q%i%a%?!&JQ?t(B}
 %
+% $B0lHLE*$K!"FCDj$N%k%S!&7wE at L?Na$N8F=P$K8GM-$G$"$k(B
+% $B!J$D$^$j$=$NFbB&$K%M%9%H$5$l$?%k%S!&7wE at L?Na$K7Q>5$9$Y$-$G$J$$!K(B
+% $B%Q%i%a%?$O!"8F=P;~$NCM$rJL$KJ];}$7$F$*$/$Y$-$G$"$k!#(B
+%
 % \begin{macro}{\ifpxrr at bprotr}
 % \begin{macro}{\ifpxrr at aprotr}
 % $BFM=P$r5v$9$+H]$+!#(B
@@ -1196,8 +1453,21 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \subsection{$BJQ?t(B}
+% \begin{macro}{\pxrr at c@ruby at font}
+% \begin{macro}{\pxrr at c@size at ratio}
+% \begin{macro}{\pxrr at c@inter at gap}
+% $B0J2<$O!H%*%W%7%g%s$G;XDj$9$k!I0J30$N%Q%i%a%?$KBP1~$9$k$b$N!#(B
+%    \begin{macrocode}
+\let\pxrr at c@ruby at font\@undefined
+\let\pxrr at c@size at ratio\@undefined
+\let\pxrr at c@inter at gap\@undefined
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
+% \subsection{$B$=$NB>$NJQ?t(B}
+%
 % \begin{macro}{\pxrr at body@list}
 % $B?FJ8;zNs$N$?$a$K;H$&%j%9%H!#(B
 %    \begin{macrocode}
@@ -2121,6 +2391,9 @@
 % \begin{macro}{\pxrr at get@jchar at token}
 % |\pxrr at get@jchar at token\CS{|\jmeta{$B at 0?t(B}|}|\Means
 % $BFbItJ8;z%3!<%I$,(B\jmeta{$B at 0?t(B}$B$G$"$kOBJ8J8;z$N%H!<%/%s$rF@$k!#(B
+% \Note |.sty|$B%U%!%$%k$O40A4$K(BASCII$BJ8;z$@$1$K$9$kJ}?K$N$?$a!"(B
+% $BOBJ8J8;z$,I,MW$J>l9g$O$3$NJd=u%^%/%m$d(B |\pxrr at jchardef| $B$r(B
+% $BMxMQ$7$FJ#9g%3!<%ICM$+$i:n$j=P$9$3$H$K$J$k!#(B
 %
 % {\pTeX}$B7O$N>l9g!#(B|\kansuji| $B%H%j%C%/$rMxMQ$9$k!#(B
 %    \begin{macrocode}
@@ -2154,6 +2427,62 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\pxrr at zspace}
+% $BA43Q6uGrJ8;z!#(B
+% $BJ8;z$=$N$b$N$r%U%!%$%k$K4^$^$;$?$/$J$$$N$G(Bchardef$B$K$9$k!#(B
+%    \begin{macrocode}
+\pxrr at jchardef\pxrr at zspace=\pxrr at jc{2121:3000}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at jghost@char}
+% $BOBJ8%4!<%9%H=hM}$KMxMQ$9$kJ8;z!#(B
+% $B;z7A$,6u$G$"$j!"$+$D0lHL$N4A;z$HF1$85sF0$r<($9I,MW$,$"$k!#(B
+% $B<B:]$N%4!<%9%H=hM}$G$O;zI}$rAj;&$9$k=hM}$rF~$l$k0Y!"(B
+% $B;zI}$,%<%m$G$"$kI,MW$O$J$$!#(B
+%
+% $B$[$H$s$I$N>l9g!"A43Q6uGrJ8;z$G9=$o$J$$$,!"A43Q6uGrJ8;z$,(B
+% $BJ8;z%?%$%W(B0$B$G$J$$(BJFM$B$,;H$o$l$F$$$k>l9g$OLdBj$K$J$k!#(B
+%
+% {\upTeX}$B$N>l9g!"!H3HD%Id9f6u4V!I$NJ8;z%3!<%I$r;H$&!#(B
+% $B$9$J$o$A!"J8;z%3!<%I(B |"113000| $B$NJ8;z$O(BDVI$B$G$OJ8;z%3!<%I(B |"3000| $B$H(B
+% $B07$o$l$k$,!"!H(BBMP$B30!I$K$"$k$?$aI,$:J8;z%?%$%W(B0$B$K$J$k!#(B
+%    \begin{macrocode}
+\ifpxrr at in@uptex
+  \kchardef\pxrr at jghost@char="113000
+%    \end{macrocode}
+% {\LuaTeX}-ja$B$N>l9g!#(B
+% $BJ8=q at hF,$G!HA43Q6uGrJ8;z$,;H$($k$+!I$r8!::$7$F!"<:GT$7$?>l9g$O(B
+% $B!VOBJ8$N(BU+00A0$B!W$rBe$o$j$KMxMQ$9$k$3$H$K$9$k!#(B
+%    \begin{macrocode}
+\else\ifpxrr at in@luatexja
+  \let\pxrr at jghost@char\pxrr at zspace
+  \def\pxrr at jghost@check{%
+    \begingroup
+%      \ltjsetparameter{jaxspmode={\pxrr at zspace,3}}%
+%      \ltjsetparameter{xkanjiskip=\p@}%
+%      \ltjsetparameter{autoxspacing=false}%
+      \setbox\z@\hbox{\char"3001\char"3000}%
+%      \ltjsetparameter{autoxspacing=true}%
+      \setbox\tw@\hbox{\char"3001\inhibitglue\char"3000}%
+      \ifdim\wd\tw@=\wd\z@
+        \global\chardef\pxrr at jghost@char@="00A0
+        \gdef\pxrr at jghost@char{\ltjjachar\pxrr at jghost@char@}%
+      \fi
+    \endgroup
+  }
+  \AtBeginDocument{%
+    \pxrr at jghost@check
+  }
+%    \end{macrocode}
+% $B$=$l0J30$N>l9g$O!J;EJ}$,L5$$$N$G!KA43Q6uGr$rMQ$$$k!#(B
+%    \begin{macrocode}
+\else
+  \let\pxrr at jghost@char\pxrr at zspace
+\fi\fi
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\pxrr at x@K}
 % $BE,Ev$J4A;z!J<B:]$O!R0l!S!K$N%H!<%/%s!#(B
 %    \begin{macrocode}
@@ -2327,14 +2656,14 @@
 % \end{macro}
 %
 % \begin{macro}{\pxrr at get@prebreakpenalty}
-% |\pxrr at get@prebreakpenalty\CS{|\jmeta{$BJ8;z(B}|}|\Means
-% $BJ8;z$NA06XB'%Z%J%k%F%#CM$r at 0?t%l%8%9%?$KBeF~$9$k!#(B
+% |\pxrr at get@prebreakpenalty\CS{|\jmeta{$BJ8;z%3!<%I(B}|}|\Means
+% $BJ8;z$N8e6XB'%Z%J%k%F%#CM$r at 0?t%l%8%9%?$KBeF~$9$k!#(B
 %
 % {\pTeX}$B$N>l9g!"(B|\prebreakpenalty| $B$r;H$&!#(B
 %    \begin{macrocode}
 \ifpxrr at in@ptex
   \def\pxrr at get@prebreakpenalty#1#2{%
-    #1=\prebreakpenalty`#2\relax
+    #1=\prebreakpenalty#2\relax
   }
 %    \end{macrocode}
 %
@@ -2342,7 +2671,7 @@
 %    \begin{macrocode}
 \else\ifpxrr at in@luatexja
   \def\pxrr at get@prebreakpenalty#1#2{%
-    #1=\ltjgetparameter{prebreakpenalty}{`#2}\relax
+    #1=\ltjgetparameter{prebreakpenalty}{#2}\relax
   }
 %    \end{macrocode}
 %
@@ -2356,6 +2685,100 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\pxrr at get@postbreakpenalty}
+% |\pxrr at get@postbreakpenalty\CS{|\jmeta{$BJ8;z%3!<%I(B}|}|\Means
+% $BJ8;z$NA06XB'%Z%J%k%F%#CM$r at 0?t%l%8%9%?$KBeF~$9$k!#(B
+%
+% {\pTeX}$B$N>l9g!"(B|\postbreakpenalty| $B$r;H$&!#(B
+%    \begin{macrocode}
+\ifpxrr at in@ptex
+  \def\pxrr at get@postbreakpenalty#1#2{%
+    #1=\postbreakpenalty#2\relax
+  }
+%    \end{macrocode}
+%
+% \PKN{LuaTeX-ja}$B;HMQ;~$O!"(Bpostbreakpenalty $B%W%m%Q%F%#$rFI$_=P$9!#(B
+%    \begin{macrocode}
+\else\ifpxrr at in@luatexja
+  \def\pxrr at get@postbreakpenalty#1#2{%
+    #1=\ltjgetparameter{postbreakpenalty}{#2}\relax
+  }
+%    \end{macrocode}
+%
+% $B$=$l0J30$N>l9g$O%<%m$H$7$F07$&!#(B
+%    \begin{macrocode}
+\else
+  \def\pxrr at get@postbreakpenalty#1#2{%
+    #1=\z@
+  }
+\fi\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at check@punct at char}
+% |\pxrr at is@punct at char{|\jmeta{$BJ8;z%3!<%I(B}|}{|\jmeta{$BOBJ8%U%i%0(B}|}|\Means
+% $B;XDj$NJ8;z%3!<%I$NJ8;z$,!HLsJ*$G$"$k$+!I$rD4$Y$F!"(B
+% $B7k2L$r(B |\ifpxrr at ok| $B$KJV$9!#(B
+% \jmeta{$BOBJ8%U%i%0(B}$B$O!HBP>]$,(B{\pTeX}$B$NOBJ8$G$"$k!I>l9g$K(B1$B!"(B
+% $B$=$l0J30$O(B0$B!#(B
+%
+% {\pTeX}$B$N>l9g!"2$J8$J$i(B |\xspcode|$B!"OBJ8$J$i(B |\inhibitxspcode| $B$N(B
+% $BCM$r8+$F!"$=$l$,(B3$B0J30$J$iLsJ*$H8+$J$9!#(B
+%    \begin{macrocode}
+\ifpxrr at in@ptex
+  \def\pxrr at check@punct at char#1#2{%
+    \pxrr at okfalse
+    \ifcase#2\relax
+      \ifnum\xspcode#1=\thr@@\else
+        \pxrr at oktrue
+      \fi
+    \else
+      \ifnum\inhibitxspcode#1=\thr@@\else
+        \pxrr at oktrue
+      \fi
+    \fi
+  }
+%    \end{macrocode}
+%
+% \PKN{LuaTeX-ja}$B;HMQ;~$b4pK\E*$K(B{\pTeX}$B$HF1$8%m%8%C%/$r;H$&!#(B
+% $B$?$@$7(B\PKN{LuaTeX-ja}$B$G$O!VJ8;z%H!<%/%s$NOBJ8$H2$J8$N6hJL!W$H$$$&(B
+% $B35G0$,B8:_$7$J$$$?$a!"(B\jmeta{$BOBJ8%U%i%0(B}$B$OI,$:(B0$B$H$J$k!#(B
+% $B$=$7$F!"(B|\xspcode|$B!?(B|\inhibitxspcode| $B$KAjEv$9$k%Q%i%a%?$H$7$F$O!"(B
+% $B2$J8MQ$N(Balxspmode$B$HOBJ8MQ$N(Bjaxspmode$B$,0l1~$"$k$,!"(B
+% $B<B:]$K$OOBJ8$H2$J8$N6hJL$O$J$/$3$NN><T$OF15A$K$J$C$F$$$k!#(B
+% $B=>$C$F!"!V(Bjaxspmode$B$,(B3$B0J30$+!W$rD4$Y$k$3$H$K$9$k!#(B
+%    \begin{macrocode}
+\else\ifpxrr at in@luatexja
+  \def\pxrr at check@punct at char#1#2{%
+    \ifnum\ltjgetparameter{jaxspmode}{#1}=\thr@@
+      \pxrr at okfalse
+    \else
+      \pxrr at oktrue
+    \fi
+  }
+%    \end{macrocode}
+%
+% $B$=$l0J30$N>l9g$O%<%m$H$7$F07$&!#(B
+%    \begin{macrocode}
+\else
+  \def\pxrr at check@punct at char#1#2{%
+    \pxrr at okfalse
+  }
+\fi\fi
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at inhibitglue}
+% |\inhibitglue| $B$,Dj5A$5$l$F$$$k$J$i<B9T$9$k!#(B
+%    \begin{macrocode}
+\ifx\inhibitglue\@undefined
+  \let\pxrr at inhibitglue\relax
+\else
+  \let\pxrr at inhibitglue\inhibitglue
+\fi
+%    \end{macrocode}
+% \end{macro}
+%
 % \subsection{$B%Q%i%a%?@_Dj8x3+L?Na(B}
 %
 % \begin{macro}{\ifpxrr at in@setup}
@@ -3003,6 +3426,12 @@
   \if g\pxrr at mode\else
     \chardef\pxrr at evensp\@ne
   \fi
+%    \end{macrocode}
+% $B7wE@%k%SF1;~IU2C$N>l9g$ND4 at 0!#(B
+%    \begin{macrocode}
+    \ifpxrr at combo
+      \pxrr at ck@check at option
+    \fi
 }
 %    \end{macrocode}
 % \end{macro}
@@ -3071,7 +3500,7 @@
 %    \begin{macrocode}
 \def\pxrr at assign@fsize{%
   \@tempdima=\f at size\p@
-  \@tempdima\pxrr at size@ratio\@tempdima
+  \@tempdima\pxrr at c@size at ratio\@tempdima
   \edef\pxrr at ruby@fsize{\the\@tempdima}%
   \pxrr at get@zwidth\pxrr at body@zw
   \begingroup
@@ -3099,7 +3528,7 @@
   \advance\@tempdimb-\pxrr at htratio\@tempdimb
   \advance\@tempdima\@tempdimb
   \@tempdimb\pxrr at body@zw\relax
-  \advance\@tempdima\pxrr at inter@gap\@tempdimb
+  \advance\@tempdima\pxrr at c@inter at gap\@tempdimb
   \edef\pxrr at ruby@raise{\the\@tempdima}%
 %    \end{macrocode}
 % |\pxrr at ruby@lower| $B$NCM$r7W;;$9$k!#(B
@@ -3110,8 +3539,14 @@
   \@tempdimb\pxrr at htratio\@tempdimb
   \advance\@tempdima\@tempdimb
   \@tempdimb\pxrr at body@zw\relax
-  \advance\@tempdima\pxrr at inter@gap\@tempdimb
+  \advance\@tempdima\pxrr at c@inter at gap\@tempdimb
   \edef\pxrr at ruby@lower{\the\@tempdima}%
+%    \end{macrocode}
+% $B7wE@%k%SF1;~IU2C$N at _Dj!#(B
+%    \begin{macrocode}
+  \ifpxrr at combo
+    \pxrr at ck@assign at fsize
+  \fi
 }
 %    \end{macrocode}
 % \end{macro}
@@ -3123,7 +3558,7 @@
   \pxrr at without@macro at trace{%
     \let\rubyfontsize\pxrr at ruby@fsize
     \fontsize{\pxrr at ruby@fsize}{\z@}\selectfont
-    \pxrr at ruby@font
+    \pxrr at c@ruby at font
   }%
 }
 %    \end{macrocode}
@@ -3480,6 +3915,8 @@
 % #4$B$O6u(B
 \def\pxrr at compose@oneside at block@do#1#2#3#4{%
   \setbox\pxrr at boxa\pxrr at hbox{#2}%
+  \edef\pxrr at ck@body at natwd{\the\wd\pxrr at boxa}%
+  \let\pxrr at ck@locate\pxrr at locate@inner
   \setbox\pxrr at boxr\pxrr at hbox{%
     \pxrr at use@ruby at font
     #3%
@@ -3500,6 +3937,7 @@
         \let\pxrr at locate@temp\pxrr at locate@head
       \fi
     \fi
+    \let\pxrr at ck@locate\pxrr at locate@temp
     \pxrr at decompose{#2}%
     \edef\pxrr at natwd{\the\wd\pxrr at boxa}%
     \pxrr at evenspace@int\pxrr at locate@temp\pxrr at boxa\relax
@@ -3542,6 +3980,9 @@
       \lower\pxrr at ruby@lower\box\pxrr at boxr
     \fi
   }%
+  \ifnum \ifpxrr at combo\pxrr at ck@ruby at combo\else\z@\fi >\z@
+    \pxrr at ck@compose{#2}%
+  \fi
   \ht\z@\z@ \dp\z@\z@
   \@tempdima\wd\z@
   \setbox\pxrr at boxr\hbox{%
@@ -3572,6 +4013,8 @@
 % |\pxrr at boxb| $B$K2<B&%k%S$N=PNO$rJ];}$9$k!#(B
 %    \begin{macrocode}
   \setbox\pxrr at boxa\pxrr at hbox{#2}%
+  \edef\pxrr at ck@body at natwd{\the\wd\pxrr at boxa}%
+  \let\pxrr at ck@locate\pxrr at locate@inner
   \setbox\pxrr at boxr\pxrr at hbox{%
     \pxrr at use@ruby at font
     #3%
@@ -3607,6 +4050,7 @@
         \let\pxrr at locate@temp\pxrr at locate@head
       \fi
     \fi
+    \let\pxrr at ck@locate\pxrr at locate@temp
 %    \end{macrocode}
 % $B>eB&$H2<B&$N$I$A$i$N%k%S$,D9$$$+$K1~$8$F0z?t$rJQ$($F!"(B
 % |\pxrr at compose@twoside at block@sub| $B$r8F$S=P$9!#(B
@@ -3663,6 +4107,9 @@
     \kern-\@tempdima
     \lower\pxrr at ruby@lower\box\pxrr at boxb
   }%
+  \ifnum \ifpxrr at combo\pxrr at ck@ruby at combo\else\z@\fi >\z@
+    \pxrr at ck@compose{#2}%
+  \fi
   \ht\z@\z@ \dp\z@\z@
   \@tempdima\wd\z@
   \setbox\pxrr at boxr\hbox{%
@@ -3973,7 +4420,7 @@
   \pxrr at check@kinsoku at c#1#1%
 }
 \def\pxrr at check@kinsoku at c#1{%
-  \pxrr at get@prebreakpenalty\pxrr at cntr{#1}%
+  \pxrr at get@prebreakpenalty\pxrr at cntr{`#1}%
   \pxrr at tempb
 }
 %    \end{macrocode}
@@ -4392,6 +4839,29 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\pxrr at bind@param}
+% $B!H8F=P;~JQ?t!I$X$N%3%T!<$r9T$&!#(B
+%    \begin{macrocode}
+\def\pxrr at bind@param{%
+%    \end{macrocode}
+% $B7wE@%k%SF1;~IU2C%U%i%0$N=hM}!#(B
+% $B7wE at B&$,;XDj$7$?(B |apply at combo| $B$NCM$r!H8F=P;~%Q%i%a%?!I$N(B |pxrr at combo| $B$K(B
+% $B0\F0$5$;$k!#(B
+%    \begin{macrocode}
+  \ifpxrr at apply@combo
+    \pxrr at apply@combofalse
+    \pxrr at combotrue
+    \pxrr at ck@bind at param
+  \else
+    \pxrr at combofalse
+  \fi
+  \let\pxrr at c@ruby at font\pxrr at ruby@font
+  \let\pxrr at c@size at ratio\pxrr at size@ratio
+  \let\pxrr at c@inter at gap\pxrr at inter@gap
+}
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\pxrr at ruby@proc}
 % |\pxrr at ruby@proc{|\jmeta{$B?FJ8;zNs(B}|}{|\jmeta{$B%k%SJ8;zNs(B}|}|\Means
 % $B$3$l$,<jB3$NK\BN$H$J$k!#(B
@@ -4401,6 +4871,7 @@
 %    \end{macrocode}
 % $B%U%)%s%H%5%$%:$NJQ?t$r at _Dj$7$F!"(B
 %    \begin{macrocode}
+  \pxrr at bind@param
   \pxrr at assign@fsize
 %    \end{macrocode}
 % $B%*%W%7%g%s$r2r at O$9$k!#(B
@@ -4471,6 +4942,7 @@
 %    \end{macrocode}
 % $B%U%)%s%H%5%$%:$NJQ?t$r at _Dj$7$F!"(B
 %    \begin{macrocode}
+  \pxrr at bind@param
   \pxrr at assign@fsize
 %    \end{macrocode}
 % $B%*%W%7%g%s$r2r at O$9$k!#(B
@@ -5022,14 +5494,6 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\pxrr at zspace}
-% $BA43Q6uGrJ8;z!#(B
-% $BJ8;z$=$N$b$N$r%U%!%$%k$K4^$^$;$?$/$J$$$N$G(Bchardef$B$K$9$k!#(B
-%    \begin{macrocode}
-\pxrr at jchardef\pxrr at zspace=\pxrr at jc{2121:3000}
-%    \end{macrocode}
-% \end{macro}
-%
 % \begin{macro}{\pxrr at jprologue}
 % $BOBJ8%k%SMQ$N3+;O=hM}!#(B
 %    \begin{macrocode}
@@ -5039,7 +5503,8 @@
 % $B%4!<%9%HJ8;z!JA43Q6uGr!K$G$"$k$3$H$,4NMW$G$"$k!#(B
 %    \begin{macrocode}
   \ifpxrr at jghost
-    \pxrr at zspace
+    \pxrr at jghost@char
+    \pxrr at inhibitglue
   \fi
 %    \end{macrocode}
 % $B%k%S$N=hM}$NK\BN$OA4$F$3$N%0%k!<%W$NCf$G9T$o$l$k!#(B
@@ -5051,7 +5516,7 @@
 % $B=PNO$7$?A43Q6uGr$NI}$@$1La$7$F$*$/!#(B
 %    \begin{macrocode}
     \ifpxrr at jghost
-      \setbox\pxrr at boxa\hbox{\pxrr at zspace}%
+      \setbox\pxrr at boxa\hbox{\pxrr at jghost@char}%
       \kern-\wd\pxrr at boxa
     \fi
 }
@@ -5135,7 +5600,7 @@
 %    \begin{macrocode}
 \def\pxrr at jepilogue{%
     \ifpxrr at jghost
-      \setbox\pxrr at boxa\hbox{\pxrr at zspace}%
+      \setbox\pxrr at boxa\hbox{\pxrr at jghost@char}%
       \kern-\wd\pxrr at boxa
     \fi
 %    \end{macrocode}
@@ -5143,7 +5608,8 @@
 %    \begin{macrocode}
   \endgroup
   \ifpxrr at jghost
-    \pxrr at zspace
+    \pxrr at inhibitglue
+    \pxrr at jghost@char
   \fi
 }
 %    \end{macrocode}
@@ -5226,6 +5692,1580 @@
 }
 %    \end{macrocode}
 %
+%^^A------------------------------------
+% \section{$B<BAu!J7wE at 4XO"!K(B}
+%
+% \subsection{$B%(%i!<%a%C%;!<%8(B}
+%
+% $B;XDj$NL>A0$N7wE at J8;z$,L$EPO?$N>l9g!#(B
+%    \begin{macrocode}
+\def\pxrr at warn@na at kmark#1{%
+  \pxrr at warn{Unavailable kenten mark '#1'}%
+}
+%    \end{macrocode}
+%
+% $B%Q%i%a%?@_DjL?Na$GL58z$JCM$,;XDj$5$l$?>l9g!#(B
+%    \begin{macrocode}
+\def\pxrr at err@invalid at value#1{%
+  \pxrr at error{Invalid value '#1'}%
+      {\@eha}%
+}
+%    \end{macrocode}
+%
+% \subsection{$B%Q%i%a%?(B}
+%
+% \subsubsection{$BA4HL at _Dj(B}
+%
+% \begin{macro}{\pxrr at k@ymark}
+% $B2#AH$N<g$N7wE@%^!<%/$N%3!<%I!#(B
+%    \begin{macrocode}
+\let\pxrr at k@ymark\@undefined
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@ysmark}
+% $B2#AH$NI{$N7wE@%^!<%/$N%3!<%I!#(B
+%    \begin{macrocode}
+\let\pxrr at k@ysmark\@undefined
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@tmark}
+% $B=DAH$N<g$N7wE@%^!<%/$N%3!<%I!#(B
+%    \begin{macrocode}
+\let\pxrr at k@tmark\@undefined
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@tsmark}
+% $B=DAH$NI~$N7wE@%^!<%/$N%3!<%I!#(B
+%    \begin{macrocode}
+\let\pxrr at k@tsmark\@undefined
+%    \end{macrocode}
+% \end{macro}
+%
+% $B7wE@%^!<%/$N=i4|CM$N at _Dj!#(B
+%    \begin{macrocode}
+\AtEndOfPackage{%
+  \pxrr at k@get at mark\pxrr at k@ymark{bullet*}%
+  \pxrr at k@get at mark\pxrr at k@ysmark{sesame*}%
+  \pxrr at k@get at mark\pxrr at k@tmark{sesame*}%
+  \pxrr at k@get at mark\pxrr at k@tsmark{bullet*}%
+}
+%    \end{macrocode}
+%
+% \begin{macro}{\pxrr at k@ruby at font}
+% $B7wE at MQ%U%)%s%H at ZBXL?Na!#(B
+%    \begin{macrocode}
+\let\pxrr at k@ruby at font\@empty
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@size at ratio}
+% $B7wE at J8;z%5%$%:!#(B
+% $B!J(B|\kentensizeratio|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+%    \begin{macrocode}
+\def\pxrr at k@size at ratio{0.5}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr at k@ghost}
+% $B%4!<%9%H=hM}$r9T$&$+!#(B
+% $B%9%$%C%A!#(B
+% \Note $B7wE@$G$OOBJ8%4!<%9%H=hM}$rI,$:9T$&!#(B
+%    \begin{macrocode}
+\newif\ifpxrr at k@ghost \pxrr at k@ghosttrue
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@inter at gap}
+% $B7wE@$H?FJ8;z$N4V$N6u$-(B
+% $B!J(B|\kentenintergap|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+%    \begin{macrocode}
+\def\pxrr at k@inter at gap{0}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@ruby at inter@gap}
+% $B7wE@$H%k%S$N4V$N6u$-(B
+% $B!J(B|\kentenrubyintergap|$B!K!#(B
+% $B<B?tCM%^%/%m!#(B
+%    \begin{macrocode}
+\def\pxrr at k@ruby at inter@gap{0}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@d at side}
+% $B7wE@$r?FJ8;z$N>e2<$N$I$A$i$KIU$9$+!#(B
+% 0 = $B>eB&!((B1 = $B2<B&!#(B
+% |\kentensetup| $B$N(B |P|$B!?(B|S| $B$N at _Dj!#(B
+% $B at 0?tDj?t!#(B
+%    \begin{macrocode}
+\chardef\pxrr at k@d at side=0
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@d at mark}
+% $B7wE@%^!<%/$N<oN`!#(B
+% 0 = $B<g!((B1 = $BI{!#(B
+% |\kentensetup| $B$N(B |p|$B!?(B|s| $B$N at _Dj!#(B
+% $B at 0?tDj?t!#(B
+%    \begin{macrocode}
+\chardef\pxrr at k@d at mark=0
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@ruby at combo}
+% $B%k%S$H7wE@$,F1;~$KE,MQ$5$l$?>l9g$N5sF0!#(B
+% 0 = $B%k%S$@$1=PNO!((B1 = $B%k%S$N>e$K7wE@!JF1;~IU2C!K!#(B
+% |\kentenrubycombination| $B$N at _DjCM$KBP1~$9$k!#(B
+% $B at 0?tDj?t!#(B
+%    \begin{macrocode}
+\chardef\pxrr at k@ruby at combo=1
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@d at full}
+% $BLsJ*$K$b7wE@$rIU2C$9$k$+!#(B
+% 0 = $BL58z!((B1 = $BM-8z!#(B
+% |\kentensetup| $B$N(B |f|$B!?(B|F| $B$N at _Dj!#(B
+% $B at 0?tDj?t!#(B
+%    \begin{macrocode}
+\chardef\pxrr at k@d at full=0
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B8F=P;~$N at _Dj(B}
+%
+% |\kenten| $B$N(B |P|$B!?(B|S| $B$N at _Dj$O!"(B|\pxrr at side| $B$r%k%S$H6&MQ$9$k!#(B
+%
+% \begin{macro}{\pxrr at k@mark}
+% $B7wE@%^!<%/$N<oN`!#(B
+% 0 = $B<g!((B1 = $BI{!#(B
+% |\kenten| $B$N(B |p|$B!?(B|s| $B$N at _Dj!#(B
+% $B at 0?tDj?t!#(B
+%    \begin{macrocode}
+\chardef\pxrr at k@mark=0
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@full}
+% $BLsJ*$K$b7wE@$rIU2C$9$k$+!#(B
+% 0 = $BL58z!((B1 = $BM-8z!#(B
+% |\kenten| $B$N(B |f|$B!?(B|F| $B$N at _Dj!#(B
+% $B at 0?tDj?t!#(B
+%    \begin{macrocode}
+\chardef\pxrr at k@full=0
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@the at mark}
+% $BE,MQ$5$l$k7wE@%^!<%/$NL?Na!#(B
+%    \begin{macrocode}
+\let\pxrr at k@the at mark\relax
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{$BJd=u<jB3(B}
+%
+% \subsubsection{\cs{UTF}$BL?NaBP1~(B}
+%
+% \begin{macro}{\ifpxrr at avail@UTF}
+% |\UTF| $BL?Na$,MxMQ$G$-$k$+!#(B
+% $B%9%$%C%A!#(B
+%    \begin{macrocode}
+\newif\ifpxrr at avail@UTF
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at decide@avail at UTF}
+% |\ifpxrr at avail@UTF| $B$NCM$r3NDj$5$;$k!#(B
+%    \begin{macrocode}
+\def\pxrr at decide@avail at UTF{%
+  \global\let\pxrr at decide@avail at UTF\relax
+  \ifx\UTF\@undefined \global\pxrr at avail@UTFfalse
+  \else \global\pxrr at avail@UTFtrue
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B%j%9%HJ,2r(B}
+%
+% \begin{macro}{\pxrr at k@decompose}
+% |\pxrr at k@decompose{|\jmeta{$B%F%-%9%H(B}|}|\Means
+% $B%F%-%9%H!J7wE at L?Na$N0z?t!K$rJ,2r$7$?7k2L$N7wE at 9`L\%j%9%H(B
+% $B$r(B |\pxrr at res| $B$KJV$9!#(B
+% \Note $B7wE at 9`L\%j%9%H$N7A<0(B\Means\par
+% |\pxrr at entry|[|@XXX|]|{|\jmeta{$B0z?t(B}|}|$B!D!D(B
+% |\pxrr at entry|[|@XXX|]|{|\jmeta{$B0z?t(B}|}||\pxrr at post|
+%    \begin{macrocode}
+\def\pxrr at k@decompose#1{%
+  \let\pxrr at res\@empty
+  \pxrr at cntr=\z@
+  \pxrr at k@decompose at loopa#1\pxrr at end
+}
+\def\pxrr at k@decompose at loopa{%
+  \futurelet\pxrr at token\pxrr at k@decompose at loopb
+}
+\def\pxrr at k@decompose at loopb{%
+  \pxrr at cond\ifx\pxrr at token\pxrr at end\fi{%
+    \pxrr at appto\pxrr at res{\pxrr at post}%
+  }{\pxrr at if@kspan at cmd\pxrr at token{%
+    \pxrr at k@decompose at special\pxrr at k@decompose at kspan
+  }{\pxrr at if@ruby at cmd\pxrr at token{%
+    \pxrr at k@decompose at special\pxrr at k@decompose at ruby
+  }{\pxrr at if@truby at cmd\pxrr at token{%
+    \pxrr at k@decompose at special\pxrr at k@decompose at truby
+  }{\pxrr at if@kenten at cmd\pxrr at token{%
+    \pxrr at k@decompose at special\pxrr at k@decompose at kenten
+  }{\pxrr at cond\ifx\pxrr at token\@sptoken\fi{%
+    \pxrr at k@decompose at loope
+  }{%
+    \pxrr at setok{\pxrr at ifx{\pxrr at token\bgroup}}%
+    \pxrr at k@decompose at loopc
+  }}}}}}%
+}
+\def\pxrr at k@decompose at loopc#1{%
+  \pxrr at appto\pxrr at res{\pxrr at entry}%
+  \ifpxrr at ok
+    \pxrr at appto\pxrr at res{{{#1}}}%
+  \else
+    \pxrr at appto\pxrr at res{{#1}}%
+  \fi
+  \pxrr at k@decompose at loopd
+}
+\def\pxrr at k@decompose at loopd{%
+  \advance\pxrr at cntr\@ne
+  \pxrr at k@decompose at loopa
+}
+\expandafter\def\expandafter\pxrr at k@decompose at loope\space{%
+  \pxrr at okfalse
+  \pxrr at k@decompose at loopc{ }%
+}
+\def\pxrr at k@decompose at special#1#2#{%
+  #1{#2}%
+}
+\def\pxrr at k@decompose at kspan#1#2{%
+  \pxrr at appto\pxrr at res{\pxrr at entry@kspan{#1{#2}}}%
+  \pxrr at k@decompose at loopd
+}
+\def\pxrr at k@decompose at ruby#1#2#3{%
+  \pxrr at appto\pxrr at res{\pxrr at entry@ruby{#1{#2}{#3}}}%
+  \pxrr at k@decompose at loopd
+}
+\def\pxrr at k@decompose at truby#1#2#3#4{%
+  \pxrr at appto\pxrr at res{\pxrr at entry@ruby{#1{#2}{#3}{#4}}}%
+  \pxrr at k@decompose at loopd
+}
+\def\pxrr at k@decompose at kenten#1#2{%
+  \pxrr at appto\pxrr at res{\pxrr at entry@kenten{#1{#2}}}%
+  \pxrr at k@decompose at loopd
+}
+\def\pxrr at cmd@ruby{\jruby}
+\def\pxrr at cmd@kenten{\jkenten}
+\def\pxrr at if@ruby at cmd#1{%
+  \if \ifcat\noexpand#1\relax
+        \ifx#1\pxrr at cmd@ruby T%
+        \else\ifx#1\jruby T%
+        \else\ifx#1\aruby T%
+        \else F%
+        \fi\fi\fi
+      \else F%
+      \fi T\expandafter\@firstoftwo
+  \else \expandafter\@secondoftwo
+  \fi
+}
+\def\pxrr at if@truby at cmd#1{%
+  \if \ifcat\noexpand#1\relax
+        \ifx#1\truby T%
+        \else\ifx#1\atruby T%
+        \else F%
+        \fi\fi
+      \else F%
+      \fi T\expandafter\@firstoftwo
+  \else \expandafter\@secondoftwo
+  \fi
+}
+\def\pxrr at if@kspan at cmd#1{%
+  \pxrr at cond\ifx#1\kspan\fi
+}
+\def\pxrr at if@kenten at cmd#1{%
+  \if \ifcat\noexpand#1\relax
+        \ifx#1\pxrr at cmd@kenten T%
+        \else\ifx#1\jkenten T%
+        \else F%
+        \fi\fi
+      \else F%
+      \fi T\expandafter\@firstoftwo
+  \else \expandafter\@secondoftwo
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%Q%i%a%?@_Dj8x3+L?Na(B}
+%
+% \begin{macro}{\kentensetup}
+% |\pxrr at k@parse at option| $B$G2r at O$7$?8e!"@_DjCM$rA4HL at _Dj$K(B
+% $B%3%T!<$9$k!#(B
+%    \begin{macrocode}
+\newcommand*\kentensetup[1]{%
+  \pxrr at in@setuptrue
+  \pxrr at fatal@errorfalse
+  \pxrr at k@parse at option{#1}%
+  \ifpxrr at fatal@error\else
+    \let\pxrr at k@d at side\pxrr at side
+    \let\pxrr at k@d at mark\pxrr at k@mark
+    \let\pxrr at k@d at full\pxrr at k@full
+  \fi
+%    \end{macrocode}
+% |\ifpxrr at in@setup| $B$r56$KLa$9!#(B
+% $B$?$@$7(B |\ifpxrr at fatal@error| $B$O=q$-49$($i$l$?$^$^$G$"$k$3$H$KCm0U!#(B
+%    \begin{macrocode}
+  \pxrr at in@setupfalse
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\kentenfontsetup}
+% $BBP1~$9$k%Q%i%a%?$r at _Dj$9$k!#(B
+%    \begin{macrocode}
+\newcommand*\kentenfontsetup{}
+\def\kentenfontsetup#{%
+  \def\pxrr at k@ruby at font
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\kentensizeratio}
+% $BBP1~$9$k%Q%i%a%?$r at _Dj$9$k!#(B
+%    \begin{macrocode}
+\newcommand*\kentensizeratio[1]{%
+  \edef\pxrr at k@size at ratio{#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\kentenintergap}
+% $BBP1~$9$k%Q%i%a%?$r at _Dj$9$k!#(B
+%    \begin{macrocode}
+\newcommand*\kentenintergap[1]{%
+  \edef\pxrr at k@inter at gap{#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\kentenrubyintergap}
+% $BBP1~$9$k%Q%i%a%?$r at _Dj$9$k!#(B
+%    \begin{macrocode}
+\newcommand*\kentenrubyintergap[1]{%
+  \edef\pxrr at k@ruby at inter@gap{#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\kentenmarkinyoko}
+% \begin{macro}{\kentensubmarkinyoko}
+% \begin{macro}{\kentenmarkintate}
+% \begin{macro}{\kentensubmarkintate}
+% $BBP1~$9$k%Q%i%a%?$r at _Dj$9$k!#(B
+%    \begin{macrocode}
+\newcommand*\kentenmarkinyoko[1]{%
+  \pxrr at k@get at mark\pxrr at k@ymark{#1}%
+}
+\newcommand*\kentensubmarkinyoko[1]{%
+  \pxrr at k@get at mark\pxrr at k@ysmark{#1}%
+}
+\newcommand*\kentenmarkintate[1]{%
+  \pxrr at k@get at mark\pxrr at k@tmark{#1}%
+}
+\newcommand*\kentensubmarkintate[1]{%
+  \pxrr at k@get at mark\pxrr at k@tsmark{#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\kentenrubycombination}
+% $BBP1~$9$k%Q%i%a%?$r at _Dj$9$k!#(B
+%    \begin{macrocode}
+\chardef\pxrr at k@ruby at combo@ruby=0
+\chardef\pxrr at k@ruby at combo@both=1
+\newcommand*\kentenrubycombination[1]{%
+  \pxrr at letcs\pxrr at tempa{pxrr at k@ruby at combo@#1}%
+  \ifx\pxrr at tempa\relax
+    \pxrr at err@invalid at value{#1}%
+  \else
+    \let\pxrr at k@ruby at combo\pxrr at tempa
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B7wE at J8;z(B}
+%
+% \begin{macro}{\pxrr at k@declare at mark}
+% |\pxrr at k@declare at mark{|\jmeta{$BL>A0(B}|}{|\jmeta{$BK\BN(B}|}|\Means
+% $B7wE@%^!<%/L?Na$rDj5A$9$k!#(B
+%    \begin{macrocode}
+\def\pxrr at k@declare at mark#1{%
+  \global\@namedef{pxrr at k@mark@@#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@let at mark}
+% |\pxrr at k@declare at mark{|\jmeta{$BL>A0(B}|}\CS|\Means
+% $B7wE@%^!<%/L?Na$r(B |\let| $B$GDj5A$9$k!#(B
+%    \begin{macrocode}
+\def\pxrr at k@let at mark#1{%
+  \global\pxrr at cslet{pxrr at k@mark@@#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@get at mark}
+% |\pxrr at k@get at mark\CS{|\jmeta{$BL>A0$^$?$ODj5AK\BN(B}|}|\Means
+% $B;XDj$N7wE@%^!<%/L?Na$r(B |\CS| $B$KBeF~$9$k!#(B
+% $BBh(B2$B0z?t$N at hF,%H!<%/%s$,(BASCII$B1Q;z$N>l9g$OL>A0$H8+$J$7!"(B
+% $B$=$l0J30$ODj5AK\BN$N%3!<%I$H8+$J$9!#(B
+%    \begin{macrocode}
+\def\pxrr at k@get at mark#1#2{%
+  \futurelet\pxrr at token\pxrr at k@get at mark@a#2\pxrr at nil#1%
+}
+\def\pxrr at k@get at mark@a{%
+  \pxrr at cond\ifcat A\noexpand\pxrr at token\fi{%
+    \pxrr at k@get at mark@c
+  }{%else
+    \pxrr at k@get at mark@b
+  }%
+}
+\def\pxrr at k@get at mark@b#1\pxrr at nil#2{%
+  \def#2{#1}%
+}
+\def\pxrr at k@get at mark@c#1#2\pxrr at nil#3{%
+  \ifnum`#1<128
+    \pxrr at letcs\pxrr at tempa{pxrr at k@mark@@#1#2}%
+    \ifx\pxrr at tempa\relax
+      \pxrr at warn@na at kmark{#1#2}%
+    \else
+      \let#3\pxrr at tempa
+    \fi
+  \else
+    \pxrr at k@get at mark@b#1#2\pxrr at nil#3%
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@declare at mark@char}
+% |\pxrr at k@declare at mark@char\CS{|\jmeta{$BFs=E%3!<%I(B}|}|\Means
+% $B;XDj$N%3!<%ICM$NJ8;z$N!JOBJ8!K(Bchardef$B$r(B |\CS| $B$KBeF~$9$k!#(B
+% $B$?$@$7(B{\pTeX}$B$G(BJIS$B$KL5$$J8;z(B
+% $B!JJX59E*$KOBJ86uGr$N(BJIS$B%3!<%ICM(B|2121|$B$GI=$9!K(B
+% $B$N>l9g$OBe$o$j$K(B |\pxrr at k@char at UTF| $B$rMxMQ$9$k!#(B
+%    \begin{macrocode}
+\def\pxrr at k@declare at mark@char#1#2{%
+  \pxrr at k@declare at mark@char at a{#1}#2\pxrr at end
+}
+\def\pxrr at k@declare at mark@char at a#1#2:#3\pxrr at end{%
+  \pxrr at jchardef\pxrr at tempa\pxrr at jc{#2:#3}%
+  \ifnum\pxrr at tempa=\pxrr at zspace
+%    \end{macrocode}
+% $B%(%s%8%s$,(B{\pTeX}$B$G$+$D(BJIS$B$KL5$$J8;z$G$"$k>l9g!#(B
+%    \begin{macrocode}
+    \pxrr at k@declare at mark{#1}{\pxrr at k@char at UTF{#1}{#3}}%
+  \else
+    \pxrr at k@let at mark{#1}\pxrr at tempa
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@char at UTF}
+% |\pxrr at k@char at UTF{|\jmeta{$BL>A0(B}|}{|\jmeta{Unicode$BCM(B}|}|\Means
+% |\UTF{|\jmeta{Unicode$BCM(B}|}| $B$r<B9T$9$k$,!"(B
+% |\UTF| $B$,MxMQIT2D$N>l9g$O!"(B
+% $B!J:G=i$N(B1$B2s$@$1!K7Y9p$7$?>e$G2?$b=PNO$7$J$$!#(B
+%    \begin{macrocode}
+\def\pxrr at k@char at UTF#1#2{%
+  \pxrr at decide@avail at UTF
+  \ifpxrr at avail@UTF
+    \pxrr at k@declare at mark{#1}{\UTF{#2}}%
+    \UTF{#2}%
+  \else
+    \pxrr at k@let at mark{#1}\@empty
+    \pxrr at warn@na at kmark{#1}%
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% $BI8=`%5%]!<%H$N7wE@%^!<%/$NDj5A!#(B
+%    \begin{macrocode}
+\pxrr at k@declare at mark@char{bullet}  {2121:2022}
+\pxrr at k@declare at mark@char{triangle}{2225:25B2}
+\pxrr at k@declare at mark@char{Triangle}{2224:25B3}
+\pxrr at k@declare at mark@char{fisheye} {2121:25C9}
+\pxrr at k@declare at mark@char{Circle}  {217B:25CB}
+\pxrr at k@declare at mark@char{bullseye}{217D:25CE}
+\pxrr at k@declare at mark@char{circle}  {217C:25CF}
+\pxrr at k@declare at mark@char{Bullet}  {2121:25E6}
+\pxrr at k@declare at mark@char{sesame}  {2121:FE45}
+\pxrr at k@declare at mark@char{Sesame}  {2121:FE46}
+\pxrr at jchardef\pxrr at ja@dot=\pxrr at jc{2126:30FB}
+\pxrr at jchardef\pxrr at ja@comma=\pxrr at jc{2122:3001}
+\pxrr at k@declare at mark{bullet*}{%
+  \pxrr at dima=\pxrr at ruby@zw\relax
+  \hb at xt@\pxrr at dima{%
+    \kern-.5\pxrr at dima
+    \pxrr at if@in at tate{}{\lower.38\pxrr at dima}%
+    \hbox{%
+      \pxrr at dima=\f at size\p@
+      \fontsize{2\pxrr at dima}{\z@}\selectfont
+      \pxrr at ja@dot
+    }%
+    \hss
+  }%
+}
+\pxrr at k@declare at mark{sesame*}{%
+  \pxrr at dima=\pxrr at ruby@zw\relax
+  \hb at xt@\pxrr at dima{%
+    \pxrr at if@in at tate{\kern.1\pxrr at dima}{\kern.05\pxrr at dima}%
+    \pxrr at if@in at tate{\lower.85\pxrr at dima}{\raise.3\pxrr at dima}%
+    \hbox{%
+      \pxrr at dima=\f at size\p@
+      \fontsize{2.4\pxrr at dima}{\z@}\selectfont
+      \pxrr at ja@comma
+    }%
+    \hss
+  }%
+}
+%    \end{macrocode}
+%
+% \subsection{$B7wE@%*%W%7%g%s2r at O(B}
+%
+% \begin{macro}{\pxrr at k@parse at option}
+% |\pxrr at k@parse at option{|\jmeta{$B%*%W%7%g%s(B}|}|\Means
+% \jmeta{$B%*%W%7%g%s(B}$B$r2r at O$7!"(B
+% |\pxrr at side| $B$d(B |\pxrr at k@mark| $BEy$N%Q%i%a%?$r at _Dj$9$k!#(B
+%    \begin{macrocode}
+\def\pxrr at k@parse at option#1{%
+  \edef\pxrr at tempa{#1}%
+  \let\pxrr at side\pxrr at k@d at side
+  \let\pxrr at k@mark\pxrr at k@d at mark
+  \let\pxrr at k@full\pxrr at k@d at full
+  \expandafter\pxrr at k@parse at option@loop\pxrr at tempa @\pxrr at end
+}
+\def\pxrr at k@parse at option@loop#1{%
+%    \end{macrocode}
+% $B7wE@%*%W%7%g%s$N2r at O4o$O!HM-8B>uBV!I$r;}$?$J$$$N$G(B
+% $BHs>o$KC1=c$G$"$k!#(B
+%    \begin{macrocode}
+  \pxrr at letcs\pxrr at tempa{pxrr at k@po at PR@#1}%
+  \pxrr at cond\ifx\pxrr at tempa\relax\fi{%
+    \pxrr at fatal@knx at letter{#1}%
+    \pxrr at k@parse at option@exit
+  }{%
+    \pxrr at tempa
+    \pxrr at k@parse at option@loop
+  }%
+}
+\def\pxrr at k@parse at option@exit#1\pxrr at end{%
+  \ifpxrr at in@setup\else
+    \pxrr at k@check at option
+%    \end{macrocode}
+% $B$3$3$G(B |\pxrr at k@the at mark| $B$rE, at Z$KDj5A$9$k!#(B
+%    \begin{macrocode}
+    \pxrr at if@in at tate{%
+      \ifcase\pxrr at k@mark \let\pxrr at k@the at mark\pxrr at k@tmark
+      \or \let\pxrr at k@the at mark\pxrr at k@tsmark
+      \fi
+    }{%
+      \ifcase\pxrr at k@mark \let\pxrr at k@the at mark\pxrr at k@ymark
+      \or \let\pxrr at k@the at mark\pxrr at k@ysmark
+      \fi
+    }%
+  \fi
+}
+\def\pxrr at k@po at PR@@{%
+  \pxrr at k@parse at option@exit
+}
+\def\pxrr at k@po at PR@P{%
+  \chardef\pxrr at side\z@
+}
+\def\pxrr at k@po at PR@S{%
+  \chardef\pxrr at side\@ne
+}
+\def\pxrr at k@po at PR@p{%
+  \chardef\pxrr at k@mark\z@
+}
+\def\pxrr at k@po at PR@s{%
+  \chardef\pxrr at k@mark\@ne
+}
+\def\pxrr at k@po at PR@F{%
+  \chardef\pxrr at k@full\z@
+}
+\def\pxrr at k@po at PR@f{%
+  \chardef\pxrr at k@full\@ne
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%*%W%7%g%s at 09g@-8!::(B}
+%
+% $B:#$N$H$3$m8!::$9$Y$-E@$,$J$$!#(B
+%    \begin{macrocode}
+\def\pxrr at k@check at option{%
+}
+%    \end{macrocode}
+%
+% \subsection{$B%V%m%C%/Kh$NAHHG(B}
+%
+% \begin{macro}{\pxrr at k@compose at block}
+% |\pxrr at k@compose at block{|\jmeta{$B?FJ8;z%V%m%C%/(B}|}|^^A
+% |{|\jmeta{$B7wE@$N8D?t(B}|}|\Means
+% 1$B$D$N%V%m%C%/$NAHHG=hM}!#(B
+% $B%\%C%/%9(B |\pxrr at boxb| $B$K7wE@(B1$B$D$rAHHG$7$?$b$N$,F~$C$F$$$k(B
+% $BI,MW$,$"$k!#(B
+% $B$J$*!"7wE@$O%<%mI}$KDY$7$?7A$G07$&A0Ds$N$?$a!"(B
+% |\pxrr at boxb| $B$NI}$O%<%m$G$J$$$H$$$1$J$$!#(B
+%
+% $B4pK\E*$K!"%k%SMQ$N(B |\pxrr at compose@oneside at block| $B$rHs>o$K4JN,2=(B
+% $B$7$?=hM}$K$J$C$F$$$k!#(B
+%    \begin{macrocode}
+\def\pxrr at k@compose at block#1#2{%
+  \setbox\pxrr at boxa\pxrr at hbox{#1}%
+%    \end{macrocode}
+% |\pxrr at evenspace@int| $B$r;H$&$?$a$KDTjm$r9g$o$;$k!#(B
+% $B$9$J$o$A!"(B|\copy\pxrr at boxb| $B$r7wE at 8D?tJ,$@$1H?I|$7$?(B
+% $B%j%9%H$r(B |\pxrr at res| $B$KF~$l$F!"!H7wE@$N<+A3D9!I$K(B
+% $BEv$?$k(B |\pxrr at natwd| $B$r%<%m$H$9$k!#(B
+%    \begin{macrocode}
+  \pxrr at k@make at rep@list{\copy\pxrr at boxb}{#2}%
+  \let\pxrr at natwd\pxrr at zeropt
+  \pxrr at evenspace@int\pxrr at locate@inner\pxrr at boxr
+       \relax{\wd\pxrr at boxa}%
+  \setbox\z@\hbox{%
+    \ifnum\pxrr at side=\z@
+      \raise\pxrr at ruby@raise\box\pxrr at boxr
+    \else
+      \lower\pxrr at ruby@lower\box\pxrr at boxr
+    \fi
+  }%
+  \ht\z@\z@ \dp\z@\z@
+  \@tempdima\wd\z@
+  \setbox\pxrr at boxr\hbox{%
+    \box\z@
+    \kern-\@tempdima
+    \box\pxrr at boxa
+  }%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@make at rep@list}
+% |\pxrr at k@make at rep@list{|\jmeta{$BMWAG(B}|}{|\jmeta{$B2s?t(B}|}|\Means
+% $BMWAG$r;XDj$N2s?t$@$1H?I|$7$?%j%9%H$r(B |\pxrr at res| $B$KBeF~$9$k!#(B
+%    \begin{macrocode}
+\def\pxrr at k@make at rep@list#1#2{%
+  \def\pxrr at res{\pxrr at pre{#1}}%
+  \pxrr at cntr=#2\relax
+  \ifnum\pxrr at cntr>\@ne
+    \@tempcnta\pxrr at cntr \advance\@tempcnta\m at ne
+    \@whilenum{\@tempcnta>\z@}\do{%
+      \pxrr at appto\pxrr at res{\pxrr at inter{#1}}%
+      \advance\@tempcnta\m at ne
+    }%
+  \fi
+  \pxrr at appto\pxrr at res{\pxrr at post}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B7wE at 9`L\(B}
+%
+% \begin{itemize}
+% \item $B7wE at 9`L\%j%9%H(B\Means
+%   $B%F%-%9%H$r(B |\pxrr at k@decompose| $B$GJ,2r$7$?7k2L$N%j%9%H!#(B
+% \item $B7wE at 9`L\(B\Means
+%   $B7wE@%j%9%H$K4^$^$l$k(B |\pxrr at entry|[|@XXX|]|{...}| $B$H$$$&7A<0$N$3$H!#(B
+%   $B7wE at 9`L\$OD>@\$K<B9T$9$k!J=PNO$9$k!K$3$H$,$G$-$k!#(B
+% \item $B7wE@%V%m%C%/(B\Means
+%   $B0l$D$N!TJ8;z!U$K7wE@$rIU2C$7$F=PNO$7$?$b$N!#(B
+% \item $B;2>HJ8;z%3!<%I(B\Means
+%   $B7wE at 9`L\$N=PNO$NA08e$N6XB'%Z%J%k%F%#$N07$$$K$*$$$F!"(B
+%   $B!V$"$kJ8;z$HF1Ey!W$H07$&>l9g$N!"$=$NJ8;z$NJ8;z%3!<%I!#(B
+% \end{itemize}
+%
+% $B"(8=>u$G$O!"$^$:(B |\pxrr at kenten@entry at XXX| $B$H$$$&%^%/%m$rDj5A$7$F(B
+% $B7wE at L?Na$N<B9T;~$K$=$l$r(B |\pxrr at entry@XXX| $B$K%3%T!<$9$k!"$H$$$&(B
+% $B<jB3$-$r:N$C$F$$$k!#(B
+% $B!J$?$@$=$&$9$k0UL#$,A4$/L5$$5$$,$9$k!#!K(B
+%
+% \begin{macro}{\ifpxrr at k@first at entry}
+% $B at hF,$N9`L\$G$"$k$+!#(B
+%    \begin{macrocode}
+\newif\ifpxrr at k@first at entry
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr at k@last at entry}
+% $BKvHx$N9`L\$G$"$k$+!#(B
+%    \begin{macrocode}
+\newif\ifpxrr at k@last at entry
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr at k@prev at is@block}
+% $BD>A0$N9`L\$N7k2L$,7wE@%V%m%C%/$G$"$C$?$+!#(B
+%    \begin{macrocode}
+\newif\ifpxrr at k@prev at is@block
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@accum at res}
+% $BN_ at Q$ND>@\=PNO!#(B
+%    \begin{macrocode}
+\let\pxrr at k@accum at res\relax
+%    \end{macrocode}
+% \end{macro}
+%
+% $B0J2<$N(B3$B$D$NJQ?t$O!H9`L\$N2<@A$1%^%/%m!I$,CM$rJV$9$Y$-$b$N!#(B
+% $B$3$l$i$K2C$($F!"(B|\pxrr at res| $B$H(B |\pxrr at boxr| $B$N0lJ}$K(B
+% $B!JAHHG$N!K7k2L$rJV$9I,MW$,$"$k!#(B
+%
+% \begin{macro}{\pxrr at k@prebreakpenalty}
+% $B7wE at 9`L\$NA06XB'%Z%J%k%F%#!#(B
+%    \begin{macrocode}
+\mathchardef\pxrr at k@prebreakpenalty\z@
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@postbreakpenalty}
+% $B7wE at 9`L\$N8e6XB'%Z%J%k%F%#!#(B
+%    \begin{macrocode}
+\mathchardef\pxrr at k@postbreakpenalty\z@
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@entry at res@type}
+% $B9`L\$N=PNO$N%?%$%W!#(B
+% 0=$BD>@\=PNO!((B1=$B%\%C%/%9=PNO!((B2=$B7wE@%V%m%C%/!#(B
+% 0$B$N>l9g!"=PNO$O(B |\pxrr at res| $B$K$"$j!"$=$l0J30$O!"(B
+% $B=PNO$O(B |\pxrr at boxr| $B$K$"$k!#(B
+%    \begin{macrocode}
+\chardef\pxrr at k@entry at res@type\z@
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@list at pre}
+% $B7wE at 9`L\%j%9%H$N=PNO$N3+;O;~$K9T$&=hM}!#(B
+%    \begin{macrocode}
+\def\pxrr at k@list at pre{%
+  \pxrr at k@first at entrytrue
+  \pxrr at k@last at entryfalse
+  \pxrr at k@prev at is@blockfalse
+  \let\pxrr at k@accum at res\@empty
+  \chardef\pxrr at k@block at seq@state\z@
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@entry at with}
+% $BJd=u%^%/%m!#(B
+% $B3F<o7wE at 9`L\$N6&DL$N=hM}$r9T$&!#(B
+% \Note |#1| $B$O3F7wE at 9`L\L?Na$N2<@A$1$N%^%/%m$G!"(B|#2| $B$O(B
+% $B7wE at 9`L\$N0z?t!#(B
+%    \begin{macrocode}
+\def\pxrr at k@entry at with#1#2{%
+  \pxrr at if@last{%
+    \pxrr at k@last at entrytrue
+    \pxrr at k@entry at with@a#1{#2}%
+  }{%
+    \pxrr at k@entry at with@a#1{#2}%
+  }%
+}
+\def\pxrr at k@entry at with@a#1#2{%
+  \mathchardef\pxrr at k@prebreakpenalty\z@
+  \mathchardef\pxrr at k@postbreakpenalty\z@
+%    \end{macrocode}
+% $B2<@A$1%^%/%m$r<B9T$7$F7k2L$rF@$k!#(B
+%    \begin{macrocode}
+  #1{#2}%
+%\typeout{%
+%first=\meaning\ifpxrr at k@first at entry^^J%
+%last=\meaning\ifpxrr at k@last at entry^^J%
+%prev=\meaning\ifpxrr at k@prev at is@block^^J%
+%res=\meaning\pxrr at res^^J%
+%type=\meaning\pxrr at k@entry at res@type^^J%
+%prepen=\the\pxrr at k@prebreakpenalty^^J%
+%postpen=\the\pxrr at k@postbreakpenalty}%
+%    \end{macrocode}
+% $BN_ at QD>@\=PNO$N=hM}!#(B
+%    \begin{macrocode}
+  \ifnum\pxrr at k@entry at res@type=\z@
+    \expandafter\pxrr at appto\expandafter\pxrr at k@accum at res
+        \expandafter{\pxrr at res}%
+  \else
+    \pxrr at k@accum at res
+    \let\pxrr at k@accum at res\@empty
+  \fi
+%    \end{macrocode}
+% $BA06XB'%Z%J%k%F%#$rF~$l$k!#(B
+%    \begin{macrocode}
+  \ifnum\pxrr at k@prebreakpenalty>\z@
+    \@tempcntb\lastpenalty \unpenalty
+    \advance\@tempcntb\pxrr at k@prebreakpenalty
+    \penalty\@tempcntb
+  \fi
+%    \end{macrocode}
+% $B7wE@%V%m%C%/$,O"B3$9$k>l9g$OOBJ84V6uGr$rF~$l$k!#(B
+%    \begin{macrocode}
+  \ifnum\pxrr at k@entry at res@type=\tw@
+    \ifpxrr at k@prev at is@block
+      \pxrr at inter@mono
+    \fi
+    \pxrr at k@prev at is@blocktrue
+  \else
+    \pxrr at k@prev at is@blockfalse
+  \fi
+%    \end{macrocode}
+% $B%\%C%/%9$N7k2L$r<B:]$K=PNO$9$k!#(B
+%    \begin{macrocode}
+  \ifnum\pxrr at k@entry at res@type>\z@
+    \unhbox\pxrr at boxr
+  \fi
+%    \end{macrocode}
+% $B8e6XB'%Z%J%k%F%#$rF~$l$k!#(B
+%    \begin{macrocode}
+  \ifnum\pxrr at k@postbreakpenalty>\z@
+    \penalty\pxrr at k@postbreakpenalty
+  \fi
+%    \end{macrocode}
+% $B<!$N9`L\$K?J$`!#(B
+%    \begin{macrocode}
+  \pxrr at k@first at entryfalse
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@list at post}
+% $B7wE at 9`L\%j%9%H$N=PNO$N:G8e$K9T$&=hM}!#(B
+%    \begin{macrocode}
+\def\pxrr at k@list at post{%
+  \pxrr at k@accum at res
+  \let\pxrr at k@accum at res\@empty
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at kenten@entry}
+% $B0lHL$N!TJ8;z!U$rI=$97wE at 9`L\(B |\pxrr at entry{|\jmeta{$BJ8;z(B}|}| $B$N=hM}!#(B
+% $B7wE@$r(B1$B$DIU$1$F=PNO$9$k!#(B
+%    \begin{macrocode}
+\def\pxrr at kenten@entry{%
+  \pxrr at k@entry at with\pxrr at kenten@entry@
+}
+\def\pxrr at kenten@entry@#1{%
+  \pxrr at k@check at char{#1}%
+  \ifpxrr at ok
+    \pxrr at k@compose at block{#1}\@ne
+    \chardef\pxrr at k@entry at res@type=\tw@
+  \else
+    \def\pxrr at res{#1}%
+    \chardef\pxrr at k@entry at res@type=\z@
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at kenten@entry at kspan}
+% |\kspan| $BL?Na$rI=$97wE at 9`L\(B\ 
+% |\pxrr at entry@kspan{\kspan{|\jmeta{$B%F%-%9%H(B}|}}| $B$N=hM}!#(B
+% $B%F%-%9%H$NI}$,!H$*$h$=(B$n$$BA43Q!I$G$"$k>l9g$K!"(B
+% $n$$B8D$N7wE@$r%k%S6QEy3d$j$GG[CV$7$F=PNO$9$k!#(B
+%    \begin{macrocode}
+\def\pxrr at kenten@entry at kspan{%
+  \pxrr at k@entry at with\pxrr at kenten@entry at kspan@
+}
+\def\pxrr at kenten@entry at kspan@#1{%
+  \pxrr at kenten@entry at kspan@a#1%
+}
+\def\pxrr at kenten@entry at kspan@a#1{%
+%    \end{macrocode}
+% |\kspan|$B!J(B=\,|#1|$B!K$,(B |*| $BIU$+$rD4$Y$k!#(B
+%    \begin{macrocode}
+  \@ifstar{%
+    \@testopt\pxrr at kenten@entry at kspan@c{}%
+  }{%
+    \@testopt\pxrr at kenten@entry at kspan@b{}%
+  }%
+}
+\def\pxrr at kenten@entry at kspan@b[#1]#2{%
+%    \end{macrocode}
+% ($n-1/4$)zw$B0J>e(B($n+3/4$)zw$BL$K~$N;~$K!H$*$h$=(B$n$$BA43Q!I$H8+$J$9!#(B
+%    \begin{macrocode}
+  \setbox\z@\pxrr at hbox{#2}%
+  \@tempdima\pxrr at body@zw\relax
+  \@tempdimb\wd\z@ \advance\@tempdimb.25\@tempdima
+  \divide\@tempdimb\@tempdima
+  \edef\pxrr at kenten@entry at tempa{\number\@tempdimb}%
+  \pxrr at k@compose at block{#2}\pxrr at kenten@entry at tempa
+  \chardef\pxrr at k@entry at res@type=\tw@
+}
+\def\pxrr at kenten@entry at kspan@c[#1]#2{%
+%    \end{macrocode}
+% |\kspan*| $B$H$J$C$F$$$k>l9g!#(B
+% $B$3$N;~$O7wE@$rIU2C$;$:D>@\=PNO$9$k!#(B
+%    \begin{macrocode}
+  \def\pxrr at res{#2}%
+  \chardef\pxrr at k@entry at res@type=\z@
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at kenten@entry at kenten}
+% $B%M%9%H$7$?(B |\kenten| $BL?Na$N7wE at 9`L\!#(B
+% $BC1=c$K$=$N(B |\kenten| $B$r<B9T$7$?$b$N$r=PNO$H$9$k!#(B
+% $B$9$J$o$A!"FbB&$N7wE@$N at _Dj$N$_$, at 8$-$k!#(B
+%    \begin{macrocode}
+\def\pxrr at kenten@entry at kenten{%
+  \pxrr at k@entry at with\pxrr at kenten@entry at kenten@
+}
+\def\pxrr at kenten@entry at kenten@#1{%
+%    \end{macrocode}
+% $B$3$N>l9g$O7wE@%V%m%C%/$H$O8+$J$5$J$$$3$H$KCm0U!#(B
+%    \begin{macrocode}
+  \setbox\pxrr at boxr\hbox{#1}%
+  \chardef\pxrr at k@entry at res@type=\@ne
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at kenten@entry at ruby}
+% $B%k%SL?Na$N7wE at 9`L\!#(B
+%    \begin{macrocode}
+\def\pxrr at kenten@entry at ruby{%
+  \pxrr at k@entry at with\pxrr at kenten@entry at ruby@
+}
+\def\pxrr at kenten@entry at ruby@#1{%
+  \pxrr at apply@combotrue
+  \setbox\pxrr at boxr\hbox{#1}%
+  \chardef\pxrr at k@entry at res@type=\@ne
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{\cs{kspan}$BL?Na(B}
+%
+% \begin{macro}{\kspan}
+% $B%F%-%9%H$NI}$KAj1~$7$?8D?t$N7wE@$rIU$1$kL?Na!#(B
+% |\kenten| $B$N0z?t$N%F%-%9%H$NCf$G;H$&!#(B
+%
+% |\kenten| $B$N30$G;H$o$l$?>l9g$OC1=c$K0z?t$r=PNO$9$k$@$1!#(B
+%
+% \Note $B=hM}$NET9g>e!"%*%W%7%g%s0z?t$r;}$?$;$F$$$k$,!"(B
+% $B<B:]$K$O!J8=:_$O!K$3$l$O;H$o$l$J$$!#(B
+%    \begin{macrocode}
+\newcommand*\kspan{%
+  \@ifstar{%
+    \@testopt\pxrr at kspan@a{}%
+  }{%
+    \@testopt\pxrr at kspan@a{}%
+  }%
+}
+\pxrr at add@protect\kspan
+\def\pxrr at kspan@a[#1]#2{%
+  \begingroup
+    #2%
+  \endgroup
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B<+F0M^;_$N8!::(B}
+%
+% \begin{macro}{\pxrr at k@check at char}
+% $BDL>o9`L\!J(B|\pxrr at entry|$B!K$N0z?t$r8!::$7$F!"(B
+% $B7wE@$rIU2C$9$Y$-$+H]$+$r%9%$%C%A(B |pxrr at ok| $B$KJV$9!#(B
+% $B$^$?!"9`L\$NA06XB'!&8e6XB'%Z%J%k%F%#$r at _Dj$9$k!#(B
+%
+% $B0z?t$,!JC10l$N!KDL>oJ8;z$G$"$k;~$O$=$NJ8;z!"(B
+% $B0z?t$,%0%k!<%W$N>l9g$OOBJ86uGr$NFbItJ8;z%3!<%I$r(B |\pxrr at cntr| $B$K(B
+% $BJV$9!J6XB'%Z%J%k%F%#$r8e$G8+$i$l$k$h$&$K!K!#(B
+%    \begin{macrocode}
+\def\pxrr at k@check at char#1{%
+  \futurelet\pxrr at token\pxrr at k@check at char@a#1\pxrr at end
+}
+\def\pxrr at k@check at char@a#1\pxrr at end{%
+  \pxrr at cond\ifx\pxrr at token\bgroup\fi{%
+%    \end{macrocode}
+% $B%0%k!<%W$K$O7wE@$rIU$1$k!#(B
+%    \begin{macrocode}
+    \pxrr at oktrue
+  }{\pxrr at cond\ifx\pxrr at token\@sptoken\fi{%
+%    \end{macrocode}
+% $B2$J86uGr$K$O7wE@$rIU$1$J$$!#(B
+%    \begin{macrocode}
+    \pxrr at okfalse
+  }{%
+    \pxrr at check@char\pxrr at token
+    \ifcase\pxrr at cntr
+%    \end{macrocode}
+% $BDL>oJ8;z$G$J$$$N$G7wE@$rIU$1$J$$!#(B
+%    \begin{macrocode}
+      \pxrr at okfalse
+    \or
+%    \end{macrocode}
+% $B2$J8$NDL>oJ8;z!#7wE@$rIU$1$k!#(B
+%    \begin{macrocode}
+      \pxrr at oktrue
+      \chardef\pxrr at check@char at temp\z@
+    \or
+%    \end{macrocode}
+% $BOBJ8$NDL>oJ8;z!#7wE@$rIU$1$k!#(B
+%    \begin{macrocode}
+      \pxrr at oktrue
+      \chardef\pxrr at check@char at temp\@ne
+    \fi
+%    \end{macrocode}
+% $BLsJ*$N7wE at IU2C$,L58z$N>l9g$O!"0z?t$NJ8;z$,LsJ*$G$"$k$+8!::$7!"(B
+% $B$=$&$G$"$k>l9g$O7wE@$rIU$1$J$$!#(B
+%    \begin{macrocode}
+    \ifnum\pxrr at k@full=\z@\ifpxrr at ok
+      \pxrr at check@punct at char{`#1}\pxrr at check@char at temp
+      \ifpxrr at ok \pxrr at okfalse
+      \else \pxrr at oktrue
+      \fi
+    \fi\fi
+    \ifpxrr at ok
+      \pxrr at get@prebreakpenalty\@tempcnta{`#1}%
+      \mathchardef\pxrr at k@prebreakpenalty\@tempcnta
+      \pxrr at get@postbreakpenalty\@tempcnta{`#1}%
+      \mathchardef\pxrr at k@postbreakpenalty\@tempcnta
+    \fi
+  }}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%a%$%s$G$9(B}
+%
+% \subsubsection{$B%(%s%H%j!<%]%$%s%H(B}
+%
+% \begin{macro}{\kenten}
+% \begin{macro}{\jkenten}
+% $B7wE@$N8x3+L?Na!#(B
+% |\jkenten| $B$r4h6/$JL?Na$H$7$FDj5A$7$?>e$G!"(B|\kenten| $B$O$=$l$K(B
+% $BE83+$5$l$k%^%/%m$K!JL$Dj5A$J$i$P!KDj5A$9$k!#(B
+%    \begin{macrocode}
+\AtBeginDocument{%
+  \providecommand*{\kenten}{\jkenten}%
+}
+\newcommand*{\jkenten}{%
+  \pxrr at k@prologue
+  \pxrr at kenten
+}
+\pxrr at add@protect\jkenten
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at kenten}
+% $B%*%W%7%g%s$N=hM}$r9T$&!#(B
+%    \begin{macrocode}
+\def\pxrr at kenten{%
+  \@testopt\pxrr at kenten@a{}%
+}
+\def\pxrr at kenten@a[#1]{%
+  \def\pxrr at option{#1}%
+  \ifpxrr at safe@mode
+%    \end{macrocode}
+% $B0BA4%b!<%I$G$O7wE at 5!G=$OL58z$J$N$G!"%U%)!<%k%P%C%/$H$7$F(B
+% $B0z?t$N%F%-%9%H$r$=$N$^$^=PNO$9$k!#(B
+%    \begin{macrocode}
+    \expandafter\@firstofone
+  \else
+    \expandafter\pxrr at kenten@proc
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at k@bind at param}
+% $B!H8F=P;~JQ?t!I$X$N%3%T!<$r9T$&!#(B
+%    \begin{macrocode}
+\def\pxrr at k@bind at param{%
+  \let\pxrr at c@ruby at font\pxrr at k@ruby at font
+  \let\pxrr at c@size at ratio\pxrr at k@size at ratio
+  \let\pxrr at c@inter at gap\pxrr at k@inter at gap
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at kenten@proc}
+% |\pxrr at kenten@proc{|\jmeta{$B?FJ8;zNs(B}|}|\Means
+% $B$3$l$,<jB3$NK\BN$H$J$k!#(B
+%    \begin{macrocode}
+\def\pxrr at kenten@proc#1{%
+  \pxrr at prepare@fallback{#1}%
+  \pxrr at k@bind at param
+  \pxrr at assign@fsize
+  \pxrr at k@parse at option\pxrr at option
+  \pxrr at if@alive{%
+    \pxrr at k@decompose{#1}%
+    \let\pxrr at body@list\pxrr at res
+    \pxrr at kenten@main
+  }%
+  \pxrr at kenten@exit
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$BAHHG=hM}(B}
+%
+% \begin{macro}{\pxrr at kenten@main}
+% $B7wE@$NAHHG=hM}!#(B
+%    \begin{macrocode}
+\def\pxrr at kenten@main{%
+  \setbox\pxrr at boxb\pxrr at hbox@to\z@{%
+    \pxrr at use@ruby at font
+    \hss\pxrr at k@the at mark\hss
+  }%
+  \let\pxrr at entry\pxrr at kenten@entry
+  \let\pxrr at entry@kspan\pxrr at kenten@entry at kspan
+  \let\pxrr at entry@ruby\pxrr at kenten@entry at ruby
+  \let\pxrr at entry@kenten\pxrr at kenten@entry at kenten
+  \let\pxrr at post\pxrr at k@list at post
+  \pxrr at k@list at pre
+  \pxrr at body@list
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$BA0=hM}(B}
+%
+% \begin{macro}{\pxrr at jprologue}
+% $B7wE at MQ$N3+;O=hM}!#(B
+%    \begin{macrocode}
+\def\pxrr at k@prologue{%
+  \ifpxrr at k@ghost
+    \pxrr at jghost@char
+    \pxrr at inhibitglue
+  \fi
+  \begingroup
+    \ifpxrr at k@ghost
+      \setbox\pxrr at boxa\hbox{\pxrr at jghost@char}%
+      \kern-\wd\pxrr at boxa
+    \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{$B8e=hM}(B}
+%
+% \begin{macro}{\pxrr at kenten@exit}
+% $B=PNO$r=*$($F!":G8e$K8F$P$l$k%^%/%m!#(B
+%    \begin{macrocode}
+\def\pxrr at kenten@exit{%
+  \ifpxrr at fatal@error
+    \pxrr at fallback
+  \fi
+  \pxrr at k@epilogue
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at jepilogue}
+% $B=*N;=hM}!#(B
+%    \begin{macrocode}
+\def\pxrr at k@epilogue{%
+    \ifpxrr at k@ghost
+      \setbox\pxrr at boxa\hbox{\pxrr at jghost@char}%
+      \kern-\wd\pxrr at boxa
+    \fi
+  \endgroup
+  \ifpxrr at k@ghost
+    \pxrr at inhibitglue
+    \pxrr at jghost@char
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%G%P%C%0MQ=PNO(B}
+%
+%    \begin{macrocode}
+\def\pxrr at debug@show at kenten@input{%
+  \typeout{%
+pxrr at k@the at mark=\meaning\pxrr at k@the at mark^^J%
+pxrr at side=\meaning\pxrr at side^^J%
+pxrr at body@list=\meaning\pxrr at body@list^^J%
+  }%
+}
+%    \end{macrocode}
+%
+%^^A------------------------------------
+% \section{$B<BAu!J7wE@%k%SF1;~IU2C!K(B}
+%
+% $B%3%s%\!*(B
+%
+% \subsection{$B8F=P;~%Q%i%a%?(B}
+%
+% \begin{macro}{\ifpxrr at apply@combo}
+% $BD>8e$K<B9T$9$k%k%SL?Na$K$D$$$FF1;~IU2C$r9T$&$+!#(B
+% $B%9%$%C%A!#(B
+%    \begin{macrocode}
+\newif\ifpxrr at apply@combo
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr at combo}
+% $B8=:_<B9TCf$N%k%SL?Na$K$D$$$FF1;~IU2C$r9T$&$+!#(B
+% $B%9%$%C%A!#(B
+%    \begin{macrocode}
+\newif\ifpxrr at combo
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at ck@ruby at font}
+% \begin{macro}{\pxrr at ck@size at ratio}
+% \begin{macro}{\pxrr at ck@inter at gap}
+% \begin{macro}{\pxrr at ck@ruby at inter@gap}
+% \begin{macro}{\pxrr at ck@side}
+% \begin{macro}{\pxrr at ck@the at mark}
+% \begin{macro}{\pxrr at ck@ruby at combo}
+% $BF1;~IU2C;~$N7wE at B&$N8F=P;~%Q%i%a%?$NCM!#(B
+%    \begin{macrocode}
+\let\pxrr at ck@ruby at font\relax
+\let\pxrr at ck@size at ratio\relax
+\let\pxrr at ck@inter at gap\relax
+\let\pxrr at ck@ruby at inter@gap\relax
+\let\pxrr at ck@side\relax
+\let\pxrr at ck@the at mark\relax
+\let\pxrr at ck@ruby at combo\relax
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr at ck@kenten at head}
+% $BEv3:$N%k%SL?Na$,!"7wE at L?Na$N0z?t$N at hF,$K$"$k$+!#(B
+%    \begin{macrocode}
+\newif\ifpxrr at ck@kenten at head
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifpxrr at ck@kenten at end}
+% $BEv3:$N%k%SL?Na$,!"7wE at L?Na$N0z?t$N at hF,$K$"$k$+!#(B
+%    \begin{macrocode}
+\newif\ifpxrr at ck@kenten at end
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at ck@bind at param}
+% $B!H8F=P;~JQ?t!I$X$N%3%T!<$r9T$&!#(B
+%    \begin{macrocode}
+\def\pxrr at ck@bind at param{%
+  \let\pxrr at ck@ruby at font\pxrr at c@ruby at font
+  \let\pxrr at ck@size at ratio\pxrr at c@size at ratio
+  \let\pxrr at ck@inter at gap\pxrr at c@inter at gap
+  \let\pxrr at ck@ruby at inter@gap\pxrr at k@ruby at inter@gap
+  \let\pxrr at ck@side\pxrr at side
+  \let\pxrr at ck@the at mark\pxrr at k@the at mark
+  \let\pxrr at ck@ruby at combo\pxrr at k@ruby at combo
+  \pxrr at csletcs{ifpxrr at ck@kenten at head}{ifpxrr at k@first at entry}%
+  \pxrr at csletcs{ifpxrr at ck@kenten at end}{ifpxrr at k@last at entry}%
+}
+%    \end{macrocode}
+% \end{macro}
+
+% \subsection{$B$=$NB>$NJQ?t(B}
+%
+% \begin{macro}{\pxrr at ck@zw}
+% $B7wE@$NA43QI}!#(B
+%    \begin{macrocode}
+\let\pxrr at ck@zw\relax
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pxrr at ck@raise at P}
+% $B%k%SB&$,(B |P| $B$G$"$k>l9g$N!"7wE@$N?bD>J}8~$N0\F0NL!#(B
+% \Note $B7wE at B&$,(B |S| $B$G$"$k>l9g$OIiCM$K$J$k!#(B
+%    \begin{macrocode}
+\let\pxrr at ck@raise at P\relax
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pxrr at ck@raise at S}
+% $B%k%SB&$,(B |S| $B$G$"$k>l9g$N!"7wE@$N?bD>J}8~$N0\F0NL!#(B
+%    \begin{macrocode}
+\let\pxrr at ck@raise at S\relax
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at ck@raise at t}
+% $B%k%SB&$,N>B&%k%S$G$"$k>l9g$N!"7wE@$N?bD>J}8~$N0\F0NL!#(B
+%    \begin{macrocode}
+\let\pxrr at ck@raise at t\relax
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%*%W%7%g%s at 09g@-8!::(B}
+%
+% \begin{macro}{\pxrr at ck@check at option}
+% $BF1;~IU2C$N$?$a$N8F=P;~%Q%i%a%?$ND4 at 0!#(B
+%    \begin{macrocode}
+\def\pxrr at ck@check at option{%
+  \ifpxrr at ck@kenten at head
+    \let\pxrr at bintr@\@empty
+    \let\pxrr at bscomp=.\relax
+    \pxrr at bnobrtrue
+  \fi
+  \ifpxrr at ck@kenten at end
+    \let\pxrr at aintr@\@empty
+    \let\pxrr at ascomp=.\relax
+    \pxrr at anobrtrue
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%U%)%s%H%5%$%:(B}
+%
+% \begin{macro}{\pxrr at ck@assign at fsize}
+% $B%U%)%s%H$K4XO"$9$k at _Dj!#(B
+%    \begin{macrocode}
+\def\pxrr at ck@assign at fsize{%
+%    \end{macrocode}
+% |\pxrr at ck@zw| $B$NCM$r5a$a$k!#(B
+%    \begin{macrocode}
+  \begingroup
+    \@tempdima=\f at size\p@
+    \@tempdima\pxrr at ck@size at ratio\@tempdima
+    \edef\pxrr at ruby@fsize{\the\@tempdima}%
+    \let\pxrr at c@ruby at font\pxrr at ck@ruby at font
+    \pxrr at use@ruby at font
+    \pxrr at get@zwidth\pxrr at ck@zw
+    \global\let\pxrr at gtempa\pxrr at ck@zw
+  \endgroup
+  \let\pxrr at ck@zw\pxrr at gtempa
+%    \end{macrocode}
+% |\pxrr at ck@raise at P|$B!"(B|\pxrr at ck@raise at S| $B$NCM$r7W;;$9$k!#(B
+%    \begin{macrocode}
+  \ifcase\pxrr at ck@side
+%    \end{macrocode}
+% $B7wE at B&$,(B |P| $B$N>l9g!#(B
+%    \begin{macrocode}
+    \@tempdimc\pxrr at ck@zw
+    \advance\@tempdimc-\pxrr at htratio\@tempdimc
+    \@tempdima\pxrr at ruby@raise\relax
+    \@tempdimb\pxrr at ruby@zw\relax
+    \advance\@tempdima\pxrr at htratio\@tempdimb
+    \@tempdimb\pxrr at body@zw\relax
+    \advance\@tempdima\pxrr at ck@ruby at inter@gap\@tempdimb
+    \advance\@tempdima\@tempdimc
+    \edef\pxrr at ck@raise at P{\the\@tempdima}%
+    \@tempdima\pxrr at body@zw\relax
+    \@tempdima\pxrr at htratio\@tempdima
+    \@tempdimb\pxrr at body@zw\relax
+    \advance\@tempdima\pxrr at ck@inter at gap\@tempdimb
+    \advance\@tempdima\@tempdimc
+    \edef\pxrr at ck@raise at S{\the\@tempdima}%
+    \let\pxrr at ck@raise at t\pxrr at ck@raise at P
+  \or
+%    \end{macrocode}
+% $B7wE at B&$,(B |S| $B$N>l9g!#(B
+%    \begin{macrocode}
+    \@tempdimc\pxrr at ck@zw
+    \@tempdimc\pxrr at htratio\@tempdimc
+    \@tempdima-\pxrr at ruby@lower\relax
+    \@tempdimb\pxrr at ruby@zw\relax
+    \advance\@tempdimb-\pxrr at htratio\@tempdimb
+    \advance\@tempdima-\@tempdimb
+    \@tempdimb\pxrr at body@zw\relax
+    \advance\@tempdima-\pxrr at ck@ruby at inter@gap\@tempdimb
+    \advance\@tempdima-\@tempdimc
+    \edef\pxrr at ck@raise at S{\the\@tempdima}%
+    \@tempdima-\pxrr at body@zw\relax
+    \advance\@tempdima-\pxrr at htratio\@tempdima
+    \@tempdimb\pxrr at body@zw\relax
+    \advance\@tempdima-\pxrr at ck@inter at gap\@tempdimb
+    \advance\@tempdima-\@tempdimc
+    \edef\pxrr at ck@raise at P{\the\@tempdima}%
+    \let\pxrr at ck@raise at t\pxrr at ck@raise at S
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{$B%V%m%C%/Kh$NAHHG(B}
+%
+% \begin{macro}{\pxrr at ck@body at natwd}
+% $B?FJ8;zNs$N<+A3D9!#(B
+%    \begin{macrocode}
+\let\pxrr at ck@body at natwd\relax
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at ck@locate}
+% $B7wE at Ns$N%Q%?!<%s;XDj!#(B
+%    \begin{macrocode}
+\let\pxrr at ck@locate\relax
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at ck@kenten at list}
+% $B7wE at Ns$N%j%9%H!#(B
+%    \begin{macrocode}
+\let\pxrr at ck@kenten at list\relax
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at ck@compose}
+% |#1| $B$K?FJ8;z%F%-%9%H!"(B|\pxrr at ck@body at natwd| $B$K?FJ8;z$N<+A3D9!"(B
+% $B%\%C%/%9(B0$B$K%k%S=PNO!"(B|\pxrr at boxa| $B$K?FJ8;z=PNO!"(B
+% |\pxrr at ck@locate| $B$K%Q%?!<%s$,F~$C$F$$$kA0Ds$G!"(B
+% $B%\%C%/%9(B0$B$K7wE@$rDI2C$9$k!#(B
+% 
+%    \begin{macrocode}
+\def\pxrr at ck@compose#1{%
+%    \end{macrocode}
+% $B7wE@$rAH$s$@%\%C%/%9$r:n$k!#(B
+%    \begin{macrocode}
+  \setbox\tw@\pxrr at hbox@to\z@{%
+    \@tempdima=\f at size\p@
+    \@tempdima\pxrr at ck@size at ratio\@tempdima
+    \edef\pxrr at ruby@fsize{\the\@tempdima}%
+    \let\pxrr at c@ruby at font\pxrr at ck@ruby at font
+    \pxrr at use@ruby at font
+    \hss\pxrr at ck@the at mark\hss
+  }%
+%    \end{macrocode}
+% $B?FJ8;z%F%-%9%H$rJ,2r$7$?8e!"%j%9%H(B |\pxrr at res| $B$r(B
+% $B7wE@$N%j%9%H$KCV$-49$($k!#(B
+%    \begin{macrocode}
+  \pxrr at save@listproc
+  \pxrr at decompose{#1}%
+  \def\pxrr at pre{%
+    \let\pxrr at res\@empty
+    \pxrr at ck@compose at entry\pxrr at pre
+  }%
+  \def\pxrr at inter{%
+    \pxrr at ck@compose at entry\pxrr at inter
+  }%
+  \def\pxrr at post{%
+    \pxrr at appto\pxrr at res{\pxrr at post}%
+  }%
+  \pxrr at res
+  \pxrr at restore@listproc
+  \let\pxrr at natwd\pxrr at ck@body at natwd
+%    \end{macrocode}
+% $B7wE@%j%9%H$r6QEyG[CV$9$k!#(B
+%    \begin{macrocode}
+  \pxrr at evenspace@int\pxrr at ck@locate\pxrr at boxb\relax
+      {\wd\pxrr at boxa}%
+%    \end{macrocode}
+% $B9g at .=hM}!#(B
+%    \begin{macrocode}
+  \setbox\z@\hbox{%
+    \unhcopy\z@
+    \kern-\wd\z@
+    \ifcase\pxrr at side
+      \raise\pxrr at ck@raise at P
+    \or
+      \raise\pxrr at ck@raise at S
+    \or
+      \raise\pxrr at ck@raise at t
+    \fi
+    \hb at xt@\wd\pxrr at boxa{\hss\copy\pxrr at boxb\hss}%
+  }%
+}
+\def\pxrr at ck@compose at entry#1#2{%
+  \setbox\pxrr at boxb\pxrr at hbox{#2}%
+  \edef\pxrr at tempa{%
+    \noexpand\pxrr at appto\noexpand\pxrr at res{\noexpand#1{%
+        \hb at xt@\the\wd\pxrr at boxb{\hss\copy\tw@\hss}}}%
+  }\pxrr at tempa
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%^^A------------------------------------
+% \section{$B<BAu!'(Bhyperref$BBP:v(B}
+%
+% PDF$BJ8;zNsCf$G$O%k%SL?Na$d7wE at L?Na$,!HL5Fq$J=PNO!I$r$9$k$h$&$K$9$k!#(B
+% $B8=>u$G$O!"%k%S!&7wE@$H$b$K?FJ8;z$N$_$r=PNO$9$k$3$H$K$9$k!#(B
+%
+% \begin{macro}{\pxrr at dumb@sub}
+% $B%*%W%7%g%sItJ,$rFI$_Ht$P$9Jd=u%^%/%m!#(B
+%    \begin{macrocode}
+\def\pxrr at dumb@sub#1#2#{#1}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at dumb@ruby}
+% $BL5Fq$J%k%SL?Na!#(B
+%    \begin{macrocode}
+\def\pxrr at dumb@ruby{%
+  \pxrr at dumb@sub\pxrr at dumb@ruby@
+}
+\def\pxrr at dumb@ruby@#1#2{#1}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at dumb@truby}
+% $BL5Fq$JN>B&%k%SL?Na!#(B
+%    \begin{macrocode}
+\def\pxrr at dumb@truby{%
+  \pxrr at dumb@sub\pxrr at dumb@truby@
+}
+\def\pxrr at dumb@truby@#1#2#3{#1}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pxrr at dumb@tkenten}
+% $BL5Fq$J7wE at L?Na!#(B
+% \Note |\kspan| $B$b$3$NDj5A$rMxMQ$9$k!#(B
+%    \begin{macrocode}
+\def\pxrr at dumb@kenten{%
+  \pxrr at dumb@sub\pxrr at dumb@kenten@
+}
+\def\pxrr at dumb@kenten@#1{#1}
+%    \end{macrocode}
+% \end{macro}
+%
+% \PKN{hyperref}$B$N(B |\pdfstringdef| $BMQ$N%U%C%/(B |\pdfstringdefPreHook|
+% $B$K>e=q$-=hM}$rDI5-$9$k!#(B
+%    \begin{macrocode}
+\providecommand*\pdfstringdefPreHook{}
+\g at addto@macro\pdfstringdefPreHook{%
+%    \end{macrocode}
+% |\ruby| $B$H(B |\kenten| $B$O!VK\%Q%C%1!<%8$NL?Na$G$"$k$+!W$N8!::$,I,MW!#(B
+%    \begin{macrocode}
+  \ifx\pxrr at cmd@ruby\ruby
+    \let\ruby\pxrr at dumb@ruby
+  \fi
+  \let\jruby\pxrr at dumb@ruby
+  \let\aruby\pxrr at dumb@ruby
+  \let\truby\pxrr at dumb@truby
+  \let\atruby\pxrr at dumb@truby
+  \ifx\pxrr at cmd@kenten\kenten
+    \let\kenten\pxrr at dumb@kenten
+  \fi
+  \let\kspan\pxrr at dumb@kenten
+}
+%    \end{macrocode}
+%
+%^^A------------------------------------
 % \Finale
 %
 \endinput

Modified: trunk/Master/texmf-dist/tex/platex/pxrubrica/pxrubrica.sty
===================================================================
--- trunk/Master/texmf-dist/tex/platex/pxrubrica/pxrubrica.sty	2017-04-27 20:20:44 UTC (rev 44081)
+++ trunk/Master/texmf-dist/tex/platex/pxrubrica/pxrubrica.sty	2017-04-27 21:35:21 UTC (rev 44082)
@@ -22,7 +22,7 @@
 %% in the same archive or directory.)
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{pxrubrica}
-  [2017/04/20 v1.2 PX Japanese-style ruby]
+  [2017/04/27 v1.3 PX Japanese-style ruby]
 \RequirePackage{keyval}
 \def\pxrr at pkgname{pxrubrica}
 \def\pxrr at error{%
@@ -159,6 +159,9 @@
 \chardef\pxrr at evensp=1
 \chardef\pxrr at revensp=1
 \chardef\pxrr at fullsize=1
+\let\pxrr at c@ruby at font\@undefined
+\let\pxrr at c@size at ratio\@undefined
+\let\pxrr at c@inter at gap\@undefined
 \let\pxrr at body@list\@undefined
 \let\pxrr at body@count\@undefined
 \let\pxrr at ruby@list\@undefined
@@ -609,6 +612,27 @@
     \def#1{?}%
   }
 \fi\fi
+\pxrr at jchardef\pxrr at zspace=\pxrr at jc{2121:3000}
+\ifpxrr at in@uptex
+  \kchardef\pxrr at jghost@char="113000
+\else\ifpxrr at in@luatexja
+  \let\pxrr at jghost@char\pxrr at zspace
+  \def\pxrr at jghost@check{%
+    \begingroup
+      \setbox\z@\hbox{\char"3001\char"3000}%
+      \setbox\tw@\hbox{\char"3001\inhibitglue\char"3000}%
+      \ifdim\wd\tw@=\wd\z@
+        \global\chardef\pxrr at jghost@char@="00A0
+        \gdef\pxrr at jghost@char{\ltjjachar\pxrr at jghost@char@}%
+      \fi
+    \endgroup
+  }
+  \AtBeginDocument{%
+    \pxrr at jghost@check
+  }
+\else
+  \let\pxrr at jghost@char\pxrr at zspace
+\fi\fi
 \pxrr at jchardef\pxrr at x@K=\pxrr at jc{306C:4E00}
 \ifpxrr at in@ptex
   \def\pxrr at get@iiskip#1{%
@@ -711,11 +735,11 @@
 \fi\fi\fi\fi
 \ifpxrr at in@ptex
   \def\pxrr at get@prebreakpenalty#1#2{%
-    #1=\prebreakpenalty`#2\relax
+    #1=\prebreakpenalty#2\relax
   }
 \else\ifpxrr at in@luatexja
   \def\pxrr at get@prebreakpenalty#1#2{%
-    #1=\ltjgetparameter{prebreakpenalty}{`#2}\relax
+    #1=\ltjgetparameter{prebreakpenalty}{#2}\relax
   }
 \else
   \def\pxrr at get@prebreakpenalty#1#2{%
@@ -722,6 +746,50 @@
     #1=\z@
   }
 \fi\fi
+\ifpxrr at in@ptex
+  \def\pxrr at get@postbreakpenalty#1#2{%
+    #1=\postbreakpenalty#2\relax
+  }
+\else\ifpxrr at in@luatexja
+  \def\pxrr at get@postbreakpenalty#1#2{%
+    #1=\ltjgetparameter{postbreakpenalty}{#2}\relax
+  }
+\else
+  \def\pxrr at get@postbreakpenalty#1#2{%
+    #1=\z@
+  }
+\fi\fi
+\ifpxrr at in@ptex
+  \def\pxrr at check@punct at char#1#2{%
+    \pxrr at okfalse
+    \ifcase#2\relax
+      \ifnum\xspcode#1=\thr@@\else
+        \pxrr at oktrue
+      \fi
+    \else
+      \ifnum\inhibitxspcode#1=\thr@@\else
+        \pxrr at oktrue
+      \fi
+    \fi
+  }
+\else\ifpxrr at in@luatexja
+  \def\pxrr at check@punct at char#1#2{%
+    \ifnum\ltjgetparameter{jaxspmode}{#1}=\thr@@
+      \pxrr at okfalse
+    \else
+      \pxrr at oktrue
+    \fi
+  }
+\else
+  \def\pxrr at check@punct at char#1#2{%
+    \pxrr at okfalse
+  }
+\fi\fi
+\ifx\inhibitglue\@undefined
+  \let\pxrr at inhibitglue\relax
+\else
+  \let\pxrr at inhibitglue\inhibitglue
+\fi
 \newif\ifpxrr at in@setup \pxrr at in@setupfalse
 \newcommand*\rubysetup[1]{%
   \pxrr at in@setuptrue
@@ -1131,6 +1199,9 @@
   \if g\pxrr at mode\else
     \chardef\pxrr at evensp\@ne
   \fi
+    \ifpxrr at combo
+      \pxrr at ck@check at option
+    \fi
 }
 \let\pxrr at ruby@fsize\pxrr at zeropt
 \let\pxrr at body@zw\pxrr at zeropt
@@ -1142,7 +1213,7 @@
 \let\pxrr at iaiskip\pxrr at zeropt
 \def\pxrr at assign@fsize{%
   \@tempdima=\f at size\p@
-  \@tempdima\pxrr at size@ratio\@tempdima
+  \@tempdima\pxrr at c@size at ratio\@tempdima
   \edef\pxrr at ruby@fsize{\the\@tempdima}%
   \pxrr at get@zwidth\pxrr at body@zw
   \begingroup
@@ -1164,7 +1235,7 @@
   \advance\@tempdimb-\pxrr at htratio\@tempdimb
   \advance\@tempdima\@tempdimb
   \@tempdimb\pxrr at body@zw\relax
-  \advance\@tempdima\pxrr at inter@gap\@tempdimb
+  \advance\@tempdima\pxrr at c@inter at gap\@tempdimb
   \edef\pxrr at ruby@raise{\the\@tempdima}%
   \@tempdima\pxrr at body@zw\relax
   \advance\@tempdima-\pxrr at htratio\@tempdima
@@ -1172,14 +1243,17 @@
   \@tempdimb\pxrr at htratio\@tempdimb
   \advance\@tempdima\@tempdimb
   \@tempdimb\pxrr at body@zw\relax
-  \advance\@tempdima\pxrr at inter@gap\@tempdimb
+  \advance\@tempdima\pxrr at c@inter at gap\@tempdimb
   \edef\pxrr at ruby@lower{\the\@tempdima}%
+  \ifpxrr at combo
+    \pxrr at ck@assign at fsize
+  \fi
 }
 \def\pxrr at use@ruby at font{%
   \pxrr at without@macro at trace{%
     \let\rubyfontsize\pxrr at ruby@fsize
     \fontsize{\pxrr at ruby@fsize}{\z@}\selectfont
-    \pxrr at ruby@font
+    \pxrr at c@ruby at font
   }%
 }
 \chardef\pxrr at locate@inner=1
@@ -1368,6 +1442,8 @@
 }
 \def\pxrr at compose@oneside at block@do#1#2#3#4{%
   \setbox\pxrr at boxa\pxrr at hbox{#2}%
+  \edef\pxrr at ck@body at natwd{\the\wd\pxrr at boxa}%
+  \let\pxrr at ck@locate\pxrr at locate@inner
   \setbox\pxrr at boxr\pxrr at hbox{%
     \pxrr at use@ruby at font
     #3%
@@ -1382,6 +1458,7 @@
         \let\pxrr at locate@temp\pxrr at locate@head
       \fi
     \fi
+    \let\pxrr at ck@locate\pxrr at locate@temp
     \pxrr at decompose{#2}%
     \edef\pxrr at natwd{\the\wd\pxrr at boxa}%
     \pxrr at evenspace@int\pxrr at locate@temp\pxrr at boxa\relax
@@ -1409,6 +1486,9 @@
       \lower\pxrr at ruby@lower\box\pxrr at boxr
     \fi
   }%
+  \ifnum \ifpxrr at combo\pxrr at ck@ruby at combo\else\z@\fi >\z@
+    \pxrr at ck@compose{#2}%
+  \fi
   \ht\z@\z@ \dp\z@\z@
   \@tempdima\wd\z@
   \setbox\pxrr at boxr\hbox{%
@@ -1426,6 +1506,8 @@
 }
 \def\pxrr at compose@twoside at block@do#1#2#3#4{%
   \setbox\pxrr at boxa\pxrr at hbox{#2}%
+  \edef\pxrr at ck@body at natwd{\the\wd\pxrr at boxa}%
+  \let\pxrr at ck@locate\pxrr at locate@inner
   \setbox\pxrr at boxr\pxrr at hbox{%
     \pxrr at use@ruby at font
     #3%
@@ -1449,6 +1531,7 @@
         \let\pxrr at locate@temp\pxrr at locate@head
       \fi
     \fi
+    \let\pxrr at ck@locate\pxrr at locate@temp
     \ifdim\wd\pxrr at boxr<\wd\pxrr at boxb
       \pxrr at compose@twoside at block@sub{#2}{#3}%
        \pxrr at boxr\pxrr at boxb
@@ -1487,6 +1570,9 @@
     \kern-\@tempdima
     \lower\pxrr at ruby@lower\box\pxrr at boxb
   }%
+  \ifnum \ifpxrr at combo\pxrr at ck@ruby at combo\else\z@\fi >\z@
+    \pxrr at ck@compose{#2}%
+  \fi
   \ht\z@\z@ \dp\z@\z@
   \@tempdima\wd\z@
   \setbox\pxrr at boxr\hbox{%
@@ -1643,7 +1729,7 @@
   \pxrr at check@kinsoku at c#1#1%
 }
 \def\pxrr at check@kinsoku at c#1{%
-  \pxrr at get@prebreakpenalty\pxrr at cntr{#1}%
+  \pxrr at get@prebreakpenalty\pxrr at cntr{`#1}%
   \pxrr at tempb
 }
 \def\pxrr at tempa#1#2\pxrr at nil{%
@@ -1834,8 +1920,21 @@
   \else F%
   \fi\fi T%
 }
+\def\pxrr at bind@param{%
+  \ifpxrr at apply@combo
+    \pxrr at apply@combofalse
+    \pxrr at combotrue
+    \pxrr at ck@bind at param
+  \else
+    \pxrr at combofalse
+  \fi
+  \let\pxrr at c@ruby at font\pxrr at ruby@font
+  \let\pxrr at c@size at ratio\pxrr at size@ratio
+  \let\pxrr at c@inter at gap\pxrr at inter@gap
+}
 \def\pxrr at ruby@proc#1#2{%
   \pxrr at prepare@fallback{#1}%
+  \pxrr at bind@param
   \pxrr at assign@fsize
   \pxrr at parse@option\pxrr at option
   \pxrr at decompbar{#2}%
@@ -1873,6 +1972,7 @@
 }
 \def\pxrr at truby@proc#1#2#3{%
   \pxrr at prepare@fallback{#1}%
+  \pxrr at bind@param
   \pxrr at assign@fsize
   \pxrr at parse@option\pxrr at option
   \def\pxrr at all@input{{#1}{#2}{#3}}%
@@ -2213,16 +2313,16 @@
 }
 \let\pxrr at ruby@main at mg\@undefined
 \newif\ifpxrr at ghost
-\pxrr at jchardef\pxrr at zspace=\pxrr at jc{2121:3000}
 \def\pxrr at jprologue{%
   \ifpxrr at jghost
-    \pxrr at zspace
+    \pxrr at jghost@char
+    \pxrr at inhibitglue
   \fi
   \begingroup
     \pxrr at abodyfalse
     \pxrr at csletcs{ifpxrr at ghost}{ifpxrr at jghost}%
     \ifpxrr at jghost
-      \setbox\pxrr at boxa\hbox{\pxrr at zspace}%
+      \setbox\pxrr at boxa\hbox{\pxrr at jghost@char}%
       \kern-\wd\pxrr at boxa
     \fi
 }
@@ -2266,12 +2366,13 @@
 }
 \def\pxrr at jepilogue{%
     \ifpxrr at jghost
-      \setbox\pxrr at boxa\hbox{\pxrr at zspace}%
+      \setbox\pxrr at boxa\hbox{\pxrr at jghost@char}%
       \kern-\wd\pxrr at boxa
     \fi
   \endgroup
   \ifpxrr at jghost
-    \pxrr at zspace
+    \pxrr at inhibitglue
+    \pxrr at jghost@char
   \fi
 }
 \def\pxrr at aepilogue{%
@@ -2339,6 +2440,771 @@
   \typeout{----\pxrr at pkgname\space resolve-mode:
     \meaning\pxrr at mode}%
 }
+\def\pxrr at warn@na at kmark#1{%
+  \pxrr at warn{Unavailable kenten mark '#1'}%
+}
+\def\pxrr at err@invalid at value#1{%
+  \pxrr at error{Invalid value '#1'}%
+      {\@eha}%
+}
+\let\pxrr at k@ymark\@undefined
+\let\pxrr at k@ysmark\@undefined
+\let\pxrr at k@tmark\@undefined
+\let\pxrr at k@tsmark\@undefined
+\AtEndOfPackage{%
+  \pxrr at k@get at mark\pxrr at k@ymark{bullet*}%
+  \pxrr at k@get at mark\pxrr at k@ysmark{sesame*}%
+  \pxrr at k@get at mark\pxrr at k@tmark{sesame*}%
+  \pxrr at k@get at mark\pxrr at k@tsmark{bullet*}%
+}
+\let\pxrr at k@ruby at font\@empty
+\def\pxrr at k@size at ratio{0.5}
+\newif\ifpxrr at k@ghost \pxrr at k@ghosttrue
+\def\pxrr at k@inter at gap{0}
+\def\pxrr at k@ruby at inter@gap{0}
+\chardef\pxrr at k@d at side=0
+\chardef\pxrr at k@d at mark=0
+\chardef\pxrr at k@ruby at combo=1
+\chardef\pxrr at k@d at full=0
+\chardef\pxrr at k@mark=0
+\chardef\pxrr at k@full=0
+\let\pxrr at k@the at mark\relax
+\newif\ifpxrr at avail@UTF
+\def\pxrr at decide@avail at UTF{%
+  \global\let\pxrr at decide@avail at UTF\relax
+  \ifx\UTF\@undefined \global\pxrr at avail@UTFfalse
+  \else \global\pxrr at avail@UTFtrue
+  \fi
+}
+\def\pxrr at k@decompose#1{%
+  \let\pxrr at res\@empty
+  \pxrr at cntr=\z@
+  \pxrr at k@decompose at loopa#1\pxrr at end
+}
+\def\pxrr at k@decompose at loopa{%
+  \futurelet\pxrr at token\pxrr at k@decompose at loopb
+}
+\def\pxrr at k@decompose at loopb{%
+  \pxrr at cond\ifx\pxrr at token\pxrr at end\fi{%
+    \pxrr at appto\pxrr at res{\pxrr at post}%
+  }{\pxrr at if@kspan at cmd\pxrr at token{%
+    \pxrr at k@decompose at special\pxrr at k@decompose at kspan
+  }{\pxrr at if@ruby at cmd\pxrr at token{%
+    \pxrr at k@decompose at special\pxrr at k@decompose at ruby
+  }{\pxrr at if@truby at cmd\pxrr at token{%
+    \pxrr at k@decompose at special\pxrr at k@decompose at truby
+  }{\pxrr at if@kenten at cmd\pxrr at token{%
+    \pxrr at k@decompose at special\pxrr at k@decompose at kenten
+  }{\pxrr at cond\ifx\pxrr at token\@sptoken\fi{%
+    \pxrr at k@decompose at loope
+  }{%
+    \pxrr at setok{\pxrr at ifx{\pxrr at token\bgroup}}%
+    \pxrr at k@decompose at loopc
+  }}}}}}%
+}
+\def\pxrr at k@decompose at loopc#1{%
+  \pxrr at appto\pxrr at res{\pxrr at entry}%
+  \ifpxrr at ok
+    \pxrr at appto\pxrr at res{{{#1}}}%
+  \else
+    \pxrr at appto\pxrr at res{{#1}}%
+  \fi
+  \pxrr at k@decompose at loopd
+}
+\def\pxrr at k@decompose at loopd{%
+  \advance\pxrr at cntr\@ne
+  \pxrr at k@decompose at loopa
+}
+\expandafter\def\expandafter\pxrr at k@decompose at loope\space{%
+  \pxrr at okfalse
+  \pxrr at k@decompose at loopc{ }%
+}
+\def\pxrr at k@decompose at special#1#2#{%
+  #1{#2}%
+}
+\def\pxrr at k@decompose at kspan#1#2{%
+  \pxrr at appto\pxrr at res{\pxrr at entry@kspan{#1{#2}}}%
+  \pxrr at k@decompose at loopd
+}
+\def\pxrr at k@decompose at ruby#1#2#3{%
+  \pxrr at appto\pxrr at res{\pxrr at entry@ruby{#1{#2}{#3}}}%
+  \pxrr at k@decompose at loopd
+}
+\def\pxrr at k@decompose at truby#1#2#3#4{%
+  \pxrr at appto\pxrr at res{\pxrr at entry@ruby{#1{#2}{#3}{#4}}}%
+  \pxrr at k@decompose at loopd
+}
+\def\pxrr at k@decompose at kenten#1#2{%
+  \pxrr at appto\pxrr at res{\pxrr at entry@kenten{#1{#2}}}%
+  \pxrr at k@decompose at loopd
+}
+\def\pxrr at cmd@ruby{\jruby}
+\def\pxrr at cmd@kenten{\jkenten}
+\def\pxrr at if@ruby at cmd#1{%
+  \if \ifcat\noexpand#1\relax
+        \ifx#1\pxrr at cmd@ruby T%
+        \else\ifx#1\jruby T%
+        \else\ifx#1\aruby T%
+        \else F%
+        \fi\fi\fi
+      \else F%
+      \fi T\expandafter\@firstoftwo
+  \else \expandafter\@secondoftwo
+  \fi
+}
+\def\pxrr at if@truby at cmd#1{%
+  \if \ifcat\noexpand#1\relax
+        \ifx#1\truby T%
+        \else\ifx#1\atruby T%
+        \else F%
+        \fi\fi
+      \else F%
+      \fi T\expandafter\@firstoftwo
+  \else \expandafter\@secondoftwo
+  \fi
+}
+\def\pxrr at if@kspan at cmd#1{%
+  \pxrr at cond\ifx#1\kspan\fi
+}
+\def\pxrr at if@kenten at cmd#1{%
+  \if \ifcat\noexpand#1\relax
+        \ifx#1\pxrr at cmd@kenten T%
+        \else\ifx#1\jkenten T%
+        \else F%
+        \fi\fi
+      \else F%
+      \fi T\expandafter\@firstoftwo
+  \else \expandafter\@secondoftwo
+  \fi
+}
+\newcommand*\kentensetup[1]{%
+  \pxrr at in@setuptrue
+  \pxrr at fatal@errorfalse
+  \pxrr at k@parse at option{#1}%
+  \ifpxrr at fatal@error\else
+    \let\pxrr at k@d at side\pxrr at side
+    \let\pxrr at k@d at mark\pxrr at k@mark
+    \let\pxrr at k@d at full\pxrr at k@full
+  \fi
+  \pxrr at in@setupfalse
+}
+\newcommand*\kentenfontsetup{}
+\def\kentenfontsetup#{%
+  \def\pxrr at k@ruby at font
+}
+\newcommand*\kentensizeratio[1]{%
+  \edef\pxrr at k@size at ratio{#1}%
+}
+\newcommand*\kentenintergap[1]{%
+  \edef\pxrr at k@inter at gap{#1}%
+}
+\newcommand*\kentenrubyintergap[1]{%
+  \edef\pxrr at k@ruby at inter@gap{#1}%
+}
+\newcommand*\kentenmarkinyoko[1]{%
+  \pxrr at k@get at mark\pxrr at k@ymark{#1}%
+}
+\newcommand*\kentensubmarkinyoko[1]{%
+  \pxrr at k@get at mark\pxrr at k@ysmark{#1}%
+}
+\newcommand*\kentenmarkintate[1]{%
+  \pxrr at k@get at mark\pxrr at k@tmark{#1}%
+}
+\newcommand*\kentensubmarkintate[1]{%
+  \pxrr at k@get at mark\pxrr at k@tsmark{#1}%
+}
+\chardef\pxrr at k@ruby at combo@ruby=0
+\chardef\pxrr at k@ruby at combo@both=1
+\newcommand*\kentenrubycombination[1]{%
+  \pxrr at letcs\pxrr at tempa{pxrr at k@ruby at combo@#1}%
+  \ifx\pxrr at tempa\relax
+    \pxrr at err@invalid at value{#1}%
+  \else
+    \let\pxrr at k@ruby at combo\pxrr at tempa
+  \fi
+}
+\def\pxrr at k@declare at mark#1{%
+  \global\@namedef{pxrr at k@mark@@#1}%
+}
+\def\pxrr at k@let at mark#1{%
+  \global\pxrr at cslet{pxrr at k@mark@@#1}%
+}
+\def\pxrr at k@get at mark#1#2{%
+  \futurelet\pxrr at token\pxrr at k@get at mark@a#2\pxrr at nil#1%
+}
+\def\pxrr at k@get at mark@a{%
+  \pxrr at cond\ifcat A\noexpand\pxrr at token\fi{%
+    \pxrr at k@get at mark@c
+  }{%else
+    \pxrr at k@get at mark@b
+  }%
+}
+\def\pxrr at k@get at mark@b#1\pxrr at nil#2{%
+  \def#2{#1}%
+}
+\def\pxrr at k@get at mark@c#1#2\pxrr at nil#3{%
+  \ifnum`#1<128
+    \pxrr at letcs\pxrr at tempa{pxrr at k@mark@@#1#2}%
+    \ifx\pxrr at tempa\relax
+      \pxrr at warn@na at kmark{#1#2}%
+    \else
+      \let#3\pxrr at tempa
+    \fi
+  \else
+    \pxrr at k@get at mark@b#1#2\pxrr at nil#3%
+  \fi
+}
+\def\pxrr at k@declare at mark@char#1#2{%
+  \pxrr at k@declare at mark@char at a{#1}#2\pxrr at end
+}
+\def\pxrr at k@declare at mark@char at a#1#2:#3\pxrr at end{%
+  \pxrr at jchardef\pxrr at tempa\pxrr at jc{#2:#3}%
+  \ifnum\pxrr at tempa=\pxrr at zspace
+    \pxrr at k@declare at mark{#1}{\pxrr at k@char at UTF{#1}{#3}}%
+  \else
+    \pxrr at k@let at mark{#1}\pxrr at tempa
+  \fi
+}
+\def\pxrr at k@char at UTF#1#2{%
+  \pxrr at decide@avail at UTF
+  \ifpxrr at avail@UTF
+    \pxrr at k@declare at mark{#1}{\UTF{#2}}%
+    \UTF{#2}%
+  \else
+    \pxrr at k@let at mark{#1}\@empty
+    \pxrr at warn@na at kmark{#1}%
+  \fi
+}
+\pxrr at k@declare at mark@char{bullet}  {2121:2022}
+\pxrr at k@declare at mark@char{triangle}{2225:25B2}
+\pxrr at k@declare at mark@char{Triangle}{2224:25B3}
+\pxrr at k@declare at mark@char{fisheye} {2121:25C9}
+\pxrr at k@declare at mark@char{Circle}  {217B:25CB}
+\pxrr at k@declare at mark@char{bullseye}{217D:25CE}
+\pxrr at k@declare at mark@char{circle}  {217C:25CF}
+\pxrr at k@declare at mark@char{Bullet}  {2121:25E6}
+\pxrr at k@declare at mark@char{sesame}  {2121:FE45}
+\pxrr at k@declare at mark@char{Sesame}  {2121:FE46}
+\pxrr at jchardef\pxrr at ja@dot=\pxrr at jc{2126:30FB}
+\pxrr at jchardef\pxrr at ja@comma=\pxrr at jc{2122:3001}
+\pxrr at k@declare at mark{bullet*}{%
+  \pxrr at dima=\pxrr at ruby@zw\relax
+  \hb at xt@\pxrr at dima{%
+    \kern-.5\pxrr at dima
+    \pxrr at if@in at tate{}{\lower.38\pxrr at dima}%
+    \hbox{%
+      \pxrr at dima=\f at size\p@
+      \fontsize{2\pxrr at dima}{\z@}\selectfont
+      \pxrr at ja@dot
+    }%
+    \hss
+  }%
+}
+\pxrr at k@declare at mark{sesame*}{%
+  \pxrr at dima=\pxrr at ruby@zw\relax
+  \hb at xt@\pxrr at dima{%
+    \pxrr at if@in at tate{\kern.1\pxrr at dima}{\kern.05\pxrr at dima}%
+    \pxrr at if@in at tate{\lower.85\pxrr at dima}{\raise.3\pxrr at dima}%
+    \hbox{%
+      \pxrr at dima=\f at size\p@
+      \fontsize{2.4\pxrr at dima}{\z@}\selectfont
+      \pxrr at ja@comma
+    }%
+    \hss
+  }%
+}
+\def\pxrr at k@parse at option#1{%
+  \edef\pxrr at tempa{#1}%
+  \let\pxrr at side\pxrr at k@d at side
+  \let\pxrr at k@mark\pxrr at k@d at mark
+  \let\pxrr at k@full\pxrr at k@d at full
+  \expandafter\pxrr at k@parse at option@loop\pxrr at tempa @\pxrr at end
+}
+\def\pxrr at k@parse at option@loop#1{%
+  \pxrr at letcs\pxrr at tempa{pxrr at k@po at PR@#1}%
+  \pxrr at cond\ifx\pxrr at tempa\relax\fi{%
+    \pxrr at fatal@knx at letter{#1}%
+    \pxrr at k@parse at option@exit
+  }{%
+    \pxrr at tempa
+    \pxrr at k@parse at option@loop
+  }%
+}
+\def\pxrr at k@parse at option@exit#1\pxrr at end{%
+  \ifpxrr at in@setup\else
+    \pxrr at k@check at option
+    \pxrr at if@in at tate{%
+      \ifcase\pxrr at k@mark \let\pxrr at k@the at mark\pxrr at k@tmark
+      \or \let\pxrr at k@the at mark\pxrr at k@tsmark
+      \fi
+    }{%
+      \ifcase\pxrr at k@mark \let\pxrr at k@the at mark\pxrr at k@ymark
+      \or \let\pxrr at k@the at mark\pxrr at k@ysmark
+      \fi
+    }%
+  \fi
+}
+\def\pxrr at k@po at PR@@{%
+  \pxrr at k@parse at option@exit
+}
+\def\pxrr at k@po at PR@P{%
+  \chardef\pxrr at side\z@
+}
+\def\pxrr at k@po at PR@S{%
+  \chardef\pxrr at side\@ne
+}
+\def\pxrr at k@po at PR@p{%
+  \chardef\pxrr at k@mark\z@
+}
+\def\pxrr at k@po at PR@s{%
+  \chardef\pxrr at k@mark\@ne
+}
+\def\pxrr at k@po at PR@F{%
+  \chardef\pxrr at k@full\z@
+}
+\def\pxrr at k@po at PR@f{%
+  \chardef\pxrr at k@full\@ne
+}
+\def\pxrr at k@check at option{%
+}
+\def\pxrr at k@compose at block#1#2{%
+  \setbox\pxrr at boxa\pxrr at hbox{#1}%
+  \pxrr at k@make at rep@list{\copy\pxrr at boxb}{#2}%
+  \let\pxrr at natwd\pxrr at zeropt
+  \pxrr at evenspace@int\pxrr at locate@inner\pxrr at boxr
+       \relax{\wd\pxrr at boxa}%
+  \setbox\z@\hbox{%
+    \ifnum\pxrr at side=\z@
+      \raise\pxrr at ruby@raise\box\pxrr at boxr
+    \else
+      \lower\pxrr at ruby@lower\box\pxrr at boxr
+    \fi
+  }%
+  \ht\z@\z@ \dp\z@\z@
+  \@tempdima\wd\z@
+  \setbox\pxrr at boxr\hbox{%
+    \box\z@
+    \kern-\@tempdima
+    \box\pxrr at boxa
+  }%
+}
+\def\pxrr at k@make at rep@list#1#2{%
+  \def\pxrr at res{\pxrr at pre{#1}}%
+  \pxrr at cntr=#2\relax
+  \ifnum\pxrr at cntr>\@ne
+    \@tempcnta\pxrr at cntr \advance\@tempcnta\m at ne
+    \@whilenum{\@tempcnta>\z@}\do{%
+      \pxrr at appto\pxrr at res{\pxrr at inter{#1}}%
+      \advance\@tempcnta\m at ne
+    }%
+  \fi
+  \pxrr at appto\pxrr at res{\pxrr at post}%
+}
+\newif\ifpxrr at k@first at entry
+\newif\ifpxrr at k@last at entry
+\newif\ifpxrr at k@prev at is@block
+\let\pxrr at k@accum at res\relax
+\mathchardef\pxrr at k@prebreakpenalty\z@
+\mathchardef\pxrr at k@postbreakpenalty\z@
+\chardef\pxrr at k@entry at res@type\z@
+\def\pxrr at k@list at pre{%
+  \pxrr at k@first at entrytrue
+  \pxrr at k@last at entryfalse
+  \pxrr at k@prev at is@blockfalse
+  \let\pxrr at k@accum at res\@empty
+  \chardef\pxrr at k@block at seq@state\z@
+}
+\def\pxrr at k@entry at with#1#2{%
+  \pxrr at if@last{%
+    \pxrr at k@last at entrytrue
+    \pxrr at k@entry at with@a#1{#2}%
+  }{%
+    \pxrr at k@entry at with@a#1{#2}%
+  }%
+}
+\def\pxrr at k@entry at with@a#1#2{%
+  \mathchardef\pxrr at k@prebreakpenalty\z@
+  \mathchardef\pxrr at k@postbreakpenalty\z@
+  #1{#2}%
+  \ifnum\pxrr at k@entry at res@type=\z@
+    \expandafter\pxrr at appto\expandafter\pxrr at k@accum at res
+        \expandafter{\pxrr at res}%
+  \else
+    \pxrr at k@accum at res
+    \let\pxrr at k@accum at res\@empty
+  \fi
+  \ifnum\pxrr at k@prebreakpenalty>\z@
+    \@tempcntb\lastpenalty \unpenalty
+    \advance\@tempcntb\pxrr at k@prebreakpenalty
+    \penalty\@tempcntb
+  \fi
+  \ifnum\pxrr at k@entry at res@type=\tw@
+    \ifpxrr at k@prev at is@block
+      \pxrr at inter@mono
+    \fi
+    \pxrr at k@prev at is@blocktrue
+  \else
+    \pxrr at k@prev at is@blockfalse
+  \fi
+  \ifnum\pxrr at k@entry at res@type>\z@
+    \unhbox\pxrr at boxr
+  \fi
+  \ifnum\pxrr at k@postbreakpenalty>\z@
+    \penalty\pxrr at k@postbreakpenalty
+  \fi
+  \pxrr at k@first at entryfalse
+}
+\def\pxrr at k@list at post{%
+  \pxrr at k@accum at res
+  \let\pxrr at k@accum at res\@empty
+}
+\def\pxrr at kenten@entry{%
+  \pxrr at k@entry at with\pxrr at kenten@entry@
+}
+\def\pxrr at kenten@entry@#1{%
+  \pxrr at k@check at char{#1}%
+  \ifpxrr at ok
+    \pxrr at k@compose at block{#1}\@ne
+    \chardef\pxrr at k@entry at res@type=\tw@
+  \else
+    \def\pxrr at res{#1}%
+    \chardef\pxrr at k@entry at res@type=\z@
+  \fi
+}
+\def\pxrr at kenten@entry at kspan{%
+  \pxrr at k@entry at with\pxrr at kenten@entry at kspan@
+}
+\def\pxrr at kenten@entry at kspan@#1{%
+  \pxrr at kenten@entry at kspan@a#1%
+}
+\def\pxrr at kenten@entry at kspan@a#1{%
+  \@ifstar{%
+    \@testopt\pxrr at kenten@entry at kspan@c{}%
+  }{%
+    \@testopt\pxrr at kenten@entry at kspan@b{}%
+  }%
+}
+\def\pxrr at kenten@entry at kspan@b[#1]#2{%
+  \setbox\z@\pxrr at hbox{#2}%
+  \@tempdima\pxrr at body@zw\relax
+  \@tempdimb\wd\z@ \advance\@tempdimb.25\@tempdima
+  \divide\@tempdimb\@tempdima
+  \edef\pxrr at kenten@entry at tempa{\number\@tempdimb}%
+  \pxrr at k@compose at block{#2}\pxrr at kenten@entry at tempa
+  \chardef\pxrr at k@entry at res@type=\tw@
+}
+\def\pxrr at kenten@entry at kspan@c[#1]#2{%
+  \def\pxrr at res{#2}%
+  \chardef\pxrr at k@entry at res@type=\z@
+}
+\def\pxrr at kenten@entry at kenten{%
+  \pxrr at k@entry at with\pxrr at kenten@entry at kenten@
+}
+\def\pxrr at kenten@entry at kenten@#1{%
+  \setbox\pxrr at boxr\hbox{#1}%
+  \chardef\pxrr at k@entry at res@type=\@ne
+}
+\def\pxrr at kenten@entry at ruby{%
+  \pxrr at k@entry at with\pxrr at kenten@entry at ruby@
+}
+\def\pxrr at kenten@entry at ruby@#1{%
+  \pxrr at apply@combotrue
+  \setbox\pxrr at boxr\hbox{#1}%
+  \chardef\pxrr at k@entry at res@type=\@ne
+}
+\newcommand*\kspan{%
+  \@ifstar{%
+    \@testopt\pxrr at kspan@a{}%
+  }{%
+    \@testopt\pxrr at kspan@a{}%
+  }%
+}
+\pxrr at add@protect\kspan
+\def\pxrr at kspan@a[#1]#2{%
+  \begingroup
+    #2%
+  \endgroup
+}
+\def\pxrr at k@check at char#1{%
+  \futurelet\pxrr at token\pxrr at k@check at char@a#1\pxrr at end
+}
+\def\pxrr at k@check at char@a#1\pxrr at end{%
+  \pxrr at cond\ifx\pxrr at token\bgroup\fi{%
+    \pxrr at oktrue
+  }{\pxrr at cond\ifx\pxrr at token\@sptoken\fi{%
+    \pxrr at okfalse
+  }{%
+    \pxrr at check@char\pxrr at token
+    \ifcase\pxrr at cntr
+      \pxrr at okfalse
+    \or
+      \pxrr at oktrue
+      \chardef\pxrr at check@char at temp\z@
+    \or
+      \pxrr at oktrue
+      \chardef\pxrr at check@char at temp\@ne
+    \fi
+    \ifnum\pxrr at k@full=\z@\ifpxrr at ok
+      \pxrr at check@punct at char{`#1}\pxrr at check@char at temp
+      \ifpxrr at ok \pxrr at okfalse
+      \else \pxrr at oktrue
+      \fi
+    \fi\fi
+    \ifpxrr at ok
+      \pxrr at get@prebreakpenalty\@tempcnta{`#1}%
+      \mathchardef\pxrr at k@prebreakpenalty\@tempcnta
+      \pxrr at get@postbreakpenalty\@tempcnta{`#1}%
+      \mathchardef\pxrr at k@postbreakpenalty\@tempcnta
+    \fi
+  }}%
+}
+\AtBeginDocument{%
+  \providecommand*{\kenten}{\jkenten}%
+}
+\newcommand*{\jkenten}{%
+  \pxrr at k@prologue
+  \pxrr at kenten
+}
+\pxrr at add@protect\jkenten
+\def\pxrr at kenten{%
+  \@testopt\pxrr at kenten@a{}%
+}
+\def\pxrr at kenten@a[#1]{%
+  \def\pxrr at option{#1}%
+  \ifpxrr at safe@mode
+    \expandafter\@firstofone
+  \else
+    \expandafter\pxrr at kenten@proc
+  \fi
+}
+\def\pxrr at k@bind at param{%
+  \let\pxrr at c@ruby at font\pxrr at k@ruby at font
+  \let\pxrr at c@size at ratio\pxrr at k@size at ratio
+  \let\pxrr at c@inter at gap\pxrr at k@inter at gap
+}
+\def\pxrr at kenten@proc#1{%
+  \pxrr at prepare@fallback{#1}%
+  \pxrr at k@bind at param
+  \pxrr at assign@fsize
+  \pxrr at k@parse at option\pxrr at option
+  \pxrr at if@alive{%
+    \pxrr at k@decompose{#1}%
+    \let\pxrr at body@list\pxrr at res
+    \pxrr at kenten@main
+  }%
+  \pxrr at kenten@exit
+}
+\def\pxrr at kenten@main{%
+  \setbox\pxrr at boxb\pxrr at hbox@to\z@{%
+    \pxrr at use@ruby at font
+    \hss\pxrr at k@the at mark\hss
+  }%
+  \let\pxrr at entry\pxrr at kenten@entry
+  \let\pxrr at entry@kspan\pxrr at kenten@entry at kspan
+  \let\pxrr at entry@ruby\pxrr at kenten@entry at ruby
+  \let\pxrr at entry@kenten\pxrr at kenten@entry at kenten
+  \let\pxrr at post\pxrr at k@list at post
+  \pxrr at k@list at pre
+  \pxrr at body@list
+}
+\def\pxrr at k@prologue{%
+  \ifpxrr at k@ghost
+    \pxrr at jghost@char
+    \pxrr at inhibitglue
+  \fi
+  \begingroup
+    \ifpxrr at k@ghost
+      \setbox\pxrr at boxa\hbox{\pxrr at jghost@char}%
+      \kern-\wd\pxrr at boxa
+    \fi
+}
+\def\pxrr at kenten@exit{%
+  \ifpxrr at fatal@error
+    \pxrr at fallback
+  \fi
+  \pxrr at k@epilogue
+}
+\def\pxrr at k@epilogue{%
+    \ifpxrr at k@ghost
+      \setbox\pxrr at boxa\hbox{\pxrr at jghost@char}%
+      \kern-\wd\pxrr at boxa
+    \fi
+  \endgroup
+  \ifpxrr at k@ghost
+    \pxrr at inhibitglue
+    \pxrr at jghost@char
+  \fi
+}
+\def\pxrr at debug@show at kenten@input{%
+  \typeout{%
+pxrr at k@the at mark=\meaning\pxrr at k@the at mark^^J%
+pxrr at side=\meaning\pxrr at side^^J%
+pxrr at body@list=\meaning\pxrr at body@list^^J%
+  }%
+}
+\newif\ifpxrr at apply@combo
+\newif\ifpxrr at combo
+\let\pxrr at ck@ruby at font\relax
+\let\pxrr at ck@size at ratio\relax
+\let\pxrr at ck@inter at gap\relax
+\let\pxrr at ck@ruby at inter@gap\relax
+\let\pxrr at ck@side\relax
+\let\pxrr at ck@the at mark\relax
+\let\pxrr at ck@ruby at combo\relax
+\newif\ifpxrr at ck@kenten at head
+\newif\ifpxrr at ck@kenten at end
+\def\pxrr at ck@bind at param{%
+  \let\pxrr at ck@ruby at font\pxrr at c@ruby at font
+  \let\pxrr at ck@size at ratio\pxrr at c@size at ratio
+  \let\pxrr at ck@inter at gap\pxrr at c@inter at gap
+  \let\pxrr at ck@ruby at inter@gap\pxrr at k@ruby at inter@gap
+  \let\pxrr at ck@side\pxrr at side
+  \let\pxrr at ck@the at mark\pxrr at k@the at mark
+  \let\pxrr at ck@ruby at combo\pxrr at k@ruby at combo
+  \pxrr at csletcs{ifpxrr at ck@kenten at head}{ifpxrr at k@first at entry}%
+  \pxrr at csletcs{ifpxrr at ck@kenten at end}{ifpxrr at k@last at entry}%
+}
+
+\let\pxrr at ck@zw\relax
+\let\pxrr at ck@raise at P\relax
+\let\pxrr at ck@raise at S\relax
+\let\pxrr at ck@raise at t\relax
+\def\pxrr at ck@check at option{%
+  \ifpxrr at ck@kenten at head
+    \let\pxrr at bintr@\@empty
+    \let\pxrr at bscomp=.\relax
+    \pxrr at bnobrtrue
+  \fi
+  \ifpxrr at ck@kenten at end
+    \let\pxrr at aintr@\@empty
+    \let\pxrr at ascomp=.\relax
+    \pxrr at anobrtrue
+  \fi
+}
+\def\pxrr at ck@assign at fsize{%
+  \begingroup
+    \@tempdima=\f at size\p@
+    \@tempdima\pxrr at ck@size at ratio\@tempdima
+    \edef\pxrr at ruby@fsize{\the\@tempdima}%
+    \let\pxrr at c@ruby at font\pxrr at ck@ruby at font
+    \pxrr at use@ruby at font
+    \pxrr at get@zwidth\pxrr at ck@zw
+    \global\let\pxrr at gtempa\pxrr at ck@zw
+  \endgroup
+  \let\pxrr at ck@zw\pxrr at gtempa
+  \ifcase\pxrr at ck@side
+    \@tempdimc\pxrr at ck@zw
+    \advance\@tempdimc-\pxrr at htratio\@tempdimc
+    \@tempdima\pxrr at ruby@raise\relax
+    \@tempdimb\pxrr at ruby@zw\relax
+    \advance\@tempdima\pxrr at htratio\@tempdimb
+    \@tempdimb\pxrr at body@zw\relax
+    \advance\@tempdima\pxrr at ck@ruby at inter@gap\@tempdimb
+    \advance\@tempdima\@tempdimc
+    \edef\pxrr at ck@raise at P{\the\@tempdima}%
+    \@tempdima\pxrr at body@zw\relax
+    \@tempdima\pxrr at htratio\@tempdima
+    \@tempdimb\pxrr at body@zw\relax
+    \advance\@tempdima\pxrr at ck@inter at gap\@tempdimb
+    \advance\@tempdima\@tempdimc
+    \edef\pxrr at ck@raise at S{\the\@tempdima}%
+    \let\pxrr at ck@raise at t\pxrr at ck@raise at P
+  \or
+    \@tempdimc\pxrr at ck@zw
+    \@tempdimc\pxrr at htratio\@tempdimc
+    \@tempdima-\pxrr at ruby@lower\relax
+    \@tempdimb\pxrr at ruby@zw\relax
+    \advance\@tempdimb-\pxrr at htratio\@tempdimb
+    \advance\@tempdima-\@tempdimb
+    \@tempdimb\pxrr at body@zw\relax
+    \advance\@tempdima-\pxrr at ck@ruby at inter@gap\@tempdimb
+    \advance\@tempdima-\@tempdimc
+    \edef\pxrr at ck@raise at S{\the\@tempdima}%
+    \@tempdima-\pxrr at body@zw\relax
+    \advance\@tempdima-\pxrr at htratio\@tempdima
+    \@tempdimb\pxrr at body@zw\relax
+    \advance\@tempdima-\pxrr at ck@inter at gap\@tempdimb
+    \advance\@tempdima-\@tempdimc
+    \edef\pxrr at ck@raise at P{\the\@tempdima}%
+    \let\pxrr at ck@raise at t\pxrr at ck@raise at S
+  \fi
+}
+\let\pxrr at ck@body at natwd\relax
+\let\pxrr at ck@locate\relax
+\let\pxrr at ck@kenten at list\relax
+\def\pxrr at ck@compose#1{%
+  \setbox\tw@\pxrr at hbox@to\z@{%
+    \@tempdima=\f at size\p@
+    \@tempdima\pxrr at ck@size at ratio\@tempdima
+    \edef\pxrr at ruby@fsize{\the\@tempdima}%
+    \let\pxrr at c@ruby at font\pxrr at ck@ruby at font
+    \pxrr at use@ruby at font
+    \hss\pxrr at ck@the at mark\hss
+  }%
+  \pxrr at save@listproc
+  \pxrr at decompose{#1}%
+  \def\pxrr at pre{%
+    \let\pxrr at res\@empty
+    \pxrr at ck@compose at entry\pxrr at pre
+  }%
+  \def\pxrr at inter{%
+    \pxrr at ck@compose at entry\pxrr at inter
+  }%
+  \def\pxrr at post{%
+    \pxrr at appto\pxrr at res{\pxrr at post}%
+  }%
+  \pxrr at res
+  \pxrr at restore@listproc
+  \let\pxrr at natwd\pxrr at ck@body at natwd
+  \pxrr at evenspace@int\pxrr at ck@locate\pxrr at boxb\relax
+      {\wd\pxrr at boxa}%
+  \setbox\z@\hbox{%
+    \unhcopy\z@
+    \kern-\wd\z@
+    \ifcase\pxrr at side
+      \raise\pxrr at ck@raise at P
+    \or
+      \raise\pxrr at ck@raise at S
+    \or
+      \raise\pxrr at ck@raise at t
+    \fi
+    \hb at xt@\wd\pxrr at boxa{\hss\copy\pxrr at boxb\hss}%
+  }%
+}
+\def\pxrr at ck@compose at entry#1#2{%
+  \setbox\pxrr at boxb\pxrr at hbox{#2}%
+  \edef\pxrr at tempa{%
+    \noexpand\pxrr at appto\noexpand\pxrr at res{\noexpand#1{%
+        \hb at xt@\the\wd\pxrr at boxb{\hss\copy\tw@\hss}}}%
+  }\pxrr at tempa
+}
+\def\pxrr at dumb@sub#1#2#{#1}
+\def\pxrr at dumb@ruby{%
+  \pxrr at dumb@sub\pxrr at dumb@ruby@
+}
+\def\pxrr at dumb@ruby@#1#2{#1}
+\def\pxrr at dumb@truby{%
+  \pxrr at dumb@sub\pxrr at dumb@truby@
+}
+\def\pxrr at dumb@truby@#1#2#3{#1}
+\def\pxrr at dumb@kenten{%
+  \pxrr at dumb@sub\pxrr at dumb@kenten@
+}
+\def\pxrr at dumb@kenten@#1{#1}
+\providecommand*\pdfstringdefPreHook{}
+\g at addto@macro\pdfstringdefPreHook{%
+  \ifx\pxrr at cmd@ruby\ruby
+    \let\ruby\pxrr at dumb@ruby
+  \fi
+  \let\jruby\pxrr at dumb@ruby
+  \let\aruby\pxrr at dumb@ruby
+  \let\truby\pxrr at dumb@truby
+  \let\atruby\pxrr at dumb@truby
+  \ifx\pxrr at cmd@kenten\kenten
+    \let\kenten\pxrr at dumb@kenten
+  \fi
+  \let\kspan\pxrr at dumb@kenten
+}
 \endinput
 %%
 %% End of file `pxrubrica.sty'.



More information about the tex-live-commits mailing list