From 16559ce13a74c7a182875559b379cac00b07efda Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 9 Jun 2022 03:01:00 +0000 Subject: CTAN sync 202206090300 --- language/arabic/arabtex/texinput/abidir.sty | 480 ++++++++++++++-------------- 1 file changed, 240 insertions(+), 240 deletions(-) (limited to 'language/arabic/arabtex/texinput/abidir.sty') diff --git a/language/arabic/arabtex/texinput/abidir.sty b/language/arabic/arabtex/texinput/abidir.sty index 2b390e4609..13e0d5b289 100644 --- a/language/arabic/arabtex/texinput/abidir.sty +++ b/language/arabic/arabtex/texinput/abidir.sty @@ -1,240 +1,240 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% abidir.sty -% ArabTeX macros for bidirectional linebreaking -% 22.08.2003 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% (c) Klaus Lagally -% Institut fuer Formale Methoden der Informatik -% Universitaet Stuttgart -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\ifx \a@RL \undefined \else \xpa \endinput \fi - -\a@ident {abidir.sty} {3.11 bidirectional linebreaking} {22.08.2003} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% -%\def \test@insert #1>{\a@Linsert {#1}} - -% \LR{#1} = LR insertion inside Rtext -\def \a@c@LR {\unarab@codes \a@Linsert } -\let \a@c@L \a@c@LR % usage: \L {LR text} - -% \LR{#1} = LR insertion inside Ltext: trivial -\let \LR \relax \let \L \relax - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% \RL{#1} = RL insertion inside Ltext -\def \RL {\protect \a@RL } -\let \R \RL % usage: \R {RL text} - -% \RL{#1} = RL insertion inside Rtext: trivial -\def \a@c@RL #1{\test@token #1 } \let \a@c@R \a@c@RL - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\def \goodpar {% usage: \goodpar {Roman paragraphs} -% put around one or more paragraphs if the linebreaking is bad -% caution: may lead to storage overflow -\dimen0 \prevdepth \setbox0 \vbox \bgroup \prevdepth \dimen0 -\def \par {\egroup \endgraf \goodpar x}% dummy character -\aftergroup \g@@dpar \let \next=} - -\def \g@@dpar {\unvbox0 } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\newdimen \a@Llength \newdimen \a@Lwidth \newdimen \a@Lindent -\newdimen \a@Rlength \newdimen \a@Rheight -\newbox \a@Rboxi \newbox \a@Rboxii \newbox \Rinsertb@x -\newbox \a@Rdummyi \newbox \a@Rdummyii \newbox \Linsertb@x -\newbox \a@spacebox \newif \ifR@split \newcount \a@lines - -\def \ins@skip {\hskip \z@ plus 0.1em }% before and after insertion - -\def \a@vglue {\z@ plus 2ex }% glue at top of the insertion \vbox - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\def \a@RL {% RTL insertion inside LRtext -\ifaRL \else \aRLtrue - \let \a@RLpar \par % prepare for normal baselines - \edef \a@lslimit {\lineskiplimit \the\lineskiplimit}% - \def \par {\a@RLpar \let \par \a@RLpar \a@lslimit \aRLfalse }% -\fi \lineskiplimit -.9\baselineskip % enforce uniform baselines -\bgroup \arab@codes \set@arabfont \@waslafalse \@wasfalse \a@@Rinsert } - -\def \a@@Rinsert #1{% RL insertion inside Ltext -\ifshow \a@@verb {#1}\fi % verbating listing -\ifarab \a@Rinsert {#1} \fi % arabic writing -\iftrans \set@transfont \trans@text #1 \end \/\fi -\ifnum \tracingarab > \@ne \message {>}\fi -\unskip \egroup } - -\def \a@Rinsert #1{% put a sequence of RL words into Ltext -\leavevmode % go to hmode if not there already -\ifinner \a@sequence {#1}% inside a \hbox: append -\else \a@Rsplit {#1}% splice into the current paragraph -\fi } - -\def \a@Rsplit #1{% splice RL words into the current paragraph -\bgroup \def \next@command {\test@special}\transfalse \showfalse -\ifspread \else \def \arab@space {\space }% no infinite stretch !! - \def \tat@skip {0.04ex plus 0.5ex }% -\fi - \a@Rdimen {#1}% get the length of the first 2 RL words -\ifdim \wd\a@Rboxii = \z@ - \unhbox\a@Rboxi % done with the insertion -\else \a@Ldimen % get the dimensions of the last line - \a@Rtobox {#1}% pack the insertion lines into a \vbox - \a@Runpack % unpack and splice into the current paragraph -\fi \egroup } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\def \a@Rdimen #1{% get the dimensions of the first two words -\setbox\a@Rboxii \hbox {}\setbox\a@Rdummyii \box\a@Rboxii -\a@Rfirst #1 \to \a@wordi \a@Rrest -\xpa \a@Rwordtobox \a@wordi \to \a@Rboxi \a@Rdummyi -\ifx \space \a@Rrest \else -\ifx \relax \a@Rrest \relax \else -\xpa \a@Rfirst \a@Rrest \to \a@wordii \a@Rrest -\xpa \a@Rwordtobox \a@wordii \to \a@Rboxii \a@Rdummyii -\fi\fi } - -\def \a@Rwordtobox #1\to #2#3{% Rword to \box#2, Rdummy to \box#3 -\a@sequence {#1}\setbox#2 \lastbox -\setbox#3\hbox to \wd#2{\hfill }\ht#3\ht#2\dp#3\z@} - -{\catcode `\^^a0 12 -\gdef \a@Rfirst #1 #2\to #3#4{% split off first word -\ifx \relax #1\relax \a@Rfirsti #2\to #3#4\else -\ifx \relax #2\relax \a@Rfirstii #1^^a0\to #3#4\else -\def #3{#1}\def #4{#2}\fi\fi } - -\gdef \a@Rfirstii #1^^a0#2\to #3#4{% split off first word -\ifx \relax #1\relax \a@Rfirstiii #2\to #3#4\else -\def #3{#1}\def #4{#2 }\fi } -}% catcode ^^a0 - -\def \a@Rfirsti #1\to #2#3{% split off leading space -\ifx \relax #1\relax \def #2{\relax }\def #3{\relax }% -\else \a@Rfirst #1\to #2#3\fi } - -\def \a@Rfirstiii #1\to #2#3{% split off leading RL space -\ifx \relax #1\relax \def #2{\relax }\def #3{\relax }% -\else \a@Rfirstii #1\to #2#3\fi } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\def \a@Ldimen {% get the dimensions of the preceding line -\setbox\a@spacebox \hbox {\arab@space}\tolerance 10000 -\R@splitfalse \leavevmode -\penalty 0 -\copy \a@Rdummyi \arab@space \copy \a@Rdummyii -\parfillskip \z@ plus 1fill \relax \tr@ceoff -$$\global \a@Llength \predisplaysize % dummy display -\global \a@Lwidth \displaywidth \global \a@Lindent \displayindent -\hbox to \a@Lwidth {}\postdisplaypenalty \@M -$$ {\endgraf }% keep paragraph parameters -\tr@ceon \a@lines \prevgraf \advance \a@lines -3 -\prevgraf \a@lines \prevdepth -\baselineskip -\a@Ladjust % update \a@Llength and \a@Lindent -\ifinner \a@killdisplay \else \a@skipback \fi } - -\def \a@Ladjust {% correct \a@Llength and \a@Lindent -\ifdim \a@Llength = \maxdimen \a@Llength \a@Lwidth % flexible line -\else \advance \a@Llength -2em \advance \a@Llength -\a@Lindent -\fi -\advance \a@Llength -\leftskip \advance \a@Llength -\wd\a@Rdummyii -\ifdim \a@Llength = \z@ \R@splittrue \a@Llength \a@Lwidth - \advance \a@Llength -\leftskip \advance \a@Llength -\rightskip -\else \advance \a@Llength -\wd\a@spacebox -\fi \advance \a@Llength -\wd\a@Rdummyi -\ifnum \prevgraf = 1 - \ifdim \z@ > \hangindent \advance \a@Llength -\hangindent - \else \advance \a@Llength \hangindent - \fi -\else \ifdim \a@Llength = \z@ \R@splittrue \a@Llength \a@Lwidth - \fi -\fi } - -\def \a@killdisplay {% vbox: get back to the old position -\unskip \unskip \unpenalty \setbox0 \lastbox % get rid of garbage -\ifR@split \unskip \unskip \unpenalty \setbox0 \lastbox \fi -\unskip \unskip \unpenalty \setbox0 \lastbox % last line -\dimen0 \baselineskip \advance \dimen0 -\ht0 -\advance \dimen0 -\lastskip \prevdepth \dimen0 -\unskip \vskip -\parskip -\noindent \unhbox0 % open and trim last line -\unskip \unskip \unpenalty \setbox0 \lastbox -\ifR@split \else \unskip \setbox0 \lastbox \fi } - -\def \a@skipback {% paragraph: get back to the old position -\vskip -\belowdisplayskip \vskip -3\baselineskip -\vskip -\abovedisplayskip \vskip -\parskip -\ifR@split \ifdim \z@ > \lineskiplimit \vskip -\baselineskip \else -\vskip -\ht\a@Rdummyii \vskip -\dp\a@Rboxi \vskip -\lineskip -\fi\fi \noindent \arab@strut \nobreak \hskip \a@Llength } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\def \a@normpen #1{% prevent penalty 10000 -\ifnum #1= 10000 #1= 9999 \fi } - -\def \a@Rtobox #1{% pack the insertion into \Rinsertb@x -\setbox \Rinsertb@x \vbox {\a@hsize \a@Lwidth -\a@normpen \widowpenalty \a@normpen \clubpenalty -\leftskip \z@ \rightskip \z@ -\parfillskip \z@ plus 1fil \relax \parskip \z@ -\let \a@@kern \a@kern \let \a@@mkern \a@mkern -\def \a@kern {\nobreak \a@@kern}\def \a@mkern {\nobreak \a@@mkern}% -\let \end \relax \spreadtrue \vskip \a@vglue \hbadness 10000 -\putlineb@x {\arab@strut \hskip \a@Llength }\a@spacefalse -\test@token #1 \end \unskip \unskip \vskip \a@vglue -\hbox {\box\lineb@x \hfill }}} - -\def \a@Runpack {\ins@skip % unpack all lines from the insertion -\loop \a@Rgetline \unhbox \tempb@x \unskip \unskip \break -\ifvbox \Rinsertb@x \repeat \unpenalty \ins@skip } - -\def \a@Rgetline {% unpack the next line globally to \box \tempb@x -{\vbadness 10000 \splittopskip \a@vglue -\dimen0 \baselineskip \advance \dimen0 1ex -\setbox \tempb@x \vsplit \Rinsertb@x to \dimen0 -\setbox0 \vbox {\unvbox \tempb@x \setbox2 \lastbox \unhbox2 -\unskip \unskip \unpenalty \global \setbox \tempb@x \lastbox }}} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\def \a@Linsert #1{% splice Ltext into RL paragraph -\putwordb@x {\ins@skip }\a@spacefalse \a@@Linsert {#1}\a@Lunpack -\putwordb@x {\ins@skip }\a@spacetrue \arab@codes -\tracingmacros 0 -\test@token } - -\def \a@@Linsert #1{% splice Ltext into RL paragraph -\dimen0 \wd \lineb@x \setbox \Linsertb@x \vbox -{\hsize \a@hsize \hangindent -\dimen0 \hangafter -\@ne -\tr@ceoff \rm \tr@ceon \rightskip \z@ plus .001fil -\vskip \a@vglue \everypar {}\parskip \z@ -\dimen2 \fontdimen4\font \fontdimen4\font 0pt % prevent shrinking -\noindent \null \hskip 0pt plus .001fil \relax #1 -\clubpenalty 0 \widowpenalty 0 \tolerance 10000 -\endgraf \fontdimen4\font \dimen2 }} - -\def \a@Lunpack {% unpack all lines from the insertion -\loop \a@Lgetline \putwordb@x -{\unhbox \tempb@x \unskip \unskip }\a@spacefalse -\ifvbox \Linsertb@x \put@line \a@spacefalse \repeat } - -\def \a@Lgetline {% unpack the next line globally to \box \tempb@x -{\vbadness 10000 \splittopskip \a@vglue \dimen0 \baselineskip -\setbox \tempb@x \vsplit \Linsertb@x to \dimen0 -\setbox0 \vbox {\unvbox \tempb@x \global \setbox \tempb@x \lastbox }}} - -%\testoutput -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% abidir.sty +% ArabTeX macros for bidirectional linebreaking +% 22.08.2003 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% (c) Klaus Lagally +% Institut fuer Formale Methoden der Informatik +% Universitaet Stuttgart +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifx \a@RL \undefined \else \xpa \endinput \fi + +\a@ident {abidir.sty} {3.11 bidirectional linebreaking} {22.08.2003} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% +%\def \test@insert #1>{\a@Linsert {#1}} + +% \LR{#1} = LR insertion inside Rtext +\def \a@c@LR {\unarab@codes \a@Linsert } +\let \a@c@L \a@c@LR % usage: \L {LR text} + +% \LR{#1} = LR insertion inside Ltext: trivial +\let \LR \relax \let \L \relax + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \RL{#1} = RL insertion inside Ltext +\def \RL {\protect \a@RL } +\let \R \RL % usage: \R {RL text} + +% \RL{#1} = RL insertion inside Rtext: trivial +\def \a@c@RL #1{\test@token #1 } \let \a@c@R \a@c@RL + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def \goodpar {% usage: \goodpar {Roman paragraphs} +% put around one or more paragraphs if the linebreaking is bad +% caution: may lead to storage overflow +\dimen0 \prevdepth \setbox0 \vbox \bgroup \prevdepth \dimen0 +\def \par {\egroup \endgraf \goodpar x}% dummy character +\aftergroup \g@@dpar \let \next=} + +\def \g@@dpar {\unvbox0 } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newdimen \a@Llength \newdimen \a@Lwidth \newdimen \a@Lindent +\newdimen \a@Rlength \newdimen \a@Rheight +\newbox \a@Rboxi \newbox \a@Rboxii \newbox \Rinsertb@x +\newbox \a@Rdummyi \newbox \a@Rdummyii \newbox \Linsertb@x +\newbox \a@spacebox \newif \ifR@split \newcount \a@lines + +\def \ins@skip {\hskip \z@ plus 0.1em }% before and after insertion + +\def \a@vglue {\z@ plus 2ex }% glue at top of the insertion \vbox + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def \a@RL {% RTL insertion inside LRtext +\ifaRL \else \aRLtrue + \let \a@RLpar \par % prepare for normal baselines + \edef \a@lslimit {\lineskiplimit \the\lineskiplimit}% + \def \par {\a@RLpar \let \par \a@RLpar \a@lslimit \aRLfalse }% +\fi \lineskiplimit -.9\baselineskip % enforce uniform baselines +\bgroup \arab@codes \set@arabfont \@waslafalse \@wasfalse \a@@Rinsert } + +\def \a@@Rinsert #1{% RL insertion inside Ltext +\ifshow \a@@verb {#1}\fi % verbating listing +\ifarab \a@Rinsert {#1} \fi % arabic writing +\iftrans \set@transfont \trans@text #1 \end \/\fi +\ifnum \tracingarab > \@ne \message {>}\fi +\unskip \egroup } + +\def \a@Rinsert #1{% put a sequence of RL words into Ltext +\leavevmode % go to hmode if not there already +\ifinner \a@sequence {#1}% inside a \hbox: append +\else \a@Rsplit {#1}% splice into the current paragraph +\fi } + +\def \a@Rsplit #1{% splice RL words into the current paragraph +\bgroup \def \next@command {\test@special}\transfalse \showfalse +\ifspread \else \def \arab@space {\space }% no infinite stretch !! + \def \tat@skip {0.04ex plus 0.5ex }% +\fi + \a@Rdimen {#1}% get the length of the first 2 RL words +\ifdim \wd\a@Rboxii = \z@ + \unhbox\a@Rboxi % done with the insertion +\else \a@Ldimen % get the dimensions of the last line + \a@Rtobox {#1}% pack the insertion lines into a \vbox + \a@Runpack % unpack and splice into the current paragraph +\fi \egroup } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def \a@Rdimen #1{% get the dimensions of the first two words +\setbox\a@Rboxii \hbox {}\setbox\a@Rdummyii \box\a@Rboxii +\a@Rfirst #1 \to \a@wordi \a@Rrest +\xpa \a@Rwordtobox \a@wordi \to \a@Rboxi \a@Rdummyi +\ifx \space \a@Rrest \else +\ifx \relax \a@Rrest \relax \else +\xpa \a@Rfirst \a@Rrest \to \a@wordii \a@Rrest +\xpa \a@Rwordtobox \a@wordii \to \a@Rboxii \a@Rdummyii +\fi\fi } + +\def \a@Rwordtobox #1\to #2#3{% Rword to \box#2, Rdummy to \box#3 +\a@sequence {#1}\setbox#2 \lastbox +\setbox#3\hbox to \wd#2{\hfill }\ht#3\ht#2\dp#3\z@} + +{\catcode `\^^a0 12 +\gdef \a@Rfirst #1 #2\to #3#4{% split off first word +\ifx \relax #1\relax \a@Rfirsti #2\to #3#4\else +\ifx \relax #2\relax \a@Rfirstii #1^^a0\to #3#4\else +\def #3{#1}\def #4{#2}\fi\fi } + +\gdef \a@Rfirstii #1^^a0#2\to #3#4{% split off first word +\ifx \relax #1\relax \a@Rfirstiii #2\to #3#4\else +\def #3{#1}\def #4{#2 }\fi } +}% catcode ^^a0 + +\def \a@Rfirsti #1\to #2#3{% split off leading space +\ifx \relax #1\relax \def #2{\relax }\def #3{\relax }% +\else \a@Rfirst #1\to #2#3\fi } + +\def \a@Rfirstiii #1\to #2#3{% split off leading RL space +\ifx \relax #1\relax \def #2{\relax }\def #3{\relax }% +\else \a@Rfirstii #1\to #2#3\fi } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def \a@Ldimen {% get the dimensions of the preceding line +\setbox\a@spacebox \hbox {\arab@space}\tolerance 10000 +\R@splitfalse \leavevmode +\penalty 0 +\copy \a@Rdummyi \arab@space \copy \a@Rdummyii +\parfillskip \z@ plus 1fill \relax \tr@ceoff +$$\global \a@Llength \predisplaysize % dummy display +\global \a@Lwidth \displaywidth \global \a@Lindent \displayindent +\hbox to \a@Lwidth {}\postdisplaypenalty \@M +$$ {\endgraf }% keep paragraph parameters +\tr@ceon \a@lines \prevgraf \advance \a@lines -3 +\prevgraf \a@lines \prevdepth -\baselineskip +\a@Ladjust % update \a@Llength and \a@Lindent +\ifinner \a@killdisplay \else \a@skipback \fi } + +\def \a@Ladjust {% correct \a@Llength and \a@Lindent +\ifdim \a@Llength = \maxdimen \a@Llength \a@Lwidth % flexible line +\else \advance \a@Llength -2em \advance \a@Llength -\a@Lindent +\fi +\advance \a@Llength -\leftskip \advance \a@Llength -\wd\a@Rdummyii +\ifdim \a@Llength = \z@ \R@splittrue \a@Llength \a@Lwidth + \advance \a@Llength -\leftskip \advance \a@Llength -\rightskip +\else \advance \a@Llength -\wd\a@spacebox +\fi \advance \a@Llength -\wd\a@Rdummyi +\ifnum \prevgraf = 1 + \ifdim \z@ > \hangindent \advance \a@Llength -\hangindent + \else \advance \a@Llength \hangindent + \fi +\else \ifdim \a@Llength = \z@ \R@splittrue \a@Llength \a@Lwidth + \fi +\fi } + +\def \a@killdisplay {% vbox: get back to the old position +\unskip \unskip \unpenalty \setbox0 \lastbox % get rid of garbage +\ifR@split \unskip \unskip \unpenalty \setbox0 \lastbox \fi +\unskip \unskip \unpenalty \setbox0 \lastbox % last line +\dimen0 \baselineskip \advance \dimen0 -\ht0 +\advance \dimen0 -\lastskip \prevdepth \dimen0 +\unskip \vskip -\parskip +\noindent \unhbox0 % open and trim last line +\unskip \unskip \unpenalty \setbox0 \lastbox +\ifR@split \else \unskip \setbox0 \lastbox \fi } + +\def \a@skipback {% paragraph: get back to the old position +\vskip -\belowdisplayskip \vskip -3\baselineskip +\vskip -\abovedisplayskip \vskip -\parskip +\ifR@split \ifdim \z@ > \lineskiplimit \vskip -\baselineskip \else +\vskip -\ht\a@Rdummyii \vskip -\dp\a@Rboxi \vskip -\lineskip +\fi\fi \noindent \arab@strut \nobreak \hskip \a@Llength } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def \a@normpen #1{% prevent penalty 10000 +\ifnum #1= 10000 #1= 9999 \fi } + +\def \a@Rtobox #1{% pack the insertion into \Rinsertb@x +\setbox \Rinsertb@x \vbox {\a@hsize \a@Lwidth +\a@normpen \widowpenalty \a@normpen \clubpenalty +\leftskip \z@ \rightskip \z@ +\parfillskip \z@ plus 1fil \relax \parskip \z@ +\let \a@@kern \a@kern \let \a@@mkern \a@mkern +\def \a@kern {\nobreak \a@@kern}\def \a@mkern {\nobreak \a@@mkern}% +\let \end \relax \spreadtrue \vskip \a@vglue \hbadness 10000 +\putlineb@x {\arab@strut \hskip \a@Llength }\a@spacefalse +\test@token #1 \end \unskip \unskip \vskip \a@vglue +\hbox {\box\lineb@x \hfill }}} + +\def \a@Runpack {\ins@skip % unpack all lines from the insertion +\loop \a@Rgetline \unhbox \tempb@x \unskip \unskip \break +\ifvbox \Rinsertb@x \repeat \unpenalty \ins@skip } + +\def \a@Rgetline {% unpack the next line globally to \box \tempb@x +{\vbadness 10000 \splittopskip \a@vglue +\dimen0 \baselineskip \advance \dimen0 1ex +\setbox \tempb@x \vsplit \Rinsertb@x to \dimen0 +\setbox0 \vbox {\unvbox \tempb@x \setbox2 \lastbox \unhbox2 +\unskip \unskip \unpenalty \global \setbox \tempb@x \lastbox }}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def \a@Linsert #1{% splice Ltext into RL paragraph +\putwordb@x {\ins@skip }\a@spacefalse \a@@Linsert {#1}\a@Lunpack +\putwordb@x {\ins@skip }\a@spacetrue \arab@codes +\tracingmacros 0 +\test@token } + +\def \a@@Linsert #1{% splice Ltext into RL paragraph +\dimen0 \wd \lineb@x \setbox \Linsertb@x \vbox +{\hsize \a@hsize \hangindent -\dimen0 \hangafter -\@ne +\tr@ceoff \rm \tr@ceon \rightskip \z@ plus .001fil +\vskip \a@vglue \everypar {}\parskip \z@ +\dimen2 \fontdimen4\font \fontdimen4\font 0pt % prevent shrinking +\noindent \null \hskip 0pt plus .001fil \relax #1 +\clubpenalty 0 \widowpenalty 0 \tolerance 10000 +\endgraf \fontdimen4\font \dimen2 }} + +\def \a@Lunpack {% unpack all lines from the insertion +\loop \a@Lgetline \putwordb@x +{\unhbox \tempb@x \unskip \unskip }\a@spacefalse +\ifvbox \Linsertb@x \put@line \a@spacefalse \repeat } + +\def \a@Lgetline {% unpack the next line globally to \box \tempb@x +{\vbadness 10000 \splittopskip \a@vglue \dimen0 \baselineskip +\setbox \tempb@x \vsplit \Linsertb@x to \dimen0 +\setbox0 \vbox {\unvbox \tempb@x \global \setbox \tempb@x \lastbox }}} + +%\testoutput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\endinput -- cgit v1.2.3