diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:51:33 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:51:33 +0000 |
commit | aec1c1b77ee51b9359530d61cc7b8df2a37c7685 (patch) | |
tree | 8b5e1e20b56e0abf130e7da219468e197cde8725 /Master/texmf-dist/tex/latex/arabtex/aoutput.sty | |
parent | e1c54083e49986785dd4d24e891b89e0772a4de1 (diff) |
arabtex
git-svn-id: svn://tug.org/texlive/trunk@673 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/arabtex/aoutput.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/arabtex/aoutput.sty | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/arabtex/aoutput.sty b/Master/texmf-dist/tex/latex/arabtex/aoutput.sty new file mode 100644 index 00000000000..b066d950d99 --- /dev/null +++ b/Master/texmf-dist/tex/latex/arabtex/aoutput.sty @@ -0,0 +1,173 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% aoutput.sty +% ArabTeX +% Version 04.06.2000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% (c) Klaus Lagally +% Institut fuer Informatik +% Universitaet Stuttgart +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\a@ident {aoutput.sty} {3.10 build output lines} {04.06.2000} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newdimen \a@hsize \newdimen \a@limit \newdimen \a@leftmargin +\newcount \a@prevgraf \newcount \a@@prevgraf \newbox \a@tempb@x + +\def \setspace #1{\def \arab@space {\hskip #1\relax }}% redefine ? + +\def \arab@space {\space \hskip 0pt plus 0.001fil \relax } + +\def \def@arabstrut {\def \arab@strut {\if@vocals +%\vrule height2.5ex depth2.0ex width\z@ \relax \else +\vrule height2ex depth1.5ex width\z@ \relax \else +%\vrule height3ex depth1.5ex width\z@ \relax \else +\vrule height2ex depth1.0ex width\z@ \relax \fi }} + +\def \a@parparams {% get paragraph dimensions +\ifnum \parshape = \z@ \a@hsize \hsize +\a@leftmargin \z@ +\else \a@hsize \linewidth \a@leftmargin \@totalleftmargin +\fi +\a@leftmargin \z@ +\a@prevgraf \z@ \spreadfalse } + +\def \a@resetpar {% called by \a@par +\a@prevgraf \z@ } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% control variables for the "arabtext" environment: +% +% \the\arabtext@hook: executed when entering the environment +% +% \ifa@vmode: Arabic paragraph closed? +% +% \ifa@space: deposit a space? +% +% \ifspread: fill line by spreading the words? +% +% \ifarab: ignore Arabic script output? +% +% \a@parindent: skip at beginning of first line of paragraph +% \a@parindent: saved value from Roman mode +% +% \a@parskip: saved value from Roman mode +% +% \the\a@@everypar: token list, executed when starting a paragraph +% +% \a@oldhmode: saved value from outside +% +% \a@short@line: finish last line, close paragraph +% +% \a@put@line: deposit current line buffer, continue paragraph +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% TeX/LaTeX parameters influencing the shape of a paragraph: +% +% \hsize, \leftskip, \rightskip, \parindent, \parskip +% \parshape, \hangindent, \hangafter, \linewidth, \@totalleftmargin +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% internal control: +% +% \a@hsize = length of line buffer including \leftskip, \rightskip +% \a@limit = maximal Arabic text length +% +% \a@vmodetrue : linebuffer undefined, \a@hsize valid +% \a@vmodefalse: linebuffer valid, \a@limit valid, \a@@everypar used +% +%%%%%%%%%%%%%%%%%%%%%%% output routines %%%%%%%%%%%%%%%%%%%%%%%%% + +\def \putwordb@x #1{% deposit a word +\ifa@vmode \arab@indent \fi +\setbox \wordb@x \hbox {#1}\put@word } + +\def \arab@indent {% like \indent for Arabic +\ifa@vmode \putlineb@x {\hskip \a@parindent }\the\a@@everypar +\else \setbox \wordb@x \hbox {\hskip \a@parindent }\add@word \fi } + +\def \arab@noindent {% like \noindent for Arabic +\ifa@vmode \initlineb@x \the\a@@everypar \fi } + +\def \leavea@vmode {% like \leavevmode for Arabic +\ifa@vmode \arab@indent \fi } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def \initlineb@x {% make an empty Arabic line +\putlineb@x {\arab@strut }\a@spacefalse } + +\def \putlineb@x #1{% open the line box +\a@vmodefalse \a@limit \a@hsize +\advance \a@limit -\leftskip \advance \a@limit -\rightskip +\setbox \lineb@x \hbox {#1}\a@spacefalse } + +\def \add@word {% add word to line without space +\putlineb@x {\unhbox \wordb@x \unhbox \lineb@x }} + +\def \addt@line {% add word to line unconditionally, spacing ? +\ifa@space \putlineb@x + {\unhcopy \wordb@x \arab@space \unhcopy \lineb@x }% +\else \add@word \fi } + +\def \put@word {% add word to line, spacing, break line if necessary +\setbox \a@tempb@x \hbox +{\unhcopy \wordb@x \ifa@space \arab@space \fi \unhcopy \lineb@x }% +\ifdim \a@limit < \wd\lineb@x \put@line \add@word \else +\ifdim \a@limit < \wd\a@tempb@x \put@line \add@word \else +\setbox \lineb@x \box \a@tempb@x +\fi\fi } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def \put@line {% output the line, adjusted +\ifarab \setbox\a@tempb@x \hbox to \a@hsize + {\hskip \rightskip \arab@strut + \charsubdefmax \m@ne \unhbox \lineb@x \hskip \leftskip }% + \put@ab@x +\fi \ifnum \tracingarab > 1 \message {|}\fi } + +\def \short@line{% put line without adjustment, close line +\ifarab \ifdim \wd\lineb@x = \z@ \else +\ifspread \dimen0 \a@limit \divide \dimen0 8 + \dimen2 \a@limit \advance \dimen2 -\wd\lineb@x + \setbox\a@tempb@x \hbox to \a@hsize + {\hskip \rightskip + \loop \hskip \parfillskip \advance \dimen2 -\dimen0 + \ifdim \dimen2 > \z@ \repeat + \arab@strut \charsubdefmax \m@ne + \unhbox \lineb@x \hskip \leftskip }% +\else \setbox\a@tempb@x \hbox to \a@hsize + {\hskip \rightskip \hskip \parfillskip + \arab@strut \charsubdefmax \m@ne + \unhbox \lineb@x \hskip \leftskip }% +\fi \put@ab@x +\fi\fi +\ifnum \tracingarab > 1 \message {/}\fi } + +\def \put@ab@x {% deposit line +\ifhmode \unskip {\endgraf }\penalty \clubpenalty +\parindent \z@ \parskip \z@ \else +\ifnum \a@prevgraf = \z@ \else \penalty \widowpenalty +\fi\fi +\begingroup \parfillskip 0pt plus 1fill + \leftskip \z@ \rightskip \z@ \noindent + \ifdim \a@leftmargin = \z@ \else \hskip \a@leftmargin \fi + \box\a@tempb@x \endgraf +\endgroup \parindent \z@ \parskip \z@ \initlineb@x +\advance \a@prevgraf \@ne \a@@prevgraf \prevgraf +\advance \a@@prevgraf \@ne \prevgraf \a@@prevgraf } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let \a@par@hook \relax % reserved + +\def \testoutput {% show output box +\showboxbreadth = \maxdimen \showboxdepth = 6 +\message {"testoutput" activated.} +\tracingoutput = 1 } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |