diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty | 153 |
1 files changed, 86 insertions, 67 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty index 43ec6e38ee8..6813b5959b2 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty +++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty @@ -17,7 +17,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10607} +%% \CheckSum{10620} %% \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 @@ -35,8 +35,8 @@ %% Right brace \} Tilde \~} %% \NeedsTeXFormat{LaTeX2e} -\def\xepersian@version{21.2} -\def\xepersiandate{2018/06/15} +\def\xepersian@version{21.3} +\def\xepersiandate{2018/08/12} \ProvidesPackage{xepersian}[\xepersiandate\space v\xepersian@version\space Persian typesetting in XeLaTeX] \RequirePackage{fontspec} @@ -60,9 +60,9 @@ Persian typesetting in XeLaTeX] * ^^J% * Location on CTAN: /macros/xetex/latex/xepersian^^J% * ^^J% -* Issue tracker: https://gitlab.com/persian-tex/xepersian/issues^^J% +* Issue tracker: https://sourceforge.net/p/persian-tex-dist/tickets^^J% * ^^J% -* Support: persian-tex@tug.org^^J% +* Support: http://persian-tex.com^^J% * ^^J% ****************************************************} \typeout{\@xepersian@info} @@ -122,23 +122,23 @@ Persian typesetting in XeLaTeX] \DeclareDocumentCommand \settextfont { O{} m O{} } { \__xepersian_main_settextfont:nn {#1,#3} {#2} + \ignorespaces } \cs_new:Nn \__xepersian_main_settextfont:nn { - \fontspec_set_family:Nnn \g__xepersian_persianfont_family {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} - \tl_set_eq:NN \rmdefault \g__xepersian_persianfont_family + \fontspec_set_family:Nnn \l__xepersian_persianfont_family_tl {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} + \tl_set_eq:NN \rmdefault \l__xepersian_persianfont_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \persianfont } { - \exp_not:N \fontencoding { \l__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \g__xepersian_persianfont_family } + \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_x:nnT {\familydefault} {\rmdefault} - { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } \__xepersian_settextfont_hook:nn {#1} {#2} \normalfont - \ignorespaces } \cs_set_eq:NN \__xepersian_settextfont_hook:nn \use_none:nn @@ -146,16 +146,17 @@ Persian typesetting in XeLaTeX] \DeclareDocumentCommand \settextdigitfont { O{} m O{} } { \__xepersian_main_settextdigitfont:nn {#1,#3} {#2} + \ignorespaces } \cs_new:Nn \__xepersian_main_settextdigitfont:nn { - \fontspec_set_family:Nnn \g__xepersian_textdigitfont_family {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} + \fontspec_set_family:Nnn \l__xepersian_textdigitfont_family_tl {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} \use:x { \exp_not:n { \DeclareRobustCommand \xepersian@textdigitfont } { - \exp_not:N \fontfamily { \g__xepersian_textdigitfont_family } - \exp_not:N \fontencoding { \l__fontspec_nfss_enc_tl } + \exp_not:N \fontfamily { \l__xepersian_textdigitfont_family_tl } + \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl } \exp_not:N \selectfont } } @@ -188,27 +189,28 @@ Persian typesetting in XeLaTeX] { \__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 \g__xepersian_latinfont_family {Mapping=tex-text,#1} {#2} + \fontspec_set_family:Nnn \l__xepersian_latinfont_family_tl {Mapping=tex-text,#1} {#2} \use:x { \exp_not:n { \DeclareRobustCommand \latinfont } { - \exp_not:N \fontencoding { \l__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \g__xepersian_latinfont_family } + \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_x:nnT {\familydefault} {\rmdefault} - { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } \__xepersian_setlatintextfont_hook:nn {#1} {#2} \normalfont - \ignorespaces } \cs_set_eq:NN \__xepersian_setlatintextfont_hook:nn \use_none:nn @@ -218,17 +220,23 @@ Persian typesetting in XeLaTeX] \DeclareDocumentCommand \defpersianfont { m O{} m O{} } { - \__xepersian_main_defpersianfont:nnn {#1} {#2,#4} {#3} + \__xepersian_main_defpersianfont:nnnN {#1} {#2,#4} {#3} + \NewDocumentCommand } -\cs_new:Nn \__xepersian_main_defpersianfont:nnn +\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 { g__xepersian_ \cs_to_str:N #1 _family } {Script=Parsi,Language=Parsi,Mapping=parsidigits,#2} {#3} + \fontspec_set_family:cnn { l__xepersian_ \cs_to_str:N #1 _family_tl } {Script=Parsi,Language=Parsi,Mapping=parsidigits,#2} {#3} \use:x { - \exp_not:N \DeclareRobustCommand \exp_not:N #1 + \exp_not:N #4 \exp_not:N #1 {} { - \exp_not:N \fontfamily { \use:c {g__xepersian_ \cs_to_str:N #1 _family} } - \exp_not:N \fontencoding { \l__fontspec_nfss_enc_tl } + \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 } } @@ -236,17 +244,23 @@ Persian typesetting in XeLaTeX] \DeclareDocumentCommand \deflatinfont { m O{} m O{} } { - \__xepersian_main_deflatinfont:nnn {#1} {#2,#4} {#3} + \__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:nnn +\cs_new:Nn \__xepersian_main_deflatinfont:nnnN { - \fontspec_set_family:cnn { g__xepersian_ \cs_to_str:N #1 _family } {Mapping=tex-text,#2} {#3} + \fontspec_set_family:cnn { l__xepersian_ \cs_to_str:N #1 _family_tl } {Mapping=tex-text,#2} {#3} \use:x { - \exp_not:N \DeclareRobustCommand \exp_not:N #1 + \exp_not:N #4 \exp_not:N #1 {} { - \exp_not:N \fontfamily { \use:c {g__xepersian_ \cs_to_str:N #1 _family} } - \exp_not:N \fontencoding { \l__fontspec_nfss_enc_tl } + \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 } } @@ -286,23 +300,23 @@ Persian typesetting in XeLaTeX] \DeclareDocumentCommand \setpersiansansfont { O{} m O{} } { \__xepersian_main_setpersiansansfont:nn {#1,#3} {#2} + \ignorespaces } \cs_new:Nn \__xepersian_main_setpersiansansfont:nn { - \fontspec_set_family:Nnn \g__xepersian_persiansffamily_family {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} - \tl_set_eq:NN \persiansfdefault \g__xepersian_persiansffamily_family + \fontspec_set_family:Nnn \l__xepersian_persiansffamily_family_tl {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} + \tl_set_eq:NN \persiansfdefault \l__xepersian_persiansffamily_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \persiansffamily } { - \exp_not:N \fontencoding { \l__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \g__xepersian_persiansffamily_family } + \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_x:nnT {\familydefault} {\persiansfdefault} - { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } \__xepersian_setpersiansansfont_hook:nn {#1} {#2} \normalfont - \ignorespaces } \cs_set_eq:NN \__xepersian_setpersiansansfont_hook:nn \use_none:nn @@ -310,23 +324,23 @@ Persian typesetting in XeLaTeX] \DeclareDocumentCommand \setpersianmonofont { O{} m O{} } { \__xepersian_main_setpersianmonofont:nn {#1,#3} {#2} + \ignorespaces } \cs_new:Nn \__xepersian_main_setpersianmonofont:nn { - \fontspec_set_family:Nnn \g__xepersian_persianttfamily_family {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} - \tl_set_eq:NN \persianttdefault \g__xepersian_persianttfamily_family + \fontspec_set_family:Nnn \l__xepersian_persianttfamily_family_tl {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} + \tl_set_eq:NN \persianttdefault \l__xepersian_persianttfamily_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \persianttfamily } { - \exp_not:N \fontencoding { \l__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \g__xepersian_persianttfamily_family } + \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_x:nnT {\familydefault} {\persianttdefault} - { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } \__xepersian_setpersianmonofont_hook:nn {#1} {#2} \normalfont - \ignorespaces } \cs_set_eq:NN \__xepersian_setpersianmonofont_hook:nn \use_none:nn @@ -334,23 +348,23 @@ Persian typesetting in XeLaTeX] \DeclareDocumentCommand \setnavarfont { O{} m O{} } { \__xepersian_main_setnavarfont:nn {#1,#3} {#2} + \ignorespaces } \cs_new:Nn \__xepersian_main_setnavarfont:nn { - \fontspec_set_family:Nnn \g__xepersian_navarfamily_family {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} - \tl_set_eq:NN \navardefault \g__xepersian_navarfamily_family + \fontspec_set_family:Nnn \l__xepersian_navarfamily_family_tl {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} + \tl_set_eq:NN \navardefault \l__xepersian_navarfamily_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \navarfamily } { - \exp_not:N \fontencoding { \l__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \g__xepersian_navarfamily_family } + \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_x:nnT {\familydefault} {\navardefault} - { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } \__xepersian_setnavarfont_hook:nn {#1} {#2} \normalfont - \ignorespaces } \cs_set_eq:NN \__xepersian_setnavarfont_hook:nn \use_none:nn @@ -358,23 +372,23 @@ Persian typesetting in XeLaTeX] \DeclareDocumentCommand \setpookfont { O{} m O{} } { \__xepersian_main_setpookfont:nn {#1,#3} {#2} + \ignorespaces } \cs_new:Nn \__xepersian_main_setpookfont:nn { - \fontspec_set_family:Nnn \g__xepersian_pookfamily_family {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} - \tl_set_eq:NN \pookdefault \g__xepersian_pookfamily_family + \fontspec_set_family:Nnn \l__xepersian_pookfamily_family_tl {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} + \tl_set_eq:NN \pookdefault \l__xepersian_pookfamily_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \pookfamily } { - \exp_not:N \fontencoding { \l__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \g__xepersian_pookfamily_family } + \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_x:nnT {\familydefault} {\pookdefault} - { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } \__xepersian_setpookfont_hook:nn {#1} {#2} \normalfont - \ignorespaces } \cs_set_eq:NN \__xepersian_setpookfont_hook:nn \use_none:nn @@ -382,23 +396,23 @@ Persian typesetting in XeLaTeX] \DeclareDocumentCommand \setsayehfont { O{} m O{} } { \__xepersian_main_setsayehfont:nn {#1,#3} {#2} + \ignorespaces } \cs_new:Nn \__xepersian_main_setsayehfont:nn { - \fontspec_set_family:Nnn \g__xepersian_sayehfamily_family {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} - \tl_set_eq:NN \sayehdefault \g__xepersian_sayehfamily_family + \fontspec_set_family:Nnn \l__xepersian_sayehfamily_family_tl {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} + \tl_set_eq:NN \sayehdefault \l__xepersian_sayehfamily_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \sayehfamily } { - \exp_not:N \fontencoding { \l__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \g__xepersian_sayehfamily_family } + \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_x:nnT {\familydefault} {\sayehdefault} - { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } \__xepersian_setsayehfont_hook:nn {#1} {#2} \normalfont - \ignorespaces } \cs_set_eq:NN \__xepersian_setsayehfont_hook:nn \use_none:nn @@ -406,23 +420,23 @@ Persian typesetting in XeLaTeX] \DeclareDocumentCommand \setiranicfont { O{} m O{} } { \__xepersian_main_setiranicfont:nn {#1,#3} {#2} + \ignorespaces } \cs_new:Nn \__xepersian_main_setiranicfont:nn { - \fontspec_set_family:Nnn \g__xepersian_iranicfamily_family {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} - \tl_set_eq:NN \iranicdefault \g__xepersian_iranicfamily_family + \fontspec_set_family:Nnn \l__xepersian_iranicfamily_family_tl {Script=Parsi,Language=Parsi,Mapping=parsidigits,#1} {#2} + \tl_set_eq:NN \iranicdefault \l__xepersian_iranicfamily_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \iranicfamily } { - \exp_not:N \fontencoding { \l__fontspec_nfss_enc_tl } - \exp_not:N \fontfamily { \g__xepersian_iranicfamily_family } + \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_x:nnT {\familydefault} {\iranicdefault} - { \tl_set_eq:NN \encodingdefault \l__fontspec_nfss_enc_tl } + { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl } \__xepersian_setiranicfont_hook:nn {#1} {#2} \normalfont - \ignorespaces } \cs_set_eq:NN \__xepersian_setiranicfont_hook:nn \use_none:nn @@ -812,6 +826,11 @@ Persian typesetting in XeLaTeX] The xepersian package, v\xepersian@version, \xepersiandate } +\newcommand*{\@xepersian@pdfcustomproperties}{% + This is the xepersian package, Version \xepersian@version, + Released August 12, 2018. +} + \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}{}}{% |