diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty | 1558 |
1 files changed, 0 insertions, 1558 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty deleted file mode 100644 index 484770bd964..00000000000 --- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty +++ /dev/null @@ -1,1558 +0,0 @@ -%% -%% This is file `xepersian.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% xepersian.dtx (with options: `table,xepersian.sty') -%% -%% __________________________________________________ -%% Copyright (c) 2008--2020 Vafa Khalighi -%% Copyright (c) 2018--2020 bidi-tex GitHub Organization -%% -%% 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 “author-maintained” (as per LPPL maintenance status) -%% by Vafa Khalighi. -%% -%% -%% \CheckSum{10968} -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} -%% -\NeedsTeXFormat{LaTeX2e} -\def\xepersian@version{22.9} -\def\xepersiandate{2020/05/14} -\ProvidesPackage{xepersian}[\xepersiandate\space v\xepersian@version\space -Persian typesetting in XeLaTeX] -\RequirePackage{fontspec} -\RequirePackage{xepersian-persiancal} -\RequirePackage{xepersian-mathsdigitspec} -\RequirePackage{bidi} -\edef\@xepersian@info{****************************************************^^J% -* ^^J% -* xepersian package (Persian for LaTeX, using XeTeX engine)^^J% -* ^^J% -* Description: The package supports Persian^^J% -* typesetting, using fonts provided in the^^J% -* distribution.^^J% -* ^^J% -* Copyright (c) 2008--2020 Vafa Khalighi^^J% -* Copyright (c) 2018--2020 bidi-tex GitHub Organization^^J% -* ^^J% -* v\xepersian@version, \xepersiandate^^J% -* ^^J% -* License: LaTeX Project Public License, version^^J% -* 1.3c or higher (your choice)^^J% -* ^^J% -* Location on CTAN: /macros/xetex/latex/xepersian^^J% -* ^^J% -* Issue tracker: https://github.com/persiantex/xepersian/issues^^J% -* ^^J% -****************************************************} -\typeout{\@xepersian@info} -\edef\xepersian@everyjob{\the\everyjob} -\everyjob{\xepersian@everyjob\typeout{\@xepersian@info}} -\newcommand*{\xepersianversion} - {\ensuremath\xepersian@version} -\newcommand*{\IfxepersianPackageVersionLater}[1]{% - \ifdim\xepersian@version pt > #1 pt % - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\newcommand*{\IfxepersianPackageVersionBefore}[1]{% - \ifdim\xepersian@version pt < #1 pt % - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\newcommand*{\IfxepersianPackageVersion}[1]{% - \ifdim\xepersian@version pt = #1 pt % - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\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{Persian}{arab} -\newfontlanguage{Persian}{FAR} -\ExplSyntaxOn - -\keys_define:nn {fontspec-opentype} - { - Ligatures / PersianTeX .code:n = { \tl_set:Nn \l__fontspec_mapping_tl {persian-tex-text} }, - Ligatures / PersianTeXOff .code:n = { \tl_clear:N \l__fontspec_mapping_tl }, - Ligatures / PersianTeXReset .code:n = { \tl_clear:N \l__fontspec_mapping_tl }, - } - -\keys_define:nn {fontspec-aat} - { - Ligatures / PersianTeX .code:n = - { - \tl_set:Nn \l__fontspec_mapping_tl { persian-tex-text } - } - } - -\DeclareDocumentCommand \settextfont { O{} m O{} } - { - \__xepersian_main_settextfont:nn {#1,#3} {#2} - \ignorespaces - } -\cs_new:Nn \__xepersian_main_settextfont:nn - { - \fontspec_set_family:Nnn \l__xepersian_persianfont_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} - \tl_set_eq:NN \rmdefault \l__xepersian_persianfont_family_tl - \use:x { \exp_not:n { \DeclareRobustCommand \persianfont } - { - \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \l__xepersian_persianfont_family_tl } - \exp_not:N \selectfont - } - } - \str_if_eq:eeT {\familydefault} {\rmdefault} - { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } - \__xepersian_settextfont_hook:nn {#1} {#2} - \normalfont - } - -\cs_set_eq:NN \__xepersian_settextfont_hook:nn \use_none:nn - -\DeclareDocumentCommand \settextdigitfont { O{} m O{} } - { - \__xepersian_main_settextdigitfont:nn {#1,#3} {#2} - \ignorespaces - } -\cs_new:Nn \__xepersian_main_settextdigitfont:nn - { - \fontspec_set_family:Nnn \l__xepersian_textdigitfont_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} - \use:x - { - \exp_not:n { \DeclareRobustCommand \xepersian@textdigitfont } - { - \exp_not:N \fontfamily { \l__xepersian_textdigitfont_family_tl } - \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl } - \exp_not:N \selectfont - } - } - \__xepersian_settextdigitfont_hook:nn {#1} {#2} - \XeTeXinterchartoks \e@alloc@intercharclass@top \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont} - \XeTeXinterchartoks \bidi@digits@charclass \e@alloc@intercharclass@top = {\xepersian@@stop@switch@textdigitfont} - \XeTeXinterchartoks \z@ \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont} - \XeTeXinterchartoks \bidi@digits@charclass \z@ = {\xepersian@@stop@switch@textdigitfont} - \XeTeXinterchartoks \bidi@digits@charclass \bidi@sepmark@charclass = {\xepersian@@stop@switch@textdigitfont} - \XeTeXinterchartoks \bidi@sepmark@charclass \bidi@digits@charclass = {\DigitsDotDashInterCharToks\xepersian@@start@switch@textdigitfont} - \if@bidi@csundef{xepersian@D}{}{% - \XeTeXinterchartoks \xepersian@D \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont} - \XeTeXinterchartoks \bidi@digits@charclass \xepersian@D = {\xepersian@@stop@switch@textdigitfont} - \XeTeXinterchartoks \xepersian@L \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont} - \XeTeXinterchartoks \bidi@digits@charclass \xepersian@L = {\xepersian@@stop@switch@textdigitfont} - \XeTeXinterchartoks \xepersian@A \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont} - \XeTeXinterchartoks \bidi@digits@charclass \xepersian@A = {\xepersian@@stop@switch@textdigitfont} - \XeTeXinterchartoks \xepersian@R \bidi@digits@charclass = {\xepersian@@start@switch@textdigitfont} - \XeTeXinterchartoks \bidi@digits@charclass \xepersian@R = {\xepersian@@stop@switch@textdigitfont} - } - } - -\newcommand*{\xepersian@@start@switch@textdigitfont}{\ifx\f@family\ttdefault\else\if@nonlatin\if@@textdigitfont@on\bgroup\xepersian@textdigitfont\else\fi\fi\fi} -\newcommand*{\xepersian@@stop@switch@textdigitfont}{\ifx\f@family\ttdefault\else\if@nonlatin\if@@textdigitfont@on\egroup\else\fi\fi\fi} - -\cs_set_eq:NN \__xepersian_settextdigitfont_hook:nn \use_none:nn - -\DeclareDocumentCommand \setdigitfont { O{} m O{} } - { - \__xepersian_main_settextdigitfont:nn {#1,#3} {#2} - \__xepersian_main_setmathdigitfont:nn {#1,#3} {#2} - \ignorespaces - } - -\DeclareDocumentCommand \setlatintextfont { O{} m O{} } - { - \__xepersian_main_setlatintextfont:nn {#1,#3} {#2} - \ignorespaces - } -\cs_new:Nn \__xepersian_main_setlatintextfont:nn - { - \fontspec_set_family:Nnn \l__xepersian_latinfont_family_tl {Ligatures=TeX,#1} {#2} - \use:x { \exp_not:n { \DeclareRobustCommand \latinfont } - { - \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \l__xepersian_latinfont_family_tl } - \exp_not:N \selectfont - } - } - \str_if_eq:eeT {\familydefault} {\rmdefault} - { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } - \__xepersian_setlatintextfont_hook:nn {#1} {#2} - \normalfont - } - -\cs_set_eq:NN \__xepersian_setlatintextfont_hook:nn \use_none:nn - -\tl_set_eq:NN \setlatinsansfont \setsansfont -\tl_set_eq:NN \setlatinmonofont \setmonofont - -\DeclareDocumentCommand \defpersianfont { m O{} m O{} } - { - \__xepersian_main_defpersianfont:NnnN #1 {#2,#4} {#3} - \NewDocumentCommand - } -\DeclareDocumentCommand \redefpersianfont { m O{} m O{} } - { - \__xepersian_main_defpersianfont:NnnN #1 {#2,#4} {#3} - \RenewDocumentCommand - } -\cs_new:Nn \__xepersian_main_defpersianfont:NnnN - { - \fontspec_set_family:cnn { l__xepersian_ \cs_to_str:N #1 _family_tl } {Script=Persian,Ligatures=PersianTeX,#2} {#3} - \use:x - { - \exp_not:N #4 \exp_not:N #1 {} - { - \exp_not:N \fontfamily { \use:c {l__xepersian_ \cs_to_str:N #1 _family_tl } } - \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl } - \exp_not:N \selectfont - } - } - } - -\DeclareDocumentCommand \deflatinfont { m O{} m O{} } - { - \__xepersian_main_deflatinfont:NnnN #1 {#2,#4} {#3} - \NewDocumentCommand - } -\DeclareDocumentCommand \redeflatinfont { m O{} m O{} } - { - \__xepersian_main_deflatinfont:NnnN #1 {#2,#4} {#3} - \RenewDocumentCommand - } -\cs_new:Nn \__xepersian_main_deflatinfont:NnnN - { - \fontspec_set_family:cnn { l__xepersian_ \cs_to_str:N #1 _family_tl } {Ligatures=TeX,#2} {#3} - \use:x - { - \exp_not:N #4 \exp_not:N #1 {} - { - \exp_not:N \fontfamily { \use:c {l__xepersian_ \cs_to_str:N #1 _family_tl } } - \exp_not:N \fontencoding { \g__fontspec_nfss_enc_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 O{} } - { - \__xepersian_main_setpersiansansfont:nn {#1,#3} {#2} - \ignorespaces - } -\cs_new:Nn \__xepersian_main_setpersiansansfont:nn - { - \fontspec_set_family:Nnn \l__xepersian_persiansffamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} - \tl_set_eq:NN \persiansfdefault \l__xepersian_persiansffamily_family_tl - \use:x { \exp_not:n { \DeclareRobustCommand \persiansffamily } - { - \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \l__xepersian_persiansffamily_family_tl } - \exp_not:N \selectfont - } - } - \str_if_eq:eeT {\familydefault} {\persiansfdefault} - { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } - \__xepersian_setpersiansansfont_hook:nn {#1} {#2} - \normalfont - } - -\cs_set_eq:NN \__xepersian_setpersiansansfont_hook:nn \use_none:nn - -\DeclareDocumentCommand \setpersianmonofont { O{} m O{} } - { - \__xepersian_main_setpersianmonofont:nn {#1,#3} {#2} - \ignorespaces - } -\cs_new:Nn \__xepersian_main_setpersianmonofont:nn - { - \fontspec_set_family:Nnn \l__xepersian_persianttfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} - \tl_set_eq:NN \persianttdefault \l__xepersian_persianttfamily_family_tl - \use:x { \exp_not:n { \DeclareRobustCommand \persianttfamily } - { - \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \l__xepersian_persianttfamily_family_tl } - \exp_not:N \selectfont - } - } - \str_if_eq:eeT {\familydefault} {\persianttdefault} - { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } - \__xepersian_setpersianmonofont_hook:nn {#1} {#2} - \normalfont - } - -\cs_set_eq:NN \__xepersian_setpersianmonofont_hook:nn \use_none:nn - -\DeclareDocumentCommand \setnavarfont { O{} m O{} } - { - \__xepersian_main_setnavarfont:nn {#1,#3} {#2} - \ignorespaces - } -\cs_new:Nn \__xepersian_main_setnavarfont:nn - { - \fontspec_set_family:Nnn \l__xepersian_navarfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} - \tl_set_eq:NN \navardefault \l__xepersian_navarfamily_family_tl - \use:x { \exp_not:n { \DeclareRobustCommand \navarfamily } - { - \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \l__xepersian_navarfamily_family_tl } - \exp_not:N \selectfont - } - } - \str_if_eq:eeT {\familydefault} {\navardefault} - { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } - \__xepersian_setnavarfont_hook:nn {#1} {#2} - \normalfont - } - -\cs_set_eq:NN \__xepersian_setnavarfont_hook:nn \use_none:nn - -\DeclareDocumentCommand \setpookfont { O{} m O{} } - { - \__xepersian_main_setpookfont:nn {#1,#3} {#2} - \ignorespaces - } -\cs_new:Nn \__xepersian_main_setpookfont:nn - { - \fontspec_set_family:Nnn \l__xepersian_pookfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} - \tl_set_eq:NN \pookdefault \l__xepersian_pookfamily_family_tl - \use:x { \exp_not:n { \DeclareRobustCommand \pookfamily } - { - \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \l__xepersian_pookfamily_family_tl } - \exp_not:N \selectfont - } - } - \str_if_eq:eeT {\familydefault} {\pookdefault} - { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } - \__xepersian_setpookfont_hook:nn {#1} {#2} - \normalfont - } - -\cs_set_eq:NN \__xepersian_setpookfont_hook:nn \use_none:nn - -\DeclareDocumentCommand \setsayehfont { O{} m O{} } - { - \__xepersian_main_setsayehfont:nn {#1,#3} {#2} - \ignorespaces - } -\cs_new:Nn \__xepersian_main_setsayehfont:nn - { - \fontspec_set_family:Nnn \l__xepersian_sayehfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} - \tl_set_eq:NN \sayehdefault \l__xepersian_sayehfamily_family_tl - \use:x { \exp_not:n { \DeclareRobustCommand \sayehfamily } - { - \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \l__xepersian_sayehfamily_family_tl } - \exp_not:N \selectfont - } - } - \str_if_eq:eeT {\familydefault} {\sayehdefault} - { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } - \__xepersian_setsayehfont_hook:nn {#1} {#2} - \normalfont - } - -\cs_set_eq:NN \__xepersian_setsayehfont_hook:nn \use_none:nn - -\DeclareDocumentCommand \setiranicfont { O{} m O{} } - { - \__xepersian_main_setiranicfont:nn {#1,#3} {#2} - \ignorespaces - } -\cs_new:Nn \__xepersian_main_setiranicfont:nn - { - \fontspec_set_family:Nnn \l__xepersian_iranicfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} - \tl_set_eq:NN \iranicdefault \l__xepersian_iranicfamily_family_tl - \use:x { \exp_not:n { \DeclareRobustCommand \iranicfamily } - { - \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \l__xepersian_iranicfamily_family_tl } - \exp_not:N \selectfont - } - } - \str_if_eq:eeT {\familydefault} {\iranicdefault} - { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } - \__xepersian_setiranicfont_hook:nn {#1} {#2} - \normalfont - } - -\cs_set_eq:NN \__xepersian_setiranicfont_hook:nn \use_none:nn - -\ExplSyntaxOff -\def\resetlatinfont{% -\let\@xepersian@@fontsize@scale\xepersian@@fontsize@scale% -\let\@xepersian@@baselineskip@scale\xepersian@@baselineskip@scale% -\def\xepersian@@fontsize@scale{% - \strip@pt\dimexpr 1pt * \dimexpr - \xepersian@@latin@fontsize@scale pt\relax - / \dimexpr \@xepersian@@fontsize@scale pt\relax\relax -}% -\def\xepersian@@baselineskip@scale{% - \strip@pt\dimexpr 1pt * \dimexpr - \xepersian@@latin@baselineskip@scale pt\relax - / \dimexpr \@xepersian@@baselineskip@scale pt\relax\relax -}% -\@nonlatinfalse% -\let\normalfont\latinfont% -\let\reset@font\normalfont% -\latinfont% -\fontsize\f@size\f@baselineskip% -\selectfont% -\let\xepersian@@fontsize@scale\xepersian@@latin@fontsize@scale% -\let\xepersian@@baselineskip@scale\xepersian@@latin@baselineskip@scale% -} -\def\setpersianfont{% -\let\@xepersian@@fontsize@scale\xepersian@@fontsize@scale% -\let\@xepersian@@baselineskip@scale\xepersian@@baselineskip@scale% -\let\xepersian@@fontsize@scale\@ne% -\let\xepersian@@baselineskip@scale\@ne% -\@nonlatintrue% -\let\normalfont\persianfont% -\let\reset@font\normalfont% -\persianfont% -\fontsize\f@size\f@baselineskip% -\selectfont% -\let\xepersian@@fontsize@scale\@xepersian@@fontsize@scale% -\let\xepersian@@baselineskip@scale\@xepersian@@baselineskip@scale% -} -\bidi@newrobustcmd*{\lr}[1]{\LRE{\resetlatinfont#1}} -\bidi@newrobustcmd*{\rl}[1]{\RLE{\setpersianfont#1}} -\def\latin{\LTR\LatinAlphs\@RTL@footnotefalse\resetlatinfont} -\def\endlatin{\endLTR} -\newenvironment{latin*}{\latin - \everypar{% - {\setbox\z@\lastbox - \ifvoid\z@ - \kern-\parindent - \fi}% - }% -}{\endlatin\@endpetrue} -\def\persian{\RTL\PersianAlphs\@RTL@footnotetrue\setpersianfont} -\def\endpersian{\endRTL} -\newenvironment{persian*}{\persian - \everypar{% - {\setbox\z@\lastbox - \ifvoid\z@ - \kern-\parindent - \fi}% - }% -}{\endpersian\@endpetrue} -\newenvironment{latinitems}{\begin{LTRitems}\LatinAlphs\@RTL@footnotefalse\resetlatinfont}{\end{LTRitems}} -\newenvironment{persianitems}{\begin{RTLitems}\PersianAlphs\@RTL@footnotetrue\setpersianfont}{\end{RTLitems}} -\let\originaltoday=\today -\def\latintoday{\lr{\originaltoday}} -\def\today{\rl{\persiantoday}} -\def \@LTRmarginparreset {% - \reset@font - \resetlatinfont - \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}} - -\renewcommand*{\bidi@font@@outputpage}{\if@RTLmain\setpersianfont\else\resetlatinfont\fi} - -\newif\if@xepersian@@computeautoilg -\newcount\xepersian@tcl -\newdimen\xepersian@ilg -\newdimen\xepersian@strutilg -\chardef\f@ur=4 -\newcommand*{\xepersian@computeautoilg}{% compute the interline glue - \xepersian@tcl=1536\xepersian@ilg\z@\xepersian@strutilg\z@ - \loop - \iffontchar\font\xepersian@tcl - \ifdim\XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian@tcl>\z@ - \ifdim\XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian@tcl>\xepersian@ilg - \xepersian@ilg=\XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian@tcl - \fi - \else - \ifdim\XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian@tcl<\z@ - \ifdim-\XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian@tcl>\xepersian@ilg - \xepersian@ilg=-\XeTeXglyphbounds\tw@ \the\XeTeXcharglyph\xepersian@tcl - \fi - \fi - \fi - \ifdim\XeTeXglyphbounds\f@ur \the\XeTeXcharglyph\xepersian@tcl>\z@ - \ifdim\XeTeXglyphbounds\f@ur \the\XeTeXcharglyph\xepersian@tcl>\xepersian@strutilg - \xepersian@strutilg=\XeTeXglyphbounds\f@ur \the\XeTeXcharglyph\xepersian@tcl - \fi - \else - \ifdim\XeTeXglyphbounds\f@ur \the\XeTeXcharglyph\xepersian@tcl<\z@ - \ifdim-\XeTeXglyphbounds\f@ur \the\XeTeXcharglyph\xepersian@tcl>\xepersian@strutilg - \xepersian@strutilg=-\XeTeXglyphbounds\f@ur \the\XeTeXcharglyph\xepersian@tcl - \fi - \fi - \fi - \fi - \advance\xepersian@tcl\@ne - \ifnum\xepersian@tcl<1792\repeat - \advance\xepersian@strutilg\xepersian@ilg -} - -\newif\if@@textdigitfont@on - -\newcommand{\TextDigitFontOn}{\@@textdigitfont@ontrue} -\newcommand{\TextDigitFontOff}{\@@textdigitfont@onfalse} - -\TextDigitFontOn - -\newcommand*\xepersian@setlength[4]{% - \ifdim #2<\ifdim #2=\z@ \z@ \else \p@\fi - \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi - \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi - \setlength{#1}{\p@ \@plus\p@ \@minus\p@}% - \else - \setlength{#1}{\p@ \@plus\p@ \@minus#4}% - \fi - \else - \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi - \setlength{#1}{\p@ \@plus#3 \@minus\p@}% - \else - \setlength{#1}{\p@ \@plus#3 \@minus#4}% - \fi - \fi - \else - \ifdim #3<\ifdim #3=\z@ \z@ \else \p@\fi - \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi - \setlength{#1}{#2 \@plus\p@ \@minus\p@}% - \else - \setlength{#1}{#2 \@plus\p@ \@minus#4}% - \fi - \else - \ifdim #4<\ifdim #4=\z@ \z@ \else \p@\fi - \setlength{#1}{#2 \@plus#3 \@minus\p@}% - \else - \setlength{#1}{#2 \@plus#3 \@minus#4}% - \fi - \fi - \fi -} - -\newcommand*{\setfontsize}[2][1.2\@tempdima]{% - \@defaultunits\@tempdima#2pt\relax\@nnil - \setlength{\@tempdimc}{\@tempdima}% - \addtolength{\@tempdimc}{-10\p@}% - \edef\@ptsize{\strip@pt\@tempdimc}% - \@defaultunits\@tempdimb#1pt\relax\@nnil - \setlength{\@tempdimc}{\dimexpr (100\@tempdimb / \@tempdima * \p@)}% - \edef\@tempb{\the\@tempdimc}% - \setlength{\@tempdimc}{\@tempdima}% - \def\@tempa##1##2##3##4##5\@nnil{\def##1{##2.##3##4}}% - \expandafter\@tempa\expandafter\@tempb\@tempb\@nnil% - \xepersian@setlength{\abovedisplayskip}% - {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% - \xepersian@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% - \xepersian@setlength{\belowdisplayshortskip}% - {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% - \setlength{\belowdisplayskip}{\abovedisplayskip}% - \edef\normalsize{% - \noexpand\@setfontsize\noexpand\normalsize - {\the\@tempdima}{\the\@tempdimb}% - \abovedisplayskip \the\abovedisplayskip - \abovedisplayshortskip \the\abovedisplayshortskip - \belowdisplayskip \the\belowdisplayskip - \belowdisplayshortskip \the\belowdisplayshortskip - \let\noexpand\@listi\noexpand\@listI - }% - \setlength{\@tempdima}{0.9125\@tempdimc}% - \setlength{\@tempdimb}{\@tempb\@tempdima}% - \xepersian@setlength{\abovedisplayskip}% - {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% - \xepersian@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% - \xepersian@setlength{\belowdisplayshortskip}% - {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% - \setlength{\belowdisplayskip}{\abovedisplayskip}% - \edef\small{% - \noexpand\@setfontsize\noexpand\small - {\the\@tempdima}{\the\@tempdimb}% - \abovedisplayskip \the\abovedisplayskip - \abovedisplayshortskip \the\abovedisplayshortskip - \belowdisplayskip \the\belowdisplayskip - \belowdisplayshortskip \the\belowdisplayshortskip - \let\noexpand\@listi\noexpand\@listi@small - }% - \setlength{\@tempdima}{.83334\@tempdimc}% - \setlength{\@tempdimb}{\@tempb\@tempdima}% - \xepersian@setlength{\abovedisplayskip}% - {.8333\@tempdimb}{.1667\@tempdimb}{.5\@tempdimb}% - \xepersian@setlength{\abovedisplayshortskip}{\z@}{.25\@tempdimb}{\z@}% - \xepersian@setlength{\belowdisplayshortskip}% - {.5\@tempdimb}{.25\@tempdimb}{.25\@tempdimb}% - \setlength{\belowdisplayskip}{\abovedisplayskip}% - \edef\footnotesize{% - \noexpand\@setfontsize\noexpand\footnotesize - {\the\@tempdima}{\the\@tempdimb}% - \abovedisplayskip \the\abovedisplayskip - \abovedisplayshortskip \the\abovedisplayshortskip - \belowdisplayskip \the\belowdisplayskip - \belowdisplayshortskip \the\belowdisplayshortskip - \let\noexpand\@listi\noexpand\@listi@footnotesize - }% - \setlength{\@tempdima}{.66667\@tempdimc}% - \setlength{\@tempdimb}{\@tempb\@tempdima}% - \edef\scriptsize{% - \noexpand\@setfontsize\noexpand\scriptsize - {\the\@tempdima}{\the\@tempdimb}% - }% - \setlength{\@tempdima}{.5\@tempdimc}% - \setlength{\@tempdimb}{\@tempb\@tempdima}% - \edef\tiny{% - \noexpand\@setfontsize\noexpand\tiny - {\the\@tempdima}{\the\@tempdimb}% - }% - \setlength{\@tempdima}{1.2\@tempdimc}% - \setlength{\@tempdimb}{\@tempb\@tempdima}% - \edef\large{% - \noexpand\@setfontsize\noexpand\large - {\the\@tempdima}{\the\@tempdimb}% - }% - \setlength{\@tempdima}{1.44\@tempdimc}% - \setlength{\@tempdimb}{\@tempb\@tempdima}% - \edef\Large{% - \noexpand\@setfontsize\noexpand\Large - {\the\@tempdima}{\the\@tempdimb}% - }% - \setlength{\@tempdima}{1.728\@tempdimc}% - \setlength{\@tempdimb}{\@tempb\@tempdima}% - \edef\LARGE{% - \noexpand\@setfontsize\noexpand\LARGE - {\the\@tempdima}{\the\@tempdimb}% - }% - \setlength{\@tempdima}{2.074\@tempdimc}% - \setlength{\@tempdimb}{\@tempb\@tempdima}% - \edef\huge{% - \noexpand\@setfontsize\noexpand\huge - {\the\@tempdima}{\the\@tempdimb}% - }% - \setlength{\@tempdima}{2.488\@tempdimc}% - \setlength{\@tempdimb}{\@tempb\@tempdima}% - \edef\Huge{% - \noexpand\@setfontsize\noexpand\Huge - {\the\@tempdima}{\the\@tempdimb}% - }% - \normalsize - \setlength{\@tempdimb}{\f@baselineskip}% - \xepersian@setlength{\parsep}% - {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% - \xepersian@setlength{\topsep}% - {.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% - \@tempswafalse - \begingroup - \def\@list@extra{\aftergroup\@tempswatrue}% - \csname @listi\endcsname - \endgroup - \edef\@listi{\leftmargin\leftmargini - \topsep \the\topsep - \parsep \the\parsep - \itemsep \parsep - \if@tempswa\noexpand\@list@extra\fi - }% - \let\@listI\@listi - \xepersian@setlength{\parsep}% - {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% - \xepersian@setlength{\topsep}% - {.3333\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% - \@tempswafalse - \begingroup - \def\@list@extra{\aftergroup\@tempswatrue}% - \csname @listi\endcsname - \endgroup - \edef\@listi@small{\leftmargin\leftmargini - \topsep \the\topsep - \parsep \the\parsep - \itemsep \parsep - \if@tempswa\noexpand\@list@extra\fi - }% - \xepersian@setlength{\parsep}% - {.125\@tempdimb}{.0625\@tempdimb}{.0625\@tempdimb}% - \xepersian@setlength{\topsep}% - {.25\@tempdimb}{.125\@tempdimb}{.125\@tempdimb} - \@tempswafalse - \begingroup - \def\@list@extra{\aftergroup\@tempswatrue}% - \csname @listi\endcsname - \endgroup - \edef\@listi@footnotesize{\leftmargin\leftmargini - \topsep \the\topsep - \parsep \the\parsep - \itemsep \parsep - \if@tempswa\noexpand\@list@extra\fi - }% - \xepersian@setlength{\parsep}% - {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% - \xepersian@setlength{\topsep}% - {.3333\@tempdimb}{.1667\@tempdimb}{.0833\@tempdimb}% - \@tempswafalse - \begingroup - \def\@list@extra{\aftergroup\@tempswatrue}% - \csname @listii\endcsname - \endgroup - \edef\@listii{\leftmargin\leftmarginii - \labelwidth=\dimexpr \leftmargin-\labelsep - \topsep \the\topsep - \parsep \the\parsep - \itemsep \parsep - \if@tempswa\noexpand\@list@extra\fi - }% - \xepersian@setlength{\topsep}% - {.1667\@tempdimb}{.0833\@tempdimb}{.0833\@tempdimb}% - \setlength{\partopsep}{\z@ \@plus\z@ \@minus\p@}% - \@tempswafalse - \begingroup - \def\@list@extra{\aftergroup\@tempswatrue}% - \csname @listiii\endcsname - \endgroup - \edef\@listiii{\leftmargin\leftmarginiii - \labelwidth=\dimexpr \leftmargin-\labelsep - \topsep \the\topsep - \parsep \z@ - \partopsep \the\partopsep - \itemsep \topsep - \if@tempswa\noexpand\@list@extra\fi - }% - \@tempswafalse - \begingroup - \def\@list@extra{\aftergroup\@tempswatrue}% - \csname @listiv\endcsname - \endgroup - \edef\@listiv{\leftmargin\leftmarginiv - \labelwidth=\dimexpr \leftmargin-\labelsep\relax - \if@tempswa\noexpand\@list@extra\fi - }% - \@tempswafalse - \begingroup - \def\@list@extra{\aftergroup\@tempswatrue}% - \csname @listv\endcsname - \endgroup - \edef\@listv{\leftmargin\leftmarginv - \labelwidth=\dimexpr \leftmargin-\labelsep\relax - \if@tempswa\noexpand\@list@extra\fi - }% - \@tempswafalse - \begingroup - \def\@list@extra{\aftergroup\@tempswatrue}% - \csname @listvi\endcsname - \endgroup - \edef\@listvi{\leftmargin\leftmarginvi - \labelwidth=\dimexpr \leftmargin-\labelsep\relax - \if@tempswa\noexpand\@list@extra\fi - }% - \@listi - \setlength{\@tempdimb}{\f@baselineskip}% - \setlength{\footnotesep}{.555\@tempdimb}% - \xepersian@setlength{\skip\footins}% - {.75\@tempdimb}{.3333\@tempdimb}{.1667\@tempdimb}% - \xepersian@setlength{\floatsep}% - {\@tempdimb}{.1667\@tempdimb}{.1667\@tempdimb}% - \xepersian@setlength{\textfloatsep}% - {1.6667\@tempdimb}{.1667\@tempdimb}{.3333\@tempdimb}% - \setlength{\intextsep}{\floatsep}% - \setlength{\dblfloatsep}{\floatsep}% - \setlength{\dbltextfloatsep}{\textfloatsep}% - \setlength{\@fptop}{\z@ \@plus 1fil}% - \setlength{\@fpsep}{.6667\@tempdimb \@plus 2fil}% - \setlength{\@fpbot}{\@fptop}% - \setlength{\@dblfptop}{\@fptop}% - \setlength{\@dblfpsep}{\@fpsep}% - \setlength{\@dblfpbot}{\@fptop}% - \xepersian@setlength{\partopsep}{.2\@tempdimb}{.1\@tempdimb}{.1\@tempdimb}% -} - -\renewcommand*{\@bidi@logo@}{% - \@bidi@logo@hb@xt@columnwidth - {\hss\bfseries -حروفچینی شده با - \textsf{\XePersian}\quad\@bidi@logo{xepersian-logo.pdf}}} - -\renewcommand*{\@bidi@pdfcreator}{% - The xepersian package, v\xepersian@version, \xepersiandate -} - -\newcommand*{\@xepersian@pdfcustomproperties}{% - This is the xepersian package, Version \xepersian@version, - Released May 14, 2020. -} - -\newcommand\twocolumnstableofcontents{% -\if@bidi@csundef{multi@column@out}{% -\PackageError{xepersian}{Oops! you should load multicol package before xepersian package for being able to use this command}{}}{% - \begin{multicols}{2}[\section*{\contentsname}]% - \small - \@starttoc{toc}% - \end{multicols}}} -\bidi@newrobustcmd*{\XePersian}{\leavevmode$\smash{\hbox{X\lower.5ex - \hbox{\kern-.125em\bidi@reflect@box{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\@Abjad#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 غ% - \else\@ctrerr\fi} -\def\Abjad#1{\expandafter\@Abjad\csname c@#1\endcsname} -\let\Abjadnumeral\@Abjad -\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% -\ifnum#2#3=30% -\xepersian@dahgan@tartibi#2% -\else% -\xepersian@dahgan#2% -\fi% -\ifnum#3>\z@\ و \xepersian@yekanv#3\fi% -#60% -\fi% -} -\def\xepersian@dahgan@tartibi#1{% -\ifcase#1\or\or بیست\or سیا\or چهل% -\or پنجاه\or شصت\or هفتاد\or هشتاد% -\or نود\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{@abjad}{% -\def\@abjad#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#1{\expandafter\@abjad\csname c@#1\endcsname} -\let\abjadnumeral\@abjad -\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\LatinAlphs{% - \let\@alph\@latinalph% - \let\@Alph\@latinAlph% -} -\def\thempfootnote{{\itshape\@latinalph\c@mpfootnote}} -\renewcommand*{\bidi@@thebibliography@font@hook}{% -\if@LTRbibitems - \resetlatinfont -\fi} -\bidi@AfterEndPreamble{% -\if@bidi@csundef{persianfont}{% -\PackageError{xepersian}{You have not specified any font\MessageBreak - for the main Persian text}{Use `\settextfont' to load a font.}% -}{}} -\@ifdefinitionfileloaded{loadingorder-xetex-bidi}{\input{loadingorder-xepersian.def}}{} -\@ifdefinitionfileloaded{footnote-xetex-bidi}{\input{footnote-xepersian.def}}{} -\@ifpackageloaded{appendix}{\input{appendix-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{fancyref}{\input{fancyref-xepersian.def}}{} -\@ifpackageloaded{bidituftesidenote}{\input{bidituftesidenote-xepersian.def}}{} -\@ifpackageloaded{breqn}{\input{breqn-xepersian.def}}{} -\@ifpackageloaded{enumerate}{\input{enumerate-xepersian.def}}{} -\@ifpackageloaded{enumitem}{\input{enumitem-xepersian.def}}{} -\@ifpackageloaded{framed}{\input{framed-xepersian.def}}{} -\@ifpackageloaded{glossaries}{\input{glossaries-xepersian.def}}{} -\@ifpackageloaded{hyperref}{\input{hyperref-xepersian.def}}{} -\@ifpackageloaded{minitoc}{\input{minitoc-xepersian.def}}{} -\@ifpackageloaded{natbib}{\input{natbib-xepersian.def}}{} -\@ifpackageloaded{soul}{\input{soul-xepersian.def}}{} -\@ifpackageloaded{tikz}{\input{tikz.code-xepersian.def}}{} -\@ifpackageloaded{tkz-linknodes}{\input{tkz-linknodes-xepersian.def}}{} -\@ifpackageloaded{tocloft}{\@ifclassloaded{memoir}{}{\input{tocloft-xepersian.def}}}{} -\@ifpackageloaded{varioref}{\input{varioref-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}}{} - -\def\xepersian@@fontsize@branch#1{% - \@tempcnta\z@ - \@for\xepersian@tmp:=#1\do{% - \KV@@sp@def\xepersian@frag{\xepersian@tmp}% - \ifcase\@tempcnta\relax% cnta == 0 - \edef\xepersian@value{\xepersian@frag}% - \setfontsize{\xepersian@frag}% - \or% cnta == 1 - \setfontsize[\xepersian@frag]{\xepersian@value}% - \else\fi - \advance\@tempcnta\@ne}% -} - -\define@choicekey{xepersian.sty}{mathdigits}[\xepersian@tempa\xepersian@tempb]{automatic,default,persian}{% - \ifcase\xepersian@tempb\relax - \AutoMathsDigits - \or - \DefaultMathsDigits - \or - \PersianMathsDigits - \fi} -\define@choicekey{xepersian.sty}{inlinemathdigits}[\xepersian@tempa\xepersian@tempb]{automatic,default,persian}{% - \ifcase\xepersian@tempb\relax - \AutoInlineMathsDigits - \or - \DefaultInlineMathsDigits - \or - \PersianInlineMathsDigits - \fi} -\define@choicekey{xepersian.sty}{displaymathdigits}[\xepersian@tempa\xepersian@tempb]{automatic,default,persian}{% - \ifcase\xepersian@tempb\relax - \AutoDisplayMathsDigits - \or - \DefaultDisplayMathsDigits - \or - \PersianDisplayMathsDigits - \fi} -\define@choicekey{xepersian.sty}{RTLdocument}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \@RTLtrue - \or - \@RTLfalse - \fi} - -\define@choicekey{xepersian.sty}{documentdirection}[\xepersian@tempa\xepersian@tempb]{righttoleft,lefttoright}{% - \ifcase\xepersian@tempb\relax - \@RTLtrue - \or - \@RTLfalse - \fi} - -\define@choicekey{xepersian.sty}{tabledirection}[\xepersian@tempa\xepersian@tempb]{righttoleft,lefttoright}{% - \ifcase\xepersian@tempb\relax - \@RTLtabtrue - \or - \@RTLtabfalse - \fi} - -\define@choicekey{xepersian.sty}{script}[\xepersian@tempa\xepersian@tempb]{latin,nonlatin}[latin]{% - \ifcase\xepersian@tempb\relax - \@nonlatinfalse - \or - \@nonlatintrue - \fi} - -\define@choicekey{xepersian.sty}{rldocument}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \@RTLtrue - \or - \@RTLfalse - \fi} -\define@choicekey{xepersian.sty}{footnoterule}[\xepersian@tempa\xepersian@tempb]{automatic,left,right,split,textwidth}{% - \ifcase\xepersian@tempb\relax - \autofootnoterule - \or - \leftfootnoterule - \or - \rightfootnoterule - \or - \SplitFootnoteRule - \or - \textwidthfootnoterule - \fi} -\define@choicekey{xepersian.sty}{footnotedirection}[\xepersian@tempa\xepersian@tempb]{righttoleft,lefttoright}{% - \ifcase\xepersian@tempb\relax - \@RTL@footnotetrue - \or - \@RTL@footnotefalse - \fi} -\define@choicekey{xepersian.sty}{debugfootnotedirection}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \footdir@debugtrue - \or - \footdir@debugfalse - \fi} -\define@choicekey{xepersian.sty}{Kashida}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \input{kashida-xepersian.def} - \fi} -\define@choicekey{xepersian.sty}{localise}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \input{localise-xepersian.def} - \fi} -\define@choicekey{xepersian.sty}{extrafootnotefeatures}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \@extrafootnotefeaturestrue - \or - \@extrafootnotefeaturesfalse - \fi} -\define@choicekey{xepersian.sty}{quickindex}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \PackageWarning{xepersian}{Obsolete option}% - \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-variant2 -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 - \fi} -\define@choicekey{xepersian.sty}{quickindex-variant1}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \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-variant1 -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 - \fi} -\define@choicekey{xepersian.sty}{quickindex-variant2}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \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-variant2 -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 - \fi} -\define@choicekey{xepersian.sty}{abjadvariant}[\xepersian@tempa\xepersian@tempb]{one,two}{% - \ifcase\xepersian@tempb\relax - \def\PersianAlphs{% - \let\@alph\@abjad% - \let\@Alph\@abjad% - } - \or - \def\PersianAlphs{% - \let\@alph\@Abjad% - \let\@Alph\@Abjad% - } - \fi} -\DeclareOptionX{defaultlatinfontfeatures}{% -\defaultfontfeatures - [\latinfont] - {#1} -} - -\DeclareOptionX{mathfontsizescale}{% - \def\xepersian@@math@fontsize@scale{#1}% - } - -\DeclareOptionX{fontsizescale}{% - \def\xepersian@@fontsize@scale{#1}% - } - -\DeclareOptionX{fontsize}{% - \xepersian@@fontsize@branch{#1}% - } - -\DeclareOptionX{latinfontsizescale}{% - \def\xepersian@@latin@fontsize@scale{#1}% - } - -\DeclareOptionX{baselineskipscale}{% - \def\xepersian@@baselineskip@scale{#1}% - } - -\DeclareOptionX{latinbaselineskipscale}{% - \def\xepersian@@latin@baselineskip@scale{#1}% - } - -\define@choicekey{xepersian.sty}{logo}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \AtBeginDocument{\@bidi@inslogo@}% - \or - \let\@bidi@logo@\@empty \let\@bidi@inslogo@\@empty - \fi} - -\define@choicekey{xepersian.sty}{pdfinfo}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \@bidi@pdfm@marktrue - \or - \@bidi@pdfm@markfalse - \fi} - -\define@choicekey{xepersian.sty}{computeautoilg}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \@xepersian@@computeautoilgtrue - \or - \@xepersian@@computeautoilgfalse - \fi} - -\define@choicekey{xepersian.sty}{DetectColumn}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \def\bidi@firstcolumn@status@write{% - \protected@write\@auxout{}% - {\string\bidi@column@status - {1}}}% - \def\bidi@lastcolumn@status@write{% - \protected@write\@auxout{}% - {\string\bidi@column@status{2}}}% - \or - \let\bidi@firstcolumn@status@write\relax - \let\bidi@lastcolumn@status@write\relax - \fi} - -\define@choicekey{xepersian.sty}{debugtextdigitfont}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \bidi@AtEndPreamble{% - \bidi@patchcmd{\xepersian@@start@switch@textdigitfont}% - {\xepersian@textdigitfont}{\addfontfeature{Color=C71585}}{}{}% - } - \or - \relax - \fi} - -\define@choicekey{xepersian.sty}{perpagefootnote}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% - \ifcase\xepersian@tempb\relax - \@bidi@perpage@footnotetrue - \or - \@bidi@perpage@footnotefalse - \fi} - -\newif\if@xepersian@fontsloadable@bool -\define@choicekey{xepersian.sty}{fontsloadable}[\xepersian@tempa\xepersian@tempb]{true,false}[true]{% - \ifcase\xepersian@tempb\relax - \@xepersian@fontsloadable@booltrue - \or - \@xepersian@fontsloadable@boolfalse - \fi} - -\ExecuteOptionsX{% - fontsloadable=false, - documentdirection=righttoleft, - tabledirection=righttoleft, - script=nonlatin, - footnotedirection=righttoleft, - footnoterule=automatic, - abjadvariant=two, - DetectColumn=off, - fontsizescale=\@ne, - latinfontsizescale=\@ne, - mathfontsizescale=\@ne, - baselineskipscale=\@ne, - latinbaselineskipscale=\@ne -} - -\ProcessOptionsX - -\if@extrafootnotefeatures - \input{extrafootnotefeatures-xetex-bidi.def}% - \input{extrafootnotefeatures-xepersian.def}% -\fi - -\if@xepersian@fontsloadable@bool - \PackageWarningNoLine{xepersian}{% - The option `fontsloadable' should only be used in exceptional - cases. - You are not allowed to use the option `fontsloadable' unless - you have a written permission from the primary author of the - xepersian package}% -\else - \input{fontspec-xepersian.def}% -\fi - -\bidi@patchcmd{\set@fontsize}{\@tempdimb#2pt}{% - \@tempdimb\xepersian@@fontsize@scale\dimexpr#2pt\relax -}{}{} - -\bidi@patchcmd{\set@fontsize}{\@tempskipa#3pt}{% - \@tempskipa\xepersian@@baselineskip@scale\dimexpr#3pt\relax -}{}{} - -\newcommand*{\xepersian@@update@math@fontsize}[1]{% - \strip@pt\dimexpr\xepersian@@math@fontsize@scale - \dimexpr 1pt * \dimexpr #1 pt\relax / - \dimexpr \xepersian@@fontsize@scale pt\relax - \relax\relax -} - -\bidi@patchcmd{\getanddefine@fonts}{% - \xdef\font@name{\csname \string#2/\tf@size\endcsname}% -}{% - \xdef\font@name{\csname \string#2/\xepersian@@update@math@fontsize\tf@size\endcsname}% -}{}{} - -\bidi@patchcmd{\getanddefine@fonts}{% - \xdef\font@name{\csname \string#2/\sf@size\endcsname}% -}{% - \xdef\font@name{\csname \string#2/\xepersian@@update@math@fontsize\sf@size\endcsname}% -}{}{} - -\bidi@patchcmd{\getanddefine@fonts}{% - \xdef\font@name{\csname \string#2/\ssf@size\endcsname}% -}{% - \xdef\font@name{\csname \string#2/\xepersian@@update@math@fontsize\ssf@size\endcsname}% -}{}{} - -\if@xepersian@@computeautoilg -\bidi@patchcmd{\set@fontsize}{% -\baselineskip\f@baselineskip\relax -}{% -\baselineskip\f@baselineskip\relax -\xepersian@computeautoilg - \ifdim\xepersian@strutilg>\baselineskip - \PackageInfo{xepersian}{character with height+depth greater than current baselineskip found in font}% - \PackageInfo{xepersian}{baselineskip changed to that height+depth!}% - \baselineskip\xepersian@strutilg - \ifdim\footnotesep=.7\baselineskip - \else - \footnotesep.7\baselineskip - \fi - \fi -}{}{} -\fi - -\setlatintextfont[Path,BoldFont={lmroman10-bold},BoldItalicFont={lmroman10-bolditalic},ItalicFont={lmroman10-italic},SmallCapsFont={lmromancaps10-regular},SlantedFont={lmromanslant10-regular},BoldSlantedFont={lmromanslant10-bold}]{lmroman10-regular}% -\PersianAlphs -\endinput -%% -%% End of file `xepersian.sty'. |