diff options
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/simurgh/simurgh-mathdigitspec.sty')
-rw-r--r-- | Master/texmf-dist/tex/lualatex/simurgh/simurgh-mathdigitspec.sty | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/lualatex/simurgh/simurgh-mathdigitspec.sty b/Master/texmf-dist/tex/lualatex/simurgh/simurgh-mathdigitspec.sty new file mode 100644 index 00000000000..44aef51a874 --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/simurgh/simurgh-mathdigitspec.sty @@ -0,0 +1,206 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{simurgh-mathdigitspec}[2013/12/01 v0.01a unicode parsi math digits] +\def\new@mathgroup{\alloc@8\mathgroup\chardef\@cclvi} +\let\newfam\new@mathgroup +\def\select@group#1#2#3#4{% + \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi + {% + \ifmmode + \ifnum\csname c@mv@\math@version\endcsname<\@cclvi + \begingroup + \escapechar\m@ne + \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3% + \globaldefs\@ne \math@fonts + \endgroup + \init@restore@version + \xdef#1{\noexpand\use@mathgroup\noexpand#2% + {\number\csname c@mv@\math@version\endcsname}}% + \global\advance\csname c@mv@\math@version\endcsname\@ne + \else + \let#1\relax + \@latex@error{Too many math alphabets used in + version \math@version}% + \@eha + \fi + \else \expandafter\non@alpherr\fi + #1{#4}% + }% +} +\def\document@select@group#1#2#3#4{% + \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi + {% + \ifmmode + \ifnum\csname c@mv@\math@version\endcsname<\@cclvi + \begingroup + \escapechar\m@ne + \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3% + \globaldefs\@ne \math@fonts + \endgroup + \expandafter\extract@alph@from@version + \csname mv@\math@version\expandafter\endcsname + \expandafter{\number\csname + c@mv@\math@version\endcsname}% + #1% + \global\advance\csname c@mv@\math@version\endcsname\@ne + \else + \let#1\relax + \@latex@error{Too many math alphabets used + in version \math@version}% + \@eha + \fi + \else \expandafter\non@alpherr\fi + #1{#4}% + }% +} +\ExplSyntaxOn +\bool_set_false:N \g_fontspec_math_bool +\ExplSyntaxOff +\def\@preamblecmds{} +\newcommand\simurgh@not@onlypreamble[1]{{% + \def\do##1{\ifx#1##1\else\noexpand\do\noexpand##1\fi}% + \xdef\@preamblecmds{\@preamblecmds}}} +\simurgh@not@onlypreamble\@preamblecmds +\def\simurgh@notprerr{ can be used only in preamble (\on@line)} +\AtBeginDocument{% + \def\do#1{\noexpand\do\noexpand#1}% + \edef\@preamblecmds{% + \def\noexpand\do##1{% + \def##1{\noexpand\simurgh@NotprerrMessage##1}\noexpand\@eha}}% + \@preamblecmds} +\def\simurgh@NotprerrMessage#1{% + \simurgh@error% + {\noexpand\string#1 \noexpand\simurgh@notprerr}{}% +} +\def\nocite#1{% + \@bsphack{\setbox0=\hbox{\cite{#1}}}\@esphack} +\newcommand\SetMathCode[4]{% + \Umathcode#1="\mathchar@type#2 \csname sym#3\endcsname #4\relax} +\newcommand\SetMathCharDef[4]{% + \Umathchardef#1="\mathchar@type#2 \csname sym#3\endcsname #4\relax} +\ExplSyntaxOn +\cs_new_eq:NN \orig_mathbf:n \mathbf +\cs_new_eq:NN \orig_mathit:n \mathit +\cs_new_eq:NN \orig_mathrm:n \mathrm +\cs_new_eq:NN \orig_mathsf:n \mathsf +\cs_new_eq:NN \orig_mathtt:n \mathtt +\NewDocumentCommand \new@mathbf { m } { + \orig_mathbf:n { + \int_step_inline:nnnn { `0 } { \c_one } { `9 } { + \mathcode ##1 = \numexpr "100 * \symnew@mathbf@font@digits + ##1 \relax + } + #1 + } +} +\NewDocumentCommand \new@mathit { m } { + \orig_mathit:n { + \int_step_inline:nnnn { `0 } { \c_one } { `9 } { + \mathcode ##1 = \numexpr "100 * \symnew@mathit@font@digits + ##1 \relax + } + #1 + } +} +\NewDocumentCommand \new@mathrm { m } { + \orig_mathrm:n { + \int_step_inline:nnnn { `0 } { \c_one } { `9 } { + \mathcode ##1 = \numexpr "100 * \symnew@mathrm@font@digits + ##1 \relax + } + #1 + } +} +\NewDocumentCommand \new@mathsf{ m } { + \orig_mathsf:n { + \int_step_inline:nnnn { `0 } { \c_one } { `9 } { + \mathcode ##1 = \numexpr "100 * \symnew@mathsf@font@digits + ##1 \relax + } + #1 + } +} +\NewDocumentCommand \new@mathtt{ m } { + \orig_mathtt:n { + \int_step_inline:nnnn { `0 } { \c_one } { `9 } { + \mathcode ##1 = \numexpr "100 * \symnew@mathtt@font@digits + ##1 \relax + } + #1 + } +} +\newcommand\setmathparsidigitfont[2][]{% + \let\glb@currsize\relax + \fontspec_set_family:Nnn \simurgh@digits@family {#1}{#2} + \simurgh@info{defining the default parsi math digits font as '#2'} + \DeclareSymbolFont{OPERATORS} {EU2}{\simurgh@digits@family} {m}{n} + \DeclareSymbolFont{new@mathbf@font@digits}{EU2}{\simurgh@digits@family}{bx}{n} + \DeclareSymbolFont{new@mathit@font@digits}{EU2}{\simurgh@digits@family}{m}{it} + \DeclareSymbolFont{new@mathrm@font@digits}{EU2}{\simurgh@digits@family}{m}{n} + \def\parsimathdigits{% + \SetMathCode{`0}{\mathalpha}{OPERATORS}{`۰} + \SetMathCode{`1}{\mathalpha}{OPERATORS}{`۱} + \SetMathCode{`2}{\mathalpha}{OPERATORS}{`۲} + \SetMathCode{`3}{\mathalpha}{OPERATORS}{`۳} + \SetMathCode{`4}{\mathalpha}{OPERATORS}{`۴} + \SetMathCode{`5}{\mathalpha}{OPERATORS}{`۵} + \SetMathCode{`6}{\mathalpha}{OPERATORS}{`۶} + \SetMathCode{`7}{\mathalpha}{OPERATORS}{`۷} + \SetMathCode{`8}{\mathalpha}{OPERATORS}{`۸} + \SetMathCode{`9}{\mathalpha}{OPERATORS}{`۹} + \SetMathCharDef{\%}{\mathbin}{OPERATORS}{`٪} + \SetMathCharDef{\decimalseparator}{\mathpunct}{OPERATORS}{"066B} + \cs_set_eq:NN \mathbf \new@mathbf + \cs_set_eq:NN \mathit \new@mathit + \cs_set_eq:NN \mathrm \new@mathrm} +} +\DeclareDocumentCommand \setmathsfparsidigitfont { O{} m } { + \fontspec_set_family:Nnn \g_fontspec_mathsf_tl {#1}{#2} + \DeclareSymbolFont{new@mathsf@font@digits}{EU2}{\g_fontspec_mathsf_tl}{m}{n} + \def\parsimathsfdigits{\cs_set_eq:NN \mathsf \new@mathsf} +} +\DeclareDocumentCommand \setmathttparsidigitfont { O{} m } { + \fontspec_set_family:Nnn \g_fontspec_mathtt_tl {#1}{#2} + \DeclareSymbolFont{new@mathtt@font@digits}{EU2}{\g_fontspec_mathtt_tl}{m}{n} + \def\parsimathttdigits{\cs_set_eq:NN \mathtt \new@mathtt} +} +\ExplSyntaxOff +\ifx\newcommand\undefined\else + \newcommand{\ZifferAn}{} +\fi +\mathchardef\ziffer@DotOri="013A +{\ZifferAn + \catcode`\.=\active\gdef.{\begingroup\obeyspaces\futurelet\n\ziffer@dcheck}} +\def\ziffer@dcheck{\ziffer@check\ZifferLeer\ziffer@DotOri} +\def\ziffer@check#1#2{% + \ifx\n1\endgroup#1\else + \ifx\n2\endgroup#1\else + \ifx\n3\endgroup#1\else + \ifx\n4\endgroup#1\else + \ifx\n5\endgroup#1\else + \ifx\n6\endgroup#1\else + \ifx\n7\endgroup#1\else + \ifx\n8\endgroup#1\else + \ifx\n9\endgroup#1\else + \ifx\n0\endgroup#1\else + \endgroup#2% + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi} +\mathcode`.="8000\relax +\def\ZifferLeer{\ifx\decimalseparator\undefied .\else \decimalseparator\fi} +\def\DefaultMathDigits{\def\SetMathDigits{}} +\def\ParsiMathDigits{\def\SetMathDigits{% +\ifx\parsimathdigits\undefied\else\parsimathdigits\fi% +\ifx\parsimathsfdigits\undefied\else\parsimathsfdigits\fi% +\ifx\parsimathttdigits\undefied\else\parsimathttdigits\fi}} +\def\AutoMathDigits{\def\SetMathDigits{% +\ifx\parsimathdigits\undefied\else\if@Latin\else\parsimathdigits\fi\fi% +\ifx\parsimathsfdigits\undefied\else\if@Latin\else\parsimathsfdigits\fi\fi% +\ifx\parsimathttdigits\undefied\else\if@Latin\else\parsimathttdigits\fi\fi}} + +\everymath\expandafter{\the\everymath\SetMathDigits} +\g@addto@macro\document{\everydisplay\expandafter{\the\everydisplay\SetMathDigits}} + +\endinput
\ No newline at end of file |