summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/arabtex/asmo449.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/arabtex/asmo449.sty')
-rw-r--r--Master/texmf-dist/tex/latex/arabtex/asmo449.sty122
1 files changed, 122 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/arabtex/asmo449.sty b/Master/texmf-dist/tex/latex/arabtex/asmo449.sty
new file mode 100644
index 00000000000..da79c8dd7a0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/arabtex/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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+