summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/platex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-04-20 21:10:01 +0000
committerKarl Berry <karl@freefriends.org>2017-04-20 21:10:01 +0000
commitcc13eb77c29c9b0e7e88b0dff77de642caf978ea (patch)
treef02ec0696d2b1bd6e728e6b8482f430d2456a271 /Master/texmf-dist/tex/platex
parent31bd7e8e835857044c14536e89a72f678dfd1b86 (diff)
pxrubrica (20apr17)
git-svn-id: svn://tug.org/texlive/trunk@43943 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/platex')
-rw-r--r--Master/texmf-dist/tex/platex/pxrubrica/pxrubrica.sty460
1 files changed, 389 insertions, 71 deletions
diff --git a/Master/texmf-dist/tex/platex/pxrubrica/pxrubrica.sty b/Master/texmf-dist/tex/platex/pxrubrica/pxrubrica.sty
index 7e3b4156551..7bc67f1b6a2 100644
--- a/Master/texmf-dist/tex/platex/pxrubrica/pxrubrica.sty
+++ b/Master/texmf-dist/tex/platex/pxrubrica/pxrubrica.sty
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pxrubrica}
- [2017/04/10 v1.1 PX Japanese-style ruby]
+ [2017/04/20 v1.2 PX Japanese-style ruby]
\RequirePackage{keyval}
\def\pxrr@pkgname{pxrubrica}
\def\pxrr@error{%
@@ -58,6 +58,9 @@
\def\pxrr@warn@must@group{%
\pxrr@warn{Only group ruby is allowed here}%
}
+\def\pxrr@warn@bad@jukugo{%
+ \pxrr@warn{Jukugo ruby is not allowed here}%
+}
\def\pxrr@fatal@bad@intr{%
\pxrr@fatal@error{%
Intrusion disallowed when ghost is enabled%
@@ -76,7 +79,13 @@
}
\def\pxrr@fatal@bad@mono{%
\pxrr@fatal@error{%
- Mono-ruby must have a single group%
+ Mono-ruby body must have a single group%
+ }\pxrr@eh@fatal
+}
+\def\pxrr@fatal@bad@switching{%
+ \pxrr@fatal@error{%
+ The body of Switching-ruby (M/J) must\MessageBreak
+ have a single group%
}\pxrr@eh@fatal
}
\def\pxrr@fatal@bad@movable{%
@@ -150,6 +159,17 @@
\chardef\pxrr@evensp=1
\chardef\pxrr@revensp=1
\chardef\pxrr@fullsize=1
+\let\pxrr@body@list\@undefined
+\let\pxrr@body@count\@undefined
+\let\pxrr@ruby@list\@undefined
+\let\pxrr@ruby@count\@undefined
+\let\pxrr@sruby@list\@undefined
+\let\pxrr@sruby@count\@undefined
+\let\pxrr@whole@list\@undefined
+\let\pxrr@bspace\@undefined
+\let\pxrr@aspace\@undefined
+\let\pxrr@natwd\@undefined
+\let\pxrr@all@input\@undefined
\newif\ifpxrr@ok
\newcount\pxrr@cnta
\newcount\pxrr@cntr
@@ -157,6 +177,7 @@
\newbox\pxrr@boxa
\newbox\pxrr@boxb
\newbox\pxrr@boxr
+\let\pxrr@token\relax
\chardef\pxrr@zero=0
\def\pxrr@zeropt{0pt}
\def\pxrr@hfilx#1{%
@@ -168,8 +189,8 @@
\else\expandafter\@secondoftwo
\fi
}
-\def\pxrr@ifnum#1{%
- \ifnum#1\expandafter\@firstoftwo
+\@gobbletwo\if\if \def\pxrr@cond#1\fi{%
+ #1\expandafter\@firstoftwo
\else\expandafter\@secondoftwo
\fi
}
@@ -192,11 +213,12 @@
\def\pxrr@nil{\noexpand\pxrr@nil}
\def\pxrr@end{\noexpand\pxrr@end}
\def\pxrr@without@macro@trace#1{%
- \chardef\pxrr@tracingmacros=\tracingmacros
+ \chardef\pxrr@tracingmacros@save=\tracingmacros
\tracingmacros\z@
#1%
- \tracingmacros\pxrr@tracingmacros
+ \tracingmacros\pxrr@tracingmacros@save
}
+\chardef\pxrr@tracingmacros@save=0
\def\pxrr@hbox#1{%
\hbox{%
\color@begingroup
@@ -252,9 +274,9 @@
\else
\@tempdimb=\@tempcntb\@ne
\fi}%
- \xdef\pxrr@gtmpa{\the\@tempdimb}%
+ \xdef\pxrr@gtempa{\the\@tempdimb}%
\endgroup
- #1=\pxrr@gtmpa\relax
+ #1=\pxrr@gtempa\relax
}
\def\pxrr@interpolate#1#2#3#4#5{%
\edef\pxrr@tempa{#1}%
@@ -294,13 +316,13 @@
\pxrr@decompose@loopa#1\pxrr@end
}
\def\pxrr@decompose@loopa{%
- \futurelet\pxrr@tempa\pxrr@decompose@loopb
+ \futurelet\pxrr@token\pxrr@decompose@loopb
}
\def\pxrr@decompose@loopb{%
- \pxrr@ifx{\pxrr@tempa\pxrr@end}{%
+ \pxrr@ifx{\pxrr@token\pxrr@end}{%
\pxrr@appto\pxrr@res{\pxrr@post}%
}{%
- \pxrr@setok{\pxrr@ifx{\pxrr@tempa\bgroup}}%
+ \pxrr@setok{\pxrr@ifx{\pxrr@token\bgroup}}%
\pxrr@decompose@loopc
}%
}
@@ -376,6 +398,51 @@
\def\pxrr@zip@list@exit{%
\pxrr@appto\pxrr@res{\pxrr@post}%
}
+\def\pxrr@tzip@list#1#2#3{%
+ \let\pxrr@res\@empty
+ \let\pxrr@post\relax
+ \let\pxrr@tempa#1\pxrr@appto\pxrr@tempa{{}}%
+ \let\pxrr@tempb#2\pxrr@appto\pxrr@tempb{{}}%
+ \let\pxrr@tempc#3\pxrr@appto\pxrr@tempc{{}}%
+ \pxrr@tzip@list@loopa
+}
+\def\pxrr@tzip@list@loopa{%
+ \expandafter\pxrr@tzip@list@loopb\pxrr@tempa\pxrr@end
+}
+\def\pxrr@tzip@list@loopb#1#2#3\pxrr@end{%
+ \pxrr@ifx{#1\relax}{%
+ \pxrr@tzip@list@exit
+ }{%
+ \pxrr@appto\pxrr@res{#1{#2}}%
+ \def\pxrr@tempa{#3}%
+ \expandafter\pxrr@tzip@list@loopc\pxrr@tempb\pxrr@end
+ }%
+}
+\def\pxrr@tzip@list@loopc#1#2#3\pxrr@end{%
+ \pxrr@ifx{#1\relax}{%
+ \pxrr@interror{tzip}%
+ \pxrr@appto\pxrr@res{{}}%
+ \pxrr@tzip@list@exit
+ }{%
+ \pxrr@appto\pxrr@res{{#2}}%
+ \def\pxrr@tempb{#3}%
+ \expandafter\pxrr@tzip@list@loopd\pxrr@tempc\pxrr@end
+ }%
+}
+\def\pxrr@tzip@list@loopd#1#2#3\pxrr@end{%
+ \pxrr@ifx{#1\relax}{%
+ \pxrr@interror{tzip}%
+ \pxrr@appto\pxrr@res{{}}%
+ \pxrr@tzip@list@exit
+ }{%
+ \pxrr@appto\pxrr@res{{#2}}%
+ \def\pxrr@tempc{#3}%
+ \pxrr@tzip@list@loopa
+ }%
+}
+\def\pxrr@tzip@list@exit{%
+ \pxrr@appto\pxrr@res{\pxrr@post}%
+}
\def\pxrr@concat@list#1{%
\let\pxrr@res\@empty
\def\pxrr@pre##1{%
@@ -385,6 +452,13 @@
\let\pxrr@post\relax
#1%
}
+\def\pxrr@unite@group#1{%
+ \expandafter\pxrr@concat@list\expandafter{#1}%
+ \expandafter\pxrr@unite@group@a\pxrr@res\pxrr@end#1%
+}
+\def\pxrr@unite@group@a#1\pxrr@end#2{%
+ \def#2{\pxrr@pre{#1}\pxrr@post}%
+}
\def\pxrr@zip@single#1#2{%
\expandafter\pxrr@zip@single@a\expandafter#1#2\pxrr@end
}
@@ -406,6 +480,8 @@
\def\pxrr@tzip@single@c#1\pxrr@end#2\pxrr@end#3\pxrr@end{%
\def\pxrr@res{\pxrr@pre{#1}{#2}{#3}\pxrr@post}%
}
+\let\pxrr@x@tempa\@empty
+\let\pxrr@x@tempb\@empty
\let\pxrr@x@gtempa\@empty
\newif\ifpxrr@x@swa
\def\pxrr@ifprimitive#1{%
@@ -500,10 +576,18 @@
\let\pxrr@jchardef\chardef
\fi
\ifpxrr@in@ptex
- \pxrr@csletcs{ifpxrr@in@tate}{iftdir}
+ \begingroup \catcode`\|=0
+ \gdef\pxrr@if@in@tate{%
+ \pxrr@cond|iftdir|fi
+ }
+ \endgroup
+\else\ifpxrr@in@luatexja
+ \def\pxrr@if@in@tate{%
+ \pxrr@cond\ifnum\ltjgetparameter{direction}=\thr@@\fi
+ }
\else
- \pxrr@csletcs{ifpxrr@in@tate}{iffalse}
-\fi
+ \let\pxrr@if@in@tate\@secondoftwo
+\fi\fi
\ifpxrr@in@ptex
\def\pxrr@get@jchar@token#1#2{%
\begingroup
@@ -739,7 +823,7 @@
\pxrr@csletcs{ifpxrr@aprotr}{ifpxrr@d@aprotr}%
\let\pxrr@bintr@\pxrr@d@bintr
\let\pxrr@aintr@\pxrr@d@aintr
- \let\pxrr@athead@\pxrr@d@athead
+ \let\pxrr@athead\pxrr@d@athead
\let\pxrr@mode\pxrr@d@mode
\let\pxrr@side\pxrr@d@side
\let\pxrr@evensp\pxrr@d@evensp
@@ -752,6 +836,9 @@
\pxrr@afintrfalse
\pxrr@mode@givenfalse
\pxrr@athead@givenfalse
+ \ifpxrr@truby
+ \let\pxrr@mode=M%
+ \fi
\def\pxrr@po@FS{bi}%
\expandafter\pxrr@parse@option@loop\pxrr@tempa @\pxrr@end
}
@@ -811,6 +898,8 @@
\def\pxrr@po@C@m{M}
\def\pxrr@po@C@g{M}
\def\pxrr@po@C@j{M}
+\def\pxrr@po@C@M{M}
+\def\pxrr@po@C@J{M}
\def\pxrr@po@C@P{M}
\def\pxrr@po@C@S{M}
\def\pxrr@po@C@e{M}
@@ -922,6 +1011,14 @@
\let\pxrr@mode=j%
\pxrr@mode@giventrue
}
+\def\pxrr@po@PR@M{%
+ \let\pxrr@mode=M%
+ \pxrr@mode@giventrue
+}
+\def\pxrr@po@PR@J{%
+ \let\pxrr@mode=J%
+ \pxrr@mode@giventrue
+}
\def\pxrr@po@PR@P{%
\chardef\pxrr@side\z@
}
@@ -971,6 +1068,15 @@
\def\pxrr@po@TR@mi@A{fi}
\def\pxrr@po@TR@as@A{fi}
\def\pxrr@po@TR@ai@A{fi}
+\def\pxrr@mode@grand{%
+ \if m\pxrr@mode m%
+ \else\if M\pxrr@mode m%
+ \else\if j\pxrr@mode j%
+ \else\if J\pxrr@mode j%
+ \else\if g\pxrr@mode g%
+ \else ?%
+ \fi\fi\fi\fi\fi
+}
\def\pxrr@check@option{%
\ifpxrr@bprotr\else
\ifpxrr@aprotr\else
@@ -998,18 +1104,18 @@
\fi
\fi
\fi
- \if g\pxrr@mode\else
+ \if \pxrr@mode@grand j%
\ifnum\pxrr@side=\tw@
\let\pxrr@mode=g\relax
\ifpxrr@mode@given
- \pxrr@warn@must@group
+ \pxrr@warn@bad@jukugo
\fi
\fi
\fi
\ifnum\pxrr@athead>\z@
- \ifpxrr@in@tate\else
+ \pxrr@if@in@tate{}{%else
\chardef\pxrr@athead\z@
- \fi
+ }%
\if g\pxrr@mode
\chardef\pxrr@athead\z@
\fi
@@ -1041,17 +1147,17 @@
\pxrr@get@zwidth\pxrr@body@zw
\begingroup
\pxrr@use@ruby@font
- \pxrr@get@zwidth\pxrr@gtempa
- \global\let\pxrr@gtempa\pxrr@gtempa
+ \pxrr@get@zwidth\pxrr@ruby@zw
+ \global\let\pxrr@gtempa\pxrr@ruby@zw
\endgroup
\let\pxrr@ruby@zw\pxrr@gtempa
\pxrr@get@iiskip\pxrr@iiskip
\pxrr@get@iaiskip\pxrr@iaiskip
- \ifpxrr@in@tate
+ \pxrr@if@in@tate{%
\let\pxrr@htratio\pxrr@thtratio
- \else
+ }{%
\let\pxrr@htratio\pxrr@yhtratio
- \fi
+ }%
\@tempdima\pxrr@body@zw\relax
\@tempdima\pxrr@htratio\@tempdima
\@tempdimb\pxrr@ruby@zw\relax
@@ -1137,6 +1243,7 @@
\let\pxrr@sprop@y@#2%
\let\pxrr@sprop@z@#3%
}
+\let\pxrr@makebox@res\@undefined
\def\pxrr@adjust@margin{%
\pxrr@save@listproc
\@tempdima\pxrr@body@zw\relax
@@ -1170,6 +1277,9 @@
\let\pxrr@inter@save\pxrr@inter
\let\pxrr@post@save\pxrr@post
}
+\let\pxrr@pre@save\@undefined
+\let\pxrr@inter@save\@undefined
+\let\pxrr@post@save\@undefined
\def\pxrr@restore@listproc{%
\let\pxrr@pre\pxrr@pre@save
\let\pxrr@inter\pxrr@inter@save
@@ -1184,14 +1294,14 @@
\expandafter\pxrr@transform@kana@loop@a#1\pxrr@end
}
\def\pxrr@transform@kana@loop@a{%
- \futurelet\pxrr@tempa\pxrr@transform@kana@loop@b
+ \futurelet\pxrr@token\pxrr@transform@kana@loop@b
}
\def\pxrr@transform@kana@loop@b{%
- \ifx\pxrr@tempa\pxrr@end
+ \ifx\pxrr@token\pxrr@end
\let\pxrr@tempb\pxrr@transform@kana@end
- \else\ifx\pxrr@tempa\bgroup
+ \else\ifx\pxrr@token\bgroup
\let\pxrr@tempb\pxrr@transform@kana@loop@c
- \else\ifx\pxrr@tempa\@sptoken
+ \else\ifx\pxrr@token\@sptoken
\let\pxrr@tempb\pxrr@transform@kana@loop@d
\else
\let\pxrr@tempb\pxrr@transform@kana@loop@e
@@ -1250,6 +1360,7 @@
}
\newif\ifpxrr@protr
\newif\ifpxrr@any@protr
+\let\pxrr@locate@temp\relax
\def\pxrr@epsilon{0.01pt}
\def\pxrr@compose@block#1#2#3{%
\let\pxrr@compose@block@do\pxrr@compose@oneside@block@do
@@ -1323,35 +1434,50 @@
\pxrr@use@ruby@font
#4%
}%
- \@tempdima\wd\pxrr@boxa
- \ifdim\@tempdima<\wd\pxrr@boxr
- \@tempdima\wd\pxrr@boxr
- \fi
- \ifdim\@tempdima<\wd\pxrr@boxb
- \@tempdima\wd\pxrr@boxb
- \fi
- \edef\pxrr@maxwd{\the\@tempdima}%
- \advance\@tempdima-\pxrr@epsilon\relax
- \edef\pxrr@maxwdx{\the\@tempdima}%
- \ifdim\pxrr@maxwdx>\wd\pxrr@boxr
- \pxrr@decompose{#3}%
- \edef\pxrr@natwd{\the\wd\pxrr@boxr}%
- \pxrr@evenspace@int{#1}\pxrr@boxr
- \pxrr@use@ruby@font{\pxrr@maxwd}%
- \pxrr@adjust@margin
- \fi
- \ifdim\pxrr@maxwdx>\wd\pxrr@boxb
- \pxrr@decompose{#4}%
- \edef\pxrr@natwd{\the\wd\pxrr@boxb}%
- \pxrr@evenspace@int{#1}\pxrr@boxb
- \pxrr@use@ruby@font{\pxrr@maxwd}%
- \pxrr@adjust@margin
- \fi
- \ifdim\pxrr@maxwdx>\wd\pxrr@boxa
- \pxrr@decompose{#2}%
- \edef\pxrr@natwd{\the\wd\pxrr@boxa}%
- \pxrr@evenspace@int{#1}\pxrr@boxa\relax{\pxrr@maxwd}%
+ \@tempswafalse
+ \@tempdima\wd\pxrr@boxr
+ \advance\@tempdima-\wd\pxrr@boxa
+ \ifdim\pxrr@epsilon<\@tempdima \@tempswatrue \fi
+ \@tempdima\wd\pxrr@boxb
+ \advance\@tempdima-\wd\pxrr@boxa
+ \ifdim\pxrr@epsilon<\@tempdima \@tempswatrue \fi
+ \if@tempswa
+ \pxrr@protrtrue
+ \let\pxrr@locate@temp#1%
+ \ifnum\pxrr@athead>\@ne
+ \ifnum\pxrr@locate@temp=\pxrr@locate@inner
+ \let\pxrr@locate@temp\pxrr@locate@head
+ \fi
+ \fi
+ \ifdim\wd\pxrr@boxr<\wd\pxrr@boxb
+ \pxrr@compose@twoside@block@sub{#2}{#3}%
+ \pxrr@boxr\pxrr@boxb
+ \else
+ \pxrr@compose@twoside@block@sub{#2}{#4}%
+ \pxrr@boxb\pxrr@boxr
+ \fi
\else
+ \pxrr@protrfalse
+ \ifnum\pxrr@athead=\z@
+ \@tempdima\wd\pxrr@boxa
+ \advance\@tempdima-\wd\pxrr@boxr
+ \ifdim\pxrr@epsilon<\@tempdima
+ \pxrr@decompose{#3}%
+ \edef\pxrr@natwd{\the\wd\pxrr@boxr}%
+ \pxrr@evenspace@int{#1}\pxrr@boxr
+ \pxrr@use@ruby@font{\wd\pxrr@boxa}%
+ \pxrr@adjust@margin
+ \fi
+ \@tempdima\wd\pxrr@boxa
+ \advance\@tempdima-\wd\pxrr@boxb
+ \ifdim\pxrr@epsilon<\@tempdima
+ \pxrr@decompose{#4}%
+ \edef\pxrr@natwd{\the\wd\pxrr@boxb}%
+ \pxrr@evenspace@int{#1}\pxrr@boxb
+ \pxrr@use@ruby@font{\wd\pxrr@boxa}%
+ \pxrr@adjust@margin
+ \fi
+ \fi
\let\pxrr@bspace\pxrr@zeropt
\let\pxrr@aspace\pxrr@zeropt
\fi
@@ -1369,8 +1495,47 @@
\box\pxrr@boxa
}%
}
+\let\pxrr@body@wd\relax
+\let\pxrr@restore@margin@values\relax
+\def\pxrr@compose@twoside@block@sub#1#2#3#4{%
+ \pxrr@decompose{#1}%
+ \edef\pxrr@natwd{\the\wd\pxrr@boxa}%
+ \pxrr@evenspace@int\pxrr@locate@temp\pxrr@boxa\relax{\wd#4}%
+ \@tempdima\wd#4%
+ \advance\@tempdima-\pxrr@bspace\relax
+ \advance\@tempdima-\pxrr@aspace\relax
+ \edef\pxrr@body@wd{\the\@tempdima}%
+ \advance\@tempdima-\wd#3%
+ \ifdim\pxrr@epsilon<\@tempdima
+ \edef\pxrr@restore@margin@values{%
+ \edef\noexpand\pxrr@bspace{\pxrr@bspace}%
+ \edef\noexpand\pxrr@aspace{\pxrr@aspace}%
+ }%
+ \pxrr@decompose{#2}%
+ \edef\pxrr@natwd{\the\wd#3}%
+ \pxrr@evenspace@int\pxrr@locate@temp#3%
+ \pxrr@use@ruby@font{\pxrr@body@wd}%
+ \pxrr@adjust@margin
+ \pxrr@restore@margin@values
+ \setbox#3\hbox{%
+ \kern\pxrr@bspace\relax
+ \box#3%
+ }%
+ \else
+ \ifnum\pxrr@locate@temp=\pxrr@locate@head
+ \@tempdima\z@
+ \else\ifnum\pxrr@locate@temp=\pxrr@locate@inner
+ \@tempdima.5\@tempdima
+ \fi\fi
+ \advance\@tempdima\pxrr@bspace\relax
+ \setbox#3\hbox{%
+ \kern\@tempdima
+ \box#3%
+ }%
+ \fi
+}
\def\pxrr@compose@block@pre{%
- \pxrr@ifnum{\pxrr@fullsize>\z@}{%
+ \pxrr@cond\ifnum\pxrr@fullsize>\z@\fi{%
\pxrr@compose@block@pre@a
}{%
\pxrr@compose@block@pre@d
@@ -1392,7 +1557,7 @@
\pxrr@compose@block@pre@d{#3}{#4}{#1}{#2}%
}
\def\pxrr@compose@block@pre@d{%
- \pxrr@ifnum{\pxrr@evensp=\z@}{%
+ \pxrr@cond\ifnum\pxrr@evensp=\z@\fi{%
\pxrr@compose@block@pre@e
}{%
\pxrr@compose@block@pre@f
@@ -1402,7 +1567,7 @@
\pxrr@compose@block@pre@f{#1}{{#2}}%
}
\def\pxrr@compose@block@pre@f{%
- \pxrr@ifnum{\pxrr@revensp=\z@}{%
+ \pxrr@cond\ifnum\pxrr@revensp=\z@\fi{%
\pxrr@compose@block@pre@g
}{%
\pxrr@compose@block@do
@@ -1411,6 +1576,7 @@
\def\pxrr@compose@block@pre@g#1#2#3#4{%
\pxrr@compose@block@do{#1}{#2}{{#3}}{{#4}}%
}
+\let\pxrr@compose@block@tempa\@undefined
\def\pxrr@add@protect#1{%
\expandafter\pxrr@add@protect@a
\csname\expandafter\@gobble\string#1\space\endcsname#1%
@@ -1454,10 +1620,10 @@
}
\def\pxrr@check@kinsoku#1{%
\let\pxrr@tempb#1%
- \futurelet\pxrr@tempa\pxrr@check@kinsoku@a
+ \futurelet\pxrr@token\pxrr@check@kinsoku@a
}
\def\pxrr@check@kinsoku@a{%
- \pxrr@check@char\pxrr@tempa
+ \pxrr@check@char\pxrr@token
\ifpxrr@abody\else
\ifnum\pxrr@cntr=\@ne
\pxrr@cntr\tw@
@@ -1662,6 +1828,12 @@
\expandafter\pxrr@do@scan
\fi
}
+\def\pxrr@mode@is@switching{%
+ \if M\pxrr@mode T%
+ \else\if J\pxrr@mode T%
+ \else F%
+ \fi\fi T%
+}
\def\pxrr@ruby@proc#1#2{%
\pxrr@prepare@fallback{#1}%
\pxrr@assign@fsize
@@ -1669,15 +1841,19 @@
\pxrr@decompbar{#2}%
\let\pxrr@ruby@list\pxrr@res
\edef\pxrr@ruby@count{\the\pxrr@cntr}%
+ \let\pxrr@sruby@list\relax
\pxrr@decompbar{#1}%
\let\pxrr@body@list\pxrr@res
\edef\pxrr@body@count{\the\pxrr@cntr}%
-\ifpxrrDebug
- \pxrr@debug@show@input
-\fi
\ifpxrr@safe@mode
\pxrr@setup@safe@mode
\fi
+ \if\pxrr@mode@is@switching
+ \pxrr@resolve@mode
+ \fi
+\ifpxrrDebug
+ \pxrr@debug@show@input
+\fi
\pxrr@if@alive{%
\if g\pxrr@mode
\pxrr@ruby@check@g
@@ -1700,24 +1876,74 @@
\pxrr@assign@fsize
\pxrr@parse@option\pxrr@option
\def\pxrr@all@input{{#1}{#2}{#3}}%
-\ifpxrrDebug
- \pxrr@debug@show@input
-\fi
+ \pxrr@decompbar{#3}%
+ \let\pxrr@sruby@list\pxrr@res
+ \edef\pxrr@sruby@count{\the\pxrr@cntr}%
+ \pxrr@decompbar{#2}%
+ \let\pxrr@ruby@list\pxrr@res
+ \edef\pxrr@ruby@count{\the\pxrr@cntr}%
+ \pxrr@decompbar{#1}%
+ \let\pxrr@body@list\pxrr@res
+ \edef\pxrr@body@count{\the\pxrr@cntr}%
\ifpxrr@safe@mode
\pxrr@setup@safe@mode
\fi
+ \if\pxrr@mode@is@switching
+ \pxrr@resolve@mode
+ \fi
+\ifpxrrDebug
+ \pxrr@debug@show@input
+\fi
\pxrr@if@alive{%
- \pxrr@ruby@check@tg
- \pxrr@if@alive{\pxrr@ruby@main@tg}%
+ \if g\pxrr@mode
+ \pxrr@ruby@check@tg
+ \pxrr@if@alive{\pxrr@ruby@main@tg}%
+ \else
+ \pxrr@ruby@check@tm
+ \pxrr@if@alive{\pxrr@ruby@main@tm}%
+ \fi
}%
\pxrr@ruby@exit
}
\def\pxrr@setup@safe@mode{%
- \let\pxrr@mode=g%
+ \let\pxrr@mode=g\relax
+ \pxrr@unite@group\pxrr@body@list
+ \def\pxrr@body@count{1}%
+ \pxrr@unite@group\pxrr@ruby@list
+ \def\pxrr@ruby@count{1}%
+ \ifx\pxrr@sruby@list\relax\else
+ \pxrr@unite@group\pxrr@sruby@list
+ \def\pxrr@sruby@count{1}%
+ \fi
\chardef\pxrr@evensp\z@
\chardef\pxrr@revensp\z@
\chardef\pxrr@fullsize\z@
}
+\def\pxrr@resolve@mode{%
+ \ifnum\pxrr@body@count=\@ne
+ \ifnum\pxrr@ruby@count=\@ne
+ \let\pxrr@pre\pxrr@decompose
+ \let\pxrr@post\relax
+ \pxrr@body@list
+ \ifnum\pxrr@cntr=\@ne\else
+ \let\pxrr@mode=g%
+ \fi
+ \fi
+ \if M\pxrr@mode \let\pxrr@mode=m\fi
+ \if J\pxrr@mode \let\pxrr@mode=j\fi
+\ifpxrrDebug
+ \pxrr@debug@show@resolve@mode
+\fi
+ \if g\pxrr@mode
+ \chardef\pxrr@athead\z@
+ \fi
+ \if g\pxrr@mode\else
+ \chardef\pxrr@evensp\@ne
+ \fi
+ \else
+ \pxrr@fatal@bad@switching
+ \fi
+}
\def\pxrr@ruby@check@g{%
\ifnum\pxrr@body@count=\pxrr@ruby@count\relax
\ifnum\pxrr@body@count=\@ne\else
@@ -1746,6 +1972,38 @@
\fi
}
\def\pxrr@ruby@check@tg{%
+ \ifnum\pxrr@body@count=\pxrr@ruby@count\relax\else
+ \pxrr@fatal@bad@length\pxrr@body@count\pxrr@ruby@count
+ \fi
+ \ifnum\pxrr@body@count=\pxrr@sruby@count\relax\else
+ \pxrr@fatal@bad@length\pxrr@body@count\pxrr@sruby@count
+ \fi
+ \pxrr@if@alive{%
+ \ifnum\pxrr@body@count=\@ne\else
+ \ifpxrr@abody
+ \pxrr@fatal@bad@movable
+ \else\ifnum\pxrr@extra=\z@
+ \pxrr@fatal@na@movable
+ \fi\fi
+ \fi
+ }%
+}
+\def\pxrr@ruby@check@tm{%
+ \ifnum\pxrr@body@count=\@ne
+ \let\pxrr@pre\pxrr@decompose
+ \let\pxrr@post\relax
+ \pxrr@body@list
+ \let\pxrr@body@list\pxrr@res
+ \edef\pxrr@body@count{\the\pxrr@cntr}%
+ \ifnum\pxrr@body@count=\pxrr@ruby@count\relax\else
+ \pxrr@fatal@bad@length\pxrr@body@count\pxrr@ruby@count
+ \fi
+ \ifnum\pxrr@body@count=\pxrr@sruby@count\relax\else
+ \pxrr@fatal@bad@length\pxrr@body@count\pxrr@sruby@count
+ \fi
+ \else
+ \pxrr@fatal@bad@mono
+ \fi
}
\newif\ifpxrr@par@head
\def\pxrr@check@par@head{%
@@ -1884,6 +2142,59 @@
\let\pxrr@post\@empty
\pxrr@whole@list
}
+\def\pxrr@ruby@main@tm{%
+ \pxrr@tzip@list\pxrr@body@list\pxrr@ruby@list\pxrr@sruby@list
+ \let\pxrr@whole@list\pxrr@res
+ \pxrr@check@par@head
+ \pxrr@any@protrfalse
+\ifpxrrDebug
+\pxrr@debug@show@recomp
+\fi
+ \let\pxrr@locate@head@\pxrr@locate@inner
+ \let\pxrr@locate@end@\pxrr@locate@inner
+ \let\pxrr@locate@sing@\pxrr@locate@inner
+ \ifpxrr@aprotr\else
+ \let\pxrr@locate@end@\pxrr@locate@end
+ \let\pxrr@locate@sing@\pxrr@locate@end
+ \fi
+ \ifpxrr@bprotr\else
+ \let\pxrr@locate@head@\pxrr@locate@head
+ \let\pxrr@locate@sing@\pxrr@locate@head
+ \fi
+ \def\pxrr@pre##1##2##3{%
+ \pxrr@if@last{%
+ \pxrr@compose@twoside@block\pxrr@locate@sing@
+ {##1}{##2}{##3}%
+ \pxrr@intrude@head
+ \unhbox\pxrr@boxr
+ \pxrr@intrude@end
+ \pxrr@takeout@any@protr
+ }{%
+ \pxrr@compose@twoside@block\pxrr@locate@head@
+ {##1}{##2}{##3}%
+ \pxrr@intrude@head
+ \unhbox\pxrr@boxr
+ }%
+ }%
+ \def\pxrr@inter##1##2##3{%
+ \pxrr@if@last{%
+ \pxrr@compose@twoside@block\pxrr@locate@end@
+ {##1}{##2}{##3}%
+ \pxrr@inter@mono
+ \unhbox\pxrr@boxr
+ \pxrr@intrude@end
+ \pxrr@takeout@any@protr
+ }{%
+ \pxrr@compose@twoside@block\pxrr@locate@inner
+ {##1}{##2}{##3}%
+ \pxrr@inter@mono
+ \unhbox\pxrr@boxr
+ }%
+ }%
+ \let\pxrr@post\@empty
+ \setbox\pxrr@boxr\pxrr@hbox{\pxrr@whole@list}%
+ \unhbox\pxrr@boxr
+}
\def\pxrr@ruby@main@tg{%
\pxrr@check@par@head
\pxrr@put@head@penalty
@@ -1900,6 +2211,7 @@
\unhbox\pxrr@boxr
\pxrr@intrude@end
}
+\let\pxrr@ruby@main@mg\@undefined
\newif\ifpxrr@ghost
\pxrr@jchardef\pxrr@zspace=\pxrr@jc{2121:3000}
\def\pxrr@jprologue{%
@@ -1914,6 +2226,9 @@
\kern-\wd\pxrr@boxa
\fi
}
+\chardef\pxrr@aghostchar=23 % compwordmark
+\let\pxrr@aghost\relax
+\let\pxrr@aghostfont\relax
\def\pxrr@setup@aghost{%
\global\let\pxrr@setup@aghost\relax
\IfFileExists{t1lmr.fd}{%
@@ -1921,7 +2236,6 @@
\fontsize{2.5}{0}\usefont{T1}{lmr}{m}{n}%
\endgroup
\global\pxrr@letcs\pxrr@aghostfont{T1/lmr/m/n/2.5}%
- \global\chardef\pxrr@aghostchar=23 % compwordmark
\gdef\pxrr@aghost{{\pxrr@aghostfont\pxrr@aghostchar}}%
\global\xspcode\pxrr@aghostchar=3 %
}{%else
@@ -2021,6 +2335,10 @@
----
}%
}
+\def\pxrr@debug@show@resolve@mode{%
+ \typeout{----\pxrr@pkgname\space resolve-mode:
+ \meaning\pxrr@mode}%
+}
\endinput
%%
%% End of file `pxrubrica.sty'.