summaryrefslogtreecommitdiff
path: root/macros/xetex/latex/xepersian/xepersian.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/xetex/latex/xepersian/xepersian.dtx')
-rw-r--r--macros/xetex/latex/xepersian/xepersian.dtx279
1 files changed, 191 insertions, 88 deletions
diff --git a/macros/xetex/latex/xepersian/xepersian.dtx b/macros/xetex/latex/xepersian/xepersian.dtx
index fb740c00a5..cef2486b84 100644
--- a/macros/xetex/latex/xepersian/xepersian.dtx
+++ b/macros/xetex/latex/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}}