summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty')
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty316
1 files changed, 17 insertions, 299 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty
index 9317c8dccc5..b2f5b4ec1b2 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty
@@ -1,24 +1,15 @@
+%% This file is xepersian-mathsdigitspec.sty
+%%
+%% Copyright 2009 by Vafa Khalighi
+%%
+%%%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{xepersian-mathsdigitspec}
- [2008/09/27 v0.1 Unicode Farsi maths digits in XeLaTeX]
-
-\begingroup
- \def\notXeLaTeXformat{%
- \@latex@error{*** this package currently works only with XeLaTeX ***^^J
- You are not using XeLaTeX, so we are exiting cleanly!^^J
- Continuing may lead to 'unavailable font metrics' errors!^^J}\@ehc
- \endgroup\endinput}
-\expandafter\ifx\csname XeTeXpicfile\endcsname\relax\expandafter\notXeLaTeXformat\fi
-\endgroup
-
-\RequirePackage[quiet]{fontspec}
-\@ifpackageloaded{xepersian-mathsdigitspec}{\@zf@mathfalse}{}
-\newcounter{um@fam}
+ [2009/01/05 v0.2 Unicode Persian maths digits in XeLaTeX (Author: Vafa Khalighi)]
+\@zf@mathfalse
\newif\if@um@fontspec@feature
-\newif\if@um@ot@math@
-\newif\if@um@init
-\providecommand\def@cn[2]{%
- \expandafter\def\csname#1\endcsname{#2}}
\def\um@Loop#1\um@Pool{#1\um@Loop#1\um@Pool}
\def\um@Break#1\um@Pool{}
\long\def\um@FOR#1=[#2:#3]\do#4{%
@@ -29,124 +20,21 @@
\expandafter\um@Break
\fi
\um@Pool}
-\newcommand\um@PackageError[2]{\PackageError{xepersian-mathsdigitspec}{#1}{#2}}
-\newcommand\um@PackageWarning[1]{\PackageWarning{xepersian-mathsdigitspec}{#1}}
\newcommand\um@PackageInfo[1]{\PackageInfo{xepersian-mathsdigitspec}{#1}}
\def\um@usv@num{`\0}
-\def\um@usv@bbnum{"1D7D8}
-\def\um@usv@sfnum{"1D7E2}
-\def\um@usv@ttnum{"1D7F6}
-
-\def\um@usv@bfnum{"1D7CE}
-
-\def\um@usv@bfsfnum{"1D7EC}
-\define@choicekey*{xepersian-mathsdigitspec.sty}
- {math-style}[\@tempa\@tempb]{iso,tex,french,literal}{%
- \ifcase\@tempb\relax
- \or
- \@um@literaltrue
- \fi}
-\define@choicekey*{xepersian-mathsdigitspec.sty}{bold-style}[\@tempa\@tempb]{iso,tex,french,literal}{%
- \ifcase\@tempb\relax
- \or
- \@um@bfliteraltrue
- \fi}
-\ExecuteOptionsX{math-style=iso}
-\ProcessOptionsX
-\def\@preamblecmds{}
-
-\newcommand\not@onlypreamble[1]{{%
- \def\do##1{\ifx#1##1\else\noexpand\do\noexpand##1\fi}%
- \xdef\@preamblecmds{\@preamblecmds}}}
-\def\gm@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\PackageError{gmutils/LaTeX}%
- {\noexpand\string##1 \noexpand\gm@notprerr}\noexpand\@eha}}%
- \@preamblecmds}}
-\def\nocite#1{%
- \@bsphack{\setbox0=\hbox{\cite{#1}}}\@esphack}
-
-\def\um@fontdimen@percent#1#2{%
- 0.\strip@pt\dimexpr\fontdimen#1#2 *65536\relax}
-\def\um@scaled@apply#1#2#3{%
- \ifx#1\scriptstyle
- #2\um@fontdimen@percent{10}\um@font#3%
- \else
- \ifx#1\scriptscriptstyle
- #2\um@fontdimen@percent{11}\um@font#3%
- \else
- #2#3%
- \fi
- \fi}
-\def\new@mathgroup{\alloc@8\mathgroup\chardef\@cclvi}
-\let\newfam\new@mathgroup
-\def\um@mathsymbol#1#2#3#4{%
- \expandafter\um@set@mathsymbol\csname sym#3\endcsname#1#2{#4}}
-\def\um@set@mathsymbol#1#2#3#4{%
- \ifx\mathop#3\relax
- \begingroup
- \catcode#4=\active
- \global\mathcode#4="8000\relax
- \um@scanactivedef#4\@nil{\csname\string#2@op\endcsname}%
- \endgroup
- \expandafter\global\expandafter\XeTeXmathchardef
- \csname\string#2@sym\endcsname
- ="\mathchar@type#3 #1 #4\relax
- \expandafter\gdef\csname\string#2@op\endcsname{%
- \csname\string#2@sym\endcsname
- \expandafter\in@\expandafter#2\expandafter{\um@nolimits}%
- \ifin@
- \expandafter\nolimits
- \fi}%
- \else
- \expandafter\in@\expandafter#2\expandafter{\um@radicals,}%
- \ifin@
- \expandafter\gdef\csname
- \expandafter\@gobble\string#2sign\endcsname
- {\XeTeXradical#1 #4\relax}%
- \else
- \ifx\mathopen#3\relax
- \gdef#2{\XeTeXdelimiter "\mathchar@type#3 #1 #4}%
- \global\XeTeXdelcode#4=#1 #4\relax
- \global\XeTeXmathcode#4="\mathchar@type#3 #1 #4\relax
- \else
- \ifx\mathclose#3\relax
- \gdef#2{\XeTeXdelimiter "\mathchar@type#3 #1 #4}%
- \global\XeTeXdelcode#4=#1 #4\relax
- \global\XeTeXmathcode#4="\mathchar@type#3 #1 #4\relax
- \else
- \ifx\mathaccent#3\relax
- \xdef#2{\XeTeXmathaccent "\mathchar@type#3 #1 #4\relax}%
- \else
- \global\XeTeXmathcode#4="\mathchar@type#3 #1 #4\relax
- \fi
- \fi
- \fi
- \fi
- \fi}
\newcommand\SetMathCode[4]{%
\XeTeXmathcode#1="\mathchar@type#2 \csname sym#3\endcsname #4\relax}
\newcommand\SetMathCharDef[4]{%
\XeTeXmathchardef#1="\mathchar@type#2 \csname sym#3\endcsname #4\relax}
\newcommand\setdigitfont[2][]{%
- \let\glb@currsize\relax
- \let\um@char@range\@empty
- \let\um@char@num@range\@empty
- \@um@initfalse
- \@um@fontspec@featuretrue
\csname S@\f@size\endcsname
- \def\um@mversion{normal}%
- \DeclareMathVersion{\um@mversion}%
\def\um@ScriptFeatures{ScriptStyle}%
\def\um@ScriptScriptFeatures{ScriptScriptStyle}%
\def\um@ScriptFont{#2}%
\def\um@ScriptScriptFont{#2}%
\setkeys*[um]{options}{#1}%
\edef\@tempa{\noexpand\zf@fontspec{%
- Script=Math,SizeFeatures={%
+ Mapping=parsidigits,SizeFeatures={%
{Size=\tf@size-},%
{Size=\sf@size-\tf@size,%
Font=\um@ScriptFont,%
@@ -155,102 +43,14 @@
Font=\um@ScriptScriptFont,%
\um@ScriptScriptFeatures}},%
\XKV@rm}{#2}}\@tempa
- \font\um@font="#2"\relax
- \ifdim \dimexpr\fontdimen9\um@font*65536\relax =65pt
- \@um@ot@math@true
- \fi
- \ifx\um@char@range\@empty
- \def\um@symfont{um@allsym}%
- \um@PackageInfo{Defining the default maths font as '#2'}%
- \let\UnicodeMathSymbol\um@mathsymbol@noparse
+ \def\um@digitfont{um@digitfont}%
+ \um@PackageInfo{Defining the default Persian maths digits font as '#2'}%
\DeclareSymbolFont{momayez}{EU1}{\zf@family}{m}{n}%
\SetMathCharDef{\momayez}{\mathpunct}{momayez}{"066B}%
- \else
- \stepcounter{um@fam}%
- \edef\um@symfont{um@fam\theum@fam}%
- \let\UnicodeMathSymbol\um@mathsymbol@parse
- \fi
- \DeclareSymbolFont{\um@symfont}
- {\encodingdefault}{\zf@family}{\mddefault}{\updefault}%
- \if@um@init
- \input xepersian-mathsdigitspec.tex\relax
- \else
- \unless\ifx\um@char@range\@empty
- \input xepersian-mathsdigitspec.tex\relax
- \fi
- \fi
- \ifx\um@char@range\@empty
- \um@def@numbers
- \fi
+\DeclareSymbolFont{\um@digitfont}
+ {\encodingdefault}{\zf@family}{\mddefault}{\updefault}%
+\um@def@numbers
}
-\newcommand\um@mathsymbol@noparse[4]{%
- \um@mathsymbol{#2}{#3}{\um@symfont}{#1}}
-\newcommand\um@mathsymbol@parse[4]{%
- \um@parse@term{#1}{#2}{#3}{%
- \um@mathsymbol{#2}{#3}{\um@symfont}{#1}}}
-\newcommand\um@mk@math[1]{%
- \expandafter\def\csname math#1\endcsname##1{%
- \begingroup
- \csname um@math#1\endcsname
- ##1
- \endgroup}}
-\newcommand\um@mathmap@noparse[3]{%
- \@for\@ii:=#2\do{%
- \expandafter\expandafter
- \expandafter\um@addto@mathmap
- \expandafter\expandafter
- \expandafter{%
- \expandafter\um@symfont
- \expandafter}%
- \expandafter{\@ii}{#1}{#3}%
- }}%
-\newcommand\um@mathmap@parse[3]{%
- \@for\@ii:=\um@char@num@range\do{%
- \ifnum\@ii=#3\relax
- \@for\@jj:=#2\do{%
- \expandafter\expandafter
- \expandafter\um@addto@mathmap
- \expandafter\expandafter
- \expandafter{%
- \expandafter\um@symfont
- \expandafter}%
- \expandafter{\@jj}{#1}{#3}}%
- \fi}}%
-\newcommand\um@addto@mathmap[4]{%
- \expandafter\g@addto@macro
- \csname um@\expandafter\@gobble\string#3\endcsname{%
- \SetMathCode{#2}{\mathalpha}{#1}{#4}}}
-\def\um@nolimits{%
- \@elt\int\@elt\iint\@elt\iiint\@elt\iiiint\@elt\oint\@elt\oiint\@elt\oiiint
- \@elt\intclockwise\@elt\varointclockwise\@elt\ointctrclockwise\@elt\sumint
- \@elt\intbar\@elt\intBar\@elt\fint\@elt\cirfnint\@elt\awint\@elt\rppolint
- \@elt\scpolint\@elt\npolint\@elt\pointint\@elt\sqint\@elt\intlarhk\@elt\intx
- \@elt\intcap\@elt\intcup\@elt\upint\@elt\lowint}
-\newcommand\addnolimits[1]{%
- \expandafter\def
- \expandafter\um@nolimits
- \expandafter{\um@nolimits\@elt#1}}
-\def\removenolimits#1{%
- \begingroup
- \def\@elt##1{%
- \ifx##1#1\else
- \noexpand\@elt\noexpand##1
- \fi}
- \xdef\um@nolimits{\um@nolimits}%
- \endgroup}
-\def\um@radicals{\sqrt}
-\def\r@@t#1#2{%
- \setbox\z@\hbox{$\m@th #1\sqrtsign{#2}$}%
- \um@scaled@apply{#1}{\kern}{\fontdimen63\um@font}%
- \raise \dimexpr(
- \um@fontdimen@percent{65}{\um@font}\ht\z@-
- \um@fontdimen@percent{65}{\um@font}\dp\z@
- )\relax
- \copy \rootbox%
- \um@scaled@apply{#1}{\kern}{\fontdimen64\um@font}%
- \box \z@}
-\let\left@primitive\left
-\def\left{\mathopen{}\left@primitive}
\newcommand\um@zf@feature[2]{%
\define@key[zf]{options}{#1}[]{%
\if@um@fontspec@feature
@@ -260,95 +60,13 @@
\zf@update@ff{+ssty=0}}
\um@zf@feature{ScriptScriptStyle}{%
\zf@update@ff{+ssty=1}}
-\define@cmdkey[um]{options}[um@]{ScriptFeatures}{}
-\define@cmdkey[um]{options}[um@]{ScriptScriptFeatures}{}
-\define@cmdkey[um]{options}[um@]{ScriptFont}{}
-\define@cmdkey[um]{options}[um@]{ScriptScriptFont}{}
-\define@choicekey+[um]{options}{Range}[\@tempa\@tempb]{ALL}{%
- \ifcase\@tempb\relax
- \@um@inittrue
- \fi}{% else:
- \xdef\um@char@range{\zap@space#1 \@empty}}
-\newcommand\um@parse@term[4]{%
- \@for\@ii:=\um@char@range\do{%
- \unless\ifx\@ii\@empty
- \@tempswafalse
- \expandafter\um@firstchar\expandafter{\@ii}%
- \ifx\@tempa\um@backslash
- \expandafter\ifx\@ii#2\relax
- \@tempswatrue
- \else
- \expandafter\ifx\@ii#3\relax
- \@tempswatrue
- \fi
- \fi
- \else
- \expandafter\um@parse@range\@ii-\@marker-\@nil#1\@nil
- \fi
- \if@tempswa
- \ifx\um@char@num@range\@empty
- \g@addto@macro\um@char@num@range{#1}%
- \else
- \g@addto@macro\um@char@num@range{,#1}%
- \fi
- #4%
- \fi
- \fi}}
-\def\um@firstof#1#2\@nil{#1}
-\edef\um@backslash{\expandafter\um@firstof\string\string\@nil}
-\def\um@firstchar#1{\edef\@tempa{\expandafter\um@firstof\string#1\@nil}}
-\def\um@parse@range#1-#2-#3\@nil#4\@nil{%
- \def\@tempa{#1}%
- \def\@tempb{#2}%
- \expandafter\ifx\expandafter\@marker\@tempb\relax
- \ifnum#4=#1\relax
- \@tempswatrue
- \fi
- \else
- \ifx\@empty\@tempb
- \ifnum#4>\numexpr#1-1\relax
- \@tempswatrue
- \fi
- \else
- \ifx\@empty\@tempa
- \ifnum#4<\numexpr#2+1\relax
- \@tempswatrue
- \fi
- \else
- \ifnum#4>\numexpr#1-1\relax
- \ifnum#4<\numexpr#2+1\relax
- \@tempswatrue
- \fi\fi\fi\fi\fi}
\newcommand\um@setmathcode[3][1]{%
\@for\um@inp:=#2\do{%
\um@FOR\@tempcnta=[1:#1]\do{%
\SetMathCode{\numexpr\um@inp+\@tempcnta-1\relax}
- {\mathalpha}{\um@symfont}{\numexpr#3+\@tempcnta-1\relax}}}}
-\newcommand\um@setmathalph[4][1]{%
- \@for\um@inp:=#3\do{%
- \um@FOR\@tempcnta=[1:#1]\do{%
- \edef\@tempa{%
- \noexpand\um@setsinglemathalph
- {\noexpand#2}
- {\number\numexpr \um@inp+\@tempcnta-1 \relax}
- {\number\numexpr #4+\@tempcnta-1 \relax}}\@tempa}}}
+ {\mathalpha}{\um@digitfont}{\numexpr#3+\@tempcnta-1\relax}}}}
\newcommand\um@def@numbers{%
\um@setmathcode[10]{\um@usv@num}{\um@usv@num}}
-\begingroup
- \catcode`\^=12\relax
- \gdef\um@scancharlet#1="#2\@nil{%
- \lowercase{\scantokens{\global\let#1=^^^^^#2}}}
- \catcode`\^=12\relax
- \gdef\um@scanactivedef"#1\@nil#2{%
- \lowercase{\scantokens{\global\def^^^^^#1{#2}}}}
-\endgroup
-\let\unicodemathgobble\@gobble
-\begingroup
- \def\UnicodeMathSymbol#1#2#3#4{%
- \um@scancharlet#2=#1\@nil}
- \input xepersian-mathsdigitspec.tex\relax
-\endgroup
-\DeclareRobustCommand\sqrt{\@ifnextchar[\@sqrt\sqrtsign}
\ifx\newcommand\undefined\else
\newcommand{\ZifferAn}{}
\fi
@@ -380,4 +98,4 @@
\fi}
\mathcode`.="8000\relax
\def\ZifferLeer{\ifx\momayez\undefied .\else \momayez\fi}
-\endinput \ No newline at end of file
+\endinput