diff options
Diffstat (limited to 'Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx')
-rw-r--r-- | Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx | 279 |
1 files changed, 191 insertions, 88 deletions
diff --git a/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx b/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx index fb740c00a5b..cef2486b84e 100644 --- a/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx +++ b/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx @@ -5,7 +5,7 @@ %<*readme> ____________________ The XePersian package -v23.2 +v23.3 The xepersian package provides a convenient interface for typesetting Persian and English texts in LaTeX, using XeTeX @@ -20,9 +20,18 @@ please use the issue tracker: In doing so, please always explain your issue well enough, and always include a minimal working example showing the issue. - -Current version release date: 2022/02/01 +You may also have conversations, ask questions and post answers +without opening issues using the Discussions space: + + <https://github.com/tex-persian/xepersian/discussions> + +The announcements for the new releases of the package will +also appear in the Discussions space under the Announcements +category. + + +Current version release date: 2022/02/04 ___________________________________________ Vafa Khalighi tex-persian@vafa.ac @@ -117,6 +126,7 @@ by Vafa Khalighi. } \usepostamble\mapping@postamble \generate{\file{persian-tex-text.map}{\from{\jobname.dtx}{persian-tex-text.map}}} +\generate{\file{persian-tex-text-nonumbers.map}{\from{\jobname.dtx}{persian-tex-text-nonumbers.map}}} \let\MetaPrefix\DoubleperCent \usepostamble\org@postamble \generate{\file{rapport1-xepersian.def}{\from{\jobname.dtx}{table,rapport1-xepersian.def}}} @@ -133,7 +143,7 @@ by Vafa Khalighi. \generate{\file{varioref-xepersian.def}{\from{\jobname.dtx}{table,varioref-xepersian.def}}} \generate{\file{xepersian.sty}{\from{\jobname.dtx}{table,xepersian.sty}}} \generate{\file{xepersian-magazine.cls}{\from{\jobname.dtx}{table,xepersian-magazine.cls}}} -\generate{\file{xepersian-mathsdigitspec.sty}{\from{\jobname.dtx}{table,xepersian-mathsdigitspec.sty}}} +\generate{\file{xepersian-mathdigitspec.sty}{\from{\jobname.dtx}{table,xepersian-mathdigitspec.sty}}} \generate{\file{xepersian-multiplechoice.sty}{\from{\jobname.dtx}{table,xepersian-multiplechoice.sty}}} \generate{\file{xepersian-persiancal.sty}{\from{\jobname.dtx}{table,xepersian-persiancal.sty}}} %</batchfile> @@ -158,7 +168,7 @@ by Vafa Khalighi. \documentclass{ltxdoc} \input{xepersian-doc-preamble.ltx} \hypersetup{% - pdftitle={Source documentation for version 23.2 of the XePersian + pdftitle={Source documentation for version 23.3 of the XePersian package}% } \EnableCrossrefs @@ -177,7 +187,7 @@ by Vafa Khalighi. % \GetFileInfo{\jobname.dtx} % \title{\textcolor{blue!65!black}{\Huge The \textsf{\XePersian} \textit{Package}}\\ %\LARGE Persian for \LaTeXe, using {\XeTeX} engine\\[5pt] -%\large Source documentation for \textcolor{blue!65!black}{version 23.2}} +%\large Source documentation for \textcolor{blue!65!black}{version 23.3}} % \author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team to maintain the package in the period 2018--2020.}\\ % \url{tex-persian@vafa.ac}} %\setcounter{page}{0} @@ -188,7 +198,7 @@ by Vafa Khalighi. %\textcolor{blue!65!black}{\Huge The \textsf{\XePersian} \textit{Package}} % %\Large -%Source documentation for \textcolor{blue!65!black}{version 23.2}} +%Source documentation for \textcolor{blue!65!black}{version 23.3}} % %\vskip 0pt plus 3fill %\textit{\large to my Master, \textbf{Ferdowsi The Great}} @@ -204,6 +214,18 @@ by Vafa Khalighi. %\medskip %In doing so, please always explain your issue well enough, and always include %a minimal working example showing the issue. +% +%\bigskip +%You may also have conversations, ask questions and post answers +%without opening issues using the Discussions space: +% +%\medskip +% \centerline{\url{https://github.com/tex-persian/xepersian/discussions}} +% +%\medskip +%The announcements for the new releases of the package will +%also appear in the Discussions space under the Announcements +%category. %\end{minipage} %}} % @@ -224,7 +246,7 @@ by Vafa Khalighi. %\iffalse %<*table> %\fi -%% \CheckSum{10887} +%% \CheckSum{10959} %% \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 @@ -1512,8 +1534,8 @@ by Vafa Khalighi. % \begin{macrocode} \ProvidesFile{xepersian-localise-commands-xepersian.def}[2012/07/25 v0.2 Persian localisation of XePersian commands] \eqcommand{خطزیرنویسخودکار}{autofootnoterule} -\eqcommand{اعدادفرمولهاخودکار}{AutoMathsDigits} -\eqcommand{اعدادفرمولهالاتین}{DefaultMathsDigits} +\eqcommand{اعدادفرمولهاخودکار}{AutoMathDigits} +\eqcommand{اعدادفرمولهالاتین}{DefaultMathDigits} \eqcommand{معادل@کلید}{keyval@eq@alias@key} \eqcommand{تعریفقلملاتین}{deflatinfont} \eqcommand{تعریفقلمپارسی}{defpersianfont} @@ -1531,7 +1553,7 @@ by Vafa Khalighi. \eqcommand{پانویسعنوان}{LTRthanks} \eqcommand{روزپارسی}{persianday} \eqcommand{قلمپارسی}{persianfont} -\eqcommand{اعدادفرمولهاپارسی}{PersianMathsDigits} +\eqcommand{اعدادفرمولهاپارسی}{PersianMathDigits} \eqcommand{ماهپارسی}{persianmonth} \eqcommand{سالپارسی}{persianyear} \eqcommand{علامتچپنقلقولپارسی}{plq} @@ -3091,6 +3113,39 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET % \end{macrocode} % \iffalse %</persian-tex-text.map> +%<*persian-tex-text-nonumbers.map> +%\fi +% \section{File \texttt{persian-tex-text-nonumbers.map}} +% \begin{macrocode} +LHSName "persian-TeX-text-nonumbers" +RHSName "Unicode" + +pass(Unicode) +U+002C <> U+060C ; comma > arabic comma +U+003F <> U+061F ; question mark -> arabic qm +U+003B <> U+061B ; semicolon -> arabic semicolon + +; ligatures from Knuth's original CMR fonts +U+002D U+002D <> U+2013 ; -- -> en dash +U+002D U+002D U+002D <> U+2014 ; --- -> em dash + +U+0027 <> U+2019 ; ' -> right single quote +U+0027 U+0027 <> U+201D ; '' -> right double quote +U+0022 > U+201D ; " -> right double quote + +U+0060 <> U+2018 ; ` -> left single quote +U+0060 U+0060 <> U+201C ; `` -> left double quote + +U+0021 U+0060 <> U+00A1 ; !` -> inverted exclam +U+003F U+0060 <> U+00BF ; ?` -> inverted question + +; additions supported in T1 encoding +U+002C U+002C <> U+201E ; ,, -> DOUBLE LOW-9 QUOTATION MARK +U+003C U+003C <> U+00AB ; << -> LEFT POINTING GUILLEMET +U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET +% \end{macrocode} +% \iffalse +%</persian-tex-text-nonumbers.map> %<*rapport1-xepersian.def> %\fi % \section{File \texttt{rapport1-xepersian.def}} @@ -3423,13 +3478,13 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET % \section{File \texttt{xepersian.sty}} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\def\xepersian@version{23.2} -\def\xepersiandate{2022/02/01} +\def\xepersian@version{23.3} +\def\xepersiandate{2022/02/04} \ProvidesPackage{xepersian}[\xepersiandate\space v\xepersian@version\space Persian typesetting in XeLaTeX] \RequirePackage{fontspec} \RequirePackage{xepersian-persiancal} -\RequirePackage{xepersian-mathsdigitspec} +\RequirePackage{xepersian-mathdigitspec} \RequirePackage{bidi} \edef\@xepersian@info{****************************************************^^J% * ^^J% @@ -3451,6 +3506,8 @@ Persian typesetting in XeLaTeX] * ^^J% * Issue tracker: https://github.com/tex-persian/xepersian/issues^^J% * ^^J% +* Discussions: https://github.com/tex-persian/xepersian/discussions^^J% +* ^^J% * Support Email: tex-persian@vafa.ac^^J% * ^^J% * Primary author of xepersian package: Vafa Khalighi.^^J% @@ -3524,6 +3581,21 @@ Persian typesetting in XeLaTeX] \tl_set:Nn \l__fontspec_mapping_tl { persian-tex-text } } } + +\keys_define:nn {fontspec-opentype} + { + Ligatures / PersianTeXNoNumbers .code:n = { \tl_set:Nn \l__fontspec_mapping_tl {persian-tex-text-nonumbers} }, + Ligatures / PersianTeXNoNumbersOff .code:n = { \tl_clear:N \l__fontspec_mapping_tl }, + Ligatures / PersianTeXNoNumbersReset .code:n = { \tl_clear:N \l__fontspec_mapping_tl }, + } + +\keys_define:nn {fontspec-aat} + { + Ligatures / PersianTeXNoNumbers .code:n = + { + \tl_set:Nn \l__fontspec_mapping_tl { persian-tex-text-nonumbers } + } + } \DeclareDocumentCommand \settextfont { O{} m O{} } { @@ -3532,7 +3604,7 @@ Persian typesetting in XeLaTeX] } \cs_new:Nn \__xepersian_main_settextfont:nn { - \fontspec_set_family:Nnn \l__xepersian_persianfont_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} + \fontspec_set_family:Nnn \l__xepersian_persianfont_family_tl {Ligatures=PersianTeX,#1} {#2} \tl_set_eq:NN \rmdefault \l__xepersian_persianfont_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \persianfont } { @@ -3556,7 +3628,7 @@ Persian typesetting in XeLaTeX] } \cs_new:Nn \__xepersian_main_settextdigitfont:nn { - \fontspec_set_family:Nnn \l__xepersian_textdigitfont_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} + \fontspec_set_family:Nnn \l__xepersian_textdigitfont_family_tl {Ligatures=PersianTeX,#1} {#2} \use:x { \exp_not:n { \DeclareRobustCommand \xepersian@textdigitfont } @@ -3636,7 +3708,7 @@ Persian typesetting in XeLaTeX] } \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} + \fontspec_set_family:cnn { l__xepersian_ \cs_to_str:N #1 _family_tl } {Ligatures=PersianTeX,#2} {#3} \use:x { \exp_not:N #4 \exp_not:N #1 {} @@ -3710,7 +3782,7 @@ Persian typesetting in XeLaTeX] } \cs_new:Nn \__xepersian_main_setpersiansansfont:nn { - \fontspec_set_family:Nnn \l__xepersian_persiansffamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} + \fontspec_set_family:Nnn \l__xepersian_persiansffamily_family_tl {Ligatures=PersianTeX,#1} {#2} \tl_set_eq:NN \persiansfdefault \l__xepersian_persiansffamily_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \persiansffamily } { @@ -3734,7 +3806,7 @@ Persian typesetting in XeLaTeX] } \cs_new:Nn \__xepersian_main_setpersianmonofont:nn { - \fontspec_set_family:Nnn \l__xepersian_persianttfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} + \fontspec_set_family:Nnn \l__xepersian_persianttfamily_family_tl {Ligatures=PersianTeX,#1} {#2} \tl_set_eq:NN \persianttdefault \l__xepersian_persianttfamily_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \persianttfamily } { @@ -3758,7 +3830,7 @@ Persian typesetting in XeLaTeX] } \cs_new:Nn \__xepersian_main_setnavarfont:nn { - \fontspec_set_family:Nnn \l__xepersian_navarfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} + \fontspec_set_family:Nnn \l__xepersian_navarfamily_family_tl {Ligatures=PersianTeX,#1} {#2} \tl_set_eq:NN \navardefault \l__xepersian_navarfamily_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \navarfamily } { @@ -3782,7 +3854,7 @@ Persian typesetting in XeLaTeX] } \cs_new:Nn \__xepersian_main_setpookfont:nn { - \fontspec_set_family:Nnn \l__xepersian_pookfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} + \fontspec_set_family:Nnn \l__xepersian_pookfamily_family_tl {Ligatures=PersianTeX,#1} {#2} \tl_set_eq:NN \pookdefault \l__xepersian_pookfamily_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \pookfamily } { @@ -3806,7 +3878,7 @@ Persian typesetting in XeLaTeX] } \cs_new:Nn \__xepersian_main_setsayehfont:nn { - \fontspec_set_family:Nnn \l__xepersian_sayehfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} + \fontspec_set_family:Nnn \l__xepersian_sayehfamily_family_tl {Ligatures=PersianTeX,#1} {#2} \tl_set_eq:NN \sayehdefault \l__xepersian_sayehfamily_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \sayehfamily } { @@ -3830,7 +3902,7 @@ Persian typesetting in XeLaTeX] } \cs_new:Nn \__xepersian_main_setiranicfont:nn { - \fontspec_set_family:Nnn \l__xepersian_iranicfamily_family_tl {Script=Persian,Ligatures=PersianTeX,#1} {#2} + \fontspec_set_family:Nnn \l__xepersian_iranicfamily_family_tl {Ligatures=PersianTeX,#1} {#2} \tl_set_eq:NN \iranicdefault \l__xepersian_iranicfamily_family_tl \use:x { \exp_not:n { \DeclareRobustCommand \iranicfamily } { @@ -4258,7 +4330,7 @@ Persian typesetting in XeLaTeX] \newcommand*{\@xepersian@pdfcustomproperties}{% This is the xepersian package, Version \xepersian@version, - Released February 1, 2022. + Released February 27, 2022. } \newcommand\twocolumnstableofcontents{% @@ -4632,27 +4704,27 @@ number is 999,999,999.}% \define@choicekey{xepersian.sty}{mathdigits}[\xepersian@tempa\xepersian@tempb]{automatic,default,persian}{% \ifcase\xepersian@tempb\relax - \AutoMathsDigits + \AutoMathDigits \or - \DefaultMathsDigits + \DefaultMathDigits \or - \PersianMathsDigits + \PersianMathDigits \fi} \define@choicekey{xepersian.sty}{inlinemathdigits}[\xepersian@tempa\xepersian@tempb]{automatic,default,persian}{% \ifcase\xepersian@tempb\relax - \AutoInlineMathsDigits + \AutoInlineMathDigits \or - \DefaultInlineMathsDigits + \DefaultInlineMathDigits \or - \PersianInlineMathsDigits + \PersianInlineMathDigits \fi} \define@choicekey{xepersian.sty}{displaymathdigits}[\xepersian@tempa\xepersian@tempb]{automatic,default,persian}{% \ifcase\xepersian@tempb\relax - \AutoDisplayMathsDigits + \AutoDisplayMathDigits \or - \DefaultDisplayMathsDigits + \DefaultDisplayMathDigits \or - \PersianDisplayMathsDigits + \PersianDisplayMathDigits \fi} \define@choicekey{xepersian.sty}{RTLdocument}[\xepersian@tempa\xepersian@tempb]{on,off}[on]{% \ifcase\xepersian@tempb\relax @@ -5815,13 +5887,13 @@ indexblock environment may only appear inside frontpage environment. % \end{macrocode} % \iffalse %</xepersian-magazine.cls> -%<*xepersian-mathsdigitspec.sty> +%<*xepersian-mathdigitspec.sty> %\fi -% \section{File \texttt{xepersian-mathsdigitspec.sty}} +% \section{File \texttt{xepersian-mathdigitspec.sty}} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{xepersian-mathsdigitspec} - [2022/02/01 v1.1.8 Unicode Persian maths digits in XeLaTeX] +\ProvidesPackage{xepersian-mathdigitspec} + [2022/02/04 v1.1.9 Unicode Persian math digits in XeLaTeX] \def\new@mathgroup{\alloc@8\mathgroup\chardef\@cclvi} \let\newfam\new@mathgroup \def\select@group#1#2#3#4{% @@ -5896,7 +5968,7 @@ indexblock environment may only appear inside frontpage environment. \tl_remove_once:Nn \@preamblecmds {\do#1} } \ExplSyntaxOff -\newcommand\xepersian@PackageInfo[1]{\PackageInfo{xepersian-mathsdigitspec}{#1}} +\newcommand\xepersian@PackageInfo[1]{\PackageInfo{xepersian-mathdigitspec}{#1}} \newcommand\SetMathCode[4]{% \Umathcode#1="\mathchar@type#2 \csname sym#3\endcsname #4\relax} \newcommand\SetMathCharDef[4]{% @@ -5949,11 +6021,11 @@ indexblock environment may only appear inside frontpage environment. } } -\cs_new:Npn \__xepersian_mathsdigitspec_error:nxx { \msg_error:nnxx {xepersian-mathsdigitspec} } -\cs_new:Nn \__xepersian_mathsdigitspec_msg_new:nnnn +\cs_new:Npn \__xepersian_mathdigitspec_error:nxx { \msg_error:nnxx {xepersian-mathdigitspec} } +\cs_new:Nn \__xepersian_mathdigitspec_msg_new:nnnn { \msg_new:nnxx {#1} {#2} { \tl_trim_spaces:n {#3} } { \tl_trim_spaces:n {#4} } } \char_set_catcode_space:n {32} -\__xepersian_mathsdigitspec_msg_new:nnnn {xepersian-mathsdigitspec} {char-not-exist} +\__xepersian_mathdigitspec_msg_new:nnnn {xepersian-mathdigitspec} {char-not-exist} { The font "#1" does not contain U+#2. } @@ -5963,7 +6035,7 @@ indexblock environment may only appear inside frontpage environment. \char_set_catcode_ignore:n {32} %\__kernel_primitive:NN \iffontchar \tex_iffontchar:D -\prg_new_conditional:Nnn \__xepersian_mathsdigitspec_primitive_font_char_if_exist:n {p,TF,T,F} +\prg_new_conditional:Nnn \__xepersian_mathdigitspec_primitive_font_char_if_exist:n {p,TF,T,F} { \tex_iffontchar:D \l_fontspec_font "#1 \scan_stop: \prg_return_true: @@ -5972,35 +6044,35 @@ indexblock environment may only appear inside frontpage environment. \fi: } -\clist_new:N \l_xepersian_mathsdigitspec_char_clist +\clist_new:N \l_xepersian_mathdigitspec_char_clist -\cs_new:Nn \__xepersian_mathsdigitspec_char_set_not_exist_error:nn +\cs_new:Nn \__xepersian_mathdigitspec_char_set_not_exist_error:nn { - \clist_set:Nn \l_xepersian_mathsdigitspec_char_clist { #1 } - \clist_map_inline:Nn \l_xepersian_mathsdigitspec_char_clist { - \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } } + \clist_set:Nn \l_xepersian_mathdigitspec_char_clist { #1 } + \clist_map_inline:Nn \l_xepersian_mathdigitspec_char_clist { + \__xepersian_mathdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } } } } -\cs_new:Nn \__xepersian_mathsdigitspec_char_prepend_not_exist_error:nn +\cs_new:Nn \__xepersian_mathdigitspec_char_prepend_not_exist_error:nn { - \clist_put_left:Nn \l_xepersian_mathsdigitspec_char_clist { #1 } - \clist_map_inline:Nn \l_xepersian_mathsdigitspec_char_clist { - \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } } + \clist_put_left:Nn \l_xepersian_mathdigitspec_char_clist { #1 } + \clist_map_inline:Nn \l_xepersian_mathdigitspec_char_clist { + \__xepersian_mathdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } } } } -\cs_new:Nn \__xepersian_mathsdigitspec_char_append_not_exist_error:nn +\cs_new:Nn \__xepersian_mathdigitspec_char_append_not_exist_error:nn { - \clist_put_right:Nn \l_xepersian_mathsdigitspec_char_clist { #1 } - \clist_map_inline:Nn \l_xepersian_mathsdigitspec_char_clist { - \__xepersian_mathsdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathsdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } } + \clist_put_right:Nn \l_xepersian_mathdigitspec_char_clist { #1 } + \clist_map_inline:Nn \l_xepersian_mathdigitspec_char_clist { + \__xepersian_mathdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } } } } -\cs_new:Nn \__xepersian_mathsdigitspec_char_not_exist_error:n +\cs_new:Nn \__xepersian_mathdigitspec_char_not_exist_error:n { - \__xepersian_mathsdigitspec_char_set_not_exist_error:nn { + \__xepersian_mathdigitspec_char_set_not_exist_error:nn { 06F0 , 06F1 , 06F2 , 06F3 , 06F4 , 06F5 , 06F6 , 06F7 , 06F8 , 06F9 , 066A , 066B } { #1 } @@ -6015,13 +6087,13 @@ indexblock environment may only appear inside frontpage environment. \let\glb@currsize\relax \fontspec_set_family:Nnn \g__xepersian_mathdigitsfamily_tl {Ligatures=PersianTeX,#1} {#2} \__xepersian_setmathdigitfont_hook:nn {#1} {#2} - \xepersian@PackageInfo{Defining the default Persian maths digits font as '#2'} + \xepersian@PackageInfo{Defining the default Persian math digits font as '#2'} \DeclareSymbolFont{OPERATORS} {\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl} {m}{n} \DeclareSymbolFont{new@mathbf@font@digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{bx}{n} \DeclareSymbolFont{new@mathit@font@digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{m}{it} \DeclareSymbolFont{new@mathrm@font@digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{m}{n} - \__xepersian_mathsdigitspec_char_not_exist_error:n { #2 } - \def\persianmathsdigits{% + \__xepersian_mathdigitspec_char_not_exist_error:n { #2 } + \def\persianmathdigits{% \SetMathCode{`0}{\mathalpha}{OPERATORS}{`0} \SetMathCode{`1}{\mathalpha}{OPERATORS}{`1} \SetMathCode{`2}{\mathalpha}{OPERATORS}{`2} @@ -6050,7 +6122,7 @@ indexblock environment may only appear inside frontpage environment. \fontspec_set_family:Nnn \g__xepersian_mathsfdigitfamily_tl {Ligatures=PersianTeX,#1} {#2} \__xepersian_setmathsfdigitfont_hook:nn {#1} {#2} \DeclareSymbolFont{new@mathsf@font@digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathsfdigitfamily_tl}{m}{n} - \__xepersian_mathsdigitspec_char_not_exist_error:n { #2 } + \__xepersian_mathdigitspec_char_not_exist_error:n { #2 } \def\persianmathsfdigits{\tl_set_eq:NN \mathsf \new@mathsf} } @@ -6065,7 +6137,7 @@ indexblock environment may only appear inside frontpage environment. \fontspec_set_family:Nnn \g__xepersian_mathttdigitfamily_tl {Ligatures=PersianTeX,#1} {#2} \__xepersian_setmathttdigitfont_hook:nn {#1} {#2} \DeclareSymbolFont{new@mathtt@font@digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathttdigitfamily_tl}{m}{n} - \__xepersian_mathsdigitspec_char_not_exist_error:n { #2 } + \__xepersian_mathdigitspec_char_not_exist_error:n { #2 } \def\persianmathttdigits{\tl_set_eq:NN \mathtt \new@mathtt} } @@ -6105,47 +6177,78 @@ indexblock environment may only appear inside frontpage environment. \fi} \mathcode`.="8000\relax \def\ZifferLeer{\ifx\decimalseparator\undefined .\else \decimalseparator\fi} -\def\DefaultInlineMathsDigits{\def\SetInlineMathsDigits{}} -\def\DefaultDisplayMathsDigits{\def\SetDisplayMathsDigits{}} -\def\DefaultMathsDigits{% - \DefaultInlineMathsDigits% - \DefaultDisplayMathsDigits% -} -\def\PersianInlineMathsDigits{\def\SetInlineMathsDigits{% -\ifx\persianmathsdigits\undefined\else\persianmathsdigits\fi% +\def\DefaultZifferLeer{.} +\def\DefaultInlineMathDigits{\def\SetInlineMathDigits{}} +\def\DefaultDisplayMathDigits{\def\SetDisplayMathDigits{}} +\def\DefaultMathDigits{% + \DefaultInlineMathDigits% + \DefaultDisplayMathDigits% +} +\def\PersianInlineMathDigits{\def\SetInlineMathDigits{% +\ifx\persianmathdigits\undefined\else\persianmathdigits\fi% \ifx\persianmathsfdigits\undefined\else\persianmathsfdigits\fi% \ifx\persianmathttdigits\undefined\else\persianmathttdigits\fi}} -\def\PersianDisplayMathsDigits{\def\SetDisplayMathsDigits{% -\ifx\persianmathsdigits\undefined\else\persianmathsdigits\fi% +\def\PersianDisplayMathDigits{\def\SetDisplayMathDigits{% +\ifx\persianmathdigits\undefined\else\persianmathdigits\fi% \ifx\persianmathsfdigits\undefined\else\persianmathsfdigits\fi% \ifx\persianmathttdigits\undefined\else\persianmathttdigits\fi}} -\def\PersianMathsDigits{% - \PersianInlineMathsDigits% - \PersianDisplayMathsDigits% +\def\PersianMathDigits{% + \PersianInlineMathDigits% + \PersianDisplayMathDigits% } -\def\AutoInlineMathsDigits{\def\SetInlineMathsDigits{% -\ifx\persianmathsdigits\undefined\else\if@nonlatin\persianmathsdigits\fi\fi% +\def\AutoInlineMathDigits{\def\SetInlineMathDigits{% +\ifx\persianmathdigits\undefined\else\if@nonlatin\persianmathdigits\fi\fi% \ifx\persianmathsfdigits\undefined\else\if@nonlatin\persianmathsfdigits\fi\fi% \ifx\persianmathttdigits\undefined\else\if@nonlatin\persianmathttdigits\fi\fi}} -\def\AutoDisplayMathsDigits{\def\SetDisplayMathsDigits{% -\ifx\persianmathsdigits\undefined\else\if@nonlatin\persianmathsdigits\fi\fi% +\def\AutoDisplayMathDigits{\def\SetDisplayMathDigits{% +\ifx\persianmathdigits\undefined\else\if@nonlatin\persianmathdigits\fi\fi% \ifx\persianmathsfdigits\undefined\else\if@nonlatin\persianmathsfdigits\fi\fi% \ifx\persianmathttdigits\undefined\else\if@nonlatin\persianmathttdigits\fi\fi}} -\def\AutoMathsDigits{% - \AutoInlineMathsDigits% - \AutoDisplayMathsDigits% +\def\AutoMathDigits{% + \AutoInlineMathDigits% + \AutoDisplayMathDigits% } -\AutoMathsDigits -\everymath\expandafter{\the\everymath\SetInlineMathsDigits% - \let\SetDisplayMathsDigits\relax% +\AutoMathDigits +\everymath\expandafter{\the\everymath\SetInlineMathDigits% + \let\SetDisplayMathDigits\relax% } \everydisplay\expandafter{% - \the\everydisplay\SetDisplayMathsDigits% - \let\SetInlineMathsDigits\relax% + \the\everydisplay\SetDisplayMathDigits% + \let\SetInlineMathDigits\relax% } + +\ExplSyntaxOn +\cs_new_eq:NN \orig_ZifferLeer \ZifferLeer + +\NewDocumentCommand \SwitchToDefaultMathDigits { } { + \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } { + \SetMathCode{##1}{\mathalpha}{operators}{##1} + } + \SetMathCode{`\%}{\mathbin}{operators}{`\%} + \tl_set_eq:NN \ZifferLeer \DefaultZifferLeer + \tl_set_eq:NN \mathbf \orig_mathbf:n + \tl_set_eq:NN \mathit \orig_mathit:n + \tl_set_eq:NN \mathrm \orig_mathrm:n + \tl_set_eq:NN \mathsf \orig_mathsf:n + \tl_set_eq:NN \mathtt \orig_mathtt:n +} + +\NewDocumentCommand \SwitchToPersianMathDigits { } { + \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } { + \SetMathCode{##1}{\mathalpha}{OPERATORS}{##1} + } + \SetMathCode{`\%}{\mathbin}{OPERATORS}{`٪} + \tl_set_eq:NN \ZifferLeer \orig_ZifferLeer + \tl_set_eq:NN \mathbf \new@mathbf + \tl_set_eq:NN \mathit \new@mathit + \tl_set_eq:NN \mathrm \new@mathrm + \tl_set_eq:NN \mathsf \new@mathsf + \tl_set_eq:NN \mathtt \new@mathtt +} +\ExplSyntaxOff % \end{macrocode} % \iffalse -%</xepersian-mathsdigitspec.sty> +%</xepersian-mathdigitspec.sty> %<*xepersian-multiplechoice.sty> %\fi % \section{File \texttt{xepersian-multiplechoice.sty}} |