summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xelatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-10-03 14:59:49 +0000
committerKarl Berry <karl@freefriends.org>2009-10-03 14:59:49 +0000
commit7ec4d6d5210183afdb6a9b9564e4eb691e99d18d (patch)
tree413b77909923cb7433f1aff1698caad8109edd79 /Master/texmf-dist/tex/xelatex
parent556ccc6a2633ddbc27a22319d2e16e8a5d7483d1 (diff)
mathspec 0.2 (30sep09)
git-svn-id: svn://tug.org/texlive/trunk@15603 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/xelatex')
-rw-r--r--Master/texmf-dist/tex/xelatex/mathspec/mathspec.sty1549
1 files changed, 919 insertions, 630 deletions
diff --git a/Master/texmf-dist/tex/xelatex/mathspec/mathspec.sty b/Master/texmf-dist/tex/xelatex/mathspec/mathspec.sty
index 543f0142aa8..6670cbf3249 100644
--- a/Master/texmf-dist/tex/xelatex/mathspec/mathspec.sty
+++ b/Master/texmf-dist/tex/xelatex/mathspec/mathspec.sty
@@ -1,67 +1,87 @@
-%%
-%% This is file `mathspec.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% mathspec.dtx (with options: `package')
-%%
-%% This is a generated file.
-%%
-%% © Andrew Gilbert Moschou
-%%
-%% This file 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. The latest version of this license is in:
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% and version 1.3c or later is part of all recent distributions of
-%% LaTeX.
-%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{mathspec}[2009/08/29 v0.16 LaTeX Package (Mathematics font selection for XeLaTeX)]
-\let\eu@ifnot@normalskips\@firstofone
-\let\eu@if@MnSymbol\@gobble
+\ProvidesPackage{mathspec}
+ [2009/09/30 v0.2 LaTeX Package (Mathematics font selection for XeLaTeX)]
+
+%% Require etoolbox for convenience and amstext for well sized text in maths
+%% mode. ifxetex is obvious.
+\RequirePackage{etoolbox}
+\RequirePackage{amstext}
+\RequirePackage{ifxetex}
+
+%% Require a recent XeTeX version.
+\RequireXeTeX
+\ifcsundef{XeTeXglyphbounds}
+ {\PackageError{mathspec}
+ {mathspec requires a more recent version of XeTeX}
+ {Your current vesion of XeTeX is \the\XeTeXversion\XeTeXrevision.\MessageBreak
+ Update your version of XeTeX to at least 0.9995.}}
+ {\relax}
+
+%% Booleans are created automatically on demand.
+\newcommand\eu@booltrue[1]{\providebool{#1}\booltrue{#1}}
+\newcommand\eu@gbooltrue[1]{\providebool{#1}\global\booltrue{#1}}
+\newcommand\eu@boolfalse[1]{\providebool{#1}\boolfalse{#1}}
+\newcommand\eu@ifbool[1]{\providebool{#1}\ifbool{#1}}
+
+%% Some extras:
+%% \eu@ifbooltrue{<bool>}{<true>}
+%% \eu@ifboolfalse{<bool>}{<false>}
+%% \eu@ifsomebooltrue{<bool_1>,...,<bool_n>}{<true>}
+%% (if <bool_i> is true for some i)
+%% \eu@ifnumis{x}{x_1,...,x_n}{<true>}{<false>} (if x = x_i for some i)
+%% \eu@ifnumin{x}{a,b}{<true>}{<false>} (if a ≤ x ≤ b)
+\newcommand\eu@ifbooltrue[2]{\eu@ifbool{#1}{#2}{\relax}}
+\newcommand\eu@ifboolfalse[2]{\eu@ifbool{#1}{\relax}{#2}}
+\newcommand\eu@ifsomebooltrue[1]{%
+ \eu@boolfalse{temp}%
+ \def\do##1{\eu@ifbooltrue{##1}{\eu@booltrue{temp}}}%
+ \docsvlist{#1}%
+ \eu@ifbooltrue{temp}}
+\newcommand\eu@ifnumis[2]{%
+ \providebool{temp}%
+ \boolfalse{temp}%
+ \def\do##1{\ifnumcomp{#1}{=}{##1}{\booltrue{temp}}{\relax}}%
+ \docsvlist{#2}%
+ \ifbool{temp}}
+\newcommand\eu@ifnumin[2]{\@eu@ifnumin{#1}#2\@nil}
+\def\@eu@ifnumin #1#2,#3\@nil{%
+ \providebool{temp}%
+ \booltrue{temp}%
+ \ifnumcomp{#1}{<}{#2}{\boolfalse{temp}}{\relax}%
+ \ifnumcomp{#3}{<}{#1}{\boolfalse{temp}}{\relax}%
+ \ifbool{temp}}
+
+%% Options.
+\DeclareOption{normalskips}
+ {\PackageWarning{mathspec}
+ {Package option `normalskips' is deprecated}}
\def\eu@zf@math{no-math}
-\DeclareOption{normalskips}{\let\eu@ifnot@normalskips\@gobble}
-\DeclareOption{no-math}{\relax}
-\DeclareOption{MnSymbol}{\let\eu@if@MnSymbol\@firstofone}
\DeclareOption{math}{\def\eu@zf@math{math}}
+\DeclareOption{no-math}{\relax}
+\DeclareOption{MnSymbol}{\eu@booltrue{MnSymbol}}
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{fontspec}}
\ProcessOptions\relax
+
+%% Requires packages:
+%% fontspec, xkeyval, mathstyle, etoolbox and maybe MnSymbol
\RequirePackage[\eu@zf@math]{fontspec}[2008/08/09]
-\eu@if@MnSymbol{\RequirePackage{MnSymbol}}
\RequirePackage{xkeyval}
-\RequirePackage{xifthen}
-\newif\if@eu@LatinUppercase@
-\newif\if@eu@LatinLowercase@
-\newif\if@eu@LatinDigits@
-\newif\if@eu@GreekUppercase@
-\newif\if@eu@GreekLowercase@
-\newif\if@eu@GreekDigits@
-\newif\if@eu@Symbols@
-\newif\if@eu@Digits@
-\let\eu@if@varforms\@gobble
-\let\eu@ifset@mathrm\@gobble
-\let\eu@ifset@mathcal\@gobble
-\let\eu@ifset@mathsf\@gobble
-\let\eu@ifset@mathtt\@gobble
-\let\eu@ifset@mathfrak\@gobble
-\let\eu@ifset@mathbb\@gobble
-\eu@ifnot@normalskips{
- \thinmuskip=4mu
- \medmuskip=5mu plus 2mu minus 4mu
- \thickmuskip=6mu plus 5mu}
-\newcommand\eu@isloaded[2][]{
- \expandafter\ifx\csname if@eu@#2loaded@\endcsname\relax
- \expandafter\newif\csname if@eu@#2loaded@\endcsname
- \fi
- \@ifpackageloaded{#2}
- {\csname @eu@#2loaded@true\endcsname #1}
- {\csname @eu@#2loaded@false\endcsname}}
-\eu@isloaded{amsmath}
+\eu@ifbooltrue{MnSymbol}{\RequirePackage{MnSymbol}}
+
+\providecommand\currentmathstyle{\relax}
+
+%% Check whether a package is loaded.
+%% \eu@package@loaded{<package>}
+\newcommand\eu@package@loaded[1]{
+ \@ifpackageloaded{#1}
+ {\eu@booltrue{eu@#1@loaded}}
+ {\eu@boolfalse{eu@#1@loaded}}}
+%% Test for amsmath. Do I need to do this here or at all?
+\eu@package@loaded{amsmath}
+
+%% Define the undefined Greek letters. Include all variant forms (same as normal
+%% forms if variant forms are unavailable). Latin F for digamma is better than
+%% nothing. If Digamma is available, then Capital and Lowercase the are same.
\DeclareMathSymbol{\Alpha}{\mathalpha}{operators}{"41}
\DeclareMathSymbol{\Beta}{\mathalpha}{operators}{"42}
\DeclareMathSymbol{\Epsilon}{\mathalpha}{operators}{"45}
@@ -77,88 +97,81 @@
\DeclareMathSymbol{\Chi}{\mathalpha}{operators}{"58}
\DeclareMathSymbol{\omicron}{\mathord}{letters}{"6F}
\let\varbeta\beta
-\@ifundefined{varkappa}
+\ifdef{\varkappa}
+ {\relax}
{\let\varkappa\kappa}
+\ifdef{\varTheta}
+ {\let\eu@cm@varTheta\varTheta}
{\relax}
\let\varTheta\Theta
-\@ifundefined{digamma}
- {\DeclareMathSymbol{\Digamma}{\mathalpha}{operators}{"46}
- \DeclareMathSymbol{\digamma}{\mathord}{operators}{"46}}
+\ifdef{\digamma}
{\let\Digamma\digamma}
-\let\cmAlpha\Alpha
-\let\cmBeta\Beta
-\let\cmGamma\Gamma
-\let\cmDelta\Delta
-\let\cmEpsilon\Epsilon
-\let\cmZeta\Zeta
-\let\cmEta\Eta
-\let\cmTheta\Theta
-\let\cmIota\Iota
-\let\cmKappa\Kappa
-\let\cmLambda\Lambda
-\let\cmMu\Mu
-\let\cmNu\Nu
-\let\cmXi\Xi
-\let\cmOmicron\Omicron
-\let\cmPi\Pi
-\let\cmRho\Rho
-\let\cmSigma\Sigma
-\let\cmTau\Tau
-\let\cmUpsilon\Upsilon
-\let\cmPhi\Phi
-\let\cmChi\Chi
-\let\cmPsi\Psi
-\let\cmOmega\Omega
-\let\cmDigamma\Digamma
-\let\cmalpha\alpha
-\let\cmbeta\beta
-\let\cmgamma\gamma
-\let\cmdelta\delta
-\let\cmepsilon\epsilon
-\let\cmzeta\zeta
-\let\cmeta\eta
-\let\cmtheta\theta
-\let\cmiota\iota
-\let\cmkappa\kappa
-\let\cmlambda\lambda
-\let\cmmu\mu
-\let\cmnu\nu
-\let\cmxi\xi
-\let\cmomicron\omicron
-\let\cmpi\pi
-\let\cmrho\rho
-\let\cmvarsigma\varsigma
-\let\cmsigma\sigma
-\let\cmtau\tau
-\let\cmupsilon\upsilon
-\let\cmphi\phi
-\let\cmchi\chi
-\let\cmpsi\psi
-\let\cmomega\omega
-\let\cmdigamma\digamma
-\let\cmvarbeta\varbeta
-\let\cmvarepsilon\varepsilon
-\let\cmvartheta\vartheta
-\let\cmvarkappa\varkappa
-\let\cmvarpi\varpi
-\let\cmvarrho\varrho
-\let\cmvarphi\varphi
-\let\cmvarTheta\varTheta
-\RequirePackage{etoolbox}
-\@gobble{\providecommand\expandonce[1]{\unexpanded\expandafter{#1}}}
+ {\DeclareMathSymbol{\Digamma}{\mathalpha}{operators}{"46}
+ \DeclareMathSymbol{\digamma}{\mathord}{letters}{"46}}
+
+%% Preserve old definitions of all Greek letters. \eu@cm@alpha etc.
+\def\do#1{\csletcs{eu@cm@#1}{#1}}
+\docsvlist{
+ Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,
+ Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,Digamma,alpha,
+ beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,
+ omicron,pi,rho,varsigma,sigma,tau,upsilon,phi,chi,psi,omega,digamma,
+ varTheta,varbeta,varepsilon,vartheta,varkappa,varpi,varrho,varphi}
+%% varTheta is done separately because amsmath defines it differently.
+
+%% Can define/redefine any command using the syntax of
+%% \newcommand/\renewcommand without error. Some helpers.
+\newcommand\ernewcommand[1]{\ifdef{#1}{\renewcommand{#1}}{\newcommand{#1}}}
\providecommand\expanded[1]{\edef\@tempa{#1}\@tempa}
-\providecommand\ernewcommand[1]{
- \@ifundefined{\expandafter\@gobble\string#1}%
- {\let\er@newcommand\newcommand}%
- {\let\er@newcommand\renewcommand
- \PackageWarning{mathspec}{Redefining command `\string#1'}}%
- \er@newcommand#1}
\newcommand\eu@setkeys[3][]{
- \ifthenelse{\isempty{#1}}
- {\relax}
- {\presetkeys[eu]{#2}{#1}{}}
- \expanded{\noexpand\setkeys*[eu]{#2}{\expandonce#3}}}
-\newcommand\eu@fontspec[2]{\expanded{\noexpand\zf@fontspec{\expandonce#1}{\expandonce#2}}}
+ \ifblank{#1}{\relax}{\presetkeys[eu]{#2}{#1}{}}
+ \expanded{\noexpand\setkeys*[eu]{#2}{\expandonce#3\@empty}}}
+\newcommand\eu@fontspec[2]{
+ \expanded{\noexpand\zf@fontspec{\expandonce#1\@empty}{\expandonce#2\@empty}}}
+
+%% Deprecated commands.
+%% \+: Use \"..." or " instead.
+%% \plaindigits: Digits are no longer selected automatically from either
+%% the Latin or the Greek mathematics font. Instead, they
+%% must explicitely be stated. If you want plain digits, just
+%% don't say you want digits.
+%5 \normalvarforms: Now called \normalisevarforms
+%% \varforms: Now called \exchangeforms
+%% Eventually, documents that use these will compile with error.
+\newcommand\+{
+ \PackageWarning{mathspec}
+ {\protect\+\space is deprecated, recommend to use\MessageBreak\protect\"..."
+ or "}
+ \eu@plus}
+\newcommand\setsansfonts{
+ \PackageWarning{mathspec}
+ {\protect\setsansfonts\space is deprecated, recommend to use \protect
+ \setallsansfonts.}
+ \setallsansfonts}
+\@onlypreamble\setsansfonts
+\newcommand\setmonofonts{
+ \PackageWarning{mathspec}
+ {\protect\setmonofonts\space is deprecated, recommend to use \protect
+ \setallmonofonts.}
+ \setallsansfonts}
+\@onlypreamble\setmonofonts
+\newcommand\plaindigits{
+ \PackageWarning{mathspec}{\protect\plaindigits\space is deprecated}}
+\@onlypreamble\plaindigits
+\newcommand\normalvarforms{
+ \PackageWarning{mathspec}
+ {\protect\normalvarforms\space is deprecated, recommend to use
+ \protect\normalisevarforms\space or \protect\normalizevarforms}
+ \normalisevarforms}
+\@onlypreamble\normalvarforms
+\newcommand\varforms{
+ \PackageWarning{mathspec}
+ {\protect\varforms\space is deprecated, recommend to use
+ \protect\exchangeforms}
+ \exchangeforms}
+\@onlypreamble\varforms
+
+%% I don't want this clogging up my sty file. It will be gone eventually.
\def\@ifnext#1#2#3{%
\let\@tempd=#1%
\def\@tempa{#2}%
@@ -188,525 +201,801 @@
\def\eu@new@command#1{\eu@@testopt{\eu@@newcommand#1}0}
\def\eu@@newcommand#1[#2]{\@ifnext[{\@xargdef#1[#2]}{\@argdef#1[#2]}}
\long\def\eu@@testopt#1#2{\@ifnext[{#1}{#1[{#2}]}}
-\newcommand\normalvarforms[1][]{\AtBeginDocument{
- \ifx\varbeta\cmvarbeta
- \let\varbeta\beta
- \fi
- \ifx\varepsilon\cmvarepsilon
- \let\varepsilon\epsilon
- \fi
- \ifx\vartheta\cmvartheta
- \let\vartheta\theta
+\eu@DeclareRobustCommand\eu@plus[1][]{}
+
+%% The main user command (comes in two spellings)
+%% \setmathsfont(<sets>)[<shapes, font features>]{<font name>}
+%% \setmathfont(<sets>)[<shapes, font features>]{<font name>}
+%%
+%% <set> is a CSV list of any of: Special, Latin, Greek, Digits, Symbols. If
+%% (<set>) is omitted, then (Special) is assumed. Special is provided to
+%% hook to some external code (e.g. potentially unicode-math). That is,
+%% for mathspec purposes, (<sets>) is mandatory. Omit it so that it
+%% behaves like a different command. See below.
+%% <shapes> is the keyval list of font shapes for the subset of <set>.
+%% Valid keys are: Uppercase, Lowercase, Arabic.
+%% Valid values are: Regular, Italic, Plain.
+%% <font features>, <font name> follow directly from fontspec.
+\providecommand\setmathsfont{\eu@setmathsfont}
+\let\setmathfont\setmathsfont
+\newcommand\eu@setmathsfont{
+ \@ifnextchar(
+ {\@eu@setmathsfont}
+ {\@eu@setmathsfont(Special)}}
+\def\@eu@setmathsfont(#1){
+ \edef\eu@setmathsfont@Set{#1}
+ \@@eu@setmathsfont}
+\newcommand\@@eu@setmathsfont[2][]{
+ \@for\i@for:=\eu@setmathsfont@Set\do
+ {\csname eu@ScopeSet@\i@for\endcsname[#1]{#2}}}
+
+%% The FIRST branch \setmathsfont(Special)
+%% Predefine this command before mathspec is loaded (or redefine it) to get
+%%
+%% \setmathsfont[<font features>]{<font name>}
+%%
+%% to do something else.
+%%
+%% Essentially, \setmathsfont(<sets>)[<font features>]{<font name>} is a mathspec
+%% command, but \setmathsfont[<font features>]{<font name>} is an external
+%% command.
+\providecommand\eu@ScopeSet@Special[2][]{\relax}
+
+%% The SECOND branch \setmathsfont(Digits)
+\newcommand\eu@ScopeSet@Digits[2][]{
+ \eu@setkeys[Arabic=Regular]{Digits}{#1}
+ \eu@fontspec{\XKV@rm}{#2}
+ \ifcase\eu@DigitsArabic@@value %% If Digits Regular
+ \ernewcommand\eu@DigitsArabic@symfont{Digits:m:n}
+ \let\eu@Digitsmathsfont\zf@family
+ \eu@booltrue{Digits}
+ \or %% If Digits Italic
+ \ernewcommand\eu@DigitsArabic@symfont{Digits:m:it}
+ \let\eu@Digitsmathsfont\zf@family
+ \eu@booltrue{Digits}
+ \or %% If Digits Plain
+ \eu@boolfalse{Digits}
\fi
- \ifx\varkappa\cmvarkappa
- \let\varkappa\kappa
+ \eu@ifsomebooltrue{Digits}
+ {\DeclareSymbolFont{Digits:m:n}{EU1}{\eu@Digitsmathsfont}{m}{n}}
+ \eu@ifbooltrue{Digits}
+ {\fontfamily\eu@Digitsmathsfont\selectfont
+ \DeclareMathSymbol{0}{\mathord}{\eu@DigitsArabic@symfont}{`0}
+ \DeclareMathSymbol{1}{\mathord}{\eu@DigitsArabic@symfont}{`1}
+ \DeclareMathSymbol{2}{\mathord}{\eu@DigitsArabic@symfont}{`2}
+ \DeclareMathSymbol{3}{\mathord}{\eu@DigitsArabic@symfont}{`3}
+ \DeclareMathSymbol{4}{\mathord}{\eu@DigitsArabic@symfont}{`4}
+ \DeclareMathSymbol{5}{\mathord}{\eu@DigitsArabic@symfont}{`5}
+ \DeclareMathSymbol{6}{\mathord}{\eu@DigitsArabic@symfont}{`6}
+ \DeclareMathSymbol{7}{\mathord}{\eu@DigitsArabic@symfont}{`7}
+ \DeclareMathSymbol{8}{\mathord}{\eu@DigitsArabic@symfont}{`8}
+ \DeclareMathSymbol{9}{\mathord}{\eu@DigitsArabic@symfont}{`9}}}
+
+%% The THIRD branch \setmathsfont(Latin)
+\newcommand\eu@ScopeSet@Latin[2][]{
+ \eu@setkeys[Uppercase=Italic,Lowercase=Italic]{Latin}{#1}
+ \eu@fontspec{\XKV@rm}{#2}
+ \ifcase\eu@LatinUppercase@@value %% If Latin Uppercase Regular
+ \ernewcommand\eu@LatinUppercase@symfont{Latin:m:n}
+ \let\eu@Latinmathsfont\zf@family
+ \eu@booltrue{LatinUppercase}
+ \or %% If Latin Uppercase Italic
+ \ernewcommand\eu@LatinUppercase@symfont{Latin:m:it}
+ \let\eu@Latinmathsfont\zf@family
+ \eu@booltrue{LatinUppercase}
+ \or %% If Latin Uppercase Plain
+ \eu@boolfalse{LatinUppercase}
\fi
- \ifx\varpi\cmvarpi
- \let\varpi\pi
+ \ifcase\eu@LatinLowercase@@value %% If Latin Lowercase Regular
+ \ernewcommand\eu@LatinLowercase@symfont{Latin:m:n}
+ \let\eu@Latinmathsfont\zf@family
+ \eu@booltrue{LatinLowercase}
+ \or %% If Latin Lowercase Italic
+ \ernewcommand\eu@LatinLowercase@symfont{Latin:m:it}
+ \let\eu@Latinmathsfont\zf@family
+ \eu@booltrue{LatinLowercase}
+ \or %% If Latin Lowercase Plain
+ \eu@boolfalse{LatinLowercase}
\fi
- \ifx\varrho\cmvarrho
- \let\varrho\rho
+ \eu@ifsomebooltrue{LatinUppercase,LatinLowercase}
+ {\DeclareSymbolFont{Latin:m:n}{EU1}{\eu@Latinmathsfont}{m}{n}
+ \DeclareSymbolFont{Latin:m:it}{EU1}{\eu@Latinmathsfont}{m}{it}}
+ \eu@ifbooltrue{LatinUppercase}
+ {\fontfamily\eu@Latinmathsfont\selectfont
+ \DeclareMathSymbol{A}{\mathalpha}{\eu@LatinUppercase@symfont}{`A}
+ \DeclareMathSymbol{B}{\mathalpha}{\eu@LatinUppercase@symfont}{`B}
+ \DeclareMathSymbol{C}{\mathalpha}{\eu@LatinUppercase@symfont}{`C}
+ \DeclareMathSymbol{D}{\mathalpha}{\eu@LatinUppercase@symfont}{`D}
+ \DeclareMathSymbol{E}{\mathalpha}{\eu@LatinUppercase@symfont}{`E}
+ \DeclareMathSymbol{F}{\mathalpha}{\eu@LatinUppercase@symfont}{`F}
+ \DeclareMathSymbol{G}{\mathalpha}{\eu@LatinUppercase@symfont}{`G}
+ \DeclareMathSymbol{H}{\mathalpha}{\eu@LatinUppercase@symfont}{`H}
+ \DeclareMathSymbol{I}{\mathalpha}{\eu@LatinUppercase@symfont}{`I}
+ \DeclareMathSymbol{J}{\mathalpha}{\eu@LatinUppercase@symfont}{`J}
+ \DeclareMathSymbol{K}{\mathalpha}{\eu@LatinUppercase@symfont}{`K}
+ \DeclareMathSymbol{L}{\mathalpha}{\eu@LatinUppercase@symfont}{`L}
+ \DeclareMathSymbol{M}{\mathalpha}{\eu@LatinUppercase@symfont}{`M}
+ \DeclareMathSymbol{N}{\mathalpha}{\eu@LatinUppercase@symfont}{`N}
+ \DeclareMathSymbol{O}{\mathalpha}{\eu@LatinUppercase@symfont}{`O}
+ \DeclareMathSymbol{P}{\mathalpha}{\eu@LatinUppercase@symfont}{`P}
+ \DeclareMathSymbol{Q}{\mathalpha}{\eu@LatinUppercase@symfont}{`Q}
+ \DeclareMathSymbol{R}{\mathalpha}{\eu@LatinUppercase@symfont}{`R}
+ \DeclareMathSymbol{S}{\mathalpha}{\eu@LatinUppercase@symfont}{`S}
+ \DeclareMathSymbol{T}{\mathalpha}{\eu@LatinUppercase@symfont}{`T}
+ \DeclareMathSymbol{U}{\mathalpha}{\eu@LatinUppercase@symfont}{`U}
+ \DeclareMathSymbol{V}{\mathalpha}{\eu@LatinUppercase@symfont}{`V}
+ \DeclareMathSymbol{W}{\mathalpha}{\eu@LatinUppercase@symfont}{`W}
+ \DeclareMathSymbol{X}{\mathalpha}{\eu@LatinUppercase@symfont}{`X}
+ \DeclareMathSymbol{Y}{\mathalpha}{\eu@LatinUppercase@symfont}{`Y}
+ \DeclareMathSymbol{Z}{\mathalpha}{\eu@LatinUppercase@symfont}{`Z}}
+ \eu@ifbooltrue{LatinLowercase}
+ {\fontfamily\eu@Latinmathsfont\selectfont
+ \DeclareMathSymbol{a}{\mathalpha}{\eu@LatinLowercase@symfont}{`a}
+ \DeclareMathSymbol{b}{\mathalpha}{\eu@LatinLowercase@symfont}{`b}
+ \DeclareMathSymbol{c}{\mathalpha}{\eu@LatinLowercase@symfont}{`c}
+ \DeclareMathSymbol{d}{\mathalpha}{\eu@LatinLowercase@symfont}{`d}
+ \DeclareMathSymbol{e}{\mathalpha}{\eu@LatinLowercase@symfont}{`e}
+ \DeclareMathSymbol{f}{\mathalpha}{\eu@LatinLowercase@symfont}{`f}
+ \DeclareMathSymbol{g}{\mathalpha}{\eu@LatinLowercase@symfont}{`g}
+ \DeclareMathSymbol{h}{\mathalpha}{\eu@LatinLowercase@symfont}{`h}
+ \DeclareMathSymbol{i}{\mathalpha}{\eu@LatinLowercase@symfont}{`i}
+ \DeclareMathSymbol{j}{\mathalpha}{\eu@LatinLowercase@symfont}{`j}
+ \DeclareMathSymbol{k}{\mathalpha}{\eu@LatinLowercase@symfont}{`k}
+ \DeclareMathSymbol{l}{\mathalpha}{\eu@LatinLowercase@symfont}{`l}
+ \DeclareMathSymbol{m}{\mathalpha}{\eu@LatinLowercase@symfont}{`m}
+ \DeclareMathSymbol{n}{\mathalpha}{\eu@LatinLowercase@symfont}{`n}
+ \DeclareMathSymbol{o}{\mathalpha}{\eu@LatinLowercase@symfont}{`o}
+ \DeclareMathSymbol{p}{\mathalpha}{\eu@LatinLowercase@symfont}{`p}
+ \DeclareMathSymbol{q}{\mathalpha}{\eu@LatinLowercase@symfont}{`q}
+ \DeclareMathSymbol{r}{\mathalpha}{\eu@LatinLowercase@symfont}{`r}
+ \DeclareMathSymbol{s}{\mathalpha}{\eu@LatinLowercase@symfont}{`s}
+ \DeclareMathSymbol{t}{\mathalpha}{\eu@LatinLowercase@symfont}{`t}
+ \DeclareMathSymbol{u}{\mathalpha}{\eu@LatinLowercase@symfont}{`u}
+ \DeclareMathSymbol{v}{\mathalpha}{\eu@LatinLowercase@symfont}{`v}
+ \DeclareMathSymbol{w}{\mathalpha}{\eu@LatinLowercase@symfont}{`w}
+ \DeclareMathSymbol{x}{\mathalpha}{\eu@LatinLowercase@symfont}{`x}
+ \DeclareMathSymbol{y}{\mathalpha}{\eu@LatinLowercase@symfont}{`y}
+ \DeclareMathSymbol{z}{\mathalpha}{\eu@LatinLowercase@symfont}{`z}}}
+
+%% The FOURTH branch \setmathsfont(Greek)
+\newcommand\eu@ScopeSet@Greek[2][]{
+ \eu@setkeys[Uppercase=Regular,Lowercase=Italic]{Greek}{#1}
+ \eu@fontspec{\XKV@rm}{#2}
+ \ifcase\eu@GreekUppercase@@value %% If Greek Uppercase Regular
+ \ernewcommand\eu@GreekUppercase@symfont{Greek:m:n}
+ \let\eu@Greekmathsfont\zf@family
+ \eu@booltrue{GreekUppercase}
+ \or %% If Greek Uppercase Italic
+ \ernewcommand\eu@GreekUppercase@symfont{Greek:m:it}
+ \let\eu@Greekmathsfont\zf@family
+ \eu@booltrue{GreekUppercase}
+ \or %% If Greek Uppercase Plain
+ \eu@boolfalse{GreekUppercase}
\fi
- \ifx\varphi\cmvarphi
- \let\varphi\phi
+ \ifcase\eu@GreekLowercase@@value %% If Greek Lowercase Regular
+ \ernewcommand\eu@GreekLowercase@symfont{Greek:m:n}
+ \let\eu@Greekmathsfont\zf@family
+ \eu@booltrue{GreekLowercase}
+ \or %% If Greek Lowercase Italic
+ \ernewcommand\eu@GreekLowercase@symfont{Greek:m:it}
+ \let\eu@Greekmathsfont\zf@family
+ \eu@booltrue{GreekLowercase}
+ \or %% If Greek Lowercase Plain
+ \eu@boolfalse{GreekLowercase}
\fi
- \ifx\varTheta\cmvarTheta
- \let\varTheta\Theta
- \fi}}
-\let\eu@ifnot@plaindigits\@firstofone
-\newcommand\plaindigits{\let\eu@ifnot@plaindigits\@gobble}
-\providecommand\setmathsfont{\eu@setmathsfont}
-\let\setmathfont\setmathsfont
-\eu@DeclareRobustCommand\+[1][1]{\ensuremath{\mskip#1mu}}
-\newcommand\varforms[1]{\def\eu@if@varforms##1{##1{#1}}}
+ \eu@ifsomebooltrue{GreekUppercase,GreekLowercase}
+ {\DeclareSymbolFont{Greek:m:n}{EU1}{\eu@Greekmathsfont}{m}{n}
+ \DeclareSymbolFont{Greek:m:it}{EU1}{\eu@Greekmathsfont}{m}{it}}
+ \eu@ifbooltrue{GreekUppercase}
+ {\fontfamily\eu@Greekmathsfont\selectfont
+ \XeTeXDeclareMathSymbol{Α}{\mathalpha}{\eu@GreekUppercase@symfont}{`Α}[\Alpha]
+ \XeTeXDeclareMathSymbol{Β}{\mathalpha}{\eu@GreekUppercase@symfont}{`Β}[\Beta]
+ \XeTeXDeclareMathSymbol{Γ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Γ}[\Gamma]
+ \XeTeXDeclareMathSymbol{Δ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Δ}[\Delta]
+ \XeTeXDeclareMathSymbol{Ε}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ε}[\Epsilon]
+ \XeTeXDeclareMathSymbol{Ζ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ζ}[\Zeta]
+ \XeTeXDeclareMathSymbol{Η}{\mathalpha}{\eu@GreekUppercase@symfont}{`Η}[\Eta]
+ \XeTeXDeclareMathSymbol{Θ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Θ}[\Theta]
+ \XeTeXDeclareMathSymbol{Ι}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ι}[\Iota]
+ \XeTeXDeclareMathSymbol{Κ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Κ}[\Kappa]
+ \XeTeXDeclareMathSymbol{Λ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Λ}[\Lambda]
+ \XeTeXDeclareMathSymbol{Μ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Μ}[\Mu]
+ \XeTeXDeclareMathSymbol{Ν}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ν}[\Nu]
+ \XeTeXDeclareMathSymbol{Ξ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ξ}[\Xi]
+ \XeTeXDeclareMathSymbol{Ο}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ο}[\Omicron]
+ \XeTeXDeclareMathSymbol{Π}{\mathalpha}{\eu@GreekUppercase@symfont}{`Π}[\Pi]
+ \XeTeXDeclareMathSymbol{Ρ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ρ}[\Rho]
+ \XeTeXDeclareMathSymbol{Σ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Σ}[\Sigma]
+ \XeTeXDeclareMathSymbol{Τ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Τ}[\Tau]
+ \XeTeXDeclareMathSymbol{Υ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Υ}[\Upsilon]
+ \XeTeXDeclareMathSymbol{Φ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Φ}[\Phi]
+ \XeTeXDeclareMathSymbol{Χ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Χ}[\Chi]
+ \XeTeXDeclareMathSymbol{Ψ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ψ}[\Psi]
+ \XeTeXDeclareMathSymbol{Ω}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ω}[\Omega]
+ \XeTeXDeclareMathSymbol{Ϝ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ϝ}[\Digamma]
+ \XeTeXDeclareMathSymbol{ϴ}{\mathalpha}{\eu@GreekUppercase@symfont}{`ϴ}[\varTheta]
+ \eu@fixgreekcs{Α}{Alpha}
+ \eu@fixgreekcs{Β}{Beta}
+ \eu@fixgreekcs{Γ}{Gamma}
+ \eu@fixgreekcs{Δ}{Delta}
+ \eu@fixgreekcs{Ε}{Epsilon}
+ \eu@fixgreekcs{Ζ}{Zeta}
+ \eu@fixgreekcs{Η}{Eta}
+ \eu@fixgreekcs{Θ}{Theta}
+ \eu@fixgreekcs{Ι}{Iota}
+ \eu@fixgreekcs{Κ}{Kappa}
+ \eu@fixgreekcs{Λ}{Lambda}
+ \eu@fixgreekcs{Μ}{Mu}
+ \eu@fixgreekcs{Ν}{Nu}
+ \eu@fixgreekcs{Ξ}{Xi}
+ \eu@fixgreekcs{Ο}{Omicron}
+ \eu@fixgreekcs{Π}{Pi}
+ \eu@fixgreekcs{Ρ}{Rho}
+ \eu@fixgreekcs{Σ}{Sigma}
+ \eu@fixgreekcs{Τ}{Tau}
+ \eu@fixgreekcs{Υ}{Upsilon}
+ \eu@fixgreekcs{Φ}{Phi}
+ \eu@fixgreekcs{Χ}{Chi}
+ \eu@fixgreekcs{Ψ}{Psi}
+ \eu@fixgreekcs{Ω}{Omega}
+ \eu@fixgreekcs{Ϝ}{Digamma}
+ \eu@fixgreekcs{ϴ}{varTheta}}
+ \eu@ifbooltrue{GreekLowercase}
+ {\fontfamily\eu@Greekmathsfont\selectfont
+ \XeTeXDeclareMathSymbol{α}{\mathalpha}{\eu@GreekLowercase@symfont}{`α}[\alpha]
+ \XeTeXDeclareMathSymbol{β}{\mathalpha}{\eu@GreekLowercase@symfont}{`β}[\beta]
+ \XeTeXDeclareMathSymbol{γ}{\mathalpha}{\eu@GreekLowercase@symfont}{`γ}[\gamma]
+ \XeTeXDeclareMathSymbol{δ}{\mathalpha}{\eu@GreekLowercase@symfont}{`δ}[\delta]
+ \XeTeXDeclareMathSymbol{ε}{\mathalpha}{\eu@GreekLowercase@symfont}{`ε}[\epsilon]
+ \XeTeXDeclareMathSymbol{ζ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ζ}[\zeta]
+ \XeTeXDeclareMathSymbol{η}{\mathalpha}{\eu@GreekLowercase@symfont}{`η}[\eta]
+ \XeTeXDeclareMathSymbol{θ}{\mathalpha}{\eu@GreekLowercase@symfont}{`θ}[\theta]
+ \XeTeXDeclareMathSymbol{ι}{\mathalpha}{\eu@GreekLowercase@symfont}{`ι}[\iota]
+ \XeTeXDeclareMathSymbol{κ}{\mathalpha}{\eu@GreekLowercase@symfont}{`κ}[\kappa]
+ \XeTeXDeclareMathSymbol{λ}{\mathalpha}{\eu@GreekLowercase@symfont}{`λ}[\lambda]
+ \XeTeXDeclareMathSymbol{μ}{\mathalpha}{\eu@GreekLowercase@symfont}{`μ}[\mu]
+ \XeTeXDeclareMathSymbol{ν}{\mathalpha}{\eu@GreekLowercase@symfont}{`ν}[\nu]
+ \XeTeXDeclareMathSymbol{ξ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ξ}[\xi]
+ \XeTeXDeclareMathSymbol{ο}{\mathalpha}{\eu@GreekLowercase@symfont}{`ο}[\omicron]
+ \XeTeXDeclareMathSymbol{π}{\mathalpha}{\eu@GreekLowercase@symfont}{`π}[\pi]
+ \XeTeXDeclareMathSymbol{ρ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ρ}[\rho]
+ \XeTeXDeclareMathSymbol{ς}{\mathalpha}{\eu@GreekLowercase@symfont}{`ς}[\varsigma]
+ \XeTeXDeclareMathSymbol{σ}{\mathalpha}{\eu@GreekLowercase@symfont}{`σ}[\sigma]
+ \XeTeXDeclareMathSymbol{τ}{\mathalpha}{\eu@GreekLowercase@symfont}{`τ}[\tau]
+ \XeTeXDeclareMathSymbol{υ}{\mathalpha}{\eu@GreekLowercase@symfont}{`υ}[\upsilon]
+ \XeTeXDeclareMathSymbol{φ}{\mathalpha}{\eu@GreekLowercase@symfont}{`φ}[\phi]
+ \XeTeXDeclareMathSymbol{χ}{\mathalpha}{\eu@GreekLowercase@symfont}{`χ}[\chi]
+ \XeTeXDeclareMathSymbol{ψ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ψ}[\psi]
+ \XeTeXDeclareMathSymbol{ω}{\mathalpha}{\eu@GreekLowercase@symfont}{`ω}[\omega]
+ \XeTeXDeclareMathSymbol{ϝ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϝ}[\digamma]
+ \XeTeXDeclareMathSymbol{ϐ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϐ}[\varbeta]
+ \XeTeXDeclareMathSymbol{ϵ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϵ}[\varepsilon]
+ \XeTeXDeclareMathSymbol{ϑ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϑ}[\vartheta]
+ \XeTeXDeclareMathSymbol{ϰ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϰ}[\varkappa]
+ \XeTeXDeclareMathSymbol{ϖ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϖ}[\varpi]
+ \XeTeXDeclareMathSymbol{ϱ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϱ}[\varrho]
+ \XeTeXDeclareMathSymbol{ϕ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϕ}[\varphi]
+ \eu@fixgreekcs{α}{alpha}
+ \eu@fixgreekcs{β}{beta}
+ \eu@fixgreekcs{γ}{gamma}
+ \eu@fixgreekcs{δ}{delta}
+ \eu@fixgreekcs{ε}{epsilon}
+ \eu@fixgreekcs{ζ}{zeta}
+ \eu@fixgreekcs{η}{eta}
+ \eu@fixgreekcs{θ}{theta}
+ \eu@fixgreekcs{ι}{iota}
+ \eu@fixgreekcs{κ}{kappa}
+ \eu@fixgreekcs{λ}{lambda}
+ \eu@fixgreekcs{μ}{mu}
+ \eu@fixgreekcs{ν}{nu}
+ \eu@fixgreekcs{ξ}{xi}
+ \eu@fixgreekcs{ο}{omicron}
+ \eu@fixgreekcs{π}{pi}
+ \eu@fixgreekcs{ρ}{rho}
+ \eu@fixgreekcs{ς}{varsigma}
+ \eu@fixgreekcs{σ}{sigma}
+ \eu@fixgreekcs{τ}{tau}
+ \eu@fixgreekcs{υ}{upsilon}
+ \eu@fixgreekcs{φ}{phi}
+ \eu@fixgreekcs{χ}{chi}
+ \eu@fixgreekcs{ψ}{psi}
+ \eu@fixgreekcs{ω}{omega}
+ \eu@fixgreekcs{ϝ}{digamma}
+ \eu@fixgreekcs{ϐ}{varbeta}
+ \eu@fixgreekcs{ϵ}{varepsilon}
+ \eu@fixgreekcs{ϑ}{vartheta}
+ \eu@fixgreekcs{ϰ}{varkappa}
+ \eu@fixgreekcs{ϖ}{varpi}
+ \eu@fixgreekcs{ϱ}{varrho}
+ \eu@fixgreekcs{ϕ}{varphi}}}
+\newcommand\eu@fixgreekcs[2]{
+ \ifcsequal{#2}{eu@cm@#2}
+ {\relax}
+ {\expandafter\def\csname #2\endcsname{{"#1}}}}
+
+%% The FIFTH branch \setmathsfont(Symbols)
+%% The symbols are not for now.
+%% \newcommand\eu@ScopeSet@Symbols[2][]{
+%% \eu@fontspec{#1}{#2}
+%% \def\eu@Symbols@symfont{Symbols:m:n}
+%% \let\eu@Symbolsmathsfont\zf@family
+%% \eu@booltrue{Symbols}}
+%%
+%% The FIFTH branch (REDEFINED) \setmathsfont(Symbols)
+\newcommand\eu@ScopeSet@Symbols[2][]{\eu@boolfalse{Symbols}}
+
+%% Just so we know, by "all variant forms" I mean:
+%% varbeta varpi cursive beta "omega" style pi
+%% varepsilon varrho lunate epsilon rho with tail hooked under
+%% vartheta varphi cursive theta cursive phi (or orthotic phi)
+%% varkappa varTheta cursive kappa Theta with horizontal bar connected
+%%
+%% Note that varsigma is not included in this list (varsigma is not a variant
+%% form, it is a final form).
+
+%% Some authors might prefer the normal and variant forms to be exchanged. For
+%% example, I prefer \phi to print the orthotic phi and \varphi the cursive phi,
+%% contrary to many text fonts.
+%%
+%% \exchangeforms{<list>}
+%% <list> is a CSV list of any of:
+%% beta, epsilon, theta, kappa, pi, rho, phi, Theta
+\newcommand\exchangeforms[1]{
+ \AtBeginDocument{
+ \@for\i@for:=#1\do{\eu@booltrue{exchange\i@for forms}}
+ \eu@ifbooltrue{GreekLowercase}
+ {\eu@ifbooltrue{exchangebetaforms}
+ {\XeTeXDeclareMathSymbol{β}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϐ}[\beta]
+ \XeTeXDeclareMathSymbol{ϐ}{\mathalpha}{\eu@GreekLowercase@symfont}{`β}[\varbeta]}
+ \eu@ifbooltrue{exchangeepsilonforms}
+ {\XeTeXDeclareMathSymbol{ε}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϵ}[\epsilon]
+ \XeTeXDeclareMathSymbol{ϵ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ε}[\varepsilon]}
+ \eu@ifbooltrue{exchangethetaforms}
+ {\XeTeXDeclareMathSymbol{θ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϑ}[\theta]
+ \XeTeXDeclareMathSymbol{ϑ}{\mathalpha}{\eu@GreekLowercase@symfont}{`θ}[\vartheta]}
+ \eu@ifbooltrue{exchangekappaforms}
+ {\XeTeXDeclareMathSymbol{κ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϰ}[\kappa]
+ \XeTeXDeclareMathSymbol{ϰ}{\mathalpha}{\eu@GreekLowercase@symfont}{`κ}[\varkappa]}
+ \eu@ifbooltrue{exchangepiforms}
+ {\XeTeXDeclareMathSymbol{π}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϖ}[\pi]
+ \XeTeXDeclareMathSymbol{ϖ}{\mathalpha}{\eu@GreekLowercase@symfont}{`π}[\varpi]}
+ \eu@ifbooltrue{exchangerhoforms}
+ {\XeTeXDeclareMathSymbol{ρ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϱ}[\rho]
+ \XeTeXDeclareMathSymbol{ϱ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ρ}[\varrho]}
+ \eu@ifbooltrue{exchangephiforms}
+ {\XeTeXDeclareMathSymbol{φ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ϕ}[\phi]
+ \XeTeXDeclareMathSymbol{ϕ}{\mathalpha}{\eu@GreekLowercase@symfont}{`φ}[\varphi]}}
+ \eu@ifbooltrue{GreekUppercase}
+ {\eu@ifbooltrue{exhangeThetaforms}
+ {\XeTeXDeclareMathSymbol{Θ}{\mathalpha}{\eu@GreekUppercase@symfont}{`ϴ}[\Theta]
+ \XeTeXDeclareMathSymbol{ϴ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Θ}[\varTheta]}}}}
+\@onlypreamble\exchangeforms
+
+%% Some text fonts do not contain all variant forms. For those that don't,
+%% after defining the Greek mathematics font, the ‘absent’ variant forms will
+%% still be typeset in Computer Modern (usually).
+%%
+%% \normalisevarforms[<list>]
+%% \normalizevarforms[<list>]
+%% <list> is a CSV list of any of:
+%% beta, epsilon, theta, kappa, pi, rho, phi, Theta
+%%
+%% This command makes the listed variant forms of Greek symbols equivalent to
+%% their normal forms, but only if they do not already exist in the font. For
+%% example, if \varbeta and \eu@cm@varbeta are equivalent, then
+%% \XeTeXDeclareMathSymbol failed to assign \varbeta to ϐ because ϐ does not
+%% exist in the font.
+\newcommand\normalisevarforms[1][beta,epsilon,theta,kappa,pi,rho,phi,Theta]{
+ \AtBeginDocument{
+ \@for\i@for:=#1\do{\eu@booltrue{normalisevar\i@for}}
+ \eu@ifbooltrue{GreekLowercase}
+ {\eu@ifbooltrue{normalisevarbeta}
+ {\ifx\varbeta\eu@cm@varbeta
+ \XeTeXDeclareMathSymbol{ϐ}{\mathalpha}{\eu@GreekLowercase@symfont}{`β}
+ \let\varbeta\beta
+ \fi}
+ \eu@ifbooltrue{normalisevarepsilon}
+ {\ifx\varepsilon\eu@cm@varepsilon
+ \XeTeXDeclareMathSymbol{ϵ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ε}
+ \let\varepsilon\epsilon
+ \fi}
+ \eu@ifbooltrue{normalisevartheta}
+ {\ifx\vartheta\eu@cm@vartheta
+ \XeTeXDeclareMathSymbol{ϑ}{\mathalpha}{\eu@GreekLowercase@symfont}{`θ}
+ \let\vartheta\theta
+ \fi}
+ \eu@ifbooltrue{normalisevarkappa}
+ {\ifx\varkappa\eu@cm@varkappa
+ \XeTeXDeclareMathSymbol{ϰ}{\mathalpha}{\eu@GreekLowercase@symfont}{`κ}
+ \let\varkappa\kappa
+ \fi}
+ \eu@ifbooltrue{normalisevarpi}
+ {\ifx\varpi\eu@cm@varpi
+ \XeTeXDeclareMathSymbol{ϖ}{\mathalpha}{\eu@GreekLowercase@symfont}{`π}
+ \let\varpi\pi
+ \fi}
+ \eu@ifbooltrue{normalisevarrho}
+ {\ifx\varrho\eu@cm@varrho
+ \XeTeXDeclareMathSymbol{ϱ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ρ}
+ \let\varrho\rho
+ \fi}
+ \eu@ifbooltrue{normalisevarphi}
+ {\ifx\varphi\eu@cm@varphi
+ \XeTeXDeclareMathSymbol{ϕ}{\mathalpha}{\eu@GreekLowercase@symfont}{`φ}
+ \let\varphi\phi
+ \fi}}
+ \eu@ifbooltrue{GreekUppercase}{
+ \eu@ifbooltrue{normalisevarTheta}
+ {\ifx\varTheta\eu@cm@varTheta
+ \XeTeXDeclareMathSymbol{ϴ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Θ}
+ \let\varTheta\Theta
+ \fi}}}}
+\@onlypreamble\normalisevarforms
+\let\normalizevarforms\normalisevarforms
+\@onlypreamble\normalizevarforms
+
+%% xkeyval things
+\define@choicekey[eu]
+ {Digits}{Arabic}[\eu@DigitsArabic@value\eu@DigitsArabic@@value]
+ {Regular,Italic,Plain}[Regular]{\relax}
+\define@choicekey[eu]
+ {Latin}{Uppercase}[\eu@LatinUppercase@value\eu@LatinUppercase@@value]
+ {Regular,Italic,Plain}[Italic]{\relax}
+\define@choicekey[eu]
+ {Latin}{Lowercase}[\eu@LatinLowercase@value\eu@LatinLowercase@@value]
+ {Regular,Italic,Plain}[Italic]{\relax}
+\define@choicekey[eu]
+ {Greek}{Uppercase}[\eu@GreekUppercase@value\eu@GreekUppercase@@value]
+ {Regular,Italic,Plain}[Regular]{\relax}
+\define@choicekey[eu]
+ {Greek}{Lowercase}[\eu@GreekLowercase@value\eu@GreekLowercase@@value]
+ {Regular,Italic,Plain}[Italic]{\relax}
+
+%% Also say Digits has Uppercase and Lowercase keys, and Latin and Greek both
+%% have Arabic key. So that if a superfluous key is accidently sent through the
+%% wrong command (possible with \setallmainfonts), then it doesn't blow up.
+\define@key[eu]{Digits}{Uppercase}{\relax}
+\define@key[eu]{Digits}{Lowercase}{\relax}
+\define@key[eu]{Latin}{Arabic}{\relax}
+\define@key[eu]{Greek}{Arabic}{\relax}
+
+%% I hope Will doesn't mind if I patch fontspec. Why? Because these keys are
+%% accidently sent through fontspec (e.g. \setallmainfonts does \setmainfont,
+%% which is a fontspec command). So I allow fontspec to understand them, but do
+%% nothing.
+\define@key[zf]{options}{Arabic}{\relax}
+\define@key[zf]{options}{Uppercase}{\relax}
+\define@key[zf]{options}{Lowercase}{\relax}
+
+%% Fonts have metrics suitable for text, not for mathematics. Need to kern each
+%% letter individually. Previous version took a trial and error approach with
+%% \+[<size>] where <size> was determined by trial and error. Now, there is a
+%% XeTeX primitive \XeTeXglyphbounds which is used to automatically calculate
+%% the required mkern.
+%%
+%% Some register definitions. \three@digits takes a number and, if it is less
+%% than 100, inserts leading zeroes so that it has three digits.
+\muskipdef\muskip@\z@
+\muskipdef\muskip@i\@ne
+\dimendef\dimen@iv 4\relax
+\newcounter{eu@}
+\newcounter{eu@i}
+\providecommand\three@digits[1]{\ifnum#1<100 0\ifnum#1<10 0\fi\fi\number#1}
+
+%% \setminwhitespace{<number>}
+%% Sets the minimum gap between adjacent characters in mathematics.
+%% <number> is in units of mmu (1/1000 mu). So 1 em = 18000 mmu.
+%% \eu@minwhitespace is the minimum white space. It's default value is 500
+%% which corresponds to 0.5 mu or 1/36 em.
+\newcommand\setminwhitespace[1][500]{\def\eu@minwhitespace{#1}}
+\setminwhitespace
+
+%% \eu@mkern operates over some adjacent character tokens
+%% \@eu@mkern operates over individual character tokens
+%%
+%% Unless I've missed something, it is really, really hard to get information
+%% about the font that a mathematics symbol is typeset in, so I devised a series
+%% of tests in text mode (\text!) (otherwise the received information will be
+%% rubbish, related to the text font outside the mathematics). It would be
+%% neater if I do it inside a box that's not printed, instead of an empty
+%% \text. The \@eu@mkern algorithm to calculate the mkern might be neater if I
+%% use e-TeX's \numexpr and \glueexpr. Maybe \gluetomu might be useful? What I
+%% have here already ought to be sufficient but perhaps inefficient. I think
+%% optical sizes follow through automatically because \text inherits the
+%% surrounding size, is that right?
+\newcommand\eu@mkern[1]{%
+ \@tfor\i@tfor:=#1\do{\expandafter\@eu@mkern\i@tfor}}
+\def\eu@get@familyseriesshape#1:#2:#3\@nil{%
+ \expandafter\fontfamily\csname eu@#1mathsfont\endcsname\selectfont
+ \ifstrequal{#2}{m}{\mdseries}{\relax}%
+ \ifstrequal{#2}{bx}{\bfseries}{\relax}%
+ \ifstrequal{#3}{n}{\upshape}{\relax}%
+ \ifstrequal{#3}{it}{\itshape}{\relax}}
+\def\eu@get@familyseriesshape#1:#2:#3\@nil{%
+ \def\eu@family{#1}%
+ \def\eu@series{#2}%
+ \def\eu@shape{#3}}
+\newcounter{mkern}
+\newcommand\@eu@mkern[1]{%
+ \setcounter{mkern}{-1}%
+ \eu@boolfalse{domkern}%
+ \eu@ifnumin{`#1}{`0,`9}{\setcounter{mkern}{0}}{\relax}%
+ \eu@ifnumin{`#1}{`A,`Z}{\setcounter{mkern}{1}}{\relax}%
+ \eu@ifnumin{`#1}{`a,`z}{\setcounter{mkern}{2}}{\relax}%
+ \eu@ifnumin{`#1}{`Α,`Ω}{\setcounter{mkern}{3}}{\relax}%
+ \eu@ifnumin{`#1}{`α,`ω}{\setcounter{mkern}{4}}{\relax}%
+ \eu@ifnumis{`#1}{`Ϝ,`ϴ}{\setcounter{mkern}{3}}{\relax}%
+ \eu@ifnumis{`#1}{`ϐ,`ϑ,`ϕ,`ϖ,`ϝ,`ϰ,`ϱ,`ϵ}{\setcounter{mkern}{4}}{\relax}%
+ \text{%
+ \ifnum\the\c@mkern>\m@ne
+ \eu@gbooltrue{domkern}%
+ \fi
+ \ifcase\the\c@mkern\relax % If Digits (0)
+ \ifdef{\eu@DigitsArabic@symfont}%
+ {\expandafter\eu@get@familyseriesshape\eu@DigitsArabic@symfont\@nil}%
+ {\global\boolfalse{domkern}}%
+ \or % If Latin Uppercase (1)
+ \ifdef{\eu@LatinUppercase@symfont}%
+ {\expandafter\eu@get@familyseriesshape\eu@LatinUppercase@symfont\@nil}%
+ {\global\boolfalse{domkern}}%
+ \or % If Latin Lowercase (2)
+ \ifdef{\eu@LatinLowercase@symfont}%
+ {\expandafter\eu@get@familyseriesshape\eu@LatinLowercase@symfont\@nil}%
+ {\global\boolfalse{domkern}}%
+ \or % If Greek Uppercase (3)
+ \ifdef{\eu@GreekUppercase@symfont}%
+ {\expandafter\eu@get@familyseriesshape\eu@GreekUppercase@symfont\@nil}%
+ {\global\boolfalse{domkern}}%
+ \or % If Greek Lowercase (4)
+ \ifdef{\eu@GreekLowercase@symfont}%
+ {\expandafter\eu@get@familyseriesshape\eu@GreekLowercase@symfont\@nil}%
+ {\global\boolfalse{domkern}}%
+ \fi
+ \ifdef{\eu@family}%
+ {\expandafter\fontfamily\csname eu@\eu@family mathsfont\endcsname\selectfont}%
+ {\relax}%
+ \ifdef{\eu@series}%
+ {\expandafter\ifstrequal\expandafter{\eu@series}{m}%
+ {\mdseries}%
+ {\relax}%
+ \expandafter\ifstrequal\expandafter{\eu@series}{bx}%
+ {\bfseries}%
+ {\relax}}%
+ {\relax}%
+ \ifdef{\eu@shape}%
+ {\expandafter\ifstrequal\expandafter{\eu@shape}{n}%
+ {\upshape}%
+ {\relax}%
+ \expandafter\ifstrequal\expandafter{\eu@shape}{it}%
+ {\itshape}%
+ {\relax}}%
+ {\relax}%
+ \global\dimen@\XeTeXglyphbounds\@ne\the\XeTeXcharglyph`#1\relax
+ \global\dimen@iv\XeTeXglyphbounds\thr@@\the\XeTeXcharglyph`#1}
+ \dimen@ii 1em
+ \c@eu@\dimen@
+ \c@eu@i\dimen@ii
+ \multiply\c@eu@ 3000\relax
+ \divide\c@eu@i 6\relax
+ \divide\c@eu@\c@eu@i
+ \c@eu@i\c@eu@
+ \ifnum\number\c@eu@ <\eu@minwhitespace
+ \c@eu@\eu@minwhitespace
+ \fi
+ \advance\c@eu@ -\c@eu@i
+ \c@eu@i\c@eu@
+ \divide\c@eu@i\@m
+ \edef\eu@mkern@left{\number\c@eu@i}
+ \multiply\c@eu@i\@m
+ \advance\c@eu@ -\c@eu@i
+ \edef\eu@mkern@left{\eu@mkern@left.\three@digits{\number\c@eu@}mu}
+ \dimen@\dimen@iv
+ \dimen@ii 1em
+ \c@eu@\dimen@
+ \c@eu@i\dimen@ii
+ \multiply\c@eu@ 3000\relax
+ \divide\c@eu@i 6\relax
+ \divide\c@eu@\c@eu@i
+ \c@eu@i\c@eu@
+ \ifnum\number\c@eu@ <\eu@minwhitespace
+ \c@eu@\eu@minwhitespace
+ \fi
+ \advance\c@eu@ -\c@eu@i
+ \c@eu@i\c@eu@
+ \divide\c@eu@i\@m
+ \edef\eu@mkern@right{\number\c@eu@i}
+ \multiply\c@eu@i\@m
+ \advance\c@eu@ -\c@eu@i
+ \edef\eu@mkern@right{\eu@mkern@right.\three@digits{\number\c@eu@}mu}
+ \eu@ifbool{domkern}
+ {\mkern\eu@mkern@left#1\mkern\eu@mkern@right}
+ {#1}}
+
+%% Redefine \" and " in maths mode only. Umlaut and quote definitions remain
+%% in effect in text mode.
+%%
+%% " put the " before a character, e.g $"f$, and the character is
+%% printed with kerns on either side.
+%% \"..." Surround a series of adjacent characters, e.g. $\"abcde"$ is
+%% equivalent to $"a"b"c"d"e$.
+%% Note that the tokens that " and \" operate on MUST be characters because
+%% they are sent through the XeTeX primitive \XeTeXcharglyph as in:
+%%
+%% \XeTeXglyphbounds n \the\XeTeXcharglyph`#1
+%%
+%% where n = 1,2,3,4 and #1 is the character (If #1 is not a character, then
+%% \XeTeXcharglyph`#1 doesn't make sense). Higher level tests are needed to
+%% avoid this problem.
+\let\eu@original@quote="
+\let\eu@original@csquote=\"
+\mathcode`\"="8000
+\newcommand\eu@active@quote{%
+ \ifmmode
+ \expandafter\eu@new@quote
+ \else
+ \expandafter\eu@original@quote
+ \fi}
+\newcommand\eu@active@csquote{%
+ \ifmmode
+ \expandafter\eu@new@csquote
+ \else
+ \expandafter\eu@original@csquote
+ \fi}
+\begingroup
+ \catcode`\"=\active
+ \global\let"=\eu@active@quote
+\endgroup
+\let\"=\eu@active@csquote
+\newcommand\eu@new@quote[1]{\eu@mkern{#1}}
+\def\eu@new@csquote#1"{\eu@mkern{#1}}
+
+%% Redefine LaTeX 2e kernel macros to do Unicode characters too. Add optional
+%% fifth argument. This is a list of control sequences which will be let equal
+%% to the symbol if the symbol exists in the font. If the symbol does not exist
+%% in the font, then the fifth argument is ignored.
+%%
+%% e.g. \XeTeXDeclareMathSymbol{≠}{\mathrel}{font}{"2260}[\neq\ne]
+\def\XeTeXDeclareMathSymbol#1#2#3#4{%
+ \expandafter\in@\csname sym#3\expandafter\endcsname
+ \expandafter{\group@list}%
+ \ifin@
+ \begingroup
+ \if\relax\noexpand#1% is command?
+ \edef\reserved@a{\noexpand\in@{\string\mathchar}{\meaning#1}}%
+ \reserved@a
+ \ifin@
+ \expandafter\XeTeXset@mathsymbol
+ \csname sym#3\endcsname#1#2{#4}%
+ \@font@info{Redeclaring math symbol \string#1}%
+ \else
+ \expandafter\ifx
+ \csname\expandafter\@gobble\string#1\endcsname
+ \relax
+ \expandafter\XeTeXset@mathsymbol
+ \csname sym#3\endcsname#1#2{#4}%
+ \else
+ \@latex@error{Command `\string#1' already defined}\@eha
+ \fi
+ \fi
+ \else
+ \expandafter\XeTeXset@mathchar
+ \csname sym#3\endcsname#1#2{#4}%
+ \fi
+ \endgroup
+ \def\XeTeXDeclareMathSymbol@symbol{#1}%
+ \def\XeTeXDeclareMathSymbol@slot{#4}%
+ \expandafter\XeTeXDeclareMathSymbol@option
+ \else
+ \@latex@error{Symbol font `#3' is not defined}\@eha
+ \expandafter\@gobbleoarg
+ \fi}
+\@onlypreamble\XeTeXDeclareMathSymbol
+\def\XeTeXset@mathchar#1#2#3#4{%
+ \global\XeTeXmathcode`#2="\mathchar@type#3#1#4\relax}
+\@onlypreamble\XeTeXset@mathchar
+\def\XeTeXset@mathsymbol#1#2#3#4{%
+ \global\XeTeXmathchardef#2"\mathchar@type#3#1#4\relax}
+\@onlypreamble\XeTeXset@mathsymbol
+\newcommand\@gobbleoarg[1][]{}
+\newcommand\XeTeXDeclareMathSymbol@option[1][]{%
+ \ifnum\the\XeTeXcharglyph\XeTeXDeclareMathSymbol@slot>\z@
+ \@tfor\i@tfor #1:=\do%
+ {\expandafter\edef\i@tfor{\expandonce\XeTeXDeclareMathSymbol@symbol}}%
+ \fi}
+
+%% Some shorthands, so the same information isn't typed out more than once
+%%
+%% \setallmainfonts(<sets>)[<shapes, font features>]{<font name>}
+%% \setprimaryfont[<shapes, font features>]{<font name>}
+%% \setallsansfonts[<shapes, font features>]{<font name>}
+%% \setallmonofonts[<shapes, font features>]{<font name>}
+\newcommand\setallmainfonts{
+ \@ifnextchar(
+ {\eu@setallmainfonts}
+ {\eu@setallmainfonts(Digits,Latin,Greek)}}
+\def\eu@setallmainfonts(#1){
+ \edef\eu@setmathsfont@Set{#1}
+ \@eu@setallmainfonts}
+\newcommand\@eu@setallmainfonts[2][]{
+ \setmainfont[#1]{#2}
+ \setmathsfont(\eu@setmathsfont@Set)[#1]{#2}
+ \setmathrm[#1]{#2}}
+\newcommand\setprimaryfont{\setallmainfonts(Digits,Latin)}
+\newcommand\setallsansfonts[2][]{
+ \setsansfont[#1]{#2}
+ \setmathsf[#1]{#2}}
+\newcommand\setallmonofonts[2][]{
+ \setmonofont[#1]{#2}
+ \setmathtt[#1]{#2}}
+
+%% Set the particular mathematics alphabets
\ernewcommand\setmathrm[2][]{
\zf@fontspec{#1}{#2}
\let\eu@mathrm\zf@family
- \let\eu@ifset@mathrm\@firstofone
- \providecommand\eu@mathbf@shape{n}}
+ \DeclareMathAlphabet{\mathrm}{EU1}{\eu@mathrm}{m}{n}
+ \SetMathAlphabet{\mathrm}{bold}{EU1}{\eu@mathrm}{bx}{n}
+ \DeclareMathAlphabet{\mathit}{EU1}{\eu@mathrm}{m}{it}
+ \DeclareMathAlphabet{\mathbf}{EU1}{\eu@mathrm}{bx}{n}
+ \SetMathAlphabet{\mathit}{bold}{EU1}{\eu@mathrm}{bx}{it}
+ \DeclareSymbolFont{Operators:m:n}{EU1}{\eu@mathrm}{m}{n}
+ \def\operator@font{\expandafter\mathgroup\csname symOperators:m:n\endcsname}}
\ernewcommand\setmathcal[2][]{
\zf@fontspec{#1}{#2}
\let\eu@mathcal\zf@family
- \let\eu@ifset@mathcal\@firstofone
- \providecommand\eu@mathcal@series{m}
- \providecommand\eu@mathcal@shape{n}}
+ \DeclareMathAlphabet{\mathcal}{EU1}{\eu@mathcal}{m}{n}}
\ernewcommand\setmathsf[2][]{
\zf@fontspec{#1}{#2}
\let\eu@mathsf\zf@family
- \let\eu@ifset@mathsf\@firstofone}
+ \DeclareMathAlphabet{\mathsf}{EU1}{\eu@mathsf}{m}{n}
+ \SetMathAlphabet{\mathsf}{bold}{EU1}{\eu@mathsf}{bx}{n}}
\ernewcommand\setmathtt[2][]{
\zf@fontspec{#1}{#2}
\let\eu@mathtt\zf@family
- \let\eu@ifset@mathtt\@firstofone}
+ \DeclareMathAlphabet{\mathtt}{EU1}{\eu@mathtt}{m}{n}}
\ernewcommand\setmathfrak[2][]{
\zf@fontspec{#1}{#2}
\let\eu@mathfrak\zf@family
- \let\eu@ifset@mathfrak\@firstofone
- \providecommand\eu@mathfrak@series{m}}
+ \DeclareMathAlphabet{\mathfrak}{EU1}{\eu@mathfrak}{m}{n}}
\ernewcommand\setmathbb[2][]{
\zf@fontspec{#1}{#2}
\let\eu@mathbb\zf@family
- \let\eu@ifset@mathbb\@firstofone
- \providecommand\eu@mathbb@series{m}}
-\newcommand\setprimaryfont[2][]{
- \setmainfont[#1]{#2}
- \setmathsfont[Set=Latin,#1]{#2}
- \setmathrm[#1]{#2}}
-\newcommand\setsansfonts[2][]{
- \setsansfont[#1]{#2}
- \setmathsf[#1]{#2}}
-\newcommand\setmonofonts[2][]{
- \setmonofont[#1]{#2}
- \setmathtt[#1]{#2}}
-\newcommand\eu@setmathsfont[1][Set=Special]{
- \eu@setkeys{Scope}{#1}
- \ifcase\eu@ScopeSet@@value
- \let\eu@ScopeSet@Value\eu@ScopeSet@Special
- \or
- \let\eu@ScopeSet@Value\eu@ScopeSet@Latin
- \or
- \let\eu@ScopeSet@Value\eu@ScopeSet@Greek
- \or
- \let\eu@ScopeSet@Value\eu@ScopeSet@Symbols
- \fi
- \eu@ScopeSet@Value}
-\providecommand\eu@ScopeSet@Special[1]{\relax}
-\newcommand\eu@ScopeSet@Latin[1]{
- \eu@setkeys[Uppercase=Italic,Lowercase=Italic,Digits=Regular]{Latin}{\XKV@rm}
- \eu@fontspec{\XKV@rm}{#1}
- \ifcase\eu@LatinUppercase@@value
- \ernewcommand\eu@LatinUppercase@symfont{Lmn}
- \let\eu@Latinmathsfont\zf@family
- \@eu@LatinUppercase@true
- \def\operator@font{\mathgroup\symLmn}
- \or
- \ernewcommand\eu@LatinUppercase@symfont{Lmit}
- \let\eu@Latinmathsfont\zf@family
- \@eu@LatinUppercase@true
- \or\fi
- \ifcase\eu@LatinLowercase@@value
- \ernewcommand\eu@LatinLowercase@symfont{Lmn}
- \let\eu@Latinmathsfont\zf@family
- \@eu@LatinLowercase@true
- \or
- \ernewcommand\eu@LatinLowercase@symfont{Lmit}
- \let\eu@Latinmathsfont\zf@family
- \@eu@LatinLowercase@true
- \or\fi
- \ifcase\eu@LatinDigits@@value
- \ernewcommand\eu@LatinDigits@symfont{Lmn}
- \let\eu@Latinmathsfont\zf@family
- \@eu@LatinDigits@true
- \or
- \ernewcommand\eu@LatinDigits@symfont{Lmit}
- \let\eu@Latinmathsfont\zf@family
- \@eu@LatinDigits@true
- \or\fi}
-\newcommand\eu@ScopeSet@Greek[1]{
- \eu@setkeys[Uppercase=Regular,Lowercase=Italic,Digits=Plain]{Greek}{\XKV@rm}
- \eu@fontspec{\XKV@rm}{#1}
- \ifcase\eu@GreekUppercase@@value
- \ernewcommand\eu@GreekUppercase@symfont{Gmn}
- \let\eu@Greekmathsfont\zf@family
- \@eu@GreekUppercase@true
- \or
- \ernewcommand\eu@GreekUppercase@symfont{Gmit}
- \let\eu@Greekmathsfont\zf@family
- \@eu@GreekUppercase@true
- \or\fi
- \ifcase\eu@GreekLowercase@@value
- \ernewcommand\eu@GreekLowercase@symfont{Gmn}
- \let\eu@Greekmathsfont\zf@family
- \@eu@GreekLowercase@true
- \or
- \ernewcommand\eu@GreekLowercase@symfont{Gmit}
- \let\eu@Greekmathsfont\zf@family
- \@eu@GreekLowercase@true
- \or\fi
- \ifcase\eu@GreekDigits@@value
- \ernewcommand\eu@GreekDigits@symfont{Gmn}
- \let\eu@Greekmathsfont\zf@family
- \@eu@GreekDigits@true
- \or
- \ernewcommand\eu@GreekDigits@symfont{Gmit}
- \let\eu@Greekmathsfont\zf@family
- \@eu@GreekDigits@true
- \or\fi}
-\newcommand\eu@ScopeSet@Symbols[1]{
- \@eu@Symbols@true
- \zf@fontspec{}{#1}
- \let\eu@Symbolsmathsfont\zf@family
- \def\eu@Symbls@symfont{Smn}}
-\renewcommand\eu@ScopeSet@Symbols[1]{
- \@eu@Symbols@false}
-\newcommand\eu@VarForms[1]{
- \fontfamily\eu@Greekmathsfont\selectfont
- \eu@setkeys{VarForms}{#1}
- \ifeu@VarForms@beta
- \eu@DeclareMathSymbol{β}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D0}[\beta]
- \eu@DeclareMathSymbol{ϐ}{\mathalpha}{\eu@GreekLowercase@symfont}{`β}[\varbeta]
- \fi
- \ifeu@VarForms@epsilon
- \eu@DeclareMathSymbol{ϵ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ε}[\varepsilon]
- \eu@DeclareMathSymbol{ε}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F5}[\epsilon]
- \fi
- \ifeu@VarForms@theta
- \eu@DeclareMathSymbol{ϑ}{\mathalpha}{\eu@GreekLowercase@symfont}{`θ}[\vartheta]
- \eu@DeclareMathSymbol{θ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D1}[\theta]
- \fi
- \ifeu@VarForms@kappa
- \eu@DeclareMathSymbol{ϰ}{\mathalpha}{\eu@GreekLowercase@symfont}{`κ}[\varkappa]
- \eu@DeclareMathSymbol{κ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F0}[\kappa]
- \fi
- \ifeu@VarForms@pi
- \eu@DeclareMathSymbol{ϖ}{\mathalpha}{\eu@GreekLowercase@symfont}{`π}[\varpi]
- \eu@DeclareMathSymbol{π}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D6}[\pi]
- \fi
- \ifeu@VarForms@rho
- \eu@DeclareMathSymbol{ϱ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ρ}[\varrho]
- \eu@DeclareMathSymbol{ρ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F1}[\rho]
- \fi
- \ifeu@VarForms@phi
- \eu@DeclareMathSymbol{ϕ}{\mathalpha}{\eu@GreekLowercase@symfont}{`φ}[\varphi]
- \eu@DeclareMathSymbol{φ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D5}[\phi]
- \fi
- \ifeu@VarForms@Theta
- \eu@DeclareMathSymbol{ϴ}{\mathalpha}{\eu@GreekLowercase@symfont}{`Θ}[\varTheta]
- \eu@DeclareMathSymbol{Θ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F4}[\Theta]
- \fi}
-\define@choicekey[eu]{Scope}{Set}
- [\eu@ScopeSet@value\eu@ScopeSet@@value]
- {Special,Latin,Greek,Symbols}[Special]{\relax}
-\define@choicekey[eu]{Latin}{Uppercase}
- [\eu@LatinUppercase@value\eu@LatinUppercase@@value]
- {Regular,Italic,Plain}[Italic]{\relax}
-\define@choicekey[eu]{Latin}{Lowercase}
- [\eu@LatinLowercase@value\eu@LatinLowercase@@value]
- {Regular,Italic,Plain}[Italic]{\relax}
-\define@choicekey[eu]{Latin}{Digits}
- [\eu@LatinDigits@value\eu@LatinDigits@@value]
- {Regular,Italic,Plain}[Regular]{\relax}
-\define@choicekey[eu]{Greek}{Uppercase}
- [\eu@GreekUppercase@value\eu@GreekUppercase@@value]
- {Regular,Italic,Plain}[Regular]{\relax}
-\define@choicekey[eu]{Greek}{Lowercase}
- [\eu@GreekLowercase@value\eu@GreekLowercase@@value]
- {Regular,Italic,Plain}[Italic]{\relax}
-\define@choicekey[eu]{Greek}{Digits}
- [\eu@GreekDigits@value\eu@GreekDigits@@value]
- {Regular,Italic,Plain}[Regular]{\relax}
-\define@boolkey[eu]{VarForms}{beta}[True]{\relax}
-\define@boolkey[eu]{VarForms}{epsilon}[True]{\relax}
-\define@boolkey[eu]{VarForms}{theta}[True]{\relax}
-\define@boolkey[eu]{VarForms}{kappa}[True]{\relax}
-\define@boolkey[eu]{VarForms}{pi}[True]{\relax}
-\define@boolkey[eu]{VarForms}{rho}[True]{\relax}
-\define@boolkey[eu]{VarForms}{phi}[True]{\relax}
-\define@boolkey[eu]{VarForms}{Theta}[True]{\relax}
-\newcommand\eu@XeTeXDeclareMathSymbol[4]{
- \expandafter\XeTeXmathcode`#1\mathchar@type#2\csname sym#3\endcsname#4}
-\newcommand\eu@DeclareMathSymbol[4]{
- \ifnum\XeTeXcharglyph#4>0
- \eu@XeTeXDeclareMathSymbol#1#2#3#4
- \fi
- \let\eu@character#1
- \def\eu@@character{#4}
- \futurelet\@tempa\eu@@DeclareMathSymbol}
-\def\eu@@DeclareMathSymbol{
- \ifx\@tempa[
- \let\eu@@@DeclareMathSymbol\eu@DeclareMathSymbol@option
- \else
- \let\eu@@@DeclareMathSymbol\relax
- \fi
- \eu@@@DeclareMathSymbol}
-\def\eu@DeclareMathSymbol@option[#1]{%
- \ifnum\XeTeXcharglyph\eu@@character>0
- \let#1\eu@character
- \fi}
-\let\LaTeXe@DeclareMathSymbol\DeclareMathSymbol
-\newcommand\eu@LaTeXe@DeclareMathSymbol[4]{
- \ifnum\XeTeXcharglyph#4>0
- \LaTeXe@DeclareMathSymbol{#1}{#2}{#3}{#4}
- \fi}
-\let\DeclareMathSymbol\eu@LaTeXe@DeclareMathSymbol
-
-\newcommand\eu@DeclareFonts{
- \let\eu@if@Latin\@gobble
- \if@eu@LatinUppercase@\let\eu@if@Latin\@firstofone\fi
- \if@eu@LatinLowercase@\let\eu@if@Latin\@firstofone\fi
- \if@eu@LatinDigits@\let\eu@if@Latin\@firstofone\fi
- \let\eu@if@Greek\@gobble
- \if@eu@GreekUppercase@\let\eu@if@Greek\@firstofone\fi
- \if@eu@GreekLowercase@\let\eu@if@Greek\@firstofone\fi
- \if@eu@GreekDigits@\let\eu@if@Greek\@firstofone\fi
- \eu@if@Latin{
- \DeclareSymbolFont{Lmn}{EU1}{\eu@Latinmathsfont}{m}{n}
- \DeclareSymbolFont{Lmit}{EU1}{\eu@Latinmathsfont}{m}{it}
- }
- \eu@if@Greek{
- \DeclareSymbolFont{Gmn}{EU1}{\eu@Greekmathsfont}{m}{n}
- \DeclareSymbolFont{Gmit}{EU1}{\eu@Greekmathsfont}{m}{it}}
- \if@eu@Symbols@
- \DeclareSymbolFont{Smn}{EU1}{\eu@Symbolsmathsfont}{m}{n}
- \fi}
-\newcommand\eu@DeclareDigits{
- \let\eu@if@Digits\@gobble
- \if@eu@GreekDigits@
- \let\eu@if@Digits\@firstofone
- \let\eu@Digits@symfont\eu@GreekDigits@symfont
- \let\eu@Digitsmathsfont\eu@Greekmathsfont
- \else
- \if@eu@LatinDigits@
- \let\eu@if@Digits\@firstofone
- \let\eu@Digits@symfont\eu@LatinDigits@symfont
- \let\eu@Digitsmathsfont\eu@Latinmathsfont
- \fi
- \fi
- \eu@if@Digits{
- \fontfamily\eu@Digitsmathsfont\selectfont
- \DeclareMathSymbol{0}{\mathord}{\eu@Digits@symfont}{`0}
- \DeclareMathSymbol{1}{\mathord}{\eu@Digits@symfont}{`1}
- \DeclareMathSymbol{2}{\mathord}{\eu@Digits@symfont}{`2}
- \DeclareMathSymbol{3}{\mathord}{\eu@Digits@symfont}{`3}
- \DeclareMathSymbol{4}{\mathord}{\eu@Digits@symfont}{`4}
- \DeclareMathSymbol{5}{\mathord}{\eu@Digits@symfont}{`5}
- \DeclareMathSymbol{6}{\mathord}{\eu@Digits@symfont}{`6}
- \DeclareMathSymbol{7}{\mathord}{\eu@Digits@symfont}{`7}
- \DeclareMathSymbol{8}{\mathord}{\eu@Digits@symfont}{`8}
- \DeclareMathSymbol{9}{\mathord}{\eu@Digits@symfont}{`9}}}
-\newcommand\eu@DeclareLatinUppercase{
- \if@eu@LatinUppercase@
- \fontfamily\eu@Latinmathsfont\selectfont
- \DeclareMathSymbol{A}{\mathalpha}{\eu@LatinUppercase@symfont}{`A}
- \DeclareMathSymbol{B}{\mathalpha}{\eu@LatinUppercase@symfont}{`B}
- \DeclareMathSymbol{C}{\mathalpha}{\eu@LatinUppercase@symfont}{`C}
- \DeclareMathSymbol{D}{\mathalpha}{\eu@LatinUppercase@symfont}{`D}
- \DeclareMathSymbol{E}{\mathalpha}{\eu@LatinUppercase@symfont}{`E}
- \DeclareMathSymbol{F}{\mathalpha}{\eu@LatinUppercase@symfont}{`F}
- \DeclareMathSymbol{G}{\mathalpha}{\eu@LatinUppercase@symfont}{`G}
- \DeclareMathSymbol{H}{\mathalpha}{\eu@LatinUppercase@symfont}{`H}
- \DeclareMathSymbol{I}{\mathalpha}{\eu@LatinUppercase@symfont}{`I}
- \DeclareMathSymbol{J}{\mathalpha}{\eu@LatinUppercase@symfont}{`J}
- \DeclareMathSymbol{K}{\mathalpha}{\eu@LatinUppercase@symfont}{`K}
- \DeclareMathSymbol{L}{\mathalpha}{\eu@LatinUppercase@symfont}{`L}
- \DeclareMathSymbol{M}{\mathalpha}{\eu@LatinUppercase@symfont}{`M}
- \DeclareMathSymbol{N}{\mathalpha}{\eu@LatinUppercase@symfont}{`N}
- \DeclareMathSymbol{O}{\mathalpha}{\eu@LatinUppercase@symfont}{`O}
- \DeclareMathSymbol{P}{\mathalpha}{\eu@LatinUppercase@symfont}{`P}
- \DeclareMathSymbol{Q}{\mathalpha}{\eu@LatinUppercase@symfont}{`Q}
- \DeclareMathSymbol{R}{\mathalpha}{\eu@LatinUppercase@symfont}{`R}
- \DeclareMathSymbol{S}{\mathalpha}{\eu@LatinUppercase@symfont}{`S}
- \DeclareMathSymbol{T}{\mathalpha}{\eu@LatinUppercase@symfont}{`T}
- \DeclareMathSymbol{U}{\mathalpha}{\eu@LatinUppercase@symfont}{`U}
- \DeclareMathSymbol{V}{\mathalpha}{\eu@LatinUppercase@symfont}{`V}
- \DeclareMathSymbol{W}{\mathalpha}{\eu@LatinUppercase@symfont}{`W}
- \DeclareMathSymbol{X}{\mathalpha}{\eu@LatinUppercase@symfont}{`X}
- \DeclareMathSymbol{Y}{\mathalpha}{\eu@LatinUppercase@symfont}{`Y}
- \DeclareMathSymbol{Z}{\mathalpha}{\eu@LatinUppercase@symfont}{`Z}
- \fi}
-\newcommand\eu@DeclareLatinLowercase{
- \if@eu@LatinLowercase@
- \fontfamily\eu@Latinmathsfont\selectfont
- \DeclareMathSymbol{a}{\mathalpha}{\eu@LatinLowercase@symfont}{`a}
- \DeclareMathSymbol{b}{\mathalpha}{\eu@LatinLowercase@symfont}{`b}
- \DeclareMathSymbol{c}{\mathalpha}{\eu@LatinLowercase@symfont}{`c}
- \DeclareMathSymbol{d}{\mathalpha}{\eu@LatinLowercase@symfont}{`d}
- \DeclareMathSymbol{e}{\mathalpha}{\eu@LatinLowercase@symfont}{`e}
- \DeclareMathSymbol{f}{\mathalpha}{\eu@LatinLowercase@symfont}{`f}
- \DeclareMathSymbol{g}{\mathalpha}{\eu@LatinLowercase@symfont}{`g}
- \DeclareMathSymbol{h}{\mathalpha}{\eu@LatinLowercase@symfont}{`h}
- \DeclareMathSymbol{i}{\mathalpha}{\eu@LatinLowercase@symfont}{`i}
- \DeclareMathSymbol{j}{\mathalpha}{\eu@LatinLowercase@symfont}{`j}
- \DeclareMathSymbol{k}{\mathalpha}{\eu@LatinLowercase@symfont}{`k}
- \DeclareMathSymbol{l}{\mathalpha}{\eu@LatinLowercase@symfont}{`l}
- \DeclareMathSymbol{m}{\mathalpha}{\eu@LatinLowercase@symfont}{`m}
- \DeclareMathSymbol{n}{\mathalpha}{\eu@LatinLowercase@symfont}{`n}
- \DeclareMathSymbol{o}{\mathalpha}{\eu@LatinLowercase@symfont}{`o}
- \DeclareMathSymbol{p}{\mathalpha}{\eu@LatinLowercase@symfont}{`p}
- \DeclareMathSymbol{q}{\mathalpha}{\eu@LatinLowercase@symfont}{`q}
- \DeclareMathSymbol{r}{\mathalpha}{\eu@LatinLowercase@symfont}{`r}
- \DeclareMathSymbol{s}{\mathalpha}{\eu@LatinLowercase@symfont}{`s}
- \DeclareMathSymbol{t}{\mathalpha}{\eu@LatinLowercase@symfont}{`t}
- \DeclareMathSymbol{u}{\mathalpha}{\eu@LatinLowercase@symfont}{`u}
- \DeclareMathSymbol{v}{\mathalpha}{\eu@LatinLowercase@symfont}{`v}
- \DeclareMathSymbol{w}{\mathalpha}{\eu@LatinLowercase@symfont}{`w}
- \DeclareMathSymbol{x}{\mathalpha}{\eu@LatinLowercase@symfont}{`x}
- \DeclareMathSymbol{y}{\mathalpha}{\eu@LatinLowercase@symfont}{`y}
- \DeclareMathSymbol{z}{\mathalpha}{\eu@LatinLowercase@symfont}{`z}
- \fi}
-\newcommand\eu@DeclareGreekUppercase{
- \if@eu@GreekUppercase@
- \fontfamily\eu@Greekmathsfont\selectfont
- \eu@DeclareMathSymbol{Α}{\mathalpha}{\eu@GreekUppercase@symfont}{`Α}[\Alpha]
- \eu@DeclareMathSymbol{Β}{\mathalpha}{\eu@GreekUppercase@symfont}{`Β}[\Beta]
- \eu@DeclareMathSymbol{Γ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Γ}[\Gamma]
- \eu@DeclareMathSymbol{Δ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Δ}[\Delta]
- \eu@DeclareMathSymbol{Ε}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ε}[\Epsilon]
- \eu@DeclareMathSymbol{Ζ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ζ}[\Zeta]
- \eu@DeclareMathSymbol{Η}{\mathalpha}{\eu@GreekUppercase@symfont}{`Η}[\Eta]
- \eu@DeclareMathSymbol{Θ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Θ}[\Theta]
- \eu@DeclareMathSymbol{Ι}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ι}[\Iota]
- \eu@DeclareMathSymbol{Κ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Κ}[\Kappa]
- \eu@DeclareMathSymbol{Λ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Λ}[\Lambda]
- \eu@DeclareMathSymbol{Μ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Μ}[\Mu]
- \eu@DeclareMathSymbol{Ν}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ν}[\Nu]
- \eu@DeclareMathSymbol{Ξ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ξ}[\Xi]
- \eu@DeclareMathSymbol{Ο}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ο}[\Omicron]
- \eu@DeclareMathSymbol{Π}{\mathalpha}{\eu@GreekUppercase@symfont}{`Π}[\Pi]
- \eu@DeclareMathSymbol{Ρ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ρ}[\Rho]
- \eu@DeclareMathSymbol{Σ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Σ}[\Sigma]
- \eu@DeclareMathSymbol{Τ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Τ}[\Tau]
- \eu@DeclareMathSymbol{Υ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Υ}[\Upsilon]
- \eu@DeclareMathSymbol{Φ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Φ}[\Phi]
- \eu@DeclareMathSymbol{Χ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Χ}[\Chi]
- \eu@DeclareMathSymbol{Ψ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ψ}[\Psi]
- \eu@DeclareMathSymbol{Ω}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ω}[\Omega]
- \eu@DeclareMathSymbol{ϴ}{\mathalpha}{\eu@GreekUppercase@symfont}{"3F4}[\varTheta]
- \eu@DeclareMathSymbol{Ϝ}{\mathalpha}{\eu@GreekUppercase@symfont}{"3DC}[\Digamma]
- \fi}
-\newcommand\eu@DeclareGreekLowercase{
- \if@eu@GreekLowercase@
- \fontfamily\eu@Greekmathsfont\selectfont
- \eu@DeclareMathSymbol{α}{\mathalpha}{\eu@GreekLowercase@symfont}{`α}[\alpha]
- \eu@DeclareMathSymbol{β}{\mathalpha}{\eu@GreekLowercase@symfont}{`β}[\beta]
- \eu@DeclareMathSymbol{γ}{\mathalpha}{\eu@GreekLowercase@symfont}{`γ}[\gamma]
- \eu@DeclareMathSymbol{δ}{\mathalpha}{\eu@GreekLowercase@symfont}{`δ}[\delta]
- \eu@DeclareMathSymbol{ε}{\mathalpha}{\eu@GreekLowercase@symfont}{`ε}[\epsilon]
- \eu@DeclareMathSymbol{ζ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ζ}[\zeta]
- \eu@DeclareMathSymbol{η}{\mathalpha}{\eu@GreekLowercase@symfont}{`η}[\eta]
- \eu@DeclareMathSymbol{θ}{\mathalpha}{\eu@GreekLowercase@symfont}{`θ}[\theta]
- \eu@DeclareMathSymbol{ι}{\mathalpha}{\eu@GreekLowercase@symfont}{`ι}[\iota]
- \eu@DeclareMathSymbol{κ}{\mathalpha}{\eu@GreekLowercase@symfont}{`κ}[\kappa]
- \eu@DeclareMathSymbol{λ}{\mathalpha}{\eu@GreekLowercase@symfont}{`λ}[\lambda]
- \eu@DeclareMathSymbol{μ}{\mathalpha}{\eu@GreekLowercase@symfont}{`μ}[\mu]
- \eu@DeclareMathSymbol{ν}{\mathalpha}{\eu@GreekLowercase@symfont}{`ν}[\nu]
- \eu@DeclareMathSymbol{ξ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ξ}[\xi]
- \eu@DeclareMathSymbol{ο}{\mathalpha}{\eu@GreekLowercase@symfont}{`ο}[\omicron]
- \eu@DeclareMathSymbol{π}{\mathalpha}{\eu@GreekLowercase@symfont}{`π}[\pi]
- \eu@DeclareMathSymbol{ρ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ρ}[\rho]
- \eu@DeclareMathSymbol{σ}{\mathalpha}{\eu@GreekLowercase@symfont}{`σ}[\sigma]
- \eu@DeclareMathSymbol{τ}{\mathalpha}{\eu@GreekLowercase@symfont}{`τ}[\tau]
- \eu@DeclareMathSymbol{υ}{\mathalpha}{\eu@GreekLowercase@symfont}{`υ}[\upsilon]
- \eu@DeclareMathSymbol{φ}{\mathalpha}{\eu@GreekLowercase@symfont}{`φ}[\phi]
- \eu@DeclareMathSymbol{χ}{\mathalpha}{\eu@GreekLowercase@symfont}{`χ}[\chi]
- \eu@DeclareMathSymbol{ψ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ψ}[\psi]
- \eu@DeclareMathSymbol{ω}{\mathalpha}{\eu@GreekLowercase@symfont}{`ω}[\omega]
- \eu@DeclareMathSymbol{ς}{\mathalpha}{\eu@GreekLowercase@symfont}{`ς}[\varsigma]
- \eu@DeclareMathSymbol{ϐ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D0}[\varbeta]
- \eu@DeclareMathSymbol{ϵ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F5}[\varepsilon]
- \eu@DeclareMathSymbol{ϑ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D1}[\vartheta]
- \eu@DeclareMathSymbol{ϰ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F0}[\varkappa]
- \eu@DeclareMathSymbol{ϖ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D6}[\varpi]
- \eu@DeclareMathSymbol{ϱ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F1}[\varrho]
- \eu@DeclareMathSymbol{ϕ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D5}[\varphi]
- \eu@DeclareMathSymbol{ϝ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3DD}[\digamma]
- \fi}
-\newcommand\eu@DeclareSymbols{
- \if@eu@Symbols@
- \fontfamily\eu@Symbolsmathsfont\selectfont
- \eu@DeclareMathSymbol{!}{\mathclose}{\eu@Symbols@symfont}{`!}[\exclam]
- \eu@DeclareMathSymbol{+}{\mathbin}{\eu@Symbols@symfont}{`+}[\plus]
- \eu@DeclareMathSymbol{,}{\mathpunct}{\eu@Symbols@symfont}{`,}
- \eu@DeclareMathSymbol{.}{\mathord}{\eu@Symbols@symfont}{`.}
- \XeTeXmathchardef\ldotp=6\symSmn`.
- \eu@DeclareMathSymbol{:}{\mathrel}{\eu@Symbols@symfont}{`:}
- \XeTeXmathchardef\colon=6\symSmn`:
- \eu@DeclareMathSymbol{;}{\mathpunct}{\eu@Symbols@symfont}{`;}[\semicolon]
- \eu@DeclareMathSymbol{<}{\mathrel}{\eu@Symbols@symfont}{`<}[\less]
- \DeclareMathSymbol{=}{\mathrel}{\eu@Symbols@symfont}{`=}
- \let\eq==
- \eu@DeclareMathSymbol{>}{\mathrel}{\eu@Symbols@symfont}{`>}[\greater]
- \eu@DeclareMathSymbol{?}{\mathclose}{\eu@Symbols@symfont}{`?}
- \eu@DeclareMathSymbol{¬}{\mathord}{\eu@Symbols@symfont}{`¬}[\neg]
- \let\lnot\neg
- \eu@DeclareMathSymbol{°}{\mathord}{\eu@Symbols@symfont}{`°}[\degree]
- \eu@DeclareMathSymbol{±}{\mathbin}{\eu@Symbols@symfont}{`±}[\pm]
- \eu@DeclareMathSymbol{µ}{\mathord}{\eu@Symbols@symfont}{`µ}[\micro]
- \eu@DeclareMathSymbol{×}{\mathbin}{\eu@Symbols@symfont}{`×}[\times]
- \eu@DeclareMathSymbol{÷}{\mathbin}{\eu@Symbols@symfont}{`÷}[\div]
- \eu@DeclareMathSymbol{∀}{\mathord}{\eu@Symbols@symfont}{`∀}[\forall]
- \eu@DeclareMathSymbol{∂}{\mathord}{\eu@Symbols@symfont}{`∂}[\partial]
- \eu@DeclareMathSymbol{∃}{\mathord}{\eu@Symbols@symfont}{`∃}[\exists]
- \eu@DeclareMathSymbol{∅}{\mathord}{\eu@Symbols@symfont}{`∅}[\varnothing]
- \eu@DeclareMathSymbol{∆}{\mathord}{\eu@Symbols@symfont}{`∆}[\increment]
- \eu@DeclareMathSymbol{∇}{\mathord}{\eu@Symbols@symfont}{`∇}[\nabla]
- \eu@DeclareMathSymbol{∈}{\mathrel}{\eu@Symbols@symfont}{`∈}[\in]
- \eu@DeclareMathSymbol{∉}{\mathrel}{\eu@Symbols@symfont}{`∉}[\notin]
- \eu@DeclareMathSymbol{∋}{\mathrel}{\eu@Symbols@symfont}{`∋}[\ni]
- \let\owns\ni
- \eu@DeclareMathSymbol{-}{\mathbin}{\eu@Symbols@symfont}{`−}
- \eu@DeclareMathSymbol{−}{\mathbin}{\eu@Symbols@symfont}{`−}[\minus]
- \eu@DeclareMathSymbol{∕}{\mathbin}{\eu@Symbols@symfont}{`∕}[\slash]
- \eu@DeclareMathSymbol{*}{\mathbin}{\eu@Symbols@symfont}{`∗}
- \eu@DeclareMathSymbol{∗}{\mathbin}{\eu@Symbols@symfont}{`∗}[\ast]
- \eu@DeclareMathSymbol{∙}{\mathbin}{\eu@Symbols@symfont}{`∙}[\vysmblkcircle]
- \let\bullet\vysmblkcircle
- \eu@DeclareMathSymbol{∝}{\mathrel}{\eu@Symbols@symfont}{`∝}[\propto]
- \eu@DeclareMathSymbol{∞}{\mathord}{\eu@Symbols@symfont}{`∞}[\infty]
- \eu@DeclareMathSymbol{∟}{\mathord}{\eu@Symbols@symfont}{`∟}[\rightangle]
- \eu@DeclareMathSymbol{∠}{\mathord}{\eu@Symbols@symfont}{`∠}[\angle]
- \eu@DeclareMathSymbol{∧}{\mathbin}{\eu@Symbols@symfont}{`∧}[\wedge]
- \let\land\wedge
- \eu@DeclareMathSymbol{∨}{\mathbin}{\eu@Symbols@symfont}{`∨}[\vee]
- \let\lor\vee
- \eu@DeclareMathSymbol{∩}{\mathbin}{\eu@Symbols@symfont}{`∩}[\cap]
- \eu@DeclareMathSymbol{∪}{\mathbin}{\eu@Symbols@symfont}{`∪}[\cup]
- \eu@DeclareMathSymbol{∴}{\mathord}{\eu@Symbols@symfont}{`∴}[\therefore]
- \eu@DeclareMathSymbol{∼}{\mathrel}{\eu@Symbols@symfont}{`∼}[\sim]
- \eu@DeclareMathSymbol{≅}{\mathrel}{\eu@Symbols@symfont}{`≅}[\cong]
- \eu@DeclareMathSymbol{≈}{\mathrel}{\eu@Symbols@symfont}{`≈}[\approx]
- \eu@DeclareMathSymbol{≠}{\mathrel}{\eu@Symbols@symfont}{`≠}[\neq]
- \let\ne\neq
- \eu@DeclareMathSymbol{≡}{\mathrel}{\eu@Symbols@symfont}{`≡}[\equiv]
- \eu@DeclareMathSymbol{≤}{\mathrel}{\eu@Symbols@symfont}{`≤}[\leq]
- \let\le\leq
- \eu@DeclareMathSymbol{≥}{\mathrel}{\eu@Symbols@symfont}{`≥}[\geq]
- \let\ge\geq
- \eu@DeclareMathSymbol{⊂}{\mathrel}{\eu@Symbols@symfont}{`⊂}[\subset]
- \eu@DeclareMathSymbol{⊃}{\mathrel}{\eu@Symbols@symfont}{`⊃}[\supset]
- \eu@DeclareMathSymbol{⊄}{\mathrel}{\eu@Symbols@symfont}{`⊄}[\nsubset]
- \let\notsubset\nsubset
- \eu@DeclareMathSymbol{⊆}{\mathrel}{\eu@Symbols@symfont}{`⊆}[\subseteq]
- \eu@DeclareMathSymbol{⊇}{\mathrel}{\eu@Symbols@symfont}{`⊇}[\supseteq]
- \eu@DeclareMathSymbol{⊕}{\mathbin}{\eu@Symbols@symfont}{`⊕}[\oplus]
- \eu@DeclareMathSymbol{⊗}{\mathbin}{\eu@Symbols@symfont}{`⊗}[\otimes]
- \eu@DeclareMathSymbol{⊥}{\mathord}{\eu@Symbols@symfont}{`⊥}[\bot]
- \let\perp\bot
- \eu@DeclareMathSymbol{⋅}{\mathbin}{\eu@Symbols@symfont}{`⋅}[\cdot]
- \XeTeXmathchardef\cdotp=6\symSmn`⋅
- \fi}
-\AtBeginDocument{
- \if@eu@amsmathloaded@\else
- \eu@isloaded[\PackageError{mathspec}{Package amsmath must be loaded before mathspec}{}]{amsmath}
- \fi
- \eu@DeclareFonts
- \eu@ifnot@plaindigits{\eu@DeclareDigits}
- \eu@DeclareLatinUppercase
- \eu@DeclareLatinLowercase
- \eu@DeclareGreekUppercase
- \eu@DeclareGreekLowercase
- \eu@DeclareSymbols
- \eu@if@varforms{\eu@VarForms}
- \eu@ifset@mathrm{
- \DeclareMathAlphabet{\mathrm}{EU1}{\eu@mathrm}{m}{n}
- \SetMathAlphabet{\mathrm}{bold}{EU1}{\eu@mathrm}{bx}{n}
- \DeclareMathAlphabet{\mathit}{EU1}{\eu@mathrm}{m}{it}
- \DeclareMathAlphabet{\mathbf}{EU1}{\eu@mathrm}{bx}{\eu@mathbf@shape}
- \SetMathAlphabet{\mathit}{bold}{EU1}{\eu@mathrm}{bx}{it}
- \@ifundefined{symLmn}{\relax}{\def\operator@font{\mathgroup\symLmn}}}
- \eu@ifset@mathcal{
- \DeclareMathAlphabet{\mathcal}{EU1}{\eu@mathcal}{\eu@mathcal@series}{\eu@mathcal@shape}}
- \eu@ifset@mathsf{
- \DeclareMathAlphabet{\mathsf}{EU1}{\eu@mathsf}{m}{n}
- \SetMathAlphabet{\mathsf}{bold}{EU1}{\eu@mathsf}{bx}{n}}
- \eu@ifset@mathtt{
- \DeclareMathAlphabet{\mathtt}{EU1}{\eu@mathtt}{m}{n}}
- \eu@ifset@mathfrak{
- \DeclareMathAlphabet{\mathfrak}{EU1}{\eu@mathfrak}{\eu@mathfrak@series}{n}}
- \eu@ifset@mathbb{
- \DeclareMathAlphabet{\mathbb}{EU1}{\eu@mathbb}{\eu@mathbb@series}{n}}
- \fontfamily\rmdefault\selectfont
- \let\DeclareMathSymbol\LaTeXe@DeclareMathSymbol}
+ \DeclareMathAlphabet{\mathbb}{EU1}{\eu@mathbb}{m}{n}}
+
+%% If amsmath is loaded, it must be loaded before mathspec. Checking for its
+%% existence \AtBeginDocument is too late because the damage is already done
+%% (It attempted to define \varTheta when mathspec already defined it). Or
+%% should I delay the definition of \varTheta until \AtBeginDocument?
+\let\original@RequirePackage\RequirePackage
+\renewcommand\RequirePackage[2][]{
+ \ifstrequal{#2}{amsmath}
+ {\PackageError{mathspec}
+ {`amsmath' must be loaded earlier than `mathspec'}
+ {Edit the document so that `amsmath' is required earlier than `mathspec'.}}
+ {\relax}
+ \original@RequirePackage[#1]{#2}}
+\@onlypreamble\RequirePackage
+\let\usepackage\RequirePackage
+\@onlypreamble\usepackage
+
+%% Any font changes that mathspec has done are reset by LaTeX 2ε at
+%% \begin{document} using \process@table.
+
\endinput
+
+%% © Andrew Gilbert Moschou 2009
%%
-%% End of file `mathspec.sty'.
+%% This work 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.
+%% The latest version of this license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all recent distributions of LaTeX.
+%%
+%% This work has the LPPL maintenance status ‘maintained’.
+%%
+%% The Current Maintainer of this work is Andrew Gilbert Moschou.
+%%
+%% This work consists of the files mathspec.sty and mathsepc4.tex.
+