diff options
author | Karl Berry <karl@freefriends.org> | 2013-04-03 22:40:26 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-04-03 22:40:26 +0000 |
commit | 8e0e2d299fdfc0af8a7a23ba86bbbdab11dd53af (patch) | |
tree | 530fec937cdcbfb19d1be2ba2558e3cec79b7ceb /Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty | |
parent | 65adc6776381cf64641ee845fa85afcd7fa0cd20 (diff) |
xepersian (3apr13)
git-svn-id: svn://tug.org/texlive/trunk@29634 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty | 621 |
1 files changed, 621 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty new file mode 100644 index 00000000000..faaa91f92af --- /dev/null +++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty @@ -0,0 +1,621 @@ +%% +%% This is file `xepersian.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xepersian.dtx (with options: `xepersian.sty') +%% +%% ______________________________________ +%% Copyright © 2008–2013 Persian TeX Group +%% +%% License information appended. +%% +%% + +\NeedsTeXFormat{LaTeX2e} +\def\xepersianversion{v12.1} +\def\xepersiandate{2013/04/04} +\ProvidesPackage{xepersian}[\xepersiandate\space \xepersianversion\space +Persian typesetting in XeLaTeX] +\RequirePackage{fontspec} +\RequirePackage{xepersian-persiancal} +\RequirePackage{xepersian-mathsdigitspec} +\RequirePackage[RTLdocument]{bidi} +\edef\xepersianinfo{% +xepersian package (Persian for LaTeX over XeTeX)^^J +Description: The package supports Persian^^J +typesetting, using fonts provided in the distribution.^^J +Copyright © 2008–2013 Persian TeX Group^^J +\xepersianversion, \xepersiandate^^J +License: LaTeX Project Public License, version 1.3c or higher (your choice)^^J +Location on CTAN: /macros/xetex/latex/xepersian} +\typeout{\xepersianinfo} +\edef\xepersian@everyjob{\the\everyjob} +\everyjob{\xepersian@everyjob\typeout{\xepersianinfo}} +\def\prq{«} +\def\plq{»} +\def\xepersian@cmds@temp#1{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname xepersian@#1\endcsname\relax + \begingroup + \escapechar=-1 % + \edef\x{\expandafter\meaning\csname#1\endcsname}% + \def\y{#1}% + \def\z##1->{}% + \edef\y{\expandafter\z\meaning\y}% + \expandafter\endgroup + \ifx\x\y + \expandafter\def\csname xepersian@#1\expandafter\endcsname + \expandafter{% + \csname#1\endcsname + }% + \fi + \fi +}% +\xepersian@cmds@temp{shellescape} +\newif\ifwritexviii +\ifnum\xepersian@shellescape=1\relax + \writexviiitrue +\else +\writexviiifalse +\fi +\newfontscript{Parsi}{arab} +\newfontlanguage{Parsi}{FAR} +\ExplSyntaxOn +\DeclareDocumentCommand \settextfont { O{} m } { + \fontspec_select:nn{Script=Parsi,Language=Parsi,Mapping=parsidigits,#1}{#2} + \use:x { + \exp_not:N \DeclareRobustCommand \exp_not:N \persianfont { + \exp_not:N \fontencoding {\g_fontspec_encoding_tl} + \exp_not:N \fontfamily {\l_fontspec_family_tl} \exp_not:N \selectfont + } + } + \cs_set_eq:NN \rmdefault \l_fontspec_family_tl + \normalfont +} +\settextfont[ExternalLocation,BoldFont={persian-modern-bold},BoldItalicFont={persian-modern-bolditalic},ItalicFont={persian-modern-italic},SlantedFont={persian-modern-oblique},BoldSlantedFont={persian-modern-boldoblique}]{persian-modern-regular} +\setdigitfont[ExternalLocation,BoldFont={persian-modern-bold},BoldItalicFont={persian-modern-bolditalic},ItalicFont={persian-modern-italic},SlantedFont={persian-modern-oblique},BoldSlantedFont={persian-modern-boldoblique}]{persian-modern-regular} +\DeclareDocumentCommand \setlatintextfont { O{} m } { + \fontspec_select:nn{Mapping=tex-text,#1}{#2} + \use:x { + \exp_not:N \DeclareRobustCommand \exp_not:N \latinfont { + \exp_not:N \fontencoding {\g_fontspec_encoding_tl} + \exp_not:N \fontfamily {\l_fontspec_family_tl} \exp_not:N \selectfont + } + } +} +\setlatintextfont[ExternalLocation,BoldFont={lmroman10-bold},BoldItalicFont={lmroman10-bolditalic},ItalicFont={lmroman10-italic},SmallCapsFont={lmromancaps10-regular},SlantedFont={lmromanslant10-regular},BoldSlantedFont={lmromanslant10-bold}]{lmroman10-regular} +\cs_set_eq:NN \setlatinsansfont \setsansfont +\cs_set_eq:NN \setlatinmonofont \setmonofont +\DeclareDocumentCommand \defpersianfont { m O{} m } { + \fontspec_select:nn{Script=Parsi,Language=Parsi,Mapping=parsidigits,#2}{#3} + \use:x { + \exp_not:N \DeclareRobustCommand \exp_not:N #1 { + \exp_not:N \fontencoding {\g_fontspec_encoding_tl} + \exp_not:N \fontfamily {\l_fontspec_family_tl} \exp_not:N \selectfont + } + } +} +\DeclareDocumentCommand \deflatinfont { m O{} m } { + \fontspec_select:nn{Mapping=tex-text,#2}{#3} + \use:x { + \exp_not:N \DeclareRobustCommand \exp_not:N #1 { + \exp_not:N \fontencoding {\g_fontspec_encoding_tl} + \exp_not:N \fontfamily {\l_fontspec_family_tl} \exp_not:N \selectfont + } + } +} +\newcommand\persiansfdefault{} +\newcommand\persianttdefault{} +\newcommand\iranicdefault{} +\newcommand\navardefault{} +\newcommand\pookdefault{} +\newcommand\sayehdefault{} +\DeclareRobustCommand\persiansffamily + {\not@math@alphabet\persiansffamily\mathpersiansf + \fontfamily\persiansfdefault\selectfont} +\DeclareRobustCommand\persianttfamily + {\not@math@alphabet\persianttfamily\mathpersiantt + \fontfamily\persianttdefault\selectfont} +\DeclareRobustCommand\iranicfamily + {\not@math@alphabet\iranicfamily\mathiranic + \fontfamily\iranicdefault\selectfont} +\DeclareRobustCommand\navarfamily + {\not@math@alphabet\navarfamily\mathnavar + \fontfamily\navardefault\selectfont} +\DeclareRobustCommand\pookfamily + {\not@math@alphabet\pookfamily\mathpook + \fontfamily\pookdefault\selectfont} +\DeclareRobustCommand\sayehfamily + {\not@math@alphabet\sayehfamily\mathsayeh + \fontfamily\sayehdefault\selectfont} +\DeclareTextFontCommand{\textpersiansf}{\persiansffamily} +\DeclareTextFontCommand{\textpersiantt}{\persianttfamily} +\DeclareTextFontCommand{\textiranic}{\iranicfamily} +\DeclareTextFontCommand{\textnavar}{\navarfamily} +\DeclareTextFontCommand{\textpook}{\pookfamily} +\DeclareTextFontCommand{\textsayeh}{\sayehfamily} +\DeclareDocumentCommand \setpersiansansfont { O{} m } { + \fontspec_set_family:Nnn \persiansfdefault {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1}{#2} + \normalfont +} +\DeclareDocumentCommand \setpersianmonofont { O{} m } { + \fontspec_set_family:Nnn \persianttdefault {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1}{#2} + \normalfont +} +\DeclareDocumentCommand \setnavarfont { O{} m } { + \fontspec_set_family:Nnn \navardefault {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1}{#2} + \normalfont +} +\DeclareDocumentCommand \setpookfont { O{} m } { + \fontspec_set_family:Nnn \pookdefault {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1}{#2} + \normalfont +} +\setpookfont[ExternalLocation,ItalicFont={persian-modern-italicoutline},SlantedFont={persian-modern-obliqueoutline}]{persian-modern-outline} +\DeclareDocumentCommand \setsayehfont { O{} m } { + \fontspec_set_family:Nnn \sayehdefault {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1}{#2} + \normalfont +} +\setsayehfont[ExternalLocation,ItalicFont={persian-modern-italicshadow},SlantedFont={persian-modern-obliqueshadow}]{persian-modern-shadow} +\DeclareDocumentCommand \setiranicfont { O{} m } { + \fontspec_set_family:Nnn \iranicdefault {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1}{#2} + \normalfont +} +\ExplSyntaxOff +\setiranicfont[ExternalLocation,BoldFont={persian-modern-boldoblique}]{persian-modern-oblique} +\def\resetlatinfont{% +\let\normalfont\latinfont% +\let\reset@font\normalfont% +\latinfont} +\def\setpersianfont{% +\let\normalfont\persianfont% +\let\reset@font\normalfont% +\persianfont} +\bidi@newrobustcmd*{\lr}[1]{\LRE{\@Latintrue\latinfont#1}} +\bidi@newrobustcmd*{\rl}[1]{\RLE{\@Latinfalse\persianfont#1}} +\def\latin{\LTR\LatinAlphs\@Latintrue\@RTL@footnotefalse\resetlatinfont} +\def\endlatin{\endLTR} +\def\persian{\RTL\PersianAlphs\@RTL@footnotetrue\setpersianfont} +\def\endpersian{\endRTL} +\let\originaltoday=\today +\def\latintoday{\lr{\originaltoday}} +\def\today{\rl{\persiantoday}} +\def \@LTRmarginparreset {% + \reset@font + \latinfont + \normalsize + \@minipagetrue + \everypar{\@minipagefalse\everypar{}\beginL}% +} +\DeclareRobustCommand\Latincite{% + \@ifnextchar [{\@tempswatrue\@Latincitex}{\@tempswafalse\@Latincitex[]}} +\def\@Latincitex[#1]#2{\leavevmode + \let\@citea\@empty + \@cite{\lr{\@for\@citeb:=#2\do + {\@citea\def\@citea{,\penalty\@m\ }% + \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% + \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi + \@ifundefined{b@\@citeb}{\hbox{\reset@font\bfseries ?}% + \G@refundefinedtrue + \@latex@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\@cite@ofmt{\csname b@\@citeb\endcsname}}}}}{#1}} +\def\@outputpage{% +\begingroup % the \endgroup is put in by \aftergroup + \let \protect \noexpand + \@resetactivechars + \global\let\@@if@newlist\if@newlist + \global\@newlistfalse + \@parboxrestore + \shipout \vbox{% + \set@typeset@protect + \aftergroup \endgroup + \aftergroup \set@typeset@protect + % correct? or just restore by ending + % the group? + \if@specialpage + \global\@specialpagefalse\@nameuse{ps@\@specialstyle}% + \fi + \if@twoside + \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot + \let\@themargin\oddsidemargin + \else \let\@thehead\@evenhead + \let\@thefoot\@evenfoot \let\@themargin\evensidemargin + \fi + \ifx\@thehead\@empty \let\@thehead\hfil \fi + \ifx\@thefoot\@empty \let\@thefoot\hfil \fi + \else %% not @twoside + \ifx\@oddhead\@empty \let\@thehead\hfil \fi + \ifx\@oddfoot\@empty \let\@thefoot\hfil \fi + \fi + \reset@font + \normalsize + \if@RTLmain\setpersianfont\else\resetlatinfont\fi + \normalsfcodes + \let\label\@gobble + \let\index\@gobble + \let\glossary\@gobble + \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@ + \@begindvi + \vskip \topmargin + \moveright\@themargin \vbox {% + \setbox\@tempboxa \vbox to\headheight{% + \vfil + \color@hbox + \normalcolor + \hb@xt@\textwidth{\if@RTLmain\@RTLtrue\beginR\else\@RTLfalse\beginL\fi\@thehead\if@RTLmain\endR\else\endL\fi}% + \color@endbox + }% %% 22 Feb 87 + \dp\@tempboxa \z@ + \box\@tempboxa + \vskip \headsep + \box\@outputbox + \baselineskip \footskip + \color@hbox + \normalcolor + \hb@xt@\textwidth{\if@RTLmain\@RTLtrue\beginR\else\@RTLfalse\beginL\fi\@thefoot\if@RTLmain\endR\else\endL\fi}% + \color@endbox + }% + }% + \global\let\if@newlist\@@if@newlist + \global \@colht \textheight + \stepcounter{page}% + \let\firstmark\botmark +} +\newcommand\twocolumnstableofcontents{% +\@ifpackageloaded{multicol}{% + \begin{multicols}{2}[\section*{\contentsname}]% + \small + \@starttoc{toc}% + \end{multicols}} +{\PackageError{xepersian}{Oops! you should load multicol package before xepersian package for being able to use this command}{}}} +\def\XePersian{\leavevmode$\smash{\hbox{X\lower.5ex + \hbox{\kern-.125em\reflect{E}}Persian}}$} +\def\figurename{\if@RTL شکل\else Figure\fi} +\def\tablename{\if@RTL جدول\else Table\fi} +\def\contentsname{\if@RTL فهرست مطالب\else Contents\fi} +\def\listfigurename{\if@RTL فهرست تصاویر\else List of Figures\fi} +\def\listtablename{\if@RTL فهرست جداول\else List of Tables\fi} +\def\appendixname{\if@RTL پیوست\else Appendix\fi} +\def\indexname{\if@RTL نمایه\else Index\fi} +\def\refname{\if@RTL مراجع\else References\fi} +\def\abstractname{\if@RTL چکیده\else Abstract\fi} +\def\partname{\if@RTL بخش\else Part\fi} +\def\datename{\if@RTL تاریخ:\else Date:\fi} +\def\@@and{\if@RTL و\else and\fi} +\def\bibname{\if@RTL کتابنامه\else Bibliography\fi} +\def\chaptername{\if@RTL فصل\else Chapter\fi} +\def\ccname{\if@RTL رونوشت\else cc\fi} +\def\enclname{\if@RTL پیوست\else encl\fi} +\def\pagename{\if@RTL صفحه\else Page\fi} +\def\headtoname{\if@RTL به\else To\fi} +\def\proofname{\if@RTL اثبات\else Proof\fi} +\def\@harfi#1{\ifcase#1\or آ\or ب\or پ\or ت\or ث\or +ج\or چ\or ح\or خ\or د\or ذ\or ر\or ز\or ژ\or س\or ش\or ص\or ض\or ط\or ظ\or ع\or غ\or +ف\or ق\or ک\or گ\or ل\or م\or ن\or و\or ه\or ی\else\@ctrerr\fi} +\def\harfi#1{\expandafter\@harfi\csname c@#1\endcsname} +\let\harfinumeral\@harfi +\newcommand{\adadi}[1]{% +\expandafter\@adadi\csname c@#1\endcsname% +} +\newcommand{\@adadi}[1]{% +\xepersian@numberstring{#1}\xepersian@yekanii{صفر}{}% +} +\let\adadinumeral\@adadi% +\def\xepersian@numberoutofrange#1#2{% +\PackageError{xepersian}{The number `#1' is too large % +to be formatted using xepersian}{The largest possible % +number is 999,999,999.}% +} +\def\xepersian@numberstring#1#2#3#4{% +\ifnum\number#1<\@ne% +#3% +\else\ifnum\number#1<1000000000 % +\expandafter\xepersian@adadi\expandafter{\number#1}#2% +\else% +\xepersian@numberoutofrange{#1}{#4}% +\fi\fi% +} +\def\xepersian@adadi#1#2{% +\expandafter\xepersian@@adadi% +\ifcase% +\ifnum#1<10 1% +\else\ifnum#1<100 2% +\else\ifnum#1<\@m 3% +\else\ifnum#1<\@M 4% +\else\ifnum#1<100000 5% +\else\ifnum#1<1000000 6% +\else\ifnum#1<10000000 7% +\else\ifnum#1<100000000 8% +\else9% +\fi\fi\fi\fi\fi\fi\fi\fi % +\or00000000#1% case 1: Add 8 leading zeros +\or0000000#1% case 2: Add 7 leading zeros +\or000000#1% case 3: Add 6 leading zeros +\or00000#1% case 4: Add 5 leading zeros +\or0000#1% case 5: Add 4 leading zeros +\or000#1% case 6: Add 3 leading zeros +\or00#1% case 7: Add 2 leading zeros +\or0#1% case 8: Add 1 leading zero +\or#1% case 9: Add no leading zeros +\or% +\@nil#2% +\fi% +} +\def\xepersian@@adadi#1#2#3#4#5#6#7\or#8\@nil#9{% +\ifnum#1#2#3>\z@ +\xepersian@milyoongan#1#2#3% +\ifnum#7>\z@\ifnum#4#5#6>\z@\ و \else\ و \fi\else\ifnum#4#5#6>\z@\ و \fi\fi% +\fi% +\ifnum#4#5#6>\z@% +\xepersian@sadgan#4#5#6{#1#2#3}{#4#5}\xepersian@yekani% +\ifnum#4#5#6>\@ne\fi% +هزار% +\ifnum#7>\z@\ و \fi% +\fi% +\xepersian@sadgan#7{#4#5#6}1#9% +} +\def\xepersian@milyoongan#1#2#3{% +\ifnum#1#2#3=\@ne% +\xepersian@sadgan#1#2#301\xepersian@yekaniii% +% +میلیون% +\else% +\xepersian@sadgan#1#2#301\xepersian@yekanii% +% +میلیون% +\fi% +} +\def\xepersian@sadgan#1#2#3#4#5#6{% +\ifnum#1>\z@% +\ifnum#4#1>\@ne\xepersian@yekaniv#1\fi% +صد% +\ifnum#2#3>\z@\ و \fi% +\fi% +\ifnum#2#3<20% +\ifnum#5#2#3>\@ne#6{#2#3}\fi% +\else% +\xepersian@dahgan#2% +\ifnum#3>\z@\ و \xepersian@yekani#3\fi% +#60% +\fi% +} +\def\xepersian@yekani#1{% +\ifcase#1\@empty\or یک\or دو\or سه\or چهار\or پنج\or شش% +\or هفت\or هشت\or نه\or ده\or یازده\or دوازده\or سیزده% +\or چهارده\or پانزده\or شانزده\or هفده% +\or هجده\or نوزده\fi% +} +\def\xepersian@yekanii#1{% +\ifcase#1\@empty\or یک\else\xepersian@yekani{#1}\fi% +} +\def\xepersian@yekaniii#1{% +\ifcase#1\@empty\or یک\else\xepersian@yekani{#1}\fi% +} +\def\xepersian@yekaniv#1{% +\ifcase#1\@empty\or\or دوی\or سی\or چهار\or پان\or شش% +\or هفت\or هشت\or نه\fi% +} +\def\xepersian@dahgan#1{% +\ifcase#1\or\or بیست\or سی\or چهل% +\or پنجاه\or شصت\or هفتاد\or هشتاد% +\or نود\fi% +} +\newcommand{\tartibi}[1]{% +\expandafter\@tartibi\csname c@#1\endcsname% +} +\newcommand{\@tartibi}[1]{% +\xepersian@numberstring@tartibi{#1}\xepersian@tartibi{صفرم}{م}% +} +\let\tartibinumeral\@tartibi% +\def\xepersian@numberstring@tartibi#1#2#3#4{% +\ifnum\number#1<\@ne% +#3% +\else\ifnum\number#1<1000000000 % +\expandafter\xepersian@adadi@tartibi\expandafter{\number#1}#2% +\else% +\xepersian@numberoutofrange{#1}{#4}% +\fi\fi% +} +\def\xepersian@adadi@tartibi#1#2{% +\expandafter\xepersian@@adadi@tartibi% +\ifcase% +\ifnum#1<10 1% +\else\ifnum#1<100 2% +\else\ifnum#1<\@m 3% +\else\ifnum#1<\@M 4% +\else\ifnum#1<100000 5% +\else\ifnum#1<1000000 6% +\else\ifnum#1<10000000 7% +\else\ifnum#1<100000000 8% +\else9% +\fi\fi\fi\fi\fi\fi\fi\fi % +\or00000000#1% case 1: Add 8 leading zeros +\or0000000#1% case 2: Add 7 leading zeros +\or000000#1% case 3: Add 6 leading zeros +\or00000#1% case 4: Add 5 leading zeros +\or0000#1% case 5: Add 4 leading zeros +\or000#1% case 6: Add 3 leading zeros +\or00#1% case 7: Add 2 leading zeros +\or0#1% case 8: Add 1 leading zero +\or#1% case 9: Add no leading zeros +\or% +\@nil#2% +\fi% +} +\def\xepersian@@adadi@tartibi#1#2#3#4#5#6#7\or#8\@nil#9{% +\ifnum#1#2#3>\z@ +\xepersian@milyoongan@tartibi#1#2#3% +\ifnum#7>\z@\ifnum#4#5#6>\z@\ و \else\ و \fi\else\ifnum#4#5#6>\z@\ و \fi\fi% +\fi% +\ifnum#4#5#6>\z@% +\xepersian@sadgan#4#5#6{#1#2#3}{#4#5}\xepersian@yekani% +\ifnum#4#5#6>\@ne \fi% +هزار% +\ifnum#7>\z@\ و \fi% +\fi% +\xepersian@sadgan@tartibi#7{#4#5#6}1#9% +} +\def\xepersian@milyoongan@tartibi#1#2#3{% +\ifnum#1#2#3=\@ne% +\xepersian@sadgan@tartibi#1#2#301\xepersian@yekaniii% +% +میلیون% +\else% +\xepersian@sadgan#1#2#301\xepersian@yekanii% +% +میلیون% +\fi% +} +\def\xepersian@sadgan@tartibi#1#2#3#4#5#6{% +\ifnum#1>\z@% +\ifnum#4#1>\@ne\xepersian@yekaniv#1\fi% +صد% +\ifnum#2#3>\z@\ و \fi% +\fi% +\ifnum#2#3<20% +\ifnum#5#2#3>\@ne\ifnum#1#2#3#4#5=10001 اول\else#6{#2#3}\fi\fi% +\else% +\xepersian@dahgan#2% +\ifnum#3>\z@\ و \xepersian@yekanv#3\fi% +#60% +\fi% +} +\def\xepersian@tartibi#1{% +\ifcase#1م\or یکم\or دوم\or سوم\or چهارم% +\or پنجم\or ششم\or هفتم\or هشتم\or نهم% +\or دهم\or یازدهم\or دوازدهم\or سیزدهم% +\or چهاردهم\or پانزدهم\or شانزدهم% +\or هفدهم\or هجدهم\or نوزدهم\fi% +} +\def\xepersian@yekanv#1{% +\ifcase#1\@empty\or یک\or دو\or سو\or چهار\or پنج\or شش% +\or هفت\or هشت\or نه\or ده\or یازده\or دوازده\or سیزده% +\or چهارده\or پانزده\or شانزده\or هفده% +\or هجده\or نوزده\fi% +} +\providecommand*{\xpg@warning}[1]{% + \PackageWarning{XePersian}% + {#1}} +\if@bidi@csundef{abjadnumeral}{% +\def\abjadnumeral#1{% +\ifnum#1>1999 \xpg@warning{Illegal value (#1) for abjad numeral} {#1} +\else + \ifnum#1<\z@\space\xpg@warning{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\abjad@zero{} +\def\abj@num@i#1{% + \ifcase#1\or آ\or ب\or ج\or د% + \or ه\or و\or ز\or ح\or ط\fi + \ifnum#1=\z@\abjad@zero\fi} +\def\abj@num@ii#1{% + \ifcase#1\or ی\or ک\or ل\or م\or ن% + \or س\or ع\or ف\or ص\fi + \ifnum#1=\z@\fi\abj@num@i} +\def\abj@num@iii#1{% + \ifcase#1\or ق\or ر\or ش\or ت\or ث% + \or خ\or ذ\or ض\or ظ\fi + \ifnum#1=\z@\fi\abj@num@ii} +\def\abj@num@iv#1{% + \ifcase#1\or غ\fi + \ifnum#1=\z@\fi\abj@num@iii} +}{} + \let\@latinalph\@alph% + \let\@latinAlph\@Alph% +\def\PersianAlphs{% + \let\@alph\abjadnumeral% + \let\@Alph\abjadnumeral% +} +\def\LatinAlphs{% + \let\@alph\@latinalph% + \let\@Alph\@latinAlph% +} +\PersianAlphs +\@ifdefinitionfileloaded{loadingorder-bidi}{\input{loadingorder-bidi-xepersian.def}}{} +\@ifpackageloaded{listings}{\input{listings-xepersian.def}}{} +\@ifpackageloaded{algorithmic}{\input{algorithmic-xepersian.def}}{} +\@ifpackageloaded{algorithm}{\input{algorithm-xepersian.def}}{} +\@ifpackageloaded{backref}{\input{backref-xepersian.def}}{} +\@ifpackageloaded{flowfram}{\input{flowfram-xepersian.def}}{} +\@ifpackageloaded{bidi}{\input{footnote-bidi-xepersian.def}}{} +\@ifpackageloaded{bidituftesidenote}{\input{bidituftesidenote-xepersian.def}}{} +\@ifpackageloaded{bidicode}{\input{bidicode-xepersian.def}}{} +\@ifpackageloaded{breqn}{\input{breqn-xepersian.def}}{} +\@ifpackageloaded{enumerate}{\input{enumerate-xepersian.def}}{} +\@ifpackageloaded{empheq}{\input{empheq-xepersian.def}}{} +\@ifpackageloaded{framed}{\input{framed-bidi-xepersian.def}}{} +\@ifpackageloaded{hyperref}{\input{hyperref-xepersian.def}}{} +\@ifpackageloaded{minitoc}{\input{minitoc-xepersian.def}}{} +\@ifpackageloaded{natbib}{\input{natbib-xepersian.def}}{} +\@ifpackageloaded{tkz-linknodes}{\input{tkz-linknodes-xepersian.def}}{} +\@ifpackageloaded{tocloft}{\@ifclassloaded{memoir}{}{\input{tocloft-xepersian.def}}}{} +\@ifclassloaded{article}{\input{article-xepersian.def}}{} +\@ifclassloaded{extarticle}{\input{extarticle-xepersian.def}}{} +\@ifclassloaded{artikel1}{\input{artikel1-xepersian.def}}{} +\@ifclassloaded{artikel2}{\input{artikel2-xepersian.def}}{} +\@ifclassloaded{artikel3}{\input{artikel3-xepersian.def}}{} +\@ifclassloaded{amsart}{\input{amsart-xepersian.def}}{} +\@ifclassloaded{bidimoderncv}{\input{bidimoderncv-xepersian.def}}{} +\@ifclassloaded{report}{\input{report-xepersian.def}}{} +\@ifclassloaded{extreport}{\input{extreport-xepersian.def}}{} +\@ifclassloaded{rapport1}{\input{rapport1-xepersian.def}}{} +\@ifclassloaded{rapport3}{\input{rapport3-xepersian.def}}{} +\@ifclassloaded{scrartcl}{\input{scrartcl-xepersian.def}}{} +\@ifclassloaded{scrbook}{\input{scrbook-xepersian.def}}{} +\@ifclassloaded{scrreprt}{\input{scrreprt-xepersian.def}}{} +\@ifclassloaded{amsbook}{\input{amsbook-xepersian.def}}{} +\@ifclassloaded{boek3}{\input{boek3-xepersian.def}}{} +\@ifclassloaded{boek}{\input{boek-xepersian.def}}{} +\@ifclassloaded{bookest}{\input{bookest-xepersian.def}}{} +\@ifclassloaded{extbook}{\input{extbook-xepersian.def}}{} +\@ifclassloaded{book}{\input{book-xepersian.def}}{} +\@ifclassloaded{refrep}{\input{refrep-xepersian.def}}{} +\@ifclassloaded{memoir}{\input{memoir-xepersian.def}}{} +\@ifclassloaded{imsproc}{\input{imsproc-xepersian.def}}{} +\DeclareOption{Kashida}{\input{kashida-xepersian.def}} +\DeclareOption{localise}{\input{localise-xepersian.def}} +\DeclareOption{extrafootnotefeatures}{% +\input{extrafootnotefeatures.def}% +\input{extrafootnotefeatures-xepersian.def}% +} +\DeclareOption{quickindex}{% +\ifwritexviii% +\@ifclassloaded{memoir}{\PackageError{xepersian}{This feature does not yet work with the memoir class}{}}{% +\renewcommand\printindex{\newpage% +\immediate\closeout\@indexfile +\immediate\write18{xindy -L persian -C utf8 -M texindy -M page-ranges \jobname.idx} +\@input@{\jobname.ind}}}% +\else +\PackageError{xepersian}{“shell escape” (or “write18”) is not enabled. You need to run “xelatex --shell-escape” on your TeX document for this feature to work}{} +\fi} +\ExecuteOptions{localise} +\ProcessOptions +%% +%% Copyright © 2008–2013 Persian TeX Group <persiantexdev@gmail.com> +%% +%% It may be distributed and/or modified under the LaTeX Project Public License, +%% version 1.3c or higher (your choice). The latest version of +%% this license is at: http://www.latex-project.org/lppl.txt +%% +%% This work is “maintained” (as per LPPL maintenance status) +%% by Persian TeX Group. +%% +%% +%% +%% +%% End of file `xepersian.sty'. |