summaryrefslogtreecommitdiff
path: root/language/arabic/arabtex/texinput
diff options
context:
space:
mode:
Diffstat (limited to 'language/arabic/arabtex/texinput')
-rw-r--r--language/arabic/arabtex/texinput/Uxnsh.fd61
-rw-r--r--language/arabic/arabtex/texinput/abidir.sty240
-rw-r--r--language/arabic/arabtex/texinput/abjad.sty68
-rw-r--r--language/arabic/arabtex/texinput/aboxes.sty401
-rw-r--r--language/arabic/arabtex/texinput/acjk.sty33
-rw-r--r--language/arabic/arabtex/texinput/acmd.sty335
-rw-r--r--language/arabic/arabtex/texinput/aconfig.sty95
-rw-r--r--language/arabic/arabtex/texinput/aedpatch.sty220
-rw-r--r--language/arabic/arabtex/texinput/afonts.sty52
-rw-r--r--language/arabic/arabtex/texinput/afonts0.sty60
-rw-r--r--language/arabic/arabtex/texinput/afonts1.sty61
-rw-r--r--language/arabic/arabtex/texinput/afonts2.sty54
-rw-r--r--language/arabic/arabtex/texinput/afoot.sty100
-rw-r--r--language/arabic/arabtex/texinput/alatex.sty164
-rw-r--r--language/arabic/arabtex/texinput/aligs.sty635
-rw-r--r--language/arabic/arabtex/texinput/alists.sty211
-rw-r--r--language/arabic/arabtex/texinput/alocal.sty20
-rw-r--r--language/arabic/arabtex/texinput/altxext.sty101
-rw-r--r--language/arabic/arabtex/texinput/amac.sty164
-rw-r--r--language/arabic/arabtex/texinput/aoutput.sty173
-rw-r--r--language/arabic/arabtex/texinput/aparse.sty1123
-rw-r--r--language/arabic/arabtex/texinput/apatch.sty2397
-rw-r--r--language/arabic/arabtex/texinput/arababel.sty39
-rw-r--r--language/arabic/arabtex/texinput/arabart.cls24
-rw-r--r--language/arabic/arabtex/texinput/arabaux.sty134
-rw-r--r--language/arabic/arabtex/texinput/arabbook.cls23
-rw-r--r--language/arabic/arabtex/texinput/arabchrs.sty77
-rw-r--r--language/arabic/arabtex/texinput/arabext.sty103
-rw-r--r--language/arabic/arabtex/texinput/arabrep.cls1076
-rw-r--r--language/arabic/arabtex/texinput/arabrep1.cls914
-rw-r--r--language/arabic/arabtex/texinput/arabskel.sty185
-rw-r--r--language/arabic/arabtex/texinput/arabsymb.sty192
-rw-r--r--language/arabic/arabtex/texinput/arabtex.sty634
-rw-r--r--language/arabic/arabtex/texinput/arabtex.tex133
-rw-r--r--language/arabic/arabtex/texinput/arabtoks.sty146
-rw-r--r--language/arabic/arabtex/texinput/ascan.sty502
-rw-r--r--language/arabic/arabtex/texinput/asect.sty390
-rw-r--r--language/arabic/arabtex/texinput/asize10.clo40
-rw-r--r--language/arabic/arabtex/texinput/asize11.clo40
-rw-r--r--language/arabic/arabtex/texinput/asize12.clo40
-rw-r--r--language/arabic/arabtex/texinput/asmo449.sty122
-rw-r--r--language/arabic/arabtex/texinput/asmo449a.sty126
-rw-r--r--language/arabic/arabtex/texinput/atabg.sty129
-rw-r--r--language/arabic/arabtex/texinput/atrans.sty432
-rw-r--r--language/arabic/arabtex/texinput/awrite.sty397
-rw-r--r--language/arabic/arabtex/texinput/bhs.sty213
-rw-r--r--language/arabic/arabtex/texinput/bhslabel.sty149
-rw-r--r--language/arabic/arabtex/texinput/buck.sty229
-rw-r--r--language/arabic/arabtex/texinput/captions.def76
-rw-r--r--language/arabic/arabtex/texinput/cp1256.sty173
-rw-r--r--language/arabic/arabtex/texinput/etrans.sty9
-rw-r--r--language/arabic/arabtex/texinput/gedalin.sty112
-rw-r--r--language/arabic/arabtex/texinput/hebchrs.sty105
-rw-r--r--language/arabic/arabtex/texinput/hebsymb.sty59
-rw-r--r--language/arabic/arabtex/texinput/hebtex.sty87
-rw-r--r--language/arabic/arabtex/texinput/hebtex.tex122
-rw-r--r--language/arabic/arabtex/texinput/hecmd.sty165
-rw-r--r--language/arabic/arabtex/texinput/hefonts.sty56
-rw-r--r--language/arabic/arabtex/texinput/hefonts0.sty42
-rw-r--r--language/arabic/arabtex/texinput/hefonts1.sty44
-rw-r--r--language/arabic/arabtex/texinput/hefonts2.sty72
-rw-r--r--language/arabic/arabtex/texinput/heparse.sty291
-rw-r--r--language/arabic/arabtex/texinput/hepatch.sty37
-rw-r--r--language/arabic/arabtex/texinput/hescan.sty216
-rw-r--r--language/arabic/arabtex/texinput/hetrans.sty87
-rw-r--r--language/arabic/arabtex/texinput/hewrite.sty589
-rw-r--r--language/arabic/arabtex/texinput/hmac.sty156
-rw-r--r--language/arabic/arabtex/texinput/isiri.sty225
-rw-r--r--language/arabic/arabtex/texinput/iso88596.sty23
-rw-r--r--language/arabic/arabtex/texinput/manifest.txt80
-rw-r--r--language/arabic/arabtex/texinput/nashbf.sty9
-rw-r--r--language/arabic/arabtex/texinput/raw.sty41
-rw-r--r--language/arabic/arabtex/texinput/saw.sty43
-rw-r--r--language/arabic/arabtex/texinput/sotoku.sty47
-rw-r--r--language/arabic/arabtex/texinput/twoblks.sty104
-rw-r--r--language/arabic/arabtex/texinput/uheb.fd122
-rw-r--r--language/arabic/arabtex/texinput/unash.fd46
-rw-r--r--language/arabic/arabtex/texinput/utf8.sty42
-rw-r--r--language/arabic/arabtex/texinput/utfcode.sty279
-rw-r--r--language/arabic/arabtex/texinput/verses.sty106
-rw-r--r--language/arabic/arabtex/texinput/witbhs.sty209
-rw-r--r--language/arabic/arabtex/texinput/xarbskel.sty126
-rw-r--r--language/arabic/arabtex/texinput/xarbsymb.sty213
-rw-r--r--language/arabic/arabtex/texinput/yiddish.sty195
84 files changed, 17665 insertions, 0 deletions
diff --git a/language/arabic/arabtex/texinput/Uxnsh.fd b/language/arabic/arabtex/texinput/Uxnsh.fd
new file mode 100644
index 0000000000..3fba5ce6eb
--- /dev/null
+++ b/language/arabic/arabtex/texinput/Uxnsh.fd
@@ -0,0 +1,61 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Uxnsh.fd
+%
+% 31.08.93 1.0 created file when added support for NFSS2 (br)
+% 04.04.1997 ranges fixed (KL)
+% 17.09.1997 smaller sizes allowed
+% 14.04.1998 font xnsh14
+% 23.05.1999 name "uxnsh.fd"
+% 19.10.1999 new font shape U/xnsh/*/s
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Bernd Raichle and Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This file contains the font description of font `xnsh'
+% fontencoding: U
+% fontfamily: xnsh
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% make sure, that it is used with NFSS2 only
+%
+\ifx\DeclareFontShape\undefined
+ \message{Something is wrong -- %
+ this file can only be used with NFSS2!!!}
+\expandafter\endinput\fi
+
+\ProvidesFile{uxnsh.fd}[ 1999/10/19 v3.10 ArabTeX Naskh extd. font definitions]
+
+\DeclareFontFamily{U}{xnsh}{}%
+
+\DeclareFontShape{U}{xnsh}{m}{n}{%
+ <-6> sfixed * [7.2] xnsh14
+ <6-10> s * [1.44] xnsh14
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * [1.44] xnsh14
+}{}
+
+\DeclareFontShape{U}{xnsh}{bx}{n}{%
+ <-6> sfixed * [7.2] xnsh14bf
+ <6-10> s * [1.44] xnsh14bf
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * [1.44] xnsh14bf
+}{}
+
+% small version:
+
+\DeclareFontShape{U}{xnsh}{m}{s}{%
+ <-6> sfixed * [6.0] xnsh14
+ <6-10> s * [1.20] xnsh14
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * [1.20] xnsh14
+ }{}
+
+\DeclareFontShape{U}{xnsh}{bx}{s}{%
+ <-6> sfixed * [6.0] xnsh14bf
+ <6-10> s * [1.20] xnsh14bf
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * [1.20] xnsh14bf
+}{}
+
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/abidir.sty b/language/arabic/arabtex/texinput/abidir.sty
new file mode 100644
index 0000000000..2b390e4609
--- /dev/null
+++ b/language/arabic/arabtex/texinput/abidir.sty
@@ -0,0 +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}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% <LR insertion inside Rtext>
+%\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
diff --git a/language/arabic/arabtex/texinput/abjad.sty b/language/arabic/arabtex/texinput/abjad.sty
new file mode 100644
index 0000000000..cbf617018a
--- /dev/null
+++ b/language/arabic/arabtex/texinput/abjad.sty
@@ -0,0 +1,68 @@
+% abjad.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% defines the command \abjad {#1}
+% to produce the `abjad' rendering of the argument,
+% which must be (or expand within Tex's mouth to)
+% a legal number between 1 and 1999
+% This command works both inside and outside an Arabic environment.
+% 26.04.2003
+% no warranty whatsoever
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \abjatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \abjatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {abjad.sty} {3.11 abjad numerals } {26.04.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \abj@d #1{% convert to abjad notation if possible
+\ifnum #1>1999 #1 \else \ifnum #1=0 0 \else
+\ifnum #1>999 \xpa\@bjad \number #1\else
+\ifnum #1>099 \xpa\@bjad \xpa0\number#1\else
+\ifnum #1>009 \xpa\@bjad \xpa0\xpa0\number#1\else
+\xpa\@bjad \xpa0\xpa0\xpa0\number#1%
+\fi\fi\fi\fi\fi }
+
+\def \@bjad #1#2#3#4{% convert to abjad notation
+\ifx #10\else .g\fi
+\ifcase #2 \or q\or r\or ^s\or t\or _t \or _h\or _d\or .d\or .z\fi
+\ifcase #3 \or Y\or k\or l\or m\or n\or s\or `\or f\or .s\fi
+\ifcase #4 \or |A\or .b\or .h-\or d\or h\or w\or z\or .h\or .t\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \abjad #1{% inside a Roman environment
+\edef \the@bjad {\abj@d {#1}}%
+\novocalize \arabtrue \transfalse \RL {\stdcode {\the@bjad }}%
+\iftrans {\set@transfont \ \trans@text #1 \end }\fi }
+
+\def \a@c@abjad #1{% inside an Arabic environment
+\putwordb@x {\transfalse \showfalse \abjad {#1}}%
+\iftrans {\set@transfont \trans@text #1 \end }\fi
+\arab@tail }
+
+\allowarab \the@bjad
+
+% NOTE: \abj@d is fully expandable
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \Abjad #1{\xpa \@Abjad \csname c@#1\endcsname }
+
+\let \@Abjad \abj@d
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\catcode `\@ = \abjatcode
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
diff --git a/language/arabic/arabtex/texinput/aboxes.sty b/language/arabic/arabtex/texinput/aboxes.sty
new file mode 100644
index 0000000000..095db6eb43
--- /dev/null
+++ b/language/arabic/arabtex/texinput/aboxes.sty
@@ -0,0 +1,401 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aboxes.sty
+% ArabTeX
+% deposit character into output box
+% called in HMODE
+% Version 28.05.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {aboxes.sty} {3.11 build output boxes} {28.05.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Arabic
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \def@arabaccent {% define accent macros for Arabic
+\gdef \put@fatha {\put@acc@hi {\char \a@fatha }}
+\gdef \put@damma {\put@acc@hi {\char \a@damma }}
+\gdef \put@kasra {\put@acc@lo {\char \a@kasra }}
+\gdef \put@shadda {\put@acc@hi {\char \a@shadda }}
+\gdef \put@hamza {\put@hi {\char \a@hamza }}
+\gdef \put@hamzalo {\put@lo {\char \a@hamza }}
+\gdef \put@madda {\put@hi {\a@madda@up }}
+\gdef \put@sukun {\put@acc@hi {\char \a@sukun }}
+\gdef \put@wasla {\put@acc@hi {\char \a@wasla }}
+\gdef \put@fathatan {\put@acc@hi {\char \a@fathatan }}
+\gdef \put@dammatan {\put@acc@hi {\char \a@dammatan }}
+\gdef \put@kasratan {\put@acc@lo {\char \a@kasratan }}
+\gdef \put@fathaspec {\put@acc@hi {\char \a@quran@alif }}
+\gdef \put@kasraspec {\put@acc@lo {\char \a@quran@alif }}
+\gdef \put@ammad {\put@acc@hi {\char \a@ammad }}
+\gdef \put@zwarakay {\put@acc@hi {\char \a@zwarakay }}
+\gdef \put@barslo {\put@lo {\char \a@bars }}
+\gdef \put@kh@hamza {\put@hi {\char \a@hamza }}
+\gdef \put@kl@hamza {\put@lo {\char \a@hamza }}
+\gdef \put@kh@hamz@s {\put@hi {\char \a@hamz@s }}
+\gdef \put@kl@hamz@s {\put@lo {\char \a@hamz@s }}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}}% end of dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newdimen \a@dp \newdimen \a@ht \newdimen \a@wd
+\newdimen \dia@dx \newdimen \dia@dy \newdimen \dia@ht
+\newdimen \a@disp \newdimen \a@ic
+\newbox \ab@x \newbox \dia@box
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%em# := 25.4dx#; %ex# := 8dy#;
+
+\def \a@kern {\kern.05em } \def \a@mkern {\kern-.05em }% Arabic kerning
+\def \acc@hi {1.8ex } \def \acc@lo {0.4ex } % positions for .harakAt
+\def \tat@ht {0.20ex } \def \tat@wd {0.007em } % kashida dimensions
+\def \tat@skip {0.014em plus 0.2fil }
+\def \a@dsp {.5ex } % shift for raised characters
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% global: \act@cd, \act@mod, \act@dia, \act@tie
+
+\def \put@skel #1#2#3*{% deposit writing syllable % f d m *
+\put@act@box #1#2\put@mod #3*\dep@sitb@x
+\fix@act@box }
+
+\def \put@lig@skel #1#2#3*#4*{% deposit 2char ligature % f d m * m *
+\put@act@box #1#2\global\a@wd .5\wd\ab@x
+\wd\ab@x \a@wd \dimen4 \a@ht \dimen6 \a@dp
+\global\setbox \ab@x \vbox {\box \ab@x }\put@mod #3*\dep@sitb@x
+\setbox0 \hbox to\a@wd {\hfill }\dp0 \dimen6 \ht0 \dimen4
+\global\a@ht \dimen4 \global\a@dp \dimen6
+\global\setbox \ab@x \vbox {\box0 }\put@mod #4*\dep@sitb@x
+\fix@act@box }
+
+\def \put@act@box #1#2{% set tie and open character box
+\ifnum \act@tie = 0 \else \advance\act@tie \a@f@mid \put@tie \fi
+\advance\act@cd #2\xpa \dia@pos \act@dia #1\relax
+\put@b@x {\the\act@cd }\if@mod@act \put@d@t {\the\act@mod }\fi }
+
+\def \put@tie {% deposit ties between characters
+\setbox0 \hbox {\char \the\act@tie }%
+\setbox2 \hbox {\char \the\act@tie \/}%
+\ifdim \a@disp = \z@ \unhcopy0
+\else \raise\a@disp \hbox {\unhcopy0 }\fi
+\advance\a@disp \wd2 \advance\a@disp -\wd0 }
+
+\def \set@high@act {% prepare raising of actual character
+\advance \a@disp \a@dsp \@high@acttrue }
+
+\def \set@low@act {% lower actual character
+\advance \a@disp -.25ex }
+
+\def \set@loww@act {% lower actual character
+\advance \a@disp -.50ex }
+
+\def \set@lowww@act {% lower actual character
+\advance \a@disp -.75ex }
+
+\def \fix@act@box {% fixup position and set tatwil
+\if@high@act \advance\a@disp -\a@dsp \@high@actfalse \fi
+\advance\a@min@dp \a@ic \advance\a@disp \a@ic
+\if@tat \put@tat \@tatfalse \fi }
+
+\def \put@tat {% deposit a keshide
+\dimen@ \a@disp \advance\dimen@ \tat@ht \nobreak \hskip-\tat@wd
+\leaders \hrule height\dimen@ depth-\a@disp \hskip\tat@skip \hskip-\tat@wd }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \put@b@x #1{% evaluate the argument
+\edef \t@mp {\nxp\put@box {\char #1}}\t@mp }
+
+\def \put@box #1{% pack and get dimensions, also ic and baseline skew
+\setbox0 \hbox {#1\/}\global\a@ic \wd0
+\global\setbox \ab@x \hbox{#1}% put into box
+\global\a@ht \ht\ab@x \global\a@wd \wd\ab@x
+\global\a@dp \dp\ab@x \global\advance \a@ic -\a@wd
+\a@adj@lo \a@min@dp
+\ifnum \a@min > 0 \global\a@min@dp \a@dp \global\advance\a@min -1
+\else \global\a@min@dp \z@ \fi }
+%\global\a@sk -\a@skew\a@wd
+%\ifa@sk \global\a@skfalse \else \global\a@sk -\a@sk \fi }
+
+\def \dep@sitb@x {% put contents into output, unpack if possible
+\ifhbox \ab@x \ifdim \a@disp = \z@ \unhbox \ab@x
+ \else \raise\a@disp \hbox {\unhbox\ab@x }%
+ \fi
+\else \global\advance \a@ht \a@disp \global\advance \a@dp -\a@disp
+ \ht\ab@x \a@ht \dp\ab@x \a@dp \box \ab@x
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \put@mod #1+#2*{% put modifier onto contents of "\ab@x" % m1 + m2 *
+ \global\red@mod 0#1\relax
+ \ifnum 0#1> 9 \global\advance \red@mod -10 \relax \fi
+\ifnum 0#2= \c@kasra \xpa\a@putkasra \xpa{\the\red@mod }\else
+\ifnum 0#2= \c@kasratan \xpa\a@putkasratan \xpa{\the\red@mod }\else
+ \ifcase \red@mod
+ \relax \or \put@shadda \or
+ \put@hamza \or \put@hamza \put@shadda \or
+ \put@madda \or \put@hamzalo \or
+ \fi
+ \put@voc 0#2*%
+\fi \fi }
+
+\def \a@putkasra #1{% modification at kasra % m1
+\ifcase 0#1\put@kasra \or \put@k@sra \put@shadda \or
+\put@ihamza \put@kasra \or \put@k@sra \put@hamza \put@shadda \or
+\put@madda \put@kasra \or \put@hamzalo \put@kasra \or
+\fi }
+
+\def \a@putkasratan #1{% modification at kasratan % m1
+\ifcase 0#1\put@kasratan \or \put@k@sratan \put@shadda \or
+\put@ihamza \put@kasratan \or \put@k@sratan \put@hamza \put@shadda \or
+\put@madda \put@kasratan \or \put@hamzalo \put@kasratan \or
+\fi }
+
+\def \put@k@sra {% high or low
+\ifk@sra \put@kasra \else \put@fatha \fi }
+
+\def \put@k@sratan {% high or low
+\ifk@sra \put@kasratan \else \put@fathatan \fi }
+
+\def \put@voc #1*{% put .harakAt % m2
+\ifcase 0#1\relax \or \put@sukun \or \put@fatha \or \put@kasra \or
+\put@damma \or \put@fathatan \or \put@kasratan \or \put@dammatan \or
+\put@zwarakay \or \put@wasla \or \put@fathaspec \or \put@kasraspec \or
+\put@ammad \or \put@fatha\put@kasra \or \put@barslo \or \put@kh@hamza \or
+\put@kl@hamza \or\put@kh@hamz@s \or \put@kl@hamz@s \or
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \put@ihamza {% hamza at <i> depending on carrier
+\ifnum \act@cd = \a@alif@iso \put@hamzalo \else
+\ifnum \act@cd = \a@alif@end \put@hamzalo \else
+\ifnum \act@cd = \a@lam@alif@iso \put@hamzalo \else
+\ifnum \act@cd = \a@lam@alif@end \put@hamzalo \else
+ \put@hamza
+\fi\fi\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@one@up {\char \a@one@dot@up }
+
+\def \a@two@up {\char \a@two@dots@up }
+
+\def \a@twov@up {\setbox0 \hbox {\char \a@one@dot@up }%
+\setbox2 \hbox {\char \a@one@dot@up }\dimen@ .6\ht2
+\advance \dimen@ -.4\dp0 \ht2 \dimen@ \advance \dimen@ \dp0
+\vbox {\moveright \a@slant\dimen@ \box0 \nointerlineskip \box2 }}
+
+\def \a@three@up {\char \a@three@dots@up }
+
+\def \a@threev@up {\setbox0 \hbox {\char \a@three@dots@down }%
+\ht0 \dp0 \dp0 .5\dp0 \box0 }
+
+\def \a@four@up {\setbox0 \hbox {\char \a@two@dots@up }%
+\setbox2 \hbox {\char \a@two@dots@up }\dimen@ .6\ht2
+\advance \dimen@ -.4\dp0 \ht2 \dimen@ \advance \dimen@ \dp0
+\vbox {\moveright \a@slant\dimen@ \box0 \nointerlineskip \box2 }}
+
+\def \a@hamza@up {\setbox0 \hbox {\char \a@hamza }%
+\dp0 -\ht0 \box0 }
+
+\def \a@alif@up {\char \a@quran@alif }
+
+\def \a@ttah@up {\char \a@ttah@dia }
+
+\def \a@bow@up {\char\a@bow@dia }
+
+\def \a@madda@up {\setbox0 \hbox {\char \a@madda \kern .02em}\box0 }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@one@down {\char \a@one@dot@down }
+
+\def \a@two@down {\char \a@two@dots@down }
+
+\def \a@twov@down {\setbox2 \hbox {\char \a@one@dot@down }%
+\setbox0 \hbox {\char \a@two@dots@down }\dimen@ .6\dp0
+\setbox0 \hbox {\char \a@one@dot@down }% correct depth
+\advance \dimen@ -.4\ht2 \dp0 \dimen@ \advance \dimen@ \ht2
+\vbox {\moveright \a@slant\dimen@ \box0 \nointerlineskip \box2 }}
+
+\def \a@three@down {\setbox0 \hbox {\char \a@three@dots@down }%
+\dp0 .7\dp0 \box0 }
+
+\def \a@four@down {\setbox0 \hbox {\char \a@two@dots@down }%
+\setbox2 \hbox {\char \a@two@dots@down }\dimen@ .6\dp0
+\advance \dimen@ -.4\ht2 \dp0 \dimen@ \advance \dimen@ \ht2
+\vbox {\moveright \a@slant\dimen@ \box0 \nointerlineskip \box2 }}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \put@d@t #1{% evaluate the argument
+\edef \t@mp {\nxp\put@dot {#1}}\t@mp }
+
+\def \put@dot #1{% modify character skeleton
+\ifcase 0#1%
+\relax \or % 0
+% . .. ^
+% 1 --- 2 --- 3 --- 4 --- 5 --- 6 ---
+% . .. v
+\put@hi {\a@one@up }\or % 1
+\put@hi {\a@two@up }\or % 2
+\put@hi {\a@three@up }\or % 3
+\put@lo {\a@one@down }\or % 4
+\put@lo {\a@two@down }\or % 5
+\put@lo {\a@three@down }\or % 6
+% c b . u
+% 7 --- 8 --- 9 --- 10 --- 11 --- 12 ---
+% : . 6
+\put@hi {\a@hamza@up }\or % 7
+\put@hi {\a@ttah@up }\or % 8
+\put@lo {\a@twov@down }\or % 9
+\put@hi {\a@one@up }\put@lo {\a@one@down }\or % 10
+\put@lo {\char\a@h@dia }\or % 11
+\put@hi {\a@bow@up }\or % 12
+% u : v ::
+% 13 --- 14 --- 15 --- 16 --- 17 --- 18 ---
+% u .. ::
+\put@lo {\a@bow@up }\or % 13
+\put@lo {\a@two@down }\put@hi {\a@bow@up }\or % 14
+\put@hi {\a@twov@up }\or % 15
+\put@hi {\a@threev@up }\or % 16
+\put@hi {\a@four@up }\or % 17
+\put@lo {\a@four@down }\or % 18
+% 9 | b ^ . ^
+% 19 --- 20 --- 21 --- 22 --- 23 --- 24 ---
+% . v v .
+\put@hi {\char\a@damma }\or % 19
+\put@hi {\a@alif@up }\or % 20
+\put@hi {\a@ttah@up }\put@lo {\a@one@down }\or % 21
+\put@hi {\a@three@up }\put@lo {\a@three@down }\or % 22
+\put@hi {\a@one@up }\put@lo {\a@three@down }\or % 23
+\put@hi {\a@three@up }\put@lo {\a@one@down }\or % 24
+% ^ C
+% 25 --- 26 --- 27 --- 28 --- 29 --- 30 ---
+% H C
+%
+\put@hi {\char\a@roof }\or % 25
+\put@lo {\char\a@bars }\or % 26
+\put@hi {\char\a@hamz@s}\or % 27
+\put@lo {\char\a@hamz@s}\or % 28
+ \put@hi {\char 2 }\or % illegal
+\else \put@hi {\char 2 }\or % illegal
+\fi}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \put@hi #1{% deposit upper modifier, slanted
+\setbox\dia@box \hbox to \z@ {\hss #1\hss }%
+\dia@dy \a@ht \hi@dia \put@upper }
+
+\def \put@acc@hi #1{% deposit upper accent
+\ifacc@hi \a@adj@hi \acc@hi \fi
+\setbox\dia@box \hbox to \z@ {\hss #1\hss }%
+\dia@dy \a@ht \a@ubox@u \put@upper }
+
+\def \put@lo #1{% deposit lower modifier, slanted
+\setbox\dia@box \hbox to \z@ {\hss #1\hss }%
+\a@adj@lo \a@min@dp \dia@dy \a@dp \lo@dia \put@lower }
+
+\def \put@acc@lo #1{% deposit lower accent
+\ifacc@hi \a@adj@lo \acc@lo \fi
+\setbox\dia@box \hbox to \z@ {\hss #1\hss }%
+\dia@dy \a@dp \a@lbox@d \put@lower }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \hi@dia {% position of upper diacritic
+\ifcase \dia@mod \relax
+\a@ubox@u \or \a@ubox@d \or \a@ubox@u \or
+\a@ubox@d \or \a@ubox@u \or \a@ubox@d \or
+\a@ubox@c \or \a@ubox@c \or \a@ubox@c \or
+\fi }
+
+\def \lo@dia {% position of lower diacritic
+\ifcase \dia@mod \relax
+\a@lbox@d \or \a@lbox@d \or \a@lbox@u \or
+\a@lbox@u \or \a@lbox@c \or \a@lbox@c \or
+\a@lbox@d \or \a@lbox@u \or \a@lbox@c \fi }
+
+\def \a@adj@hi #1{% adjustment of box height
+\dimen@ #1\advance\dimen@ -\a@disp
+\ifdim \dimen@ > \a@ht \advance\dimen@ -\a@ht
+ \global\advance\a@ht \dimen@ \global\setbox\ab@x \vbox
+ {\kern\dimen@ \nointerlineskip
+ \ifvbox\ab@x \unvbox\ab@x \else \box\ab@x \fi }\fi }
+
+\def \a@adj@lo #1{% adjustment of box depth
+\dimen@ #1\advance\dimen@ \a@disp
+\ifdim \dimen@ > \a@dp \advance\dimen@ -\a@dp
+ \global\advance\a@dp \dimen@ \global\setbox\ab@x \vbox
+ {\ifvbox\ab@x \unvbox\ab@x \else \box\ab@x \fi
+ \nointerlineskip \kern\dimen@ }\fi }
+
+\def \a@ubox@u {% upper box above
+\dimen@ \ht\dia@box \advance\dimen@ \dp\dia@box
+\advance\dia@dy .5\dimen@ \global\advance \a@ht \dimen@ }
+
+\def \a@ubox@d {% upper box lowered
+\dimen@ \ht\dia@box \advance\dimen@ \dp\dia@box
+\advance\dia@dy -.5\dimen@ \dp\dia@box -\ht\dia@box }
+
+\def \a@ubox@c {% upper box centered
+\dimen@ .5\ht\dia@box \advance\dimen@ .5\dp\dia@box
+\global\advance \a@ht \dimen@
+\advance\dimen@ -\ht\dia@box \dp\dia@box \dimen@ }
+
+\def \a@lbox@d {% lower box below
+\dimen@ \ht\dia@box \advance\dimen@ \dp\dia@box
+\advance \dia@dy .5\dimen@ \global\advance \a@dp \dimen@ }
+
+\def \a@lbox@u {% lower box raised
+\dimen@ \ht\dia@box \advance\dimen@ \dp\dia@box
+\advance \dia@dy -.5\dimen@ \ht\dia@box -\dp\dia@box }
+
+\def \a@lbox@c {% lower box centered
+\dimen@ \ht\dia@box \advance\dimen@ \dp\dia@box
+\advance \dia@dy -.5\dimen@ \advance \dia@dy -.75\a@dp
+\advance\dimen@ -2\ht\dia@box \advance\dimen@ 1.5\a@dp
+\dp\dia@box .4\dimen@ \ht\dia@box -\dp\dia@box }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \put@upper {\dia@dx \a@slant\dia@dy \advance\dia@dx .5\a@wd
+\advance\dia@dx \dia@hadj\a@dx \global\setbox\ab@x \vbox
+{\moveright\dia@dx \box\dia@box \nointerlineskip
+\ifvbox\ab@x \unvbox\ab@x \else \box\ab@x \fi }\wd\ab@x \a@wd }
+
+\def \put@lower {\dia@dx -\a@slant\dia@dy \advance\dia@dx .5\a@wd
+\advance\dia@dx \dia@hadj\a@dx \global\setbox \ab@x \vbox
+{\ifvbox\ab@x \unvbox\ab@x \else \box\ab@x \fi
+\nointerlineskip \moveright\dia@dx \box\dia@box }\wd\ab@x \a@wd }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\iffalse % cf. aparse.sty
+\chardef \c@shadda = 1 \chardef \c@hamza = 2
+\chardef \c@hamzalow = 3 \chardef \c@madda = 4
+\chardef \c@high = 10
+
+\chardef \c@sukun = 1 \chardef \c@fatha = 2
+\chardef \c@kasra = 3 \chardef \c@damma = 4
+\chardef \c@fathatan = 5 \chardef \c@kasratan = 6
+\chardef \c@dammatan = 7 \chardef \c@zwarakay = 8
+\chardef \c@wasla = 9 \chardef \c@fathaspec = 10
+\chardef \c@kasraspec = 11 \chardef \c@ammad = 12
+\chardef \c@kas@fath = 13 \chardef \c@bars = 14
+\chardef \c@kh@hamza = 15 \chardef \c@kl@hamza = 16
+\chardef \c@kh@hamzl = 17 \chardef \c@kl@hamzl = 18
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/acjk.sty b/language/arabic/arabtex/texinput/acjk.sty
new file mode 100644
index 0000000000..ae8ff4bce2
--- /dev/null
+++ b/language/arabic/arabtex/texinput/acjk.sty
@@ -0,0 +1,33 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% acjk.sty
+% for CJK compatibility of ArabTeX
+% or rather the other way around
+% 24.10.1998
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifx \CJK \undefined \else
+
+\chardef \acjkatcode = \catcode`\@ \catcode`\@ = 11
+\a@ident {acjk.sty} {3.08 ArabTeX extensions for CJK} {24.10.1998}
+
+\ifx \CJK \undefined \else
+\global\def\CJK@input#1{
+ \makeatletter
+ \edef\CJK@lscode{\noexpand\catcode`<\the\catcode`<}
+ \catcode `< 12
+ \endlinechar \m@ne
+ \input #1\relax
+ \endlinechar `\^^M
+ \CJK@lscode
+ \makeatother}
+\fi
+
+\catcode`\@ = \acjkatcode
+\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+
+
diff --git a/language/arabic/arabtex/texinput/acmd.sty b/language/arabic/arabtex/texinput/acmd.sty
new file mode 100644
index 0000000000..10cf141cae
--- /dev/null
+++ b/language/arabic/arabtex/texinput/acmd.sty
@@ -0,0 +1,335 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% acmd.sty
+% ArabTeX command processing
+% 20.08.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {acmd.sty} {3.11 Arabic command processing } {20.08.2003}
+
+\def \a@command #1{% process an internal command
+\iftest@command \tracingmacros 1 \fi
+ \def@@cmd #1\xpa
+\ifx \the\a@@cmd \relax % no special handling?
+ \if\is@in@set #1\a@@listreg
+% \def \next {\xpa \test@token #1}\else
+ \def \next {\xpa \arab@tail #1}\else
+ \if\is@in@set #1\a@@listzero
+ \unarab@codes \def \next {#1\arab@tail }\else
+ \if\is@in@set #1\a@@listone
+ \unarab@codes \def \next ##1{#1{##1}\arab@tail }\else
+ \if\is@in@set #1\a@@listtwo
+ \unarab@codes \def \next ##1##2{#1{##1}{##2}\arab@tail }\else
+ \def \next {\a@cmderr #1}% disallowed
+ \fi\fi\fi\fi
+\else \def \next {\the\a@@cmd }% local routine
+\fi \next }
+
+\def \a@cmderr #1{% complain and substitute a dummy command
+ \errhelp {Your command will be echoed in the output}%
+\ifx #1\undefined \def \next {\a@puttt #1\test@token }%
+ \errmessage {Unknown arabic command: \nxp #1}%
+\else \errmessage {Illegal arabic command: \nxp #1}%
+ \a@@cmd = {{\a@puttt #1\arab@tail }}
+ \immediate\openout \a@@err = \jobname.err
+ \immediate\write \a@@err {\string \gdef \string \next \space
+ \xpa \a@@pat \meaning #1:->\pat@end \the\a@@cmd }% substitution
+ \immediate\closeout \a@@err
+ {\catcode `\@=11 \input \jobname.err }%
+\fi \next }
+
+\def \def@@cmd #1{% define \a@@cmd as \a@c@#1
+\ifcat \nxp #1\nxp ~%
+\global\a@@cmd = \xpa {\csname a@c@\string #1\endcsname }\else
+\global\a@@cmd = \xpa {\csname a@c@\xpa \@gobble \string #1\endcsname }\fi }
+
+\def \arab@tail {\arab@codes \set@arabfont \test@token }
+
+\def \a@@pat #1:#2->#3\pat@end {#2}
+
+\def \a@puttt #1{\putwordb@x {\tt \string #1}}
+
+%%%%%%%%%%%%%%%%%%%%%% enable internal commands %%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newtoks \a@@listzero \newtoks \a@@listone
+\newtoks \a@@listtwo \newtoks \a@@listreg
+
+\long\def \a@@addcmd #1#2{% #1 cmd, #2 list
+\global #2 = \xpa {\the #2#1}}
+
+\long\def \all@wcmd #1{% enable parameterless command in arabic environment
+\a@@addcmd #1\a@@listzero }
+
+\long\def \all@w@ne #1{% enable command with 1 param in arabic environment
+\a@@addcmd #1\a@@listone }
+
+\long\def \all@wtw@ #1{% enable command with 2 params in arabic environment
+\a@@addcmd #1\a@@listtwo }
+
+\long\def \all@wif #1{% enable \#1true, \#1false
+\a@@name = \xpa \xpa \xpa {\xpa \@gobble \string #1}%
+\xpa \all@wcmd \csname \the\a@@name true\endcsname
+\xpa \all@wcmd \csname \the\a@@name false\endcsname }
+
+\long\def \all@whcmd #1{% enable command for horizontal mode
+\def@@cmd #1\all@wcmd #1%
+\xpa \def \the\a@@cmd {\putwordb@x {\leavevmode #1}\test@token }}
+
+\long\def \all@wvcmd #1{% enable command for vertical mode
+\def@@cmd #1\all@wcmd #1%
+\xpa \def \the\a@@cmd {\a@@par #1\test@token }}
+
+%%%%%%%%%%%%%%%%%%%%%% enable command definitions %%%%%%%%%%%%%%%%%%%%%%%%
+
+\long\def \allowarab #1{% enable new command in arabic environment
+\a@@addcmd #1\a@@listreg }
+
+\def \a@@def #1#2#3#4{% define command in RL mode
+\allowarab #2#1#2#3{#4}\test@token }
+
+\def \a@c@def #1#2#{\a@@def \def {#1}{#2}}
+
+\def \a@c@edef #1#2#{\a@@def \edef {#1}{#2}}
+
+\def \a@c@gdef #1#2#{\a@@def \gdef {#1}{#2}}
+
+\def \a@c@xdef #1#2#{\a@@def \xdef {#1}{#2}}
+
+%%%%%%%%%%%%%%%%%%%%%% enable ArabTeX commands %%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\all@wcmd \novocalize \all@wcmd \vocalize \all@wcmd \fullvocalize
+\all@wcmd \setnash \all@wcmd \setnashbf \all@wcmd \setnastaliq
+\all@wcmd \setarab \all@wcmd \setmaghribi \all@wcmd \setfarsi
+\all@wcmd \setturk \all@wcmd \setkurdish \all@wcmd \setbalut
+\all@wcmd \seturdu \all@wcmd \setpashto \all@wcmd \setverb
+\all@wcmd \yahdots \all@wcmd \yahnodots \all@wcmd \oldtanwin
+\all@wcmd \newtanwin \all@wcmd \accentshigh \all@wcmd \accentslow
+\all@wcmd \oldhamza \all@wcmd \newhamza \all@w@ne \setarabfont
+\all@w@ne \setcode \all@wcmd \endsetcode \all@wcmd \setuighur
+\iffalse
+\all@w@ne \input \all@w@ne \end
+\all@wcmd \relax \all@wcmd \indent \all@wcmd \noindent
+\all@w@ne \emphasize \all@wtw@ \footnote \all@w@ne \marginpar
+\all@w@ne \docommand \all@wtw@ \doassign \all@w@ne \mbox
+\all@w@ne \centerline \all@w@ne \spreadline \all@wtw@ \spreadbox
+\all@wcmd \nospace \all@w@ne \hspace \all@w@ne \tracingmacros
+\fi
+
+\all@wif \arab \all@wif \trans \all@wif \show
+\all@wif \spread \all@wif \ligs \all@wif \RL
+
+\all@whcmd \bigskip \all@whcmd \medskip \all@whcmd \smallskip
+\all@whcmd \hfill \all@whcmd \hfil \all@whcmd \space
+\all@whcmd \hss
+
+\ifx \LaTeX \undefined
+\all@wvcmd \bigskip \all@wvcmd \medskip \all@wvcmd \smallskip
+\fi
+
+\all@wvcmd \newpage \all@wvcmd \clearpage
+\all@wvcmd \vfil \all@wvcmd \vfill
+
+
+%%%%%%%%%%%%%%%%%%% special characters %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@spec@def #1#2{% define routine for special character
+\def@@cmd #1\xpa \gdef \the\a@@cmd {#2}}
+
+\def \a@@chardef #1{\begingroup \lccode `\0 #1\lowercase
+{\endgroup \ifarab \putwordb@x {\a@rabwrite {0}}\fi
+\a@showinput {0}}\obey@space }
+
+\a@spec@def \#{\a@@chardef {`\#}} \a@spec@def \${\a@@chardef {`\$}}
+\a@spec@def \%{\a@@chardef {`\%}} \a@spec@def \&{\a@@chardef {`\&}}
+\a@spec@def \^{\a@@chardef {`\^}} \a@spec@def \_{\a@@chardef {`\_}}
+
+\a@spec@def \ {\a@spacefalse \putwordb@x {\arab@space }\test@token }
+
+\def \a@c@arabchar #1{% single character in the font
+\ifarab \putwordb@x {\char #1}\fi \a@showinput {\arabchar #1}\obey@space }
+
+\def \a@c@char {% read char number
+\begingroup \afterassignment \a@@char \count0=}
+
+\def \a@@char {% deposit character
+\edef \a@ch@r {\noexpand\a@c@arabchar {\the\count0}}%
+\xpa\endgroup \a@ch@r }
+
+%%%%%%%%%%%%%%%%%%% miscellaneous commands %%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@end {\end } \def \a@c@relax {\test@token }
+
+\def \a@c@par {\a@@par \test@token }
+
+\def \a@c@indent {\arab@indent \test@token }
+
+\def \a@c@noindent {\arab@noindent \test@token }
+
+\def \a@c@input {% \input inside arabic environment, Plain version
+\xpa \test@token \input }
+
+\def \a@c@doassign #1#2{% execute assignment
+#1#2\relax \test@token }
+
+\def \a@c@docommand #1{% expand and process user command
+\xpa \test@token \xpa {#1} }
+
+\def \a@c@bf {\setnashbf \arab@tail }
+\def \a@c@rm {\setnash \arab@tail }
+
+\def \a@c@today {\xpa \a@c@mbox \xpa {\a@@today }}
+
+\edef \a@@today {\number\day \space \ifcase\month\or
+yanAyir \or febrAyir \or mAris \or 'abrIl \or
+mAyU \or yUniyU \or yUliyU \or 'a.gus.tus \or
+sibtambar \or 'uktUbar \or nUfambar \or disambar \fi ,
+\number\year}
+
+\def \a@c@protect {\test@token }
+
+\long\def \a@c@cond #1#2#3\fi {% call conditional
+#1\ReturnElseFi {\test@token #2}%
+\else \ReturnFi {\test@token #3}\fi }
+
+\def \a@c@endinput {\endinput \test@token }
+
+%%%%%%%%%%%%%% \begin ... \end {romantext} %%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@romantext {% end Arabic mode and switch down (!) to Roman
+\endgroup \endarabtext \endgroup
+\def \@currenvir {romantext}\let \end \a@r@end \ignorespaces }
+
+\def \endromantext {% switch up (!) to Arabic mode
+\endgraf
+\def \@currenvir {document}\begingroup
+\def \@currenvir {arabtext}\arabtext }
+
+\let \a@l@end \end % save current meaning of \end
+
+\def \a@r@end #1{% new \end for the base level
+\def \@romantext {romantext}\def \@tempa {#1}%
+\ifx \@tempa \@romantext \let \@tempa \endromantext
+\else \def \@tempa {\a@l@end {#1}}%
+\fi \@tempa }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% boxes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@centerline #1{% new line, centered
+\a@@par \centerline {\a@showinput {#1}}%
+\ifarab \putwordb@x {\hss \a@sequence {#1}\hss }\a@put@line
+\fi \test@token }
+
+\def \a@c@spreadline #1{% new line, spread out
+\a@@par \initlineb@x \centerline {\a@showinput {#1}}%
+\ifarab \putwordb@x
+{\spreadtrue \a@sequence {#1}\setbox0 \lastbox \unhbox0 }\a@put@line
+\fi \test@token }
+
+\def \a@c@mbox #1{% put the argument into a box
+\ifarab \putwordb@x {\a@sequence {#1}}\fi
+\a@spacefalse \a@showinput {#1}\test@token }
+
+\def \a@c@spreadbox {% {width}{text} put the text into a box
+\unarab@codes \a@@spreadbox }
+
+\def \a@@spreadbox #1{% {width}{text} get the width
+\def \a@bwidth {#1}\arab@codes \a@spreadbox }
+
+\def \a@spreadbox #1{% {width}{text} get the text
+\ifarab \putwordb@x {\spreadtrue
+\setspace {3pt plus .3fil}%
+\a@sequence {#1}%
+\setbox0 \lastbox \hbox to \a@bwidth {\unhbox0 }}\fi
+\a@spacefalse \a@showinput {#1}\test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% spacing %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@nospace {% concatenate neighboring items
+\a@spacefalse \test@token }
+
+\let \nospace \relax
+
+\def \a@c@hspace {% horizontal space
+\unarab@codes \a@@hspace }
+
+\def \a@@hspace #1{% get argument
+\a@spacefalse \ifarab \putwordb@x {\hskip #1\relax }\fi
+\arab@codes \test@token }
+
+\def \a@c@pagebreak
+{\a@@par \@ifnextchar [{\a@@pagebreak }{\a@@pagebreak [4]}}
+
+\def \a@@pagebreak [#1]{\pagebreak [#1]\test@token }
+
+\def \a@c@hskip {\afterassignment \a@hskip \dimen0=}
+
+\def \a@hskip {\putwordb@x {\hskip \dimen0 }\test@token }
+
+\def \a@c@vskip {\afterassignment \a@vskip \dimen0=}
+
+\def \a@vskip {\a@@par \vskip \dimen0 \test@token }
+
+\def \a@c@vspace {% vertical space
+\unarab@codes \a@@vspace }
+
+\def \a@@vspace #1{% get argument
+\ifarab \a@@par \vskip #1\relax \fi
+\arab@codes \test@token }
+
+\def \a@c@break {\a@put@line \test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% emphasis %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@emphasize {% get next token
+\def \next@command {\arab@em}%
+\futurelet \next@token \test@space }
+
+\def \arab@em #1 {% overstrike group
+\def \next@command {\test@special}%
+\ifarab \setbox0 \hbox {\a@sequence {#1}}%
+ \putwordb@x {\vbox {\hrule \kern 1pt \box0}}%
+\fi
+\ifshow {\tt \string \emphasize \ }%
+\if \bgroup \nxp \next@token \a@@verb {{#1}}\else \a@@verb {#1}%
+\fi\fi
+\iftrans \underbar {{\set@transfont \trans@text #1 \end }}%
+\fi \test@token }
+
+%%%%%%%%%%%%%%%%%%% \footnote in an arabic environment %%%%%%%%%%%%%%%
+
+\def \a@c@footnote #1{% Plain TeX arabic footnote
+\rm \parindent \a@parindent \unarab@codes \def \@foot
+{\unskip \strut \egroup \arab@codes \set@arabfont \test@token }%
+\putwordb@x {#1}\a@spacetrue \vfootnote {#1}}
+
+%%%%%%%%%%%%%%%%%% \marginpar in an arabic environment %%%%%%%%%%%%%%%
+
+\def \a@c@marginpar {% for Arabic environments only
+\setbox0 \vtop \bgroup \unarab@codes \a@@marginpar }
+
+\long \def \a@@marginpar #1{% get text of note
+\hsize \marginparwidth \parskip 0pt \raggedright
+\noindent \rm \strut #1\vss \egroup \dp0 \z@
+\setbox\lineb@x \hbox {\unhbox\lineb@x
+\rlap {\hskip \marginparsep \box0 \hss }}\test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\all@w@ne \settrans
+
+\def \a@c@tracingmacros {\afterassignment \test@token \tracingmacros=}
+
+\def \a@c@test #1{\csname test@#1true\endcsname \test@token }
+
+\def \a@c@untest #1{\csname test@#1false\endcsname \test@token }
+
+\a@spec@def \<{\a@get@ins }
+
+\def \a@get@ins #1>{\test@token #1 }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/aconfig.sty b/language/arabic/arabtex/texinput/aconfig.sty
new file mode 100644
index 0000000000..fa3cf81b0d
--- /dev/null
+++ b/language/arabic/arabtex/texinput/aconfig.sty
@@ -0,0 +1,95 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aconfig.sty
+% determine the configuration for ArabTeX
+% 26.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%\a@ident {aconfig.sty}{3.11 get ArabTeX configuration } {26.04.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%% check environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@@Plain {Plain} \def \a@@LaTeX {LaTeX}
+\def \a@@LaTeXiizix {LaTeX2.09} \def \a@@LaTeXiie {LaTeX2e}
+\def \a@@EDMAC {EDMAC} \def \a@@EDMACiii {EDMAC3.00}
+\def \a@@EDMACiiixv {EDMAC3.15}
+\def \a@config {aconfig} \def \a@sty {sty}
+
+\def \UsePackage #1{\input {#1.sty}}
+
+\ifx \undefined \LaTeX \let \a@@env \a@@Plain
+ \wlog {Plain TeX detected }\let \a@@var \a@@Plain
+ \newcount \@listdepth \@listdepth \z@
+ \newdimen \linewidth \linewidth \hsize
+\else \let \a@@env \a@@LaTeX
+\ifx \undefined \NeedsTeXFormat
+ \wlog {LaTeX 2.09 detected }\let \a@@var \a@@LaTeXiizix
+\else \wlog {LaTeX2e detected }\let \a@@var \a@@LaTeXiie
+ \listfiles
+ \ifx \undefined \xpt \def \UsePackage {\usepackage }
+ \fi
+\fi\fi
+
+\ifx \edmacloaded \relax \let \a@@env \a@@EDMAC
+\ifx \end@lemmas \undefined
+ \wlog {EDMAC 3.00 detected }\let \a@@var \a@@EDMACiii
+\else \wlog {EDMAC 3.15 or later detected }\let \a@@var \a@@EDMACiiixv
+\fi\fi
+
+\ifx \undefined \originalTeX \else
+ \wlog {BABEL detected}\def \a@babel {BABEL}%
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%% module reporting %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcount \a@moduledate \newcount \a@maindate \a@maindate 0
+\def \arabtexconfig {$ArabTeX configuration:$}%
+
+\def \a@LaTeXdate #1#2#3#4#5#6#7#8{% fixed Y2k problem !!
+#1#2#3#4/#5#6/#7#8}% standard format
+
+\def \a@getstem #1.#2\relax {\def \a@stem {#1}\def \a@ext {#2}}
+
+\def \a@geteight #1#2#3#4#5#6#7#8#9\relax % pad to 8 characters
+{\def \a@eight {#1#2#3#4#5#6#7#8}\xpa \a@getpad \a@eight\space..\relax }
+
+\def \a@getpad #1.#2.#3\relax {\def \a@pad {#2}}
+
+\def \a@newdate #1.#2.#3.#4\@{\a@moduledate 0#3\relax
+\ifnum \a@moduledate < 100 \advance \a@moduledate 1900
+\message {^^J*** fix date (\a@@date ) of module \a@@module ! ***^^J^^J}%
+\ifnum \a@moduledate < 1990 \advance \a@moduledate 100
+\fi\fi
+\multiply \a@moduledate 100 \advance \a@moduledate 0#2
+\multiply \a@moduledate 100 \advance \a@moduledate 0#1 }
+
+\def \a@report {% identify actual run
+\typeout {Arabic processor `ArabTeX' [\number\a@maindate \space
+patch level \a@patchlevel ]}}
+
+\def \a@ident #1#2#3{% report loaded modules
+\def \a@@module {#1}\edef \a@@date {#3}%
+\xpa\a@newdate \a@@date ...\@ % format date of module
+\ifnum \a@moduledate > \a@maindate \a@maindate \a@moduledate \fi
+\edef \a@descr {\xpa \a@LaTeXdate \the\a@moduledate \space\space #2}
+\a@getstem #1\relax
+\ifx \a@@var \a@@LaTeXiie
+ \ifx \a@stem \a@config \else
+ \ifx \a@ext \a@sty \ProvidesPackage {\a@stem }[\a@descr ]%
+ \fi
+ \fi
+\else \message {#2} \message {(#3)}
+\fi
+\xpa \a@geteight \a@stem.\space\space\space\space\space\space\relax
+\edef \arabtexconfig {\arabtexconfig $\a@pad #1 \space\a@descr }}
+
+\a@ident {aconfig.sty}{3.08 get ArabTeX configuration } {01.11.1998}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
diff --git a/language/arabic/arabtex/texinput/aedpatch.sty b/language/arabic/arabtex/texinput/aedpatch.sty
new file mode 100644
index 0000000000..17ae709d35
--- /dev/null
+++ b/language/arabic/arabtex/texinput/aedpatch.sty
@@ -0,0 +1,220 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aedpatch.sty
+% patches for EDMAC to operate with ArabTeX
+% 19.03.93 2.07 EDMAC 3.00
+% 19.06.94 3.02 EDMAC 3.15 compatible
+% \pstart, \pend, \autopar within Arabic
+% 06.05.97 3.05 bug fixes, works with EDMAC 3.17
+% 05.07.97 3.06 for edmacfss.sty
+% 22.01.98 3.06a fixed parafootnote format
+% 07.02.98 3.06a fixed parafootnote format for LaTeX
+% 08.07.98 3.07 new ArabTeX version
+% 10.04.99 3.08 fixed spurious space
+% 20.08.03 3.11 cleanup
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \aedatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \aedatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {aedpatch.sty} {3.11 ArabTeX extensions for EDMAC} {20.08.2003}
+
+\def \tr@ce@n {\tracingmacros 0}
+
+\def \tr@ce@ff {\edef \tr@ce@n
+ {\nxp\tracingmacros \the\tracingmacros }\tracingmacros 0}
+\let \tr@ce@n \relax
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% modify some EDMAC commands in a compatible way
+
+\long \def \text #1#2/{% inside Roman text
+% depends on EDMAC version used
+\leavevmode
+\begingroup \no@expands
+ \xdef\@tag{#1}%
+ \set@line \global\insert@count=0
+ \ignorespaces #2\relax \flag@start
+\endgroup
+#1%
+\a@end@lemma
+\flag@end }
+
+\def \a@end@lemma {% for EDMAC 3.00 and EDMAC 3.15
+\ifx \end@lemma \undefined % as in EDMAC 3.15 - 3.17
+ \ifx\end@lemmas\empty \else
+ \gl@p\end@lemmas\to\x@lemma
+ \x@lemma
+ \global\let\x@lemma=\relax
+ \fi
+\else \the\end@lemma % defined or EDMAC 3.00
+\fi }
+
+\def \lemma #1{% in argument of \text
+% care for delayed expansion of some ArabTeX commands
+ \begingroup \def \protect {\noexpand \protect \noexpand }%
+ \xdef\@tag{#1}%
+ \endgroup \ignorespaces }
+
+\def \do@line {% break off a line from \raw@text
+ {\vbadness=10000 \splittopskip=0pt
+ \advance \baselineskip 1ex
+% guard against some overfull \vboxes !
+% Arabic lines have a greater height and depth
+ \global \setbox\one@line
+ \vsplit \raw@text to \baselineskip }%
+ \unvbox\one@line \global \setbox\one@line \lastbox \getline@num
+ \hbox to \hsize {\affixline@num {\hfil
+ \hbox to \wd\one@line {\new@line \unhbox\one@line }}}%
+ \add@inserts
+ \add@penalties }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% variants for use inside an Arabic environment
+
+\def \<#1>{\RL{#1}} % allow long insertions
+
+{\catcode `< \active
+\gdef <#1>{\RL{#1}}} % allow long insertions
+
+\def \a@c@text {% internal version of \text
+% parameters will have the original catcodes
+\tr@ce@n \leavea@vmode \unarab@codes \begingroup
+\tr@ce@ff \rm \tr@ce@n \a@@text }
+
+\long \def \a@@text #1{% auxiliary routine
+% to kill leading blanks and remove spurious braces from #2
+\def \next@command {\a@@@text {#1}}%
+\futurelet \next@token \test@space }
+
+\def \a@append #1{% to the \lineb@x
+\setbox \lineb@x \hbox {\unhbox \lineb@x #1}}
+
+\def \a@get@text #1\@@ {% get flags and lemma
+\a@append {\flag@start }\a@@Linsert {#1}}
+
+\def \a@put@text {% unpack \Linsertb@x
+\a@Lunpack \putwordb@x {\ins@skip }}
+
+\long \def \a@@@text #1#2/{% inside arabic enviroment:
+% stay in vertical mode, put the text into a \hbox
+% and deposit the box *and* the \writes in the Arabic line
+ \no@expands
+ \def \next@command {\test@special}%
+ \xdef \@tag{#1}\set@line \global\insert@count=0
+ \aftergroup \a@get@text
+ % prepare for collecting any side effects of #2
+ \ignorespaces #2\relax
+\endgroup
+ #1\a@end@lemma \@@ % close the text
+ \a@put@text \a@append {\flag@end }%
+ \arab@codes \a@spacetrue
+\tr@ce@ff \test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@label #1{% outside the arguments of \text
+% hide the \write commands inside a box in the Arabic line
+% otherwise \do@line will not find the correct line breaks
+ \do@labelsfile
+ \ifx \labelref@list \empty \xdef \label@refs {\zz@@@ }%
+ \else \gl@p \labelref@list \to \label@refs
+ \fi
+ \edef \next {\write\@aux {\string\make@labels \label@refs|{#1}}}%
+ \global \setbox \wordb@x \hbox
+ {\write\linenum@out {\string\@lab }\next }%
+ \put@word \test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\let \a@par \a@@par % save for \a@@everypar in \a@c@autopar
+
+\def \a@c@pstart {\pstart \test@token }
+
+\def \a@c@pend {\a@par \pend \a@par \test@token }
+
+\def \a@c@autopar {% use inside Arabic environment
+\ifnumbering \else \errmessage
+ {\string\autopar\space must be used within a numbered section}%
+ \beginnumbering
+\fi
+\a@@everypar= {\setbox0 = \box \lineb@x \let \next \test@token
+ \a@par \pstart % starts a group
+ \def \a@@par {\a@par \pend \a@par }%
+ \def \end {\a@par \pend \test@token \end }%
+ \a@@everypar= {}\arab@indent }%
+\a@spacefalse \test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% allow still more EDMAC commands in Arabic text also
+
+\all@w@ne \pageref \all@w@ne \lineref \all@w@ne \sublineref
+\all@w@ne \xpageref \all@w@ne \xlineref \all@w@ne \xsublineref
+\all@wtw@ \makelabel \all@wtw@ \xxref
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% fix some bugs in EDMAC (Plain TeX and LaTeX2e versions)
+
+\xpa\def \xpa\no@expands \xpa{\no@expands \let ~=0\relax }
+
+\ifx\selectfont\undefined
+
+\font \nashix =nash14 scaled 900
+\font \nashviii =nash14 scaled 800
+
+\xpa\def \xpa\eightpoint \xpa{\eightpoint % Arabic is higher
+\normalbaselineskip=15.99pt
+\setbox\strutbox=\hbox{\vrule height10pt depth6pt width0pt}%
+\normallineskiplimit -16pt
+\setarabfont \nashviii
+\normalbaselines \rm }
+
+\else
+\listfiles
+
+\def\notefontsetup{\rm\fontsize{8}{15.99pt}\selectfont
+\lineskiplimit -\baselineskip }
+
+\def \begin #1{% call \a@c@#1
+% enable local \end
+\@ifundefined {#1}%
+{\def \@tempa {\@latexerr {Environment #1 undefined}\@eha }}%
+{\def \@tempa {\def \@currenvir {#1}\csname #1\endcsname }}%
+\begingroup \let \end \a@l@end \@endpefalse \@tempa }
+
+\def \a@l@end #1{% call \end#1
+% local version of \end
+\csname end#1\endcsname \@checkend {#1}%
+\if@endpe \global \let \@gtempa \@doendpe
+\else \global \let \@gtempa \relax
+\fi \endgroup \@gtempa }
+
+\fi
+
+\interparanoteglue{1em plus2em minus.4em}
+% more stretch for Arabic text
+
+\ifx \LaTeX \undefined \else \listfiles \fi
+
+\def \end {\newlinechar `$\wlog {\arabtexconfig }\@@end }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \edmacloaded \relax
+ \ifx \selectfont \undefined
+ \let \notefontsetup \eightpoint
+ \fi
+ \footnormal{A} \footnormal{B} \footnormal{C}
+ \footnormal{D} \footnormal{E}
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\catcode`\@ = \aedatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/afonts.sty b/language/arabic/arabtex/texinput/afonts.sty
new file mode 100644
index 0000000000..675681bed7
--- /dev/null
+++ b/language/arabic/arabtex/texinput/afonts.sty
@@ -0,0 +1,52 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% afonts.sty
+% 18.07.91 1.0
+% 20.09.91 1.1 added NFSS macros (br)
+% 19.11.91 1.2 magstephalf
+% 24.12.91 1.3 format
+% 12.02.92 1.4 message delayed
+% 27.02.92 1.5 nash14 font
+% 31.08.93 1.6 added support for NFSS2, missing `pt' in NFSS1 def. (br)
+% 14.03.94 1.7 identify lfonts.tex or NFSS version used
+% 16.11.95 3.04 split into separate files
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally and Bernd Raichle
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% load this file only, if \pnash not defined
+
+\expandafter \ifx \csname pnash\endcsname \relax \else
+ \expandafter \endinput \fi
+
+\a@ident {afonts.sty} {3.04 define Naskh font } {16.11.1995}
+
+\def\nash {\protect\pnash}
+\def\nashbf {\protect\pnashbf}
+% select the nash font with \nash
+
+\expandafter\ifx\csname DeclareFontShape\endcsname\relax
+
+% If we are using the NFSS, Version 2, \DeclareFontShape
+% is defined.
+% (The \expandafter\ifx\csname...\endcsname\relax is necessary,
+% because the NFSS2 styleoptions use LaTeX's internal \@ifundefined
+% command.)
+
+\expandafter\ifx\csname selectfont\endcsname\relax
+
+% Now it's possible that NFSS, Version 1, is used.
+% If \selectfont is defined, NFSS is active, otherwise
+% we assume LaTeX's `lfonts.tex'.
+
+ % OLD FONT SELECTION
+ \UsePackage {afonts0}
+ \else % NEW FONT SELECTION -- Version 1
+ \UsePackage {afonts1}
+ \fi
+\else % NEW FONT SELECTION -- Version 2
+ \UsePackage {afonts2}
+\fi
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/afonts0.sty b/language/arabic/arabtex/texinput/afonts0.sty
new file mode 100644
index 0000000000..f5d8b7b416
--- /dev/null
+++ b/language/arabic/arabtex/texinput/afonts0.sty
@@ -0,0 +1,60 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% afonts0.sty
+% ArabTeX
+% load Naskh14 for old LateX
+% 16.11.95
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {afonts0.sty} {3.04 define Naskh font for old LaTeX} {16.11.1995}
+
+% OLD FONT SELECTION
+% load all necessary fonts
+
+\newfont {\tennash }{nash14}
+\newfont {\elvnnash}{nash14 scaled 1095}
+\newfont {\twlvnash}{nash14 \@magscale1}
+\newfont {\frtnnash}{nash14 \@magscale2}
+\newfont {\svtnnash}{nash14 \@magscale3}
+\newfont {\twtynash}{nash14 \@magscale4}
+\newfont {\twfvnash}{nash14 \@magscale5}
+
+\newfont {\tennashbf }{nash14bf}
+\newfont {\elvnnashbf}{nash14bf scaled 1095}
+\newfont {\twlvnashbf}{nash14bf \@magscale1}
+\newfont {\frtnnashbf}{nash14bf \@magscale2}
+\newfont {\svtnnashbf}{nash14bf \@magscale3}
+\newfont {\twtynashbf}{nash14bf \@magscale4}
+\newfont {\twfvnashbf}{nash14bf \@magscale5}
+
+% add the \pnash command to the size changing hooks
+
+\@addfontinfo \@vpt {\def\pnash {\tennash}}
+\@addfontinfo \@viipt {\def\pnash {\tennash}}
+\@addfontinfo \@viiipt {\def\pnash {\tennash}}
+\@addfontinfo \@ixpt {\def\pnash {\tennash}}
+\@addfontinfo \@xpt {\def\pnash {\tennash}}
+\@addfontinfo \@xipt {\def\pnash {\elvnnash}}
+\@addfontinfo \@xiipt {\def\pnash {\twlvnash}}
+\@addfontinfo \@xivpt {\def\pnash {\frtnnash}}
+\@addfontinfo \@xviipt {\def\pnash {\svtnnash}}
+\@addfontinfo \@xxpt {\def\pnash {\twtynash}}
+\@addfontinfo \@xxvpt {\def\pnash {\twfvnash}}
+
+\@addfontinfo \@vpt {\def\pnashbf {\tennashbf}}
+\@addfontinfo \@viipt {\def\pnashbf {\tennashbf}}
+\@addfontinfo \@viiipt {\def\pnashbf {\tennashbf}}
+\@addfontinfo \@ixpt {\def\pnashbf {\tennashbf}}
+\@addfontinfo \@xpt {\def\pnashbf {\tennashbf}}
+\@addfontinfo \@xipt {\def\pnashbf {\elvnnashbf}}
+\@addfontinfo \@xiipt {\def\pnashbf {\twlvnashbf}}
+\@addfontinfo \@xivpt {\def\pnashbf {\frtnnashbf}}
+\@addfontinfo \@xviipt {\def\pnashbf {\svtnnashbf}}
+\@addfontinfo \@xxpt {\def\pnashbf {\twtynashbf}}
+\@addfontinfo \@xxvpt {\def\pnashbf {\twfvnashbf}}
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/afonts1.sty b/language/arabic/arabtex/texinput/afonts1.sty
new file mode 100644
index 0000000000..669ccb6a60
--- /dev/null
+++ b/language/arabic/arabtex/texinput/afonts1.sty
@@ -0,0 +1,61 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% afonts1.sty
+% ArabTeX
+% load Naskh14 for NFSS1
+% 16.11.95
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally and Bernd Raichle
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {afonts1.sty} {3.04 define Naskh font for NFSS1} {16.11.1995}
+
+\chardef \fntatcode = \catcode`\@ \catcode`\@ = 11
+\chardef \fntlscode = \catcode`\< \catcode`\< = 12
+
+% NEW FONT SELECTION -- Version 1
+
+% define \pnash to use the `nash' family, `m'edium series, `n'ormal shape.
+
+\def\pnash{\family{nash}\series{m}\shape{n}\selectfont}
+\def\pnashbf{\family{nash}\series{bx}\shape{n}\selectfont}
+
+% setup the font definition table
+% (`1' at the beginning of a fontname: size not available, print
+% warning to inform the user)
+
+\new@fontshape{nash}{m}{n}{%
+ <5>1nash14%
+ <6>1nash14%
+ <7>1nash14%
+ <8>1nash14%
+ <9>1nash14%
+ <10>nash14 at14.4pt%
+ <11>nash14 at15.77441pt%
+ <12>nash14 at17.28pt%
+ <14>nash14 at20.736pt%
+ <17>nash14 at24.8832pt%
+ <20>1nash14 at29.85984pt%
+ <25>1nash14 at35.831808pt}{}
+
+\new@fontshape{nash}{bx}{n}{%
+ <5>1nash14bf%
+ <6>1nash14bf%
+ <7>1nash14bf%
+ <8>1nash14bf%
+ <9>1nash14bf%
+ <10>nash14bf at14.4pt%
+ <11>nash14bf at15.77441pt%
+ <12>nash14bf at17.28pt%
+ <14>nash14bf at20.736pt%
+ <17>nash14bf at24.8832pt%
+ <20>nash14bf at29.85984pt%
+ <25>nash14bf at35.831808pt}{}
+
+\extra@def{nash}{}{}
+
+\catcode`\@ = \fntatcode \catcode`\< = \fntlscode
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/afonts2.sty b/language/arabic/arabtex/texinput/afonts2.sty
new file mode 100644
index 0000000000..b65bd57300
--- /dev/null
+++ b/language/arabic/arabtex/texinput/afonts2.sty
@@ -0,0 +1,54 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% afonts2.sty
+% ArabTeX
+% load Naskh14 for NFSS2
+% 19.10.1999
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally and Bernd Raichle
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {afonts2.sty} {3.10 define Naskh fonts for LaTeX2e} {19.10.1998}
+
+% NEW FONT SELECTION -- Version 2
+
+% define \pnash to use the `unknown' fontencoding, `nash' fontfamily,
+% `m'edium fontseries und `n'ormal fontshape.
+
+\def\pnash{\fontencoding{U}\fontfamily{nash}%
+ \fontseries{m}\fontshape{n}\selectfont}
+
+% define \pnashbf to use the `unknown' fontencoding, `nash' fontfamily,
+% `b'old e`x'tended fontseries und `n'ormal fontshape.
+
+\def\pnashbf{\fontencoding{U}\fontfamily{nash}%
+ \fontseries{bx}\fontshape{n}\selectfont}
+
+% extended Nash fonts (14pt @ 12pt):
+
+\def \xnash {\protect \pxnash }
+\def \xnashbf {\protect \pxnashbf }
+
+\def \pxnash {\fontencoding {U}\fontfamily {xnsh}%
+ \fontseries {m}\fontshape {n}\selectfont }
+
+\def \pxnashbf {\fontencoding {U}\fontfamily {xnsh}%
+ \fontseries {bx}\fontshape {n}\selectfont }
+
+% smaller fonts (12pt @ 12pt):
+
+\def \snash {\protect \psnash }
+\def \snashbf {\protect \psnashbf }
+
+\def \psnash {\fontencoding {U}\fontfamily {xnsh}%
+ \fontseries {m}\fontshape {s}\selectfont }
+
+\def \psnashbf {\fontencoding {U}\fontfamily {xnsh}%
+ \fontseries {bx}\fontshape {s}\selectfont }
+
+% All other definitions are done in the files `Unash.fd' and `Uxnsh.fd',
+% which are loaded on demand.
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/afoot.sty b/language/arabic/arabtex/texinput/afoot.sty
new file mode 100644
index 0000000000..97ebef55f7
--- /dev/null
+++ b/language/arabic/arabtex/texinput/afoot.sty
@@ -0,0 +1,100 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% afoot.sty
+% ArabTeX footnotes
+% 12.05.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \undefined \LaTeX \xpa \endinput \fi
+
+\a@ident {afoot.sty} {3.11 ArabTeX footnotes} {12.05.2003}
+
+%%%%%%%%%%%%%%%%%%% \footnote in an arabic environment %%%%%%%%%%%%%%%
+% footnotes inside an Arabic environment, Roman document style
+
+\let \a@@footnotemark \@footnotemark
+\let \a@@footnotetext \@footnotetext
+
+\def \a@footnotemark {% inside Arabic environment
+\iftrans \unskip \unskip \nobreak \@makefnmark \fi
+\ifarab \a@spacefalse \putwordb@x \@makefnmark \a@spacetrue \fi }
+
+\long\def \a@footnotetext #1{\a@@footnotetext {#1}\arab@tail }
+
+\at@arabtext {% inside Arabic environments
+\let \@footnotemark \a@footnotemark
+\let \@footnotetext \a@footnotetext }
+
+\def \a@c@footnote {% ArabTeX-LaTeX version
+\let \@footnotemark \a@footnotemark
+\unarab@codes \footnote }
+
+\def \a@c@footnotemark {% ArabTeX-LaTeX version
+\def \@footnotemark {\a@footnotemark \arab@tail }%
+\unarab@codes \footnotemark }
+
+\long\def \a@c@footnotetext {% ArabTeX-LaTeX version
+\unarab@codes \footnotetext }
+
+\def \LRfootnotes {% left to right footnotes
+\def \a@fnhook {\a@@mkfntext }% Roman document
+%\def \a@fnhook {\a@rmfntext }% Roman document
+\def \a@@fnhook {\a@rmfntext }% Arabic document
+}
+
+\all@wcmd \LRfootnotes \LRfootnotes % default
+
+%%%%%%%%%%%%%%%%%%% \footnote in an arabic environment %%%%%%%%%%%%%%%
+% footnotes inside an Arabic environment, Arabic document style
+
+\iffalse
+\def \a@@footnote {% ArabTeX-LaTeX version
+\def \@footnotemark {%
+ \a@spacefalse \putwordb@x \@makefnmark \a@spacetrue }%
+\def \a@@fntext ##1{% common part for footnote text
+ \def \end {\a@par \egroup \test@token }%
+ \hsize \columnwidth \@parboxrestore
+ \initlineb@x \@footnotemark \test@token ##1 \end }
+}
+
+\def \a@@footnotemark {%
+\def \@footnotemark % ArabTeX-LaTeX version
+ {\a@spacefalse \putwordb@x \@makefnmark \a@spacetrue \test@token }%
+\footnotemark }
+\fi
+
+\long\def \a@@fntext #1{% common part for footnote text
+%\def \@footnotemark {%
+% \a@spacefalse \putwordb@x \@makefnmark \a@spacetrue }%
+\def \end {\a@par \egroup \test@token }%
+ \a@hsize \columnwidth \hsize \columnwidth \@parboxrestore
+ \initlineb@x \putwordb@x \@makefnmark \a@spacetrue
+\set@arabfont
+ \arabtrue \test@token #1 \end }
+
+\long\def \a@@@fntext #1{% common part for RL footnote text, Roman mode
+%\def \@footnotemark {%
+% \a@spacefalse \putwordb@x \@makefnmark \a@spacetrue }%
+\def \end {\a@par \egroup }%
+ \a@hsize \columnwidth \hsize \columnwidth \@parboxrestore
+ \the\arabtext@hook \putwordb@x \@makefnmark \a@spacetrue
+ \test@token #1 \end }
+
+%%%%%%%%%%%%%%%%%%% \footnote in an arabic environment %%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%w%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \RLfootnotes {% right to left footnotes
+\def \a@fnhook {\a@@@fntext }% Roman document
+\def \a@@fnhook {\a@@fntext }% Arabic document
+}
+
+\all@wcmd \RLfootnotes
+
+\let \arabfootnotes \RLfootnotes \all@wcmd \arabfootnotes
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/alatex.sty b/language/arabic/arabtex/texinput/alatex.sty
new file mode 100644
index 0000000000..f347f236d4
--- /dev/null
+++ b/language/arabic/arabtex/texinput/alatex.sty
@@ -0,0 +1,164 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% alatex.sty
+% LaTeX extensions for ArabTeX
+% 04.05.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \undefined \LaTeX \xpa \endinput \fi
+
+\a@ident {alatex.sty} {3.11 ArabTeX extensions for LaTeX } {04.05.2003}
+
+%%%%%%%%%%%%%%%%%%% modify \document command %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\let \a@document \document \let \a@enddocument \enddocument
+
+\def \document {% activate Arabic insertions
+ \a@document \setarab }
+\ifx \@listfiles \undefined
+\def \enddocument {% report the configuration
+ {\newlinechar `$ \wlog {\arabtexconfig $}}\a@enddocument }
+\fi
+
+\UsePackage {afoot} % ArabTeX footnotes
+
+%%%%%%%%%%%%%%%%%%%%%%% verbatim %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% patch for LaTeX2e
+% thanks to Andreas Scherer
+% <scherer@imib.rwth-aachen.de>
+
+\def \verb {% make < safe
+\ifx \undefined\documentclass % LaTeX 2.09
+\begingroup \catcode ``=13 \tt
+\else
+\relax \ifmmode \hbox \fi \bgroup \verbatim@font
+\fi
+\catcode `<=12 \@noligs \let \do \@makeother \dospecials
+\@ifstar {\@sverb }{\@verb }}
+
+%%%%%%%%%%%%%%%%%%%%%% enable LaTeX commands %%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \fdef #1#2#3#4{% define NFSS2 font
+\pdef #1{\def \pheb {\fontencoding {U}\fontfamily {#2}%
+\fontseries {#3}\fontshape {#4}\selectfont }%
+\ifx \a@normalfont \a@default \gdef \a@normalfont {#1}\fi
+\setarabfont \pheb \set@arabfont }%
+\all@wcmd #1}
+
+\all@wcmd \tiny \all@wcmd \footnotesize \all@wcmd \small
+\all@wcmd \normalsize \all@wcmd \large \all@wcmd \Large
+\all@wcmd \LARGE \all@wcmd \huge \all@wcmd \Huge
+
+\all@wcmd \mdseries \all@wcmd \bfseries \all@wcmd \a@normalfont
+\all@wcmd \upshape \all@wcmd \itshape \all@wcmd \slshape
+\all@wcmd \rmfamily \all@wcmd \sffamily \all@wcmd \ttfamily
+\all@wcmd \a@normalfont
+
+\def \a@c@input {\expandafter \test@token \@@input }
+
+\def \@abj #1{\abj@d {#1}}
+
+\def \Arabic #1{\expandafter \@Arabic \csname c@#1\endcsname }
+\def \arab #1{\expandafter \@arab \csname c@#1\endcsname }
+\def \Arab #1{\expandafter \@Arab \csname c@#1\endcsname }
+\def \abj #1{\expandafter \@abj \csname c@#1\endcsname }
+\def \Abj #1{\expandafter \@Abj \csname c@#1\endcsname }
+
+\let \@Arab \@arabic \let \@arab \@arabic \let \@Arabic \@arabic
+\let \@abjad \@abj \let \@Abj \@abj
+
+%%%%%%%%%%%%%%%%%%%%%% Math in Arabic mode %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@spec@def \({% inline math insertion in Arabic mode
+\unarab@codes \test@mathx }
+
+\def \test@mathx #1\){% finish inline math insertion
+\putwordb@x {$#1$}\a@spacetrue \arab@codes \test@token }
+
+\def \a@c@math {% inline math environment in Arabic mode
+ \def \endmath {$\egroup \aftergroup \test@mathy }%
+\unarab@codes \global\setbox1 \hbox \bgroup $}
+
+\def \a@c@test@mathy {% finish inline math environment
+\a@spacetrue \putwordb@x {\box1 }\a@spacetrue \test@token }
+
+\a@spec@def \[{% math display in Arabic mode
+\begingroup \endarabtext \leavevmode \let \a@end@dis \]%
+ \def \]{\a@end@dis \endgroup \a@spacefalse \test@token }\[}
+
+\def \a@c@displaymath {% displaymath environment in Arabic mode
+\endarabtext \leavevmode \displaymath }
+
+\def \a@c@equation {\endarabtext \equation }
+
+\def \a@c@eqnarray {\endarabtext \eqnarray }
+
+\xpa\def \csname a@c@eqnarray*\endcsname {% eqnarray* environment
+\endarabtext \csname eqnarray*\endcsname }
+
+%%%%%%%%%%%%%%%%%%%%% inner environments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \end #1{% modified LaTeX version: tail supplied by \begin
+ \csname end#1\endcsname \@checkend {#1}%
+\if@endpe \aftergroup \@doendpe \fi
+\endgroup }
+
+\def \a@c@@doendpe {% called in Arabic mode
+\@doendpe \test@token }
+
+\def \begin #1{% from LaTeX2e; after \end stay in Roman mode
+\@ifundefined {#1}%
+ {\def \reserved@a {\@latex@error
+ {Environment #1 undefined}\@eha }}%
+ {\def \reserved@a {\def \@currenvir {#1}\edef \@currenvline {\on@line}%
+ \csname #1\endcsname }}%
+\@ignorefalse \begingroup \aftergroup \a@endx
+\@endpefalse \reserved@a }
+
+\def \a@endx {% after \end in Roman mode
+\if@ignore \@ignorefalse \ignorespaces \fi}
+
+\def \a@c@begin #1{% Arabic version; after \end set Arabic mode
+\@ifundefined {a@c@#1}%
+ {\def \reserved@a {\@latex@error
+ {Arabic mode: Environment #1 undefined}\@eha \test@token }}%
+ {\def \reserved@a {\def \@currenvir {#1}\edef \@currenvline {\on@line}%
+ \csname a@c@#1\endcsname }}%
+\@ignorefalse \begingroup \aftergroup \a@endy
+\@endpefalse \reserved@a }
+
+\def \a@endy {% after \end in Arabic mode
+\a@spacefalse \test@token }
+
+%%%%%%%%%%%%%%%%%%%%% new commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@newcommand #1#2#{\a@@def \newcommand {#1}{#2}}
+
+\def \a@c@renewcommand #1#2#{\a@@def \renewcommand {#1}{#2}}
+
+\def \a@c@providecommand #1#2#{\a@@def \providecommand {#1}{#2}}
+
+\def \a@c@@env {\putwordb@x {\unhbox1 }\a@spacetrue \test@token }
+
+\def \a@@env #1#2#3#4#5{% define environment in RL mode
+\xpa \def \csname end#2\endcsname
+{\def \end {\global \setbox1 \hbox {\unhbox \lineb@x}\aftergroup \@env }%
+\test@token #5 \end }%
+\xpa #1\csname a@c@#2\endcsname #3%
+%{\setbox\lineb@x \box\lineb@x \a@spacetrue \test@token #4}%
+{\setbox\lineb@x \box\lineb@x \let\ifa@space \ifa@space \test@token #4}%
+\test@token }
+
+\def \a@c@newenvironment #1#2#{\a@@env \newcommand {#1}{#2}}
+
+\def \a@c@renewenvironment #1#2#{\a@@env \renewcommand {#1}{#2}}
+
+\def \a@c@protect {\test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/aligs.sty b/language/arabic/arabtex/texinput/aligs.sty
new file mode 100644
index 0000000000..a5fbbc38f6
--- /dev/null
+++ b/language/arabic/arabtex/texinput/aligs.sty
@@ -0,0 +1,635 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aligs.sty
+% ArabTeX
+% Ligatures
+% called in HMODE
+% Version 26.05.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {aligs.sty} {3.11 compute ligatures} {26.05.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \is@end@char #1{00% does not connect to the left ?
+\a@test {#1}\xxpa \unp@ck@skl \skl@skel \relax
+\ifnum \skl@con = 0 \else \xpa \setiffalse \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \aw@endligs #1#2*#3#4*#5{% test for final ligatures
+% c1 m1 * c2 m2 * c3
+\ifcase \act@cls \lam@lig #3#5% % 0 l
+\or % 1 YntCbyp
+ \ifnum \act@cd = \a@yah \yah@end #1#3#5\else
+ \ifnum \act@cd = \a@yah@h \yah@end #1#3#5\else
+ \ifnum \act@cd = \a@yah@p \yah@p@end #1#3#5\else
+ \ifnum \act@cd = \a@yah@p@s \yah@p@end #1#3#5\else
+ \ifnum \act@cd = \a@nun \nun@end #1#3#5\else
+ \bah@end #1%
+ \fi\fi\fi\fi\fi
+\or \sin@lig #1#5% % 2 sxSD
+\or \gim@lig #1#3#5% % 3 GHXJ
+ \a@min 0
+\or \global\@highfalse \@mod@acttrue \put@tatwil % 4 cR
+\or \kaf@end #3#5% % 5 kgM
+\or \fah@end #1% % 6 fqv
+\or \ttah@lig #1#5% % 7 VZ
+\or \rah@end #1#2*#3#5% % 8 rzj \a@r \a@R
+\or % 9 \a@t \a@n
+ \ifnum \act@cd = \a@yah@p@s \yah@p@end #1#3#5\else
+ \ifnum \act@cd = \a@nun@p \nun@end #1#3#5\else
+ \bah@end #1%
+ \fi\fi
+\else \global\@highfalse \@mod@acttrue % 10 ...
+ \ifnum \act@cd = \a@hah \hah@end #1#2*#3#4*#5\else
+ \ifnum \act@cd = \a@h@s \hah@urd #3\else
+ \ifnum \act@cd = \a@mim \mim@end #2*#3#5\else
+ \put@tatwil
+ \ifnum \act@cd = \a@dal \gim@test #5\else
+ \ifnum \act@cd = \a@dal@p \gim@test #5\else
+ \fi\fi
+ \fi\fi\fi
+\fi \aw@lower #5}
+
+%%%%%%%%%%%%%%%%%%%%%%% bah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \bah@end #1{% bah skeleton
+% c1
+\ifnum \act@cls = 1 \set@act\sk@b % YntCbyp
+\else \set@act\sk@b@p
+\fi
+\put@tatwil \@mod@acttrue \global\@hightrue }
+
+%%%%%%%%%%%%%%%%%%%%%%% gim %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \gim@lig #1#2#3{% gim, hhah, khah, tchah etc.
+% c1 c2 c3
+\ifnum \act@cd = \a@khah \else
+ \@mod@acttrue
+ \ifnum \act@cd = \a@gim@close \else \set@act\sk@hh
+ \fi
+\fi
+\ifs@nd \else
+\if\is@end@char #3\gim@one #1#2#3\else
+ \gim@more #1#2#3%
+\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%% gim %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \gim@one #1#2#3{% gim, hhah, khah, tchah % and one char
+% c1 c2 c3
+%\ifligs
+\ifcase \chr@cls
+ \act@gim #1\set@chr\sk@l@g@s % 0 l
+\or \act@gim #1\chr@tie\a@g@to@bb % 1 YntCbyp
+ \set@chr\sk@spc
+\or \act@gim #1\chr@tie\a@g@to@s \chr@sin % 2 sxSD
+\or \act@gim #1% % 3 GHXJ
+\or \put@tatwil % 4 cR
+\or \act@gim #1% % 5 kgM
+\or \act@gim #1% % 6 fqv
+\else \ifx #2m\act@gim #1\set@chr\sk@m@s
+ \else \put@tatwil
+ \fi
+%\fi
+\fi }
+
+\def \gim@more #1#2#3{% gim, hhah, khah, tchah
+% and more than one char
+% c1 c2 c3
+\ifligs
+\ifcase \chr@cls
+ \act@gim #1\set@chr\sk@l@y % 0 l
+\or \act@gim #1\chr@tie\a@g@to@mb % 1 YntCbyp
+ \set@chr\sk@b@y
+\or \act@gim #1\chr@tie\a@g@to@s \chr@sin % 2 sxSD
+\or \put@tatwil % 3 GHXJ
+\or \put@tatwil % 4 cR
+\or \act@gim #1% % 5 kgM
+\else \ifx #2m\ifx #3l\act@gim #1\set@chr\sk@m@l@g
+ \fi\fi
+\fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% sin %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sin@lig #1#2{% sin, shin, ssad, ddad, \a@s
+% c1 c3
+\put@tatwil \@mod@acttrue
+\ifnum \chr@cls = 1 % YntCbyp
+ \if\is@end@char #2\set@chr\sk@b@h \else
+ \ifx #1s\set@chr\sk@b@h \else
+ \ifx #1x\set@chr\sk@b@h \else
+ \fi\fi\fi
+\fi }
+
+\def \sin@lig #1#2{% sin, shin, ssad, ddad, \a@s
+% c1 c3
+\put@tatwil \@mod@acttrue
+\ifnum \chr@cls = 1 % YntCbyp
+ \if\is@end@char #2\set@chr\sk@b@h \else
+ \ifnum \act@cd = \a@sin \set@chr\sk@b@h \else
+ \fi\fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% ttah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \ttah@lig #1#2{% ttah, tthah
+% c1 c3
+\put@tatwil \@mod@acttrue
+\ifnum \chr@cls = 1 % YntCbyp
+ \if\is@end@char #2\set@chr\sk@b@h
+ \fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% rah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \rah@end #1#2*#3#4{% final r, z, j
+% c1 m1 * c2 c3
+\@mod@acttrue
+\ifcase \chr@cls
+ \put@tatwil % 0 l
+\or \if\is@end@char #4% % 1 YntCbyp
+ \else \set@chr\sk@b@sp \set@high@act
+ \fi
+\or \chr@tie\a@er@to@s \chr@sin % 2 sxSD
+\or \put@tatwil % 3 GHXJ
+\or \put@tatwil % 4 cR
+\or \ifligs % 5 kgM
+ \ifx #1r\if\is@updia #2*\put@tatwil
+ \else \kaf@lig
+ \fi
+ \else \put@tatwil
+ \fi
+ \else \put@tatwil
+ \fi
+\else \put@tatwil
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% fah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \fah@end #1{% fah family
+% c1
+\ifnum \act@cd = \a@qaf
+ \ifnewfont \set@act\sk@q@s \@mod@acttrue
+ \fi
+\else \@mod@acttrue
+\fi \global\@highfalse }
+
+%%%%%%%%%%%%%%%%%%%%%% kaf %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \kaf@end #1#2{% kaf family
+% c2 c3
+\ifnum \act@cd = \a@kaf
+ \gim@test #2% closed gim?
+ \kaf@test #1% kaf-kaf ?
+\fi
+\@mod@acttrue }
+
+%%%%%%%%%%%%%%%%%%%%%% lam %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \lam@lig #1#2{% lam family
+% c2 c3
+\global\@highfalse
+\ifnum \act@cd = \a@lam@gim
+ \if\is@end@char #1\chr@tie\a@skip
+ \fi \else
+\ifnum \act@cd = \a@lam@spec@low \else
+ \@mod@acttrue
+ \gim@test #2% closed gim?
+ \kaf@test #1% kaf-lam ?
+\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% mim %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \mim@end #1*#2#3{% final mIm
+% m1 * c2 c3
+\ifs@nd \if\is@lodia #1*% simulate tail
+ \if\is@end@char #2\set@act\sk@m@s
+ \else \set@act\sk@B \chr@tie\a@mim
+ \fi
+ \else \set@act\sk@m@s
+ \fi
+\else
+\ifcase \chr@cls
+ \set@act\sk@m@s % 0 l
+ \if\is@end@char #3\else \set@chr\sk@l@m
+ \fi
+\or \set@act\sk@m@s % 1 YntCbyp
+ \if\is@end@char #3\chr@tie\a@em@to@bb \set@chr\sk@spc
+ \else \set@chr\sk@b@e@m
+ \fi
+\or \set@act\sk@m@s \chr@tie\a@em@to@s \chr@sin % 2 sxSD
+\or \put@tatwil % 3 GHXJ
+\or \put@tatwil % 4 cR
+\or \if\is@updia #1*\put@tatwil % 5 kgM
+ \else \set@act\sk@m@s %\kaf@lig
+ \fi
+\or \set@act\sk@m@s % 6 fqv
+\else \ifx #2m\set@act\sk@m@s
+ \if\is@end@char #3\set@chr\sk@m@s \else
+ \set@chr\sk@m@s@h
+ \fi
+ \else \put@tatwil
+ \fi
+\fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% nun %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \nun@end #1#2#3{% final nun
+% c1 c2 c3
+\global\@highfalse \@mod@acttrue
+\ifnum \chr@cls = 1 % YntCbyp
+ \if\is@end@char #3\else
+ \set@chr\sk@b@sp \set@high@act
+ \fi
+\else \put@tatwil
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% hah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \hah@end #1#2*#3#4+#5*#6{% hah, test for ligature
+% c1 m1 * c2 m21 + m22 * c3
+\ifu@gh
+\ifx #1\a@H \else
+\set@act \sk@h@u
+\fi
+\else
+\ifurd@ \ifm@lay \else \set@act \sk@h@s \fi % two eyes
+ \ifx #1T\else
+ \ifx #1\a@H
+ \ifx #3l\ifx #6l% % 0 l
+ \ifnum #4 = \c@shadda \set@chr\sk@l@w
+ % special short form of lam for the Name of God
+ \fi\fi
+ \put@tatwil
+ \fi
+ \else \set@act\sk@h@u
+ \if\is@end@char #3%
+ \else \set@loww@act \global\a@min 1
+ \fi
+ \fi\fi
+\else
+\ifx #3l\ifx #6l% % 0 l
+ \ifnum #4 = \c@shadda \set@chr\sk@l@w
+ % special short form of lam for the Name of God
+ \fi\fi
+ \put@tatwil
+\else
+\ifnum \chr@cls = 1 \set@chr\sk@b \put@tatwil % 1 YntCbyp
+\else
+\ifnum \chr@cls = 3 % 3 GHX
+% \if\is@updia #4+#5*\chr@tie\a@tatwil \else
+ \put@tatwil
+% \fi
+\else \gim@test #6\put@tatwil
+\fi\fi\fi\fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% wavy hah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \hah@urd #1{% wavy hah
+% c2
+\if\is@end@char #1\set@act\sk@h % isolated round h
+\fi
+\@mod@actfalse % no mark below
+\ifnum \chr@cls = 1 \set@chr\sk@b % YntCbyp normal height
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% yah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yah@end #1#2#3{% yah or alif maqsoura
+% y/Y/L c2 c3
+ \global\@highfalse
+%\global \a@min 1
+\ifx #1y\ifyahd@ts \@mod@acttrue \fi
+\else \@mod@acttrue
+\fi
+\if\is@end@char #3\yah@one #2\else \yah@more #2%
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yah@one #1{% yah or alif maqsoura % and one char
+% c2
+\ifcase \chr@cls
+ \act@yah \set@chr\sk@l@lng % 0 l
+\or % 1 YntCbyp
+ \ifh@mza \act@yah \set@chr\sk@b@y \else
+ \ifk@fs \act@yah \set@chr\sk@b@y \else % ++++
+ \ifx #1y\else
+ \ifx #1Y\else
+ \act@yah \set@chr\sk@b@y
+ \fi\fi\fi\fi % ++++
+\or \act@yah \chr@tie\a@em@to@s \chr@sin % 2 sxSD
+\or \act@yah \ifs@nd \chr@tie\a@em@to@s \fi % 3 GHXJ
+\or \act@yah % 4 cR
+\or \act@yah \ifs@nd \chr@tie\a@em@to@s \fi % 5 kgM
+\or \act@yah % 6 fqv
+\else \ifx #1m\act@yah \set@chr\sk@m@s \else
+ \put@tatwil
+ \fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yah@more #1{% yah or alif maqsoura % and more than one char
+% c2
+\ifcase \chr@cls % 0 l
+ \act@yah \set@chr\sk@l@y
+ \set@low@act
+\or \ifiz@fet % 1 YntCbyp
+ \ifx #1y\else
+ \ifx #1Y\else
+ \act@yah \set@chr\sk@b@e@m
+ \fi\fi
+ \else \act@yah \set@chr\sk@b@e@m
+ \fi
+\or \act@yah \chr@tie\a@em@to@s \chr@sin % 2 sxSD
+\or \act@yah \ifs@nd \chr@tie\a@em@to@s \fi % 3 GHXJ
+\or \put@tatwil % 4 cR
+\or \act@yah \kaf@lig % 5 kgM
+ \ifs@nd \chr@tie\a@em@to@s \fi
+\or \ifs@nd \act@yah \else \put@tatwil \fi % 6 fqv
+\else \ifx #1h\act@yah \chr@tie\a@em@to@s
+ \else \put@tatwil
+ \fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% long yah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yah@p@end #1#2#3{% long (Urdu) yah bari
+% c2 c3
+ \global\@highfalse
+\global \a@min 2
+\ifx #1E\ifyahd@ts \@mod@acttrue
+ \fi
+\else \@mod@acttrue
+\fi
+\if\is@end@char #3\yah@p@one #2\else \yah@p@more #2%
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yah@p@one #1{% yah bari and one char
+% c2
+\ifcase \chr@cls \relax \set@chr\sk@l@lng % 0 l
+\or \set@chr\sk@b@g % 1 YntCbyp
+\or \chr@tie\a@g@to@s \chr@sin % 2 sxSD
+\else \ifx #1m\set@chr\sk@m@s
+ \else \put@tatwil
+ \fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yah@p@more #1{% yah bari and more than one char c2 X
+% c2
+\ifcase \chr@cls \relax \set@chr\sk@l@y % 0 l
+\or \set@chr\sk@b@g % 1 YntCbyp
+\or \chr@tie\a@g@to@s \chr@sin % 2 sxSD
+\else \ifx #1m\set@chr\sk@m@s@h \else
+ \ifx #1h\set@chr\sk@h@s@l
+ \else
+ \put@tatwil
+ \fi\fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \aw@midligs #1#2*#3#4{% check for medial ligatures
+% c1 m1 * c2 c3
+\ifcase \act@cls \lam@lig #3#4% % 0 l
+\or \bah@mid #2*#3#4% % 1 YntCbyp
+\or \sin@lig #1#4% % 2 sxSD
+\or \gim@lig #1#3#4% % 3 GHXJ
+\or \global\@highfalse \put@tatwil % 4 cR
+\or \global\@highfalse \put@tatwil % 5 kgM
+\or \global\@highfalse \put@tatwil % 6 fqv
+\or \ttah@lig #1#4% % 7 VZ
+\else \global\@highfalse
+ \ifx #1m\mim@mid #2*#3#4\else
+ \ifx #1h\hah@mid #1#3#4\else % two-eyed hah
+ \ifx #1\a@h\hah@urd@mid #1#3#4\else
+ \put@tatwil
+ \fi\fi\fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \chr@fam #1{% put family
+% c2
+\if@con \@mod@chrtrue
+\ifcase \chr@cls % 0 l
+\or \set@chr\sk@b % 1 YntCbyp
+ \ifx #1\a@am \chr@mod 6 \fi % Malay
+\or % 2 sxSD
+\or \set@chr\sk@hh \@mod@chrtrue % 3 GHXJ
+\or % 4 cR
+\or \kaf@fam % 5 kgM
+\or \set@chr\sk@f@s % 6 fqv
+\or % 7 VZ
+\or % 8 rzj
+\or \set@chr\sk@b@p % 9 \a@t \a@n
+\else
+\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%% bah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \bah@mid #1+#2*#3#4{% long form of bah etc.
+% m11 + m12 * c2 c3
+\put@tatwil
+\ifnum \act@cd = \a@bah@s % normal shape
+ \@mod@acttrue
+ \if@high \ifnum #1 > 9 \set@act\sk@b@h \global\@highfalse
+ \fi
+ \else \global\@hightrue
+ \fi
+ \else
+\ifnum \act@cd = \a@bah@high % higher shape
+ \global\@highfalse
+ \else
+\ifnum \act@cd = \a@bah@spec@gim % before medial gim
+ \global\@highfalse
+ \else
+\ifnum \act@cd = \a@bah@spec@yah % before final yah
+ \global\@highfalse
+ \else
+\ifnum \act@cd = \a@bah@mid@mim % before medial mim
+ \global\@highfalse
+ \else
+\ifnum \act@cd = \a@bah@spec % before rah
+ \gim@test #4% closed gim ?
+ \global\@highfalse
+ \else
+\fi\fi\fi\fi\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% mim %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \mim@mid #1*#2#3{% medial mIm
+% m1 * c2 c3
+\ifnum \act@cd = \a@mim@spec@alif % s-m-a
+ \ifnum \chr@cls = 2 \chr@sin
+ \fi
+ \else
+\ifligs \mim@mid@lig #1*#2#3\else
+\if\is@end@char #3\mim@mid@lig #1*#2#3\else
+ \put@tatwil
+\fi\fi\fi }
+
+\def \mim@mid@lig #1*#2#3{% ligature for medial mIm
+% m1 * c2 c3
+\ifcase \chr@cls % 0 l
+ \ifnum \act@cd = \a@mim@lam@gim % l-m-^g
+ \if\is@end@char #3\set@chr\sk@l@h \else
+ \set@chr\sk@l@y
+ \fi
+ \if\is@updia #1*\set@act\sk@m@s@l
+ \fi
+ \else
+ \if\is@end@char #3\act@mim@spec #1*\set@chr\sk@l@m
+ \fi\fi
+%\or \set@act\sk@m@s \set@chr\sk@b@m@m % 1 YntCbyp
+\or \act@mim@spec #1*\set@chr\sk@b@m@m % 1 YntCbyp
+%\or \act@mim@spec #1*\chr@tie\a@bah@mid@mim % 2 sxSD
+\or \set@act\sk@m@s \chr@tie\a@bah@mid@mim % 2 sxSD
+ \chr@sin
+\or \set@act\sk@m@s@h \gim@test #3% % 3 GHXJ
+\or \set@act\sk@m@s@h % 4 cR
+\or \put@tatwil % 5 kgM
+\or \set@act\sk@m@s@h % 6 fqv
+\else
+ \ifx #2m\if\is@end@char #3%
+% \act@mim@spec #1*\set@chr\sk@m@s@m
+ \set@act\sk@m@s@l \set@chr\sk@m@s@m
+ \if\is@updia #1*\set@act\sk@m@s@l
+ \fi
+ \else \put@tatwil
+ \fi
+ \else \put@tatwil
+ \fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% hah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \hah@mid #1#2#3{% medial hah, no ligature in Urdu
+% c1 c2 c3
+\ifurd@ \ifnum \chr@cls = 0 % 0 l
+ \if\is@end@char #3\set@act\sk@h@s@l
+ \set@chr\sk@l@h
+ \else \put@tatwil
+ \fi
+ \else \put@tatwil
+ \fi
+\else
+\ifcase \chr@cls % 0 l
+ \ifligs \set@act\sk@h@s@l
+ \if\is@end@char #3\set@chr\sk@l@h
+ \else \set@chr\sk@l@m
+ \fi\fi
+\or \act@hah \set@chr\sk@b@e@h % 1 YntCbyp
+\or \act@hah \chr@tie\a@mh@to@s \chr@sin % 2 sxSD
+\else \ifnum \chr@cls = 9 % \a@t \a@n
+ \act@hah \set@chr\sk@b@e@h
+ \else \put@tatwil
+ \fi
+\fi
+\fi }
+
+\def \hah@urd@mid #1#2#3{% medial (wavy) hah
+% c1 c2 c3
+\ifcase \chr@cls \set@act\sk@h@s@l % 0 l
+ \if\is@end@char #3\set@chr\sk@l@h \else
+ \set@chr\sk@l@m
+ \fi
+\or \act@hah \set@chr\sk@b@e@h % 1 YntCbyp
+\or \act@hah \chr@tie\a@mh@to@s \chr@sin % 2 sxSD
+\else \ifnum \chr@cls = 9 % \a@t \a@n
+ \act@hah \set@chr\sk@b@e@h
+ \else \put@tatwil
+ \fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \gim@test #1{% closed gim ?
+% c3
+\ifnum \chr@cls = \gim@cls % GHXJ
+\if\is@end@char #1\set@chr\sk@j@cl
+ \@mod@chrtrue \global\@highfalse
+\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \kaf@test #1{% short kaf ?
+%\ifx #1\a@ax \put@tatwil % swash kaf
+\ifnum \chr@cd = \a@kaf@w \put@tatwil % swash kaf
+\else \ifnum \chr@cls = \kaf@cls
+ \kaf@lig \global\@highfalse
+\else \put@tatwil
+\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% change chr@cd %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \chr@sin {% shape without tooth % c
+\@mod@chrtrue
+\ifnum \chr@cd = \a@sin \set@chr\sk@sn@s \else
+\ifnum \chr@cd = \a@sad \set@chr\sk@sd@s \else
+\fi\fi }
+
+\def \kaf@lig {% put short kaf-alif ligature
+\@mod@chrtrue
+\ifnum \chr@cd = \a@kaf \set@chr\sk@k@sh \else
+\ifnum \chr@cd = \a@kaf@s \set@chr\sk@k@sh \else
+\ifnum \chr@cd = \a@kaf@p \set@chr\sk@k@sp \else
+\ifnum \chr@cd = \a@kaf@p@s \set@chr\sk@k@sp \else
+\ifnum \chr@cd = \a@gaf \set@chr\sk@g@sh \else
+\ifnum \chr@cd = \a@gaf@s \set@chr\sk@g@sh \else
+\ifnum \chr@cd = \a@gaf@p@s \set@chr\sk@g@sp \else
+\fi\fi\fi\fi\fi\fi\fi }
+
+\def \kaf@fam {% no mark
+\ifnum \chr@cd = \a@kaf \set@chr\sk@k@s \else
+\ifnum \chr@cd = \a@kaf@p \set@chr\sk@k@p \else
+\ifnum \chr@cd = \a@gaf \set@chr\sk@g@s \else
+\fi\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% change act@cd %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \act@yah {% short yah
+\global\a@min 1
+\ifnum \act@cd = \a@yah \set@act\sk@y@s \else
+\ifnum \act@cd = \a@yah@h \set@act\sk@y@h@s
+\fi\fi }
+
+\def \act@hah {% short hah
+\ifurd@ \else
+\ifnum \act@cd = \a@hah \set@act\sk@h@s
+\fi\fi }
+
+\def \act@gim #1{% deposit ligature
+\ifnum \act@cd = \a@khah \set@act\sk@kh@s \act@mod = 0
+\else \set@act\sk@hh@s \@mod@acttrue
+\fi \a@min 1 }
+%\fi }
+
+\def \act@mim@spec #1*{% lam-mim etc.
+\if\is@updia #1*\set@act\sk@m@s@l
+\else \set@act\sk@m@s
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% keshide %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \put@tatwil {% deposit keshide
+\ifspread \if@con \@tattrue
+\fi\fi }
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/alists.sty b/language/arabic/arabtex/texinput/alists.sty
new file mode 100644
index 0000000000..1f1272a1ba
--- /dev/null
+++ b/language/arabic/arabtex/texinput/alists.sty
@@ -0,0 +1,211 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% alists.sty
+% called by altxext.sty
+% 26.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% chapter = al-fa.slu
+% tableofcontents = al-mu.htawayAtu
+% listoffigures = qA'imaTu al-.suwaru
+% listoftables = qA'imaTu al-^gadAwilu
+% listofpictures = qA'imaTu al-rusUmu
+% index = al-fihrisu (al-fihristu)
+% bibliography = al-marA^gi`u
+% references = al-ma.sAdiru
+% abstract = al-mula_h_ha.su
+% appendix = al-mul.haqu
+% attachments = al-murfaqAtu
+% number = al-raqmu
+
+\a@ident {alists.sty} {3.11 inverted list macros} {26.04.2003}
+
+\iffalse %%%%%%%%%%%%%%%%%%% LaTeX 2.09 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\center{\trivlist \centering\item[]}
+
+%\let\endcenter=\endtrivlist
+
+\def\centering{\let\\=\@centercr\rightskip\@flushglue\leftskip\@flushglue
+\parindent\z@\parfillskip\z@}
+
+%\let\enddescription\endlist
+
+\def\flushleft{\trivlist \raggedright\item[]}
+
+\def\raggedright
+{\let\\=\@centercr\@rightskip\@flushglue \rightskip\@rightskip
+ \leftskip\z@ \parindent\z@}
+
+\let\endflushleft=\endtrivlist
+
+\def\flushright{\trivlist \raggedleft\item[]}
+
+\def\raggedleft
+{\let\\=\@centercr\rightskip\z@\leftskip\@flushglue
+ \parindent\z@ \parfillskip\z@}
+
+\let\endflushright=\endtrivlist
+
+\def\@centercr{\ifhmode \unskip\else \@badcrerr\fi
+ \par\@ifstar{\penalty \@M\@xcentercr}{\@xcentercr}}
+
+\def\@xcentercr{\addvspace{-\parskip}\@ifnextchar
+ [{\@icentercr}{\ignorespaces}}
+
+\def\@icentercr[#1]{\vskip #1\ignorespaces}
+
+\fi %%%%%%%%%%%%%%%%%%% LaTeX 2.09 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@itemize
+{\ifnum \@itemdepth >3 \@toodeep
+\else \advance \@itemdepth \@ne
+ \edef \@itemitem {labelitem\romannumeral \the \@itemdepth }%
+ \a@@list {\csname \@itemitem \endcsname }%
+ {\def \makelabel ##1{\hbox to 1sp {##1\hss }\hfil }}%
+\fi \test@token }
+
+\def \a@c@enumerate
+{\ifnum \@enumdepth >3 \@toodeep
+\else \advance \@enumdepth \@ne
+ \edef \@enumctr {enum\romannumeral \the \@enumdepth }%
+ \a@@list {\csname label\@enumctr \endcsname }%
+ {\usecounter {\@enumctr }%
+ \def \makelabel ##1%
+ {\edef \a@@tmp {##1}\hbox to 1sp
+ {\expandafter \<\a@@tmp >\hss }\hfil }}%
+\fi \test@token }
+
+\def \a@c@description {\a@@list {}%
+{\labelwidth\z@ \itemindent-\leftmargin \let\makelabel\descriptionlabel}%
+\def \enddescription {\endlist }\test@token}
+
+\def \a@c@trivlist {\a@trivlist \test@token }
+
+\def \a@trivlist
+{\parsep \a@parskip \@nmbrlistfalse \a@@trivlist
+\labelwidth \z@ \leftmargin \z@ \itemindent \z@
+\let \@itemlabel \@empty \def \makelabel ##1{##1}}
+
+\def \a@c@center {%
+\let\endcenter \a@@endtrivlist
+\a@trivlist \a@@centering \a@@item[]}
+
+\def \a@c@flushright {%
+\let\endflushright \a@@endtrivlist
+\a@trivlist \a@@raggedright \a@@item[]}
+
+\def \a@c@flushleft {%
+\let\endflushleft \a@@endtrivlist
+\a@trivlist \a@@raggedleft \a@@item[]}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@@raggedright
+{\let \a@last@line \put@line
+\rightskip \@flushglue \@rightskip \@flushglue \leftskip \z@
+\a@parindent \z@ \spreadfalse }
+
+\def \a@@raggedleft
+{\let \a@last@line \put@line
+\rightskip \z@ \leftskip \@flushglue
+\parfillskip \z@ \a@parindent \z@ \spreadfalse }
+
+\def \a@@centering
+{\let \a@last@line \put@line
+\rightskip \@flushglue \leftskip \@flushglue
+\a@parindent \z@ \spreadfalse \parfillskip \z@ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\a@centercr {% end of line
+%{\ifhmode \unskip\else \@badcrerr\fi
+%\par
+\a@last@line
+\@ifstar{\penalty \@M\@xcentercr}{\@xcentercr}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@@list #1#2{%
+\ifnum \@listdepth >5\relax \@toodeep
+ \else \global \advance \@listdepth \@ne \fi
+\rightmargin \z@ \listparindent \z@ \itemindent \z@
+\csname @list\romannumeral \the \@listdepth \endcsname
+\def \@itemlabel {#1}\let \makelabel \a@@mklab \@nmbrlistfalse #2\relax
+\a@@trivlist \a@parskip \parsep \a@parindent \listparindent
+\advance \a@hsize -\leftmargin \advance \a@hsize -\rightmargin
+\advance \@totalleftmargin \leftmargin \advance \a@leftmargin \rightmargin
+\ignorespaces }
+
+\def \a@@trivlist
+{\@topsepadd \topsep
+\if@noskipsec \leavea@vmode \fi % \a@@everypar
+\ifa@vmode \advance \@topsepadd \partopsep \fi \a@@par
+\if@inlabel \@noparitemtrue \@noparlisttrue
+ \else \@noparlistfalse \@topsep \@topsepadd \fi
+\advance \@topsep \a@parskip \leftskip \z@ \rightskip \@rightskip
+\parfillskip \@flushglue
+%\@setpar {\if@newlist \else {\@@par }\fi }% ??
+\let \endtrivlist \a@@endtrivlist
+\global \@newlisttrue \@outerparskip \a@parskip }
+
+\def \a@@mklab #1{#1\hfil }
+
+\def \a@@endtrivlist
+{\if@inlabel \putwordb@x {}\fi % \a@@everypar
+\if@newlist \@noitemerr \fi
+\a@@par
+\if@noparlist \else
+\ifdim \lastskip >\z@
+ \@tempskipa \lastskip \vskip -\lastskip
+ \advance \@tempskipa \a@parskip
+ \advance \@tempskipa -\@outerparskip
+ \vskip \@tempskipa
+\fi \@endparenv
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@@item [#1]{% for arabic lists running from right to left
+\if@noparitem \a@@donoparitem \else
+ \if@inlabel \putwordb@x {\arab@space }\a@@par \fi
+ \a@@par
+ \if@newlist \if@nobreak \@nbitem \else
+ \addpenalty \@beginparpenalty
+ \addvspace \@topsep \addvspace {-\a@parskip }\fi
+ \else \addpenalty \@itempenalty \addvspace \itemsep
+ \fi \global \@inlabeltrue
+\fi
+\a@@everypar {\global \@minipagefalse \global \@newlistfalse
+ \if@inlabel \global \@inlabelfalse \a@spacefalse
+ \putwordb@x {\box \@labels \hskip -\a@parindent }%
+ \fi \a@@everypar {}}%
+\global \@nobreakfalse
+\if@noitemarg \@noitemargfalse
+ \if@nmbrlist \refstepcounter {\@listctr }\fi
+\fi
+\setbox \@tempboxa \hbox {\makelabel {#1}}%
+\global \setbox \@labels \hbox
+ {\hskip \labelsep
+ \ifdim \wd \@tempboxa >\labelwidth \box \@tempboxa
+ \else \hbox to\labelwidth {\unhbox \@tempboxa }\fi
+ \hskip \itemindent \hskip -\labelwidth \hskip -\labelsep
+ \unhbox \@labels }%
+%\test@token }
+\arab@tail }
+
+\def \a@@donoparitem
+{\@noparitemfalse \global \setbox \@labels \hbox
+ {\hskip \leftmargin \unhbox \@labels \hskip -\leftmargin }%
+\if@minipage \else
+ \@tempskipa \lastskip \vskip -\lastskip
+ \advance \@tempskipa \@outerparskip
+ \advance \@tempskipa -\a@parskip \vskip \@tempskipa
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/alocal.sty b/language/arabic/arabtex/texinput/alocal.sty
new file mode 100644
index 0000000000..626d644581
--- /dev/null
+++ b/language/arabic/arabtex/texinput/alocal.sty
@@ -0,0 +1,20 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% alocal.sty
+% ArabTeX
+% stub for local extensions
+% should normally be empty!
+% Version 26.02.2006
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {3.11 local stub, 26.02.2006}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\relax
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
diff --git a/language/arabic/arabtex/texinput/altxext.sty b/language/arabic/arabtex/texinput/altxext.sty
new file mode 100644
index 0000000000..536d0357c0
--- /dev/null
+++ b/language/arabic/arabtex/texinput/altxext.sty
@@ -0,0 +1,101 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% altxext.sty
+% patches for LaTeX in arabic mode
+% for use with arabart.cls
+% ArabTeX 3.11
+% 04.05.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {altxext.sty} {3.11 LaTeX extensions for Arabic mode} {04.05.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@outputdblcol {% part of output routine for Arabic mode
+\if@firstcolumn \global\@firstcolumnfalse
+ \global\setbox\@leftcolumn \box\@outputbox
+\else \global\@firstcolumntrue
+ \setbox\@outputbox \vbox {\hbox to\textwidth {%
+ \hskip \columnwidth
+ \hfil \vrule width\columnseprule \hfil
+ \hbox to\columnwidth {\box\@leftcolumn \hss}%
+ \hskip -\textwidth
+ \hbox to\columnwidth{\box\@outputbox \hss}%
+ \hskip \columnsep
+ \hskip \columnwidth }}%
+ \@combinedblfloats \@outputpage
+ \begingroup \@dblfloatplacement \@startdblcolumn
+ \@whilesw\if@fcolmade \fi
+ {\@outputpage \@startdblcolumn }\endgroup
+\fi}
+
+\let \@outputdblcol \a@outputdblcol % for Arabic mode
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@addmarginpar {% part of output routine for Arabic mode
+\@next \@marbox \@currlist
+{\@cons\@freelist\@marbox \@cons\@freelist\@currbox}\@latexbug
+\@tempcnta \m@ne
+\if@twocolumn
+ \if@firstcolumn \@tempcnta \@ne \fi
+\else \if@mparswitch
+ \ifodd \c@page \else \@tempcnta \@ne \fi
+ \fi
+ \if@reversemargin \@tempcnta -\@tempcnta \fi
+\fi
+\ifnum \@tempcnta < \z@
+ \global\setbox\@marbox \box\@currbox
+\fi
+\@tempdima \@mparbottom \advance\@tempdima -\@pageht
+\advance\@tempdima \ht \@marbox
+\ifdim \@tempdima > \z@
+ \@@warning {Marginpar on page \thepage\space moved}%
+\else \@tempdima \z@
+\fi
+\global\@mparbottom \@pageht
+\global\advance\@mparbottom \@tempdima
+\global\advance\@mparbottom \dp\@marbox
+\global\advance\@mparbottom \marginparpush
+\advance\@tempdima -\ht\@marbox
+\global\ht\@marbox \z@ \global\dp\@marbox \z@
+\vskip -\@pagedp \vskip\@tempdima \nointerlineskip
+\hbox to\columnwidth
+ {\ifnum \@tempcnta > \z@
+ \hskip\columnwidth \hskip\marginparsep
+ \else \hskip -\marginparsep \hskip -\marginparwidth
+ \fi \box\@marbox \hss}%
+\nobreak %% RmS 91/06/21 \nobreak added
+\vskip -\@tempdima \nointerlineskip
+\hbox {\vrule \@height\z@ \@width\z@ \@depth\@pagedp }}
+
+\let \@addmarginpar \a@addmarginpar % for Arabic mode
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\markright#1{{\let\protect\noexpand
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markright\@themark
+ {#1}\mark{\@themark}}\if@nobreak\ifvmode\nobreak\fi\fi}
+
+\def\@markright#1#2#3{\gdef\@themark{{#1}{#3}}}
+
+\def \markleft #1{{\let\protect\noexpand
+\let\label\relax \let\index\relax \let\glossary\relax
+\expandafter\@markleft \@themark {#1}%
+\mark {\@themark }}%
+\if@nobreak \ifvmode \nobreak \fi \fi }
+
+\def \@markleft #1#2#3{\gdef\@themark {{#3}{#2}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\UsePackage {alists} % load LaTeX extensions for Arabic lists
+\UsePackage {asect} % load LaTeX extensions for Arabic sections
+\UsePackage {atabg} % load LaTeX extensions for Arabic tabbing
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
diff --git a/language/arabic/arabtex/texinput/amac.sty b/language/arabic/arabtex/texinput/amac.sty
new file mode 100644
index 0000000000..52a00e1b13
--- /dev/null
+++ b/language/arabic/arabtex/texinput/amac.sty
@@ -0,0 +1,164 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% amac.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% amac.sty
+% Scanner for MAC Arabic
+% to install it, include it as a LaTeX package or style option "amac"
+% with Plain TeX, say "\input amac.sty"
+% to activate it, say "\setcode{amac}"
+% 26.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \amacatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \amacatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {amac.sty} {3.11 MAC Arabic encoding} {26.04.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \amac@catcodes {% assignments for MAC Hebrew
+\countdef \is@m=2 \countdef \is@n=4
+\is@m = 128 \is@n = 64
+\loop \ifnum \catcode \is@m = 11 \else \catcode \is@m = 11 \fi
+\global\lccode \is@m = \is@n
+\ifnum 159 > \is@m \advance \is@m 1 \advance \is@n 1 \repeat
+\is@m = 160 \is@n = 32
+\loop \ifnum \catcode \is@m = 11 \else \catcode \is@m = 11 \fi
+\global\lccode \is@m = \is@n
+\ifnum 255 > \is@m \advance \is@m 1 \advance \is@n 1 \repeat
+\is@m=0 \is@n=0 \catcode `\^^a0 12 }
+
+{\amac@catcodes
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for MAC Arabic
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setamac@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@^^80 {@} \def \sc@^^81 {@} \def \sc@^^82 {@} \def \sc@^^83 {@}
+\def \sc@^^84 {@} \def \sc@^^85 {@} \def \sc@^^86 {@} \def \sc@^^87 {@}
+\def \sc@^^88 {@} \def \sc@^^89 {@} \def \sc@^^8a {@}
+\def \sc@^^8b {\n@xp\a@n}
+\def \sc@^^8c {@} \def \sc@^^8d {@} \def \sc@^^8e {@} \def \sc@^^8f {@}
+
+\def \sc@^^90 {@} \def \sc@^^91 {@} \def \sc@^^92 {@} \def \sc@^^93 {\a@ell}
+\def \sc@^^94 {@} \def \sc@^^95 {@} \def \sc@^^96 {@} \def \sc@^^97 {@}
+\def \sc@^^98 {@} \def \sc@^^99 {@} \def \sc@^^9a {@} \def \sc@^^9b {\a@div}
+\def \sc@^^9c {@} \def \sc@^^9d {@} \def \sc@^^9e {@} \def \sc@^^9f {@}
+
+\def \sc@^^a0 {@} \def \sc@^^a1 {!}
+\def \sc@^^a2 {\a@dq} \def \sc@^^a3 {\a@hsh}
+\def \sc@^^a4 {\a@dlr} \def \sc@^^a5 {\a@pct}
+\def \sc@^^a6 {\a@amp} \def \sc@^^a7 {\a@qt}
+\def \sc@^^a8 {)} \def \sc@^^a9 {(} \def \sc@^^aa {*} \def \sc@^^ab {+}
+\def \sc@^^ac {,} \def \sc@^^ad {-} \def \sc@^^ae {.} \def \sc@^^af {/}
+%
+\def \sc@^^b0 {0} \def \sc@^^b1 {1} \def \sc@^^b2 {2} \def \sc@^^b3 {3}
+\def \sc@^^b4 {4} \def \sc@^^b5 {5} \def \sc@^^b6 {6} \def \sc@^^b7 {7}
+\def \sc@^^b8 {8} \def \sc@^^b9 {9} \def \sc@^^ba {:} \def \sc@^^bb {;}
+\def \sc@^^bc {\a@rab} \def \sc@^^bd {=}
+\def \sc@^^be {\a@lab} \def \sc@^^bf {?}
+%
+\def \sc@^^c0 {*} \def \sc@^^c1 {Q|} \def \sc@^^c2 {QA} \def \sc@^^c3 {Qa}
+\def \sc@^^c4 {Qw} \def \sc@^^c5 {Qi} \def \sc@^^c6 {Qy} \def \sc@^^c7 {A}
+\def \sc@^^c8 {b} \def \sc@^^c9 {T} \def \sc@^^ca {t} \def \sc@^^cb {C}
+\def \sc@^^cc {G} \def \sc@^^cd {H} \def \sc@^^ce {X} \def \sc@^^cf {d}
+
+\def \sc@^^d0 {F} \def \sc@^^d1 {r} \def \sc@^^d2 {z} \def \sc@^^d3 {s}
+\def \sc@^^d4 {x} \def \sc@^^d5 {S} \def \sc@^^d6 {D} \def \sc@^^d7 {V}
+\def \sc@^^d8 {Z} \def \sc@^^d9 {P} \def \sc@^^da {R} \def \sc@^^db {]}
+\def \sc@^^dc {\a@bsl} \def \sc@^^dd {[}
+\def \sc@^^de {\a@up} \def \sc@^^df {\a@dn}
+
+\def \sc@^^e0 {B} \def \sc@^^e1 {f} \def \sc@^^e2 {q} \def \sc@^^e3 {k}
+\def \sc@^^e4 {l} \def \sc@^^e5 {m} \def \sc@^^e6 {n} \def \sc@^^e7 {h}
+\def \sc@^^e8 {w} \def \sc@^^e9 {Y} \def \sc@^^ea {y} \def \sc@^^eb {"aN}
+\def \sc@^^ec {"uN}\def \sc@^^ed {"iN} \def \sc@^^ee {"a} \def \sc@^^ef {"u}
+
+\def \sc@^^f0 {"i} \def \sc@^^f1 {\n@xp\a@Ze}
+\def \sc@^^f2 {""} \def \sc@^^f3 {p}
+\def \sc@^^f4 {\n@xp\a@t} \def \sc@^^f5 {J}
+\def \sc@^^f6 {\n@xp\a@H} \def \sc@^^f7 {v}
+\def \sc@^^f8 {g} \def \sc@^^f9 {\n@xp\a@d}
+\def \sc@^^fa {\n@xp\a@r} \def \sc@^^fb {\a@rbc}
+\def \sc@^^fc {\a@bar} \def \sc@^^fd {\a@lbc}
+\def \sc@^^fe {j} \def \sc@^^ff {E}
+\a@digits = {0123456789}
+\a@paren = {()[]}
+\a@first = {"`^^e6\a@tok \lq \rq \cap \MIN \IN }
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for MAC Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \amac@scan #1>{% standard scanner call: token sequence -> \a@tokens
+\iftest@scan \tracingmacros = 1
+\ifshow \else \lowercase{\a@verb #1>}\fi\fi
+\global\def \a@rest {}\global\a@tokens = {}\sc@beg #1\@ \@@
+\iftest@scan \tracingmacros = 0 %
+\xpa \a@verb \xpa (\the\a@tokens )>\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \amac@beg {% start MAC Arabic scanner
+\h@mzafalse \iz@fetfalse \@ssimfalse \novocalize % because of explicit quoting
+\amac@word }
+
+{\catcode `\^^M=13 \endlinechar = -1
+\gdef \amac@word #1{% transform input into internal notation
+\ifx #1\@ \def \next {\sc@endscan }\else % finished
+\ifcat \nxp #1\relax \def \next {\t@cs #1}\else % control sequence
+\if \nxp ^^M\nxp #1\def \next {\amac@par #1}% active character
+\else \def \next {\amac@w@rd #1}%
+\fi\fi\fi \next }%
+} % catcode 13
+
+\gdef \amac@w@rd #1#2{% special cases
+\case #1\of
+{ #2{\amac@word #1-#2}
+ -{\amac@minus #2}
+ ^^a0{\sc@back #2}
+ ^^ad{\amac@minus #2}
+\default {\amac@@word #1#2}
+}\endcase }
+
+\gdef \amac@@word #1{% default branch
+\ifcat a\nxp #1\edef \sc@char {\csname sc@#1\endcsname }%
+\else \def \sc@char {\nxp #1}%
+\fi \sc@put \amac@word }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \amac@minus {% hyphen between words
+\def \sc@char {-}\sc@put \amac@beg }
+
+\gdef \amac@par #1\@ \@@ {% new line, push back the rest
+\sc@back \\ #1\@ \@@ }
+
+\gdef \amac@endscan \@@ {\global\let \a@scan \amac@scan }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+} % \amac@catcodes
+
+\def \set@amac {% select the MAC Hebrew scanner
+\let \sc@beg \amac@beg \let \sc@word \amac@word
+\let \sc@back \sc@@back \let \sc@endscan \amac@endscan
+\global\let \a@scan \amac@scan \setamac@codes
+\amac@catcodes
+\a@message {input encoding set to MAC Arabic and ISO 8859-6 conventions}}
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the MAC Hebrew encoding
+iso88596\set@amac iso8859-6\set@amac amac\set@amac }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {scanner for MAC Arabic code installed.}
+
+\catcode `\@ = \amacatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/aoutput.sty b/language/arabic/arabtex/texinput/aoutput.sty
new file mode 100644
index 0000000000..da7edc579e
--- /dev/null
+++ b/language/arabic/arabtex/texinput/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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/aparse.sty b/language/arabic/arabtex/texinput/aparse.sty
new file mode 100644
index 0000000000..af54ac6f1f
--- /dev/null
+++ b/language/arabic/arabtex/texinput/aparse.sty
@@ -0,0 +1,1123 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aparse.sty
+% ArabTeX
+% Parser 26.05.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {aparse.sty} {3.11 get syllables } {26.05.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Arabic
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \def@arabvoc {% define vowel parsing routines for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% short vowels %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@a {\sv@@a }% short a
+\def \sv@e {\sv@@e }% short e
+\def \sv@i {\sv@@i }% short i
+\def \sv@o {\sv@@o }% short o
+\def \sv@u {\sv@@u }% short u
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% long vowels, plene %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@A {\sv@@A }% long a
+\def \sv@E {\sv@@E }% long e
+\def \sv@I {\sv@@I }% long i
+\def \sv@O {\sv@@O }% long o
+\def \sv@U {\sv@@U }% long u
+\def \sv@Y {\sv@Ytest }% alif maqsura or tooth
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% long vowels, defective %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\sv@def \a@a {\sv@a@a }% defective long a = Qur'an alif
+\sv@def \a@e {\sv@a@e }% explicit sukun
+\sv@def \a@i {\sv@a@i }% defective long i
+\sv@def \a@o {\sv@U }% special short u
+\sv@def \a@u {\sv@a@u }% defective long u
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% special vowels %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%\sv@def \a@A {\sv@a }% Turkish "a
+\sv@def \a@A {\sv@a@A }% Turkish "a
+\sv@def \a@E {\sv@a@E }% Kurdish ^e
+\sv@def \a@I {\sv@i }% Turkish "i
+\sv@def \a@O {\sv@a@O }% Kurdish and Turkish "o
+%\sv@def \a@U {\sv@u }% Turkish "u
+\sv@def \a@U {\sv@a@U }% Turkish "u
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% extra vowels %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\sv@def \a@Za {\sv@Za }% Kashmiri .a
+\sv@def \a@Ze {\sv@Ze }% explicit shadda
+\sv@def \a@Zi {\sv@Zi }% Sindhi -IN
+\sv@def \a@Zo {\sv@Zo }% Kashmiri .o
+\sv@def \a@Zu {\sv@Zu }% Kashmiri .u
+
+\sv@def \a@ZA {\sv@ZA }% Kashmiri .A
+\sv@def \a@ZE {\sv@ZE }% explicit madda
+\sv@def \a@ZI {\sv@ZI }% Kashmiri .y
+\sv@def \a@ZO {\sv@ZO }% Kashmiri .O
+\sv@def \a@ZU {\sv@ZU }% Kashmiri .U
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% hamza handling %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \syl@hamzabeg {\syl@@hamzabeg }% initial hamza
+
+\def \syl@hamza {\syl@@hamza }% non-initial hamza, context #1'
+
+\def \syl@test@voc {\syl@@test@voc }% vowel or sukun ?
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% miscellaneous %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \check@high {\check@@high }% long form for tooth ?
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% static definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@def #1{% define \sv@#1
+\xpa \def \csname sv@\string #1\endcsname }
+
+\newtoks \a@revwd
+\newtoks \sv@revwd \newtoks \last@con
+\newcount \last@mod \newcount \last@voc
+\newif \ifsyl@wdend \newif \ifm@dda
+
+\def \a@parse #1>{% parse token sequence into syllables
+\iftest@parse \tracingmacros = 1
+\iftest@scan \else \a@verb (#1)>\fi\fi
+\last@con ={.}\last@mod = 0 \last@voc = 0 \global\@highfalse
+\global \sv@revwd ={}\global \a@revwd ={}\syl@beg #1<<<>%
+\iftest@parse \tracingmacros = 0 %
+\xpa \a@verb \xpa (\the\a@revwd )>\fi }
+
+\def \test@wdend #1#2#3{% test for end of word: k #1 #2 #3
+\case #1\of
+{ N<{\syl@wdendtrue }
+ |"{\test@wdend #2#3<}
+\default {\if\is@shortvowel #1\test@wdend #2#3<\else
+ \ifcat -\nxp #1\syl@wdendtrue \else \syl@wdendfalse
+ \fi\fi }
+}\endcase }
+
+\def \isat@wdend #1#2#3{00% at end of word?
+\test@wdend #1#2#3\ifsyl@wdend \else \xpa \setiffalse \fi }
+
+\def \is@vowel #1{% test for all vowels
+\is@in@list #1aeiouAEIOUY%
+\a@a \a@e \a@i \a@o \a@u
+\a@A \a@E \a@I \a@O \a@U
+\a@Za \a@Ze \a@Zi \a@Zo \a@Zu
+\a@ZA \a@ZE \a@ZI \a@ZO \a@ZU >}
+
+\def \is@shortvowel #1{% test for short vowels
+\is@in@list #1aeiou\a@a >}
+
+\def \syl@end #1>{% kill the rest
+\relax }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% start of word %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \syl@beg #1{% start new word
+\global\@highfalse
+\case #1\of
+{ <{\syl@end }
+ Q{\syl@hamzabeg }
+ ^{\syl@hamzabeg A}
+ B{\syl@tatwilbeg }
+ "{\syl@quote@beg }
+ |{\syl@bar }
+ Y{\syl@con Y}
+ \cap {\syl@beg }
+\default {\syl@@beg #1}
+}\endcase }
+
+\def \syl@@beg #1{% start new word
+\ifcat -\nxp #1\def \next {\syl@spec #1}\else
+\if\is@vowel #1\def \next {\syl@wasla #1}% check for wasla
+ \else \def \next {\syl@con #1}% start syllable
+\fi\fi \next }
+
+\def \syl@bar #1{% check for || as "|
+\case #1\of
+{ |{\syl@quote@beg #1}
+ B{\syl@con |B}
+\default {\put@con W\v@cfalse \@sukfalse\syl@voctest #1}
+}\endcase }
+
+\def \syl@wasla #1{% start word with vowel without hamza
+\put@con a\def \next {\syl@voc #1}% prepare for vowel
+\ifx \a@lang \a@hebr % Hebrew mode
+ \ifx #1U\put@con W\else % Hebrew: no carrier, shureq follows
+ \ifx #1A\add@fathaspec % Hebrew: qames
+\fi\fi\fi
+\ifx #1E\put@con E\put@syl \def \next {\syl@con }\else
+\ifx #1\a@ZA \add@kh@hamzl \put@syl \def \next {\syl@con }\else
+\ifx #1A\ifiz@fet \add@madda \put@syl \def \next {\syl@con }\else
+ \def \next {\syl@voctest }%
+ \fi \else
+\ifiz@fet \else % wasla only in Arabic ?
+\ifh@mza \if\is@shortvowel #1%
+ \if@wasla \add@wasla \put@syl \def \next {\syl@con }% next syllable
+ \fi\fi
+\fi\fi\fi\fi\fi \next }
+
+\def \syl@wasla #1{% start word with vowel without hamza
+\def \next {\syl@voc #1}% prepare for vowel
+\ifu@gh \put@con Y\add@hamza\else \put@con a%
+\ifx \a@lang \a@hebr % Hebrew mode
+ \ifx #1U\put@con W\else % Hebrew: no carrier, shureq follows
+ \ifx #1A\add@fathaspec % Hebrew: qames
+\fi\fi\fi
+\ifx #1E\put@con E\put@syl \def \next {\syl@con }\else
+\ifx #1\a@ZA \add@kh@hamzl \put@syl \def \next {\syl@con }\else
+\ifx #1A\ifiz@fet \add@madda \put@syl \def \next {\syl@con }\else
+ \def \next {\syl@voctest }%
+ \fi \else
+\ifiz@fet \else % wasla only in Arabic ?
+\ifh@mza \if\is@shortvowel #1%
+ \if@wasla \add@wasla \put@syl \def \next {\syl@con }% next syllable
+ \fi\fi
+\fi\fi\fi\fi\fi\fi \next }
+
+\def \syl@tatwilbeg #1{% start word with tatwIl: -- #1
+ \put@con B%
+\if\is@vowel #1\def \next {\syl@voc #1}% harakat on tatwil
+\else \put@syl \def \next {\syl@con #1}% join
+\fi \next }
+
+\def \syl@spec #1#2{% deposit special character
+\ifx #1<\let \next \syl@end
+\else \put@spec #1% deposit character
+ \ifx #1-\def \next {\syl@con #2}\else % create joining form
+ \ifx #2<\let \next \syl@end \else % isolated character
+ \def \next {\syl@beg #2}% % start new word
+ \fi\fi
+\fi \next }
+
+\def \sv@syl #1#2#3{% explicit syllable
+\put@con #1\last@mod 0#2\last@voc 0#3\@highfalse \put@syl \syl@con }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% start of syllable %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \syl@con #1{% start a new syllable
+\case #1\of
+{ <{\syl@end }% not done
+ Q{\syl@hamza } % no Hamza
+ B{\put@con B\put@syl \syl@con }
+ W{\put@con w\syl@Wspec }% no ending wA or w-
+ "{\syl@quote@con }
+ |{\syl@bar@con }
+ \cap {\syl@con }
+ \sv@syl {\sv@syl }
+\default {\syl@@con #1}
+}\endcase }
+
+\def \syl@@con #1#2{% start a new syllable
+ \def \next {\syl@voctest #2}%
+\ifx #2\cap \def \next {\syl@@con #1}\else
+\ifx #1-\ifx #2<\def \next {\syl@spec #1#2}% joining form
+ \else \def \next {\syl@beg #2}% ignore hyphen, tie
+ \fi \else
+\ifcat -\nxp #1\def \next {\syl@spec #1#2}\else % special character
+\ifx #2-\def \next {\syl@assim #1}% assimilate?
+\else \put@con #1% deposit consonant
+ \ifx #1#2\if@ssim \add@shadda
+ \def \next {\syl@shadd@voctest #2}%
+ \fi\fi
+ \ifiz@fet\ifx #1X\ifx #2w\put@syl
+ \def \next {\syl@con #2}% waw-e-ma`dul
+ \fi\fi\fi
+\fi\fi\fi\fi \next }
+
+\def \syl@bar@con #1{% |
+\case #1\of
+{ |{\syl@quote@con #1}
+ B{\syl@tatwil }
+\default {\put@con |\@sukfalse \syl@voctest #1}
+}\endcase }
+
+\def \syl@tatwil #1{% test for 2 tatwils
+\put@con B%
+\ifx #1B\add@shadda \def \next {\syl@voctest }%
+\else \def \next {\syl@voctest #1}%
+\fi \next }
+
+\def\syl@shadd@voctest #1#2{% hyphen after shadda ? context #1#1 #2
+\ifx #2-\def \next {\syl@hyphen #1}\else
+ \def \next {\syl@voctest #2}%
+\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% hyphen %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \syl@hyphen #1#2#3{% hyphen after consonant, #1 - #2 #3
+\ifx #2<\add@sukun \put@syl \def \next {\syl@con -#2#3}\else % k - ||
+\ifx #3<\def \next {\syl@contie #1#2#3}\else % k - x ||
+\ifx #3N\def \next {\syl@contie #1#2#3}\else % k - x N
+\ifcat -\nxp #3\def \next {\syl@contie #1#2#3}\else % k - x -
+\ifx #1l\def \next {\syl@art #2#3}\else % l - #2 #3
+\ifx #1\a@H \put@syl \put@spec W\def \next {\syl@beg #2#3}\else % H - x
+\ifiz@fet \def \next {\syl@voctest #2#3}% Persian suffix
+\else \add@sukun \put@syl \def \next {\syl@beg #2#3}% start new word
+\fi\fi\fi\fi\fi\fi\fi \next }
+
+\def \syl@art #1#2#3{% article, (a)l-#1#2#3
+ \def \next {\syl@beg #1#2#3}% ought to test for sun letter !
+\ifx #1#2% no sukun before double (sun) letter
+ \ifx #1Q\add@sukun \else
+ \ifx #2#3\def \next {\syl@beg #2#3}% special case l-ll
+ \fi \fi
+\else \add@sukun % moon letter
+\fi \put@syl \next }
+
+\def \syl@assim #1#2{% test for assimilation #1 - #2
+\ifx #2\cap \def \next {\syl@assim #1}\else
+ \put@con #1\def \next {\syl@hyphen #1#2}% #1 - #2
+\if@ssim\ifx #1#2% ought to test for sun letter !
+ \put@con l\def\next {\syl@art #1#2}% substitute l - #1 #2
+ \fi
+\fi\fi \next }
+
+\def \syl@contie #1#2#3{% connecting vowel, #1 - #2#3
+ \def \next {\syl@voctest #2#3}%
+\ifiz@fet \sv@test@izafet #1#2#3%
+\fi \next }
+
+\def \syl@voctie #1#2#3{% hyphen after vowel, #1 - #2 #3
+ \def \next {\put@syl \syl@con -#2#3}% close syllable
+\ifiz@fet\ifx #3<\sv@test@izafet #1#2#3\else
+ \ifcat -\nxp #3\sv@test@izafet #1#2#3\else
+ \ifx #1a\put@con \a@H % supply final silent H
+ \def \next {\syl@hyphen \a@H #2#3}\else
+ \ifx #1e\put@con \a@H % supply final silent H
+ \def \next {\syl@hyphen \a@H #2#3}%
+ \fi\fi\fi\fi
+\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% special cases for Persian %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \syl@hahtie #1#2#3{% connecting vowel, H - #2#3
+ \def \next {\syl@hah #2#3}%
+\case #2\of
+{ IE{}
+\default {\sv@test@izafet #1#2#3}
+}\endcase \next }
+
+\def \syl@hah{% H at the end, ha-ye hawwaz-e ma.hfi
+\put@syl \put@spec W\syl@beg }
+
+\def \sv@izafet #1#2{% #1 - i/e/_i
+\case #1\of
+{ I\a@H{\add@hamza }
+ AU{\put@syl \put@con y}
+}\endcase
+\ifx #2\a@i \add@kasraspec \else \add@kasra % long izafet ?
+\fi \put@syl \syl@con }
+
+\def \sv@wahdat #1#2{% #1 - I/E
+\case #1\of
+{ I\a@H{\put@syl \put@spec W\put@con a}
+ AU{\put@syl \put@con Y\add@hamza }
+}\endcase
+\ifx #2I\add@kasra \fi
+\put@syl \put@con y\put@syl \syl@con }
+
+\def \sv@test@izafet #1#2#3{% special cases for -e, -i, -_e, -_i, -I, -E
+\case #2\of
+{ e{\def \next {\sv@izafet #1e#3}}
+i\a@i\a@E{\def \next {\sv@izafet #1i#3}}
+ y{\def \next {\sv@izafet #1e}}
+ I{\def \next {\sv@wahdat #1I#3}}
+ E{\def \next {\sv@wahdat #1E#3}}
+}\endcase }
+
+\def \syl@endvoc #1{% test for H
+ \def \next {\syl@con #1}%
+\ifiz@fet \ifx #1\a@H \put@con \a@H
+ \def \next {\syl@@endvoc }%
+\fi\fi \next }
+
+\def \syl@@endvoc #1#2{% char after H
+\case #1\of
+{ -{\syl@hahtie \a@H #2}
+ Q{\add@hamza \syl@voc }
+ <{\put@syl \syl@end #2}
+ "{\put@syl \syl@quote@beg #2}
+ |{\put@syl \syl@bar #2}
+\default {\put@syl
+ \ifcat -\nxp #1\def \next {\syl@spec #1#2}\else
+ \def \next {\syl@beg #1#2}% start a new word
+ \fi \next }
+}\endcase }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% quoting %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \syl@quote@beg #1#2{% start word with quote: " #1 #2
+\case #1\of
+{ '{\put@con Q\syl@voctest #2}
+ Q{\put@con Q\syl@voctest }
+ |{\put@spec W\syl@beg #2}% start new word
+\default {\syl@@quote@beg #1#2}
+}\endcase }
+
+\def \syl@@quote@beg #1{% start word with quote: " #1 #2
+\if\is@vowel #1\def \next {\syl@wasla #1}% " v k: alif vowel
+% \if@wasla \v@ctrue \else \add@wasla \togglev@c \fi
+ \if@wasla \v@ctrue \@waslafalse \else \@waslatrue \togglev@c \fi
+\else \put@con a\togglev@c \add@wasla \put@syl % alif implied
+ \ifx #1"\def \next {\syl@con }% " " k: alif wasla
+ \else \def \next {\syl@con #1}% " k: alif wasla
+ \fi
+\fi \next }
+
+\def \syl@quote@con #1#2{% start syllable with quote: " #1 #2
+\case #1\of
+{ '{\put@con Q\syl@voctest #2}
+ Q{\put@con Q\syl@voctest }
+ |{\put@con W\syl@voctest #2}
+\default {\togglev@c \syl@con #2}
+}\endcase }
+
+% original version of logic:
+\def \syl@quote@voc #1#2{% continue syllable with quote: " #1 #2
+\case #1\of
+{ B{\togglev@c \add@sukun \put@syl \syl@con #1#2}
+ "{\togglev@c \add@sukun \put@syl \syl@beg #2}
+ |{\syl@@quote@voc #2}
+ '{\add@hamza \syl@voctest #2}
+ Q{\add@hamza \syl@voctest }
+\default {\togglev@c \syl@voctest #1#2}% vowel: sukun
+}\endcase }
+
+% patches for Arnoud Vrolijk:
+% make "' sukun hamza instead of hamza modifier
+\def \syl@quote@voc #1{% continue syllable with quote: " #1 #2
+\case #1\of
+{ B{\togglev@c \add@sukun \put@syl \syl@con #1}
+ "{\togglev@c \add@sukun \put@syl \syl@beg }
+ |{\syl@@quote@voc }
+\default {\togglev@c \syl@voctest #1}% vowel: sukun
+}\endcase }
+
+\def \syl@@quote@voc #1{% continue syllable with quote: "| #1 #2
+ \put@syl \put@spec W%
+\if\is@vowel #1\def \next {\syl@wasla #1}% vowel: wasla
+\else \def \next {\syl@con #1}% consonant
+\fi \next }
+
+\def \togglev@c {% toggle diacritic
+\ifv@c \v@cfalse \else \v@ctrue \fi % toggle vowel indicator
+\if@suk \@sukfalse \else \@suktrue \fi % toggle sukun, wasla
+}
+
+\def \voc@suk {% normalize vowels and sukun
+\let \ifv@c \if@vocals \let \if@suk \if@sukun }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% vowel or end of syllable %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \syl@@test@voc #1{% vowel or sukun ? variant in Hebrew!
+\if\is@vowel #1\def \next {\syl@voc #1}% test for vowel
+\else \def \next {\syl@con #1}%
+ \ifurd@ \ifx #1h\else \add@sukun \fi
+ \else \add@sukun
+ \fi \put@syl
+\fi \next }
+
+\def \syl@voctest #1{% continue open syllable: K #1
+\case #1\of
+{ "{\syl@quote@voc }
+ ^{\m@ddatrue \syl@voctest }
+ |{\syl@bar@voc }
+ B{\syl@tatwil@voc }
+ \cap {\syl@voctest }
+\default {\syl@test@voc #1}
+}\endcase }
+
+\def \syl@bar@voc #1{% K | #1
+\ifx #1|\def \next {\syl@quote@voc |}\else
+\ifx #1"\def \next {\syl@test@quote }\else
+\if\is@vowel #1\def \next {\syl@test@voc #1|}\else
+ \def \next {\syl@test@voc |#1}% no bar
+\fi\fi\fi \next }
+
+\def \syl@tatwil@voc #1{% K B #1
+\if\is@vowel #1\def \next {\syl@test@voc #1B}\else
+ \def \next {\syl@test@voc B#1}% no vowel
+\fi \next }
+
+\def \syl@test@quote #1{% K |" #1
+\if\is@vowel #1\def \next {\syl@quote@voc #1|}\else
+ \put@syl \put@con |\def \next {\syl@quote@voc "#1}%
+\fi \next }
+
+\iffalse % deleted for efficiency; for documentation only !
+% and also for compatibility with the Hebrew mode !!
+\def \syl@voc #1{% test for vowel
+\case #1\of
+{ <{\syl@end }% this cannot happen! or can it?
+ -{\syl@voc }% ignore hyphen here
+ a \a@A{\sv@@a }% short a, Turkish "a
+ e {\sv@@e }% short e
+ i \a@I{\sv@@i }% short i, Turkish "i
+ o {\sv@@o }% short o
+ u \a@U{\sv@@u }% short u, Turkish "u
+ A {\sv@@A }% long a
+ E {\sv@@E }% long e
+ I {\sv@@I }% long i
+ O {\sv@@O }% long o
+ U \a@o{\sv@@U }% long u, special short u
+ Y {\sv@Ytest }% alif maqsura or tooth
+ \a@a {\sv@a@a }% Qur'an alif
+ \a@e {\sv@a@e }% frei
+ \a@i {\sv@a@i }% defective long i
+ \a@u {\sv@a@u }% defective long u
+ \a@E {\sv@a@E }% kurdish ^e
+ \a@O {\sv@a@O }% Kurdish and Turkish "o
+ \a@Za {\sv@Za }% Kashmiri .A
+ \a@Ze {\sv@Ze }% Kashmiri .a
+ \a@Zi {\sv@Zi }% Sindhi -IN
+ \a@Zo {\sv@Zo }% Kashmiri u'
+ \a@Zu {\sv@Zu }% Kashmiri U'
+\default {\csname sv@\string #1\endcsname}% switch on vowel
+}\endcase }
+\fi
+
+\def \syl@voc #1{% test for vowel, also for Hebrew mode
+\case #1\of
+{ <{\syl@end }% this cannot happen! or can it?
+ -{\syl@voc }% ignore hyphen here
+\default {\csname sv@\string #1\endcsname}% switch on vowel
+}\endcase }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% auxiliary vowel routines
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \test@B #1#2{% tatweel or ligature break
+\case #1\of
+{ |B{\put@con #1\put@syl #2}
+\default {#2#1}% deposit vowel carrier
+}\endcase }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% short vowels %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@@a #1{% short a
+\ifk@rd \put@syl \def \next {\test@B #1\sv@a@Hvwl }\else
+\def \next {\sv@aInt #1}\fi \next }
+
+\def \sv@@a #1{% short a
+\ifu@gh \put@syl \put@con a\put@syl \def \next {\syl@con #1}\else
+\ifk@rd \put@syl \def \next {\test@B #1\sv@a@Hvwl }\else
+ \def \next {\sv@aInt #1}%
+\fi\fi \next }
+
+\def \sv@a@Hvwl {% kurdish aH carrier
+\put@con \a@H \put@syl \syl@endvoc }
+
+\def \sv@aInt #1{% short a
+\ifx #1N\def \next {\syl@Nspec }% tanwin alif
+\else \add@fatha \put@syl \def \next {\sv@@aInt #1}%
+\fi \next }
+
+\def \sv@@aInt #1{% short a
+\case #1\of
+{ e{\ifurd@ \put@con E\else \put@con Y\add@hamza
+ \fi \put@syl \syl@con }\else
+ ou{\put@con w\put@syl \syl@con }\else
+ i{\put@con y\put@syl \syl@con }\else
+\default {\syl@endvoc #1}% test for H
+}\endcase }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@@e {% short e
+\ifk@rd \xpa \sv@a \else
+\ift@rk \xxpa \sv@a \else \xxpa \sv@eInt \fi\fi }
+
+\def \sv@@e {% short e
+\ifk@rd \def \next {\sv@a }\else
+\ift@rk \def \next {\sv@a }\else
+\ifu@gh \put@syl \put@con \a@Y \put@syl \def \next {\syl@con }\else
+\def \next {\sv@eInt }\fi\fi\fi \next }
+
+\def \sv@eInt #1{% zwarakay in Pashto, otherwise short a
+\ifk@sh \put@syl \put@con \a@E \put@syl \def \next {\syl@con #1}%
+\else \def \next {\syl@endvoc #1}% test for H
+ \ifp@sht \add@zwarakay \put@syl
+ \ifx #1e\def \next {\syl@con }\put@con Y\add@hamza \put@syl
+ \fi
+ \else \add@kasra \put@syl
+ \ifiz@fet % provisions for the preposition be-
+ \if\is@vowel #1\def \next {\syl@beg #1}%
+ \fi\fi
+ \fi
+\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@@i #1{% short i
+\case #1\of
+{ y{\sv@@I }% iy -> I
+ N{\add@kasratan \put@syl \syl@ignore }% tanwin yah
+ -{\add@kasra \syl@voctie i}
+\default {\add@kasra \put@syl \syl@con #1}% next syllable
+}\endcase }
+
+\def \sv@@i {% short i
+\ifu@gh \put@syl \put@con Y\put@syl \xpa \syl@con
+\else \xpa \sv@@iInt \fi }
+
+\def \sv@@iInt #1{% short i
+\case #1\of
+{ y{\sv@@I }% iy -> I
+ N{\add@kasratan \put@syl \syl@ignore }% tanwin yah
+ -{\add@kasra \syl@voctie i}
+\default {\add@kasra \put@syl \syl@con #1}% next syllable
+}\endcase }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@@o #1{% ammad in Pashto, otherwise short u
+\ifk@sh \put@syl \put@con \a@W \put@syl
+ \def \next {\syl@con #1}\else
+\ifk@rd \put@syl \def \next {\test@B #1\sv@a@Wvwl }\else
+ \def \next {\sv@oInt #1}%
+\fi\fi \next }
+
+\def \sv@@o #1{% ammad in Pashto, otherwise short u
+\ifk@sh \put@syl \put@con \a@W \put@syl
+ \def \next {\syl@con #1}\else
+\ifu@gh \put@syl \put@con w\put@syl
+ \def \next {\syl@con #1}\else
+\ifk@rd \put@syl \def \next {\test@B #1\sv@a@Wvwl }\else
+ \def \next {\sv@oInt #1}%
+\fi\fi\fi \next }
+
+\def \sv@a@Wvwl {% kurdish O carrier
+\put@con \a@W \put@syl \syl@con }
+
+\def \sv@oInt #1{% ammad in Pashto, otherwise short u
+\ifp@sht \add@ammad \else \add@damma
+\fi \put@syl
+\ifx #1i\put@con y\put@syl \def \next {\syl@con }\else
+ \def \next {\syl@endvoc #1}% test for H
+\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@@u {% short u
+\ifk@rd \put@syl \xpa \sv@ukurd \else \xpa \sv@uInt \fi }
+
+\def \sv@@u {% short u
+\ifk@rd \put@syl \def \next {\sv@ukurd }\else
+\ifu@gh \put@syl \put@con \a@w \put@syl \def \next {\syl@con }\else
+\def \next {\sv@uInt }\fi\fi \next }
+
+\def \sv@ukurd #1{% short u, for Kurdish
+\ifx #1Q\def \next {\syl@hamza }\else
+\def \next {\test@B #1\sv@wvwl }\fi \next }
+
+\def \sv@wvwl {% w carrier
+\put@con w\put@syl \syl@con }
+
+\def \sv@uInt #1{% short u, otherwise
+\case #1\of
+{ w{\sv@UInt }% uw -> U
+ N{\add@dammatan \put@syl \syl@ignore }% tanwin waw
+\default {\add@damma \put@syl \syl@con #1}% next syllable
+}\endcase }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% long vowels %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@@A #1{% long A
+\ifk@rd \else \add@fatha \fi
+\put@syl \test@B #1\sv@Avwl }
+
+\def \sv@Avwl #1{% long A vowel
+ \put@con a% may also serve as consonant, carry vowels
+ \ifm@dda \add@madda \m@ddafalse \fi
+\ifx #1-\def \next {\syl@voctie A}\else
+ \def \next {\syl@voctest #1}\@sukfalse % next syllable
+\fi \next }
+
+\def \sv@Aa #1{% long a + a ? whence ??
+\case #1\of
+{ |B{\put@con #1\put@syl \put@con a%
+ \ifm@dda \add@madda \m@ddafalse
+ \fi \put@syl \syl@con }
+ -{\ifm@dda \add@madda \m@ddafalse
+ \fi \syl@voctie A}
+ a{\ifm@dda \add@madda \m@ddafalse
+ \fi \sv@AaN }
+ "{\ifm@dda \add@madda \m@ddafalse
+ \fi \v@ctrue \@suktrue \sv@Aa }
+\default {\ifm@dda \add@madda \m@ddafalse
+ \fi \put@syl \syl@con #1}% next syllable
+}\endcase }
+
+\def \sv@AaN #1{% long a + aN ?
+ \def \next {\syl@con a#1}% next syllable
+\ifx #1N\def \next {\syl@aN}\else \put@syl
+\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@@E {% long e
+\ift@rk \xpa \sv@I \else \xpa \sv@EInt \fi }
+
+\def \sv@EInt #1{% long E
+\ifk@sh \put@syl \put@con E\put@syl \def \next {\syl@con #1}%
+\else \def \next {\test@B #1\sv@Evwl }%
+ \ifp@sht \add@zwarakay \else
+ \ifiz@fet \else \add@kasra
+ \fi\fi \put@syl
+\fi \next }
+
+\def \sv@Evwl #1{% long E vowel
+\ifx #1e\put@con L\def \next {\syl@con }\else % ey
+ \def \next {\syl@con #1}% next syllable
+\ifp@sht \put@con \a@Y \else
+\ifurd@ \put@con E\else
+ \put@con y%
+\fi\fi\fi \put@syl \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@@I #1{% long i
+\ifk@sh \put@syl \put@con y\add@kasraspec \put@syl
+ \def \next {\syl@con #1}\else
+ \add@kasra \put@syl \def \next {\test@B #1\sv@Ivwl }%
+\fi \next }
+
+\def \sv@Ivwl #1{% long i carrier
+ \put@con y\ifm@dda \add@madda \m@ddafalse \fi % -I becomes -iy,
+\case #1\of
+{ y{\@sukfalse \add@shadda \syl@voctest} % -Iy becomes -iyy
+ -{\syl@voctie I}
+\default {\@sukfalse \syl@voctest #1}% next syllable
+}\endcase }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@@O #1{% long o
+\ifp@sht \add@ammad \else
+\ifiz@fet \else \add@damma
+\fi\fi \put@syl \test@B #1\sv@Ovwl }
+
+\def \sv@Ovwl {% long o carrier
+\put@con w\put@syl \syl@con }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@@U #1{% long u
+\ifk@sh \put@syl \put@con w\add@ammad \put@syl
+ \def \next {\syl@con #1}\else
+\ifk@rd \put@syl \def \next {\test@B #1\sv@wwvwl }\else
+ \def \next {\sv@UInt #1}%
+\fi\fi \next }
+
+\def \sv@wwvwl {% kurdish double w carrier
+\put@con w\put@syl \put@con w\put@syl \syl@con }
+
+\def \sv@UInt #1{% long u
+\add@damma \put@syl \test@B #1\sv@Uvwl }
+
+\def \sv@Uvwl #1{% long u carrier
+ \put@con w\ifm@dda \add@madda \m@ddafalse \fi % -U becomes -uw
+\case #1\of
+{ w{\@sukfalse\add@shadda \syl@voctest} % -Uw becomes -uww
+ -{\syl@voctie U} % not -U-
+ A{\put@syl \put@con a\put@syl \syl@con } % not -UA
+\default {\sv@@Uvwl #1}
+}\endcase }
+
+\def \sv@@Uvwl #1{% long u carrier
+\ifiz@fet\ifx #1Q\def \next {\sv@UQ}\else % not -U'
+ \def \next {\syl@voctest #1}\@sukfalse % next syllable
+ \fi
+\else \def \next {\syl@voctest #1}\@sukfalse % next syllable
+\fi \next }
+
+\def \sv@UQ #1#2#3#4{% UQU#2#3#4, U' in Farsi
+\if\isat@wdend #2#3#4\add@hamza % final hamza on waw ?
+ \ifx #2-\def \next {\syl@hyphen Q#3#4}% ezafe ?
+ \else \def \next {\syl@voctest #2#3#4}% vowel ?
+ \fi
+\else \put@syl \def \next {\syl@hamza U#2#3#4}% next syllable
+\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@Ytest #1{% is alif maqsura vowel or consonant?
+\case #1\of
+{ "{\put@syl \syl@con Y#1}
+ < B{\sv@YInt #1}
+\default {\ifcat -\nxp #1\def \next {\sv@YInt #1}%
+ \else \put@syl \def \next {\syl@con Y#1}%
+ \fi \next }
+}\endcase }
+
+\def \sv@YInt #1{% alif maqsura is vowel
+\add@fatha \put@syl \test@B #1\sv@Yvwl }
+
+\def \sv@Yvwl {% put alif maqsura
+\put@con Y\ifqur@n \add@fathaspec \fi \put@syl \syl@con }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% special vowels %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@a@a #1{% Qur'an alif
+ \add@fathaspec \put@syl
+\case #1\of
+{ \a@H {\put@con \a@H\put@syl \syl@con }%
+ U{\put@con w\put@syl \syl@con }%
+ Y{\put@con Y\put@syl \syl@con }%
+ I{\put@con y\put@syl \syl@con }%
+\default {\syl@con #1}%
+}\endcase }
+
+\def \sv@a@e {% explicit sukun
+\add@sukun \put@syl \syl@con }
+
+\def \sv@a@i {% defective long i
+\add@kasraspec \put@syl \syl@con }
+
+\def \sv@a@u {% defective long u
+\add@ammad \put@syl \syl@con }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@a@A {% Uighuric and Turkish
+\ifu@gh \put@syl \put@con \a@H \put@syl \xpa \syl@con
+\else \xpa \sv@a \fi }
+
+\def \sv@a@E #1{% kurdish ^e
+\ifk@rd \put@syl \def \next {\test@B #1\sv@a@Evwl }\else
+\add@kasraspec \put@syl \def \next {\syl@con #1}\fi \next }
+
+\def \sv@a@Evwl {% kurdish E carrier
+\put@con \a@E \put@syl \syl@con }
+
+\def \sv@a@O #1{% Kurdish and Turkish "o
+\put@syl
+\ifk@rd \def \next {\test@B #1\sv@wa@Evwl }\else
+\def \next {\test@B #1\sv@wvwl }\fi \next }
+
+\def \sv@a@O #1{% Kurdish and Turkish "o
+\put@syl
+\ifu@gh \put@con \a@W \put@syl \def \next {\syl@con #1}\else
+\ifk@rd \def \next {\test@B #1\sv@wa@Evwl }\else
+\def \next {\test@B #1\sv@wvwl }\fi\fi \next }
+
+\def \sv@wa@Evwl {% kurdish W E carrier
+\put@con w\put@syl \put@con \a@E \put@syl \syl@con }
+
+\def \sv@a@U {% Uighuric and Turkish
+\ifu@gh \put@syl \put@con \a@aw \put@syl \xpa \syl@con
+\else \xpa \sv@u \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@Za {% Kashmiri .a
+\add@kh@hamza \put@syl \syl@con }
+
+\def \sv@Ze {% explicit shadda
+%\add@shadda \put@syl \syl@con }
+%\add@shadda \syl@voctest }
+\voc@suk \add@shadda \syl@voctest }
+
+\def \sv@Zi {% Sindhi -IN
+\add@bars \put@syl \syl@con }
+
+\def \sv@Zo {% Kashmiri .o
+\put@syl \put@con \a@aU \put@syl \syl@con }
+
+\def \sv@Zu {% Kashmiri .u
+\add@kl@hamza \put@syl \syl@con }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@ZA {% Kashmiri .A
+\put@syl \put@con A%
+\add@kh@hamzl \put@syl \syl@con }
+
+\def \sv@ZE {% explicit madda
+\add@madda \put@syl \syl@con }
+
+\def \sv@ZI {% Kashmiri .y
+\put@syl \put@con \a@as \syl@voctest }
+
+\def \sv@ZO {% Kashmiri .O
+\put@syl \put@con \a@aU \put@syl \put@con A\add@fatha \put@syl \syl@con }
+
+\def \sv@ZU {% Kashmiri .U
+\add@kl@hamzl \put@syl \syl@con }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% Nunation %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \syl@Nspec {% tanwin fatha
+\ifh@mza \ifaN@alif \def \next {\syl@aN@alif }%
+ \else \def \next {\syl@aN }%
+ \fi
+\else \add@fathatan \put@syl \def \next {\syl@ignore }%
+\fi \next }
+
+\def \syl@aN #1{% tanwin fatha on actual character, alif required ?
+ \add@fathatan \put@syl \def \next {\syl@ignore #1}%
+\ifcat -\nxp #1%
+ \xpa\if \xpa\is@in@list \the\last@con YTaB>\else
+ \put@con a\put@syl % deposit alif
+ \fi
+\fi \next }
+
+\def \syl@aN@alif #1{% tanwin fatha at the end, alif required ?
+\ifcat -\nxp #1\def \next {\syl@ignore #1}%
+ \xpa\if \xpa\is@in@list \the\last@con YTaB>\else
+ \ifv@c \put@syl \v@ctrue \else \put@syl
+ \fi \put@con a% % deposit alif
+ \fi
+\else \def \next {\syl@ignore }%
+ \ifv@c \put@syl \v@ctrue \else \put@syl
+ \fi \put@con #1% % deposit character
+\fi \add@fathatan \put@syl \next }
+
+\def \syl@Wspec #1{% final w with silent alif ?
+\case #1\of
+{ -{\syl@Wspec }% ignore hyphen
+ u{\add@damma \put@syl
+ \put@con a\put@syl \syl@con }% % ending w-u
+\default {\add@sukun \put@syl
+ \put@con a\put@syl \syl@con }% % ending w
+}\endcase }
+
+\def \syl@ignore #1{% kill the rest after Tanwin except U, A, a, y, and Y
+\case #1\of
+{ -{\syl@ignore }
+ U{\put@con w\put@syl \syl@ignore }
+ aA{\put@con a\put@syl \syl@ignore }
+ Y{\put@con Y\put@syl \syl@ignore }
+ y{\put@con y\put@syl \syl@ignore }
+\default {\let \next \syl@ignore
+ \ifcat -\nxp #1\def \next {\syl@con #1}% % tie
+ \fi \next }
+}\endcase }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% Hamza %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newif \if@ay
+
+\def \syl@@hamzabeg #1#2{% initial hamza
+\ifk@rd \ifx #2i\def \next {\syl@con }\put@con a% alif
+ \add@hamza \add@hamzalow \put@syl
+ \else \put@con Y\add@hamza \def \next {\syl@voctest #2}%
+ \fi \else
+\ifh@mza \def \next {\syl@beghamza #1#2}\else
+ \def \next {\syl@hamzaverb #1#2}% verbatim mode
+\fi\fi \next }
+
+\def \syl@@hamzabeg #1#2{% initial hamza
+\ifk@rd \ifx #2i\def \next {\syl@con }\put@con a% alif
+ \add@hamza \add@hamzalow \put@syl
+ \else \put@con Y\add@hamza \def \next {\syl@voctest #2}%
+ \fi \else
+\ifu@gh \put@con Y\add@hamza \def \next {\syl@voctest #2}\else
+\ifh@mza \def \next {\syl@beghamza #1#2}\else
+ \def \next {\syl@hamzaverb #1#2}% verbatim mode
+\fi\fi\fi \next }
+
+\def \syl@@hamza #1{% non-initial hamza, context #1'
+\ifx #1-\def \next {\syl@hamzabeg #1}\else
+\ifh@mza \def \next {\syl@arabhamza #1}\else
+ \def \next {\syl@hamzaverb #1}% verbatim mode
+\fi\fi \next }
+
+\def \syl@hamzaverb #1{% verbatim hamza, #1 = carrier
+\case #1\of
+{ |{\put@con Q}
+ A{\put@con a\add@madda \@sukfalse }
+ y{\put@con Y\add@hamza }
+ u{\put@con w\add@hamza }
+ i{\put@con a\add@hamza \add@hamzalow }
+\default {\put@con #1\add@hamza }
+}\endcase \syl@voctest }
+
+\def \syl@beghamza #1#2{% start word with hamza, context '#2
+\ifx #2"\def \next {\syl@beghamza #1}\togglev@c % toggle vowel
+\else \def \next {\syl@@beghamza #2}%
+\fi \next }
+
+\def \syl@@beghamza #1{% start word with hamza, context '#1
+\put@con a\def \next {\syl@con }% alif
+\case #1\of
+{ A{\add@madda }
+ \a@a {\add@fathaspec }
+ a\a@A{\add@hamza \add@fatha }
+i\a@i\a@I{\add@hamza \add@kasra \add@hamzalow }
+ou\a@O\a@U{\add@hamza \add@damma }
+ eE\a@E{\add@hamza \ifp@sht \add@zwarakay \else \add@kasra \fi }
+ I\a@e{\add@hamza \add@kasra \add@hamzalow \put@syl \put@con y}
+OU\a@o\a@p\a@w{\add@hamza \add@damma \put@syl \put@con w}
+\default {\add@hamza \add@sukun \def \next {\syl@con #1}}
+}\endcase
+\put@syl \next }
+
+\def \syl@arabhamza #1#2#3{% non-initial hamza, context #1'#2#3
+\case #2\of
+{ "{\togglev@c \syl@hamza #1#3} % toggle vowel
+ |{\syl@hamza #1#3} % ignore bar
+ AIUYEO{\syl@hamzamid #1#2#3#3} % arabic rules
+\default {\syl@@arabhamza #1#2#3} % test for final position
+}\endcase }
+
+\def \syl@@arabhamza #1#2#3#4{% non-initial hamza, context #1'#2#3#4
+ \def \next {\syl@hamzamid #1#2#3#3#4}%
+\if\isat@wdend #2#3#4% test for hamza as last consonant
+\ifiz@fet \else \def \next {\syl@hamzaend #1#2#3#4}%
+\fi\fi \next }
+
+\def \syl@hamzamid #1#2#3{% test for #1 a y ; obsolete?
+ \@ayfalse
+\ifx #2a\ifx #3y\@aytrue
+\fi\fi \syl@@hamzamid #1#2#3}
+
+\def \syl@@hamzamid #1#2#3{% intermediate hamza, context #1'#2#3
+ \def \next {\syl@voctest #2}%
+\ifx #1I\ifqur@n \put@con B\else \put@con Y\fi \add@hamza \else
+\if\is@in@list #1iy>\put@con Y\add@hamza \else
+\if\is@in@list #2iIE>\put@con Y\add@hamza
+ \ifqur@n \add@hamzalow \fi \else
+\if\is@in@list #1uo>\put@con w\add@hamza \else
+\if\is@in@list #2uo>\put@con w\add@hamza \else
+\if\is@in@list #2UO>%
+ \ifqur@n \put@Q #1\else \put@con w\add@hamza \fi \else
+\if\is@in@list #1AUO>\put@Q #1\else
+\if\is@in@list #2A>\put@con a\add@madda
+ \put@syl \def \next {\syl@con }\else
+\if\is@in@list #2\a@a>\put@con a\add@fathaspec
+ \put@syl \def \next {\syl@con }\else
+\ifx #1a\put@con a\add@hamza \else
+\ifx #2a\ifqur@n \put@Q #1\else \put@con a\add@hamza \fi \else
+ \put@Q #1% deposit Hamza
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\ifx #2Q\def \next {\syl@doublehamza }%
+\fi \next }
+
+\def \syl@hamzaend #1{% final hamza, context #1'
+\case #1\of
+{ i{\put@con Y\add@hamza \syl@voctest }
+ u{\put@con w\add@hamza \syl@voctest }
+ a{\put@con a\add@hamza \syl@voctest }
+\default {\syl@@hamzaend #1}
+}\endcase }
+
+\def \syl@@hamzaend #1#2#3{% final hamza, context #1'#2#3
+\put@con Q\def \next {\syl@voctest #2#3}% deposit Hamza
+\ifx #2a\ifx #3N\def \next {\syl@hamza@Nspec #1}%
+\fi\fi \next }
+
+\def \syl@hamza@Nspec #1#2{% #1'aN , put alif ?
+\ifx #1A\else
+\ifx #1U\else
+\if\is@end@char #1\else
+ \ifqur@n \put@con B\else \put@con Y\fi \add@hamza
+\fi\fi\fi
+ \add@fathatan \put@syl
+\ifx #1A\else
+ \ifx #2Y\put@con Y% put alif maqsoura
+ \else \put@con a% put alif
+ \fi
+ \put@syl
+\fi \syl@ignore #2}
+
+\def \syl@doublehamza #1{% double Hamza
+\add@shadda \syl@voctest }
+
+\def \put@Q #1{% deposit isolated hamza after #1
+\ifqur@n \if\is@end@char #1\put@con Q\else \put@con B\add@hamza \fi
+\else\put@con Q%
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% deposit characters %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \check@@high #1{% % long form for tooth ?
+\if\is@in@list #1YntCbyp>% % YntCbyp : toggle
+ \if@high \global\@highfalse \else \global\@hightrue
+ \fi \else
+\if\is@in@list #1sxSD>\global\@hightrue \else % sxSD : force high
+ \global\@highfalse % otherwise : force low
+\fi\fi }
+
+\def \put@con #1{% start syllable
+\last@con ={#1}}
+
+\def \put@syl {% deposit syllable
+\if@high \advance \last@mod \c@high \fi
+\xpa \check@high \the\last@con
+\let \ifv@c \if@vocals \let \if@suk \if@sukun
+\def \rev@wd {\the\last@con \the\last@mod +\the\last@voc *}\put@rev@wd
+\global \@waslatrue }
+
+\def \put@spec #1{% deposit special character
+\last@con={#1}\def \rev@wd {#10+0*}\put@rev@wd
+\global \@waslafalse }
+
+\def \put@rev@wd {% deposit output item % no group!
+\edef \temp {\global \nxp\a@revwd {\rev@wd \the\a@revwd }% % \temp
+\global \nxp\sv@revwd {\the\sv@revwd \rev@wd }}\temp
+\last@mod = 0 \last@voc = 0 }
+
+%%%%%%%%%%%%%%%%%%%%%% deposit .harakAt %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \add@shadda {\advance \last@mod \c@shadda }
+\def \add@hamza {\advance \last@mod \c@hamza }
+\def \add@hamzalow {\advance \last@mod \c@hamzalow }
+\def \add@madda {\advance \last@mod \c@madda }
+
+\def \add@wasla {\if@suk \last@voc \c@wasla \fi }
+\def \add@sukun {\if@suk \last@voc \c@sukun \fi }
+\def \add@fatha {\ifv@c \last@voc \c@fatha \fi }
+\def \add@kasra {\ifv@c \last@voc \c@kasra \fi }
+\def \add@damma {\ifv@c \last@voc \c@damma \fi }
+\def \add@zwarakay {\ifv@c \last@voc \c@zwarakay \fi }
+\def \add@fathatan {\ifv@c \last@voc \c@fathatan \fi }
+\def \add@kasratan {\ifv@c \last@voc \c@kasratan \fi }
+\def \add@dammatan {\ifv@c \last@voc \c@dammatan \fi }
+\def \add@fathaspec {\ifv@c \last@voc \c@fathaspec \fi }
+\def \add@kasraspec {\ifv@c \last@voc \c@kasraspec \fi }
+\def \add@ammad {\ifv@c \last@voc \c@ammad \fi }
+\def \add@bars {\ifv@c \last@voc \c@bars \fi }
+\def \add@kh@hamza {\ifv@c \last@voc \c@kh@hamza \fi }
+\def \add@kl@hamza {\ifv@c \last@voc \c@kl@hamza \fi }
+\def \add@kh@hamzl {\ifv@c \last@voc \c@kh@hamzl \fi }
+\def \add@kl@hamzl {\ifv@c \last@voc \c@kl@hamzl \fi }
+
+%%%%%%%%%%%%%%%%%%%%% output code constants %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \c@shadda = 1 \chardef \c@hamza = 2
+\chardef \c@hamzalow = 3 \chardef \c@madda = 4
+\chardef \c@high = 10
+
+\chardef \c@sukun = 1 \chardef \c@fatha = 2
+\chardef \c@kasra = 3 \chardef \c@damma = 4
+\chardef \c@fathatan = 5 \chardef \c@kasratan = 6
+\chardef \c@dammatan = 7 \chardef \c@zwarakay = 8
+\chardef \c@wasla = 9 \chardef \c@fathaspec = 10
+\chardef \c@kasraspec = 11 \chardef \c@ammad = 12
+\chardef \c@kas@fath = 13 \chardef \c@bars = 14
+\chardef \c@kh@hamza = 15 \chardef \c@kl@hamza = 16
+\chardef \c@kh@hamzl = 17 \chardef \c@kl@hamzl = 18
+
+%%%%%%%%%%%%%%%%%%%%%%%% end of routines %%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/apatch.sty b/language/arabic/arabtex/texinput/apatch.sty
new file mode 100644
index 0000000000..9fdcfe2c10
--- /dev/null
+++ b/language/arabic/arabtex/texinput/apatch.sty
@@ -0,0 +1,2397 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% apatch.sty
+% last minute corrections
+% see \a@pdatum and \a@level at the end of the file
+% template: 22.08.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% this is just another *.sty file
+% you do not have to do any manual patching
+% just put this file onto the TEXINPUT path
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \patchatcode = \catcode`\@ \catcode`\@ = 11
+\chardef \patchdqcode = \catcode`\" \catcode`\" = 12
+
+\def \a@version {3.11} % compare to arabtex::theversion
+
+\ifx \a@version \theversion \else \edef \next {\errmessage
+{This patch file only works with ArabTeX version \a@version }}
+\next \def \a@patchlevel {-undefined-}
+\xpa \endinput
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% presently no patches
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% two passes with LaTeX; see: alatex.sty
+
+%\iffalse % no patches yet; otherwise: delete !
+\ifx \LaTeX \undefined \else
+\ifx \a@patchlevel \undefined % first patching run
+\let \a@@@document \a@document
+\a@extend \document {\setnone \input {apatch.sty}}
+\else % second pass after loading all modules
+\let \a@document \a@@@document
+\fi\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% patch patterns:
+
+\ifx \a@patchlevel \undefined % load only the first time
+% patches on first pass
+\else
+% patches on second pass
+\fi
+
+\ifx \a@hebr \undefined \else
+%\a@message {Hebrew mode patches}
+\fi
+
+\ifx \LaTeX \undefined \else
+%\a@message {LaTeX mode patches}
+\fi
+%\fi % no patches yet; otherwise: delete !
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {22.08.2003} \def \a@level {-}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aligs.sty
+
+\def \hah@end #1#2*#3#4+#5*#6{% hah, test for ligature
+% c1 m1 * c2 m21 + m22 * c3
+\ifu@gh \ifx #1\a@H
+ \else \set@act \sk@h@u
+ \fi
+\else
+\ifurd@ \ifm@lay
+ \else \set@act \sk@h@s \hah@urd #3% round h?
+ \fi
+ \ifx #1T\else
+ \ifx #3l\test@allah #4#6\else
+ \ifx #1\a@H
+ \else \set@act\sk@h@u
+ \if\is@end@char #3%
+ \else \set@loww@act \global\a@min 1
+ \fi
+ \fi\fi\fi
+\else
+\ifx #3l\test@allah #4#6\else
+\ifnum \chr@cls = 1 \set@chr\sk@b \put@tatwil % 1 YntCbyp
+\else
+\ifnum \chr@cls = 3 \put@tatwil % 3 GHX
+\else \gim@test #6\put@tatwil
+\fi\fi\fi\fi\fi }
+
+\def \test@allah #1#2{% special ligature
+\ifx #2l\ifnum #1 = \c@shadda \set@chr\sk@l@w
+ % special short form of lam for the Name of God
+\fi\fi \put@tatwil }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabtex.sty
+
+\def \setarabfont #1{% define font switching
+ \def \the@arabfont {\tr@ceoff #1\tr@ceon }}
+
+\def \arab@output {\ifx \a@lang \a@arab \else
+\tr@ceoff % switch to Arabic output conventions
+\def@arabchars % define character macros for Arabic
+\def@arabaccent % define accent macros for Arabic
+\def@arabvoc % define vowel parsing routines for Arabic
+\def@arabstrut % define strut for Arabic
+\tr@zdmg % define standard transliteration
+\global\let \a@write \a@@write \global\let \a@write@hook \relax
+\def \set@arabfont {\the@arabfont }%
+\tr@ceon \let \a@lang \a@arab \fi }
+
+%\setnash
+
+\ifx \a@hebr \undefined \else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hebtex.sty
+
+\def \heb@output {\ifx \a@lang \a@hebr \else
+\tr@ceoff % switch to Hebrew output conventions
+\def@hebchars % define character macros for Hebrew
+\def@hebvoc % define vowel parsing routines for Hebrew
+\def@hebstrut % define strut for Hebrew
+\global\let \a@write \heb@write \global\let \a@write@hook \relax
+%\def \set@arabfont {\the@hebfont }%
+%\def \set@arabfont {\pheb }%
+\def \set@arabfont {\hebfont }%
+\tr@heb \tr@ceon \global\let \a@lang \a@hebr \fi }
+
+\def \sethebfont #1{% define font switching
+ \def \hebfont {\tr@ceoff #1\tr@ceon }}
+
+\pdef \sethebrew {% switch to hebrew writing
+\all@false \@ssimtrue \yahd@tstrue \heb@output }
+
+\let \setheb \sethebrew
+
+\ifx \LaTeX \undefined \else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hefonts2.sty
+
+\def \fdef #1#2#3#4{% define NFSS2 font command
+\pdef #1{\def \pheb {\fontencoding {U}\fontfamily {#2}%
+\fontseries {#3}\fontshape {#4}\selectfont }%
+\sethebfont \pheb }%
+\all@wcmd #1}
+
+\hdef \hc {m}{n}
+\hdef \hp {bx}{n}
+\hdef \Jm {m}{Jm}
+\hdef \jm {m}{jm}
+\hdef \ds {m}{ds}
+\hdef \oj {m}{oj}
+\hdef \ta {m}{ta}
+\hdef \shlmold {m}{so}
+\hdef \shlmscr {m}{sr}
+\hdef \shlmstk {m}{sk}
+\hdef \fr {m}{fr}
+\hdef \frbx {bx}{fr}
+\hdef \frsl {sl}{fr}
+\hdef \crml {m}{crml}
+\hdef \crmlsl {sl}{crml}
+
+\sethebfont \hc
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fi % LaTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fi % Hebrew
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {27.08.2003} \def \a@level {a}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \a@hebr \undefined \else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \LaTeX \undefined
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hebtex.tex
+
+\def\smash{\relax % \relax, in case this comes first in \halign
+\ifmmode \xpa\mathpalette \xpa\mathsm@sh \else \xpa\makesm@sh
+\fi }
+
+\def \jm {\sethebfont {\jerusalem}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fi % Plain
+
+\hc % default Hebrew font
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fi % Hebrew
+
+\ifx \a@patchlevel \undefined % load only the first time
+\ifx \LaTeX \undefined \else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% alatex.tex
+
+\UsePackage {alists} % load LaTeX extensions for Arabic lists
+\UsePackage {asect} % load LaTeX extensions for Arabic sections
+\UsePackage {atabg} % load LaTeX extensions for Arabic tabbing
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fi % LaTeX
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {08.09.2003} \def \a@level {b}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifx \a@hebr \undefined \else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% heparse.sty
+
+\def \add@@shewa {% put shewa on final kaf
+\xpa\case \the\last@con \of
+%{ k R {\add@shewa }}
+{ k {\add@shewa }}
+\endcase }
+
+\let \sv@qameslongum \sv@qamesaleph
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hebtex.sty
+
+\pdef \setjudarab {% switch to hebrew writing
+\all@false \@ssimtrue \yahd@tstrue \jud@output }
+
+\all@wcmd \setjudarab
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \jud@output {\ifx \a@lang \a@juda \else
+\heb@output \tr@ceoff % switch to Hebrew output conventions
+\def@judchars % define character macros for Judeo-Arabic
+\tr@zdmg % standard transliteration
+\tr@ceon \global\let \a@lang \a@juda \fi }
+
+\def \a@juda {JUDARAB}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hebchrs.sty
+
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\gdef \def@judchars {% define character macros for Judeo-Arabic
+\gdef \tc@f {\act@cd\hc@f \@finaltrue } % f
+\gdef \tc@C {\act@cd\hc@t \act@mod \j@d@t } % _t
+\gdef \tc@D {\act@cd\hc@ss \act@mod \j@d@t \@finaltrue } % .d
+\gdef \tc@F {\act@cd\hc@d \act@mod \j@d@t } % _d
+\gdef \tc@G {\act@cd\hc@j \act@mod \j@d@t } % ^g
+\gdef \tc@R {\act@cd\hc@j \act@mod \j@@@d@t } % .g
+\gdef \tc@T {\act@cd\hc@h \act@mod \j@@d@t } % T
+\gdef \tc@X {\act@cd\hc@k \act@mod \j@d@t \@finaltrue } % _h
+\gdef \tc@Z {\act@cd\hc@tt \act@mod \j@d@t } % .z
+}}% end of dynamic definitions
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fi %\a@hebr
+
+\ifx \setjudarab \undefined \else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hewrite.sty
+
+\chardef \j@d@t 5 \chardef \j@@d@t 6 \chardef \j@@@d@t 7
+
+\def \h@putmod #1{% deposit modifier
+\ifcase #1\relax
+\or \h@sindot \or \h@shindot \or \h@rdot \or \h@raphe
+\or \j@dot \or \j@@dot \or \j@@@dot \fi }
+
+\def \the@dots {\the@dot \kern2\h@p \the@dot }
+
+\def \the@gim {\raise \h@p \hbox {\the@dot }%
+\the@dot \raise \h@p \hbox {\the@dot }}
+
+\def \j@dot {\j@put@dia {.5}{1.3}{\the@dot }}
+\def \j@@dot {\j@put@dia {.5}{1.3}{\the@dots }}
+\def \j@@@dot {\j@put@dia {.5}{1.3}{\the@gim}}
+
+\def \j@put@dia #1#2#3{% put diacritic #3 at (#1,#2)
+\setbox0 \hbox to \z@ {\hss #3\hss}\dimen@ #2\a@ht
+\dimen2 \a@slant\dimen@ \advance\dimen2 #1\a@wd
+\global\setbox\ab@x \hbox
+{\rlap {\kern\dimen2 \raise\dimen@\box0 }\unhcopy\ab@x }}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fi %\setjudarab
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {17.09.2003} \def \a@level {c}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% acmd.sty
+
+\let \a@c@emph \a@c@emphasize
+
+\def \arab@em #1{% overstrike group
+\def \next@command {\test@special}%
+\ifarab \setbox0 \hbox {\a@sequence {#1}}%
+ \putwordb@x {\vbox {\hrule \kern 1pt \box0}}%
+\fi
+\ifshow {\tt \string \emphasize \ }%
+\if \bgroup \nxp \next@token \a@@verb {{#1}}\else \a@@verb {#1}%
+\fi\fi
+\iftrans \underbar {{\set@transfont \trans@text #1 \end }}%
+\fi \test@token }
+
+\def \a@c@textbf #1{\a@c@bf #1\rm }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% for LyX: spacing.sty
+
+\let \a@c@noun \test@token
+
+\def \a@spacing {\let \a@@restore@spacing \restore@spacing
+\let \restore@spacing \a@restore@spacing }
+
+\def \a@restore@spacing {\a@par \a@@restore@spacing }
+
+\def \a@c@singlespace {\a@par \a@spacing
+\def \endsinglespace {\a@par \par }%
+\singlespace \test@token }
+
+\def \a@c@onehalfspace {\a@par \a@spacing \onehalfspace \test@token }
+
+\def \a@c@doublespace {\a@par \a@spacing \doublespace \test@token }
+
+\def \a@c@spacing #1{\a@par \a@spacing \spacing {#1}\test@token }
+
+\xpa\def \csname a@c@singlespace*\endcsname
+{\a@par \a@spacing
+\xpa\let \xpa\a@endsinglespace \csname endsinglespace*\endcsname
+\xpa\def \csname endsinglespace*\endcsname
+{\a@par \a@endsinglespace \vskip -\baselineskip }%
+\csname singlespace*\endcsname \test@token }
+
+\let \a@c@textsf \test@token % these are preliminary
+\let \a@c@textsf \a@c@textbf
+
+\let \a@c@textit \test@token
+\let \a@c@textit \a@c@textbf
+\let \a@c@textit \a@c@emph
+
+\let \a@c@textsl \test@token
+\let \a@c@textsl \a@c@textbf
+
+\let \a@c@texttt \test@token
+\let \a@c@texttt \a@c@textbf
+
+\let \a@c@underbar \test@token
+\let \a@c@underbar \a@c@textbf
+
+\def \a@c@underbar {% get next token
+\def \next@command {\arab@ub }%
+\futurelet \next@token \test@space }
+
+\def \arab@ub #1 {% underbar
+\def \next@command {\test@special}%
+\ifarab \setbox0 \hbox {\a@sequence {#1}}%
+ \putwordb@x {\vtop {\box0 \kern -5pt \hrule }}%
+\fi
+\ifshow {\tt \string \underbar \ }%
+\if \bgroup \nxp \next@token \a@@verb {{#1}}\else \a@@verb {#1}%
+\fi\fi
+\iftrans \underbar {{\set@transfont \trans@text #1 \end }}%
+\fi \test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% awrite.sty
+
+\def \arab@testfont {% diagnose font, look for vowels and ayin
+\edef \next {\the\font }%
+\ifx \next \a@font \else
+\ifnum \tracingarab > 0 \a@message{Arabic font \next selected.}\fi
+\global\let \a@font \next \a@testfont \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hewrite.sty
+
+\def \heb@testfont {% diagnose font, look for vowels and ayin
+\edef \next {\the\font }%
+\ifx \next \h@font \else
+\ifnum \tracingarab > 0 \a@message {Hebrew font \next selected.}\fi
+\global\let \h@font \next \h@testfont \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabrep.cls
+
+\at@arabtext {%
+ \def\a@l@section{\@dottedtocline{1}{1.0em}{1.8em}}%
+ \def\a@l@subsection{\@dottedtocline{2}{2.8em}{2.1em}}%
+ \def\a@l@subsubsectiom{\@dottedtocline{3}{4.9}{2.8em}}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabaux.sty
+
+\def \a@gextend #1#2{% global extend command definition, no pars!
+\xpa\gdef \xpa#1\xpa{#1#2}}
+
+\def \a@extend #1#2{% extend command definition, no pars!
+\xpa\def \xpa#1\xpa{#1#2}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aparse.sty
+
+\def \syl@@quote@beg #1{% start word with quote: " #1 #2
+\if\is@vowel #1\def \next {\syl@wasla #1}% " v k: alif vowel
+% \if@wasla \v@ctrue \else \add@wasla \togglev@c \fi
+ \if@wasla \v@ctrue \global\@waslafalse
+ \else \global\@waslatrue \togglev@c \fi
+\else \put@con a\togglev@c \add@wasla \put@syl % alif implied
+ \ifx #1"\def \next {\syl@con }% " " k: alif wasla
+ \else \def \next {\syl@con #1}% " k: alif wasla
+ \fi
+\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% asect.sty
+
+\def \a@dottedtocline #1#2#3#4#5{% Level, Indent, Numwidth, Text, Pageno
+% for Arabic mode
+\ifnum #1>\c@tocdepth
+\else \vskip \z@ plus.2\p@
+ \begin{arabtext}
+% \tocp@rs {#2}{#3}#4 {\le@ders \thep@geno {#5}}
+ \tocp@rs {#2}{#3}#4 \le@ders \thep@geno {#5}
+ \end{arabtext}
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aboxes.sty
+
+\def \fix@act@box {% fixup position and set tatwil
+\if@high@act \advance\a@disp -\a@dsp \@high@actfalse \fi
+%\advance\a@min@dp \a@ic \advance\a@disp \a@ic
+\global\advance\a@min@dp \a@ic \advance\a@disp \a@ic
+\if@tat \put@tat \@tatfalse \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aligs.sty
+
+\def \aw@endligs #1#2*#3#4*#5{% test for final ligatures
+% c1 m1 * c2 m2 * c3
+\ifcase \act@cls \lam@lig #3#5% % 0 l
+\or % 1 YntCbyp
+ \ifnum \act@cd = \a@yah \yah@end #1#3#5\else
+ \ifnum \act@cd = \a@yah@h \yah@end #1#3#5\else
+ \ifnum \act@cd = \a@yah@p \yah@p@end #1#3#5\else
+ \ifnum \act@cd = \a@yah@p@s \yah@p@end #1#3#5\else
+ \ifnum \act@cd = \a@nun \nun@end #1#3#5\else
+ \bah@end #1%
+ \fi\fi\fi\fi\fi
+\or \sin@lig #1#5% % 2 sxSD
+\or \gim@lig #1#3#5% % 3 GHXJ
+ \global\a@min 0
+\or \global\@highfalse \@mod@acttrue \put@tatwil % 4 cR
+\or \kaf@end #3#5% % 5 kgM
+\or \fah@end #1% % 6 fqv
+\or \ttah@lig #1#5% % 7 VZ
+\or \rah@end #1#2*#3#5% % 8 rzj \a@r \a@R
+\or % 9 \a@t \a@n
+ \ifnum \act@cd = \a@yah@p@s \yah@p@end #1#3#5\else
+ \ifnum \act@cd = \a@nun@p \nun@end #1#3#5\else
+ \bah@end #1%
+ \fi\fi
+\else \global\@highfalse \@mod@acttrue % 10 ...
+ \ifnum \act@cd = \a@hah \hah@end #1#2*#3#4*#5\else
+ \ifnum \act@cd = \a@h@s \hah@urd #3\else
+ \ifnum \act@cd = \a@mim \mim@end #2*#3#5\else
+ \put@tatwil
+ \ifnum \act@cd = \a@dal \gim@test #5\else
+ \ifnum \act@cd = \a@dal@p \gim@test #5\else
+ \fi\fi
+ \fi\fi\fi
+\fi \aw@lower #5}
+
+\def \act@gim #1{% deposit ligature
+\ifnum \act@cd = \a@khah \set@act\sk@kh@s \act@mod = 0
+\else \set@act\sk@hh@s \@mod@acttrue
+%\fi \a@min 1 }
+\fi \global\a@min 1 }
+
+\def \hah@end #1#2*#3#4+#5*#6{% hah, test for ligature
+% c1 m1 * c2 m21 + m22 * c3
+\ifu@gh \ifx #1\a@H
+ \else \set@act \sk@h@u
+ \fi
+\else
+\ifurd@ \ifm@lay
+ \else \set@act \sk@h@s \hah@urd #3% round h?
+ \fi
+ \ifx #1T\else
+% \ifx #3l\test@allah #4#6\else
+ \ifx #3l\test@allah {#4}{#6}\else
+ \ifx #1\a@H
+ \else \set@act\sk@h@u
+ \if\is@end@char #3%
+ \else \set@loww@act \global\a@min 1
+ \fi
+ \fi\fi\fi
+\else
+%\ifx #3l\test@allah #4#6\else
+\ifx #3l\test@allah {#4}{#6}\else
+\ifnum \chr@cls = 1 \set@chr\sk@b \put@tatwil % 1 YntCbyp
+\else
+\ifnum \chr@cls = 3 \put@tatwil % 3 GHX
+\else \gim@test #6\put@tatwil
+\fi\fi\fi\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aoutput.sty
+
+\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
+\endgroup \parindent \z@ \parskip \z@ plus 1pt \initlineb@x
+\advance \a@prevgraf \@ne \a@@prevgraf \prevgraf
+\advance \a@@prevgraf \@ne \prevgraf \a@@prevgraf }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {23.10.2003} \def \a@level {d}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabtex.sty
+
+\newarabfont % as a side effect an Arabic font default is defined!
+%\setnash
+
+% wg. utfcode.sty und inputenc.sty:
+
+\long\def \test@special #1{% check for special cases
+\if \bgroup \nxp \next@token % arabic group
+ \a@@putword \def \next {\arab@group {#1}}\else
+\if \relax \nxp #1% % command
+ \if\is@in@set #1\a@accent % known to scanner
+ \a@@append {#1}\def \next {\get@token }%
+ \else % general command
+ \a@@putword \def \next {\test@command #1}%
+ \fi \else
+%\if \sp@ce \nxp \next@token % RTL space
+% \a@@putword \def \next {\get@token }\else
+\ifnum `#1 > 127 % inputenc command
+ \a@@append {#1}\def \next {\get@token}\else
+\ifcat \nxp ~\nxp #1% % active character
+ \a@@putword \def \next {\test@command #1}\else
+\if \nxp <\nxp #1\unarab@codes % Roman insert
+ \a@@putword \let \next \test@insert \else
+\ifx $#1\unarab@codes % Math insert
+ \a@@putword \let \next \test@math
+\else \a@@append {#1}\def \next {\get@token}% % normal case
+\fi\fi\fi\fi\fi\fi \next }
+
+{\catcode `\< = \@other % better make sure
+\gdef \a@ins {% arabic insertion or 'less'
+\ifmmode \global\let \a@less <
+%\else \global\let \a@less \arab@insert \leavevmode
+\else \global\let \a@less \a@@insert \leavevmode
+ \bgroup \arab@codes \set@arabfont \global\@waslafalse \@wasfalse
+\fi \a@less }
+} % catcode <
+
+\def \a@@insert #1{% check for < >
+\ifx #1>\egroup \unskip \else \xpa \arab@insert \xpa #1\fi}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% ascan.sty
+
+{\arab@codes % because of special characters
+
+\gdef \t@b@g #1{% start \ArabTeX scanner
+ \def \next {\sc@word {#1}}\def \sc@char {@}%
+\ifcat a\nxp #1\else % letter
+\apply \set@next \tocase #1\of
+{ \@{\sc@endscan } % finished
+ '{\t@rquote }
+ `{\t@lquote }
+ *{\t@star }
+\default {\sc@word {#1}}
+}\endcase
+\fi \next }
+
+\gdef \t@w@rd #1{% transform input into internal notation
+ \def \next {\sc@word }%
+\ifx #1\@\def \next {\sc@endscan }\else % finished
+\ifcat \nxp #1a%
+ \ifx #1a\def \next {\t@aa }\else % test for aa -> A
+ \ifx #1n\def \next {\t@nn }\else % test for ng, ny
+ \edef \sc@char {\csname sc@#1\endcsname }% letter
+ \ifx \sc@char \relax \def \sc@char {#1}% undef letter
+ \fi
+ \ifs@nd \edef \next {\nxp \t@asp {\sc@char }}\else \sc@put
+ \fi
+ \fi\fi \else % other character
+\ifcat \nxp #1\relax \def \next {\t@cs #1}\else % control sequence
+\ifx #1'\def \next {\t@hamza }\else % hamza
+ \def \sc@char {#1}%
+\apply \set@next \tocase #1\of
+{~\@ldtie{\t@tie }
+ .{\t@dot }
+ ,{\t@comma }
+ -{\t@minus }
+ `{\t@ain }
+ "{\t@dquote }
+ :={\t@colon }
+ ^{\t@up }
+ _{\t@down }
+ |{\t@bar }
+ *{\t@shadda }
+\default {\t@w@@rd {#1}}
+}\endcase
+\fi\fi\fi\fi \next }
+
+} % \arab@codes
+
+\def \t@star {\sc@dep *}
+
+\let \sc@beg \t@b@g % apatch only
+\let \sc@word \t@w@rd % apatch only
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aligs.sty
+
+\def \test@allah #1#2{% special ligature
+\ifx #2l%
+%\ifnum #1 = \c@shadda
+\set@chr\sk@l@w
+ % special short form of lam for the Name of God
+%\fi
+\fi \put@tatwil }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aparse.sty
+
+\def \set@shadda {\advance \last@mod \c@shadda }
+
+\def \add@shadda {\ifcase \last@mod % set bit 1
+\set@shadda \or\or \set@shadda \or\or \set@shadda \or\or \set@shadda
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\ifx \a@hebr \undefined \else
+\iffalse
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hebtex.sty
+
+\def \heb@output {\ifx \a@lang \a@hebr \else
+\tr@ceoff % switch to Hebrew output conventions
+\def@hebchars % define character macros for Hebrew
+\def@hebvoc % define vowel parsing routines for Hebrew
+\def@hebstrut % define strut for Hebrew
+\global\let \a@write \heb@write \global\let \a@write@hook \relax
+\def \set@arabfont {\the@hebfont }%
+\tr@heb \tr@ceon \global\let \a@lang \a@hebr \fi }
+
+\def \sethebfont #1{% define font switching
+ \def \the@hebfont {\tr@ceoff #1\tr@ceon }}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hefonts2.sty % apatch.sty only!
+
+\hdef \hc {m}{n}
+\sethebfont \hc
+
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% abidir.sty
+
+\def \a@Rtobox #1{% pack the insertion into \Rinsertb@x
+\setbox \Rinsertb@x \vbox {\a@hsize \a@Lwidth
+\advance \a@hsize -\leftskip \advance \a@hsize -\rightskip
+\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 }}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifx \a@hebr \undefined \else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hewrite.sty
+
+\gdef \h@putvowel #1{% vowel mark
+\ifx #1\relax \relax \else \def \hadj {0}\def \vadj {0}%
+\ifnum \act@cd = \hc@P \let\vadj \v@adj \put@b@x{\hc@Pv }\else % vowel-ayin
+%\ifnum \act@cd = \hc@kf \def \hadj {-.1}\def \vadj {.85}\else % final kaph
+\ifnum \act@cd = \hc@kf \def \hadj {-.1}\def \vadj {.75}\else % final kaph
+\ifnum \act@cd = \hc@r \def \hadj {.35}\else % resh
+\ifnum \act@cd = \hc@d \def \hadj {.2}\else % daleth
+\ifnum \act@cd = \hc@q \def \hadj {.1}\else % qoph
+\ifnum \act@cd = \hc@y \def \hadj {.1}\else % yod
+\ifnum \act@cd = \hc@w \def \hadj {.15}\else % waw
+\ifnum \act@cd = \hc@si \def \hadj {-.1}\else % sin
+\fi\fi\fi\fi\fi\fi\fi\fi
+\setbox0 \hbox to \a@wd {\hss #1\hss}\dimen@ \vadj\a@ht
+\advance \dimen@ -2\h@p
+\dimen2 \a@slant\dimen@ \advance\dimen2 \hadj\a@wd
+\global\setbox\ab@x \hbox
+{\rlap {\kern\dimen2 \raise\dimen@\box0 }\unhcopy\ab@x }\fi }
+
+\gdef \h@putvowel #1{% vowel mark
+\ifx #1\relax \relax \else \def \hadj {0}\def \vadj {0}%
+\ifnum \act@cd = \hc@P \let\vadj \v@adj \put@b@x{\hc@Pv }\else % vowel-ayin
+%\ifnum \act@cd = \hc@kf \def \hadj {-.1}\def \vadj {.85}\else % final kaph
+\ifnum \act@cd = \hc@kf \def \hadj {-.1}\def \vadj {.75}\else % final kaph
+\ifnum \act@cd = \hc@r \def \hadj {.35}\else % resh
+\ifnum \act@cd = \hc@d \def \hadj {.2}\else % daleth
+\ifnum \act@cd = \hc@q \def \hadj {.1}\else % qoph
+\ifnum \act@cd = \hc@y \def \hadj {.1}\else % yod
+\ifnum \act@cd = \hc@w \def \hadj {.15}\else % waw
+\ifnum \act@cd = \hc@si \def \hadj {-.1}\else % sin
+\fi\fi\fi\fi\fi\fi\fi\fi
+\setbox0 \hbox to \a@wd {\hss #1\hss}\dimen@ \vadj\a@ht
+\advance \dimen@ -2\h@p
+\dimen2 \a@slant\dimen@ \advance\dimen2 \hadj\a@wd
+\global\setbox\ab@x \hbox
+{\rlap {\kern\dimen2 \raise\dimen@\box0 }\unhcopy\ab@x }\fi }
+
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% utfcode.sty
+
+\ifx \utfatcode \undefined \else
+
+{\catcode `\^ 7 \catcode `\^^M=13
+\gdef \utf@word #1{% transform input into internal notation
+\ifx #1\@ \def \next {\utf@end }\else % finished
+\ifx #1-\def \next {\utf@minus }\else %
+\ifx #1/\def \next {\sc@back #1}\else %
+\ifnum `#1="D6 \def \next {\utf@dvi }\else %
+\ifnum `#1="D7 \def \next {\utf@dvii }\else %
+\ifnum `#1="D8 \def \next {\utf@dviii }\else %
+\ifnum `#1="D9 \def \next {\utf@dix }\else %
+\ifnum `#1="DA \def \next {\utf@da }\else %
+\ifnum `#1="DB \def \next {\utf@db }\else %
+\ifnum `#1="E2 \def \next {\utf@eii }\else %
+ \def \next {\utf@asci #1}%
+\fi %
+\fi\fi\fi\fi\fi\fi %
+\fi\fi\fi \next }%
+} % catcode 13
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \utf@eii #1#2{% segment E2
+ \u@lb `#1\relax \advance \u@lb -128
+ \u@lq `#2\relax \advance \u@lq -128
+ \edef \sc@char {}%
+\ifnum \u@lb = 0
+\ifnum \u@lq = 12 % ZERO WIDTH NON-JOINER (U+200C)
+% \edef \sc@char {||}\else
+ \edef \sc@char {\n@xp\a@ba}\else
+\ifnum \u@lq = 13 % ZERO WIDTH JOINER (U+200D)
+ \edef \sc@char {-}\else
+% \edef \sc@char {\n@xp\a@bb}\else
+\fi\fi\fi \utf@next }
+
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \utf@dix #1{% segment D9
+ \u@lb `#1\relax \advance \u@lb -"80
+ \u@lq \u@lb \divide \u@lq 8
+\ifcase \u@lq \edef \sc@char {\ifcase \u@lb
+ B\or f\or q\or k\or l\or m\or n\or h\or \fi }%
+\or \advance \u@lb -8 \edef \sc@char {\ifcase \u@lb
+ w\or Y\or y\or "aN\or "uN\or "iN\or "a\or "u\or \fi }%
+\or \advance \u@lb -"10 \edef \sc@char {\ifcase \u@lb
+ "i\or "\n@xp\a@Ze\or ""\or "\n@xp\a@ZE\or
+ "\n@xp\a@Za\or "\n@xp\a@Zu\or \or \or \fi }%
+\or \advance \u@lb -"18 \edef \sc@char {}%
+\or \advance \u@lb -"20 \edef \sc@char {\ifcase \u@lb
+ 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or \fi }%
+\or \advance \u@lb -"28 \edef \sc@char {\ifcase \u@lb
+ 8\or 9\or \a@pc\or \f@sila\or
+ \f@sila\or *\or \n@xp\a@b\or \n@xp\a@bq\or \fi }%
+\or \advance \u@lb -"30 \edef \sc@char {\ifcase \u@lb
+ "\n@xp\a@a\or "\or "\n@xp\a@ZA\or "\n@xp\a@ZU\or
+% N"\n@xp\a@Za\or Qa\or Qw\or Qw"u\or \fi }%
+N"\n@xp\a@Za\or N"\n@xp\a@Za A\or N"\n@xp\a@Za w\or N"\n@xp\a@Za w"u\or \fi }%
+\or \advance \u@lb -"38 \edef \sc@char {\ifcase \u@lb
+% Qy\or \n@xp\a@t\or \n@xp\a@T\or \n@xp\a@ab\or
+ N"\n@xp\a@Za Y\or \n@xp\a@t\or \n@xp\a@T\or \n@xp\a@ab\or
+ \n@xp\a@v\or \n@xp\a@at\or p\or \n@xp\a@ac\or \fi }%
+\fi \utf@next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \utf@db #1{% segment DB
+ \u@lb `#1\relax \advance \u@lb -"80
+ \u@lq \u@lb \divide \u@lq 8
+\ifcase \u@lq \edef \sc@char {\ifcase \u@lb
+ Qh\or \n@xp\a@h\or \n@xp\a@B\or \n@xp\a@j\or
+ \n@xp\a@aU\or \n@xp\a@aV\or \n@xp\a@W\or \n@xp\a@w\or \fi }%
+\or \advance \u@lb -8 \edef \sc@char {\ifcase \u@lb
+ \n@xp\a@aw\or \n@xp\a@au\or \n@xp\a@av\or \n@xp\a@X\or
+ Y\or L\or \n@xp\a@az\or \n@xp\a@x\or \fi }%
+\or \advance \u@lb -"10 \edef \sc@char {\ifcase \u@lb
+ \n@xp\a@Y\or \n@xp\a@y\or E\or \n@xp\a@ay\or
+ B\or \n@xp\a@H\or \or \or \fi }%
+\or \advance \u@lb -"18 \edef \sc@char {}%
+\or \advance \u@lb -"20 \edef \sc@char {}%
+\or \advance \u@lb -"28 \edef \sc@char {\ifcase \u@lb
+ \or \or \or \or
+ \or \or \n@xp\a@bd\or \n@xp\a@br\or \fi }%
+\or \advance \u@lb -"30 \edef \sc@char {\ifcase \u@lb
+ 0\or 1\or 2\or 3\or
+ 4\or 5\or 6\or 7\or \fi }%
+\or \advance \u@lb -"38 \edef \sc@char {\ifcase \u@lb
+ 8\or 9\or \n@xp\a@aI\or \n@xp\a@aN\or
+ \n@xp\a@P\or \n@xp\a@ai"\n@xp\a@Zi\or
+ \n@xp\a@ao"\n@xp\a@Zi\or \n@xp\a@bh-\or \fi }%
+\fi \utf@next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabtoks.sty
+
+\def \a@br {\sk@r ,25 } % rah with roof
+\def \a@ba {\sk@W , 0 } % ZERO WIDTH NON-JOINER
+\def \a@bb {\sk@spc , 0 } % ZERO WIDTH JOINER
+\def \a@bb {\sk@N , 0 } % ZERO WIDTH JOINER
+\def \a@bd {\sk@d ,25 } % dal with roof
+\def \a@bh {\sk@h ,25 } % hah with roof
+\def \a@bq {\sk@q@s , 0 } % qaf without dots
+\def \a@br {\sk@r ,25 } % rah with roof
+
+\gdef \sk@Q {10 ,\a@hamzc ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % hamza char
+\gdef \sk@W {10 ,\a@break ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % small space 34
+\gdef \sk@Wp {10 ,\a@break ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % small space 34
+\gdef \sk@N {10 ,\a@break ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % small space 34
+\gdef \sk@spc {10 ,\a@smspc ,1 ,{{0,0}{0,0}{2,0}{2,0}}} % small space 36
+\gdef \sk@spcn {10 ,\a@smspc ,0 ,{{0,0}{0,0}{2,0}{2,0}}} % small space 36
+\gdef \sk@skip{10 ,\a@skip ,1 ,{{0,0}{0,0}{2,0}{2,0}}} % small space 37
+\gdef \sk@skipn{10 ,\a@skip ,0 ,{{0,0}{0,0}{2,0}{2,0}}} % small space 37
+
+\def \a@bc {\sk@@ , 0 } % empty
+%\def \a@bc {\sk@skipn , 0 } % empty
+\def \a@be {\sk@@ , 0 } % empty
+%\def \a@be {\sk@spc , 0 } % empty
+\def \a@bf {\sk@@ , 0 } % empty
+%\def \a@bf {\sk@spcn , 0 } % empty
+\def \a@bg {\sk@@ , 0 } % empty
+%\def \a@bg {\sk@skip , 0 } % empty
+\def \a@bi {\sk@@ , 0 } % empty
+%\def \a@bi {\sk@Wp , 0 } % empty
+\def \a@bj {\sk@@ , 0 } % empty
+\def \a@bk {\sk@@ , 0 } % empty
+\def \a@bl {\sk@@ , 0 } % empty
+\def \a@bm {\sk@@ , 0 } % empty
+\def \a@bn {\sk@@ , 0 } % empty
+\def \a@bo {\sk@@ , 0 } % empty
+\def \a@bp {\sk@@ , 0 } % empty
+\def \a@bs {\sk@@ , 0 } % empty
+\def \a@bt {\sk@@ , 0 } % empty
+\def \a@bu {\sk@@ , 0 } % empty
+\def \a@bv {\sk@@ , 0 } % empty
+\def \a@bw {\sk@@ , 0 } % empty
+\def \a@bx {\sk@@ , 0 } % empty
+\def \a@by {\sk@@ , 0 } % empty
+\def \a@bz {\sk@@ , 0 } % empty
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% atrans.sty
+
+\let \tr@@zdmg \tr@zdmg
+
+\iffalse % inserted in 3.11f
+\def \tr@zdmg {% patches for Uzbek
+\tr@def \a@H {\"a}%
+\tr@def \a@ab {\"e}%
+}
+\fi % inserted in 3.11f
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% ascan.sty
+
+\def \setcode #1{% switch the input encoding
+\lowercase {\def \sc@code {#1}%
+\ifx \sc@code \sc@oldcode \else
+\begingroup \def \sc@lookup ##1#1##2##3\@@ {\endgroup ##2}%
+\xpa \sc@lookup \sc@table #1\sc@default \@@ \fi }%
+%\let \sc@oldcode \sc@code }
+\global\let \sc@oldcode \sc@code }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aligs.sty
+
+\def \hah@urd #1{% wavy hah
+% c2
+\if\is@end@char #1\set@act\sk@h % isolated round h
+\fi
+\ifx #1\a@h
+\@mod@actfalse % no mark below
+\fi
+\ifnum \chr@cls = 1 \set@chr\sk@b % YntCbyp normal height
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {16.11.2003} \def \a@level {d+UCS}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% witbhs.sty
+
+\if\AND{\isx\bhscode\undefined}{\isx\buckatcode\undefined}\else
+\def \test@@token {\iftest@command \tracingmacros 0 \fi
+\futurelet \next@token \test@space }
+
+\let \test@token \test@@token % get next token
+
+\xpa\def \xpa\kill@space \space {% gobble LTR space
+\futurelet \next@token \test@space }
+
+\xpa\def \xpa\kill@sp@ce \sp@ce {% gobble RTL space
+\futurelet \next@token \test@space }
+
+\def \test@space {% check for LTR space
+\if \space \nxp\next@token \xpa\kill@space
+\else \xpa\test@sp@ce \fi }
+
+\def \test@sp@ce {% check for RTL space
+\if \sp@ce \nxp\next@token \xpa\kill@sp@ce
+\else \xpa\next@command \fi }
+
+\long\def \test@special #1{% check for special cases
+\ifcat \bgroup \nxp \next@token % arabic group
+ \def \next {\arab@group {#1}}\else
+\if\is@in@set #1\a@first % normal case
+ \def \next {\test@word #1}\else
+\if \relax \nxp #1% % command
+ \def \next {\test@command #1}\else
+\ifcat \nxp ~\nxp #1% % active character
+ \def \next {\test@command #1}\else
+\if \nxp <\nxp #1\unarab@codes % Roman insert
+ \let \next \test@insert \else
+\ifx $#1\unarab@codes % Math insert
+ \let \next \test@math \else
+ \def \next {\test@word #1}% % normal case
+\fi\fi\fi\fi\fi\fi \next }
+
+{\catcode `\^^a0 12
+\gdef \test@word #1 {% process next RTL word
+\a@test@word #1^^a0\@@ }
+
+\gdef \a@test@word #1^^a0#2\@@ {% process next RTL word
+\ifarab \putwordb@x {\arab@item #1\@@ }\fi
+\a@spacetrue \a@showinput {#1}%
+\ifx \relax #2\relax \def \next {\test@token }\else
+\def \next {\test@token #2 }\fi
+\next }
+}% catcode ^^a0
+
+\fi % witbhs
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabaux.sty
+
+\def \tr@ceoff {% suspend temporarily, local, no nesting!
+\edef \tr@ceon {\nxp\tracingmacros \the\tracingmacros \relax }%
+\tracingmacros 0 }
+
+\def \notr@ce {% suspend temporarily, for NFSS only, no nesting!
+\edef \dotr@ce {\nxp\tracingmacros \the\tracingmacros \relax}%
+\tracingmacros 0 }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {08.12.2003} \def \a@level {e}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aboxes.sty
+
+\def \put@tie {% deposit ties between characters
+\setbox0 \hbox {\char \the\act@tie }%
+\setbox2 \hbox {\char \the\act@tie \/}%
+\ifdim \a@disp = \z@ \unhcopy0
+\else \raise\a@disp \hbox {\unhcopy0 }\fi
+\global\advance\a@disp \wd2 \global\advance\a@disp -\wd0 }
+
+\def \set@high@act {% prepare raising of actual character
+\global\advance \a@disp \a@dsp \global\@high@acttrue }
+
+\def \set@low@act {% lower actual character
+\global\advance \a@disp -.25ex }
+
+\def \set@loww@act {% lower actual character
+\global\advance \a@disp -.50ex }
+
+\def \set@lowww@act {% lower actual character
+\global\advance \a@disp -.75ex }
+
+\def \fix@act@box {% fixup position and set tatwil
+\if@high@act \global\advance\a@disp -\a@dsp \global\@high@actfalse \fi
+\global\advance\a@min@dp \a@ic \global\advance\a@disp \a@ic
+\if@tat \put@tat \@tatfalse \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\ifx \a@patchlevel \undefined % load only the first time
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% atrans.sty
+
+\iffalse
+\def \tr@zdmg {% patches for Uzbek
+\tr@@zdmg
+\tr@def \a@H {\"a}%
+\tr@def \a@ab {\"e}%
+}
+\fi
+\let \tr@zdmg \tr@@zdmg % nullify problems in version 3.11d
+
+\gdef \tr@@aword #1{% transcribe rest of word
+\let \tr@old \tr@act \def \tr@act {#1}%
+\case #1\of
+{ >{\@gobble }
+ \cap {\c@ptrue \tr@aword }
+% |"^\a@e{\tr@aword }
+ |"^{\tr@aword }
+ -{-\tr@aword }
+% XlEeQ{\csname tr@@\string #1\endcsname }
+ TXlEeQ{\csname tr@@\string #1\endcsname }
+ \a@a NUW{\setc@p #1\kill@alif }
+ P{\tr@P \tr@aword }
+ aiu{\tr@wasla #1}
+ \a@Ze{\xpa\tr@aword \tr@old }
+\default {\@vocalfalse
+ \ifcat \nxp #1-#1\else \setc@p #1%
+ \fi \tr@aword }
+}\endcase }
+
+\gdef \tr@@T #1{\@vocalfalse
+\ifx #1|h\let \next \tr@aword \else
+t\def \next {\tr@aword #1}\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifx \a@hebr \undefined \else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hebchrs.sty
+
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\gdef \def@judchars {% define character macros for Judeo-Arabic
+\gdef \tc@f {\act@cd\hc@f \@finaltrue } % f
+\gdef \tc@C {\act@cd\hc@t \act@mod \j@d@t } % _t
+\gdef \tc@D {\act@cd\hc@ss \act@mod \j@d@t \@finaltrue } % .d
+\gdef \tc@F {\act@cd\hc@d \act@mod \j@d@t } % _d
+\gdef \tc@G {\act@cd\hc@j \act@mod \j@d@t } % ^g
+\gdef \tc@H {\act@cd \hc@hh } % .h
+\gdef \tc@R {\act@cd \hc@j } % .g
+\gdef \tc@T {\act@cd\hc@h \act@mod \j@@d@t } % T
+\gdef \tc@V {\act@cd \hc@tt } % .t
+\gdef \tc@X {\act@cd\hc@k \act@mod \j@d@t \@finaltrue } % _h
+\gdef \tc@Z {\act@cd\hc@tt \act@mod \j@d@t } % .z
+}}% end of dynamic definitions
+
+\fi % Hebrew
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {12.02.2004} \def \a@level {f}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% cp1256.sty
+
+\ifx \awinatcode \undefined \else
+
+\def \set@awin {% select the CP 1256 scanner
+\let \sc@beg \awin@beg \let \sc@word \awin@word
+\let \sc@back \sc@@back \let \sc@endscan \awin@endscan
+\global\let \a@scan \awin@scan \setawin@codes
+\awin@catcodes \yahdots
+\global \a@paren {}%
+\a@message {input encoding set to Windows CP 1256 conventions}}
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the CP 1256 encoding
+arabwin\set@awin cp1256\set@awin }
+
+\gdef \awin@beg #1{% start CP 1256 scanner
+\h@mzafalse \iz@fetfalse \yahdots \@ssimfalse
+\novocalize % because of explicit quoting
+\ifx #1"\def \next {\awin@lquote}\else
+\ifx #1^^c7\def \next {\awin@alif}\else
+\def \next {\awin@word #1}\fi\fi \next }
+
+\gdef \awin@lquote {% initial quote
+\def \sc@char {`}\sc@put \awin@beg }
+
+\gdef \awin@dquote {% double quote, intermediate version
+%\def \sc@char {\a@dq}\sc@put \awin@word }
+\def \sc@char {\nxp\a@dq }\sc@put \awin@word }
+
+\gdef \awin@dquote {% right quote
+\def \sc@char {'}\sc@put \awin@word }
+
+\fi % cp1256
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabtex.sty
+
+\long\def \test@special #1{% check for special cases
+%\if \bgroup \nxp \next@token % arabic group
+\ifcat \bgroup \nxp \next@token % arabic group
+ \a@@putword \def \next {\arab@group {#1}}\else
+\if \relax \nxp #1% % command
+ \if\is@in@set #1\a@accent % known to scanner
+ \a@@append {#1}\def \next {\get@token }%
+ \else % general command
+ \a@@putword \def \next {\test@command #1}%
+ \fi \else
+%\if \sp@ce \nxp \next@token % RTL space
+% \a@@putword \def \next {\get@token }\else
+\ifnum `#1 > 127 % inputenc command
+ \a@@append {#1}\def \next {\get@token}\else
+\ifcat \nxp ~\nxp #1% % active character
+ \a@@putword \def \next {\test@command #1}\else
+\if \nxp <\nxp #1\unarab@codes % Roman insert
+ \a@@putword \let \next \test@insert \else
+\ifx $#1\unarab@codes % Math insert
+ \a@@putword \let \next \test@math
+\else \a@@append {#1}\def \next {\get@token}% % normal case
+\fi\fi\fi\fi\fi\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% ascan.sty
+
+{\arab@codes % because of special characters
+
+\gdef \t@b@g #1{% start \ArabTeX scanner
+ \def \next {\sc@word {#1}}\def \sc@char {@}%
+\ifcat a\nxp #1\else % letter
+\apply \set@next \tocase #1\of
+{ \@{\sc@endscan } % finished
+ '{\t@rquote }
+ `{\t@lquote }
+ *{\t@star }
+ +{\t@plus }
+ ={\t@equ }
+\default {\sc@word {#1}}
+}\endcase
+\fi \next }
+
+\gdef \t@w@rd #1{% transform input into internal notation
+ \def \next {\sc@word }%
+\ifx #1\@\def \next {\sc@endscan }\else % finished
+\ifcat \nxp #1a%
+ \ifx #1a\def \next {\t@aa }\else % test for aa -> A
+ \ifx #1n\def \next {\t@nn }\else % test for ng, ny
+ \edef \sc@char {\csname sc@#1\endcsname }% letter
+ \ifx \sc@char \relax \def \sc@char {#1}% undef letter
+ \fi
+ \ifs@nd \edef \next {\nxp \t@asp {\sc@char }}\else \sc@put
+ \fi
+ \fi\fi \else % other character
+\ifcat \nxp #1\relax \def \next {\t@cs #1}\else % control sequence
+\ifx #1'\def \next {\t@hamza }\else % hamza
+ \def \sc@char {#1}%
+\apply \set@next \tocase #1\of
+{~\@ldtie{\t@tie }
+ .{\t@dot }
+ ,{\t@comma }
+ -{\t@minus }
+ `{\t@ain }
+ "{\t@dquote }
+ :{\t@colon }
+ ^{\t@up }
+ _{\t@down }
+ |{\t@bar }
+ *{\t@shadda }
+ +{\t@madda }
+ ={\t@sukun }
+\default {\t@w@@rd {#1}}
+}\endcase
+\fi\fi\fi\fi \next }
+
+} % \arab@codes
+
+\def \t@star {\sc@dep *}
+\def \t@plus {\sc@dep +}
+\def \t@equ {\sc@dep =}
+
+\let \sc@beg \t@b@g % apatch only
+\let \sc@word \t@w@rd % apatch only
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aparse.sty
+
+\def \a@parse #1>{% parse token sequence into syllables
+\iftest@parse \tracingmacros = 1
+\iftest@scan \else \a@verb (#1)>\fi\fi
+\csname a@parse@hook\endcsname
+\last@con ={.}\last@mod = 0 \last@voc = 0 \global\@highfalse
+\global \sv@revwd ={}\global \a@revwd ={}\syl@beg #1<<<>%
+\iftest@parse \tracingmacros = 0 %
+\xpa \a@verb \xpa (\the\a@revwd )>\fi }
+
+\def \sv@@I #1{% long i
+\ifx #1N\def \next {\sv@Zi }\else
+\ifk@sh \put@syl \put@con y\add@kasraspec
+ \put@syl \def \next {\syl@con #1}%
+\else \add@kasra \put@syl \def \next {\test@B #1\sv@Ivwl }%
+\fi\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% verses.sty
+
+\ifx \verseatcode \undefined \else
+
+% define some verse dimensions, verses will be centered
+\def \setversedim #1#2{% set length of half-verse, separation
+\a@hvlen #1\relax \a@hvsep #2\relax
+\ifx \LaTeX \undefined \a@hvind \hsize
+\else \a@hvind \textwidth \fi
+\advance \a@hvind -\a@hvsep
+\divide \a@hvind 2 \advance \a@hvind -\a@hvlen }
+
+\def \connverses #1#2#3{% first half-verse, connection, second half-verse
+\cond{\ifdim 0pt > \a@hvind }%
+{\spreadbox \a@hvlen {#1}\par \hfill }% first block
+{\noindent \hspace \a@hvind \spreadbox \a@hvlen {#1}}\fi
+\spreadbox \a@hvsep {#2}% separator
+\spreadbox \a@hvlen {#3}% second block
+\par }
+
+\fi % verses.sty
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% awrite.sty
+
+\def \a@@write #1>{% Arabic output
+\iftest@write \tracingmacros 1
+\iftest@parse \else \a@verb (#1 )>\fi\fi
+\csname a@write@hook\endcsname
+\ifa@@write \arab@testfont \aw@beg #1>0+0*>0+0*>\fi
+\iftest@write \tracingmacros 0 \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hewrite.sty
+
+\ifx \a@hebr \undefined \else
+
+\def \heb@write #1>{% Hebrew output routine
+\iftest@write \tracingmacros = 1
+\iftest@parse \else \a@verb (#1)>\fi\fi
+\csname a@write@hook\endcsname
+\ifa@@write \heb@testfont \heb@beg #1>0+0*>\fi
+\iftest@write \tracingmacros = 0
+\fi }
+
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {26.02.2004} \def \a@level {g}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% ascan.sty
+
+\def \sc@restore {% restore scanner defaults
+\let \vocalize \v@calize \let \fullvocalize \fullv@calize
+\let \sc@beg \t@b@g \let \sc@word \t@w@rd
+\let \sc@back \sc@@back \let \sc@endscan \sc@@endscan
+\global\let \a@scan \a@@scan \seta@codes
+\let \arab@codes \a@arab@codes
+\let \unarab@codes \a@unarab@codes }
+
+\def \t@comma #1{% after ,
+\apply \set@char \tocase #1\of
+{ a{a\nxp \a@H }
+ A{\nxp \a@a \nxp \a@H }
+ c{\ift@rk J\else \nxp \a@c \fi }
+ d{\ifp@sht \nxp \a@aA \else
+ \ifs@nd \nxp \a@D \else \nxp \a@d \fi\fi }
+ e{e\nxp \a@H }
+ g{\nxp \a@L }
+ h{\nxp \a@h }
+% n{\ifs@nd \nxp \a@an \else \nxp \a@M \fi }
+ n{\ifs@nd \nxp \a@an \else \nxp \a@m \fi }
+ r{\ifp@sht \nxp \a@q \else
+ \ifs@nd \nxp \a@ar \else \nxp \a@r \fi\fi }
+ s{\ift@rk x\else \nxp \a@s \fi }
+ t{\ifp@sht \nxp \a@v \else
+ \ifs@nd \nxp \a@at \else \nxp \a@t \fi\fi }
+ z{\ift@rk D\else \nxp \a@z \fi }
+}\endcase \t@tail ,#1}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% utf8.sty
+
+\ifx \utfatcode \undefined \else
+
+\gdef \set@utfc {% select the UTF-8 scanner
+\global\let \a@scan \utfc@scan
+\let \sc@beg \utf@beg
+\let \sc@word \utf@word
+\global\a@digits = {0123456789}%
+\global\a@first = {ÍÎÏ•’}%
+\catcode `á 11
+\a@message {input encoding set to UTF-8 conventions}}
+
+\fi % utf8.sty
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% bhs.sty
+
+\ifx \bhsatcode \undefined \else
+
+% dynamic definitions for BHS Hebrew coding
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\"=12 \catcode `\&=12 \catcode `\$ 12
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setbhs@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@A {a} \def \sc@B {b} \def \sc@C {S} \def \sc@D {d}
+\def \sc@E {e} \def \sc@F {A} \def \sc@G {g} \def \sc@H {h}
+\def \sc@I {i} \def \sc@J {t} \def \sc@K {k} \def \sc@L {l}
+%\def \sc@M {m} \def \sc@N {n} \def \sc@O {O} \def \sc@P {p}
+\def \sc@M {m} \def \sc@N {n}\def\sc@O{\n@xp\a@o}\def \sc@P {p}
+\def \sc@Q {q} \def \sc@R {r} \def \sc@S {s} \def \sc@T {t}
+%\def \sc@U {u} \def \sc@V {D} \def \sc@W {W} \def \sc@X {X}
+\def \sc@U {u} \def \sc@V {D} \def \sc@W {w} \def \sc@X {X}
+\def \sc@Y {y} \def \sc@Z {z} \def \sc@@ {QQ}
+\a@digits = {0123456789} \a@paren = {[]}
+\a@first = {)+(##&$":.,*0123456789}
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for BHS
+
+{\arab@codes
+\catcode `\& 12 \catcode `\$ 12
+
+\gdef \bhs@beg #1#2{% start BHS scanner
+\@ssimfalse \def \next {\bhs@word #1#2}%
+\ifx #1\@\def \next {\sc@endscan #2}\else % finished
+\ifx #2\@\def \next {\bhs@testpara #1#2}\else
+\ifx #2?\def \next {\bhs@testpara #1#2}\else
+\fi\fi\fi \next }
+
+\gdef \bhs@word #1#2{% transform input into internal notation
+ \def \next {\bhs@word #2}%
+\ifx #1\@\def \next {\sc@endscan #2}\else % finished
+\ifx #1]\def \next {\bhs@word }\else
+\ifx #10\def \next {\bhs@zero #2}\else
+\ifx #17\def \next {\bhs@seven #2}\else
+%
+\if\is@in@set #1\a@digits \def \next {\bhs@word }\else
+\ifx #1?\def \next {\bhs@query #2}\else
+\ifx #1:\def \next {\bhs@colon #2}\else
+\ifx #1|\def \sc@char {|}\sc@put \else
+%
+\ifx #1.\def \sc@char {\nxp \a@Zu }\sc@put \else
+\ifx #1'\def \sc@char {'}\sc@put \else
+\ifx #1)\def \sc@char {Q}\sc@put \else
+\ifx #1+\def \sc@char {C}\sc@put \else
+%
+\ifx #1(\def \sc@char {P}\sc@put \else
+\if #1\a@hash \def \sc@char {\nxp \a@S }\sc@put \else
+\ifx #1&\def \sc@char {\nxp \a@s }\sc@put \else
+\ifx #1$\def \sc@char {x}\sc@put \else
+%
+\ifx #1"\def \sc@char {\nxp \a@E }\sc@put \else
+\ifx #1-\def \sc@char {B}\sc@put \else
+\ifx #1*\def \sc@char {*}\sc@put \else
+\ifcat \nxp #1a\edef \sc@char {\csname sc@#1\endcsname }%
+ \sc@put
+\fi\fi\fi\fi
+\fi\fi\fi\fi
+\fi\fi\fi\fi
+\fi\fi\fi\fi
+\fi\fi\fi\fi
+\next }
+} % arabcodes
+
+\fi % bhs.sty
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% cp1255.sty
+
+\ifx \hwinatcode \undefined \else
+
+\def \hwin@catcodes {% assignments for CP 1255
+\countdef \is@m=2 \is@m = 192 \is@n = 64
+\loop \catcode \is@m = 11 \global\lccode \is@m = \is@n
+\ifnum 255 > \is@m \advance \is@m 1 \advance \is@n 1 \repeat
+\is@m=0 \is@n=0 \catcode `\^^a0 12 }
+
+{\hwin@catcodes
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Hebrew
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \sethwin@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@^^c0 {"\n@xp\a@e} \def \sc@^^c1 {"\n@xp\a@I}
+\def \sc@^^c2 {"\n@xp\a@A} \def \sc@^^c3 {"\n@xp\a@O}
+\def \sc@^^c4 {"i} \def \sc@^^c5 {"\n@xp\a@E}
+\def \sc@^^c6 {"e} \def \sc@^^c7 {"a}
+\def \sc@^^c8 {"A} \def \sc@^^c9 {"\n@xp\a@o}
+\def \sc@^^ca {L} \def \sc@^^cb {"u}
+\def \sc@^^cc {"\n@xp\a@Zu} \def \sc@^^cd {|}
+\def \sc@^^ce {B} \def \sc@^^cf {"\n@xp\a@Zo}
+
+\def \sc@^^d0 {K} \def \sc@^^d1 {"\n@xp\a@Ze}
+\def \sc@^^d2 {"\n@xp\a@Za} \def \sc@^^d3 {:}
+\def \sc@^^d4 {"\n@xp\a@Zi} \def \sc@^^d5 {w-w}
+\def \sc@^^d6 {wy} \def \sc@^^d7 {y-y}
+\def \sc@^^d8 {@} \def \sc@^^d9 {@} \def \sc@^^da {@} \def \sc@^^db {@}
+\def \sc@^^dc {@} \def \sc@^^dd {@} \def \sc@^^de {@} \def \sc@^^df {@}
+
+\def \sc@M {M} %\def \sc@N {N}
+\def \sc@^^e0 {Q} \def \sc@^^e1 {b} \def \sc@^^e2 {g} \def \sc@^^e3 {d}
+\def \sc@^^e4 {h} \def \sc@^^e5 {w} \def \sc@^^e6 {z} \def \sc@^^e7 {X}
+\def \sc@^^e8 {C} \def \sc@^^e9 {y} \def \sc@^^ea {k} \def \sc@^^eb {k}
+\def \sc@^^ec {l} \def \sc@^^ed {m} \def \sc@^^ee {m} \def \sc@^^ef {n}
+
+\def \sc@^^f0 {n} \def \sc@^^f1 {s} \def \sc@^^f2 {P} \def \sc@^^f3 {p}
+\def \sc@^^f4 {p} \def \sc@^^f5 {S} \def \sc@^^f6 {S} \def \sc@^^f7 {q}
+\def \sc@^^f8 {r} \def\sc@^^f9{\n@xp\a@S} \def\sc@^^fa {t} \def \sc@^^fb {@}
+\def \sc@^^fc {@} \def \sc@^^fd {@} \def \sc@^^fe {@} \def \sc@^^ff {@}
+\a@digits = {0123456789}
+\a@paren = {()[]}
+\a@first = {"`^^e6}
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\fi % cp1255.sty
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifx \a@hebr \undefined \else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hescan.sty
+
+\def \hwin@catcodes {% assignments for CP 1255
+\countdef \is@m=2 \is@m = 192 \is@n = 64
+\loop \catcode \is@m = 11 \global\lccode \is@m = \is@n
+\ifnum 255 > \is@m \advance \is@m 1 \advance \is@n 1 \repeat
+\is@m=0 \is@n=0 \catcode `\^^a0 12 }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% heparse.sty
+
+\def \sv@ay {% Yiddish ay
+\put@syl \put@con \a@h \v@ctrue \add@fatha \put@syl \test@patf }
+
+\def \sv@ey {% Yiddish ey
+\put@syl \put@con \a@h \put@syl \test@patf }
+
+\def \sv@oy {% Yiddish oy
+\put@syl \put@con \a@p \put@syl \test@patf }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hebchrs.sty
+
+\tc@def \a@h {\act@cd \hc@ey } % yod yod
+\tc@def \a@p {\act@cd \hc@oy } % waw yod
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fi % Hebrew
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% verses.sty
+
+\ifx \verseatcode \undefined \else
+
+%\newdimen \a@@hvlen
+\csname newdimen\endcsname \a@@hvlen
+
+% define some verse dimensions, verses will be centered
+\def \setversedim #1#2{% set lengths of half-verse, separation
+\ifx \LaTeX \undefined \a@hvind \hsize
+\else \a@hvind \textwidth \fi
+\a@hvlen #1\relax \advance \a@hvind -\a@hvlen
+\ifx [#2\def \next {\set@verseI [}\else
+\a@@hvlen \a@hvlen \def \next {\set@@verse {#2}}\fi \next }
+
+\def \set@verseI [#1]{% optional parameter
+\a@@hvlen #1\relax \set@@verse }
+
+\def \set@@verse #1{% separation
+\advance \a@hvind -\a@@hvlen \a@hvsep #1\relax
+\advance \a@hvind -\a@hvsep \divide \a@hvind 2 }
+
+\def \connverses #1#2#3{% first half-verse, connection, second half-verse
+\cond{\ifdim 0pt > \a@hvind }%
+{\spreadbox \a@hvlen {#1}\\ \hfill }% first block
+{\noindent \hskip \a@hvind \relax \spreadbox \a@hvlen {#1}}\fi
+\spreadbox \a@hvsep {#2}% separator
+\spreadbox \a@@hvlen {#3}% second block
+\tracingmacros 0
+\par }
+
+\def \a@c@halfverses #1#2{% optional parameter?
+%\tracingmacros 1
+\cond{\ifx [#2}{\half@verses {#1}[}%
+{\half@verses {#1}[\hfill]{#2}}\fi }
+
+\def \half@verses #1[#2]#3{% first[mid]second
+\test@token \connverses {#1}{#2}{#3}}
+
+\fi % verses.sty
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% utfcode.sty
+
+\ifx \utfatcode \undefined \else
+
+\def \utf@dvii #1{% segment D7
+ \u@lb `#1\relax \advance \u@lb -128
+ \u@lq \u@lb \divide \u@lq 8
+\ifcase \u@lq \edef \sc@char
+ {\ifcase \u@lb
+ K\or "\n@xp\a@Ze\or "\n@xp\a@Za\or :\or "\n@xp\a@Zi\or \or \or \or
+ \fi }%
+\or \advance \u@lb -8 \edef \sc@char {}%
+\or \advance \u@lb -16 \edef \sc@char
+ {\ifcase \u@lb
+ Q\or b\or g\or d\or h\or w\or z\or X\or
+ \fi }%
+\or \advance \u@lb -24 \edef \sc@char
+ {\ifcase \u@lb
+ C\or y\or k\or k\or l\or m\or m\or n\or
+ \fi }%
+\or \advance \u@lb -32 \edef \sc@char
+ {\ifcase \u@lb
+ n\or s\or P\or p\or p\or S\or S\or q\or
+ \fi }%
+\or \advance \u@lb -40 \edef \sc@char
+ {\ifcase \u@lb
+ r\or \n@xp\a@S \or t\or \or \or \or \or \or
+ \fi }%
+\or \advance \u@lb -48 \edef \sc@char
+ {\ifcase \u@lb
+% w\n@xp\a@U w\or wy\or y\n@xp\a@U y\or '\or
+ \n@xp\a@w \or \n@xp\a@p \or \n@xp\a@h \or '\or
+ ''\or \or \or \or
+ \fi }%
+\or \advance \u@lb -56 \edef \sc@char
+ {\ifcase \u@lb
+ \or \or \or \or \or \or \or "|\or
+ \fi }%
+\fi \utf@next }
+
+\fi % utfcode.sty
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% yiddish.sty
+
+\ifx \yidatcode \undefined \else
+
+\def \yid@t #1{% ts ?
+\ifx #1s\def \next {\yid@ts }\else
+\def \sc@char {C}\def \next {\yid@word #1}\sc@put
+\fi \next }
+
+\def \yid@ts #1{% tsh ?
+\ifx #1h\def \sc@char {C\nxp\a@S}\def \next {\yid@word }\else
+\def \sc@char {S}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+\fi % yiddish.sty
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {15.03.2004} \def \a@level {h}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% abidir.sty
+
+\ifx \a@patchlevel \undefined % first patching run
+
+\csname newtoks\endcsname \a@oldoutput
+\csname newbox\endcsname \a@oldbox
+\csname newbox\endcsname \a@newbox
+\csname newdimen\endcsname \a@prevdepth
+
+\def \a@@Rinsert #1{% RL insertion inside Ltext
+%\tracingmacros 1
+\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@box@aparm {% Arabic parameters for vbox
+\let \end \relax \def \next@command {\test@special}\transfalse
+\def \a@kern {\nobreak\kern.05em } \def \a@mkern {\nobreak\kern-.05em }
+\showfalse \spreadtrue \a@hsize \a@Lwidth
+\advance \a@hsize -\leftskip \advance \a@hsize -\rightskip
+\leftskip \z@ \rightskip \z@
+%\advance \a@hsize 20pt % TENTATIVE
+\def \arab@space {\nobreak\hskip 5pt plus 4pt minus 1pt }%
+\def \tat@skip {0.04ex plus 0.5ex }}
+
+\def \a@box@rparm {% Roman parameters for vbox
+\hbadness 10000 \tolerance 5000
+\parskip \z@ \parfillskip \z@ plus 1fil \relax \vskip \a@vglue }
+
+\def \a@@Rsplit #1{% splice RL words into the current paragraph
+\tracingmacros 0
+\bgroup \global\a@oldoutput = \output
+$$\global\a@lines \prevgraf \global\a@Lwidth \displaywidth
+$${\endgraf }%
+\ifinner \a@back@line \else
+\global\output = {\a@newoutput }\eject
+\fi \vskip -\parskip \prevdepth \a@prevdepth
+\ifvoid \a@oldbox
+\else \advance \a@lines -1 \setbox\a@oldbox \hbox
+{\hskip -\leftskip \unhbox\a@oldbox \unskip \unskip \unpenalty }\fi
+\setbox\Rinsertb@x \vbox {\a@box@rparm \a@box@aparm
+\putlineb@x {\copy\a@oldbox }\a@spacefalse
+\test@token #1 \end \unskip \unskip
+\vskip \a@vglue \hbox {\box\lineb@x \hfill }}%
+\a@Rgetline
+\setbox\tempb@x \hbox {\unhbox \tempb@x \unskip \unpenalty
+ \global\setbox \a@newbox \lastbox }%
+\noindent \prevgraf \a@lines
+\ifdim \wd\a@newbox = 0pt \unhbox \tempb@x
+\else \unhbox \a@newbox
+\ifdim \wd\tempb@x = 0pt
+\else \space \ins@skip \unhbox \tempb@x
+\fi\fi \penalty -9999
+\ifvbox \Rinsertb@x \break \a@Runpack \fi
+\egroup }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \a@back@line {% skip back
+\dimen0 \baselineskip \unskip \unpenalty \setbox0 \lastbox
+\dimen2 \lastskip \unskip \unskip \unpenalty
+\global\setbox \a@oldbox \lastbox
+\ifvoid \a@oldbox \else \dimen2 \lastskip \unskip
+\advance\dimen0 -\ht\a@oldbox \fi
+\advance\dimen0 -\dimen2 \global\a@prevdepth \dimen0 \unskip }%
+
+\gdef \a@newoutput {% intermediate output routine
+\global\output = \a@oldoutput
+%\showbox 255
+\setbox 255 \vbox {\unvbox 255 % put back to MVL
+\a@back@line }\unvbox 255 }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\fi % first run
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {29.04.2004} \def \a@level {i2}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% buck.sty
+
+\ifx \buckatcode \undefined \else
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Arabic
+{\catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setbuck@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@@ {@} \def \sc@c {@} \def \sc@e {@}
+\def \sc@B {@} \def \sc@C {J} \def \sc@G {g} \def \sc@I {Qi}
+\def \sc@J {j} \def \sc@L {@} \def \sc@M {@} \def \sc@O {Qa}
+\def \sc@P {p} \def \sc@Q {@} \def \sc@R {@} \def \sc@U {Qw}
+\def \sc@V {v} \def \sc@W {Qw} \def \sc@X {@}
+
+\sc@def ' {Q|} \sc@def | {QA} \sc@def > {Qa} \sc@def & {Qw}
+\sc@def < {Qi} \sc@def ## {|} \def \sc@A {A} \def \sc@b {b}
+\def \sc@p {T} \def \sc@t {t} \def \sc@v {C} \def \sc@j {G}
+\def \sc@H {H} \def \sc@x {X} \def \sc@d {d} \sc@def * {F}
+\def \sc@r {r} \def \sc@z {z} \def \sc@s {s} \sc@def $ {x}
+\def \sc@S {S} \def \sc@D {D} \def \sc@T {V} \def \sc@Z {Z}
+\def \sc@E {P} \def \sc@g {R} \sc@def _ {|B}
+\def \sc@f {f} \def \sc@q {q} \def \sc@k {k} \def \sc@l {l}
+\def \sc@m {m} \def \sc@n {n} \def \sc@h {h} \def \sc@w {w}
+\def \sc@Y {Y} \def \sc@y {y} \def \sc@F {"aN} \def \sc@N {"uN}
+\def \sc@K {"iN} \def \sc@a {"a} \def \sc@u {"u} \def \sc@i {"i}
+%\sc@def ~ {@} \def \sc@o {""} \sc@def ` {"\n@xp \a@a}
+\sc@def ~ {\n@xp \a@Ze} \def \sc@o {""} \sc@def ` {"\n@xp \a@a}
+\sc@def ^ {"'}
+\sc@def = {"\n@xp \a@ZE }
+
+\a@digits = {0123456789} \a@paren = {()[]}
+\a@first = {"`}
+\setbuck@codes@hook
+\globaldefs=0 }
+\global\let \setbuck@codes@hook \relax
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+{\catcode `\[ 1 \catcode `\{ 11
+\gdef \buck@beg #1[% start the TB scanner
+\h@mzafalse \iz@fetfalse \novocalize \@ssimfalse
+ \def \next [\buck@word #1}%
+\ifx #1\@ \def \next [\sc@endscan }\else % finished
+\ifx #1{\def \next [\buck@lbrace }\else
+\ifx #1"\def \next [\buck@lquote }\else
+\ifx #1A\def \next [\buck@alif }\else
+\fi\fi\fi\fi \next }
+} % catcodes 1 and 11
+
+{\catcode `\^^M=13 \catcode `\~ 11 %
+\gdef \buck@word #1#2{% transform input into internal notation
+ \def \next {\buck@word #2}%
+\ifx #1\@ \def \next {\sc@endscan #2}\else % finished
+\ifx #1-\def \next {\buck@minus #2}\else %
+\ifx #1"\def \next {\buck@rquote #2}\else %
+\ifx #1y\def \next {\buck@yah #2}\else %
+\if \nxp ^^M\nxp #1\def \next {\buck@par #1#2}\else % active character
+\ifx #1#2\def \next {\buck@two #1}\else %
+ \ifcat a\nxp #1\edef \sc@char {\csname sc@#1\endcsname }%
+ \else \def \sc@char {\nxp #1}%
+ \fi %
+ \sc@put %
+\fi\fi\fi\fi\fi\fi \next }%
+} % catcodes 13 and 11
+
+\def \buck@alif #1{% specials?
+\def \next {\buck@word }%
+\if \nxp #1=\def \sc@char {QA}\sc@put \else
+\if \nxp #1@\def \sc@char {"}\sc@put \else
+\if \nxp #1^\def \sc@char {Qa}\sc@put \else
+\if \nxp #1_\def \sc@char {Qi}\sc@put \else
+\def \sc@char {A}\def \next {\buck@word #1}\sc@put
+\fi\fi \fi\fi \next }
+
+\def \buck@yah #1{% hamza?
+\def \next {\buck@word }%
+\if \nxp #1^\def \sc@char {Qy}\sc@put \else
+\def \sc@char {y}\def \next {\buck@word #1}\sc@put
+\fi \next }
+
+\def \set@buck {% substitute new scanner
+\let \sc@beg \buck@beg \let \sc@word \buck@word
+\let \sc@back \sc@@back \let \sc@endscan \sc@@endscan
+\global\let \a@scan \a@@scan \setbuck@codes
+\let \arab@codes \buck@codes \let \unarab@codes \unbuck@codes
+\let \test@special \buck@special
+\message {input coding set to Tim Buckwalter's encoding conventions}}
+
+\def \buck@cat {% change catcodes
+\catcode `\# 11 \catcode `\= 11 \catcode `\^ 11 \catcode `\~ 11
+\catcode `\' 11 \catcode `\| 11 \catcode `\> 11 \catcode `\& 11
+\catcode `\< 11 \catcode `\} 11 \catcode `\* 11 \catcode `\$ 11
+\catcode `\_ 11 \catcode `\~ 11 \catcode `\` 11 \catcode `\{ 11 }
+
+\def \buck@recat {% change catcodes back
+\catcode `\# 6 \catcode `\= 12 \catcode `\^ 7 \catcode `\~ 13
+\catcode `\' 12 \catcode `\| 12 \catcode `\> 12 \catcode `\& 4
+\catcode `\< 12 \catcode `\} 2 \catcode `\* 12 \catcode `\$ 3
+\catcode `\_ 8 \catcode `\~ 13 \catcode `\` 12 \catcode `\{ 1 }
+
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aparse.sty
+
+\def \syl@hamzaverb #1{% verbatim hamza, #1 = carrier
+\case #1\of
+{ |{\put@con Q}
+ A{\put@con a\add@madda \@sukfalse }
+ y{\put@con Y\add@hamza \ifqur@n \add@hamzalow \fi }
+ u{\put@con w\add@hamza }
+ i{\put@con a\add@hamza \add@hamzalow }
+\default {\put@con #1\add@hamza }
+}\endcase \syl@voctest }
+
+\def \syl@quote@voc #1{% continue syllable with quote: " #1 #2
+\case #1\of
+{ B{\togglev@c \add@sukun \put@syl \syl@con #1}
+ "{\togglev@c \add@sukun \put@syl \syl@beg }
+ |{\syl@@quote@voc }
+ '{\add@hamza \syl@voctest }
+\default {\togglev@c \syl@voctest #1}% vowel: sukun
+}\endcase }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hewrite.sty
+
+\ifx \a@hebr \undefined \else
+
+\ifx \a@patchlevel \undefined % load only the first time
+\else
+\global\let \@@set@hcls \set@hcls
+
+\gdef \set@hcls {%
+\@@set@hcls
+\global\let \h@putvowel \h@put@@vowel
+}
+
+\fi
+
+\gdef \h@put@@vowel #1{% vowel mark
+\ifx #1\relax \relax \else \def \hadj {0}\def \vadj {0}%
+\ifnum \act@cd = \hc@P \let\vadj \v@adj \put@b@x{\hc@Pv }\else % vowel-ayin
+%\ifnum \act@cd = \hc@kf \def \hadj {-.1}\def \vadj {.85}\else % final kaph
+\ifnum \act@cd = \hc@kf \def \hadj {-.1}\def \vadj {.80}\else % final kaph
+\ifnum \act@cd = \hc@r \def \hadj {.35}\else % resh
+\ifnum \act@cd = \hc@d \def \hadj {.2}\else % daleth
+\ifnum \act@cd = \hc@q \def \hadj {.1}\else % qoph
+\ifnum \act@cd = \hc@y \def \hadj {.1}\else % yod
+\ifnum \act@cd = \hc@w \def \hadj {.15}\else % waw
+\ifnum \act@cd = \hc@si \def \hadj {-.1}\else % sin
+\fi\fi\fi\fi\fi\fi\fi\fi
+\setbox0 \hbox to \a@wd {\hss #1\hss}\dimen@ \vadj\a@ht
+\advance \dimen@ -1\h@p
+\dimen2 \a@slant\dimen@ \advance\dimen2 \hadj\a@wd
+\global\setbox\ab@x \hbox
+{\rlap {\kern\dimen2 \raise\dimen@\box0 }\unhcopy\ab@x }\fi }
+
+\fi % a@hebr
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {17.05.2004} \def \a@level {j}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% abidir.sty
+
+\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
+\ifhmode \lineskiplimit -.9\baselineskip
+\fi % enforce uniform baselines
+\bgroup \arab@codes \set@arabfont \@waslafalse \@wasfalse \a@@Rinsert }
+
+\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 \global\a@oldoutput = \output
+$$\global\a@lines \prevgraf \global\a@Lwidth \displaywidth
+$${\endgraf }%
+\ifinner \a@back@line \else
+\global\output = {\a@newoutput }\eject
+\fi \vskip -\parskip \global\prevdepth \a@prevdepth
+\ifvoid \a@oldbox \else
+\advance \a@lines -1 \setbox\a@oldbox \hbox
+{\hskip -\leftskip \unhbox\a@oldbox \unskip \unskip \unpenalty }\fi
+\setbox\Rinsertb@x \vbox {\a@box@rparm \a@box@aparm
+ \putlineb@x {\copy\a@oldbox }\a@spacefalse
+ \test@token #1 \end \unskip \unskip
+ \vskip \a@vglue \hbox {\box\lineb@x \hfill }}%
+\a@Rgetline
+\setbox\tempb@x \hbox {\unhbox \tempb@x \unskip \unpenalty
+ \global\setbox \a@newbox \lastbox }%
+\noindent \prevgraf \a@lines \unhcopy \a@newbox
+\ifdim \wd\a@newbox = 0pt \else
+\ifdim \wd\a@newbox = \parindent \else \space \ins@skip
+\fi\fi \unhbox \tempb@x \penalty -9999
+\ifvbox \Rinsertb@x \break \a@Runpack \fi
+\egroup }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% alatex.sty
+
+\def \a@endx {\if@ignore \@ignorefalse \xpa\ignorespaces \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {24.05.2004} \def \a@level {k}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabtex.sty
+
+\def \all@false {% reset language code to default
+\k@rdfalse \t@rkfalse \m@ghfalse \urd@false \p@shtfalse
+\s@ndfalse \m@layfalse \u@ghfalse \k@srafalse \k@shfalse
+\h@mzafalse \@ssimfalse \iz@fetfalse \yahd@tsfalse \k@fsfalse \f@rsnfalse
+\let \vocalize \v@calize \let \fullvocalize \fullv@calize
+\arab@output \catcode`\<=\active }
+
+\pdef \setuighur {% switch language specific processing
+\let \vocalize \novocalize \let \fullvocalize \novocalize
+\novocalize \all@false \@ssimfalse \h@mzafalse
+\u@ghtrue \def \a@defaultfont {\setnash }}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% abidir.sty
+
+\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@@Rsplit #1{% splice RL words into the current paragraph
+\bgroup \global\a@oldoutput = \output
+$$\global\a@lines \prevgraf \global\a@Lwidth \displaywidth
+$${\endgraf }%
+\ifinner \a@back@line \else
+\global\output = {\a@newoutput }\eject
+\fi \global\prevdepth \a@prevdepth
+\ifvoid \a@oldbox \else \advance \a@lines -1
+\setbox\a@oldbox \hbox {\hskip -\leftskip \unhbox\a@oldbox
+ \unskip \unskip \unpenalty \unpenalty }%
+\fi
+\setbox\Rinsertb@x \vbox {\a@box@rparm \a@box@aparm
+ \putlineb@x {\hbox {\unhcopy\a@oldbox }}\a@spacefalse
+ \test@token #1 \end \hbox {\box\lineb@x \hfill }}%
+\a@Rgetline
+\setbox\tempb@x \hbox {\unhbox \tempb@x \unskip \unpenalty
+ \global\setbox \a@newbox \lastbox }%
+\noindent \prevgraf \a@lines \unhcopy \a@newbox
+\ifdim \wd\a@newbox = 0pt \else
+\ifdim \wd\a@newbox = \parindent \else
+\ifdim \wd\tempb@x = 0pt \else
+ \space \LRskip
+\fi\fi\fi \unhbox \tempb@x
+\ifvbox \Rinsertb@x \break \a@Runpack \fi
+\egroup }
+
+\gdef \a@newoutput {% intermediate output routine
+\global\output = \a@oldoutput
+%\showbox 255
+\setbox 255 \vbox {\unvbox 255 % put back to MVL
+\a@back@line }\unvbox 255 }
+
+\def \a@Runpack {% unpack all lines from the insertion
+\loop \a@Rgetline \unhbox \tempb@x \unskip \unskip \break
+\ifvbox \Rinsertb@x \repeat \unpenalty \RLskip }
+
+\def \LRskip {\hskip \z@ plus 0.1em }% before RL insertion (right)
+\def \RLskip {\hskip \z@ plus 0.1em }% after RL insertion (left)
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@Linsert #1{% splice Ltext into RL paragraph
+\putwordb@x {\RLskip }\a@spacefalse \a@@Linsert {#1}\a@Lunpack
+\putwordb@x {\LRskip }\a@spacetrue \arab@codes
+\tracingmacros 0
+\test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {22.06.2004} \def \a@level {l}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% alists.sty
+
+\def \a@c@item
+{\@ifnextchar [{\a@@item }{\@noitemargtrue
+\expandafter \a@@item \expandafter [\@itemlabel ]}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% awrite.sty
+
+\let \ac@high \relax
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabrep.cls
+
+\at@arabtext {% switch to Arabic terms
+ \def\labelenumi{\theenumi\nospace-}
+ \def\labelenumiii{\theenumiii\nospace)}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {23.01.2005} \def \a@level {m}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabext.sty
+
+\ifx \a@@figure \undefined \else
+
+\def \a@@figure {% figure within Arabic environment
+\let \a@endfigure \endfigure \def \endfigure {\a@par \a@endfigure }%
+\a@par \figure }
+
+\def \a@@table {% table within Arabic environment
+\let \a@endtable \endtable \def \endtable {\a@par \a@endtable }%
+\a@par \table }
+
+\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {06.04.2005} \def \a@level {n}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% abidir.sty
+
+% for use with abidir.sty version 3.12a:
+\csname newcount\endcsname \a@lines
+\csname newdimen\endcsname \a@Lwidth
+
+%\newdimen \a@prevdepth
+%\newdimen \a@displaywidth
+%\newcount \a@prevgraf
+%\newtoks \a@oldoutput
+
+\def \RLskip {\hskip \z@ plus 0.1em }% after RL insertion (right)
+\def \LRskip {\hskip 1em plus 0.1em }% before RL insertion (left)
+
+\def \a@@Rsplit #1{% splice RL words into the current paragraph
+\bgroup \global\a@oldoutput = \output
+\dimen0 \vsize \advance \dimen0 100pt \pagegoal \dimen0
+$$\global\a@prevgraf \prevgraf \global\a@displaywidth \displaywidth
+$${\endgraf }%
+\ifinner \a@back@line \else
+\global\output = {\a@newoutput }\eject
+\fi \global\prevdepth \a@prevdepth
+\ifvoid \a@oldbox \else \advance \a@prevgraf -1
+\setbox\a@oldbox \hbox {\hskip -\leftskip \unhbox\a@oldbox
+ \unskip \unskip \unpenalty \unpenalty }%
+\fi
+\setbox\Rinsertb@x \vbox {\a@box@rparm \a@box@aparm
+ \putlineb@x {\hbox {\unhcopy\a@oldbox }}\a@spacefalse
+ \test@token #1 \end \hbox {\box\lineb@x \hfill }}%
+\a@Rgetline
+\setbox\tempb@x \hbox {\unhbox \tempb@x \unskip \unpenalty
+ \global\setbox \a@newbox \lastbox }%
+\noindent \prevgraf \a@prevgraf \unhcopy \a@newbox
+\ifdim \wd\a@newbox = 0pt \else
+\ifdim \wd\a@newbox = \parindent \else
+\ifdim \wd\tempb@x = 0pt \else
+ \space \LRskip
+\fi\fi\fi \unhbox \tempb@x
+\ifvbox \Rinsertb@x \break \a@Runpack
+\else \RLskip
+\fi
+\egroup }
+
+\gdef \a@back@line {% skip back over empty display
+\dimen0 \baselineskip \unskip \unpenalty \setbox0 \lastbox
+\dimen2 \lastskip \unskip \unskip \unpenalty
+\global\setbox \a@oldbox \lastbox % last line
+\ifvoid \a@oldbox \else \dimen2 \lastskip \unskip
+\advance\dimen0 -\ht\a@oldbox \fi
+\advance\dimen0 -\dimen2 % compute \prevdepth
+\global\a@prevdepth \dimen0 \unskip }%
+
+\gdef \a@newoutput {% intermediate output routine
+\global\output = \a@oldoutput
+%\ifnum \tracingmacros = 0 \else \showbox 255 \fi
+\setbox 255 \vbox {\unvbox 255 % put back into MVL
+\a@back@line }\unvbox 255 }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% atrans.sty
+% because of an incompatible change in Plain 3.1415926
+
+\gdef \x@s #1{\oalign{#1\crcr\hidewidth \nsh@ft{34}% accent for _h
+ \vbox to -.2ex {\hbox{\char'25}\vss}\hidewidth}}
+
+\gdef \x@x #1{\oalign{#1\crcr\hidewidth \nsh@ft{29}% accent for .s in Urdu
+ \vbox to.2ex{\hbox{\char'177}\vss}\hidewidth}}
+
+\def \ish@ft #1{\dimen\z@.00#1ex\multiply\dimen\z@\fontdimen1\font
+ \kern.0156\dimen\z@} % positive kern for slant
+
+\def \rsh@ft #1#2{\ish@ft{#1}#2\nsh@ft{#1}}
+
+\def \nsh@ft#1{\dimen\z@.00#1ex\multiply\dimen\z@\fontdimen1\font
+ \kern-.0156\dimen\z@} % compensate for slant in lowered accents
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {25.01.2006} \def \a@level {o}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% version 3.11i::abidir.sty
+
+%\csname newbox\endcsname for \newbox etc. (inner!)
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aligs.sty
+
+\def \hah@end #1#2*#3#4+#5*#6{% hah, test for ligature
+% c1 m1 * c2 m21 + m22 * c3
+\ifu@gh \ifx #1\a@H
+ \else \set@act \sk@h@u
+ \fi
+\else
+\ifm@lay \else
+\ifurd@ \set@act \sk@h@s \hah@urd #3% round h?
+ \ifx #1T\else
+ \ifx #3l\test@allah {#4}{#6}\else
+ \ifx #1\a@H
+ \else \set@act\sk@h@u
+ \if\is@end@char #3%
+ \else \set@loww@act \global\a@min 1
+ \fi
+ \fi\fi\fi
+\else
+\ifx #3l\test@allah {#4}{#6}\else
+\ifnum \chr@cls = 1 \set@chr\sk@b \put@tatwil % 1 YntCbyp
+\else
+\ifnum \chr@cls = 3 \put@tatwil % 3 GHX
+\else \gim@test #6\put@tatwil
+\fi
+\fi\fi\fi\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {08.02.2006} \def \a@level {p}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% abidir.sty
+
+\csname newdimen\endcsname \a@displaywidth
+
+\def \LRskip {\hskip \z@ plus 0.1em }% before RL insertion (left)
+
+\def \a@@Rsplit #1{% splice RL words into the current paragraph
+\bgroup \global\a@oldoutput = \output
+\dimen0 \vsize \advance \dimen0 100pt \pagegoal \dimen0
+$$\global\a@prevgraf \prevgraf \global\a@displaywidth \displaywidth
+$${\par }%
+\ifinner \a@back@line \else
+\global\output = {\a@newoutput }\eject
+\fi \global\prevdepth \a@prevdepth
+\ifvoid \a@oldbox \else \advance \a@prevgraf -1
+\setbox\a@oldbox \hbox {\hskip -\leftskip \unhbox\a@oldbox
+ \unskip \unskip \unpenalty \unpenalty }%
+\fi
+\setbox\Rinsertb@x \vbox {\a@box@rparm \a@box@aparm
+ \putlineb@x {\hbox {\unhcopy\a@oldbox }}\a@spacefalse
+ \test@token #1 \end \hbox {\box\lineb@x \hfill }}%
+\a@Rgetline
+\setbox\tempb@x \hbox {\unhbox \tempb@x \unskip \unpenalty
+ \global\setbox \a@newbox \lastbox }%
+\noindent \prevgraf \a@prevgraf \unhcopy \a@newbox
+\ifdim \wd\a@newbox = 0pt \else
+\ifdim \wd\a@newbox = \parindent \else
+\ifdim \wd\tempb@x = 0pt \else
+ \space \LRskip
+\fi\fi\fi \unhbox \tempb@x
+\ifvbox \Rinsertb@x \break \a@Runpack
+\else \RLskip
+\fi
+\egroup }
+
+\def \a@box@aparm {% Arabic parameters for vbox
+\let \end \relax \def \next@command {\test@special}\transfalse
+\def \a@kern {\nobreak\kern.05em } \def \a@mkern {\nobreak\kern-.05em }
+\showfalse \spreadtrue \a@hsize \a@displaywidth
+\advance \a@hsize -\leftskip \advance \a@hsize -\rightskip
+\leftskip \z@ \rightskip \z@
+%\advance \a@hsize 20pt % TENTATIVE
+\def \arab@space {\nobreak\hskip 5pt plus 4pt minus 1pt }%
+\def \tat@skip {0.04ex plus 0.5ex }}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aoutput.sty
+
+\def \put@ab@x {% deposit line
+\ifhmode \unskip {\par }\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 \par
+\endgroup \parindent \z@ \parskip \z@ plus 1pt \initlineb@x
+\advance \a@prevgraf \@ne \a@@prevgraf \prevgraf
+\advance \a@@prevgraf \@ne \prevgraf \a@@prevgraf }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% altxext.sty
+
+\ifx \a@olddisp \undefined
+\let \a@olddisp \[ % for lineno.sty
+\ifx \linenumbers \undefined \else
+ \def \[{\par\nobreak\noindent \a@olddisp}
+ \all@w@ne \linelabel
+\fi
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% for acmd.sty in version 3.11 only!
+
+\def \a@c@smallskip {\a@@par \smallskip \test@token }
+\def \a@c@medskip {\a@@par \medskip \test@token }
+\def \a@c@bigskip {\a@@par \bigskip \test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aparse.sty
+
+{\catcode `\< = \@other % better make sure
+\gdef \a@parse #1>{% parse token sequence into syllables
+\iftest@parse \tracingmacros = 1
+\iftest@scan \else \a@verb (#1)>\fi\fi
+\csname a@parse@hook\endcsname
+\last@con ={.}\last@mod = 0 \last@voc = 0 \global\@highfalse
+\global \sv@revwd ={}\global \a@revwd ={}\syl@beg #1<<<>%
+\iftest@parse \tracingmacros = 0 %
+\xpa \a@verb \xpa (\the\a@revwd )>\fi }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {01.03.2006} \def \a@level {q}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% alatex.sty
+
+\ifx \linenumbers \undefined
+\global\let \linenumbers \relax \fi
+\global\let \ifLineNumbers \iffalse
+% CAUTION: must be in \outer context!
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% abidir.sty
+
+\gdef \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 }
+
+\gdef \a@@Rinsert #1{% RL insertion inside Ltext
+%\tracingmacros 1
+\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 }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \a@back@line {% skip back over last line
+\ifLineNumbers % undo last linenumber
+ \unskip \unkern \unskip \unpenalty \setbox0 \lastbox
+ \ifvoid0 \else \global \advance \c@linenumber -1
+ \fi \unkern \unskip
+\fi \global\setbox \a@oldbox \lastbox % grab last text line
+\ifvoid \a@oldbox \prevdepth 0pt % start of paragraph
+\else \dimen0 \baselineskip \advance\dimen0 -\ht\a@oldbox
+ \advance\dimen0 -\lastskip \prevdepth \dimen0 % compute \prevdepth
+\fi \unskip }
+
+\gdef \a@@Rsplit #1{% splice RL words into the current paragraph
+\bgroup \global\a@oldoutput = \output
+\dimen0 \vsize \advance \dimen0 100pt \pagegoal \dimen0
+\everypar {}%
+\par \global\a@prevgraf \prevgraf
+\ifinner \a@back@line \else
+ \global\output = {\a@newoutput }\break
+\fi
+\dimen0 \pagegoal \advance \dimen0 -100pt \pagegoal \dimen0
+\ifvoid \a@oldbox \global \a@displaywidth \hsize
+\else \advance \a@prevgraf -1 \vskip -\parskip
+ \global \a@displaywidth \wd \a@oldbox
+ \setbox\a@oldbox \hbox {\hskip -\leftskip \unhbox\a@oldbox
+ \unskip \unskip \unpenalty \unpenalty }%
+\fi
+\setbox\Rinsertb@x \vbox {\a@box@rparm \a@box@aparm \let \par \endgraf
+ \putlineb@x {\hbox {\unhcopy\a@oldbox }}\a@spacefalse
+ \test@token #1 \end \hbox {\box\lineb@x \hfill }}%
+\a@Rgetline
+\setbox\tempb@x \hbox {\unhbox \tempb@x \unskip \unpenalty
+ \global\setbox \a@newbox \lastbox }%
+\noindent \prevgraf \a@prevgraf \unhcopy \a@newbox
+\ifdim \wd\a@newbox = 0pt \else
+\ifdim \wd\a@newbox = \parindent \else
+\ifdim \wd\tempb@x = 0pt \else \space \LRskip
+\fi\fi\fi
+\unhbox \tempb@x
+\ifvbox \Rinsertb@x \break \a@Runpack \else \RLskip
+\fi \egroup }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \a@newoutput {% intermediate output routine
+\global\output = \a@oldoutput
+%\ifnum \tracingmacros = 0 \else \showbox 255 \fi
+%\showbox255
+\setbox 255 \vbox {\unvbox 255 % put back into MVL
+%\tracingmacros 1
+\a@back@line }\unvbox 255 }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \a@Linsert #1{% splice Ltext into RL paragraph
+%\tracingmacros 1
+\putwordb@x {\RLskip }\a@spacefalse \a@@Linsert {#1}\a@Lunpack
+\putwordb@x {\LRskip }\a@spacetrue \arab@codes
+%\tracingmacros 0
+\test@token }
+
+\gdef \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 #1\clubpenalty 0 \widowpenalty 0 \tolerance 10000
+\endgraf \fontdimen4\font \dimen2 }}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabaux.sty
+
+\ifx \a@check@mathfonts \undefined
+\global\let \a@check@mathfonts \check@mathfonts
+\gdef\check@mathfonts{\tr@ceoff % dont trace fonts
+\a@check@mathfonts \tr@ceon }
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aedpatch.sty
+
+\let \ins@skip \relax
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabtex.sty
+
+%\long\def \test@@special #1{% check for special cases
+\long\gdef \test@special #1{% check for special cases
+\ifcat \bgroup \nxp \next@token % arabic group
+ \a@@putword \def \next {\arab@group {#1}}\else
+\if \relax \nxp #1% % command
+ \if\is@in@set #1\a@accent % known to scanner
+ \a@@append {#1}\def \next {\get@token }%
+ \else % general command
+ \a@@putword \def \next {\test@command #1}%
+ \fi \else
+\if \sp@ce \nxp \next@token % RTL space
+ \a@@putword \def \next {\get@token }\else
+\ifnum `#1 > 127 % inputenc command
+ \a@@append {#1}\def \next {\get@token}\else
+\ifcat \nxp ~\nxp #1% % active character
+ \a@@putword \def \next {\test@command #1}\else
+\if \nxp <\nxp #1\unarab@codes % Roman insert
+ \a@@putword \let \next \test@insert \else
+\ifx $#1\unarab@codes % Math insert
+ \a@@putword \let \next \test@math
+\else \a@@append {#1}\def \next {\get@token}% % normal case
+\fi\fi\fi\fi\fi\fi\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {16.04.2006} \def \a@level {r}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% abidir.sty
+
+\gdef \a@@Rinsert #1{% RL insertion inside Ltext
+%\tracingmacros 1
+\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
+\RLskip \egroup }
+
+\gdef \a@@Rsplit #1{% splice RL words into the current paragraph
+\bgroup \global\a@oldoutput = \output
+ \dimen0 \vsize \advance \dimen0 100pt \pagegoal \dimen0
+ \skip0 \lastskip \everypar {}\par \global\a@prevgraf \prevgraf
+\ifinner \a@back@line \else \global\output = {\a@newoutput }\break
+\fi
+ \dimen0 \pagegoal \advance \dimen0 -100pt \pagegoal \dimen0
+ \global\prevdepth \a@prevdepth
+\ifvoid \a@oldbox \global \a@displaywidth \hsize
+\else \advance \a@prevgraf -1 \vskip -\parskip
+ \global \a@displaywidth \wd \a@oldbox
+ \setbox\a@oldbox \hbox {\hskip -\leftskip \unhbox\a@oldbox
+ \unskip \unskip \unpenalty \unpenalty }%
+\fi
+\setbox\Rinsertb@x \vbox {\a@box@rparm \a@box@aparm \let \par \endgraf
+ \putlineb@x {\hbox {\unhcopy\a@oldbox }}\a@spacefalse
+ \test@token #1 \end \hbox {\box\lineb@x \hfill }}%
+\a@Rgetline
+\setbox\tempb@x \hbox {\unhbox \tempb@x \unskip \unpenalty
+ \global\setbox \a@newbox \lastbox }%
+\noindent \prevgraf \a@prevgraf \unhcopy \a@newbox
+\ifdim \wd\a@newbox = 0pt \else
+\ifdim \wd\a@newbox = \parindent \else
+\ifdim \wd\tempb@x = 0pt \else
+ \ifdim \skip0 = 0pt \else \hskip \skip0
+ \fi \LRskip
+\fi\fi\fi
+\unhbox \tempb@x
+\ifvbox \Rinsertb@x \break \a@Runpack
+\fi \egroup }
+
+\def \a@Runpack {% unpack all lines from the insertion
+\loop \a@Rgetline \unhbox \tempb@x \unskip \unskip \break
+\ifvbox \Rinsertb@x \repeat \unpenalty }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \a@pdatum {02.07.2006} \def \a@level {s}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\input alocal.sty % local patches!
+% must be idempotent!
+
+\ifx \a@patchlevel \undefined % first patching run
+\a@ident {apatch.sty}
+ {\a@version\a@level\space last minute patches } {\a@pdatum }
+ \edef \a@patchlevel {\a@version \a@level \space (\a@pdatum )}
+\else \a@message {version \a@patchlevel: second phase of patching}
+\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\catcode`\" = \patchdqcode \catcode`\@ = \patchatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/arababel.sty b/language/arabic/arabtex/texinput/arababel.sty
new file mode 100644
index 0000000000..04e750d52d
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arababel.sty
@@ -0,0 +1,39 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arababel.sty
+% protect against a conflict with the BABEL package
+% as suggested by Olaf Kummer and Johannes Braams
+% 10.03.98
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {arababel.sty}{3.07 BABEL compatibility } {10.03.1998}
+
+\def\peek@token#1#2{%
+ \expandafter\let\expandafter\bbl@nexta\csname #1\string#2\endcsname
+ \expandafter\let\expandafter\bbl@nextb
+ \csname system@active\string#2\endcsname
+ \futurelet\bbl@token\bbl@test@token}
+
+\def\bbl@test@token{%
+ \let\bbl@next\bbl@nexta
+ \ifcat\noexpand\bbl@token a%
+ \else
+ \ifcat\noexpand\bbl@token=%
+ \else
+ \ifcat\noexpand\bbl@token\noexpand\bbl@next
+ \else
+ \let\bbl@next\bbl@nextb
+ \fi
+ \fi
+ \fi
+ \bbl@next}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
diff --git a/language/arabic/arabtex/texinput/arabart.cls b/language/arabic/arabtex/texinput/arabart.cls
new file mode 100644
index 0000000000..2763605723
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arabart.cls
@@ -0,0 +1,24 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabart.cls
+% ArabTeX extension
+% Arabic version of article.cls
+% for use with ArabTeX Version 3.04
+%
+% Copyright (C) 1995 by Klaus Lagally
+% 21.05.96
+%
+% reusing arabrep.cls of 21 May 1996
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat {LaTeX2e}[1995/06/01]
+\ProvidesClass {arabart}[1996/05/21 v0.01 arabic article format]
+
+\DeclareOption* {\PassOptionsToClass {\CurrentOption}{arabrep}}
+\ProcessOptions
+\LoadClass [article]{arabrep}[1996/05/21] % load the Arabic report class
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% end of file arabart.cls
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/arabaux.sty b/language/arabic/arabtex/texinput/arabaux.sty
new file mode 100644
index 0000000000..466c0cfef7
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arabaux.sty
@@ -0,0 +1,134 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabaux.sty
+% auxiliary macros for ArabTeX
+% 27.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {arabaux.sty} {3.11 auxiliary macros for ArabTeX} {21.05.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@message #1{% ArabTeX message
+\message{(ArabTeX) #1}}
+
+\def \isfalse {\xxpa \iffalse \fi } % invert condition before \fi
+\def \setiffalse {\xpa \iffalse \fi } % invert condition before \fi
+
+\def \NOT #1{00\if #1\xpa \setiffalse \fi }
+
+\def \AND #1#2{00\if #1\if #2\else \xxpa \setiffalse \fi
+\else \xpa \setiffalse \fi }
+
+\def \OR #1#2{00\if #1\else \if #2\else \xpa \setiffalse \fi \fi }
+
+\def \isx #1#2{00\ifx #1#2\else\xpa \setiffalse \fi }
+
+\def \iscat #1#2{00\ifcat #1#2\else\xpa \setiffalse \fi }
+
+\def \is #1#2{00\if #1#2\else\xpa \setiffalse \fi }
+
+\long\def \Return #1\fi {\fi #1}
+\long\def \ReturnFi #1\fi {\fi #1}
+\long\def \ReturnElseFi #1\else #2\fi {\fi #1}
+
+\long\def \cond #1#2#3\fi {% call conditional
+#1\ReturnElseFi {#2}\else \ReturnFi {#3}\fi }
+
+%%%%%%%%%%%%%%%%%%%%
+
+\def \@gobble #1{}
+
+\let \protect \relax
+
+\ifx \@\undefined \def \@{@}\fi
+
+\ifx \nil \undefined \def \nil {NIL}\fi
+
+\def \pdef #1{% define robust command
+\edef #1{\nxp\protect \xpa\nxp\csname \xpa\@gobble\string #1 \endcsname }%
+\xpa\def \csname \xpa\@gobble\string #1 \endcsname }
+
+\def \a@extend #1#2{% extend command definition, no pars!
+\xpa\gdef \xpa#1\xpa{#1#2}}
+
+%%%%%%%%%%%%%%%%%%%%
+
+% map token to action
+% allow list of labels
+\def \case #1\of #{%
+ \begingroup \tracingmacros 0
+ \def \l@@kup ##1#1##2##{\h@@d }%
+ \getc@se #1\of }
+
+\def \getc@se #1\of #2#3\endcase {%
+ \doc@se #1#2\default {}\@end }
+
+\def \doc@se #1#2\default #3#4\@end {%
+ \l@@kup #2#1{#3}\@end }
+
+\def \h@@d #1#2\@end {\endgroup #1}
+
+% evaluate map: sets \result
+\def \evalcase #1\of #{%
+ \begingroup \tracingmacros 0
+ \def \l@@kup ##1#1##2##{\r@sult }%
+ \getc@se #1\of }
+
+\def \r@sult #1#2\@end {\endgroup \def \result {#1}}
+
+% apply function to map:
+\def \apply #1\tocase #2\of #{%
+ \begingroup \tracingmacros 0
+ \def \l@@kup ##1#2##2##{\@pply {#1}}%
+ \getc@se #2\of }
+
+\def \@pply #1#2#3\@end {\endgroup #1{#2}}
+
+%%%%%%%%%%%%%%%%%%%%%%%% tracing control %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \tr@ceoff {% suspend temporarily, local, no nesting!
+\edef \tr@ceon {\nxp\tracingmacros \the\tracingmacros }\tracingmacros 0 }
+
+\def \notr@ce {% suspend temporarily, for NFSS only, no nesting!
+\edef \dotr@ce {\nxp\tracingmacros \the\tracingmacros }\tracingmacros 0 }
+
+\let \tr@ceon \relax \let \dotr@ce \relax
+
+\let \a@setfontsize \@setfontsize
+
+\def \@setfontsize #1#2#3{% do not trace NFSS routine
+\notr@ce \a@setfontsize {#1}{#2}{#3}\dotr@ce }
+
+%%%%%%%%%%%%%%%%%%%%%%%% list utilities %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\long\def \is@in@list #1#2>{00% #1 token, #2 list
+ \begingroup \tracingmacros 0
+ \def \l@@kup ##1#1##2\@ {\endgroup \ifx >##2\isfalse \fi }%
+ \l@@kup #2#1>\@ }
+
+\long\def \ismember #1#2{00% #1 token, #2 list
+ \begingroup \tracingmacros 0
+ \def \l@@kup ##1#1##2\@@ {\endgroup \ifx \nil ##2\xpa \setiffalse \fi }%
+ \l@@kup #2#1\nil \@@ }
+
+\long\def \is@in@set #1#2{% #1 = symbol, #2 = token list of symbols
+\xpa \ismember \xpa #1\xpa {\the #2}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcount \hours \newcount \mins
+
+\def \timeofday
+{\hours \time \divide \hours 60 \the\hours:%
+\mins \time \multiply \hours 60 \advance \mins -\hours
+\ifnum 10 > \mins \relax 0\fi \the\mins }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
diff --git a/language/arabic/arabtex/texinput/arabbook.cls b/language/arabic/arabtex/texinput/arabbook.cls
new file mode 100644
index 0000000000..2677d06ab7
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arabbook.cls
@@ -0,0 +1,23 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabbook.cls
+% ArabTeX extension
+% Arabic version of book.cls
+% for use with ArabTeX Version 3.04
+%
+% Copyright (C) 1995 by Klaus Lagally
+% 21.05.96
+%
+% reusing arabrep.cls of 18 May 1996
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat {LaTeX2e}[1995/06/01]
+\ProvidesClass {arabbook}[1996/05/21 v0.01 arabic book format]
+
+\DeclareOption* {\PassOptionsToClass {\CurrentOption}{arabrep}}
+\ProcessOptions
+\LoadClass [book]{arabrep}[1996/05/18] % load the Arabic report class
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% end of file arabbook.cls
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/arabchrs.sty b/language/arabic/arabtex/texinput/arabchrs.sty
new file mode 100644
index 0000000000..f5486e59d0
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arabchrs.sty
@@ -0,0 +1,77 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabchrs.sty
+% ArabTeX
+% dynamic letter token definitions for Arabic
+% Version 11.07.98
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {arabchrs.sty} {3.07 letter token definitions } {11.07.1998}
+
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\gdef \def@arabchars {% define character macros for Arabic
+% dynamic letter token definitions for Arabic
+% pattern: skeleton, modifier
+\gdef \tc@@ {\sk@@ , 0 } % illegal
+\gdef \tc@a {\sk@a , 0 } % alif
+\gdef \tc@b {\sk@b , 4 } % bah
+\gdef \tc@c {\sk@hh , 7 } % gim with hamza
+\gdef \tc@d {\sk@d , 0 } % dal
+\gdef \tc@e {\sk@@ , 0 } % reserved for vowel
+\gdef \tc@f {\sk@f@s , 1 } % fah
+\gdef \tc@g {\sk@g@s , 0 } % gaf with bar
+\gdef \tc@h {\sk@h , 0 } % hah
+\gdef \tc@i {\sk@@ , 0 } % reserved for vowel
+\gdef \tc@j {\sk@r , 3 } % zhah
+\gdef \tc@k {\sk@k , 0 } % kaf
+\gdef \tc@l {\sk@l , 0 } % lam
+\gdef \tc@m {\sk@m , 0 } % mim
+\gdef \tc@n {\sk@n , 1 } % nun
+\gdef \tc@o {\sk@@ , 0 } % reserved for vowel
+\gdef \tc@p {\sk@b , 6 } % pah
+\gdef \tc@q {\sk@q , 2 } % qaf
+\gdef \tc@r {\sk@r , 0 } % rah
+\gdef \tc@s {\sk@s , 0 } % sin
+\gdef \tc@t {\sk@b , 2 } % tah
+\gdef \tc@u {\sk@@ , 0 } % reserved for vowel
+\gdef \tc@v {\sk@f@s , 3 } % vah
+\gdef \tc@w {\sk@w , 0 } % waw
+\gdef \tc@x {\sk@s , 3 } % shin
+\gdef \tc@y {\sk@y , 5 } % yah
+\gdef \tc@z {\sk@r , 1 } % zay
+%
+\gdef \tc@A {\sk@a , 0 } % alif also
+\gdef \tc@B {\sk@B , 0 } % tatwil
+\gdef \tc@C {\sk@b , 3 } % thah
+\gdef \tc@D {\sk@ss , 1 } % ddad
+\gdef \tc@E {\sk@y@p , 5 } % yah bari
+\gdef \tc@F {\sk@d , 1 } % dhal
+\gdef \tc@G {\sk@hh , 4 } % gim
+\gdef \tc@H {\sk@hh , 0 } % hhah
+\gdef \tc@I {\sk@@ , 0 } % reserved for vowel
+\gdef \tc@J {\sk@hh , 6 } % tchah
+\gdef \tc@K {\sk@k , 3 } % kaf-i-nun
+\gdef \tc@L {\sk@y@h , 0 } % yah with stroke
+\gdef \tc@M {\sk@n , 6 } % nya (Malay)
+\gdef \tc@N {\sk@W , 0 } % small space
+\gdef \tc@O {\sk@@ , 0 } % reserved for vowel
+\gdef \tc@P {\sk@ain , 0 } % `ain
+\gdef \tc@Q {\sk@Q , 0 } % hamza
+\gdef \tc@R {\sk@ain , 1 } % ghain
+\gdef \tc@S {\sk@ss , 0 } % ssad
+\gdef \tc@T {\sk@h@m , 2 } % tah marbuta
+\gdef \tc@U {\sk@@ , 0 } % reserved for vowel
+\gdef \tc@V {\sk@tt , 0 } % ttah
+\gdef \tc@W {\sk@W , 0 } % small space
+\gdef \tc@X {\sk@kh , 1 } % khah
+\gdef \tc@Y {\sk@y , 0 } % alif maqsura
+\gdef \tc@Z {\sk@tt , 1 } % zzah
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}}% end of dynamic letter token definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/arabext.sty b/language/arabic/arabtex/texinput/arabext.sty
new file mode 100644
index 0000000000..3e10ffc7e7
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arabext.sty
@@ -0,0 +1,103 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabext.sty
+% ArabTeX
+% 21.08.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% patches for arabtex.sty etc
+% for use with arabart.cls
+% ArabTeX 3.11
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {arabext.sty} {3.11 patches for use with arabart.cls} {21.08.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@ignorespaces {\test@token }
+
+\def \a@c@ref {\unarab@codes \a@@ref }
+
+\def \a@@ref #1{\putwordb@x {\ref {#1}}\arab@codes \test@token }
+
+\def \a@c@cite {\unarab@codes \a@@cite }
+
+\def \a@@cite #1{\putwordb@x {\rm \cite {#1}}\arab@codes \test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \arabdef #1{% define command valid for Arabic environment only
+\begingroup \escapechar -1
+\xdef \reserved@a {\xpa \nxp \csname a@\string #1\endcsname }\endgroup
+\toks@ \xpa {\xpa \let \xpa #1\reserved@a }\allowarab #1%
+\xpa \at@arabtext \xpa {\the\toks@ }\xpa \def \reserved@a }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@table {\unarab@codes \a@@table }
+
+\def \a@@table [#1]{% table within Arabic environment
+\let \a@endtable \endtable \def \endtable {\a@par \a@endtable }%
+\table [#1]%
+\arab@tail }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@figure {\unarab@codes \a@@figure }
+
+\def \a@@figure [#1]{% figure within Arabic environment
+\let \a@endfigure \endfigure \def \endfigure {\a@par \a@endfigure }%
+\figure [#1]%
+\arab@tail }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\all@w@ne \label
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@endtabular {\a@@endtabular \advance \parfillskip \rightskip
+\rightskip \leftskip \leftskip \parfillskip \parfillskip \z@ \par }
+
+\def \a@c@hline {% \\ missing
+\errmessage{table row not terminated: \string\\ inserted; proceed.}%
+\test@token \\ \hline }
+
+\def \a@c@tabular {\unarab@codes \let \@mkpream \a@mkpream
+\let \a@@endtabular \endtabular \let \endtabular \a@endtabular
+\a@@par \leavevmode \tabular }
+
+\def \a@c@array {\unarab@codes
+\let \a@@endtabular \endarray \let \endarray \a@endtabular
+\a@@par \leavevmode \array }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\let \a@@mkpream \@mkpream
+
+\def \a@c@a@RL {\test@token }
+
+\def \a@c@protect {\test@token }
+
+\def \a@mkpream #1{\a@@mkpream {#1}\let \@@sharp \relax \let \a@END \relax
+\edef \@sharp {\protect\a@SEQ \@@sharp \a@END }%
+\edef \@preamble {\@preamble}%
+\def \@@sharp {\@sharp }\let \@sharp \relax
+\edef \@preamble {\@preamble}}
+
+\def \a@SEQ {% put a sequence of words into a \hbox
+\begingroup \transfalse \showfalse
+\arab@codes \set@arabfont \@waslafalse \@wasfalse
+\def \next@command {\test@special}\let \a@put@line \break@line
+\def \a@last@line {\let \next \a@NL }\let \put@word \addt@line
+\initlineb@x \test@token }
+
+\def \a@c@a@END {\box\lineb@x \endgroup }
+
+\def \a@NL {\box\lineb@x \endgroup \\}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/arabrep.cls b/language/arabic/arabtex/texinput/arabrep.cls
new file mode 100644
index 0000000000..f901f18d61
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arabrep.cls
@@ -0,0 +1,1076 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabrep.cls
+% ArabTeX extension
+% Arabic version of report.cls
+% for use with ArabTeX Version 3.08 - 3.10
+%
+% Copyright (C) 1997 - 2003 by Klaus Lagally
+% 16.05.1997
+% 21.03.1999
+% 26.04.2003
+%
+% reusing report.cls (and book.cls) of 19 Jun 1995
+% reusing report.cls (and book.cls) of 26 May 1996
+% patches for pagenumbering 25 March 1999
+% 15.07.1999
+% 21.04.2000 % new font handling
+% 14.09.2001 % RTL footnotes, chapter names etc.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat {LaTeX2e}[1996/06/01]
+\ProvidesClass {arabrep}[2003/04/26 v3.11 arabic report format]
+
+\newif\if@mainmatter \@mainmattertrue
+\newif\ifa@book \a@bookfalse
+\newif\ifa@article \a@articlefalse
+\DeclareOption {book}{\a@booktrue \@mainmattertrue }
+\DeclareOption {article}{\a@articletrue \@mainmattertrue }
+\DeclareOption* {\PassOptionsToClass {\CurrentOption}{report}}
+\ProcessOptions
+\LoadClass {report}[1996/05/26] % load the LaTeX standard class
+
+\ifa@book \@openrighttrue \fi
+%\input{bk1\@ptsize.clo} % collision on \small !!
+
+\ifa@article \@titlepagefalse \fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%\RequirePackage {arabtex}[1997/05/08] % load the ArabTeX processor
+\RequirePackage {arabtex}[2003/04/26] % load the ArabTeX processor
+
+\UsePackage {altxext} % load local patches for LaTeX
+
+% ****************************************
+% * PAGE STYLES *
+% ****************************************
+
+\if@twoside % If two-sided printing.
+ \def \ps@headings {% for arabic mode
+ \let \@mkboth \markboth \def\@oddfoot{}\def\@evenfoot{}%
+ \def \@evenhead {\edef \thep@ge {\nxp\RL{\thepage }}% left heading
+ \a@normalfont \leftmark \hfil \thep@ge }%
+ \def \@oddhead {\edef \thep@ge {\nxp\RL{\thepage }}% right heading
+ \a@normalfont \thep@ge \hfil \rightmark }%
+ \def \chaptermark ##1{\markboth {##1%
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \hskip 1em\relax \RL{\@chapapp \space \thechapter. }%
+ \fi\fi }{}}%
+ \def \sectionmark ##1{\markleft {##1\ifnum \c@secnumdepth >\@ne
+ \hskip 1em\relax \RL{\thesection }\fi }}%
+ \ifa@article
+ \def \subsectionmark ##1{\markleft {##1\ifnum \c@secnumdepth >\@ne
+ \hskip 1em\relax \RL{\thesubsection }\fi }}%
+ \fi }
+\else % If one-sided printing.
+ \def \ps@headings {% for arabic mode
+ \let \@mkboth \markboth \def \@oddfoot{}\def \@evenfoot{}%
+ \def \@oddhead {\edef \thep@ge {\nxp\RL{\thepage }}% right heading
+ \a@normalfont \thep@ge \hfil \rightmark }%
+ \def \chaptermark ##1{\markright {##1%
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \hskip 1em\relax \RL{\@chapapp\space \thechapter. }%
+ \fi\fi }}}
+\fi
+
+\def \ps@plain {% for arabic mode
+ \let \@mkboth\@gobbletwo \let\@oddhead\@empty \let\@evenhead\@empty
+ \def \@oddfoot {\edef \thep@ge {\nxp\RL{\thepage }}% right heading
+ \a@normalfont \hfil \thep@ge \hfil }%
+ \let \@evenfoot\@oddfoot }
+
+\def \ps@myheadings {% for arabic mode
+ \let\@oddfoot \@empty \let\@evenfoot \@empty
+ \def \@oddhead {\edef \thep@ge {\nxp\RL{\thepage }}% right heading
+ \a@normalfont \thep@ge \hfil \rightmark }%
+ \def \@evenhead {\edef \thep@ge {\nxp\RL{\thepage }}% left heading
+ \a@normalfont \leftmark \hfil \thep@ge }%
+ \let\@mkboth\@gobbletwo \let\subsectionmark\@gobble
+ \let\chaptermark\@gobble \let\sectionmark\@gobble }
+
+% ****************************************
+% * TITLE AND ABSTRACT *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\if@titlepage
+ \newcommand\maketitle{\begin{titlepage}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \null\vfil
+ \vskip 60\p@
+ \begin{center}%
+ {\LARGE \@title \par}%
+ \vskip 3em%
+ {\large
+ \lineskip .75em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1.5em%
+ {\large \@date \par}% % Set date in \large size.
+ \end{center}\par
+ \@thanks
+ \vfil\null
+ \end{titlepage}%
+ \setcounter{footnote}{0}%
+ \let\thanks\relax\let\maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
+\else
+ \newcommand\maketitle{\par
+ \begingroup
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \def\@makefnmark{\hb@xt@\z@{$\m@th^{\@thefnmark}$\hss}}%
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hb@xt@1.8em{\hss\@makefnmark}##1}%
+ \if@twocolumn
+ \ifnum \col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \else
+ \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle
+ \fi
+ \thispagestyle{plain}\@thanks
+ \endgroup
+ \setcounter{footnote}{0}%
+ \let\thanks\relax
+ \let\maketitle\relax\let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
+
+ \def\@maketitle{%
+ \newpage
+ \null
+ \vskip 2em%
+ \begin{center}%
+ {\LARGE \@title \par}%
+ \vskip 1.5em%
+ {\large
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1em%
+ {\large \@date}%
+ \end{center}%
+ \par
+ \vskip 1.5em}
+\fi
+
+\else %============= arabart.cls ==================================
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * UNITS *
+% ****************************************
+
+\ifa@book
+\newcommand\frontmatter
+ {\cleardoublepage \@mainmatterfalse \pagenumbering{Abjad}}
+% {\cleardoublepage \@mainmatterfalse \pagenumbering{Abj}}
+\newcommand\mainmatter
+ {\cleardoublepage \@mainmattertrue \pagenumbering{arabic}}
+% {\cleardoublepage \@mainmattertrue \pagenumbering{arab}}
+\newcommand\backmatter
+ {\if@openright \cleardoublepage \else \clearpage
+ \fi \@mainmatterfalse }
+\fi
+
+\ifa@article
+\renewcommand\thesection {\@arabic\c@section}
+\fi
+
+%\allowarab \@chapapp
+
+% ****************************************
+% * PARTS *
+% ****************************************
+
+\renewcommand \thepart {\@arabic\c@part }
+
+\def \a@c@part {\a@@par
+\ifa@article \addvspace{4ex}\@afterindentfalse
+\else \cleardoublepage \thispagestyle{plain}%
+ \if@twocolumn \onecolumn \@tempswatrue
+ \else \@tempswafalse
+ \fi
+ \hbox{}\vfil
+\fi \secdef \a@part \a@spart }
+
+\ifa@article
+
+\def \a@part [#1]#2{% numbered part
+\ifnum \c@secnumdepth > \m@ne
+ \refstepcounter {part}%
+ \addcontentsline {toc}{part}{\protect\RL
+ {\protect\abjad {\thepart}\hspace {1em} #1 }}%
+\else \addcontentsline {toc}{part}{\protect\RL {#1}}%
+\fi
+\begingroup \let \end \a@@par \a@parindent \z@ \a@@raggedright
+ \a@normalfont \bfseries \interlinepenalty \@M
+\ifnum \c@secnumdepth >\m@ne
+ \Large \set@arabfont
+ \test@token \partname \abjad{\thepart } \end \nobreak
+\fi
+ \huge \set@arabfont \test@token #2 \end
+ \markboth {}{}
+\endgroup
+\nobreak \vskip 3ex
+\a@afterheading \test@token }
+
+\def \a@spart #1{% unnumbered part
+\begingroup \let \end \a@@par \a@@raggedright \a@parindent \z@
+ \interlinepenalty \@M
+ \a@normalfont \huge \bffamily \set@arabfont \test@token #1 \end
+\endgroup
+\nobreak \vskip 3ex
+\a@afterheading \test@token }
+
+\else % report or book
+
+\def \a@part [#1]#2{% numbered part
+ \ifnum \c@secnumdepth > \ifa@article \m@ne \else -2 \fi
+ \refstepcounter {part}%
+ \addcontentsline {toc}{part}{\protect\RL
+ {\protect\abjad {\thepart}\hspace {1em} #1 }}%
+ \else \addcontentsline {toc}{part}{\protect\RL {#1}}%
+ \fi
+ \markboth{}{}
+\begingroup \let \end \a@@par \a@@centering \interlinepenalty \@M
+ \a@normalfont \bfseries
+ \ifnum \c@secnumdepth > -2\relax
+ \huge \set@arabfont
+ \test@token \partname \abjad{\thepart } \end
+ \vskip 20\p@
+ \fi
+ \Huge \set@arabfont \test@token #2 \end
+\endgroup
+\@endpart \test@token }
+
+\def \a@spart #1{% unnumbered part
+\begingroup \let \end \a@@par \a@@centering \interlinepenalty \@M
+ \a@normalfont \Huge \bfseries \set@arabfont \test@token #1 \end
+\endgroup
+\@endpart \test@token }
+
+\fi % article, report or book
+
+\def\@part[#1]#2{% \part outside Arabic text
+\begin{arabtext}
+\a@part[\LR{#1}]{\LR{#2}}
+\end{arabtext}}
+
+\def\@spart#1{% \part* outside Arabic text
+\begin{arabtext}
+\a@spart {\LR{#1}}
+\end{arabtext}}
+
+% ****************************************
+% * CHAPTERS *
+% ****************************************
+
+
+\ifa@article \else % report or book
+\allowarab \thechapter
+
+\newcommand \a@c@chapter {\a@@par
+ \if@openright \cleardoublepage \else \clearpage \fi
+ \thispagestyle {plain}%
+ \global\@topnum \z@ \@afterindentfalse
+ \secdef \a@chapter \a@schapter }
+
+\def \a@chapter [#1]#2{% numbered chapter
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \refstepcounter {chapter}%
+ \typeout {\@chapapp \space \thechapter.}%
+ \addcontentsline {toc}{chapter}%
+ {\protect\numberline {\thechapter }\protect\RL {#1}}%
+ \else \addcontentsline {toc}{chapter}{\protect\RL {#1}}%
+ \fi
+ \else \addcontentsline {toc}{chapter}{\protect\RL {#1}}%
+ \fi
+\chaptermark{\RL {#1}}%
+\addtocontents {lof}{\protect\addvspace {10\p@}}%
+\addtocontents {lot}{\protect\addvspace {10\p@}}%
+ \if@twocolumn \@topnewpage [\a@makechapterhead {#2}]%
+ \else \a@makechapterhead {#2}\a@afterheading
+ \fi
+\tracingmacros 0
+\test@token }
+
+\def\a@makechapterhead #1{% make heading with number
+ \null \vskip 50\p@
+\begingroup \let \end \a@@par \a@@raggedright \interlinepenalty\@M
+ \a@normalfont \bfseries
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \edef \thechapter {\@chapapp \space \thechapter . }%
+ \huge \set@arabfont \test@token {\thechapter } \end
+ \nobreak \vskip 20\p@
+ \fi\fi
+ \Huge \set@arabfont \test@token #1 \end
+ \nobreak \vskip 40\p@
+\endgroup }
+
+\def\a@schapter #1{% unnumbered chapter
+ \if@twocolumn \@topnewpage [\a@makeschapterhead {#1}]%
+ \else \a@makeschapterhead {#1}\a@afterheading
+ \fi
+\test@token }
+
+\def\a@makeschapterhead #1{%
+\null \vskip 50\p@
+\begingroup \let \end \a@@par \a@@raggedright \interlinepenalty\@M
+ \a@normalfont \Huge \bfseries \set@arabfont \test@token #1 \end
+\endgroup
+\nobreak \vskip 40\p@ }
+
+\fi % report or book
+
+%*********************************************************************
+%*********************************************************************
+%************************* rest not yet adapted **********************
+%*********************************************************************
+%*********************************************************************
+
+% ****************************************
+% * SECTIONS *
+% ****************************************
+
+\def \a@c@section {\a@startsection
+{section}{1}{\z@}{-3.5ex plus-1ex minus -.2ex}{2.3ex plus.2ex}%
+%{\reset@font \Large\setnashbf }}
+{\a@normalfont \Large \bfseries }}
+
+\def \a@c@subsection {\a@startsection
+{subsection}{2}{\z@}{-3.25ex plus-1ex minus-.2ex}{1.5ex plus.2ex}%
+{\a@normalfont \large \bfseries }}
+
+\def \a@c@subsubsection {\a@startsection
+{subsubsection}{3}{\z@}{-3.25ex plus -1ex minus-.2ex}{1.5ex plus.2ex}%
+{\a@normalfont \normalsize \bfseries }}
+
+\def \a@c@paragraph {\a@startsection
+{paragraph}{4}{\z@}{3.25ex plus1ex minus.2ex}{-1em}%
+{\a@normalfont \normalsize \bfseries }}
+
+\def\a@c@subparagraph {\a@startsection
+{subparagraph}{5}{\parindent}{3.25ex plus1ex minus .2ex}{-1em}%
+{\a@normalfont \normalsize \bfseries }}
+
+% ****************************************
+% * LISTS *
+% ****************************************
+
+\at@arabtext {% switch to Arabic terms
+ \def\theenumii{\arabic{enumii}}
+ \def\theenumiii{\arabic{enumiii}}
+ \def\theenumiv{\arabic{enumiv}}
+%
+ \def\labelenumi{\theenumi\space-}
+ \def\labelenumii{\abj@d{\theenumii}-}
+ \def\labelenumiii{\theenumiii\nospace(}
+ \def\labelenumiv{\abj@d{\theenumiv}\nospace)}
+%
+ \def\labelitemi{$\circ$}
+ \def\labelitemii{$-$}
+ \def\labelitemiii{$\star$}
+ \def\labelitemiv{$+$}
+}
+
+% ****************************************
+% * OTHER ENVIRONMENTS *
+% ****************************************
+
+% DESCRIPTION
+
+\def \descriptionlabel #1{\setnashbf \RL{#1}\hskip \labelsep }
+\def \descriptionlabel #1{\bfseries \RL{#1}\hskip \labelsep }
+
+% THEOREM
+%%%%%%%%%%%%% NOT IMPLEMENTED
+
+% EQUATION and EQNARRAY
+%%%%%%%%%%%%% NOT IMPLEMENTED
+
+% TITLEPAGE
+%%%%%%%%%%%%% NOT IMPLEMENTED
+
+% TABBING
+%%%%%%%%%%%%% NOT IMPLEMENTED
+
+% MINIPAGE
+%%%%%%%%%%%%% NOT IMPLEMENTED
+
+% FRAMEBOX
+%%%%%%%%%%%%% NOT IMPLEMENTED
+
+% ****************************************
+% * ABSTRACT *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifa@book
+\else
+\if@titlepage
+ \newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \begin{center}%
+ \bfseries \abstractname
+ \@endparpenalty\@M
+ \end{center}}%
+ {\par\vfil\null\endtitlepage}
+\else
+ \newenvironment{abstract}{%
+ \if@twocolumn
+ \section*{\abstractname}%
+ \else
+ \small
+ \begin{center}%
+ {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
+ \end{center}%
+ \quotation
+ \fi}
+ {\if@twocolumn\else\endquotation\fi}
+\fi
+\fi
+
+\else %============= arabart.cls ==================================
+
+\ifa@book
+\else
+\if@titlepage
+\iffalse
+\newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \begin{center}%
+ \bfseries \abstractname
+ \@endparpenalty\@M
+ \end{center}}%
+ {\par\vfil\null\endtitlepage}
+\fi
+\else
+
+\def \a@c@abstract{%
+\if@twocolumn \def \next
+ {\a@c@section*{\abstractname}}%
+\else \def \next
+ {\small
+ \begingroup \center
+% \setnashbf \abstractname
+ \a@normalfont \bfseries \abstractname
+ \vspace{-.5em}\vspace{\z@}%
+ \endcenter \endgroup
+ \a@c@quotation }%
+\fi
+ \def \endabstract
+ {\if@twocolumn\else\endquotation\fi}%
+\next }
+
+\fi
+\fi
+
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * OTHER ENVIRONMENTS *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newenvironment{verse}
+ {\let\\=\@centercr
+ \list{}{\itemsep \z@
+ \itemindent -1.5em%
+ \listparindent\itemindent
+ \rightmargin \leftmargin
+ \advance\leftmargin 1.5em}%
+ \item[]}
+ {\endlist}
+
+\newenvironment{quotation}
+ {\list{}{\listparindent 1.5em%
+ \itemindent \listparindent
+ \rightmargin \leftmargin
+ \parsep \z@ \@plus\p@}%
+ \item[]}
+ {\endlist}
+
+\newenvironment{quote}
+ {\list{}{\rightmargin\leftmargin}%
+ \item[]}
+ {\endlist}
+
+\else %============= arabart.cls ==================================
+
+\def \a@c@verse {%
+%\tracingmacros 1
+\let \endverse \a@@endtrivlist
+\a@@list{}{\itemsep\z@ \itemindent -1.5em \listparindent \itemindent
+ \rightmargin\leftmargin \advance\leftmargin 1.5em}\a@@item[]}
+
+\def \a@c@quotation {%
+%\tracingmacros 1
+\a@@list{}{\listparindent 1.5em \itemindent\listparindent
+ \rightmargin\leftmargin \parsep \z@ plus\p@}\a@@item[]}
+
+\def \a@c@quote {%
+%\tracingmacros 1
+\let \endquote \a@@endtrivlist
+\a@@list{}{\rightmargin\leftmargin}\a@@item[]}
+
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * TITLE PAGE *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newenvironment{titlepage}
+{% \titlepage
+ \ifa@book
+ \cleardoublepage
+ \fi
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \if@compatibility
+ \setcounter{page}{0}
+ \else
+ \ifa@book \else
+ \setcounter{page}{1}%
+ \fi
+ \fi }%
+{% \endtitlepage
+ \if@restonecol\twocolumn \else \newpage \fi
+ \ifa@book \else
+ \setcounter{page}{1}%
+ \fi }
+
+\else %============= arabart.cls ==================================
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * APPENDIX *
+% ****************************************
+
+\def\a@c@appendix{%\par
+ \setcounter{section}{0}%
+ \renewcommand\@chapapp {\appendixname }%
+\ifa@article \renewcommand\thesection {\@Abjad \c@section }%
+ \setcounter{subsection}{0}%
+\else \renewcommand\thechapter {\@Abjad \c@chapter }%
+ \setcounter{chapter}{0}%
+\fi \test@token }
+
+% ****************************************
+% * FIGURES AND TABLES *
+% ****************************************
+
+\ifa@article
+ \renewcommand\theequation{\@arabic\c@equation}
+ \renewcommand\thefigure{\@arabic\c@figure}
+ \renewcommand\thetable{\@arabic\c@table}
+\fi
+
+\def\fnum@figure {\figurename \space \thefigure }
+
+\def\fnum@table {\tablename \space \thetable }
+
+\long\def \a@makecaption #1#2{%
+ \vskip\abovecaptionskip
+ \sbox\@tempboxa{#2 : #1}%
+ \ifdim \wd\@tempboxa >\hsize
+ #2 : #1\par
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip }
+
+\let \@makecaption \a@makecaption
+
+\long\def \a@caption #1[#2]#3{\par
+ \addcontentsline {\csname ext@#1\endcsname}{#1}
+ {\protect\numberline {\csname the#1\endcsname}\protect #2}%
+\begingroup \@parboxrestore \normalsize
+ \edef \reserved@a {\csname fnum@#1\endcsname }%
+ \@makecaption {\xpa \RL \xpa {\reserved@a }}{#3}\par
+\endgroup}
+
+\let \@caption \a@caption
+
+\long\def \a@@caption #1[#2]#3{\par
+ \addcontentsline {\csname ext@#1\endcsname}{#1}
+ {\protect\numberline {\csname the#1\endcsname}\protect\RL {#2}}%
+\begingroup \@parboxrestore \normalsize
+ \edef \reserved@a {\csname fnum@#1\endcsname }%
+ \@makecaption {\xpa \RL \xpa {\reserved@a }}{\RL {#3}}\par
+\endgroup \test@token }
+
+\at@arabtext {\let \@caption \a@@caption }
+
+\let \a@c@caption \caption
+
+% ****************************************
+% * TABLE OF CONTENTS, ETC. *
+% ****************************************
+
+\ifa@article \setcounter{tocdepth}{3}
+\else \setcounter{tocdepth}{2}
+\fi
+
+\setcounter{tocdepth}{5} % for test only
+
+\def \a@c@tableofcontents {\a@t@ble {\contentsname }{toc}}
+%\def \a@c@tableofcontents {\a@t@ble {\RL{\contentsname }}{toc}}
+
+\def \a@c@starttoc #1{\endarabtext
+\the\arabtext@hook
+\@starttoc {#1}\arabtext }
+
+%\def \a@t@ble #1#2{% \tableofcontents etc.
+% \a@c@section *{#1}\@mkboth {#1}{#1}\starttoc {#2}}
+
+%\def \a@c@@mkboth #1#2{\@mkboth {\RL{#1}}{\RL{#2}}\test@token }
+
+\def \a@l@section #1#2{% for arabic mode
+\ifnum \c@tocdepth >\z@
+ \addpenalty {\@secpenalty }\addvspace {1.0em plus\p@ }
+ \if@twocolumn \@tempdima 1.0em \else \@tempdima 1.5em \fi
+ \a@@lsection {#1}{#2}{\a@normalfont \bfseries }%
+\fi }
+
+\def \a@l@part #1#2{% for arabic mode
+\ifnum \c@tocdepth >-2\relax
+ \addpenalty {-\@highpenalty }\addvspace {2.25em plus\p@ }
+ \if@twocolumn \@tempdima 2.0em \else \@tempdima 3.0em \fi
+ \a@@lsection {#1}{#2}{\a@normalfont \large \bfseries }%
+\fi }
+
+\def \a@l@chapter #1#2{% for arabic mode
+\ifnum \c@tocdepth >\m@ne
+ \addpenalty {-\@highpenalty }\addvspace {1.0em plus\p@ }
+ \if@twocolumn \@tempdima 1.0em \else \@tempdima 1.5em \fi
+ \a@@lsection {#1}{#2}{\a@normalfont \bfseries }%
+ \penalty\@highpenalty
+\fi }
+
+\at@arabtext {% switch to Arabic terms
+ \let \l@part \a@l@part
+ \let \l@section \a@l@section
+ \let \l@chapter \a@l@chapter
+}
+
+\if@twocolumn
+ \def\l@subsection{\@dottedtocline{2}{1.0em}{1.5em}}
+ \def\l@subsubsection{\@dottedtocline{3}{2.5em}{2.3em}}
+ \def\l@paragraph{\@dottedtocline{4}{4.8em}{3.1em}}
+ \def\l@subparagraph{\@dottedtocline{5}{7.9em}{3.9em}}
+ \def\@tocrmarg {1.55em}
+\fi
+
+\def \a@c@listoffigures {\a@t@ble {\listfigurename }{lof}}
+
+\def \a@c@listoftables {\a@t@ble {\listtablename }{lot}}
+
+% ****************************************
+% * BIBLIOGRAPHY *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newdimen\bibindent
+\bibindent=1.5em
+
+\newenvironment{thebibliography}[1]
+% {\chapter*{\bibname
+ {\section*{\bibname
+ \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}}%
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy\clubpenalty4000\widowpenalty4000%
+ \sfcode`\.=\@m}
+ {\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}
+
+%\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
+%\let\@openbib@code\@empty
+
+\else %============= arabart.cls ==================================
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * THE INDEX *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand\newblock{}
+
+\newenvironment{theindex}
+ {\if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+ \columnseprule \z@
+ \columnsep 35\p@
+ \twocolumn[\@makeschapterhead{\indexname}]%
+ \@mkboth{\MakeUppercase\indexname}%
+ {\MakeUppercase\indexname}%
+ \thispagestyle{plain}\parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \let\item\@idxitem}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+
+\newcommand\@idxitem{\hangindent 40\p@}
+\newcommand\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
+\newcommand\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
+\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+
+\else %============= arabart.cls ==================================
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * FOOTNOTES *
+% ****************************************
+
+% Default definition
+\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
+
+\def \footnoterule{%
+ \kern-3\p@
+ \hbox to \columnwidth{\hskip .6\columnwidth \hrulefill }
+ \kern2.6\p@}
+
+\RLfootnotes
+
+% see also "alatex.sty"
+
+% ****************************************
+% * LANGUAGE DEPENDENT NAMES *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand\contentsname{Contents}
+\newcommand\listfigurename{List of Figures}
+\newcommand\listtablename{List of Tables}
+\newcommand\bibname{Bibliography}
+\newcommand\refname{References}
+\newcommand\indexname{Index}
+\newcommand\figurename{Figure}
+\newcommand\tablename{Table}
+\newcommand\partname{Part}
+\newcommand\chaptername{Chapter}
+\newcommand\appendixname{Appendix}
+\newcommand\abstractname{Abstract}
+
+\else %============= arabart.cls ==================================
+
+% tableofcontents = al-mu.htawayAtu
+% listoffigures = qA'imaTu al-.suwaru
+% listoftables = qA'imaTu al-^gadAwilu
+% listofpictures = qA'imaTu al-rusUmu
+% bibliography = al-marA^gi`u
+% references = al-ma.sAdiru
+% index = al-fihrisu (al-fihristu)
+% chapter = al-fa.slu
+% appendix = al-mul.haqu
+% abstract = al-mula_h_ha.su
+% attachments = al-murfaqAtu
+% number = al-raqmu
+
+%\at@arabtext {% switch to Arabic terms
+ \def\bibname {\a@tok(al-marAGiPu)}
+ \def\refname {\a@tok(al-maSAdiru)}
+ \def\indexname {\a@tok(al-fihristu)}
+ \def\figurename {\a@tok(SUraTuN)}
+ \def\tablename {\a@tok(GadwaluN)}
+ \def\partname {\a@tok(al-GuzQzu)}
+ \def\chaptername {\a@tok(al-faSlu)}
+ \def\appendixname {\a@tok(al-mulHaqu)}
+ \def\abstractname {\a@tok(al-mulaXXaSu)}
+%}
+
+\allowarab \contentsname
+\allowarab \listfigurename
+\allowarab \listtablename
+\allowarab \bibname
+\allowarab \refname
+\allowarab \indexname
+\allowarab \figurename
+\allowarab \tablename
+\allowarab \partname
+\allowarab \chaptername
+\allowarab \appendixname
+\allowarab \abstractname
+
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * INITIALIZATION *
+% ****************************************
+
+% Default initializations
+
+\ifa@book \pagestyle{headings}
+\else \pagestyle{plain}
+\fi
+
+\pagenumbering{arabic} % Arabic page numbers
+
+% ****************************************
+% * SIZE DEPENDENT PATCHES *
+% ****************************************
+
+\input {asize1\@ptsize.clo}
+
+\UsePackage {arabext} % load local patches for ArabTeX
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \contentsname{Contents}
+\gdef \listfigurename{List of Figures}
+\gdef \listtablename{List of Tables}
+
+\at@arabtext {% switch to Arabic terms
+ \def\contentsname {\a@tok(al-muHtawayAtu)}
+ \def\listfigurename {\a@tok(qAQAimaTu aS-Suwari)}
+ \def\listtablename {\a@tok(qAQAimaTu al-GadAwili)}
+ \def\chaptername {\a@tok(al-faSlu)}
+}
+
+\ifx \a@part \undefined \else
+
+% tableofcontents = al-mu.htawayAtu
+% listoffigures = qA'imaTu al-.suwaru
+% listoftables = qA'imaTu al-^gadAwilu
+% listofpictures = qA'imaTu al-rusUmu
+% bibliography = al-marA^gi`u
+% references = al-ma.sAdiru
+% index = al-fihrisu (al-fihristu)
+% chapter = al-fa.slu
+% appendix = al-mul.haqu
+% abstract = al-mula_h_ha.su
+% attachments = al-murfaqAtu
+% number = al-raqmu
+
+\def\bibname {\stdcode{al-marA^gi`u}}
+\def\refname {\stdcode{al-ma.sAdiru}}
+\def\indexname {\stdcode{al-fihristu}}
+\def\figurename {\stdcode{.sUraTuN}}
+\def\tablename {\stdcode{^gadwaluN}}
+\def\partname {\stdcode{al-^guz'u}}
+\def\chaptername {\stdcode{al-fa.slu}}
+\def\appendixname {\stdcode{al-mul.haqu}}
+\def\abstractname {\stdcode{al-mula_h_ha.su}}
+
+\at@arabtext {% switch to Arabic terms
+\def\contentsname {\stdcode{al-mu.htawayAtu}}
+\def\listfigurename {\stdcode{qA'imaTu al-.suwari}}
+\def\listtablename {\stdcode{qA'imaTu al-^gadAwili}}
+}
+\fi
+
+\def\a@makechapterhead #1{% make heading with number
+ \null \vskip 50\p@
+\begingroup \let \end \a@@par \a@@raggedright \interlinepenalty\@M
+ \a@normalfont \bfseries
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \edef \thechapter {\thechapter }%
+ \huge \set@arabfont \test@token \@chapapp {\thechapter} \end
+ \nobreak \vskip 20\p@
+ \fi\fi
+ \Huge \set@arabfont \test@token #1 \end
+ \nobreak \vskip 40\p@
+\endgroup }
+
+\allowarab \@chapapp
+
+\def\a@c@appendix{%\par
+ \setcounter{section}{0}%
+ \renewcommand\@chapapp {\appendixname }%
+\ifa@article \renewcommand\thesection {\@abjad \c@section }%
+ \setcounter{subsection}{0}%
+\else \renewcommand\thechapter {\@abjad \c@chapter }%
+ \setcounter{chapter}{0}%
+\fi \test@token }
+
+\def \a@chapter [#1]#2{% numbered chapter
+\ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \refstepcounter {chapter}%
+ \typeout {\@chapapp \space \thechapter.}%
+ \addcontentsline {toc}{chapter}%
+ {\protect\numberline
+ {\protect\RL{\protect\stdcode{\thechapter }}}%
+ \protect\RL {#1}}%
+ \else \addcontentsline {toc}{chapter}{\protect\RL {#1}}%
+ \fi
+\else \addcontentsline {toc}{chapter}{\protect\RL {#1}}%
+\fi
+\chaptermark{\RL {#1}}%
+\addtocontents {lof}{\protect\addvspace {10\p@}}%
+\addtocontents {lot}{\protect\addvspace {10\p@}}%
+\if@twocolumn \@topnewpage [\a@makechapterhead {#2}]%
+\else \a@makechapterhead {#2}\a@afterheading
+\fi \test@token }
+
+\long\def \a@@caption #1[#2]#3{\par
+ \addcontentsline {\csname ext@#1\endcsname}{#1}
+ {\protect\numberline {\csname the#1\endcsname}\protect\RL {#2}}%
+\begingroup \@parboxrestore \normalsize
+ \def \protect {\nxp\protect\nxp}
+ \edef \thecaption {\csname fnum@#1\endcsname }%
+ \let \protect \relax
+ \@makecaption {\RL {\thecaption }}{\RL {#3}}\par
+\endgroup \test@token }
+
+\long\def \a@makecaption #1#2{%
+ \vskip\abovecaptionskip
+ \sbox\@tempboxa{\RL{#1: #2}}%
+ \ifdim \wd\@tempboxa >\hsize
+\begin{arabtext} #1: #2
+\end{arabtext}
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip }
+
+\allowarab \caption
+\allowarab \thecaption
+
+\at@arabtext {\let \@caption \a@@caption
+\let \@makecaption \a@makecaption }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@l@section #1#2{% Text, Pageno
+% for arabic mode
+\ifnum \c@tocdepth >\z@
+ \addpenalty {\@secpenalty }%
+ \addvspace {1.0em plus\p@ }%
+% \@tempdima 1.5em
+ \@tempdima 1.0em
+% \@tempdima \if@twocolumn 1.0em \else 1.5em \fi \relax
+ \a@@lsection {#1}{#2}{\a@normalfont \bfseries }%
+\fi }
+
+\def \a@l@part #1#2{% Text, Pageno
+% for arabic mode
+\ifnum \c@tocdepth >-2\relax
+ \addpenalty {-\@highpenalty }%
+ \addvspace {2.25em plus\p@ }%
+ \@tempdima 2.0em
+% \@tempdima \if@twocolumn 2.0em \else 3.0em \fi \relax
+ \a@@lsection {#1}{#2}{\a@normalfont \large \bfseries }%
+\fi }
+
+\def \a@l@chapter #1#2{% Text, Pageno
+% for arabic mode
+\ifnum \c@tocdepth >\m@ne
+ \addpenalty {-\@highpenalty }%
+ \addvspace {1.0em plus\p@ }%
+% \@tempdima 1.5em
+ \@tempdima 1.0em
+% \@tempdima \if@twocolumn 1.0em \else 1.5em \fi \relax
+ \a@@lsection {#1}{#2}{\a@normalfont \bfseries }%
+ \penalty\@highpenalty
+\fi }
+
+\def \a@x@sect {% arabic section TOC formats if article
+ \def\a@l@subsection{\@dottedtocline{2}{1.0em}{1.5em}}
+ \def\a@l@subsubsection{\@dottedtocline{3}{2.5em}{2.1em}}
+ \def\a@l@paragraph{\@dottedtocline{4}{4.6em}{2.8em}}
+ \def\a@l@subparagraph{\@dottedtocline{5}{9.4em}{3.4em}}
+}
+
+\def \a@y@sect {% arabic section TOC formats if report or book
+ \def\a@l@section{\@dottedtocline{1}{1.0em}{1.5em}}
+ \def\a@l@subsection{\@dottedtocline{2}{2.5em}{2.1em}}
+ \def\a@l@subsubsection{\@dottedtocline{3}{4.6em}{2.8em}}
+ \def\a@l@paragraph{\@dottedtocline{4}{9.4em}{3.4em}}
+ \def\a@l@subparagraph{\@dottedtocline{5}{23.8em}{4.1em}}
+}
+
+\def \a@xy@sect {% arabic section TOC formats
+\ifa@article \a@x@sect \else \a@y@sect \fi }
+
+\def \a@c@tableofcontents {\a@xy@sect % define arabic section TOC formats
+\a@t@ble {\contentsname }{toc}}
+
+% CAUTION: \a@xy@sect must be executed before expanding \the\arabtex@hook
+% and prior to \@starttoc within \a@t@ble, see arabrep.cls
+
+\def\a@l@figure{\@dottedtocline{1}{1.0em}{1.5em}}
+\def\a@l@table{\@dottedtocline{1}{1.0em}{1.5em}}
+
+\at@arabtext {% switch to Arabic terms, execute from asect::a@t@ble
+ \let \l@part \a@l@part
+ \let \l@chapter \a@l@chapter
+ \let \l@section \a@l@section
+ \let \l@subsection \a@l@subsection
+ \let \l@subsubsection \a@l@subsubsection
+ \let \l@paragraph \a@l@paragraph
+ \let \l@subparagraph \a@l@subparagraph
+ \let \l@figure \a@l@figure
+ \let \l@table \a@l@table
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% restore LaTeX version, delete \a@caption!
+
+\long\def\@caption#1[#2]#3{%
+ \par
+ \addcontentsline{\csname ext@#1\endcsname}{#1}%
+ {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
+ \begingroup
+ \@parboxrestore
+ \if@minipage
+ \@setminipage
+ \fi
+ \normalsize
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup}
+
+\long\def \a@caption #1[#2]#3{\par
+ \addcontentsline {\csname ext@#1\endcsname}{#1}
+ {\protect\numberline {\csname the#1\endcsname}\protect #2}%
+\begingroup \@parboxrestore \normalsize
+ \protected@edef \reserved@a {\csname fnum@#1\endcsname }%
+ \xpa\@makecaption \xpa{\xpa\RL \xpa{\reserved@a }}{#3}\par
+\endgroup}
+
+%\let \@caption \a@caption
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% end of file arabrep.cls
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/arabrep1.cls b/language/arabic/arabtex/texinput/arabrep1.cls
new file mode 100644
index 0000000000..e308a8d9e4
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arabrep1.cls
@@ -0,0 +1,914 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabrep.cls
+% ArabTeX extension
+% Arabic version of report.cls
+% for use with ArabTeX Version 3.08 - 3.10
+%
+% Copyright (C) 1997, 1999 by Klaus Lagally
+% 16.05.1997
+% 21.03.1999
+%
+% reusing report.cls (and book.cls) of 19 Jun 1995
+% reusing report.cls (and book.cls) of 26 May 1996
+% patches for pagenumbering 25 March 1999
+% 15.07.1999
+% 21.04.2000 % new font handling
+% 14.09.2001 % RTL footnotes, chapter names etc.
+% 16.02.2002 % input encoding at \part
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat {LaTeX2e}[1996/06/01]
+%\ProvidesClass {arabrep}[2001/09/14 v3.10 arabic report format]
+\ProvidesClass {arabrep}[2002/02/16 v3.11 arabic report format]
+
+\newif\if@mainmatter \@mainmattertrue
+\newif\ifa@book \a@bookfalse
+\newif\ifa@article \a@articlefalse
+\DeclareOption {book}{\a@booktrue \@mainmattertrue }
+\DeclareOption {article}{\a@articletrue \@mainmattertrue }
+\DeclareOption* {\PassOptionsToClass {\CurrentOption}{report}}
+\ProcessOptions
+\LoadClass {report}[1996/05/26] % load the LaTeX standard class
+
+\ifa@book \@openrighttrue \fi
+%\input{bk1\@ptsize.clo} % collision on \small !!
+
+\ifa@article \@titlepagefalse \fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%\RequirePackage {arabtex}[1997/05/08] % load the ArabTeX processor
+\RequirePackage {arabtex}[2000/04/21] % load the ArabTeX processor
+
+\UsePackage {latexext} % load local patches for LaTeX
+
+% ****************************************
+% * PAGE STYLES *
+% ****************************************
+
+\if@twoside % If two-sided printing.
+ \def \ps@headings {% for arabic mode
+ \let \@mkboth \markboth \def\@oddfoot{}\def\@evenfoot{}%
+ \def \@evenhead {\edef \thep@ge {\nxp\RL{\thepage }}% left heading
+ \a@normalfont \leftmark \hfil \thep@ge }%
+ \def \@oddhead {\edef \thep@ge {\nxp\RL{\thepage }}% right heading
+ \a@normalfont \thep@ge \hfil \rightmark }%
+ \def \chaptermark ##1{\markboth {##1%
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \hskip 1em\relax \RL{\@chapapp \space \thechapter. }%
+ \fi\fi }{}}%
+ \def \sectionmark ##1{\markleft {##1\ifnum \c@secnumdepth >\@ne
+ \hskip 1em\relax \RL{\thesection }\fi }}%
+ \ifa@article
+ \def \subsectionmark ##1{\markleft {##1\ifnum \c@secnumdepth >\@ne
+ \hskip 1em\relax \RL{\thesubsection }\fi }}%
+ \fi }
+\else % If one-sided printing.
+ \def \ps@headings {% for arabic mode
+ \let \@mkboth \markboth \def \@oddfoot{}\def \@evenfoot{}%
+ \def \@oddhead {\edef \thep@ge {\nxp\RL{\thepage }}% right heading
+ \a@normalfont \thep@ge \hfil \rightmark }%
+ \def \chaptermark ##1{\markright {##1%
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \hskip 1em\relax \RL{\@chapapp\space \thechapter. }%
+ \fi\fi }}}
+\fi
+
+\def \ps@plain {% for arabic mode
+ \let \@mkboth\@gobbletwo \let\@oddhead\@empty \let\@evenhead\@empty
+ \def \@oddfoot {\edef \thep@ge {\nxp\RL{\thepage }}% right heading
+ \a@normalfont \hfil \thep@ge \hfil }%
+ \let \@evenfoot\@oddfoot }
+
+\def \ps@myheadings {% for arabic mode
+ \let\@oddfoot \@empty \let\@evenfoot \@empty
+ \def \@oddhead {\edef \thep@ge {\nxp\RL{\thepage }}% right heading
+ \a@normalfont \thep@ge \hfil \rightmark }%
+ \def \@evenhead {\edef \thep@ge {\nxp\RL{\thepage }}% left heading
+ \a@normalfont \leftmark \hfil \thep@ge }%
+ \let\@mkboth\@gobbletwo \let\subsectionmark\@gobble
+ \let\chaptermark\@gobble \let\sectionmark\@gobble }
+
+% ****************************************
+% * TITLE AND ABSTRACT *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\if@titlepage
+ \newcommand\maketitle{\begin{titlepage}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \null\vfil
+ \vskip 60\p@
+ \begin{center}%
+ {\LARGE \@title \par}%
+ \vskip 3em%
+ {\large
+ \lineskip .75em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1.5em%
+ {\large \@date \par}% % Set date in \large size.
+ \end{center}\par
+ \@thanks
+ \vfil\null
+ \end{titlepage}%
+ \setcounter{footnote}{0}%
+ \let\thanks\relax\let\maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
+\else
+ \newcommand\maketitle{\par
+ \begingroup
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \def\@makefnmark{\hb@xt@\z@{$\m@th^{\@thefnmark}$\hss}}%
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hb@xt@1.8em{\hss\@makefnmark}##1}%
+ \if@twocolumn
+ \ifnum \col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \else
+ \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle
+ \fi
+ \thispagestyle{plain}\@thanks
+ \endgroup
+ \setcounter{footnote}{0}%
+ \let\thanks\relax
+ \let\maketitle\relax\let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
+
+ \def\@maketitle{%
+ \newpage
+ \null
+ \vskip 2em%
+ \begin{center}%
+ {\LARGE \@title \par}%
+ \vskip 1.5em%
+ {\large
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1em%
+ {\large \@date}%
+ \end{center}%
+ \par
+ \vskip 1.5em}
+\fi
+
+\else %============= arabart.cls ==================================
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * UNITS *
+% ****************************************
+
+\ifa@book
+\newcommand\frontmatter
+ {\cleardoublepage \@mainmatterfalse \pagenumbering{Abjad}}
+% {\cleardoublepage \@mainmatterfalse \pagenumbering{Abj}}
+\newcommand\mainmatter
+ {\cleardoublepage \@mainmattertrue \pagenumbering{arabic}}
+% {\cleardoublepage \@mainmattertrue \pagenumbering{arab}}
+\newcommand\backmatter
+ {\if@openright \cleardoublepage \else \clearpage
+ \fi \@mainmatterfalse }
+\fi
+
+\ifa@article
+\renewcommand\thesection {\@arabic\c@section}
+\fi
+
+%\allowarab \@chapapp
+
+% ****************************************
+% * PARTS *
+% ****************************************
+
+\renewcommand \thepart {\@arabic\c@part }
+
+\def \a@c@part {\a@@par
+\ifa@article \addvspace{4ex}\@afterindentfalse
+\else \cleardoublepage \thispagestyle{plain}%
+ \if@twocolumn \onecolumn \@tempswatrue
+ \else \@tempswafalse
+ \fi
+ \hbox{}\vfil
+\fi \secdef \a@part \a@spart }
+
+\ifa@article
+
+\def \a@part [#1]#2{% numbered part
+\ifnum \c@secnumdepth > \m@ne
+ \refstepcounter {part}%
+ \addcontentsline {toc}{part}{\protect\RL
+ {\protect\abjad {\thepart}\hspace {1em} #1 }}%
+\else \addcontentsline {toc}{part}{\protect\RL {#1}}%
+\fi
+\begingroup \let \end \a@@par \a@parindent \z@ \a@@raggedright
+ \a@normalfont \bfseries \interlinepenalty \@M
+\ifnum \c@secnumdepth >\m@ne
+ \Large \set@arabfont
+ \test@token \partname \abjad{\thepart } \end \nobreak
+\fi
+ \huge \set@arabfont \test@token #2 \end
+ \markboth {}{}
+\endgroup
+\nobreak \vskip 3ex
+\a@afterheading \test@token }
+
+\def \a@part [#1]#2{% numbered part
+\ifnum \c@secnumdepth > \m@ne
+ \refstepcounter {part}%
+ \addcontentsline {toc}{part}{\protect\RL
+ {\protect\abjad {\thepart}\hspace {1em} #1 }}%
+\else \addcontentsline {toc}{part}{\protect\RL {#1}}%
+\fi
+\begingroup \let \end \a@@par \a@parindent \z@ \a@@raggedright
+ \a@normalfont \bfseries \interlinepenalty \@M
+\ifnum \c@secnumdepth >\m@ne
+ \Large \set@arabfont
+{\let \a@oldcode \sc@code \setcode{arabtex}%
+ \test@token \partname \abjad{\thepart } \end
+\xpa\setcode\xpa{\a@oldcode }}%
+ \nobreak
+\fi
+ \huge \set@arabfont \test@token #2 \end
+ \markboth {}{}
+\endgroup
+\nobreak \vskip 3ex
+\a@afterheading \test@token }
+
+\def \a@spart #1{% unnumbered part
+\begingroup \let \end \a@@par \a@@raggedright \a@parindent \z@
+ \interlinepenalty \@M
+ \a@normalfont \huge \bffamily \set@arabfont \test@token #1 \end
+\endgroup
+\nobreak \vskip 3ex
+\a@afterheading \test@token }
+
+\else % report or book
+
+\def \a@part [#1]#2{% numbered part
+ \ifnum \c@secnumdepth > \ifa@article \m@ne \else -2 \fi
+ \refstepcounter {part}%
+ \addcontentsline {toc}{part}{\protect\RL
+ {\protect\abjad {\thepart}\hspace {1em} #1 }}%
+ \else \addcontentsline {toc}{part}{\protect\RL {#1}}%
+ \fi
+ \markboth{}{}
+\begingroup \let \end \a@@par \a@@centering \interlinepenalty \@M
+ \a@normalfont \bfseries
+ \ifnum \c@secnumdepth > -2\relax
+ \huge \set@arabfont
+ \test@token \partname \abjad{\thepart } \end
+ \vskip 20\p@
+ \fi
+ \Huge \set@arabfont \test@token #2 \end
+\endgroup
+\@endpart \test@token }
+
+\def \a@part [#1]#2{% numbered part
+\ifnum \c@secnumdepth > \ifa@article \m@ne \else -2 \fi
+ \refstepcounter {part}%
+ \addcontentsline {toc}{part}{\protect\RL
+ {\protect\abjad {\thepart}\hspace {1em} #1 }}%
+\else \addcontentsline {toc}{part}{\protect\RL {#1}}%
+\fi
+\markboth{}{}
+\begingroup \let \end \a@@par \a@@centering \interlinepenalty \@M
+ \a@normalfont \bfseries
+\ifnum \c@secnumdepth > -2\relax
+ \huge \set@arabfont
+{\let \a@oldcode \sc@code \setcode{arabtex}%
+ \test@token \partname \abjad{\thepart } \end
+\xpa\setcode\xpa{\a@oldcode }}%
+ \vskip 20\p@
+\fi
+ \Huge \set@arabfont \test@token #2 \end
+\endgroup
+\@endpart \test@token }
+
+\def \a@spart #1{% unnumbered part
+\begingroup \let \end \a@@par \a@@centering \interlinepenalty \@M
+ \a@normalfont \Huge \bfseries \set@arabfont \test@token #1 \end
+\endgroup
+\@endpart \test@token }
+
+\fi % article, report or book
+
+\def\@part[#1]#2{% \part outside Arabic text
+\begin{arabtext}
+\a@part[\LR{#1}]{\LR{#2}}
+\end{arabtext}}
+
+\def\@spart#1{% \part* outside Arabic text
+\begin{arabtext}
+\a@spart {\LR{#1}}
+\end{arabtext}}
+
+% ****************************************
+% * CHAPTERS *
+% ****************************************
+
+
+\ifa@article \else % report or book
+\allowarab \thechapter
+
+\newcommand \a@c@chapter {\a@@par
+ \if@openright \cleardoublepage \else \clearpage \fi
+ \thispagestyle {plain}%
+ \global\@topnum \z@ \@afterindentfalse
+ \secdef \a@chapter \a@schapter }
+
+\def \a@chapter [#1]#2{% numbered chapter
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \refstepcounter {chapter}%
+ \typeout {\@chapapp \space \thechapter.}%
+ \addcontentsline {toc}{chapter}%
+ {\protect\numberline {\thechapter }\protect\RL {#1}}%
+ \else \addcontentsline {toc}{chapter}{\protect\RL {#1}}%
+ \fi
+ \else \addcontentsline {toc}{chapter}{\protect\RL {#1}}%
+ \fi
+\chaptermark{\RL {#1}}%
+\addtocontents {lof}{\protect\addvspace {10\p@}}%
+\addtocontents {lot}{\protect\addvspace {10\p@}}%
+ \if@twocolumn \@topnewpage [\a@makechapterhead {#2}]%
+ \else \a@makechapterhead {#2}\a@afterheading
+ \fi
+\tracingmacros 0
+\test@token }
+
+\def\a@makechapterhead #1{% make heading with number
+ \null \vskip 50\p@
+\begingroup \let \end \a@@par \a@@raggedright \interlinepenalty\@M
+ \a@normalfont \bfseries
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \edef \thechapter {\@chapapp \space \thechapter . }%
+ \huge \set@arabfont \test@token {\thechapter } \end
+ \nobreak \vskip 20\p@
+ \fi\fi
+ \Huge \set@arabfont \test@token #1 \end
+ \nobreak \vskip 40\p@
+\endgroup }
+
+\def\a@schapter #1{% unnumbered chapter
+ \if@twocolumn \@topnewpage [\a@makeschapterhead {#1}]%
+ \else \a@makeschapterhead {#1}\a@afterheading
+ \fi
+\test@token }
+
+\def\a@makeschapterhead #1{%
+\null \vskip 50\p@
+\begingroup \let \end \a@@par \a@@raggedright \interlinepenalty\@M
+ \a@normalfont \Huge \bfseries \set@arabfont \test@token #1 \end
+\endgroup
+\nobreak \vskip 40\p@ }
+
+\fi % report or book
+
+%*********************************************************************
+%*********************************************************************
+%************************* rest not yet adapted **********************
+%*********************************************************************
+%*********************************************************************
+
+% ****************************************
+% * SECTIONS *
+% ****************************************
+
+\def \a@c@section {\a@startsection
+{section}{1}{\z@}{-3.5ex plus-1ex minus -.2ex}{2.3ex plus.2ex}%
+%{\reset@font \Large\setnashbf }}
+{\a@normalfont \Large \bfseries }}
+
+\def \a@c@subsection {\a@startsection
+{subsection}{2}{\z@}{-3.25ex plus-1ex minus-.2ex}{1.5ex plus.2ex}%
+{\a@normalfont \large \bfseries }}
+
+\def \a@c@subsubsection {\a@startsection
+{subsubsection}{3}{\z@}{-3.25ex plus -1ex minus-.2ex}{1.5ex plus.2ex}%
+{\a@normalfont \normalsize \bfseries }}
+
+\def \a@c@paragraph {\a@startsection
+{paragraph}{4}{\z@}{3.25ex plus1ex minus.2ex}{-1em}%
+{\a@normalfont \normalsize \bfseries }}
+
+\def\a@c@subparagraph {\a@startsection
+{subparagraph}{5}{\parindent}{3.25ex plus1ex minus .2ex}{-1em}%
+{\a@normalfont \normalsize \bfseries }}
+
+% ****************************************
+% * LISTS *
+% ****************************************
+
+\at@arabtext {% switch to Arabic terms
+ \def\theenumii{\arabic{enumii}}
+ \def\theenumiii{\arabic{enumiii}}
+ \def\theenumiv{\arabic{enumiv}}
+%
+ \def\labelenumi{\theenumi\space-}
+ \def\labelenumii{\abj@d{\theenumii}-}
+ \def\labelenumiii{\theenumiii\nospace(}
+ \def\labelenumiv{\abj@d{\theenumiv}\nospace)}
+%
+ \def\labelitemi{$\circ$}
+ \def\labelitemii{$-$}
+ \def\labelitemiii{$\star$}
+ \def\labelitemiv{$+$}
+}
+
+% ****************************************
+% * OTHER ENVIRONMENTS *
+% ****************************************
+
+% DESCRIPTION
+
+\def \descriptionlabel #1{\setnashbf \RL{#1}\hskip \labelsep }
+\def \descriptionlabel #1{\bfseries \RL{#1}\hskip \labelsep }
+
+% THEOREM
+%%%%%%%%%%%%% NOT IMPLEMENTED
+
+% EQUATION and EQNARRAY
+%%%%%%%%%%%%% NOT IMPLEMENTED
+
+% TITLEPAGE
+%%%%%%%%%%%%% NOT IMPLEMENTED
+
+% TABBING
+%%%%%%%%%%%%% NOT IMPLEMENTED
+
+% MINIPAGE
+%%%%%%%%%%%%% NOT IMPLEMENTED
+
+% FRAMEBOX
+%%%%%%%%%%%%% NOT IMPLEMENTED
+
+% ****************************************
+% * ABSTRACT *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifa@book
+\else
+\if@titlepage
+ \newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \begin{center}%
+ \bfseries \abstractname
+ \@endparpenalty\@M
+ \end{center}}%
+ {\par\vfil\null\endtitlepage}
+\else
+ \newenvironment{abstract}{%
+ \if@twocolumn
+ \section*{\abstractname}%
+ \else
+ \small
+ \begin{center}%
+ {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
+ \end{center}%
+ \quotation
+ \fi}
+ {\if@twocolumn\else\endquotation\fi}
+\fi
+\fi
+
+\else %============= arabart.cls ==================================
+
+\ifa@book
+\else
+\if@titlepage
+\iffalse
+\newenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \begin{center}%
+ \bfseries \abstractname
+ \@endparpenalty\@M
+ \end{center}}%
+ {\par\vfil\null\endtitlepage}
+\fi
+\else
+
+\def \a@c@abstract{%
+\if@twocolumn \def \next
+ {\a@c@section*{\abstractname}}%
+\else \def \next
+ {\small
+ \begingroup \center
+% \setnashbf \abstractname
+ \a@normalfont \bfseries \abstractname
+ \vspace{-.5em}\vspace{\z@}%
+ \endcenter \endgroup
+ \a@c@quotation }%
+\fi
+ \def \endabstract
+ {\if@twocolumn\else\endquotation\fi}%
+\next }
+
+\fi
+\fi
+
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * OTHER ENVIRONMENTS *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newenvironment{verse}
+ {\let\\=\@centercr
+ \list{}{\itemsep \z@
+ \itemindent -1.5em%
+ \listparindent\itemindent
+ \rightmargin \leftmargin
+ \advance\leftmargin 1.5em}%
+ \item[]}
+ {\endlist}
+
+\newenvironment{quotation}
+ {\list{}{\listparindent 1.5em%
+ \itemindent \listparindent
+ \rightmargin \leftmargin
+ \parsep \z@ \@plus\p@}%
+ \item[]}
+ {\endlist}
+
+\newenvironment{quote}
+ {\list{}{\rightmargin\leftmargin}%
+ \item[]}
+ {\endlist}
+
+\else %============= arabart.cls ==================================
+
+\def \a@c@verse {%
+%\tracingmacros 1
+\let \endverse \a@@endtrivlist
+\a@@list{}{\itemsep\z@ \itemindent -1.5em \listparindent \itemindent
+ \rightmargin\leftmargin \advance\leftmargin 1.5em}\a@@item[]}
+
+\def \a@c@quotation {%
+%\tracingmacros 1
+\a@@list{}{\listparindent 1.5em \itemindent\listparindent
+ \rightmargin\leftmargin \parsep \z@ plus\p@}\a@@item[]}
+
+\def \a@c@quote {%
+%\tracingmacros 1
+\let \endquote \a@@endtrivlist
+\a@@list{}{\rightmargin\leftmargin}\a@@item[]}
+
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * TITLE PAGE *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newenvironment{titlepage}
+{% \titlepage
+ \ifa@book
+ \cleardoublepage
+ \fi
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse\newpage
+ \fi
+ \thispagestyle{empty}%
+ \if@compatibility
+ \setcounter{page}{0}
+ \else
+ \ifa@book \else
+ \setcounter{page}{1}%
+ \fi
+ \fi }%
+{% \endtitlepage
+ \if@restonecol\twocolumn \else \newpage \fi
+ \ifa@book \else
+ \setcounter{page}{1}%
+ \fi }
+
+\else %============= arabart.cls ==================================
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * APPENDIX *
+% ****************************************
+
+\def\a@c@appendix{%\par
+ \setcounter{section}{0}%
+ \renewcommand\@chapapp {\appendixname }%
+\ifa@article \renewcommand\thesection {\@Abjad \c@section }%
+ \setcounter{subsection}{0}%
+\else \renewcommand\thechapter {\@Abjad \c@chapter }%
+ \setcounter{chapter}{0}%
+\fi \test@token }
+
+% ****************************************
+% * FIGURES AND TABLES *
+% ****************************************
+
+\ifa@article
+ \renewcommand\theequation{\@arabic\c@equation}
+ \renewcommand\thefigure{\@arabic\c@figure}
+ \renewcommand\thetable{\@arabic\c@table}
+\fi
+
+\def\fnum@figure {\figurename \space \thefigure }
+
+\def\fnum@table {\tablename \space \thetable }
+
+\long\def \a@makecaption #1#2{%
+ \vskip\abovecaptionskip
+ \sbox\@tempboxa{#2 : #1}%
+ \ifdim \wd\@tempboxa >\hsize
+ #2 : #1\par
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip }
+
+\let \@makecaption \a@makecaption
+
+\long\def \a@caption #1[#2]#3{\par
+ \addcontentsline {\csname ext@#1\endcsname}{#1}
+ {\protect\numberline {\csname the#1\endcsname}\protect #2}%
+\begingroup \@parboxrestore \normalsize
+ \edef \reserved@a {\csname fnum@#1\endcsname }%
+ \@makecaption {\xpa \RL \xpa {\reserved@a }}{#3}\par
+\endgroup}
+
+\let \@caption \a@caption
+
+\long\def \a@@caption #1[#2]#3{\par
+ \addcontentsline {\csname ext@#1\endcsname}{#1}
+ {\protect\numberline {\csname the#1\endcsname}\protect\RL {#2}}%
+\begingroup \@parboxrestore \normalsize
+ \edef \reserved@a {\csname fnum@#1\endcsname }%
+ \@makecaption {\xpa \RL \xpa {\reserved@a }}{\RL {#3}}\par
+\endgroup \test@token }
+
+\at@arabtext {\let \@caption \a@@caption }
+
+\let \a@c@caption \caption
+
+% ****************************************
+% * TABLE OF CONTENTS, ETC. *
+% ****************************************
+
+\ifa@article \setcounter{tocdepth}{3}
+\else \setcounter{tocdepth}{2}
+\fi
+
+\setcounter{tocdepth}{5} % for test only
+
+\def \a@c@tableofcontents {\a@t@ble {\contentsname }{toc}}
+%\def \a@c@tableofcontents {\a@t@ble {\RL{\contentsname }}{toc}}
+
+\def \a@c@starttoc #1{\endarabtext
+\the\arabtext@hook
+\@starttoc {#1}\arabtext }
+
+%\def \a@t@ble #1#2{% \tableofcontents etc.
+% \a@c@section *{#1}\@mkboth {#1}{#1}\starttoc {#2}}
+
+%\def \a@c@@mkboth #1#2{\@mkboth {\RL{#1}}{\RL{#2}}\test@token }
+
+\def \a@l@section #1#2{% for arabic mode
+\ifnum \c@tocdepth >\z@
+ \addpenalty {\@secpenalty }\addvspace {1.0em plus\p@ }
+ \if@twocolumn \@tempdima 1.0em \else \@tempdima 1.5em \fi
+ \a@@lsection {#1}{#2}{\a@normalfont \bfseries }%
+\fi }
+
+\def \a@l@part #1#2{% for arabic mode
+\ifnum \c@tocdepth >-2\relax
+ \addpenalty {-\@highpenalty }\addvspace {2.25em plus\p@ }
+ \if@twocolumn \@tempdima 2.0em \else \@tempdima 3.0em \fi
+ \a@@lsection {#1}{#2}{\a@normalfont \large \bfseries }%
+\fi }
+
+\def \a@l@chapter #1#2{% for arabic mode
+\ifnum \c@tocdepth >\m@ne
+ \addpenalty {-\@highpenalty }\addvspace {1.0em plus\p@ }
+ \if@twocolumn \@tempdima 1.0em \else \@tempdima 1.5em \fi
+ \a@@lsection {#1}{#2}{\a@normalfont \bfseries }%
+ \penalty\@highpenalty
+\fi }
+
+\at@arabtext {% switch to Arabic terms
+ \let \l@part \a@l@part
+ \let \l@section \a@l@section
+ \let \l@chapter \a@l@chapter
+}
+
+\if@twocolumn
+ \def\l@subsection{\@dottedtocline{2}{1.0em}{1.5em}}
+ \def\l@subsubsection{\@dottedtocline{3}{2.5em}{2.3em}}
+ \def\l@paragraph{\@dottedtocline{4}{4.8em}{3.1em}}
+ \def\l@subparagraph{\@dottedtocline{5}{7.9em}{3.9em}}
+ \def\@tocrmarg {1.55em}
+\fi
+
+\def \a@c@listoffigures {\a@t@ble {\listfigurename }{lof}}
+
+\def \a@c@listoftables {\a@t@ble {\listtablename }{lot}}
+
+% ****************************************
+% * BIBLIOGRAPHY *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newdimen\bibindent
+\bibindent=1.5em
+
+\newenvironment{thebibliography}[1]
+% {\chapter*{\bibname
+ {\section*{\bibname
+ \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}}%
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy\clubpenalty4000\widowpenalty4000%
+ \sfcode`\.=\@m}
+ {\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}
+
+%\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
+%\let\@openbib@code\@empty
+
+\else %============= arabart.cls ==================================
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * THE INDEX *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand\newblock{}
+
+\newenvironment{theindex}
+ {\if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+ \columnseprule \z@
+ \columnsep 35\p@
+ \twocolumn[\@makeschapterhead{\indexname}]%
+ \@mkboth{\MakeUppercase\indexname}%
+ {\MakeUppercase\indexname}%
+ \thispagestyle{plain}\parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \let\item\@idxitem}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+
+\newcommand\@idxitem{\hangindent 40\p@}
+\newcommand\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
+\newcommand\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
+\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+
+\else %============= arabart.cls ==================================
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * FOOTNOTES *
+% ****************************************
+
+% Default definition
+\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
+
+\def \footnoterule{%
+ \kern-3\p@
+ \hbox to \columnwidth{\hskip .6\columnwidth \hrulefill }
+ \kern2.6\p@}
+
+\RLfootnotes
+
+% see also "alatex.sty"
+
+% ****************************************
+% * LANGUAGE DEPENDENT NAMES *
+% ****************************************
+
+\iffalse %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand\contentsname{Contents}
+\newcommand\listfigurename{List of Figures}
+\newcommand\listtablename{List of Tables}
+\newcommand\bibname{Bibliography}
+\newcommand\refname{References}
+\newcommand\indexname{Index}
+\newcommand\figurename{Figure}
+\newcommand\tablename{Table}
+\newcommand\partname{Part}
+\newcommand\chaptername{Chapter}
+\newcommand\appendixname{Appendix}
+\newcommand\abstractname{Abstract}
+
+\else %============= arabart.cls ==================================
+
+% tableofcontents = al-mu.htawayAtu
+% listoffigures = qA'imaTu al-.suwaru
+% listoftables = qA'imaTu al-^gadAwilu
+% listofpictures = qA'imaTu al-rusUmu
+% bibliography = al-marA^gi`u
+% references = al-ma.sAdiru
+% index = al-fihrisu (al-fihristu)
+% chapter = al-fa.slu
+% appendix = al-mul.haqu
+% abstract = al-mula_h_ha.su
+% attachments = al-murfaqAtu
+% number = al-raqmu
+
+%\at@arabtext {% switch to Arabic terms
+ \def\bibname {\a@tok(al-marAGiPu)}
+ \def\refname {\a@tok(al-maSAdiru)}
+ \def\indexname {\a@tok(al-fihristu)}
+ \def\figurename {\a@tok(SUraTuN)}
+ \def\tablename {\a@tok(GadwaluN)}
+ \def\partname {\a@tok(al-GuzQzu)}
+ \def\chaptername {\a@tok(al-faSlu)}
+ \def\appendixname {\a@tok(al-mulHaqu)}
+ \def\abstractname {\a@tok(al-mulaXXaSu)}
+%}
+
+\allowarab \contentsname
+\allowarab \listfigurename
+\allowarab \listtablename
+\allowarab \bibname
+\allowarab \refname
+\allowarab \indexname
+\allowarab \figurename
+\allowarab \tablename
+\allowarab \partname
+\allowarab \chaptername
+\allowarab \appendixname
+\allowarab \abstractname
+
+\fi %%%%%%%%%%%%%%%% article.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ****************************************
+% * INITIALIZATION *
+% ****************************************
+
+% Default initializations
+
+\ifa@book \pagestyle{headings}
+\else \pagestyle{plain}
+\fi
+
+\pagenumbering{arabic} % Arabic page numbers
+
+% ****************************************
+% * SIZE DEPENDENT PATCHES *
+% ****************************************
+
+\input {asize1\@ptsize.clo}
+
+\UsePackage {arabext} % load local patches for ArabTeX
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \contentsname{Contents}
+\gdef \listfigurename{List of Figures}
+\gdef \listtablename{List of Tables}
+
+\at@arabtext {% switch to Arabic terms
+ \def\contentsname {\a@tok(al-muHtawayAtu)}
+ \def\listfigurename {\a@tok(qAQAimaTu aS-Suwari)}
+ \def\listtablename {\a@tok(qAQAimaTu al-GadAwili)}
+ \def\chaptername {\a@tok(al-faSlu)}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% end of file arabrep.cls
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/arabskel.sty b/language/arabic/arabtex/texinput/arabskel.sty
new file mode 100644
index 0000000000..b866b05af5
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arabskel.sty
@@ -0,0 +1,185 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabskel.sty
+% ArabTeX
+% character skeleton definitions for font nash14
+% called in HMODE
+% Version 04.06.2000
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \sklatcode = \catcode`\@ \catcode`\@ = 11
+\a@ident {arabskel.sty}{3.10 character skeleton definitions }{04.06.2000}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Arabic
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\gdef \seta@skels {% define \ArabTeX character skeletons for font nash
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% pattern: class, code, connect, {iso, fin, med, ini}
+\gdef \sk@@ {10 ,\a@block ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % illegal
+\gdef \sk@def {10 ,\a@block ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % default
+
+% basic letters
+\gdef \sk@a {10 ,\a@alif ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % alif
+\gdef \sk@ain { 4 ,\a@ain ,1 ,{{4,0}{4,1}{0,0}{2,0}}} % `ain
+\gdef \sk@b { 1 ,\a@bah ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % bah, no dot
+\gdef \sk@b@p { 9 ,\a@bah@p ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % bah, loop
+\gdef \sk@d {10 ,\a@dal ,0 ,{{0,0}{0,0}{0,2}{0,0}}} % dal
+\gdef \sk@d@p {10 ,\a@dal@p ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % dal, loop
+\gdef \sk@dd { 2 ,\a@dad ,1 ,{{2,4}{2,4}{0,1}{0,2}}} % ddad
+\gdef \sk@f { 6 ,\a@fah ,1 ,{{0,5}{0,5}{0,0}{2,1}}} % fah
+\gdef \sk@f@s { 6 ,\a@fah@s ,1 ,{{0,5}{0,5}{0,0}{2,0}}} % fah, no dot
+\let \sk@g \sk@@
+\gdef \sk@g@p { 5 ,\a@gaf@p ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % gaf, loop
+\gdef \sk@g@s { 5 ,\a@gaf@s ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % gaf, bar
+\let \sk@g@ps \sk@@
+\gdef \sk@h {10 ,\a@hah ,1 ,{{0,0}{0,-1}{0,0}{0,0}}} % hah
+\gdef \sk@h@m {10 ,\a@hah ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % hah marbouta
+\gdef \sk@h@s {10 ,\a@h@s ,1 ,{{1,0}{0,0}{0,0}{0,0}}} % urdu hah
+\gdef \sk@hh { 3 ,\a@hhah ,1 ,{{4,0}{4,0}{0,0}{0,2}}} % hhah
+\gdef \sk@j { 3 ,\a@gim ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % gim
+\gdef \sk@k { 5 ,\a@kaf ,1 ,{{0,2}{0,2}{0,0}{0,-1}}} % kaf
+\gdef \sk@k@p { 5 ,\a@kaf@p@s,1,{{0,2}{0,2}{0,0}{0,-1}}} % kaf, loop
+\gdef \sk@k@s { 5 ,\a@kaf@s ,1 ,{{0,2}{0,2}{0,0}{0,-1}}} % kaf, no mark
+\gdef \sk@k@w { 5 ,\a@kaf@w ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % wide kaf
+\gdef \sk@kh { 3 ,\a@khah ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % khah
+\gdef \sk@l { 0 ,\a@lam ,1 ,{{0,3}{0,2}{0,0}{0,0}}} % lam
+\gdef \sk@l@w { 0 ,\a@lam@l ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % lower lam
+\gdef \sk@m {10 ,\a@mim ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % mim
+\gdef \sk@n { 1 ,\a@nun ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % nun, no dot
+\gdef \sk@n@p { 9 ,\a@nun@p ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % nun, loop
+\gdef \sk@q { 6 ,\a@qaf ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % qaf
+\let \sk@q@s \sk@@
+\gdef \sk@r { 8 ,\a@rah ,0 ,{{0,2}{0,1}{0,0}{0,0}}} % rah
+\gdef \sk@r@p { 8 ,\a@rah@p ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % rah, loop
+\gdef \sk@r@s { 8 ,\a@rah@s ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % rah, two dots
+\gdef \sk@s { 2 ,\a@sin ,1 ,{{2,6}{2,4}{0,1}{0,3}}} % sin
+\gdef \sk@s@p { 2 ,\a@sin@p ,1 ,{{0,6}{0,4}{0,2}{0,4}}} % sin, two dots
+\gdef \sk@sh { 2 ,\a@shin ,1 ,{{2,6}{2,4}{0,2}{0,2}}} % shin
+\gdef \sk@ss { 2 ,\a@sad ,1 ,{{2,4}{2,4}{0,1}{0,2}}} % ssad
+\gdef \sk@ts { 3 ,\a@tsah ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % tchah
+\gdef \sk@tt { 7 ,\a@ttah ,1 ,{{1,2}{1,2}{1,1}{1,1}}} % ttah
+\gdef \sk@v { 6 ,\a@vah ,1 ,{{0,5}{0,5}{0,0}{0,0}}} % vah
+\gdef \sk@w {10 ,\a@waw ,0 ,{{0,1}{0,1}{0,0}{0,0}}} % waw
+\let \sk@w@r \sk@@
+\let \sk@w@b \sk@@
+\gdef \sk@y { 1 ,\a@yah ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % yah
+\gdef \sk@y@h { 1 ,\a@yah@h ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % yah, stroke
+\gdef \sk@y@p { 1 ,\a@yah@p ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % yah bari
+\let \sk@y@ps \sk@@
+\gdef \sk@z { 8 ,\a@zay ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % zay
+\gdef \sk@zh { 8 ,\a@zhah ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % zhah
+\gdef \sk@zz { 7 ,\a@zzah ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % zzah
+
+% special forms
+\gdef \sk@sn@s { 2 ,\a@sin@spec ,1 ,{{2,6}{2,4}{0,-2}{0,-1}}} % sin short
+\gdef \sk@sd@s { 2 ,\a@sad@spec ,1 ,{{2,4}{2,4}{0,-3}{0,-2}}} % ssad short
+\gdef \sk@j@cl { 3 ,\a@gim@close ,1 ,{{0,0}{0,0}{0,0}{0,1}}} % gim closed
+\gdef \sk@k@sh { 5 ,\a@kaf@spec ,1 ,{{0,2}{0,2}{0,0}{0,0}}} % kaf, short
+\let \sk@k@sp \sk@@
+\gdef \sk@g@ph { 5 ,\a@gaf@p ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % gaf' short
+\gdef \sk@g@sh { 5 ,\a@gaf@s ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % gaf- short
+\let \sk@g@sp \sk@@
+\gdef \sk@y@s { 1 ,\a@yah@spec ,1 ,{{0,0}{0,2}{0,0}{0,0}}} % yah lig
+\gdef \sk@y@h@s { 1 ,\a@yah@h@spec ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % yah' lig
+\gdef \sk@j@s { 3 ,\a@gim@spec ,1 ,{{0,0}{0,0}{0,1}{0,0}}} % gim short
+\gdef \sk@hh@s { 3, \a@hhah@spec ,1 ,{{4,0}{4,6}{0,1}{0,0}}} % hhah short
+\gdef \sk@kh@s { 3 ,\a@khah@spec ,1 ,{{0,0}{0,0}{0,1}{0,0}}} % khah short
+\gdef \sk@ts@s { 3 ,\a@tsah@spec ,1 ,{{0,0}{0,0}{0,1}{0,0}}} % tchah short
+\gdef \sk@l@a {10 ,\a@lam@alif ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % lam-alif
+\let \sk@m@si \sk@@
+
+% specials
+\gdef \sk@B {10 ,\a@tatwil,1 ,{{0,0}{0,0}{0,0}{0,0}}} % tatwil
+\gdef \sk@Q {10 ,\a@hamzc ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % hamza char
+\gdef \sk@W {10 ,\a@break ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % small space 34
+\gdef \sk@spc {10 ,\a@smspc ,1 ,{{0,0}{0,0}{2,0}{2,0}}} % small space 36
+\gdef \sk@skip{10 ,\a@skip ,1 ,{{0,0}{0,0}{2,0}{2,0}}} % small space 37
+
+% ligatures
+\gdef \sk@b@sp { 1 ,\a@bah@spec ,1 ,{{0,0}{0,0}{0,0}{0,1}}} % r-b-?
+\gdef \sk@b@g { 1 ,\a@bah@spec@gim ,1 ,{{0,0}{0,0}{0,2}{0,4}}} % j-b-?
+\gdef \sk@b@h { 1 ,\a@bah@high ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % s-b-?
+\gdef \sk@b@y { 1 ,\a@bah@spec@yah ,1 ,{{0,0}{0,0}{0,-1}{0,0}}} % y-b-?
+\gdef \sk@b@e@m { 1 ,\a@bah@end@mim ,1 ,{{0,0}{0,0}{0,1}{0,0}}} % m-b-?
+\gdef \sk@b@m@m { 1 ,\a@bah@mid@mim ,1 ,{{0,0}{0,0}{2,2}{2,2}}} % m-b-?
+\gdef \sk@b@e@h { 1 ,\a@bah@end@hah ,1 ,{{0,0}{0,0}{2,2}{0,0}}} % h-b-?
+\gdef \sk@h@s@l {10 ,\a@hah@spec@lam ,1 ,{{1,0}{0,0}{1,-3}{0,0}}} % E-h-?
+\gdef \sk@l@h { 0 ,\a@lam@spec@hah ,1 ,{{0,0}{0,0}{0,0}{0,-3}}} % m-l-|
+\gdef \sk@l@g { 0 ,\a@lam@gim ,1 ,{{0,0}{0,0}{0,0}{0,4}}} % j-l-|
+\gdef \sk@l@g@s { 0 ,\a@lam@gim ,1 ,{{0,0}{0,0}{0,0}{0,1}}} % j-l-|
+\gdef \sk@l@y { 0 ,\a@lam@spec@yah ,1 ,{{0,0}{0,0}{0,1}{0,0}}} % j-l-?
+\gdef \sk@l@m { 0 ,\a@lam@spec@mim ,1 ,{{0,0}{0,0}{0,0}{0,-2}}} % m-l-|
+\gdef \sk@l@lng { 0 ,\a@lam@long ,1 ,{{0,0}{0,0}{0,0}{0,1}}} % y-l-|
+\gdef \sk@m@s {10 ,\a@mim@spec ,1 ,{{0,0}{0,-1}{0,2}{0,2}}} % ?-m-l
+\gdef \sk@m@s@h {10 ,\a@mim@spec@high,1 ,{{0,0}{0,0}{0,0}{0,0}}} % j-m-|
+\gdef \sk@m@s@l {10 ,\a@mim@spec@long,1 ,{{0,0}{0,0}{0,-2}{0,0}}} % ?-m-l
+\gdef \sk@m@s@m {10 ,\a@mim@spec@mim ,1 ,{{0,0}{0,0}{0,5}{0,0}}} % m-m-|
+\gdef \sk@m@l@g {10 ,\a@mim@lam@gim ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % j-m-l
+\gdef \sk@l@spc {10 ,\a@smspc ,1 ,{{0,0}{0,0}{0,0}{0,-4}}} % small space
+
+\global\let \sk@free \sk@W % phantom for outtable
+
+\global\let \sk@b@s \sk@b
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}}% end of dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\seta@skels % activate skeletons
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% ACT = 1. char
+\def \set@act #1{\def \act@skel {#1}\xpa \unp@ck@act #1\relax }
+
+\def \get@act {\xxpa \unp@ck@act \act@skel \relax }
+
+\def \new@act #1{\xxpa \unp@ck@act #1\relax }
+
+\def \unp@ck@act #1,#2,#3,#4\relax {% unpack skeleton description
+\act@cls #1\act@cd #2\act@con #3\def \act@dia {#4}}
+
+% CHR = 2. char
+\def \set@chr #1{\def \chr@skel {#1}\xpa \unp@ck@chr #1\relax }
+
+\def \get@chr {\xxpa \unp@ck@chr \chr@skel \relax }
+
+\def \new@chr #1{\xxpa \unp@ck@chr #1\relax }
+
+\def \unp@ck@chr #1,#2,#3,#4\relax {% unpack skeleton description
+\chr@cls #1\chr@cd #2\chr@con #3\def \chr@dia {#4}}
+
+% SKL = 3. char
+\def \set@skl #1{\def \skl@skel {#1}\xpa \unp@ck@skl #1\relax }
+
+\def \get@skl {\xxpa \unp@ck@skl \skl@skel \relax }
+
+\def \new@skl #1{\xxpa \unp@ck@skl #1\relax }
+
+\def \unp@ck@skl #1,#2,#3,#4\relax {% unpack skeleton description
+\skl@cls #1\skl@cd #2\skl@con #3\def \skl@dia {#4}}
+
+\def \a@skl@init {% default attributes
+\set@skel \sk@def }
+
+\def \dia@pos #1#2#3#4#5\relax {% unpack diacritics list
+\edef \temp {\ifcase #5 #1\or #2\or #3\or #4\fi }%
+\xpa \get@dia \temp \relax }
+
+\def \get@dia #1,#2\relax {% position of diacritic
+\def \dia@mod {#1}\def \dia@hadj {#2}}
+
+\def \dia@mod {0} \def \dia@hadj {0}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \bah@cls 1 \chardef \gim@cls 3 \chardef \kaf@cls 5
+\chardef \rah@cls 8 \chardef \other@cls 10
+
+\catcode`\@ = \sklatcode
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/arabsymb.sty b/language/arabic/arabtex/texinput/arabsymb.sty
new file mode 100644
index 0000000000..709d9e1e0b
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arabsymb.sty
@@ -0,0 +1,192 @@
+%%%%%%%%%%%%%%%%%%%% xarbsymb.sty %%%%%%%%%%%%%%%%%%%%
+% 20.4.1998 11:30:59
+% code assignments for arabic font in ArabTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+% 20.04.98
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {xarbsymb.sty} {3.07 symbolic output encoding } {12.07.1997}
+
+\chardef \a@nashcode = '1 % file has been read
+
+%%%%%%%%%%%%%%%%%% connection forms %%%%%%%%%%%%%%%%%%
+
+\chardef \a@f@iso = '0 % isolated
+\chardef \a@f@end = '1 % final
+\chardef \a@f@mid = '2 % medial
+\chardef \a@f@beg = '3 % initial
+
+%%%%%%%%%%%%%%%%%% diacritical marks %%%%%%%%%%%%%%%%%
+
+\chardef \a@ttah@dia = '010 % for urdu
+\chardef \a@one@dot@up = '011 %
+\chardef \a@two@dots@down = '012 %
+\chardef \a@fatha = '013 %
+\chardef \a@kasra = '013 %
+\chardef \a@damma = '014 %
+\chardef \a@hamza = '015 %
+\chardef \a@madda = '016 %
+\chardef \a@shadda = '017 %
+\chardef \a@two@dots@up = '020 %
+\chardef \a@three@dots@up = '021 %
+\chardef \a@three@dots@down = '022 %
+\chardef \a@fathatan = '023 %
+\chardef \a@kasratan = '023 %
+\chardef \a@dammatan = '024 %
+\chardef \a@sukun = '025 %
+\chardef \a@wasla = '026 %
+\chardef \a@quran@alif = '027 %
+\chardef \a@bow@dia = '030 % for kurdish
+\chardef \a@e@dia = '040 % for pashto
+\chardef \a@zwarakay = '040 % for pashto
+\chardef \a@one@dot@down = '056 % period
+\chardef \a@h@dia = '146 % for urdu
+\chardef \a@ammad = '146 % for pashto
+
+%%%%%%%%%%%%%%%%%% letters %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \a@alif = '100 % 100,101
+\chardef \a@bah@s = '110 % 110-113
+%% gim 140 140-143
+\chardef \a@hhah = '150 % 150-153
+\chardef \a@khah = '160 % 160-163
+%% tsah 170 170-173
+\chardef \a@dal = '130 % 130,131
+\chardef \a@rah = '120 % 120,121
+%% zay 122 122,123
+%% zhah 124 124,125
+\chardef \a@sin = '200 % 200-203
+%% shin 210 210-213
+\chardef \a@sad = '220 % 220-223
+%% dad 230 230-233
+\chardef \a@kaf@w = '234 % 234-237 wide kaf
+\chardef \a@ttah = '240 % 240-243
+%% zzah 244 244-247
+\chardef \a@ain = '250 % 250-253
+\chardef \a@fah@s = '254 % 254-257 fah family
+%% fah 362 362,363
+\chardef \a@qaf = '364 % 364,365
+%% vah 366 366,367
+\chardef \a@kaf@s = '270 % 270-273 kaf family
+\chardef \a@kaf = '274 % 274,275
+\chardef \a@gaf@s = '300 % 300-303 gaf family
+\chardef \a@gaf = '304 % 304,305
+\chardef \a@lam = '310 % 310-313
+\chardef \a@mim = '320 % 320-323
+\chardef \a@nun = '340 % 340,341
+\chardef \a@hah = '350 % 350-354
+\chardef \a@waw = '360 % 360,361
+\chardef \a@yah = '370 % 370,371
+
+\chardef \a@hamza@iso = '132 % 132
+
+\chardef \a@alif@iso = \a@alif % 100
+\chardef \a@alif@end = '101 % 101
+\chardef \a@bah = \a@bah@s % 110
+\chardef \a@hamzc = \a@hamza@iso % 132
+
+%%%%%%%%%%%%%%%%%% special characters %%%%%%%%%%%%%%%%%%%
+
+\chardef \a@block = '000 % 000-003
+\chardef \a@tatwil = '004 % 004-007
+
+\chardef \a@rquotes = '042 % 042
+\chardef \a@period = '056 % 056
+\chardef \a@lquotes = '134 % 134
+
+\chardef \a@space@spec = '044 % 046,047 carrier for dots
+\chardef \a@skip = '045 % 047 small space, initial (!)
+\chardef \a@no@break = '046 % 046 no space, breaks ligatures
+\chardef \a@break = '047 % 047 small space, medial
+
+\chardef \a@smspc = \a@space@spec % 044
+
+%%%%%%%%%%%%%%%%%% ligatures %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \a@bah@spec@gim = '027 % 031 medial bah before gim
+\chardef \a@bah@beg@gim = '030 % 032 initial (!) bah before gim
+\chardef \a@g@to@mb = '031 % 033 medial bah to gim
+\chardef \a@bah@high = '032 % 034,035 before sin, sad
+\chardef \a@bah@spec = '034 % 036,037 bah before final rah, nun
+\chardef \a@lam@spec@low = '072 % 074 medial lam for 'allah'
+\chardef \a@alif@spec@mim = '075 % 076 final alif after mim
+\chardef \a@lam@alif = '102 % 102,103
+\chardef \a@bah@end@hah = '102 % 104,105 bah before final hah
+\chardef \a@bah@spec@yah = '104 % 106,107 bah before gim, with tie;
+ % also bah before yah
+%% gim_spec 143 144,145 from above
+\chardef \a@gim@close = '144 % 146,147 closed gim
+\chardef \a@hhah@spec = '153 % 154,155 from above
+\chardef \a@khah@spec = '163 % 164,165 from above
+\chardef \a@rah@k = '166 % 166,167 kurdish rah
+%% tsah_spec 173 174,175 from above
+\chardef \a@sin@spec = '202 % 204,205 short form
+%% shin_spec 204 206,207 short form
+\chardef \a@sad@spec = '222 % 224,225 short form
+%% dad_spec 224 226,227 short form
+\chardef \a@kaf@spec = '274 % 276,277 short form
+\chardef \a@gaf@spec = '304 % 306,307 short form
+\chardef \a@lam@gim = '311 % 314 lam on gim
+\chardef \a@lam@on@gim = '312 % 314 initial (!) lam before gim
+\chardef \a@lam@long = '312 % 315 initial lam before yah
+\chardef \a@lam@spec@yah = '314 % 316 before final yah ?
+\chardef \a@lam@spec@mim = '314 % 317 initial lam before medial mim
+\chardef \a@mim@spec@high = '322 % 324 from above
+\chardef \a@mim@spec = '324 % 325-327 final; medial after lam;
+ % also before gim
+\chardef \a@mim@spec@mim = '325 % 330 initial mim before mim
+\chardef \a@mim@lam@gim = '327 % 331 medial mim between lam and gim
+\chardef \a@lam@spec@hah = '330 % 333 initial lam before medial hah
+\chardef \a@mim@spec@long = '332 % 334 medial mim after lam, vocalized
+\chardef \a@mm@to@b = '333 % 335 bah to medial mim
+\chardef \a@bah@mid@mim = '334 % 336,337 bah before medial mim
+\chardef \a@mim@spec@alif = '342 % 344 medial mim before alif
+\chardef \a@er@to@s = '343 % 345 sin to final rah
+\chardef \a@bah@end@mim = '344 % 346 medial bah before final mim
+\chardef \a@bah@beg@mim = '345 % 347 initial (!) bah before final mim
+\chardef \a@hah@urd = '353 % 353,354 two-eyed hah,
+ % see hah and hah_spec_lam
+\chardef \a@hah@spec@lam = '352 % 354 medial hah after initial lam
+\chardef \a@hah@spec = '354 % 355-357 final short hah;
+ % also medial hah after sin
+\chardef \a@yah@spec = '371 % 372 ligature for final yah
+
+\chardef \a@lam@alif@iso = \a@lam@alif % 102
+\chardef \a@lam@alif@end = '103 % 103
+
+\chardef \a@h@s = \a@hah@spec % 354
+\chardef \a@lam@l = \a@lam@spec@low % 072
+
+%lam_spec_gim 311
+
+%%%%%%%%%%%%%%%%%% ties %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \a@g@to@s = \a@bah@spec@gim % sin to gim
+\chardef \a@em@to@s = \a@bah@end@mim % sin to final mim
+\chardef \a@mh@to@s = \a@bah@end@hah % sin to medial hah or final mim
+\chardef \a@g@to@bb = \a@bah@beg@gim % initial bah to gim
+\chardef \a@em@to@bb = \a@bah@beg@mim % initial bah to final mim
+
+%%%%%%%%%%%%%%%%%% others %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \a@bah@p = '114 % 114-117 bah family with loop
+\chardef \a@rah@p = '126 % 126,127 rah with loop
+\chardef \a@dal@p = '136 % 136,137 dal with loop
+\chardef \a@rah@s = '156 % 156,157 rah with two dots
+%% sin_p 214 214,215 sin with two dots
+\chardef \a@kaf@p@s = '260 % 260-263 kaf family with loop
+\chardef \a@kaf@p = '264 % 264,265 kaf with loop and mark
+\chardef \a@kaf@p@spec = '264 % 266,267 short form of kaf with loop
+\chardef \a@nun@p = '342 % 342,343 nun with loop
+\chardef \a@yah@h = '373 % 373,374 yah with hook
+\chardef \a@yah@h@spec = '374 % 375 ligature for final yah with hook
+\chardef \a@yah@p = '376 % 376,377 long yah
+
+\chardef \a@gaf@p = \a@kaf@p@s % 260
+
+%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput
diff --git a/language/arabic/arabtex/texinput/arabtex.sty b/language/arabic/arabtex/texinput/arabtex.sty
new file mode 100644
index 0000000000..03d8bece91
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arabtex.sty
@@ -0,0 +1,634 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% arabtex.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabtex.sty
+% this is the driver module for the ArabTeX macro package
+\def \theversion {3.11}
+\def \thedatum {22.08.2003}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally EMail: lagallyk@acm.org
+% Institut fuer Formale
+% Methoden der Informatik TEL: +49-711-7816-392
+% Universitaet Stuttgart FAX: +49-711-7816-370
+% Universitaetsstrasse 38
+% D-70569 Stuttgart INFO: arabtex@informatik.uni-stuttgart.de
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This program can be redistributed and/or modified under the terms
+% of the LaTeX Project Public License distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or (at your option) any later version.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \undefined \Lagally \else
+\errhelp {ArabTex should be loaded *after* EDMAC (if applicable),^^J
+but *before* any non-standard LaTeX packages or options.^^J
+Correct your configuration and try again.}
+\errmessage {Inconsistent configuration.^^J
+The command `\string \undefined' has been redefined by some package.^^J
+`\string \undefined' is defined as `\meaning \undefined'.^^J
+This might utterly confuse ArabTeX which is therefore not loaded.^^J
+}\fi
+
+\ifx \ar@batcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \ar@batcode = \catcode`\@ \catcode`\@ = 11 \chardef \@other = 12
+\chardef \ar@bdqcode = \catcode`\" \catcode`\" = 12 % for german.sty
+
+%%%%%%%%%%%%%%%%%%%%%%%% auxiliary macros %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \ArabTeX {Arab\TeX }
+
+\let \xpa \expandafter \def \xxpa {\xpa \xpa \xpa }
+\def \xxxpa {\xpa \xxpa \xpa }
+
+\let \nxp \noexpand \def \nxxp {\nxp \nxp \nxp }
+\def \n@xp {\nxp \nxp \nxp }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%% identify yourself %%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\input aconfig.sty % check environment
+
+\let \a@wlog \wlog \def \wlog #1{\relax }
+
+\a@ident {arabtex.sty} {\theversion \space ArabTeX main module} {\thedatum }
+
+\UsePackage {arabaux} % load auxiliary macros
+
+%%%%%%%%%%%%%%%%%%% various declarations %%%%%%%%%%%%%%%%%%%%%
+
+\newbox \wordb@x \newbox \lineb@x \newbox \tempb@x
+\newtoks \a@tokens \newtoks \sc@next \newtoks \sc@rest
+\newtoks \a@@cmd \newtoks \a@@name \newtoks \a@@tail
+\newtoks \a@digits \newtoks \a@first \newtoks \a@paren
+\newtoks \a@@everypar \newtoks \a@accent
+\newskip \a@parindent \newskip \a@parskip
+\newwrite \a@@err \newwrite \a@@out
+\newcount \tracingarab \def \quiet {\tracingarab = 0 }
+
+\newif \if@vocals \newif \ifv@c \newif \if@sukun
+\newif \if@suk \newif \if@wasla \newif \if@was
+\newif \if@high \newif \ifacc@hi \newif \ifa@vmode
+\newif \ifa@space \newif \iftr@ns \newif \ifa@oldhmode
+
+\newif \iftest % \testtrue % for internal use only
+\newif \iftest@scan \newif \iftest@trans
+\newif \iftest@parse \newif \iftest@write
+\newif \iftest@command \newif \iftest@font
+
+\newif \ifnewfont \newif \ifaRL
+
+%%%%%%%%%%%%%%%%%%% language specific switches %%%%%%%%%%%%%%%%%%%%%
+
+%% beware of moving arguments!
+
+\newif \ifarab % generate the arabic script
+\newif \ifshow % display the input text verbatim
+\newif \ifligs % set all ligatures active
+\newif \ifspread % spread characters by keshide
+\newif \iftrans % generate the transliteration
+
+%newif \ifRL % alias for \ifarab
+\let \RLtrue \arabtrue \let \RLfalse \arabfalse
+
+% internal switches
+
+\newif \ifaN@alif % tanwin on alif
+\newif \ifqur@n % old hamza rules
+\newif \ifh@mza % hamza rules, assimilation
+\newif \if@ssim % assimilation
+\newif \ifiz@fet % izafet rules
+\newif \ifyahd@ts % yah with dots
+\newif \ifk@fs % final kaf without mark
+\newif \iff@rsn % Farsi numerals
+\newif \ifk@sra % Kasra always below char
+
+\newif \ifp@sht % loop chars, e as two dots, diphtongs
+\newif \ifurd@ % e as long yah, urdu accent, two hah chars
+\newif \ifm@gh % variants of fah, vah and qaf
+\newif \ift@rk % special transliteration and coding
+\newif \ifk@rd % special transliteration and coding
+\newif \ifs@nd % special transliteration and coding
+\newif \ifu@gh % special transliteration and coding
+\newif \ifm@lay % special transliteration and coding
+\newif \ifk@sh % special transliteration and coding
+
+\newif \ifn@arab % load Arabic default
+
+%%%%%%%%%%%%%%%%%%% various robust options %%%%%%%%%%%%%%%%%%%%%
+
+\pdef \yahdots {\yahd@tstrue } \pdef \yahnodots {\yahd@tsfalse }
+\pdef \accentshigh {\acc@hitrue } \pdef \accentslow {\acc@hifalse }
+\pdef \oldtanwin {\aN@aliffalse } \pdef \newtanwin {\aN@aliftrue }
+\pdef \oldhamza {\qur@ntrue } \pdef \newhamza {\qur@nfalse }
+
+%%%%%%%%%%%%%%%%%%% various defaults %%%%%%%%%%%%%%%%%%%%%
+
+\def \transtrue {% activate the transliteration
+\iftr@ns \else \tr@zdmg \fi \let \iftrans \iftrue }
+
+\let \tr@zdmg \relax \n@arabtrue
+
+\def \arab@output {\ifx \a@lang \a@arab \else
+\tr@ceoff % switch to Arabic output conventions
+\def@arabchars % define character macros for Arabic
+\def@arabaccent % define accent macros for Arabic
+\def@arabvoc % define vowel parsing routines for Arabic
+\def@arabstrut % define strut for Arabic
+\tr@zdmg % define standard transliteration
+\let \a@write \a@@write \let \a@write@hook \relax
+\tr@ceon \let \a@lang \a@arab \fi }
+
+\def \a@arab {ARABIC} \def \a@lang {NONE}
+
+%%%%%%%%%%%%%%%%%%% ML-TeX compatibility (br) %%%%%%%%%%%%%%%%%%%%%
+
+\newcount \arab@charsubdefmax \arab@charsubdefmax \m@ne
+
+\ifx \charsubdefmax \undefined
+ \csname newcount\endcsname \charsubdefmax
+\else % save actual \charsubdefmax value
+ \arab@charsubdefmax=\charsubdefmax
+ % restore it, when outputting a new box in \output routine
+ \csname newtoks\endcsname \a@@output \a@@output=\output
+ \output={\charsubdefmax \arab@charsubdefmax \the\a@@output }
+\fi
+
+%%%%%%%%%%%%%%%%%%% language selection %%%%%%%%%%%%%%%%%%%%%
+
+\def \all@false {% reset language code to default
+\k@rdfalse \t@rkfalse \m@ghfalse \urd@false \p@shtfalse
+\s@ndfalse \m@layfalse \u@ghfalse \k@srafalse
+\h@mzafalse \@ssimfalse \iz@fetfalse \yahd@tsfalse \k@fsfalse \f@rsnfalse
+\let \vocalize \v@calize \let \fullvocalize \fullv@calize
+\arab@output \catcode`\<=\active }
+
+% all language selection commands are robust!
+
+\pdef \setarab {% kaf with mark, hamza rules, yah with dots
+\all@false \h@mzatrue \@ssimtrue \yahd@tstrue \oldtanwin
+\def \a@defaultfont {\setnash }}
+
+\pdef \setmaghribi {% variants of fah and qaf
+\setarab \m@ghtrue }
+
+\pdef \setfarsi {% no kaf mark, yah without dots, izafet
+\all@false \iz@fettrue \h@mzatrue \@ssimtrue \k@fstrue \f@rsntrue
+\newtanwin \def \a@defaultfont {\setnast }}
+
+\pdef \setkurdish {% no kaf mark, yah without dots, izafet
+\setfarsi \k@rdtrue }
+
+\pdef \setturk {% kaf with mark, yah without dots, izafet, hamza
+\all@false \iz@fettrue \h@mzatrue \@ssimtrue \newtanwin \t@rktrue
+\def \a@defaultfont {\setnash }}
+
+\pdef \seturdu {% two hah, long yah, urdu accent, long e, izafet
+\all@false \iz@fettrue \h@mzatrue \@ssimtrue \k@fstrue \f@rsntrue
+\newtanwin \urd@true \def \a@defaultfont {\setnast }}
+
+\pdef \setpashto {% pashto loop, e: two dots, izafet, hamza
+\all@false \iz@fettrue \h@mzatrue \@ssimtrue \yahd@tstrue \k@fstrue
+\newtanwin \p@shttrue \def \a@defaultfont {\setnast }}
+
+\pdef \setbalut {% temporary
+\setpashto}
+
+\pdef \setsindhi {% switch language specific processing
+\seturdu \h@mzafalse \ligsfalse \yahd@tstrue \s@ndtrue }% ALA-LC has dots!
+
+%\seturdu \h@mzafalse \ligsfalse \yahd@tsfalse \s@ndtrue }% A.Pandey not
+
+\pdef \setmalay {% p, ng, ny
+\seturdu \yahd@tstrue \m@laytrue \def \a@defaultfont {\setnash }}
+
+\pdef \setuighur {% switch language specific processing
+\let \vocalize \novocalize \let \fullvocalize \novocalize
+\novocalize \@ssimfalse \h@mzafalse
+\u@ghtrue \def \a@defaultfont {\setnash }}
+
+\pdef \setkashmiri {% Kashmiri language mode
+\seturdu \k@shtrue \newarabfont \settrans{kashmiri}}
+
+\pdef \setverb {% no special processing
+\all@false \yahd@tstrue \oldtanwin \def \a@defaultfont {\setnash }}
+
+\pdef \setnone {\catcode`\<=\@other }% deselect arabic quotations
+
+\pdef \setquot {\catcode`\<=\active }% select arabic quotations
+
+\pdef \setnoquot {\catcode`\<=\@other }% deselect arabic quotations
+
+%%%%%%%%%%%%%%%%%%%%%%% vowelization options %%%%%%%%%%%%%%%%%%%%%%%%
+
+% must be robust!
+
+\pdef \novocalize {% no diacritics except explicitly indicated
+\@vocalsfalse \v@cfalse \@sukunfalse \@sukfalse }
+
+\pdef \v@calize {% diacritics for short vowels only
+\@vocalstrue \v@ctrue \@sukunfalse \@sukfalse }
+
+\pdef \fullv@calize {% all diacritics
+\@vocalstrue \v@ctrue \@sukuntrue \@suktrue }
+
+\let \vocalize \v@calize \let \fullvocalize \fullv@calize
+
+%%%%%%%%%%%%%%%%%%%%%%%% robust font selection %%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \setarabfont #1{% define font switching
+ \def \set@arabfont {\tr@ceoff #1\tr@ceon }}
+
+\pdef \set@nash {\setarabfont \nash }
+\pdef \set@nashbf {\setarabfont \nashbf }
+\pdef \set@nast {\setarabfont \nastaliq }
+\pdef \set@xnash {\setarabfont \xnash }
+\pdef \set@xnashbf {\setarabfont \xnashbf }
+
+% presently no nastaliq font
+\def \nastaliq {\nash }
+
+\def \newarabfont {% switch to new ArabTeX fonts version
+\setx@skels % activate new skeletons
+\let \setnash \set@xnash
+\let \setnashbf \set@xnashbf
+\let \setnastaliq \set@xnash
+\let \setnast \set@xnash
+\newfonttrue \setnash }
+
+\def \oldarabfont {% switch to old ArabTeX fonts version
+\seta@skels % activate old skeletons
+\let \setnash \set@nash
+\let \setnashbf \set@nashbf
+\let \setnastaliq \set@nash
+\let \setnast \set@nash
+\newfontfalse \setnash }
+
+\def \a@defaultfont {\setnash }
+\def \a@default {\a@defaultfont }
+\def \a@normalfont {\a@defaultfont }
+
+%%%%%%%%%%%%%%%%%%%%%%%% handling of special characters %%%%%%%%%%%%%%%
+
+\def \a@arab@codes {% save and set special characters
+\chardef \spc@de = \catcode`\ \catcode`\ = 10
+\chardef \dqc@de = \catcode`\" \catcode`\" = \@other
+\chardef \lsc@de = \catcode`\< \catcode`\< = \@other
+\csname originalTeX\endcsname % reset codes if BABEL is present
+\arab@charsubdefmax \charsubdefmax \charsubdefmax \m@ne }
+
+\def \a@unarab@codes {% reset catcodes
+\catcode`\ = \spc@de \catcode`\< = \lsc@de \catcode`\" = \dqc@de
+\charsubdefmax \arab@charsubdefmax
+\csname germanTeX\endcsname }% reset codes if german.sty is present
+
+\let \arab@codes \a@arab@codes \let \unarab@codes \a@unarab@codes
+
+%%%%%%%%%%%%%%%%%%%%%%% Arabic environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newif \ifin@arab % inside Arabic environment?
+
+\def \arabtext {% environment for RTL formatting
+\a@parparams % aoutput::a@parparams
+\the\arabtext@hook \test@token }
+
+\newtoks \arabtext@hook
+
+\arabtext@hook = {% initialize RTL environment
+\in@arabtrue \a@parindent \parindent \a@parskip \parskip
+\edef \a@@font {\the\font }%
+\ifhmode \a@oldhmodetrue \else \a@oldhmodefalse \fi
+\a@vmodetrue \a@@everypar {}%
+\let \| \break \def \\{\hfil \break }%
+\let \emphasize \underbar % define internal commands
+\let \a@last@line \short@line \let \a@put@line \put@line
+\arab@codes \set@arabfont \@waslafalse \@wasfalse
+\def \next@command {\test@special}}
+
+\def \at@arabtext #1{% extend the initialization
+\arabtext@hook \xpa{\the\arabtext@hook #1}}
+
+\let \at@arabtex \at@arabtext % catch typo
+
+\def \a@par {% close a RTL paragraph
+\ifa@vmode \else % terminate last RTL line
+\a@last@line \spreadfalse \a@vmodetrue
+\parindent \a@parindent \parskip \a@parskip
+\a@resetpar \a@par@hook % aoutput::
+\ifnum \tracingarab > 0 \message {##}\fi
+\fi }
+
+\let \a@@par \a@par % save for \a@@everypar in \a@c@autopar
+
+\def \endarabtext {% close RTL environment
+\a@last@line
+\ifa@oldhmode \noindent \fi
+\ifnum \tracingarab > 0 \message {||}\fi
+\global \@ignoretrue }
+
+\let \RLtext \arabtext \let \arabtex \arabtext % catch typo
+\let \endRLtext \endarabtext \let \endarabtex \endarabtext % catch typo
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% next token %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@accent = {\lq \rq \cap \MIN \IN \a@tok \shadda \madda \sukun
+ \raphe \dagesh \mappiq \ldot \rdot \cdot \maqqef \abbr \,}
+
+{\catcode `\^^a0 12 \gdef \sp@ce {^^a0}
+}% catcode ^^a0
+
+\a@digits = {0123456789} \a@paren = {()[]}
+\a@first = {.^_-'`~,|"=:} % default, scanner dependent
+
+\def \test@@token {\iftest@command \tracingmacros 0 \fi
+\let \a@@word \empty \get@token }
+
+\def \get@token {\futurelet \next@token \test@space }
+
+\let \test@token \test@@token % get next token
+
+\def \test@space {% check for LTR space
+\if \space \nxp\next@token \a@@putword \xpa\kill@space
+\else \xpa\next@command \fi }% hook for acmd, aedpatch, arabext
+
+\xpa\def \xpa\kill@space \space {% gobble LTR space
+\futurelet \next@token \test@special }
+
+\xpa\def \xpa\kill@sp@ce \sp@ce {% gobble RTL space
+\futurelet \next@token \test@space }
+
+\def \obey@space {% after control characters
+\a@spacefalse \futurelet \next@token \obey@@space }
+
+\def \obey@@space {% check for space after control character
+\if \space \nxp\next@token \a@spacetrue \fi \test@space }
+
+\def \test@rest {% continue after \control sequence in text
+\global\let \test@token \test@@token % global!
+\xpa \xpa \xpa \test@token \xpa \a@rest \space }
+
+%%%%%%%%%%%%%%%%%%%%%% special cases %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\long\def \test@special #1{% check for special cases
+\if \bgroup \nxp \next@token % arabic group
+ \a@@putword \def \next {\arab@group {#1}}\else
+\if \relax \nxp #1% % command
+ \if\is@in@set #1\a@accent % known to scanner
+ \a@@append {#1}\def \next {\get@token }%
+ \else % general command
+ \a@@putword \def \next {\test@command #1}%
+ \fi \else
+\if \sp@ce \nxp \next@token % RTL space
+ \a@@putword \def \next {\get@token }\else
+\ifcat \nxp ~\nxp #1% % active character
+ \a@@putword \def \next {\test@command #1}\else
+\if \nxp <\nxp #1\unarab@codes % Roman insert
+ \a@@putword \let \next \test@insert \else
+\ifx $#1\unarab@codes % Math insert
+ \a@@putword \let \next \test@math
+\else \a@@append {#1}\def \next {\get@token}% % normal case
+\fi\fi\fi\fi\fi\fi \next }
+
+\def \a@@putword {% process characters
+\ifx \a@@word \empty \else
+ \ifarab \putwordb@x {\xpa\arab@item \a@@word \@@ }\fi
+ \a@spacetrue \xpa\a@showinput \xpa{\a@@word }%
+ \let \a@@word \empty
+\fi }
+
+\def \a@@append #1{% add character
+\a@extend \a@@word {#1}}
+
+%%%%%%%%%%%%%%%%%%%%%% Arabic word %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \arab@item #1#2\@@ {% split the word if necessary
+\ifx \relax #1\relax \else % empty word
+\ifx \relax #2\relax \a@rabwrite {#1}\else % single character
+\if\is@in@set #1\a@first
+ \a@rabwrite {#1#2}\else % start symbol: word
+\if\is@in@set #1\a@digits
+ \a@split #1#2\@@ \else % digit: number
+\if\is@in@set #1\a@paren
+ \arab@item #2\@@ \a@rabwrite {#1}\else % parenthesis: test content
+ \a@rabwrite {#1#2}% % normal case
+\fi\fi\fi\fi\fi }
+
+\def \a@rabwrite #1{% process an Arabic word (called within a group)
+\tracingmacros 0 % use \test@XXXtrue for testing !
+ \a@scan #1>% % generate the token sequence
+ \xpa \a@parse \the\a@tokens >% split it into syllables and reverse
+ \xpa \a@write \the\a@revwd >% output the word
+\ifnum \tracingarab > 2 \message {.}\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% Arabic commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \a@c@last@ {\\} \gdef \a@c@put@ {\|} \gdef \a@c@par@ {\par }
+
+{\catcode `\^ 7 \catcode `\^^M=\active \gdef \a@c@M {^^M}}
+
+{\catcode `\ =\active\gdef\a@c@SP{ }}
+
+\long \def \test@command #1{% check for special commands
+\gdef \a@arg {#1}\let \next \test@token
+\ifx \a@arg \a@c@par@ \a@@par \else % \par
+\ifx \a@arg \a@c@M \a@@par \else % \obeylines
+\ifx \a@arg \a@c@SP \else % \obeyspaces
+\ifx \a@arg \a@c@last@ \a@last@line \else % \\
+\ifx \a@arg \a@c@put@ \a@put@line \else % \|
+ \def \next {\a@command #1}% process the command inside "acmd.sty"
+\fi\fi\fi\fi\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% Arabic groups %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \arab@group #1{% process the next group
+\bgroup \initlineb@x
+\def \end {\global \setbox1 \hbox {\unhbox \lineb@x}%
+\egroup \putwordb@x {\unhbox1 }\a@spacetrue \test@token }% last line
+\test@token #1 \end }
+
+\def \a@sequence #1{% put a sequence of words into a \hbox
+\bgroup \transfalse \showfalse \let \end \relax
+\let \a@last@line \finish@line \let \a@put@line \break@line
+\def \next@command {\test@special}\let \put@word \addt@line
+\initlineb@x \test@token #1 \end \box\lineb@x \egroup }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% arabic number %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@split #1#2\@@ {% next word starts with digit
+\ifx \relax #2\relax \a@rabwrite {#1}\else
+ \def \a@body {}\def \a@number {#1}\a@splitnumber #2\@@
+ \xpa \a@rabwrite \xpa {\a@body }%
+\fi }
+
+%{\catcode `\B =12 \gdef \f@sila {B}} % cf. awrite::ac@other
+%{\catcode `\C =12 \gdef \h@phen {C}}
+
+\def \a@splitnumber #1#2\@@ {% process word starting with digit
+\if\is@in@set #1\a@digits \edef \a@number {#1\a@number }\else
+\ifx -#1\edef \a@number {\h@phen \a@number }\else
+\ifx /#1\edef \a@number {/\a@number }\else
+\ifx ,#1\ifx \relax #2\relax
+ \edef \a@body {\a@body \a@number #1}\def \a@number {}%
+ \else \edef \a@number {\f@sila \a@number }\fi
+\else \edef \a@body {\a@body \a@number #1}\def \a@number {}%
+\fi\fi\fi\fi
+\ifx \relax #2\relax \edef \a@body {\a@body \a@number}\let \next \relax
+\else \def \next {\a@splitnumber #2\@@ }%
+\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% insertions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \test@math #1${% Math insertion in Arabic text
+\def \next {#1}% test for display math
+\ifx \next \empty \def \next
+ {\begingroup \endarabtext $$\aftergroup \endgroup
+ \aftergroup \a@spacefalse \aftergroup \test@token }%
+\else \def \next
+ {\putwordb@x {$#1$}\a@spacetrue \arab@codes \test@token }%
+\fi \next }
+
+\def \test@insert #1>{% Roman insertion in Arabic text
+\putwordb@x {\rm #1}\a@spacetrue \arab@codes \test@token }
+%\putwordb@x {\a@@font #1}\a@spacetrue \arab@codes \test@token }
+
+% cf. abidir::\LR
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% verbatim mode %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@showinput #1{% show verbatim text and transliteration
+\ifshow \a@@verb {#1}\fi
+\iftrans {\tracingmacros 0 \set@transfont \trans@text #1 \end }\fi }
+
+\def \a@@verb #1{\def \verb@text {#1}% list input words verbatim
+ {\tracingmacros 0 \penalty \z@ \tt
+ \xpa \get@meaning \meaning \verb@text }\ }
+
+\def \get@meaning #1>{} % strip off macro header
+
+\def \a@verb #1>{\a@@verb {#1}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% arabic insertion %%%%%%%%%%%%%%%%%%%%%%%%
+
+{\catcode `\< = \@other % better make sure
+
+\gdef \a@ins {% arabic insertion or 'less'
+\ifmmode \global\let \a@less <
+\else \global\let \a@less \arab@insert \leavevmode
+ \bgroup \arab@codes \set@arabfont \@waslafalse \@wasfalse
+\fi \a@less }
+
+\gdef \<{\protect \a@ins } % explicit command \<
+
+\catcode`\< = \active % prepare active <
+\gdef <{\protect \a@ins }
+} % catcode <
+
+\def \break@line {% \| inside insertion
+\box\lineb@x \break \initlineb@x }
+
+\def \finish@line {% \\ inside insertion
+\box\lineb@x \hfil \break \initlineb@x }
+
+\def \arab@insert #1>{% Arabic insertion in Roman text
+\ifshow \a@@verb {#1}\fi % verbating listing
+\ifarab \a@sequence {#1} \fi % arabic writing
+\iftrans \set@transfont \trans@text #1 \end \/\fi
+\ifnum \tracingarab > \@ne \message {>}\fi
+\unskip \egroup }
+
+% cf. abidir::\LR
+
+%%%%%%%%%%%%%%%%%%%%%%%%% transliteration %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \settransfont #1{% set transliteration style or \style
+\if \relax \nxp#1\relax \def \set@transfont
+ {\tr@ceoff #1\csname selectfont\endcsname \tr@ceon }%
+\else \def \set@transfont
+ {\tr@ceoff \csname #1\endcsname
+ \csname selectfont\endcsname \tr@ceon }%
+\fi}
+
+\settransfont {\rm \it }% standard font for transliteration
+
+\long \def \trans@text #1{% check for special cases
+\leavevmode \def \next {\trans@text }%
+\if\is@in@set {#1}\a@first \def \next {\trans@elem #1}\else % normal case
+\ifx \end #1\let \next \relax \else
+\ifx \par #1\endgraf \else
+\ifx \\#1\hfil \break \else
+\ifx \|#1\hfil \break \else
+\ifx \emphasize #1\def \next {\a@emp }\else
+\if \relax \nxp #1\relax % ignore control sequences
+\else \def \next {\trans@elem #1}% normal case
+\fi\fi\fi\fi\fi\fi\fi \next }
+
+\def \a@emp #1{\trans@text #1 }
+
+\def \trans@elem #1 {% transliterate next word of text
+\a@transword {#1}\trans@text }
+
+\def \a@transword #1{% transliterate a word
+{\tracingmacros 0 \a@scan #1>\xpa \a@trans \the\a@tokens >\ }}
+
+\ifx \a@trans \undefined % atrans.sty not yet loaded
+\def \a@trans #1>{\gdef \a@trans ##1>{\relax }% default
+\message {`atrans.sty' not loaded; transliteration ignored.}}
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%% initialization %%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \startarab {% set default initializations
+\newarabfont
+\a@normalfont % default font
+\transfalse \arabtrue \vocalize \ligsfalse
+\tracingarab = 0 \setnone } % \catcode < := 12 for user macros
+
+%%%%%%%%%%%%%%%%%%%%%%% load the later passes %%%%%%%%%%%%%%%%%%%%%%
+
+\UsePackage {acmd} % load the command processor module
+\UsePackage {afonts} % load the default fonts
+\UsePackage {ascan} % generate a token sequence
+\UsePackage {aparse} % parse it into syllables and reverse them
+\UsePackage {awrite} % generate the basic writing
+\UsePackage {aligs} % modify for any ligatures
+\UsePackage {aoutput} % generate output lines
+\UsePackage {abidir} % bidirectional linebreaking
+\UsePackage {atrans} % generate the transliteration
+\UsePackage {alatex} % extensions for LaTeX
+\UsePackage {abjad} % abjad numerals
+\ifx \edmacloaded \relax
+ \UsePackage {aedpatch} \fi % patches for EDMAC ?
+\ifx \undefined \peek@token \else
+\ifx \undefined \bbl@test@token
+ \UsePackage {arababel} \fi\fi % patches for old BABEL ?
+\ifx \CJK \undefined \else
+ \UsePackage {acjk} \fi % patches for CJK ?
+\UsePackage {apatch} % any last minute corrections
+
+%%%%%%%%%%%%%%%%%%%%%%% statistics %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \arab@stat {{\newlinechar `$
+\wlog {$Parameterless commands valid in Arabic mode:}
+\wlog {\space (\the\a@@listzero )}
+\wlog {$Commands with 1 parameter valid in Arabic mode:}
+\wlog {\space (\the\a@@listone )}
+\wlog {$Commands with 2 parameters valid in Arabic mode:}
+\wlog {\space (\the\a@@listtwo )}
+\wlog {$User defined commands valid in Arabic mode:}
+\wlog {\space (\the\a@@listreg )}}}
+
+\let \arabstat \arab@stat
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% here we go %%%%%%%%%%%%%%%%%%%%%%%
+
+\let \wlog \a@wlog
+
+\startarab \a@report
+
+\a@message {... now be patient ... }
+
+\catcode`\" = \ar@bdqcode \catcode`\@ = \ar@batcode
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/arabtex.tex b/language/arabic/arabtex/texinput/arabtex.tex
new file mode 100644
index 0000000000..09ac9508b8
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arabtex.tex
@@ -0,0 +1,133 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% arabtex.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabtex.tex
+% version 3.10a
+% this is the Plain TeX driver module for the ArabTeX macro package
+% 26.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally EMail: lagallyk@acm.org
+% Institut fuer Formale
+% Methoden der Informatik TEL: +49-711-7816-392
+% Universitaet Stuttgart FAX: +49-711-7816-370
+% Universitaetsstrasse 38
+% D-70569 Stuttgart INFO: arabtex@informatik.uni-stuttgart.de
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % This program can be redistributed and/or modified under the terms
+ % of the LaTeX Project Public License distributed from CTAN
+ % archives in directory macros/latex/base/lppl.txt; either
+ % version 1 of the License, or (at your option) any later version.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \input this file at the beginning of an ArabTeX input file running
+% under Plain TeX. This is an adaptation by Tom Koornwinder of
+% Jan Lodder's file arab.plain.tex, again modified by Klaus Lagally
+% 26.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\message { Plain TeX setup for ArabTeX, 26.04.2003}
+
+\ifx \LaTeX \undefined \else
+\errmessage {^^JThis loader does not work with LaTeX!
+ ^^JUse Plain TeX instead.^^J}
+\expandafter \endinput
+\fi
+
+\def \makeatletter {\catcode `\@ = 11 }
+\def \makeatother {\catcode `\@ = 12 }
+
+\let \typeout \message \let \protect \relax
+\let \em \it
+
+\font \xnash =xnsh14
+\font \nash =xnsh14
+\font \tennash =xnsh14 % add fonts as needed.
+\font \nashx =xnsh14
+\font \nashxi =xnsh14 scaled \magstephalf
+\font \nashxii =xnsh14 scaled \magstep1
+\font \nashxiv =xnsh14 scaled \magstep2
+\font \nashxvii =xnsh14 scaled \magstep3
+\font \nashxx =xnsh14 scaled \magstep4
+\font \nashxxv =xnsh14 scaled \magstep5
+
+\font \xnashbf =xnsh14bf
+\font \nashbf =xnsh14bf
+\font \tennashbf=xnsh14bf % bold face fonts
+\font \nashbx =xnsh14bf
+\font \nashbxi =xnsh14bf scaled \magstephalf
+\font \nashbxii =xnsh14bf scaled \magstep1
+\font \nashbxiv =xnsh14bf scaled \magstep2
+\font \nashbxvii=xnsh14bf scaled \magstep3
+\font \nashbxx =xnsh14bf scaled \magstep4
+\font \nashbxxv =xnsh14bf scaled \magstep5
+
+\font \yorn =yarborn % simple ornaments by Y. Haralambous
+
+\def \pnash {\tennash } \def \pnashbf {\tennashbf }
+\def \nash {\protect\pnash } \def \nashbf {\protect\pnashbf }
+
+\def \strut {\vrule height 2ex depth .8ex width 0pt}
+
+\makeatletter
+
+\newif \if@ignore % ignore spaces after environment?
+\newif \if@endpe
+
+\def \begin #1{% small version without checks
+\begingroup
+ \long \def \end ##1{% local version for \end{arabtext} and \end \end
+ \ifx ##1\par \endarabtext \endgroup
+ \else \csname end\string ##1\endcsname \endgroup \fi
+ \if@ignore \global\@ignorefalse \expandafter \ignorespaces \fi }%
+\csname #1\endcsname }
+
+\expandafter \def \csname end\string\end\endcsname{% for \end \end
+\endgroup \end }
+
+{\catcode `\"=\active % simulate german.sty
+\gdef "#1{\ifx #1s\ss \else \"#1\fi }% umlaut and sharp s
+}
+
+\newdimen \marginparwidth \marginparwidth 72pt % adjust as required !
+\newdimen \marginparsep \marginparsep 10pt % adjust as required !
+
+\long \def \marginpar #1{% Plain TeX version
+ \dimen0 \baselineskip
+\setbox0 \vtop to \dimen0
+ {\hsize \marginparwidth \parskip 0pt \raggedright
+ \noindent \strut #1\vss }%
+\setbox0 \hbox to \hsize
+ {\hskip \hsize \hskip \marginparsep \box0 \hss }%
+\ifhmode \skip0 \lastskip \hskip 0pt \strut
+ \vadjust {\box0 \vskip -\dimen0 }%
+ \ifdim \skip0 = 0pt \else \expandafter \ignorespaces \fi
+\else \dimen2 \prevdepth \nointerlineskip \box0
+ \vskip -\dimen0 \prevdepth \dimen2
+\fi }
+
+\def \verb #1{% simple verbatim routine
+\def \endverb ##1#1{\a@@verb {##1}}\endverb }
+
+\def \\{\hfill \break } % utilities
+
+\def \newpage {\vfill \eject }
+
+\def \today {\number\day.\number\month.\number\year }
+
+\let \@@input \input
+\def \input #1 {\@@input #1 }
+\def \UsePackage #1{\input {#1.sty}}
+
+\let \document \relax \let \enddocument \end
+\let \a@enddocument \end
+
+\input arabtex.sty % here goes
+\a@ident {arabtex.tex} {3.11 Plain TeX loader for ArabTeX} {26.04.2003}
+
+\def \end {% report the configuration
+{\arab@stat \newlinechar `$ \wlog {\arabtexconfig $}}\a@enddocument }
+
+\makeatother
+\setarab
+
+\tracingstats=1
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/arabtoks.sty b/language/arabic/arabtex/texinput/arabtoks.sty
new file mode 100644
index 0000000000..9c1d4f9ca3
--- /dev/null
+++ b/language/arabic/arabtex/texinput/arabtoks.sty
@@ -0,0 +1,146 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% arabtoks.sty
+% ArabTeX
+% extra \CS token definitions for Arabic
+% Version 17.07.1999
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {arabtoks.sty} {3.09 ArabTeX CS token definitions } {17.07.1999}
+
+% extra \CS token definitions for Arabic
+% pattern: skeleton, modifier
+\def \a@a {\sk@@ , 1 } % reserved for vowel
+\def \a@b {\sk@b , 0 } % bah without dot
+\def \a@c {\sk@hh , 3 } % gim with three dots
+\def \a@d {\sk@d , 8 } % dal with ttah
+\def \a@e {\sk@@ , 2 } % reserved for vowel
+\def \a@f {\sk@f@s , 0 } % fah without dot
+\def \a@g {\sk@g@p , 0 } % gaf with loop
+\def \a@h {\sk@h@s ,11 } % urdu hah
+\def \a@i {\sk@@ , 3 } % reserved for vowel
+\def \a@j {\sk@h@s , 2 } % urdu hah with 2 dots ..
+\def \a@k {\sk@k@s , 0 } % kaf without mark
+\def \a@l {\sk@l ,12 } % kurdish lam
+\def \a@m {\sk@n@p , 1 } % nun with loop, 1 dot above
+\def \a@n {\sk@n , 0 } % nun without dot
+\def \a@o {\sk@@ , 4 } % reserved for vowel
+\def \a@p {\sk@ain , 3 } % `ain with three dots
+\def \a@q {\sk@r@p , 0 } % rah with loop
+\def \a@r {\sk@r , 8 } % rah with ttah
+\def \a@s {\sk@s ,10 } % sin with two dots
+\def \a@t {\sk@b , 8 } % tah with ttah
+\def \a@u {\sk@@ , 5 } % reserved for vowel
+\def \a@v {\sk@b@p , 2 } % tah with loop
+\def \a@w {\sk@w ,19 } % waw with damma (Uighur)
+\def \a@x {\sk@w , 1 } % waw with dot (Malay)
+\def \a@y {\sk@y , 6 } % yah with three dots below
+\def \a@z {\sk@r@s , 0 } % Pashto rah with two dots
+
+\def \a@A {\sk@@ , 6 } % reserved for vowel
+\def \a@B {\sk@h@s , 7 } % wavy hah with hamza
+\def \a@C {\sk@hh , 2 } % hhah with two dots above
+\def \a@D {\sk@d , 4 } % dal with dot below
+\def \a@E {\sk@y ,14 } % kurdish yah
+\def \a@F {\sk@f@s , 4 } % fah with dot below
+\def \a@G {\sk@hh ,15 } % hhah with two vert dots above
+\def \a@H {\sk@h@m , 0 } % hah marbuta !
+\def \a@I {\sk@@ , 7 } % reserved for vowel
+\def \a@J {\sk@g@ps , 0 } % gaf with ring and bar
+\def \a@K {\sk@k@s , 1 } % kaf with dot
+\def \a@L {\sk@k , 1 } % kaf with dot and mark
+\def \a@M {\sk@g@s , 3 } % gaf with 3 dots above
+\def \a@N {\sk@n@p , 0 } % nun with loop
+\def \a@O {\sk@@ , 8 } % reserved for vowel
+\def \a@P {\sk@ain ,10 } % ghain wit 1 dot above, 1 below
+\def \a@Q {\sk@f@s , 1 } % fah with one dot above
+\def \a@R {\sk@r ,13 } % kurdish rah
+\def \a@S {\sk@s , 2 } % sin with two dots
+\def \a@T {\sk@b ,15 } % tah with two vert. dots above
+\def \a@V {\sk@f@s , 6 } % fah with three dots below
+\def \a@U {\sk@@ , 9 } % reserved for vowel
+\def \a@W {\sk@w ,12 } % kurdish waw with dot
+\def \a@X {\sk@w , 3 } % waw with three dots
+\def \a@Y {\sk@y , 9 } % yah with two vert. dots below
+\def \a@Z {\sk@s ,15 } % sin with two dots vertical
+
+\def \a@aa {\sk@a , 0 } % alif as consonant (Uighur)
+\def \a@ab {\sk@b , 9 } % bah with 2 dots below :
+\def \a@ac {\sk@b ,17 } % bah with 4 dots above ::
+\def \a@ad {\sk@d , 2 } % dal with 2 dots above ..
+\def \a@ae {\sk@d ,16 } % dal with 3 dots above v
+\def \a@af {\sk@d , 5 } % dal with 2 dots below ..
+\def \a@ag {\sk@hh , 5 } % gim with 2 dots below ..
+\def \a@ah {\sk@hh , 9 } % gim with 2 dots below :
+%\def \a@ai {\sk@free, 0 } % unassigned
+\def \a@ai {\sk@Q , 0 } % isolated hamza}
+\def \a@aj {\sk@hh ,18 } % gim with 4 dots below ::
+\def \a@ak {\sk@g@s , 9 } % gaf with 2 dots below :
+\def \a@al {\sk@g@s , 2 } % gaf with 2 dots above ..
+\def \a@am {\sk@n , 3 } % nun with 3 dots ^
+\def \a@an {\sk@n , 8 } % nun with small ttah
+%\def \a@ao {\sk@free, 0 } % unassigned
+\def \a@ao {\sk@m@si, 0 } % Sindhi final mim
+\def \a@ap {\sk@b ,18 } % bah with 4 dots below ::
+\def \a@aq {\sk@f@s ,17 } % fah with 4 dots ::
+\def \a@ar {\sk@r ,17 } % rah with 4 dots ::
+\def \a@as {\sk@y@ps, 0 } % yah bari with ring
+\def \a@at {\sk@b ,16 } % bah with 3 dots above v
+%\def \a@au {\sk@free, 0 } % unassigned
+\def \a@au {\sk@free, 0 } % unassigned
+\def \a@au {\sk@w ,25 } % waw with roof
+\def \a@av {\sk@w , 2 } % waw with 2 dots
+\def \a@aw {\sk@w ,20 } % waw with alif (Uighur)
+\def \a@ax {\sk@k@w , 0 } % wide kAf
+\def \a@ay {\sk@y@p , 7 } % yah bari with hamza
+\def \a@az {\sk@y ,12 } % alif maqsura with bow
+
+\def \a@aA {\sk@d@p , 0 } % dal with loop
+\def \a@aB {\sk@d ,21 } % dal with ttah and dot below
+\def \a@aC {\sk@d , 3 } % dal with 3 dots above
+\def \a@aD {\sk@d ,17 } % dal with 4 dots above ::
+\def \a@aE {\sk@hh ,23 } % gim with 1 dot above, 3 below
+\def \a@aF {\sk@r ,12 } % rah with bow
+\def \a@aG {\sk@r , 4 } % rah with dot below
+\def \a@aH {\sk@r , 2 } % rah with 2 dots ..
+\def \a@aI {\sk@s ,24 } % sin with 3 dots above, 1 below
+\def \a@aJ {\sk@s , 6 } % sin with 3 dots below v
+\def \a@aK {\sk@s ,22 } % sin with 3 dots above, 3 below
+\def \a@aL {\sk@ss , 5 } % ssad with 2 dots below
+\def \a@aM {\sk@ss , 3 } % ssad with 3 dots above
+\def \a@aN {\sk@ss ,10 } % ssad with 1 dot above, 1 below
+\def \a@aO {\sk@tt , 3 } % ttah with 3 dots above
+\def \a@aP {\sk@f@s ,10 } % fah with 1 dot above, 1 below
+\def \a@aQ {\sk@q@s , 1 } % qaf with 1 dot above
+\def \a@aR {\sk@q@s , 3 } % qaf with 3 dots above
+\def \a@aS {\sk@k , 6 } % kaf with 3 dots below
+\def \a@aT {\sk@g@s , 5 } % gaf with 2 dots below ..
+\def \a@aU {\sk@w@r , 0 } % waw with ring
+\def \a@aV {\sk@w@b , 0 } % waw with bar
+\def \a@aW {\sk@l , 1 } % lam with 1 dot above
+\def \a@aX {\sk@l , 3 } % lam with 3 dots above
+\def \a@aY {\sk@l , 6 } % lam with 3 dots below
+\def \a@aZ {\sk@n ,10 } % nun with 1 dot above, 1 below
+
+\def \a@Za {\sk@@ ,10 } % reserved for vowel
+\def \a@Ze {\sk@@ ,11 } % reserved for vowel
+\def \a@Zi {\sk@@ ,12 } % reserved for vowel
+\def \a@Zo {\sk@@ ,13 } % reserved for vowel
+\def \a@Zu {\sk@@ ,14 } % reserved for vowel
+\def \a@Zz {\sktt , 1 } % zzah with variant transliteration
+\def \a@ZZ {\sk@@ , 0 } % illegal
+
+\def \a@ZA {\sk@@ ,15 } % reserved for vowel
+\def \a@ZE {\sk@@ ,16 } % reserved for vowel
+\def \a@ZI {\sk@@ ,17 } % reserved for vowel
+\def \a@ZO {\sk@@ ,18 } % reserved for vowel
+\def \a@ZU {\sk@@ ,19 } % reserved for vowel
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
diff --git a/language/arabic/arabtex/texinput/ascan.sty b/language/arabic/arabtex/texinput/ascan.sty
new file mode 100644
index 0000000000..080aece86c
--- /dev/null
+++ b/language/arabic/arabtex/texinput/ascan.sty
@@ -0,0 +1,502 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% ascan.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% ascan.sty
+% ArabTeX
+% Standard Scanner
+% 22.08.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {ascan.sty} {3.11 standard ZDMG input encoding } {22.08.2003}
+
+\chardef \testatcode = \catcode`\@ \catcode`\@ = 11
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Arabic
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \seta@codes {% define standard \ArabTeX input coding
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@@ {@} % illegal character
+\def \sc@a {a}
+\def \sc@b {b}
+\def \sc@c {\ift@rk G\else \ifs@nd J\else
+ \ifm@lay J\else c\fi\fi\fi }
+\def \sc@d {d}
+\def \sc@e {e}
+\def \sc@f {\ifm@gh \n@xp \a@F \else f\fi }
+\def \sc@g {\ifm@lay \n@xp \a@K \else g\fi }
+\def \sc@h {h}
+\def \sc@i {i}
+\def \sc@j {\ift@rk j\else G\fi }
+\def \sc@k {\ifs@nd \n@xp \a@ax \else
+ \ifk@fs \n@xp \a@k \else k\fi\fi }
+\def \sc@l {l}
+\def \sc@m {m}
+\def \sc@n {n}
+\def \sc@o {o}
+\def \sc@p {\ifm@lay v\else p\fi }
+\def \sc@q {\ifm@gh \n@xp \a@Q \else q\fi }
+\def \sc@r {r}
+\def \sc@s {s}
+\def \sc@t {t}
+\def \sc@u {u}
+\def \sc@v {\ifm@gh \n@xp \a@V \else \ift@rk w\else
+ \ifm@lay \n@xp \a@x \else v\fi\fi\fi }
+\def \sc@w {\ifu@gh \n@xp \a@X \else w\fi }
+\def \sc@x {X}
+\def \sc@y {y}
+\def \sc@z {z}
+\def \sc@A {A}
+\def \sc@B {B}
+\def \sc@C {@}
+\def \sc@D {@}
+\def \sc@E {E}
+\def \sc@F {@}
+\def \sc@G {\n@xp \a@g } % Pashto gaf with ring
+\def \sc@H {\n@xp \a@H } % Heh marbouta
+\def \sc@I {I}
+\def \sc@J {@}
+\def \sc@K {K}
+\def \sc@L {@}
+\def \sc@M {M}
+\def \sc@N {N}
+\def \sc@O {O}
+\def \sc@P {@}
+\def \sc@Q {@}
+\def \sc@R {@}
+\def \sc@S {\n@xp \a@S }
+\def \sc@T {T}
+\def \sc@U {U}
+\def \sc@V {v}
+\def \sc@W {W}
+\def \sc@X {@}
+\def \sc@Y {Y}
+\def \sc@Z {@}
+\a@digits = {0123456789}
+\a@paren = {()[]}
+\global\a@first = {.^_-'`~,|"=:\a@tok \lq \rq \cap \MIN \IN }
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@@scan #1>{% standard scanner call: token sequence -> \a@tokens
+\iftest@scan \tracingmacros = 1
+\ifshow \else \a@verb #1>\fi\fi
+\global\def \a@rest {}\global\a@tokens = {}\sc@beg #1\@ \@@
+\iftest@scan \tracingmacros = 0 %
+\xpa \a@verb \xpa (\the\a@tokens )>\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+{\arab@codes % because of special characters
+
+\gdef \set@next #1{\def \next {#1}}
+
+\gdef \t@b@g #1{% start \ArabTeX scanner
+ \def \next {\sc@word {#1}}\def \sc@char {@}%
+\ifcat a\nxp #1\else % letter
+\apply \set@next \tocase #1\of
+{ \@{\sc@endscan } % finished
+ '{\t@rquote }
+ `{\t@lquote }
+\default {\sc@word {#1}}
+}\endcase
+\fi \next }
+
+\gdef \t@w@rd #1{% transform input into internal notation
+ \def \next {\sc@word }%
+\ifx #1\@\def \next {\sc@endscan }\else % finished
+\ifcat \nxp #1a%
+ \ifx #1a\def \next {\t@aa }\else % test for aa -> A
+ \ifx #1n\def \next {\t@nn }\else % test for ng, ny
+ \edef \sc@char {\csname sc@#1\endcsname }% letter
+ \ifx \sc@char \relax \def \sc@char {#1}% undef letter
+ \fi
+ \ifs@nd \edef \next {\nxp \t@asp {\sc@char }}\else \sc@put
+ \fi
+ \fi\fi \else % other character
+\ifcat \nxp #1\relax \def \next {\t@cs #1}\else % control sequence
+\ifx #1'\def \next {\t@hamza }\else % hamza
+ \def \sc@char {#1}%
+\apply \set@next \tocase #1\of
+{~\@ldtie{\t@tie }
+ .{\t@dot }
+ ,{\t@comma }
+ -{\t@minus }
+ `{\t@ain }
+ "{\t@dquote }
+ :={\t@colon }
+ ^{\t@up }
+ _{\t@down }
+ |{\t@bar }
+\default {\t@w@@rd {#1}}
+}\endcase
+\fi\fi\fi\fi \next }
+
+\gdef \t@w@@rd #1{% default branch
+\ifcat \nxp #1\nxp ~\def \next {\t@cs #1}% % active character
+\else \def \sc@char {\nxp #1}% % other character
+ \ifs@nd \edef \next {\nxp \t@asp {\sc@char }}%
+ \else \sc@put \def \next {\sc@word }%
+ \fi
+\fi \next }
+
+} % \arab@codes
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \set@char@next #1#2{\def \sc@char {#1}\def \next {#2}}
+
+\def \set@@c@n #1{\set@char@next #1}
+
+\def \t@cs #1{% control sequence within a word; push back
+\apply \set@@c@n \tocase #1\of
+{ \a@tok \MIN \IN \cap
+ \shadda \madda \sukun
+ \raphe \dagesh \mappiq \ldot \rdot \cdot
+ {{#1} {\csname t@\xpa\@gobble\string #1\endcsname }}
+ \maqqef {{B} {\sc@put \sc@word }}
+ \, {{"|} {\sc@put \sc@word }}
+ \lq {{`} {\sc@put \sc@word }}
+ \c@p {{\nxp \cap } {\sc@put \sc@word }}
+ \abbr {{'} {\sc@put \sc@word }}
+ \rq {{'} {\sc@put \sc@back }}
+\default {{#1} {\sc@back #1}}%
+}\endcase \next }
+
+\def \tdef #1{% define robust ArabTeX scanner command
+\def #1{\nxp #1}%
+\xpa\def \csname t@\xpa\@gobble\string #1\endcsname }
+
+\tdef \a@tok (#1){% direct substitution
+\global \a@tokens \xpa {\the\a@tokens #1}\sc@word }
+
+\tdef \MIN {\def \sc@char {\nxp\a@ao \nxp\a@Zi }\sc@put \sc@word }
+
+\tdef \IN {\def \sc@char {\nxp\a@ai \nxp\a@Zi }\sc@put \sc@word }
+
+\tdef \shadda {\sc@dep {\nxp \a@Ze }}
+\tdef \madda {\sc@dep {\nxp \a@ZE }}
+\tdef \sukun {\sc@dep {\nxp \a@e }}
+\tdef \raphe {\sc@dep {\nxp \a@Zo }}
+\tdef \dagesh {\sc@dep {\nxp \a@Zu }}
+\tdef \mappiq {\sc@dep {\nxp \a@Zu }}
+\tdef \ldot {\sc@dep {\nxp \a@Za }}
+\tdef \rdot {\sc@dep {\nxp \a@Ze }}
+
+\def \t@cdot {\sc@dep {\nxp \a@Zi }}
+\def \t@cap #1{\sc@word \c@p #1} % kill braces on #1
+
+\def \sc@@back #1\@ \@@ {% end scanning, push back into input
+\global\def \a@rest {#1}\global\let \test@token \test@rest }
+
+\def \sc@@endscan \@@ {\global\let \a@scan \a@@scan }
+
+\def \sc@dep #1{% deposit tokens and proceed
+\def \sc@char {#1}\sc@put \sc@word }
+
+\def \sc@put {% deposit a symbol % no group!
+\edef \temp {\global \nxp \a@tokens % \temp
+ {\the\a@tokens \sc@char }}\temp }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \t@rquote #1#2{% context '#1#2 , initial
+\ifh@mza \ifx #1\@ \def \sc@char {QQ}\sc@put % '>
+ \def \next {\sc@endscan #2}\else
+ \ifx #1'\ifx #2\@ \def \sc@char {'}\sc@put
+ \def \next {\sc@word #2}% ''>
+ \else \def \sc@char {QQ}\sc@put \def \sc@char {Q}%
+ \def \next {\sc@word '#2}% ''x
+ \fi
+ \else \def \sc@char {QQ}\sc@put \def \sc@char {Q}%
+ \def \next {\sc@word #1#2}% 'xy
+ \fi\fi
+\else \ifu@gh \def \sc@char {QY}\sc@put
+ \else \def \sc@char {Q}\sc@put
+ \fi \def \next {\sc@word #1#2}%
+\fi \next }
+
+\def \t@hamza #1{% context \sc@char ' #1
+\ifh@mza % not verbatim mode
+ \ifx #1'\let \next \t@hamza@ii \else
+ \ifcat -\sc@char \def \sc@char {QQ}\sc@put
+ \else \xpa\def \xpa\sc@char \xpa{\xpa Q\sc@char }\sc@put
+ \fi \def \sc@char {Q}\def \next {\sc@word #1}%
+ \fi
+\else % verbatim mode
+ \ifx #1'\def \sc@char {'}\sc@put \let \next \sc@word
+ \else \ifu@gh \def \sc@char {QY}\sc@put
+ \else \def \sc@char {Q}\sc@put
+ \fi \def \next {\sc@word #1}%
+ \fi
+\fi \next }
+
+\def \t@hamza@ii #1#2{% context \sc@char '' #1 #2
+\ifcat \nxp #1a%
+ \edef \sc@toks {\the\a@tokens Q\sc@char QQ}%
+ \global \a@tokens =\xpa {\sc@toks }\def \sc@char {Q}%
+\else
+\ifcat \nxp #2a%
+ \edef \sc@toks {\the\a@tokens Q\sc@char QQ}%
+ \global \a@tokens =\xpa {\sc@toks }\def \sc@char {Q}%
+\else \def \sc@char {'}\sc@put % right quote
+\fi\fi \sc@word #1#2}
+
+\def \t@dquote #1{% verbatim
+\ifx #1'\ifh@mza \def \sc@char {"QQ}\sc@put
+ \else \def \sc@char {"Q}\sc@put
+ \fi \def \sc@char {Q}\let \next \sc@word
+\else \def \sc@char {"}\sc@put \def \next {\sc@word #1}%
+\fi \next }
+
+\def \t@ain {% ` = `ain
+\def \sc@char {P}\sc@put \sc@word }
+
+\def \t@lquote #1#2{% context `#1#2 at the beginning of a word
+\ifx #1`\def \sc@char {`}\sc@put \def \next {\sc@word #2}% ``x
+\else \def \sc@char {P}\sc@put \def \next {\sc@word #1#2}% `xy
+\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \t@aa #1{% aa -> A
+\edef \@tempa {\sc@char }%
+\xpa\ifx \@tempa Q\def \next {\sc@word #1}\def \sc@char {a}\else
+\ifx #1a\def \sc@char {A}\def \next {\sc@word }\else
+ \edef \sc@char {\sc@a }\def \next {\sc@word #1}%
+\fi\fi \sc@put \next }
+
+\def \t@nn #1{% after n
+ \def \sc@char {n}\def \next {\sc@word }%
+\ifm@lay \ifx #1g\def \sc@char {\nxp \a@p }\else
+ \ifx #1y\def \sc@char {\nxp \a@am }\else
+ \def \next {\sc@word #1}%
+ \fi\fi
+\else \def \next {\sc@word #1}%
+\fi \sc@put \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \t@minus #1{% after -
+\ifx #1-\def \sc@char {B}\def \next {\sc@word }\else
+ \def \sc@char {-}\def \next {\sc@word #1}%
+\fi \sc@put \next }
+
+\def \t@bar #1{% after |
+\ifx #1|\def \next {\sc@word \,}\else
+ \def \sc@char {|}\sc@put \def \next {\sc@word #1}%
+\fi \next }
+
+\def \set@char #1{\def \sc@char {#1}}
+
+\def \t@tail #1#2{% default exit
+\ifx \sc@char \empty \set@char {#1}\def \next {\sc@put \sc@word #2}%
+\else \def \next {\edef \temp {\nxp \t@asp {\sc@char }}\temp }%
+\fi \next }
+
+\def \t@dot #1{% after .
+\apply \set@char \tocase #1\of
+{ a{\ifk@sh \nxp \a@Za \else \nxp \a@A \fi }
+ b{\nxp \a@b }
+ c{c}
+ d{D}
+ e{\nxp \a@I }
+ f{\nxp \a@f }
+ g{R}
+ h{H}
+ i{\nxp \a@e }
+ k{\ift@rk q\else \nxp \a@k \fi }
+ l{\nxp \a@l }
+ n{\ifp@sht \nxp \a@m \else
+ \ifs@nd \nxp \a@an \else \nxp \a@n \fi\fi }
+ o{\ifk@sh \nxp \a@Zo \else \nxp \a@O \fi }
+ p{\nxp \a@f }
+ r{\ifs@nd \nxp \a@ar \else \nxp \a@R \fi }
+ s{S}
+ t{V}
+ u{\ifk@sh \nxp \a@Zu \else \nxp \a@U \fi }
+ v{\nxp \a@b }
+ y{\nxp \a@ZI }
+ z{Z}
+ A{\nxp \a@ZA }
+ O{\nxp \a@ZO }
+ U{\nxp \a@ZU }
+ Z{\nxp \a@Zz }
+ T{Y}
+}\endcase \t@tail .#1}
+
+\def \t@comma #1{% after ,
+\apply \set@char \tocase #1\of
+{ a{a\nxp \a@H }
+ A{\nxp \a@a \nxp \a@H }
+ c{\ift@rk J\else \nxp \a@c \fi }
+ d{\ifp@sht \nxp \a@aA \else
+ \ifs@nd \nxp \a@D \else \nxp \a@d \fi\fi }
+ e{e\nxp \a@H }
+ g{\nxp \a@L }
+ h{\nxp \a@h }
+ n{\ifs@nd \nxp \a@an \else \nxp \a@M \fi }
+ r{\ifp@sht \nxp \a@q \else
+ \ifs@nd \nxp \a@ar \else \nxp \a@r \fi\fi }
+ s{\ift@rk x\else \nxp \a@s \fi }
+ t{\ifp@sht \nxp \a@v \else
+ \ifs@nd \nxp \a@at \else \nxp \a@t \fi\fi }
+ z{\ift@rk D\else \nxp \a@z \fi }
+}\endcase \t@tail ,#1}
+
+\def \t@up #1{% after ^
+\apply \set@char \tocase #1\of
+{ c{J}
+ d{\nxp \a@D }
+ e{\nxp \a@E }
+ g{\ift@rk \nxp \a@p \else \ifk@rd R\else
+ \ifu@gh R\else G\fi\fi\fi }
+ l{\nxp \a@l }
+ n{\ifs@nd \nxp \a@ag \else \ifm@lay M\else K\fi\fi }
+ s{x}
+ u{U}
+ z{j}
+}\endcase \t@tail ^#1}
+
+\def \t@down #1{% after _
+\apply \set@char \tocase #1\of
+{ a{\nxp \a@a }
+ A{Y}
+ d{F}
+ e{\nxp \a@E }
+ h{X}
+ i{\nxp \a@i }
+ k{R}
+ o{\nxp \a@o }
+ O{\nxp \a@O }
+ s{C}
+ t{C}
+ u{\nxp \a@u }
+ U{\nxp \a@o }
+ z{F}
+}\endcase \t@tail @#1}
+
+\gdef \t@colon #1{% after = or :
+\apply \set@char \tocase #1\of
+{ a{\ifu@gh \nxp \a@H \else \nxp \a@A \fi }
+ b{\nxp \a@ab }
+ d{\nxp \a@ae }
+ e{\nxp \a@I }
+ g{\nxp \a@ak }
+ i{\nxp \a@I }
+ j{\nxp \a@ah }
+ I{\nxp \a@e }
+ n{\nxp \a@al }
+ o{\ifu@gh \nxp \a@W \else \nxp \a@O \fi }
+ s{\nxp \a@aJ }
+ O{\nxp \a@P }
+ t{V}
+ u{\ifu@gh \nxp \a@aw \else \nxp \a@U \fi }
+ U{\nxp \a@w }
+ z{D}
+}\endcase \t@tail :#1}
+
+\gdef \t@colon #1{% after = or :
+\apply \set@char \tocase #1\of
+{ a{\nxp \a@A }
+ b{\nxp \a@ab }
+ d{\nxp \a@ae }
+ e{\nxp \a@I }
+ g{\nxp \a@ak }
+ i{\nxp \a@I }
+ j{\nxp \a@ah }
+ I{\nxp \a@e }
+ n{\nxp \a@al }
+ o{\nxp \a@O }
+ s{\nxp \a@aJ }
+ O{\nxp \a@P }
+ t{V}
+ u{\nxp \a@U }
+ U{\nxp \a@w }
+ z{D}
+}\endcase \t@tail :#1}
+
+\def \t@tie #1{% after ~
+\apply \set@char \tocase #1\of
+{ l{\nxp \a@l }
+ g{\nxp \a@p }
+ n{\ifs@nd \nxp \a@ag \else \ifm@lay M\else K\fi\fi }
+}\endcase \t@tail ^#1}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \t@asp #1#2{% test for hah
+\ifs@nd \ifx #2h\def \next {\t@@asp {#1}}%
+ \else \def \next {\sc@put \sc@word #2}%
+ \fi
+\else \def \next {\sc@put \sc@word #2}%
+\fi \next }
+
+\def \t@@asp #1{% test for aspiration
+\apply \set@char \tocase #1\of
+{ b{\nxp \a@ap }
+ c{J}
+ d{\nxp \a@ad }
+ p{\nxp \a@aq }
+ k{\ifs@nd \nxp \a@k \else X\fi }
+ t{\nxp \a@ac }
+ J{\nxp \a@aj }
+ \a@D{\nxp \a@af }
+ \a@at{\nxp \a@T }
+ \a@ax{\nxp \a@k }
+}\endcase
+\ifx \empty \sc@char \def \sc@char {\nxp #1}\def \next {\sc@word h}%
+\else \def \next {\sc@word }%
+\fi \sc@put \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% preparations for additional scanners
+\def \setcode #1{% switch the input encoding
+\lowercase {\def \sc@code {#1}%
+\ifx \sc@code \sc@oldcode \else
+\begingroup \def \sc@lookup ##1#1##2##3\@@ {\endgroup ##2}%
+\xpa \sc@lookup \sc@table #1\sc@default \@@ \fi }%
+\let \sc@oldcode \sc@code }
+
+\pdef \stdcode #1{% prepare temp switch to standard
+\let \a@oldcode \sc@code \sc@standard \test@token #1 \@stdcode }
+
+\def \a@c@@stdcode {\xpa\setcode\xpa{\a@oldcode }}
+
+\all@w@ne \stdcode
+\xpa \all@w@ne \csname stdcode \endcsname
+
+\def \sc@table {% table of code names
+standard\sc@standard arabtex\sc@standard }
+
+\def \sc@restore {% restore scanner defaults
+\let \vocalize \v@calize \let \fullvocalize \fullv@calize
+\let \sc@beg \t@b@g \let \sc@word \t@w@rd
+\let \sc@back \sc@@back \let \sc@endscan \sc@@endscan
+\let \a@scan \a@@scan \seta@codes
+\let \arab@codes \a@arab@codes
+\let \unarab@codes \a@unarab@codes
+}
+
+\def \sc@standard {\sc@restore % standard encoding
+\ifx \sc@code \sc@oldcode \else
+\a@message {input encoding set to ArabTeX standard conventions.}\fi }
+
+\def \sc@default {\sc@restore % unknown encoding
+\a@message {unknown input encoding `\sc@code';
+ArabTeX standard encoding is assumed.}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {scanner for code `arabtex' installed.}
+\let \sc@oldcode \@ \setcode {standard} % default
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/asect.sty b/language/arabic/arabtex/texinput/asect.sty
new file mode 100644
index 0000000000..92fb08cd4a
--- /dev/null
+++ b/language/arabic/arabtex/texinput/asect.sty
@@ -0,0 +1,390 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% asect.sty
+% called by altxext.sty
+% 26.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {asect.sty} {3.11 section macros for Arabic} {26.04.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% sections
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iffalse % LaTeX 2.09 routines
+
+\def\@xsect#1{\@tempskipa #1\relax
+\ifdim \@tempskipa > \z@
+ \par \nobreak
+ \vskip\@tempskipa
+ \@afterheading
+\else \global\@nobreakfalse \global\@noskipsectrue
+ \everypar
+ {\if@noskipsec \global\@noskipsecfalse
+ \clubpenalty\@M \hskip -\parindent
+ \begingroup \@svsechd
+ \endgroup
+ \unskip \hskip -#1\relax % relax added 14 Jan 91
+ \else \clubpenalty \@clubpenalty
+ \everypar {}%
+ \fi}
+\fi \ignorespaces }
+
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+\ifnum #2 > \c@secnumdepth \let\@svsec \@empty
+\else \refstepcounter{#1}%
+ \edef\@svsec {\csname the#1\endcsname \hskip 1em}%
+\fi
+\@tempskipa #5\relax
+\ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \@hangfrom {\hskip #3\relax \@svsec }%
+ {\interlinepenalty \@M #8\par}%
+ \endgroup
+ \csname #1mark\endcsname {#7}%
+ \addcontentsline {toc}{#1}%
+ {\ifnum #2>\c@secnumdepth
+ \else \protect\numberline {\csname the#1\endcsname}%
+ \fi #7}%
+\else \def\@svsechd
+ {#6\hskip #3\relax %% \relax added 2 May 90
+ \@svsec #8\csname #1mark\endcsname {#7}%
+ \addcontentsline {toc}{#1}%
+ {\ifnum #2>\c@secnumdepth
+ \else \protect\numberline {\csname the#1\endcsname}%
+ \fi #7}}%
+\fi \@xsect{#5}}
+
+\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
+\ifdim \@tempskipa > \z@
+ \begingroup #4%
+ \@hangfrom {\hskip #1}%
+ {\interlinepenalty \@M #5\par}%
+ \endgroup
+\else \def\@svsechd {#4\hskip #1\relax #5}%
+\fi \@xsect{#3}}
+
+\def\@startsection#1#2#3#4#5#6{\if@noskipsec \leavevmode \fi
+\par \@tempskipa #4\relax
+\@afterindenttrue
+\ifdim \@tempskipa < \z@
+ \@tempskipa -\@tempskipa \@afterindentfalse
+\fi
+\if@nobreak \everypar{}%
+\else \addpenalty{\@secpenalty}\addvspace{\@tempskipa}%
+\fi
+\@ifstar {\@ssect{#3}{#4}{#5}{#6}}%
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
+
+\def\@afterheading{\global\@nobreaktrue
+\everypar {\if@nobreak \global\@nobreakfalse \clubpenalty \@M
+ \if@afterindent \else {\setbox\z@\lastbox}\fi
+ \else \clubpenalty \@clubpenalty \everypar{}%
+ \fi}}
+
+\fi % end of LaTeX 2.09 routines
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Arabic versions
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@startsection #1#2#3#4#5#6{% Arabic mode
+%\tracingmacros 1
+\if@noskipsec \leavea@vmode \fi
+\a@@par \@tempskipa #4\relax \@afterindenttrue
+\ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse
+\fi
+\if@nobreak \a@@everypar {}%
+\else \addpenalty \@secpenalty \addvspace \@tempskipa
+\fi
+\@ifstar {\a@ssect {#3}{#4}{#5}{#6}}%
+ {\@dblarg {\a@sect {#1}{#2}{#3}{#4}{#5}{#6}}}}
+
+\def \a@ssect #1#2#3#4#5{% Arabic mode
+\@tempskipa #3\relax
+\ifdim \@tempskipa > \z@
+ \begingroup \let \end \a@@par
+ #4\relax \set@arabfont % style
+ \a@hangfrom {\hskip #1\relax }% indentation
+ \test@token #5 \end
+ \endgroup
+\else \def \@svsechd {\putwordb@x {#4\xpa\RL \xpa{#5}\hskip #1\relax }}%
+\fi \a@xsect{#3}}
+
+\def\a@sect #1#2#3#4#5#6[#7]#8{% Arabic mode
+\ifnum #2 > \c@secnumdepth \let \@svsec \@empty
+\else \refstepcounter{#1}%
+ \edef \@svsec {\hskip 1em \nxp\RL {\csname the#1\endcsname }}%
+\fi
+\@tempskipa #5\relax
+\ifdim \@tempskipa > \z@
+ \begingroup \let \end \a@@par
+ #6\relax \set@arabfont % style
+ \a@hangfrom {\hskip #3\relax \@svsec }% section number
+ \test@token #8 \end
+ \endgroup
+ \csname #1mark\endcsname {\RL {#7}}%
+ \addcontentsline {toc}{#1}%
+ {\ifnum #2 > \c@secnumdepth \else
+ \protect\numberline {\csname the#1\endcsname }\fi
+ \protect\RL {#7}}%
+\else \def \@svsechd % saved head, executed by \everypar
+ {\putwordb@x {#6\xpa\RL {#8}\@svsec \hskip #3\relax }%
+ \csname #1mark\endcsname {\RL {#7}}%
+ \addcontentsline {toc}{#1}%
+ {\ifnum #2>\c@secnumdepth \else
+ \protect\numberline {\csname the#1\endcsname}\fi
+ \protect\RL {#7}}}% \@svsechd
+\fi \a@xsect {#5}}
+
+\def\a@xsect #1{% Arabic mode
+\@tempskipa #1\relax
+\ifdim \@tempskipa>\z@ \a@@par \nobreak \vskip \@tempskipa
+ \a@afterheading
+\else \global\@nobreakfalse \global\@noskipsectrue
+\a@@everypar {\if@noskipsec \global\@noskipsecfalse \clubpenalty \@M
+ \putwordb@x {\hskip -\a@parindent }\@svsechd
+ \putwordb@x {\hskip -#1\relax }%
+ \else \clubpenalty \@clubpenalty \a@@everypar {}%
+ \fi}
+\fi \a@spacefalse
+%\tracingmacros 0
+\test@token }
+
+\def \a@afterheading {% Arabic mode
+\global\@nobreaktrue
+\a@@everypar {% when entering Arabic horizontal mode
+ \if@nobreak \global\@nobreakfalse \clubpenalty \@M
+ \if@afterindent \else \putwordb@x {\hskip -\a@parindent }%
+ \fi
+ \else \clubpenalty \@clubpenalty \a@@everypar{}%
+ \fi}}
+
+\def \a@hangfrom #1{% hanging indentation for rest of paragraph (group)
+\setbox0 \hbox {#1}\@tempdima \wd0
+\advance \leftskip \@tempdima \advance \a@limit -\@tempdima
+\putlineb@x {\rlap {\unhbox0 }}\a@spacefalse }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% for table of contents
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iffalse % LaTeX 2.09 routines
+
+\def\contentsline#1{\csname l@#1\endcsname}
+
+% \@dottedtocline{LEVEL}{INDENT}{NUMWIDTH}{TITLE}{PAGE} :
+% Macro to produce a table of contents line with the following
+% parameters:
+% LEVEL : If LEVEL > \c@tocdepth, then no line produced.
+% INDENT : Total indentation from the left margin.
+% NUMWIDTH : Width of box for number if the TITLE has a
+% \numberline command.
+% As of 25 Jan 88, this is also the amount of extra indentation
+% added to second and later lines of a multiple line entry.
+% TITLE : Contents of entry.
+% PAGE : Page number.
+%
+% Uses the following parameters, which must be set by the document style.
+% They should be defined with \def's.
+% \@pnumwidth : Width of box in which page number is set.
+% \@tocrmarg : Right margin indentation for all but last line of
+% multiple-line entries.
+% \@dotsep : Separation between dots, in mu units. Should be \def'd to
+% a number like 2 or 1.7
+%
+
+%% RmS 91/09/29: added \reset@font for page number
+\def\@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else
+ \vskip \z@ plus.2\p@
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax \advance\leftskip \@tempdima \hbox{}\hskip -\leftskip
+ #4\nobreak\leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern \@dotsep
+ mu$}\hfill \nobreak
+ \hbox to\@pnumwidth{\hfil\reset@font\rm #5}\par}\fi}
+
+
+%%% Note: \nobreak's added 7 Jan 86 to prevent bad line break that
+%%% left the page number dangling by itself at left edge of a new line.
+%%%
+%%% Changed 25 Jan 88 to use \leftskip instead of \hangindent so
+%%% leaders of multiple-line contents entries would line up properly.
+
+% \numberline{NUMBER} : For use in a \contentsline command.
+% It puts NUMBER flushleft in a box of width \@tempdima
+% (Before 25 Jan 88 change, it also added \@tempdima to the hanging
+% indentation.)
+
+\def\numberline#1{\hbox to\@tempdima{#1\hfil}}
+
+\fi % end of LaTeX 2.09 routines
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Arabic versions of toc auxiliary routines
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@starttoc #1{\endarabtext
+\the\arabtext@hook \@starttoc {#1}\arabtext }
+
+\def \a@t@ble #1#2{% \tableofcontents etc.
+\a@c@section *{#1}\@mkboth {#1}{#1}\starttoc {#2}}
+
+\def \a@c@@mkboth #1#2{\@mkboth {\RL{#1}}{\RL{#2}}\test@token }
+
+\def \a@@lsection #1#2#3{% common part for \part and \section
+ \begin{arabtext}
+% \tocp@rs {\z@ }{\@tempdima }#3 #1 {\hfill \thep@geno {#2}}
+ \tocp@rs {\z@ }{\@tempdima }#3 #1 {#3\hfill \thep@geno {#2}}
+ \end{arabtext}}
+
+\def \a@dottedtocline #1#2#3#4#5{% for Arabic mode
+\ifnum #1>\c@tocdepth
+\else \vskip \z@ plus.2\p@
+ \begin{arabtext}
+ \tocp@rs {#2}{#3}#4 {\le@ders \thep@geno {#5}}
+ \end{arabtext}
+\fi }
+
+\def \a@c@tocp@rs #1#2{% change toc parameters
+\advance \leftskip #1\relax \advance \a@limit -#1\relax
+\advance \leftskip #2\relax \advance \a@limit -#2\relax
+\advance \rightskip \@tocrmarg \advance \a@limit -\@tocrmarg
+\@tempdima #2\relax % for \numberline, width of number
+\parfillskip \z@ \test@token }
+
+\def \a@c@le@ders {% for toc
+\setbox \wordb@x \hbox to \z@ {\leaders \hbox
+{$\m@th \mkern \@dotsep mu\hbox {.}\mkern \@dotsep mu$}\hfill }%
+\put@word \test@token }
+
+\def \a@c@thep@geno #1{% pagenumber of width \@pnumwidth
+\dimen@ \@pnumwidth \advance \dimen@ -\rightskip
+\a@c@spreadbox {\dimen@ }{\hss #1 \hspace {-\rightskip }}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\iffalse
+\def \a@numberline #1#2{% for arabic mode
+#2\hbox to\@tempdima {\hfil \<#1>}}
+
+\def \a@numberline #1\a@RL #2{% for arabic mode
+\RL {\spreadbox \@tempdima {#1 \hfill }#2}}
+\fi
+
+\def \a@c@numberline #1{% external Arabic command
+\a@c@hspace {-\@tempdima }\spreadbox \@tempdima {#1 \hfill }}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\at@arabtext {% modify LaTeX for Arabic mode
+ \let \numberline \a@numberline
+ \let \@dottedtocline \a@dottedtocline
+\if@twocolumn
+ \def\@pnumwidth{1.0em}
+ \def\@tocrmarg {1em}
+\fi
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@addcontentsline #1#2#3{% Arabic version
+\addcontentsline {#1}{#2}{\LR{#3}}\arab@tail }
+
+\let \a@c@abstract \a@c@quotation
+\let \endabstract \endquotation
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iffalse % LaTeX 2.09 routines
+
+\def\@starttoc#1{\begingroup
+ \makeatletter
+ \@input{\jobname.#1}\if@filesw \expandafter\newwrite\csname tf@#1\endcsname
+ \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
+ \fi \global\@nobreakfalse \endgroup}
+
+\fi % end of LaTeX 2.09 routines
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\a@sect #1#2#3#4#5#6[#7]#8{% Arabic mode
+\ifnum #2 > \c@secnumdepth \let \@svsec \@empty
+\else \refstepcounter{#1}%
+ \edef \@svsec
+ {\nxp\RL {\nxp\stdcode {\csname the#1\endcsname }\hskip 1em}}%
+\fi
+\@tempskipa #5\relax
+\ifdim \@tempskipa > \z@
+ \begingroup \let \end \a@@par
+ #6\relax \set@arabfont % style
+ \a@hangfrom {\hskip #3\relax \@svsec }% section number
+ \test@token #8 \end
+ \endgroup
+ \csname #1mark\endcsname {\RL {#7}}%
+ \addcontentsline {toc}{#1}%
+ {\ifnum #2 > \c@secnumdepth \else \protect\numberline
+ {\protect\RL{\protect\stdcode{\csname the#1\endcsname }}}\fi
+ \protect\RL {#7}}%
+\else \def \@svsechd {% saved head, executed by \everypar
+ #6\relax \set@arabfont % style
+ \let \a@@end \end \def \end {\let \end \a@@end }%
+ \test@token \@svsec % saved section number
+ \hskip #3\relax #8 \end
+ \csname #1mark\endcsname {\RL {#7}}%
+ \addcontentsline {toc}{#1}%
+ {\ifnum #2>\c@secnumdepth \else \protect\numberline
+ {\protect\RL{\protect\stdcode{\csname the#1\endcsname }}}\fi
+ \protect\RL {#7}}}% \@svsechd
+\fi \a@xsect {#5}}
+
+\allowarab \@svsec
+
+\def\a@xsect #1{% Arabic mode
+\@tempskipa #1\relax
+\ifdim \@tempskipa>\z@ \a@@par \nobreak \vskip \@tempskipa
+ \a@afterheading
+\else \global\@nobreakfalse \global\@noskipsectrue
+\a@@everypar {\if@noskipsec \global\@noskipsecfalse \clubpenalty \@M
+ \putwordb@x {\hskip -\a@parindent }\@svsechd
+ \putwordb@x {\hskip -#1\relax }%
+ \else \clubpenalty \@clubpenalty \a@@everypar {}%
+ \fi}
+\fi \a@spacefalse \test@token }
+
+\def \a@c@numberline #1{% external Arabic command
+\a@c@hspace {-\@tempdima }\spreadbox \@tempdima {#1 \hfill }}
+
+\def \a@@lsection #1#2#3{% Text, Pageno, Font
+% common part for \part and \section
+ \begin{arabtext}
+ #3\tocp@rs {\z@ }{\@tempdima }#1 \hfill \thep@geno {#2}
+ \end{arabtext}}
+
+\def \a@dottedtocline #1#2#3#4#5{% Level, Indent, Numwidth, Text, Pageno
+% for Arabic mode
+\ifnum #1>\c@tocdepth
+\else \vskip \z@ plus.2\p@
+ \begin{arabtext}
+ \tocp@rs {#2}{#3}#4 {\le@ders \thep@geno {#5}}
+ \end{arabtext}
+\fi }
+
+\def \a@c@tocp@rs #1#2{% Indent, Numwidth
+% change toc parameters
+\leftskip #1\relax \advance \leftskip #2\relax
+\advance \rightskip \@tocrmarg
+\@tempdima #2\relax % for \numberline, width of number
+\a@parindent \z@ \parfillskip \z@ \test@token }
+
+\at@arabtext {% modify LaTeX for Arabic mode
+ \let \numberline \a@numberline
+ \let \@dottedtocline \a@dottedtocline
+}
+
+\c@secnumdepth \c@tocdepth % for test TOC
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/asize10.clo b/language/arabic/arabtex/texinput/asize10.clo
new file mode 100644
index 0000000000..60d66fdc74
--- /dev/null
+++ b/language/arabic/arabtex/texinput/asize10.clo
@@ -0,0 +1,40 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This is ASIZE10.CLO in text format
+% size dependent corrections for arabart.cls and size10.clo
+% for use with ArabTeX Version 3.04
+% 29.11.1995
+%
+% Copyright (C) 1995 by Klaus Lagally
+%
+% reusing art12.sty of 14 Jan 1992
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ProvidesFile {asize10.clo}[1995/11/29 v1.00 10pt parameters for arabart]
+
+% ****************************************
+% * PAGE LAYOUT *
+% ****************************************
+
+\columnsep 20pt
+\columnseprule .4pt
+\headheight 18pt
+
+% ****************************************
+% * LISTS *
+% ****************************************
+
+% presently not changed
+
+\iffalse
+\leftmargini 2.5em
+\leftmarginii 2.2em % > \labelsep + width of '(m)'
+\leftmarginiii 1.87em % > \labelsep + width of 'vii.'
+\leftmarginiv 1.7em % > \labelsep + width of 'M.'
+\leftmarginv 1em
+\leftmarginvi 1em
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/asize11.clo b/language/arabic/arabtex/texinput/asize11.clo
new file mode 100644
index 0000000000..ae88f77e47
--- /dev/null
+++ b/language/arabic/arabtex/texinput/asize11.clo
@@ -0,0 +1,40 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This is ASIZE11.CLO in text format
+% size dependent corrections for arabart.cls and size11.clo
+% for use with ArabTeX Version 3.04
+% 29.11.1995
+%
+% Copyright (C) 1995 by Klaus Lagally
+%
+% reusing art12.sty of 14 Jan 1992
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ProvidesFile {asize11.clo}[1995/11/29 v1.00 11pt parameters for arabart]
+
+% ****************************************
+% * PAGE LAYOUT *
+% ****************************************
+
+\columnsep 20pt
+\columnseprule .4pt
+\headheight 18pt
+
+% ****************************************
+% * LISTS *
+% ****************************************
+
+% presently not changed
+
+\iffalse
+\leftmargini 2.5em
+\leftmarginii 2.2em % > \labelsep + width of '(m)'
+\leftmarginiii 1.87em % > \labelsep + width of 'vii.'
+\leftmarginiv 1.7em % > \labelsep + width of 'M.'
+\leftmarginv 1em
+\leftmarginvi 1em
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/asize12.clo b/language/arabic/arabtex/texinput/asize12.clo
new file mode 100644
index 0000000000..7290057ddb
--- /dev/null
+++ b/language/arabic/arabtex/texinput/asize12.clo
@@ -0,0 +1,40 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This is ASIZE12.CLO in text format
+% size dependent corrections for arabart.cls and size12.clo
+% for use with ArabTeX Version 3.04
+% 29.11.1995
+%
+% Copyright (C) 1995 by Klaus Lagally
+%
+% reusing art12.sty of 14 Jan 1992
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ProvidesFile {asize12.clo}[1995/11/29 v1.00 12pt parameters for arabart]
+
+% ****************************************
+% * PAGE LAYOUT *
+% ****************************************
+
+\columnsep 20pt
+\columnseprule .4pt
+\headheight 18pt
+
+% ****************************************
+% * LISTS *
+% ****************************************
+
+% presently not changed
+
+\iffalse
+\leftmargini 2.5em
+\leftmarginii 2.2em % > \labelsep + width of '(m)'
+\leftmarginiii 1.87em % > \labelsep + width of 'vii.'
+\leftmarginiv 1.7em % > \labelsep + width of 'M.'
+\leftmarginv 1em
+\leftmarginvi 1em
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/asmo449.sty b/language/arabic/arabtex/texinput/asmo449.sty
new file mode 100644
index 0000000000..7672e9c1c1
--- /dev/null
+++ b/language/arabic/arabtex/texinput/asmo449.sty
@@ -0,0 +1,122 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% asmo449.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% asmo449.sty
+% Scanner for ASMO 449 Code (ISO 9036) (table driven)
+% to install it, include it as a LaTeX package or style option "asmo449"
+% with Plain TeX, say "\input asmo449.sty"
+% to activate it, say "\setcode {asmo449}" or "\setcode {iso9036}"
+% 26.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \asmoatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \asmoatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {asmo449.sty} {3.11 ASMO449 input encoding (table)} {26.04.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setasmo@codes {% activate and change some codes
+\a@digits = {0123456789}%
+\a@paren = {"'([}%
+\a@first = {}%
+}% end of dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \asmo@tbli {% ASMO re-encoding table
+\\AQ|\\BQA\\CQa\\DQw\\EQi\\FQy\\GA\\Hb\\IT%
+\\Jt\\KC\\LG\\MH\\NX\\Od\\PF\\Qr\\Rz%
+\\Ss\\Tx\\US\\VD\\WV\\XZ\\YP\\ZR%
+\\af\\bq\\ck\\dl\\em\\fn\\gh\\hw\\iY%
+\\jy\\k"aN\\l"uN\\m"iN\\n"a\\o"u\\p"i\\q@\\r""%
+\\s@\\t@\\u@\\v@\\w@\\x@\\y@\\z@\\`B\\@@}
+
+\def \asmo@tblii {% shadda + harakaat
+\\q\\sk\\tl\\um\\vn\\wo\\xp}
+
+\def \asmo@tbliii {% medial special characters
+\\\@\sc@endscan\\-\asmo@minus\\"\asmo@rquote}
+
+\def \asmo@tbliv {% initial special characters
+\\\@\sc@endscan\\G\asmo@alif\\"\asmo@lquote\\'\asmo@lquote}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newif \ifa@quote
+
+\def \asmo@beg #1#2{% start ASMO 449 scanner
+ \h@mzafalse \iz@fetfalse \novocalize % because of explicit quoting
+ \@ssimfalse
+ \def \next {\asmo@word #1#2}%
+ \def \l@@kup ##1\\#1##2\\##3\@@ {% look for special chars
+ \ifx *##2\relax\xpa\xpa\xpa\iffalse\fi\fi % not found; else
+ \def \next {##2#2}}%
+\iftrue \xpa \l@@kup \asmo@tbliv \\#1*\\\@@ \else
+\ifx #1/\global \a@tokens ={#1}\def \next {\asmo@word #2}% /x
+\fi\fi \next }
+
+{\catcode `\^ 7 \catcode `\^^M=13
+\gdef \asmo@word #1#2{% transform input into internal notation
+ \def \l@@kup ##1\\#1##2\\##3\@@ {% look for special chars
+ \ifx *##2\relax\xpa\xpa\xpa\iffalse\fi\fi %
+ \def \next {##2#2}}%
+\iftrue \xpa \l@@kup \asmo@tbliii \\#1*\\\@@ \else %
+\ifx #1/\def \next {\sc@back #1#2}\else %
+\if \nxp ^^M\nxp #1\def \next {\asmo@par #2}\else %
+\ifx #1#2\def \next {\asmo@word #1-#2}\else %
+ \def \l@@kup ##1\\#1##2\\##3\@@ {% reencode char
+ \def \sc@char {##2}}%
+ \xpa \l@@kup \asmo@tbli \\#1\nxp #1\\\@@ % reencode
+ \sc@put %
+ \def \l@@kup ##1\\#2##2\\##3\@@ {% look for shadda variants
+ \ifx *##2\relax\def \next {\asmo@word #2}%
+ \else \def \next {\asmo@word #1##2}\fi }%
+ \xpa \l@@kup \asmo@tblii \\#2*\\\@@ % double 1st char
+\fi\fi\fi\fi \next }%
+} % catcode 13
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \asmo@alif {% alif at the beginning of a word
+\def \sc@char {a}\sc@put \asmo@word }
+
+\def \asmo@minus {% hyphen between words
+\def \sc@char {-}\sc@put \asmo@beg }
+
+\def \asmo@lquote {% left quote
+\ifa@quote \def \sc@char {'}\global\a@quotefalse
+\else \def \sc@char {`}\global\a@quotetrue
+\fi
+\sc@put \asmo@beg }
+
+\def \asmo@rquote {% right quote
+\global\a@quotefalse
+\def \sc@char {'}\sc@put \asmo@word }
+
+\def \asmo@par #1\@ \@@ {% new line, push back the rest
+\sc@back \\#1\@ \@@ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \set@asmo {% select the ASMO 449 scanner
+\let \sc@beg \asmo@beg \let \sc@word \asmo@word
+\let \sc@back \sc@@back \let \sc@endscan \sc@@endscan
+\global\let \a@scan \a@@scan \setasmo@codes \a@quotefalse
+\a@message {input encoding set to ASMO 449 (ISO 9036) conventions}}
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the ASMO449 encoding
+asmo449\set@asmo iso9036\set@asmo }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {scanner for code ASMO 449 (ISO 9036) installed.}
+
+\catcode `\@ = \asmoatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/asmo449a.sty b/language/arabic/arabtex/texinput/asmo449a.sty
new file mode 100644
index 0000000000..02607dd887
--- /dev/null
+++ b/language/arabic/arabtex/texinput/asmo449a.sty
@@ -0,0 +1,126 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% asmo449.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% asmo449.sty
+% Scanner for ASMO 449 Code (ISO 9036) (long version)
+% to install it, include it as a LaTeX package or style option "asmo449"
+% with Plain TeX, say "\input asmo449.sty"
+% to activate it, say "\setcode {asmo449}" or "\setcode {iso9036}"
+% 11.04.1997
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \asmoatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \asmoatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {asmo449.sty} {3.05 ASMO449 input encoding (long)} {11.04.1997}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Arabic
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setasmo@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@A {Q|} \def \sc@B {QA} \def \sc@C {Qa} \def \sc@D {Qw}
+\def \sc@E {Qi} \def \sc@F {Qy} \def \sc@G {A} \def \sc@H {b}
+\def \sc@I {T} \def \sc@J {t} \def \sc@K {C} \def \sc@L {G}
+\def \sc@M {H} \def \sc@N {X} \def \sc@O {d} \def \sc@P {F}
+\def \sc@Q {r} \def \sc@R {z} \def \sc@S {s} \def \sc@T {x}
+\def \sc@U {S} \def \sc@V {D} \def \sc@W {V} \def \sc@X {Z}
+\def \sc@Y {P} \def \sc@Z {R}
+\def \sc@a {f} \def \sc@b {q} \def \sc@c {k} \def \sc@d {l}
+\def \sc@e {m} \def \sc@f {n} \def \sc@g {h} \def \sc@h {w}
+\def \sc@i {Y} \def \sc@j {y} \def \sc@k {"aN} \def \sc@l {"uN}
+\def \sc@m {"iN} \def \sc@n {"a} \def \sc@o {"u} \def \sc@p {"i}
+\def \sc@q {@} \def \sc@r {""} \def \sc@s {@} \def \sc@t {@}
+\def \sc@u {@} \def \sc@v {@} \def \sc@w {@} \def \sc@x {@}
+\def \sc@y {@} \def \sc@z {@} \def \sc@@ {@}
+\a@digits = {0123456789} \a@paren = {"'([}
+\a@first = {}
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newif \ifa@quote
+
+\def \asmo@beg #1#2{% start ASMO 449 scanner
+\h@mzafalse \iz@fetfalse \novocalize % because of explicit quoting
+ \def \next {\asmo@word #1#2}%
+\ifx #1\@ \def \next {\sc@endscan #2}\else % finished
+\ifx #1G\def \next {\asmo@alif #2}\else
+\ifx #1"\def \next {\asmo@lquote #2}\else
+\ifx #1/\global \a@tokens ={#1}\def \next {\asmo@word #2}% x>
+\fi\fi\fi\fi \next }
+
+{\catcode `\^ 7 \catcode `\^^M=13
+\gdef \asmo@word #1#2{% transform input into internal notation
+\ifx #1\@ \def \next {\sc@endscan #2}\else % finished
+\ifx #1-\def \next {\asmo@minus #2}\else %
+\ifx #1"\def \next {\asmo@rquote #2}\else %
+\ifx #1/\def \next {\sc@back #1#2}\else %
+\if \nxp ^^M\nxp #1\def \next {\asmo@par #2}\else % active character
+\ifx #1#2\def \next {\asmo@word #1-#2}\else %
+ \ifx #1`\def \sc@char {B}\else %
+ \ifcat a\nxp #1\edef \sc@char {\csname sc@#1\endcsname }%
+ \else \def \sc@char {\nxp #1}%
+ \fi \fi %
+ \sc@put %
+ \ifx #2q\def \next {\asmo@word #1}\else %
+ \ifx #2s\def \next {\asmo@word #1k}\else %
+ \ifx #2t\def \next {\asmo@word #1l}\else %
+ \ifx #2u\def \next {\asmo@word #1m}\else %
+ \ifx #2v\def \next {\asmo@word #1n}\else %
+ \ifx #2w\def \next {\asmo@word #1o}\else %
+ \ifx #2x\def \next {\asmo@word #1p}\else %
+ \def \next {\asmo@word #2}%
+ \fi\fi\fi\fi\fi\fi\fi %
+\fi\fi\fi\fi\fi\fi \next }%
+} % catcode 13
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \asmo@alif {% alif at the beginning of a word
+\def \sc@char {a}\sc@put \asmo@word }
+
+\def \asmo@minus {% hyphen between words
+\def \sc@char {-}\sc@put \asmo@beg }
+
+\def \asmo@lquote {% left quote
+\ifa@quote \def \sc@char {'}\global\a@quotefalse
+\else \def \sc@char {`}\global\a@quotetrue
+\fi
+\sc@put \asmo@beg }
+
+\def \asmo@rquote {% right quote
+\global\a@quotefalse
+\def \sc@char {'}\sc@put \asmo@word }
+
+\def \asmo@par #1\@ \@@ {% new line, push back the rest
+\sc@back \\#1\@ \@@ }
+
+\def \asmo@endscan \@@ {\global\let \a@scan \a@@scan }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \set@asmo {% select the ASMO 449 scanner
+\let \sc@beg \asmo@beg \let \sc@word \asmo@word
+\let \sc@back \sc@@back \let \sc@endscan \sc@@endscan
+\global\let \a@scan \a@@scan \setasmo@codes \a@quotefalse
+\message {input encoding set to ASMO 449 (ISO 9036) conventions}}
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the ASMO449 encoding
+asmo449\set@asmo iso9036\set@asmo }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\message {scanner for code ASMO 449 (ISO 9036) installed.}
+
+\catcode `\@ = \asmoatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/atabg.sty b/language/arabic/arabtex/texinput/atabg.sty
new file mode 100644
index 0000000000..b2bd9f1b8c
--- /dev/null
+++ b/language/arabic/arabtex/texinput/atabg.sty
@@ -0,0 +1,129 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% atabg.sty
+% called by altxext.sty
+% 21.01.1997
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {atabg.sty} {3.05 LaTeX tabbing macros for Arabic} {21.01.1997}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@tabdef #1{\xpa\def \csname a@c@\string #1\endcsname }
+
+\def \a@c@tabbing {% tabbing in Arabic mode
+\a@tabdef >{\a@rtab \test@token }
+\a@tabdef ={\a@settab \test@token }
+\a@tabdef <{\@ltab \test@token }
+\a@tabdef +{\@tabplus \test@token }
+\a@tabdef -{\@tabminus \test@token }
+\a@tabdef `{\a@tabrj \test@token }
+\a@tabdef '{\a@tablab \test@token }
+\def \a@last@line {\let \next \a@tabcr }
+\let \endtabbing \a@endtabbing
+\a@@par \lineskip \z@skip
+\@hightab \@firsttab \global\@nxttabmar \@firsttab
+\dimen\@firsttab \@totalleftmargin \global\@tabpush \z@
+\global\@rjfieldfalse
+\trivlist \item\relax
+\if@minipage \else \vskip\parskip \fi
+\setbox\@tabfbox \hbox
+ {\rlap {\indent \hskip\@totalleftmargin \the\everypar }}%
+\def \@itemfudge {\box\@tabfbox }%
+\a@startline \test@token }
+
+\def \a@endtabbing {% end of Arabic tabbing environment
+\a@stopline \aftergroup \a@spacefalse
+\ifnum\@tabpush >\z@ \@badpoptabs \fi
+\endtrivlist }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@startline{% open new tabbing line
+\ifnum \@nxttabmar >\@hightab \@badtab \global\@nxttabmar \@hightab \fi
+\global\@curtabmar \@nxttabmar \global\@curtab \@curtabmar
+\global\setbox\@curline \hbox {}\a@startfield }
+
+\def \a@stopline {% deposit tabbing line
+\a@stopfield \a@spacefalse
+\if@rjfield \global\@rjfieldfalse
+ \@tempdima\@totalleftmargin \advance\@tempdima\linewidth
+ \putwordb@x {\hb@xt@ \@tempdima
+ {\box\@curfield \hfil \box\@curline
+ \hskip\dimen\@curtabmar \@itemfudge }}%
+\else \a@addfield \putwordb@x {\hbox
+ {\box\@curline \hskip\dimen\@curtabmar \@itemfudge }}%
+\fi \short@line }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@startfield {% new tabbing field
+\initlineb@x \putwordb@x {\color@endgroup }}
+
+\def \a@stopfield {% end of tabbing field
+\global\setbox\@curfield \hbox {\color@begingroup \unhbox\lineb@x }}
+
+\def \a@contfield {% continue tabbing field
+\setbox\lineb@x \box\@curfield
+\a@spacefalse \putwordb@x {\color@endgroup }}
+
+\def \a@addfield {% add field to current line
+\ifdim \wd\@curfield = \z@ \else
+\global\setbox\@curline \hbox
+ {\arab@space \unhbox\@curfield \unhbox\@curline }\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@tabcr {\a@stopline \@ifstar{\penalty \@M \a@xtabcr }\a@xtabcr }
+\def \a@xtabcr {\@ifnextchar[\a@itabcr {\a@startline \test@token }}
+\def \a@itabcr [#1]{\vskip #1\a@startline \test@token }
+
+\def \a@c@kill {\a@stopfield \a@startline \test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@rtab {% \> skip right
+\a@stopfield \a@addfield
+\ifnum \@curtab<\@hightab \global\advance\@curtab \@ne
+\else\@badtab\fi
+\@tempdima \dimen\@curtab
+\advance\@tempdima -\dimen\@curtabmar
+\advance\@tempdima -\wd\@curline
+\global\setbox\@curline \hbox {\hskip\@tempdima \unhbox\@curline }%
+\a@startfield }
+
+\def \a@settab {% \= set tab
+\a@stopfield \a@addfield
+\ifnum \@curtab <\@maxtab
+ \ifnum\@curtab =\@hightab \advance\@hightab \@ne \fi
+ \global\advance\@curtab \@ne
+\else \@latex@error{Tab overflow}\@ehd \fi
+\dimen\@curtab \dimen\@curtabmar \advance\dimen\@curtab \wd\@curline
+\a@startfield }
+
+\def \a@tabrj {% \` field at right margin
+\a@stopfield \a@addfield \global\@rjfieldtrue \a@startfield }
+
+\def \a@tablab {% \' field right adjusted to last tab
+\a@stopfield \dimen@ \wd\@curfield
+\global\setbox\@curline \hbox {\hskip\tabbingsep \box\@curfield
+ \hskip-\dimen@ \hskip-\tabbingsep \box\@curline }%
+\a@startfield }
+
+\def \a@c@pushtabs {% new level of tabs
+\a@stopfield \a@addfield \global\advance\@tabpush \@ne
+\begingroup \a@contfield \test@token }
+
+\def \a@c@poptabs {% return to previous level
+\a@stopfield \a@addfield
+\ifnum \@tabpush >\z@ \endgroup \global\advance\@tabpush \m@ne
+ \ifnum \@curtab >\@hightab \global\@curtab \@hightab \@badtab \fi
+\else \@badpoptabs \fi
+\a@contfield \test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/atrans.sty b/language/arabic/arabtex/texinput/atrans.sty
new file mode 100644
index 0000000000..4dc5fabc71
--- /dev/null
+++ b/language/arabic/arabtex/texinput/atrans.sty
@@ -0,0 +1,432 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% atrans.sty
+% transcription module for ArabTeX
+% ZDMG Transcription
+% Encyclopedia of Islam Transcription
+% Modern Turkish Transcription
+% Urdu Transcription
+% Uighuric Transcription
+% 14.06.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Additional Transcription Modes for Farsi:
+% Encyclopedia Iranica [Standard Farsi]
+% Farsi [Modified Encyclopedia Iranica]
+% Lazard [Philological: Gilbert Lazard, etc.]
+% (c) Adrian Rezus [adriaan@{sci,cs}.kun.nl]: Nijmegen, Nederland
+% 21.12.95
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \transatcode \undefined
+\chardef \transatcode = \catcode`\@ \catcode`\@ = 11
+\a@ident {atrans.sty} {3.11 generate the transliteration } {14.06.2003}
+\else \xpa \endinput
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\let \a@hyp \- \let \a@macron \=
+\let \a@acute \' \let \a@grave \`
+
+\gdef \a@trans #1>{% transcribe word
+\iftest@trans \tracingmacros=1
+\iftest@scan \else \a@verb (#1)>\fi\fi
+{\if@was \@vocaltrue \else \@vocalfalse \fi
+\let \- \a@hyp \let \= \a@macron
+\let \' \a@acute \let \` \a@grave \def \tr@act {-}%
+\tr@aword #1|||>>%
+\if@vocal \global \@wastrue \else \global \@wasfalse \fi }%
+\iftest@trans \tracingmacros=0 \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newif \if@vocal \newif \ifc@p
+
+\gdef \tr@@aword #1{% transcribe rest of word
+\let \tr@old \tr@act \def \tr@act {#1}%
+\case #1\of
+{ >{\@gobble }
+ \cap {\c@ptrue \tr@aword }
+% |"^\a@e{\tr@aword }
+ |"^{\tr@aword }
+ -{-\tr@aword }
+ XlEeQ{\csname tr@@\string #1\endcsname }
+ \a@a NUW{\setc@p #1\kill@alif }
+ P{\tr@P \tr@aword }
+ aiu{\tr@wasla #1}
+ \a@Ze{\xpa\tr@aword \tr@old }
+\default {\@vocalfalse
+ \ifcat \nxp #1-#1\else \setc@p #1%
+ \fi \tr@aword }
+}\endcase }
+
+\def \setc@p #1{% capitalize if needed
+\xpa\ifx \xpa\relax \csname tr@\string #1\endcsname \tr@@ \else
+\ifc@p \xxxpa\uppercase \xxpa{\csname tr@\string #1\endcsname }\c@pfalse
+\else \csname tr@\string #1\endcsname
+\fi\fi }
+
+\def \@gobble #1{}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \kill@alif #1{% delete alif or waw after N, U, W, _a
+\case #1\of
+{ aAIYU{\tr@aword }
+\default {\tr@aword #1}
+}\endcase }
+
+\gdef \tr@wasla #1{% initial vowel, Arabic
+\ifiz@fet \@vocalfalse \fi
+\ifu@gh \@vocalfalse \fi
+\ifh@mza \if@vocal '\else \setc@p #1\fi
+\else \setc@p #1\fi
+\@vocaltrue \tr@aword }
+
+\gdef \tr@vowel #1{% vowel
+\setc@p #1\@vocaltrue \tr@aword }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \sp@cw@w #1#2{% handle w after _h (Persian) specially
+\def \next {\tr@aword #2}\@vocalfalse
+\ifiz@fet \ifx #2w#1\let\next\tr@aword
+\fi\fi \next }
+
+\gdef \putw@w {\sp@cw@w w } % w after _h (Persian): normal
+
+\gdef \killw@w {\sp@cw@w {}} % w after _h (Persian): delete
+
+\gdef \superv@w {\sp@cw@w {$^v\!$}}% w after _h (Persian): super v
+
+\gdef \superw@w {\sp@cw@w {$^w\!$}}% w after _h (Persian): super w
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \tr@@l #1{% test assimilation after l
+\ifx #1-\def \next {\tr@@la }\else
+ \setc@p l\def \next {\tr@aword #1}%
+\fi \@vocalfalse \next }
+
+\gdef \tr@@la #1#2{% test assimilation after l-
+\case #1\of
+{ Q{\setc@p l-\tr@Q \tr@aword } % l - Q x -> l - '
+ #2{\tr@aword #1-#2} % l - x x -> x - x
+ \cap {\tr@@lb #2} % l - \cap x
+\default {\setc@p l-\tr@aword #1#2}
+}\endcase }
+
+\gdef \tr@@lb #1#2{% test assimilation after l-\cap
+\case #1\of
+{ #2{\tr@aword #1-\cap #2} % l - \cap x x -> x - \cap x
+\default {\setc@p l-\tr@aword \cap #1#2}
+}\endcase }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \x@s #1{\oalign{#1\crcr\hidewidth \sh@ft{34}% accent for _h
+ \vbox to -.2ex {\hbox{\char'25}\vss}\hidewidth}}
+
+\gdef \x@x #1{\oalign{#1\crcr\hidewidth \sh@ft{29}% accent for .s in Urdu
+ \vbox to.2ex{\hbox{\char'177}\vss}\hidewidth}}
+
+\def \ish@ft #1{\dimen\z@.00#1ex\multiply\dimen\z@\fontdimen1\font
+ \kern.0156\dimen\z@} % positive kern for slant
+
+\def \rsh@ft #1#2{\ish@ft{#1}#2\sh@ft{#1}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \tr@def #1#2{% define \tr@#1 as {#2}
+\xpa \gdef \csname tr@\string #1\endcsname {#2}}
+
+\def \tr@cap #1{\ifc@p \uppercase {#1}\else #1\fi }
+
+\def \tr@ng {\tr@cap ng} \def \tr@ny {\tr@cap ny}
+\def \tr@kh {\tr@cap kh} \def \tr@th {\tr@cap th}
+\def \tr@dh {\tr@cap dh} \def \tr@bh {\tr@cap bh}
+\def \tr@ph {\tr@cap ph} \def \tr@zh {\tr@cap zh}
+\def \tr@sh {\tr@cap sh} \def \tr@ch {\tr@cap ch}
+\def \tr@gh {\tr@cap gh} \def \tr@af {\tr@cap {\'d}h}
+\def \tr@ag {\tr@cap {\'t}h} \def \tr@aj {\tr@cap {\v{c}}h}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\gdef \tr@zdmg {% define character macros for transliteration
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\let \specw@w \killw@w % special handling of w after .h in Farsi
+\gdef \tr@@e ##1{% test for ee -> ey
+ \ifx ##1e\def \next {\setc@p e\tr@aword y}\else
+ \def \next {\setc@p e\tr@aword ##1}\fi \next}
+\gdef \tr@@E ##1{% test for Ee -> ey
+ \ifx ##1e\def \next {\setc@p e\tr@aword y}\else
+ \def \next {\setc@p E\tr@aword ##1}\fi \next}
+\gdef \tr@@Q ##1{\tr@Q \def \next {\tr@aword ##1}%
+ \ifh@mza \let \next \tr@aword \fi \next }
+\gdef \tr@@X {\setc@p X\specw@w }
+\gdef \tr@@ {{$\bullet $}}% substitute for illegal characters
+\gdef \tr@a {a\@vocaltrue }
+\gdef \tr@b {b} \gdef \tr@c {c} \gdef \tr@d {d}
+\gdef \tr@e {e\@vocaltrue }
+\gdef \tr@f {f} \gdef \tr@g {g} \gdef \tr@h {h}
+\gdef \tr@i {i\@vocaltrue }
+\gdef \tr@j {\v{z}} \gdef \tr@k {k} \gdef \tr@l {l}
+\gdef \tr@m {m} \gdef \tr@n {n}
+\gdef \tr@o {o\@vocaltrue }
+\gdef \tr@p {p} \gdef \tr@q {q} \gdef \tr@r {r}
+\gdef \tr@s {s} \gdef \tr@t {t}
+\gdef \tr@u {u\@vocaltrue }
+\gdef \tr@v {v} \gdef \tr@w {w} \gdef \tr@x {\v{s}}
+\gdef \tr@y {y} \gdef \tr@z {z}
+\gdef \tr@A {\=a\-\@vocaltrue } \gdef \tr@B {}
+\gdef \tr@C {\b{t}} \gdef \tr@D {\d{d}}
+\gdef \tr@E {\=e\-\@vocaltrue }
+\gdef \tr@F {\b{d}} \gdef \tr@G {\v{g}}
+\gdef \tr@H {\d{h}} \gdef \tr@I {\ifc@p\=I\else\=\i\fi\-\@vocaltrue }
+\gdef \tr@J {\v{c}} \gdef \tr@K {\~n}
+\gdef \tr@L {y} \gdef \tr@M {\tr@ny}
+\gdef \tr@N {n\@vocalfalse }
+\gdef \tr@O {\=o\-\@vocaltrue }
+\gdef \tr@P {\rsh@ft{07}{\ifc@p \raise .2ex \hbox {$\lhook $}\kern-.1em
+ \else \kern-.05em$\lhook$\kern-.05em\fi }\@vocalfalse }
+\gdef \tr@Q {\rsh@ft{07}{\ifc@p \raise .2ex \hbox {$\rhook $}\kern-.1em
+ \else \kern-.05em$\rhook$\kern-.05em\fi }\@vocalfalse }
+\gdef \tr@R {\.g}
+\gdef \tr@S {\d{s}} \gdef \tr@T {t}
+\gdef \tr@U {\=u\-\@vocaltrue }
+\gdef \tr@V {\d{t}}
+\gdef \tr@W {w\@vocalfalse }
+\gdef \tr@X {\x@s{h}}
+\gdef \tr@Y {\=a\-\@vocaltrue }
+\gdef \tr@Z {\d{z}}
+\tr@def \a@a {\=a\-\@vocaltrue }
+\tr@def \a@b {\d{b}} \tr@def \a@c {\'c} \tr@def \a@d {\'d}
+\tr@def \a@e {\'d} \tr@def \a@f {\d{f}} \tr@def \a@g {g}
+\tr@def \a@h {h} \tr@def \a@i {\ifc@p\=I\else\=\i\fi\-\@vocaltrue }
+\tr@def \a@j {\ifc@p\"I\else\"\i\fi\@vocaltrue }
+\tr@def \a@k {\ifs@nd \tr@kh\else k\fi }
+\tr@def \a@l {\~l} \tr@def \a@m {k} \tr@def \a@n {\d{n}}
+\tr@def \a@o {u\@vocaltrue } \tr@def \a@p {\tr@ng}
+\tr@def \a@q {\'r} \tr@def \a@r {\'r} \tr@def \a@s {\'s}
+\tr@def \a@t {\'t} \tr@def \a@u {\=u\-\@vocaltrue }
+\tr@def \a@v {\'t} \tr@def \a@w {{u}\@vocaltrue }
+\tr@def \a@x {v} \tr@def \a@y {y} \tr@def \a@z {\'z}
+\tr@def \a@A {e\@vocaltrue }
+\tr@def \a@B {\tr@@ } \tr@def \a@C {\'c} \tr@def \a@D {\'{d}}
+\tr@def \a@E {\ifk@rd\v{e}\else\={e}\fi\@vocaltrue }
+\tr@def \a@F {f} \tr@def \a@G {\'c} \tr@def \a@H {h}
+\tr@def \a@I {\ifc@p\"J\else\"\j\fi } \tr@def \a@J {\.g}
+\tr@def \a@K {\d{k}} \tr@def \a@L {k} \tr@def \a@M {k}
+\tr@def \a@N {\d{n}}
+\tr@def \a@O {o\@vocaltrue }
+\tr@def \a@P {\={u}\@vocaltrue } \tr@def \a@Q {q}
+\tr@def \a@R {\.r} \tr@def \a@S {\'s} \tr@def \a@T {\tr@ag}
+\tr@def \a@U {u\@vocaltrue }
+\tr@def \a@V {v} \tr@def \a@W {o}
+\tr@def \a@X {w} \tr@def \a@Y {\=e\-} \tr@def \a@Z {\'s}
+\tr@def \a@aa {a\@vocaltrue } % Uighuric alif
+\tr@def \a@ab {\x@x{b}} \tr@def \a@ac {\tr@th} \tr@def \a@ad {\tr@dh}
+\tr@def \a@ae {\x@x{d}} \tr@def \a@af {\tr@af} \tr@def \a@ag {\~{n}}
+\tr@def \a@ah {\"{\j}} \tr@def \a@aj {\v{c}h} \tr@def \a@ak {\x@x{g}}
+\tr@def \a@al {\x@x{n}} \tr@def \a@an {\'{n}} \tr@def \a@ap {\tr@bh}
+\tr@def \a@aq {\tr@ph} \tr@def \a@ar {\'{r}} \tr@def \a@at {\'{t}}
+\tr@def \a@au {w} % Uighuric waw with roof
+\tr@def \a@ax {k}
+\tr@def \a@aA {\'{d}}
+\tr@def \a@aJ {s} % sin with 3 dots below
+\tr@def \a@Zz {\d{\b{d}}} % .z, Palestinian, coded .Z
+\tr@def \a@aO {\d{\b{d}}} % .z, Palestinian, coded .Z, (for test only)
+\gdef \tr@aword {\tr@@aword }\global \tr@nstrue }% end \tr@zdmg
+}% catcodes
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\~=10
+\gdef \tr@encislam {% define Enc. of Islam transliteration
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@zdmg \let \@ub \underbar
+\let \specw@w \killw@w % special handling of w after .h in Farsi
+\def \tr@j {\@ub{\tr@zh}} \def \tr@x {\@ub{\tr@sh}}
+\def \tr@C {\@ub{\tr@th}} \def \tr@F {\@ub{\tr@dh}}
+\def \tr@G {j} \def \tr@J {\@ub{\tr@ch}}
+\def \tr@R {\@ub{\tr@gh}} \def \tr@X {\@ub{\tr@kh}}
+%\def \tr@q {\d{k}} % variant qaf; uncomment if required
+%\def \tr@P {$^c$} % variant `ain; uncomment if required
+\a@message {Encyclopedia~of~Islam~transliteration.}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\~=10
+\gdef \tr@turk {% define character macros for modern Turkish
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@zdmg
+\let \specw@w \putw@w % no special handling of w after .h in Farsi
+\gdef \tr@e {e\@vocaltrue } \gdef \tr@q {k}
+\gdef \tr@w {v} \gdef \tr@x {\c{s}}
+\gdef \tr@A {\^a\@vocaltrue } \gdef \tr@E {\^e\@vocaltrue }
+\gdef \tr@G {c} \gdef \tr@H {h}
+\gdef \tr@I {\^{\i}\@vocaltrue} \gdef \tr@J {\c{c}}
+\gdef \tr@K {n} \gdef \tr@O {\^o\@vocaltrue }
+\gdef \tr@P {\-} \gdef \tr@R {g}
+\gdef \tr@S {s} \gdef \tr@T {t}
+\gdef \tr@U {\^u\@vocaltrue \kill@alif }
+\gdef \tr@V {t} \gdef \tr@Z {z}
+\tr@def \a@j {\i\@vocaltrue }
+\tr@def \a@m {\u{g}} \tr@def \a@w {{\"u}\@vocaltrue }
+\tr@def \a@A {\"a\@vocaltrue } \tr@def \a@H {}
+\tr@def \a@I {{\i}\@vocaltrue } \tr@def \a@J {\u{g}}
+\tr@def \a@L {g} \tr@def \a@M {n}
+\tr@def \a@O {\"o\@vocaltrue }
+\tr@def \a@P {\"o\@vocaltrue } \tr@def \a@Q {q}
+\tr@def \a@U {\"u\@vocaltrue } \tr@def \a@V {v}
+\catcode `\ =10
+\a@message {modern~Turkish~transliteration.}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Specific definitions for Persian:
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\~=10
+\gdef \tr@enciran {% Encyclopaedia Iranica transliteration
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@zdmg % start with default and modify
+\let \specw@w \superv@w % special handling of w after .h in Farsi
+\gdef\tr@w{v\@vocalfalse} % EIran = Lazard <> ZDMG
+\gdef\tr@W{v\@vocalfalse} % EIran = Lazard <> ZDMG
+\gdef\tr@G{\v{\j}\@vocalfalse} % EIran = Lazard <> ZDMG
+\gdef\tr@D{\.{z}\@vocalfalse} % EIran = Lazard <> ZDMG
+\gdef\tr@C{\b{s}\@vocalfalse} % EIran <> Lazard <> ZDMG
+\gdef\tr@F{\b{z}\@vocalfalse} % EIran <> Lazard <> ZDMG
+\gdef\tr@R{\={g}\@vocalfalse} % EIran <> Lazard <> ZDMG
+\gdef\tr@X{\b{k}} % EIran <> Lazard <> ZDMG
+\tr@def\a@H{} % EIran = Lazard <> ZDMG
+\a@message {Encyclopaedia~Iranica~transliteration.}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\~=10
+\gdef \tr@farsi {% Modified Encyclopaedia Iranica transliteration
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@enciran % start with default and modify
+\let \specw@w \superv@w % special handling of w after .h in Farsi
+\gdef\tr@R{\.{g}\@vocalfalse} % ZDMG = Persian
+\gdef\tr@X{x} % Lazard = Persian
+\tr@def\a@H{$\hbar\!$} % Persian <> EIran = nil
+\a@message {Modified~Encyclopaedia~Iranica~transliteration.}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\gdef \tr@lazard {% Philological Farsi transliteration; cf., e.g.,
+ % Gilbert Lazard
+ % "La langue des plus anciens documents de la prose persane"
+ % (Paris: Cl. Klincksieck 1963).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@enciran % start with default and modify
+\let \specw@w \superv@w % special handling of w after .h in Farsi
+\gdef\tr@C{\b{s}\@vocalfalse} % Lazard <> EIran
+\gdef\tr@C{$\theta\!$\@vocalfalse} % Lazard <> EIran
+\gdef\tr@F{$\delta\!$\@vocalfalse} % Lazard <> EIran <> ZDMG
+\gdef\tr@R{$\gamma\!$\@vocalfalse} % Lazard <> EIran <> ZDMG
+\gdef\tr@X{x} % Lazard <> EIran <> ZDMG
+\a@message {Philological~Farsi~transliteration.}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\~=10
+\gdef \tr@urdu {% define Urdu transliteration
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@zdmg
+\let \specw@w \killw@w % special handling of w after .h in Farsi
+\gdef \tr@j {\.{z}} \gdef \tr@x {\'{s}} \gdef \tr@C {\x@x{s}}
+\gdef \tr@D {\b{z}} \gdef \tr@F {\d{z}} \gdef \tr@G {j}
+\gdef \tr@H {\b{h}} \gdef \tr@J {c} \gdef \tr@O {o\-\@vocaltrue}
+\gdef \tr@S {\b{s}} \gdef \tr@T {t} \gdef \tr@V {\x@x{t}}
+\gdef \tr@X {x} \gdef \tr@Z {\x@x{z}} \tr@def \a@d {\d{d}}
+\tr@def \a@r {\d{r}} \tr@def \a@t {\d{t}} \tr@def \a@H {}
+\a@message {Urdu~transliteration.}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\~=10
+\gdef \tr@kash {% define Kashmiri transliteration
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@zdmg \let \@ub \underbar
+\let \specw@w \putw@w % no special handling of w after .h
+\gdef \tr@j {ts} \gdef \tr@x {\'{s}} \gdef \tr@C {\b{s}}
+\gdef \tr@D {\x@x{z}} \gdef \tr@F {\b{z}} \gdef \tr@G {j}
+\gdef \tr@H {\d{h}} \gdef \tr@J {c} \gdef \tr@R {\@ub{\tr@gh}}
+\gdef \tr@S {\d{s}} \gdef \tr@T {t} \gdef \tr@V {\b{t}}
+\gdef \tr@X {\@ub{\tr@kh}} \gdef \tr@Z {\d{z}}
+\tr@def \a@d {\d{d}} \tr@def \a@r {\d{r}} \tr@def \a@t {\d{t}}
+\tr@def \a@Za {\d{a}} \tr@def \a@ZA {\d{\=a}}
+\tr@def \a@Zo {\d{o}} \tr@def \a@ZO {\d{\=o}}
+\tr@def \a@Zu {u'} \tr@def \a@ZU {\=u'} \tr@def \a@ZI {\.y}
+\a@message {Kashmiri~transliteration.}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\~=10
+\gdef \tr@uigh {% define Uighuric transliteration
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@zdmg
+\gdef \tr@a {a} \gdef \tr@e {e}
+\gdef \tr@i {i} \gdef \tr@j {j}
+\gdef \tr@o {o} \gdef \tr@u {u}
+\gdef \tr@G {\v{g}} \gdef \tr@X {x}
+\gdef \tr@Y {}
+\tr@def \a@A {\"a} \tr@def \a@O {\"o}
+\tr@def \a@U {\"u} \tr@def \a@X {v}
+\a@message {Uyghuric~transliteration.}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\~=10
+\gdef \tr@uighe {% define Uighuric English transliteration
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@zdmg \let \@ub \underbar
+\gdef \tr@a {a} \gdef \tr@e {e}
+\gdef \tr@i {i} \gdef \tr@j {\@ub{\tr@zh}}
+\gdef \tr@o {o} \gdef \tr@u {u}
+\gdef \tr@x {\@ub{\tr@sh}} \gdef \tr@G {j}
+\gdef \tr@J {\@ub{\tr@ch}} \gdef \tr@K {\@ub{\tr@ng}}
+\gdef \tr@R {\@ub{\tr@gh}} \gdef \tr@X {\@ub{\tr@kh}}
+\gdef \tr@Y {}
+\tr@def \a@A {\"a} \tr@def \a@O {\"o}
+\tr@def \a@U {\"u} \tr@def \a@X {v}
+\a@message {Uyghuric~English~transliteration.}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \settrans #1{% switch the transliteration
+\lowercase {\def \tr@code {#1}\begingroup
+\def \tr@lookup ##1#1##2##3\@@ {\endgroup ##2}%
+\xpa \tr@lookup \tr@table #1\tr@default \@@ }%
+\let \tr@oldcode \tr@code }
+
+\def \tr@table {% table of transliterations
+standard\tr@standard zdmg\tr@standard english\tr@encislam
+turk\tr@turk urdu\tr@urdu iranica\tr@enciran
+farsi\tr@farsi lazard\tr@lazard kashmiri\tr@kash
+uighur\tr@uigh uighure\tr@uighe }
+
+\def \tr@standard {% standard transliteration
+\ifx \tr@code \tr@oldcode \else \tr@zdmg
+\a@message {ZDMG transliteration.}\fi }
+
+\def \tr@default {% unknown transliteration
+\tr@zdmg \message {unknown transliteration `\tr@code'}%
+\a@message {ZDMG transliteration is assumed.}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\let \tr@oldcode \tr@code \settrans {zdmg} % default
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\catcode`\@ = \transatcode
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/awrite.sty b/language/arabic/arabtex/texinput/awrite.sty
new file mode 100644
index 0000000000..2e70ef96b4
--- /dev/null
+++ b/language/arabic/arabtex/texinput/awrite.sty
@@ -0,0 +1,397 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% awrite.sty
+% ArabTeX
+% basic contextual analysis
+% called in HMODE
+% Version 05.06.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {awrite.sty} {3.11 build output word } {05.06.2003}
+
+\UsePackage {xarbsymb} % character definitions
+\UsePackage {arabskel} % skeleton definitions
+\UsePackage {xarbskel}
+\UsePackage {aboxes} % deposit output boxes
+
+\UsePackage {arabtoks} % token definitions
+\UsePackage {arabchrs} % character macros
+
+% ACT = 1. char
+\newcount \act@cd \newcount \act@cls \newcount \act@mod
+\newcount \act@con \newcount \act@tie
+
+% CHR = 2. char
+\newcount \chr@cd \newcount \chr@cls \newcount \chr@mod
+\newcount \chr@con \newcount \chr@tie
+
+% SKL = 3. char
+\newcount \skl@cd \newcount \skl@cls \newcount \skl@mod
+\newcount \skl@con
+
+\newcount \red@mod \newcount \a@shp
+\newcount \a@max \newcount \a@min
+
+\newif \if@con \newif \if@mod@act \newif \if@high@act
+\newif \if@mod@chr \newif \if@tat \newif \if@tatl
+\newif \if@updia \newif \if@lodia \newif \ifa@sk
+\newif \ifa@min \newif \ifa@max
+
+\newdimen \a@min@dp \newdimen \a@dx \newdimen \a@dy
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newif \ifa@@write \a@@writetrue
+
+\def \a@@write #1>{% Arabic output
+\iftest@write \tracingmacros 1
+\iftest@parse \else \a@verb (#1 )>\fi\fi
+\a@write@hook
+\ifa@@write \arab@testfont \aw@beg #1>0+0*>0+0*>\fi
+\iftest@write \tracingmacros 0 \fi }
+
+\let \a@write \a@@write \let \a@write@hook \relax
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%em# := 25.4dx#; %ex# := 8dy#;
+
+{\catcode `p=12 \catcode `t=12 % see TeXbook, Appendix D
+\csname expandafter\endcsname \gdef
+\csname getfactor\endcsname #1pt{#1}}
+
+\def \arab@testfont {% diagnose font, look for vowels and ayin
+\edef \next {\the\font }%
+\ifx \next \a@font \else
+\iftest@font \a@message{Arabic font \next selected.}\fi
+\global\let \a@font \next \a@testfont \fi }
+
+\def \a@testfont {% diagnose font, set params
+\xdef \a@slant {\xpa\getfactor \the\fontdimen1\font }%
+\dimen@ 128\fontdimen7\font % assumes \fontdimen7 < 128 pt
+\divide \dimen@ \fontdimen6\font \multiply \dimen@ 512
+\xdef \a@skew {\xpa\getfactor \the\dimen@}}
+
+\def \a@norm {% start a new character group
+\global\@highfalse \global\a@min@dp \z@ \global\a@min \z@
+\global\a@max \z@ \a@disp \z@ \@high@actfalse \global\a@sktrue }
+
+\def \aw@init {% start word, get font parameters
+\a@norm \leavevmode \a@dx .04em \a@dy .125ex }
+
+\def \a@skew {0} \def \a@slant {0}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \aw@beg #1#2*#3#4*#5{% start output
+% c m * c m * c
+ \aw@init
+ \test@chr #1\def \next {\aw@end #1#2*#3#4*#5}%
+\ifx #1-\test@chr #3\chr@fam #3%
+ \def \next {\aw@mid #3#4*#5}%
+ \ifx #3>\ac@other #1#2*#3#4*#5<%
+ \fi \else
+\ifcat -\nxp #1\a@shift \test@chr #3%
+ \@confalse \ac@other #1#2*#3#4*#5<\else
+\fi\fi \next }
+
+\def \aw@beg #1#2*#3#4*#5{% start output
+% c m * c m * c
+\ifx #1>\let \next \relax \else
+ \aw@init
+ \test@chr #1\def \next {\aw@end #1#2*#3#4*#5}%
+\ifx #1-\test@chr #3\chr@fam #3%
+ \def \next {\aw@mid #3#4*#5}%
+ \ifx #3>\ac@other #1#2*#3#4*#5<%
+ \fi \else
+\ifcat -\nxp #1\a@shift \test@chr #3%
+ \@confalse \ac@other #1#2*#3#4*#5<\else
+\fi\fi\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \aw@end #1#2*#3#4*#5{% character is not joined to the left
+% c m * c m * c
+% ACT, CHR defined
+\ifx #1>\let \next \relax \else
+\if \AND{\isx #3|}{\is@end@char #5}\def \next {\aw@end #1#2*#5}%
+\else \def \next {\aw@end #3#4*#5}%
+ \a@shift \test@chr #3%
+ \if \AND{\iscat -{\nxp #3}}%
+ {\NOT {\is@end@char #5}}\@contrue
+ \fi
+ \ifnum \act@cd = \a@alif \def \next {\alif@lig #2*#3#4*#5}\else
+ \ifcat \nxp ~\nxp #1\else
+ \ifx #1-\chr@fam #3\else
+% \ifcat -\nxp #1\ac@other #1#2*#3#4*#5<\else
+ \ifcat -\nxp #1\@confalse \ac@other #1#2*#3#4*#5<\else
+ \ifnum \act@cd = \a@hamzc \@confalse \else
+ \ifnum \act@cd = \a@break \@confalse \else
+ \if@con \chr@fam #3%
+ \fi
+ \ifu@gh \@mod@acttrue
+ \ifnum \act@cd = \a@qaf \set@act\sk@q@s
+ \fi
+ \else \aw@endligs #1#2*#3#4*#5%
+ \fi
+ \fi\fi
+ \a@kern
+ \ifnum \act@cd = \a@waw \under@cut #2*\else
+ \ifnum \act@cls = \rah@cls \under@cut #2*\else
+ \ifnum \act@cd = \a@hah \a@kern
+ \fi\fi\fi
+ \put@end #2*#3#4*#5<%
+ \fi\fi\fi\fi
+\fi\fi \next }
+
+\def \alif@lig #1*#2#3*#4{% alif, test for ligature
+% m * c m * c
+\a@kern
+\chr@fam #2\global\@highfalse
+\ifx #2l\def \next {\lam@alif #1*#3*#4}\else
+ \gim@test #4% closed gim?
+ \kaf@test #2% kaf-alif ?
+ \aw@lower #4%
+ \put@end #1*#2#3*#4<%
+\fi \next }
+
+\def \lam@alif #1*#2*#3#4*#5{% ligature lam-alif
+% m * m * c m * c
+\global\@highfalse \a@shift \test@chr #3\chr@fam #3%
+\gim@test #5% closed gim?
+\ifu@gh \else \kaf@test #3\fi % kaf-lam ?
+\set@act\sk@l@a
+\if@con \lig@end #1*#2*\def \next {\aw@mid #3#4*#5}%
+ \else \lig@iso #1*#2*\def \next {\aw@end #3#4*#5}%
+\fi \next }
+
+\def \lig@iso #1*#2*{% isolated shape % m1 * m2 *
+\put@lig@skel 0\a@f@iso #1*#2*\a@norm }
+
+\def \lig@end #1*#2*{% final shape % m1 * m2 *
+\put@lig@skel 1\a@f@end #1*#2*}
+
+\def \aw@lower #1{% adjust vertical position
+% uses ACT, CHR, and #1
+\ifligs
+\ifnum \chr@cd = \a@hah
+ \ifx #1l\set@lowww@act \fi
+\fi
+\ifnum \chr@cls = 3 % gim etc
+ \a@test {#1}\xxpa \unp@ck@skl \skl@skel \relax
+% \ifnum \skl@cls = 0 \set@lowww@act \fi
+ \ifnum \skl@cls = 1 \set@lowww@act \fi
+ \ifnum \skl@cls = 2 \set@lowww@act \fi
+ \ifnum \skl@cls = 5 \set@lowww@act \fi
+\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \aw@mid #1#2*#3#4*#5{% character is joined to the left
+% c m * c m * c
+% ACT, CHR defined
+\ifx #1>\let \next \relax \else
+\if \AND{\isx #3|}{\is@end@char #5}\def \next {\aw@mid #1#2*#5}\else
+\ifx #1-\test@chr #3\chr@fam #3\def \next {\aw@mid #3#4*#5}\else
+ \a@shift \test@chr #3\chr@fam #3%
+\ifcat -\nxp #1\ac@other #1#2*#3#4*#5<%
+\else \if \AND{\iscat -{\nxp #3}}%
+ {\NOT {\is@end@char #5}}\@contrue
+ \fi
+ \ifu@gh \else
+ \aw@midligs #1#2*#3#5%
+ \fi
+ \put@mid #2*#3#4*#5<%
+ \if@con \else % initial shape
+ \ifnum \act@cls = \kaf@cls % kaf etc.
+ \xpa\if \xpa\is@in@list \chr@skel \sk@a \sk@l >\a@kern
+ \else \unkern \a@mkern
+ \fi
+ \fi\fi
+\fi\fi\fi\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \test@updia #1+#2*{% test for upper diacritic
+% m21 + m22 *
+\@updiafalse \@lodiafalse
+\global\red@mod #1 \relax
+\ifnum #1 > 9 \global\advance \red@mod -10 \fi
+\ifcase \red@mod
+ \relax\or \@updiatrue\or \@updiatrue\or \@updiatrue\or
+ \@updiatrue\or \@lodiatrue\or
+\fi
+\ifcase #2\relax
+ \relax\or \@updiatrue\or \@updiatrue\or \@lodiatrue\or
+ \@updiatrue\or \@updiatrue\or \@lodiatrue\or \@updiatrue\or
+ \@updiatrue\or \@updiatrue\or \@updiatrue\or \@lodiatrue\or
+ \@updiatrue\or
+\fi }
+
+\def \is@updia #1*{00% is there an upper diacritic ?
+\test@updia #1*\if@updia \else \xpa \setiffalse \fi }
+
+\def \is@lodia #1*{00% is there a lower diacritic ?
+\test@updia #1*\if@lodia \else \xpa \setiffalse \fi }
+
+\def \under@cut #1*{% if no upper diacritic % m2 *
+\ifdim \a@dp > .5ex \else % \if\is@updia #1*\else
+\unkern \a@mkern \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \put@end #1*#2<{% deposit non-joining character, set new state
+% m * c m * c <
+\if@con \ac@end #1*\def \next {\aw@mid #2}%
+ \else \ac@iso #1*\def \next {\aw@end #2}%
+\fi }
+
+\def \put@mid #1*#2<{% deposit joining character, set new state
+% m * c m * c <
+\if@con \ac@mid #1*\def \next {\aw@mid #2}%
+ \else \ac@beg #1*\def \next {\aw@end #2}%
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \ac@high #1{\raise.5ex\hbox{#1}}
+\def \ac@high #1{% raise punctuation
+\ifu@gh #1\else \raise.5ex\hbox{#1}\fi }
+
+% define CS names for special punctuation
+
+{\catcode`\$ 12 \gdef \a@dlr {$} % $
+\catcode `\# 12 \gdef \a@hsh {#} % #
+\catcode `\% 12 \gdef \a@pct {%}} % %
+{\catcode`\^ 12 \gdef \a@up {^} % ^
+\catcode `\_ 12 \gdef \a@dn {_} % _
+\catcode `\& 12 \gdef \a@amp {&} % &
+\catcode `\A 12 \gdef \a@dq {A} % "
+\catcode `\B 12 \gdef \f@sila {B} % ,
+\catcode `\C 12 \gdef \h@phen {C} % -
+\catcode `\D 12 \gdef \a@bar {D} % |
+\catcode `\E 12 \gdef \a@qt {E} % '
+\catcode `\F 12 \gdef \a@bsl {F} % \
+\catcode `\G 12 \gdef \a@lbc {G} % {
+\catcode `\H 12 \gdef \a@rbc {H} % }
+\catcode `\I 12 \gdef \a@ell {I} % ...
+\catcode `\J 12 \gdef \a@div {J} % :-
+\catcode `\K 12 \gdef \a@lab {K} % <
+\catcode `\L 12 \gdef \a@rab {L} % >
+\catcode `\M 12 \gdef \a@end {M} % --
+\catcode `\N 12 \gdef \a@emd {N} % ---
+\catcode `\O 12 \gdef \a@lq {O} % `
+\catcode `\P 12 \gdef \a@rq {P} % '
+
+\gdef \ac@other #1#2*#3<{% special punctuation mark
+% c * c m * c
+\case #1\of
+{ ){\ac@high {(}}
+ ({\ac@high {)}}
+ ]{\ac@high {[}}
+ [{\ac@high {]}}
+ `{\a@kern \ac@high {\char \a@lquotes }}
+ '{\ac@high {\char \a@rquotes }\a@kern }
+ ^{{\tt ^}}
+ _{{\tt _}}
+ &{{\tt \char`\&}}
+ A{{\tt "}}
+ B{{\rm \bf ,}}
+ C{\ac@high {-}}
+ D{{\tt \char`\|}}
+ E{{\tt \char'015}}
+ F{{\tt \char`\\}}
+ G{{\tt \char`\}}}
+ H{{\tt \char`\{}}
+ I{{\bf $\cdots$}}
+ J{{\bf $\div$}}
+ K{{\tt \char`\>}}
+ L{{\tt \char`\<}}
+ M{{\rm \bf \char'173}}
+ N{{\rm \bf \char'174}}
+ O{{\rm \bf `}}
+ P{{\rm \bf '}}
+% |{\char \a@break }
+ |{}
+ 4{\ac@high {\iff@rsn \char \a@f@iv \else 4\fi }\a@kern }
+ 5{\ac@high {\iff@rsn \char \a@f@v \else 5\fi }\a@kern }
+ 6{\ac@high {\iff@rsn \char \a@f@vi \else 6\fi }\a@kern }
+\default {\ac@high {#1}\a@kern }
+}\endcase
+\if@con \def \next {\aw@mid #3}%
+ \else \def \next {\aw@end #3}%
+\fi }
+%\def \next {\aw@end #3}}
+}% catcodes 12
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \ac@iso #1*{% isolated shape % m *
+\put@skel 0\a@f@iso #1*\a@norm }
+
+\def \ac@end #1*{% final shape % m *
+\put@skel 1\a@f@end #1*}
+
+\def \ac@mid #1*{% medial shape % m *
+\put@skel 2\a@f@mid #1*}
+
+\def \ac@beg #1*{% initial shape % m *
+\put@skel 3\a@f@beg #1*\a@norm }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@shift {% go to next position
+% ACT := CHR
+\let \act@skel \chr@skel \act@mod \chr@mod \get@act
+\act@tie \chr@tie
+\let \if@mod@act \if@mod@chr \@mod@chrfalse }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \test@chr #1{% get attributes of next character
+% set CHR := SKL := <#1>
+\a@test #1\chr@tie 0
+\let \chr@skel \skl@skel \chr@mod \skl@mod \get@chr
+\ifnum \chr@con = 0 \@confalse \else \@contrue \fi }
+
+\def \a@test #1{% get character attributes
+% set SKL := <#1>
+\set@skl \sk@def \skl@mod 0
+\ifcat \nxp #1a%
+ \xpa \ifx \csname tc@\string #1\endcsname \relax
+ \else \unp@ck@tc {#1}%
+ \fi \else
+\if \nxp #1\relax \unp@ck@cs {#1}\else
+\ifx #1-\set@skl \sk@B \else
+\ifx #1|\set@skl \sk@spc \else
+\fi\fi\fi\fi }
+
+\def \a@test #1{% get character attributes
+% set SKL := <#1>
+ \skl@mod 0
+\ifcat \nxp #1a%
+ \xpa \ifx \csname tc@\string #1\endcsname \relax
+ \set@skl \sk@def
+ \else \unp@ck@tc {#1}%
+ \fi \else
+\if \nxp #1\relax \unp@ck@cs {#1}\else
+\ifx #1-\set@skl \sk@B \else
+\ifx #1|\set@skl \sk@spc \else
+ \set@skl \sk@def
+\fi\fi\fi\fi }
+
+\def \unp@ck@cs #1{% evaluate token routine
+\xpa\unp@ck@token #1\relax }
+
+\def \unp@ck@tc #1{% evaluate letter description
+\xxpa\unp@ck@token \csname tc@\string #1\endcsname \relax }
+
+\def \unp@ck@token #1,#2\relax {% unpack letter description
+\def \skl@skel {#1}\skl@mod #2}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/bhs.sty b/language/arabic/arabtex/texinput/bhs.sty
new file mode 100644
index 0000000000..823fc4e45d
--- /dev/null
+++ b/language/arabic/arabtex/texinput/bhs.sty
@@ -0,0 +1,213 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% bhs.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% bhs.sty
+% Scanner for the CCAT encoding used in the machine-readable
+% Biblia Hebraica Stuttgardiana
+% to install it, include it as a LaTeX package or style option "bhs"
+% with Plain TeX, say "\input bhs.sty"
+% to activate it, say "\setcode {bhs}
+% 26.07.1999
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \bhsatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \bhsatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {bhs.sty} {3.09 read BHS Hebrew encoding} {26.07.1999}
+
+\UsePackage {bhslabel} % process BHS labels
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for BHS Hebrew coding
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\"=12 \catcode `\&=12
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setbhs@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@A {a} \def \sc@B {b} \def \sc@C {S} \def \sc@D {d}
+\def \sc@E {e} \def \sc@F {A} \def \sc@G {g} \def \sc@H {h}
+\def \sc@I {i} \def \sc@J {t} \def \sc@K {k} \def \sc@L {l}
+%\def \sc@M {m} \def \sc@N {n} \def \sc@O {O} \def \sc@P {p}
+\def \sc@M {m} \def \sc@N {n}\def\sc@O{\n@xp\a@o}\def \sc@P {p}
+\def \sc@Q {q} \def \sc@R {r} \def \sc@S {s} \def \sc@T {t}
+%\def \sc@U {u} \def \sc@V {D} \def \sc@W {W} \def \sc@X {X}
+\def \sc@U {u} \def \sc@V {D} \def \sc@W {w} \def \sc@X {X}
+\def \sc@Y {y} \def \sc@Z {z} \def \sc@@ {QQ}
+\a@digits = {0123456789} \a@paren = {[]}
+\a@first = {)+(##&$":.,*0123456789}
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for BHS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+{\arab@codes
+\catcode `\& 12
+
+\gdef \bhs@beg #1#2{% start BHS scanner
+\@ssimfalse \def \next {\bhs@word #1#2}%
+\ifx #1\@\def \next {\sc@endscan #2}\else % finished
+\ifx #2\@\def \next {\bhs@testpara #1#2}\else
+\ifx #2?\def \next {\bhs@testpara #1#2}\else
+%\ifx #1W\def \next {\bhs@begW #2}\else
+%\fi
+\fi\fi\fi \next }
+
+\gdef \bhs@word #1#2{% transform input into internal notation
+ \def \next {\bhs@word #2}%
+\ifx #1\@\def \next {\sc@endscan #2}\else % finished
+\ifx #1]\def \next {\bhs@word }\else
+\ifx #10\def \next {\bhs@zero #2}\else
+\ifx #17\def \next {\bhs@seven #2}\else
+\if\is@in@set #1\a@digits \def \next {\bhs@word }\else
+%
+\ifx #1?\def \next {\bhs@query #2}\else
+\ifx #1:\def \next {\bhs@colon #2}\else
+%\ifx #1O\def \next {\bhs@O #2}\else
+%\ifx #1W\def \next {\bhs@W #2}\else
+\ifx #1|\def \sc@char {|}\sc@put \else
+%\ifx #1#2\def \next {\bhs@word #1|#2}\else
+%
+%\ifx #1.\sc@put \else
+\ifx #1.\def \sc@char {\nxp \a@Zu }\sc@put \else
+\ifx #1'\def \sc@char {'}\sc@put \else
+\ifx #1)\def \sc@char {Q}\sc@put \else
+\ifx #1+\def \sc@char {C}\sc@put \else
+%
+\ifx #1(\def \sc@char {P}\sc@put \else
+\if #1\a@hash \def \sc@char {\nxp \a@S }\sc@put \else
+\ifx #1&\def \sc@char {\nxp \a@s }\sc@put \else
+\ifx #1$\def \sc@char {x}\sc@put \else
+%
+\ifx #1"\def \sc@char {\nxp \a@E }\sc@put \else
+\ifx #1-\def \sc@char {B}\sc@put \else
+\ifx #1*\def \sc@char {*}\sc@put \else
+\ifcat \nxp #1a\edef \sc@char {\csname sc@#1\endcsname }%
+ \sc@put
+\fi\fi\fi\fi
+\fi\fi\fi\fi
+\fi\fi\fi\fi
+%
+%\fi
+%\fi
+\fi\fi\fi\fi
+%\fi
+\fi\fi\fi\fi
+\next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \bhs@colon #1{% shwa or chatef
+\def \next {\bhs@word }%
+\ifx #1A\def \sc@char {\nxp \a@A }\else
+\ifx #1F\def \sc@char {\nxp \a@O }\else
+\ifx #1E\def \sc@char {\nxp \a@I }\else
+\def \sc@char {\nxp \a@e }\def \next {\bhs@word #1}%
+\fi\fi\fi \sc@put \next }
+
+\gdef \bhs@O #1#2{% cholem or cholem waw
+\if\is@in@set #1\a@digits \def \next {\bhs@word #1#2O}\else
+ \ifx #1W\def \sc@char {O}\def \next {\bhs@word #2}%
+ \else \def \sc@char {\nxp \a@o }\def \next {\bhs@word #1#2}%
+ \fi \sc@put
+\fi \next }
+
+\iffalse
+\gdef \bhs@W #1{% waw or shureq
+\def \sc@char {w}\def \next {\bhs@word #1}%
+\sc@put \next }
+
+\gdef \bhs@begW #1{% initial waw
+\ifx #1.\def \sc@char {ww}\def \next {\bhs@word }%
+\else \def \sc@char {w}\def \next {\bhs@word #1}%
+\fi \sc@put \next }
+\fi
+
+\gdef \bhs@seven #1{% meteg
+\def \next {\bhs@word }%
+\ifx #15\def \sc@char {|}\sc@put \else
+\if\is@in@set #1\a@digits \else \def \next {\bhs@word #1}%
+\fi\fi \next }
+
+\gdef \bhs@zero #1{% sop pasuq and pasuq
+\ifx #10\def \sc@char {:}\sc@put \def \next {\bhs@word }\else
+%\ifx #15\def \sc@char {K}\sc@put \def \next {\bhs@word }\else
+\ifx #15\def \next {\bhs@pasuq }\else
+\if\is@in@set #1\a@digits \def \next {\bhs@word }\else
+ \def \next {\bhs@word #1}%
+\fi\fi\fi \next }
+
+}% \arab@codes
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \bhs@testpara #1#2{% single initial P ?
+\ifx #1P\def \next {\bhs@para #1#2}%
+\else \def \next {\bhs@word #1#2}%
+\fi \next }
+
+\def \a@c@bhspara {% small paragraph mark
+\putwordb@x {\small \heb@font \heb@testfont
+\act@cd '164 \advance \act@cd \heb@dsp
+\space \char \act@cd \space }\test@token }
+
+\def \a@c@pasuq {% verse division
+\putwordb@x {\small $\!|\!$}\test@token }
+
+\def \bhs@para P#1\@ \@@ {% prepare paragraph mark
+\sc@back \bhspara #1\@ \@@ }
+
+\def \bhs@pasuq #1\@ \@@ {% prepare verse division
+\sc@back \pasuq #1\@ \@@ }
+
+\newcount \bhsmode \bhsmode 0
+
+\def \bhs@query #1\@ \@@ {% new line, push back the rest
+\ifnum \bhsmode = 1 \sc@back \\#1\@ \@@ \else % finish line
+\ifnum \bhsmode = 2 \sc@back \|#1\@ \@@ \else % stretch line
+ \sc@back #1\@ \@@ % next word
+\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \set@bhs {% substitute the BHS scanner
+\let \sc@beg \bhs@beg \let \sc@word \bhs@word
+\let \sc@back \sc@@back \let \sc@endscan \sc@@endscan
+\let \a@scan \a@@scan \setbhs@codes
+\let \arab@codes \bhs@arab@codes
+\let \unarab@codes \bhs@unarab@codes
+\a@message {input encoding set to BHS conventions}}
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the BHS encoding
+bhs\set@bhs }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \bhs@arab@codes {% save and set special characters
+\csname originalTeX\endcsname
+\chardef \spc@de = \catcode`\ \catcode`\ = 10
+\chardef \dqc@de = \catcode`\" \catcode`\" = \@other
+\chardef \lsc@de = \catcode`\< \catcode`\< = \@other
+\chardef \hsc@de = \catcode`\# \catcode`\# = \@other
+\chardef \amc@de = \catcode`\& \catcode`\& = \@other
+\arab@charsubdefmax \charsubdefmax \charsubdefmax \m@ne }
+
+\def \bhs@unarab@codes {% reset catcodes
+\catcode`\ = \spc@de \catcode`\< = \lsc@de \catcode`\" = \dqc@de
+\catcode`\# = \hsc@de \catcode`\& = \amc@de
+\charsubdefmax \arab@charsubdefmax }
+
+{\catcode`\# = \@other \gdef \a@hash {#}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {scanner for BHS encoding installed.}
+
+\catcode `\@ = \bhsatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/bhslabel.sty b/language/arabic/arabtex/texinput/bhslabel.sty
new file mode 100644
index 0000000000..258bc8adcd
--- /dev/null
+++ b/language/arabic/arabtex/texinput/bhslabel.sty
@@ -0,0 +1,149 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% bhslabel.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% bhslabel.sty
+% called by bhs.sty
+% generate markup from BHS label notation
+% 01.12.1998
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {bhslabel.sty} {3.00 BHS label markup} {01.12.1998}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\xpa \gdef \csname a@c@\string ~\endcsname #1 {% get BHS label
+%\tracingmacros 1
+\def \bhs@@label {#1}\bhs@label #1\@
+\tracingmacros 0
+\bhs@out \test@token }
+
+\errorcontextlines 10
+
+\def \is@digit #1{\is@in@list #10123456789>}
+
+\def \is@label #1{\is@in@list #1abcvwxyz>}
+
+\def \bhs@err {% illegal BHS label
+\errmessage {illegal BHS label `\bhs@@label'}}
+
+\def \bhs@label #1{% start processing BHS label
+\if\is@label #1\bhs@init {#1}\let \next \bhs@A
+\else \let \next \bhs@err
+\fi \next }
+
+{\catcode `\" 12
+\gdef \bhs@A #1{% get label value
+\ifx #1\@ \bhs@store \let \next \relax \else
+\ifx #1"\let \next \bhs@B \else
+\if\is@label #1\bhs@store % null value
+ \bhs@init {#1}\let \next \bhs@A \else
+\if\is@digit #1\def \bhs@value {#1}\let \next \bhs@D \else
+ \let \next \bhs@err
+\fi\fi\fi\fi \next }
+
+\gdef \bhs@B #1"{% get label string value
+\def \bhs@kind {S}\def \bhs@value {#1}\bhs@C }
+
+\gdef \bhs@C #1{% get next label after string
+\ifx #1\@ \bhs@store \let \next \relax \else
+\if\is@label #1\bhs@store
+ \bhs@init {#1}\let \next \bhs@A \else
+ \let \next \bhs@err
+\fi\fi \next }
+
+\gdef \bhs@D #1{% get next digit
+\def \bhs@kind {I}%
+\ifx #1\@ \bhs@store \let \next \relax \else
+\if\is@label #1\bhs@store
+ \bhs@init {#1}\let \next \bhs@A \else
+\if\is@digit #1\edef \bhs@value {\bhs@value #1}%
+ \let \next \bhs@D \else
+ \let \next \bhs@err
+\fi\fi\fi \next }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcount \bhs@cnt
+\newif \ifbhs@outa \newif \ifbhs@outx
+\newif \ifbhs@outy \newif \ifbhs@outz
+
+\def \bhs@init #1{% init label
+\def \bhs@name {#1}\def \bhs@value {}\def \bhs@kind {N}}
+
+\def \bhs@store {% store label value and execute
+\begingroup \edef \x {\endgroup \if N\bhs@kind \nxp \bhs@inc {\bhs@name }%
+\else \nxp \bhs@set {\bhs@name }{\bhs@value }{\bhs@kind }\fi }\x }
+
+\def \bhs@set #1#2#3{% set label value
+\csname bhs@#1set\endcsname {#2}{#3}}
+
+\def \bhs@inc #1{% increase label value
+\if I\csname bhs@#1kind\endcsname \bhs@cnt \csname bhs@#1value\endcsname
+ \advance \bhs@cnt 1 \begingroup
+ \edef \x {\endgroup \nxp \bhs@set {#1}{\the\bhs@cnt }{I}}\x
+\else \errmessage {BHS level `#1' has no numeric value}%
+ \bhs@set {#1}{1}{I}%
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \bhs@aset #1#2{% set level a
+\def \bhs@avalue {#1}\def \bhs@akind {#2}\bhs@outatrue
+\bhs@xset {0}{I}\bhs@yset {0}{I}\bhs@zset {0}{I}}
+
+\def \bhs@bset #1#2{% set level b
+\def \bhs@bvalue {#1}\def \bhs@bkind {#2}}
+
+\def \bhs@cset #1#2{% set level c
+\def \bhs@cvalue {#1}\def \bhs@ckind {#2}}
+
+\def \bhs@zset #1#2{% set level z
+\def \bhs@zvalue {#1}\bhs@outztrue \def \bhs@zkind {#2}}
+
+\def \bhs@yset #1#2{% set level y
+\def \bhs@ykind {#2}\def \bhs@value {#1}%
+\ifx \bhs@yvalue \bhs@value \else
+ \def \bhs@yvalue {#1}\bhs@outytrue \bhs@zreset
+ \if #2I\ifnum #1 = 0
+ \bhs@outyfalse \bhs@outzfalse
+ \fi\fi
+\fi }
+
+\def \bhs@xset #1#2{% set level x
+\def \bhs@xkind {#2}\def \bhs@value {#1}%
+\ifx \bhs@xvalue \bhs@value \else
+ \def \bhs@xvalue {#1}\bhs@outxtrue \bhs@yreset
+ \if #2I\ifnum #1 = 0
+ \bhs@outxfalse \bhs@outyfalse \bhs@outzfalse
+ \fi\fi
+\fi }
+
+\def \bhs@yreset {% reset level y
+\def \bhs@yvalue {1}\def \bhs@ykind {I}\bhs@outytrue \bhs@zreset }
+
+\def \bhs@zreset {% reset level z
+\def \bhs@zvalue {1}\def \bhs@zkind {I}\bhs@outztrue }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \bhs@yout {% verse
+\putwordb@x {\tracingmacros 0 \rm $^{\bhs@yvalue }$\space }\a@spacetrue }
+
+\def \bhs@xout {% chapter
+\putwordb@x {\tracingmacros 0 \bf \bhs@xvalue \space }}
+
+\def \bhs@aout {% heading
+{\tracingmacros 0 \rm \hfill \bhs@@label }\bigskip }
+
+\def \bhs@out {% print new label
+\ifbhs@outa \bhs@outafalse \bhs@aout \fi
+\ifbhs@outx \bhs@outxfalse \bhs@xout \fi
+\ifbhs@outy \bhs@outyfalse \bhs@yout \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/buck.sty b/language/arabic/arabtex/texinput/buck.sty
new file mode 100644
index 0000000000..be6c80d8e8
--- /dev/null
+++ b/language/arabic/arabtex/texinput/buck.sty
@@ -0,0 +1,229 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% buck.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% buck.sty
+% Scanner for Tim Buckwalter's encoding
+% to install it, include it as a LaTeX style option "buck"
+% with Plain TeX, say "\input buck.sty"
+% to activate it, say "\setcode {buck}
+% 27.10.97
+% 04.02.98
+% 28.07.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \buckatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \buckatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {buck.sty} {0.95 Tim Buckwalter's input encoding } {28.07.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\xpa\def \csname sc@\string }\endcsname {Qy} % hamza on yah
+
+\xpa\def \csname sc@\string {\endcsname {-""} % medial alif waSla
+
+\def \sc@def #1#2{\xpa\def\csname sc@\string #1\endcsname {#2}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Arabic
+{\catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setbuck@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@@ {@} \def \sc@c {@} \def \sc@e {@}
+\def \sc@B {@} \def \sc@C {@} \def \sc@G {@} \def \sc@I {@}
+\def \sc@J {@} \def \sc@L {@} \def \sc@M {@} \def \sc@O {@}
+\def \sc@P {@} \def \sc@Q {@} \def \sc@R {@} \def \sc@U {@}
+\def \sc@V {@} \def \sc@W {@} \def \sc@X {@}
+
+\sc@def ' {Q|} \sc@def | {QA} \sc@def > {Qa} \sc@def & {Qw}
+\sc@def < {Qi} \sc@def ## {|} \def \sc@A {A} \def \sc@b {b}
+\def \sc@p {T} \def \sc@t {t} \def \sc@v {C} \def \sc@j {G}
+\def \sc@H {H} \def \sc@x {X} \def \sc@d {d} \sc@def * {F}
+\def \sc@r {r} \def \sc@z {z} \def \sc@s {s} \sc@def $ {x}
+\def \sc@S {S} \def \sc@D {D} \def \sc@T {V} \def \sc@Z {Z}
+\def \sc@E {P} \def \sc@g {R} \sc@def _ {B}
+\def \sc@f {f} \def \sc@q {q} \def \sc@k {k} \def \sc@l {l}
+\def \sc@m {m} \def \sc@n {n} \def \sc@h {h} \def \sc@w {w}
+\def \sc@Y {Y} \def \sc@y {y} \def \sc@F {"aN} \def \sc@N {"uN}
+\def \sc@K {"iN} \def \sc@a {"a} \def \sc@u {"u} \def \sc@i {"i}
+\sc@def ~ {\n@xp \a@Ze} \def \sc@o {""} \sc@def ` {"\n@xp \a@a}
+
+\a@digits = {0123456789} \a@paren = {()[]}
+\a@first = {"`}
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\long \def \buck@special #1{% check for special cases
+\if \is@in@set #1\a@first % normal case
+ \def \next {\test@word #1}\else
+\if \relax \nxp #1% % command
+ \def \next {\test@command #1}\else
+ \def \next {\test@word #1}% % normal case
+\fi\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newif \ifk@sra
+\def \lowkasra {\k@sratrue } \def \hikasra {\k@srafalse }
+
+\def \a@putkasra #1{% modification at kasra % m1
+\ifcase #1\put@kasra \or
+\ifqur@n \put@kasra \else \put@fatha \fi \put@shadda \or
+\put@ihamza \put@kasra \or \put@fatha \put@hamza \put@shadda \or
+\put@madda \put@kasra \or \put@hamzalo \put@kasra \or
+\fi }
+
+\def \a@putkasratan #1{% modification at kasratan % m1
+\ifcase #1\put@kasratan \or
+\ifqur@n \put@kasratan \else \put@fathatan \fi \put@shadda \or
+\put@ihamza \put@kasratan \or \put@fathatan \put@hamza \put@shadda \or
+\put@madda \put@kasratan \or \put@hamzalo \put@kasratan \or
+\fi }
+
+\def \put@ihamza {% hamza at <i> depending on carrier
+\ifh@mza \ifnum \act@cd = \a@alif@iso \put@hamzalo \else
+ \ifnum \act@cd = \a@alif@end \put@hamzalo \else
+ \ifnum \act@cd = \a@lam@alif@iso \put@hamzalo \else
+ \ifnum \act@cd = \a@lam@alif@end \put@hamzalo \else
+ \put@hamza
+ \fi\fi\fi\fi
+\else \put@hamza \fi }
+
+\def \syl@hamzaverb #1{% verbatim hamza, #1 = carrier
+ \put@con #1\def \next {\syl@voctest }%
+\ifx #1|\put@con Q\else
+\ifx #1A\put@con a\add@madda \@sukfalse \else
+ \add@hamza
+\ifx #1y\put@con Y%
+\ifqur@n \add@hamzalow \fi \else
+\ifx #1u\put@con w\else
+\ifx #1i\put@con a\add@hamzalow \else
+\fi\fi\fi\fi\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \buck@cat {% change catcodes
+\catcode `\# 11
+\catcode `\' 11 \catcode `\| 11 \catcode `\> 11 \catcode `\& 11
+\catcode `\< 11 \catcode `\} 11 \catcode `\* 11 \catcode `\$ 11
+\catcode `\_ 11 \catcode `\~ 11 \catcode `\` 11 \catcode `\{ 11 }
+
+\def \buck@recat {% change catcodes back
+\catcode `\# 6
+\catcode `\' 12 \catcode `\| 12 \catcode `\> 12 \catcode `\& 4
+\catcode `\< 12 \catcode `\2 11 \catcode `\* 12 \catcode `\$ 3
+\catcode `\_ 8 \catcode `\~ 13 \catcode `\` 12 \catcode `\{ 1 }
+
+\def \buck@codes {% save and set special characters
+\a@arabcodes \buck@cat }
+
+\def \unbuck@codes {% reset catcodes
+\a@unarabcodes \buck@recat }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\xpa \def \csname a@c@end\string{arabtext\string}\endcsname {\end{arabtext} }
+
+{\catcode `\[ 1 \catcode `\] 2 \catcode `\{ 11 \catcode `\} 11
+\gdef \a@c@end {arabtext}[\end[arabtext]]
+]
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \TB({\bgroup \def \a@c@end {\end }\buck@cat \T@B}% prepare reading
+
+\def \T@B #1){\protect \a@ins #1>\egroup }% now read the argument
+
+\def \<{\bgroup \def \a@c@end {\end }\buck@cat \T@@B}% prepare reading
+
+\def \T@@B #1\>{\protect \a@ins #1>\egroup }% now read the argument
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+{\catcode `\[ 1 \catcode `\{ 11
+\gdef \buck@beg #1[% start the TB scanner
+\h@mzafalse \iz@fetfalse \novocalize % because of explicit quoting
+\@ssimfalse
+ \def \next [\buck@word #1}%
+\ifx #1\@ \def \next [\sc@endscan }\else % finished
+\ifx #1{\def \next [\buck@lbrace }\else
+\ifx #1"\def \next [\buck@lquote }\else
+\fi\fi\fi \next }
+} % catcodes 1 and 11
+
+{\catcode `\^^M=13 \catcode `\~ 11 %
+\gdef \buck@word #1#2{% transform input into internal notation
+ \def \next {\buck@word #2}%
+\ifx #1\@ \def \next {\sc@endscan #2}\else % finished
+\ifx #1-\def \next {\buck@minus #2}\else %
+\ifx #1"\def \next {\buck@rquote #2}\else %
+\if \nxp ^^M\nxp #1\def \next {\buck@par #1#2}\else % active character
+\ifx #1#2\def \next {\buck@two #1}\else %
+% \ifx #2~\def \next {\buck@word #1}\else %
+% \fi %
+ \ifcat a\nxp #1\edef \sc@char {\csname sc@#1\endcsname }%
+ \else \def \sc@char {\nxp #1}%
+ \fi %
+ \sc@put %
+\fi\fi\fi\fi\fi \next }%
+} % catcodes 13 and 11
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+{\catcode `\# 11 \catcode `\& 6
+\gdef \buck@two &1{% double character
+\def \next {\buck@word -&1}\edef \sc@char {\csname sc@&1\endcsname}%
+\ifx &1#\def \next {\buck@word &1}\fi
+\sc@put \next }}
+
+\def \buck@minus {% hyphen between words
+\def \sc@char {-}\sc@put \buck@beg }
+
+\def \buck@lquote {% left quote
+\def \sc@char {`}\sc@put \buck@beg }
+
+\def \buck@rquote {% right quote
+\def \sc@char {'}\sc@put \buck@word }
+
+\def \buck@lbrace {% initial left brace: alif wasla
+\def \sc@char {""}\sc@put \buck@word }
+
+\def \buck@par #1\@ \@@ {% new line, push back the rest
+\sc@back \\ #1\@ \@@ }
+
+\def \buck@endscan \@@ {\global\let \a@scan \a@@scan }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@buck {buck} \let \buck@setcode \setcode
+\let \a@arabcodes \arab@codes \let \a@unarabcodes \unarab@codes
+
+\def \set@buck {% substitute new scanner
+\let \sc@beg \buck@beg \let \sc@word \buck@word
+\let \sc@back \sc@@back \let \sc@endscan \sc@@endscan
+\let \a@scan \a@@scan \setbuck@codes
+\let \arab@codes \buck@codes \let \unarab@codes \unbuck@codes
+\let \test@special \buck@special
+\message {input coding set to Tim Buckwalter's encoding conventions}}
+
+\def \setcode #1{\def \next {#1}% switch input coding
+\ifx \next \a@buck \set@buck \else
+ \buck@setcode {#1}
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\message {scanner for Tim Buckwalter's encoding installed.}
+
+\catcode `\@ = \buckatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/captions.def b/language/arabic/arabtex/texinput/captions.def
new file mode 100644
index 0000000000..3d4b48ec3d
--- /dev/null
+++ b/language/arabic/arabtex/texinput/captions.def
@@ -0,0 +1,76 @@
+% chapter = al-fa.slu
+% chapter = al-bAbu
+% section = al-fa.slu
+% section = al-bandu
+% section = al-qismu
+% paragraph = al-fa.slu
+% paragraph = al-bandu
+% paragraph = al-mAddaTu
+% overview = al-nna.zraTu
+% abbreviations = al-mula_h_ha.su
+% heading = al-`unwAnu
+% heading = al-maqAdaTu
+% tableofcontents = al-mu.htawayAtu
+% tableofcontents = al-ma.dmUnu
+% listoffigures = qA'imaTu al-.suwaru
+% listoftables = qA'imaTu al-^gadAwilu
+% listofpictures = qA'imaTu al-rusUmu
+% index = al-fihrisu (al-fihristu)
+% bibliography = al-marA^gi`u
+% references = al-ma.sAdiru
+% abstract = al-mula_h_ha.su
+% abstract = al-^s^samlu
+% appendix = al-mul.haqu
+% attachments = al-murfaqAtu
+% number = al-raqmu
+% number = al-`adadu
+% title = al-`unwAnu
+% table = al-^gadwalu
+% picture = al-.s.sUraTu
+% picture = al-rrasmu
+% page = al-.s.saf.haTu
+% column = al-`amUdu
+% introduction = al-tta.h.dIru
+% introduction = al-muqaddamaTu
+% introduction = al-ttaw.sIlu
+% introduction = al-'id_hAlu
+% list = al-qA'imaTu
+% note = al-mal.hU.zaTu
+% note = al-mulA.ha.zaTu
+% entry = al-nnafdaTu
+
+% first page = a.s-.saf.haTu al-'Ul_A
+% previous page = a.s-.saf.haTu qablu
+% next page = a.s-.saf.haTu ba`du
+% next page = a.s-.saf.haTu at-tAlI
+% last page = a.s-.saf.haTu al-'A_hiraTu
+% contents = mu_htaw_A
+% part = al-^guz'u
+% part = al-qismu
+% see also = 'un.zur 'aydaN
+% drawing = ar-rasmu
+
+
+\def\captionsenglish{%
+\def\prefacename{Preface}%
+\def\refname{References}%
+\def\abstractname{Abstract}%
+\def\bibname{Bibliography}%
+\def\chaptername{Chapter}%
+\def\appendixname{Appendix}%
+\def\contentsname{Contents}%
+\def\listfigurename{List of Figures}%
+\def\listtablename{List of Tables}%
+\def\indexname{Index}%
+\def\figurename{Figure}%
+\def\tablename{Table}%
+\def\partname{Part}%
+\def\enclname{encl}%
+\def\ccname{cc}%
+\def\headtoname{To}%
+\def\pagename{Page}%
+\def\seename{see}%
+\def\alsoname{see also}}
+
+\let\captionsUSenglish=\captionsenglish
+
diff --git a/language/arabic/arabtex/texinput/cp1256.sty b/language/arabic/arabtex/texinput/cp1256.sty
new file mode 100644
index 0000000000..9926dd3705
--- /dev/null
+++ b/language/arabic/arabtex/texinput/cp1256.sty
@@ -0,0 +1,173 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% cp1256.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% cp1256.sty
+% Scanner for Windows CP 1256
+% to install it, include it as a LaTeX package or style option "cp1256"
+% with Plain TeX, say "\input cp1256.sty"
+% to activate it, say "\setcode{cp1256}" or "\setcode{arabwin}"
+% 26.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \awinatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \awinatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {cp1256.sty} {3.11 CP 1256 Windows encoding} {26.04.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \awin@catcodes {% assignments for MAC Hebrew
+\countdef \is@m=2 \countdef \is@n=4
+\is@m = 128 \is@n = 64
+\loop \ifnum \catcode \is@m = 11 \else \catcode \is@m = 11 \fi
+\global\lccode \is@m = \is@n
+\ifnum 159 > \is@m \advance \is@m 1 \advance \is@n 1 \repeat
+\is@m = 160 \is@n = 32
+\loop \ifnum \catcode \is@m = 11 \else \catcode \is@m = 11 \fi
+\global\lccode \is@m = \is@n
+\ifnum 255 > \is@m \advance \is@m 1 \advance \is@n 1 \repeat
+\is@m=0 \is@n=0 \catcode `\^^a0 12 }
+
+{\awin@catcodes
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Arabic
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setawin@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@^^80 {p} \def \sc@^^81 {@} \def \sc@^^82 {@} \def \sc@^^83 {@}
+\def \sc@^^84 {@} \def \sc@^^85 {@} \def \sc@^^86 {@} \def \sc@^^87 {@}
+\def \sc@^^88 {@} \def \sc@^^89 {@}
+\def \sc@^^8a {\n@xp\a@t} \def \sc@^^8b {@}
+\def \sc@^^8c {@} \def \sc@^^8d {J}
+\def \sc@^^8e {j} \def \sc@^^8f {\n@xp\a@d}
+
+\def \sc@^^90 {g} \def \sc@^^91 {@} \def \sc@^^92 {@} \def \sc@^^93 {@}
+\def \sc@^^94 {@} \def \sc@^^95 {@} \def \sc@^^96 {@} \def \sc@^^97 {@}
+\def \sc@^^98 {\n@xp\a@k} \def \sc@^^99 {@}
+\def \sc@^^9a {\n@xp\a@r} \def \sc@^^9b {@}
+\def \sc@^^9c {@} \def \sc@^^9d {@} \def \sc@^^9e {@}
+\def \sc@^^9f {\n@xp\a@n}
+
+\def \sc@^^a0 {@} \def \sc@^^a1 {,} \def \sc@^^a2 {@} \def \sc@^^a3 {@}
+\def \sc@^^a4 {$} \def \sc@^^a5 {@} \def \sc@^^a6 {@} \def \sc@^^a7 {@}
+\def \sc@^^a8 {@} \def \sc@^^a9 {@} \def \sc@^^aa {h} \def \sc@^^ab {@}
+\def \sc@^^ac {@} \def \sc@^^ad {-} \def \sc@^^ae {@} \def \sc@^^af {@}
+
+\def \sc@^^b0 {@} \def \sc@^^b1 {@} \def \sc@^^b2 {@} \def \sc@^^b3 {@}
+\def \sc@^^b4 {@} \def \sc@^^b5 {@} \def \sc@^^b6 {@} \def \sc@^^b7 {@}
+\def \sc@^^b8 {@} \def \sc@^^b9 {@} \def \sc@^^ba {;} \def \sc@^^bb {@}
+\def \sc@^^bc {@} \def \sc@^^bd {@} \def \sc@^^be {@} \def \sc@^^bf {?}
+
+\def \sc@^^c0 {\n@xp\a@H}
+\def \sc@^^c1 {Q|} \def \sc@^^c2 {QA} \def \sc@^^c3 {Qa}
+\def \sc@^^c4 {Qw} \def \sc@^^c5 {Qi} \def \sc@^^c6 {Qy} \def \sc@^^c7 {A}
+\def \sc@^^c8 {b} \def \sc@^^c9 {T} \def \sc@^^ca {t} \def \sc@^^cb {C}
+\def \sc@^^cc {G} \def \sc@^^cd {H} \def \sc@^^ce {X} \def \sc@^^cf {d}
+
+\def \sc@^^d0 {F} \def \sc@^^d1 {r} \def \sc@^^d2 {z} \def \sc@^^d3 {s}
+\def \sc@^^d4 {x} \def \sc@^^d5 {S} \def \sc@^^d6 {D} \def \sc@^^d7 {@}
+\def \sc@^^d8 {V} \def \sc@^^d9 {Z} \def \sc@^^da {P} \def \sc@^^db {R}
+\def \sc@^^dc {B} \def \sc@^^dd {f} \def \sc@^^de {q} \def \sc@^^df {k}
+
+\def \sc@^^e0 {@} \def \sc@^^e1 {l} \def \sc@^^e2 {@} \def \sc@^^e3 {m}
+\def \sc@^^e4 {n} \def \sc@^^e5 {h}
+\def \sc@^^e6 {w} \def \sc@^^e7 {@}
+\def \sc@^^e8 {@} \def \sc@^^e9 {@} \def \sc@^^ea {@} \def \sc@^^eb {@}
+\def \sc@^^ec {Y} \def \sc@^^ed {y} \def \sc@^^ee {@} \def \sc@^^ef {@}
+
+\def \sc@^^f0 {"aN}\def \sc@^^f1 {"uN} \def \sc@^^f2 {"iN} \def \sc@^^f3 {"a}
+\def \sc@^^f4 {@} \def \sc@^^f5 {"u} \def \sc@^^f6 {"i} \def \sc@^^f7 {@}
+\def \sc@^^f8 {\n@xp\a@Ze} \def \sc@^^f9 {@}
+\def \sc@^^fa {""} \def \sc@^^fb {@}
+\def \sc@^^fc {@} \def \sc@^^fd {@} \def \sc@^^fe {@} \def \sc@^^ff {E}
+\a@digits = {0123456789}
+%\a@paren = {()[]^^a8^^a9^^e2^^e3}
+\a@paren = {()[]}
+\a@first = {"`^^e6}
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \awin@scan #1>{% standard scanner call: token sequence -> \a@tokens
+\iftest@scan \tracingmacros = 1
+\ifshow \else \lowercase{\a@verb #1>}\fi\fi
+\global\def \a@rest {}\global\a@tokens = {}\sc@beg #1\@ \@@
+\iftest@scan \tracingmacros = 0 %
+\xpa \a@verb \xpa (\the\a@tokens )>\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \awin@beg #1{% start CP 1256 scanner
+\h@mzafalse \iz@fetfalse \yahdots \novocalize % because of explicit quoting
+ \@ssimfalse
+%\urd@true
+\ifx #1^^c7\def \next {\awin@alif}\else
+\def \next {\awin@word #1}\fi \next }
+
+{\catcode `\^^M=13 \endlinechar = -1
+\gdef \awin@word #1{% transform input into internal notation
+\ifx #1\@ \def \next {\sc@endscan }\else % finished
+\if \nxp ^^M\nxp #1\def \next {\awin@par #1}% active character
+\else \def \next {\awin@w@rd #1}%
+\fi\fi \next }%
+} % catcode 13
+
+\gdef \awin@w@rd #1#2{% special cases
+\case #1\of
+{ #2{\awin@word #1-#2}
+ -{\awin@minus #2}
+ "{\awin@dquote #2}
+ ^^a0{\sc@back #2}
+ ^^ad{\awin@minus #2}
+\default {\awin@@word #1#2}
+}\endcase }
+
+\gdef \awin@@word #1{% default branch
+\ifcat a\nxp #1\edef \sc@char {\csname sc@#1\endcsname }%
+\else \def \sc@char {\nxp #1}%
+\fi \sc@put \awin@word }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \awin@alif {% alif at the beginning of a word
+\def \sc@char {a}\sc@put \awin@word }
+
+\gdef \awin@dquote {% double quote
+\def \sc@char {\a@dq}\sc@put \awin@word }
+
+\gdef \awin@minus {% hyphen between words
+\def \sc@char {-}\sc@put \awin@beg }
+
+\gdef \awin@par #1\@ \@@ {% new line, push back the rest
+\sc@back \\ #1\@ \@@ }
+
+\gdef \awin@endscan \@@ {\global\let \a@scan \awin@scan }
+} % \awin@catcodes
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \set@awin {% select the CP 1256 scanner
+\let \sc@beg \awin@beg \let \sc@word \awin@word
+\let \sc@back \sc@@back \let \sc@endscan \awin@endscan
+\global\let \a@scan \awin@scan \setawin@codes
+\awin@catcodes \yahdots
+\a@message {input encoding set to Windows CP 1256 conventions}}
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the CP 1256 encoding
+awin\set@awin cp1256\set@awin }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {scanner for Windows code page 1256 installed.}
+
+\catcode `\@ = \awinatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/etrans.sty b/language/arabic/arabtex/texinput/etrans.sty
new file mode 100644
index 0000000000..71c3ff2be0
--- /dev/null
+++ b/language/arabic/arabtex/texinput/etrans.sty
@@ -0,0 +1,9 @@
+% etrans.sty
+
+\endinput
+
+% this module is no more needed.
+% its effect is now taken care of by "atrans.sty"; use \settrans{english}
+% 04.11.1998
+% Klaus Lagally
+
diff --git a/language/arabic/arabtex/texinput/gedalin.sty b/language/arabic/arabtex/texinput/gedalin.sty
new file mode 100644
index 0000000000..5f1e8bf57b
--- /dev/null
+++ b/language/arabic/arabtex/texinput/gedalin.sty
@@ -0,0 +1,112 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% gedalin.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% gedalin.sty
+% Scanner for Michael Gedalin's special Hebrew encoding
+% to activate it, say "\setcode {gedalin}"
+% presupposes the packages "arabtex.sty" and "hebtex.sty"
+% 10.09.2001
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \gedatcode \undefined \else \xpa \endinput \fi
+
+\chardef \gedatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {gedalin.sty}
+{3.10 scanner for Michael Gedalin's Hebrew encoding} {10.09.2001}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Hebrew
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setged@codes {\seta@codes % activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\def \sc@a {\n@xp\a@S} \def \sc@b {n} \def \sc@c {b}
+\def \sc@d {g} \def \sc@e {q} \def \sc@f {k}
+\def \sc@g {P} \def \sc@h {y} \def \sc@i {\n@xp\a@N}
+\def \sc@j {X} \def \sc@k {l} \def \sc@l {\n@xp\a@K}
+\def \sc@m {S} \def \sc@n {m} \def \sc@o {\n@xp\a@M}
+\def \sc@p {p} \def \sc@q {/} \def \sc@r {r}
+\def \sc@s {d} \def \sc@t {Q} \def \sc@u {w}
+\def \sc@v {h} \def \sc@w {,} \def \sc@x {s}
+\def \sc@y {C} \def \sc@z {z}
+%
+\a@digits = {0123456789} \a@paren = {()[]} \a@first = {;,.}
+%\iffalse
+\tc@def \a@M {\act@cd \hc@mf } % mem sofit
+\tc@def \a@N {\act@cd \hc@nf } % nun sofit
+\tc@def \a@K {\act@cd \hc@kf } % kaf sofit
+\tc@def \a@P {\act@cd \hc@ff } % peh sofit
+\tc@def \a@Z {\act@cd \hc@sf } % tsadeh sofit
+%\fi
+\globaldefs=0
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Hebrew
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \ged@scan #1>{% modified scanner call: token sequence -> \a@tokens
+\iftest@scan \ifshow \else \lowercase {\a@verb #1>}\fi
+\tracingmacros = 1 \fi
+\global\def \a@rest {}\global\a@tokens = {}%
+\novocalize \sc@beg #1\@ \@@
+\iftest@scan \tracingmacros = 0 \xpa \a@verb \xpa (\the\a@tokens )>\fi }
+
+\def \ged@word #1#2{% transform input into internal notation
+\@ssimfalse \def \next {\ged@word #2}%
+\ifx #1\@ \let \next \relax \else
+\ifcat \nxp #1\relax \def \next {\ged@cs #1#2}\else % control sequence
+ \ifx #1-\def \sc@char {B}\sc@put \else
+ \ifx #1/\def \sc@char {.}\sc@put \else
+ \ifx #1`\def \sc@char {;}\sc@put \else
+ \ifx #1w\def \sc@char {,}\sc@put \else
+ \ifx #1q\def \sc@char {/}\sc@put \else
+ \ifx #1|\def \sc@char {\nxp \a@U}\sc@put \else
+ \ifx #1;\def \sc@char {\nxp \a@P \nxp \a@U}\sc@put \else
+ \ifx #1,\def \sc@char {t\nxp \a@U}\sc@put \else
+ \ifx #1.\def \sc@char {\nxp \a@Z \nxp \a@U}\sc@put \else
+ \ifcat \noexpand #1-\def \sc@char {#1}\sc@put \else
+ \ifcat \noexpand #1a\edef \sc@char {\csname sc@#1\endcsname }\else
+ \def \sc@char {#1}%
+ \fi \sc@put
+\fi\fi\fi\fi\fi\fi
+\fi\fi\fi\fi\fi\fi \next }
+
+\def \g@d@cs #1#2{% test word end
+\def \sc@char {#1}\sc@put
+\ifx #2\@ \def \next {\sc@endscan #2}\else
+\ifcat -\nxp #2 \def \next {\ged@word #2}\else
+\def \next {\sc@back #2}\fi \fi \next }
+
+\def \ged@cs #1#2{% control sequence within a word; push back?
+\xpa \ifx #1\closegeresh \def \next {\g@d@cs {\nxp \lq }#2}\else
+\xpa \ifx #1\closequote \def \next {\g@d@cs {`}#2}\else
+ \def \next {\sc@back #1#2}%
+\fi\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \ged@select {% select the new scanner
+%\heb@catcodes % inside hebtex.sty; to make sure
+\let \sc@beg \ged@word \let \sc@word \ged@word
+\let \sc@back \sc@@back \let \sc@endscan \sc@@endscan
+\setged@codes \global\let \a@scan \ged@scan
+\let \h@put@end \h@put@mid
+\a@message {input encoding set to Michael Gedalin's Hebrew encoding}}
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the encoding
+gedalin\ged@select }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {scanner for Michael Gedalin's Hebrew encoding installed.}
+\setcode{gedalin}
+
+\catcode `\@ = \gedatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/hebchrs.sty b/language/arabic/arabtex/texinput/hebchrs.sty
new file mode 100644
index 0000000000..fd1ffbef83
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hebchrs.sty
@@ -0,0 +1,105 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hebchrs.sty
+% ArabTeX
+% dynamic letter token definitions for Hebrew
+% Version 26.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {hebchrs.sty} {3.11 Hebrew letter token definitions } {26.04.2003}
+
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\gdef \def@hebchars {% define character macros for Hebrew
+\tc@clearall
+\gdef \tc@@ {\act@cd \hc@@ } % illegal
+\gdef \tc@a {\act@cd \hc@a } % aleph
+\gdef \tc@b {\act@cd \hc@b } % beth
+\gdef \tc@d {\act@cd \hc@d } % daleth
+\gdef \tc@f {\act@cd \hc@f \@finaltrue } % pe
+\gdef \tc@f {\act@cd \hc@f \@finaltrue \act@mod\r@phe } % pe
+\gdef \tc@g {\act@cd \hc@j } % gimel
+\gdef \tc@h {\act@cd \hc@h } % heh
+\gdef \tc@i {\act@cd \hc@y } % chireq plene
+\gdef \tc@k {\act@cd \hc@k \@finaltrue } % kaph
+\gdef \tc@l {\act@cd \hc@l } % lamed
+\gdef \tc@m {\act@cd \hc@m \@finaltrue } % mem
+\gdef \tc@n {\act@cd \hc@n \@finaltrue } % nun
+\gdef \tc@p {\act@cd \hc@f \@finaltrue } % pe
+\gdef \tc@q {\act@cd \hc@q } % qoph
+\gdef \tc@r {\act@cd \hc@r } % resh
+\gdef \tc@s {\act@cd \hc@s } % samekh
+\gdef \tc@t {\act@cd \hc@t } % taw
+\gdef \tc@v {\act@cd \hc@b } % beth
+\gdef \tc@v {\act@cd \hc@b \act@mod\r@phe } % beth
+\gdef \tc@w {\act@cd \hc@w } % waw
+\gdef \tc@x {\act@cd \hc@si \act@mod \shind@t } % shin with dot
+\gdef \tc@y {\act@cd \hc@y } % yod
+\gdef \tc@z {\act@cd \hc@z } % zayin
+
+\gdef \tc@A {\act@cd \hc@a } % aleph again
+\gdef \tc@B {\act@cd \hc@B } % maqqeph
+\gdef \tc@C {\act@cd \hc@tt } % thet
+\gdef \tc@D {\act@cd \hc@d \@dageshtrue } % daleth dagesh
+\gdef \tc@F {\act@cd \hc@d } % daleth
+\gdef \tc@G {\act@cd \hc@j } % gimel
+\gdef \tc@H {\act@cd \hc@h \@dageshtrue } % heh mappiq
+\gdef \tc@K {\act@cd \hc@K } % paseq
+\gdef \tc@M {\act@cd \hc@M } % phantom 1: box
+\gdef \tc@N {\act@cd \hc@N } % phantom 2: space
+\gdef \tc@O {\act@cd \hc@w \act@mod \rd@t } % cholem maleh
+\gdef \tc@P {\act@cd \hc@P } % ayin
+\gdef \tc@Q {\act@cd \hc@a } % aleph again
+\gdef \tc@R {\act@cd \hc@j \@dageshtrue } % gimel dagesh
+\gdef \tc@S {\act@cd \hc@ss \@finaltrue } % sade
+\gdef \tc@T {\act@cd \hc@h \@dageshtrue } % he
+\gdef \tc@U {\act@cd \hc@w \@dageshtrue } % shureq
+\gdef \tc@V {\act@cd \hc@t \@dageshtrue } % taw dagesh
+\gdef \tc@W {\act@cd \hc@N } % phantom 2
+\gdef \tc@X {\act@cd \hc@hh } % chet
+\gdef \tc@Y {\act@cd \hc@y } % yod
+
+\tc@def \a@b {\act@cd \hc@b \@dageshtrue } % beth dagesh
+\tc@def \a@f {\act@cd \hc@f \@finaltrue \@dageshtrue } % pe dagesh
+\tc@def \a@i {\act@cd \hc@ey } % yod yod
+\tc@def \a@k {\act@cd \hc@k \@finaltrue \@dageshtrue } % kaph dagesh
+\tc@def \a@o {\act@cd \hc@oy } % waw yod
+\tc@def \a@s {\act@cd \hc@si \act@mod \sind@t } % sin with dot
+\tc@def \a@w {\act@cd \hc@v } % waw waw
+\tc@def \a@B {\act@cd \hc@b \act@mod \r@phe } % veyz
+\tc@def \a@F {\act@cd \hc@f \@finaltrue \act@mod\r@phe }% fey
+\tc@def \a@H {\act@cd \hc@h } % silent he
+\tc@def \a@K {\act@cd \hc@kf } % kaf sofit
+\tc@def \a@M {\act@cd \hc@mf } % mem sofit
+\tc@def \a@N {\act@cd \hc@nf } % nun sofit
+\tc@def \a@P {\act@cd \hc@ff } % peh sofit
+\tc@def \a@S {\act@cd \hc@si } % sin without dot
+\tc@def \a@Z {\act@cd \hc@sf } % tsadeh sofit
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}}% end of dynamic definitions for Hebrew
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \tc@def #1{% define letter description \tc@#1
+\xpa \gdef \csname tc@\string #1\endcsname }
+
+\def \a@letters {abcdefghijklmnopqrstuvwxyz}
+
+\def \tc@clear #1{% reset all letter descriptions, also for Hebrew!
+\ifx #1\relax \relax \else \uppercase {\gdef \1{#1}}%
+\xpa \gdef \csname tc@#1\endcsname {\relax}%
+\xpa \gdef \csname tc@\1\endcsname {\relax}%
+\xpa \gdef \csname tc@\xpa\string\csname a@#1\endcsname\endcsname {\relax}%
+\xpa \gdef \csname tc@\xpa\string\csname a@\1\endcsname\endcsname {\relax}%
+\xpa \tc@clear \fi }
+
+\def \tc@clearall {% reset all \tc@x definitions
+\xpa \tc@clear \a@letters \relax }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/hebsymb.sty b/language/arabic/arabtex/texinput/hebsymb.sty
new file mode 100644
index 0000000000..b9936e9816
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hebsymb.sty
@@ -0,0 +1,59 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hebsymb.sty
+% ArabTeX
+% Hebrew character assignments
+% in font "hclassic"
+% 12.06.2000
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {hebsymb.sty} {3.10 for oldcode font assignments} {12.06.2000}
+
+% will be modified in "hewrite.sty" for other font assignments
+
+\def \hc@@ {33} % illegal
+\def \hc@B {45} % maqqeph
+\def \hc@a {96} % aleph
+\def \hc@b {97} % beth
+\def \hc@j {98} % gimel
+\def \hc@d {99} % daleth
+\def \hc@h {100} % he
+\def \hc@w {101} % waw
+\def \hc@z {102} % zayin
+\def \hc@hh {103} % chet
+\def \hc@tt {104} % ttet
+\def \hc@y {105} % yod
+\def \hc@kf {106} % kaph, final
+\def \hc@k {107} % kaph
+\def \hc@l {108} % lamed
+\def \hc@mf {109} % mem, final
+\def \hc@m {110} % mem
+\def \hc@nf {111} % nun, final
+\def \hc@n {112} % nun
+\def \hc@s {113} % samech
+\def \hc@P {114} % ayin
+\def \hc@ff {115} % pe, final
+\def \hc@f {116} % pe, f
+\def \hc@sf {117} % ssade, final
+\def \hc@ss {118} % ssade
+\def \hc@q {119} % qoph
+\def \hc@r {120} % resh
+\def \hc@si {121} % ssin
+\def \hc@t {122} % taw
+\def \hc@Pv {123} % vowel ayin
+\def \hc@v {124} % vav
+\def \hc@K {125} % paseq
+\def \hc@M {126} % phantom 1
+\def \hc@N {127} % phantom 2
+\def \hc@ay {128} % ay
+\def \hc@ey {129} % ey
+\def \hc@oy {130} % oy
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
diff --git a/language/arabic/arabtex/texinput/hebtex.sty b/language/arabic/arabtex/texinput/hebtex.sty
new file mode 100644
index 0000000000..037b5d33fc
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hebtex.sty
@@ -0,0 +1,87 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hebtex.sty
+% ArabTeX
+% Modifications for Hebrew mode
+% 12.06.2000
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \sethebrew \undefined \else \xpa \endinput \fi
+
+\ifx \ArabTeX \undefined
+\ifx \NeedsTeXFormat \undefined \input arabtex.sty
+\else \usepackage {arabtex}\fi \fi
+
+\let \h@wlog \wlog \def \wlog #1{\relax }
+
+\a@ident {hebtex.sty} {3.10 modifications for Hebrew mode} {12.06.2000}
+
+\newif \ifhedc@de
+
+\ifx \LaTeX \undefined \else
+ \let \h@document \document
+ \def \document {\h@document \sethebrew \hedc@detrue }
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\let \hebtext \arabtext \let \endhebtext \endarabtext
+\let \hebtex \arabtext \let \endhebtex \endarabtext % catch typo
+\let \hebfalse \arabfalse \let \hebtrue \arabtrue
+
+\pdef \sethebrew {% switch to hebrew writing
+\all@false \@ssimtrue \yahd@tstrue \heb@output
+\def \a@defaultfont {\hc }\setarabfont \a@normalfont \hc }
+
+\let \setheb \sethebrew
+
+\def \set@hebfont {\setarabfont \heb@font }
+
+\def \heb@font {\protect \pheb }
+\def \a@defaultfont {\protect \pheb }
+
+\def \sethebfont #1{\def \pheb {\hebfont }\font \hebfont =#1\relax}
+
+\all@wcmd \sethebrew \all@wcmd \setheb \all@wcmd \sethebfont \all@wif \heb
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \heb@output {\ifx \a@lang \a@hebr \else
+\tr@ceoff % switch to Hebrew output conventions
+\def@hebchars % define character macros for Hebrew
+\def@hebvoc % define vowel parsing routines for Hebrew
+\def@hebstrut % define strut for Hebrew
+\global\let \a@write \heb@write \global\let \a@write@hook \relax
+\tr@heb \tr@ceon \global\let \a@lang \a@hebr \fi }
+
+\def \a@hebr {HEBREW}
+\let \tr@heb \relax % if hetrans.sty is not loaded
+
+\def \def@hebstrut {\def \arab@strut
+%{\vrule height2.8ex depth0.7ex width0pt \relax }}
+{\vrule height1.9ex depth0.7ex width0pt \relax }}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\UsePackage {hecmd}
+\UsePackage {hescan}
+\UsePackage {heparse}
+\UsePackage {hewrite}
+\UsePackage {hetrans}
+\ifx \LaTeX \undefined \else \UsePackage {hefonts}
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\UsePackage {hepatch} % must be at the end !!
+
+%\hc
+
+\let \wlog \h@wlog
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/hebtex.tex b/language/arabic/arabtex/texinput/hebtex.tex
new file mode 100644
index 0000000000..6e653c43d1
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hebtex.tex
@@ -0,0 +1,122 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% hebtex.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hebtex.tex
+% version 3.11
+% Plain TeX loader for ArabTeX, Hebrew mode
+% 08.09.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally EMail: lagallyk@acm.org
+% Institut fuer Formale
+% Methoden der Informatik TEL: +49-711-7816-392
+% Universitaet Stuttgart FAX: +49-711-7816-370
+% Universitaetsstrasse 38
+% D-70569 Stuttgart INFO: arabtex@informatik.uni-stuttgart.de
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This program can be redistributed and/or modified under the terms
+% of the LaTeX Project Public License distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or (at your option) any later version.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \input this file at the beginning of an ArabTeX input file running
+% under Plain TeX. This is an adaptation by Tom Koornwinder of
+% Jan Lodder's file arab.plain.tex, again modified by Klaus Lagally
+% and modified again to switch to Hebrew mode
+% 16.09.2001
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\message { Plain TeX Hebrew setup for ArabTeX }
+
+\input arabtex.tex % load the ArabTeX package
+
+\makeatletter
+\a@ident {hebtex.tex} {3.11 Plain TeX Hebrew loader for ArabTeX} {08.09.2003}
+
+%\def \pheb {\hebfont }
+
+\iffalse
+\input hebtex.sty % load the Hebrew extension
+\input apatch.sty % load any patches
+\input hepatch.sty % load any patches
+\fi
+
+% commands for font selection:
+
+\font \hclassic = hclassic \relax % fix em and ex
+ \fontdimen5\hclassic =.8\fontdimen2\hclassic
+ \fontdimen6\hclassic =3\fontdimen5\hclassic
+\font \hcaption = hcaption \relax % fix em and ex
+ \fontdimen5\hcaption =.8\fontdimen2\hcaption
+ \fontdimen6\hcaption =3\fontdimen5\hcaption
+ \fontdimen1\hcaption =.2pt \relax
+
+\def \hc {\sethebfont {\hclassic}}
+\def \hp {\sethebfont {\hcaption}}
+
+\all@wcmd \hc \all@wcmd \hp % allow these in Hebrew context
+
+\font \jerusalem = jerusalem \relax
+\font \Jerusalem = Jerusalem \relax
+\font \OldJaffa = OldJaffa \relax
+\font \DeadSea = DeadSea \relax
+\font \TelAviv = TelAviv \relax
+
+\def \jm {\sethebfont {\jerusalem}}
+\def \Jm {\sethebfont {\Jerusalem}}
+\def \oj {\sethebfont {\OldJaffa}}
+\def \ds {\sethebfont {\DeadSea}}
+\def \ta {\sethebfont {\TelAviv}} % add others as required
+
+\all@wcmd \ds \all@wcmd \oj \all@wcmd \jm \all@wcmd \ta \all@wcmd \Jm
+
+\font \smold = shlm_old \relax
+ \fontdimen5\font =\fontdimen2\font
+\def \shlmold {\sethebfont {\smold}}
+
+\font \smscr = shlm_scr \relax
+ \fontdimen5\font =\fontdimen2\font
+\def \shlmscr {\sethebfont {\smscr}}
+
+\font \smstk = shlm_stk \relax
+ \fontdimen5\font =\fontdimen2\font
+\def \shlmstk {\sethebfont {smstk}}
+
+\all@wcmd \shlmold \all@wcmd \shlmscr \all@wcmd \shlmstk
+
+\def \fr {\sethebfont {fr}}
+\def \frbx {\sethebfont {frbx}}
+\def \frsl {\sethebfont {frsl}}
+
+\all@wcmd \fr \all@wcmd \frbx \all@wcmd \frsl
+
+\def \crml {\sethebfont {crml10}% fix ex
+ \fontdimen5\font =\fontdimen2\font }
+\def \crmlsl {\sethebfont {crmlsl10}% fix ex
+ \fontdimen5\font =\fontdimen2\font }
+
+\all@wcmd \crml \all@wcmd \crmlsl
+%\makeatother
+
+\input hebtex.sty % load the Hebrew extension
+\input apatch.sty % load any patches
+\input hepatch.sty % load any patches
+
+\hc % define a default Hebrew font choose one !
+%\jm % define a default Hebrew font
+%\ds % define a default Hebrew font
+%\ta % define a default Hebrew font
+%\oj % define a default Hebrew font
+%\hp % define a default Hebrew font
+%\shlmold % define a default Hebrew font
+%\shlmscr % define a default Hebrew font
+%\shlmstk % define a default Hebrew font
+%\fr % define a default Hebrew font
+%\frbx % define a default Hebrew font
+%\frsl % define a default Hebrew font
+%\crml % define a default Hebrew font
+%\crmlsl % define a default Hebrew font
+
+\sethebrew % switch to Hebrew mode
+\makeatother
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/hecmd.sty b/language/arabic/arabtex/texinput/hecmd.sty
new file mode 100644
index 0000000000..14ecb374e2
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hecmd.sty
@@ -0,0 +1,165 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hecmd.sty
+% ArabTeX
+% special commands for Hebrew mode
+% using ideas by Rama Porrat, Bernd Raichle and others
+% 26.07.2007
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {hecmd.sty} {3.12 additional commands for Hebrew} {26.07.2007}
+
+\let \RLtext \arabtext \let \endRLtext \endarabtext
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcount \is@m \newcount \is@n \newcount \is@l
+
+\def \heb@catcodes {% make chars 128-154 and 224-250 into letters
+\is@m = 96 % oldcode
+\is@n = 128 % pccode
+\is@l = 224 % newcode
+\loop \global\lccode \is@n = \is@m \catcode \is@n = 11
+ \global\lccode \is@l = \is@m \catcode \is@l = 11
+\ifnum 122 > \is@m
+ \advance \is@m 1 \advance \is@n 1 \advance \is@l 1
+\repeat }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@hadgesh #1{% poor man's bold version
+\setbox0 \hbox {#1}%
+\kern-.025em\copy0\kern-\wd0
+\kern.05em\copy0\kern-\wd0
+\kern-.025em\raise.025em\copy0\kern-\wd0
+\raise-.025em\box0}
+
+\def \a@c@hadgesh #1{\putwordb@x {\a@hadgesh {\R{#1}}}\test@token }
+\def \hadgesh #1{\a@hadgesh {\R {#1}}}
+
+\def \a@c@makafgadol {\putwordb@x {\bf --}\test@token }
+
+\def \a@c@makafanak {\putwordb@x {\bf ---}\test@token }
+
+\def \a@c@geresh {\a@spacefalse \putwordb@x {\bf `}\test@token }
+\let \a@c@closegeresh \a@c@geresh
+\def \geresh {`} \let \closegeresh \geresh
+
+\def \a@c@opengeresh {\putwordb@x {\bf '}\a@spacefalse \test@token }
+\def \opengeresh {'}
+
+\def \a@c@closequote {\a@spacefalse \putwordb@x {\bf ``}\test@token }
+\def \closequote {``}
+
+\def \a@c@openquote {\putwordb@x {\bf ''}\a@spacefalse \test@token }
+\def \openquote {''}
+
+\def \a@c@undertext #1{\putwordb@x {$\underline {\R {#1}}$}\test@token }
+\let \undertext \underline
+
+\def \a@c@hebday {\putwordb@x {\number\day }\a@spacetrue
+\edef \themonth {\ifcase \month \or
+ ‰…€˜\or ”˜…€˜\or Ž˜•\or €”˜‰Œ\or Ž€‰\or ‰…‰\or
+ ‰…Œ‰\or €…‚…‘ˆ\or ‘”ˆŽ˜\or €…—ˆ…˜\or …Ž˜\or ƒ–Ž˜\fi }%
+\putwordb@x {\xpa \RL \xpa {\themonth }}\a@spacetrue
+\putwordb@x {\number\year }\test@token }
+
+\def \hebday {\RL{\hebday }} % this looks wrong, but works !
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \a@c@Hebrewtoday {% internal calendar routine
+\Hebrewsetreg
+\tracingmacros 1
+\edef \theHebrewDay {\HebrewDayName {\Hebrewday }\space
+\HebrewMonthName {\Hebrewmonth }{\Hebrewyear },\space
+\a@HebrewYearName {\Hebrewyear }}%
+\tracingmacros 0
+\putwordb@x {\xpa \R \xpa {\theHebrewDay }}\test@token }
+
+\def \a@HebrewYearName #1{% max 4 digits, fully expandable version
+\ifnum #1>9999 \errmessage{HebrewYearName: illegal argument #1}\else
+\ifnum #1>999 \xpa \a@HYName \number #1\else
+\ifnum #1>99 \xpa \a@HYName \xpa 0\number #1\else
+\ifnum #1>9 \xpa \a@HYName \xpa 0\xpa 0\number #1\else
+\xpa \a@HYName \xpa 0\xpa 0\xpa 0\number #1\fi \fi \fi \fi }
+
+\def \a@HYName #1#2#3#4{% max 4 digits to Hebrew number
+\ifnum #1= 5 % Change it in the next Hebrew Millennium..
+ \ifnum #2#3#4> 0 \else \DigitInHebrew {#1}'\fi
+\else \DigitInHebrew {#1}'\fi
+\a@ShortHYName {#2#3#4}%
+\ifnum #1< 1 \space )Œ”"‚(\fi
+\ifnum #2#3#4= 0 \space )Œ”"‚(\fi }
+
+\def \a@SHYNumber #1{% fully expandable version
+\ifnum #1>999 \errmessage{ShortHYName: illegal argument #1}\else
+\ifnum #1>99 \xpa \a@SHYName \number #1\else
+\ifnum #1>9 \xpa \a@SHYName \xpa 0\number #1\else
+\xpa \a@SHYName \xpa 0\xpa 0\number #1\fi \fi \fi }
+
+\def \a@SHYName #1#2#3{% max 3 digits, fully expandable
+\ifcase #1\or —\or ˜\or ™\or š\or
+ š—\or š˜\or š™\or šš\or šš—\fi
+\ifnum #2#3 = 16 ˆ†\else
+\ifnum #2#3 = 15 ˆ…\else
+ \ifnum #2 = 0 \else \TensInHebrew{#2}\fi
+ \ifnum #3 = 0 \else \DigitInHebrew{#3}\fi
+\fi\fi }
+
+\def \a@ShortHYName #1{% format Hebrew number < 1000
+\xpa \xpa \xpa \a@FormatNumber \a@EvalToCS {\a@SHYNumber {#1}}\@ }
+
+\def \a@EvalToCS #1{% fully expand the parameter to a \cs name string
+\xpa \string \csname #1\endcsname }
+
+\def \a@FormatNumber #1\@ {\xpa \a@Format #1\@ }
+
+\def \a@Format #1#2\@ {\a@Formati #2\@ }
+
+\def \a@Formati #1#2\@ {% first digit
+#1\ifx \relax #2\relax '\else \ReturnFi
+\a@Formatii #2\@ \fi }
+
+\def \a@Formatii #1#2\@ {% following digits
+\ifx \relax #2\relax ''#1\else #1\ReturnFi
+\a@Formatii #2\@ \fi }
+
+\def \ReturnFi #1\fi {\fi #1}% FALSE branch
+
+\def \ReturnElseFi #1\else #2\fi {\fi #1}% TRUE branch
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\iffalse
+% from heb_pc.mac
+
+%\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
+
+\everydisplay{\aftergroup\beginR }
+
+\def\piska#1{\item{#1}\hangindent=-\hangindent}
+
+\def\piskapiska#1{\itemitem{#1}\hangindent=-\hangindent}
+
+\def\leftquotation{\L{''}}
+\def\rightquotation{\L{``}}
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ø ! " $ % & . ( ) = ? ;
+^ 1 2ý 3ü 4 5 6 7{ 8[ 9] 0} á\ ,
+ Q@ W E R T Z U I O P š *
+ / ' — ˜ € † … ” +~
+ A S D F G H J K L ™ Ž ,
+ ™ ƒ ‚ ‹ ’ ‰ ‡ Œ Š ” „ #
+ > Y X C V B N Mæ “ : _
+ <| ˆ ‘ „ Ž – š • -
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
diff --git a/language/arabic/arabtex/texinput/hefonts.sty b/language/arabic/arabtex/texinput/hefonts.sty
new file mode 100644
index 0000000000..b76463f2e2
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hefonts.sty
@@ -0,0 +1,56 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hefonts.sty
+% ArabTeX
+% load Hebrew fonts in LaTeX mode
+% 02.07.1997
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally and Bernd Raichle
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% load this file only, if \pheb not defined
+% select the Hebrew font by \pheb (\protected )
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\expandafter \ifx \csname pheb\endcsname \relax \else
+ \expandafter \endinput
+\fi
+
+\a@ident {hefonts.sty} {3.06 standard Hebrew fonts} {02.07.1997}
+
+\chardef \fntatcode = \catcode`\@ \catcode`\@ = 11
+\chardef \fntlscode = \catcode`\< \catcode`\< = 12
+
+\ifx \LaTeX \undefined \else
+
+% If we are using the NFSS, Version 2, \DeclareFontShape
+% is defined.
+%
+% (The \expandafter\ifx\csname...\endcsname\relax is necessary,
+% because the NFSS2 styleoptions use LaTeX's internal \@ifundefined
+% command.)
+%
+\xpa \ifx \csname DeclareFontShape\endcsname\relax
+
+% Now it's possible that NFSS, Version 1, is used.
+% If \selectfont is defined, NFSS is active, otherwise
+% we assume LaTeX's `lfonts.tex'.
+%
+ \xpa \ifx \csname selectfont\endcsname\relax
+
+ % OLD FONT SELECTION
+ \UsePackage {hefonts0}
+ \else % NEW FONT SELECTION -- Version 1
+ \UsePackage {hefonts1}
+ \fi
+\else
+ % NEW FONT SELECTION -- Version 2
+ \UsePackage {hefonts2}
+\fi\fi
+
+\catcode`\@ = \fntatcode \catcode`\< = \fntlscode
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/hefonts0.sty b/language/arabic/arabtex/texinput/hefonts0.sty
new file mode 100644
index 0000000000..a446ca6f2a
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hefonts0.sty
@@ -0,0 +1,42 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hefonts0.sty
+% ArabTeX
+% load Hebrew fonts for old LaTeX
+% 03.04.1997
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally and Bernd Raichle
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {hefonts0.sty} {3.05 define Hebrew fonts for old LaTeX} {03.04.1997}
+
+% OLD FONT SELECTION
+\message {using lfonts.tex}
+
+% load all necessary fonts
+
+\newfont {\tenheb }{hclassic}
+\newfont {\elvnheb}{hclassic scaled 1095}
+\newfont {\twlvheb}{hclassic \@magscale1}
+\newfont {\frtnheb}{hclassic \@magscale2}
+\newfont {\svtnheb}{hclassic \@magscale3}
+\newfont {\twtyheb}{hclassic \@magscale4}
+\newfont {\twfvheb}{hclassic \@magscale5}
+
+% add the \pheb command to the size changing hooks
+
+\@addfontinfo \@vpt {\def\pheb {\tenheb}}
+\@addfontinfo \@viipt {\def\pheb {\tenheb}}
+\@addfontinfo \@viiipt {\def\pheb {\tenheb}}
+\@addfontinfo \@ixpt {\def\pheb {\tenheb}}
+\@addfontinfo \@xpt {\def\pheb {\tenheb}}
+\@addfontinfo \@xipt {\def\pheb {\elvnheb}}
+\@addfontinfo \@xiipt {\def\pheb {\twlvheb}}
+\@addfontinfo \@xivpt {\def\pheb {\frtnheb}}
+\@addfontinfo \@xviipt {\def\pheb {\svtnheb}}
+\@addfontinfo \@xxpt {\def\pheb {\twtyheb}}
+\@addfontinfo \@xxvpt {\def\pheb {\twfvheb}}
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/hefonts1.sty b/language/arabic/arabtex/texinput/hefonts1.sty
new file mode 100644
index 0000000000..5189228b73
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hefonts1.sty
@@ -0,0 +1,44 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hefonts1.sty
+% ArabTeX
+% load Hebrew fonts for NFSS1
+% 24.05.1996
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally and Bernd Raichle
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {hefonts1.sty} {3.04 define Hebrew fonts for NFSS1} {24.05.1996}
+
+% NEW FONT SELECTION -- Version 1
+\message {using NFSS1}
+
+% define \pheb to use the `heb' family, `m'edium series und
+% `n'ormal shape.
+%
+\def\pheb{\family{heb}\series{m}\shape{n}\selectfont}
+
+% setup the font definition table
+% (`1' at the beginning of a fontname: size not available, print
+% warning to inform the user)
+%
+\new@fontshape{heb}{m}{n}{%
+ <5>1hclassic%
+ <6>1hclassic%
+ <7>1hclassic%
+ <8>1hclassic%
+ <9>1hclassic%
+ <10>hclassic%
+ <11>hclassic at10.95pt%
+ <12>hclassic at12.0pt%
+ <14>hclassic at14.4pt%
+ <17>hclassic at15.77441pt%
+ <20>hclassic at17.28pt%
+ <25>hclassic at20.736pt}{}
+\extra@def{heb}{}{}
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
diff --git a/language/arabic/arabtex/texinput/hefonts2.sty b/language/arabic/arabtex/texinput/hefonts2.sty
new file mode 100644
index 0000000000..1fe0b856af
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hefonts2.sty
@@ -0,0 +1,72 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hefonts2.sty
+% ArabTeX
+% load Hebrew fonts for NFSS2
+% 27.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally and Bernd Raichle
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {hefonts2.sty} {3.11 define Hebrew fonts for NFSS2} {27.04.2003}
+
+% NEW FONT SELECTION -- Version 2
+%\a@message {using NFSS2}
+
+\def \fdef #1#2#3#4{% define NFSS2 font command
+\pdef #1{\def \pheb {\fontencoding {U}\fontfamily {#2}%
+\fontseries {#3}\fontshape {#4}\selectfont }%
+\ifx \a@normalfont \a@default \gdef \a@normalfont {#1}\fi
+%\setarabfont \pheb \set@arabfont }%
+\setarabfont \pheb }%
+\all@wcmd #1}
+
+\def \hdef #1{\fdef #1{heb}}% define Hebrew font
+
+% commands for selecting the default Hebrew fonts:
+
+\hdef \sethebrm {m}{n}
+\hdef \sethebbf {bx}{n}
+
+%\let \hc \sethebrm \all@wcmd \hc
+%\let \hp \sethebbf \all@wcmd \hp
+
+\hdef \hc {m}{n}
+\hdef \hp {bx}{n}
+
+% commands for selecting the standard Hebrew fonts from CTAN:
+
+\hdef \Jm {m}{Jm}
+\hdef \jm {m}{jm}
+\hdef \ds {m}{ds}
+\hdef \oj {m}{oj}
+\hdef \ta {m}{ta}
+
+% commands for selecting the Shalom family of Hebrew fonts from CTAN:
+
+\hdef \shlmold {m}{so}
+\hdef \shlmscr {m}{sr}
+\hdef \shlmstk {m}{sk}
+
+% commands for selecting the Frank Ruehl family of Hebrew fonts from CTAN:
+
+\hdef \fr {m}{fr}
+\hdef \frbx {bx}{fr}
+\hdef \frsl {sl}{fr}
+
+% commands for selecting the Carmel family of Hebrew fonts from CTAN:
+
+\hdef \crml {m}{crml}
+\hdef \crmlsl {sl}{crml}
+
+% All other definitions are done in file `Uheb.fd', which is
+% loaded on demand.
+
+%\def \a@defaultfont {\hc }
+\hc
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
diff --git a/language/arabic/arabtex/texinput/heparse.sty b/language/arabic/arabtex/texinput/heparse.sty
new file mode 100644
index 0000000000..650a617cb1
--- /dev/null
+++ b/language/arabic/arabtex/texinput/heparse.sty
@@ -0,0 +1,291 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% heparse.sty
+% ArabTeX
+% Modifications for Hebrew mode
+% 27.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {heparse.sty} {3.11 Hebrew parser routines} {27.04.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Hebrew
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \def@hebvoc {% define vowel parsing routines for Hebrew
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%% short vowels
+
+\def \sv@a {\sv@patach } % a: patach
+\def \sv@e {\sv@segol } % e: segol
+\def \sv@i {\sv@chireq } % i: chireq breve
+\def \sv@o {\sv@qamesqatuf } % o: qames-chatuph
+\def \sv@u {\sv@qibbus } % u: qibbus
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% long vowels
+
+\def \sv@A {\sv@qames } % A: qames
+\def \sv@E {\sv@serelongum } % E: sere yod
+\def \sv@I {\sv@chireqlongum } % I: chireq yod
+\def \sv@O {\sv@cholemlongum } % O: cholem waw
+\def \sv@U {\sv@shureq } % U: shureq
+\def \sv@Y {\sv@qameslongum } % _A: qames aleph
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% long vowels, defective
+
+\sv@def \a@a {\sv@qames } % _a: qames aleph ?
+\sv@def \a@e {\sv@shewa } % .i: shewa
+\sv@def \a@i {\sv@chireq } % _i: chireq yod ?
+\sv@def \a@o {\sv@cholem } % _o: cholem breve
+\sv@def \a@u {\sv@shureq } % _u: shureq ?
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% special vowels
+
+\sv@def \a@A {\sv@chatef@patach } % .a:
+\sv@def \a@E {\sv@sere } % _e: sere breve
+\sv@def \a@I {\sv@chatef@segol } % .e:
+\sv@def \a@O {\sv@chatef@qames } % .o:
+\sv@def \a@U {\put@syl \syl@con } % .u: no vowel mark
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% extra marks
+
+\sv@def \a@Za {\sv@sindot } % sin dot
+\sv@def \a@Ze {\sv@shindot } % shin dot
+\sv@def \a@Zi {\sv@rdot } % center dot
+\sv@def \a@Zo {\sv@raphe } % raphe
+\sv@def \a@Zu {\sv@dagesh } % dagesh
+
+\sv@def \a@ZA {\sv@ay } % Yiddish ay
+\sv@def \a@ZE {\sv@ey } % Yiddish ey
+\sv@def \a@ZI {\syl@voctest } % free
+\sv@def \a@ZO {\sv@oy } % Yiddish oy
+\sv@def \a@ZU {\syl@voctest } % free
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% hamza handling
+
+\def \syl@hamza {% non-initial hamza, context #1'
+\put@con a\syl@voctest }
+
+\let \syl@hamzabeg \syl@hamza
+
+\def \syl@test@voc {% vowel or shewa ?
+\h@test@voc }
+
+\def \check@high ##1{\relax }
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Hebrew
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% static definitions for Hebrew
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newif \ifp@tach \newif \ifch@lem
+
+\def \h@test@voc #1{% vowel or shewa ?
+\ifch@lem \ch@lemfalse \add@rdot \fi % rdot
+\if\is@vowel #1\def \next {\syl@voc #1}\else % test for vowel
+\ifx #1|\add@madda \def \next {\syl@shewa }% % meteg
+\else \def \next {\syl@shewa #1}% non-vowel follows
+\fi\fi \next }
+
+\def \syl@shewa #1{% put shewa if appropriate
+\ifp@tach \add@patachf \p@tachfalse \else
+\xpa\ifx \the\last@con B\else
+\ifx #1<\add@@shewa \else
+\ifcat \nxp #1\nxp <\add@@shewa \else
+ \add@sukun % shewa
+\fi\fi\fi\fi \put@syl \syl@con #1}
+
+\def \add@@shewa {% put shewa on final kaf
+\xpa\case \the\last@con \of
+{ k R {\add@shewa }}
+\endcase }
+
+\def \syl@meteg #1#2{% test for meteg and patach furtivum
+\ifx #2|\add@madda \def \next {#1}\else
+\ifx #2\a@A\p@tachtrue \def \next {#1}\else
+ \def \next {#1#2}%
+\fi\fi \put@syl \next }
+
+\gdef \test@cont #1{% vowel contact? put dummy if not cholem male
+\ifx #1O\def \next {\syl@con #1}\else
+\ifx #1U\def \next {\syl@con #1}\else
+\if\is@vowel #1\def \next {\syl@con N#1}\else
+\def \next {\syl@con #1}\fi\fi\fi \next }
+
+\def \test@patf #1{% vowel contact? put dummy, test for guttural: 05.10.01
+\ifx #1O\def \next {\test@p@tf #1}\else
+\ifx #1U\def \next {\test@p@tf #1}\else
+\if\is@vowel #1\def \next {\syl@con N#1}\else
+\def \next {\test@p@tf #1}\fi\fi\fi \next }
+
+\def \test@p@tf #1#2#3{% guttural at end: prepare patach furtivum
+\ifx #1h\ifx #2\a@Zu \p@tachtrue
+ \fi\fi
+\ifx #2a\ifx #3<\if\is@in@list #1PX>\p@tachtrue
+ \fi\fi\fi
+\syl@con #1#2#3}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sv@patach {% a: put patach, test meteg
+\ifp@tach \add@patachf \p@tachfalse \else \add@fatha
+\fi \syl@meteg \test@cont }
+
+\def \sv@segol {% e: put segol, test meteg
+\add@zwarakay \syl@meteg \test@cont }
+
+\def \sv@qamesqatuf {% o: put qames qatuf, test meteg
+\add@ammad \syl@meteg \test@cont }
+
+\def \sv@qibbus {% u: put qibbus, test meteg
+\add@damma \syl@meteg \test@cont }
+
+%%%%%%%%%%%%%%%%
+
+\def \sv@qames {% long a: put qames, test meteg
+\add@fathaspec \syl@meteg \test@cont }
+
+\def \sv@qamesaleph {% long a: put qames, test meteg
+\add@fathaspec \syl@meteg \sv@qames@aleph }
+
+\def \sv@qames@aleph {% long a: put aleph
+\put@con a\put@syl \test@cont }
+
+%%%%%%%%%%%%%%%%
+
+\def \sv@sere {% long e: put sere breve, test meteg
+\add@kasraspec \syl@meteg \sv@s@re }
+
+\def \sv@s@re #1{% test for ey = E
+\ifx #1y\def \next {\sv@sere@longum }%
+\else \def \next {\test@patf #1}%
+\fi \next }
+
+\def \sv@serelongum {% long e: put sere, test meteg
+\add@kasraspec \syl@meteg \sv@sere@longum }
+
+\def \sv@sere@longum {% long e: put yod ?
+\test@yod }
+
+\def \test@yod #1{% vowel or consonant
+\if\is@vowel #1\def \next {\syl@con y#1}\else
+\put@con y\put@syl \def \next {\test@patf #1}%
+\fi \next }
+
+%%%%%%%%%%%%%%%%
+
+\def \sv@chireq {% i: put chireq, test meteg
+\add@kasra \syl@meteg \sv@ch@req }
+
+\def \sv@ch@req #1{% test for iy = I
+\ifx #1y\def \next {\sv@chireq@longum }%
+\else \def \next {\test@cont #1}%
+\fi \next }
+
+\def \sv@chireqlongum {% long i: put chireq, test meteg
+\add@kasra \syl@meteg \sv@chireq@longum }
+
+\def \sv@chireq@longum {% long i: put yod ?
+\test@yod }
+
+%%%%%%%%%%%%%%%%
+
+\def \sv@shureq {% long u: test meteg
+\syl@meteg \sv@sh@req }
+
+\def \sv@sh@req {% long u: put waw with shureq
+\put@con w\add@shadda \put@syl \test@patf }
+
+%%%%%%%%%%%%%%%%
+
+\def \sv@cholem #1{% short o: test meteg
+\ifx #1|\add@madda \def \next {\sv@ch@lem }%
+\else \def \next {\sv@ch@lem #1}%
+\fi \next }
+
+\def \sv@ch@lem #1{% short o: put cholem breve
+\xpa\ifx \the\last@con \a@s % omit cholem on sin
+\else \case #1\of
+{ a A Q w{\ch@lemtrue } % shift cholem
+ \default {\add@cholem } % deposit cholem
+} \endcase
+\fi \put@syl \sv@ch@lemwaw #1}
+
+\def \sv@ch@lemwaw #1{% test for ow = O
+\ifx #1w\def \next {\sv@cholem@longum }%
+\else \def \next {\test@cont #1}%
+\fi \next }
+
+\def \sv@cholemlongum {% long o: test meteg
+\syl@meteg \sv@cholem@longum }
+
+\def \sv@cholem@longum {% long o: put waw with cholem
+\put@con w\add@rdot \ch@lemfalse \put@syl \test@patf }
+
+%%%%%%%%%%%%%%%%
+
+\def \sv@chatef@patach {% put chatef patach, test meteg
+\add@fathatan \syl@meteg \test@cont }
+
+\def \sv@chatef@segol {% put chatef segol, test meteg
+\add@kasratan \syl@meteg \test@cont }
+
+\def \sv@chatef@qames {% put chatef qames, test meteg
+\add@dammatan \syl@meteg \test@cont }
+
+%%%%%%%%%%%%%%%%
+
+\def \sv@shewa {% put shewa unconditionally
+\add@shewa \put@syl \syl@con }
+
+\def \sv@sindot {% sin dot
+\voc@suk \advance \last@mod 10 \syl@voctest }
+
+\def \sv@shindot {% shin dot
+\voc@suk \advance \last@mod 20 \syl@voctest }
+
+\def \sv@rdot {% center dot
+\voc@suk \advance \last@mod 30 \syl@voctest }
+
+\def \sv@raphe {% raphe
+\voc@suk \advance \last@mod 40 \syl@voctest }
+
+\def \sv@dagesh {% dagesh, ww -> U, shureq?
+\add@shadda
+\xpa\ifx \the\last@con w\put@syl \def \next {\test@patf }%
+%\else \def \next {\syl@test@voc }%
+%\else \def \next {\syl@voctest }%
+\else \voc@suk \def \next {\syl@voctest }%
+\fi \next }
+
+\def \sv@dagesh {% dagesh, ww -> U, shureq?
+\add@shadda \voc@suk \syl@voctest }
+
+%%%%%%%%%%%%%%%%
+
+\def \sv@ay {% Yiddish ay
+\put@syl \put@con \a@i \v@ctrue \add@fatha \put@syl \test@patf }
+
+\def \sv@ey {% Yiddish ey
+\put@syl \put@con \a@i \put@syl \test@patf }
+
+\def \sv@oy {% Yiddish oy
+\put@syl \put@con \a@o \put@syl \test@patf }
+
+%%%%%%%%%%%%%%%%
+
+\def \add@rdot {\advance \last@mod \c@hamza }
+
+\def \add@cholem {\ifv@c \last@voc \c@wasla \fi }
+
+\def \add@patachf {\ifv@c \last@voc 13 \fi }
+
+\def \add@shewa {% put shewa unconditionally
+\ifv@c \last@voc \c@sukun \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
diff --git a/language/arabic/arabtex/texinput/hepatch.sty b/language/arabic/arabtex/texinput/hepatch.sty
new file mode 100644
index 0000000000..703485f467
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hepatch.sty
@@ -0,0 +1,37 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hepatch.sty
+% ArabTeX, Hebrew mode
+% last minute corrections
+% see \hversion, \hdatum and \hlevel at the end of the file
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% this is just another *.sty file
+% you do not have to do any manual patching
+% just put this file onto the TEXINPUT path
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\catcode`\@ = 11
+
+\newtoks \hversion \newtoks \hdatum \hversion = {3.10}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% presently no patches
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\hdatum = {17.09.2001} \def \hlevel {-}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {hepatch.sty}
+ {\the\hversion \hlevel \space patches for Hebrew} {\the\hdatum}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\catcode`\@ = \patchatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
diff --git a/language/arabic/arabtex/texinput/hescan.sty b/language/arabic/arabtex/texinput/hescan.sty
new file mode 100644
index 0000000000..628c7e178f
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hescan.sty
@@ -0,0 +1,216 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% hescan.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hescan.sty
+% Scanner for ISO 8859-8 Code, loaded by hebtex.sty
+% experimental scanner for Hebrew files
+% to activate it, say "\setcode {hed}" or "\setcode {HED}" or
+% "\setcode {pccode}" or "\setcode {newcode}" or "\setcode {iso8859-8}"
+% for Hebrew Windows encoding CP1255 say "\setcode{cp1255}"
+% 07.03.2002
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \hedatcode \undefined \else \xpa \endinput \fi
+
+\chardef \hedatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {hescan.sty}
+{3.10a scanner for HED and ISO 8859-8 encoding} {07.03.2002}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Hebrew
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \sethed@codes {\seta@codes % activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@a {b} \def \sc@b {g} \def \sc@c {d} \def \sc@d {h}
+%\def \sc@a {v} \def \sc@b {g} \def \sc@c {d} \def \sc@d {h}
+\def \sc@e {w} \def \sc@f {z} \def \sc@g {X} \def \sc@h {C}
+\def \sc@i {y} \def \sc@j {k} \def \sc@k {k-} \def \sc@l {l}
+\def \sc@m {m} \def \sc@n {m-} \def \sc@o {n} \def \sc@p {n-}
+%\def \sc@q {s} \def \sc@r {P} \def \sc@s {f} \def \sc@t {f-}
+\def \sc@q {s} \def \sc@r {P} \def \sc@s {p} \def \sc@t {p-}
+\def \sc@u {S} \def \sc@v {S-} \def \sc@w {q} \def \sc@x {r}
+\def \sc@y {\n@xp \a@S } \def \sc@z {t}
+%
+\xpa \def \csname sc@`\endcsname {Q}
+\a@digits = {0123456789} \a@paren = {()[]} \a@first = {}
+\globaldefs=0
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Hebrew: oldcode and pccode
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \hed@scan #1>{% modified scanner call: token sequence -> \a@tokens
+\iftest@scan \tracingmacros = 1
+\ifshow \else \lowercase {\a@verb #1>}\fi\fi
+\global\def \a@rest {}\global\a@tokens = {}\@ssimfalse
+\novocalize \lowercase {\sc@beg #1\@ \@@ }% transform
+\iftest@scan \tracingmacros = 0 \xpa \a@verb \xpa (\the\a@tokens )>\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \hed@word #1#2{% transform input into internal notation
+ \def \next {\hed@word #2}%
+\ifx #1\@ \let \next \relax \else
+\ifcat \nxp #1\relax \def \next {\hed@cs #1#2}\else % control sequence
+ \ifx #1-\def \sc@char {B}\else
+ \ifx #1`\def \sc@char {Q}\else
+ \ifcat \noexpand #1a\edef \sc@char
+ {\csname sc@#1\endcsname }%
+ \else \def \sc@char {#1}%
+ \fi\fi\fi \sc@put
+\fi\fi \next }
+
+\def \h@d@cs #1#2{% test word end
+\def \sc@char {#1}\sc@put
+\ifx #2\@ \def \next {\sc@endscan #2}\else
+\ifcat -\nxp #2 \def \next {\hed@word #2}\else
+\def \next {\sc@back #2}\fi \fi \next }
+
+\def \hed@cs #1#2{% control sequence within a word; push back?
+\xpa \ifx #1\closegeresh \def \next {\h@d@cs {\nxp \lq }#2}\else
+\xpa \ifx #1\closequote \def \next {\h@d@cs {`}#2}\else
+ \def \next {\sc@back #1#2}%
+\fi\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \hed@select {% select the new scanner
+\heb@catcodes % inside hebtex.sty; to make sure
+\let \sc@beg \hed@word \let \sc@word \hed@word
+\let \sc@back \sc@@back \let \sc@endscan \sc@@endscan
+\sethed@codes \global\let \a@scan \hed@scan
+\a@message {input encoding set to ISO 8859-8 and other Hebrew conventions}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \hwin@catcodes {% assignments for CP 1255
+\countdef \is@m=2 \is@m = 192 \is@n = 64
+\loop \catcode \is@m = 11 \lccode \is@m = \is@n
+\ifnum 255 > \is@m \advance \is@m 1 \advance \is@n 1 \repeat
+\is@m=0 \is@n=0 \catcode `\^^a0 12 }
+
+{\hwin@catcodes
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Hebrew
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \sethwin@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@^^c0 {"\n@xp\a@e} \def \sc@^^c1 {"\n@xp\a@I}
+\def \sc@^^c2 {"\n@xp\a@A} \def \sc@^^c3 {"\n@xp\a@O}
+\def \sc@^^c4 {"i} \def \sc@^^c5 {"\n@xp\a@E}
+\def \sc@^^c6 {"e} \def \sc@^^c7 {"a}
+\def \sc@^^c8 {"A} \def \sc@^^c9 {"\n@xp\a@o}
+\def \sc@^^ca {L} \def \sc@^^cb {"u}
+\def \sc@^^cc {"\n@xp\a@Zu} \def \sc@^^cd {|}
+\def \sc@^^ce {B} \def \sc@^^cf {"\n@xp\a@Zo}
+
+\def \sc@^^d0 {K} \def \sc@^^d1 {"\n@xp\a@Ze}
+\def \sc@^^d2 {"\n@xp\a@Za} \def \sc@^^d3 {:}
+\def \sc@^^d4 {w-w} \def \sc@^^d5 {wy}
+\def \sc@^^d6 {y-y} \def \sc@^^d7 {@}
+\def \sc@^^d8 {@} \def \sc@^^d9 {@} \def \sc@^^da {@} \def \sc@^^db {@}
+\def \sc@^^dc {@} \def \sc@^^dd {@} \def \sc@^^de {@} \def \sc@^^df {@}
+
+\def \sc@M {M} %\def \sc@N {N}
+\def \sc@^^e0 {Q} \def \sc@^^e1 {b} \def \sc@^^e2 {g} \def \sc@^^e3 {d}
+\def \sc@^^e4 {h} \def \sc@^^e5 {w} \def \sc@^^e6 {z} \def \sc@^^e7 {X}
+\def \sc@^^e8 {C} \def \sc@^^e9 {y} \def \sc@^^ea {k} \def \sc@^^eb {k}
+\def \sc@^^ec {l} \def \sc@^^ed {m} \def \sc@^^ee {m} \def \sc@^^ef {n}
+
+\def \sc@^^f0 {n} \def \sc@^^f1 {s} \def \sc@^^f2 {P} \def \sc@^^f3 {p}
+\def \sc@^^f4 {p} \def \sc@^^f5 {S} \def \sc@^^f6 {S} \def \sc@^^f7 {q}
+\def \sc@^^f8 {r} \def\sc@^^f9{\n@xp\a@S} \def\sc@^^fa {t} \def \sc@^^fb {@}
+\def \sc@^^fc {@} \def \sc@^^fd {@} \def \sc@^^fe {@} \def \sc@^^ff {@}
+\a@digits = {0123456789}
+\a@paren = {()[]}
+\a@first = {"`^^e6}
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Hebrew, CP1255, ISO8859-8, newcode
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \hwin@scan #1>{% standard scanner call: token sequence -> \a@tokens
+\iftest@scan \tracingmacros = 1
+\ifshow \else \lowercase{\a@verb #1>}\fi\fi
+\global\def \a@rest {}\global\a@tokens = {}\sc@beg #1\@ \@@
+\iftest@scan \tracingmacros = 0 %
+\xpa \a@verb \xpa (\the\a@tokens )>\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \hwin@beg {% start CP 1255 scanner
+\h@mzafalse \iz@fetfalse \@ssimfalse \novocalize % because of explicit quoting
+\hwin@word }
+
+{\catcode `\^^M=13 \endlinechar = -1
+\gdef \hwin@word #1{% transform input into internal notation
+\ifx #1\@ \def \next {\sc@endscan }\else % finished
+\if \nxp ^^M\nxp #1\def \next {\hwin@par #1}% active character
+\else \def \next {\hwin@w@rd #1}%
+\fi\fi \next }%
+} % catcode 13
+
+\gdef \hwin@w@rd #1#2{% special cases
+\case #1\of
+{ #2{\hwin@word #1-#2}
+ -{\hwin@minus #2}
+ ^^a0{\sc@back #2}
+ ^^ad{\hwin@minus #2}
+\default {\hwin@@word #1#2}
+}\endcase }
+
+\gdef \hwin@@word #1#2{% default branch
+\ifcat a\nxp #1\edef \sc@char {\csname sc@#1\endcsname }%
+\else \def \sc@char {\nxp #1}%
+\fi \sc@put
+\def \next {\hwin@word #2}%
+\next }
+
+\gdef \hwin@@word #1{% default branch
+\ifcat a\nxp #1\edef \sc@char {\csname sc@#1\endcsname }%
+\else \def \sc@char {\nxp #1}%
+\fi \sc@put \hwin@word }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \hwin@minus {% hyphen between words
+\def \sc@char {-}\sc@put \hwin@beg }
+
+\gdef \hwin@par #1\@ \@@ {% new line, push back the rest
+\sc@back \\ #1\@ \@@ }
+
+\gdef \hwin@endscan \@@ {\global\let \a@scan \hwin@scan }
+} % \hwin@catcodes
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \set@hwin {% select the CP 1255 scanner
+\let \sc@beg \hwin@beg \let \sc@word \hwin@word
+\let \sc@back \sc@@back \let \sc@endscan \hwin@endscan
+\global\let \a@scan \hwin@scan \sethwin@codes
+\hwin@catcodes
+\a@message {input encoding set to Windows CP 1255 conventions}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the Hebrew encodings
+hed\hed@select newcode\hed@select pccode\hed@select
+iso8859-8\hed@select hwin\set@hwin cp1255\set@hwin }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {scanner for ISO 8859-8, CP1255, and other Hebrew codes installed.}
+
+\catcode `\@ = \hedatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/hetrans.sty b/language/arabic/arabtex/texinput/hetrans.sty
new file mode 100644
index 0000000000..93168b793e
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hetrans.sty
@@ -0,0 +1,87 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hetrans.sty
+% ArabTeX
+% Modifications for Hebrew mode
+% needs atrans.sty version 3.09 or later
+% 17.07.1999
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \transatcode \undefined \UsePackage {atrans}
+\fi
+
+\catcode`\@ = 11 % presupposes atrans.sty loaded
+
+\a@ident {hetrans.sty} {3.09 Hebrew transcription module} {17.07.1999}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\~=10
+\gdef \tr@heb {% my transliteration for Hebrew
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@zdmg % start with default and modify
+\gdef \tr@@e ##1{% test for ey -> `e
+ \ifx ##1y\def \next {\`e\tr@aword }\else
+ \def \next {\setc@p e\tr@aword ##1}\fi \next}
+\gdef \tr@B {-} \gdef \tr@C {\d{t}} \gdef \tr@D {d}
+\gdef \tr@R {g} \gdef \tr@U {\=u\-} \gdef \tr@V {t}
+\gdef \tr@X {\d{h}}
+\tr@def \a@b {b} \tr@def \a@e {\rsh@ft{07}{$^i$}\-}
+\tr@def \a@f {p} \tr@def \a@j {\rsh@ft{07}{$^i$}\-}
+\tr@def \a@k {k} \tr@def \a@o {\=o\-}
+\tr@def \a@A {\rsh@ft{07}{$^a$}\-} \tr@def \a@E {\=e\-}
+\tr@def \a@H {h} \tr@def \a@I {\rsh@ft{07}{$^e$}\-}
+\tr@def \a@O {\rsh@ft{07}{$^o$}\-} \tr@def \a@U {}
+\gdef \tr@aword {\@vocalfalse \tr@@aword }}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \tr@zaw {% ZAW transliteration for Hebrew
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@heb % start with default and modify
+\gdef \tr@@e ##1{% test for ey -> `\ae
+ \ifx ##1y\def \next {\`{\ae}\tr@aword }\else
+ \def \next {\ae\tr@aword ##1}\fi \next}
+\gdef \tr@@E ##1{% test for Ee -> ey
+ \ifx ##1e\def \next {\setc@p e\tr@aword y}\else
+ \def \next {\^e\tr@aword ##1}\fi \next}
+\gdef \tr@o {\aa } \gdef \tr@I {\^{\i}\-}
+\gdef \tr@O {\^o\-} \gdef \tr@U {\^u\-}
+\tr@def \a@e {\rsh@ft{07}{$^e$}\-} \tr@def \a@i {i\-}
+\tr@def \a@j {\rsh@ft{07}{$^e$}\-} \tr@def \a@o {\=o\-}
+\tr@def \a@E {e\-}
+\tr@def \a@I {\rsh@ft{07}{$^{\hbox{\scriptsize \ae}}$}\-}
+\tr@def \a@O {\rsh@ft{07}{$^{\mathaccent 23a}$}\-}
+\ifx \tr@code \tr@oldcode \else \a@message {ZAW~transliteration}\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \tr@gesen {% transliteration for Hebrew after Gesenius
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@heb % start with default and modify
+\gdef \tr@@e ##1{% test for ey -> `e
+ \ifx ##1y\def \next {\`e\tr@aword }\else
+ \def \next {\u{e}\tr@aword ##1}\fi \next}
+\gdef \tr@f {ph} \gdef \tr@C {th}
+\gdef \tr@H {h} \gdef \tr@R {kh}
+\tr@def \a@e {\rsh@ft{07}{$^e$}\-}
+\tr@def \a@j {\rsh@ft{07}{$^e$}\-}
+\ifx \tr@code \tr@oldcode \else \a@message {Gesenius'~transliteration}\fi }
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\xpa \def \xpa \tr@table \xpa {\tr@table % add the Hebrew encodings
+gesenius\tr@gesen zaw\tr@zaw heb\tr@stdheb }
+
+\def \tr@stdheb {\tr@heb
+\ifx \tr@code \tr@oldcode \else
+\a@message {ArabTeX default transliteration}\fi }
+
+\settrans {heb}% default
+
+\catcode`\@ = \transatcode
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+
+
diff --git a/language/arabic/arabtex/texinput/hewrite.sty b/language/arabic/arabtex/texinput/hewrite.sty
new file mode 100644
index 0000000000..48b39b642b
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hewrite.sty
@@ -0,0 +1,589 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hewrite.sty
+% ArabTeX
+% Modifications for Hebrew mode
+% 21.05.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {hewrite.sty} {3.11 for all supported Hebrew fonts} {21.05.2003}
+
+\UsePackage {hebsymb} % Hebrew font character definitions
+\UsePackage {hebchrs} % Hebrew letter token definitions
+
+\chardef \sind@t 1 \chardef \shind@t 2 \chardef \rd@t 3
+\chardef \r@phe 4 \chardef \illch@r 33
+
+\newcount \heb@dsp \newcount \heb@cd
+\newcount \heb@voc \newcount \h@modii \newcount \h@modi
+
+\newif \if@dagesh \newif \if@final \newif \if@meteg
+%\newif \ifhv@wel % is obsolete, remove!
+\newif \ifsp@c
+
+\newdimen \h@ht \newdimen \h@p
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \heb@write #1>{% Hebrew output routine
+\iftest@write \tracingmacros = 1
+\iftest@parse \else \a@verb (#1)>\fi\fi
+\a@write@hook
+\ifa@@write \heb@testfont \heb@beg #1>0+0*>\fi
+\iftest@write \tracingmacros = 0
+\fi }
+
+\def \heb@testfont {% diagnose font, look for vowels and ayin
+\edef \next {\the\font }%
+\ifx \next \h@font \else
+\iftest@font \a@message {Hebrew font \next selected.}\fi
+\global\let \h@font \next \h@testfont \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \isch@r #1{00% code position in font not empty?
+\setbox0 \hbox {\tracinglostchars 0 \char #1}%
+\ifdim \wd0 = \z@ \xpa \setiffalse \fi }
+
+\def \h@testfont {% diagnose font, look for vowels and ayin
+\if\isch@r {"80}\global\heb@dsp "20\else
+\if\isch@r {"E0}\global\heb@dsp "80\else
+\if\isch@r {"60}\global\heb@dsp 0\else
+ \global\heb@dsp 0\errmessage {no usable Hebrew font found}%
+\fi\fi\fi
+\gdef \v@adj {0}\global\h@ht \ht0 \global\h@p .1\h@ht \relax
+\xdef \a@slant {\xpa\getfactor \the\fontdimen1\font }%
+\heb@cd \heb@dsp \advance \heb@cd 114 \xdef \hc@Pv {\the\heb@cd }%
+\if\isch@r {"10}\set@shalom\else
+\if\isch@r {1}\set@hclassic\else
+ \set@hebstd
+\fi\fi }
+
+\def \set@hclassic {% and dclassic, hcaption, dcaption
+\global\let \h@kern \relax \global\sp@cfalse
+\gdef \v@adj {0}\gdef \hc@Pv {123}%
+\if\isch@r {"30}\global\sp@ctrue
+\gdef \v@adj {-.2}\gdef \hc@Pv {114}%
+\fi \set@hcls }
+
+\def \set@shalom {% shlm_old, shlm_stk, shlm_scr
+\gdef \h@kern {\kern.05em }\global\sp@cfalse
+\set@shlm }
+
+\def \set@hebstd {% jerusalem, oldjaffa, telaviv, deadsea,
+% fr, frbx, frsl, crml, crmlsl
+\global\let \h@kern \relax \global\sp@ctrue
+\set@hstd }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \heb@beg #1#2*#3{% start output
+% c m * c
+\h@test@chr #1\heb@end #1#2*#3}
+
+\def \heb@end #1#2*#3{% final character
+% c m * c
+\ifx #1>\let \next \relax
+\else \def \next {\heb@mid #3}%
+ \ifx #1-\else
+ \ifcat \nxp #1-\h@put@spec #1#2*#3<%
+ \else \h@put@end #1#2*#3<%
+ \fi\fi
+ \h@test@chr #3%
+\fi \next }
+
+\def \heb@mid #1#2*#3{% non-final character
+% c m * c
+\ifx #1>\let \next \relax
+\else \def \next {\heb@mid #3}%
+ \ifcat \nxp #1-\h@put@spec #1#2*#3<%
+ \else \h@put@mid #1#2*#3<%
+ \fi
+ \h@test@chr #3%
+\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \h@put@end {% final position
+\if@final \advance \act@cd -1 \fi \h@put@mid }
+
+\gdef \h@put@mid #1#2+#3*#4<{% deposit character
+% c m1 + m2 * c <
+% \def \next {\heb@mid #4}%
+\ifnum \act@cd = \hc@@ \relax \h@put@ill \else % illegal character
+\case #1\of
+{ B{\put@maqqef \def \next {\heb@end #4}}
+ K{\put@box {$|$}}
+ M{\put@box {$\Box$}}
+ WN{\put@phantom }
+ y{\h@ylig #4<}
+ w{\h@wlig #4<}
+\default {\h@putchar }
+}\endcase
+\fi
+\heb@accent #2+#3*\h@kern
+\ifnum \act@cd = \hc@l \relax \smash {\unhbox \ab@x }%
+\else \unhbox \ab@x
+\fi }
+
+\def \h@wlig #1<{% waw ligatures
+\ifx #1w%
+\fi
+\h@putchar }
+
+\def \h@ylig #1<{% yod ligatures
+\ifx #1w%
+\fi
+\h@putchar }
+
+\def \h@put@ill {\put@box {$\bullet$}}
+
+\def \put@phantom {% small space
+\heb@cd \hc@y \advance \heb@cd \heb@dsp
+\put@box {\hphantom{\char \the\heb@cd }}}
+
+{\catcode`\^ 12 \catcode `\_ 12 \catcode `\& 12
+\catcode `\A 12 \catcode `\B 12 \catcode `\C 12
+\catcode `\D 12 \catcode `\E 12 \catcode `\F 12
+\catcode `\G 12 \catcode `\H 12 \catcode `\I 12
+\catcode `\J 12 \catcode `\K 12 \catcode `\L 12
+\catcode `\M 12 \catcode `\N 12 \catcode `\O 12
+\catcode `\P 12
+%
+\gdef \h@put@spec #1#2*#3<{% special character
+% c m * c <
+\case #1\of
+{ -|{}
+% !,.{#1}
+ :{#1\,}
+ \lq {\rm \bf `}
+ `{\rm \bf ``}
+% A{{\tt "}\def \next {\heb@end #3}} % "
+ A{{\tt "}} % "
+ B{{\rm \bf ,}} % ,
+ C{{\tt -}} % -
+ D{{\tt \char`\|}} % |
+% E{{\tt \char'015}\def \next {\heb@end #3}} % '
+ E{{\tt \char'015}} % '
+ F{{\tt \char`\\}} % \
+ G{{\tt \char`\}}} % {
+ H{{\tt \char`\{}} % }
+ I{{\bf $\cdots$}} % ...
+ J{{\bf $\div$}} % -:-
+ K{{\tt \char`\>}} % <
+ L{{\tt \char`\<}} % >
+ M{{\rm \bf --}} % --
+ N{{\rm \bf ---}} % ---
+ O{{\rm \bf `}} % `
+% P{{\rm \bf '}\def \next {\heb@end #3}} % '
+ P{{\rm \bf '}} % '
+\default {{\ifsp@c \else \rm \bf \fi
+ \ifx #1][\else \ifx #1[]\else
+ #1\fi\fi}}
+}\endcase
+\ifx #1A\else \ifx #1E\else \ifx #1'\else
+\def \next {\heb@end #3}\fi\fi\fi }
+}% \catcodes 12
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \h@test@chr #1{% get character attributes
+\@dageshfalse \@finalfalse \act@mod 0 \act@cd \hc@@
+\def \hc@sk {#1}%
+\csname tc@\string #1\endcsname }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \heb@accent #1+#2*{% put modifier onto contents of "\ab@x"
+% m1 + m2 *
+\red@mod = 0#1 \relax \advance \red@mod 100 \relax
+\xpa \heb@split \the\red@mod *\h@putaccent #2*}
+
+\def \h@putmod #1{% deposit modifier
+\ifcase #1\relax
+\or \h@sindot \or \h@shindot \or \h@rdot \or \h@raphe \fi }
+
+\def \heb@split 1#1#2*{% separate modifier 1
+% 1 m11 m12 *
+\h@putmod #1\@metegfalse \red@mod = #2\relax
+\ifnum \red@mod > 3 \advance \red@mod -4 \@metegtrue \fi
+\ifnum \red@mod > 1 \advance \red@mod -2 \h@cholem \fi
+\ifnum \red@mod > 0 \advance \red@mod -1 \@dageshtrue \fi }
+
+\def \h@putaccent #1*{% deposit vowels
+\h@putmod \act@mod
+\ifcase 0#1\relax
+\put@dummy \or \put@shwa \or \put@patach \or \put@chireq \or
+\put@qibbus \or \put@chpatach \or \put@chsegol \or \put@chqames \or
+\put@segol \or \put@cholem \or \put@qames \or \put@sere \or
+\put@qameschat \or \put@patachf \fi
+\if@dagesh \put@dagesh \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \h@@putchar {% choose character glyph
+\ifnum \act@cd = \hc@v \relax \h@putlig \hc@w \hc@w \else
+\ifnum \act@cd = \hc@oy \relax \h@putlig \hc@y \hc@w \else
+\ifnum \act@cd = \hc@ey \relax \h@putlig \hc@y \hc@y \else
+ \h@put@char \act@cd
+\fi\fi\fi }%
+
+\def \h@putlig #1#2{% Hebrew ligature
+\h@put@char #1\setbox4 \box \ab@x
+\h@put@char #2\setbox6 \box \ab@x
+\put@box {\unhcopy4 \unhcopy6 }}%
+
+\def \h@put@char #1{% choose character glyph
+\heb@cd #1\advance \heb@cd \heb@dsp \put@b@x {\the\heb@cd }}%
+
+\def \h@@putdot #1{% put a dot above a character
+\dimen@ 1.25\h@ht \dimen2 \a@slant\dimen@ \advance\dimen2 #1\a@wd
+\global\setbox\ab@x \hbox
+{\rlap{\kern\dimen2 \raise\dimen@\hbox{\the@dot }}\unhcopy\ab@x}}%
+
+\def \h@@raphe {% no dagesh
+\setbox0 \hbox {\the@raphe }\dimen@ 1.25\h@ht
+\dimen2 .5\a@wd \advance\dimen2 -.5\wd0 \advance\dimen2 \a@slant\dimen@
+\global\setbox\ab@x \hbox
+{\rlap{\kern\dimen2 \raise\dimen@\box0 }\unhcopy\ab@x }}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for vowel positioning
+% CAUTION: these routines are called in HMODE
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \set@hcls{% routines for the HCLASSIC font family
+\globaldefs = 1\relax
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\let \h@putchar \h@@putchar
+%
+\def \put@maqqef {% deposit maqqef
+\put@b@x {\the\act@cd }}%
+%
+\def \h@vowel {% check for meteg
+\if@meteg \xpa \h@meteg \else \xpa \h@putvowel \fi }%
+%
+\def \h@meteg ##1{% put vowel and meteg
+\h@putvowel {\char 8 ##1}}%
+%
+\def \the@dot {\char 0}%
+%
+\def \the@raphe {\vrule width.8\a@wd height.4pt depth0pt }%
+%
+\def \put@dummy {\h@vowel {}}% % dummy for meteg, silluq
+\def \put@patach {\h@vowel {\char 1 }}% % patach
+\def \put@qames {\h@vowel {\char 2 }}% % qames
+\def \put@segol {\h@vowel {\char 3 }}% % segol
+\def \put@qibbus {\h@vowel {\char 4 }}% % qibbus
+\def \put@chireq {\h@vowel {\char 5 }}% % chireq
+\def \put@qameschat {\h@vowel {\char 6 }}% % qames chatuph
+\def \put@shwa {\h@vowel {\char 7 }}% % shwa
+\def \put@sere {\h@vowel {\char 9 }}% % sere
+\def \put@chpatach {\h@vowel {\char 1 \char 7 }}% % chateph patach
+\def \put@chsegol {\h@vowel {\char 3 \char 7 }}% % chateph segol
+\def \put@chqames {\h@vowel {\char 6 \char 7 }}% % chateph qames
+\def \put@cholem {\h@vowel {}\h@ldot }% % cholem breve, meteg?
+\def \put@patachf {\h@vowel {\hphantom
+ {\char 1 }\char 1 }}% % patach furtivum
+%
+\def \put@dagesh {\def \vadj {.48}\def \hadj {0}% default
+\ifnum \act@cd = \hc@j \def \hadj {-.2}\fi % gimel
+\ifnum \act@cd = \hc@w \def \hadj {-.3}\def \vadj {.55}\fi % waw
+\ifnum \act@cd = \hc@z \def \hadj {-.4}\fi % zayin
+\ifnum \act@cd = \hc@tt \def \hadj {.1}\fi % tet
+\ifnum \act@cd = \hc@y \def \hadj {-.45}\def \vadj {.55}\fi % yod
+\ifnum \act@cd = \hc@l \def \hadj {-.1}\def \vadj {.3}\fi % lamed
+\ifnum \act@cd = \hc@n \def \hadj {-.2}\fi % nun
+\ifnum \act@cd = \hc@nf \def \hadj {-.2}\fi % nun sofit
+\ifnum \act@cd = \hc@f \def \hadj {.15}\fi % pe
+\ifnum \act@cd = \hc@ff \def \hadj {.15}\fi % pe sofit
+\ifnum \act@cd = \hc@ss \def \hadj {.1}\fi % sade
+\ifnum \act@cd = \hc@sf \def \hadj {.1}\fi % sade sofit
+\ifnum \act@cd = \hc@si \def \hadj {.07}\fi % shin
+\ifnum \act@cd = \hc@M \def \vadj {.7}\fi % box
+\dimen@ \vadj\a@ht \dimen2 \a@slant\dimen@
+\advance\dimen2 \hadj\a@wd \advance\dimen2 .5\a@wd
+\global\setbox\ab@x \hbox
+%{\rlap{\kern\dimen2 \raise\dimen@\hbox{\char 0 }}\unhcopy\ab@x}}%
+{\rlap{\kern\dimen2 \raise\dimen@\hbox{\the@dot }}\unhcopy\ab@x}}%
+%
+\let \h@put@dot \h@@putdot
+%
+\let \h@raphe \h@@raphe
+%
+\def \h@shindot {\h@put@dot {.8}}% % right dot for shin
+%
+\def \h@sindot {\h@put@dot {.2}}% % left dot for sin
+%
+\def \h@rdot {\h@put@dot {.5}}% % right dot for waw, cholem breve
+%
+\def \h@ldot {% left dot for cholem breve
+\ifnum \act@cd = \hc@l \relax \h@put@dot {-.1}% lamed
+\else \h@put@dot {.1}\fi }%
+%
+\def \h@cholem {% depends on carrier
+\ifnum \act@cd = \hc@w \h@rdot \else \h@shindot \fi }%
+%
+\def \h@putvowel ##1{% vowel mark
+\ifx ##1\relax \relax \else \def \hadj {0}\def \vadj {0}%
+\ifnum \act@cd = \hc@P \let\vadj \v@adj \put@b@x{\hc@Pv }\else % vowel-ayin
+\ifnum \act@cd = \hc@kf \def \hadj {-.1}\def \vadj {.85}\else % final kaph
+\ifnum \act@cd = \hc@r \def \hadj {.35}\else % resh
+\ifnum \act@cd = \hc@d \def \hadj {.2}\else % daleth
+\ifnum \act@cd = \hc@q \def \hadj {.1}\else % qoph
+\ifnum \act@cd = \hc@w \def \hadj {.15}\else % waw
+\ifnum \act@cd = \hc@si \def \hadj {-.1}\else % sin
+\fi\fi\fi\fi\fi\fi\fi
+\setbox0 \hbox to \a@wd {\hss ##1\hss}\dimen@ \vadj\a@ht
+\dimen2 \a@slant\dimen@ \advance\dimen2 \hadj\a@wd
+\global\setbox\ab@x \hbox
+{\rlap {\kern\dimen2 \raise\dimen@\box0 }\unhcopy\ab@x }\fi }%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\globaldefs = 0 }% end font HCLASSIC
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\global\let \@set@hcls \set@hcls
+
+\gdef \set@hcls{% routines for the HCLASSIC font family
+%\globaldefs = 1\relax
+\a@message {patch HCLASSIC}%
+\@set@hcls
+\globaldefs = 1\relax
+\def \the@dot {\vrule width\h@p height0pt depth\h@p }%
+\def \the@mdot {\vrule width\h@p height-\h@p depth2\h@p }%
+\def \the@ldot {\vrule width\h@p height-2\h@p depth3\h@p }%
+\def \the@shwa {\the@dot \kern-\h@p \the@ldot }%
+\def \the@sere {\the@dot \kern\h@p \the@dot }%
+\def \the@segol {\the@dot \the@ldot \the@dot }%
+\def \the@qibbus {\the@dot \the@mdot \the@ldot }%
+\def \the@meteg {\vrule width\h@p height0pt depth3\h@p }%
+\def \the@meteg {\vrule width\h@p height-.2\h@p depth3\h@p }%
+\def \the@patach {\vrule width3\h@p height0pt depth\h@p }%
+\def \the@qames {\the@patach \kern-2\h@p \the@meteg \kern\h@p }%
+\def \put@dummy {\h@vowel {}}%
+\def \put@patach {\h@vowel {\the@patach }}%
+\def \put@qames {\h@vowel {\the@qames }}%
+\def \put@segol {\h@vowel {\the@segol }}%
+\def \put@qibbus {\h@vowel {\the@qibbus }}%
+\def \put@chireq {\h@vowel {\the@dot }}%
+\def \put@qameschat {\h@vowel {\the@qames }}%
+\def \put@shwa {\h@vowel {\the@shwa }}%
+\def \put@sere {\h@vowel {\the@sere }}%
+\def \put@chpatach {\h@vowel {\the@patach \kern\h@p \the@shwa }}%
+\def \put@chsegol {\h@vowel {\the@segol \kern\h@p \the@shwa }}%
+\def \put@chqames {\h@vowel {\the@qames \kern\h@p \the@shwa }}%
+\def \put@cholem {\h@vowel {}\h@ldot }%
+\def \put@patachf {\h@vowel {\kern4\h@p \the@patach }}%
+%
+\def \h@vowel {% check for meteg
+\if@meteg \xpa \h@meteg \else \xpa \h@putvowel \fi }%
+%
+\def \h@meteg ##1{% put vowel and meteg
+\h@putvowel {\the@meteg \kern\h@p ##1}}%
+%
+\def \h@vowel ##1{% check for meteg
+\if@meteg \xpa \h@meteg \else \xpa \h@putvowel \fi {\raise -.2ex\hbox{##1}}}%
+%
+\def \h@vowel ##1{% check for meteg
+\if@meteg \h@meteg {##1}\else \h@putvowel {\raise -.2ex\hbox{##1}}\fi }%
+%
+\def \h@vowel ##1{% check for meteg
+\if@meteg
+\h@putvowel {\raise -.2ex\hbox{\the@meteg \kern\h@p ##1}}\else
+\h@putvowel {\raise -.2ex\hbox{##1}}\fi }%
+%
+\globaldefs = 0 }% end standard fonts
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \set@shlm{% routines for the SHALOM fonts
+\globaldefs = 1\relax
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\def \h@putchar {% choose character glyph
+\ifnum \act@cd = \hc@v \put@b@x {18}\else
+\ifnum \act@cd = \hc@oy \put@b@x {19}\else
+\ifnum \act@cd = \hc@ey \put@b@x {21}\else
+ \h@put@char \act@cd
+\fi\fi\fi }%
+%
+\def \put@maqqef {% deposit maqqef
+\put@box {\char 25}}%
+%
+\def \isn@rrow {% narrow character (class 2) ?
+\xpa \is@in@list \hc@sk gdinrwyGDNORUWY>}%
+%
+\def \h@vowel ##1{% check class
+\heb@voc = ##1\relax
+\if\isn@rrow \advance\heb@voc 17
+\put@box {\unhcopy\ab@x \llap{\char\heb@voc \kern -.075em }}%
+\else \xpa\h@v@wel \xpa{\the\heb@voc }\fi }%
+%
+\def \h@v@wel ##1{% add vowel char right
+\put@box {\unhcopy\ab@x \char ##1}}%
+%
+\def \put@dummy {\relax }% % dummy for meteg, silluq (?)
+\def \put@segol {\h@vowel {50}}% % segol
+\def \put@qibbus {\h@vowel {52}}% % qibbus
+\def \put@qameschat {\h@vowel {54}}% % qames chatuph
+\def \put@sere {\h@vowel {49}}% % sere
+\def \put@chpatach {\h@vowel {56}}% % chateph patach
+\def \put@chsegol {\h@vowel {55}}% % chateph segol
+\def \put@chqames {\h@vowel {57}}% % chateph qames
+\def \put@patachf {\h@vowel {70}}% % patach furtivum
+%
+\def \put@shwa {% shwa on final kaf ?
+\ifnum\act@cd = \hc@kf \h@v@wel {85}\else \h@vowel {51}\fi }%
+%
+\def \put@qames {% qames on alef or final kaf ?
+\ifnum\act@cd = \hc@a \put@b@x {17}\else
+\ifnum\act@cd = \hc@kf \h@v@wel {86}\else \h@vowel {54}\fi\fi }%
+%
+\def \put@patach {% patach on alef or 2 yod ?
+\ifnum\act@cd = \hc@ey \put@b@x {22}\else
+\ifnum\act@cd = \hc@a \put@b@x {16}\else \h@vowel {53}\fi\fi }%
+%
+\def \put@chireq {% chireq on yod ?
+\ifnum\act@cd = \hc@y \put@b@x {20}\else \h@vowel {48}\fi }%
+%
+\def \put@cholem {% cholem breve, meteg?
+\ifnum\act@cd = \hc@l \put@box {\char 61 \unhcopy\ab@x }\else
+\put@box {\rlap {\kern .1em \char 61 }\unhcopy\ab@x }\fi }%
+%
+\def \h@cholem {% depends on carrier
+\ifnum \act@cd = \hc@w \put@b@x {62}\else \h@shindot \fi }%
+%
+\def \h@shindot {% right dot for sin
+\ifnum \act@cd = \hc@si \put@b@x {23}\else
+\put@box {\unhcopy\ab@x \llap {\char 61 \kern .1em}}\fi }%
+%
+\def \h@sindot {% left dot for sin
+\ifnum \act@cd = \hc@si \put@b@x {24}\fi }%
+%
+\def \h@rdot {\h@v@wel {61}}% right dot for waw, cholem breve
+%
+\def \h@raphe {\h@v@wel {26}}% soft consonant
+%
+\def \put@dagesh {% test for yod and class2
+\ifnum\act@cd = \hc@y \h@v@wel {89}\else
+\ifnum\act@cd = \hc@w \put@b@x {60}\else
+\if\isn@rrow \put@box {\unhcopy\ab@x \llap {\char 88 \kern .05em}}%
+\else \h@v@wel {87}\fi\fi\fi }%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\globaldefs = 0 }% end font SHALOM
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \set@hstd{% routines for the standard fonts
+\globaldefs = 1\relax
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\let \h@putchar \h@@putchar
+%
+\def \put@maqqef {% deposit maqqef
+\put@box {\kern.05em\raise .6ex \hbox {\char \act@cd }\kern.05em}}%
+%
+\let \h@raphe \h@@raphe
+%
+\let \h@put@dot \h@@putdot
+%
+\def \h@shindot {\h@put@dot {.8}}% % right dot for shin
+%
+\def \h@sindot {\h@put@dot {.2}}% % left dot for sin
+%
+\def \h@rdot {\h@put@dot {.5}}% % right dot for waw, cholem breve
+%
+\def \h@ldot {% left dot for cholem breve
+%\ifnum \act@cd = \hc@l \relax \h@put@dot {-.1}% lamed
+\ifnum \act@cd = \hc@l \relax \h@put@dot {-.2}% lamed
+\else \h@put@dot {.1}\fi }%
+%
+\def \h@cholem {% depends on carrier
+\ifnum \act@cd = \hc@w \h@rdot \else \h@shindot \fi }%
+%
+\def \the@raphe {\vrule width8\h@p height\h@p depth0pt }%
+\def \the@dot {\vrule width\h@p height0pt depth\h@p }%
+\def \the@mdot {\vrule width\h@p height-\h@p depth2\h@p }%
+\def \the@ldot {\vrule width\h@p height-2\h@p depth3\h@p }%
+\def \the@shwa {\the@dot \kern-\h@p \the@ldot }%
+\def \the@sere {\the@dot \kern\h@p \the@dot }%
+\def \the@segol {\the@dot \the@ldot \the@dot }%
+\def \the@qibbus {\the@dot \the@mdot \the@ldot }%
+\def \the@meteg {\vrule width\h@p height0pt depth3\h@p }%
+\def \the@patach {\vrule width3\h@p height0pt depth\h@p }%
+\def \the@qames {\the@patach \kern-2\h@p \the@meteg \kern\h@p }%
+%
+\def \put@dummy {\relax}%
+\def \put@dummy {\h@vowel {}}%
+\def \put@patach {\h@vowel {\the@patach }}%
+\def \put@qames {\h@vowel {\the@qames }}%
+\def \put@segol {\h@vowel {\the@segol }}%
+\def \put@qibbus {\h@vowel {\the@qibbus }}%
+\def \put@chireq {\h@vowel {\the@dot }}%
+\def \put@qameschat {\h@vowel {\the@qames }}%
+\def \put@shwa {\h@vowel {\the@shwa }}%
+\def \put@sere {\h@vowel {\the@sere }}%
+\def \put@chpatach {\h@vowel {\the@patach \kern\h@p \the@shwa }}%
+\def \put@chsegol {\h@vowel {\the@segol \kern\h@p \the@shwa }}%
+\def \put@chqames {\h@vowel {\the@qames \kern\h@p \the@shwa }}%
+\def \put@cholem {\h@vowel {}\h@ldot }%
+\def \put@patachf {\h@vowel {\kern4\h@p \the@patach }}%
+%
+\def \put@dagesh {\def \vadj {.48}\def \hadj {0}% default
+\ifnum \act@cd = \hc@j \def \hadj {-.2}\fi % gimel
+\ifnum \act@cd = \hc@w \def \hadj {-.3}\def \vadj {.55}\fi % waw
+\ifnum \act@cd = \hc@z \def \hadj {-.4}\fi % zayin
+\ifnum \act@cd = \hc@tt \def \hadj {.1}\fi % tet
+\ifnum \act@cd = \hc@y \def \hadj {-.45}\def \vadj {.55}\fi % yod
+\ifnum \act@cd = \hc@l \def \hadj {-.1}\def \vadj {.3}\fi % lamed
+\ifnum \act@cd = \hc@n \def \hadj {-.2}\fi % nun
+\ifnum \act@cd = \hc@nf \def \hadj {-.2}\fi % nun sofit
+\ifnum \act@cd = \hc@f \def \hadj {.05}\fi % pe
+\ifnum \act@cd = \hc@ff \def \hadj {.15}\fi % pe sofit
+\ifnum \act@cd = \hc@ss \def \hadj {.1}\fi % sade
+\ifnum \act@cd = \hc@sf \def \hadj {.1}\fi % sade sofit
+\ifnum \act@cd = \hc@si \def \hadj {.18}\fi % shin
+\ifnum \act@cd = \hc@M \def \vadj {.7}\fi % box
+\dimen@ \vadj\a@ht \dimen2 \a@slant\dimen@ \advance \dimen2 -\h@p
+\advance\dimen2 \hadj\a@wd \advance\dimen2 .5\a@wd
+\global\setbox\ab@x \hbox
+{\rlap{\kern\dimen2 \raise\dimen@\hbox{\the@dot }}\unhcopy\ab@x}}%
+%
+\def \h@putvowel ##1{% vowel mark
+\ifx ##1\relax \relax \else \def \hadj {0}\def \vadj {0}%
+\ifnum \act@cd = \hc@P \let\vadj \v@adj \put@b@x{\hc@Pv }\else % vowel-ayin
+\ifnum \act@cd = \hc@kf \def \hadj {-.1}\def \vadj {.85}\else % final kaph
+\ifnum \act@cd = \hc@r \def \hadj {.35}\else % resh
+\ifnum \act@cd = \hc@d \def \hadj {.2}\else % daleth
+\ifnum \act@cd = \hc@q \def \hadj {.1}\else % qoph
+\ifnum \act@cd = \hc@y \def \hadj {.1}\else % yod
+\ifnum \act@cd = \hc@w \def \hadj {.15}\else % waw
+\ifnum \act@cd = \hc@si \def \hadj {-.1}\else % sin
+\fi\fi\fi\fi\fi\fi\fi\fi
+\setbox0 \hbox to \a@wd {\hss ##1\hss}\dimen@ \vadj\a@ht
+\advance \dimen@ -2\h@p
+\dimen2 \a@slant\dimen@ \advance\dimen2 \hadj\a@wd
+\global\setbox\ab@x \hbox
+{\rlap {\kern\dimen2 \raise\dimen@\box0 }\unhcopy\ab@x }\fi }%
+%
+\def \h@vowel {% check for meteg
+\if@meteg \xpa \h@meteg \else \xpa \h@putvowel \fi }%
+%
+\def \h@meteg ##1{% put vowel and meteg
+\h@putvowel {\the@meteg \kern\h@p ##1}}%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\globaldefs = 0 }% end standard fonts
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%}% end of dynamic definitions
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/hmac.sty b/language/arabic/arabtex/texinput/hmac.sty
new file mode 100644
index 0000000000..bdf3ea3169
--- /dev/null
+++ b/language/arabic/arabtex/texinput/hmac.sty
@@ -0,0 +1,156 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% hmac.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% hmac.sty
+% Scanner for MAC Hebrew
+% to install it, include it as a LaTeX package or style option "hmac"
+% with Plain TeX, say "\input hmac.sty"
+% to activate it, say "\setcode{hmac}"
+% 07.03.2002
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \hmacatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \hmacatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {hmac.sty} {3.10a MAC Hebrew encoding} {07.03.2002}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \hmac@catcodes {% assignments for MAC Hebrew
+\countdef \is@m=2 \is@m = 160
+\countdef \is@n=4 \is@n = 32
+\loop \ifnum \catcode \is@m = 11 \else \catcode \is@m = 11 \fi
+\global\lccode \is@m = \is@n
+\ifnum 255 > \is@m \advance \is@m 1 \advance \is@n 1 \repeat
+\is@m=0 \is@n=0
+\catcode `\^^81 11
+\catcode `\^^a0 12 }
+
+{\hmac@catcodes
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Hebrew
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \sethmac@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@^^81 {yy"A}
+\def \sc@^^a0 {@} \def \sc@^^a1 {!}
+\def \sc@^^a2 {\a@dq} \def \sc@^^a3 {\a@hsh}
+\def \sc@^^a4 {\a@dlr} \def \sc@^^a5 {\a@pct}
+\def \sc@^^a6 {\a@dlr} \def \sc@^^a7 {\a@qt}
+\def \sc@^^a8 {(} \def \sc@^^a9 {)} \def \sc@^^aa {*} \def \sc@^^ab {+}
+\def \sc@^^ac {,} \def \sc@^^ad {\h@phen}
+\def \sc@^^ae {.} \def \sc@^^af {/}
+
+\def \sc@^^b0 {0} \def \sc@^^b1 {1} \def \sc@^^b2 {2} \def \sc@^^b3 {3}
+\def \sc@^^b4 {4} \def \sc@^^b5 {5} \def \sc@^^b6 {6} \def \sc@^^b7 {7}
+\def \sc@^^b8 {8} \def \sc@^^b9 {9} \def \sc@^^ba {:} \def \sc@^^bb {;}
+\def \sc@^^bc {\a@rab} \def \sc@^^bd {=}
+\def \sc@^^be {\a@lab} \def \sc@^^bf {?}
+
+\def \sc@^^c0 {l"\n@xp\a@o} \def \sc@^^c1 {,,}
+\def \sc@^^c2 {@} \def \sc@^^c3 {@}
+\def \sc@^^c4 {@} \def \sc@^^c5 {@}
+\def \sc@^^c6 {"\n@xp\a@Zu} \def \sc@^^c7 {w"\n@xp\a@o}
+\def \sc@^^c8 {w"\n@xp\a@Zu} \def \sc@^^c9 {\a@ell}
+\def \sc@^^ca {N} \def \sc@^^cb {"A}
+\def \sc@^^cc {"a} \def \sc@^^cd {"\n@xp\a@E}
+\def \sc@^^ce {"e} \def \sc@^^cf {"i}
+
+\def \sc@^^d0 {\a@end} \def \sc@^^d1 {\a@emd}
+\def \sc@^^d2 {\a@lq\a@lq} \def \sc@^^d3 {\a@rq\a@rq}
+\def \sc@^^d4 {\a@lq} \def \sc@^^d5 {\a@rq}
+\def \sc@^^d6 {\n@xp\a@S"\n@xp\a@Ze} \def \sc@^^d7 {\n@xp\a@S"\n@xp\a@Za}
+\def \sc@^^d8 {"\n@xp\a@Zo} \def \sc@^^d9 {"\n@xp\a@e}
+\def \sc@^^da {"\n@xp\a@A} \def \sc@^^db {"\n@xp\a@I}
+\def \sc@^^dc {"u} \def \sc@^^dd {"\n@xp\a@o}
+\def \sc@^^de {"o} \def \sc@^^df {"\n@xp\a@O}
+
+\def \sc@^^e0 {Q} \def \sc@^^e1 {b} \def \sc@^^e2 {g} \def \sc@^^e3 {d}
+\def \sc@^^e4 {h} \def \sc@^^e5 {w} \def \sc@^^e6 {z} \def \sc@^^e7 {X}
+\def \sc@^^e8 {C} \def \sc@^^e9 {y} \def \sc@^^ea {k} \def \sc@^^eb {k}
+\def \sc@^^ec {l} \def \sc@^^ed {m} \def \sc@^^ee {m} \def \sc@^^ef {n}
+
+\def \sc@^^f0 {n} \def \sc@^^f1 {s} \def \sc@^^f2 {P} \def \sc@^^f3 {p}
+\def \sc@^^f4 {p} \def \sc@^^f5 {S} \def \sc@^^f6 {S} \def \sc@^^f7 {q}
+\def \sc@^^f8 {r} \def\sc@^^f9{\n@xp\a@S}
+\def \sc@^^fa {t} \def \sc@^^fb {\a@rbc}
+\def \sc@^^fc {]} \def \sc@^^fd {\a@lbc}
+\def \sc@^^fe {[} \def \sc@^^ff {\a@bar}
+
+\a@digits = {0123456789} \a@paren = {()[]} \a@first = {"`^^e6}
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for MAC Hebrew
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \hmac@scan #1>{% standard scanner call: token sequence -> \a@tokens
+\iftest@scan \tracingmacros = 1
+\ifshow \else \lowercase{\a@verb #1>}\fi\fi
+\global\def \a@rest {}\global\a@tokens = {}\sc@beg #1\@ \@@
+\iftest@scan \tracingmacros = 0 %
+\xpa \a@verb \xpa (\the\a@tokens )>\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \hmac@beg {% start MAC Hebrew scanner
+\h@mzafalse \iz@fetfalse \@ssimfalse \novocalize % because of explicit quoting
+\hmac@word }
+
+{\catcode `\^^M=13 \endlinechar = -1
+\gdef \hmac@word #1{% transform input into internal notation
+\ifx #1\@ \def \next {\sc@endscan }\else % finished
+\if \nxp ^^M\nxp #1\def \next {\hmac@par #1}% active character
+\else \def \next {\hmac@w@rd #1}%
+\fi\fi \next }%
+} % catcode 13
+
+\gdef \hmac@w@rd #1#2{% special cases
+\case #1\of
+{ #2{\hmac@word #1-#2}
+ -{\hmac@minus #2}
+ ^^a0{\sc@back #2}
+% ^^ad{\hmac@minus #2}
+\default {\hmac@@word #1#2}
+}\endcase }
+
+\gdef \hmac@@word #1{% default branch
+\ifcat a\nxp #1\edef \sc@char {\csname sc@#1\endcsname }%
+\else \def \sc@char {\nxp #1}%
+\fi \sc@put \hmac@word }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \hmac@minus {% hyphen between words
+\def \sc@char {-}\sc@put \hmac@beg }
+
+\gdef \hmac@par #1\@ \@@ {% new line, push back the rest
+\sc@back \\ #1\@ \@@ }
+
+\gdef \hmac@endscan \@@ {\global\let \a@scan \hmac@scan }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+} % \hmac@catcodes
+
+\def \set@hmac {% select the MAC Hebrew scanner
+\let \sc@beg \hmac@beg \let \sc@word \hmac@word
+\let \sc@back \sc@@back \let \sc@endscan \hmac@endscan
+\global\let \a@scan \hmac@scan \sethmac@codes
+\hmac@catcodes
+\a@message {input encoding set to MAC Hebrew and ISO 8859-8 conventions}}
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the MAC Hebrew encoding
+hmac\set@hmac iso8859-8\set@hmac iso88598\set@hmac }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {scanner for MAC Hebrew code installed.}
+
+\catcode `\@ = \hmacatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/isiri.sty b/language/arabic/arabtex/texinput/isiri.sty
new file mode 100644
index 0000000000..b4664d9b3e
--- /dev/null
+++ b/language/arabic/arabtex/texinput/isiri.sty
@@ -0,0 +1,225 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% isiri.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% isiri.sty
+% Scanner for ISIRI 3342 Code
+% to install it, include it as a LaTeX package or style option "isiri"
+% with Plain TeX, say "\input isiri.sty"
+% to activate it, say "\setcode {isiri3342}" or "\setcode {isiri}"
+% 26.04.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \isiriatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \isiriatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {isiri.sty} {3.11 ISIRI 3342 input encoding } {26.04.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \isiri@catcodes {% assignments for ISIRI 3342
+\countdef \is@m=2 \countdef \is@n=4
+\is@m = 160 \is@n = 32
+\loop \ifnum \catcode \is@m = 11 \else \catcode \is@m = 11 \fi
+\global\lccode \is@m = \is@n
+\ifnum 255 > \is@m \advance \is@m 1 \advance \is@n 1 \repeat
+\is@m=0 \is@n=0 \catcode `\^ 7 \catcode `\^^a0 12 }
+
+{\isiri@catcodes
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Arabic
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setisi@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@^^a0 {@} \def \sc@^^a1 {||} \def \sc@^^a2 {-} \def \sc@^^a3 {!}
+\def \sc@^^a4 {\a@dlr} \def \sc@^^a5 {\a@pct}
+\def \sc@^^a6 {\a@amp} \def \sc@^^a7 {\a@qt}
+\def \sc@^^a8 {(} \def \sc@^^a9 {)} \def \sc@^^aa {*} \def \sc@^^ab {+}
+\def \sc@^^ac {,} \def \sc@^^ad {-} \def \sc@^^ae {.} \def \sc@^^af {/}
+
+\def \sc@^^b0 {0} \def \sc@^^b1 {1} \def \sc@^^b2 {2} \def \sc@^^b3 {3}
+\def \sc@^^b4 {4} \def \sc@^^b5 {5} \def \sc@^^b6 {6} \def \sc@^^b7 {7}
+\def \sc@^^b8 {8} \def \sc@^^b9 {9} \def \sc@^^ba {:} \def \sc@^^bb {;}
+\def \sc@^^bc {\a@lab} \def \sc@^^bd {=}
+\def \sc@^^be {\a@rab} \def \sc@^^bf {?}
+
+\def \sc@^^c0 {QA} \def \sc@^^c1 {A} \def \sc@^^c2 {Q|} \def \sc@^^c3 {b}
+\def \sc@^^c4 {p} \def \sc@^^c5 {t} \def \sc@^^c6 {C} \def \sc@^^c7 {G}
+\def \sc@^^c8 {J} \def \sc@^^c9 {H} \def \sc@^^ca {X} \def \sc@^^cb {d}
+\def \sc@^^cc {F} \def \sc@^^cd {r} \def \sc@^^ce {z} \def \sc@^^cf {j}
+
+\def \sc@^^d0 {s} \def \sc@^^d1 {x} \def \sc@^^d2 {S} \def \sc@^^d3 {D}
+\def \sc@^^d4 {V} \def \sc@^^d5 {Z} \def \sc@^^d6 {P} \def \sc@^^d7 {R}
+\def \sc@^^d8 {f} \def \sc@^^d9 {q} \def \sc@^^da {\n@xp \a@k}
+\def \sc@^^db {g}
+\def \sc@^^dc {l} \def \sc@^^dd {m} \def \sc@^^de {n} \def \sc@^^df {w}
+
+\def \sc@^^e0 {h} \def \sc@^^e1 {Y} \def \sc@^^e2 {[} \def \sc@^^e3 {]}
+\def \sc@^^e4 {\a@lbc} \def \sc@^^e5 {\a@rbc}
+\def \sc@^^e6 {'} \def \sc@^^e7 {`}
+\def \sc@^^e8 {*} \def \sc@^^e9 {B}
+\def \sc@^^ea {\a@bar} \def \sc@^^eb {\a@bsl}
+\def \sc@^^ec {@} \def \sc@^^ed {@} \def \sc@^^ee {@} \def \sc@^^ef {@}
+
+\def \sc@^^f0 {"a} \def \sc@^^f1 {"i} \def \sc@^^f2 {"u} \def \sc@^^f3 {"aN}
+\def \sc@^^f4 {"iN}\def \sc@^^f5 {"uN} \def \sc@^^f6 {@} \def \sc@^^f7 {""}
+\def \sc@^^f8 {Qa} \def \sc@^^f9 {Qw} \def \sc@^^fa {Qi} \def \sc@^^fb {QY}
+\def \sc@^^fc {T} \def \sc@^^fd {k} \def \sc@^^fe {y} \def \sc@^^ff {E}
+\a@digits = {0123456789^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9}
+\a@paren = {()[]^^a8^^a9^^e2^^e3}
+\a@first = {"`^^e6}
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \isi@scan #1>{% standard scanner call: token sequence -> \a@tokens
+\iftest@scan \tracingmacros = 1
+\ifshow \else \lowercase{\a@verb #1>}\fi\fi
+\global\def \a@rest {}\global\a@tokens = {}\sc@beg #1\@ \@@
+\iftest@scan \tracingmacros = 0 %
+\xpa \a@verb \xpa (\the\a@tokens )>\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+{\catcode `\^ 7
+\gdef \isi@beg #1#2{% start ISIRI 3342 scanner
+\h@mzafalse \iz@fetfalse \yahdots \novocalize % because of explicit quoting
+ \@ssimfalse
+\case #1\of
+{ \@{\sc@endscan #2} % finished
+ ^^c1{\isi@alif@beg #2}
+ ^^e6{\isi@lquote #2}
+\default {\isi@word #1#2}
+}\endcase }
+
+{\catcode `\^^M=13 \endlinechar = -1
+\gdef \isi@word #1#2{% transform input into internal notation
+\ifx #1\@ \def \next {\sc@endscan #2}\else % finished
+\if \nxp ^^M\nxp #1\def \next {\isi@par #1#2}% active character
+\else \def \next {\isi@w@rd #1#2}%
+\fi\fi \next }%
+} % catcode 13
+
+\gdef \isi@w@rd #1#2{% special cases
+\case #1\of
+{ #2{\isi@word #1-#2}
+ -{\isi@minus #2}
+ ^^a0{\sc@back #2}
+ ^^ad{\isi@minus #2}
+ ^^c1{\isi@alif #2}
+ ^^c2{\isi@hamza #2}
+ ^^df{\isi@waw #2}
+ ^^e0{\isi@hah #2}
+ ^^e1{\isi@Yah #2}
+ ^^e7{\isi@rquote #2}
+ ^^fe{\isi@yah #2}
+\default {\isi@@word #1#2}
+}\endcase }
+
+\gdef \isi@@word #1#2{% default branch
+\ifcat a\nxp #1\edef \sc@char {\csname sc@#1\endcsname }%
+\else \def \sc@char {\nxp #1}%
+\fi \sc@put
+\ifx #2^^f6\def \next {\isi@word #1}% shadda
+\else \def \next {\isi@word #2}%
+\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \isi@alif@beg #1{% alif
+\ifx #1^^a2\def \next {\isi@alif@P }\else
+\def \next {\isi@word #1}\def \sc@char {a}\sc@put
+\fi \next }
+
+\gdef \isi@alif #1{% alif
+\ifx #1^^a2\def \next {\isi@alif@P }\else
+\def \next {\isi@word #1}\def \sc@char {A}\sc@put
+\fi \next }
+
+\gdef \isi@alif@P #1{% alif PCN hamza ?
+\ifx #1^^c2\def \sc@char {Qa}\def \next {\isi@word }\else
+\def \sc@char {A-}\def \next {\isi@word #1}%
+\fi \sc@put \next }
+
+\gdef \isi@waw #1{% waw
+\ifx #1^^a2\def \next {\isi@waw@P }\else
+\def \next {\isi@word #1}\def \sc@char {w}\sc@put
+\fi \next }
+
+\gdef \isi@waw@P #1{% waw PCN hamza ?
+\ifx #1^^c2\def \sc@char {Qw}\def \next {\isi@word }\else
+\def \sc@char {w-}\def \next {\isi@word #1}%
+\fi \sc@put \next }
+
+\gdef \isi@yah #1{% yah
+\ifx #1^^a2\def \next {\isi@yah@P }\else
+\def \next {\isi@word #1}\def \sc@char {y}\sc@put
+\fi \next }
+
+\gdef \isi@Yah #1{% Yah
+\ifx #1^^a2\def \next {\isi@yah@P }\else
+\def \next {\isi@word #1}\def \sc@char {Y}\sc@put
+\fi \next }
+
+\gdef \isi@yah@P #1{% yah PCN hamza ?
+\ifx #1^^c2\def \sc@char {QY}\def \next {\isi@word }\else
+\def \sc@char {y-}\def \next {\isi@word #1}%
+\fi \sc@put \next }
+
+\gdef \isi@hah #1{% hah
+\ifx #1^^a2\def \next {\isi@hah@P }\else
+\def \next {\isi@word #1}\def \sc@char {h}\sc@put
+\fi \next }
+
+\gdef \isi@hah@P #1{% hah PCN hamza ?
+\ifx #1^^c2\def \sc@char {Qh}\def \next {\isi@word }\else
+\def \sc@char {h-}\def \next {\isi@word #1}%
+\fi \sc@put \next }
+
+\gdef \isi@hamza #1{% hamza
+\ifx #1^^a2\def \sc@char {QY}\def \next {\isi@word }%
+\else \def \sc@char {Q|}\def \next {\isi@word #1}%
+\fi \sc@put \next }
+
+\gdef \isi@minus {% hyphen between words
+\def \sc@char {-}\sc@put \isi@beg }
+
+\gdef \isi@lquote {% left quote
+\def \sc@char {`}\sc@put \isi@beg }
+
+\gdef \isi@rquote {% right quote
+\def \sc@char {'}\sc@put \isi@word }
+
+\gdef \isi@par #1\@ \@@ {% new line, push back the rest
+\sc@back \\ #1\@ \@@ }
+
+\gdef \isi@endscan \@@ {\global\let \a@scan \isi@scan }
+}% catcode ^
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+} % \isiri@catcodes
+
+\def \set@isiri {% select the ISIRI 3342 scanner
+\let \sc@beg \isi@beg \let \sc@word \isi@word
+\let \sc@back \sc@@back \let \sc@endscan \isi@endscan
+\global\let \a@scan \isi@scan \setisi@codes
+\isiri@catcodes \yahdots
+\a@message {input encoding set to ISIRI 3342 conventions}}
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the ASMO449 encoding
+isiri\set@isiri isiri3342\set@isiri }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {scanner for code ISIRI 3342 installed.}
+
+\catcode `\@ = \isiriatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/iso88596.sty b/language/arabic/arabtex/texinput/iso88596.sty
new file mode 100644
index 0000000000..15b1fb298c
--- /dev/null
+++ b/language/arabic/arabtex/texinput/iso88596.sty
@@ -0,0 +1,23 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% iso88596.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% iso88596.sty
+% Scanner for ISO 8859-6 Code
+% reuses the MacOS Arabic scanner
+% to install it, include it as a LaTeX package or style option "iso88596"
+% with Plain TeX, say "\input iso88596.sty"
+% to activate it, say "\setcode {iso8859-6}" or "\setcode{iso88596}"
+% 07.05.2000
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \isocatcode = \catcode`\@ \catcode`\@ = 11
+\a@ident {iso88596.sty} {3.10 ISO 8859-6 encoding} {07.05.2000}
+
+\UsePackage {amac} % reuse MacOS Arabic scanner
+\a@message {scanner for ISO 88596-9 code installed.}
+
+\catcode `\@ = \isocatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/manifest.txt b/language/arabic/arabtex/texinput/manifest.txt
new file mode 100644
index 0000000000..ba96b76f42
--- /dev/null
+++ b/language/arabic/arabtex/texinput/manifest.txt
@@ -0,0 +1,80 @@
+ArabTeX, version 3.10, directory TEXINPUT, September 16, 2001
+
+ 3.09.00 19.50 9320 0 abidir.sty
+17.07.99 18.51 2093 0 abjad.sty
+ 4.06.00 13.48 17259 0 aboxes.sty
+ 1.11.98 16.52 928 0 acjk.sty
+ 5.04.00 17.35 11330 0 acmd.sty
+ 1.11.98 17.16 3478 0 aconfig.sty
+11.04.99 17.39 7250 0 aedpatch.sty
+ 1.11.98 17.03 1722 0 afonts.sty
+ 1.11.98 17.03 2348 0 afonts0.sty
+ 1.11.98 17.04 1851 0 afonts1.sty
+19.10.99 15.19 1964 0 afonts2.sty
+28.05.00 23.41 9025 0 alatex.sty
+ 4.06.00 16.16 21063 0 aligs.sty
+ 1.11.98 18.42 7079 0 alists.sty
+ 9.09.01 17.11 7776 0 amac.sty
+ 4.06.00 3.29 6072 0 aoutput.sty
+ 1.05.00 18.40 33467 0 aparse.sty
+16.09.01 13.18 2834 0 apatch.sty
+ 1.11.98 17.03 1165 0 arababel.sty
+ 9.05.97 14.05 802 0 arabart.cls
+ 9.05.97 14.05 1049 0 arabbook.cls
+ 1.11.98 17.00 3041 0 arabchrs.sty
+ 1.11.98 18.42 4505 0 arabext.sty
+14.09.01 13.51 26510 0 arabrep.cls
+ 4.06.00 16.38 9136 0 arabskel.sty
+ 1.11.98 18.42 8917 0 arabsymb.sty
+16.09.01 13.11 26773 0 arabtex.sty
+16.09.01 13.10 4576 0 arabtex.tex
+17.07.99 21.23 6772 0 arabtoks.sty
+ 1.11.98 18.42 3214 0 arabwin.sty
+13.09.01 16.16 15334 0 ascan.sty
+21.04.00 20.52 10857 0 asect.sty
+ 9.05.97 14.07 1222 0 asize10.clo
+ 9.05.97 14.07 1222 0 asize11.clo
+ 9.05.97 14.07 1222 0 asize12.clo
+ 8.05.00 0.45 4425 0 asmo449.sty
+ 1.11.98 18.43 4677 0 atabg.sty
+10.09.01 2.40 18080 0 atrans.sty
+10.09.01 2.33 12425 0 awrite.sty
+ 8.05.00 0.49 7441 0 bhs.sty
+ 1.12.98 12.56 4631 0 bhslabel.sty
+21.11.95 12.47 1984 0 captions.def
+ 8.05.00 0.39 7622 0 cp1256.sty
+ 4.11.98 14.25 172 0 etrans.sty
+10.09.01 2.04 4480 0 gedalin.sty
+17.06.00 19.14 5057 0 hebchrs.sty
+12.06.00 18.41 1715 0 hebsymb.sty
+12.06.00 14.54 2747 0 hebtex.sty
+16.09.01 13.10 3733 0 hebtex.tex
+ 7.05.00 13.40 7789 0 hecmd.sty
+ 1.11.98 18.23 1723 0 hefonts.sty
+ 1.11.98 18.23 1499 0 hefonts0.sty
+ 1.11.98 18.23 1256 0 hefonts1.sty
+12.06.00 13.19 1879 0 hefonts2.sty
+14.06.00 20.17 8481 0 heparse.sty
+13.04.00 17.39 1289 0 hepatch.sty
+21.08.00 19.27 8818 0 hescan.sty
+ 8.05.00 1.00 3494 0 hetrans.sty
+10.09.01 1.43 20413 0 hewrite.sty
+ 8.05.00 0.40 6599 0 hmac.sty
+ 8.05.00 0.40 8338 0 isiri.sty
+ 8.05.00 0.40 919 0 iso88596.sty
+ 1.11.98 18.44 3594 0 latexext.sty
+16.09.01 18.35 0 0 manifest.txt
+ 4.11.98 14.25 165 0 nashbf.sty
+ 1.11.98 18.44 1531 0 raw.sty
+ 1.11.98 18.45 4200 0 twoblks.sty
+13.06.00 18.05 3678 0 uheb.fd
+23.05.99 12.38 1495 0 unash.fd
+13.06.00 14.44 1351 0 utf8.sty
+13.06.00 16.08 11198 0 utfcode.sty
+22.04.00 13.14 2113 0 Uxnsh.fd
+ 1.11.98 18.45 2652 0 verses.sty
+14.09.01 15.13 7481 0 witbhs.sty
+ 4.06.00 19.43 7260 0 xarbskel.sty
+ 1.11.98 16.55 9655 0 xarbsymb.sty
+
+ 80 Datei(en) 481235 Byte belegt
diff --git a/language/arabic/arabtex/texinput/nashbf.sty b/language/arabic/arabtex/texinput/nashbf.sty
new file mode 100644
index 0000000000..aefdd050e4
--- /dev/null
+++ b/language/arabic/arabtex/texinput/nashbf.sty
@@ -0,0 +1,9 @@
+% nashbf.sty
+
+\endinput
+
+% this module is no more needed.
+% its effect is now taken care of by "arabtex.sty"; use \setnashbf
+% 04.11.1998
+% Klaus Lagally
+
diff --git a/language/arabic/arabtex/texinput/raw.sty b/language/arabic/arabtex/texinput/raw.sty
new file mode 100644
index 0000000000..2c1a584b28
--- /dev/null
+++ b/language/arabic/arabtex/texinput/raw.sty
@@ -0,0 +1,41 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% raw.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% raw.sty
+% package for activating most special characters for OCR work
+% and switching off most special processing
+% the characters " < > cannot presently be handled correctly
+% activate special processing by \setraw
+% revert to the normal mode by \unsetraw
+% 04.03.1996
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \rawatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \rawatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {raw.sty} {0.91 special characters} {04.03.1996}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \setraw {% activate special characters
+\a@paren = {} \a@digits = {} \a@first = {.'`~,|:}
+\catcode `\^ 12 \catcode `\_ 12
+\catcode `\$ 12 \catcode `\# 12 \catcode `\& 12
+\catcode `\% 12 \catcode `\- 11 \catcode `\= 11 }
+
+\def \unsetraw {% undo changes
+\a@digits = {0123456789} \a@paren = {()[]}
+\a@first = {.^_-'`~,|"=:} % default, scanner dependent
+\catcode `\^ 7 \catcode `\_ 8
+\catcode `\$ 3 \catcode `\# 6 \catcode `\& 4
+\catcode `\% 14 \catcode `\- 12 \catcode `\= 12 }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\catcode `\@ = \rawatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/saw.sty b/language/arabic/arabtex/texinput/saw.sty
new file mode 100644
index 0000000000..5ca630d456
--- /dev/null
+++ b/language/arabic/arabtex/texinput/saw.sty
@@ -0,0 +1,43 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% saw.sty
+% macros for SAW and ALS
+% only available in one size
+% 22.06.2006
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {saw.sty}{1.00 SAW and ALS } {22.06.2006}
+
+\def \SAW {% for Roman mode
+% .salla all-ah `alayhi wa-sallam
+\setbox0 \hbox {\setarab \novocalize \tiny
+\vbox {\hbox {\<.sall_A \hskip-0.6em al-ll_ahu >}%
+\nointerlineskip \vskip -1.5ex
+\hbox {\<wa-salama >}%
+\nointerlineskip \vskip -2.2ex
+\hbox {\hskip .4em \<`alayBBhi >\,}}}%
+\dp0 0pt \leavevmode \lower .20\ht0 \box0 }
+
+\def \ALS {% for Roman mode
+% `alayhi al-ssalAm
+\setbox0 \hbox {\setarab \novocalize \tiny
+\vbox {\hbox {\,\<`alaByBhi >}%
+\nointerlineskip \vskip -1.0ex
+\hbox {\<al-ssalAm >\,}}}%
+\leavevmode \box0 }
+
+\def \a@c@SAW {% for Arabic paragraph mode
+\nospace \putwordb@x {\SAW \hskip -0.3em }\test@token }
+
+\def \a@c@ALS {% for Arabic paragraph mode
+\nospace \putwordb@x {\ALS \hskip -0.3em }\test@token }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
diff --git a/language/arabic/arabtex/texinput/sotoku.sty b/language/arabic/arabtex/texinput/sotoku.sty
new file mode 100644
index 0000000000..eded081e36
--- /dev/null
+++ b/language/arabic/arabtex/texinput/sotoku.sty
@@ -0,0 +1,47 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% sotoku.sty
+% additional transcription module for ArabTeX
+% special transcription
+% 16.02.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Additional Transcription Modes:
+% transcribe `ayn by the Arabic letter
+% activate by: \settrans{sotoku}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\catcode`\@ = 11
+\a@ident{sotoku.sty}{1.00 generate special transliteration }{16.02.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\~=10
+\gdef \tr@sotoku {% define Sotoku transliteration
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tr@zdmg % standard routine
+% transliterate 'ayin' as Arabic letter:
+\gdef \tr@P {{\scriptsize\transfalse\arabtrue\showfalse\<`>}\@vocalfalse}
+% transliterate 'hamza' as Arabic letter:
+\gdef \tr@Q {{\transfalse\arabtrue\showfalse\<-'>}\@vocalfalse}
+% comment out if not required!
+\a@message {Sotoku~special~transliteration.}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@extend \tr@table {sotoku\tr@sotoku }% install
+
+\settrans{sotoku}% activate
+% switch to standard version by \settrans{standard}
+
+\catcode`\@ = \transatcode
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+
diff --git a/language/arabic/arabtex/texinput/twoblks.sty b/language/arabic/arabtex/texinput/twoblks.sty
new file mode 100644
index 0000000000..93687c2988
--- /dev/null
+++ b/language/arabic/arabtex/texinput/twoblks.sty
@@ -0,0 +1,104 @@
+% 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
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/uheb.fd b/language/arabic/arabtex/texinput/uheb.fd
new file mode 100644
index 0000000000..8b96772325
--- /dev/null
+++ b/language/arabic/arabtex/texinput/uheb.fd
@@ -0,0 +1,122 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Uheb.fd
+% ArabTeX
+% Hebrew font descriptions for LaTeX2e
+% 13.06.2000
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Bernd Raichle and Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This file contains the font description of the Hebrew fonts
+% fontencoding: U
+% fontfamily: heb
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% make sure, that it is used with NFSS2 only
+%
+\ifx\DeclareFontShape\undefined
+ \message{Something is wrong -- %
+ this file can only be used with NFSS2!!!}
+\expandafter\endinput\fi
+
+\ProvidesFile{uheb.fd }[ 2000/06/13 v3.10 ArabTeX Hebrew font definitions]
+
+\DeclareFontFamily{U}{heb}{}%
+
+\DeclareFontShape{U}{heb}{m}{n}{%
+ <-8> fixed * [102.4] hclassic
+ <8-10> s * [12.8] hclassic
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * [12.8] hclassic
+}%
+{\fontdimen5\font =.8\fontdimen2\font % ex
+ \fontdimen6\font = 3\fontdimen5\font } % em
+
+\DeclareFontShape{U}{heb}{bx}{n}{%
+ <-8> fixed * [102.4] hcaption
+ <8-10> s * [12.8] hcaption
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * [12.8] hcaption
+}%
+{\fontdimen5\font =.8\fontdimen2\font % ex
+ \fontdimen6\font = 3\fontdimen5\font % em
+ \fontdimen1\font =.2pt } % slant
+
+\DeclareFontShape{U}{heb}{m}{Jm}{%
+ <-10> fixed * Jerusalem
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * Jerusalem
+}{}
+
+\DeclareFontShape{U}{heb}{m}{jm}{%
+ <-10> fixed * jerusale
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * jerusale
+}{}
+
+\DeclareFontShape{U}{heb}{m}{ds}{%
+ <-10> fixed * deadsea
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * deadsea
+}{}
+
+\DeclareFontShape{U}{heb}{m}{ta}{%
+ <-10> fixed * telaviv
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * telaviv
+}{}
+
+\DeclareFontShape{U}{heb}{m}{oj}{%
+ <-10> fixed * oldjaffa
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * oldjaffa
+}{}
+
+\DeclareFontShape{U}{heb}{m}{so}{%
+ <-10> fixed * shlm_old
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * shlm_old
+}%
+{\fontdimen5\font =\fontdimen2\font } % ex
+
+\DeclareFontShape{U}{heb}{m}{sr}{%
+ <-10> fixed * shlm_scr
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * shlm_scr
+}%
+{\fontdimen5\font =\fontdimen2\font } % ex
+
+\DeclareFontShape{U}{heb}{m}{sk}{%
+ <-10> fixed * shlm_stk
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * shlm_stk
+}%
+{\fontdimen5\font =\fontdimen2\font } % ex
+
+\DeclareFontShape{U}{heb}{m}{fr}{%
+ <-10> fixed * fr
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * fr
+}{}
+
+\DeclareFontShape{U}{heb}{bx}{fr}{%
+% <-10> fixed * [12.8] frbx
+ <-10> fixed * frbx
+% <10><10.95><12><14.4><17.28><20.74><24.88> s * [12.8] frbx
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * frbx
+}{}
+
+\DeclareFontShape{U}{heb}{sl}{fr}{%
+% <-10> fixed * [12.8] frsl
+ <-10> fixed * frsl
+% <10><10.95><12><14.4><17.28><20.74><24.88> s * [12.8] frsl
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * frsl
+}%
+{\fontdimen1\font =.2pt } % slant
+
+\DeclareFontShape{U}{heb}{m}{crml}{%
+ <-10> fixed * crml10
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * crml10
+}%
+{\fontdimen5\font =\fontdimen2\font } % ex
+
+\DeclareFontShape{U}{heb}{sl}{crml}{%
+ <-10> fixed * crmlsl10
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * crmlsl10
+}%
+{\fontdimen5\font =\fontdimen2\font } % ex
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/unash.fd b/language/arabic/arabtex/texinput/unash.fd
new file mode 100644
index 0000000000..00ab4d6ba0
--- /dev/null
+++ b/language/arabic/arabtex/texinput/unash.fd
@@ -0,0 +1,46 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Unash.fd
+%
+% 31.08.93 1.0 created file when added support for NFSS2 (br)
+% 04.04.1997 ranges fixed (KL)
+% 17.09.1997 smaller sizes allowed
+% 31.03.1998 test for xnsh14: does not work
+% 12.07.1998 cleanup
+% 23.05.1999 name "unash.fd"
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Bernd Raichle and Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This file contains the font description of font `nash'
+% fontencoding: U
+% fontfamily: nash
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% make sure, that it is used with NFSS2 only
+%
+\ifx\DeclareFontShape\undefined
+ \message{Something is wrong -- %
+ this file can only be used with LaTeX2e and NFSS2!!!}
+\expandafter\endinput\fi
+
+\ProvidesFile{unash.fd}[1999/05/23 3.08 ArabTeX Naskh font definitions]
+
+\DeclareFontFamily{U}{nash}{}%
+
+\DeclareFontShape{U}{nash}{m}{n}{%
+ <-6> sfixed * [7.2] nash14
+ <6-10> s * [1.44] nash14
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * [1.44] nash14
+}{}
+
+\DeclareFontShape{U}{nash}{bx}{n}{%
+ <-6> sfixed * [7.2] nash14bf
+ <6-10> s * [1.44] nash14bf
+ <10><10.95><12><14.4><17.28><20.74><24.88> s * [1.44] nash14bf
+}{}
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/utf8.sty b/language/arabic/arabtex/texinput/utf8.sty
new file mode 100644
index 0000000000..fa7167e96c
--- /dev/null
+++ b/language/arabic/arabtex/texinput/utf8.sty
@@ -0,0 +1,42 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% utf8.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% utf8.sty
+% Scanner for UTF-8 Code
+% to install it, include it as a LaTeX package or style option "utf8"
+% with Plain TeX, say "\input utf8.sty"
+% to activate it, say "\setcode {utf8}"
+% 13.06.2000
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \utfatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \utfatcode = \catcode`\@ \catcode`\@ = 11
+
+\UsePackage {utfcode}
+
+\a@ident {utf8.sty} {3.10 UTF-8 input encoding } {13.06.2000}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \set@utfc {% select the UTF-8 scanner
+\global\let \a@scan \utfc@scan
+\global\def \sc@beg {\utf@beg }%
+\global\def \sc@word {\utf@word }%
+\global\a@digits = {0123456789}%
+\global\a@first = {ÍÎÏ•’}%
+\catcode `á 11
+\a@message {input encoding set to UTF-8 conventions}}
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the UTF-8 encoding
+utf-8\set@utfc utf8\set@utfc }
+
+\a@message {scanner for code UTF-8 installed.}
+
+\catcode `\@ = \utfatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/utfcode.sty b/language/arabic/arabtex/texinput/utfcode.sty
new file mode 100644
index 0000000000..5f8ab2753e
--- /dev/null
+++ b/language/arabic/arabtex/texinput/utfcode.sty
@@ -0,0 +1,279 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% utfcode.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% utfcode.sty
+% scanner module for the Arabic and Hebrew segments of UTF-8
+% loaded and called by utf8.sty
+% 07.03.2002
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\catcode`\@ = 11
+
+\a@ident {utfcode.sty} {3.10a Arabic+Hebrew segment of UTF-8} {07.03.2002}
+
+\newcount \u@lb \newcount \u@lq
+
+\newif \ifa@quote
+
+\def \utfc@scan #1>{% modified scanner call: token sequence -> \a@tokens
+\iftest@scan \tracingmacros = 1 \fi
+\global\def \a@rest {}\global\a@tokens = {}\def \sc@char {}%
+\utf@beg #1\@ \@ \@ \@@ % transform
+\iftest@scan \tracingmacros = 0 \xpa \a@verb \xpa (\the\a@tokens )>\fi }
+
+\def \utf@beg #1#2{% start UTF-8 scanner
+\h@mzafalse \iz@fetfalse \novocalize % because of explicit quoting
+ \@ssimfalse
+ \def \next {\utf@word #1#2}%
+\ifnum `#1="D8 \ifnum `#2="27 \def \next {\utf@alif }\fi \else
+%\ifx #1"\def \next {\utf@lquote #2}\else
+\ifx #1/\global \a@tokens ={#1}\def \next {\utf@word #2}\else % x>
+%\fi
+\fi\fi \next }
+
+{\catcode `\^ 7 \catcode `\^^M=13
+\gdef \utf@word #1#2{% transform input into internal notation
+\ifx #1\@ \def \next {\utf@end #2}\else % finished
+\ifx #1-\def \next {\utf@minus #2}\else %
+%ifx #1"\def \next {\utf@rquote #2}\else %
+\ifx #1/\def \next {\sc@back #1#2}\else %
+%\if \nxp ^^M\nxp #1\def \next {\utf@par #2}\else % active character
+\ifnum `#1="D6 \def \next {\utf@dvi #2}\else %
+\ifnum `#1="D7 \def \next {\utf@dvii #2}\else %
+\ifnum `#1="D8 \def \next {\utf@dviii #2}\else %
+\ifnum `#1="D9 \def \next {\utf@dix #2}\else %
+\ifnum `#1="DA \def \next {\utf@da #2}\else %
+\ifnum `#1="DB \def \next {\utf@db #2}\else %
+ \def \next {\utf@asci #1#2}%
+\fi\fi\fi\fi\fi\fi %
+%\fi\fi
+\fi\fi\fi \next }%
+%
+\gdef \utf@word #1{% transform input into internal notation
+\ifx #1\@ \def \next {\utf@end }\else % finished
+\ifx #1-\def \next {\utf@minus }\else %
+\ifx #1/\def \next {\sc@back #1}\else %
+\ifnum `#1="D6 \def \next {\utf@dvi }\else %
+\ifnum `#1="D7 \def \next {\utf@dvii }\else %
+\ifnum `#1="D8 \def \next {\utf@dviii }\else %
+\ifnum `#1="D9 \def \next {\utf@dix }\else %
+\ifnum `#1="DA \def \next {\utf@da }\else %
+\ifnum `#1="DB \def \next {\utf@db }\else %
+ \def \next {\utf@asci #1}%
+\fi\fi\fi\fi\fi\fi %
+\fi\fi\fi \next }%
+} % catcode 13
+
+\def \utf@end #1\@@ {\relax }
+
+\def \utf@next {% save and deposit character
+\sc@put \utf@word }
+
+\def \utf@asci #1{% deposit ASCII item
+\def \sc@char {#1}\utf@next }
+
+{\catcode `\% 12 \gdef \a@pc {%}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \utf@dvi #1{% segment D6
+ \u@lb `#1\relax \advance \u@lb -128
+ \u@lq \u@lb \divide \u@lq 8
+ \edef \sc@char {}%
+\ifcase \u@lq \or \or \or \or \or
+\or \advance \u@lb -48 \edef \sc@char
+ {\ifcase \u@lb
+ "\n@xp\a@e\or "\n@xp\a@I\or "\n@xp\a@A\or "\n@xp\a@O\or
+ "i\or "\n@xp\a@E\or "e\or "a\or
+ \fi }%
+\or \advance \u@lb -56 \edef \sc@char
+ {\ifcase \u@lb
+ "A\or "\n@xp\a@o\or L\or "u\or
+ "\n@xp\a@Zu\or |\or B\or "\n@xp\a@Zo\or
+ \fi }%
+\fi \utf@next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \utf@dvii #1{% segment D7
+ \u@lb `#1\relax \advance \u@lb -128
+ \u@lq \u@lb \divide \u@lq 8
+\ifcase \u@lq \edef \sc@char
+ {\ifcase \u@lb
+ K\or "\n@xp\a@Ze\or "\n@xp\a@Za\or :\or "\n@xp\a@Zi\or \or \or \or
+ \fi }%
+\or \advance \u@lb -8 \edef \sc@char {}%
+\or \advance \u@lb -16 \edef \sc@char
+ {\ifcase \u@lb
+ Q\or b\or g\or d\or h\or w\or z\or X\or
+ \fi }%
+\or \advance \u@lb -24 \edef \sc@char
+ {\ifcase \u@lb
+ C\or y\or k\or k\or l\or m\or m\or n\or
+ \fi }%
+\or \advance \u@lb -32 \edef \sc@char
+ {\ifcase \u@lb
+ n\or s\or P\or p\or p\or S\or S\or q\or
+ \fi }%
+\or \advance \u@lb -40 \edef \sc@char
+ {\ifcase \u@lb
+ r\or \n@xp\a@S \or t\or \or \or \or \or \or
+ \fi }%
+\or \advance \u@lb -48 \edef \sc@char
+ {\ifcase \u@lb
+ w\n@xp\a@U w\or wy\or y\n@xp\a@U y\or '\or
+ ''\or \or \or \or
+ \fi }%
+\or \advance \u@lb -56 \edef \sc@char
+ {\ifcase \u@lb
+ \or \or \or \or \or \or \or "|\or
+ \fi }%
+\fi \utf@next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \utf@dviii #1{% segment D8
+ \u@lb `#1\relax \advance \u@lb -"80
+ \u@lq \u@lb \divide \u@lq 8
+\ifcase \u@lq \edef \sc@char {}%
+\or \advance \u@lb -8 \edef \sc@char {\ifcase \u@lb
+ \or \or \or \or ,\or \or \or \or \fi }%
+\or \advance \u@lb -"10 \edef \sc@char {}%
+\or \advance \u@lb -"18 \edef \sc@char {\ifcase \u@lb
+ \or \or \or ;\or \or \or \or ?\or \fi }%
+\or \advance \u@lb -"20 \edef \sc@char {\ifcase \u@lb
+ \or Q|\or QA\or Qa\or Qw\or Qi\or Qy\or A\or \fi }%
+\or \advance \u@lb -"28 \edef \sc@char {\ifcase \u@lb
+ b\or T\or t\or C\or G\or H\or X\or d\or \fi }%
+\or \advance \u@lb -"30 \edef \sc@char {\ifcase \u@lb
+ F\or r\or z\or s\or x\or S\or D\or V\or \fi }%
+\or \advance \u@lb -"38 \edef \sc@char {\ifcase \u@lb
+ Z\or P\or R\or \or \or \or \or \or \fi }%
+\fi \utf@next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \utf@dix #1{% segment D9
+ \u@lb `#1\relax \advance \u@lb -"80
+ \u@lq \u@lb \divide \u@lq 8
+\ifcase \u@lq \edef \sc@char {\ifcase \u@lb
+ B\or f\or q\or k\or l\or m\or n\or h\or \fi }%
+\or \advance \u@lb -8 \edef \sc@char {\ifcase \u@lb
+ w\or Y\or y\or "aN\or "uN\or "iN\or "a\or "u\or \fi }%
+\or \advance \u@lb -"10 \edef \sc@char {\ifcase \u@lb
+ "i\or "\n@xp\a@Ze\or ""\or "\n@xp\a@ZE\or
+ "\n@xp\a@Za\or "\n@xp\a@Zu\or \or \or \fi }%
+\or \advance \u@lb -"18 \edef \sc@char {}%
+\or \advance \u@lb -"20 \edef \sc@char {\ifcase \u@lb
+ 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or \fi }%
+\or \advance \u@lb -"28 \edef \sc@char {\ifcase \u@lb
+ 8\or 9\or \a@pc\or \f@sila\or
+ \f@sila\or *\or \or \or \fi }%
+\or \advance \u@lb -"30 \edef \sc@char {\ifcase \u@lb
+ "\n@xp\a@a\or "\or "\n@xp\a@ZA\or "\n@xp\a@ZU\or
+% N"\n@xp\a@Za\or Qa\or Qw\or Qw"u\or \fi }%
+N"\n@xp\a@Za\or N"\n@xp\a@Za A\or N"\n@xp\a@Za w\or N"\n@xp\a@Za w"u\or \fi }%
+\or \advance \u@lb -"38 \edef \sc@char {\ifcase \u@lb
+% Qy\or \n@xp\a@t\or \n@xp\a@T\or \n@xp\a@ab\or
+ N"\n@xp\a@Za Y\or \n@xp\a@t\or \n@xp\a@T\or \n@xp\a@ab\or
+ \n@xp\a@v\or \n@xp\a@at\or p\or \n@xp\a@ac\or \fi }%
+\fi \utf@next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \utf@da #1{% segment DA
+ \u@lb `#1\relax \advance \u@lb -"80
+ \u@lq \u@lb \divide \u@lq 8
+\ifcase \u@lq \edef \sc@char {\ifcase \u@lb
+ \n@xp\a@ap\or c\or \n@xp\a@G\or \n@xp\a@ag\or
+ \n@xp\a@ah\or \n@xp\a@c\or J\or \n@xp\a@aj\or \fi }%
+\or \advance \u@lb -8 \edef \sc@char {\ifcase \u@lb
+ \n@xp\a@d\or \n@xp\a@aA\or \n@xp\a@D\or \n@xp\a@aB\or
+ \n@xp\a@ad\or \n@xp\a@af\or \n@xp\a@aC\or \n@xp\a@ae\or \fi }%
+\or \advance \u@lb -"10 \edef \sc@char {\ifcase \u@lb
+ \n@xp\a@aD\or \n@xp\a@r\or \n@xp\a@aF\or \n@xp\a@q\or
+ \n@xp\a@aG\or \n@xp\a@R\or \n@xp\a@z\or \n@xp\a@aH\or \fi }%
+\or \advance \u@lb -"18 \edef \sc@char {\ifcase \u@lb
+ j\or \n@xp\a@ar\or \n@xp\a@s\or \n@xp\a@aJ\or
+ \n@xp\a@aK\or \n@xp\a@aL\or \n@xp\a@aM\or \n@xp\a@aO\or \fi }%
+\or \advance \u@lb -"20 \edef \sc@char {\ifcase \u@lb
+ \n@xp\a@p\or \n@xp\a@f\or \n@xp\a@F\or \n@xp\a@aP\or
+ v\or \n@xp\a@V\or \n@xp\a@aq\or \n@xp\a@aQ\or \fi }%
+\or \advance \u@lb -"28 \edef \sc@char {\ifcase \u@lb
+ \n@xp\a@aR\or \n@xp\a@k\or \n@xp\a@ax\or \n@xp\a@g\or
+ \n@xp\a@L\or K\or \n@xp\a@aS\or g\or \fi }%
+\or \advance \u@lb -"30 \edef \sc@char {\ifcase \u@lb
+ \n@xp\a@J\or \n@xp\a@al\or \n@xp\a@aT\or \n@xp\a@ak\or
+ \n@xp\a@M\or \n@xp\a@l\or \n@xp\a@aW\or \n@xp\a@aX\or \fi }%
+\or \advance \u@lb -"38 \edef \sc@char {\ifcase \u@lb
+ \n@xp\a@aY\or \n@xp\a@aZ\or \n@xp\a@n\or \n@xp\a@an\or
+ \n@xp\a@m\or \n@xp\a@am\or h-\or \n@xp\a@aE\or \fi }%
+\fi \utf@next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \utf@db #1{% segment DB
+ \u@lb `#1\relax \advance \u@lb -"80
+ \u@lq \u@lb \divide \u@lq 8
+\ifcase \u@lq \edef \sc@char {\ifcase \u@lb
+ Qh\or \n@xp\a@h\or \n@xp\a@B\or \n@xp\a@j\or
+ \n@xp\a@aU\or \n@xp\a@aV\or \n@xp\a@W\or \n@xp\a@w\or \fi }%
+\or \advance \u@lb -8 \edef \sc@char {\ifcase \u@lb
+ \n@xp\a@aw\or \n@xp\a@au\or \n@xp\a@av\or \n@xp\a@X\or
+ Y\or L\or \n@xp\a@az\or \n@xp\a@x\or \fi }%
+\or \advance \u@lb -"10 \edef \sc@char {\ifcase \u@lb
+ \n@xp\a@Y\or \n@xp\a@y\or E\or \n@xp\a@ay\or
+ B\or \n@xp\a@H\or \or \or \fi }%
+\or \advance \u@lb -"18 \edef \sc@char {}%
+\or \advance \u@lb -"20 \edef \sc@char {}%
+\or \advance \u@lb -"28 \edef \sc@char {}%
+\or \advance \u@lb -"30 \edef \sc@char {\ifcase \u@lb
+ 0\or 1\or 2\or 3\or
+ 4\or 5\or 6\or 7\or \fi }%
+\or \advance \u@lb -"38 \edef \sc@char {\ifcase \u@lb
+ 8\or 9\or \n@xp\a@aI\or \n@xp\a@aN\or
+ \n@xp\a@P\or \n@xp\a@ai"\n@xp\a@Zi\or
+ \n@xp\a@ao"\n@xp\a@Zi\or \or \fi }%
+\fi \utf@next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \utf@alif {% alif at the beginning of a word
+\def \sc@char {a}\sc@put \utf@word }
+
+\def \utf@minus {% hyphen between words
+\def \sc@char {-}\sc@put \utf@beg }
+%\def \sc@char {B}\sc@put \utf@beg }
+
+\def \utf@lquote {% left quote
+\ifa@quote \def \sc@char {'}\global\a@quotefalse
+\else \def \sc@char {`}\global\a@quotetrue
+\fi \sc@put \utf@beg }
+
+\def \utf@rquote {% right quote
+\global\a@quotefalse \def \sc@char {'}\sc@put \utf@word }
+
+\def \utf@par #1\@ \@@ {% new line, push back the rest
+\sc@back \\#1\@ \@@ }
+
+\def \utf@b@cs #1#2{% test word end
+\def \sc@char {#1}\sc@put
+%\ifx #2\@ \def \next {\sc@endscan #2}\else
+\ifx #2\@ \def \next {\utf@end #2}\else
+\ifcat -\nxp #2 \def \next {\utf@word #2}\else
+\def \next {\sc@back #2}\fi \fi \next }
+
+\def \utf@cs #1#2{% control sequence within a word; push back?
+\xpa \ifx #1\closegeresh \def \next {\utf@b@cs {\nxp \lq }#2}\else
+\xpa \ifx #1\closequote \def \next {\utf@b@cs {`}#2}\else
+ \def \next {\sc@back #1#2}%
+\fi\fi \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\catcode `\@ = \utfatcode
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/verses.sty b/language/arabic/arabtex/texinput/verses.sty
new file mode 100644
index 0000000000..5845f76002
--- /dev/null
+++ b/language/arabic/arabtex/texinput/verses.sty
@@ -0,0 +1,106 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% verses.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% verses.sty
+% utility for ArabTeX
+% macros for typesetting Arabic verses in two columns
+% usage: load as a package, or after loading ArabTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+% 08.02.2006
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Usage:
+% (use within an Arabic environment)
+%
+% \setversedim #1#2 % define the layout (within a group):
+% #1 = length of both half-verses
+% #2 = separation distance = length of a connection, if present
+% Variant:
+% \setversedim #1[#2]#3 % for half-verses of unequal length
+% #1 = length of first (=right) half-verse
+% #2 = length of second (=left) half-verse
+% #3 = separation distance = length of a connection, if present
+%
+% \halfverses #1#2 % typeset two separated half-verses
+% #1 = text of first (=right) half-verse
+% #2 = text of second (=left) half-verse
+% Variant:
+% \halfverses #1[#2]#3 % typeset two connected half-verses
+% #1 = text of first (=right) half-verse
+% #2 = text of connection
+% #3 = text of second (=left) half-verse
+%
+% Alternative (if preferred):
+%
+% \connverses #1#2#3 % = \halfverses #1[#2]#3
+%
+% Note: use keshide to attach the connection, if required
+% Note: if the verses do not fit on the line, they will be put on
+% two lines, flush to the margins.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \verseatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \verseatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {verses.sty} {3.12 verses in two columns} {08.02.2006}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% define the layout, verses will be centered
+
+\newdimen \a@hvlen \newdimen \a@hvsep
+\newdimen \a@hvind \newdimen \a@@hvlen
+
+\def \setversedim #1#2{% set lengths of half-verse, [separation]
+\ifx \LaTeX \undefined \a@hvind \hsize
+\else \a@hvind \textwidth \fi
+\a@hvlen #1\relax \advance \a@hvind -\a@hvlen
+\ifx [#2\def \next {\set@verseI [}\else
+\a@@hvlen \a@hvlen \def \next {\set@@verse {#2}}\fi \next }
+
+\def \set@verseI [#1]{% optional parameter
+\a@@hvlen #1\relax \set@@verse }
+
+\def \set@@verse #1{% separation
+\advance \a@hvind -\a@@hvlen \a@hvsep #1\relax
+\advance \a@hvind -\a@hvsep \divide \a@hvind 2 }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \connverses #1#2#3{% first half-verse, connection, second half-verse
+\cond{\ifdim 0pt > \a@hvind }%
+{\spreadbox \a@hvlen {#1}\\ \hfill }% first block
+{\noindent \hskip \a@hvind \relax \spreadbox \a@hvlen {#1}}\fi
+\spreadbox \a@hvsep {#2}% separator
+\spreadbox \a@@hvlen {#3}% second block
+\tracingmacros 0
+\par }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% macro for two half verses
+\def \halfverses #1#2{% normal case
+\connverses {#1}{\hfill}{#2}}
+
+\def \a@c@halfverses #1#2{% optional parameter?
+%\tracingmacros 1
+\cond{\ifx [#2}{\half@verses {#1}[}%
+{\half@verses {#1}[\hfill]{#2}}\fi }
+
+\def \half@verses #1[#2]#3{% first[mid]second
+\test@token \connverses {#1}{#2}{#3}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% define a default layout
+% do this within a group!
+
+%\setversedim {2.0in}{0.3in}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% make macros known to ArabTeX
+\allowarab \connverses \all@wtw@ \setversedim
+
+\catcode `\@ = \verseatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/witbhs.sty b/language/arabic/arabtex/texinput/witbhs.sty
new file mode 100644
index 0000000000..ced1700841
--- /dev/null
+++ b/language/arabic/arabtex/texinput/witbhs.sty
@@ -0,0 +1,209 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% witbhs.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% witbhs.sty
+% Scanner for a variant of the encoding used in the machine-readable
+% Biblia Hebraica Stuttgartensia
+% to install it, include it as a LaTeX package or style option "witbhs"
+% with Plain TeX, say "\input witbhs.sty"
+% to activate it, say "\setcode {witbhs}
+% 14.09.2001
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% about the encoding contact: arian@th.vu.nl
+% Dr Arian J.C.Verheij
+% NWO / VU, Dpt. Biblical Studies & CS
+% De Boelelaan 1105, kr. 14A-38
+% NL 1081 HV Amsterdam
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \bhsatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \bhsatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {witbhs.sty} {3.10 read WITBHS Hebrew encoding} {14.09.2001}
+
+\UsePackage {bhslabel} % process BHS labels
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for WITBHS Hebrew coding
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\"=12 \catcode `\>=11 \catcode `\&=12
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setwitbhs@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@A {a} \def \sc@B {b} \def \sc@C {x} \def \sc@D {d}
+\def \sc@E {e} \def\sc@F{\n@xp\a@s} \def\sc@G{g} \def \sc@H {h}
+\def \sc@I {i} \def \sc@J {y} \def \sc@K {k} \def \sc@L {l}
+\def \sc@M {m} \def \sc@N {n} \def\sc@O{\n@xp\a@o}\def \sc@P {p}
+\def \sc@Q {q} \def \sc@R {r} \def \sc@S {s} \def \sc@T {t}
+\def \sc@U {u} \def \sc@V {C} \def \sc@W {w} \def \sc@X {X}
+\def \sc@Y {S} \def \sc@Z {z} \def \sc@@ {A}
+\a@digits = {0123456789} \a@paren = {[]}
+\a@first = {>+<##&$":.,*0123456789}
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for WITBHS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+{\arab@codes \catcode `\> 11
+
+\gdef \witbhs@beg #1#2{% start WITBHS scanner
+\@ssimfalse \def \next {\witbhs@word #1#2}%
+\ifx #1\@\def \next {\sc@endscan #2}\else % finished
+\ifx #2\@\def \next {\witbhs@testpara #1#2}\else
+\ifx #2?\def \next {\witbhs@testpara #1#2}\else
+\fi\fi\fi \next }
+
+\gdef \witbhs@word #1#2{% transform input into internal notation
+\case #1\of
+{ \@{\sc@endscan #2}
+ ]{\witbhs@word }
+ /{\witbhs@word #2}
+ 0{\witbhs@zero #2}
+ 7{\witbhs@seven #2}
+ 12345689{\witbhs@word }
+ ?{\witbhs@query #2}
+ :{\witbhs@colon #2}
+% O{\witbhs@O #2}
+ W{\witbhs@W #2}
+ *{\witbhs@star #2}
+% #2{\witbhs@word #1|#2}
+\default {\witbhs@rest #1#2}
+}\endcase }
+
+\gdef \witbhs@rest #1#2{% transform input into internal notation
+ \def \next {\sc@put \witbhs@word #2}%
+\case #1\of
+{ .{\def \sc@char {\nxp \a@Zu }}
+ |{\def \sc@char {\nxp \a@U }}
+ '{\def \sc@char {'}}
+ >{\def \sc@char {Q}}
+ +{\def \sc@char {N}} % phantom carrier
+ ${\def \sc@char {M}} % phantom carrier
+ ={\def \sc@char {-}} % medial form at end
+ <{\def \sc@char {P}}
+ &{\def \sc@char {\nxp \a@s }}
+ ;{\def \sc@char {\nxp \a@E }}
+ -{\def \sc@char {B}}
+\default {\ifcat \nxp #1\relax \def \next {\sc@back #1{#2}}\else
+ \if \nxp #1\a@hash \def \sc@char {\nxp \a@S }\else
+ \ifcat \nxp #1a\edef \sc@char {\csname sc@#1\endcsname }%
+ \fi\fi\fi }
+}\endcase \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \witbhs@star {% qere / qetiv
+\def \sc@char {*}\sc@put \witbhs@word }
+
+\gdef \witbhs@colon #1{% shwa or chatef
+\def \next {\witbhs@word }%
+\ifx #1A\def \sc@char {\nxp \a@A }\else
+\ifx #1@\def \sc@char {\nxp \a@O }\else
+\ifx #1E\def \sc@char {\nxp \a@I }\else
+\def \sc@char {\nxp \a@e }\def \next {\witbhs@word #1}%
+\fi\fi\fi \sc@put \next }
+
+\iffalse
+\gdef \witbhs@O {% cholem or cholem waw
+\def \sc@char {\nxp \a@o }\sc@put \witbhs@word }
+\fi
+
+\gdef \witbhs@W #1{% waw or shureq
+\def \sc@char {w}\def \next {\witbhs@word #1}%
+\ifx #1.\def \sc@char {U}\def \next {\witbhs@word }%
+\fi \sc@put \next }
+
+\gdef \witbhs@seven #1{% meteg
+\def \next {\witbhs@word }%
+\ifx #15\def \sc@char {|}\sc@put \else
+\if\is@in@set #1\a@digits \else \def \next {\witbhs@word #1}%
+\fi\fi \next }
+
+\gdef \witbhs@zero #1{% sop pasuq and pasuq
+\def \next {\witbhs@word }%
+\ifx #10\def \sc@char {:}\sc@put \else
+%\ifx #15\def \sc@char {K}\sc@put \else
+\ifx #15\def \next {\witbhs@pasuq }\else
+\if\is@in@set #1\a@digits \else \def \next {\witbhs@word #1}%
+\fi\fi\fi \next }
+
+}% \arab@codes
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \witbhs@testpara #1#2{% single initial P ?
+\ifx #1P\def \next {\witbhs@para #1#2}%
+\else \def \next {\witbhs@word #1#2}%
+\fi \next }
+
+\def \a@c@witbhspara {% small paragraph mark
+\putwordb@x {\small \heb@font \heb@testfont
+\act@cd '164 \advance \act@cd \heb@dsp
+\space \char \act@cd \space }\test@token }
+
+\def \a@c@pasuq {% verse division
+\putwordb@x {\small $\!|\!$}\test@token }
+
+\def \witbhs@para P#1\@ \@@ {% prepare paragraph mark
+\sc@back \witbhspara #1\@ \@@ }
+
+\def \witbhs@pasuq #1\@ \@@ {% prepare verse division
+\sc@back \pasuq #1\@ \@@ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \witbhs@query #1\@ \@@ {% new line, push back the rest
+\ifnum \bhsmode = 1 \sc@back \\#1\@ \@@ \else % finish line
+\ifnum \bhsmode = 2 \sc@back \|#1\@ \@@ \else % stretch line
+ \sc@back #1\@ \@@ % start next word
+\fi\fi }
+
+\newcount \bhsmode \bhsmode 0
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \set@witbhs {% substitute the BHS scanner
+\let \sc@beg \witbhs@beg \let \sc@word \witbhs@word
+\let \sc@back \sc@@back \let \sc@endscan \sc@@endscan
+\let \a@scan \a@@scan \setwitbhs@codes
+\let \arab@codes \wit@arab@codes
+\let \unarab@codes \wit@unarab@codes
+\a@message {input encoding set to WITBHS conventions}}
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the BHS encoding
+witbhs\set@witbhs }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \wit@arab@codes {% save and set special characters
+\csname originalTeX\endcsname
+\chardef \spc@de = \catcode`\ \catcode`\ = 10
+\chardef \dqc@de = \catcode`\" \catcode`\" = \@other
+\chardef \lsc@de = \catcode`\< \catcode`\< = \@other
+\chardef \gtc@de = \catcode`\> \catcode`\> = 11
+\chardef \atc@de = \catcode`\@ \catcode`\@ = 11
+\chardef \hsc@de = \catcode`\# \catcode`\# = \@other
+\chardef \amc@de = \catcode`\& \catcode`\& = \@other
+\arab@charsubdefmax \charsubdefmax \charsubdefmax \m@ne }
+
+\def \wit@unarab@codes {% reset catcodes
+\catcode`\ = \spc@de \catcode`\< = \lsc@de \catcode`\" = \dqc@de
+\catcode`\# = \hsc@de \catcode`\> = \gtc@de \catcode`\@ = \atc@de
+\catcode`\& = \amc@de
+\charsubdefmax \arab@charsubdefmax }
+
+{\catcode`\# = \@other \gdef \a@hash {#}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {scanner for WITBHS encoding installed.}
+
+\catcode `\@ = \bhsatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/language/arabic/arabtex/texinput/xarbskel.sty b/language/arabic/arabtex/texinput/xarbskel.sty
new file mode 100644
index 0000000000..522c8120bc
--- /dev/null
+++ b/language/arabic/arabtex/texinput/xarbskel.sty
@@ -0,0 +1,126 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% xarbskel.sty
+% ArabTeX
+% character skeleton definitions for font xnsh14
+% called in HMODE
+% extends arabskel.sty
+% Version 17.07.1999
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \sklatcode = \catcode`\@ \catcode`\@ = 11
+\a@ident {xarbskel.sty}{3.09 character skeleton definitions }{17.07.1999}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Arabic
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\gdef \setx@skels {% define \ArabTeX character skeletons for font xnsh
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% pattern: class, code, connect, {iso, fin, med, ini}
+\gdef \sk@@ {10 ,\a@block ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % illegal
+\gdef \sk@def {10 ,\a@block ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % default
+
+% basic letters
+\gdef \sk@a {10 ,\a@alif ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % alif
+\gdef \sk@ain { 4 ,\a@ain ,1 ,{{4,0}{4,1}{0,0}{0,0}}} % `ain
+\gdef \sk@b { 1 ,\a@bah ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % bah, no dot
+\gdef \sk@b@p { 9 ,\a@bah@p ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % bah, loop
+\gdef \sk@d {10 ,\a@dal ,0 ,{{0,0}{0,0}{0,2}{0,0}}} % dal
+\gdef \sk@d@p {10 ,\a@dal@p ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % dal, loop
+\gdef \sk@f@s { 6 ,\a@fah@s ,1 ,{{0,5}{0,5}{0,0}{0,0}}} % fah, no dot
+\gdef \sk@g { 5 ,\a@gaf ,1 ,{{0,2}{0,4}{0,0}{0,0}}} % gaf
+\gdef \sk@g@p { 5 ,\a@gaf@p ,1 ,{{0,2}{0,4}{0,0}{0,0}}} % gaf, loop
+\gdef \sk@g@s { 5 ,\a@gaf@s ,1 ,{{0,2}{0,3}{0,0}{0,0}}} % gaf, bar
+\gdef \sk@g@ps{ 5,\a@gaf@p@s,1 ,{{0,2}{0,3}{0,0}{0,0}}} % gaf, loop, bar
+\gdef \sk@h {10 ,\a@hah ,1 ,{{0,0}{0,-1}{0,0}{0,0}}} % hah
+\gdef \sk@h@m {10 ,\a@hah ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % hah marbouta
+\gdef \sk@h@s {10 ,\a@h@s ,1 ,{{1,0}{0,0}{0,0}{0,0}}} % urdu hah
+\gdef \sk@h@u {10,\a@hah@urd,1 ,{{1,0}{0,0}{0,0}{0,0}}} % urdu hah
+\gdef \sk@hh { 3 ,\a@hhah ,1 ,{{4,0}{4,0}{0,0}{0,2}}} % hhah
+\gdef \sk@k { 5 ,\a@kaf ,1 ,{{0,2}{0,3}{0,0}{0,-1}}} % kaf
+\gdef \sk@k { 5 ,\a@kaf ,1 ,{{6,-1}{6,-1}{6,-2}{6,-3}}} % kaf
+\gdef \sk@k@p { 5 ,\a@kaf@p ,1 ,{{0,2}{0,2}{0,0}{0,-1}}} % kaf, loop
+\gdef \sk@k@s { 5 ,\a@kaf@s ,1 ,{{0,2}{0,3}{0,0}{0,-1}}} % kaf, no mark
+\gdef \sk@k@s { 5 ,\a@kaf@s ,1 ,{{0,2}{0,3}{6,-3}{6,-2}}} % kaf, no mark
+\gdef \sk@k@w { 5 ,\a@kaf@w ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % wide kaf
+\gdef \sk@kh { 3 ,\a@khah ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % khah
+\gdef \sk@l { 0 ,\a@lam ,1 ,{{0,3}{0,2}{0,0}{0,0}}} % lam
+\gdef \sk@l@w { 0 ,\a@lam@l ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % lower lam
+\gdef \sk@m {10 ,\a@mim ,1 ,{{0,1}{0,0}{0,0}{0,0}}} % mim
+\gdef \sk@n { 1 ,\a@nun ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % nun, no dot
+\gdef \sk@n@p { 9 ,\a@nun@p ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % nun, loop
+\gdef \sk@q { 6 ,\a@qaf ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % qaf
+\gdef \sk@q@s { 6 ,\a@qaf@s ,1 ,{{0,2}{0,2}{0,0}{0,0}}} % qaf without dots
+\gdef \sk@r { 8 ,\a@rah ,0 ,{{0,2}{0,1}{0,0}{0,0}}} % rah
+\gdef \sk@r@p { 8 ,\a@rah@p ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % rah, loop
+\gdef \sk@r@s { 8 ,\a@rah@s ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % rah, two dots
+\gdef \sk@s { 2 ,\a@sin ,1 ,{{0,6}{0,4}{0,1}{0,3}}} % sin
+\gdef \sk@ss { 2 ,\a@sad ,1 ,{{0,4}{0,4}{0,1}{0,2}}} % ssad
+\gdef \sk@tt { 7 ,\a@ttah ,1 ,{{0,2}{0,2}{0,1}{0,1}}} % ttah
+\gdef \sk@w {10 ,\a@waw ,0 ,{{0,1}{0,1}{0,0}{0,0}}} % waw
+\gdef \sk@w@r {10 ,\a@waw@r ,0 ,{{0,1}{0,1}{0,0}{0,0}}} % waw with ring
+\gdef \sk@w@b {10 ,\a@waw@b ,0 ,{{0,1}{0,1}{0,0}{0,0}}} % waw with bar
+\gdef \sk@y { 1 ,\a@yah ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % yah
+\gdef \sk@y@h { 1 ,\a@yah@h ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % yah, stroke
+\gdef \sk@y@p { 1 ,\a@yah@p ,1 ,{{0,1}{0,2}{0,0}{0,0}}} % yah bari
+\gdef \sk@y@ps{ 9,\a@yah@p@s,1 ,{{0,1}{0,2}{0,0}{0,0}}} % yah bari with loop
+
+% special forms
+\gdef \sk@sn@s { 2 ,\a@sin@spec ,1 ,{{0,6}{0,4}{0,-2}{0,-1}}} % sin short
+\gdef \sk@sd@s { 2 ,\a@sad@spec ,1 ,{{0,4}{0,4}{0,-3}{0,-2}}} % ssad short
+\gdef \sk@j@cl { 3 ,\a@gim@close ,1 ,{{0,0}{0,0}{0,0}{0,1}}} % gim closed
+\gdef \sk@k@sh { 5 ,\a@kaf@spec ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % kaf, short
+\gdef \sk@k@sh { 5 ,\a@kaf@spec ,1 ,{{6,0}{6,0}{6,0}{6,-3}}} % kaf, short
+\gdef \sk@k@sp { 5 ,\a@kaf@p@spec ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % gaf1 short
+\gdef \sk@g@sh { 5 ,\a@gaf@spec ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % gaf- short
+\gdef \sk@g@sp { 5 ,\a@gaf@p@spec ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % gaf2 short
+\gdef \sk@y@s { 1 ,\a@yah@spec ,1 ,{{0,0}{0,2}{0,0}{0,0}}} % yah lig
+\gdef \sk@y@h@s { 1 ,\a@yah@h@spec ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % yah' lig
+\gdef \sk@hh@s { 3 ,\a@hhah@spec ,1 ,{{4,0}{4,6}{0,1}{0,0}}} % hhah short
+\gdef \sk@kh@s { 3 ,\a@khah@spec ,1 ,{{0,0}{0,0}{0,1}{0,0}}} % khah short
+\gdef \sk@l@a {10 ,\a@lam@alif ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % lam-alif
+\gdef \sk@m@si {10 ,\a@mim@sind ,1 ,{{0,2}{0,0}{0,0}{0,0}}} % Sindhi mim
+
+% specials
+\gdef \sk@B {10 ,\a@tatwil,1 ,{{0,0}{0,0}{0,0}{0,0}}} % tatwil
+\gdef \sk@Q {10 ,\a@hamzc ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % hamza char
+\gdef \sk@W {10 ,\a@break ,0 ,{{0,0}{0,0}{0,0}{0,0}}} % small space 34
+\gdef \sk@spc {10 ,\a@smspc ,1 ,{{0,0}{0,0}{2,0}{2,0}}} % small space 36
+\gdef \sk@skip{10 ,\a@skip ,1 ,{{0,0}{0,0}{2,0}{2,0}}} % small space 37
+
+% ligatures
+\gdef \sk@b@sp { 1 ,\a@bah@spec ,1 ,{{0,0}{0,0}{0,0}{0,1}}} % r-b-?
+\gdef \sk@b@g { 1 ,\a@bah@spec@gim ,1 ,{{0,0}{0,0}{0,2}{0,4}}} % j-b-?
+\gdef \sk@b@h { 1 ,\a@bah@high ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % s-b-?
+\gdef \sk@b@y { 1 ,\a@bah@spec@yah ,1 ,{{0,0}{0,0}{0,-1}{0,0}}} % y-b-?
+\gdef \sk@b@e@m { 1 ,\a@bah@end@mim ,1 ,{{0,0}{0,0}{0,1}{0,0}}} % m-b-?
+\gdef \sk@b@m@m { 1 ,\a@bah@mid@mim ,1 ,{{0,0}{0,0}{2,2}{2,2}}} % m-b-?
+\gdef \sk@b@e@h { 1 ,\a@bah@end@hah ,1 ,{{0,0}{0,0}{2,2}{0,0}}} % h-b-?
+\gdef \sk@h@s@l {10 ,\a@hah@spec@lam ,1 ,{{1,0}{0,0}{1,-3}{0,0}}} % E-h-?
+\gdef \sk@l@h { 0 ,\a@lam@spec@hah ,1 ,{{0,0}{0,0}{0,0}{0,-3}}} % m-l-|
+\gdef \sk@l@g { 0 ,\a@lam@gim ,1 ,{{0,0}{0,0}{0,0}{0,4}}} % j-l-|
+\gdef \sk@l@g@s { 0 ,\a@lam@gim ,1 ,{{0,0}{0,0}{0,0}{0,1}}} % j-l-|
+\gdef \sk@l@y { 0 ,\a@lam@spec@yah ,1 ,{{0,0}{0,0}{0,1}{0,0}}} % j-l-?
+\gdef \sk@l@m { 0 ,\a@lam@spec@mim ,1 ,{{0,0}{0,0}{0,0}{0,-2}}} % m-l-|
+\gdef \sk@l@lng { 0 ,\a@lam@long ,1 ,{{0,0}{0,0}{0,0}{0,1}}} % y-l-|
+\gdef \sk@m@s {10 ,\a@mim@spec ,1 ,{{0,0}{0,-1}{0,2}{0,2}}} % ?-m-l
+\gdef \sk@m@s@h {10 ,\a@mim@spec@high,1 ,{{0,0}{0,0}{0,0}{0,0}}} % j-m-|
+\gdef \sk@m@s@l {10 ,\a@mim@spec@long,1 ,{{0,0}{0,0}{0,-1}{0,0}}} % ?-m-l
+\gdef \sk@m@s@m {10 ,\a@mim@spec@mim ,1 ,{{0,0}{0,0}{0,5}{0,0}}} % m-m-|
+\gdef \sk@m@l@g {10 ,\a@mim@lam@gim ,1 ,{{0,0}{0,0}{0,0}{0,0}}} % j-m-l
+\gdef \sk@l@spc {10 ,\a@smspc ,1 ,{{0,0}{0,0}{0,0}{0,-4}}} % small space
+
+\global\let \sk@free \sk@W % phantom for outtable
+
+\global\let \sk@b@s \sk@b
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}}% end of dynamic definitions for Arabic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\catcode`\@ = \sklatcode
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/language/arabic/arabtex/texinput/xarbsymb.sty b/language/arabic/arabtex/texinput/xarbsymb.sty
new file mode 100644
index 0000000000..6c283aaed6
--- /dev/null
+++ b/language/arabic/arabtex/texinput/xarbsymb.sty
@@ -0,0 +1,213 @@
+%%%%%%%%%%%%%%%%%%%% xarbsymb.sty %%%%%%%%%%%%%%%%%%%%
+% 15.7.1998 16:19:14
+% code assignments for arabic font in ArabTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+% 15.07.98
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {xarbsymb.sty} {3.07 symbolic output encoding } {15.07.1998}
+
+\chardef \a@nashcode = '1 % file has been read
+
+%%%%%%%%%%%%%%%%%% connection forms %%%%%%%%%%%%%%%%%%
+
+\chardef \a@f@iso = '0 % isolated
+\chardef \a@f@end = '1 % final
+\chardef \a@f@mid = '2 % medial
+\chardef \a@f@beg = '3 % initial
+
+%%%%%%%%%%%%%%%%%% diacritical marks %%%%%%%%%%%%%%%%%
+
+\chardef \a@ttah@dia = '010 % for urdu
+\chardef \a@one@dot@up = '011 %
+\chardef \a@two@dots@down = '012 %
+\chardef \a@fatha = '013 %
+\chardef \a@kasra = '013 %
+\chardef \a@damma = '014 %
+\chardef \a@hamza = '015 %
+\chardef \a@madda = '016 %
+\chardef \a@shadda = '017 %
+\chardef \a@two@dots@up = '020 %
+\chardef \a@three@dots@up = '021 %
+\chardef \a@three@dots@down = '022 %
+\chardef \a@fathatan = '023 %
+\chardef \a@kasratan = '023 %
+\chardef \a@dammatan = '024 %
+\chardef \a@sukun = '025 %
+\chardef \a@wasla = '026 %
+\chardef \a@quran@alif = '027 %
+\chardef \a@bow@dia = '030 % for kurdish
+\chardef \a@e@dia = '040 % for pashto
+\chardef \a@zwarakay = '040 % for pashto
+\chardef \a@one@dot@down = '056 % period
+\chardef \a@hamz@s = '143 % for kashmiri 0674
+\chardef \a@bars = '144 % for 06fd, 06fe
+\chardef \a@roof = '145 % for 06c9
+\chardef \a@h@dia = '146 % for urdu
+\chardef \a@ammad = '146 % for pashto
+
+\chardef \a@f@iv = '122 % farsi 4
+\chardef \a@f@v = '123 % farsi 5
+\chardef \a@f@vi = '124 % farsi 6
+
+%%%%%%%%%%%%%%%%%% letters %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \a@alif = '100 % 100,101
+\chardef \a@alif@iso = \a@alif % 100
+\chardef \a@alif@end = '101 % 101
+
+\chardef \a@lam@alif = '102 % 102,103
+\chardef \a@lam@alif@iso = \a@lam@alif % 102
+\chardef \a@lam@alif@end = '103 % 103
+
+\chardef \a@bah@s = '110 % 110-113 bah without dots
+\chardef \a@bah = \a@bah@s % 110
+\chardef \a@bah@p = '114 % 114-117 bah with loop
+
+\chardef \a@rah = '120 % 120,121
+%% zay 122 122,123
+%% zhah 124 124,125
+\chardef \a@rah@p = '126 % 126,127 rah with loop
+
+\chardef \a@hamza@iso = '132 % 132
+\chardef \a@hamzc = \a@hamza@iso % 132
+
+\chardef \a@dal = '130 % 130,131
+\chardef \a@dal@p = '136 % 136,137 dal with loop
+
+\chardef \a@gim@close = '144 % 147 closed gim
+%% gim 140 140-143
+\chardef \a@hhah = '150 % 150-153
+\chardef \a@rah@s = '156 % 156,157 rah with two dots
+\chardef \a@khah = '160 % 160-163
+%% tsah 170 170-173
+\chardef \a@rah@k = '166 % 166,167 kurdish rah
+
+\chardef \a@sin = '200 % 200-203
+\chardef \a@sin@spec = '202 % 204,205 short form
+%% shin_spec 204 206,207 short form
+\chardef \a@qaf@s = '206 % 206,207 qaf without dots
+%% shin 210 210-213
+%% sin_p 214 214,215 sin with two dots
+
+\chardef \a@sad = '220 % 220-223
+\chardef \a@sad@spec = '222 % 224,225 short form
+%% dad_spec 224 226,227 short form
+%% dad 230 230-233
+
+\chardef \a@gaf@p@spec = '224 % 226,227 short form of gaf with loop
+\chardef \a@gaf@p@s = '230 % 230-233 gaf with loop
+\chardef \a@kaf@w = '234 % 234-237 wide kaf
+
+\chardef \a@ttah = '240 % 240-243
+
+%% zzah 244 244-247
+\chardef \a@waw@r = '244 % 244,245 waw with ring
+\chardef \a@waw@b = '246 % 246,247 waw with bar
+
+\chardef \a@ain = '250 % 250-253
+\chardef \a@fah@s = '254 % 254-257 fah family
+
+\chardef \a@kaf@p@s = '260 % 260-263 kaf with loop
+\chardef \a@gaf@p = \a@kaf@p@s % 260
+\chardef \a@kaf@p = '264 % 264,265 kaf with loop and mark
+\chardef \a@kaf@p@spec = '264 % 266,267 short form of kaf with loop
+\chardef \a@kaf@s = '270 % 270-273 kaf family
+\chardef \a@kaf = '274 % 274,275
+\chardef \a@kaf@spec = '274 % 276,277 short form
+\chardef \a@gaf@s = '300 % 300-303 gaf family
+\chardef \a@gaf = '304 % 304,305
+\chardef \a@gaf@spec = '304 % 306,307 short form
+
+\chardef \a@lam = '310 % 310-313
+\chardef \a@mim = '320 % 320-323
+\chardef \a@mim@sind = '335 % 335 Sindhi final mim 06fe
+
+\chardef \a@nun = '340 % 340,341
+\chardef \a@nun@p = '342 % 342,343 nun with loop
+
+\chardef \a@hah = '350 % 350-354
+\chardef \a@hah@urd = '353 % 353,354 two-eyed hah,
+ % see hah and hah_spec_lam
+\chardef \a@hah@spec@lam = '352 % 354 medial hah after initial lam
+\chardef \a@hah@spec = '354 % 355-357 final short hah;
+\chardef \a@h@s = \a@hah@spec % 354
+ % also medial hah after sin
+
+\chardef \a@waw = '360 % 360,361
+%% fah 362 362,363
+\chardef \a@qaf = '364 % 364,365
+%% vah 366 366,367
+
+\chardef \a@yah = '370 % 370,371
+\chardef \a@yah@spec = '371 % 372 ligature for final yah
+\chardef \a@yah@h = '373 % 373,374 yah with hook
+\chardef \a@yah@h@spec = '374 % 375 ligature for yah with hook
+\chardef \a@yah@p = '376 % 376,377 long yah
+\chardef \a@yah@p@s = '366 % 366,367 long yah with loop
+
+%%%%%%%%%%%%%%%%%% special characters %%%%%%%%%%%%%%%%%%%
+
+\chardef \a@block = '000 % 000-003
+\chardef \a@tatwil = '004 % 004-007
+
+\chardef \a@rquotes = '042 % 042
+\chardef \a@period = '056 % 056
+\chardef \a@lquotes = '134 % 134
+
+\chardef \a@space@spec = '044 % 046,047 carrier for dots
+\chardef \a@smspc = \a@space@spec % 044
+\chardef \a@skip = '045 % 047 small space, initial (!)
+\chardef \a@no@break = '046 % 046 no space, breaks ligatures
+\chardef \a@break = '047 % 047 small space, medial
+
+%%%%%%%%%%%%%%%%%% ligatures %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \a@bah@spec@gim = '027 % 031 medial bah before gim
+\chardef \a@bah@beg@gim = '030 % 032 initial (!) bah before gim
+\chardef \a@g@to@mb = '031 % 033 medial bah to gim
+\chardef \a@bah@high = '032 % 034,035 before sin, sad
+\chardef \a@bah@spec = '034 % 036,037 bah before final rah, nun
+\chardef \a@lam@spec@low = '072 % 074 medial lam for 'allah'
+\chardef \a@lam@l = \a@lam@spec@low % 072
+\chardef \a@alif@spec@mim = '075 % 076 final alif after mim
+\chardef \a@bah@end@hah = '102 % 104,105 bah before final hah
+\chardef \a@bah@spec@yah = '104 % 106,107 bah before gim, with tie;
+ % also bah before yah
+%% gim_spec 143 144,145 from above
+\chardef \a@hhah@spec = '153 % 154,155 from above
+\chardef \a@khah@spec = '163 % 164,165 from above
+%% tsah_spec 173 174,175 from above
+\chardef \a@lam@gim = '311 % 314 lam on gim
+\chardef \a@lam@on@gim = '312 % 314 initial (!) lam before gim
+\chardef \a@lam@long = '312 % 315 initial lam before yah
+\chardef \a@lam@spec@yah = '314 % 316 before final yah ?
+\chardef \a@lam@spec@mim = '314 % 317 initial lam before medial mim
+\chardef \a@mim@spec@high = '322 % 324 from above
+\chardef \a@mim@spec = '324 % 325-327 final; medial after lam;
+ % also before gim
+\chardef \a@mim@spec@mim = '325 % 330 initial mim before mim
+\chardef \a@mim@lam@gim = '327 % 331 medial mim between lam and gim
+\chardef \a@lam@spec@hah = '330 % 333 initial lam before medial hah
+\chardef \a@mim@spec@long = '332 % 334 medial mim after lam, vocalized
+\chardef \a@mm@to@b = '333 % 335 bah to medial mim
+\chardef \a@bah@mid@mim = '334 % 336,337 bah before medial mim
+\chardef \a@mim@spec@alif = '342 % 344 medial mim before alif
+\chardef \a@er@to@s = '343 % 345 sin to final rah
+\chardef \a@bah@end@mim = '344 % 346 medial bah before final mim
+\chardef \a@bah@beg@mim = '345 % 347 initial (!) bah before final mim
+
+%%%%%%%%%%%%%%%%%% ties %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chardef \a@g@to@s = \a@bah@spec@gim % sin to gim
+\chardef \a@em@to@s = \a@bah@end@mim % sin to final mim
+\chardef \a@mh@to@s = \a@bah@end@hah % sin to medial hah or final mim
+\chardef \a@g@to@bb = \a@bah@beg@gim % initial bah to gim
+\chardef \a@em@to@bb = \a@bah@beg@mim % initial bah to final mim
+
+%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput
diff --git a/language/arabic/arabtex/texinput/yiddish.sty b/language/arabic/arabtex/texinput/yiddish.sty
new file mode 100644
index 0000000000..3f6e67ca70
--- /dev/null
+++ b/language/arabic/arabtex/texinput/yiddish.sty
@@ -0,0 +1,195 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% hescan.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% yiddish.sty
+% experimental scanner for Yiddish ASCII files
+% to activate it, say "\setcode {yiddish}
+% 14.06.2000
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \yidatcode \undefined \else \xpa \endinput \fi
+
+\chardef \yidatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {yiddish.sty}
+{3.10 scanner for YIVO Yiddish encoding} {14.06.2000}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for Hebrew
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setyid@codes {\seta@codes % activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@a {Q"a} \def \sc@b {b}
+\def \sc@c {@} \def \sc@d {d}
+\def \sc@e {P} \def \sc@f {f\n@xp\a@Zo}
+\def \sc@g {g} \def \sc@h {h}
+\def \sc@i {y} \def \sc@j {@}
+\def \sc@k {q} \def \sc@l {l}
+\def \sc@m {m} \def \sc@n {n}
+\def \sc@o {Q"A}\def \sc@p {\n@xp\a@f}
+\def \sc@q {@} \def \sc@r {r}
+\def \sc@s {s} \def \sc@t {t}
+\def \sc@u {w} \def \sc@v {\n@xp\a@w}
+\def \sc@w {w} \def \sc@x {@}
+\def \sc@y {y} \def \sc@z {z}
+%
+\xpa \def \csname sc@`\endcsname {Q}
+\a@digits = {0123456789} \a@paren = {()[]} \a@first = {}
+\globaldefs=0
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for Hebrew: oldcode and pccode
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yid@scan #1>{% modified scanner call: token sequence -> \a@tokens
+\iftest@scan \tracingmacros = 1
+\ifshow \else \lowercase {\a@verb #1>}\fi\fi
+\global\def \a@rest {}\global\a@tokens = {}\@ssimfalse
+\novocalize \lowercase {\sc@beg #1\@ \@@ }% transform
+\iftest@scan \tracingmacros = 0 \xpa \a@verb \xpa (\the\a@tokens )>\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \yid@beg #1{% start \ArabTeX scanner
+ \def \next {\yid@word #1}%
+\case #1\of
+{iu {\def \sc@char {Q}\sc@put }%
+a {\def \next {\y@d@a}}%
+e {\def \next {\y@d@e}}%
+o {\def \next {\y@d@o}}%
+\default{\def \sc@char {@}}%
+}\endcase \next }
+
+\def \yid@word #1{% transform input into internal notation
+% \def \next {\yid@word }%
+\ifx #1\@ \def \next {\sc@endscan }\else
+\ifcat \nxp #1\relax \def \next {\yid@cs #1}\else % control sequence
+\apply \yid@next \tocase #1\of
+{ a{\yid@a }%
+ e{\yid@e }%
+ y{\yid@y }%
+ o{\yid@o }%
+ k{\yid@k }%
+ t{\yid@t }%
+ s{\yid@s }%
+ z{\yid@z }%
+ -{\yid@B }%
+\default {\yid@@word #1}%
+}\endcase
+\fi\fi \next }
+
+\def \yid@next #1{\def \next {#1}}
+
+\def \yid@@word #1{% transform input into internal notation
+\case #1\of
+{ `{\def \sc@char {Q}}%
+ "{\def \sc@char {\a@dq}}%
+\default {\ifcat \noexpand #1a\edef \sc@char {\csname sc@#1\endcsname }%
+ \else \def \sc@char {#1}\fi}%
+}\endcase
+\sc@put \yid@word }%
+
+\def \y@d@cs #1#2{% test word end
+\def \sc@char {#1}\sc@put
+\ifx #2\@ \def \next {\sc@endscan #2}\else
+\ifcat -\nxp #2 \def \next {\yid@word #2}\else
+\def \next {\sc@back #2}\fi \fi \next }
+
+\def \yid@cs #1#2{% control sequence within a word; push back?
+\xpa \ifx #1\closegeresh \def \next {\y@d@cs {\nxp \lq }#2}\else
+\xpa \ifx #1\closequote \def \next {\y@d@cs {`}#2}\else
+ \def \next {\sc@back #1#2}%
+\fi\fi \next }
+
+\def \yid@endscan \@@ {\global\let \a@scan \yid@scan }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \y@d@a #1{% `ay ?
+\ifx #1y\def \sc@char {Q"\nxp\a@ZA}\def \next {\yid@word }\else
+\def \sc@char {Q"a}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+\def \y@d@e #1{% `ey ?
+\ifx #1y\def \sc@char {Q"\nxp\a@ZE}\def \next {\yid@word }\else
+\def \sc@char {P}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+\def \y@d@o #1{% `oy ?
+\ifx #1y\def \sc@char {Q"\nxp\a@ZO}\def \next {\yid@word }\else
+\def \sc@char {Q"A}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yid@a #1{% ay ?
+\ifx #1y\def \sc@char {"\nxp\a@ZA}\def \next {\yid@word }\else
+\def \sc@char {Q"a}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+\def \yid@e #1{% ey ?
+\ifx #1y\def \sc@char {"\nxp\a@ZE}\def \next {\yid@word }\else
+\def \sc@char {P}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+\def \yid@y #1{% yi ?
+\ifx #1i\def \sc@char {yy"i}\def \next {\yid@word }\else
+\def \sc@char {y}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+\def \yid@o #1{% oy ?
+\ifx #1y\def \sc@char {"\nxp\a@ZO}\def \next {\yid@word }\else
+\def \sc@char {Q"A}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+\def \yid@k #1{% kh ?
+\ifx #1h\def \sc@char {k}\def \next {\yid@word }\else
+\def \sc@char {q}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+\def \yid@t #1{% ts ?
+\ifx #1s\def \sc@char {S}\def \next {\yid@word }\else
+\def \sc@char {C}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+\def \yid@s #1{% sh ?
+\ifx #1h\def \sc@char {\nxp\a@S}\def \next {\yid@word }\else
+\def \sc@char {s}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+\def \yid@z #1{% zh ?
+\ifx #1h\def \sc@char {z\nxp\a@S}\def \next {\yid@word }\else
+\def \sc@char {z}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+\def \yid@B #1{% -- ?
+\ifx #1-\def \sc@char {\a@end}\def \next {\yid@word }\else
+\def \sc@char {B}\def \next {\yid@word #1}%
+\fi \sc@put \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yid@select {% select the new scanner
+\heb@catcodes % inside hebtex.sty; to make sure
+\let \sc@beg \yid@beg \let \sc@word \yid@word
+\let \sc@back \sc@@back \let \sc@endscan \yid@endscan
+\setyid@codes \global\let \a@scan \yid@scan
+\a@message {input encoding set to YIVO Yiddish conventions}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the Hebrew encodings
+yiddish\yid@select }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {scanner for YIVO Yiddish installed.}
+
+\catcode `\@ = \yidatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+