From 1e298c548919394a0daf6243076a734b9b8c2fe7 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Tue, 19 Dec 2006 14:43:13 +0000
Subject: arabi 1.1 (18dec06)

git-svn-id: svn://tug.org/texlive/trunk@2811 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/latex/arabi/arabicore.sty | 969 ++++++++++++++++++++++++
 1 file changed, 969 insertions(+)
 create mode 100644 Master/texmf-dist/tex/latex/arabi/arabicore.sty

(limited to 'Master/texmf-dist/tex/latex/arabi/arabicore.sty')

diff --git a/Master/texmf-dist/tex/latex/arabi/arabicore.sty b/Master/texmf-dist/tex/latex/arabi/arabicore.sty
new file mode 100644
index 00000000000..fa2456d7a18
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/arabi/arabicore.sty
@@ -0,0 +1,969 @@
+% \iffalse meta-comment
+%
+% Copyright 2006      Youssef Jabri
+% 
+% 
+% This file is part of the `Arabi' system.
+% -------------------------------------------
+% 
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3b
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+%    http://www.latex-project.org/lppl.txt
+% and version 1.3b or later is part of all distributions of LaTeX 
+% version 2005/12/01 or later.
+% 
+% This file has the LPPL maintenance status "maintained".
+% 
+% 
+% \fi
+%
+% Filename: `Arabicore.sty' 
+% The common Macros to Arabic and Farsi
+% The core of the Arabi package macros responsible for Right-to-Left 
+%
+% 
+\def\fileversion{1.0}
+\def\filedate{2006/01/01}
+%%%%%%%%%%%%%%%%%%%%%%%% Font Names %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Check if file is loaded and announce file on terminal:
+%
+\csname ArabiCoreLoaded\endcsname
+\let\ArabiCoreLoaded\endinput
+
+\message{\space\space Arabi Core switching commands v\fileversion\space\space\filedate}
+\message{\space\space (may still change)\space\space}
+%
+%\ProvidesPackage{arabicore}[2006/01/01 v1.0 Arabi Core switching 
+% commands (may still change)]
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%         MACROS FOR Arabic/Latin TYPESETTING			   
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Some flags to keep trace where we are 
+%
+\newif\if@rl
+\newif\if@farsi
+\newif\if@arabic
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% ArabTeX has already  \R as well as \RL command
+% While (La)TeX defines already \L
+% In addition to the fact that the Hebrew package for Babel
+% has \R and \L !!
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The \cs{R} will mean either Arabic or Farsi according to 
+% which one has been loaded last!
+%
+% To force one or the other form use instead \cs{@arabic@R} or \cs{@farsi@R}
+%
+%
+% To avoid bad surprised we use \def to define the \R control sequence, 
+% many packages ``like'' to use , like ArabTeX and the Hebrew package 
+% supporting Babel 
+
+\newcommand{\ARmbox}[1]{\mbox{\textAR{#1}}}
+\newcommand{\FRmbox}[1]{\mbox{\textFR{#1}}}
+\newcommand{\LRmbox}[1]{\mbox{\textLR{#1}}}
+\def\@ensure@R#1{\if@rl#1\else\textRL{#1}\fi}
+\def\@ensure@L#1{\if@rl\textLR{#1}\else#1\fi}
+%
+% shorthands \RL and LR necessary?
+%
+%\DeclareRobustCommand{\R}[1]{\RL{#1}}
+%\DeclareRobustCommand{\L}[1]{\LR{#1}}
+%
+% The command \L exists already to write Polish. We got some
+% complaints that this penalize all peolple using the Polish
+% Language and prevents them from using Arabi at TUG 2006.
+% This is also used by the hyperref package. So we will adapt \textLR instead.
+\def\textLR#1{\bgroup\beginL\latintext #1\endL\egroup}
+%
+
+
+
+\DeclareRobustCommand{\bbl@arabi}{% arabi NOT Arabic :)
+% Flag to detect Arabic, also responsible for the 
+% switching direction with \Arabi@rl@everypar
+\@rltrue
+%
+\hyphenpenalty=\@MM
+\binoppenalty=\@MM
+\relpenalty=\@MM
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%          Arabic formatting 
+%  ``everypar Token''  \& noindent	
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% make paragraphs Right-to-Left instead of Left-to-Right 
+% and cure the paragraph indent that will appear
+% on the left hand side of the page, instead of
+% the right if nothing is done.
+%
+% Here we define a macro \Arabi@rl@everypar
+% This avoids problems when \everypar is redefined for some reason,
+% in lists for example, and that the default Left-to-Right is restored
+% at the end!
+%
+% If we want to be able to use the paragraph indent without problems, 
+% we have to enhance the \everypar defintion a little.
+% Since a paragraph indent is created by inserting a \box at 
+% the start of the horizontal list for the paragraph, before \everypar is 
+% called. We just need to move that box so that it follows the \beginR. 
+% 
+%
+%  \def\rl@everypar{\if@rl{\setbox\z@\lastbox\beginR\usebox\z@}\fi} 
+%
+ \def\Arabi@rl@everypar{\if@rl{\setbox\z@\lastbox\beginR\usebox\z@}\fi} 
+   \let\o@everypar=\everypar 
+   \newtoks\n@everypar 
+   \n@everypar\expandafter{\the\o@everypar} 
+   \o@everypar{\Arabi@rl@everypar\the\n@everypar} 
+   \let\everypar=\n@everypar 
+
+
+\AtEndOfPackage{\edef\latinencoding{\cf@encoding}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% USE OF ARABIC NUMBERING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Not yet used!
+%
+\protect\def\arabordinal#1{"
+\ifcase#1\or ����� \or ������ 
+\or ������ \or ������ \or ������ 
+\or ������ \or ������ \or ������ 
+\or ������ \or ������
+\or ������ ���\or ������  ���
+\or ������  ���\or ������  ���\or ������  ���
+\or ������  ���\or ������  ���\or ������  ���
+\or ������  ���\or �������
+\fi}
+
+
+% Numbers in Arabic contexts, must be written as input, not reflected!
+% They are already Right-to-Left! Sometimes written in Arabic digits and 
+% other times with Arabo-Indic digits. And in Farsi they use Extended 
+% Arabo-Indic digits.
+% They have to be input using the \I control sequence or
+% the \EI control sequence.
+
+\newcommand{\I}[1]{\if@farsi\FarsiEncoding\else\ArabicEncoding\fi\beginL#1\endL}%
+\newcommand{\EI}[1]{\textLR{\FarsiEncoding  #1}}%
+
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                             abjad numerals support
+%                    defined like "\greeknumeral" macro 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% The command \abjadnumeral {#1}
+% produces the old `abjad' numeral form of the argument,
+% which must be a legal number between 1 and 1999.
+% Otherwise, the normal form is printed instead, in arabic or Latin 
+% according to the context.
+%
+\def\Aabjadnumeral#1{\textRL{%
+\ifnum#1>1999 \PackageWarning{babel}{Illegal value (#1) for abjad numeral}\I{#1}
+\else
+  \ifnum#1<\@ne\space\PackageWarning{babel}{Illegal value (#1) for abjad numeral}%
+  \else
+    \ifnum#1<10\expandafter\abj@num@i\number#1%
+    \else
+      \ifnum#1<100\expandafter\abj@num@ii\number#1%
+      \else
+        \ifnum#1<\@m\expandafter\abj@num@iii\number#1%
+        \else
+          \ifnum#1<\@M\expandafter\abj@num@iv\number#1%since #1<2000, we must have 1000
+          \fi
+        \fi
+      \fi
+    \fi
+  \fi
+\fi
+}}
+
+\def\abj@num@i#1{%
+  \ifcase#1\or \alef\or \baa\or \jeem\or \dal\or \ha\or \waw\or \zay\or \Haa\or \Ta\fi
+  \ifnum#1=\z@\fi}
+\def\abj@num@ii#1{%\ya instead of \alefmaqsura
+  \ifcase#1\or \ya\or \kaf\or \lam\or \meem\or \nun\or \seen\or \ayn\or \fa\or \sad\fi
+  \ifnum#1=\z@\fi\abj@num@i}
+\def\abj@num@iii#1{%
+  \ifcase#1\or \qaf\or \ra\or \sheen\or \taa\or \thaa \or \kha\or \dhal\or \dad\or \za\fi
+  \ifnum#1=\z@\fi\abj@num@ii}
+\def\abj@num@iv#1{%
+  \ifcase#1\or \ghayn\fi
+  \ifnum#1=\z@\fi\abj@num@iii}
+
+\def\Fabjadnumeral#1{\textFR{%
+\ifnum#1>32 \PackageWarning{babel}{Illegal value (#1) for Farsi abjad numeral}\EI{#1}
+\else\F@abjadnumber{#1}\fi}}
+
+\def\F@abjadnumber#1{\ifcase#1\or \alef\or \baa\or \peh\or \taa\or \thaa\or \jeem\or
+              \tcheh\or \Haa\or \kha\or \dal\or \dhal\or \ra\or \zay\or \jeh\or 
+              \seen\or \sheen\or \sad\or \dad\or \Ta\or \za\or \ayn\or \ghayn\or \fa\or
+              \qaf\or \kaf\or \gaf\or \lam\or \meem \or \nun\or \waw\or \ha\or\ya\fi}
+
+%
+% Internal form of abjad numerotation
+% To allow it to be used with \pagenumbering command 
+% like \pagenumbering{abjad} 
+% adapted from "ltpageno.dvi"
+%
+\def\@abjad#1{\if@farsi{\Fabjadnumeral{#1}}\else\Aabjadnumeral{#1}\fi}
+\DeclareRobustCommand{\abjadnumeral}[1]{\@abjad{#1}}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                  NOT SUPPORTED YET !!!!!!!!!!!!!!!!!!!!!!
+% We provide a ---limited--- support for ArabTeX 7 bit encoding but since 
+% we can also use ArabteX with our package, it's better to use an 
+% arabtext environment to typeset it.
+% the fonts are not the same, but ur text may need a lot of change to get
+% usable with Arabic LaTeX, the best solution to process ArabTeX input is still 
+% ArabTeX
+%
+%%%%%%%%%%%%%%%%%%%%%% Do not load our macros if ArabTeX is active %%%%%%%%%%%
+\AtBeginDocument{
+\ifx \ar@batcode \undefined %\RequirePackage{lagally}
+\else 
+\message{ArabTeX is aleready loaded,}
+\message{ No support is provided} 
+\message{with ArabTeX 7 bit input encoding}%\expandafter \endinput
+% avoid problematic use of < and > when arabtex is loaded
+% since they are active with Arabtex and have a special meaning
+% we do need these symbols to write left and right guillemots in
+% an Arabic context.
+\addto\extrasarabic{%
+\chardef \@other = 12
+%\catcode`\<=\@other
+%\catcode`\>=\@other
+%\catcode`\.=\@other
+%\catcode`\_=\@other
+%\catcode`\^=\@other
+\setnone
+}
+\fi 
+}
+
+%%%%%%%%%%%%%%  In ArabTeX you have to use %%%%%%%%%%%%%%%%%
+% <\abjad> to get the <\abjadnumeral>s
+%\let\abjad=\abjadnumeral  
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%% LOGOS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\Arabi}{\textLR{\sffamily A\kern-.2ex\lower.25ex\hbox{r}\kern-.25exa%
+                       \kern-.22exb\kern-.15exi}}  %Logo
+
+
+%    ****************************************
+%    *             FOOTNOTES                *
+%    ****************************************
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% More space between the last line of main text 
+% and the top of the first footnote
+
+%\addtolength{\skip\footins}{2mm}
+
+%%%%%%%%%%%%%%%%%%% The footnote rule %%%%%%%%%%%%%%%%%%%%%
+%%%% works equally with ams[classes] %%%%%%%%%%%%%%%%%%%%%%
+
+\let\SAV@footnoterule=\footnoterule%
+\def\footnoterule{\if@rl\hb@xt@\hsize{\hss\vbox{\SAV@footnoterule}}%
+                  \else\SAV@footnoterule\fi}
+
+
+\renewcommand{\thefootnote}
+     {\if@rl {\textRL{(\I{\number\c@footnote})}}%
+    \else {\number\c@footnote}\fi}
+    
+
+
+%    ****************************************
+%    *             PUNCTUATION              *
+%    ****************************************
+%
+%        TEMPORARILY
+
+\addto\extrasfarsi{%
+\frenchspacing}
+
+%%%%%%%%%%%%%%%%%%%%%%% A patch from rlbabel %%%%%%%%%%%%%%%
+\def\raggedright{%
+  \let\\\@centercr
+  \leftskip\z@skip\rightskip\@flushglue
+  \parindent\z@\parfillskip\z@skip}
+\let\@@raggedleft=\raggedleft
+\let\@@raggedright=\raggedright
+\renewcommand\raggedleft{\if@rl\@@raggedright%
+                         \else\@@raggedleft\fi}
+\renewcommand\raggedright{\if@rl\@@raggedleft%
+                          \else\@@raggedright\fi}
+
+
+
+%%%% a small utility %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\providecommand{\gobbleone}[1]{\relax}
+
+
+
+
+%%%%%%%%%% To test if the main (TOC) language is Arabic
+%
+\newif\if@rlmain
+%
+%
+% If \mainlanguage{arabic} was not met yet at the
+% beginning of the document, suppose that the "TOC direction et al."
+% is "english" (a Left-to-Right language), if you want a different
+% formatting you should specify your specific TOC language
+%
+\AtBeginDocument{\if@rlmain\relax\else\TOCLanguage{\bbl@main@language}\fi}
+
+
+\def\TOCLanguage#1{\gdef\main@Arabi@language{#1}%
+\edef\tmp{arabic}%
+\edef\tmpp{farsi}% 
+\ifx\main@Arabi@language\tmp\global\@rlmaintrue\else
+\ifx\main@Arabi@language\tmpp\global\@rlmaintrue\else
+\global\@rlmainfalse\fi\fi%
+}
+% 
+\let\SAV@@part\@part  
+\let\SAV@spart\@spart  
+%
+%
+\let\SAV@@chapter\@chapter  
+\let\SAV@schapter\@schapter  
+%
+\let\SAV@section\section  
+\let\SAV@subsection\subsection  
+\let\SAV@subsubsection\subsubsection  
+%
+\let\SAV@paragraph\paragraph  
+\let\SAV@subparagraph\subparagraph  
+
+
+
+
+
+
+ 
+\def\@part[#1]#2{%
+\addtocontents{toc}{\xstring\select@language{\main@Arabi@language}}%
+\if@rl{\SAV@@part[\textRL{#1}]{\textRL{#2}}}%
+\else{\SAV@@part[\textLR{#1}]{\textLR{#2}}}%
+\fi} 
+
+%\renewcommand{\@spart}[1]{%
+\def\@spart#1{%
+\addtocontents{toc}{\xstring\select@language{\main@Arabi@language}}%
+\if@rl{\SAV@spart{\textRL{#1}}}%
+\else{\SAV@spart{\textLR{#1}}}%
+\fi}  
+
+\def\@chapter[#1]#2{%
+\addtocontents{toc}{\xstring\select@language{\main@Arabi@language}}%
+\if@rl{\SAV@@chapter[\textRL{#1}]{\textRL{#2}}}%
+\else{\SAV@@chapter[\textLR{#1}]{\textLR{#2}}}%
+\fi} 
+
+%\renewcommand{\@schapter}[1]{%
+\def\@schapter#1{%
+\addtocontents{toc}{\xstring\select@language{\main@Arabi@language}}%
+\if@rl{\SAV@schapter{\textRL{#1}}}%
+\else{\SAV@schapter{\textLR{#1}}}%
+\fi}  
+
+
+
+
+%% Wa added a line to the TOC to select the TOCLAnguage after a test with \cs{if@rlmain}
+%% Then we protect the \#7 argument according to the 
+%% <TOC language>
+%% Now the starred forms of the \cs{section} family work too.
+%% Taken and modified from Latex.ltx 
+%%
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+  \ifnum #2>\c@secnumdepth
+    \let\@svsec\@empty
+  \else
+    \refstepcounter{#1}%
+    \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+  \fi
+  \@tempskipa #5\relax
+  \ifdim \@tempskipa>\z@
+    \begingroup
+      #6{%
+        \@hangfrom{\hskip #3\relax\@svsec}%
+          \interlinepenalty \@M #8\@@par}%
+    \endgroup
+    \csname #1mark\endcsname{#7}%
+    \addtocontents{toc}{\xstring\select@language{\main@Arabi@language}}%
+    \addcontentsline{toc}{#1}{%
+      \ifnum #2>\c@secnumdepth \else
+        \protect\numberline{\csname the#1\endcsname}%
+      \fi
+      \if@rl\textRL{#7}\else\textLR{#7}\fi}%
+  \else
+    \def\@svsechd{%
+      #6{\hskip #3\relax
+      \@svsec #8}%
+      \csname #1mark\endcsname{#7}%
+    \addtocontents{toc}{\xstring\select@language{\main@Arabi@language}}%
+      \addcontentsline{toc}{#1}{%
+        \ifnum #2>\c@secnumdepth \else
+          \protect\numberline{\csname the#1\endcsname}%
+        \fi
+        \if@rl\textRL{#7}\else\textLR{#7}\fi}}%
+  \fi
+  \@xsect{#5}%
+}
+
+  
+%% Whenever \leftskip or rightskip add a test \if@rlmain and 
+%% swap the two. Also format the page number \#5 according to the 
+%% <TOC language>
+%% See Latex.ltx classes.dvi and
+%% see page 32 of the LaTeX companion Ed. 1
+%%
+\def\@dottedtocline#1#2#3#4#5{%
+  \ifnum #1>\c@tocdepth \else
+    \vskip \z@ \@plus.2\p@
+    {\if@rlmain\rightskip\else\leftskip\fi #2\relax
+      \if@rlmain\leftskip\else\rightskip\fi \@tocrmarg \parfillskip
+      -\if@rlmain\leftskip\else\rightskip\fi
+     \parindent #2\relax\@afterindenttrue
+     \interlinepenalty\@M
+     \leavevmode
+     \@tempdima #3\relax
+     \advance\if@rlmain\rightskip\else\leftskip\fi \@tempdima
+     \null\nobreak\hskip -\if@rlmain\rightskip\else\leftskip\fi
+     {#4}\nobreak
+     \leaders\hbox{$\m@th
+        \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
+        mu$}\hfill
+     \nobreak
+     \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor \if@rlmain\I{#5}\else\textLR{#5}\fi}%
+     \par}%
+  \fi}  
+  
+
+
+
+%% We redefine \l@part to avoid a bad space that occurs with the normal layout
+%%
+\@ifclassloaded{book}{%
+\let\SAV@l@part\l@part %in the case where needed ....
+\renewcommand*\l@part[2]{\ifnum \c@tocdepth >\m@ne
+    \addpenalty{-\@highpenalty}%
+    \vskip 1.0em \@plus\p@
+    \setlength\@tempdima{1.5em}%
+    \begingroup
+      \parindent \z@ \rightskip \@pnumwidth
+      \parfillskip -\@pnumwidth
+      \leavevmode \bfseries
+      \advance\leftskip\@tempdima
+      \hskip -\leftskip
+      {\leavevmode
+       \Large  #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}}\par
+      \penalty\@highpenalty
+    \endgroup
+  \fi}
+}{}
+
+
+\let\SAV@tableofcontents\tableofcontents
+\renewcommand{\tableofcontents}{{\select@language{\main@Arabi@language}\SAV@tableofcontents}}
+
+%\listoffigures
+%\listoftables
+
+
+
+
+
+
+
+
+
+%
+% Temporary partial support of \cs{Arabi} for amsbook class
+%
+\@ifclassloaded{amsbook}{
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+  \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
+  \ifnum #2>\c@secnumdepth \let\@secnumber\@empty
+  \else \@xp\let\@xp\@secnumber\csname the#1\endcsname\fi
+  \@tempskipa #5\relax
+  \ifnum #2>\c@secnumdepth
+    \let\@svsec\@empty
+  \else
+    \refstepcounter{#1}%
+    \edef\@secnumpunct{%
+      \ifdim\@tempskipa>\z@ % not a run-in section heading
+        \@ifnotempty{#8}{.\@nx\enspace}%
+      \else
+        \@ifempty{#8}{.}{.\@nx\enspace}%
+      \fi
+    }%
+    \protected@edef\@svsec{%
+      \ifnum#2<\@m
+        \@ifundefined{#1name}{}{%
+          \ignorespaces\csname #1name\endcsname\space
+        }%
+      \fi
+      \@seccntformat{#1}%
+    }%
+  \fi
+  \ifdim \@tempskipa>\z@ % then this is not a run-in section heading
+    \begingroup #6\relax
+    \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty\@M #8\par}%
+    \endgroup
+  \csname #1mark\endcsname{#7}%
+    \ifnum#2>\@m \else \addtocontents{toc}{\xstring\select@language{\main@Arabi@language}}
+    \@tocwrite{#1}{\if@rl\textRL{#8}\else\textLR{#8}\fi}\fi
+  \else
+  \def\@svsechd{#6\hskip #3\@svsec
+    \@ifnotempty{#8}{\ignorespaces#8\unskip
+       \@addpunct.}%
+    \ifnum#2>\@m \else \addtocontents{toc}{\xstring\select@language{\main@Arabi@language}}
+    \@tocwrite{#1}{\if@rl\textRL{#8}\else\textLR{#8}\fi}\fi
+  }%
+  \fi
+  \global\@nobreaktrue
+  \@xsect{#5}}%
+}{}
+
+%
+% We change  \alph{counter} so that we get abjad numerals instead,
+% we change  \Alph{counter} to get abjad numerals since no Uppercase
+% exists in Arabic, just to avoid bad surprises.
+%
+% Good for Farsi? Change!?
+%
+
+\let\latin@Alph\Alph
+\let\latin@alph\alph
+\def\arabic@alph#1{\expandafter\abjadnumeral\expandafter{\number#1}}
+\def\arabic@Alph#1{\expandafter\abjadnumeral\expandafter{\number#1}}
+\addto\extrasfarsi{%
+\def\alph#1{\expandafter\abjadnumeral\csname c@#1\endcsname}
+\def\Alph#1{\expandafter\abjadnumeral\csname c@#1\endcsname}
+}
+
+\addto\noextrasfarsi{%
+  \let\alph\latin@alph
+  \let\Alph\latin@Alph}
+
+
+
+\@ifclassloaded{book}{%book
+\renewcommand{\thechapter}{\if@rl\protect\I{\number\c@chapter}\else\protect\textLR{\number\c@chapter}\fi}
+}{%not book
+\@ifclassloaded{amsbook}{%amsbook
+\renewcommand{\thechapter}{\if@rl\protect\I{\number\c@chapter}\else\protect\textLR{\number\c@chapter}\fi}
+}{}}
+
+
+\@ifclassloaded{book}{%book
+\let\SAV@thepart\thepart
+\renewcommand{\thepart}{\if@rl\protect\abjadnumeral{\number\c@part}%
+\else\protect\textLR{\SAV@thepart}\fi}%
+}{%not book
+\@ifclassloaded{amsbook}{%amsbook
+\renewcommand{\thepart}{\if@rl\protect\abjadnumeral{\number\c@part}%
+\else\protect\textLR{\SAV@thepart}\fi}%
+}{}}
+
+
+%    ****************************************
+%    *         PAGE STYLES                  *
+%    ****************************************
+
+
+%%%%%%%%% from latex.ltx
+%% \ps@empty does not need any fix
+\def\ps@plain{\let\@mkboth\@gobbletwo
+     \let\@oddhead\@empty\def\@oddfoot{\reset@font\hfil\if@rlmain
+     \I{\thepage}\else\textLR{\thepage}\fi
+     \hfil}\let\@evenhead\@empty\let\@evenfoot\@oddfoot}
+
+
+
+%
+% Temporary solution TODO
+%
+\def\ps@headings{\ps@plain}
+
+
+
+
+
+
+
+
+%
+\def\ps@myheadings{%
+\gdef\thepage{%
+\protect\if@rlmain\protect\I{\number\c@page}%
+\protect\else\protect\textLR{\number\c@page}%
+\protect\fi}%
+    \let\@oddfoot\@empty\let\@evenfoot\@empty
+    \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+    \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+    \let\@mkboth\@gobbletwo
+    \let\chaptermark\@gobble
+    \let\sectionmark\@gobble
+    \let\subsectionmark\@gobble
+    }
+%
+%
+
+
+\let\SAV@ps@plain\ps@plain
+\let\SAV@ps@myheadings\ps@myheadings
+\let\SAV@ps@headings\ps@headings
+%
+\def\ps@plain{\ps@empty%
+\gdef\thepage{\protect\if@rlmain\protect\I{\number\c@page}%
+\protect\else\protect\textLR{\number\c@page}%
+\protect\fi}%
+\SAV@ps@plain}
+%
+\def\ps@myheadings{\ps@empty%
+\gdef\thepage{%
+\protect\if@rlmain\protect\I{\number\c@page}%
+\protect\else\protect\textLR{\number\c@page}%
+\protect\fi}%
+\SAV@ps@myheadings}
+%
+\def\ps@headings{\ps@empty%
+\gdef\thepage{%
+\protect\if@rlmain\protect\I{\number\c@page}%
+\protect\else\protect\textLR{\number\c@page}%
+\protect\fi}%
+\SAV@ps@headings}
+
+
+
+
+
+
+%*********************************************************************
+%                                TODO 
+%           Referencing
+% 
+%           CHAPTERS   (in part)        
+%
+%           SECTIONS   (in part)            
+%
+%
+% Arabize some counters
+%
+\@ifclassloaded{letter}{}{%not letter
+\@ifclassloaded{slide}{}{%not slide
+\@ifclassloaded{article}{%
+\def\thesection{\protect\if@rl\protect\I{\number\c@section}%
+\protect\else\protect\textLR{\number\c@section}%
+\protect\fi}
+\def\thesubsection{\protect\if@rl\protect\I{\number\c@subsection.\number\c@section}%
+\protect\else\protect\textLR{\number\c@section.\number\c@subsection}%
+\protect\fi}%
+}{%book or report [or other]
+\def\thesection{\protect\if@rl\protect\I{\number\c@section.\number\c@chapter}%
+\protect\else\protect\textLR{\number\c@chapter.\number\c@section}%
+\protect\fi}
+\def\thesubsection{\protect\if@rl\protect\I{\number\c@subsection.\number\c@section.\number\c@chapter}%
+\protect\else\protect\textLR{\number\c@chapter.\number\c@section.\number\c@subsection}%
+\protect\fi}%
+}}}%
+
+%
+% Specific to Hyperref
+% TODO
+%
+
+
+%              
+% LISTS
+%
+\def\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\@mklab
+  \@nmbrlistfalse
+  #2\relax
+  \@trivlist
+  \parskip\parsep
+  \parindent\listparindent
+  \advance\linewidth -\rightmargin
+  \advance\linewidth -\leftmargin
+  \if@rl
+    \advance\@totalleftmargin \rightmargin
+  \else
+    \advance\@totalleftmargin \leftmargin
+  \fi
+  \parshape \@ne \@totalleftmargin \linewidth
+  \ignorespaces}
+%
+%%%%%%%%%%%%%%%%%%%%%% ENUMERATE %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% In the ``second level'' of an enumeration, which uses 
+% (\@alph) by default in \LaTeX
+% latin alphabet and parenthese, we use abjad numerals. 
+% Should we add parentheses to abjad numerals in \labelenumii ??
+% They look bad with arabic abjad numerals,
+% so parentheses are just suppressed! A "dot" is added after.
+% 
+% We do the same for the ``fourth level''  which uses \@Alph 
+% uppercase latin alphabet, withoutout parentheses.
+%
+% We keep the 1st and 3rd levels as in standard LaTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%  the counters
+\renewcommand{\theenumii}
+   {\if@rl\expandafter\abjadnumeral{\number\c@enumii}%
+    \else\protect\textLR{\protect\@alph{\number\c@enumii}}\fi}
+    
+\renewcommand{\theenumiv}
+   {\if@rl\expandafter\abjadnumeral{\number\c@enumiv}%
+    \else\protect\textLR{\protect\@alph{\number\c@enumiv}}\fi}
+
+%%%%%%%%%%%%%%  Now the labels for the items
+
+\renewcommand{\labelenumi}
+     {\if@rl(\I{\number\c@enumi}).%
+    \else{\number\c@enumi}.\fi}
+    
+\renewcommand{\labelenumii}
+     {\if@rl\abjadnumeral{\number\c@enumii}. %
+    \else({\number\c@enumii})\fi}
+
+\renewcommand{\labelenumiii}
+     {\if@rl\I{\number\c@enumiii}$\space-\space$ %
+    \else({\number\c@enumiii})\fi}
+
+\renewcommand{\labelenumiv}
+     {\if@rl\abjadnumeral{\number\c@enumiv}$\space-\space$ %
+    \else({\number\c@enumiv})\fi}
+
+
+%	\def\theenumii{\arabic{enumii}}
+%	\def\theenumiii{\arabic{enumiii}}
+%	\def\theenumiv{\arabic{enumiv}} 
+%
+%
+
+%%%%%%%%%%%%%%%%%%%%%% ITEMIZE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The itemize four levels are modified. The \textperiodcentred looks too
+% "thin" with arabic fonts. We removed it and used new symbols 
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\renewcommand{\labelitemi}
+     {\if@rl\protect\textLR{$\bullet$} %
+      \else\protect\textbullet\fi}
+      
+\renewcommand{\labelitemii}
+     {\if@rl\protect\textLR{$\circ$} %
+      \else\protect\textLR{ \normalfont\bfseries\textendash}\fi}
+      
+\renewcommand{\labelitemiii}
+     {\if@rl\protect\textLR{$*$} %
+      \else\protect\textasteriskcentered\fi}
+      
+\renewcommand{\labelitemiv}
+     {\if@rl\protect $-$ %
+      \else\protect\textperiodcentred\fi}
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%% DESCRIPTION %%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% should change the \texttradb with the more logical \bfseries 
+% in the case the user use an other font family but seems not to work all 
+% the time !!
+\def \descriptionlabel #1{\if@rl{\if@farsi\textFR{\textbf{#1}}\else\textRL{\textbf{#1}}\fi\hskip \labelsep}%
+ \else{\hspace\labelsep \normalfont{\bfseries #1}}%
+\fi}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% The patch to get correct captions for figures and Tables
+% Adapted from "book.cls"                               
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%%%%%%%%%%% First from latex.ltx  %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\long\def\@caption#1[#2]#3{%
+  \par
+  \addtocontents{\csname ext@#1\endcsname}{\xstring\select@language{\main@Arabi@language}}%
+  \addcontentsline{\csname ext@#1\endcsname}{#1}%
+    {\protect\numberline{\csname the#1\endcsname}{\ignorespaces \if@rl{\textRL{#2}}\else\textLR{#2}\fi}}%
+  \begingroup
+    \@parboxrestore
+    \if@minipage
+      \@setminipage
+    \fi
+    \normalsize
+    \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces \if@rl{\textRL{#3}}\else\textLR{#3}\fi}\par
+  \endgroup}
+
+
+
+
+\newsavebox\@Arabitempboxa
+
+\long\def\@makecaption#1#2{%
+  \vskip\abovecaptionskip
+  \sbox\@tempboxa{#1: #2}%
+  \sbox\@Arabitempboxa{\textRL{#2} : #1}%
+  \if@rl{
+    \ifdim \wd\@Arabitempboxa >\hsize
+    \textRL{#2} : #1\par
+  \else
+    \global \@minipagefalse
+    \hb@xt@\hsize{\hfil\box\@Arabitempboxa\hfil}%
+  \fi}\else{
+  \ifdim \wd\@tempboxa >\hsize
+    #1: #2\par
+  \else
+    \global \@minipagefalse
+    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+  \fi}\fi
+  \vskip\belowcaptionskip}
+
+
+\def\fnum@table{\if@rl{\I{\thetable}\nobreakspace\tablename}%
+\else
+{\tablename\nobreakspace\thetable}%
+\fi}
+
+\def\fnum@figure{\if@rl{\I{\thefigure}\nobreakspace\figurename}%
+\else
+{\figurename\nobreakspace\thefigure}%
+\fi}
+
+
+\@ifclassloaded{letter}{}{%not letter
+\@ifclassloaded{slide}{}{%not slide
+\@ifclassloaded{article}{%
+\def\thetable{\protect\if@rl\protect\I{\number\c@table}%
+\protect\else\protect\textLR{\number\c@table}%
+\protect\fi}%
+\def\thefigure{\protect\if@rl\protect\I{\number\c@figure}%
+\protect\else\protect\textLR{\number\c@figure}%
+\protect\fi}%
+}{%report or book
+\def\thetable{\protect\if@rl\protect\I{\number\c@table.\number\c@chapter}%
+\protect\else\protect\textLR{\number\c@chapter.\number\c@table}%
+\protect\fi}
+\def\thefigure{\protect\if@rl\protect\I{\number\c@figure.\number\c@chapter}%
+\protect\else\protect\textLR{\number\c@chapter.\number\c@figure}%
+\protect\fi}
+}%article
+}%slide
+}%letter
+
+
+
+
+
+% the package \pkg{ifthen} is needed. We test if the font contains a character 
+% \cs{rial}. Else we define it just to be the \cs{rial} of the font \texttt{nazli]
+% which has one
+\AtBeginDocument{\RequirePackage{ifthen}}
+\newlength{\llahheight}
+\newlength{\Decimalheight}
+
+\DeclareRobustCommand{\llah}{%The Final Glyph
+    \settoheight{\llahheight}{\llahchar}%
+    \ifthenelse{\lengthtest{\llahheight=0pt}}%
+                {\mbox{\textFR{\textnazli{\llahchar{}}}}}%
+                {\llahchar{}}%
+                }
+
+%\DeclareRobustCommand{\llah}{%The Final Glyph
+%                \llahchar{}}%
+%
+%\DeclareRobustCommand{\allah}{%The whole word
+%    \settoheight{\llahheight}{\llahchar}%
+%    \ifthenelse{\lengthtest{\llahheight=0pt}}%
+%                {\mbox{\textFR{\textnazli{\alef\llahchar{}}}}}%
+%                {\alef\llahchar{}}%
+%                }
+
+\DeclareRobustCommand{\allah}{%The whole word
+                \alef\llah{}}%
+
+\DeclareRobustCommand{\Decimal}{%
+    \settoheight{\Decimalheight}{\Decimalchar}%
+    \ifthenelse{\lengthtest{\Decimalheight=0pt}}%
+                {\mbox{\textFR{\textnazli{\Decimalchar}}}}%
+                {\Decimalchar}%
+                }
+
+
+\DeclareRobustCommand{\openguill}{<~}
+\DeclareRobustCommand{\closguill}{~>}
+%
+
+%  
+%                 TITLE AUTHOR DATE   
+%  
+\let\@@title=\title
+\renewcommand{\title}[1]{\@@title{\if@rl\beginR #1\endR\else #1\fi}}
+\let\@@author=\author
+\renewcommand{\author}[1]{\@@author{\if@rl\beginR #1\endR\else #1\fi}}
+\let\@@date=\date
+\renewcommand{\date}[1]{\@@date{\if@rl\beginR #1\endR\else #1\fi}}
+
+
+
+
+
+
+
+\AtBeginDocument{%
+%%%%%%%%%%%%%%%% require a TeX--XeT/eTeX engine %%%%%%%%%%%%
+\ifx\TeXXeTstate\undefined\else%
+   \TeXXeTstate=1 %ensures that TeX--XeT/eTeX  is active
+\fi
+\ifx\beginL\@undefined%
+   \newlinechar`\^^J
+   \typeout{^^JTo avoid this error message,^^J%
+     run TeX--XeT or e-TeX engine instead of regular TeX.^^J}
+   \errmessage{Right-to-Left Support Error: use TeX--XeT or e-TeX
+     engine}%
+\fi
+}
+
+\endinput
+
-- 
cgit v1.2.3

