summaryrefslogtreecommitdiff
path: root/fonts/euler-math/euler-math.sty
blob: cf678d50c0fb5bad9c0c74fc6f0b78dc96972092 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
\NeedsTeXFormat{LaTeX2e}[2018/01/01]
\def\fileversion{0.30}
\def\filedate{2022-11-06}
\ProvidesPackage{euler-math}[\filedate\space\fileversion]

% Ensure luatex or xetex engine
\RequirePackage{iftex}[2019/10/24]
\RequireTUTeX
\RequirePackage[math-style=upright]{unicode-math}

\newopentypefeature{Style}{smaller}{+ss05}
\newopentypefeature{Style}{subsetneq}{+ss06}

% Options: forward them to \setmathfont.
\RequirePackage{xkeyval}
\newtoks\NEUtoks
\newcommand*{\Store@KV@Option}[2]{%
  \NEUtoks=\expandafter{\the\NEUtoks #1={#2},}}

\DeclareOptionX{CharacterVariant}{\Store@KV@Option{CharacterVariant}{#1}}
\DeclareOptionX{StylisticSet}{\Store@KV@Option{StylisticSet}{#1}}
\DeclareOptionX{Style}{\Store@KV@Option{Style}{#1}}
\DeclareOptionX{Scale}{\Store@KV@Option{Scale}{#1}}
\DeclareOptionX{Numbers}{\Store@KV@Option{Numbers}{#1}}
\ProcessOptionsX

% Following Joseph Wright in https://tex.stackexchange.com/questions/451
\begingroup
  \edef\temp{%
    \endgroup
    \noexpand\setmathfont{Euler-Math.otf}%
    [\unexpanded\expandafter{\the\NEUtoks}]%
  }
  \temp

\AtBeginDocument{%
  % Euler specific math
  % \Umathchardef\<cmd> = <math type> <family> <slot>
  % <math type> : \mathord=0 \mathrel=3 ; <family>=0
  \Umathchardef\muphbar =             0 0 "0127 \relax
  \Umathchardef\varemptyset =         0 0 "E021 \relax
  \Umathchardef\mbfwp =               0 0 "E045 \relax
  \Umathchardef\mbfdotlessi =         0 0 "E046 \relax
  \Umathchardef\mbfdotlessj =         0 0 "E047 \relax
  \Umathchardef\mbfhbar =             0 0 "E048 \relax
  \let\lesseqslantgtr\lesseqgtr
  \let\gtreqslantless\gtreqless
  \let\lesseqqslantgtr\lesseqqgtr
  \let\gtreqqslantless\gtreqqless
  \let\nleqqslant\nleqq
  \let\ngeqqslant\ngeqq
% \widearc and\overrightarc
  \newcommand*{\widearc}{\Umathaccent 0 0 "E540 }%
  \newcommand*{\overrightarc}{\Umathaccent 0 0 "20D5 }%
  % amssymb
  \@ifpackageloaded{amssymb}%
    {\PackageWarning{euler-math}{%
       Euler-Math provides all AMS symbols.\MessageBreak
       Loading amssymb.sty is not advisable.\MessageBreak
       Reported}%
    }%
    {% AMS Symbols not referenced in unicode-math-table.tex
     % \Umathchardef\<cmd> = <math type> <family> <slot>
     % <math type> : \mathord=0 \mathrel=3 ; <family>=0
     \Umathchardef\circledR =       0 0 "24C7 \relax
     \Umathchardef\circledS =       0 0 "24C8 \relax
     \Umathchardef\diagup =         0 0 "E0A0 \relax
     \Umathchardef\diagdown =       0 0 "E0A1 \relax
     \Umathchardef\shortmid =       3 0 "E0A2 \relax
     \Umathchardef\shortparallel =  3 0 "E0A3 \relax
     \Umathchardef\nshortmid =      3 0 "E0A4 \relax
     \Umathchardef\nshortparallel = 3 0 "E0A5 \relax
     \Umathchardef\lvertneqq =      3 0 "E0A6 \relax
     \Umathchardef\gvertneqq =      3 0 "E0A7 \relax
     \Umathchardef\nleqslant =      3 0 "E0A8 \relax
     \Umathchardef\ngeqslant =      3 0 "E0A9 \relax
     \Umathchardef\nleqq =          3 0 "E0AA \relax
     \Umathchardef\ngeqq =          3 0 "E0AB \relax
     \Umathchardef\varsubsetneq =   3 0 "E0AC \relax
     \Umathchardef\varsupsetneq =   3 0 "E0AD \relax
     \Umathchardef\nsubseteqq =     3 0 "E0AE \relax
     \Umathchardef\nsupseteqq =     3 0 "E0AF \relax
     \Umathchardef\varsubsetneqq =  3 0 "E09C \relax
     \Umathchardef\varsupsetneqq =  3 0 "E09D \relax
     \Umathchardef\npreceq =        3 0 "E09E \relax
     \Umathchardef\nsucceq =        3 0 "E09F \relax
     \let\centerdot\cdotp
     \let\restriction\upharpoonright
     \let\doteqdot\Doteq
     \let\doublecup\Cup
     \let\doublecap\Cap
     \let\llless\lll
     \let\gggtr\ggg
     \let\circlearrowleft\acwopencirclearrow
     \let\circlearrowright\cwopencirclearrow
     \let\lozenge\mdlgwhtlozenge
     \let\blacklozenge\mdlgblklozenge
     \let\square\mdlgwhtsquare
     \let\blacksquare\mdlgblksquare
     \let\dashleftarrow\leftdasharrow
     \let\dashrightarrow\rightdasharrow
     \let\ntriangleleft\nvartriangleleft
     \let\ntriangleright\nvartriangleright
     \let\varpropto\propto
     \let\thicksim\sim
     \let\thickapprox\approx
     \let\smallsmile\smile
     \let\smallfrown\frown
    }%
  % latexsym
  \@ifpackageloaded{latexsym}%
    {\PackageWarning{euler-math}{%
       Euler-Math provides all LaTeX symbols.\MessageBreak
       Loading latexsym.sty is not advisable.\MessageBreak
       Reported}%
    }%
    {\let\lhd\vartriangleleft
     \let\rhd\vartriangleright
     \let\unlhd\trianglelefteq
     \let\unrhd\trianglerighteq
     \let\leadsto\rightcurvedarrow
     \let\Box\lgwhtsquare
     \let\Diamond\mdlgwhtdiamond
    }%
}

\endinput