From 1e298c548919394a0daf6243076a734b9b8c2fe7 Mon Sep 17 00:00:00 2001 From: Karl Berry 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 +%% +%% 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 +%% +%% 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