summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/arabtex/twoblks.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/arabtex/twoblks.sty')
-rw-r--r--Master/texmf-dist/tex/latex/arabtex/twoblks.sty105
1 files changed, 105 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/arabtex/twoblks.sty b/Master/texmf-dist/tex/latex/arabtex/twoblks.sty
new file mode 100644
index 00000000000..f9bcabc63c0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/arabtex/twoblks.sty
@@ -0,0 +1,105 @@
+% twoblocks.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% defines the command \twoblocks {#1}{#2}
+% to position two text blocks side by side
+% separated by \colsep horizontal space
+% 17.11.1993
+% 06.06.1994 % do not read the arguments prematurely: catcodes !
+% no warranty whatever
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \twblatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \twblatcode = \catcode`\@ \catcode`\@ = 11
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newbox \boxa \newbox \boxb \newbox \boxc \newbox \boxd
+\newdimen \htmin \newdimen \hta \newdimen \htb
+\newdimen \pagerest \newdimen \splitheight \newdimen \totalheight
+\newdimen \colwidth \newdimen \colsep
+
+\colsep 0.4in % adjust to your preference
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \unpackbox #1{% unwrap minipage to get a \vbox only
+ \setbox0 \vbox {\unvbox #1\global \setbox1 \lastbox } % get line
+ \setbox0 \hbox {\unhbox1 \unskip \unskip \unpenalty % get inner box
+ \global \setbox #1 \lastbox }} % and forget the rest
+
+\def \a@minipagerestore {% modify tabbing and list spacing
+ \vskip 0pt plus 12pt \emergencystretch 3cm \hbadness 5000 }
+
+\def \depositboxes {% fill page, recursive
+ \nointerlineskip \null \allowbreak % update page builder parameters
+ \pagerest \pagegoal \advance \pagerest -\pagetotal
+ \advance \pagerest -\maxdepth
+ \advance \pagerest -\baselineskip % just to make sure
+ \getheights % max total height of \boxa and \boxb
+\ifdim \totalheight > \pagerest % no more space, split?
+ \splitheight \totalheight
+ \advance \splitheight -2\baselineskip % try to avoid widows
+ \ifdim \splitheight > \pagerest \splitheight \pagerest
+ \fi
+ \htmin 2\baselineskip
+ \ifdim \splitheight > \htmin % try to avoid clubs
+ \splitboxes \splitheight % to \boxc and \boxd, and output
+ \else \vfill \eject % new page
+ \fi
+ \depositboxes % try again
+\else \combineboxes % output \boxa and \boxb
+\fi }
+
+\def \adjustbox #1{% set depth to total height, height zero, full width
+ \ifvoid#1 \setbox#1 \null \fi \wd#1 \colwidth
+ \dimen0 \ht#1 \advance \dimen0 \dp#1 \ht#1 \z@ \dp#1 \dimen0 }
+
+\def \getheights {% \ht plus \dp of boxes \boxa and \boxb
+ \hta \ht \boxa \advance \hta \dp \boxa
+ \htb \ht \boxb \advance \htb \dp \boxb
+ \ifdim \htb > \hta \totalheight \htb \else \totalheight \hta \fi }
+
+\def \splitboxes #1{% split off #1 from \boxa and \boxb
+ \splitmaxdepth \z@ \splittopskip \topskip
+ \ifdim #1 > \hta \setbox \boxc \box \boxa
+ \else \setbox \boxc \vsplit \boxa to #1 \fi
+ \ifdim #1 > \htb \setbox \boxd \box \boxb
+ \else \setbox \boxd \vsplit \boxb to #1 \fi
+ \outputboxes \boxc \boxd \vfill \eject }
+
+\def \outputboxes #1#2{% hanging from top of \hbox
+ \adjustbox #1 \adjustbox #2 % height zero, all depth
+ \nointerlineskip
+ \hbox to \textwidth {\noindent \box #1\hfill \box #2}\allowbreak }
+
+\def \combineboxes {% output \boxa and \boxb
+ \outputboxes \boxa \boxb }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \twoblocks {% two aligned paragraphs
+ \bgroup \colwidth \textwidth \advance \colwidth -\colsep
+ \divide \colwidth 2 \let \@minipagerestore \a@minipagerestore
+ \setbox \boxa \vbox \bgroup \minipage[t]\colwidth
+ \bgroup \aftergroup \tw@blocks \ignorespaces \let \next }
+
+\def \tw@blocks {% after first block
+ \endminipage \egroup \unpackbox \boxa % unwrap minipage
+ \setbox \boxb \vbox \bgroup \minipage[t]\colwidth
+ \bgroup \aftergroup \tw@bl@cks \ignorespaces \let \next }
+
+\def \tw@bl@cks {% after second block
+ \endminipage \egroup \unpackbox \boxb % unwrap minipage
+ \depositboxes \egroup } % split if necessary
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\catcode `\@ = \twblatcode
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ No newline at end of file