From cc13eb77c29c9b0e7e88b0dff77de642caf978ea Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 20 Apr 2017 21:10:01 +0000 Subject: pxrubrica (20apr17) git-svn-id: svn://tug.org/texlive/trunk@43943 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/platex/pxrubrica/pxrubrica.sty | 460 +++++++++++++++++---- 1 file changed, 389 insertions(+), 71 deletions(-) (limited to 'Master/texmf-dist/tex') 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'. -- cgit v1.2.3