summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-06-04 14:49:42 +0000
committerKarl Berry <karl@freefriends.org>2010-06-04 14:49:42 +0000
commit71a6d5a629f5f8ace98683599c31144e37056bcf (patch)
tree9d5a8fa1ed3980952ac9af4c7b96b076050166a0
parent523bbb55c8eaa157834d8b3f94a791c320fd6705 (diff)
new latex package unicode-math (3jun10)
git-svn-id: svn://tug.org/texlive/trunk@18723 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/unicode-math/README174
-rw-r--r--Master/texmf-dist/doc/latex/unicode-math/unicode-math-testsuite.pdfbin0 -> 1935089 bytes
-rw-r--r--Master/texmf-dist/doc/latex/unicode-math/unicode-math.pdfbin0 -> 417055 bytes
-rw-r--r--Master/texmf-dist/doc/latex/unicode-math/unimath-example.ltx48
-rw-r--r--Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.pdfbin0 -> 344505 bytes
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/Makefile287
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest-preamble.tex70
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest-suite.tex116
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001b.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001c.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001d.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001e.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002b.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002c.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002d.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002e.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003b.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003c.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003d.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003e.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003f.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003g.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003h.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003i.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003j.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003k.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003l.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003m.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003n.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003o.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003p.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004b.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004c.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004d.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004e.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004f.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005b.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005c.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005d.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005e.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005f.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005g.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005h.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005i.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005j.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005k.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005l.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010a.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010b.ltx8
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010c.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010d.ltx8
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest011a.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest011b.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest012a.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest012b.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013a.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013b.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013c.ltx8
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013d.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013e.ltx6
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest014a.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest014b.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest014c.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest015a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest015b.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest016a.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest016b.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest016c.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017a.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017b.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017c.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017d.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest018a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest018b.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest019a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest019b.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest020a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest020b.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest021a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest021b.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest030a.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest031a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest031b.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest031c.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest032a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest032b.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest032c.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest033a.ltx12
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100a.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100b.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100c.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100d.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100e.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest101a.ltx8
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest102a.ltx13
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest150a.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest151a.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest200a.ltx18
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest200b.ltx18
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest201a.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest202a.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest202b.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest203a.ltx7
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest204a.ltx13
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest205a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest206a.ltx8
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest206b.ltx9
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest206c.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest207a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest300a.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest400a.ltx18
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest401a.ltx11
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest500a.ltx14
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501a.ltx13
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501b.ltx10
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501d.ltx14
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501e.ltx26
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest502a.ltx21
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/testfiles/umtest502b.ltx19
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/unicode-math-testsuite.ltx38
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/unicode-math.dtx5138
-rw-r--r--Master/texmf-dist/source/latex/unicode-math/unimath-symbols.ltx129
-rw-r--r--Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex2467
-rw-r--r--Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty2341
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check4
-rw-r--r--Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/unicode-math.tlpsrc0
132 files changed, 11948 insertions, 2 deletions
diff --git a/Master/texmf-dist/doc/latex/unicode-math/README b/Master/texmf-dist/doc/latex/unicode-math/README
new file mode 100644
index 00000000000..ca3e1febdc0
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/unicode-math/README
@@ -0,0 +1,174 @@
+The UNICODE-MATH package
+========================
+
+This package will provide a complete implementation of unicode maths for
+XeTeX. While I do not encourage people to use this package for production
+work, I understand that it has certain uses and am making it available for
+distribution. Your testing and feedback is essential to fill in the many gaps
+that I miss!
+
+The package will soon also work under LuaTeX, but this is not yet supported.
+
+Please be aware that this package is undergoing continued development and the
+interface and functionality should not be considered completely stable. But
+the more the package is used the more stable it will become. (Things are generally working now; it is only minutiae that may change in the future.)
+
+Unicode maths is currently supported to one degree or another by the fonts
+
+ - [Cambria Math][CM] (Microsoft),
+ - [Asana Math][AM] (Apostolos Syropolous),
+ - [Neo Euler][NE] (Khalid Hosny),
+ - [STIX][SM] (STI Pub), and
+ - [XITS Math][XM] (Khalid Hosny).
+
+With the exception of Cambria Math, which is proprietry, the fonts above
+are all freely available and released under the [Open Font Licence][OFL].
+
+I'm always looking for new fonts to test with, so please let me know of any
+new releases.
+
+[CM]: http://www.ascenderfonts.com/font/cambria-regular.aspx
+[AM]: http://www.ctan.org/tex-archive/fonts/Asana-Math/
+[NE]: http://github.com/khaledhosny/euler-otf
+[SM]: http://www.aip.org/stixfonts/
+[XM]: http://github.com/khaledhosny/xits-math
+[OFL]: http://scripts.sil.org/OFL
+
+PACKAGE USAGE
+-------------
+
+Please see the PDF documentation for full details. A simple beginning is:
+
+ \usepackage{unicode-math}
+ \setmathfont{Cambria Math}
+
+Most LaTeX math should still work after this. (Let me know if it doesn't.)
+Furthermore, it will be in a different font.
+
+
+REQUIREMENTS
+------------
+
+As well as running XeTeX, of course, this package requires recent versions
+of the fontspec, expl3 and xpackages packages. If you're using TeX Live 2010
+then there'll be no problems.
+
+
+MAINTENANCE
+-----------
+
+The current release version is available from CTAN:
+> <http://tug.ctan.org/pkg/unicode-math>
+
+Latest developmental and archived historical versions are
+available from Github:
+> <http://github.com/wspr/unicode-math>
+
+Please file bug reports with minimal examples:
+> <http://github.com/wspr/unicode-math/issues>
+
+
+INSTALLATION
+------------
+
+The steps below assume that you have obtained unicode-math either from CTAN or
+Github and you wish to install the package yourself. If you are using TeX Live
+2010 or later, you may install the latest release version of the package with
+
+ sudo tlmgr update unicode-math
+
+Installation and compilation are automated by the Makefile; see below for the
+manual procedure. To re-compile the documentation (requiring XeLaTeX and a
+variety of installed fonts):
+
+ make doc
+
+To install unicode-math in your home texmf tree:
+
+ make install
+
+To install it for all users in your system-wide local texmf tree:
+
+ make install-sys
+
+See `make help` for further information.
+
+
+### Manual procedure
+
+Run TeX on unicode-math.dtx to generate the package file unicode-math.sty:
+
+ tex unicode-math.dtx
+
+If you have the necessary fonts, you may compile the documentation
+with XeLaTeX:
+
+ xelatex unicode-math.dtx
+
+To install the package, place unicode-math.sty and unicode-math-table.tex in a
+location searched by XeLaTeX, inside the directory structure
+`<texmf>/tex/latex/unicode-math/`. The appropriate `<texmf>` location for a
+single-user installation can be found with
+
+ kpsewhich --var-value TEXMFHOME
+
+For a system-wide (multi-user) installation, use the location returned by
+
+ kpsewhich --var-value TEXMFLOCAL
+
+
+TEST SUITE
+----------
+
+After installation you can initialise the testsuite with
+
+ make initest
+
+Subsequently, the test suite may be executed with
+
+ make test
+
+Both of these operations will take quite some time and require ImageMagick's
+`convert` tool to be installed. They are only necessary if you wish to make
+changes to unicode-math yourself (be sure to initialise the test suite
+*before* any changes are made to the package) and you wish to ensure that your
+changes have not affected the standard behaviour.
+
+
+
+LICENCE
+-------
+
+The unicode-math package may be modified and distributed under the terms and
+conditions of the [LaTeX Project Public License][LPPL], version 1.3c or
+greater.
+
+[LPPL]: http://www.latex-project.org/lppl/
+
+This work is author-maintained and consists of the files
+
+- unicode-math.dtx,
+- unicode-math-table.tex,
+- unimath-example.ltx,
+- unimath-symbols.ltx;
+
+the derived file
+
+- unicode-math.sty;
+
+the compiled documentation files
+
+- unicode-math.pdf,
+- unicode-math-testsuite.pdf,
+- unimath-example.pdf,
+- unimath-symbols.pdf;
+
+and the test suite for this package
+
+- testfiles/umtest-preamble.tex,
+- testfiles/umtest-suite.tex,
+- testfiles/umtest*.ltx,
+- testfiles/umtest*.safe.png.
+
+__________________________________
+Copyright 2006-2010 Will Robertson
diff --git a/Master/texmf-dist/doc/latex/unicode-math/unicode-math-testsuite.pdf b/Master/texmf-dist/doc/latex/unicode-math/unicode-math-testsuite.pdf
new file mode 100644
index 00000000000..ffed9b285c2
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/unicode-math/unicode-math-testsuite.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/unicode-math/unicode-math.pdf b/Master/texmf-dist/doc/latex/unicode-math/unicode-math.pdf
new file mode 100644
index 00000000000..f7901263371
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/unicode-math/unicode-math.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/unicode-math/unimath-example.ltx b/Master/texmf-dist/doc/latex/unicode-math/unimath-example.ltx
new file mode 100644
index 00000000000..bec1e8283e9
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/unicode-math/unimath-example.ltx
@@ -0,0 +1,48 @@
+
+%%%%%%%%%%%%%%%%%%%%%%%
+% UNICODE-MATH EXAMPLE FILE
+%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass{article}
+
+% Load fontspec and define a document font:
+\usepackage{fontspec}
+\setmainfont{TeX Gyre Pagella}
+
+% Load unicode-math and define a math font:
+\usepackage{unicode-math}
+\setmathfont{Asana Math}
+
+\begin{document}
+\title{An example of \textsf{unicode-math}}
+\author{Will Robertson\\\texttt{wspr81@gmail.com}}
+\maketitle
+
+This is an example of the \textsf{unicode-math} package.
+It allows you to write maths with Unicode input and to use fonts that contain Unicode mathematical glyphs. Follow along in the source code to see how it works.
+
+After loading the package and selecting a font, you shouldn't need to change much to continue to write maths as always.
+\[
+ F(s)=\mathscr L \{f(t)\}=\int_0^\infty \mathrm e^{-st}f(t)\,\mathrm d t
+\]
+
+The style of Latin and Greek letters is set up by default to match the output of standard \LaTeX: Latin letters and Greek lowercase letters are italic, and Greek uppercase letters are upright. These can be configured with the \texttt{math-style} package option.
+
+One very important feature to recognise is that bold maths now works consistently for both Latin and Greek letters. By default, \verb|\mathbf| will turn a Latin letter bold and upright, and a Greek letter will remain italic and also become bold. For example:
+\[
+ \mathbf{a} = a\,\mathbf{I} \qquad \mathbf{\beta} = \beta\,\mathbf{I}
+\]
+This behaviour can be configured with the \texttt{bold-style} package option.
+
+In the examples above, I've used \LaTeX\ commands to input characters like \verb|\beta|, \verb|\infty|, and so on. These may now be typed directly into the source of the document:
+\[
+ 𝐉 = ∇×𝐇 \qquad 𝐁 = μ₀(𝐌 + 𝐇)
+\]
+\[
+ ∫₀³ xⁿφ₁₂(x)\,ⅆx
+\]
+It does not matter if you use upright or italic characters; they will be normalised according to the setting of the \texttt{math-style} and \texttt{bold-style} options.
+
+And that's a brief introduction to the package. Please see the documentation for further details. This is a new package; feedback, suggestions, and bug reports are all most welcome.
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.pdf b/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.pdf
new file mode 100644
index 00000000000..f05f4d310ec
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/unicode-math/unimath-symbols.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/unicode-math/Makefile b/Master/texmf-dist/source/latex/unicode-math/Makefile
new file mode 100644
index 00000000000..c85ecdb407b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/Makefile
@@ -0,0 +1,287 @@
+
+#### MAKEFILE CONFIG ####
+
+SHELL = /bin/sh
+.SILENT:
+.SUFFIXES:
+
+#### BEGIN ####
+
+help:
+ echo 'UNICODE-MATH makefile targets:'
+ echo ' '
+ echo ' help - (this message)'
+ echo ' ctan - generate archive for CTAN'
+ echo ' doc - compile documentation inside build/'
+ echo ' clean - remove build directory and compiled files'
+ echo ' '
+ echo ' install - install the package into your home texmf tree'
+ echo ' install-sys - install the package into the system-wide texmf tree'
+ echo ' (may require administration privileges)'
+ echo ' install TEXMF=<texmf> - install the package into the path <texmf>'
+ echo ' '
+ echo ' test - run the test suite'
+ echo ' initest - initialise any new tests'
+ echo ' '
+ echo ' xfile F=<abc> - compile file <abc> with XeLaTeX'
+ echo ' lfile F=<abc> - compile file <abc> with LuaLaTeX'
+ echo ' '
+ echo 'To add a new test, add a file called umtest****.ltx to'
+ echo 'directory testfiles/, run `make initest` and ensure'
+ echo 'that the output umtest****.safe.png is correct.'
+ echo ' '
+ echo '`make test` will then compare future compilations of the'
+ echo 'test file against this original and warn against any changes.'
+ echo '`make build/umtest****.diff.png` will check a single test.'
+ echo ' '
+ echo 'I recommend `make -j4 test` or thereabouts to parallelise'
+ echo 'the testing.'
+
+
+
+#### SETUP ####
+
+# file and folder names:
+
+PKG = unicode-math
+TBL = $(PKG)-table.tex
+SUITE = $(PKG)-testsuite
+XMPL = unimath-example.ltx
+SYM = unimath-symbols
+
+testdir=testfiles
+builddir=build
+tds=$(builddir)/$(PKG).tds
+
+UPDATE = `which dtx-update` || true # TODO: generalise
+
+# these files end up in the CTAN directory:
+PKGSOURCE = $(PKG).dtx $(TBL) Makefile
+DOC = $(PKG).pdf $(SUITE).pdf README $(XMPL) $(SYM).pdf
+CTANFILES = $(PKGSOURCE) $(DOC) ../$(testdir)
+BUILDCTAN = $(addprefix $(builddir)/,$(CTANFILES))
+BUILDDOC = $(addprefix $(builddir)/,$(DOC))
+
+# these are what's needed to compile and make stuff:
+
+LTXSOURCE = $(PKG).sty $(TBL)
+
+SUITESOURCE = \
+ $(testdir)/umtest-preamble.tex \
+ $(testdir)/umtest-suite.tex
+
+SWEETSAUCE = ginger and chilli
+
+TESTOUT = $(shell ls $(testdir)/umtest*.safe.png)
+BUILDTESTSRC = $(subst $(testdir)/,$(builddir)/,$(subst .safe.png,.ltx,$(TESTOUT)))
+BUILDTESTTARGET = $(subst $(testdir)/,$(builddir)/,$(subst .safe.png,.diff.png,$(TESTOUT)))
+
+BUILDSOURCE = $(addprefix $(builddir)/,$(LTXSOURCE))
+BUILDSUITE = $(subst $(testdir)/,$(builddir)/,$(SUITESOURCE))
+BUILDFILES = $(BUILDSOURCE) $(BUILDSUITE) $(BUILDTESTSRC)
+
+# and this is how the TDS zip file is produced:
+
+TDSFILES = \
+ $(tds)/source/latex/$(PKG)/$(PKG).dtx \
+ $(tds)/source/latex/$(PKG)/$(SUITE).ltx \
+ $(tds)/source/latex/$(PKG)/$(SYM).ltx \
+ $(tds)/source/latex/$(PKG)/Makefile \
+ $(tds)/source/latex/$(PKG)/$(testdir) \
+ $(tds)/doc/latex/$(PKG)/unicode-math.pdf \
+ $(tds)/doc/latex/$(PKG)/unicode-math-testsuite.pdf \
+ $(tds)/doc/latex/$(PKG)/README \
+ $(tds)/doc/latex/$(PKG)/$(XMPL) \
+ $(tds)/doc/latex/$(PKG)/$(SYM).pdf \
+ $(tds)/tex/latex/$(PKG)/unicode-math.sty \
+ $(tds)/tex/latex/$(PKG)/unicode-math-table.tex
+
+
+
+#### BASICS ####
+
+doc: $(BUILDDOC)
+
+README:
+
+$(XMPL):
+
+clean:
+ rm -rf $(builddir)
+ rm -f $(PKG).zip $(PKG).pdf $(SUITE).pdf
+
+$(PKG).pdf: $(builddir)/$(PKG).pdf
+ cp $< $@
+
+$(SUITE).pdf: $(builddir)/$(SUITE).pdf
+ cp $< $@
+
+
+#### BUILD FILES
+
+$(builddir)/$(PKG).dtx: $(PKG).dtx
+ mkdir -p $(builddir)
+ $(UPDATE)
+ cp -f $< $@
+
+$(builddir)/$(PKG).sty: $(builddir)/$(PKG).dtx
+ echo "Updating $@"
+ cd $(builddir); \
+ tex $(PKG).dtx > /dev/null ;
+
+$(builddir)/unicode-math-table.tex: unicode-math-table.tex
+ echo "Updating $@"
+ cp -f $< $@
+
+$(builddir)/$(PKG).pdf: $(builddir)/$(PKG).dtx $(BUILDSOURCE)
+ cd $(builddir); \
+ xelatex $(PKG).dtx && \
+ makeindex -s gind.ist $(PKG) && \
+ xelatex $(PKG).dtx;
+
+$(builddir)/$(SYM).pdf: $(builddir)/$(SYM).ltx
+ cd $(builddir); \
+ xelatex $(SYM).ltx && \
+ xelatex $(SYM).ltx;
+
+$(builddir)/$(SUITE).pdf: $(SUITE).ltx $(BUILDSUITE)
+ xelatex -output-directory=$(builddir) $<
+
+$(builddir)/umtest-preamble.tex: $(testdir)/umtest-preamble.tex
+ cp -f $< $@
+
+$(builddir)/umtest-suite.tex: $(testdir)/umtest-suite.tex
+ cp -f $< $@
+
+$(builddir)/%.ltx: $(testdir)/%.ltx
+ cp -f $< $@
+
+$(builddir)/README: README.markdown
+ cp -f $< $@
+
+$(builddir)/Makefile: Makefile
+ cp -f $< $@
+
+$(builddir)/$(SUITE).ltx: $(SUITE).ltx
+ cp -f $< $@
+
+$(builddir)/$(XMPL): $(XMPL)
+ cp -f $< $@
+
+$(builddir)/$(SYM).ltx: $(SYM).ltx
+ cp -f $< $@
+
+
+##### CTAN INSTALLATION #####
+
+../$(testdir):
+
+tds: $(TDSFILES)
+ cd $(builddir); \
+ zip -r $(PKG).tds.zip $(PKG).tds -x *.DS_Store -x *.safe.png
+
+ctan: $(BUILDCTAN) tds
+ cd $(builddir); \
+ zip -r \
+ ../$(PKG).zip $(CTANFILES) $(PKG).tds.zip \
+ -x *.DS_Store -x *.safe.png
+
+$(tds)/doc/latex/$(PKG)/% \
+$(tds)/tex/latex/$(PKG)/% \
+$(tds)/source/latex/$(PKG)/% : $(builddir)/%
+ mkdir -p $(shell dirname $@)
+ cp -f $< $@
+
+$(tds)/source/latex/$(PKG)/$(testdir):
+ cp -rf $(testdir) $(tds)/source/latex/$(PKG)/$(testdir)
+
+##### LOCAL TEXMF INSTALLATION #####
+
+TEXMFHOME=$(shell kpsewhich --var-value TEXMFHOME)
+TEXMFLOCAL=$(shell kpsewhich --var-value TEXMFLOCAL)
+
+install: $(TDSFILES)
+ if test -n "$(TEXMFHOME)" ; then \
+ echo "Installing in '$(TEXMFHOME)'."; \
+ cp -rf $(tds)/ $(TEXMFHOME); \
+ else \
+ echo "Cannot locate your home texmf tree. Specify manually with\n\n make install TEXMFHOME=/path/to/texmf\n" ; \
+ false ; \
+ fi ;
+
+install-sys: $(TDSFILES)
+ if test -n "$(TEXMFLOCAL)" ; then \
+ echo "Installing in '$(TEXMFLOCAL)'."; \
+ cp -rf $(tds)/ $(TEXMFLOCAL); \
+ else \
+ echo "Cannot locate your system-wide local texmf tree. Specify manually with\n\n make install TEXMFLOCAL=/path/to/texmf\n" ; \
+ false ; \
+ fi ;
+
+
+
+##### USEFUL FOR TEST FILES #####
+
+xfile: $(F) $(BUILDSOURCE)
+ if [ "$(F)" = "" ] ; then \
+ echo "Need a filename!\nE.g. \`make xfile F=test.ltx\`" ; \
+ false ; \
+ fi
+ echo Typesetting $(F):
+ cp -f $(F) $(builddir)/$(F)
+ cd $(builddir); xelatex $(F)
+
+lfile: $(F) $(BUILDSOURCE)
+ if [ "$(F)" = "" ] ; then \
+ echo "Need a filename!\nE.g. \`make lfile F=test.ltx\`" ; \
+ false ; \
+ fi
+ echo Typesetting $(F):
+ cp -f $(F) $(builddir)/$(F)
+ cd $(builddir); lualatex $(F)
+
+
+#############
+# TESTSUITE #
+#############
+
+
+#### All tests ####
+
+test: $(BUILDFILES) $(BUILDTESTTARGET)
+ cd $(testdir); \
+ ls umtest*.ltx | sed -e 's/umtest\(.*\).ltx/\\inserttest{\1}/g' > umtest-suite.tex
+
+
+#### Each step of the process ####
+
+$(builddir)/%.diff.png: $(builddir)/%.test.png
+ echo '$*: Comparing with good PNG.'
+ if [ "${shell compare -metric RMSE $(builddir)/$*.test.png $(testdir)/$*.safe.png $(builddir)/$*.diff.png | grep 'dB'}" = "0 dB" ] ; then \
+ echo '$*: Test passed.' ; \
+ else \
+ echo '$*: Test failed.' ; \
+ false ; \
+ fi
+
+$(builddir)/%.test.png: $(builddir)/%.pdf
+ echo '$*: Converting PDF to PNG.'
+ convert -density 300x300 $< $(builddir)/$*.test.png
+
+$(builddir)/umtest%.pdf: $(BUILDSOURCE) $(BUILDSUITE) $(builddir)/umtest%.ltx
+ echo 'umtest$*: Generating PDF output.'
+ cd $(builddir); xelatex -interaction=batchmode umtest$*.ltx > /dev/null
+
+
+#### Generating new tests ####
+
+lonelystub = $(shell cd $(testdir); ls | egrep 'umtest(.*\.ltx)|(.*\.safe.png)' | cut -d . -f 1 | uniq -u)
+lonelyfile = $(addsuffix .safe.png,$(lonelystub))
+lonelypath = $(addprefix $(testdir)/,$(lonelyfile))
+lonelytest = $(addprefix $(builddir)/,$(addsuffix .test.png,$(lonelystub)))
+
+initest: $(lonelypath)
+
+$(lonelypath): $(lonelytest)
+ cp `echo $@ | sed -e s/$(testdir)/$(builddir)/ -e s/.safe.png/.test.png/` $@
+
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest-preamble.tex b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest-preamble.tex
new file mode 100644
index 00000000000..aa6442fc314
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest-preamble.tex
@@ -0,0 +1,70 @@
+
+\documentclass{article}
+\usepackage{geometry}
+\geometry{
+ papersize={9cm,6cm},margin=0.5cm
+}
+\pagestyle{empty}
+
+\newcommand\LATINtext{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
+\newcommand\latintext{abcdefghijklmnopqrstuvwxyz}
+\newcommand\LATINmath{𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝐼𝐽𝐾𝐿𝑀𝑁𝑂𝑃𝑄𝑅𝑆𝑇𝑈𝑉𝑊𝑋𝑌𝑍}
+\newcommand\latinmath{𝑎𝑏𝑐𝑑𝑒𝑓𝑔ℎ𝑖𝑗𝑘𝑙𝑚𝑛𝑜𝑝𝑞𝑟𝑠𝑡𝑢𝑣𝑤𝑥𝑦𝑧}
+\newcommand\GREEKtext{ΑΒΓΔΕΖΗΘϴΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ}
+\newcommand\greektext{αβγδεϵζηθϑικϰλμνξοπϖρϱςστυφϕχψω}
+\newcommand\GREEKmath{𝛢𝛣𝛤𝛥𝛦𝛧𝛨𝛩𝛳𝛪𝛫𝛬𝛭𝛮𝛯𝛰𝛱𝛲𝛴𝛵𝛶𝛷𝛸𝛹𝛺}
+\newcommand\greekmath{𝛼𝛽𝛾𝛿𝜀𝜖𝜁𝜂𝜃𝜗𝜄𝜅𝜘𝜆𝜇𝜈𝜉𝜊𝜋𝜛𝜌𝜚𝜍𝜎𝜏𝜐𝜑𝜙𝜒𝜓𝜔}
+
+\newcommand\LATINmathbb{𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ}
+\newcommand\latinmathbb{𝕒𝕓𝕔𝕕𝕖𝕗𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫}
+\newcommand\numbersmathbb{𝟘𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠𝟡}
+\newcommand\reservedmathbb{𝔺 𝔿 𝕅 𝕇 𝕈 𝕉 𝕑}
+
+\newcommand\LATINmathscr{𝒜ℬ𝒞𝒟ℰℱ𝒢ℋℐ𝒥𝒦ℒℳ𝒩𝒪𝒫𝒬ℛ𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵}
+\newcommand\latinmathscr{𝒶𝒷𝒸𝒹ℯ𝒻ℊ𝒽𝒾𝒿𝓀𝓁𝓂𝓃ℴ𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏}
+\newcommand\reservedmathscr{𝒝 𝒠 𝒡 𝒣 𝒤 𝒧 𝒨 𝒭 \quad 𝒺 𝒼 𝓄}
+
+\newcommand\LATINmathfrak{𝔄𝔅ℭ𝔇𝔈𝔉𝔊ℌℑ𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔ℜ𝔖𝔗𝔘𝔙𝔚𝔛𝔜ℨ}
+\newcommand\latinmathfrak{𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷}
+\newcommand\reservedmathfrak{𝔆 𝔋 𝔌 𝔕 𝔝}
+
+\newcommand\LATINmathsfup{𝖠𝖡𝖢𝖣𝖤𝖥𝖦𝖧𝖨𝖩𝖪𝖫𝖬𝖭𝖮𝖯𝖰𝖱𝖲𝖳𝖴𝖵𝖶𝖷𝖸𝖹}
+\newcommand\latinmathsfup{𝖺𝖻𝖼𝖽𝖾𝖿𝗀𝗁𝗂𝗃𝗄𝗅𝗆𝗇𝗈𝗉𝗊𝗋𝗌𝗍𝗎𝗏𝗐𝗑𝗒𝗓}
+\newcommand\numbersmathsfup{𝟢𝟣𝟤𝟥𝟦𝟧𝟨𝟩𝟪𝟫}
+
+\newcommand\LATINmathsfit{𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠𝘡}
+\newcommand\latinmathsfit{𝘢𝘣𝘤𝘥𝘦𝘧𝘨𝘩𝘪𝘫𝘬𝘭𝘮𝘯𝘰𝘱𝘲𝘳𝘴𝘵𝘶𝘷𝘸𝘹𝘺𝘻}
+
+\newcommand\LATINmathtt{𝙰𝙱𝙲𝙳𝙴𝙵𝙶𝙷𝙸𝙹𝙺𝙻𝙼𝙽𝙾𝙿𝚀𝚁𝚂𝚃𝚄𝚅𝚆𝚇𝚈𝚉}
+\newcommand\latinmathtt{𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝚒𝚓𝚔𝚕𝚖𝚗𝚘𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣}
+\newcommand\numbersmathtt{𝟶𝟷𝟸𝟹𝟺𝟻𝟼𝟽𝟾𝟿}
+
+
+\newcommand\LATINmathbfit{𝑨𝑩𝑪𝑫𝑬𝑭𝑮𝑯𝑰𝑱𝑲𝑳𝑴𝑵𝑶𝑷𝑸𝑹𝑺𝑻𝑼𝑽𝑾𝑿𝒀𝒁}
+\newcommand\latinmathbfit{𝒂𝒃𝒄𝒅𝒆𝒇𝒈𝒉𝒊𝒋𝒌𝒍𝒎𝒏𝒐𝒑𝒒𝒓𝒔𝒕𝒖𝒗𝒘𝒙𝒚𝒛}
+\newcommand\GREEKmathbfit{𝜜𝜝𝜞𝜟𝜠𝜡𝜢𝜣𝜭𝜤𝜥𝜦𝜧𝜨𝜩𝜪𝜫𝜬𝜮𝜯𝜰𝜱𝜲𝜳𝜴}
+\newcommand\greekmathbfit{𝜶𝜷𝜸𝜹𝜺𝝐𝜻𝜼𝜽𝝑𝜾𝜿𝝒𝝀𝝁𝝂𝝃𝝄𝝅𝝕𝝆𝝔𝝇𝝈𝝉𝝊𝝋𝝓𝝌𝝍𝝎}
+
+\newcommand\LATINmathbfup{𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙}
+\newcommand\latinmathbfup{𝐚𝐛𝐜𝐝𝐞𝐟𝐠𝐡𝐢𝐣𝐤𝐥𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐭𝐮𝐯𝐰𝐱𝐲𝐳}
+\newcommand\GREEKmathbfup{𝚨𝚩𝚪𝚫𝚬𝚭𝚮𝚯𝚹𝚰𝚱𝚲𝚳𝚴𝚵𝚶𝚷𝚸𝚺𝚻𝚼𝚽𝚾𝚿𝛀}
+\newcommand\greekmathbfup{𝛂𝛃𝛄𝛅𝛆𝛜𝛇𝛈𝛉𝛝𝛊𝛋𝛞𝛌𝛍𝛎𝛏𝛐𝛑𝛡𝛒𝛠𝛓𝛔𝛕𝛖𝛗𝛟𝛘𝛙𝛚}
+\newcommand\numbersmathbfup{𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗}
+
+\newcommand\LATINmathbfscr{𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩}
+\newcommand\latinmathbfscr{𝓪𝓫𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃}
+
+\newcommand\LATINmathbffrak{𝕬𝕭𝕮𝕯𝕰𝕱𝕲𝕳𝕴𝕵𝕶𝕷𝕸𝕹𝕺𝕻𝕼𝕽𝕾𝕿𝖀𝖁𝖂𝖃𝖄𝖅}
+\newcommand\latinmathbffrak{𝖆𝖇𝖈𝖉𝖊𝖋𝖌𝖍𝖎𝖏𝖐𝖑𝖒𝖓𝖔𝖕𝖖𝖗𝖘𝖙𝖚𝖛𝖜𝖝𝖞𝖟}
+
+\newcommand\LATINmathbfsfup{𝗔𝗕𝗖𝗗𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭}
+\newcommand\latinmathbfsfup{𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷𝗸𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇}
+\newcommand\GREEKmathbfsfup{𝝖𝝗𝝘𝝙𝝚𝝛𝝜𝝝𝝧𝝞𝝟𝝠𝝡𝝢𝝣𝝤𝝥𝝦𝝨𝝩𝝪𝝫𝝬𝝭𝝮}
+\newcommand\greekmathbfsfup{𝝰𝝱𝝲𝝳𝝴𝞊𝝵𝝶𝝷𝞋𝝸𝝹𝞌𝝺𝝻𝝼𝝽𝝾𝝿𝞏𝞀𝞎𝞁𝞂𝞃𝞄𝞅𝞋𝞆𝞇𝞈}
+\newcommand\numbersmathbfsfup{𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵}
+
+\newcommand\LATINmathbfsfit{𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕}
+\newcommand\latinmathbfsfit{𝙖𝙗𝙘𝙙𝙚𝙛𝙜𝙝𝙞𝙟𝙠𝙡𝙢𝙣𝙤𝙥𝙦𝙧𝙨𝙩𝙪𝙫𝙬𝙭𝙮𝙯}
+\newcommand\GREEKmathbfsfit{𝞐𝞑𝞒𝞓𝞔𝞕𝞖𝞗𝞡𝞘𝞙𝞚𝞛𝞜𝞝𝞞𝞟𝞠𝞢𝞣𝞤𝞥𝞦𝞧𝞨}
+\newcommand\greekmathbfsfit{𝞪𝞫𝞬𝞭𝞮𝟄𝞯𝞰𝞱𝟅𝞲𝞳𝟆𝞴𝞵𝞶𝞷𝞸𝞹𝟉𝞺𝟈𝞻𝞼𝞽𝞾𝞿𝟅𝟀𝟁𝟂}
+
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest-suite.tex b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest-suite.tex
new file mode 100644
index 00000000000..25d807074c1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest-suite.tex
@@ -0,0 +1,116 @@
+\inserttest{001a}
+\inserttest{001b}
+\inserttest{001c}
+\inserttest{001d}
+\inserttest{001e}
+\inserttest{002a}
+\inserttest{002b}
+\inserttest{002c}
+\inserttest{002d}
+\inserttest{002e}
+\inserttest{003a}
+\inserttest{003b}
+\inserttest{003c}
+\inserttest{003d}
+\inserttest{003e}
+\inserttest{003f}
+\inserttest{003g}
+\inserttest{003h}
+\inserttest{003i}
+\inserttest{003j}
+\inserttest{003k}
+\inserttest{003l}
+\inserttest{003m}
+\inserttest{003n}
+\inserttest{003o}
+\inserttest{003p}
+\inserttest{004a}
+\inserttest{004b}
+\inserttest{004c}
+\inserttest{004d}
+\inserttest{004e}
+\inserttest{004f}
+\inserttest{005a}
+\inserttest{005b}
+\inserttest{005c}
+\inserttest{005d}
+\inserttest{005e}
+\inserttest{005f}
+\inserttest{005g}
+\inserttest{005h}
+\inserttest{005i}
+\inserttest{005j}
+\inserttest{005k}
+\inserttest{005l}
+\inserttest{010a}
+\inserttest{010b}
+\inserttest{010c}
+\inserttest{010d}
+\inserttest{011a}
+\inserttest{011b}
+\inserttest{012a}
+\inserttest{012b}
+\inserttest{013a}
+\inserttest{013b}
+\inserttest{013c}
+\inserttest{013d}
+\inserttest{013e}
+\inserttest{014a}
+\inserttest{014b}
+\inserttest{014c}
+\inserttest{015a}
+\inserttest{015b}
+\inserttest{016a}
+\inserttest{016b}
+\inserttest{016c}
+\inserttest{017a}
+\inserttest{017b}
+\inserttest{017c}
+\inserttest{017d}
+\inserttest{018a}
+\inserttest{018b}
+\inserttest{019a}
+\inserttest{019b}
+\inserttest{020a}
+\inserttest{020b}
+\inserttest{021a}
+\inserttest{021b}
+\inserttest{030a}
+\inserttest{031a}
+\inserttest{031b}
+\inserttest{031c}
+\inserttest{032a}
+\inserttest{032b}
+\inserttest{032c}
+\inserttest{033a}
+\inserttest{100a}
+\inserttest{100b}
+\inserttest{100c}
+\inserttest{100d}
+\inserttest{100e}
+\inserttest{101a}
+\inserttest{102a}
+\inserttest{150a}
+\inserttest{151a}
+\inserttest{200a}
+\inserttest{200b}
+\inserttest{201a}
+\inserttest{202a}
+\inserttest{202b}
+\inserttest{203a}
+\inserttest{204a}
+\inserttest{205a}
+\inserttest{206a}
+\inserttest{206b}
+\inserttest{206c}
+\inserttest{207a}
+\inserttest{300a}
+\inserttest{400a}
+\inserttest{401a}
+\inserttest{500a}
+\inserttest{501a}
+\inserttest{501b}
+\inserttest{501d}
+\inserttest{501e}
+\inserttest{502a}
+\inserttest{502b}
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001a.ltx
new file mode 100644
index 00000000000..a77bb279136
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001a.ltx
@@ -0,0 +1,10 @@
+
+\input{umtest-preamble}
+\usepackage[math-style=TeX]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINtext\]
+\[\latintext\]
+\[\LATINmath\]
+\[\latinmath\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001b.ltx
new file mode 100644
index 00000000000..ac4562f82a4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001b.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[math-style=ISO]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINtext\]
+\[\latintext\]
+\[\LATINmath\]
+\[\latinmath\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001c.ltx
new file mode 100644
index 00000000000..f1e18b59a53
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001c.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[math-style=literal]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINtext\]
+\[\latintext\]
+\[\LATINmath\]
+\[\latinmath\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001d.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001d.ltx
new file mode 100644
index 00000000000..2eb0fe47e45
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001d.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[math-style=french]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINtext\]
+\[\latintext\]
+\[\LATINmath\]
+\[\latinmath\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001e.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001e.ltx
new file mode 100644
index 00000000000..97890262c8f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest001e.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[math-style=upright]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINtext\]
+\[\latintext\]
+\[\LATINmath\]
+\[\latinmath\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002a.ltx
new file mode 100644
index 00000000000..a63656c7b0a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002a.ltx
@@ -0,0 +1,10 @@
+
+\input{umtest-preamble}
+\usepackage[math-style=TeX]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\GREEKtext\]
+\[\greektext\]
+\[\GREEKmath\]
+\[\greekmath\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002b.ltx
new file mode 100644
index 00000000000..de6f5474073
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002b.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[math-style=ISO]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\GREEKtext\]
+\[\greektext\]
+\[\GREEKmath\]
+\[\greekmath\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002c.ltx
new file mode 100644
index 00000000000..0239bace484
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002c.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[math-style=literal]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\GREEKtext\]
+\[\greektext\]
+\[\GREEKmath\]
+\[\greekmath\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002d.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002d.ltx
new file mode 100644
index 00000000000..4ec5baf1857
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002d.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[math-style=french]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\GREEKtext\]
+\[\greektext\]
+\[\GREEKmath\]
+\[\greekmath\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002e.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002e.ltx
new file mode 100644
index 00000000000..dfa269c4b29
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest002e.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[math-style=upright]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\GREEKtext\]
+\[\greektext\]
+\[\GREEKmath\]
+\[\greekmath\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003a.ltx
new file mode 100644
index 00000000000..c41463fee4e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[bold-style=TeX]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathbfup\]
+\[\LATINmathbfit\]
+\[\latinmathbfup\]
+\[\latinmathbfit\]
+\[\numbersmathbfup\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003b.ltx
new file mode 100644
index 00000000000..a0c1a095c0c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003b.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[bold-style=TeX]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\GREEKmathbfup\]
+\[\GREEKmathbfit\]
+\[\greekmathbfup\]
+\[\greekmathbfit\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003c.ltx
new file mode 100644
index 00000000000..06d6140e8e0
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003c.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[bold-style=TeX]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbf\LATINmath\]
+\[\mathbf\LATINtext\]
+\[\mathbf\latinmath\]
+\[\mathbf\latintext\]
+\[\mathbf{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003d.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003d.ltx
new file mode 100644
index 00000000000..3617f29eb56
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003d.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[bold-style=TeX]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbf\GREEKmath\]
+\[\mathbf\GREEKtext\]
+\[\mathbf\greekmath\]
+\[\mathbf\greektext\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003e.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003e.ltx
new file mode 100644
index 00000000000..683344f4d8f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003e.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[bold-style=ISO]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathbfup\]
+\[\LATINmathbfit\]
+\[\latinmathbfup\]
+\[\latinmathbfit\]
+\[\numbersmathbfup\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003f.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003f.ltx
new file mode 100644
index 00000000000..c9b7566c16a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003f.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[bold-style=ISO]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\GREEKmathbfup\]
+\[\GREEKmathbfit\]
+\[\greekmathbfup\]
+\[\greekmathbfit\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003g.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003g.ltx
new file mode 100644
index 00000000000..93508517c86
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003g.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[bold-style=ISO]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbf\LATINmath\]
+\[\mathbf\LATINtext\]
+\[\mathbf\latinmath\]
+\[\mathbf\latintext\]
+\[\mathbf{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003h.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003h.ltx
new file mode 100644
index 00000000000..85293b2b647
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003h.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[bold-style=ISO]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbf\GREEKmath\]
+\[\mathbf\GREEKtext\]
+\[\mathbf\greekmath\]
+\[\mathbf\greektext\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003i.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003i.ltx
new file mode 100644
index 00000000000..531c9ae9482
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003i.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[bold-style=upright]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathbfup\]
+\[\LATINmathbfit\]
+\[\latinmathbfup\]
+\[\latinmathbfit\]
+\[\numbersmathbfup\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003j.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003j.ltx
new file mode 100644
index 00000000000..101a5bd6125
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003j.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[bold-style=upright]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\GREEKmathbfup\]
+\[\GREEKmathbfit\]
+\[\greekmathbfup\]
+\[\greekmathbfit\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003k.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003k.ltx
new file mode 100644
index 00000000000..a8820f96cd4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003k.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[bold-style=upright]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbf\LATINmath\]
+\[\mathbf\LATINtext\]
+\[\mathbf\latinmath\]
+\[\mathbf\latintext\]
+\[\mathbf{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003l.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003l.ltx
new file mode 100644
index 00000000000..816465b3262
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003l.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[bold-style=upright]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbf\GREEKmath\]
+\[\mathbf\GREEKtext\]
+\[\mathbf\greekmath\]
+\[\mathbf\greektext\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003m.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003m.ltx
new file mode 100644
index 00000000000..0b53338cbc4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003m.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[bold-style=literal]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathbfup\]
+\[\LATINmathbfit\]
+\[\latinmathbfup\]
+\[\latinmathbfit\]
+\[\numbersmathbfup\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003n.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003n.ltx
new file mode 100644
index 00000000000..b846b3efea2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003n.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[bold-style=literal]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\GREEKmathbfup\]
+\[\GREEKmathbfit\]
+\[\greekmathbfup\]
+\[\greekmathbfit\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003o.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003o.ltx
new file mode 100644
index 00000000000..f66c7a1942f
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003o.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[bold-style=literal]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbf\LATINmath\]
+\[\mathbf\LATINtext\]
+\[\mathbf\latinmath\]
+\[\mathbf\latintext\]
+\[\mathbf{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003p.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003p.ltx
new file mode 100644
index 00000000000..0758e53180d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest003p.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[bold-style=literal]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbf\GREEKmath\]
+\[\mathbf\GREEKtext\]
+\[\mathbf\greekmath\]
+\[\mathbf\greektext\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004a.ltx
new file mode 100644
index 00000000000..e52a7177c3b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[sans-style=upright]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathsfup\]
+\[\LATINmathsfit\]
+\[\latinmathsfup\]
+\[\latinmathsfit\]
+\[\numbersmathsfup\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004b.ltx
new file mode 100644
index 00000000000..4e058413011
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004b.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[sans-style=upright]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathsf{\LATINtext}\]
+\[\mathsf{\LATINmath}\]
+\[\mathsf{\latintext}\]
+\[\mathsf{\latinmath}\]
+\[\mathsf{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004c.ltx
new file mode 100644
index 00000000000..9a24fb9b2f9
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004c.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[sans-style=italic]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathsfup\]
+\[\LATINmathsfit\]
+\[\latinmathsfup\]
+\[\latinmathsfit\]
+\[\numbersmathsfup\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004d.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004d.ltx
new file mode 100644
index 00000000000..5e59de81eee
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004d.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[sans-style=italic]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathsf{\LATINtext}\]
+\[\mathsf{\LATINmath}\]
+\[\mathsf{\latintext}\]
+\[\mathsf{\latinmath}\]
+\[\mathsf{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004e.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004e.ltx
new file mode 100644
index 00000000000..14fd11049b1
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004e.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[sans-style=literal]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathsfup\]
+\[\LATINmathsfit\]
+\[\latinmathsfup\]
+\[\latinmathsfit\]
+\[\numbersmathsfup\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004f.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004f.ltx
new file mode 100644
index 00000000000..e5de3fc8686
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest004f.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[sans-style=literal]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathsf{\LATINtext}\]
+\[\mathsf{\LATINmath}\]
+\[\mathsf{\latintext}\]
+\[\mathsf{\latinmath}\]
+\[\mathsf{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005a.ltx
new file mode 100644
index 00000000000..3b5b0ce2988
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[sans-style=upright]{unicode-math}
+\setmathfont{Code2001}
+\begin{document}
+\[\LATINmathbfsfup\]
+\[\LATINmathbfsfit\]
+\[\latinmathbfsfup\]
+\[\latinmathbfsfit\]
+\[\numbersmathbfsfup\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005b.ltx
new file mode 100644
index 00000000000..0f57b4a516d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005b.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[sans-style=upright]{unicode-math}
+\setmathfont{Code2001}
+\begin{document}
+\[\GREEKmathbfsfup\]
+\[\GREEKmathbfsfit\]
+\[\greekmathbfsfup\]
+\[\greekmathbfsfit\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005c.ltx
new file mode 100644
index 00000000000..3ed6a2c7ce2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005c.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[sans-style=upright]{unicode-math}
+\setmathfont{Code2001}
+\begin{document}
+\[\mathbfsf\LATINmath\]
+\[\mathbfsf\LATINtext\]
+\[\mathbfsf\latinmath\]
+\[\mathbfsf\latintext\]
+\[\mathbfsf{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005d.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005d.ltx
new file mode 100644
index 00000000000..784b40f67f7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005d.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[sans-style=upright]{unicode-math}
+\setmathfont{Code2001}
+\begin{document}
+\[\mathbfsf\GREEKmath\]
+\[\mathbfsf\GREEKtext\]
+\[\mathbfsf\greekmath\]
+\[\mathbfsf\greektext\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005e.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005e.ltx
new file mode 100644
index 00000000000..01c3f606b45
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005e.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[sans-style=italic]{unicode-math}
+\setmathfont{Code2001}
+\begin{document}
+\[\LATINmathbfsfup\]
+\[\LATINmathbfsfit\]
+\[\latinmathbfsfup\]
+\[\latinmathbfsfit\]
+\[\numbersmathbfsfup\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005f.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005f.ltx
new file mode 100644
index 00000000000..292e7c35bc0
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005f.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[sans-style=italic]{unicode-math}
+\setmathfont{Code2001}
+\begin{document}
+\[\GREEKmathbfsfup\]
+\[\GREEKmathbfsfit\]
+\[\greekmathbfsfup\]
+\[\greekmathbfsfit\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005g.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005g.ltx
new file mode 100644
index 00000000000..4fa9b07891e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005g.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[sans-style=italic]{unicode-math}
+\setmathfont{Code2001}
+\begin{document}
+\[\mathbfsf\LATINmath\]
+\[\mathbfsf\LATINtext\]
+\[\mathbfsf\latinmath\]
+\[\mathbfsf\latintext\]
+\[\mathbfsf{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005h.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005h.ltx
new file mode 100644
index 00000000000..08fef7aae97
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005h.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[sans-style=italic]{unicode-math}
+\setmathfont{Code2001}
+\begin{document}
+\[\mathbfsf\GREEKmath\]
+\[\mathbfsf\GREEKtext\]
+\[\mathbfsf\greekmath\]
+\[\mathbfsf\greektext\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005i.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005i.ltx
new file mode 100644
index 00000000000..95d871566bb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005i.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[sans-style=literal]{unicode-math}
+\setmathfont{Code2001}
+\begin{document}
+\[\LATINmathbfsfup\]
+\[\LATINmathbfsfit\]
+\[\latinmathbfsfup\]
+\[\latinmathbfsfit\]
+\[\numbersmathbfsfup\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005j.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005j.ltx
new file mode 100644
index 00000000000..2ac0f34ce13
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005j.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[sans-style=literal]{unicode-math}
+\setmathfont{Code2001}
+\begin{document}
+\[\GREEKmathbfsfup\]
+\[\GREEKmathbfsfit\]
+\[\greekmathbfsfup\]
+\[\greekmathbfsfit\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005k.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005k.ltx
new file mode 100644
index 00000000000..a6912432c61
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005k.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[sans-style=literal]{unicode-math}
+\setmathfont{Code2001}
+\begin{document}
+\[\mathbfsf\LATINmath\]
+\[\mathbfsf\LATINtext\]
+\[\mathbfsf\latinmath\]
+\[\mathbfsf\latintext\]
+\[\mathbfsf{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005l.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005l.ltx
new file mode 100644
index 00000000000..0d80cab5a5e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest005l.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage[sans-style=literal]{unicode-math}
+\setmathfont{Code2001}
+\begin{document}
+\[\mathbfsf\GREEKmath\]
+\[\mathbfsf\GREEKtext\]
+\[\mathbfsf\greekmath\]
+\[\mathbfsf\greektext\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010a.ltx
new file mode 100644
index 00000000000..2b1c9d94450
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010a.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathscr{\LATINtext}\]
+\[\mathscr{\latintext}\]
+\[\mathscr{\LATINmath}\]
+\[\mathscr{\latinmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010b.ltx
new file mode 100644
index 00000000000..361ca0bf993
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010b.ltx
@@ -0,0 +1,8 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathscr\]
+\[\latinmathscr\]
+\[\reservedmathscr\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010c.ltx
new file mode 100644
index 00000000000..7d188361a91
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010c.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathfrak{\LATINtext}\]
+\[\mathfrak{\latintext}\]
+\[\mathfrak{\LATINmath}\]
+\[\mathfrak{\latinmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010d.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010d.ltx
new file mode 100644
index 00000000000..51206a6caf5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest010d.ltx
@@ -0,0 +1,8 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathfrak\]
+\[\latinmathfrak\]
+\[\reservedmathfrak\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest011a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest011a.ltx
new file mode 100644
index 00000000000..79ae950c0b6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest011a.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathup{\LATINtext}\]
+\[\mathup{\latintext}\]
+\[\mathup{\LATINmath}\]
+\[\mathup{\latinmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest011b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest011b.ltx
new file mode 100644
index 00000000000..cfc5b7ba7ab
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest011b.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathup{\GREEKtext}\]
+\[\mathup{\greektext}\]
+\[\mathup{\GREEKmath}\]
+\[\mathup{\greekmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest012a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest012a.ltx
new file mode 100644
index 00000000000..06c6bc26202
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest012a.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathit{\LATINtext}\]
+\[\mathit{\latintext}\]
+\[\mathit{\LATINmath}\]
+\[\mathit{\latinmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest012b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest012b.ltx
new file mode 100644
index 00000000000..845a3211b6a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest012b.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathit{\GREEKtext}\]
+\[\mathit{\greektext}\]
+\[\mathit{\GREEKmath}\]
+\[\mathit{\greekmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013a.ltx
new file mode 100644
index 00000000000..0192f10d062
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013a.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbb{\LATINtext}\]
+\[\mathbb{\latintext}\]
+\[\mathbb{\LATINmath}\]
+\[\mathbb{\latinmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013b.ltx
new file mode 100644
index 00000000000..3c65d345ade
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013b.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbb{0123456789}\]
+\[\numbersmathbb\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013c.ltx
new file mode 100644
index 00000000000..415af4ec8bd
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013c.ltx
@@ -0,0 +1,8 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathbb\]
+\[\latinmathbb\]
+\[\reservedmathbb\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013d.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013d.ltx
new file mode 100644
index 00000000000..a00cf42d01b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013d.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{STIXGeneral}
+\begin{document}
+\[ \mathbb{πΠγΓ} \qquad \mathbb{𝜋𝛱𝛾𝛤} \]
+\[ \mathbb{\sum}_0^1 \]
+\[ \mathbb{∑}_0^1 \]
+\[ \Bbbsum_0^1 \]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013e.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013e.ltx
new file mode 100644
index 00000000000..f6ceed8dc86
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest013e.ltx
@@ -0,0 +1,6 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbbit{Ddeij}\qquad\mathbbit{𝐷𝑑𝑒𝑖𝑗}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest014a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest014a.ltx
new file mode 100644
index 00000000000..fc6f553987c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest014a.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathsfup{\LATINtext}\]
+\[\mathsfup{\latintext}\]
+\[\mathsfup{\LATINmath}\]
+\[\mathsfup{\latinmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest014b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest014b.ltx
new file mode 100644
index 00000000000..4149fc57e12
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest014b.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathsfup{0123456789}\]
+\[\numbersmathsfup\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest014c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest014c.ltx
new file mode 100644
index 00000000000..ba6189e418b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest014c.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathsfup\]
+\[\latinmathsfup\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest015a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest015a.ltx
new file mode 100644
index 00000000000..f973d4f3a34
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest015a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathsfit{\LATINtext}\]
+\[\mathsfit{\latintext}\]
+\[\mathsfit{\LATINmath}\]
+\[\mathsfit{\latinmath}\]
+\[\mathsfit{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest015b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest015b.ltx
new file mode 100644
index 00000000000..5e3c2b63211
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest015b.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathsfit\]
+\[\latinmathsfit\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest016a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest016a.ltx
new file mode 100644
index 00000000000..8b5b00a3ac7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest016a.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Asana Math}
+\begin{document}
+\[\mathtt{\LATINtext}\]
+\[\mathtt{\latintext}\]
+\[\mathtt{\LATINmath}\]
+\[\mathtt{\latinmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest016b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest016b.ltx
new file mode 100644
index 00000000000..ac4f9effd01
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest016b.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Asana Math}
+\begin{document}
+\[\mathtt{0123456789}\]
+\[\numbersmathtt\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest016c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest016c.ltx
new file mode 100644
index 00000000000..b9fd8b8d8b4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest016c.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Asana Math}
+\begin{document}
+\[\LATINmathtt\]
+\[\latinmathtt\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017a.ltx
new file mode 100644
index 00000000000..6802a577503
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017a.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbfscr{\LATINtext}\]
+\[\mathbfscr{\latintext}\]
+\[\mathbfscr{\LATINmath}\]
+\[\mathbfscr{\latinmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017b.ltx
new file mode 100644
index 00000000000..7f86f0b89b9
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017b.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathbfscr\]
+\[\latinmathbfscr\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017c.ltx
new file mode 100644
index 00000000000..979c07d7a59
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017c.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbffrak{\LATINtext}\]
+\[\mathbffrak{\latintext}\]
+\[\mathbffrak{\LATINmath}\]
+\[\mathbffrak{\latinmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017d.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017d.ltx
new file mode 100644
index 00000000000..ad8f3741270
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest017d.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\LATINmathbffrak\]
+\[\latinmathbffrak\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest018a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest018a.ltx
new file mode 100644
index 00000000000..54da5dfe0e8
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest018a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbfup{\LATINtext}\]
+\[\mathbfup{\latintext}\]
+\[\mathbfup{\LATINmath}\]
+\[\mathbfup{\latinmath}\]
+\[\mathbfup{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest018b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest018b.ltx
new file mode 100644
index 00000000000..177e9b3fd91
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest018b.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbfup{\GREEKtext}\]
+\[\mathbfup{\greektext}\]
+\[\mathbfup{\GREEKmath}\]
+\[\mathbfup{\greekmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest019a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest019a.ltx
new file mode 100644
index 00000000000..b41e0d188be
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest019a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbfit{\LATINtext}\]
+\[\mathbfit{\latintext}\]
+\[\mathbfit{\LATINmath}\]
+\[\mathbfit{\latinmath}\]
+\[\mathbfit{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest019b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest019b.ltx
new file mode 100644
index 00000000000..77ef28dd8aa
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest019b.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbfit{\GREEKtext}\]
+\[\mathbfit{\greektext}\]
+\[\mathbfit{\GREEKmath}\]
+\[\mathbfit{\greekmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest020a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest020a.ltx
new file mode 100644
index 00000000000..6e5f4fc09bb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest020a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbfsfit{\LATINtext}\]
+\[\mathbfsfit{\latintext}\]
+\[\mathbfsfit{\LATINmath}\]
+\[\mathbfsfit{\latinmath}\]
+\[\mathbfsfit{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest020b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest020b.ltx
new file mode 100644
index 00000000000..1af7bda0bb7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest020b.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{STIXGeneral-Bold}
+\begin{document}
+\[\mathbfsfup{\GREEKtext}\]
+\[\mathbfsfup{\greektext}\]
+\[\mathbfsfup{\GREEKmath}\]
+\[\mathbfsfup{\greekmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest021a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest021a.ltx
new file mode 100644
index 00000000000..6e5f4fc09bb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest021a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\mathbfsfit{\LATINtext}\]
+\[\mathbfsfit{\latintext}\]
+\[\mathbfsfit{\LATINmath}\]
+\[\mathbfsfit{\latinmath}\]
+\[\mathbfsfit{0123456789}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest021b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest021b.ltx
new file mode 100644
index 00000000000..5df9b942084
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest021b.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{STIXGeneral-BoldItalic}
+\begin{document}
+\[\mathbfsfit{\GREEKtext}\]
+\[\mathbfsfit{\greektext}\]
+\[\mathbfsfit{\GREEKmath}\]
+\[\mathbfsfit{\greekmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest030a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest030a.ltx
new file mode 100644
index 00000000000..e2235a6e08c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest030a.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{FreeSerif}
+\begin{document}
+\[Ϝϝ\]
+\[𝟊𝟋\]
+\[\mathup{Ϝϝ}\]
+\[\mathbf{Ϝϝ}\]
+\end{document}
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest031a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest031a.ltx
new file mode 100644
index 00000000000..6ec91773f00
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest031a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[nabla=upright] {unicode-math}
+\setmathfont{Free Serif}
+\begin{document}
+\[∇𝛻 \quad 𝛁𝜵 \quad 𝝯𝞩\]
+\[∇𝛻 \quad \mathbf{∇𝛻} \quad \mathbfsf{∇𝛻}\]
+\[\mathup{∇𝛻} \quad \mathit{∇𝛻}\]
+\[\mathbfup{∇𝛻} \quad \mathbfit{∇𝛻}\]
+\[\mathbfsfup{∇𝛻} \quad \mathbfsfit{∇𝛻}\]
+\end{document}
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest031b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest031b.ltx
new file mode 100644
index 00000000000..b195695b08e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest031b.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[nabla=italic] {unicode-math}
+\setmathfont{Free Serif}
+\begin{document}
+\[∇𝛻 \quad 𝛁𝜵 \quad 𝝯𝞩\]
+\[∇𝛻 \quad \mathbf{∇𝛻} \quad \mathbfsf{∇𝛻}\]
+\[\mathup{∇𝛻} \quad \mathit{∇𝛻}\]
+\[\mathbfup{∇𝛻} \quad \mathbfit{∇𝛻}\]
+\[\mathbfsfup{∇𝛻} \quad \mathbfsfit{∇𝛻}\]
+\end{document}
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest031c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest031c.ltx
new file mode 100644
index 00000000000..9807a182d11
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest031c.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[nabla=literal] {unicode-math}
+\setmathfont{Free Serif}
+\begin{document}
+\[∇𝛻 \quad 𝛁𝜵 \quad 𝝯𝞩\]
+\[∇𝛻 \quad \mathbf{∇𝛻} \quad \mathbfsf{∇𝛻}\]
+\[\mathup{∇𝛻} \quad \mathit{∇𝛻}\]
+\[\mathbfup{∇𝛻} \quad \mathbfit{∇𝛻}\]
+\[\mathbfsfup{∇𝛻} \quad \mathbfsfit{∇𝛻}\]
+\end{document}
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest032a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest032a.ltx
new file mode 100644
index 00000000000..5341492bd39
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest032a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[partial=upright]{unicode-math}
+\setmathfont{Asana Math}
+\begin{document}
+\[∂𝜕 \quad 𝛛𝝏 \quad 𝞉𝟃\]
+\[∂𝜕 \quad \mathbf{∂𝜕} \quad \mathbfsf{∂𝜕}\]
+\[\mathup{∂𝜕} \quad \mathit{∂𝜕}\]
+\[\mathbfup{∂𝜕} \quad \mathbfit{∂𝜕}\]
+\[\mathbfsfup{∂𝜕} \quad \mathbfsfit{∂𝜕}\]
+\end{document}
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest032b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest032b.ltx
new file mode 100644
index 00000000000..5a67d6ae0a3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest032b.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[partial=italic]{unicode-math}
+\setmathfont{Asana Math}
+\begin{document}
+\[∂𝜕 \quad 𝛛𝝏 \quad 𝞉𝟃\]
+\[∂𝜕 \quad \mathbf{∂𝜕} \quad \mathbfsf{∂𝜕}\]
+\[\mathup{∂𝜕} \quad \mathit{∂𝜕}\]
+\[\mathbfup{∂𝜕} \quad \mathbfit{∂𝜕}\]
+\[\mathbfsfup{∂𝜕} \quad \mathbfsfit{∂𝜕}\]
+\end{document}
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest032c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest032c.ltx
new file mode 100644
index 00000000000..ced2932f8d3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest032c.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage[partial=literal]{unicode-math}
+\setmathfont{Asana Math}
+\begin{document}
+\[∂𝜕 \quad 𝛛𝝏 \quad 𝞉𝟃\]
+\[∂𝜕 \quad \mathbf{∂𝜕} \quad \mathbfsf{∂𝜕}\]
+\[\mathup{∂𝜕} \quad \mathit{∂𝜕}\]
+\[\mathbfup{∂𝜕} \quad \mathbfit{∂𝜕}\]
+\[\mathbfsfup{∂𝜕} \quad \mathbfsfit{∂𝜕}\]
+\end{document}
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest033a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest033a.ltx
new file mode 100644
index 00000000000..7bc54cf0655
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest033a.ltx
@@ -0,0 +1,12 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\begin{document}
+\setmathfont[math-style=TeX]{Free Serif}
+\[ıȷ\quad 𝚤𝚥\]
+\[\mathup{ıȷ}\quad \mathup{𝚤𝚥}\]
+\[\mathit{ıȷ}\quad \mathit{𝚤𝚥}\]
+\setmathfont[math-style=upright]{Free Serif}
+\[ıȷ\quad 𝚤𝚥\]
+\[\mathup{ıȷ}\quad \mathup{𝚤𝚥}\]
+\[\mathit{ıȷ}\quad \mathit{𝚤𝚥}\]
+\end{document}
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100a.ltx
new file mode 100644
index 00000000000..02d67fa4ea5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100a.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[ \left( \left( \left( \left( \left( \left( x^2
+ \right)^2 \right)^2 \right)^2 \right)^2 \right)^2 \right) \]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100b.ltx
new file mode 100644
index 00000000000..7c2fc729287
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100b.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[ \left[ \left[ \left[ \left[ \left[ \left[ x^2
+ \right]^2 \right]^2 \right]^2 \right]^2 \right]^2 \right] \]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100c.ltx
new file mode 100644
index 00000000000..4f0963a13d9
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100c.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[ \left\{ \left\{ \left\{ \left\{ \left\{ \left\{ x^2
+ \right\}^2 \right\}^2 \right\}^2 \right\}^2 \right\}^2 \right\} \]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100d.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100d.ltx
new file mode 100644
index 00000000000..fc776937285
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100d.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[ \left| \left| \left| \left| \left| \left| x^2
+ \right|^2 \right|^2 \right|^2 \right|^2 \right|^2 \right| \]
+
+\[ \left\vert \left\vert \left\vert \left\vert \left\vert \left\vert x^2
+ \right\vert^2 \right\vert^2 \right\vert^2 \right\vert^2 \right\vert^2 \right\vert \]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100e.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100e.ltx
new file mode 100644
index 00000000000..471d165b962
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest100e.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[ \left‖ \left‖ \left‖ \left‖ \left‖ \left‖ x^2
+ \right‖^2 \right‖^2 \right‖^2 \right‖^2 \right‖^2 \right‖ \]
+
+\[ \left\Vert \left\Vert \left\Vert \left\Vert \left\Vert \left\Vert x^2
+ \right\Vert^2 \right\Vert^2 \right\Vert^2 \right\Vert^2 \right\Vert^2 \right\Vert \]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest101a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest101a.ltx
new file mode 100644
index 00000000000..499f862d74e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest101a.ltx
@@ -0,0 +1,8 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[ a>b \quad c<d \]
+\[ \left< \left< \left< \left< x \right>^2
+ \right>^2 \right>^2 \right>^2 \]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest102a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest102a.ltx
new file mode 100644
index 00000000000..eda889561eb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest102a.ltx
@@ -0,0 +1,13 @@
+\input{umtest-preamble}
+\usepackage[slash-delimiter=frac]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[ \left.\left[\begin{array}{cc}
+ a & b \\ c & d
+ \end{array}\right]
+ \middle/
+ \left[\begin{array}{cc}
+ 1 & 1 \\ 1 & 0
+ \end{array}\right]\right.
+\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest150a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest150a.ltx
new file mode 100644
index 00000000000..0cb4b301d3d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest150a.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{amsmath,unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\centerline{$\int\quad\idotsint$}
+\[\int\quad\idotsint\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest151a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest151a.ltx
new file mode 100644
index 00000000000..fc8c46ddd91
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest151a.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[ \hat i \qquad \hat x \qquad \hat M \qquad \hat {x+y} \]
+\[ \widehat i \qquad \widehat x \qquad \widehat M \qquad \widehat {x+y} \]
+\[ \tilde i \qquad \tilde x \qquad \tilde M \qquad \tilde {x+y} \]
+\[ \widetilde i \qquad \widetilde x \qquad \widetilde M \qquad \widetilde {x+y} \]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest200a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest200a.ltx
new file mode 100644
index 00000000000..a26791419ef
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest200a.ltx
@@ -0,0 +1,18 @@
+\input{umtest-preamble}
+\usepackage{amsmath,unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+ [${x\prime\prime\prime}$]
+ [${x\prime\prime\prime\prime\prime\prime}$]
+ [${x'}$]
+ [${x'''}$]
+ [${x''''''}$]
+ [${x′}$]
+ [${x′′′}$]
+ [${x′′'′\prime′}$]
+
+ $x⁗‴″′$
+ $x′″‴⁗$
+ $x″′$
+ $x‴$
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest200b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest200b.ltx
new file mode 100644
index 00000000000..60298e39d60
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest200b.ltx
@@ -0,0 +1,18 @@
+\input{umtest-preamble}
+\usepackage{amsmath,unicode-math}
+\setmathfont{Asana Math}
+\begin{document}
+ [${x\backprime\backprime\backprime}$]
+ [${x\backprime\backprime\backprime\backprime\backprime\backprime}$]
+ [${x`}$]
+ [${x```}$]
+ [${x``````}$]
+ [${x‵}$]
+ [${x‵‵‵}$]
+ [${x‵‵`‵\backprime‵}$]
+
+ $x`‵‶‷$
+ $x‷‶‵`$
+ $x‶‵$
+ $x‷$
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest201a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest201a.ltx
new file mode 100644
index 00000000000..84d41dd7598
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest201a.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[ \sqrt{\sin^{2}x+\cos^{2}x}=1 \]
+\[ \sqrt{1+\sqrt{1+\sqrt{1+\sqrt{1+x}}}}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest202a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest202a.ltx
new file mode 100644
index 00000000000..b6dc986f62b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest202a.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[a\colon b\qquad a: b
+ \qquad a^^^^2236 b\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest202b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest202b.ltx
new file mode 100644
index 00000000000..c4f159a85f4
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest202b.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage[colon=literal]{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[a\colon b\qquad a: b
+ \qquad a^^^^2236 b\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest203a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest203a.ltx
new file mode 100644
index 00000000000..caa793930e7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest203a.ltx
@@ -0,0 +1,7 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[a-b\]
+\[a\minus b\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest204a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest204a.ltx
new file mode 100644
index 00000000000..95a219a933d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest204a.ltx
@@ -0,0 +1,13 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\setlength\parskip{12pt}
+\begin{document}
+$x₀₁₂$ $x₁₂₃$ $x₂₃₄$ $x₃₄₅$ $x₄₅₆$ $x₅₆₇$ $x₆₇₈$ $x₇₈₉$ $x₈₉₊$
+
+$x₉₊₋$ $x₊₋₍$ $x₋₍₌$ $x₍₌₎$ $x₌₎ₐ$ $x₎ₐₑ$ $xₐₑₒ$ $xₑₒₓ$ $xₒₓ₀$ $xₓ₀₁$
+
+$x⁰ⁱ⁺⁾ⁿ²$ $xⁱ⁺⁾ⁿ²$ $xⁿ²$ $x²ⁱ⁺⁾ⁿ$
+
+$x₃₄²ⁱ⁺⁾ⁿ$
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest205a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest205a.ltx
new file mode 100644
index 00000000000..f5887be747d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest205a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[\iiint_V\]
+\removenolimits\iiint
+\[\iiint_V\]
+\addnolimits\iiint
+\[\iiint_V\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest206a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest206a.ltx
new file mode 100644
index 00000000000..08de9dee0aa
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest206a.ltx
@@ -0,0 +1,8 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[A+B+\dots+Z\]
+\[(A+B+\dots)\]
+\[(A+B+\cdots)\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest206b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest206b.ltx
new file mode 100644
index 00000000000..0f054b98c6b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest206b.ltx
@@ -0,0 +1,9 @@
+\input{umtest-preamble}
+\usepackage{amsmath}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[A+B+\dots+Z\]
+\[(A+B+\dots)\]
+\[(A+B+\cdots)\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest206c.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest206c.ltx
new file mode 100644
index 00000000000..3ed745d8c2e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest206c.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage{amsmath}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\[ a\percent b \% c \]
+\[ a\mathdollar b \$ c \]
+\[ a\ampersand b \& c \]
+\[ a\octothorpe b \# c \]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest207a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest207a.ltx
new file mode 100644
index 00000000000..0edbf0806bc
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest207a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage{amsmath}
+\usepackage{unicode-math}
+\setmathfont{Cambria Math}
+\begin{document}
+\unimathsetup{active-frac=normalsize}
+\[ ¼ ½ ¾ ⅐ ⅑ ⅒ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞ \]
+\unimathsetup{active-frac=small}
+\[ ¼ ½ ¾ ⅐ ⅑ ⅒ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞ \]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest300a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest300a.ltx
new file mode 100644
index 00000000000..694c33da949
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest300a.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont[script-font = {Asana Math},
+ script-features = {ScriptStyle,Colour=FF0000},
+ sscript-font = {Cambria Math},
+ sscript-features= {ScriptScriptStyle,Colour=0000FF}]
+ {Cambria Math}
+\begin{document}
+\[123456789^{123456789^{123456789}}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest400a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest400a.ltx
new file mode 100644
index 00000000000..014bfe1d35a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest400a.ltx
@@ -0,0 +1,18 @@
+\input{umtest-preamble}
+\usepackage[trace=on]{unicode-math}
+\setmainfont{TeX Gyre Pagella}
+\setsansfont{TeX Gyre Adventor}
+\setmonofont{TeX Gyre Cursor}
+\setmathfont{Cambria Math}
+\usepackage{url}
+\begin{document}
+\centering\obeylines
+\url{http://www.lmgtfy.com/}
+\url{?q="~!@#$%^&*()<>`'}
+\urlstyle{rm}
+\url{http://www.lmgtfy.com/}
+\url{?q="~!@#$%^&*()<>`'}
+\urlstyle{sf}
+\url{http://www.lmgtfy.com/}
+\url{?q="~!@#$%^&*()<>`'}
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest401a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest401a.ltx
new file mode 100644
index 00000000000..ae6c67abf76
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest401a.ltx
@@ -0,0 +1,11 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\begin{document}
+
+\[ x=1.23 \quad x=1,23\]
+
+\setmathfont{Cambria Math}
+
+\[ x=1.23 \quad x=1,23\]
+
+\end{document}
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest500a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest500a.ltx
new file mode 100644
index 00000000000..91eb7bcd520
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest500a.ltx
@@ -0,0 +1,14 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont[Colour=000000]{Cambria Math}
+\setmathfont[range={\mathop}, Colour=FF0000]{Cambria Math}
+\setmathfont[range={"3D}, Colour=009900]{Cambria Math}
+\setmathfont[range={\mathopen,\mathclose},
+ Colour=0000FF]{Cambria Math}
+\setlength\parskip{12pt}
+\begin{document}
+\[
+ F(s)=\mathscr{L}\left\{f(t)\right\}=
+ \int_0^\infty \mathup{e}^{-st}f(t)\,\mathup{d}t
+\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501a.ltx
new file mode 100644
index 00000000000..63add88fcc5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501a.ltx
@@ -0,0 +1,13 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont[Colour=000000]{Cambria Math}
+\setmathfont[range=\mathscr, Colour=FF0000]{Cambria Math}
+\setmathfont[range=\mathfrak, Colour=0000FF]{Cambria Math}
+\begin{document}
+\[\latintext\]
+\[\mathscr{\latintext}\]
+\[\mathfrak{\latintext}\]
+\[\LATINmath\]
+\[\mathscr{\LATINmath}\]
+\[\mathfrak{\LATINmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501b.ltx
new file mode 100644
index 00000000000..6aaca122253
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501b.ltx
@@ -0,0 +1,10 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont[Colour=000000]{Cambria Math}
+\setmathfont[range=\mathscr, Colour=FF0000]{TeX Gyre Chorus}
+\begin{document}
+\[\latintext\]
+\[\mathscr{\latintext}\]
+\[\LATINmath\]
+\[\mathscr{\LATINmath}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501d.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501d.ltx
new file mode 100644
index 00000000000..5bb0a0fb66d
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501d.ltx
@@ -0,0 +1,14 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont[Colour=330000]{Cambria Math}
+\setmathfont[range=\mathit/{latin}, Colour=660000]{Cambria Math}
+\setmathfont[range=\mathit/{Greek}, Colour=990000]{Cambria Math}
+\setmathfont[range=\mathit/{greek}, Colour=BB0000]{Cambria Math}
+\setmathfont[range=\mathup/{num}, Colour=EE0000]{Cambria Math}
+\begin{document}
+\[\mathit{\LATINtext}\]
+\[\mathit{\latintext}\]
+\[\mathit{\GREEKtext}\]
+\[\mathit{\greektext}\]
+\[0123456789\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501e.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501e.ltx
new file mode 100644
index 00000000000..b9470cd3618
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest501e.ltx
@@ -0,0 +1,26 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont[
+ range={
+ \mathit/{latin}->\mathbfup ,
+ \mathit/{Latin}->\mathsfup
+ }
+ ]{Cambria Math}
+\setmathfont[
+ range={
+ \mathup/{Greek}->\mathbfup ,
+ \mathit/{greek}->\mathbfit
+ },
+ Colour=990000
+ ]{Cambria Math}
+\begin{document}
+\vspace*{-1cm}
+\[\LATINtext\]
+\[\latintext\]
+\[\mathit{\LATINtext}\]
+\[\mathit{\latintext}\]
+\[{\GREEKtext}\]
+\[{\greektext}\]
+\[\mathup{\GREEKtext}\]
+\[\mathit{\greektext}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest502a.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest502a.ltx
new file mode 100644
index 00000000000..b1c897c069c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest502a.ltx
@@ -0,0 +1,21 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\setmathfont{STIXGeneral}
+\setmathfont
+ [range={\mathit,\mathsfit,\mathscr}]
+ {STIXGeneral-Italic}
+\setmathfont
+ [range={\mathbfup,\mathbffrak,
+ \mathbfsfup}]
+ {STIXGeneral-Bold}
+\setmathfont
+ [range={\mathbfit,\mathbfsfit,\mathbfscr}]
+ {STIXGeneral-BoldItalic}
+\begin{document}
+\[\mathit{A}\mathup{A}
+ \mathsfup{A}\mathsfit{A}\]
+\[\mathscr{A}\mathfrak{A}\mathbb{A}\]
+\[\mathbfup{A}\mathbfit{A}
+ \mathbfsfup{A}\mathbfsfit{A}\]
+\[\mathbfscr{A}\mathbffrak{A}\]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest502b.ltx b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest502b.ltx
new file mode 100644
index 00000000000..ab050d52225
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/testfiles/umtest502b.ltx
@@ -0,0 +1,19 @@
+\input{umtest-preamble}
+\usepackage{unicode-math}
+\begin{document}
+Default:
+\[
+(a+b)^2 = \sqrt{c+d}
+\]
+\setmathfont[range={\mathup}]{Linux Libertine}
+\setmathfont[range={\mathit}]{Linux Libertine Italic}
+Example of a non-math OpenType font:
+\[
+(a+b)^2 = \sqrt{c+d}
+\]
+With symbols:
+\setmathfont[range={`\+,`\=,`\(,`\)}]{Linux Libertine}
+\[
+(a+b)^2 = \sqrt{c+d}
+\]
+\end{document}
diff --git a/Master/texmf-dist/source/latex/unicode-math/unicode-math-testsuite.ltx b/Master/texmf-dist/source/latex/unicode-math/unicode-math-testsuite.ltx
new file mode 100644
index 00000000000..9082f0c045b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/unicode-math-testsuite.ltx
@@ -0,0 +1,38 @@
+\documentclass{article}
+\usepackage{xltxtra,fancyvrb,geometry,calc}
+\geometry{margin=2cm,a4paper}
+\setmainfont{TeX Gyre Pagella}
+\setmonofont{Consolas}
+
+\newcommand\inserttest[1]{%
+ \section{Test #1}
+ \begin{minipage}{0.5\textwidth}
+ \VerbatimInput{testfiles/umtest#1.ltx}
+ \end{minipage}
+ \hfill
+ \begin{minipage}{8cm+4pt}
+ \fboxsep=1pt
+ \fboxrule=1pt
+ \fbox{\includegraphics[width=8cm]{testfiles/umtest#1.safe.png}}
+ \end{minipage}
+}
+
+\pagestyle{empty}
+\begin{document}
+\title{The \textsf{unicode-math} test suite}
+\author{Will Robertson}
+\date{Compiled: \today}
+\maketitle
+\thispagestyle{empty}
+
+\section*{Preamble}
+
+\begin{minipage}{0.5\textwidth}
+The following pieces of output are generated from the code shown.
+As well as being good minimal examples, these tests are useful to ensure that new bugs don't affect old behaviour.
+When the test suite is run, the new output is compared pixel by pixel with that shown here and warnings produced if the outputs are not identical.
+\end{minipage}
+
+\input{testfiles/umtest-suite.tex}
+
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/unicode-math/unicode-math.dtx b/Master/texmf-dist/source/latex/unicode-math/unicode-math.dtx
new file mode 100644
index 00000000000..ac8271416b2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/unicode-math.dtx
@@ -0,0 +1,5138 @@
+% \iffalse
+% ^^A %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% ^^A SELF-EXTRACTION BEGINS HERE
+% ^^A %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*internal>
+\begingroup
+\input docstrip.tex
+\keepsilent
+\preamble
+Copyright 2006-2010 by Will Robertson <will.robertson@latex-project.org>
+
+This package is free software and may be redistributed and/or modified under
+the conditions of the LaTeX Project Public License, version 1.3c or higher
+(your choice): <http://www.latex-project.org/lppl/>.
+
+This work is "author-maintained" by Will Robertson.
+\endpreamble
+\nopostamble
+\askforoverwritefalse
+\generate{\file{unicode-math.sty}{\from{unicode-math.dtx}{package}}}
+\nopreamble
+\def\tempa{plain}
+\ifx\tempa\fmtname\endgroup\expandafter\bye\fi
+\generate{\file{dtx-style.sty}{\from{\jobname.dtx}{dtx-style}}}
+\endgroup
+\ProvidesFile{unicode-math.dtx}
+%</internal>
+%<package>\ProvidesPackage{unicode-math}
+%<*package>
+ [2010/06/03 v0.5 Unicode maths in XeLaTeX]
+%</package>
+%<*internal>
+\documentclass{ltxdoc}
+\usepackage{dtx-style}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</internal>
+% \fi
+%
+% ^^A %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% ^^A DOCUMENTATION BEGINS HERE
+% ^^A %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \title{Experimental Unicode mathematical typesetting: The \pkg{unicode-math} package}
+% \author{Will Robertson\\\texttt{will.robertson@latex-project.org}}
+% \date{\umfiledate \qquad \umfileversion}
+%
+% \maketitle
+%
+% \begin{abstract}
+% \noindent
+% \begingroup
+% \bfseries
+% Warning! This package is experimental and subject to change without regard
+% for backwards compatibility.
+% Performance issues may be encountered until algorithms are refined.
+% \endgroup
+%
+% (But don't take the warning too seriously, either.
+% I hope the package is now ready to use.)
+%
+% This is the first release of the \pkg{unicode-math} package, which is
+% intended to be a complete implementation of Unicode
+% maths for \LaTeX\ using the \XeTeX\ and Lua\TeX\ typesetting engines.
+% With this package, changing maths fonts will be as easy as changing
+% text fonts --- not that there are many Unicode maths fonts yet.
+% Maths input can also be simplified with Unicode since literal glyphs may be
+% entered instead of control sequences in your document source.
+%
+% The package is fulled tested under \XeTeX, but Lua\TeX\ support is not
+% yet complete. User beware, but let me know of any troubles.
+%
+% Alongside this documentation file, you should be able to find a minimal
+% example demonstrating the use of the package,
+% `\texttt{unimath-example.ltx}'. It also comes with a separate document,
+% `\texttt{unimath-symbols.pdf}',
+% containing a complete listing of mathematical symbols defined by
+% \pkg{unicode-math}.
+%
+% Finally, while the STIX fonts may be used with this package, accessing
+% their alphabets in their `private user area' is not yet supported.
+% (Of these additional alphabets there is a separate caligraphic design
+% distinct to the script design already included.)
+% Better support for the STIX fonts is planned for an upcoming revision of the
+% package after any problems have been ironed out with the initial version.
+%
+% \end{abstract}
+%
+% \newpage
+% \tableofcontents
+%
+% \newpage
+% \section{Introduction}
+%
+% This document describes the \pkg{unicode-math} package, which is an
+% \emph{experimental} implementation of a macro to Unicode glyph encoding for
+% mathematical characters. Its intended use is for \XeTeX, although it is
+% conjectured that some effect could be spent to create a cross-format
+% package that would also work with Lua\TeX.
+%
+% Users who desire to specify maths alphabets only (Greek and Latin letters,
+% and Arabic numerals)
+% may wish to use Andrew Moschou's \pkg{mathspec} package instead.
+%
+% \section{Acknowledgements}
+%
+% Many thanks to:
+% Microsoft for developing the mathematics extension to OpenType as part of
+% Microsoft Office~2007;
+% Jonathan Kew for implementing Unicode math support in \XeTeX;
+% Barbara Beeton for her prodigious effort compiling the definitive list of Unicode math
+% glyphs and their \LaTeX\ names (inventing them where necessary), and also
+% for her thoughtful replies to my sometimes incessant questions.
+% Ross Moore and Chris Rowley have provided moral and technical support
+% from the very early days with great insight into the issues we face trying
+% to extend and use \TeX\ in the future.
+% Apostolos Syropoulos, Joel Salomon, Khaled Hosny, and Mariusz Wodzicki
+% have been fantastic beta testers.
+%
+% \section{Getting started}
+%
+% Load \pkg{unicode-math} as a regular \LaTeX\ package. It should be loaded
+% after any other maths or font-related package in case it needs to overwrite
+% their definitions. Here's an example:
+% \begin{quote}
+% \begin{verbatim}
+% \usepackage{amsmath} % if desired
+% \usepackage{unicode-math}
+% \setmathfont{Cambria Math}
+% \end{verbatim}
+% \end{quote}
+%
+% \subsection{Package options}
+% Package options may be set when the package as loaded or at any later
+% stage with the \cs{unimathsetup} command. Therefore, the following two
+% examples are equivalent:
+% \begin{quote}
+% \begin{verbatim}
+% \usepackage[math-style=TeX]{unicode-math}
+% % OR
+% \usepackage{unicode-math}
+% \unimathsetup{math-style=TeX}
+% \end{verbatim}
+% \end{quote}
+% Note, however, that some package options affects how maths is initialised
+% and changing an option such as |math-style| will not take effect until a
+% new maths font is set up.
+%
+% Package options may \emph{also} be used when declaring new maths fonts,
+% passed via options to the \cs{setmathfont} command.
+% Therefore, the following two examples are equivalent:
+% \begin{quote}
+% \begin{verbatim}
+% \unimathsetup{math-style=TeX}
+% \setmathfont{Cambria Math}
+% % OR
+% \setmathfont[math-style=TeX]{Cambria Math}
+% \end{verbatim}
+% \end{quote}
+%
+% A short list of package options is shown in \tabref{pkgopt}.
+% See following sections for more information.
+%
+% \begin{table}\centering
+% \topcaption{Package options.}
+% \tablabel{pkgopt}
+% \begin{tabular}{lll}
+% \toprule
+% Option & Description & See\dots \\
+% \midrule
+% |math-style| & Style of letters & \secref{math-style} \\
+% |bold-style| & Style of bold letters & \secref{bold-style} \\
+% |sans-style| & Style of sans serif letters & \secref{sans-style} \\
+% |nabla| & Style of the nabla symbol & \secref{nabla} \\
+% |partial| & Style of the partial symbol & \secref{partial} \\
+% |vargreek-shape| & Style of phi and epsilon & \secref{vargreek-shape} \\
+% |colon| & Behaviour of \cs{colon} & \secref{colon} \\
+% |slash-delimiter| & Glyph to use for `stretchy' slash & \secref{slash-delimiter} \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \subsection{Known issues}
+%
+% In some cases, \XeTeX's math support is either missing or I have not
+% discovered how to access features for various types of maths construct.
+% An example of this are horizontal extensible symbols, such as underbraces,
+% overbraces, and arrows that can grow longer if necessary. Behaviour with
+% such symbols is not necessarily going to be consistent; please report
+% problem areas to me.
+%
+% \LaTeX's concept of math `versions' is not yet supported. The only way to
+% get bold maths is to add markup for it all. This is still an area that
+% requires investigation.
+%
+% Symbols for maths characters have been inherited from the STIX project and
+% may change slightly in the long term. We have tried to preserve backwards
+% compatibility with \LaTeX\ conventions as best as possible; again, please
+% report areas of concern.
+%
+% \section{Unicode maths font setup}
+%
+% In the ideal case, a single Unicode font will contain all maths glyphs we
+% need. The file |unicode-math-table.tex| (based on Barbara Beeton's \STIX\ table)
+% provides the mapping between Unicode
+% maths glyphs and macro names (all 3298 — or however many — of them!). A
+% single command
+% \codeline{\cmd\setmathfont\oarg{font features}\marg{font name}}
+% implements this for every every symbol and alphabetic variant.
+% That means |x| to $x$, |\xi| to $\xi$, |\leq| to $\leq$, etc., |\mathcal{H}|
+% to $\mathcal{H}$ and so on, all for Unicode glyphs within a single font.
+%
+% This package deals well with Unicode characters for maths
+% input. This includes using literal Greek letters in formulae,
+% resolving to upright or italic depending on preference.
+%
+% Font features specific to \pkg{unicode-math} are shown in \tabref{mathfontfeatures}.
+% Package options (see \tabref{pkgopt}) may also be used.
+% Other \pkg{fontspec} features are also valid.
+%
+% \begin{table}\centering
+% \topcaption{Maths font options.}
+% \tablabel{mathfontfeatures}
+% \begin{tabular}{lll}
+% \toprule
+% Option & Description & See\dots \\
+% \midrule
+% |range| & Style of letters & \secref{range} \\
+% |script-font| & Font to use for sub- and super-scripts & \secref{sscript} \\
+% |script-features| & Font features for sub- and super-scripts & \secref{sscript} \\
+% |sscript-font| & Font to use for nested sub- and super-scripts & \secref{sscript} \\
+% |sscript-features| & Font features for nested sub- and super-scripts & \secref{sscript} \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \subsection{Using multiple fonts}
+% \seclabel{range}
+%
+% There will probably be few cases where a single Unicode maths font suffices
+% (simply due to glyph coverage). The upcoming \STIX\ font comes to mind as a
+% possible exception. It will therefore be necessary to delegate specific
+% Unicode ranges of glyphs to separate fonts:
+% \codeline{\cmd\setmathfont|[range=|\meta{unicode range}|,|\meta{font features}|]|\marg{font name}}
+% where \meta{unicode range} is a comma-separated list of Unicode slots and
+% ranges such as |{"27D0-"27EB,"27FF,"295B-"297F}|. You may also use the macro
+% for accessing the glyph, such as \cs{int}, or whole collection of symbols with
+% the same math type, such as \cs{mathopen}, or complete math alphabets such as \cs{mathbb}.
+% (Only numerical slots, however, can be used in ranged declarations.)
+%
+% \subsubsection{Control over maths alphabets}
+%
+% Exact control over maths alphabets can be somewhat involved.
+% Here is the current plan.
+% \begin{itemize}
+% \item |[range=\mathbb]| to use the font for `bb' letters only.
+% \item |[range=\mathbfsfit/{greek,Greek}]| for Greek lowercase and uppercase only (with |latin|, |Latin|, |num| as well for Latin lower-/upper-case and numbers).
+% \item |[range=\mathsfit->\mathbfsfit]| to map to different output alphabet(s) (which is rather useless right now but will become less useless in the future).
+% \end{itemize}
+%
+% And now the trick.
+% If a particular math alphabet is not defined in the font, fall back onto the lower-base plane (i.e., upright) glyphs.
+% Therefore, to use an \ascii-encoded fractur font, for example, write
+% \par{\centering|\setmathfont[range=\mathfrak]{SomeFracturFont}|\par}\noindent
+% and because the math plane fractur glyphs will be missing, \pkg{unicode-math} will know to use the \ascii\ ones instead.
+% If necessary (but why?) this behaviour can be forced with |[range=\mathfrac->\mathup]|.
+%
+%
+% \subsection{Script and scriptscript fonts/features}
+% \seclabel{sscript}
+%
+% Cambria Math uses OpenType font features to activate smaller optical sizes
+% for scriptsize and scriptscriptsize symbols (the $B$ and $C$, respectively,
+% in $A_{B_C}$). Other fonts will possibly use entirely separate fonts.
+%
+% Not yet implemented: Both of these options
+% must be taken into account. I hope this will be mostly automatic from the
+% users' points of view. The |+ssty| feature can be detected and applied
+% automatically, and appropriate optical size information embedded in the
+% fonts will ensure this latter case. Fine tuning should be possible
+% automatically with \pkg{fontspec} options. We might have to wait until
+% MnMath, for example, before we really know.
+%
+% \section{Maths input}
+%
+% \XeTeX's Unicode support allows maths input through two methods. Like
+% classical \TeX, macros such as \cmd\alpha, \cmd\sum, \cmd\pm, \cmd\leq, and
+% so on, provide verbose access to the entire repertoire of characters defined
+% by Unicode. The literal characters themselves may be used instead, for more
+% readable input files.
+%
+% \subsection{Math `style'}
+% \seclabel{math-style}
+%
+% Classically, \TeX\ uses italic lowercase Greek letters and \emph{upright}
+% uppercase Greek letters for variables in mathematics. This is contrary to
+% the \textsc{iso} standards of using italic forms for both upper- and lowercase.
+% Furthermore, the French (contrary again, \emph{quelle surprise}) have been
+% known to use upright uppercase \emph{Latin} letters as well as upright
+% upper- and lowercase Greek. Finally, it is not unknown to use upright letters
+% for all characters, as seen in the Euler fonts.
+%
+% The \pkg{unicode-math} package accommodates these possibilities with an
+% interface heavily inspired by Walter Schmidt's \pkg{lucimatx} package: a
+% package option \opt{math-style} that takes one of four arguments:
+% \opt{TeX}, \opt{ISO}, \opt{french}, or \opt{upright}.
+%
+% The philosophy behind the interface to the mathematical alphabet symbols
+% lies in \LaTeX's attempt of separating content and formatting. Because input
+% source text may come from a variety of places, the upright and
+% `mathematical' italic Latin and Greek alphabets are \emph{unified} from the
+% point of view of having a specified meaning in the source text. That is, to
+% get a mathematical ‘$x$’, either the ascii (`keyboard') letter |x| may
+% be typed, or the actual Unicode character may be used. Similarly for Greek
+% letters. The upright or italic forms are then chosen based on the
+% |math-style| package option.
+%
+% If glyphs are desired that do not map as per the package option (for
+% example, an upright `g' is desired but typing |$g$| yields `$g$'),
+% \emph{markup} is required to specify this; to follow from the example:
+% |\mathup{g}|. Maths alphabets commands such as \cmd\mathup\ are detailed
+% later.
+%
+% \paragraph{Alternative interface}
+% However, some users may not like this convention of normalising their input.
+% For them, an upright |x| is an upright `x' and that's that.
+% (This will be the case when obtaining source text from copy/pasting PDF or
+% Microsoft Word documents, for example.)
+% For these users, the |literal| option to |math-style| will effect this behaviour.
+%
+% The \opt{math-style} options' effects are shown in brief in \tabref{math-style}.
+%
+% \begin{table}
+% \centering
+% \topcaption{Effects of the \opt{math-style} package option.}
+% \tablabel{math-style}
+% \begin{tabular}{@{}>{\ttfamily}lcc@{}}
+% \toprule
+% & \multicolumn{2}{c}{Example} \\
+% \cmidrule(l){2-3}
+% \rmfamily Package option & Latin & Greek \\
+% \midrule
+% math-style=ISO & $(a,z,B,X)$ & $\mathit{(\alpha,\beta,\Gamma,\Xi)}$ \\
+% math-style=TeX & $(a,z,B,X)$ & $(\mathit\alpha,\mathit\beta,\mathup\Gamma,\mathup\Xi)$ \\
+% math-style=french & $(a,z,\mathup B,\mathup X)$ & $(\mathup\alpha,\mathup\beta,\mathup\Gamma,\mathup\Xi)$ \\
+% math-style=upright & $(\mathup a,\mathup z,\mathup B,\mathup X)$ & $(\mathup\alpha,\mathup\beta,\mathup\Gamma,\mathup\Xi)$ \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+%
+% \subsection{Bold style}
+% \seclabel{bold-style}
+%
+% Similar as in the previous section, ISO standards differ somewhat to \TeX's
+% conventions (and classical typesetting) for `boldness' in mathematics. In
+% the past, it has been customary to use bold \emph{upright} letters to denote
+% things like vectors and matrices. For example, \( \mathbfup{M} =
+% (\mitM_x,\mitM_y,\mitM_z) \). Presumably, this was due to the relatively
+% scarcity of bold italic fonts in the pre-digital typesetting era. It has
+% been suggested that \emph{italic} bold symbols are used nowadays instead.
+%
+% Bold Greek letters have simply been bold variant glyphs of their regular
+% weight, as in \( \mbfitxi = (\mitxi_\mitr,\mitxi_\mitphi,\mitxi_\mittheta)
+% \). Confusingly, the syntax in \LaTeX\ has been different for these two
+% examples: \cmd\mathbf\ in the former (`$\mathbfup{M}$'), and \cmd\bm\ (or
+% \cmd\boldsymbol, deprecated) in the latter (`$\mbfitxi$').
+%
+% In \pkg{unicode-math}, the \cmd\mathbf\ command works directly with both
+% Greek and Latin maths alphabet characters and depending on package option
+% either switches to upright for Latin letters (|bold-style=TeX|) as well or
+% keeps them italic (|bold-style=ISO|).
+%
+% To match the package options for non-bold characters, for
+% |bold-style=upright| all bold characters are upright, and
+% |bold-style=literal| does not change the upright/italic shape of the letter.
+%
+% Upright and italic bold mathematical letters input as direct Unicode
+% characters are normalised with the same rules. For example, with
+% |bold-style=TeX|, a literal bold italic latin character will be typeset
+% upright.
+%
+% Note that \opt{bold-style} is independent of \opt{math-style}, although if
+% the former is not specified then sensible defaults are chosen based on the
+% latter.
+%
+% The \opt{bold-style} options' effects are shown in brief in
+% \tabref{bold-style}.
+%
+% \begin{table}
+% \centering
+% \topcaption{Effects of the \opt{bold-style} package option.}
+% \tablabel{bold-style}
+% \begin{tabular}{@{}>{\ttfamily}lcc@{}}
+% \toprule
+% & \multicolumn{2}{c}{Example} \\
+% \cmidrule(l){2-3}
+% \rmfamily Package option & Latin & Greek \\
+% \midrule
+% bold-style=ISO & $(\mathbfit a, \mathbfit z, \mathbfit B, \mathbfit X)$ & $(\mathbfit\alpha, \mathbfit\beta, \mathbfit\Gamma, \mathbfit\Xi)$ \\
+% bold-style=TeX & $(\mathbfup a,\mathbfup z,\mathbfup B,\mathbfup X)$ & $(\mathbfit\alpha, \mathbfit\beta,\mathbfup \Gamma,\mathbfup \Xi)$ \\
+% bold-style=upright & $(\mathbfup a,\mathbfup z,\mathbfup B,\mathbfup X)$ & $(\mathbfup \alpha,\mathbfup \beta,\mathbfup \Gamma,\mathbfup \Xi)$ \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+%
+% \subsection{Sans serif style}
+% \seclabel{sans-style}
+%
+% Unicode contains upright and italic, medium and bold mathematical alphabet characters.
+% These may be explicitly selected with the \cs{mathsfup}, \cs{mathsfit}, \cs{mathbfsfup}, and \cs{mathbfsfit}
+% commands discussed in \secref{all-math-alphabets}.
+%
+% How should the generic \cs{mathsf} behave? Unlike bold, sans serif is used much more sparingly
+% in mathematics. I've seen recommendations to typeset tensors in sans serif italic
+% or sans serif italic bold (e.g., examples in the \pkg{isomath} and \pkg{mattens} packages).
+% But \LaTeX's \cs{mathsf} is \textsl{upright} sans serif.
+%
+% Therefore I reluctantly add the package options |[sans-style=upright]| and |[sans-style=italic]| to control the behaviour of \cs{mathsf}.
+% The |upright| style sets up the command to use the seemingly-useless upright sans serif, including Greek;
+% the |italic| style switches to using italic in both Latin and Greek alphabets.
+% In other words, this option simply changes the meaning of \cs{mathsf} to either \cs{mathsfup} or \cs{mathsfit}, respectively.
+% Please let me know if more granular control is necessary here.
+%
+% There is also a |[sans-style=literal]| setting, set automatically with |[math-style=literal]|, which retains the uprightness of the input characters used when selecting the sans serif output.
+%
+% \subsubsection{What about bold sans serif?}
+%
+% While you might want your bold upright and your sans serif italic, I don't believe you'd also want
+% your bold sans serif upright (or all vice versa, if that's even conceivable). Therefore, bold sans
+% serif follows from the setting for sans serif; it is completely independent of the setting for bold.
+%
+% In other words, \cs{mathbfsf} is \cs{mathbfsfup} or \cs{mathbfsfit} based on |[sans-style=upright]| or |[sans-style=italic]|, respectively. And |[sans-style=literal]| causes \cs{mathbfsf} to retain the same italic or upright shape as the input, and turns it bold sans serif.
+%
+% Note well! There is no medium-weight sans serif Greek alphabet in Unicode; therefore, |\mathsf{\alpha}| does not make sense (simply produces `$\mathsf{\alpha}$') while |\mathbfsf{\alpha}| gives `$\mathsf{\alpha}$'.
+%
+% \subsection{All (the rest) of the mathematical alphabets}
+% \seclabel{all-math-alphabets}
+%
+% Unicode contains separate codepoints for most if not all variations of alphabet
+% shape one may wish to use in mathematical notation. The complete list is shown
+% in \tabref{mathalphabets}. Some of these have been covered in the previous sections.
+%
+% At present, the math font switching commands do not nest; therefore if you want
+% sans serif bold, you must write |\mathsfbf{...}| rather than |\mathbf{\mathsf{...}}|.
+% This may change in the future.
+%
+% \begin{table}
+% \caption{Mathematical alphabets defined in Unicode. Black dots indicate an alphabet exists in the font specified; grey dots indicate shapes that should always be taken from the upright font even in the italic style. See main text for description of \cs{mathbbit}.}
+% \tablabel{mathalphabets}
+% \centering
+% \def\Y{\textbullet}
+% \def\M{\textcolor{gray}{\textbullet}}
+% \begin{tabular}{@{} lll l ccc @{}}
+% \toprule
+% \multicolumn{3}{c}{Font} & & \multicolumn{3}{c}{Alphabet} \\
+% \cmidrule(r){1-3}
+% \cmidrule(l){5-7}
+% Style & Shape & Series & Switch & Latin & Greek & Numerals \\
+% \midrule
+% Serif & Upright & Normal & \cs{mathup} & \Y & \Y & \Y \\
+% & & Bold & \cs{mathbfup} & \Y & \Y & \Y \\
+% & Italic & Normal & \cs{mathit} & \Y & \Y & \M \\
+% & & Bold & \cs{mathbfit} & \Y & \Y & \M \\
+% Sans serif & Upright & Normal & \cs{mathsfup} & \Y & & \Y \\
+% & Italic & Normal & \cs{mathsfit} & \Y & & \M \\
+% & Upright & Bold & \cs{mathsfbfup} & \Y & \Y & \Y \\
+% & Italic & Bold & \cs{mathsfbfit} & \Y & \Y & \M \\
+% Typewriter & Upright & Normal & \cs{mathtt} & \Y & & \Y \\
+% Double-struck & Upright & Normal & \cs{mathbb} & \Y & & \Y \\
+% & Italic & Normal & \cs{mathbbit} & \Y & & \\
+% Script & Upright & Normal & \cs{mathscr} & \Y & & \\
+% & & Bold & \cs{matbfscr} & \Y & & \\
+% Fraktur & Upright & Normal & \cs{mathfrak} & \Y & & \\
+% & & Bold & \cs{mathbffrac} & \Y & & \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \subsubsection{Double-struck}
+%
+% The double-struck alphabet (also known as `blackboard bold') consists of
+% upright Latin letters $\{\mathbb{a}$--$\mathbb{z}$,$\mathbb{A}$$\mathbb{Z}\}$,
+% numerals $\mathbb{0}$--$\mathbb{9}$, summation symbol $\mathbb\sum$, and four
+% Greek letters only: $\{\mathbb{\gamma\pi\Gamma\Pi}\}$.
+%
+% While |\mathbb{\sum}| does produce a double-struck summation symbol,
+% its limits aren't properly aligned. Therefore,
+% either the literal character or the control sequence \cs{Bbbsum} are
+% recommended instead.
+%
+% There are also five Latin \emph{italic} double-struck letters: $\mathbbit{Ddeij}$.
+% These can be accessed (if not with their literal characters or control sequences)
+% with the \cs{mathbbit} alphabet switch, but note that only those five letters
+% will give the expected output.
+%
+%
+%
+% \subsection{Miscellanea}
+%
+%
+% \subsubsection{Nabla}
+% \seclabel{nabla}
+%
+% The symbol $\nabla$ comes in the six forms shown in \tabref{nabla}.
+% We want an individual option to specify whether we want upright or italic
+% nabla by default (when either upright or italic nabla is used in the
+% source). \TeX\ classically uses an upright nabla, and \textsc{iso}
+% standards agree with this convention.
+% The package options |nabla=upright| and
+% |nabla=italic| switch between the two choices, and |nabla=literal| respects
+% the shape of the input character. This is then inherited
+% through \cmd\mathbf; \cmd\mathit\ and \cmd\mathup\ can be used to force one
+% way or the other.
+%
+% |nabla=italic| is the default. |nabla=literal| is
+% activated automatically after |math-style=literal|.
+%
+% \begin{table}
+% \centering
+% \topcaption{The various forms of nabla.}
+% \tablabel{nabla}
+% \let \tmpshow\empty
+% \begin{tabular}{@{}llc@{}}
+% \toprule
+% \multicolumn{2}{@{}l}{Description} & Glyph
+% \\ \cmidrule(r){1-2}\cmidrule(l){3-3}
+% Upright & Serif & $\mathup\nabla$ \\
+% & Bold serif & $\mathup\mbfnabla$ \\
+% & Bold sans & \fontspec{STIXGeneral-BoldItalic}\char"1D76F \\
+% \cmidrule(lr){1-2}\cmidrule(lr){3-3}
+% Italic & Serif & $\mathit\nabla$ \\
+% & Bold serif & $\mathbfit\nabla$ \\
+% & Bold sans & \fontspec{STIXGeneral-Bold}\char"1D7A9 \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \subsubsection{Partial}
+% \seclabel{partial}
+%
+% The same applies to the symbols \unichar{2202} partial differential and
+% \unichar{1D715} math italic partial differential.
+%
+% At time of writing, both the Cambria Math and STIX fonts display these
+% two glyphs in the same italic style, but this is hopefully a bug that will
+% be corrected in the future~--- the `plain' partial differential should
+% really have an upright shape.
+%
+% Use the |partial=upright| or |partial=italic| package options to specify
+% which one you would like, or |partial=literal| to have the same character
+% used in the output as was used for the input.
+% The default is (always, unless someone requests and
+% argues otherwise) |partial=italic|.\footnote{A good argument would revolve
+% around some international standards body recommending upright over italic.
+% I just don't have the time right now to look it up.} |partial=literal|
+% is activated following |math-style=literal|.
+%
+% See \tabref{partial} for the variations on the partial differential symbol.
+%
+% \begin{table}
+% \centering
+% \topcaption{The various forms of the partial differential. Note that in
+% the fonts used to display these glyphs, the first upright partial is
+% incorrectly shown in an italic style.}
+% \tablabel{partial}
+% \begin{tabular}{@{}llc@{}}
+% \toprule
+% \multicolumn{2}{@{}l}{Description} & Glyph
+% \\ \cmidrule(r){1-2}\cmidrule(l){3-3}
+% Regular & Upright & $\mathup\partial$ \\
+% & Italic & $\mathit\partial$ \\
+% Bold & Upright & $\mathbfup\partial$ \\
+% & Italic & $\mathbfit\partial$ \\
+% Sans bold & Upright & \umfont\char"1D789 \\
+% & Italic & \umfont\char"1D7C3 \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \subsubsection{Epsilon and phi: $\epsilon$ vs.\ $\varepsilon$ and $\phi$ vs.\ $\varphi$}
+% \seclabel{vargreek-shape}
+%
+% \TeX\ defines \cs{epsilon} to look like $\varepsilon$ and \cs{varepsilon} to
+% look like $\epsilon$. The Unicode glyph directly after delta and before zeta
+% is `epsilon' and looks like $\epsilon$; there is a subsequent variant of
+% epsilon that looks like $\varepsilon$. This creates a problem. People who
+% use Unicode input won't want their glyphs transforming; \TeX\ users will be
+% confused that what they think as `normal epsilon' is actual the `variant
+% epsilon'. And the same problem exists for `phi'.
+%
+% We have a package option to control this behaviour.
+% With |vargreek-shape=TeX|,
+% \cs{phi} and \cs{epsilon} produce $\phi$ and $\epsilon$ and
+% \cs{varphi} and \cs{varepsilon} produce $\varphi$ and $\varepsilon$.
+% With |vargreek-shape=unicode|, these symbols are swapped.
+% Note, however, that Unicode characters are not affected by this option.
+% That is, no remapping occurs of the characters/glyphs, only the control sequences.
+%
+% The package default is to use |vargreek-shape=TeX|.
+%
+% \subsubsection{Primes}
+%
+% Primes ($x'$) may be input in several ways. You may use any combination
+% of \ascii\ straight quote (\texttt{\char`\'}), Unicode prime \unichar{2032}
+% ($'$), and \cs{prime}; when multiple primes occur next to each other, they chain
+% together to form double, triple, or quadruple primes if the font contains
+% pre-drawn glyphs. These may also be accessed with \cs{dprime},
+% \cs{trprime}, and \cs{qprime}, respectively.
+%
+% If the font does not contain the pre-drawn glyphs or more than four primes
+% are used, the single prime glyph is used multiple times with a negative
+% kern to get the spacing right. There is no user interface to adjust this
+% negative kern yet (because I haven't decided what it should look like);
+% if you need to, write something like this:
+% \begin{verbatim}
+% \ExplSyntaxOn
+% \muskip_gset:Nn \g_um_primekern_muskip { -\thinmuskip/2 }
+% \ExplySyntaxOff
+% \end{verbatim}
+%
+% Backwards or reverse primes behave in exactly the same way; use any of \ascii\
+% back tick (\texttt{\char`\`}), Unicode reverse prime \unichar{2035}
+% ({\umfont\char"2035}), or \cs{backprime} to access it.
+% Multiple backwards primes can also be called with \cs{backdprime},
+% \cs{backtrprime}, and \cs{backqprime}.
+%
+% If you ever need to enter the straight quote |'| or the backtick |`| in
+% maths mode, these glyphs can be accessed with \cs{mathstraightquote} and
+% \cs{mathbacktick}.
+%
+% \subsubsection{Unicode subscripts and superscripts}
+%
+% You may, if you wish, use Unicode subscripts and superscripts in your
+% source document. For basic expressions, the use of these characters
+% can make the input more readable.
+% Adjacent sub- or super-scripts will be concatenated into a single
+% expression.
+%
+% The range of subscripts and superscripts supported by this package
+% are shown in \figref{superscripts,subscripts}. Please request more if
+% you think it is appropriate.
+%
+% \begin{figure}\centering
+% \fbox{\fontspec{Charis SIL}\Large
+% A
+% ^^^^2070
+% ^^^^00b9
+% ^^^^00b2
+% ^^^^00b3
+% ^^^^2074
+% ^^^^2075
+% ^^^^2076
+% ^^^^2077
+% ^^^^2078
+% ^^^^2079
+% ^^^^207a
+% ^^^^207b
+% ^^^^207c
+% ^^^^207d
+% ^^^^207e
+% ^^^^2071
+% ^^^^207f
+% Z}
+% \caption{
+% The Unicode superscripts supported as input characters.
+% These are the literal glyphs from Charis SIL,
+% not the output seen when used for maths input.
+% The `A' and `Z' are to provide context for the size and
+% location of the superscript glyphs.
+% }
+% \figlabel{superscripts}
+% \end{figure}
+%
+% \begin{figure}\centering
+% \fbox{\fontspec{Charis SIL}\Large
+% A
+% ^^^^2080
+% ^^^^2081
+% ^^^^2082
+% ^^^^2083
+% ^^^^2084
+% ^^^^2085
+% ^^^^2086
+% ^^^^2087
+% ^^^^2088
+% ^^^^2089
+% ^^^^208a
+% ^^^^208b
+% ^^^^208c
+% ^^^^208d
+% ^^^^208e
+% ^^^^2090
+% ^^^^2091
+% ^^^^1d62
+% ^^^^2092
+% ^^^^1d63
+% ^^^^1d64
+% ^^^^1d65
+% ^^^^2093
+% ^^^^1d66
+% ^^^^1d67
+% ^^^^1d68
+% ^^^^1d69
+% ^^^^1d6a
+% Z}
+% \caption{
+% The Unicode subscripts supported as input characters.
+% See note from \figref{superscripts}.
+% }
+% \figlabel{subscripts}
+% \end{figure}
+%
+% \subsubsection{Colon}
+% \seclabel{colon}
+%
+% The colon is one of the few confusing characters of Unicode maths.
+% In \TeX, \texttt{:} is defined as a colon with relation spacing: `$a:b$'.
+% While \cs{colon} is defined as a colon with punctuation spacing: `$a\colon b$'.
+%
+% In Unicode, \unichar{003A} {colon} is defined as a punctuation symbol,
+% while \unichar{2236} {ratio} is the colon-like symbol used in mathematics to denote
+% ratios and other things.
+%
+% This breaks the usual straightforward mapping from control sequence to Unicode input character
+% to (the same) Unicode glyph.
+%
+% To preserve input compatibility, we remap the \ascii\ input character `\texttt{:}' to \unichar{2236}.
+% Typing a literal \unichar{2236} char will result in the same output.
+% If \pkg{amsmath} is loaded, then the definition of \cs{colon} is inherited from there
+% (it looks like a punctuation colon with additional space around it).
+% Otherwise, \cs{colon} is made to output a colon with \cs{mathpunct} spacing.
+%
+% The package option |colon=literal| forces \ascii\ input `|:|' to be printed as \cs{mathcolon} instead.
+%
+%
+% \subsubsection{Slashes and backslashes}
+% \seclabel{slash-delimiter}
+%
+% There are several slash-like symbols defined in Unicode. The complete list is shown in \tabref{slashes}.
+%
+% \begin{table}\centering
+% \caption{Slashes and backslashes.}
+% \tablabel{slashes}
+% \begin{tabular}{@{}cl@{}cl@{}}
+% \toprule
+% Slot & Name & Glyph & Command \\
+% \midrule
+% \unichar{002F} & \textsc{solidus} & \umfont \char"002F & \cs{slash} \\
+% \unichar{2044} & \textsc{fraction slash} & \umfont \char"2044 & \cs{fracslash} \\
+% \unichar{2215} & \textsc{division slash} & \umfont \char"2215 & \cs{divslash} \\
+% \unichar{29F8} & \textsc{big solidus} & \umfont \char"29F8 & \cs{xsol} \\
+% \midrule
+% \unichar{005C} & \textsc{reverse solidus} & \umfont \char"005C & \cs{backslash} \\
+% \unichar{2216} & \textsc{set minus} & \umfont \char"2216 & \cs{smallsetminus} \\
+% \unichar{29F5} & \textsc{reverse solidus operator}& \umfont \char"29F5 & \cs{setminus} \\
+% \unichar{29F9} & \textsc{big reverse solidus} & \umfont \char"29F9 & \cs{xbsol} \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% In regular \LaTeX\ we can write \cs{left}\cs{slash}\dots\cs{right}\cs{backslash}
+% and so on and obtain extensible delimiter-like symbols. Not all of the Unicode slashes
+% are suitable for this (and do not have the font support to do it).
+%
+% \paragraph{Slash}
+%
+% Of \unichar{2044} {fraction slash}, TR25 says that it is:
+% \begin{quote}
+% \dots used to build up simple fractions in running text\dots
+% however parsers of mathematical texts should be prepared to handle fraction slash
+% when it is received from other sources.
+% \end{quote}
+%
+% \unichar{2215} {division slash} should be used when division is represented
+% without a built-up fraction; $\pi\approx22/7$, for example.
+%
+% \unichar{29F8} {big solidus} is a `big operator' (like $\sum$).
+%
+% \paragraph{Backslash}
+%
+% The \unichar{005C} {reverse solidus} character \cs{backslash} is used for denoting
+% double cosets: $A\backslash B$. (So I'm led to believe.)
+% It may be used as a `stretchy' delimiter if supported by the font.
+%
+% MathML uses \unichar{2216} {set minus} like this: $A\smallsetminus B$.\footnote{\S4.4.5.11 \url{http://www.w3.org/TR/MathML3/}}
+% The \LaTeX\ command name \cs{smallsetminus} is used for backwards compatibility.
+%
+% Presumably, \unichar{29F5} {reverse solidus operator} is intended to
+% be used in a similar way, but it could also (perhaps?) be used to
+% represent `inverse division': $\pi\approx7\mathbin{\backslash}22$.^^A
+% \footnote{This is valid syntax in the Octave and Matlab programming languages,
+% in which it means matrix inverse pre-multiplication. I.e., $A\mathbin{\backslash} B\equiv A^{-1}B$.}
+% The \LaTeX\ name for this character is \cs{setminus}.
+%
+% Finally, \unichar{29F9} {big reverse solidus} is a `big operator' (like $\sum$).
+%
+% \paragraph{How to use all of these things}
+%
+% Unfortunately, font support for the above characters/glyphs is rather inconsistent.
+% In Cambria Math, the only slash that grows (say when writing
+% \[
+% \left.\left[\begin{array}{cc} a & b \\ c & d\end{array}\right]\middle\slash
+% \left[\begin{array}{cc} 1 & 1 \\ 1 & 0\end{array}\right] \right.\quad )
+% \]
+% is the \textsc{fraction slash}, which we just established above is
+% sort of only supposed to be used in text.
+%
+% Of the above characters, the following are allowed to be used after
+% \cs{left}, \cs{middle}, and \cs{right}:
+% \begin{itemize}
+% \item \cs{solidus};
+% \item \cs{fracslash};
+% \item \cs{slash}; and,
+% \item \cs{backslash} (the only reverse slash).
+% \end{itemize}
+%
+% However, we assume that there is only \emph{one} stretchy slash
+% in the font; this is assumed by default to be \unichar{002F} {solidus}.
+% Writing \cs{left/} or \cs{left}\cs{slash} or \cs{left}{fracslash}
+% will all result in the same stretchy delimiter being used.
+%
+% The delimiter used can be changed with the |slash-delimiter| package option.
+% Allowed values are |ascii|, |frac|, and |div|, corresponding to the respective
+% Unicode slots.
+%
+% For example: as mentioned above, Cambria Math's stretchy slash is
+% \unichar{2044} {fraction slash}. When using Cambria Math, then
+% \pkg{unicode-math} should be loaded with the |slash-delimiter=frac| option.
+% (This should be a font option rather than a package option, but
+% it will change soon.)
+%
+% \subsubsection{Pre-drawn fraction characters}
+%
+% Pre-drawn fractions \unichar{00BC}--\unichar{00BE}, \unichar{2150}--\unichar{215E}
+% are not suitable for use in mathematics output. However, they can be useful
+% as input characters to abbreviate common fractions.
+%
+% \centerline{\fontspec{Calibri}
+% ¼ ½ ¾ ⅐ ⅑ ⅒ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞}
+%
+% For example, instead of writing `|\tfrac12 x|', it's more readable to have
+% `|½x|' in the source instead.
+%
+% If the \cs{tfrac} command exists (i.e., if \pkg{amsmath} is loaded or
+% you have specially defined \cs{tfrac} for this purpose), it will be used
+% to typeset the fractions. If not, regular \cs{frac} will be used. The command
+% to use (\cs{tfrac} or \cs{frac}) can be forced either way with the package
+% option |active-frac=small| or |active-frac=normalsize|, respectively.
+%
+% \subsubsection{Circles}
+%
+% Unicode defines a large number of different types of circles for a variety
+% of mathematical purposes. There are thirteen alone just considering the
+% all white and all black ones, shown in \tabref{circles}.
+%
+% \LaTeX\ defines considerably fewer: \cs{circ} and cs{bigcirc} for white;
+% \cs{bullet} for black. This package maps those commands to \cs{vysmwhtcircle},
+% \cs{mdlgwhtcircle}, and \cs{smblkcircle}, respectively.
+%
+% \begin{table}
+% \def\showchar#1#2#3{ \textsc{u}+{\small\ttfamily #1} & \texttt{\string#3} & \umfont \char"#1 \\}
+% \begin{tabular}{@{}llc@{}}
+% \toprule
+% Slot & Command & Glyph \\
+% \midrule
+% \showchar{00B7}{centerdot}{\cdotp}
+% \showchar{22C5}{small middle dot}{\cdot}
+% \showchar{2219}{bullet operator}{\vysmblkcircle}
+% \showchar{2022}{round bullet, filled}{\smblkcircle}
+% \showchar{2981}{z notation spot}{\mdsmblkcircle}
+% \showchar{26AB}{medium black circle}{\mdblkcircle}
+% \showchar{25CF}{circle, filled}{\mdlgblkcircle}
+% \showchar{2B24}{black large circle}{\lgblkcircle}
+% \bottomrule
+% \end{tabular}
+% \def\showchar#1#2#3{ \umfont \char"#1 & \texttt{\string#3} & \textsc{u}+{\small\ttfamily #1} \\}
+% \begin{tabular}{@{}cll@{}}
+% \toprule
+% Glyph & Command & Slot \\
+% \midrule
+% \\
+% \\
+% \showchar{2218}{composite function (small circle)}{\vysmwhtcircle}
+% \showchar{25E6}{white bullet}{\smwhtcircle}
+% \showchar{26AC}{medium small white circle}{\mdsmwhtcircle}
+% \showchar{26AA}{medium white circle}{\mdwhtcircle}
+% \showchar{25CB}{large circle}{\mdlgwhtcircle}
+% \showchar{25EF}{large circle}{\lgwhtcircle}
+% \bottomrule
+% \end{tabular}
+% \caption{Filled and hollow Unicode circles.}
+% \tablabel{circles}
+% \end{table}
+%
+% \subsubsection{Triangles}
+%
+% While there aren't as many different sizes of triangle as there are circle,
+% there's some important distinctions to make between a few similar characters.
+% Namely, $\triangle$ and $\vartriangle$ and $\increment$ and $\mathup\Delta$.
+% See \tabref{uptriangles} for the full summary.
+%
+% These triangles all have different intended meanings. Note for backwards
+% compatibility with \TeX, \unichar{25B3} has \emph{two} different mappings
+% in \pkg{unicode-math}. \cs{bigtriangleup} is intended as a binary operator
+% whereas \cs{triangle} is intended to be used as a letter-like symbol.
+%
+% But you're better off if you're using the latter form to indicate an
+% increment to use the glyph intended for this purpose: $\increment x$.
+%
+% Finally, given that $\triangle$ and $\increment$ are provided for you
+% already, it is better off to only use upright Greek Delta $\Delta$ if you're
+% actually using it as a symbolic entity such as a variable on its own.
+%
+% \begin{table}
+% \begin{tabular}{@{}llcl@{}}
+% \toprule
+% Slot & Command & Glyph & Class \\
+% \midrule
+% \unichar{25B5} & \cs{vartriangle} & \umfont \char"25B5 & binary \\
+% \unichar{25B3} & \cs{bigtriangleup} & \umfont \char"25B3 & binary \\
+% \unichar{25B3} & \cs{triangle} & \umfont \char"25B3 & ordinary \\
+% \unichar{2206} & \cs{increment} & \umfont \char"2206 & ordinary \\
+% \unichar{0394} & \cs{mathup}\cs{Delta} & \umfont \char"0394 & ordinary \\
+% \bottomrule
+% \end{tabular}
+% \caption{Different upwards pointing triangles.}
+% \tablabel{uptriangles}
+% \end{table}
+%
+% \iffalse
+% \subsubsection{Normalising some input characters}
+%
+% I believe
+% all variant forms should be used as legal input that is normalised to
+% a consistent output glyph, because we want to be fault-tolerant in the input.
+% Here are the duplicates:
+% \begin{quote}\obeylines
+% \unichar {251} {latin small letter alpha}
+% \unichar {25B} {latin small letter epsilon}
+% \unichar {263} {latin small letter gamma}
+% \unichar {269} {latin small letter iota}
+% \unichar {278} {latin small letter phi}
+% \unichar {28A} {latin small letter upsilon}
+% \unichar {190} {latin capital letter epsilon}
+% \unichar {194} {latin capital letter gamma}
+% \unichar {196} {latin capital letter iota}
+% \unichar {1B1} {latin capital letter upsilon}
+% \end{quote}
+%
+% (Not yet implemented.)
+% \fi
+%
+%
+% \StopEventually{}
+%
+% \part{The \pkg{unicode-math} package}
+%\iffalse
+%<*package>
+%\fi
+%
+% \section{Things we need}
+%
+% \begin{macrocode}
+\usepackage{ifxetex,ifluatex}
+\ifxetex\else\ifluatex\else
+ \PackageError{unicode-math}{%
+ Cannot be run with pdfLaTeX!\MessageBreak
+ Use XeLaTeX or LuaLaTeX instead.%
+ }\@ehd
+\fi\fi
+% \end{macrocode}
+%
+% \paragraph{Packages}
+% \begin{macrocode}
+\RequirePackage{expl3}[2009/08/12]
+\RequirePackage{xparse}[2009/08/31]
+\RequirePackage{l3keys2e}
+\RequirePackage{fontspec}[2010/05/18]
+% \end{macrocode}
+%
+% Start using \LaTeX3 --- finally!
+% \begin{macrocode}
+\ExplSyntaxOn
+\@ifclassloaded{memoir}{
+ \cs_set_eq:NN \um_after_pkg:nn \AtEndPackage
+}{
+ \RequirePackage{scrlfile}
+ \cs_set_eq:NN \um_after_pkg:nn \AfterPackage
+}
+% \end{macrocode}
+%
+% \paragraph{Extra \pkg{expl3} variants}
+% \begin{macrocode}
+\cs_generate_variant:Nn \tl_put_right:Nn {cx}
+\cs_generate_variant:Nn \seq_if_in:NnTF {NV}
+\cs_generate_variant:Nn \prop_gput:Nnn {Nxn}
+\cs_generate_variant:Nn \prop_get:NnN {cxN}
+\cs_generate_variant:Nn \prop_if_in:NnTF {cx}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Npn \exp_args:NNcc #1#2#3#4 {
+ \exp_after:wN #1 \exp_after:wN #2
+ \cs:w #3 \exp_after:wN \cs_end:
+ \cs:w #4 \cs_end:
+}
+% \end{macrocode}
+%
+%
+% \paragraph{Conditionals}
+% \begin{macrocode}
+\bool_new:N \l_um_fontspec_feature_bool
+\bool_new:N \l_um_ot_math_bool
+\bool_new:N \l_um_init_bool
+\bool_new:N \l_um_implicit_alph_bool
+% \end{macrocode}
+% For \opt{math-style}:
+% \begin{macrocode}
+\bool_new:N \g_um_literal_bool
+\bool_new:N \g_um_upLatin_bool
+\bool_new:N \g_um_uplatin_bool
+\bool_new:N \g_um_upGreek_bool
+\bool_new:N \g_um_upgreek_bool
+% \end{macrocode}
+% For \opt{bold-style}:
+% \begin{macrocode}
+\bool_new:N \g_um_bfliteral_bool
+\bool_new:N \g_um_bfupLatin_bool
+\bool_new:N \g_um_bfuplatin_bool
+\bool_new:N \g_um_bfupGreek_bool
+\bool_new:N \g_um_bfupgreek_bool
+% \end{macrocode}
+% For \opt{sans-style}:
+% \begin{macrocode}
+\bool_new:N \g_um_upsans_bool
+\bool_new:N \g_um_sfliteral_bool
+% \end{macrocode}
+% For assorted package options:
+% \begin{macrocode}
+\bool_new:N \g_um_upNabla_bool
+\bool_new:N \g_um_uppartial_bool
+\bool_new:N \g_um_literal_Nabla_bool
+\bool_new:N \g_um_literal_partial_bool
+\bool_new:N \g_um_texgreek_bool
+\bool_new:N \l_um_smallfrac_bool
+\bool_new:N \g_um_literal_colon_bool
+% \end{macrocode}
+%
+% \paragraph{Variables}
+% \begin{macrocode}
+\int_new:N \g_um_fam_int
+% \end{macrocode}
+%
+% \begin{macrocode}
+\tl_set:Nn \g_um_math_alphabet_name_latin_tl {Latin,~lowercase}
+\tl_set:Nn \g_um_math_alphabet_name_Latin_tl {Latin,~uppercase}
+\tl_set:Nn \g_um_math_alphabet_name_greek_tl {Greek,~lowercase}
+\tl_set:Nn \g_um_math_alphabet_name_Greek_tl {Greek,~uppercase}
+\tl_set:Nn \g_um_math_alphabet_name_num_tl {Numerals}
+\tl_set:Nn \g_um_math_alphabet_name_misc_tl {Misc.}
+% \end{macrocode}
+%
+% \subsection{Extras}
+%
+% \begin{macro}{\um_glyph_if_exist:nTF}
+%: TODO: Generalise for arbitrary fonts! \cs{\l_um_font} is not always the one used for a specific glyph!!
+% \begin{macrocode}
+\prg_new_conditional:Nnn \um_glyph_if_exist:n {p,TF,T,F} {
+ \etex_iffontchar:D \l_um_font #1 \scan_stop:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+}
+\cs_generate_variant:Nn \um_glyph_if_exist_p:n {c}
+\cs_generate_variant:Nn \um_glyph_if_exist:nTF {c}
+\cs_generate_variant:Nn \um_glyph_if_exist:nT {c}
+\cs_generate_variant:Nn \um_glyph_if_exist:nF {c}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Compatibility with Lua\TeX}
+%
+% \begin{macrocode}
+\xetex_or_luatex:nnn { \cs_new:Npn \um_cs_compat:n #1 }
+ { \cs_set_eq:cc {U#1} {XeTeX#1} }
+ { \cs_set_eq:cc {U#1} {luatexU#1} }
+\um_cs_compat:n {mathcode}
+\um_cs_compat:n {delcode}
+\um_cs_compat:n {mathcodenum}
+\um_cs_compat:n {mathcharnum}
+\um_cs_compat:n {mathchardef}
+\um_cs_compat:n {radical}
+\um_cs_compat:n {mathaccent}
+\um_cs_compat:n {delimiter}
+% \end{macrocode}
+%
+% \subsubsection{Function variants}
+%
+% \begin{macrocode}
+\cs_generate_variant:Nn \fontspec_select:nn {x}
+% \end{macrocode}
+%
+% \subsection{Alphabet Unicode positions}
+%
+% Before we begin, let's define the positions of the various Unicode
+% alphabets so that our code is a little more readable.\footnote{`\textsc{u.s.v.}' stands
+% for `Unicode scalar value'.}
+%
+% Rather than `readable', in the end, this makes the code more extensible.
+% \begin{macrocode}
+\cs_new:Npn \usv_set:nnn #1#2#3 {
+ \tl_set:cn { \um_to_usv:nn {#1}{#2} } {#3}
+}
+\cs_new:Npn \um_to_usv:nn #1#2 { g_um_#1_#2_usv }
+% \end{macrocode}
+% \paragraph{Alphabets}
+% \begin{macrocode}
+\usv_set:nnn {up}{num}{48}
+\usv_set:nnn {up}{Latin}{65}
+\usv_set:nnn {up}{latin}{97}
+\usv_set:nnn {up}{Greek}{"391}
+\usv_set:nnn {up}{greek}{"3B1}
+\usv_set:nnn {it}{Latin}{"1D434}
+\usv_set:nnn {it}{latin}{"1D44E}
+\usv_set:nnn {it}{Greek}{"1D6E2}
+\usv_set:nnn {it}{greek}{"1D6FC}
+\usv_set:nnn {bb}{num}{"1D7D8}
+\usv_set:nnn {bb}{Latin}{"1D538}
+\usv_set:nnn {bb}{latin}{"1D552}
+\usv_set:nnn {scr}{Latin}{"1D49C}
+\usv_set:nnn {scr}{latin}{"1D4B6}
+\usv_set:nnn {frak}{Latin}{"1D504}
+\usv_set:nnn {frak}{latin}{"1D51E}
+\usv_set:nnn {sf}{num}{"1D7E2}
+\usv_set:nnn {sfup}{num}{"1D7E2}
+\usv_set:nnn {sfit}{num}{"1D7E2}
+\usv_set:nnn {sfup}{Latin}{"1D5A0}
+\usv_set:nnn {sf}{Latin}{"1D5A0}
+\usv_set:nnn {sfup}{latin}{"1D5BA}
+\usv_set:nnn {sf}{latin}{"1D5BA}
+\usv_set:nnn {sfit}{Latin}{"1D608}
+\usv_set:nnn {sfit}{latin}{"1D622}
+\usv_set:nnn {tt}{num}{"1D7F6}
+\usv_set:nnn {tt}{Latin}{"1D670}
+\usv_set:nnn {tt}{latin}{"1D68A}
+% \end{macrocode}
+% Bold:
+% \begin{macrocode}
+\usv_set:nnn {bf}{num}{"1D7CE}
+\usv_set:nnn {bfup}{num}{"1D7CE}
+\usv_set:nnn {bfit}{num}{"1D7CE}
+\usv_set:nnn {bfup}{Latin}{"1D400}
+\usv_set:nnn {bfup}{latin}{"1D41A}
+\usv_set:nnn {bfup}{Greek}{"1D6A8}
+\usv_set:nnn {bfup}{greek}{"1D6C2}
+\usv_set:nnn {bfit}{Latin}{"1D468}
+\usv_set:nnn {bfit}{latin}{"1D482}
+\usv_set:nnn {bfit}{Greek}{"1D71C}
+\usv_set:nnn {bfit}{greek}{"1D736}
+\usv_set:nnn {bffrak}{Latin}{"1D56C}
+\usv_set:nnn {bffrak}{latin}{"1D586}
+\usv_set:nnn {bfscr}{Latin}{"1D4D0}
+\usv_set:nnn {bfscr}{latin}{"1D4EA}
+\usv_set:nnn {bfsf}{num}{"1D7EC}
+\usv_set:nnn {bfsfup}{num}{"1D7EC}
+\usv_set:nnn {bfsfit}{num}{"1D7EC}
+\usv_set:nnn {bfsfup}{Latin}{"1D5D4}
+\usv_set:nnn {bfsfup}{latin}{"1D5EE}
+\usv_set:nnn {bfsfup}{Greek}{"1D756}
+\usv_set:nnn {bfsfup}{greek}{"1D770}
+\usv_set:nnn {bfsfit}{Latin}{"1D63C}
+\usv_set:nnn {bfsfit}{latin}{"1D656}
+\usv_set:nnn {bfsfit}{Greek}{"1D790}
+\usv_set:nnn {bfsfit}{greek}{"1D7AA}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {bfsf}{Latin}{ \bool_if:NTF \g_um_upLatin_bool \g_um_bfsfup_Latin_usv \g_um_bfsfit_Latin_usv }
+\usv_set:nnn {bfsf}{latin}{ \bool_if:NTF \g_um_uplatin_bool \g_um_bfsfup_latin_usv \g_um_bfsfit_latin_usv }
+\usv_set:nnn {bfsf}{Greek}{ \bool_if:NTF \g_um_upGreek_bool \g_um_bfsfup_Greek_usv \g_um_bfsfit_Greek_usv }
+\usv_set:nnn {bfsf}{greek}{ \bool_if:NTF \g_um_upgreek_bool \g_um_bfsfup_greek_usv \g_um_bfsfit_greek_usv }
+\usv_set:nnn {bf}{Latin}{ \bool_if:NTF \g_um_bfupLatin_bool \g_um_bfup_Latin_usv \g_um_bfit_Latin_usv }
+\usv_set:nnn {bf}{latin}{ \bool_if:NTF \g_um_bfuplatin_bool \g_um_bfup_latin_usv \g_um_bfit_latin_usv }
+\usv_set:nnn {bf}{Greek}{ \bool_if:NTF \g_um_bfupGreek_bool \g_um_bfup_Greek_usv \g_um_bfit_Greek_usv }
+\usv_set:nnn {bf}{greek}{ \bool_if:NTF \g_um_bfupgreek_bool \g_um_bfup_greek_usv \g_um_bfit_greek_usv }
+% \end{macrocode}
+% Greek variants:
+% \begin{macrocode}
+\usv_set:nnn {up}{varTheta}{"3F4}
+\usv_set:nnn {up}{Digamma}{"3DC}
+\usv_set:nnn {up}{varepsilon}{"3F5}
+\usv_set:nnn {up}{vartheta}{"3D1}
+\usv_set:nnn {up}{varkappa}{"3F0}
+\usv_set:nnn {up}{varphi}{"3D5}
+\usv_set:nnn {up}{varrho}{"3F1}
+\usv_set:nnn {up}{varpi}{"3D6}
+\usv_set:nnn {up}{digamma}{"3DD}
+% \end{macrocode}
+% Bold:
+% \begin{macrocode}
+\usv_set:nnn {bfup}{varTheta}{"1D6B9}
+\usv_set:nnn {bfup}{Digamma}{"1D7CA}
+\usv_set:nnn {bfup}{varepsilon}{"1D6DC}
+\usv_set:nnn {bfup}{vartheta}{"1D6DD}
+\usv_set:nnn {bfup}{varkappa}{"1D6DE}
+\usv_set:nnn {bfup}{varphi}{"1D6DF}
+\usv_set:nnn {bfup}{varrho}{"1D6E0}
+\usv_set:nnn {bfup}{varpi}{"1D6E1}
+\usv_set:nnn {bfup}{digamma}{"1D7CB}
+% \end{macrocode}
+% Italic Greek variants:
+% \begin{macrocode}
+\usv_set:nnn {it}{varTheta}{"1D6F3}
+\usv_set:nnn {it}{varepsilon}{"1D716}
+\usv_set:nnn {it}{vartheta}{"1D717}
+\usv_set:nnn {it}{varkappa}{"1D718}
+\usv_set:nnn {it}{varphi}{"1D719}
+\usv_set:nnn {it}{varrho}{"1D71A}
+\usv_set:nnn {it}{varpi}{"1D71B}
+% \end{macrocode}
+% Bold italic:
+% \begin{macrocode}
+\usv_set:nnn {bfit}{varTheta}{"1D72D}
+\usv_set:nnn {bfit}{varepsilon}{"1D750}
+\usv_set:nnn {bfit}{vartheta}{"1D751}
+\usv_set:nnn {bfit}{varkappa}{"1D752}
+\usv_set:nnn {bfit}{varphi}{"1D753}
+\usv_set:nnn {bfit}{varrho}{"1D754}
+\usv_set:nnn {bfit}{varpi}{"1D755}
+% \end{macrocode}
+% Bold sans:
+% \begin{macrocode}
+\usv_set:nnn {bfsfup}{varTheta}{"1D767}
+\usv_set:nnn {bfsfup}{varepsilon}{"1D78A}
+\usv_set:nnn {bfsfup}{vartheta}{"1D78B}
+\usv_set:nnn {bfsfup}{varkappa}{"1D78C}
+\usv_set:nnn {bfsfup}{varphi}{"1D78D}
+\usv_set:nnn {bfsfup}{varrho}{"1D78E}
+\usv_set:nnn {bfsfup}{varpi}{"1D78F}
+% \end{macrocode}
+% Bold sans italic:
+% \begin{macrocode}
+\usv_set:nnn {bfsfit}{varTheta} {"1D7A1}
+\usv_set:nnn {bfsfit}{varepsilon}{"1D7C4}
+\usv_set:nnn {bfsfit}{vartheta} {"1D7C5}
+\usv_set:nnn {bfsfit}{varkappa} {"1D7C6}
+\usv_set:nnn {bfsfit}{varphi} {"1D7C7}
+\usv_set:nnn {bfsfit}{varrho} {"1D7C8}
+\usv_set:nnn {bfsfit}{varpi} {"1D7C9}
+% \end{macrocode}
+% Nabla:
+% \begin{macrocode}
+\usv_set:nnn {up} {Nabla}{"02207}
+\usv_set:nnn {it} {Nabla}{"1D6FB}
+\usv_set:nnn {bfup} {Nabla}{"1D6C1}
+\usv_set:nnn {bfit} {Nabla}{"1D735}
+\usv_set:nnn {bfsfup}{Nabla}{"1D76F}
+\usv_set:nnn {bfsfit}{Nabla}{"1D7A9}
+% \end{macrocode}
+% Partial:
+% \begin{macrocode}
+\usv_set:nnn {up} {partial}{"02202}
+\usv_set:nnn {it} {partial}{"1D715}
+\usv_set:nnn {bfup} {partial}{"1D6DB}
+\usv_set:nnn {bfit} {partial}{"1D74F}
+\usv_set:nnn {bfsfup}{partial}{"1D789}
+\usv_set:nnn {bfsfit}{partial}{"1D7C3}
+% \end{macrocode}
+% \paragraph{Exceptions}
+% These are need for mapping with the exceptions in other alphabets:
+% (coming up)
+% \begin{macrocode}
+\usv_set:nnn {up}{B}{`\B}
+\usv_set:nnn {up}{C}{`\C}
+\usv_set:nnn {up}{D}{`\D}
+\usv_set:nnn {up}{E}{`\E}
+\usv_set:nnn {up}{F}{`\F}
+\usv_set:nnn {up}{H}{`\H}
+\usv_set:nnn {up}{I}{`\I}
+\usv_set:nnn {up}{L}{`\L}
+\usv_set:nnn {up}{M}{`\M}
+\usv_set:nnn {up}{N}{`\N}
+\usv_set:nnn {up}{P}{`\P}
+\usv_set:nnn {up}{Q}{`\Q}
+\usv_set:nnn {up}{R}{`\R}
+\usv_set:nnn {up}{Z}{`\Z}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {it}{B}{"1D435}
+\usv_set:nnn {it}{C}{"1D436}
+\usv_set:nnn {it}{D}{"1D437}
+\usv_set:nnn {it}{E}{"1D438}
+\usv_set:nnn {it}{F}{"1D439}
+\usv_set:nnn {it}{H}{"1D43B}
+\usv_set:nnn {it}{I}{"1D43C}
+\usv_set:nnn {it}{L}{"1D43F}
+\usv_set:nnn {it}{M}{"1D440}
+\usv_set:nnn {it}{N}{"1D441}
+\usv_set:nnn {it}{P}{"1D443}
+\usv_set:nnn {it}{Q}{"1D444}
+\usv_set:nnn {it}{R}{"1D445}
+\usv_set:nnn {it}{Z}{"1D44D}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {up}{d}{`\d}
+\usv_set:nnn {up}{e}{`\e}
+\usv_set:nnn {up}{g}{`\g}
+\usv_set:nnn {up}{h}{`\h}
+\usv_set:nnn {up}{i}{`\i}
+\usv_set:nnn {up}{j}{`\j}
+\usv_set:nnn {up}{o}{`\o}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {it}{d}{"1D451}
+\usv_set:nnn {it}{e}{"1D452}
+\usv_set:nnn {it}{g}{"1D454}
+\usv_set:nnn {it}{h}{"0210E}
+\usv_set:nnn {it}{i}{"1D456}
+\usv_set:nnn {it}{j}{"1D457}
+\usv_set:nnn {it}{o}{"1D45C}
+% \end{macrocode}
+% Latin `h':
+% \begin{macrocode}
+\usv_set:nnn {bb} {h}{"1D559}
+\usv_set:nnn {tt} {h}{"1D691}
+\usv_set:nnn {scr} {h}{"1D4BD}
+\usv_set:nnn {frak} {h}{"1D525}
+\usv_set:nnn {bfup} {h}{"1D421}
+\usv_set:nnn {bfit} {h}{"1D489}
+\usv_set:nnn {sfup} {h}{"1D5C1}
+\usv_set:nnn {sfit} {h}{"1D629}
+\usv_set:nnn {bffrak}{h}{"1D58D}
+\usv_set:nnn {bfscr} {h}{"1D4F1}
+\usv_set:nnn {bfsfup}{h}{"1D5F5}
+\usv_set:nnn {bfsfit}{h}{"1D65D}
+% \end{macrocode}
+% Dotless `i' and `j:
+% \begin{macrocode}
+\usv_set:nnn {up}{dotlessi}{"00131}
+\usv_set:nnn {up}{dotlessj}{"00237}
+\usv_set:nnn {it}{dotlessi}{"1D6A4}
+\usv_set:nnn {it}{dotlessj}{"1D6A5}
+% \end{macrocode}
+% Blackboard:
+% \begin{macrocode}
+\usv_set:nnn {bb}{C}{"2102}
+\usv_set:nnn {bb}{H}{"210D}
+\usv_set:nnn {bb}{N}{"2115}
+\usv_set:nnn {bb}{P}{"2119}
+\usv_set:nnn {bb}{Q}{"211A}
+\usv_set:nnn {bb}{R}{"211D}
+\usv_set:nnn {bb}{Z}{"2124}
+\usv_set:nnn {up}{Pi} {"003A0}
+\usv_set:nnn {up}{pi} {"003C0}
+\usv_set:nnn {up}{Gamma} {"00393}
+\usv_set:nnn {up}{gamma} {"003B3}
+\usv_set:nnn {up}{summation}{"02211}
+\usv_set:nnn {it}{Pi} {"1D6F1}
+\usv_set:nnn {it}{pi} {"1D70B}
+\usv_set:nnn {it}{Gamma} {"1D6E4}
+\usv_set:nnn {it}{gamma} {"1D6FE}
+\usv_set:nnn {bb}{Pi} {"0213F}
+\usv_set:nnn {bb}{pi} {"0213C}
+\usv_set:nnn {bb}{Gamma} {"0213E}
+\usv_set:nnn {bb}{gamma} {"0213D}
+\usv_set:nnn {bb}{summation}{"02140}
+% \end{macrocode}
+% Italic blackboard:
+% \begin{macrocode}
+\usv_set:nnn {bbit}{D}{"2145}
+\usv_set:nnn {bbit}{d}{"2146}
+\usv_set:nnn {bbit}{e}{"2147}
+\usv_set:nnn {bbit}{i}{"2148}
+\usv_set:nnn {bbit}{j}{"2149}
+% \end{macrocode}
+% Script exceptions:
+% \begin{macrocode}
+\usv_set:nnn {scr}{B}{"212C}
+\usv_set:nnn {scr}{E}{"2130}
+\usv_set:nnn {scr}{F}{"2131}
+\usv_set:nnn {scr}{H}{"210B}
+\usv_set:nnn {scr}{I}{"2110}
+\usv_set:nnn {scr}{L}{"2112}
+\usv_set:nnn {scr}{M}{"2133}
+\usv_set:nnn {scr}{R}{"211B}
+\usv_set:nnn {scr}{e}{"212F}
+\usv_set:nnn {scr}{g}{"210A}
+\usv_set:nnn {scr}{o}{"2134}
+% \end{macrocode}
+% Fractur exceptions:
+% \begin{macrocode}
+\usv_set:nnn {frak}{C}{"212D}
+\usv_set:nnn {frak}{H}{"210C}
+\usv_set:nnn {frak}{I}{"2111}
+\usv_set:nnn {frak}{R}{"211C}
+\usv_set:nnn {frak}{Z}{"2128}
+% \end{macrocode}
+%
+% \subsection{STIX fonts}
+%
+% Version 1.0.0 of the STIX fonts contains a number of
+% alphabets in the private use area of Unicode; i.e.,
+% it contains many math glyphs that have not (yet or if ever)
+% been accepted into the Unicode standard.
+%
+% But we still want to be able to use them if possible.
+%
+% \begin{macrocode}
+%</package>
+%<*stix>
+% \end{macrocode}
+%
+% \paragraph{Upright}
+% \begin{macrocode}
+\usv_set:nnn {stix_sfup}{partial}{"E17C}
+\usv_set:nnn {stix_sfup}{Greek}{"E17D}
+\usv_set:nnn {stix_sfup}{greek}{"E196}
+\usv_set:nnn {stix_sfup}{varTheta}{"E18E}
+\usv_set:nnn {stix_sfup}{varepsilon}{"E1AF}
+\usv_set:nnn {stix_sfup}{vartheta}{"E1B0}
+\usv_set:nnn {stix_sfup}{varkappa}{0000} % ???
+\usv_set:nnn {stix_sfup}{varphi}{"E1B1}
+\usv_set:nnn {stix_sfup}{varrho}{"E1B2}
+\usv_set:nnn {stix_sfup}{varpi}{"E1B3}
+\usv_set:nnn {stix_upslash}{Greek}{"E2FC}
+% \end{macrocode}
+%
+% \paragraph{Italic}
+% \begin{macrocode}
+\usv_set:nnn {stix_bbit}{A}{"E154}
+\usv_set:nnn {stix_bbit}{B}{"E155}
+\usv_set:nnn {stix_bbit}{E}{"E156}
+\usv_set:nnn {stix_bbit}{F}{"E157}
+\usv_set:nnn {stix_bbit}{G}{"E158}
+\usv_set:nnn {stix_bbit}{I}{"E159}
+\usv_set:nnn {stix_bbit}{J}{"E15A}
+\usv_set:nnn {stix_bbit}{K}{"E15B}
+\usv_set:nnn {stix_bbit}{L}{"E15C}
+\usv_set:nnn {stix_bbit}{M}{"E15D}
+\usv_set:nnn {stix_bbit}{O}{"E15E}
+\usv_set:nnn {stix_bbit}{S}{"E15F}
+\usv_set:nnn {stix_bbit}{T}{"E160}
+\usv_set:nnn {stix_bbit}{U}{"E161}
+\usv_set:nnn {stix_bbit}{V}{"E162}
+\usv_set:nnn {stix_bbit}{W}{"E163}
+\usv_set:nnn {stix_bbit}{X}{"E164}
+\usv_set:nnn {stix_bbit}{Y}{"E165}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stix_bbit}{a}{"E166}
+\usv_set:nnn {stix_bbit}{b}{"E167}
+\usv_set:nnn {stix_bbit}{c}{"E168}
+\usv_set:nnn {stix_bbit}{f}{"E169}
+\usv_set:nnn {stix_bbit}{g}{"E16A}
+\usv_set:nnn {stix_bbit}{h}{"E16B}
+\usv_set:nnn {stix_bbit}{k}{"E16C}
+\usv_set:nnn {stix_bbit}{l}{"E16D}
+\usv_set:nnn {stix_bbit}{m}{"E16E}
+\usv_set:nnn {stix_bbit}{n}{"E16F}
+\usv_set:nnn {stix_bbit}{o}{"E170}
+\usv_set:nnn {stix_bbit}{p}{"E171}
+\usv_set:nnn {stix_bbit}{q}{"E172}
+\usv_set:nnn {stix_bbit}{r}{"E173}
+\usv_set:nnn {stix_bbit}{s}{"E174}
+\usv_set:nnn {stix_bbit}{t}{"E175}
+\usv_set:nnn {stix_bbit}{u}{"E176}
+\usv_set:nnn {stix_bbit}{v}{"E177}
+\usv_set:nnn {stix_bbit}{w}{"E178}
+\usv_set:nnn {stix_bbit}{x}{"E179}
+\usv_set:nnn {stix_bbit}{y}{"E17A}
+\usv_set:nnn {stix_bbit}{z}{"E17B}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stix_sfit}{Numerals}{"E1B4}
+\usv_set:nnn {stix_sfit}{partial}{"E1BE}
+\usv_set:nnn {stix_sfit}{Greek}{"E1BF}
+\usv_set:nnn {stix_sfit}{greek}{"E1D8}
+\usv_set:nnn {stix_sfit}{varTheta}{"E1D0}
+\usv_set:nnn {stix_sfit}{varepsilon}{"E1F1}
+\usv_set:nnn {stix_sfit}{vartheta}{"E1F2}
+\usv_set:nnn {stix_sfit}{varkappa}{0000} % ???
+\usv_set:nnn {stix_sfit}{varphi}{"E1F3}
+\usv_set:nnn {stix_sfit}{varrho}{"E1F4}
+\usv_set:nnn {stix_sfit}{varpi}{"E1F5}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stix_cal}{Latin}{"E22D}
+\usv_set:nnn {stix_cal}{Numerals}{"E262}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stix_sfitslash}{Latin}{"E294}
+\usv_set:nnn {stix_sfitslash}{latin}{"E2C8}
+\usv_set:nnn {stix_sfitslash}{greek}{"E32C}
+\usv_set:nnn {stix_sfitslash}{varepsilon}{"E37A}
+\usv_set:nnn {stix_sfitslash}{vartheta}{"E35E}
+\usv_set:nnn {stix_sfitslash}{varkappa}{"E374}
+\usv_set:nnn {stix_sfitslash}{varphi}{"E360}
+\usv_set:nnn {stix_sfitslash}{varrho}{"E376}
+\usv_set:nnn {stix_sfitslash}{varpi}{"E362}
+\usv_set:nnn {stix_sfitslash}{digamma}{"E36A}
+% \end{macrocode}
+%
+% \paragraph{Bold}
+%
+% \begin{macrocode}
+\usv_set:nnn {stix_bfupslash}{Greek}{"E2FD}
+\usv_set:nnn {stix_bfupslash}{Digamma}{"E369}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stix_bfbb}{A}{"E38A}
+\usv_set:nnn {stix_bfbb}{B}{"E38B}
+\usv_set:nnn {stix_bfbb}{E}{"E38D}
+\usv_set:nnn {stix_bfbb}{F}{"E38E}
+\usv_set:nnn {stix_bfbb}{G}{"E38F}
+\usv_set:nnn {stix_bfbb}{I}{"E390}
+\usv_set:nnn {stix_bfbb}{J}{"E391}
+\usv_set:nnn {stix_bfbb}{K}{"E392}
+\usv_set:nnn {stix_bfbb}{L}{"E393}
+\usv_set:nnn {stix_bfbb}{M}{"E394}
+\usv_set:nnn {stix_bfbb}{O}{"E395}
+\usv_set:nnn {stix_bfbb}{S}{"E396}
+\usv_set:nnn {stix_bfbb}{T}{"E397}
+\usv_set:nnn {stix_bfbb}{U}{"E398}
+\usv_set:nnn {stix_bfbb}{V}{"E399}
+\usv_set:nnn {stix_bfbb}{W}{"E39A}
+\usv_set:nnn {stix_bfbb}{X}{"E39B}
+\usv_set:nnn {stix_bfbb}{Y}{"E39C}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stix_bfbb}{a}{"E39D}
+\usv_set:nnn {stix_bfbb}{b}{"E39E}
+\usv_set:nnn {stix_bfbb}{c}{"E39F}
+\usv_set:nnn {stix_bfbb}{f}{"E3A2}
+\usv_set:nnn {stix_bfbb}{g}{"E3A3}
+\usv_set:nnn {stix_bfbb}{h}{"E3A4}
+\usv_set:nnn {stix_bfbb}{k}{"E3A7}
+\usv_set:nnn {stix_bfbb}{l}{"E3A8}
+\usv_set:nnn {stix_bfbb}{m}{"E3A9}
+\usv_set:nnn {stix_bfbb}{n}{"E3AA}
+\usv_set:nnn {stix_bfbb}{o}{"E3AB}
+\usv_set:nnn {stix_bfbb}{p}{"E3AC}
+\usv_set:nnn {stix_bfbb}{q}{"E3AD}
+\usv_set:nnn {stix_bfbb}{r}{"E3AE}
+\usv_set:nnn {stix_bfbb}{s}{"E3AF}
+\usv_set:nnn {stix_bfbb}{t}{"E3B0}
+\usv_set:nnn {stix_bfbb}{u}{"E3B1}
+\usv_set:nnn {stix_bfbb}{v}{"E3B2}
+\usv_set:nnn {stix_bfbb}{w}{"E3B3}
+\usv_set:nnn {stix_bfbb}{x}{"E3B4}
+\usv_set:nnn {stix_bfbb}{y}{"E3B5}
+\usv_set:nnn {stix_bfbb}{z}{"E3B6}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stix_bftt}{Numerals}{"E3B7}
+% \end{macrocode}
+%
+% \paragraph{Bold Italic}
+% \begin{macrocode}
+\usv_set:nnn {stix_bfsfit}{Numerals}{"E1F6}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stix_bfbbit}{A}{"E200}
+\usv_set:nnn {stix_bfbbit}{B}{"E201}
+\usv_set:nnn {stix_bfbbit}{E}{"E203}
+\usv_set:nnn {stix_bfbbit}{F}{"E204}
+\usv_set:nnn {stix_bfbbit}{G}{"E205}
+\usv_set:nnn {stix_bfbbit}{I}{"E206}
+\usv_set:nnn {stix_bfbbit}{J}{"E207}
+\usv_set:nnn {stix_bfbbit}{K}{"E208}
+\usv_set:nnn {stix_bfbbit}{L}{"E209}
+\usv_set:nnn {stix_bfbbit}{M}{"E20A}
+\usv_set:nnn {stix_bfbbit}{O}{"E20B}
+\usv_set:nnn {stix_bfbbit}{S}{"E20C}
+\usv_set:nnn {stix_bfbbit}{T}{"E20D}
+\usv_set:nnn {stix_bfbbit}{U}{"E20E}
+\usv_set:nnn {stix_bfbbit}{V}{"E20F}
+\usv_set:nnn {stix_bfbbit}{W}{"E210}
+\usv_set:nnn {stix_bfbbit}{X}{"E211}
+\usv_set:nnn {stix_bfbbit}{Y}{"E212}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stix_bfbbit}{a}{"E213}
+\usv_set:nnn {stix_bfbbit}{b}{"E214}
+\usv_set:nnn {stix_bfbbit}{c}{"E215}
+\usv_set:nnn {stix_bfbbit}{e}{"E217}
+\usv_set:nnn {stix_bfbbit}{f}{"E218}
+\usv_set:nnn {stix_bfbbit}{g}{"E219}
+\usv_set:nnn {stix_bfbbit}{h}{"E21A}
+\usv_set:nnn {stix_bfbbit}{k}{"E21D}
+\usv_set:nnn {stix_bfbbit}{l}{"E21E}
+\usv_set:nnn {stix_bfbbit}{m}{"E21F}
+\usv_set:nnn {stix_bfbbit}{n}{"E220}
+\usv_set:nnn {stix_bfbbit}{o}{"E221}
+\usv_set:nnn {stix_bfbbit}{p}{"E222}
+\usv_set:nnn {stix_bfbbit}{q}{"E223}
+\usv_set:nnn {stix_bfbbit}{r}{"E224}
+\usv_set:nnn {stix_bfbbit}{s}{"E225}
+\usv_set:nnn {stix_bfbbit}{t}{"E226}
+\usv_set:nnn {stix_bfbbit}{u}{"E227}
+\usv_set:nnn {stix_bfbbit}{v}{"E228}
+\usv_set:nnn {stix_bfbbit}{w}{"E229}
+\usv_set:nnn {stix_bfbbit}{x}{"E22A}
+\usv_set:nnn {stix_bfbbit}{y}{"E22B}
+\usv_set:nnn {stix_bfbbit}{z}{"E22C}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stix_bfcal}{Latin}{"E247}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\usv_set:nnn {stix_bfitslash}{Latin}{"E295}
+\usv_set:nnn {stix_bfitslash}{latin}{"E2C9}
+\usv_set:nnn {stix_bfitslash}{greek}{"E32D}
+\usv_set:nnn {stix_sfitslash}{varepsilon}{"E37B}
+\usv_set:nnn {stix_sfitslash}{vartheta}{"E35F}
+\usv_set:nnn {stix_sfitslash}{varkappa}{"E375}
+\usv_set:nnn {stix_sfitslash}{varphi}{"E361}
+\usv_set:nnn {stix_sfitslash}{varrho}{"E377}
+\usv_set:nnn {stix_sfitslash}{varpi}{"E363}
+\usv_set:nnn {stix_sfitslash}{digamma}{"E36B}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</stix>
+%<*package>
+% \end{macrocode}
+%
+% \subsection{Package options}
+%
+% \begin{macro}{\unimathsetup}
+% This macro can be used in lieu of or later to override
+% options declared when the package is loaded.
+% \begin{macrocode}
+\DeclareDocumentCommand \unimathsetup {m} {
+ \clist_clear:N \l_um_unknown_keys_clist
+ \keys_set:nn {unicode-math} {#1}
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \paragraph{math-style}
+% \begin{macrocode}
+\keys_define:nn {unicode-math} {
+ normal-style .choice_code:n =
+ {
+ \bool_set_false:N \g_um_literal_bool
+ \ifcase \l_keys_choice_int
+ \bool_set_false:N \g_um_upGreek_bool
+ \bool_set_false:N \g_um_upgreek_bool
+ \bool_set_false:N \g_um_upLatin_bool
+ \bool_set_false:N \g_um_uplatin_bool
+ \or
+ \bool_set_true:N \g_um_upGreek_bool
+ \bool_set_false:N \g_um_upgreek_bool
+ \bool_set_false:N \g_um_upLatin_bool
+ \bool_set_false:N \g_um_uplatin_bool
+ \or
+ \bool_set_true:N \g_um_upGreek_bool
+ \bool_set_true:N \g_um_upgreek_bool
+ \bool_set_true:N \g_um_upLatin_bool
+ \bool_set_false:N \g_um_uplatin_bool
+ \or
+ \bool_set_true:N \g_um_upGreek_bool
+ \bool_set_true:N \g_um_upgreek_bool
+ \bool_set_true:N \g_um_upLatin_bool
+ \bool_set_true:N \g_um_uplatin_bool
+ \or
+ \bool_set_true:N \g_um_literal_bool
+ \fi
+ } ,
+ normal-style .generate_choices:n = {ISO,TeX,french,upright,literal} ,
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\keys_define:nn {unicode-math} {
+ math-style .choice_code:n =
+ {
+ \ifcase \l_keys_choice_int
+ \unimathsetup {
+ normal-style=ISO,
+ bold-style=ISO,
+ sans-style=italic,
+ nabla=upright,
+ partial=italic,
+ }
+ \or
+ \unimathsetup {
+ normal-style=TeX,
+ bold-style=TeX,
+ sans-style=upright,
+ nabla=upright,
+ partial=italic,
+ }
+ \or
+ \unimathsetup {
+ normal-style=french,
+ bold-style=upright,
+ sans-style=upright,
+ nabla=upright,
+ partial=upright,
+ }
+ \or
+ \unimathsetup {
+ normal-style=upright,
+ bold-style=upright,
+ sans-style=upright,
+ nabla=upright,
+ partial=upright,
+ }
+ \or
+ \unimathsetup {
+ normal-style=literal,
+ bold-style=literal,
+ sans-style=literal,
+ colon=literal,
+ nabla=literal,
+ partial=literal,
+ }
+ \fi
+ } ,
+ math-style .generate_choices:n = {ISO,TeX,french,upright,literal} ,
+}
+% \end{macrocode}
+%
+% \paragraph{bold-style}
+% \begin{macrocode}
+\keys_define:nn {unicode-math} {
+ bold-style .choice_code:n = {
+ \bool_set_false:N \g_um_bfliteral_bool
+ \ifcase \l_keys_choice_int
+ \bool_set_false:N \g_um_bfupGreek_bool
+ \bool_set_false:N \g_um_bfupgreek_bool
+ \bool_set_false:N \g_um_bfupLatin_bool
+ \bool_set_false:N \g_um_bfuplatin_bool
+ \or
+ \bool_set_true:N \g_um_bfupGreek_bool
+ \bool_set_false:N \g_um_bfupgreek_bool
+ \bool_set_true:N \g_um_bfupLatin_bool
+ \bool_set_true:N \g_um_bfuplatin_bool
+ \or
+ \bool_set_true:N \g_um_bfupGreek_bool
+ \bool_set_true:N \g_um_bfupgreek_bool
+ \bool_set_true:N \g_um_bfupLatin_bool
+ \bool_set_true:N \g_um_bfuplatin_bool
+ \or
+ \bool_set_true:N \g_um_bfliteral_bool
+ \fi
+ } ,
+ bold-style .generate_choices:n = {ISO,TeX,upright,literal} ,
+}
+% \end{macrocode}
+%
+% \paragraph{sans-style}
+% \begin{macrocode}
+\keys_define:nn {unicode-math} {
+ sans-style .choice_code:n = {
+ \ifcase \l_keys_choice_int
+ \bool_set_false:N \g_um_upsans_bool
+ \or
+ \bool_set_true:N \g_um_upsans_bool
+ \or
+ \bool_set_true:N \g_um_sfliteral_bool
+ \fi
+ } ,
+ sans-style .generate_choices:n = {italic,upright,literal} ,
+}
+% \end{macrocode}
+%
+% \paragraph{Nabla and partial}
+% \begin{macrocode}
+\keys_define:nn {unicode-math} {
+ nabla .choice_code:n = {
+ \bool_set_false:N \g_um_literal_Nabla_bool
+ \ifcase \l_keys_choice_int
+ \bool_set_true:N \g_um_upNabla_bool
+ \or
+ \bool_set_false:N \g_um_upNabla_bool
+ \or
+ \bool_set_true:N \g_um_literal_Nabla_bool
+ \fi
+ } ,
+ nabla .generate_choices:n = {upright,italic,literal} ,
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\keys_define:nn {unicode-math} {
+ partial .choice_code:n = {
+ \bool_set_false:N \g_um_literal_partial_bool
+ \ifcase \l_keys_choice_int
+ \bool_set_true:N \g_um_uppartial_bool
+ \or
+ \bool_set_false:N \g_um_uppartial_bool
+ \or
+ \bool_set_true:N \g_um_literal_partial_bool
+ \fi
+ } ,
+ partial .generate_choices:n = {upright,italic,literal} ,
+}
+% \end{macrocode}
+%
+% \paragraph{Epsilon and phi shapes}
+% \begin{macrocode}
+\keys_define:nn {unicode-math} {
+ vargreek-shape .choice: ,
+ vargreek-shape / unicode .code:n = {
+ \bool_set_false:N \g_um_texgreek_bool
+ } ,
+ vargreek-shape / TeX .code:n = {
+ \bool_set_true:N \g_um_texgreek_bool
+ }
+}
+% \end{macrocode}
+%
+% \paragraph{Colon style}
+% \begin{macrocode}
+\keys_define:nn {unicode-math} {
+ colon .choice: ,
+ colon / literal .code:n = {
+ \bool_set_true:N \g_um_literal_colon_bool
+ } ,
+ colon / TeX .code:n = {
+ \bool_set_false:N \g_um_literal_colon_bool
+ }
+}
+% \end{macrocode}
+%
+% \paragraph{Slash delimiter style}
+% \begin{macrocode}
+\keys_define:nn {unicode-math} {
+ slash-delimiter .choice: ,
+ slash-delimiter / ascii .code:n = {
+ \tl_set:Nn \g_um_slash_delimiter_usv {"002F}
+ } ,
+ slash-delimiter / frac .code:n = {
+ \tl_set:Nn \g_um_slash_delimiter_usv {"2044}
+ } ,
+ slash-delimiter / div .code:n = {
+ \tl_set:Nn \g_um_slash_delimiter_usv {"2215}
+ }
+}
+% \end{macrocode}
+%
+%
+% \paragraph{Active fraction style}
+% \begin{macrocode}
+\keys_define:nn {unicode-math} {
+ active-frac .choice: ,
+ active-frac / small .code:n = {
+ \cs_if_exist:NTF \tfrac {
+ \bool_set_true:N \l_um_smallfrac_bool
+ }{
+ \um_warning:n {no-tfrac}
+ \bool_set_false:N \l_um_smallfrac_bool
+ }
+ \use:c{um_setup_active_frac:}
+ } ,
+ active-frac / normalsize .code:n = {
+ \bool_set_false:N \l_um_smallfrac_bool
+ \use:c{um_setup_active_frac:}
+ }
+}
+% \end{macrocode}
+%
+% \paragraph{Debug/tracing}
+% \begin{macrocode}
+\keys_define:nn {unicode-math} {
+ trace .choice: ,
+ trace / debug .code:n = {
+ \msg_redirect_module:nnn { unicode-math } { trace } { warning }
+ } ,
+ trace / on .code:n = {
+ \msg_redirect_module:nnn { unicode-math } { trace } { trace }
+ } ,
+ trace / off .code:n = {
+ \msg_redirect_module:nnn { unicode-math } { trace } { none }
+ } ,
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\clist_new:N \l_um_unknown_keys_clist
+\keys_define:nn {unicode-math} {
+ unknown .code:n = {
+ \clist_put_right:No \l_um_unknown_keys_clist {
+ \l_keys_key_tl = {#1}
+ }
+ }
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\unimathsetup {math-style=TeX}
+\unimathsetup {slash-delimiter=ascii}
+\unimathsetup {trace=off}
+\cs_if_exist:NT \tfrac {
+ \unimathsetup {active-frac=small}
+}
+\ProcessKeysOptions {unicode-math}
+% \end{macrocode}
+%
+% \subsection{Overcoming \cmd\@onlypreamble}
+%
+% The requirement of only setting up the maths fonts in the preamble is now removed. The following list might be overly ambitious.
+% \begin{macrocode}
+\tl_map_inline:nn {
+ \new@mathgroup\cdp@list\cdp@elt\DeclareMathSizes
+ \@DeclareMathSizes\newmathalphabet\newmathalphabet@@\newmathalphabet@@@
+ \DeclareMathVersion\define@mathalphabet\define@mathgroup\addtoversion
+ \version@list\version@elt\alpha@list\alpha@elt
+ \restore@mathversion\init@restore@version\dorestore@version\process@table
+ \new@mathversion\DeclareSymbolFont\group@list\group@elt
+ \new@symbolfont\SetSymbolFont\SetSymbolFont@\get@cdp
+ \DeclareMathAlphabet\new@mathalphabet\SetMathAlphabet\SetMathAlphabet@
+ \DeclareMathAccent\set@mathaccent\DeclareMathSymbol\set@mathchar
+ \set@mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
+ \@DeclareMathDelimiter\@xDeclareMathDelimiter\set@mathdelimiter
+ \set@@mathdelimiter\DeclareMathRadical\mathchar@type
+ \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
+}{
+ \tl_remove_in:Nn \@preamblecmds {\do#1}
+}
+% \end{macrocode}
+%
+% \section{Fundamentals}
+%
+% \subsection{Enlarging the number of maths families}
+%
+% To start with, we've got a power of two as many \cmd\fam s as before. So (from |ltfssbas.dtx|) we want to redefine
+% \begin{macrocode}
+\def\new@mathgroup{\alloc@8\mathgroup\chardef\@cclvi}
+\let\newfam\new@mathgroup
+% \end{macrocode}
+%
+% This is sufficient for \LaTeX's \cmd\DeclareSymbolFont-type commands to be able
+% to define 256 named maths fonts.
+%
+% \subsection{Setting math chars, math codes, etc.}
+%
+% \begin{macro}{\um_set_mathsymbol:nNNn}
+% \darg{A \LaTeX\ symbol font, e.g., \texttt{operators}}
+% \darg{Symbol macro, \eg, \cmd\alpha}
+% \darg{Type, \eg, \cmd\mathalpha}
+% \darg{Slot, \eg, \texttt{"221E}}
+% There are a bunch of tests to perform to process the various characters.
+% The following assignments should all be fairly straightforward.
+% \begin{macrocode}
+\cs_set:Npn \um_set_mathsymbol:nNNn #1#2#3#4 {
+ \prg_case_tl:Nnn #3 {
+ \mathop {
+ \um_set_big_operator:nnn {#1} {#2} {#4}
+ }
+ \mathopen {
+ \tl_if_in:NnTF \l_um_radicals_tl {#2} {
+ \cs_gset:cpx {\cs_to_str:N #2 sign} { \um_radical:nn {#1} {#4} }
+ }{
+ \um_set_delcode:n {#4}
+ \um_set_mathcode:nnn {#4} \mathopen {#1}
+ \cs_gset:Npx #2 { \um_delimiter:Nnn \mathopen {#1} {#4} }
+ }
+ }
+ \mathclose {
+ \um_set_delcode:n {#4}
+ \um_set_mathcode:nnn {#4} \mathclose {#1}
+ \cs_gset:Npx #2 { \um_delimiter:Nnn \mathclose {#1} {#4} }
+ }
+ \mathfence {
+ \um_set_mathcode:nnn {#4} {#3} {#1}
+ \um_set_delcode:n {#4}
+ \cs_gset:cpx {l \cs_to_str:N #2} { \um_delimiter:Nnn \mathopen {#1} {#4} }
+ \cs_gset:cpx {r \cs_to_str:N #2} { \um_delimiter:Nnn \mathclose {#1} {#4} }
+ }
+ \mathaccent {
+ \cs_gset:Npx #2 { \um_accent:Nnn #3 {#1} {#4} }
+ }
+ }{
+ \um_set_mathcode:nnn {#4} {#3} {#1}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\um_set_big_operator:nnn}
+% \darg{Symbol font name}
+% \darg{Macro to assign}
+% \darg{Glyph slot}
+% In the examples following, say we're defining for the symbol \cmd\sum ($\sum$).
+% In order for literal Unicode characters to be used in the source and still
+% have the correct limits behaviour, big operators are made math-active.
+% This involves three steps:
+% \begin{itemize}
+% \item
+% The active math char is defined to expand to the macro \cs{sum_sym}.
+% (Later, the control sequence \cs{sum} will be assigned the math char.)
+% \item
+% Declare the plain old mathchardef for the control sequence \cmd\sumop.
+% (This follows the convention of \LaTeX/\pkg{amsmath}.)
+% \item
+% Define \cs{sum_sym} as \cmd\sumop, followed by \cmd\nolimits\ if necessary.
+% \end{itemize}
+% Whether the \cmd\nolimits\ suffix is inserted is controlled by the
+% token list \cs{l_um_nolimits_tl}, which contains a list of such characters.
+% This list is checked dynamically to allow it to be updated mid-document.
+%
+% Examples of expansion, by default, for two big operators:
+% \begin{quote}
+% (~\cs{sum} $\to$~) $\sum$ $\to$ \cs{sum_sym} $\to$ \cs{sumop}\cs{nolimits}\par
+% (~\cs{int} $\to$~) $\int$ $\to$ \cs{int_sym} $\to$ \cs{intop}
+% \end{quote}
+% \begin{macrocode}
+\cs_new:Npn \um_set_big_operator:nnn #1#2#3 {
+ \group_begin:
+ \char_make_active:n {#3}
+ \char_gmake_mathactive:n {#3}
+ \um@scanactivedef #3 \@nil { \csname\cs_to_str:N #2 _sym\endcsname }
+ \group_end:
+ \um_set_mathchar:cNnn {\cs_to_str:N #2 op} \mathop {#1} {#3}
+ \cs_gset:cpx { \cs_to_str:N #2 _sym } {
+ \exp_not:c { \cs_to_str:N #2 op }
+ \exp_not:n { \tl_if_in:NnT \l_um_nolimits_tl {#2} \nolimits }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\um_set_mathcode:nnnn}
+% \begin{macro}{\um_set_mathcode:nnn}
+% \begin{macro}{\um_set_mathchar:NNnn}
+% \begin{macro}{\um_set_mathchar:cNnn}
+% \begin{macro}{\um_radical:nn}
+% \begin{macro}{\um_delimiter:Nnn}
+% \begin{macro}{\um_accent:Nnn}
+% \begin{macrocode}
+\cs_set:Npn \um_set_mathcode:nnnn #1#2#3#4 {
+ \Umathcode \intexpr_eval:n {#1} =
+ \mathchar@type#2 \csname sym#3\endcsname \intexpr_eval:n {#4} \scan_stop:
+}
+\cs_set:Npn \um_set_mathcode:nnn #1#2#3 {
+ \Umathcode \intexpr_eval:n {#1} =
+ \mathchar@type#2 \csname sym#3\endcsname \intexpr_eval:n {#1} \scan_stop:
+}
+\cs_set:Npn \um_set_mathchar:NNnn #1#2#3#4 {
+ \Umathchardef #1 =
+ \mathchar@type#2 \csname sym#3\endcsname \intexpr_eval:n {#4} \scan_stop:
+}
+\cs_new:Npn \um_radical:nn #1#2 {
+ \Uradical \csname sym#1\endcsname #2 \scan_stop:
+}
+\cs_new:Npn \um_delimiter:Nnn #1#2#3 {
+ \Udelimiter \mathchar@type#1 \csname sym#2\endcsname #3 \scan_stop:
+}
+\cs_new:Npn \um_accent:Nnn #1#2#3 {
+ \Umathaccent \mathchar@type#1 \csname sym#2\endcsname #3 \scan_stop:
+}
+\cs_generate_variant:Nn \um_set_mathchar:NNnn {c}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\char_gmake_mathactive:N}
+% \begin{macro}{\char_gmake_mathactive:n}
+% \begin{macrocode}
+\cs_new:Npn \char_gmake_mathactive:N #1 {
+ \global\mathcode `#1 = "8000 \scan_stop:
+}
+\cs_new:Npn \char_gmake_mathactive:n #1 {
+ \global\mathcode #1 = "8000 \scan_stop:
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{The main \cs{setmathfont} macro}
+%
+% Using a |range| including large character sets such as \cmd\mathrel,
+% \cmd\mathalpha, \etc, is \emph{very slow}!
+% I hope to improve the performance somehow.
+%
+% \begin{macro}{\setmathfont}
+% \doarg{font features}
+% \darg{font name}
+% \begin{macrocode}
+\cs_new:Npn \um_init: {
+% \end{macrocode}
+% \begin{itemize}
+% \item Erase any conception \LaTeX\ has of previously defined math symbol fonts;
+% this allows \cmd\DeclareSymbolFont\ at any point in the document.
+% \begin{macrocode}
+ \let\glb@currsize\relax
+% \end{macrocode}
+% \item To start with, assume we're defining the font for every math symbol character.
+% \begin{macrocode}
+ \bool_set_true:N \l_um_init_bool
+ \seq_clear:N \l_um_char_range_seq
+ \clist_clear:N \l_um_char_num_range_clist
+ \seq_clear:N \l_um_mathalph_seq
+ \clist_clear:N \l_um_unknown_keys_clist
+ \seq_clear:N \l_um_missing_alph_seq
+% \end{macrocode}
+% \end{itemize}
+% \begin{macrocode}
+}
+\DeclareDocumentCommand \setmathfont { O{} m } {
+ \um_init:
+% \end{macrocode}
+% \begin{itemize}
+% \item Grab the current size information
+% (is this robust enough? Maybe it should be preceded by \cmd\normalsize).
+% \begin{macrocode}
+ \csname S@\f@size\endcsname
+% \end{macrocode}
+% \item Set the name of the math version being defined.
+% (obviously more needs to be done here!)
+% \end{itemize}
+% \begin{macrocode}
+ \tl_set:Nn \l_um_mversion_tf {normal}
+ \DeclareMathVersion{\l_um_mversion_tf}
+% \end{macrocode}
+% \item Define default font features for the script and scriptscript font.
+% \begin{macrocode}
+ \tl_set:Nn \l_um_script_features_tl {ScriptStyle}
+ \tl_set:Nn \l_um_sscript_features_tl {ScriptScriptStyle}
+ \tl_set:Nn \l_um_script_font_tl {#2}
+ \tl_set:Nn \l_um_sscript_font_tl {#2}
+% \end{macrocode}
+% Use \pkg{fontspec} to select a font to use. The macro \cmd\S@\meta{size}
+% contains the definitions of the sizes used for maths letters, subscripts and subsubscripts in
+% \cmd\tf@size, \cmd\sf@size, and \cmd\ssf@size, respectively.
+% \begin{macrocode}
+ \keys_set:nn {unicode-math} {#1}
+ \um_fontspec_select_font:n {#2}
+% \end{macrocode}
+% Check for the correct number of \cs{fontdimen}s:
+% \begin{macrocode}
+%% \ifdim \dimexpr\fontdimen9\l_um_font*65536\relax =65pt\relax
+%% \bool_set_true:N \l_um_ot_math_bool
+%% \else
+%% \bool_set_false:N \l_um_ot_math_bool
+%% \PackageWarningNoLine{unicode-math}{
+%% The~ font~ '#2' ~is~ not~ a~ valid~ OpenType~ maths~ font.~
+%% Some~ maths~ features~ will~ not~ be~ available~ or~ behave~
+%% in~ a~ substandard~ manner
+%% }
+%% \fi
+% \end{macrocode}
+% If we're defining the full Unicode math repetoire, then we skip all
+% the parsing processing needed if we're only defining a subset.
+% \begin{itemize}
+% \item Math symbols are defined with \cmd\UnicodeMathSymbol; see \secref{mathsymbol}
+% for the individual definitions
+% \end{itemize}
+% \begin{macrocode}
+ \bool_if:NTF \l_um_init_bool {
+ \tl_set:Nn \um_symfont_tl {um_allsym}
+ \msg_trace:nnx {unicode-math} {default-math-font} {#2}
+ \cs_set_eq:NN \UnicodeMathSymbol \um_process_symbol_noparse:nnnn
+ \cs_set_eq:NN \um_set_mathalphabet_char:Nnn \um_mathmap_noparse:Nnn
+ \cs_set_eq:NN \um_remap_symbol:nnn \um_remap_symbol_noparse:nnn
+ \cs_set_eq:NN \um_maybe_init_alphabet:n \um_init_alphabet:n
+ \cs_set_eq:NN \um_map_char_single:nn \um_map_char_noparse:nn
+ }{
+ \int_incr:N \g_um_fam_int
+ \tl_set:Nx \um_symfont_tl {um_fam\int_use:N\g_um_fam_int}
+ \cs_set_eq:NN \UnicodeMathSymbol \um_process_symbol_parse:nnnn
+ \cs_set_eq:NN \um_set_mathalphabet_char:Nnn \um_mathmap_parse:Nnn
+ \cs_set_eq:NN \um_remap_symbol:nnn \um_remap_symbol_parse:nnn
+ \cs_set_eq:NN \um_maybe_init_alphabet:n \use_none:n
+ \cs_set_eq:NN \um_map_char_single:nn \um_map_char_parse:nn
+ }
+% \end{macrocode}
+% Now defined |\um_symfont_tl| as the \LaTeX\ math font to access everything:
+% \begin{macrocode}
+ \DeclareSymbolFont{\um_symfont_tl}
+ {\encodingdefault}{\zf@family}{\mddefault}{\updefault}
+% \end{macrocode}
+% And now we input every single maths char. See File~\ref{part:awk} for
+% the source to |unicode-math.tex| which is used to create
+% |unicode-math-table.tex|.
+% \begin{macrocode}
+ \@input{unicode-math-table.tex}
+ \cs_set_eq:NN \UnicodeMathSymbol \use_none:nnnn
+% \end{macrocode}
+% Finally,
+% \begin{itemize}
+% \item Remap symbols that don't take their natural mathcode
+% \item Activate any symbols that need to be math-active
+% \item Assign delimiter codes for symbols that need to grow
+% \item Setup the maths alphabets (\cs{mathbf} etc.)
+% \end{itemize}
+% \begin{macrocode}
+ \um_remap_symbols:
+ \um_setup_mathactives:
+ \um_setup_delcodes:
+ \um_setup_alphabets:
+% \end{macrocode}
+% Prevent spaces:
+% \begin{macrocode}
+ \ignorespaces
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\um_fontspec_select_font:}
+% Select the font with \cs{fontspec} and define \cs{l_um_font} from it.
+% \begin{macrocode}
+\cs_new:Npn \um_fontspec_select_font:n #1 {
+ \bool_set_true:N \l_um_fontspec_feature_bool
+ \fontspec_select:xn
+ {
+ BoldFont = {}, ItalicFont = {},
+ Script = Math,
+ SizeFeatures = {
+ {Size = \tf@size-} ,
+ {Size = \sf@size-\tf@size ,
+ Font = \l_um_script_font_tl ,
+ \l_um_script_features_tl
+ } ,
+ {Size = -\sf@size ,
+ Font = \l_um_sscript_font_tl ,
+ \l_um_sscript_features_tl
+ }
+ },
+ \l_um_unknown_keys_clist
+ }
+ {#1}
+ \tl_set_eq:NN \l_um_font \zf@basefont
+ \bool_set_false:N \l_um_fontspec_feature_bool
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Functions for setting up symbols with mathcodes}
+% \seclabel{mathsymbol}
+%
+% \begin{macro}{\um_process_symbol_noparse:nnnn}
+% \begin{macro}{\um_process_symbol_parse:nnnn}
+% If the \feat{range} font feature has been used, then only
+% a subset of the Unicode glyphs are to be defined.
+% See \secref{rangeproc} for the code that enables this.
+% \begin{macrocode}
+\cs_set:Npn \um_process_symbol_noparse:nnnn #1#2#3#4 {
+ \um_set_mathsymbol:nNNn {\um_symfont_tl} #2#3{#1}
+}
+% \end{macrocode}
+% \begin{macrocode}
+\cs_set:Npn \um_process_symbol_parse:nnnn #1#2#3#4 {
+ \um@parse@term{#1}{#2}{#3}{
+ \um_process_symbol_noparse:nnnn{#1}{#2}{#3}{#4}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\um_remap_symbols:}
+% \begin{macro}{\um_remap_symbol_noparse:nnn}
+% \begin{macro}{\um_remap_symbol_parse:nnn}
+% This function is used to define the mathcodes for those chars which should
+% be mapped to a different glyph than themselves.
+% \begin{macrocode}
+\cs_new:Npn \um_remap_symbols: {
+ \um_remap_symbol:nnn{`\-}{\mathbin}{"02212}% hyphen to minus
+ \um_remap_symbol:nnn{`\*}{\mathbin}{"02217}% text asterisk to "centred asterisk"
+ \bool_if:NF \g_um_literal_colon_bool {
+ \um_remap_symbol:nnn{`\:}{\mathrel}{"02236}% colon to ratio (i.e., punct to rel)
+ }
+}
+% \end{macrocode}
+% \end{macro}
+% Where |\um_remap_symbol:nnn| is defined to be one of these two, depending
+% on the range setup:
+% \begin{macrocode}
+\cs_new:Npn \um_remap_symbol_parse:nnn #1#2#3 {
+ \um@parse@term {#3} {\@nil} {#2} {
+ \um_remap_symbol_noparse:nnn {#1} {#2} {#3}
+ }
+}
+\cs_new:Npn \um_remap_symbol_noparse:nnn #1#2#3 {
+ \clist_map_inline:nn {#1} {
+ \um_set_mathcode:nnnn {##1} {#2} {\um_symfont_tl} {#3}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{Active math characters}
+%
+% There are more math active chars later in the subscript/superscript section.
+% But they don't need to be able to be typeset directly.
+%
+% \begin{macro}{\um_setup_mathactives:}
+% \begin{macrocode}
+\cs_new:Npn \um_setup_mathactives: {
+ \um_make_mathactive:nNN {"2032} \um_prime_single_mchar \mathord
+ \um_make_mathactive:nNN {"2033} \um_prime_double_mchar \mathord
+ \um_make_mathactive:nNN {"2034} \um_prime_triple_mchar \mathord
+ \um_make_mathactive:nNN {"2057} \um_prime_quad_mchar \mathord
+ \um_make_mathactive:nNN {"2035} \um_backprime_single_mchar \mathord
+ \um_make_mathactive:nNN {"2036} \um_backprime_double_mchar \mathord
+ \um_make_mathactive:nNN {"2037} \um_backprime_triple_mchar \mathord
+ \um_make_mathactive:nNN {`\'} \mathstraightquote \mathord
+ \um_make_mathactive:nNN {`\`} \mathbacktick \mathord
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\um_make_mathactive:nNN}
+%: TODO : hook into range feature
+% Makes |#1| a mathactive char, and gives cs |#2| the meaning of mathchar |#1|
+% with class |#3|.
+% You are responsible for giving active |#1| a particular meaning!
+% \begin{macrocode}
+\cs_new:Npn \um_make_mathactive:nNN #1#2#3 {
+ \um_set_mathchar:NNnn #2 #3 {\um_symfont_tl} {#1}
+ \char_gmake_mathactive:n {#1}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Delimiter codes}
+%
+% Some symbols that aren't mathopen/mathclose still need to have delimiter codes assigned.
+% The list of vertical arrows may be incomplete.
+% On the other hand, many fonts won't support them all being stretchy.
+% And some of them are probably not meant to stretch, either. But adding them here doesn't hurt.
+% \begin{macro}{\um_setup_delcodes:}
+% \begin{macrocode}
+\cs_new:Npn \um_setup_delcodes: {
+ \um_set_delcode:nn {`\/} {\g_um_slash_delimiter_usv}
+ \um_set_delcode:nn {"2044} {\g_um_slash_delimiter_usv} % fracslash
+ \um_set_delcode:nn {"2215} {\g_um_slash_delimiter_usv} % divslash
+ \um_set_delcode:n {"005C} % backslash
+ \um_set_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation
+ \um_set_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation
+ \um_set_delcode:n {"2191} % up arrow
+ \um_set_delcode:n {"2193} % down arrow
+ \um_set_delcode:n {"2195} % updown arrow
+ \um_set_delcode:n {"219F} % up arrow twohead
+ \um_set_delcode:n {"21A1} % down arrow twohead
+ \um_set_delcode:n {"21A5} % up arrow from bar
+ \um_set_delcode:n {"21A7} % down arrow from bar
+ \um_set_delcode:n {"21A8} % updown arrow from bar
+ \um_set_delcode:n {"21BE} % up harpoon right
+ \um_set_delcode:n {"21BF} % up harpoon left
+ \um_set_delcode:n {"21C2} % down harpoon right
+ \um_set_delcode:n {"21C3} % down harpoon left
+ \um_set_delcode:n {"21C5} % arrows up down
+ \um_set_delcode:n {"21F5} % arrows down up
+ \um_set_delcode:n {"21C8} % arrows up up
+ \um_set_delcode:n {"21CA} % arrows down down
+ \um_set_delcode:n {"21D1} % double up arrow
+ \um_set_delcode:n {"21D3} % double down arrow
+ \um_set_delcode:n {"21D5} % double updown arrow
+ \um_set_delcode:n {"21DE} % up arrow double stroke
+ \um_set_delcode:n {"21DF} % down arrow double stroke
+ \um_set_delcode:n {"21E1} % up arrow dashed
+ \um_set_delcode:n {"21E3} % down arrow dashed
+ \um_set_delcode:n {"21E7} % up white arrow
+ \um_set_delcode:n {"21E9} % down white arrow
+ \um_set_delcode:n {"21EA} % up white arrow from bar
+ \um_set_delcode:n {"21F3} % updown white arrow
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\um_set_delcode:nn}
+% \begin{macro}{\um_set_delcode:n}
+%: TODO : hook into range feature
+% \begin{macrocode}
+\cs_new:Npn \um_set_delcode:nn #1#2 {
+ \Udelcode#1 = \csname sym\um_symfont_tl\endcsname #2
+}
+\cs_new:Npn \um_set_delcode:n #1 {
+ \Udelcode#1 = \csname sym\um_symfont_tl\endcsname #1
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Maths alphabets' character mapping}
+% \seclabel{mathmap}
+%
+%
+% \subsubsection{Functions for setting up the maths alphabets}
+%
+% \begin{macro}{\um_mathmap_noparse:Nnn}
+% \darg{Maths alphabet, \eg, \cmd\mathbb}
+% \darg{Input slot(s), \eg, the slot for `A' (comma separated)}
+% \darg{Output slot, \eg, the slot for `$\mathbb{A}$'}
+% Adds \cs{um_set_mathcode:nnnn} declarations to the specified maths alphabet's definition.
+% \begin{macrocode}
+\cs_set:Npn \um_mathmap_noparse:Nnn #1#2#3 {
+ \clist_map_inline:nn {#2} {
+ \tl_put_right:cx {um_switchto_\cs_to_str:N #1:} {
+ \um_set_mathcode:nnnn{##1}{\mathalpha}{\um_symfont_tl}{#3}
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\um_mathmap_parse:Nnn}
+% \darg{Maths alphabet, \eg, \cmd\mathbb}
+% \darg{Input slot(s), \eg, the slot for `A' (comma separated)}
+% \darg{Output slot, \eg, the slot for `$\mathbb{A}$'}
+% When \cmd\um@parse@term\ is executed, it populates the \cmd\l_um_char_num_range_clist\
+% macro with slot numbers corresponding to the specified range. This range is used to
+% conditionally add \cs{um_set_mathcode:nnnn} declaractions to the maths alphabet definition.
+% \begin{macrocode}
+\cs_set:Npn \um_mathmap_parse:Nnn #1#2#3 {
+ \clist_if_in:NnT \l_um_char_num_range_clist {#3} {
+ \um_mathmap_noparse:Nnn {#1}{#2}{#3}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{(Big) operators}
+%
+% Turns out that \XeTeX\ is clever enough to deal with big operators for us
+% automatically with \cmd\Umathchardef. Amazing!
+%
+% However, the limits aren't set automatically; that is, we want to define,
+% a la Plain \TeX\ \etc, |\def\int{\intop\nolimits}|, so there needs to be a
+% transformation from \cmd\int\ to \cmd\intop\ during the expansion of
+% \cmd\UnicodeMathSymbol\ in the appropriate contexts.
+%
+% \begin{macro}{\l_um_nolimits_tl}
+% This macro is a sequence containing those maths operators that require a
+% \cmd\nolimits\ suffix.
+% This list is used when processing |unicode-math-table.tex| to define such
+% commands automatically (see the macro \cs{um_set_mathsymbol:nNNn}).
+% I've chosen essentially just the operators that look like integrals;
+% hopefully a better mathematician can help me out here.
+% I've a feeling that it's more useful \emph{not} to include the multiple
+% integrals such as $\iiiint$, but that might be a matter of preference.
+% \begin{macrocode}
+\tl_new:Nn \l_um_nolimits_tl {
+ \int\iint\iiint\iiiint\oint\oiint\oiiint
+ \intclockwise\varointclockwise\ointctrclockwise\sumint
+ \intbar\intBar\fint\cirfnint\awint\rppolint
+ \scpolint\npolint\pointint\sqint\intlarhk\intx
+ \intcap\intcup\upint\lowint
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addnolimits}
+% This macro appends material to the macro containing the list of operators
+% that don't take limits.
+% \begin{macrocode}
+\DeclareDocumentCommand \addnolimits {m} {
+ \tl_put_right:Nn \l_um_nolimits_tl {#1}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\removenolimits}
+% Can this macro be given a better name?
+% It removes an item from the nolimits list.
+% \begin{macrocode}
+\DeclareDocumentCommand \removenolimits {m} {
+ \tl_remove_all_in:Nn \l_um_nolimits_tl {#1}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Radicals}
+%
+% The radical for square root is organised in \cs{um_set_mathsymbol:nNNn} on
+% page. I think it's the only radical ever.
+% (Actually, there is also \cs{cuberoot} and \cs{fourthroot}, but they don't
+% seem to behave as proper radicals.)
+%
+% Also, what about right-to-left square roots?
+%
+% \begin{macro}{\um@radicals}
+% We organise radicals in the same way as nolimits-operators; that is,
+% in a comma-list.
+% \begin{macrocode}
+\tl_new:Nn \l_um_radicals_tl {\sqrt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{example}{}
+% \setmathfont{Cambria Math}
+% \[ \sqrt[2]{1+\sqrt[3]{1+x}} \]
+% \end{example}
+%
+% \subsection{Delimiters}
+% \begin{macro}{\left}
+% We redefine the primitive to be preceded by \cmd\mathopen;
+% this gives much better spacing in cases such as \cmd\sin\cmd\left\dots.
+% Courtesy of Frank Mittelbach:\par
+% {\small\url{http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/3853&prlatex/3754}}
+% \begin{macrocode}
+\let\left@primitive\left
+\def\left{\mathopen{}\left@primitive}
+% \end{macrocode}
+% \end{macro}
+% No re-definition is made for \cmd\right\ because it's not
+% necessary.
+%
+% \subsection{Maths accents}
+%
+% Maths accents should just work \emph{if they are available in the font}.
+%
+% \section{Font features}
+%
+% \begin{macro}{\um@zf@feature}
+% Use the same method as \pkg{fontspec} for feature definition
+% (\ie, using \pkg{xkeyval}) but with a conditional to restrict
+% the scope of these features to \pkg{unicode-math} commands.
+% \begin{macrocode}
+\newcommand\um@zf@feature[2]{
+ \define@key[zf]{options}{#1}[]{
+ \bool_if:NTF \l_um_fontspec_feature_bool {
+ #2
+ }{
+ \um_warning:n {maths-feature-only}
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{OpenType maths font features}
+% \begin{macrocode}
+\um@zf@feature{ScriptStyle}{
+ \zf@update@ff{+ssty=0}
+}
+\um@zf@feature{ScriptScriptStyle}{
+ \zf@update@ff{+ssty=1}
+}
+% \end{macrocode}
+%
+% \subsection{Script and scriptscript font options}
+% \begin{macrocode}
+\keys_define:nn {unicode-math}
+{
+ script-features .tl_set:N = \l_um_script_features_tl ,
+ sscript-features .tl_set:N = \l_um_sscript_features_tl ,
+ script-font .tl_set:N = \l_um_script_font_tl ,
+ sscript-font .tl_set:N = \l_um_sscript_font_tl ,
+}
+% \end{macrocode}
+%
+% \subsection{Range processing}
+% \seclabel{rangeproc}
+%
+% \begin{macrocode}
+\seq_new:N \l_um_mathalph_seq
+\seq_new:N \l_um_char_range_seq
+\keys_define:nn {unicode-math} {
+ range .code:n = {
+ \bool_set_false:N \l_um_init_bool
+ \seq_clear:N \l_um_char_range_seq
+ \seq_clear:N \l_um_mathalph_seq
+ \clist_map_inline:nn {#1} {
+ \um_if_mathalph_decl:nTF {##1} {
+ \seq_put_right:Nx \l_um_mathalph_seq {
+ { \exp_not:V \l_um_tmpa_tl }
+ { \exp_not:V \l_um_tmpb_tl }
+ { \exp_not:V \l_um_tmpc_tl }
+ }
+ }{
+ \seq_put_right:Nn \l_um_char_range_seq {##1}
+ }
+ }
+ }
+}
+% \end{macrocode}
+%
+% \begin{macro}{\um_if_mathalph_decl:nTF}
+% Possible forms of input:\\
+% |\mathscr|\\
+% |\mathscr->\mathup|\\
+% |\mathscr/{Latin}|\\
+% |\mathscr/{Latin}->\mathup|\\
+% Outputs:\\
+% |tmpa|: math style (\eg, |\mathscr|)\\
+% |tmpb|: alphabets (\eg, |Latin|)\\
+% |tmpc|: remap style (\eg, |\mathup|). Defaults to |tmpa|.
+% \begin{macrocode}
+\prg_new_conditional:Nnn \um_if_mathalph_decl:n {TF} {
+ \KV_remove_surrounding_spaces:nw {\tl_set:Nf\l_um_tmpa_tl} #1 \q_nil
+ \tl_clear:N \l_um_tmpb_tl
+ \tl_clear:N \l_um_tmpc_tl
+ \tl_if_in:NnT \l_um_tmpa_tl {->} {
+ \exp_after:wN \um_split_arrow:w \l_um_tmpa_tl \q_nil
+ }
+ \tl_if_in:NnT \l_um_tmpa_tl {/} {
+ \exp_after:wN \um_split_slash:w \l_um_tmpa_tl \q_nil
+ }
+ \tl_if_empty:NT \l_um_tmpc_tl { \tl_set_eq:NN \l_um_tmpc_tl \l_um_tmpa_tl }
+ \seq_if_in:NVTF \g_um_mathalph_seq \l_um_tmpa_tl {
+ \prg_return_true:
+ }{
+ \prg_return_false:
+ }
+}
+\cs_set:Npn \um_split_arrow:w #1->#2 \q_nil {
+ \tl_set:Nn \l_um_tmpa_tl {#1}
+ \tl_set:Nn \l_um_tmpc_tl {#2}
+}
+\cs_set:Npn \um_split_slash:w #1/#2 \q_nil {
+ \tl_set:Nn \l_um_tmpa_tl {#1}
+ \tl_set:Nn \l_um_tmpb_tl {#2}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Pretty basic comma separated range processing.
+% Donald Arseneau's \pkg{selectp} package has a cleverer technique.
+%
+% \begin{macro}{\um@parse@term}
+% \darg{Unicode character slot}
+% \darg{control sequence (character macro)}
+% \darg{control sequence (math type)}
+% \darg{code to execute}
+% This macro expands to |#4|
+% if any of its arguments are contained in \cmd\l_um_char_range_seq.
+% This list can contain either character ranges (for checking with |#1|) or control sequences.
+% These latter can either be the command name of a specific character, \emph{or} the math
+% type of one (\eg, \cmd\mathbin).
+%
+% Character ranges are passed to \cmd\um@parse@range, which accepts input in the form shown in \tabref{ranges}.
+%
+% \begin{table}[htbp]
+% \centering
+% \topcaption{Ranges accepted by \cmd\um@parse@range.}
+% \label{tab:ranges}
+% \begin{tabular}{>{\ttfamily}cc}
+% \textrm{Input} & Range \\
+% \hline
+% x & $r=x$ \\
+% x- & $r\geq x$ \\
+% -y & $r\leq y$ \\
+% x-y & $x \leq r \leq y$ \\
+% \end{tabular}
+% \end{table}
+%
+% Start by iterating over the commalist, ignoring empties, and initialising the scratch conditional:
+% \begin{macrocode}
+\newcommand\um@parse@term[4]{
+ \seq_map_variable:NNn \l_um_char_range_seq \@ii {
+ \unless\ifx\@ii\@empty
+ \@tempswafalse
+% \end{macrocode}
+% Match to either the character macro (\cmd\alpha) or the math type (\cmd\mathbin):
+% \begin{macrocode}
+ \expandafter\um@firstchar\expandafter{\@ii}
+ \ifx\@tempa\um@backslash
+ \expandafter\ifx\@ii#2\relax
+ \@tempswatrue
+ \else
+ \expandafter\ifx\@ii#3\relax
+ \@tempswatrue
+ \fi
+ \fi
+% \end{macrocode}
+% Otherwise, we have a number range, which is passed to another macro:
+% \begin{macrocode}
+ \else
+ \expandafter\um@parse@range\@ii-\@marker-\@nil#1\@nil
+ \fi
+% \end{macrocode}
+% If we have a match, execute the code!
+% It also populates the
+% \cmd\l_um_char_num_range_clist\ macro, which is used when defining
+% \cmd\mathbf\ (\etc) \cmd\mathchar\ remappings.
+% \begin{macrocode}
+ \if@tempswa
+ \clist_put_right:Nx \l_um_char_num_range_clist { \intexpr_eval:n {#1} }
+ #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}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\um@parse@range}
+% Weird syntax.
+% As shown previously in \tabref{ranges}, this macro can be passed four different input types via \cmd\um@parse@term.
+% \begin{macrocode}
+\def\um@parse@range#1-#2-#3\@nil#4\@nil{
+ \def\@tempa{#1}
+ \def\@tempb{#2}
+% \end{macrocode}
+% \begin{tabular}{@{}ll}
+% \hline
+% Range & $r=x$ \\
+% C-list input & \cmd\@ii=|X| \\
+% Macro input & |\um@parse@range X-\@marker-\@nil#1\@nil| \\
+% Arguments &
+% \texttt{\textcolor{red}{\char`\#1}-\textcolor{blue}{\char`\#2}-\textcolor{Green}{\char`\#3}}
+% = \texttt{\textcolor{red}{X}-\textcolor{blue}{\cmd\@marker}-\textcolor{Green}{\char`\{\char`\}}} \\
+% \hline
+% \end{tabular}
+% \begin{macrocode}
+ \expandafter\ifx\expandafter\@marker\@tempb\relax
+ \intexpr_compare:nT {#4=#1} \@tempswatrue
+ \else
+% \end{macrocode}
+% \begin{tabular}{@{}ll}
+% \hline
+% Range & $r\geq x$ \\
+% C-list input & \cmd\@ii=|X-| \\
+% Macro input & |\um@parse@range X--\@marker-\@nil#1\@nil|\\
+% Arguments &
+% \texttt{\textcolor{red}{\char`\#1}-\textcolor{blue}{\char`\#2}-\textcolor{Green}{\char`\#3}}
+% = \texttt{\textcolor{red}{X}-\textcolor{blue}{\char`\{\char`\}}-\textcolor{Green}{\cmd\@marker-}} \\
+% \hline
+% \end{tabular}
+% \begin{macrocode}
+ \ifx\@empty\@tempb
+ \intexpr_compare:nT {#4>#1-1} \@tempswatrue
+ \else
+% \end{macrocode}
+% \begin{tabular}{@{}ll}
+% \hline
+% Range & $r\leq y$ \\
+% C-list input & \cmd\@ii=|-Y| \\
+% Macro input & |\um@parse@range -Y-\@marker-\@nil#1\@nil|\\
+% Arguments &
+% \texttt{\textcolor{red}{\char`\#1}-\textcolor{blue}{\char`\#2}-\textcolor{Green}{\char`\#3}}
+% = \texttt{\textcolor{red}{\char`\{\char`\}}-\textcolor{blue}{Y}-\textcolor{Green}{\cmd\@marker-}}\\
+% \hline
+% \end{tabular}
+% \begin{macrocode}
+ \ifx\@empty\@tempa
+ \intexpr_compare:nT {#4<#2+1} \@tempswatrue
+% \end{macrocode}
+% \begin{tabular}{@{}ll}
+% \hline
+% Range & $x \leq r \leq y$ \\
+% C-list input & \cmd\@ii=|X-Y| \\
+% Macro input & |\um@parse@range X-Y-\@marker-\@nil#1\@nil|\\
+% Arguments &
+% \texttt{\textcolor{red}{\char`\#1}-\textcolor{blue}{\char`\#2}-\textcolor{Green}{\char`\#3}}
+% = \texttt{\textcolor{red}{X}-\textcolor{blue}{Y}-\textcolor{Green}{\cmd\@marker-}}\\
+% \hline
+% \end{tabular}
+% \begin{macrocode}
+ \else
+ \intexpr_compare:nT {#4>#1-1} {
+ \intexpr_compare:nT {#4<#2+1} \@tempswatrue
+ }
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Resolving Greek symbol name control sequences}
+%
+% \begin{macro}{\um_resolve_greek:}
+% This macro defines \cmd\Alpha\dots\cmd\omega\ as their corresponding
+% Unicode (mathematical italic) character. Remember that the mapping
+% to upright or italic happens with the mathcode definitions, whereas these macros
+% just stand for the literal Unicode characters.
+% \begin{macrocode}
+\AtBeginDocument{\um_resolve_greek:}
+\cs_new:Npn \um_resolve_greek: {
+ \clist_map_inline:nn {
+ Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,
+ alpha,beta,gamma,delta, zeta,eta,theta,iota,kappa,lambda,
+ Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,
+ mu,nu,xi,omicron,pi,rho,sigma,tau,upsilon, chi,psi,omega,
+ varTheta,
+ varsigma,vartheta,varkappa,varrho,varpi
+ }{
+ \tl_set:cx {##1} { \exp_not:c { mit ##1 } }
+ }
+ \tl_set:Nn \epsilon {
+ \bool_if:NTF \g_um_texgreek_bool \mitvarepsilon \mitepsilon
+ }
+ \tl_set:Nn \phi {
+ \bool_if:NTF \g_um_texgreek_bool \mitvarphi \mitphi
+ }
+ \tl_set:Nn \varepsilon {
+ \bool_if:NTF \g_um_texgreek_bool \mitepsilon \mitvarepsilon
+ }
+ \tl_set:Nn \varphi {
+ \bool_if:NTF \g_um_texgreek_bool \mitphi \mitvarphi
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Maths alphabets mapping definitions}
+% \label{part:mathmap}
+%
+% Algorithm for setting alphabet fonts.
+% By default, when |range| is empty, we are in \emph{implicit} mode.
+% If |range| contains the name of the math alphabet, we are in \emph{explicit}
+% mode and do things slightly differently.
+%
+% Implicit mode:
+% \begin{itemize}
+% \item Try and set all of the alphabet shapes.
+% \item Check for the first glyph of each alphabet to detect if the font supports each
+% alphabet shape.
+% \item For alphabets that do exist, overwrite whatever's already there.
+% \item For alphabets that are not supported, \emph{do nothing}.
+% (This includes leaving the old alphabet definition in place.)
+% \end{itemize}
+%
+% Explicit mode:
+% \begin{itemize}
+% \item Only set the alphabets specified.
+% \item Check for the first glyph of the alphabet to detect if the font contains
+% the alphabet shape in the Unicode math plane.
+% \item For Unicode math alphabets, overwrite whatever's already there.
+% \item Otherwise, use the \ascii\ letters instead.
+% \end{itemize}
+%
+% \subsection{Defining the math style macros}
+%
+% We call the different shapes that a math alphabet can be a `math style'.
+% Note that different alphabets can exist within the same math style. E.g.,
+% we call `bold' the math style |bf| and within it there are upper and lower
+% case Greek and Roman alphabets and Arabic numerals.
+%
+% \begin{macro}{\g_um_mathalph_seq}
+% This is every math style known to \pkg{unicode-math}.
+% \begin{macrocode}
+\seq_new:N \g_um_mathalph_seq
+% \end{macrocode}
+%
+% \begin{macrocode}
+\AtEndOfPackage{
+ \tl_map_inline:nn {
+ \mathup\mathit\mathbb\mathbbit
+ \mathscr\mathfrak\mathtt
+ \mathsf\mathsfup\mathsfit
+ \mathbf\mathbfup\mathbfit
+ \mathbfscr\mathbffrak
+ \mathbfsf\mathbfsfup\mathbfsfit
+ }{
+ \seq_put_right:Nn \g_um_mathalph_seq {#1}
+ \um_prepare_mathstyle:f {\exp_after:wN \use_none:nnnnn \token_to_str:N #1}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\um_prepare_mathstyle:n}
+% \darg{math style name (e.g., \texttt{it} or \texttt{bb})}
+% Define the high level math alphabet macros (\cs{mathit}, etc.) in terms of
+% unicode-math definitions. Use \cs{bgroup}/\cs{egroup} so s'scripts scan the
+% whole thing.
+% \begin{macrocode}
+\cs_new:Npn \um_prepare_mathstyle:n #1 {
+ \um_init_alphabet:x {#1}
+ \cs_set:cpn {_um_math#1_aux:n} ##1 {
+ \use:c {um_switchto_math#1:} ##1 \egroup
+ }
+ \cs_set_protected:cpx {math#1} {
+ \exp_not:n{
+ \bgroup
+ \mode_if_math:F {
+ \egroup\expandafter
+ \non@alpherr\expandafter{\csname math#1\endcsname\space}
+ }
+ }
+ \exp_not:c {_um_math#1_aux:n}
+ }
+}
+\cs_generate_variant:Nn \um_prepare_mathstyle:n {f}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\um_init_alphabet:n}
+% \darg{math alphabet name (e.g., \texttt{it} or \texttt{bb})}
+% This macro initialises the macros used to set up a math alphabet.
+% First used with the math alphabet macro is first defined, but then used
+% later when redefining a particular maths alphabet.
+% \begin{macrocode}
+\cs_set:Npn \um_init_alphabet:n #1 {
+ \um_trace:nx {alph-initialise} {#1}
+ \cs_set_eq:cN {um_switchto_math#1:} \prg_do_nothing:
+}
+\cs_generate_variant:Nn \um_init_alphabet:n {x}
+% \end{macrocode}
+% Variants
+% \begin{macrocode}
+\cs_new:Npn \um_maybe_init_alphabet:V {
+ \exp_args:NV \um_maybe_init_alphabet:n
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Defining the math alphabets per style}
+%
+% \begin{macro}{\g_um_default_mathalph_seq}
+% This sequence stores the alphabets in each math style.
+% \begin{macrocode}
+\seq_new:N \g_um_default_mathalph_seq
+% \end{macrocode}
+%
+% \begin{macrocode}
+\clist_map_inline:nn {
+ {\mathup } {latin,Latin,greek,Greek,num,misc} {\mathup } ,
+ {\mathit } {latin,Latin,greek,Greek,misc} {\mathit } ,
+ {\mathbb } {latin,Latin,num,misc} {\mathbb } ,
+ {\mathbbit } {misc} {\mathbbit } ,
+ {\mathscr } {latin,Latin} {\mathscr } ,
+ {\mathfrak } {latin,Latin} {\mathfrak } ,
+ {\mathtt } {latin,Latin,num} {\mathtt } ,
+ {\mathsfup } {latin,Latin,num} {\mathsfup } ,
+ {\mathsfit } {latin,Latin} {\mathsfit } ,
+ {\mathbfup } {latin,Latin,greek,Greek,num,misc} {\mathbfup } ,
+ {\mathbfit } {latin,Latin,greek,Greek,misc} {\mathbfit } ,
+ {\mathbfscr } {latin,Latin} {\mathbfscr } ,
+ {\mathbffrak} {latin,Latin} {\mathbffrak} ,
+ {\mathbfsfup} {latin,Latin,greek,Greek,num,misc} {\mathbfsfup} ,
+ {\mathbfsfit} {latin,Latin,greek,Greek,misc} {\mathbfsfit}
+}{
+ \seq_put_right:Nn \g_um_default_mathalph_seq {#1}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Variables:
+% \begin{macrocode}
+\seq_new:N \l_um_missing_alph_seq
+% \end{macrocode}
+%
+% \begin{macro}{\um_setup_alphabets:}
+% This function is called within \cs{setmathfont} to configure the
+% mapping between characters inside math styles.
+% \begin{macrocode}
+\cs_new:Npn \um_setup_alphabets: {
+% \end{macrocode}
+% If |range=| has been used to configure styles, those choices will be in
+% |\l_um_mathalph_seq|. If not, set up the styles implicitly:
+% \begin{macrocode}
+ \seq_if_empty:NTF \l_um_mathalph_seq {
+ \um_trace:n {setup-implicit}
+ \seq_set_eq:NN \l_um_mathalph_seq \g_um_default_mathalph_seq
+ \bool_set_true:N \l_um_implicit_alph_bool
+ \um_maybe_init_alphabet:n {sf}
+ \um_maybe_init_alphabet:n {bf}
+ \um_maybe_init_alphabet:n {bfsf}
+ }
+% \end{macrocode}
+% If |range=| has been used then we're in explicit mode:
+% \begin{macrocode}
+ {
+ \um_trace:n {setup-explicit}
+ \bool_set_false:N \l_um_implicit_alph_bool
+ \cs_set_eq:NN \um_set_mathalphabet_char:Nnn \um_mathmap_noparse:Nnn
+ \cs_set_eq:NN \um_map_char_single:nn \um_map_char_noparse:nn
+ }
+% \end{macrocode}
+% Now perform the mapping:
+% \begin{macrocode}
+ \seq_map_inline:Nn \l_um_mathalph_seq {
+ \tl_set:No \l_um_tmpa_tl { \use_i:nnn ##1 }
+ \tl_set:No \l_um_tmpb_tl { \use_ii:nnn ##1 }
+ \tl_set:No \l_um_remap_style_tl { \use_iii:nnn ##1 }
+ \tl_set:Nx \l_um_remap_style_tl {
+ \exp_after:wN \exp_after:wN \exp_after:wN \use_none:nnnnn
+ \exp_after:wN \token_to_str:N \l_um_remap_style_tl
+ }
+ \tl_if_empty:NT \l_um_tmpb_tl {
+ \cs_set_eq:NN \um_maybe_init_alphabet:n \um_init_alphabet:n
+ \tl_set:Nn \l_um_tmpb_tl { latin,Latin,greek,Greek,num,misc }
+ }
+ \um_setup_math_alphabet:VVV
+ \l_um_tmpa_tl \l_um_tmpb_tl \l_um_remap_style_tl
+ }
+ \um_warn_missing_alphabets:
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Npn \um_warn_missing_alphabets: {
+ \seq_if_empty:NF \l_um_missing_alph_seq {
+ \typeout{
+ Package~unicode-math~Warning:~
+ missing~math~alphabets~in~font~ \fontname\l_um_font
+ }
+ \seq_map_inline:Nn \l_um_missing_alph_seq {
+ \typeout{\space\space\space\space##1}
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\um_setup_math_alphabet:Nnn}
+% \darg{Math font style command (e.g., \cs{mathbb})}
+% \darg{Math alphabets, comma separated of \{latin,Latin,greek,Greek,num\}}
+% \darg{Name of the output math style (usually same as input \texttt{bb})}
+% \begin{macrocode}
+\cs_new:Npn \um_setup_math_alphabet:Nnn #1#2#3 {
+ \tl_set:Nx \l_um_style_tl {
+ \exp_after:wN \use_none:nnnnn \token_to_str:N #1
+ }
+% \end{macrocode}
+% First check that at least one of the alphabets for the font shape is defined\dots
+% \begin{macrocode}
+ \clist_map_inline:nn {#2} {
+ \cs_if_exist:cT {um_config_ \l_um_style_tl _##1:n} {
+ \tl_if_eq:nnTF {##1}{misc} {
+ \um_maybe_init_alphabet:V \l_um_style_tl
+ \clist_map_break:
+ }{
+ \um_glyph_if_exist:cT { \um_to_usv:nn {#3}{##1} }{
+ \um_maybe_init_alphabet:V \l_um_style_tl
+ \clist_map_break:
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% \dots and then loop through them defining the individual ranges:
+% \begin{macrocode}
+ \clist_map_inline:nn {#2} {
+ \cs_if_exist:cT {um_config_ \l_um_style_tl _##1:n} {
+ \tl_if_eq:nnTF {##1}{misc} {
+ \um_trace:nx {setup-alph} {math \l_um_style_tl~(##1)}
+ \use:c {um_config_ \l_um_style_tl _##1:n} {#3}
+ }{
+ \um_glyph_if_exist:cTF { \um_to_usv:nn {#3}{##1} } {
+ \um_trace:nx {setup-alph} {math \l_um_style_tl~(##1)}
+ \use:c {um_config_ \l_um_style_tl _##1:n} {#3}
+ }{
+ \bool_if:NTF \l_um_implicit_alph_bool {
+ \seq_put_right:Nx \l_um_missing_alph_seq {
+ \@backslashchar math \l_um_style_tl \space
+ (\tl_use:c{g_um_math_alphabet_name_##1_tl})
+ }
+ }{
+ \use:c {um_config_ \l_um_style_tl _##1:n} {up}
+ }
+ }
+ }
+ }
+ }
+}
+\cs_generate_variant:Nn \um_setup_math_alphabet:Nnn {VVV}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{Mapping `naked' math characters}
+%
+% Before we show the definitions of the alphabet mappings using the functions
+% |\um_config_\l_um_style_tl_##1:n|, we first want to define some functions
+% to be used inside them to actually perform the character mapping.
+%
+% \darg{Starting input char (single)}
+% \darg{Starting output char}
+% Loops through character ranges setting \cmd\mathcode.
+% \begin{macrocode}
+\cs_set:Npn \um_map_chars_range:nnn #1#2#3 {
+ \prg_stepwise_inline:nnnn {0}{1}{#1-1} {
+ \um_map_char_single:nn {#2+##1}{#3+##1}
+ }
+}
+\cs_generate_variant:Nn \um_map_chars_range:nnn {ncc}
+% \end{macrocode}
+%
+% \begin{macro}{\um_map_chars_range:nnnn}
+% \darg{Number of chars (26)}
+% \darg{From style, one or more (it)}
+% \darg{To style (up)}
+% \darg{Alphabet name (Latin)}
+% \begin{macrocode}
+\cs_new:Npn \um_map_chars_range:nnnn #1#2#3#4 {
+ \um_map_chars_range:ncc {#1} { \um_to_usv:nn {#2}{#4} }
+ { \um_to_usv:nn {#3}{#4} }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\cs_new:Npn \um_map_char_noparse:nn #1#2 {
+ \um_set_mathcode:nnnn {#1}{\mathalpha}{\um_symfont_tl}{#2}
+}
+\cs_new:Npn \um_map_char_parse:nn #1#2 {
+ \um@parse@term {#1} {\@nil} {\mathalpha} {
+ \um_map_char_noparse:nn {#1}{#2}
+ }
+}
+\cs_set:Npn \um_map_chars_Latin:nn #1#2 {
+ \clist_map_inline:nn {#1} {
+ \um_map_chars_range:nnnn {26} {##1} {#2} {Latin}
+ }
+}
+\cs_set:Npn \um_map_chars_latin:nn #1#2 {
+ \clist_map_inline:nn {#1} {
+ \um_map_chars_range:nnnn {26} {##1} {#2} {latin}
+ }
+}
+\cs_set:Npn \um_map_chars_greek:nn #1#2 {
+ \clist_map_inline:nn {#1} {
+ \um_map_chars_range:nnnn {25} {##1} {#2} {greek}
+ \um_map_char_single:nnn {##1} {#2} {varepsilon}
+ \um_map_char_single:nnn {##1} {#2} {vartheta}
+ \um_map_char_single:nnn {##1} {#2} {varkappa}
+ \um_map_char_single:nnn {##1} {#2} {varphi}
+ \um_map_char_single:nnn {##1} {#2} {varrho}
+ \um_map_char_single:nnn {##1} {#2} {varpi}
+ }
+}
+\cs_set:Npn \um_map_chars_Greek:nn #1#2 {
+ \clist_map_inline:nn {#1} {
+ \um_map_chars_range:nnnn {25} {##1} {#2} {Greek}
+ \um_map_char_single:nnn {##1} {#2} {varTheta}
+ }
+}
+\cs_set:Npn \um_map_chars_numbers:nn #1#2 {
+ \um_map_chars_range:nnnn {10} {#1} {#2} {num}
+}
+% \end{macrocode}
+%
+% \begin{macro}{\um_map_single:nnn}
+% \darg{char name (`dotlessi')}
+% \darg{from alphabet(s)}
+% \darg{to alphabet}
+% \begin{macrocode}
+\cs_new:Npn \um_map_char_single:cc { \exp_args:Ncc \um_map_char_single:nn }
+\cs_new:Npn \um_map_char_single:nnn #1#2#3 {
+ \um_map_char_single:cc { \um_to_usv:nn {#1}{#3} }
+ { \um_to_usv:nn {#2}{#3} }
+}
+\cs_set:Npn \um_map_single:nnn #1#2#3 {
+ \cs_if_exist:cT { \um_to_usv:nn {#3} {#1} }
+ {
+ \clist_map_inline:nn {#2} {
+ \um_map_char_single:nnn {##1} {#3} {#1}
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Mapping chars inside a math style}
+%
+% \begin{macro}{\um_set_mathalph_range:Nnn}
+% \oarg{Number of iterations}
+% \darg{Maths alphabet}
+% \darg{Starting input char (single)}
+% \darg{Starting output char}
+% Loops through character ranges setting \cmd\mathcode.
+% \begin{macrocode}
+\cs_new:Npn \um_set_mathalph_range:nNnn #1#2#3#4 {
+ \prg_stepwise_inline:nnnn {0}{1}{#1-1} {
+ \um_set_mathalphabet_char:Nnn {#2} { ##1 + #3 } { ##1 + #4 }
+ }
+}
+\cs_generate_variant:Nn \um_set_mathalph_range:nNnn {nNcc}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Npn \um_set_mathalphabet_pos:Nnnn #1#2#3#4 {
+ \cs_if_exist:cT { \um_to_usv:nn {#4}{#2} } {
+ \clist_map_inline:nn {#3} {
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#4} {#2}
+ }
+ }
+}
+\cs_new:Npn \um_set_mathalphabet_numbers:Nnn #1#2#3 {
+ \clist_map_inline:nn {#2} {
+ \um_set_mathalph_range:nNnnn {10} #1 {##1} {#3} {num}
+ }
+}
+\cs_new:Npn \um_set_mathalphabet_Latin:Nnn #1#2#3 {
+ \clist_map_inline:nn {#2} {
+ \um_set_mathalph_range:nNnnn {26} #1 {##1} {#3} {Latin}
+ }
+}
+\cs_new:Npn \um_set_mathalphabet_latin:Nnn #1#2#3 {
+ \clist_map_inline:nn {#2} {
+ \um_set_mathalph_range:nNnnn {26} #1 {##1} {#3} {latin}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {h}
+ }
+}
+\cs_new:Npn \um_set_mathalphabet_Greek:Nnn #1#2#3 {
+ \clist_map_inline:nn {#2} {
+ \um_set_mathalph_range:nNnnn {25} #1 {##1} {#3} {Greek}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varTheta}
+ }
+}
+\cs_new:Npn \um_set_mathalphabet_greek:Nnn #1#2#3 {
+ \clist_map_inline:nn {#2} {
+ \um_set_mathalph_range:nNnnn {25} #1 {##1} {#3} {greek}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varepsilon}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {vartheta}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varkappa}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varphi}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varrho}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varpi}
+ }
+}
+\cs_new:Npn \um_set_mathalphabet_char:Ncc {
+ \exp_args:NNcc \um_set_mathalphabet_char:Nnn
+}
+\cs_new:Npn \um_set_mathalphabet_char:Nnnn #1#2#3#4 {
+ \um_set_mathalphabet_char:Ncc #1 { \um_to_usv:nn {#2} {#4} }
+ { \um_to_usv:nn {#3} {#4} }
+}
+\cs_new:Npn \um_set_mathalph_range:nNnnn #1#2#3#4#5 {
+ \um_set_mathalph_range:nNcc {#1} #2 { \um_to_usv:nn {#3} {#5} }
+ { \um_to_usv:nn {#4} {#5} }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Alphabets}
+%
+% \subsubsection{Upright: \cmd\mathup}
+% \begin{macrocode}
+\cs_new:Npn \um_config_up_num:n #1 {
+ \um_map_chars_numbers:nn {up}{#1}
+ \um_set_mathalphabet_numbers:Nnn \mathup {up}{#1}
+}
+\cs_new:Npn \um_config_up_Latin:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_Latin:nn {up} {#1}
+ }{
+ \bool_if:NT \g_um_upLatin_bool {
+ \um_map_chars_Latin:nn {up,it} {#1}
+ }
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathup {up,it}{#1}
+}
+\cs_new:Npn \um_config_up_latin:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_latin:nn {up} {#1}
+ }{
+ \bool_if:NT \g_um_uplatin_bool {
+ \um_map_chars_latin:nn {up,it} {#1}
+ \um_map_single:nnn {h} {up,it} {#1}
+ \um_map_single:nnn {dotlessi} {up,it} {#1}
+ \um_map_single:nnn {dotlessj} {up,it} {#1}
+ }
+ }
+ \um_set_mathalphabet_latin:Nnn \mathup {up,it}{#1}
+}
+\cs_new:Npn \um_config_up_Greek:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_Greek:nn {up}{#1}
+ }{
+ \bool_if:NT \g_um_upGreek_bool {
+ \um_map_chars_Greek:nn {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Greek:Nnn \mathup {up,it}{#1}
+}
+\cs_new:Npn \um_config_up_greek:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_greek:nn {up} {#1}
+ }{
+ \bool_if:NT \g_um_upgreek_bool {
+ \um_map_chars_greek:nn {up,it} {#1}
+ }
+ }
+ \um_set_mathalphabet_greek:Nnn \mathup {up,it} {#1}
+}
+\cs_new:Npn \um_config_up_misc:n #1 {
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_map_single:nnn {Nabla}{up}{up}
+ }{
+ \bool_if:NT \g_um_upNabla_bool {
+ \um_map_single:nnn {Nabla}{up,it}{up}
+ }
+ }
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_map_single:nnn {partial}{up}{up}
+ }{
+ \bool_if:NT \g_um_uppartial_bool {
+ \um_map_single:nnn {partial}{up,it}{up}
+ }
+ }
+ \um_set_mathalphabet_pos:Nnnn \mathup {partial} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathup {Nabla} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathup {dotlessi} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathup {dotlessj} {up,it} {#1}
+}
+% \end{macrocode}
+%
+% \subsubsection{Italic: \cmd\mathit}
+%
+% \begin{macrocode}
+\cs_new:Npn \um_config_it_Latin:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_Latin:nn {it} {#1}
+ }{
+ \bool_if:NF \g_um_upLatin_bool {
+ \um_map_chars_Latin:nn {up,it} {#1}
+ }
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathit {up,it}{#1}
+}
+\cs_new:Npn \um_config_it_latin:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_latin:nn {it} {#1}
+ \um_map_single:nnn {h}{it}{#1}
+ }{
+ \bool_if:NF \g_um_uplatin_bool {
+ \um_map_chars_latin:nn {up,it} {#1}
+ \um_map_single:nnn {h}{up,it}{#1}
+ \um_map_single:nnn {dotlessi}{up,it}{#1}
+ \um_map_single:nnn {dotlessj}{up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_latin:Nnn \mathit {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathit {dotlessi} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathit {dotlessj} {up,it} {#1}
+}
+\cs_new:Npn \um_config_it_Greek:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_Greek:nn {it}{#1}
+ }{
+ \bool_if:NF \g_um_upGreek_bool {
+ \um_map_chars_Greek:nn {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Greek:Nnn \mathit {up,it}{#1}
+}
+\cs_new:Npn \um_config_it_greek:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_greek:nn {it} {#1}
+ }{
+ \bool_if:NF \g_um_upgreek_bool {
+ \um_map_chars_greek:nn {it,up} {#1}
+ }
+ }
+ \um_set_mathalphabet_greek:Nnn \mathit {up,it} {#1}
+}
+\cs_new:Npn \um_config_it_misc:n #1 {
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_map_single:nnn {Nabla}{it}{it}
+ }{
+ \bool_if:NF \g_um_upNabla_bool {
+ \um_map_single:nnn {Nabla}{up,it}{it}
+ }
+ }
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_map_single:nnn {partial}{it}{it}
+ }{
+ \bool_if:NF \g_um_uppartial_bool {
+ \um_map_single:nnn {partial}{up,it}{it}
+ }
+ }
+ \um_set_mathalphabet_pos:Nnnn \mathit {partial} {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathit {Nabla} {up,it}{#1}
+}
+% \end{macrocode}
+%
+% \subsubsection{Blackboard or double-struck: \cmd\mathbb\ and \cmd\mathbbit}
+%
+% \begin{macrocode}
+\cs_new:Npn \um_config_bb_latin:n #1 {
+ \um_set_mathalphabet_latin:Nnn \mathbb {up,it}{#1}
+}
+\cs_new:Npn \um_config_bb_Latin:n #1 {
+ \um_set_mathalphabet_Latin:Nnn \mathbb {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {C} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {H} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {N} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {P} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {Q} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {R} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {Z} {up,it} {#1}
+}
+\cs_new:Npn \um_config_bb_num:n #1 {
+ \um_set_mathalphabet_numbers:Nnn \mathbb {up}{#1}
+}
+\cs_new:Npn \um_config_bb_misc:n #1 {
+ \um_set_mathalphabet_pos:Nnnn \mathbb {Pi} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {pi} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {Gamma} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {gamma} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {summation} {up} {#1}
+}
+\cs_new:Npn \um_config_bbit_misc:n #1 {
+ \um_set_mathalphabet_pos:Nnnn \mathbbit {D} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbbit {d} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbbit {e} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbbit {i} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbbit {j} {up,it} {#1}
+}
+% \end{macrocode}
+%
+% \subsubsection{Script or caligraphic: \cmd\mathscr\ and \cmd\mathcal}
+%
+% \begin{macrocode}
+\cs_new:Npn \um_config_scr_Latin:n #1 {
+ \um_set_mathalphabet_Latin:Nnn \mathscr {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {B}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {E}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {F}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {H}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {I}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {L}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {M}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {R}{up,it}{#1}
+}
+\cs_new:Npn \um_config_scr_latin:n #1 {
+ \um_set_mathalphabet_latin:Nnn \mathscr {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {e}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {g}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {o}{up,it}{#1}
+}
+% \end{macrocode}
+%
+% \subsubsection{Fractur or fraktur or blackletter: \cmd\mathfrak}
+%
+% \begin{macrocode}
+\cs_new:Npn \um_config_frak_Latin:n #1 {
+ \um_set_mathalphabet_Latin:Nnn \mathfrak {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathfrak {C}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathfrak {H}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathfrak {I}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathfrak {R}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathfrak {Z}{up,it}{#1}
+}
+\cs_new:Npn \um_config_frak_latin:n #1 {
+ \um_set_mathalphabet_latin:Nnn \mathfrak {up,it}{#1}
+}
+% \end{macrocode}
+%
+% \subsubsection{Sans serif upright: \cmd\mathsfup}
+% \begin{macrocode}
+\cs_new:Npn \um_config_sfup_num:n #1 {
+ \um_set_mathalphabet_numbers:Nnn \mathsf {up}{#1}
+ \um_set_mathalphabet_numbers:Nnn \mathsfup {up}{#1}
+}
+\cs_new:Npn \um_config_sfup_Latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_Latin:nn {sfup} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathsf {up}{#1}
+ }{
+ \bool_if:NT \g_um_upsans_bool {
+ \um_map_chars_Latin:nn {sfup,sfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathsfup {up,it}{#1}
+}
+\cs_new:Npn \um_config_sfup_latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_latin:nn {sfup} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathsf {up}{#1}
+ }{
+ \bool_if:NT \g_um_upsans_bool {
+ \um_map_chars_latin:nn {sfup,sfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_latin:Nnn \mathsfup {up,it}{#1}
+}
+% \end{macrocode}
+%
+% \subsubsection{Sans serif italic: \cmd\mathsfit}
+%
+% \begin{macrocode}
+\cs_new:Npn \um_config_sfit_Latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_Latin:nn {sfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathsf {it}{#1}
+ }{
+ \bool_if:NF \g_um_upsans_bool {
+ \um_map_chars_Latin:nn {sfup,sfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathsfit {up,it}{#1}
+}
+\cs_new:Npn \um_config_sfit_latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_latin:nn {sfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathsf {it}{#1}
+ }{
+ \bool_if:NF \g_um_upsans_bool {
+ \um_map_chars_latin:nn {sfup,sfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_latin:Nnn \mathsfit {up,it}{#1}
+}
+% \end{macrocode}
+%
+% \subsubsection{Typewriter or monospaced: \cmd\mathtt}
+% \begin{macrocode}
+\cs_new:Npn \um_config_tt_num:n #1 {
+ \um_set_mathalphabet_numbers:Nnn \mathtt {up}{#1}
+}
+\cs_new:Npn \um_config_tt_Latin:n #1 {
+ \um_set_mathalphabet_Latin:Nnn \mathtt {up,it}{#1}
+}
+\cs_new:Npn \um_config_tt_latin:n #1 {
+ \um_set_mathalphabet_latin:Nnn \mathtt {up,it}{#1}
+}
+% \end{macrocode}
+%
+%
+% \subsubsection{Bold Italic: \cmd\mathbfit}
+% \begin{macrocode}
+\cs_new:Npn \um_config_bfit_Latin:n #1 {
+ \bool_if:NF \g_um_bfupLatin_bool {
+ \um_map_chars_Latin:nn {bfup,bfit} {#1}
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathbfit {up,it}{#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_Latin:nn {bfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbf {it}{#1}
+ }{
+ \bool_if:NF \g_um_bfupLatin_bool {
+ \um_map_chars_Latin:nn {bfup,bfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbf {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfit_latin:n #1 {
+ \bool_if:NF \g_um_bfuplatin_bool {
+ \um_map_chars_latin:nn {bfup,bfit} {#1}
+ }
+ \um_set_mathalphabet_latin:Nnn \mathbfit {up,it}{#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_latin:nn {bfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbf {it}{#1}
+ }{
+ \bool_if:NF \g_um_bfuplatin_bool {
+ \um_map_chars_latin:nn {bfup,bfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbf {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfit_Greek:n #1 {
+ \um_set_mathalphabet_Greek:Nnn \mathbfit {up,it}{#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_Greek:nn {bfit}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbf {it}{#1}
+ }{
+ \bool_if:NF \g_um_bfupGreek_bool {
+ \um_map_chars_Greek:nn {bfup,bfit}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbf {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfit_greek:n #1 {
+ \um_set_mathalphabet_greek:Nnn \mathbfit {up,it} {#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_greek:nn {bfit} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbf {it} {#1}
+ }{
+ \bool_if:NF \g_um_bfupgreek_bool {
+ \um_map_chars_greek:nn {bfit,bfup} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbf {up,it} {#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfit_misc:n #1 {
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_map_single:nnn {Nabla}{bfit}{#1}
+ }{
+ \bool_if:NF \g_um_upNabla_bool {
+ \um_map_single:nnn {Nabla}{bfup,bfit}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_map_single:nnn {partial}{bfit}{#1}
+ }{
+ \bool_if:NF \g_um_uppartial_bool {
+ \um_map_single:nnn {partial}{bfup,bfit}{#1}
+ }
+ }
+ \um_set_mathalphabet_pos:Nnnn \mathbfit {partial} {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbfit {Nabla} {up,it}{#1}
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {it}{#1}
+ }{
+ \bool_if:NF \g_um_uppartial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {up,it}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {it}{#1}
+ }{
+ \bool_if:NF \g_um_upNabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {up,it}{#1}
+ }
+ }
+}
+% \end{macrocode}
+%
+%
+% \subsubsection{Bold Upright: \cmd\mathbfup}
+% \begin{macrocode}
+\cs_new:Npn \um_config_bfup_num:n #1 {
+ \um_set_mathalphabet_numbers:Nnn \mathbf {up}{#1}
+ \um_set_mathalphabet_numbers:Nnn \mathbfup {up}{#1}
+}
+\cs_new:Npn \um_config_bfup_Latin:n #1 {
+ \bool_if:NT \g_um_bfupLatin_bool {
+ \um_map_chars_Latin:nn {bfup,bfit} {#1}
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathbfup {up,it}{#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_Latin:nn {bfup} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbf {up}{#1}
+ }{
+ \bool_if:NT \g_um_bfupLatin_bool {
+ \um_map_chars_Latin:nn {bfup,bfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbf {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfup_latin:n #1 {
+ \bool_if:NT \g_um_bfuplatin_bool {
+ \um_map_chars_latin:nn {bfup,bfit} {#1}
+ }
+ \um_set_mathalphabet_latin:Nnn \mathbfup {up,it}{#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_latin:nn {bfup} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbf {up}{#1}
+ }{
+ \bool_if:NT \g_um_bfuplatin_bool {
+ \um_map_chars_latin:nn {bfup,bfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbf {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfup_Greek:n #1 {
+ \um_set_mathalphabet_Greek:Nnn \mathbfup {up,it}{#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_Greek:nn {bfup}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbf {up}{#1}
+ }{
+ \bool_if:NT \g_um_bfupGreek_bool {
+ \um_map_chars_Greek:nn {bfup,bfit}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbf {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfup_greek:n #1 {
+ \um_set_mathalphabet_greek:Nnn \mathbfup {up,it} {#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_greek:nn {bfup} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbf {up} {#1}
+ }{
+ \bool_if:NT \g_um_bfupgreek_bool {
+ \um_map_chars_greek:nn {bfup,bfit} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbf {up,it} {#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfup_misc:n #1 {
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_map_single:nnn {Nabla}{bfup}{#1}
+ }{
+ \bool_if:NT \g_um_upNabla_bool {
+ \um_map_single:nnn {Nabla}{bfup,bfit}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_map_single:nnn {partial}{bfup}{#1}
+ }{
+ \bool_if:NT \g_um_uppartial_bool {
+ \um_map_single:nnn {partial}{bfup,bfit}{#1}
+ }
+ }
+ \um_set_mathalphabet_pos:Nnnn \mathbfup {partial} {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbfup {Nabla} {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbfup {digamma} {up}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbfup {Digamma} {up}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbf {digamma} {up}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbf {Digamma} {up}{#1}
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {up}{#1}
+ }{
+ \bool_if:NT \g_um_uppartial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {up,it}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {up}{#1}
+ }{
+ \bool_if:NT \g_um_upNabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {up,it}{#1}
+ }
+ }
+}
+% \end{macrocode}
+%
+% \subsubsection{Bold fractur or fraktur or blackletter: \cmd\mathbffrak}
+% \begin{macrocode}
+\cs_new:Npn \um_config_bffrak_Latin:n #1 {
+ \um_set_mathalphabet_Latin:Nnn \mathbffrak {up,it}{#1}
+}
+\cs_new:Npn \um_config_bffrak_latin:n #1 {
+ \um_set_mathalphabet_latin:Nnn \mathbffrak {up,it}{#1}
+}
+% \end{macrocode}
+%
+% \subsubsection{Bold script or calligraphic: \cmd\mathbfscr}
+% \begin{macrocode}
+\cs_new:Npn \um_config_bfscr_Latin:n #1 {
+ \um_set_mathalphabet_Latin:Nnn \mathbfscr {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfscr_latin:n #1 {
+ \um_set_mathalphabet_latin:Nnn \mathbfscr {up,it}{#1}
+}
+% \end{macrocode}
+%
+% \subsubsection{Bold upright sans serif: \cmd\mathbfsfup}
+% \begin{macrocode}
+\cs_new:Npn \um_config_bfsfup_num:n #1 {
+ \um_set_mathalphabet_numbers:Nnn \mathbfsf {up}{#1}
+ \um_set_mathalphabet_numbers:Nnn \mathbfsfup {up}{#1}
+}
+\cs_new:Npn \um_config_bfsfup_Latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_Latin:nn {bfsfup} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbfsf {up}{#1}
+ }{
+ \bool_if:NT \g_um_upsans_bool {
+ \um_map_chars_Latin:nn {bfsfup,bfsfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbfsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathbfsfup {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfup_latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_latin:nn {bfsfup} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbfsf {up}{#1}
+ }{
+ \bool_if:NT \g_um_upsans_bool {
+ \um_map_chars_latin:nn {bfsfup,bfsfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbfsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_latin:Nnn \mathbfsfup {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfup_Greek:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_Greek:nn {bfsfup}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbfsf {up}{#1}
+ }{
+ \bool_if:NT \g_um_upsans_bool {
+ \um_map_chars_Greek:nn {bfsfup,bfsfit}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbfsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Greek:Nnn \mathbfsfup {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfup_greek:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_greek:nn {bfsfup} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbfsf {up} {#1}
+ }{
+ \bool_if:NT \g_um_upsans_bool {
+ \um_map_chars_greek:nn {bfsfup,bfsfit} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbfsf {up,it} {#1}
+ }
+ }
+ \um_set_mathalphabet_greek:Nnn \mathbfsfup {up,it} {#1}
+}
+\cs_new:Npn \um_config_bfsfup_misc:n #1 {
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_map_single:nnn {Nabla}{bfsfup}{#1}
+ }{
+ \bool_if:NT \g_um_upNabla_bool {
+ \um_map_single:nnn {Nabla}{bfsfup,bfsfit}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_map_single:nnn {partial}{bfsfup}{#1}
+ }{
+ \bool_if:NT \g_um_uppartial_bool {
+ \um_map_single:nnn {partial}{bfsfup,bfsfit}{#1}
+ }
+ }
+ \um_set_mathalphabet_pos:Nnnn \mathbfsfup {partial} {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbfsfup {Nabla} {up,it}{#1}
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {up}{#1}
+ }{
+ \bool_if:NT \g_um_uppartial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {up,it}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {up}{#1}
+ }{
+ \bool_if:NT \g_um_upNabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {up,it}{#1}
+ }
+ }
+}
+% \end{macrocode}
+%
+%
+% \subsubsection{Bold italic sans serif: \cmd\mathbfsfit}
+% \begin{macrocode}
+\cs_new:Npn \um_config_bfsfit_Latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_Latin:nn {bfsfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbfsf {it}{#1}
+ }{
+ \bool_if:NF \g_um_upsans_bool {
+ \um_map_chars_Latin:nn {bfsfup,bfsfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbfsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathbfsfit {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfit_latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_latin:nn {bfsfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbfsf {it}{#1}
+ }{
+ \bool_if:NF \g_um_upsans_bool {
+ \um_map_chars_latin:nn {bfsfup,bfsfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbfsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_latin:Nnn \mathbfsfit {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfit_Greek:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_Greek:nn {bfsfit}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbfsf {it}{#1}
+ }{
+ \bool_if:NF \g_um_upsans_bool {
+ \um_map_chars_Greek:nn {bfsfup,bfsfit}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbfsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Greek:Nnn \mathbfsfit {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfit_greek:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_greek:nn {bfsfit} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbfsf {it} {#1}
+ }{
+ \bool_if:NF \g_um_upsans_bool {
+ \um_map_chars_greek:nn {bfsfup,bfsfit} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbfsf {up,it} {#1}
+ }
+ }
+ \um_set_mathalphabet_greek:Nnn \mathbfsfit {up,it} {#1}
+}
+\cs_new:Npn \um_config_bfsfit_misc:n #1 {
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_map_single:nnn {Nabla}{bfsfit}{#1}
+ }{
+ \bool_if:NF \g_um_upNabla_bool {
+ \um_map_single:nnn {Nabla}{bfsfup,bfsfit}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_map_single:nnn {partial}{bfsfit}{#1}
+ }{
+ \bool_if:NF \g_um_uppartial_bool {
+ \um_map_single:nnn {partial}{bfsfup,bfsfit}{#1}
+ }
+ }
+ \um_set_mathalphabet_pos:Nnnn \mathbfsfit {partial} {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbfsfit {Nabla} {up,it}{#1}
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {it}{#1}
+ }{
+ \bool_if:NF \g_um_uppartial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {up,it}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {it}{#1}
+ }{
+ \bool_if:NF \g_um_upNabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {up,it}{#1}
+ }
+ }
+}
+% \end{macrocode}
+%
+% \section{Definitions of the active math characters}
+%
+% Here we define every Unicode math codepoint an equivalent macro name.
+% The two are equivalent, in a |\let\xyz=^^^^1234| kind of way.
+%
+% \begin{macro}{\um@scancharlet}
+% \begin{macro}{\um@scanactivedef}
+% We need to do some trickery to transform the |\UnicodeMathSymbol| argument
+% |"ABCDEF| into the \XeTeX\ `caret input' form |^^^^^abcdef|. It is \emph{very important}
+% that the argument has five characters. Otherwise we need to change the number of |^| chars.
+%
+% To do this, turn |^| into a regular `other' character and define the macro
+% to perform the lowercasing and |\let|. \cmd\scantokens\ changes the carets
+% back into their original meaning after the group has ended and |^|'s catcode returns to normal.
+% \begin{macrocode}
+\begingroup
+ \char_make_other:N \^
+ \cs_gset:Npn \um@scancharlet#1="#2\@nil {
+ \lowercase{
+ \tl_rescan:nn {
+ \char_make_other:N \{
+ \char_make_other:N \}
+ \char_make_other:N \&
+ \char_make_other:N \%
+ \char_make_other:N \$
+ }{
+ \global\let#1=^^^^^#2
+ }
+ }
+ }
+% \end{macrocode}
+% Making |^| the right catcode isn't strictly necessary right now but it helps to future proof us with, e.g., breqn.
+% \begin{macrocode}
+ \gdef\um@scanactivedef"#1\@nil#2{
+ \lowercase{
+ \tl_rescan:nn{
+ \ExplSyntaxOn
+ \char_make_math_superscript:N\^
+ }{
+ \global\def^^^^^#1{#2}
+ }
+ }
+ }
+\endgroup
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Now give \cmd\UnicodeMathSymbol\ a definition in terms of \cmd\um@scancharlet\
+% and we're good to go.
+% Make sure |#| is an `other' so that we don't get confused with \cs{mathoctothorpe}.
+% \begin{macrocode}
+\AtBeginDocument{
+ \group_begin:
+ \char_make_math_superscript:N\^
+ \def\UnicodeMathSymbol#1#2#3#4{
+ \bool_if:nF { \cs_if_eq_p:NN #3 \mathaccent ||
+ \cs_if_eq_p:NN #3 \mathopen ||
+ \cs_if_eq_p:NN #3 \mathclose } {
+ \um@scancharlet#2=#1\@nil\ignorespaces
+ }
+ }
+ \char_make_other:N \#
+ \@input{unicode-math-table.tex}
+ \group_end:
+}
+% \end{macrocode}
+% Fix \cs{backslash}, which is defined as the escape char character
+% above:
+% \begin{macrocode}
+\group_begin:
+ \lccode`\*=`\\
+ \char_make_escape:N \|
+ \char_make_other:N \\
+ |lowercase{
+ |AtBeginDocument{
+ |let|backslash=*
+ }
+ }
+|group_end:
+% \end{macrocode}
+% Fix \cs{backslash}:
+% \begin{macrocode}
+% \end{macrocode}
+%
+% \section{Epilogue}
+%
+% Lots of little things to tidy up.
+%
+% \subsection{Primes}
+%
+% We need a new `prime' algorithm. Unicode math has four pre-drawn prime glyphs.
+% \begin{quote}\obeylines
+% \unichar{2032} {prime} (\cs{prime}): $x\prime$
+% \unichar{2033} {double prime} (\cs{dprime}): $x\dprime$
+% \unichar{2034} {triple prime} (\cs{trprime}): $x\trprime$
+% \unichar{2057} {quadruple prime} (\cs{qprime}): $x\qprime$
+% \end{quote}
+% As you can see, they're all drawn at the correct height without being superscripted.
+% However, in a correctly behaving OpenType font,
+% we also see different behaviour after the \texttt{ssty} feature is applied:
+% \begin{quote}
+% \font\1="Cambria Math:script=math,+ssty=0"\1
+% \char"1D465\char"2032\quad
+% \char"1D465\char"2033\quad
+% \char"1D465\char"2034\quad
+% \char"1D465\char"2057
+% \end{quote}
+% The glyphs are now `full size' so that when placed inside a superscript,
+% their shape will match the originally sized ones. Many thanks to Ross Mills
+% of Tiro Typeworks for originally pointing out this behaviour.
+%
+% In regular \LaTeX, primes can be entered with the straight quote character
+% |'|, and multiple straight quotes chain together to produce multiple
+% primes. Better results can be achieved in \pkg{unicode-math} by chaining
+% multiple single primes into a pre-drawn multi-prime glyph; consider
+% $x\prime{}\prime{}\prime$ vs.\ $x\trprime$.
+%
+% For Unicode maths, we wish to conserve this behaviour and augment it with
+% the possibility of adding any combination of Unicode prime or any of the
+% $n$-prime characters. E.g., the user might copy-paste a double prime from
+% another source and then later type another single prime after it; the output
+% should be the triple prime.
+%
+% Our algorithm is:
+% \begin{itemize}[nolistsep]
+% \item Prime encountered; pcount=1.
+% \item Scan ahead; if prime: pcount:=pcount+1; repeat.
+% \item If not prime, stop scanning.
+% \item If pcount=1, \cs{prime}, end.
+% \item If pcount=2, check \cs{dprime}; if it exists, use it, end; if not, goto last step.
+% \item Ditto pcount=3 \& \cs{trprime}.
+% \item Ditto pcount=4 \& \cs{qprime}.
+% \item If pcount>4 or the glyph doesn't exist, insert pcount \cs{prime}s with \cs{primekern} between each.
+% \end{itemize}
+%
+% \begin{macrocode}
+\muskip_new:N \g_um_primekern_muskip
+\muskip_gset:Nn \g_um_primekern_muskip { -\thinmuskip/2 }% arbitrary
+\int_new:N \l_um_primecount_int
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Npn \um_nprimes:Nn #1#2 {
+ ^{
+ #1
+ \prg_replicate:nn {#2-1} { \mskip \g_um_primekern_muskip #1 }
+ }
+}
+\cs_new:Npn \um_nprimes_select:nn #1#2 {
+ \prg_case_int:nnn {#2}{
+ {1} { ^{#1} }
+ {2} {
+ \um_glyph_if_exist:nTF {"2033} { ^{\um_prime_double_mchar} } {\um_nprimes:Nn #1 {#2}}
+ }
+ {3} {
+ \um_glyph_if_exist:nTF {"2034} {^{\um_prime_triple_mchar} } {\um_nprimes:Nn #1 {#2}}
+ }
+ {4} {
+ \um_glyph_if_exist:nTF {"2057} { ^{\um_prime_quad_mchar} } {\um_nprimes:Nn #1 {#2}}
+ }
+ }{
+ \um_nprimes:Nn #1 {#2}
+ }
+}
+\cs_new:Npn \um_nbackprimes_select:nn #1#2 {
+ \prg_case_int:nnn {#2}{
+ {1} { ^{#1} }
+ {2} {
+ \um_glyph_if_exist:nTF {"2033} { ^{\um_backprime_double_mchar} } {\um_nprimes:Nn #1 {#2}}
+ }
+ {3} {
+ \um_glyph_if_exist:nTF {"2034} {^{\um_backprime_triple_mchar} } {\um_nprimes:Nn #1 {#2}}
+ }
+ }{
+ \um_nprimes:Nn #1 {#2}
+ }
+}
+% \end{macrocode}
+%
+% Scanning is annoying because I'm too lazy to do it for the general case.
+%
+% \begin{macrocode}
+\cs_new:Npn \um_scan_prime: {
+ \int_zero:N \l_um_primecount_int
+ \um_scanprime_collect:N \um_prime_single_mchar
+}
+\cs_new:Npn \um_scan_dprime: {
+ \int_set:Nn \l_um_primecount_int {1}
+ \um_scanprime_collect:N \um_prime_single_mchar
+}
+\cs_new:Npn \um_scan_trprime: {
+ \int_set:Nn \l_um_primecount_int {2}
+ \um_scanprime_collect:N \um_prime_single_mchar
+}
+\cs_new:Npn \um_scan_qprime: {
+ \int_set:Nn \l_um_primecount_int {3}
+ \um_scanprime_collect:N \um_prime_single_mchar
+}
+\cs_new:Npn \um_scanprime_collect:N #1 {
+ \int_incr:N \l_um_primecount_int
+ \peek_meaning_remove:NTF ' {
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_prime: {
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2032 {
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_dprime: {
+ \int_incr:N \l_um_primecount_int
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2033 {
+ \int_incr:N \l_um_primecount_int
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_trprime: {
+ \int_add:Nn \l_um_primecount_int {2}
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2034 {
+ \int_add:Nn \l_um_primecount_int {2}
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_qprime: {
+ \int_add:Nn \l_um_primecount_int {3}
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2057 {
+ \int_add:Nn \l_um_primecount_int {3}
+ \um_scanprime_collect:N #1
+ }{
+ \um_nprimes_select:nn {#1} {\l_um_primecount_int}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+\cs_new:Npn \um_scan_backprime: {
+ \int_zero:N \l_um_primecount_int
+ \um_scanbackprime_collect:N \um_backprime_single_mchar
+}
+\cs_new:Npn \um_scan_backdprime: {
+ \int_set:Nn \l_um_primecount_int {1}
+ \um_scanbackprime_collect:N \um_backprime_single_mchar
+}
+\cs_new:Npn \um_scan_backtrprime: {
+ \int_set:Nn \l_um_primecount_int {2}
+ \um_scanbackprime_collect:N \um_backprime_single_mchar
+}
+\cs_new:Npn \um_scanbackprime_collect:N #1 {
+ \int_incr:N \l_um_primecount_int
+ \peek_meaning_remove:NTF ` {
+ \um_scanbackprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_backprime: {
+ \um_scanbackprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2035 {
+ \um_scanbackprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_backdprime: {
+ \int_incr:N \l_um_primecount_int
+ \um_scanbackprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2036 {
+ \int_incr:N \l_um_primecount_int
+ \um_scanbackprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_backtrprime: {
+ \int_add:Nn \l_um_primecount_int {2}
+ \um_scanbackprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2037 {
+ \int_add:Nn \l_um_primecount_int {2}
+ \um_scanbackprime_collect:N #1
+ }{
+ \um_nbackprimes_select:nn {#1} {\l_um_primecount_int}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\AtBeginDocument {
+ \cs_set_eq:NN \prime \um_scan_prime:
+ \cs_set_eq:NN \drime \um_scan_dprime:
+ \cs_set_eq:NN \trprime \um_scan_trprime:
+ \cs_set_eq:NN \qprime \um_scan_qprime:
+ \cs_set_eq:NN \backprime \um_scan_backprime:
+ \cs_set_eq:NN \backdprime \um_scan_backdprime:
+ \cs_set_eq:NN \backtrprime \um_scan_backtrprime:
+}
+\group_begin:
+ \char_make_active:N \'
+ \char_make_active:N \`
+ \char_make_active:n {"2032}
+ \char_make_active:n {"2033}
+ \char_make_active:n {"2034}
+ \char_make_active:n {"2057}
+ \char_make_active:n {"2035}
+ \char_make_active:n {"2036}
+ \char_make_active:n {"2037}
+ \AtBeginDocument{
+ \cs_set_eq:NN ' \um_scan_prime:
+ \cs_set_eq:NN ^^^^2032 \um_scan_prime:
+ \cs_set_eq:NN ^^^^2033 \um_scan_dprime:
+ \cs_set_eq:NN ^^^^2034 \um_scan_trprime:
+ \cs_set_eq:NN ^^^^2057 \um_scan_qprime:
+ \cs_set_eq:NN ` \um_scan_backprime:
+ \cs_set_eq:NN ^^^^2035 \um_scan_backprime:
+ \cs_set_eq:NN ^^^^2036 \um_scan_backdprime:
+ \cs_set_eq:NN ^^^^2037 \um_scan_backtrprime:
+ }
+\group_end:
+% \end{macrocode}
+%
+% \subsection{Unicode radicals}
+%
+% \begin{macro}{\r@@t}
+% \darg{A mathstyle (for \cmd\mathpalette)}
+% \darg{Leading superscript for the sqrt sign}
+% A re-implementation of \LaTeX's hard-coded n-root sign using the appropriate \cmd\fontdimen s.
+% \begin{macrocode}
+\cs_set_nopar:Npn \r@@t #1#2 {
+ \setbox\z@\hbox{$\m@th #1\sqrtsign{#2}$}
+ \um_mathstyle_scale:Nnn{#1}{\kern}{\fontdimen63\l_um_font}
+ \raise \dimexpr(
+ \um_fontdimen_to_percent:nn{65}{\l_um_font}\ht\z@-
+ \um_fontdimen_to_percent:nn{65}{\l_um_font}\dp\z@
+ )\relax
+ \copy \rootbox
+ \um_mathstyle_scale:Nnn{#1}{\kern}{\fontdimen64\l_um_font}
+ \box \z@
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\um_fontdimen_to_percent:nn}
+% \darg{Font dimen number}
+% \darg{Font `variable'}
+% \cmd\fontdimen s |10|, |11|, and |65| aren't actually dimensions, they're percentage values given in units of |sp|. This macro takes a font dimension number and outputs the decimal value of the associated parameter.
+% \begin{macrocode}
+\cs_new:Npn \um_fontdimen_to_percent:nn #1#2 {
+ 0.\strip@pt\dimexpr\fontdimen#1#2 *65536\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\um_mathstyle_scale:Nnn}
+% \darg{A math style (\cs{scriptstyle}, say)}
+% \darg{Macro that takes a non-delimited length argument (like \cmd\kern)}
+% \darg{Length control sequence to be scaled according to the math style}
+% This macro is used to scale the lengths reported by \cmd\fontdimen\ according to the scale factor for script- and scriptscript-size objects.
+% \begin{macrocode}
+\cs_new:Npn \um_mathstyle_scale:Nnn #1#2#3 {
+ \ifx#1\scriptstyle
+ #2\um_fontdimen_to_percent:nn{10}\l_um_font#3
+ \else
+ \ifx#1\scriptscriptstyle
+ #2\um_fontdimen_to_percent:nn{11}\l_um_font#3
+ \else
+ #2#3
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Unicode sub- and super-scripts}
+%
+% The idea here is to enter a scanning state after a superscript or subscript
+% is encountered.
+% If subsequent superscripts or subscripts (resp.) are found,
+% they are lumped together.
+% Each sub/super has a corresponding regular size
+% glyph which is used by \XeTeX\ to typeset the results; this means that the
+% actual subscript/superscript glyphs are never seen in the output
+% document~--- they are only used as input characters.
+%
+% Open question: should the superscript-like `modifiers' (\unichar{1D2C}
+% {modifier capital letter a} and on) be included here?
+% \begin{macrocode}
+\prop_new:N \g_um_supers_prop
+\prop_new:N \g_um_subs_prop
+\group_begin:
+% \end{macrocode}
+% \paragraph{Superscripts}
+% Populate a property list with superscript characters; their meaning as their
+% key, for reasons that will become apparent soon, and their replacement as
+% each key's value.
+% Then make the superscript active and bind it to the scanning function.
+%
+% \cs{scantokens} makes this process much simpler since we can activate the
+% char and assign its meaning in one step.
+% \begin{macrocode}
+\cs_set:Npn \um_setup_active_superscript:nn #1#2 {
+ \prop_gput:Nxn \g_um_supers_prop {\meaning #1} {#2}
+ \char_make_active:N #1
+ \char_gmake_mathactive:N #1
+ \scantokens{
+ \cs_gset:Npn #1 {
+ \tl_set:Nn \l_um_ss_chain_tl {#2}
+ \cs_set_eq:NN \um_sub_or_super:n \sp
+ \tl_set:Nn \l_um_tmpa_tl {supers}
+ \um_scan_sscript:
+ }
+ }
+}
+% \end{macrocode}
+% Bam:
+% \begin{macrocode}
+\um_setup_active_superscript:nn {^^^^2070} {0}
+\um_setup_active_superscript:nn {^^^^00b9} {1}
+\um_setup_active_superscript:nn {^^^^00b2} {2}
+\um_setup_active_superscript:nn {^^^^00b3} {3}
+\um_setup_active_superscript:nn {^^^^2074} {4}
+\um_setup_active_superscript:nn {^^^^2075} {5}
+\um_setup_active_superscript:nn {^^^^2076} {6}
+\um_setup_active_superscript:nn {^^^^2077} {7}
+\um_setup_active_superscript:nn {^^^^2078} {8}
+\um_setup_active_superscript:nn {^^^^2079} {9}
+\um_setup_active_superscript:nn {^^^^207a} {+}
+\um_setup_active_superscript:nn {^^^^207b} {-}
+\um_setup_active_superscript:nn {^^^^207c} {=}
+\um_setup_active_superscript:nn {^^^^207d} {(}
+\um_setup_active_superscript:nn {^^^^207e} {)}
+\um_setup_active_superscript:nn {^^^^2071} {i}
+\um_setup_active_superscript:nn {^^^^207f} {n}
+% \end{macrocode}
+% \paragraph{Subscripts} Ditto above.
+% \begin{macrocode}
+\cs_set:Npn \um_setup_active_subscript:nn #1#2 {
+ \prop_gput:Nxn \g_um_subs_prop {\meaning #1} {#2}
+ \char_make_active:N #1
+ \char_gmake_mathactive:N #1
+ \scantokens{
+ \cs_gset:Npn #1 {
+ \tl_set:Nn \l_um_ss_chain_tl {#2}
+ \cs_set_eq:NN \um_sub_or_super:n \sb
+ \tl_set:Nn \l_um_tmpa_tl {subs}
+ \um_scan_sscript:
+ }
+ }
+}
+% \end{macrocode}
+% A few more subscripts than superscripts:
+% \begin{macrocode}
+\um_setup_active_subscript:nn {^^^^2080} {0}
+\um_setup_active_subscript:nn {^^^^2081} {1}
+\um_setup_active_subscript:nn {^^^^2082} {2}
+\um_setup_active_subscript:nn {^^^^2083} {3}
+\um_setup_active_subscript:nn {^^^^2084} {4}
+\um_setup_active_subscript:nn {^^^^2085} {5}
+\um_setup_active_subscript:nn {^^^^2086} {6}
+\um_setup_active_subscript:nn {^^^^2087} {7}
+\um_setup_active_subscript:nn {^^^^2088} {8}
+\um_setup_active_subscript:nn {^^^^2089} {9}
+\um_setup_active_subscript:nn {^^^^208a} {+}
+\um_setup_active_subscript:nn {^^^^208b} {-}
+\um_setup_active_subscript:nn {^^^^208c} {=}
+\um_setup_active_subscript:nn {^^^^208d} {(}
+\um_setup_active_subscript:nn {^^^^208e} {)}
+\um_setup_active_subscript:nn {^^^^2090} {a}
+\um_setup_active_subscript:nn {^^^^2091} {e}
+\um_setup_active_subscript:nn {^^^^1d62} {i}
+\um_setup_active_subscript:nn {^^^^2092} {o}
+\um_setup_active_subscript:nn {^^^^1d63} {r}
+\um_setup_active_subscript:nn {^^^^1d64} {u}
+\um_setup_active_subscript:nn {^^^^1d65} {v}
+\um_setup_active_subscript:nn {^^^^2093} {x}
+\um_setup_active_subscript:nn {^^^^1d66} {\beta}
+\um_setup_active_subscript:nn {^^^^1d67} {\gamma}
+\um_setup_active_subscript:nn {^^^^1d68} {\rho}
+\um_setup_active_subscript:nn {^^^^1d69} {\phi}
+\um_setup_active_subscript:nn {^^^^1d6a} {\chi}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\group_end:
+% \end{macrocode}
+% The scanning command, evident in its purpose:
+% \begin{macrocode}
+\cs_new:Npn \um_scan_sscript: {
+ \um_scan_sscript:TF {
+ \um_scan_sscript:
+ }{
+ \um_sub_or_super:n {\l_um_ss_chain_tl}
+ }
+}
+% \end{macrocode}
+% The main theme here is stolen from the source to the various \cs{peek_} functions.
+% Consider this function as simply boilerplate:
+% \begin{macrocode}
+\cs_new:Npn \um_scan_sscript:TF #1#2 {
+ \tl_set:Nx \l_peek_true_aux_tl { \exp_not:n{ #1 } }
+ \tl_set_eq:NN \l_peek_true_tl \c_peek_true_remove_next_tl
+ \tl_set:Nx \l_peek_false_tl {\exp_not:n{\group_align_safe_end: #2}}
+ \group_align_safe_begin:
+ \peek_after:NN \um_peek_execute_branches_ss:
+}
+% \end{macrocode}
+% We do not skip spaces when scanning ahead, and we explicitly wish to
+% bail out on encountering a space or a brace.
+% \begin{macrocode}
+\cs_new:Npn \um_peek_execute_branches_ss: {
+ \bool_if:nTF {
+ \token_if_eq_catcode_p:NN \l_peek_token \c_group_begin_token ||
+ \token_if_eq_catcode_p:NN \l_peek_token \c_group_end_token ||
+ \token_if_eq_meaning_p:NN \l_peek_token \c_space_token
+ }
+ { \l_peek_false_tl }
+ { \um_peek_execute_branches_ss_aux: }
+}
+% \end{macrocode}
+% This is the actual comparison code.
+% Because the peeking has already tokenised the next token,
+% it's too late to extract its charcode directly. Instead,
+% we look at its meaning, which remains a `character' even
+% though it is itself math-active. If the character is ever
+% made fully active, this will break our assumptions!
+%
+% If the char's meaning exists as a property list key, we
+% build up a chain of sub-/superscripts and iterate. (If not, exit and
+% typeset what we've already collected.)
+% \begin{macrocode}
+\cs_new:Npn \um_peek_execute_branches_ss_aux: {
+ \prop_if_in:cxTF
+ {g_um_\l_um_tmpa_tl _prop}
+ {\meaning\l_peek_token}
+ {
+ \prop_get:cxN
+ {g_um_\l_um_tmpa_tl _prop}
+ {\meaning\l_peek_token}
+ \l_um_tmpb_tl
+ \tl_put_right:NV \l_um_ss_chain_tl \l_um_tmpb_tl
+ \l_peek_true_tl
+ }
+ {\l_peek_false_tl}
+}
+% \end{macrocode}
+%
+% \subsubsection{Active fractions}
+% Active fractions can be setup independently of any maths font definition;
+% all it requires is a mapping from the Unicode input chars to the relevant
+% \LaTeX\ fraction declaration.
+%
+% \begin{macrocode}
+\cs_new:Npn \um_define_active_frac:Nw #1 #2/#3 {
+ \char_make_active:N #1
+ \char_gmake_mathactive:N #1
+ \tl_rescan:nn {
+ \ExplSyntaxOn
+ }{
+ \cs_gset:Npx #1 {
+ \bool_if:NTF \l_um_smallfrac_bool {\exp_not:N\tfrac} {\exp_not:N\frac}
+ {#2} {#3}
+ }
+ }
+}
+% \end{macrocode}
+% These are redefined for each math font selection in case the |active-frac|
+% feature changes.
+% \begin{macrocode}
+\cs_new:Npn \um_setup_active_frac: {
+ \group_begin:
+ \um_define_active_frac:Nw ^^^^2152 1/{10}
+ \um_define_active_frac:Nw ^^^^2151 1/9
+ \um_define_active_frac:Nw ^^^^215b 1/8
+ \um_define_active_frac:Nw ^^^^2150 1/7
+ \um_define_active_frac:Nw ^^^^2159 1/6
+ \um_define_active_frac:Nw ^^^^2155 1/5
+ \um_define_active_frac:Nw ^^^^00bc 1/4
+ \um_define_active_frac:Nw ^^^^2153 1/3
+ \um_define_active_frac:Nw ^^^^215c 3/8
+ \um_define_active_frac:Nw ^^^^2156 2/5
+ \um_define_active_frac:Nw ^^^^00bd 1/2
+ \um_define_active_frac:Nw ^^^^2157 3/5
+ \um_define_active_frac:Nw ^^^^215d 5/8
+ \um_define_active_frac:Nw ^^^^2154 2/3
+ \um_define_active_frac:Nw ^^^^00be 3/4
+ \um_define_active_frac:Nw ^^^^2158 4/5
+ \um_define_active_frac:Nw ^^^^215a 5/6
+ \um_define_active_frac:Nw ^^^^215e 7/8
+ \group_end:
+}
+\um_setup_active_frac:
+% \end{macrocode}
+%
+% \subsection{Synonyms and all the rest}
+%
+% These are symbols with multiple names. Eventually to be taken care of
+% automatically by the maths characters database.
+% \begin{macrocode}
+\def\to{\rightarrow}
+\def\overrightarrow{\vec}
+\def\le{\leq}
+\def\ge{\geq}
+\def\neq{\ne}
+\def\triangle{\mathord{\bigtriangleup}}
+\def\bigcirc{\mdlgwhtcircle}
+\def\circ{\vysmwhtcircle}
+\def\bullet{\smblkcircle}
+\def\mathyen{\yen}
+\def\mathsterling{\sterling}
+% \end{macrocode}
+%
+% \begin{macro}{\colon}
+% Define \cs{colon} as a mathpunct `|:|'.
+% This is wrong: it should be \unichar{003A} {colon} instead!
+% We hope no-one will notice.
+% \begin{macrocode}
+\@ifpackageloaded{amsmath}{
+ % define their own colon, perhaps I should just steal it. (It does look much better.)
+}{
+ \cs_set_protected:Npn \colon {
+ \bool_if:NTF \g_um_literal_colon_bool {:} { \mathpunct{:} }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mathcal}
+% \begin{macrocode}
+\def\mathcal{\mathscr}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mathrm}
+% \begin{macrocode}
+\def\mathrm{\mathup}
+\let\mathfence\mathord
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\digamma}
+% \begin{macro}{\Digamma}
+% I might end up just changing these in the table.
+% \begin{macrocode}
+\def\digamma{\updigamma}
+\def\Digamma{\upDigamma}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Compatibility}
+%
+% We need to change \LaTeX's idea of the font used to typeset
+% things like \cmd\sin\ and \cmd\cos:
+% \begin{macrocode}
+\def\operator@font{\um_switchto_mathup:}
+% \end{macrocode}
+%
+% \begin{macro}{\um_patch_pkg:nn}
+% \darg{package}
+% \darg{code}
+% If \meta{package} is loaded either already or later in the preamble, \meta{code}
+% is executed (after the package is loaded in the latter case).
+% \begin{macrocode}
+\cs_new:Npn \um_patch_pkg:nn #1#2 {
+ \@ifpackageloaded {#1} {
+ #2
+ }{
+ \um_after_pkg:nn {#1} {#2}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \paragraph{\pkg{url}}
+% Simply need to get \pkg{url} in a state such that
+% when it switches to math mode and enters \ascii\ characters, the maths
+% setup (i.e., \pkg{unicode-math}) doesn't remap the symbols into Plane 1.
+% Which is, of course, what \cs{mathup} is doing.
+%
+% This is the same as writing, e.g., |\def\UrlFont{\ttfamily\um_switchto_mathup:}|
+% but activates automatically so old documents that might change the \cs{url}
+% font still work correctly.
+% \begin{macrocode}
+\um_patch_pkg:nn {url} {
+ \tl_put_left:Nn \Url@FormatString { \um_switchto_mathup: }
+ \tl_put_right:Nn \UrlSpecials {
+ \do\`{\mathchar`\`}
+ \do\'{\mathchar`\'}
+ \do\${\mathchar`\$}
+ \do\&{\mathchar`\&}
+ }
+}
+% \end{macrocode}
+%
+% \paragraph{\pkg{amsmath}}
+% Since the mathcode of |`\-| is greater than eight bits, this piece of |\AtBeginDocument| code from \pkg{amsmath} dies if we try and set the maths font in the preamble:
+% \begin{macrocode}
+\um_patch_pkg:nn {amsmath} {
+ \tl_remove_in:Nn \@begindocumenthook {
+ \mathchardef\std@minus\mathcode`\-\relax
+ \mathchardef\std@equal\mathcode`\=\relax
+ }
+ \def\std@minus{\Umathcharnum\Umathcodenum`\-\relax}
+ \def\std@equal{\Umathcharnum\Umathcodenum`\=\relax}
+ \def\@cdots{\mathinner{\cdots}}
+ \cs_set_eq:NN \dotsb@ \cdots
+}
+% \end{macrocode}
+% \paragraph{\pkg{amsopn}}
+% This code is to improve the output of analphabetic symbols in text of operator names (\cs{sin}, \cs{cos}, etc.). Just comment out the offending lines for now:
+% \begin{macrocode}
+\um_patch_pkg:nn {amsopn} {
+ \cs_set:Npn \newmcodes@ {
+ \mathcode`\'39\scan_stop:
+ \mathcode`\*42\scan_stop:
+ \mathcode`\."613A\scan_stop:
+%% \ifnum\mathcode`\-=45 \else
+%% \mathchardef\std@minus\mathcode`\-\relax
+%% \fi
+ \mathcode`\-45\scan_stop:
+ \mathcode`\/47\scan_stop:
+ \mathcode`\:"603A\scan_stop:
+ }
+}
+% \end{macrocode}
+% \paragraph{Symbols}
+% \begin{macrocode}
+\cs_set:Npn \| {\Vert}
+% \end{macrocode}
+% \cs{mathinner} items:
+% \begin{macrocode}
+\cs_set:Npn \mathellipsis {\mathinner{\unicodeellipsis}}
+\cs_set:Npn \cdots {\mathinner{\unicodecdots}}
+% \end{macrocode}
+% \paragraph{Accents}
+% \begin{macrocode}
+\AtBeginDocument{
+ \def\widehat{\hat}
+ \def\widetilde{\tilde}
+}
+% \end{macrocode}
+%
+% \paragraph{\pkg{beamer}}
+% At end of the package so the warnings are defined.
+% \begin{macrocode}
+\AtEndOfPackage{
+ \@ifclassloaded{beamer}{
+ \ifbeamer@suppressreplacements\else
+ \um_warning:n {disable-beamer}
+ \beamer@suppressreplacementstrue
+ \fi
+ }{}
+}
+% \end{macrocode}
+%
+%
+% \section{Error messages}
+%
+% Wrapper functions:
+% \begin{macrocode}
+\cs_new:Npn \um_warning:n { \msg_warning:nn {unicode-math} }
+\cs_new:Npn \um_trace:n { \msg_trace:nn {unicode-math} }
+\cs_new:Npn \um_trace:nx { \msg_trace:nnx {unicode-math} }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\msg_new:nnn {unicode-math} {maths-feature-only}
+{
+ The~ '#1'~ font~ feature~ can~ only~ be~ used~ for~ maths~ fonts.
+}
+\msg_new:nnn {unicode-math} {disable-beamer}
+{
+ Disabling~ beamer's~ math~ setup.\\
+ Please~ load~ beamer~ with~ the~ [professionalfonts]~ class~ option.
+}
+\msg_new:nnn {unicode-math} {no-tfrac}
+{
+ Small~ fraction~ command~ \protect\tfrac\ not~ defined.\\
+ Load~ amsmath~ or~ define~ it~ manually~ before~ loading~ unicode-math.
+}
+\msg_new:nnn {unicode-math} {default-math-font}
+{
+ Defining~ the~ default~ maths~ font~ as~ '#1'.
+}
+\msg_new:nnn {unicode-math} {setup-implicit}
+{
+ Setup~ alphabets:~ implicit~ mode.
+}
+\msg_new:nnn {unicode-math} {setup-explicit}
+{
+ Setup~ alphabets:~ explicit~ mode.
+}
+\msg_new:nnn {unicode-math} {alph-initialise}
+{
+ Initialising~ \@backslashchar math#1.
+}
+\msg_new:nnn {unicode-math} {setup-alph}
+{
+ Setup~ alphabet:~ #1.
+}
+% \end{macrocode}
+%
+% The end.
+% \begin{macrocode}
+\ExplSyntaxOff
+\errorcontextlines=999
+% \end{macrocode}
+%
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \section{\STIX\ table data extraction}\label{part:awk}
+%\iffalse
+%<*awk>
+%\fi
+%
+% The source for the \TeX\ names for the very large number of mathematical
+% glyphs are provided via Barbara Beeton's table file for the \STIX\ project
+% (|ams.org/STIX|). A version is located at
+% |http://www.ams.org/STIX/bnb/stix-tbl.asc|
+% but check |http://www.ams.org/STIX/| for more up-to-date info.
+%
+% This table is converted into a form suitable for reading by \XeTeX.
+% A single file is produced containing all (more than 3298) symbols.
+% Future optimisations might include generating various (possibly overlapping) subsets
+% so not all definitions must be read just to redefine a small range of symbols.
+% Performance for now seems to be acceptable without such measures.
+%
+% This file is currently developed outside this DTX file. It will be
+% incorporated when the final version is ready. (I know this is not how
+% things are supposed to work!)
+%
+% \begin{macrocode}
+< See stix-extract.sh for now. >
+% \end{macrocode}
+%\iffalse
+%</awk>
+%\fi
+%
+% \appendix
+%
+% \section{Documenting maths support in the NFSS}
+%
+% In the following, \meta{NFSS decl.} stands for something like |{T1}{lmr}{m}{n}|.
+%
+% \begin{description}
+% \item[Maths symbol fonts] Fonts for symbols: $\propto$, $\leq$, $\rightarrow$
+%
+% \cmd\DeclareSymbolFont\marg{name}\meta{NFSS decl.}\\
+% Declares a named maths font such as |operators| from which symbols are defined with \cmd\DeclareMathSymbol.
+%
+% \item[Maths alphabet fonts] Fonts for {\font\1=cmmi10 at 10pt\1 ABC}\,–\,{\font\1=cmmi10 at 10pt\1 xyz}, {\font\1=eufm10 at 10pt\1 ABC}\,–\,{\font\1=cmsy10 at 10pt\1 XYZ}, etc.
+%
+% \cmd\DeclareMathAlphabet\marg{cmd}\meta{NFSS decl.}
+%
+% For commands such as \cmd\mathbf, accessed
+% through maths mode that are unaffected by the current text font, and which are used for
+% alphabetic symbols in the \ascii\ range.
+%
+% \cmd\DeclareSymbolFontAlphabet\marg{cmd}\marg{name}
+%
+% Alternative (and optimisation) for \cmd\DeclareMathAlphabet\ if a single font is being used
+% for both alphabetic characters (as above) and symbols.
+%
+% \item[Maths `versions'] Different maths weights can be defined with the following, switched
+% in text with the \cmd\mathversion\marg{maths version} command.
+%
+% \cmd\SetSymbolFont\marg{name}\marg{maths version}\meta{NFSS decl.}\\
+% \cmd\SetMathAlphabet\marg{cmd}\marg{maths version}\meta{NFSS decl.}
+%
+% \item[Maths symbols] Symbol definitions in maths for both characters (=) and macros (\cmd\eqdef):
+% \cmd\DeclareMathSymbol\marg{symbol}\marg{type}\marg{named font}\marg{slot}
+% This is the macro that actually defines which font each symbol comes from and how they behave.
+% \end{description}
+% Delimiters and radicals use wrappers around \TeX's \cmd\delimiter/\cmd\radical\ primitives,
+% which are re-designed in \XeTeX. The syntax used in \LaTeX's NFSS is therefore not so relevant here.
+% \begin{description}
+% \item[Delimiters] A special class of maths symbol which enlarge themselves in certain contexts.
+%
+% \cmd\DeclareMathDelimiter\marg{symbol}\marg{type}\marg{sym.\ font}\marg{slot}\marg{sym.\ font}\marg{slot}
+%
+% \item[Radicals] Similar to delimiters (\cmd\DeclareMathRadical\ takes the same syntax) but
+% behave `weirdly'. \cmd\sqrt\ might very well be the only one.
+% \end{description}
+% In those cases, glyph slots in \emph{two} symbol fonts are required; one for the small (`regular') case,
+% the other for situations when the glyph is larger. This is not the case in \XeTeX.
+%
+% Accents are not included yet.
+%
+% \paragraph{Summary}
+%
+% For symbols, something like:
+% \begin{verbatim}
+% \def\DeclareMathSymbol#1#2#3#4{
+% \global\mathchardef#1"\mathchar@type#2
+% \expandafter\hexnumber@\csname sym#2\endcsname
+% {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}}
+% \end{verbatim}
+% For characters, something like:
+% \begin{verbatim}
+% \def\DeclareMathSymbol#1#2#3#4{
+% \global\mathcode`#1"\mathchar@type#2
+% \expandafter\hexnumber@\csname sym#2\endcsname
+% {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}}
+% \end{verbatim}
+%
+%
+% \section{\XeTeX\ math font dimensions}
+%
+% These are the extended \cmd\fontdimen s available for suitable fonts
+% in \XeTeX. Note that Lua\TeX\ takes an alternative route, and this package
+% will eventually provide a wrapper interface to the two (I hope).
+%
+% \newcounter{mfdimen}
+% \setcounter{mfdimen}{9}
+% \newcommand\mathfontdimen[2]{^^A
+% \stepcounter{mfdimen}^^A
+% \themfdimen & {\scshape\small #1} & #2\vspace{0.5ex} \tabularnewline}
+%
+% \begin{longtable}{
+% @{}c>{\raggedright\parfillskip=0pt}p{4cm}>{\raggedright}p{7cm}@{}}
+% \toprule \cmd\fontdimen & Dimension name & Description\tabularnewline\midrule \endhead
+% \bottomrule\endfoot
+% \mathfontdimen{Script\-Percent\-Scale\-Down}
+% {Percentage of scaling down for script level 1. Suggested value: 80\%.}
+% \mathfontdimen{Script\-Script\-Percent\-Scale\-Down}
+% {Percentage of scaling down for script level 2 (Script\-Script). Suggested value: 60\%.}
+% \mathfontdimen{Delimited\-Sub\-Formula\-Min\-Height}
+% {Minimum height required for a delimited expression to be treated as a subformula. Suggested value: normal line height\,×\,1.5.}
+% \mathfontdimen{Display\-Operator\-Min\-Height}
+% {Minimum height of n-ary operators (such as integral and summation) for formulas in display mode.}
+% \mathfontdimen{Math\-Leading}
+% {White space to be left between math formulas to ensure proper line spacing. For example, for applications that treat line gap as a part of line ascender, formulas with ink going above (os2.sTypoAscender + os2.sTypoLineGap – MathLeading) or with ink going below os2.sTypoDescender will result in increasing line height.}
+% \mathfontdimen{Axis\-Height}
+% {Axis height of the font. }
+% \mathfontdimen{Accent\-Base\-Height}
+% {Maximum (ink) height of accent base that does not require raising the accents. Suggested: x-height of the font (os2.sxHeight) plus any possible overshots. }
+% \mathfontdimen{Flattened\-Accent\-Base\-Height}
+% {Maximum (ink) height of accent base that does not require flattening the accents. Suggested: cap height of the font (os2.sCapHeight).}
+% \mathfontdimen{Subscript\-Shift\-Down}
+% {The standard shift down applied to subscript elements. Positive for moving in the downward direction. Suggested: os2.ySubscriptYOffset.}
+% \mathfontdimen{Subscript\-Top\-Max}
+% {Maximum allowed height of the (ink) top of subscripts that does not require moving subscripts further down. Suggested: /5 x-height.}
+% \mathfontdimen{Subscript\-Baseline\-Drop\-Min}
+% {Minimum allowed drop of the baseline of subscripts relative to the (ink) bottom of the base. Checked for bases that are treated as a box or extended shape. Positive for subscript baseline dropped below the base bottom.}
+% \mathfontdimen{Superscript\-Shift\-Up}
+% {Standard shift up applied to superscript elements. Suggested: os2.ySuperscriptYOffset.}
+% \mathfontdimen{Superscript\-Shift\-Up\-Cramped}
+% {Standard shift of superscripts relative to the base, in cramped style.}
+% \mathfontdimen{Superscript\-Bottom\-Min}
+% {Minimum allowed height of the (ink) bottom of superscripts that does not require moving subscripts further up. Suggested: ¼ x-height.}
+% \mathfontdimen{Superscript\-Baseline\-Drop\-Max}
+% {Maximum allowed drop of the baseline of superscripts relative to the (ink) top of the base. Checked for bases that are treated as a box or extended shape. Positive for superscript baseline below the base top.}
+% \mathfontdimen{Sub\-Superscript\-Gap\-Min}
+% {Minimum gap between the superscript and subscript ink. Suggested: 4×default rule thickness.}
+% \mathfontdimen{Superscript\-Bottom\-Max\-With\-Subscript}
+% {The maximum level to which the (ink) bottom of superscript can be pushed to increase the gap between superscript and subscript, before subscript starts being moved down.
+% Suggested: /5 x-height.}
+% \mathfontdimen{Space\-After\-Script}
+% {Extra white space to be added after each subscript and superscript. Suggested: 0.5pt for a 12 pt font.}
+% \mathfontdimen{Upper\-Limit\-Gap\-Min}
+% {Minimum gap between the (ink) bottom of the upper limit, and the (ink) top of the base operator. }
+% \mathfontdimen{Upper\-Limit\-Baseline\-Rise\-Min}
+% {Minimum distance between baseline of upper limit and (ink) top of the base operator.}
+% \mathfontdimen{Lower\-Limit\-Gap\-Min}
+% {Minimum gap between (ink) top of the lower limit, and (ink) bottom of the base operator.}
+% \mathfontdimen{Lower\-Limit\-Baseline\-Drop\-Min}
+% {Minimum distance between baseline of the lower limit and (ink) bottom of the base operator.}
+% \mathfontdimen{Stack\-Top\-Shift\-Up}
+% {Standard shift up applied to the top element of a stack.}
+% \mathfontdimen{Stack\-Top\-Display\-Style\-Shift\-Up}
+% {Standard shift up applied to the top element of a stack in display style.}
+% \mathfontdimen{Stack\-Bottom\-Shift\-Down}
+% {Standard shift down applied to the bottom element of a stack. Positive for moving in the downward direction.}
+% \mathfontdimen{Stack\-Bottom\-Display\-Style\-Shift\-Down}
+% {Standard shift down applied to the bottom element of a stack in display style. Positive for moving in the downward direction.}
+% \mathfontdimen{Stack\-Gap\-Min}
+% {Minimum gap between (ink) bottom of the top element of a stack, and the (ink) top of the bottom element. Suggested: 3×default rule thickness.}
+% \mathfontdimen{Stack\-Display\-Style\-Gap\-Min}
+% {Minimum gap between (ink) bottom of the top element of a stack, and the (ink) top of the bottom element in display style. Suggested: 7×default rule thickness.}
+% \mathfontdimen{Stretch\-Stack\-Top\-Shift\-Up}
+% {Standard shift up applied to the top element of the stretch stack.}
+% \mathfontdimen{Stretch\-Stack\-Bottom\-Shift\-Down}
+% {Standard shift down applied to the bottom element of the stretch stack. Positive for moving in the downward direction.}
+% \mathfontdimen{Stretch\-Stack\-Gap\-Above\-Min}
+% {Minimum gap between the ink of the stretched element, and the (ink) bottom of the element above. Suggested: Upper\-Limit\-Gap\-Min}
+% \mathfontdimen{Stretch\-Stack\-Gap\-Below\-Min}
+% {Minimum gap between the ink of the stretched element, and the (ink) top of the element below. Suggested: Lower\-Limit\-Gap\-Min.}
+% \mathfontdimen{Fraction\-Numerator\-Shift\-Up}
+% {Standard shift up applied to the numerator. }
+% \mathfontdimen{Fraction\-Numerator\-Display\-Style\-Shift\-Up}
+% {Standard shift up applied to the numerator in display style. Suggested: Stack\-Top\-Display\-Style\-Shift\-Up.}
+% \mathfontdimen{Fraction\-Denominator\-Shift\-Down}
+% {Standard shift down applied to the denominator. Positive for moving in the downward direction.}
+% \mathfontdimen{Fraction\-Denominator\-Display\-Style\-Shift\-Down}
+% {Standard shift down applied to the denominator in display style. Positive for moving in the downward direction. Suggested: Stack\-Bottom\-Display\-Style\-Shift\-Down.}
+% \mathfontdimen{Fraction\-Numerator\-Gap\-Min}
+% {Minimum tolerated gap between the (ink) bottom of the numerator and the ink of the fraction bar. Suggested: default rule thickness}
+% \mathfontdimen{Fraction\-Num\-Display\-Style\-Gap\-Min}
+% {Minimum tolerated gap between the (ink) bottom of the numerator and the ink of the fraction bar in display style. Suggested: 3×default rule thickness.}
+% \mathfontdimen{Fraction\-Rule\-Thickness}
+% {Thickness of the fraction bar. Suggested: default rule thickness.}
+% \mathfontdimen{Fraction\-Denominator\-Gap\-Min}
+% {Minimum tolerated gap between the (ink) top of the denominator and the ink of the fraction bar. Suggested: default rule thickness}
+% \mathfontdimen{Fraction\-Denom\-Display\-Style\-Gap\-Min}
+% {Minimum tolerated gap between the (ink) top of the denominator and the ink of the fraction bar in display style. Suggested: 3×default rule thickness.}
+% \mathfontdimen{Skewed\-Fraction\-Horizontal\-Gap}
+% {Horizontal distance between the top and bottom elements of a skewed fraction.}
+% \mathfontdimen{Skewed\-Fraction\-Vertical\-Gap}
+% {Vertical distance between the ink of the top and bottom elements of a skewed fraction.}
+% \mathfontdimen{Overbar\-Vertical\-Gap}
+% {Distance between the overbar and the (ink) top of he base. Suggested: 3×default rule thickness.}
+% \mathfontdimen{Overbar\-Rule\-Thickness}
+% {Thickness of overbar. Suggested: default rule thickness.}
+% \mathfontdimen{Overbar\-Extra\-Ascender}
+% {Extra white space reserved above the overbar. Suggested: default rule thickness.}
+% \mathfontdimen{Underbar\-Vertical\-Gap}
+% {Distance between underbar and (ink) bottom of the base. Suggested: 3×default rule thickness.}
+% \mathfontdimen{Underbar\-Rule\-Thickness}
+% {Thickness of underbar. Suggested: default rule thickness.}
+% \mathfontdimen{Underbar\-Extra\-Descender}
+% {Extra white space reserved below the underbar. Always positive. Suggested: default rule thickness.}
+% \mathfontdimen{Radical\-Vertical\-Gap}
+% {Space between the (ink) top of the expression and the bar over it. Suggested: 1¼ default rule thickness.}
+% \mathfontdimen{Radical\-Display\-Style\-Vertical\-Gap}
+% {Space between the (ink) top of the expression and the bar over it. Suggested: default rule thickness + ¼ x-height. }
+% \mathfontdimen{Radical\-Rule\-Thickness}
+% {Thickness of the radical rule. This is the thickness of the rule in designed or constructed radical signs. Suggested: default rule thickness.}
+% \mathfontdimen{Radical\-Extra\-Ascender}
+% {Extra white space reserved above the radical. Suggested: Radical\-Rule\-Thickness.}
+% \mathfontdimen{Radical\-Kern\-Before\-Degree}
+% {Extra horizontal kern before the degree of a radical, if such is present. Suggested: 5/18 of em.}
+% \mathfontdimen{Radical\-Kern\-After\-Degree}
+% {Negative kern after the degree of a radical, if such is present. Suggested: −10/18 of em.}
+% \mathfontdimen{Radical\-Degree\-Bottom\-Raise\-Percent}
+% {Height of the bottom of the radical degree, if such is present, in proportion to the ascender of the radical sign. Suggested: 60\%.}
+% \end{longtable}
+%
+% \Finale
+%
+% \iffalse
+%
+%<*dtx-style>
+% \begin{macrocode}
+\ProvidesPackage{dtx-style}
+
+\GetFileInfo{\jobname.dtx}
+\let\umfiledate\filedate
+\let\umfileversion\fileversion
+
+\CheckSum{0}
+\EnableCrossrefs
+\CodelineIndex
+
+\errorcontextlines=999
+
+\def\@dotsep{1000}
+\setcounter{tocdepth}{2}
+\setlength\columnseprule{0.4pt}
+\renewcommand\tableofcontents{\relax
+ \begin{multicols}{2}[\section*{\contentsname}]\relax
+ \@starttoc{toc}\relax
+ \end{multicols}}
+
+\setcounter{IndexColumns}{2}
+\renewenvironment{theglossary}
+ {\small\list{}{}
+ \item\relax
+ \glossary@prologue\GlossaryParms
+ \let\item\@idxitem \ignorespaces
+ \def\pfill{\hspace*{\fill}}}
+ {\endlist}
+
+\usepackage[svgnames]{xcolor}
+\usepackage{array,booktabs,calc,enumitem,fancyvrb,graphicx,ifthen,longtable,refstyle,subfig,topcapt,url,varioref,underscore}
+\setcounter{LTchunksize}{100}
+\usepackage[slash-delimiter=frac]{unicode-math}
+\usepackage{metalogo}
+
+%\usepackage[rm,small]{titlesec}
+
+\setmainfont[Mapping=tex-text]{TeX Gyre Pagella}
+\setsansfont[Scale=MatchLowercase,Mapping=tex-text]{Candara}
+\setmonofont[Scale=MatchLowercase]{Consolas}
+\setmathfont{Cambria Math}
+\newfontface\umfont{STIXGeneral}
+
+\usepackage{hyperref}
+
+\linespread{1.069} % A bit more space between lines
+\frenchspacing % Remove ugly extra space after punctuation
+
+\definecolor{niceblue}{rgb}{0.2,0.4,0.8}
+\newenvironment{example}[1]
+ {\VerbatimEnvironment
+ \def\Options{#1}
+ \begin{VerbatimOut}[gobble=4]{\examplefilename}}
+ {\end{VerbatimOut}\relax
+ \typesetexample}
+
+\def\theCodelineNo{\textcolor{niceblue}{\sffamily\tiny\arabic{CodelineNo}}}
+
+\let\examplesize\normalsize
+\let\auxwidth\relax
+
+\newlength\examplewidth\newlength\verbatimwidth
+\newlength\exoutdent \newlength\exverbgap
+\setlength\exverbgap{1em}
+\setlength\exoutdent{-0.15\textwidth}
+\newsavebox\verbatimbox
+\edef\examplefilename{\jobname.example}
+
+\newcommand\typesetexample{\relax
+ \smallskip
+ \noindent
+ \begin{minipage}{\linewidth}
+ \color{niceblue}
+ \hrulefill\par
+ \edef\@tempa{[gobble=0,fontsize=\noexpand\scriptsize,\Options]}
+ \begin{lrbox}{\verbatimbox}\relax
+ \expandafter\BVerbatimInput\@tempa{\examplefilename}
+ \end{lrbox}
+ \begin{list}{}{\setlength\itemindent{0pt}
+ \setlength\leftmargin\exoutdent
+ \setlength\rightmargin{0pt}}\item
+ \ifx\auxwidth\relax
+ \setlength\verbatimwidth{\wd\verbatimbox}
+ \else
+ \setlength\verbatimwidth{\auxwidth}
+ \fi
+ \begin{minipage}[c]{\textwidth-\exoutdent-\verbatimwidth-\exverbgap}
+ \catcode`\%=14\centering\input\examplefilename\relax
+ \end{minipage}\hfill
+ \begin{minipage}[c]{\verbatimwidth}
+ \usebox\verbatimbox
+ \end{minipage}
+ \end{list}
+ \par\noindent\hrulefill
+ \end{minipage}
+ \smallskip}
+
+\newcommand*\setverbwidth[1]{\def\auxwidth{#1}}
+
+\newcommand*\name[1]{{#1}}
+\newcommand*\pkg[1]{\textsf{#1}}
+\newcommand*\feat[1]{\texttt{#1}}
+\newcommand*\opt[1]{\texttt{#1}}
+
+\newcommand*\note[1]{\unskip\footnote{#1}}
+
+\let\latin\textit
+\def\eg{\latin{e.g.}}
+\def\Eg{\latin{E.g.}}
+\def\ie{\latin{i.e.}}
+\def\etc{\@ifnextchar.{\latin{etc}}{\latin{etc.}\@}}
+
+\def\STIX{\textsc{stix}}
+\def\MacOSX{Mac~OS~X}
+\def\ascii{\textsc{ascii}}
+\def\OMEGA{Omega}
+
+\newcounter{argument}
+\g@addto@macro\endmacro{\setcounter{argument}{0}}
+\newcommand*\darg[1]{%
+ \stepcounter{argument}%
+ {\ttfamily\char`\#\theargument~:~}#1\par\noindent\ignorespaces
+}
+\newcommand*\doarg[1]{%
+ \stepcounter{argument}%
+ {\ttfamily\makebox[0pt][r]{[}\char`\#\theargument]:~}#1\par\noindent\ignorespaces
+}
+
+\newcommand\codeline[1]{\par{\centering#1\par\noindent}\ignorespaces}
+
+\newcommand\unichar[1]{\textsc{u}+\texttt{\small#1}}
+
+\setlength\parindent{2em}
+
+\def \MakePrivateLetters {%
+ \catcode`\@=11\relax
+ \catcode`\_=11\relax
+ \catcode`\:=11\relax
+}
+% \end{macrocode}
+%</dtx-style>
+%\fi
+%
+% \typeout{*************************************************************}
+% \typeout{*}
+% \typeout{* To finish the installation you have to move the following}
+% \typeout{* file into a directory searched by XeTeX:}
+% \typeout{*}
+% \typeout{* \space\space\space unicode-math.sty}
+% \typeout{*}
+% \typeout{*************************************************************}
+%
+\endinput
+
diff --git a/Master/texmf-dist/source/latex/unicode-math/unimath-symbols.ltx b/Master/texmf-dist/source/latex/unicode-math/unimath-symbols.ltx
new file mode 100644
index 00000000000..310a9908d0c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/unicode-math/unimath-symbols.ltx
@@ -0,0 +1,129 @@
+
+%%%%%%%%%%%%%%%%%%%%%%%
+% SYMBOLS DEFINED BY UNICODE-MATH
+%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass{article}
+\makeatletter
+
+\usepackage{booktabs,longtable,shortvrb,geometry,varwidth,textcomp,hyperref}
+
+\geometry{margin=3cm}
+\hypersetup{colorlinks,linkcolor=black}
+
+\def\cmd#1{\texttt{\textbackslash\expandafter\@gobble\string#1}}
+
+\usepackage{fontspec}
+\setmainfont[Ligatures=TeX,Numbers={Monospaced}]{TeX Gyre Pagella}
+\usepackage{unicode-math}
+\setmathfont[SizeFeatures={
+ {Size=-10, Colour=888888},
+ {Size=10-, Colour=FF0000}}]{STIXGeneral}
+
+\def\TABLE{%
+\begin{longtable}[l]{@{}lcll@{}}
+\toprule
+\textsc{usv} & Ex. & Macro & Description \\
+\midrule
+\input unicode-math-table.tex\relax\\
+\bottomrule
+\end{longtable}
+}
+\def\USV#1{\small\scshape\MakeLowercase{U+\@gobble#1}}
+\def\CMD#1{\small\cmd#1}
+\def\DESC#1{%
+ \begin{varwidth}[t]{10cm}
+ \raggedright\linespread{0.6}\scshape#1%
+ \end{varwidth}
+}
+
+\newcommand\SHOW[1]{%
+\def\UnicodeMathSymbol##1##2##3##4{%
+ \def\1{#1}\def\2{##3}%
+ \ifx\1\2%
+ \def\tempa{%
+ \USV{##1} &%
+ \SYMB{##2} &%
+ \CMD{##2} & \DESC{##4}\\%
+ }%
+ \expandafter\tempa
+ \fi
+}%
+\TABLE
+}
+\def\SYMB#1{$\displaystyle#1$}
+
+\begin{document}
+\MakeShortVerb\|
+\title{Every symbol defined by \textsf{unicode-math}}
+\author{Will Robertson\\\texttt{wspr81@gmail.com}}
+\maketitle
+
+This document uses the file \texttt{unicode-math-table.tex}
+to print every symbol defined by the \textsf{unicode-math}
+package. Use this document to find the command name or the Unicode glyph slot for a symbol that you wish to use.
+
+\tableofcontents
+
+\clearpage
+\section{Opening symbols, \cmd\mathopen}
+\begingroup
+\let\sqrtold\sqrt
+\def\sqrt{\sqrtold{}}
+\SHOW\mathopen
+\endgroup
+
+\clearpage
+\section{Closing symbols, \cmd\mathclose}
+\SHOW\mathclose
+
+\clearpage
+\section{Fence symbols, \cmd\mathfence}
+\SHOW\mathfence
+
+\section{Punctuation symbols, \cmd\mathpunct}
+\SHOW\mathpunct
+
+\clearpage
+\section{Accents, \cmd\mathaccent}
+
+Note that accents will only be properly placed if used with an OpenType font with the necessary information. The examples shown below use `Cambria Math'.
+
+\setmathfont[Color=FF0000]{Cambria Math}
+\begingroup
+\def\SYMB#1{$\displaystyle#1 x$}
+\SHOW\mathaccent
+\endgroup
+\setmathfont[SizeFeatures={
+ {Size=-10, Colour=888888},
+ {Size=10-, Colour=FF0000}}]{STIXGeneral}
+
+\clearpage
+\section{Big operators, \cmd\mathop}
+
+Of the operators shown below, a subset need to be flagged by \textsf{unicode-math} for \cmd\nolimits\ adjustments.
+The limits behaviour as specified by \textsf{unicode-math} are shown with grey subscripts and superscripts.
+\begingroup
+\def\SYMB#1{$\displaystyle#1_0^1$}
+\SHOW\mathop
+\endgroup
+
+\clearpage
+\section{Binary relations, \cmd\mathbin}
+\SHOW\mathbin
+
+\clearpage
+\section{Ordinary symbols, \cmd\mathord}
+\SHOW\mathord
+
+\clearpage
+\section{Relation symbols, \cmd\mathrel}
+\SHOW\mathrel
+
+\clearpage
+\section{Alphabetical symbols, \cmd\mathalpha}
+\SHOW\mathalpha
+
+
+
+\end{document}
diff --git a/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex b/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex
new file mode 100644
index 00000000000..d45209ee187
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/unicode-math/unicode-math-table.tex
@@ -0,0 +1,2467 @@
+\UnicodeMathSymbol{"00021}{\exclam }{\mathpunct}{exclamation mark}%
+\UnicodeMathSymbol{"00023}{\octothorpe }{\mathord}{number sign}%
+\UnicodeMathSymbol{"00024}{\mathdollar }{\mathord}{dollar sign}%
+\UnicodeMathSymbol{"00025}{\percent }{\mathord}{percent sign}%
+\UnicodeMathSymbol{"00026}{\ampersand }{\mathord}{ampersand}%
+\UnicodeMathSymbol{"00028}{\lparen }{\mathopen}{left parenthesis}%
+\UnicodeMathSymbol{"00029}{\rparen }{\mathclose}{right parenthesis}%
+\UnicodeMathSymbol{"0002B}{\plus }{\mathbin}{plus sign b:}%
+\UnicodeMathSymbol{"0002C}{\comma }{\mathpunct}{comma}%
+\UnicodeMathSymbol{"0002E}{\period }{\mathalpha}{full stop, period}%
+\UnicodeMathSymbol{"0002F}{\slash }{\mathord}{solidus}%
+\UnicodeMathSymbol{"0003A}{\mathcolon }{\mathpunct}{colon}%
+\UnicodeMathSymbol{"0003B}{\semicolon }{\mathpunct}{semicolon p:}%
+\UnicodeMathSymbol{"0003C}{\less }{\mathrel}{less-than sign r:}%
+\UnicodeMathSymbol{"0003D}{\equal }{\mathrel}{equals sign r:}%
+\UnicodeMathSymbol{"0003E}{\greater }{\mathrel}{greater-than sign r:}%
+\UnicodeMathSymbol{"0003F}{\question }{\mathord}{question mark}%
+\UnicodeMathSymbol{"0003F}{\atsign }{\mathord}{commercial at}%
+\UnicodeMathSymbol{"0005B}{\lbrack }{\mathopen}{left square bracket}%
+\UnicodeMathSymbol{"0005C}{\backslash }{\mathord}{reverse solidus}%
+\UnicodeMathSymbol{"0005D}{\rbrack }{\mathclose}{right square bracket}%
+\UnicodeMathSymbol{"0007B}{\lbrace }{\mathopen}{left curly bracket}%
+\UnicodeMathSymbol{"0007C}{\vert }{\mathfence}{vertical bar}%
+\UnicodeMathSymbol{"0007D}{\rbrace }{\mathclose}{right curly bracket}%
+\UnicodeMathSymbol{"000A3}{\sterling }{\mathord}{pound sign}%
+\UnicodeMathSymbol{"000A5}{\yen }{\mathord}{yen sign}%
+\UnicodeMathSymbol{"000AC}{\neg }{\mathord}{/neg /lnot not sign}%
+\UnicodeMathSymbol{"000B1}{\pm }{\mathbin}{plus-or-minus sign}%
+\UnicodeMathSymbol{"000B7}{\cdotp }{\mathbin}{/centerdot b: middle dot}%
+\UnicodeMathSymbol{"000D7}{\times }{\mathbin}{multiply sign}%
+\UnicodeMathSymbol{"000F7}{\div }{\mathbin}{divide sign}%
+\UnicodeMathSymbol{"001B5}{\Zbar }{\mathord}{impedance (latin capital letter z with stroke)}%
+\UnicodeMathSymbol{"00300}{\grave }{\mathaccent}{grave accent}%
+\UnicodeMathSymbol{"00301}{\acute }{\mathaccent}{acute accent}%
+\UnicodeMathSymbol{"00302}{\hat }{\mathaccent}{circumflex accent}%
+\UnicodeMathSymbol{"00303}{\tilde }{\mathaccent}{tilde}%
+\UnicodeMathSymbol{"00304}{\bar }{\mathaccent}{macron}%
+\UnicodeMathSymbol{"00305}{\overbar }{\mathaccent}{overbar embellishment}%
+\UnicodeMathSymbol{"00306}{\breve }{\mathaccent}{breve}%
+\UnicodeMathSymbol{"00307}{\dot }{\mathaccent}{dot above}%
+\UnicodeMathSymbol{"00308}{\ddot }{\mathaccent}{dieresis}%
+\UnicodeMathSymbol{"00309}{\ovhook }{\mathaccent}{combining hook above}%
+\UnicodeMathSymbol{"0030A}{\ocirc }{\mathaccent}{ring}%
+\UnicodeMathSymbol{"0030C}{\check }{\mathaccent}{caron}%
+\UnicodeMathSymbol{"00310}{\candra }{\mathaccent}{candrabindu (non-spacing)}%
+\UnicodeMathSymbol{"00312}{\oturnedcomma }{\mathaccent}{combining turned comma above}%
+\UnicodeMathSymbol{"00313}{\osmooth }{\mathaccent}{greek psili (smooth breathing) (non-spacing)}%
+\UnicodeMathSymbol{"00314}{\orough }{\mathaccent}{greek dasia (rough breathing) (non-spacing)}%
+\UnicodeMathSymbol{"00315}{\ocommatopright }{\mathaccent}{combining comma above right}%
+\UnicodeMathSymbol{"0031A}{\droang }{\mathaccent}{left angle above (non-spacing)}%
+\UnicodeMathSymbol{"00330}{\wideutilde }{\mathaccent}{under tilde accent (multiple characters and non-spacing)}%
+\UnicodeMathSymbol{"00331}{\underbar }{\mathaccent}{combining macron below}%
+\UnicodeMathSymbol{"00338}{\not }{\mathaccent}{combining long solidus overlay}%
+\UnicodeMathSymbol{"00391}{\upAlpha }{\mathalpha}{capital alpha, greek}%
+\UnicodeMathSymbol{"00392}{\upBeta }{\mathalpha}{capital beta, greek}%
+\UnicodeMathSymbol{"00393}{\upGamma }{\mathalpha}{capital gamma, greek}%
+\UnicodeMathSymbol{"00394}{\upDelta }{\mathalpha}{capital delta, greek}%
+\UnicodeMathSymbol{"00395}{\upEpsilon }{\mathalpha}{capital epsilon, greek}%
+\UnicodeMathSymbol{"00396}{\upZeta }{\mathalpha}{capital zeta, greek}%
+\UnicodeMathSymbol{"00397}{\upEta }{\mathalpha}{capital eta, greek}%
+\UnicodeMathSymbol{"00398}{\upTheta }{\mathalpha}{capital theta, greek}%
+\UnicodeMathSymbol{"00399}{\upIota }{\mathalpha}{capital iota, greek}%
+\UnicodeMathSymbol{"0039A}{\upKappa }{\mathalpha}{capital kappa, greek}%
+\UnicodeMathSymbol{"0039B}{\upLambda }{\mathalpha}{capital lambda, greek}%
+\UnicodeMathSymbol{"0039C}{\upMu }{\mathalpha}{capital mu, greek}%
+\UnicodeMathSymbol{"0039D}{\upNu }{\mathalpha}{capital nu, greek}%
+\UnicodeMathSymbol{"0039E}{\upXi }{\mathalpha}{capital xi, greek}%
+\UnicodeMathSymbol{"0039F}{\upOmicron }{\mathalpha}{capital omicron, greek}%
+\UnicodeMathSymbol{"003A0}{\upPi }{\mathalpha}{capital pi, greek}%
+\UnicodeMathSymbol{"003A1}{\upRho }{\mathalpha}{capital rho, greek}%
+\UnicodeMathSymbol{"003A3}{\upSigma }{\mathalpha}{capital sigma, greek}%
+\UnicodeMathSymbol{"003A4}{\upTau }{\mathalpha}{capital tau, greek}%
+\UnicodeMathSymbol{"003A6}{\upPhi }{\mathalpha}{capital phi, greek}%
+\UnicodeMathSymbol{"003A7}{\upChi }{\mathalpha}{capital chi, greek}%
+\UnicodeMathSymbol{"003A8}{\upPsi }{\mathalpha}{capital psi, greek}%
+\UnicodeMathSymbol{"003A9}{\upOmega }{\mathalpha}{capital omega, greek}%
+\UnicodeMathSymbol{"003B1}{\upalpha }{\mathalpha}{small alpha, greek}%
+\UnicodeMathSymbol{"003B2}{\upbeta }{\mathalpha}{small beta, greek}%
+\UnicodeMathSymbol{"003B3}{\upgamma }{\mathalpha}{small gamma, greek}%
+\UnicodeMathSymbol{"003B4}{\updelta }{\mathalpha}{small delta, greek}%
+\UnicodeMathSymbol{"003B5}{\upepsilon }{\mathalpha}{rounded small epsilon, greek}%
+\UnicodeMathSymbol{"003B6}{\upzeta }{\mathalpha}{small zeta, greek}%
+\UnicodeMathSymbol{"003B7}{\upeta }{\mathalpha}{small eta, greek}%
+\UnicodeMathSymbol{"003B8}{\uptheta }{\mathalpha}{straight theta, small theta, greek}%
+\UnicodeMathSymbol{"003B9}{\upiota }{\mathalpha}{small iota, greek}%
+\UnicodeMathSymbol{"003BA}{\upkappa }{\mathalpha}{small kappa, greek}%
+\UnicodeMathSymbol{"003BB}{\uplambda }{\mathalpha}{small lambda, greek}%
+\UnicodeMathSymbol{"003BC}{\upmu }{\mathalpha}{small mu, greek}%
+\UnicodeMathSymbol{"003BD}{\upnu }{\mathalpha}{small nu, greek}%
+\UnicodeMathSymbol{"003BE}{\upxi }{\mathalpha}{small xi, greek}%
+\UnicodeMathSymbol{"003BF}{\upomicron }{\mathalpha}{small omicron, greek}%
+\UnicodeMathSymbol{"003C0}{\uppi }{\mathalpha}{small pi, greek}%
+\UnicodeMathSymbol{"003C1}{\uprho }{\mathalpha}{small rho, greek}%
+\UnicodeMathSymbol{"003C2}{\upvarsigma }{\mathalpha}{terminal sigma, greek}%
+\UnicodeMathSymbol{"003C3}{\upsigma }{\mathalpha}{small sigma, greek}%
+\UnicodeMathSymbol{"003C4}{\uptau }{\mathalpha}{small tau, greek}%
+\UnicodeMathSymbol{"003C5}{\upupsilon }{\mathalpha}{small upsilon, greek}%
+\UnicodeMathSymbol{"003C6}{\upvarphi }{\mathalpha}{curly or open small phi, greek}%
+\UnicodeMathSymbol{"003C7}{\upchi }{\mathalpha}{small chi, greek}%
+\UnicodeMathSymbol{"003C8}{\uppsi }{\mathalpha}{small psi, greek}%
+\UnicodeMathSymbol{"003C9}{\upomega }{\mathalpha}{small omega, greek}%
+\UnicodeMathSymbol{"003D0}{\upvarbeta }{\mathalpha}{rounded small beta, greek}%
+\UnicodeMathSymbol{"003D1}{\upvartheta }{\mathalpha}{/vartheta - curly or open theta}%
+\UnicodeMathSymbol{"003D2}{\upUpsilon }{\mathalpha}{greek upsilon with hook symbol}%
+\UnicodeMathSymbol{"003D5}{\upphi }{\mathalpha}{/straightphi - small phi, greek}%
+\UnicodeMathSymbol{"003D6}{\upvarpi }{\mathalpha}{rounded small pi (pomega), greek}%
+\UnicodeMathSymbol{"003D8}{\upoldKoppa }{\mathord}{greek letter archaic koppa}%
+\UnicodeMathSymbol{"003D9}{\upoldkoppa }{\mathord}{greek small letter archaic koppa}%
+\UnicodeMathSymbol{"003DA}{\upStigma }{\mathalpha}{capital stigma}%
+\UnicodeMathSymbol{"003DB}{\upstigma }{\mathalpha}{greek small letter stigma}%
+\UnicodeMathSymbol{"003DC}{\upDigamma }{\mathalpha}{capital digamma}%
+\UnicodeMathSymbol{"003DD}{\updigamma }{\mathalpha}{old greek small letter digamma}%
+\UnicodeMathSymbol{"003DE}{\upKoppa }{\mathalpha}{capital koppa}%
+\UnicodeMathSymbol{"003DF}{\upkoppa }{\mathalpha}{greek small letter koppa}%
+\UnicodeMathSymbol{"003E0}{\upSampi }{\mathalpha}{capital sampi}%
+\UnicodeMathSymbol{"003E1}{\upsampi }{\mathalpha}{greek small letter sampi}%
+\UnicodeMathSymbol{"003F0}{\upvarkappa }{\mathalpha}{rounded small kappa, greek}%
+\UnicodeMathSymbol{"003F1}{\upvarrho }{\mathalpha}{rounded small rho, greek}%
+\UnicodeMathSymbol{"003F4}{\upvarTheta }{\mathalpha}{greek capital theta symbol}%
+\UnicodeMathSymbol{"003F5}{\upvarepsilon }{\mathalpha}{greek lunate epsilon symbol}%
+\UnicodeMathSymbol{"003F6}{\upbackepsilon }{\mathord}{greek reversed lunate epsilon symbol}%
+\UnicodeMathSymbol{"02015}{\horizbar }{\mathord}{horizontal bar}%
+\UnicodeMathSymbol{"02016}{\Vert }{\mathfence}{double vertical bar}%
+\UnicodeMathSymbol{"02017}{\twolowline }{\mathord}{double low line (spacing)}%
+\UnicodeMathSymbol{"02020}{\dagger }{\mathbin}{dagger relation}%
+\UnicodeMathSymbol{"02021}{\ddagger }{\mathbin}{double dagger relation}%
+\UnicodeMathSymbol{"02022}{\smblkcircle }{\mathbin}{/bullet b: round bullet, filled}%
+\UnicodeMathSymbol{"02024}{\enleaderonedot }{\mathord}{one dot leader}%
+\UnicodeMathSymbol{"02025}{\enleadertwodots }{\mathord}{double baseline dot (en leader)}%
+\UnicodeMathSymbol{"02026}{\unicodeellipsis }{\mathord}{ellipsis (horizontal)}%
+\UnicodeMathSymbol{"02027}{\hyphenpoint }{\mathord}{hyphenation point}%
+\UnicodeMathSymbol{"02032}{\prime }{\mathord}{prime or minute, not superscripted}%
+\UnicodeMathSymbol{"02033}{\dprime }{\mathord}{double prime or second, not superscripted}%
+\UnicodeMathSymbol{"02034}{\trprime }{\mathord}{triple prime (not superscripted)}%
+\UnicodeMathSymbol{"02035}{\backprime }{\mathord}{reverse prime, not superscripted}%
+\UnicodeMathSymbol{"02036}{\backdprime }{\mathord}{double reverse prime, not superscripted}%
+\UnicodeMathSymbol{"02037}{\backtrprime }{\mathord}{triple reverse prime, not superscripted}%
+\UnicodeMathSymbol{"02038}{\caretinsert }{\mathord}{caret (insertion mark)}%
+\UnicodeMathSymbol{"0203C}{\Exclam }{\mathord}{double exclamation mark}%
+\UnicodeMathSymbol{"0203E}{\overline }{\mathord}{overline}%
+\UnicodeMathSymbol{"02040}{\tieconcat }{\mathbin}{character tie, z notation sequence concatenation}%
+\UnicodeMathSymbol{"02043}{\hyphenbullet }{\mathord}{rectangle, filled (hyphen bullet)}%
+\UnicodeMathSymbol{"02044}{\fracslash }{\mathbin}{fraction slash}%
+\UnicodeMathSymbol{"02047}{\Question }{\mathord}{double question mark}%
+\UnicodeMathSymbol{"02050}{\closure }{\mathrel}{close up}%
+\UnicodeMathSymbol{"02057}{\qprime }{\mathord}{quadruple prime, not superscripted}%
+\UnicodeMathSymbol{"020AC}{\euro }{\mathord}{euro sign}%
+\UnicodeMathSymbol{"020D0}{\leftharpoonaccent }{\mathaccent}{combining left harpoon above}%
+\UnicodeMathSymbol{"020D1}{\rightharpoonaccent }{\mathaccent}{combining right harpoon above}%
+\UnicodeMathSymbol{"020D2}{\vertoverlay }{\mathaccent}{combining long vertical line overlay}%
+\UnicodeMathSymbol{"020D6}{\overleftarrow }{\mathaccent}{combining left arrow above}%
+\UnicodeMathSymbol{"020D7}{\vec }{\mathaccent}{combining right arrow above}%
+\UnicodeMathSymbol{"020DB}{\dddot }{\mathaccent}{combining three dots above}%
+\UnicodeMathSymbol{"020DC}{\ddddot }{\mathaccent}{combining four dots above}%
+\UnicodeMathSymbol{"020DD}{\enclosecircle }{\mathord}{combining enclosing circle}%
+\UnicodeMathSymbol{"020DE}{\enclosesquare }{\mathord}{combining enclosing square}%
+\UnicodeMathSymbol{"020DF}{\enclosediamond }{\mathord}{combining enclosing diamond}%
+\UnicodeMathSymbol{"020E1}{\overleftrightarrow }{\mathaccent}{combining left right arrow above}%
+\UnicodeMathSymbol{"020E4}{\enclosetriangle }{\mathord}{combining enclosing upward pointing triangle}%
+\UnicodeMathSymbol{"020E7}{\annuity }{\mathaccent}{combining annuity symbol}%
+\UnicodeMathSymbol{"020E8}{\threeunderdot }{\mathaccent}{combining triple underdot}%
+\UnicodeMathSymbol{"020E9}{\widebridgeabove }{\mathaccent}{combining wide bridge above}%
+\UnicodeMathSymbol{"020EC}{\underrightharpoondown }{\mathaccent}{combining rightwards harpoon with barb downwards}%
+\UnicodeMathSymbol{"020ED}{\underleftharpoondown }{\mathaccent}{combining leftwards harpoon with barb downwards}%
+\UnicodeMathSymbol{"020EE}{\underleftarrow }{\mathaccent}{combining left arrow below}%
+\UnicodeMathSymbol{"020EF}{\underrightarrow }{\mathaccent}{combining right arrow below}%
+\UnicodeMathSymbol{"020F0}{\asteraccent }{\mathaccent}{combining asterisk above}%
+\UnicodeMathSymbol{"02102}{\BbbC }{\mathalpha}{/bbb c, open face c}%
+\UnicodeMathSymbol{"02105}{\incare }{\mathord}{in-care-of symbol}%
+\UnicodeMathSymbol{"02107}{\Eulerconst }{\mathord}{euler constant}%
+\UnicodeMathSymbol{"0210A}{\mscrg }{\mathalpha}{/scr g, script letter g}%
+\UnicodeMathSymbol{"0210B}{\mscrH }{\mathalpha}{hamiltonian (script capital h)}%
+\UnicodeMathSymbol{"0210C}{\mfrakH }{\mathalpha}{/frak h, upper case h}%
+\UnicodeMathSymbol{"0210D}{\BbbH }{\mathalpha}{/bbb h, open face h}%
+\UnicodeMathSymbol{"0210E}{\Planckconst }{\mathord}{planck constant}%
+\UnicodeMathSymbol{"0210F}{\hslash }{\mathalpha}{/hslash - variant planck's over 2pi}%
+\UnicodeMathSymbol{"02110}{\mscrI }{\mathalpha}{/scr i, script letter i}%
+\UnicodeMathSymbol{"02111}{\Im }{\mathalpha}{imaginary part}%
+\UnicodeMathSymbol{"02112}{\mscrL }{\mathalpha}{lagrangian (script capital l)}%
+\UnicodeMathSymbol{"02113}{\ell }{\mathalpha}{cursive small l}%
+\UnicodeMathSymbol{"02115}{\BbbN }{\mathalpha}{/bbb n, open face n}%
+\UnicodeMathSymbol{"02118}{\wp }{\mathalpha}{weierstrass p}%
+\UnicodeMathSymbol{"02119}{\BbbP }{\mathalpha}{/bbb p, open face p}%
+\UnicodeMathSymbol{"0211A}{\BbbQ }{\mathalpha}{/bbb q, open face q}%
+\UnicodeMathSymbol{"0211B}{\mscrR }{\mathalpha}{/scr r, script letter r}%
+\UnicodeMathSymbol{"0211C}{\Re }{\mathalpha}{real part}%
+\UnicodeMathSymbol{"0211D}{\BbbR }{\mathalpha}{/bbb r, open face r}%
+\UnicodeMathSymbol{"02124}{\BbbZ }{\mathalpha}{/bbb z, open face z}%
+\UnicodeMathSymbol{"02127}{\mho }{\mathord}{conductance}%
+\UnicodeMathSymbol{"02128}{\mfrakZ }{\mathalpha}{/frak z, upper case z}%
+\UnicodeMathSymbol{"02129}{\turnediota }{\mathalpha}{turned iota}%
+\UnicodeMathSymbol{"0212B}{\Angstrom }{\mathalpha}{angstrom capital a, ring}%
+\UnicodeMathSymbol{"0212C}{\mscrB }{\mathalpha}{bernoulli function (script capital b)}%
+\UnicodeMathSymbol{"0212D}{\mfrakC }{\mathalpha}{black-letter capital c}%
+\UnicodeMathSymbol{"0212F}{\mscre }{\mathalpha}{/scr e, script letter e}%
+\UnicodeMathSymbol{"02130}{\mscrE }{\mathalpha}{/scr e, script letter e}%
+\UnicodeMathSymbol{"02131}{\mscrF }{\mathalpha}{/scr f, script letter f}%
+\UnicodeMathSymbol{"02132}{\Finv }{\mathord}{turned capital f}%
+\UnicodeMathSymbol{"02133}{\mscrM }{\mathalpha}{physics m-matrix (script capital m)}%
+\UnicodeMathSymbol{"02134}{\mscro }{\mathalpha}{order of (script small o)}%
+\UnicodeMathSymbol{"02135}{\aleph }{\mathalpha}{aleph, hebrew}%
+\UnicodeMathSymbol{"02136}{\beth }{\mathalpha}{beth, hebrew}%
+\UnicodeMathSymbol{"02137}{\gimel }{\mathalpha}{gimel, hebrew}%
+\UnicodeMathSymbol{"02138}{\daleth }{\mathalpha}{daleth, hebrew}%
+\UnicodeMathSymbol{"0213C}{\Bbbpi }{\mathord}{double-struck small pi}%
+\UnicodeMathSymbol{"0213D}{\Bbbgamma }{\mathalpha}{double-struck small gamma}%
+\UnicodeMathSymbol{"0213E}{\BbbGamma }{\mathalpha}{double-struck capital gamma}%
+\UnicodeMathSymbol{"0213F}{\BbbPi }{\mathalpha}{double-struck capital pi}%
+\UnicodeMathSymbol{"02140}{\Bbbsum }{\mathop}{double-struck n-ary summation}%
+\UnicodeMathSymbol{"02141}{\Game }{\mathord}{turned sans-serif capital g}%
+\UnicodeMathSymbol{"02142}{\sansLturned }{\mathord}{turned sans-serif capital l}%
+\UnicodeMathSymbol{"02143}{\sansLmirrored }{\mathord}{reversed sans-serif capital l}%
+\UnicodeMathSymbol{"02144}{\Yup }{\mathord}{turned sans-serif capital y}%
+\UnicodeMathSymbol{"02145}{\mitBbbD }{\mathord}{double-struck italic capital d}%
+\UnicodeMathSymbol{"02146}{\mitBbbd }{\mathord}{double-struck italic small d}%
+\UnicodeMathSymbol{"02147}{\mitBbbe }{\mathord}{double-struck italic small e}%
+\UnicodeMathSymbol{"02148}{\mitBbbi }{\mathord}{double-struck italic small i}%
+\UnicodeMathSymbol{"02149}{\mitBbbj }{\mathord}{double-struck italic small j}%
+\UnicodeMathSymbol{"0214A}{\PropertyLine }{\mathord}{property line}%
+\UnicodeMathSymbol{"0214B}{\upand }{\mathbin}{turned ampersand}%
+\UnicodeMathSymbol{"02190}{\leftarrow }{\mathrel}{/leftarrow /gets a: leftward arrow}%
+\UnicodeMathSymbol{"02191}{\uparrow }{\mathrel}{upward arrow}%
+\UnicodeMathSymbol{"02192}{\rightarrow }{\mathrel}{/rightarrow /to a: rightward arrow}%
+\UnicodeMathSymbol{"02193}{\downarrow }{\mathrel}{downward arrow}%
+\UnicodeMathSymbol{"02194}{\leftrightarrow }{\mathrel}{left and right arrow}%
+\UnicodeMathSymbol{"02195}{\updownarrow }{\mathrel}{up and down arrow}%
+\UnicodeMathSymbol{"02196}{\nwarrow }{\mathrel}{nw pointing arrow}%
+\UnicodeMathSymbol{"02197}{\nearrow }{\mathrel}{ne pointing arrow}%
+\UnicodeMathSymbol{"02198}{\searrow }{\mathrel}{se pointing arrow}%
+\UnicodeMathSymbol{"02199}{\swarrow }{\mathrel}{sw pointing arrow}%
+\UnicodeMathSymbol{"0219A}{\nleftarrow }{\mathrel}{not left arrow}%
+\UnicodeMathSymbol{"0219B}{\nrightarrow }{\mathrel}{not right arrow}%
+\UnicodeMathSymbol{"0219C}{\leftwavearrow }{\mathrel}{left arrow-wavy}%
+\UnicodeMathSymbol{"0219D}{\rightwavearrow }{\mathrel}{right arrow-wavy}%
+\UnicodeMathSymbol{"0219E}{\twoheadleftarrow }{\mathrel}{left two-headed arrow}%
+\UnicodeMathSymbol{"0219F}{\twoheaduparrow }{\mathrel}{up two-headed arrow}%
+\UnicodeMathSymbol{"021A0}{\twoheadrightarrow }{\mathrel}{right two-headed arrow}%
+\UnicodeMathSymbol{"021A1}{\twoheaddownarrow }{\mathrel}{down two-headed arrow}%
+\UnicodeMathSymbol{"021A2}{\leftarrowtail }{\mathrel}{left arrow-tailed}%
+\UnicodeMathSymbol{"021A3}{\rightarrowtail }{\mathrel}{right arrow-tailed}%
+\UnicodeMathSymbol{"021A4}{\mapsfrom }{\mathrel}{maps to, leftward}%
+\UnicodeMathSymbol{"021A5}{\mapsup }{\mathrel}{maps to, upward}%
+\UnicodeMathSymbol{"021A6}{\mapsto }{\mathrel}{maps to, rightward}%
+\UnicodeMathSymbol{"021A7}{\mapsdown }{\mathrel}{maps to, downward}%
+\UnicodeMathSymbol{"021A8}{\updownarrowbar }{\mathord}{up down arrow with base (perpendicular)}%
+\UnicodeMathSymbol{"021A9}{\hookleftarrow }{\mathrel}{left arrow-hooked}%
+\UnicodeMathSymbol{"021AA}{\hookrightarrow }{\mathrel}{right arrow-hooked}%
+\UnicodeMathSymbol{"021AB}{\looparrowleft }{\mathrel}{left arrow-looped}%
+\UnicodeMathSymbol{"021AC}{\looparrowright }{\mathrel}{right arrow-looped}%
+\UnicodeMathSymbol{"021AD}{\leftrightsquigarrow }{\mathrel}{left and right arr-wavy}%
+\UnicodeMathSymbol{"021AE}{\nleftrightarrow }{\mathrel}{not left and right arrow}%
+\UnicodeMathSymbol{"021AF}{\downzigzagarrow }{\mathrel}{downwards zigzag arrow}%
+\UnicodeMathSymbol{"021B0}{\Lsh }{\mathrel}{/lsh a:}%
+\UnicodeMathSymbol{"021B1}{\Rsh }{\mathrel}{/rsh a:}%
+\UnicodeMathSymbol{"021B2}{\Ldsh }{\mathrel}{left down angled arrow}%
+\UnicodeMathSymbol{"021B3}{\Rdsh }{\mathrel}{right down angled arrow}%
+\UnicodeMathSymbol{"021B4}{\linefeed }{\mathord}{rightwards arrow with corner downwards}%
+\UnicodeMathSymbol{"021B5}{\carriagereturn }{\mathord}{downwards arrow with corner leftward = carriage return}%
+\UnicodeMathSymbol{"021B6}{\curvearrowleft }{\mathrel}{left curved arrow}%
+\UnicodeMathSymbol{"021B7}{\curvearrowright }{\mathrel}{right curved arrow}%
+\UnicodeMathSymbol{"021B8}{\barovernorthwestarrow }{\mathord}{north west arrow to long bar}%
+\UnicodeMathSymbol{"021B9}{\barleftarrowrightarrowba}{\mathord}{leftwards arrow to bar over rightwards arrow to bar}%
+\UnicodeMathSymbol{"021BA}{\acwopencirclearrow }{\mathord}{anticlockwise open circle arrow}%
+\UnicodeMathSymbol{"021BB}{\cwopencirclearrow }{\mathord}{clockwise open circle arrow}%
+\UnicodeMathSymbol{"021BC}{\leftharpoonup }{\mathrel}{left harpoon-up}%
+\UnicodeMathSymbol{"021BD}{\leftharpoondown }{\mathrel}{left harpoon-down}%
+\UnicodeMathSymbol{"021BE}{\upharpoonright }{\mathrel}{/upharpoonright /restriction a: up harpoon-right}%
+\UnicodeMathSymbol{"021BF}{\upharpoonleft }{\mathrel}{up harpoon-left}%
+\UnicodeMathSymbol{"021C0}{\rightharpoonup }{\mathrel}{right harpoon-up}%
+\UnicodeMathSymbol{"021C1}{\rightharpoondown }{\mathrel}{right harpoon-down}%
+\UnicodeMathSymbol{"021C2}{\downharpoonright }{\mathrel}{down harpoon-right}%
+\UnicodeMathSymbol{"021C3}{\downharpoonleft }{\mathrel}{down harpoon-left}%
+\UnicodeMathSymbol{"021C4}{\rightleftarrows }{\mathrel}{right arrow over left arrow}%
+\UnicodeMathSymbol{"021C5}{\updownarrows }{\mathrel}{up arrow, down arrow}%
+\UnicodeMathSymbol{"021C6}{\leftrightarrows }{\mathrel}{left arrow over right arrow}%
+\UnicodeMathSymbol{"021C7}{\leftleftarrows }{\mathrel}{two left arrows}%
+\UnicodeMathSymbol{"021C8}{\upuparrows }{\mathrel}{two up arrows}%
+\UnicodeMathSymbol{"021C9}{\rightrightarrows }{\mathrel}{two right arrows}%
+\UnicodeMathSymbol{"021CA}{\downdownarrows }{\mathrel}{two down arrows}%
+\UnicodeMathSymbol{"021CB}{\leftrightharpoons }{\mathrel}{left harpoon over right}%
+\UnicodeMathSymbol{"021CC}{\rightleftharpoons }{\mathrel}{right harpoon over left}%
+\UnicodeMathSymbol{"021CD}{\nLeftarrow }{\mathrel}{not implied by}%
+\UnicodeMathSymbol{"021CE}{\nLeftrightarrow }{\mathrel}{not left and right double arrows}%
+\UnicodeMathSymbol{"021CF}{\nRightarrow }{\mathrel}{not implies}%
+\UnicodeMathSymbol{"021D0}{\Leftarrow }{\mathrel}{is implied by}%
+\UnicodeMathSymbol{"021D1}{\Uparrow }{\mathrel}{up double arrow}%
+\UnicodeMathSymbol{"021D2}{\Rightarrow }{\mathrel}{implies}%
+\UnicodeMathSymbol{"021D3}{\Downarrow }{\mathrel}{down double arrow}%
+\UnicodeMathSymbol{"021D4}{\Leftrightarrow }{\mathrel}{left and right double arrow}%
+\UnicodeMathSymbol{"021D5}{\Updownarrow }{\mathrel}{up and down double arrow}%
+\UnicodeMathSymbol{"021D6}{\Nwarrow }{\mathrel}{nw pointing double arrow}%
+\UnicodeMathSymbol{"021D7}{\Nearrow }{\mathrel}{ne pointing double arrow}%
+\UnicodeMathSymbol{"021D8}{\Searrow }{\mathrel}{se pointing double arrow}%
+\UnicodeMathSymbol{"021D9}{\Swarrow }{\mathrel}{sw pointing double arrow}%
+\UnicodeMathSymbol{"021DA}{\Lleftarrow }{\mathrel}{left triple arrow}%
+\UnicodeMathSymbol{"021DB}{\Rrightarrow }{\mathrel}{right triple arrow}%
+\UnicodeMathSymbol{"021DC}{\leftsquigarrow }{\mathrel}{leftwards squiggle arrow}%
+\UnicodeMathSymbol{"021DD}{\rightsquigarrow }{\mathrel}{rightwards squiggle arrow}%
+\UnicodeMathSymbol{"021DE}{\nHuparrow }{\mathord}{upwards arrow with double stroke}%
+\UnicodeMathSymbol{"021DF}{\nHdownarrow }{\mathord}{downwards arrow with double stroke}%
+\UnicodeMathSymbol{"021E0}{\leftdasharrow }{\mathord}{leftwards dashed arrow}%
+\UnicodeMathSymbol{"021E1}{\updasharrow }{\mathord}{upwards dashed arrow}%
+\UnicodeMathSymbol{"021E2}{\rightdasharrow }{\mathord}{rightwards dashed arrow}%
+\UnicodeMathSymbol{"021E3}{\downdasharrow }{\mathord}{downwards dashed arrow}%
+\UnicodeMathSymbol{"021E4}{\barleftarrow }{\mathrel}{leftwards arrow to bar}%
+\UnicodeMathSymbol{"021E5}{\rightarrowbar }{\mathrel}{rightwards arrow to bar}%
+\UnicodeMathSymbol{"021E6}{\leftwhitearrow }{\mathord}{leftwards white arrow}%
+\UnicodeMathSymbol{"021E7}{\upwhitearrow }{\mathord}{upwards white arrow}%
+\UnicodeMathSymbol{"021E8}{\rightwhitearrow }{\mathord}{rightwards white arrow}%
+\UnicodeMathSymbol{"021E9}{\downwhitearrow }{\mathord}{downwards white arrow}%
+\UnicodeMathSymbol{"021EA}{\whitearrowupfrombar }{\mathord}{upwards white arrow from bar}%
+\UnicodeMathSymbol{"021F3}{\updownwhitearrow }{\mathord}{up and down white arrow}%
+\UnicodeMathSymbol{"021F4}{\circleonrightarrow }{\mathrel}{right arrow with small circle}%
+\UnicodeMathSymbol{"021F5}{\downuparrows }{\mathrel}{downwards arrow leftwards of upwards arrow}%
+\UnicodeMathSymbol{"021F6}{\rightthreearrows }{\mathrel}{three rightwards arrows}%
+\UnicodeMathSymbol{"021F7}{\nvleftarrow }{\mathrel}{leftwards arrow with vertical stroke}%
+\UnicodeMathSymbol{"021F8}{\nvrightarrow }{\mathrel}{rightwards arrow with vertical stroke}%
+\UnicodeMathSymbol{"021F9}{\nvleftrightarrow }{\mathrel}{left right arrow with vertical stroke}%
+\UnicodeMathSymbol{"021FA}{\nVleftarrow }{\mathrel}{leftwards arrow with double vertical stroke}%
+\UnicodeMathSymbol{"021FB}{\nVrightarrow }{\mathrel}{rightwards arrow with double vertical stroke}%
+\UnicodeMathSymbol{"021FC}{\nVleftrightarrow }{\mathrel}{left right arrow with double vertical stroke}%
+\UnicodeMathSymbol{"021FD}{\leftarrowtriangle }{\mathrel}{leftwards open-headed arrow}%
+\UnicodeMathSymbol{"021FE}{\rightarrowtriangle }{\mathrel}{rightwards open-headed arrow}%
+\UnicodeMathSymbol{"021FF}{\leftrightarrowtriangle }{\mathrel}{left right open-headed arrow}%
+\UnicodeMathSymbol{"02200}{\forall }{\mathord}{for all}%
+\UnicodeMathSymbol{"02201}{\complement }{\mathord}{complement sign}%
+\UnicodeMathSymbol{"02202}{\partial }{\mathord}{partial differential}%
+\UnicodeMathSymbol{"02203}{\exists }{\mathord}{at least one exists}%
+\UnicodeMathSymbol{"02204}{\nexists }{\mathord}{negated exists}%
+\UnicodeMathSymbol{"02205}{\varnothing }{\mathord}{circle, slash}%
+\UnicodeMathSymbol{"02206}{\increment }{\mathord}{laplacian (delta; nabla\string^2)}%
+\UnicodeMathSymbol{"02207}{\nabla }{\mathord}{nabla, del, hamilton operator}%
+\UnicodeMathSymbol{"02208}{\in }{\mathrel}{set membership, variant}%
+\UnicodeMathSymbol{"02209}{\notin }{\mathrel}{negated set membership}%
+\UnicodeMathSymbol{"0220A}{\smallin }{\mathrel}{set membership (small set membership)}%
+\UnicodeMathSymbol{"0220B}{\ni }{\mathrel}{contains, variant}%
+\UnicodeMathSymbol{"0220C}{\nni }{\mathrel}{negated contains, variant}%
+\UnicodeMathSymbol{"0220D}{\smallni }{\mathrel}{/ni /owns r: contains (small contains as member)}%
+\UnicodeMathSymbol{"0220E}{\QED }{\mathord}{end of proof}%
+\UnicodeMathSymbol{"0220F}{\prod }{\mathop}{product operator}%
+\UnicodeMathSymbol{"02210}{\coprod }{\mathop}{coproduct operator}%
+\UnicodeMathSymbol{"02211}{\sum }{\mathop}{summation operator}%
+\UnicodeMathSymbol{"02212}{\minus }{\mathbin}{minus sign}%
+\UnicodeMathSymbol{"02213}{\mp }{\mathbin}{minus-or-plus sign}%
+\UnicodeMathSymbol{"02214}{\dotplus }{\mathbin}{plus sign, dot above}%
+\UnicodeMathSymbol{"02215}{\divslash }{\mathbin}{division slash}%
+\UnicodeMathSymbol{"02216}{\smallsetminus }{\mathbin}{small set minus (cf. reverse solidus)}%
+\UnicodeMathSymbol{"02217}{\ast }{\mathbin}{centered asterisk}%
+\UnicodeMathSymbol{"02218}{\vysmwhtcircle }{\mathbin}{composite function (small circle)}%
+\UnicodeMathSymbol{"02219}{\vysmblkcircle }{\mathbin}{bullet operator}%
+\UnicodeMathSymbol{"0221A}{\sqrt }{\mathopen}{radical}%
+\UnicodeMathSymbol{"0221B}{\cuberoot }{\mathopen}{cube root}%
+\UnicodeMathSymbol{"0221C}{\fourthroot }{\mathopen}{fourth root}%
+\UnicodeMathSymbol{"0221D}{\propto }{\mathrel}{is proportional to}%
+\UnicodeMathSymbol{"0221E}{\infty }{\mathord}{infinity}%
+\UnicodeMathSymbol{"0221F}{\rightangle }{\mathord}{right (90 degree) angle}%
+\UnicodeMathSymbol{"02220}{\angle }{\mathord}{angle}%
+\UnicodeMathSymbol{"02221}{\measuredangle }{\mathord}{angle-measured}%
+\UnicodeMathSymbol{"02222}{\sphericalangle }{\mathord}{angle-spherical}%
+\UnicodeMathSymbol{"02223}{\mid }{\mathrel}{/mid r:}%
+\UnicodeMathSymbol{"02224}{\nmid }{\mathrel}{negated mid}%
+\UnicodeMathSymbol{"02225}{\parallel }{\mathrel}{parallel}%
+\UnicodeMathSymbol{"02226}{\nparallel }{\mathrel}{not parallel}%
+\UnicodeMathSymbol{"02227}{\wedge }{\mathbin}{/wedge /land b: logical and}%
+\UnicodeMathSymbol{"02228}{\vee }{\mathbin}{/vee /lor b: logical or}%
+\UnicodeMathSymbol{"02229}{\cap }{\mathbin}{intersection}%
+\UnicodeMathSymbol{"0222A}{\cup }{\mathbin}{union or logical sum}%
+\UnicodeMathSymbol{"0222B}{\int }{\mathop}{integral operator}%
+\UnicodeMathSymbol{"0222C}{\iint }{\mathop}{double integral operator}%
+\UnicodeMathSymbol{"0222D}{\iiint }{\mathop}{triple integral operator}%
+\UnicodeMathSymbol{"0222E}{\oint }{\mathop}{contour integral operator}%
+\UnicodeMathSymbol{"0222F}{\oiint }{\mathop}{double contour integral operator}%
+\UnicodeMathSymbol{"02230}{\oiiint }{\mathop}{triple contour integral operator}%
+\UnicodeMathSymbol{"02231}{\intclockwise }{\mathop}{clockwise integral}%
+\UnicodeMathSymbol{"02232}{\varointclockwise }{\mathop}{contour integral, clockwise}%
+\UnicodeMathSymbol{"02233}{\ointctrclockwise }{\mathop}{contour integral, anticlockwise}%
+\UnicodeMathSymbol{"02234}{\therefore }{\mathord}{therefore}%
+\UnicodeMathSymbol{"02235}{\because }{\mathord}{because}%
+\UnicodeMathSymbol{"02236}{\mathratio }{\mathrel}{ratio}%
+\UnicodeMathSymbol{"02237}{\Colon }{\mathrel}{two colons}%
+\UnicodeMathSymbol{"02238}{\dotminus }{\mathbin}{minus sign, dot above}%
+\UnicodeMathSymbol{"02239}{\dashcolon }{\mathrel}{excess (-:)}%
+\UnicodeMathSymbol{"0223A}{\dotsminusdots }{\mathrel}{minus with four dots, geometric properties}%
+\UnicodeMathSymbol{"0223B}{\kernelcontraction }{\mathrel}{homothetic}%
+\UnicodeMathSymbol{"0223C}{\sim }{\mathrel}{similar}%
+\UnicodeMathSymbol{"0223D}{\backsim }{\mathrel}{reverse similar}%
+\UnicodeMathSymbol{"0223E}{\ac }{\mathbin}{most positive [inverted lazy s]}%
+\UnicodeMathSymbol{"0223F}{\sinewave }{\mathord}{sine wave}%
+\UnicodeMathSymbol{"02240}{\wr }{\mathbin}{wreath product}%
+\UnicodeMathSymbol{"02241}{\nsim }{\mathrel}{not similar}%
+\UnicodeMathSymbol{"02242}{\eqsim }{\mathrel}{equals, similar}%
+\UnicodeMathSymbol{"02243}{\simeq }{\mathrel}{similar, equals}%
+\UnicodeMathSymbol{"02244}{\nsime }{\mathrel}{not similar, equals}%
+\UnicodeMathSymbol{"02245}{\cong }{\mathrel}{congruent with}%
+\UnicodeMathSymbol{"02246}{\simneqq }{\mathrel}{similar, not equals [vert only for 9573 entity]}%
+\UnicodeMathSymbol{"02247}{\ncong }{\mathrel}{not congruent with}%
+\UnicodeMathSymbol{"02248}{\approx }{\mathrel}{approximate}%
+\UnicodeMathSymbol{"02249}{\napprox }{\mathrel}{not approximate}%
+\UnicodeMathSymbol{"0224A}{\approxeq }{\mathrel}{approximate, equals}%
+\UnicodeMathSymbol{"0224B}{\approxident }{\mathrel}{approximately identical to}%
+\UnicodeMathSymbol{"0224C}{\backcong }{\mathrel}{all equal to}%
+\UnicodeMathSymbol{"0224D}{\asymp }{\mathrel}{asymptotically equal to}%
+\UnicodeMathSymbol{"0224E}{\Bumpeq }{\mathrel}{bumpy equals}%
+\UnicodeMathSymbol{"0224F}{\bumpeq }{\mathrel}{bumpy equals, equals}%
+\UnicodeMathSymbol{"02250}{\doteq }{\mathrel}{equals, single dot above}%
+\UnicodeMathSymbol{"02251}{\Doteq }{\mathrel}{/doteqdot /doteq r: equals, even dots}%
+\UnicodeMathSymbol{"02252}{\fallingdotseq }{\mathrel}{equals, falling dots}%
+\UnicodeMathSymbol{"02253}{\risingdotseq }{\mathrel}{equals, rising dots}%
+\UnicodeMathSymbol{"02254}{\coloneq }{\mathrel}{colon, equals}%
+\UnicodeMathSymbol{"02255}{\eqcolon }{\mathrel}{equals, colon}%
+\UnicodeMathSymbol{"02256}{\eqcirc }{\mathrel}{circle on equals sign}%
+\UnicodeMathSymbol{"02257}{\circeq }{\mathrel}{circle, equals}%
+\UnicodeMathSymbol{"02258}{\arceq }{\mathrel}{arc, equals; corresponds to}%
+\UnicodeMathSymbol{"02259}{\wedgeq }{\mathrel}{corresponds to (wedge, equals)}%
+\UnicodeMathSymbol{"0225A}{\veeeq }{\mathrel}{logical or, equals}%
+\UnicodeMathSymbol{"0225B}{\stareq }{\mathrel}{star equals}%
+\UnicodeMathSymbol{"0225C}{\triangleq }{\mathrel}{triangle, equals}%
+\UnicodeMathSymbol{"0225D}{\eqdef }{\mathrel}{equals by definition}%
+\UnicodeMathSymbol{"0225E}{\measeq }{\mathrel}{measured by (m over equals)}%
+\UnicodeMathSymbol{"0225F}{\questeq }{\mathrel}{equal with questionmark}%
+\UnicodeMathSymbol{"02260}{\ne }{\mathrel}{/ne /neq r: not equal}%
+\UnicodeMathSymbol{"02261}{\equiv }{\mathrel}{identical with}%
+\UnicodeMathSymbol{"02262}{\nequiv }{\mathrel}{not identical with}%
+\UnicodeMathSymbol{"02263}{\Equiv }{\mathrel}{strict equivalence (4 lines)}%
+\UnicodeMathSymbol{"02264}{\leq }{\mathrel}{/leq /le r: less-than-or-equal}%
+\UnicodeMathSymbol{"02265}{\geq }{\mathrel}{/geq /ge r: greater-than-or-equal}%
+\UnicodeMathSymbol{"02266}{\leqq }{\mathrel}{less, double equals}%
+\UnicodeMathSymbol{"02267}{\geqq }{\mathrel}{greater, double equals}%
+\UnicodeMathSymbol{"02268}{\lneqq }{\mathrel}{less, not double equals}%
+\UnicodeMathSymbol{"02269}{\gneqq }{\mathrel}{greater, not double equals}%
+\UnicodeMathSymbol{"0226A}{\ll }{\mathrel}{much less than, type 2}%
+\UnicodeMathSymbol{"0226B}{\gg }{\mathrel}{much greater than, type 2}%
+\UnicodeMathSymbol{"0226C}{\between }{\mathrel}{between}%
+\UnicodeMathSymbol{"0226D}{\nasymp }{\mathrel}{not asymptotically equal to}%
+\UnicodeMathSymbol{"0226E}{\nless }{\mathrel}{not less-than}%
+\UnicodeMathSymbol{"0226F}{\ngtr }{\mathrel}{not greater-than}%
+\UnicodeMathSymbol{"02270}{\nleq }{\mathrel}{not less-than-or-equal}%
+\UnicodeMathSymbol{"02271}{\ngeq }{\mathrel}{not greater-than-or-equal}%
+\UnicodeMathSymbol{"02272}{\lesssim }{\mathrel}{less, similar}%
+\UnicodeMathSymbol{"02273}{\gtrsim }{\mathrel}{greater, similar}%
+\UnicodeMathSymbol{"02274}{\nlesssim }{\mathrel}{not less, similar}%
+\UnicodeMathSymbol{"02275}{\ngtrsim }{\mathrel}{not greater, similar}%
+\UnicodeMathSymbol{"02276}{\lessgtr }{\mathrel}{less, greater}%
+\UnicodeMathSymbol{"02277}{\gtrless }{\mathrel}{greater, less}%
+\UnicodeMathSymbol{"02278}{\nlessgtr }{\mathrel}{not less, greater}%
+\UnicodeMathSymbol{"02279}{\ngtrless }{\mathrel}{not greater, less}%
+\UnicodeMathSymbol{"0227A}{\prec }{\mathrel}{precedes}%
+\UnicodeMathSymbol{"0227B}{\succ }{\mathrel}{succeeds}%
+\UnicodeMathSymbol{"0227C}{\preccurlyeq }{\mathrel}{precedes, curly equals}%
+\UnicodeMathSymbol{"0227D}{\succcurlyeq }{\mathrel}{succeeds, curly equals}%
+\UnicodeMathSymbol{"0227E}{\precsim }{\mathrel}{precedes, similar}%
+\UnicodeMathSymbol{"0227F}{\succsim }{\mathrel}{succeeds, similar}%
+\UnicodeMathSymbol{"02280}{\nprec }{\mathrel}{not precedes}%
+\UnicodeMathSymbol{"02281}{\nsucc }{\mathrel}{not succeeds}%
+\UnicodeMathSymbol{"02282}{\subset }{\mathrel}{subset or is implied by}%
+\UnicodeMathSymbol{"02283}{\supset }{\mathrel}{superset or implies}%
+\UnicodeMathSymbol{"02284}{\nsubset }{\mathrel}{not subset, variant [slash negation]}%
+\UnicodeMathSymbol{"02285}{\nsupset }{\mathrel}{not superset, variant [slash negation]}%
+\UnicodeMathSymbol{"02286}{\subseteq }{\mathrel}{subset, equals}%
+\UnicodeMathSymbol{"02287}{\supseteq }{\mathrel}{superset, equals}%
+\UnicodeMathSymbol{"02288}{\nsubseteq }{\mathrel}{not subset, equals}%
+\UnicodeMathSymbol{"02289}{\nsupseteq }{\mathrel}{not superset, equals}%
+\UnicodeMathSymbol{"0228A}{\subsetneq }{\mathrel}{subset, not equals}%
+\UnicodeMathSymbol{"0228B}{\supsetneq }{\mathrel}{superset, not equals}%
+\UnicodeMathSymbol{"0228C}{\cupleftarrow }{\mathbin}{multiset}%
+\UnicodeMathSymbol{"0228D}{\cupdot }{\mathbin}{union, with dot}%
+\UnicodeMathSymbol{"0228E}{\uplus }{\mathbin}{plus sign in union}%
+\UnicodeMathSymbol{"0228F}{\sqsubset }{\mathrel}{square subset}%
+\UnicodeMathSymbol{"02290}{\sqsupset }{\mathrel}{square superset}%
+\UnicodeMathSymbol{"02291}{\sqsubseteq }{\mathrel}{square subset, equals}%
+\UnicodeMathSymbol{"02292}{\sqsupseteq }{\mathrel}{square superset, equals}%
+\UnicodeMathSymbol{"02293}{\sqcap }{\mathbin}{square intersection}%
+\UnicodeMathSymbol{"02294}{\sqcup }{\mathbin}{square union}%
+\UnicodeMathSymbol{"02295}{\oplus }{\mathbin}{plus sign in circle}%
+\UnicodeMathSymbol{"02296}{\ominus }{\mathbin}{minus sign in circle}%
+\UnicodeMathSymbol{"02297}{\otimes }{\mathbin}{multiply sign in circle}%
+\UnicodeMathSymbol{"02298}{\oslash }{\mathbin}{solidus in circle}%
+\UnicodeMathSymbol{"02299}{\odot }{\mathbin}{middle dot in circle}%
+\UnicodeMathSymbol{"0229A}{\circledcirc }{\mathbin}{small circle in circle}%
+\UnicodeMathSymbol{"0229B}{\circledast }{\mathbin}{asterisk in circle}%
+\UnicodeMathSymbol{"0229C}{\circledequal }{\mathbin}{equal in circle}%
+\UnicodeMathSymbol{"0229D}{\circleddash }{\mathbin}{hyphen in circle}%
+\UnicodeMathSymbol{"0229E}{\boxplus }{\mathbin}{plus sign in box}%
+\UnicodeMathSymbol{"0229F}{\boxminus }{\mathbin}{minus sign in box}%
+\UnicodeMathSymbol{"022A0}{\boxtimes }{\mathbin}{multiply sign in box}%
+\UnicodeMathSymbol{"022A1}{\boxdot }{\mathbin}{/dotsquare /boxdot b: small dot in box}%
+\UnicodeMathSymbol{"022A2}{\vdash }{\mathrel}{vertical, dash}%
+\UnicodeMathSymbol{"022A3}{\dashv }{\mathrel}{dash, vertical}%
+\UnicodeMathSymbol{"022A4}{\top }{\mathord}{top}%
+\UnicodeMathSymbol{"022A5}{\bot }{\mathord}{bottom}%
+\UnicodeMathSymbol{"022A6}{\assert }{\mathrel}{assertion (vertical, short dash)}%
+\UnicodeMathSymbol{"022A7}{\models }{\mathrel}{models (vertical, short double dash)}%
+\UnicodeMathSymbol{"022A8}{\vDash }{\mathrel}{vertical, double dash}%
+\UnicodeMathSymbol{"022A9}{\Vdash }{\mathrel}{double vertical, dash}%
+\UnicodeMathSymbol{"022AA}{\Vvdash }{\mathrel}{triple vertical, dash}%
+\UnicodeMathSymbol{"022AB}{\VDash }{\mathrel}{double vert, double dash}%
+\UnicodeMathSymbol{"022AC}{\nvdash }{\mathrel}{not vertical, dash}%
+\UnicodeMathSymbol{"022AD}{\nvDash }{\mathrel}{not vertical, double dash}%
+\UnicodeMathSymbol{"022AE}{\nVdash }{\mathrel}{not double vertical, dash}%
+\UnicodeMathSymbol{"022AF}{\nVDash }{\mathrel}{not double vert, double dash}%
+\UnicodeMathSymbol{"022B0}{\prurel }{\mathrel}{element precedes under relation}%
+\UnicodeMathSymbol{"022B1}{\scurel }{\mathrel}{succeeds under relation}%
+\UnicodeMathSymbol{"022B2}{\vartriangleleft }{\mathrel}{left triangle, open, variant}%
+\UnicodeMathSymbol{"022B3}{\vartriangleright }{\mathrel}{right triangle, open, variant}%
+\UnicodeMathSymbol{"022B4}{\trianglelefteq }{\mathrel}{left triangle, equals}%
+\UnicodeMathSymbol{"022B5}{\trianglerighteq }{\mathrel}{right triangle, equals}%
+\UnicodeMathSymbol{"022B6}{\origof }{\mathrel}{original of}%
+\UnicodeMathSymbol{"022B7}{\imageof }{\mathrel}{image of}%
+\UnicodeMathSymbol{"022B8}{\multimap }{\mathrel}{/multimap a:}%
+\UnicodeMathSymbol{"022B9}{\hermitmatrix }{\mathord}{hermitian conjugate matrix}%
+\UnicodeMathSymbol{"022BA}{\intercal }{\mathbin}{intercal}%
+\UnicodeMathSymbol{"022BB}{\veebar }{\mathbin}{logical or, bar below (large vee); exclusive disjunction}%
+\UnicodeMathSymbol{"022BC}{\barwedge }{\mathbin}{bar, wedge (large wedge)}%
+\UnicodeMathSymbol{"022BD}{\barvee }{\mathbin}{bar, vee (large vee)}%
+\UnicodeMathSymbol{"022BE}{\measuredrightangle }{\mathord}{right angle-measured [with arc]}%
+\UnicodeMathSymbol{"022BF}{\varlrtriangle }{\mathord}{right triangle}%
+\UnicodeMathSymbol{"022C0}{\bigwedge }{\mathop}{logical or operator}%
+\UnicodeMathSymbol{"022C1}{\bigvee }{\mathop}{logical and operator}%
+\UnicodeMathSymbol{"022C2}{\bigcap }{\mathop}{intersection operator}%
+\UnicodeMathSymbol{"022C3}{\bigcup }{\mathop}{union operator}%
+\UnicodeMathSymbol{"022C4}{\smwhtdiamond }{\mathbin}{white diamond}%
+\UnicodeMathSymbol{"022C5}{\cdot }{\mathbin}{small middle dot}%
+\UnicodeMathSymbol{"022C6}{\star }{\mathbin}{small star, filled, low}%
+\UnicodeMathSymbol{"022C7}{\divideontimes }{\mathbin}{division on times}%
+\UnicodeMathSymbol{"022C8}{\bowtie }{\mathrel}{bowtie}%
+\UnicodeMathSymbol{"022C9}{\ltimes }{\mathbin}{times sign, left closed}%
+\UnicodeMathSymbol{"022CA}{\rtimes }{\mathbin}{times sign, right closed}%
+\UnicodeMathSymbol{"022CB}{\leftthreetimes }{\mathbin}{left semidirect product}%
+\UnicodeMathSymbol{"022CC}{\rightthreetimes }{\mathbin}{right semidirect product}%
+\UnicodeMathSymbol{"022CD}{\backsimeq }{\mathrel}{reverse similar, equals}%
+\UnicodeMathSymbol{"022CE}{\curlyvee }{\mathbin}{curly logical or}%
+\UnicodeMathSymbol{"022CF}{\curlywedge }{\mathbin}{curly logical and}%
+\UnicodeMathSymbol{"022D0}{\Subset }{\mathrel}{double subset}%
+\UnicodeMathSymbol{"022D1}{\Supset }{\mathrel}{double superset}%
+\UnicodeMathSymbol{"022D2}{\Cap }{\mathbin}{/cap /doublecap b: double intersection}%
+\UnicodeMathSymbol{"022D3}{\Cup }{\mathbin}{/cup /doublecup b: double union}%
+\UnicodeMathSymbol{"022D4}{\pitchfork }{\mathrel}{pitchfork}%
+\UnicodeMathSymbol{"022D5}{\equalparallel }{\mathrel}{parallel, equal; equal or parallel}%
+\UnicodeMathSymbol{"022D6}{\lessdot }{\mathrel}{less than, with dot}%
+\UnicodeMathSymbol{"022D7}{\gtrdot }{\mathrel}{greater than, with dot}%
+\UnicodeMathSymbol{"022D8}{\lll }{\mathrel}{/ll /lll /llless r: triple less-than}%
+\UnicodeMathSymbol{"022D9}{\ggg }{\mathrel}{/ggg /gg /gggtr r: triple greater-than}%
+\UnicodeMathSymbol{"022DA}{\lesseqgtr }{\mathrel}{less, equals, greater}%
+\UnicodeMathSymbol{"022DB}{\gtreqless }{\mathrel}{greater, equals, less}%
+\UnicodeMathSymbol{"022DC}{\eqless }{\mathrel}{equal-or-less}%
+\UnicodeMathSymbol{"022DD}{\eqgtr }{\mathrel}{equal-or-greater}%
+\UnicodeMathSymbol{"022DE}{\curlyeqprec }{\mathrel}{curly equals, precedes}%
+\UnicodeMathSymbol{"022DF}{\curlyeqsucc }{\mathrel}{curly equals, succeeds}%
+\UnicodeMathSymbol{"022E0}{\npreccurlyeq }{\mathrel}{not precedes, curly equals}%
+\UnicodeMathSymbol{"022E1}{\nsucccurlyeq }{\mathrel}{not succeeds, curly equals}%
+\UnicodeMathSymbol{"022E2}{\nsqsubseteq }{\mathrel}{not, square subset, equals}%
+\UnicodeMathSymbol{"022E3}{\nsqsupseteq }{\mathrel}{not, square superset, equals}%
+\UnicodeMathSymbol{"022E4}{\sqsubsetneq }{\mathrel}{square subset, not equals}%
+\UnicodeMathSymbol{"022E5}{\sqsupsetneq }{\mathrel}{square superset, not equals}%
+\UnicodeMathSymbol{"022E6}{\lnsim }{\mathrel}{less, not similar}%
+\UnicodeMathSymbol{"022E7}{\gnsim }{\mathrel}{greater, not similar}%
+\UnicodeMathSymbol{"022E8}{\precnsim }{\mathrel}{precedes, not similar}%
+\UnicodeMathSymbol{"022E9}{\succnsim }{\mathrel}{succeeds, not similar}%
+\UnicodeMathSymbol{"022EA}{\ntriangleleft }{\mathrel}{not left triangle}%
+\UnicodeMathSymbol{"022EB}{\ntriangleright }{\mathrel}{not right triangle}%
+\UnicodeMathSymbol{"022EC}{\ntrianglelefteq }{\mathrel}{not left triangle, equals}%
+\UnicodeMathSymbol{"022ED}{\ntrianglerighteq }{\mathrel}{not right triangle, equals}%
+\UnicodeMathSymbol{"022EE}{\vdots }{\mathrel}{vertical ellipsis}%
+\UnicodeMathSymbol{"022EF}{\unicodecdots }{\mathord}{three dots, centered}%
+\UnicodeMathSymbol{"022F0}{\adots }{\mathrel}{three dots, ascending}%
+\UnicodeMathSymbol{"022F1}{\ddots }{\mathrel}{three dots, descending}%
+\UnicodeMathSymbol{"022F2}{\disin }{\mathrel}{element of with long horizontal stroke}%
+\UnicodeMathSymbol{"022F3}{\varisins }{\mathrel}{element of with vertical bar at end of horizontal stroke}%
+\UnicodeMathSymbol{"022F4}{\isins }{\mathrel}{small element of with vertical bar at end of horizontal stroke}%
+\UnicodeMathSymbol{"022F5}{\isindot }{\mathrel}{element of with dot above}%
+\UnicodeMathSymbol{"022F6}{\varisinobar }{\mathrel}{element of with overbar}%
+\UnicodeMathSymbol{"022F7}{\isinobar }{\mathrel}{small element of with overbar}%
+\UnicodeMathSymbol{"022F8}{\isinvb }{\mathrel}{element of with underbar}%
+\UnicodeMathSymbol{"022F9}{\isinE }{\mathrel}{element of with two horizontal strokes}%
+\UnicodeMathSymbol{"022FA}{\nisd }{\mathrel}{contains with long horizontal stroke}%
+\UnicodeMathSymbol{"022FB}{\varnis }{\mathrel}{contains with vertical bar at end of horizontal stroke}%
+\UnicodeMathSymbol{"022FC}{\nis }{\mathrel}{small contains with vertical bar at end of horizontal stroke}%
+\UnicodeMathSymbol{"022FD}{\varniobar }{\mathrel}{contains with overbar}%
+\UnicodeMathSymbol{"022FE}{\niobar }{\mathrel}{small contains with overbar}%
+\UnicodeMathSymbol{"022FF}{\bagmember }{\mathrel}{z notation bag membership}%
+\UnicodeMathSymbol{"02300}{\diameter }{\mathord}{diameter sign}%
+\UnicodeMathSymbol{"02302}{\house }{\mathord}{house}%
+\UnicodeMathSymbol{"02305}{\varbarwedge }{\mathbin}{/barwedge b: logical and, bar above [projective (bar over small wedge)]}%
+\UnicodeMathSymbol{"02306}{\vardoublebarwedge }{\mathbin}{/doublebarwedge b: logical and, double bar above [perspective (double bar over small wedge)]}%
+\UnicodeMathSymbol{"02308}{\lceil }{\mathopen}{left ceiling}%
+\UnicodeMathSymbol{"02309}{\rceil }{\mathclose}{right ceiling}%
+\UnicodeMathSymbol{"0230A}{\lfloor }{\mathopen}{left floor}%
+\UnicodeMathSymbol{"0230B}{\rfloor }{\mathclose}{right floor}%
+\UnicodeMathSymbol{"02310}{\invnot }{\mathord}{reverse not}%
+\UnicodeMathSymbol{"02311}{\sqlozenge }{\mathord}{square lozenge}%
+\UnicodeMathSymbol{"02312}{\profline }{\mathord}{profile of a line}%
+\UnicodeMathSymbol{"02313}{\profsurf }{\mathord}{profile of a surface}%
+\UnicodeMathSymbol{"02315}{\recorder }{\mathord}{telephone recorder symbol}%
+\UnicodeMathSymbol{"02316}{\target }{\mathord}{register mark or target; position}%
+\UnicodeMathSymbol{"02317}{\viewdata }{\mathord}{viewdata square}%
+\UnicodeMathSymbol{"02318}{\cloverleaf }{\mathord}{cloverleaf [command key]}%
+\UnicodeMathSymbol{"02319}{\turnednot }{\mathord}{turned not sign}%
+\UnicodeMathSymbol{"0231A}{\watchicon }{\mathord}{watch icon}%
+\UnicodeMathSymbol{"0231C}{\ulcorner }{\mathopen}{upper left corner}%
+\UnicodeMathSymbol{"0231D}{\urcorner }{\mathclose}{upper right corner}%
+\UnicodeMathSymbol{"0231E}{\llcorner }{\mathopen}{lower left corner}%
+\UnicodeMathSymbol{"0231F}{\lrcorner }{\mathclose}{lower right corner}%
+\UnicodeMathSymbol{"02320}{\inttop }{\mathord}{top half integral}%
+\UnicodeMathSymbol{"02321}{\intbottom }{\mathord}{bottom half integral}%
+\UnicodeMathSymbol{"02322}{\frown }{\mathrel}{down curve}%
+\UnicodeMathSymbol{"02323}{\smile }{\mathrel}{up curve}%
+\UnicodeMathSymbol{"0232C}{\varhexagonlrbonds }{\mathord}{six carbon ring, corner down, double bonds lower right etc}%
+\UnicodeMathSymbol{"0232D}{\cylcty }{\mathord}{cylindricity}%
+\UnicodeMathSymbol{"0232E}{\profalar }{\mathord}{all-around profile}%
+\UnicodeMathSymbol{"02332}{\conictaper }{\mathord}{conical taper }%
+\UnicodeMathSymbol{"02336}{\topbot }{\mathord}{top and bottom}%
+\UnicodeMathSymbol{"0233D}{\obar }{\mathbin}{circle with vertical bar}%
+\UnicodeMathSymbol{"0233F}{\APLnotslash }{\mathrel}{solidus, bar through (apl functional symbol slash bar)}%
+\UnicodeMathSymbol{"02340}{\APLnotbackslash }{\mathord}{apl functional symbol backslash bar}%
+\UnicodeMathSymbol{"02353}{\APLboxupcaret }{\mathord}{boxed up caret}%
+\UnicodeMathSymbol{"02370}{\APLboxquestion }{\mathord}{boxed question mark}%
+\UnicodeMathSymbol{"0237C}{\rangledownzigzagarrow }{\mathord}{right angle with downwards zigzag arrow}%
+\UnicodeMathSymbol{"02393}{\dircurrent }{\mathord}{line over dashed line (direct current symbol form 2)}%
+\UnicodeMathSymbol{"02394}{\hexagon }{\mathord}{horizontal benzene ring [hexagon flat open]}%
+\UnicodeMathSymbol{"0239B}{\lparenuend }{\mathord}{left parenthesis upper hook}%
+\UnicodeMathSymbol{"0239C}{\lparenextender }{\mathord}{left parenthesis extension}%
+\UnicodeMathSymbol{"0239D}{\lparenlend }{\mathord}{left parenthesis lower hook}%
+\UnicodeMathSymbol{"0239E}{\rparenuend }{\mathord}{right parenthesis upper hook}%
+\UnicodeMathSymbol{"0239F}{\rparenextender }{\mathord}{right parenthesis extension}%
+\UnicodeMathSymbol{"023A0}{\rparenlend }{\mathord}{right parenthesis lower hook}%
+\UnicodeMathSymbol{"023A1}{\lbrackuend }{\mathord}{left square bracket upper corner}%
+\UnicodeMathSymbol{"023A2}{\lbrackextender }{\mathord}{left square bracket extension}%
+\UnicodeMathSymbol{"023A3}{\lbracklend }{\mathord}{left square bracket lower corner}%
+\UnicodeMathSymbol{"023A4}{\rbrackuend }{\mathord}{right square bracket upper corner}%
+\UnicodeMathSymbol{"023A5}{\rbrackextender }{\mathord}{right square bracket extension}%
+\UnicodeMathSymbol{"023A6}{\rbracklend }{\mathord}{right square bracket lower corner}%
+\UnicodeMathSymbol{"023A7}{\lbraceuend }{\mathord}{left curly bracket upper hook}%
+\UnicodeMathSymbol{"023A8}{\lbracemid }{\mathord}{left curly bracket middle piece}%
+\UnicodeMathSymbol{"023A9}{\lbracelend }{\mathord}{left curly bracket lower hook}%
+\UnicodeMathSymbol{"023AA}{\vbraceextender }{\mathord}{curly bracket extension}%
+\UnicodeMathSymbol{"023AB}{\rbraceuend }{\mathord}{right curly bracket upper hook}%
+\UnicodeMathSymbol{"023AC}{\rbracemid }{\mathord}{right curly bracket middle piece}%
+\UnicodeMathSymbol{"023AD}{\rbracelend }{\mathord}{right curly bracket lower hook}%
+\UnicodeMathSymbol{"023AE}{\intextender }{\mathord}{integral extension}%
+\UnicodeMathSymbol{"023AF}{\harrowextender }{\mathord}{horizontal line extension (used to extend arrows)}%
+\UnicodeMathSymbol{"023B0}{\lmoustache }{\mathord}{upper left or lower right curly bracket section}%
+\UnicodeMathSymbol{"023B1}{\rmoustache }{\mathord}{upper right or lower left curly bracket section}%
+\UnicodeMathSymbol{"023B2}{\sumtop }{\mathord}{summation top}%
+\UnicodeMathSymbol{"023B3}{\sumbottom }{\mathord}{summation bottom}%
+\UnicodeMathSymbol{"023B4}{\overbracket }{\mathord}{top square bracket}%
+\UnicodeMathSymbol{"023B5}{\underbracket }{\mathord}{bottom square bracket}%
+\UnicodeMathSymbol{"023B6}{\bbrktbrk }{\mathord}{bottom square bracket over top square bracket}%
+\UnicodeMathSymbol{"023B7}{\sqrtbottom }{\mathord}{radical symbol bottom}%
+\UnicodeMathSymbol{"023B8}{\lvboxline }{\mathord}{left vertical box line}%
+\UnicodeMathSymbol{"023B9}{\rvboxline }{\mathord}{right vertical box line}%
+\UnicodeMathSymbol{"023CE}{\varcarriagereturn }{\mathord}{return symbol}%
+\UnicodeMathSymbol{"023D0}{\varrowextender }{\mathord}{vertical line extension (used to extend arrows)}%
+\UnicodeMathSymbol{"023DC}{\overparen }{\mathord}{top parenthesis (mathematical use)}%
+\UnicodeMathSymbol{"023DD}{\underparen }{\mathord}{bottom parenthesis (mathematical use)}%
+\UnicodeMathSymbol{"023E0}{\obrbrak }{\mathord}{top tortoise shell bracket (mathematical use)}%
+\UnicodeMathSymbol{"023E1}{\ubrbrak }{\mathord}{bottom tortoise shell bracket (mathematical use)}%
+\UnicodeMathSymbol{"023E2}{\trapezium }{\mathord}{white trapezium}%
+\UnicodeMathSymbol{"023E3}{\benzenr }{\mathord}{benzene ring with circle}%
+\UnicodeMathSymbol{"023E4}{\strns }{\mathord}{straightness}%
+\UnicodeMathSymbol{"023E5}{\fltns }{\mathord}{flatness}%
+\UnicodeMathSymbol{"023E6}{\accurrent }{\mathord}{ac current}%
+\UnicodeMathSymbol{"023E7}{\elinters }{\mathord}{electrical intersection}%
+\UnicodeMathSymbol{"02506}{\bdtriplevdash }{\mathord}{doubly broken vert}%
+\UnicodeMathSymbol{"02580}{\blockuphalf }{\mathord}{upper half block}%
+\UnicodeMathSymbol{"02584}{\blocklowhalf }{\mathord}{lower half block}%
+\UnicodeMathSymbol{"02588}{\blockfull }{\mathord}{full block}%
+\UnicodeMathSymbol{"0258C}{\blocklefthalf }{\mathord}{left half block}%
+\UnicodeMathSymbol{"02590}{\blockrighthalf }{\mathord}{right half block}%
+\UnicodeMathSymbol{"02591}{\blockqtrshaded }{\mathord}{25\% shaded block}%
+\UnicodeMathSymbol{"02592}{\blockhalfshaded }{\mathord}{50\% shaded block}%
+\UnicodeMathSymbol{"02593}{\blockthreeqtrshaded }{\mathord}{75\% shaded block}%
+\UnicodeMathSymbol{"025A0}{\mdlgblksquare }{\mathord}{square, filled}%
+\UnicodeMathSymbol{"025A1}{\mdlgwhtsquare }{\mathord}{square, open}%
+\UnicodeMathSymbol{"025A2}{\squoval }{\mathord}{white square with rounded corners}%
+\UnicodeMathSymbol{"025A3}{\blackinwhitesquare }{\mathord}{white square containing black small square}%
+\UnicodeMathSymbol{"025A4}{\squarehfill }{\mathord}{square, horizontal rule filled}%
+\UnicodeMathSymbol{"025A5}{\squarevfill }{\mathord}{square, vertical rule filled}%
+\UnicodeMathSymbol{"025A6}{\squarehvfill }{\mathord}{square with orthogonal crosshatch fill}%
+\UnicodeMathSymbol{"025A7}{\squarenwsefill }{\mathord}{square, nw-to-se rule filled}%
+\UnicodeMathSymbol{"025A8}{\squareneswfill }{\mathord}{square, ne-to-sw rule filled}%
+\UnicodeMathSymbol{"025A9}{\squarecrossfill }{\mathord}{square with diagonal crosshatch fill}%
+\UnicodeMathSymbol{"025AA}{\smblksquare }{\mathord}{/blacksquare - sq bullet, filled}%
+\UnicodeMathSymbol{"025AB}{\smwhtsquare }{\mathord}{white small square}%
+\UnicodeMathSymbol{"025AC}{\hrectangleblack }{\mathord}{black rectangle}%
+\UnicodeMathSymbol{"025AD}{\hrectangle }{\mathord}{horizontal rectangle, open}%
+\UnicodeMathSymbol{"025AE}{\vrectangleblack }{\mathord}{black vertical rectangle}%
+\UnicodeMathSymbol{"025AF}{\vrectangle }{\mathord}{rectangle, white (vertical)}%
+\UnicodeMathSymbol{"025B0}{\parallelogramblack }{\mathord}{black parallelogram}%
+\UnicodeMathSymbol{"025B1}{\parallelogram }{\mathord}{parallelogram, open}%
+\UnicodeMathSymbol{"025B2}{\bigblacktriangleup }{\mathord}{ 0x25b2 6 6d black up-pointing triangle}%
+\UnicodeMathSymbol{"025B3}{\bigtriangleup }{\mathbin}{big up triangle, open}%
+\UnicodeMathSymbol{"025B4}{\blacktriangle }{\mathord}{up triangle, filled}%
+\UnicodeMathSymbol{"025B5}{\vartriangle }{\mathord}{/triangle - up triangle, open}%
+\UnicodeMathSymbol{"025B6}{\blacktriangleright }{\mathord}{(large) right triangle, filled}%
+\UnicodeMathSymbol{"025B7}{\triangleright }{\mathbin}{(large) right triangle, open; z notation range restriction}%
+\UnicodeMathSymbol{"025B8}{\smallblacktriangleright }{\mathord}{right triangle, filled}%
+\UnicodeMathSymbol{"025B9}{\smalltriangleright }{\mathord}{right triangle, open}%
+\UnicodeMathSymbol{"025BA}{\blackpointerright }{\mathord}{black right-pointing pointer}%
+\UnicodeMathSymbol{"025BB}{\whitepointerright }{\mathord}{white right-pointing pointer}%
+\UnicodeMathSymbol{"025BC}{\bigblacktriangledown }{\mathord}{big down triangle, filled}%
+\UnicodeMathSymbol{"025BD}{\bigtriangledown }{\mathord}{big down triangle, open}%
+\UnicodeMathSymbol{"025BE}{\blacktriangledown }{\mathord}{down triangle, filled}%
+\UnicodeMathSymbol{"025BF}{\triangledown }{\mathord}{down triangle, open}%
+\UnicodeMathSymbol{"025C0}{\blacktriangleleft }{\mathord}{(large) left triangle, filled}%
+\UnicodeMathSymbol{"025C1}{\triangleleft }{\mathbin}{(large) left triangle, open; z notation domain restriction}%
+\UnicodeMathSymbol{"025C2}{\smallblacktriangleleft }{\mathord}{left triangle, filled}%
+\UnicodeMathSymbol{"025C3}{\smalltriangleleft }{\mathord}{left triangle, open}%
+\UnicodeMathSymbol{"025C4}{\blackpointerleft }{\mathord}{black left-pointing pointer}%
+\UnicodeMathSymbol{"025C5}{\whitepointerleft }{\mathord}{white left-pointing pointer}%
+\UnicodeMathSymbol{"025C6}{\mdlgblkdiamond }{\mathord}{black diamond}%
+\UnicodeMathSymbol{"025C7}{\mdlgwhtdiamond }{\mathord}{white diamond; diamond, open}%
+\UnicodeMathSymbol{"025C8}{\blackinwhitediamond }{\mathord}{white diamond containing black small diamond}%
+\UnicodeMathSymbol{"025C9}{\fisheye }{\mathord}{fisheye}%
+\UnicodeMathSymbol{"025CA}{\mdlgwhtlozenge }{\mathord}{lozenge or total mark}%
+\UnicodeMathSymbol{"025CB}{\mdlgwhtcircle }{\mathbin}{medium large circle}%
+\UnicodeMathSymbol{"025CC}{\dottedcircle }{\mathord}{dotted circle}%
+\UnicodeMathSymbol{"025CD}{\circlevertfill }{\mathord}{circle with vertical fill}%
+\UnicodeMathSymbol{"025CE}{\bullseye }{\mathord}{bullseye}%
+\UnicodeMathSymbol{"025CF}{\mdlgblkcircle }{\mathord}{circle, filled}%
+\UnicodeMathSymbol{"025D0}{\circlelefthalfblack }{\mathord}{circle, filled left half [harvey ball]}%
+\UnicodeMathSymbol{"025D1}{\circlerighthalfblack }{\mathord}{circle, filled right half}%
+\UnicodeMathSymbol{"025D2}{\circlebottomhalfblack }{\mathord}{circle, filled bottom half}%
+\UnicodeMathSymbol{"025D3}{\circletophalfblack }{\mathord}{circle, filled top half}%
+\UnicodeMathSymbol{"025D4}{\circleurquadblack }{\mathord}{circle with upper right quadrant black}%
+\UnicodeMathSymbol{"025D5}{\blackcircleulquadwhite }{\mathord}{circle with all but upper left quadrant black}%
+\UnicodeMathSymbol{"025D6}{\blacklefthalfcircle }{\mathord}{left half black circle}%
+\UnicodeMathSymbol{"025D7}{\blackrighthalfcircle }{\mathord}{right half black circle}%
+\UnicodeMathSymbol{"025D8}{\inversebullet }{\mathord}{inverse bullet }%
+\UnicodeMathSymbol{"025D9}{\inversewhitecircle }{\mathord}{inverse white circle}%
+\UnicodeMathSymbol{"025DA}{\invwhiteupperhalfcircle }{\mathord}{upper half inverse white circle}%
+\UnicodeMathSymbol{"025DB}{\invwhitelowerhalfcircle }{\mathord}{lower half inverse white circle}%
+\UnicodeMathSymbol{"025DC}{\ularc }{\mathord}{upper left quadrant circular arc}%
+\UnicodeMathSymbol{"025DD}{\urarc }{\mathord}{upper right quadrant circular arc}%
+\UnicodeMathSymbol{"025DE}{\lrarc }{\mathord}{lower right quadrant circular arc}%
+\UnicodeMathSymbol{"025DF}{\llarc }{\mathord}{lower left quadrant circular arc}%
+\UnicodeMathSymbol{"025E0}{\topsemicircle }{\mathord}{upper half circle}%
+\UnicodeMathSymbol{"025E1}{\botsemicircle }{\mathord}{lower half circle}%
+\UnicodeMathSymbol{"025E2}{\lrblacktriangle }{\mathord}{lower right triangle, filled}%
+\UnicodeMathSymbol{"025E3}{\llblacktriangle }{\mathord}{lower left triangle, filled}%
+\UnicodeMathSymbol{"025E4}{\ulblacktriangle }{\mathord}{upper left triangle, filled}%
+\UnicodeMathSymbol{"025E5}{\urblacktriangle }{\mathord}{upper right triangle, filled}%
+\UnicodeMathSymbol{"025E6}{\smwhtcircle }{\mathord}{white bullet}%
+\UnicodeMathSymbol{"025E7}{\squareleftblack }{\mathord}{square, filled left half}%
+\UnicodeMathSymbol{"025E8}{\squarerightblack }{\mathord}{square, filled right half}%
+\UnicodeMathSymbol{"025E9}{\squareulblack }{\mathord}{square, filled top left corner}%
+\UnicodeMathSymbol{"025EA}{\squarelrblack }{\mathord}{square, filled bottom right corner}%
+\UnicodeMathSymbol{"025EB}{\boxbar }{\mathbin}{vertical bar in box}%
+\UnicodeMathSymbol{"025EC}{\trianglecdot }{\mathord}{triangle with centered dot}%
+\UnicodeMathSymbol{"025ED}{\triangleleftblack }{\mathord}{up-pointing triangle with left half black}%
+\UnicodeMathSymbol{"025EE}{\trianglerightblack }{\mathord}{up-pointing triangle with right half black}%
+\UnicodeMathSymbol{"025EF}{\lgwhtcircle }{\mathord}{large circle}%
+\UnicodeMathSymbol{"025F0}{\squareulquad }{\mathord}{white square with upper left quadrant}%
+\UnicodeMathSymbol{"025F1}{\squarellquad }{\mathord}{white square with lower left quadrant}%
+\UnicodeMathSymbol{"025F2}{\squarelrquad }{\mathord}{white square with lower right quadrant}%
+\UnicodeMathSymbol{"025F3}{\squareurquad }{\mathord}{white square with upper right quadrant}%
+\UnicodeMathSymbol{"025F4}{\circleulquad }{\mathord}{white circle with upper left quadrant}%
+\UnicodeMathSymbol{"025F5}{\circlellquad }{\mathord}{white circle with lower left quadrant}%
+\UnicodeMathSymbol{"025F6}{\circlelrquad }{\mathord}{white circle with lower right quadrant}%
+\UnicodeMathSymbol{"025F7}{\circleurquad }{\mathord}{white circle with upper right quadrant}%
+\UnicodeMathSymbol{"025F8}{\ultriangle }{\mathord}{upper left triangle}%
+\UnicodeMathSymbol{"025F9}{\urtriangle }{\mathord}{upper right triangle}%
+\UnicodeMathSymbol{"025FA}{\lltriangle }{\mathord}{lower left triangle}%
+\UnicodeMathSymbol{"025FB}{\mdwhtsquare }{\mathord}{white medium square}%
+\UnicodeMathSymbol{"025FC}{\mdblksquare }{\mathord}{black medium square}%
+\UnicodeMathSymbol{"025FD}{\mdsmwhtsquare }{\mathord}{white medium small square}%
+\UnicodeMathSymbol{"025FE}{\mdsmblksquare }{\mathord}{black medium small square}%
+\UnicodeMathSymbol{"025FF}{\lrtriangle }{\mathord}{lower right triangle}%
+\UnicodeMathSymbol{"02605}{\bigstar }{\mathord}{star, filled}%
+\UnicodeMathSymbol{"02606}{\bigwhitestar }{\mathord}{star, open}%
+\UnicodeMathSymbol{"02609}{\astrosun }{\mathord}{sun}%
+\UnicodeMathSymbol{"0260C}{\conjunction }{\mathord}{conjunction}%
+\UnicodeMathSymbol{"0260E}{\phone }{\mathord}{telephone symbol}%
+\UnicodeMathSymbol{"02612}{\XBox }{\mathord}{ballot cross}%
+\UnicodeMathSymbol{"02621}{\danger }{\mathord}{dangerous bend (caution sign)}%
+\UnicodeMathSymbol{"02639}{\frownie }{\mathord}{sad smiley}%
+\UnicodeMathSymbol{"0263A}{\smiley }{\mathord}{happy smiley}%
+\UnicodeMathSymbol{"0263B}{\blacksmiley }{\mathord}{black smiling face}%
+\UnicodeMathSymbol{"0263C}{\sun }{\mathord}{white sun with rays}%
+\UnicodeMathSymbol{"0263D}{\rightmoon }{\mathord}{first quarter moon}%
+\UnicodeMathSymbol{"0263E}{\leftmoon }{\mathord}{last quarter moon}%
+\UnicodeMathSymbol{"0263F}{\mercury }{\mathord}{mercury}%
+\UnicodeMathSymbol{"02640}{\female }{\mathord}{venus, female}%
+\UnicodeMathSymbol{"02641}{\earth }{\mathord}{earth}%
+\UnicodeMathSymbol{"02642}{\male }{\mathord}{mars, male}%
+\UnicodeMathSymbol{"02643}{\jupiter }{\mathord}{jupiter}%
+\UnicodeMathSymbol{"02644}{\saturn }{\mathord}{saturn}%
+\UnicodeMathSymbol{"02646}{\neptune }{\mathord}{neptune}%
+\UnicodeMathSymbol{"02647}{\pluto }{\mathord}{pluto}%
+\UnicodeMathSymbol{"02648}{\aries }{\mathord}{aries}%
+\UnicodeMathSymbol{"02649}{\taurus }{\mathord}{taurus}%
+\UnicodeMathSymbol{"02660}{\spadesuit }{\mathord}{spades suit symbol}%
+\UnicodeMathSymbol{"02661}{\heartsuit }{\mathord}{heart suit symbol}%
+\UnicodeMathSymbol{"02662}{\diamondsuit }{\mathord}{diamond suit symbol}%
+\UnicodeMathSymbol{"02663}{\clubsuit }{\mathord}{club suit symbol}%
+\UnicodeMathSymbol{"02664}{\varspadesuit }{\mathord}{spade, white (card suit)}%
+\UnicodeMathSymbol{"02665}{\varheartsuit }{\mathord}{filled heart (card suit)}%
+\UnicodeMathSymbol{"02666}{\vardiamondsuit }{\mathord}{filled diamond (card suit)}%
+\UnicodeMathSymbol{"02667}{\varclubsuit }{\mathord}{club, white (card suit)}%
+\UnicodeMathSymbol{"02669}{\quarternote }{\mathord}{music note (sung text sign)}%
+\UnicodeMathSymbol{"0266A}{\eighthnote }{\mathord}{eighth note}%
+\UnicodeMathSymbol{"0266B}{\twonotes }{\mathord}{beamed eighth notes}%
+\UnicodeMathSymbol{"0266D}{\flat }{\mathord}{musical flat}%
+\UnicodeMathSymbol{"0266E}{\natural }{\mathord}{music natural}%
+\UnicodeMathSymbol{"0266F}{\sharp }{\mathord}{musical sharp}%
+\UnicodeMathSymbol{"0267E}{\acidfree }{\mathord}{permanent paper sign}%
+\UnicodeMathSymbol{"02680}{\dicei }{\mathord}{die face-1}%
+\UnicodeMathSymbol{"02681}{\diceii }{\mathord}{die face-2}%
+\UnicodeMathSymbol{"02682}{\diceiii }{\mathord}{die face-3}%
+\UnicodeMathSymbol{"02683}{\diceiv }{\mathord}{die face-4}%
+\UnicodeMathSymbol{"02684}{\dicev }{\mathord}{die face-5}%
+\UnicodeMathSymbol{"02685}{\dicevi }{\mathord}{die face-6}%
+\UnicodeMathSymbol{"02686}{\circledrightdot }{\mathord}{white circle with dot right}%
+\UnicodeMathSymbol{"02687}{\circledtwodots }{\mathord}{white circle with two dots}%
+\UnicodeMathSymbol{"02688}{\blackcircledrightdot }{\mathord}{black circle with white dot right}%
+\UnicodeMathSymbol{"02689}{\blackcircledtwodots }{\mathord}{black circle with two white dots}%
+\UnicodeMathSymbol{"026A0}{\triangleexclam }{\mathord}{warning sign}%
+\UnicodeMathSymbol{"026A5}{\Hermaphrodite }{\mathord}{male and female sign}%
+\UnicodeMathSymbol{"026AA}{\mdwhtcircle }{\mathord}{medium white circle}%
+\UnicodeMathSymbol{"026AB}{\mdblkcircle }{\mathord}{medium black circle}%
+\UnicodeMathSymbol{"026AC}{\mdsmwhtcircle }{\mathord}{medium small white circle}%
+\UnicodeMathSymbol{"026B2}{\neuter }{\mathord}{neuter}%
+\UnicodeMathSymbol{"02702}{\scissors }{\mathord}{scissors, solid open}%
+\UnicodeMathSymbol{"02709}{\envelope }{\mathord}{envelope}%
+\UnicodeMathSymbol{"02713}{\checkmark }{\mathord}{tick, check mark}%
+\UnicodeMathSymbol{"02720}{\maltese }{\mathord}{maltese cross}%
+\UnicodeMathSymbol{"0272A}{\circledstar }{\mathord}{circled white star}%
+\UnicodeMathSymbol{"02736}{\varstar }{\mathord}{six pointed black star}%
+\UnicodeMathSymbol{"0273D}{\dingasterisk }{\mathord}{heavy teardrop-spoked asterisk}%
+\UnicodeMathSymbol{"02772}{\lbrbrak }{\mathopen}{light left tortoise shell bracket ornament}%
+\UnicodeMathSymbol{"02773}{\rbrbrak }{\mathclose}{light right tortoise shell bracket ornament}%
+\UnicodeMathSymbol{"0279B}{\draftingarrow }{\mathord}{right arrow with bold head (drafting)}%
+\UnicodeMathSymbol{"027C0}{\threedangle }{\mathord}{three dimensional angle}%
+\UnicodeMathSymbol{"027C1}{\whiteinwhitetriangle }{\mathord}{white triangle containing small white triangle}%
+\UnicodeMathSymbol{"027C2}{\perp }{\mathrel}{perpendicular}%
+\UnicodeMathSymbol{"027C3}{\subsetcirc }{\mathord}{open subset}%
+\UnicodeMathSymbol{"027C4}{\supsetcirc }{\mathord}{open superset}%
+\UnicodeMathSymbol{"027C5}{\lbag }{\mathopen}{left s-shaped bag delimiter}%
+\UnicodeMathSymbol{"027C6}{\rbag }{\mathclose}{right s-shaped bag delimiter}%
+\UnicodeMathSymbol{"027C7}{\veedot }{\mathbin}{or with dot inside}%
+\UnicodeMathSymbol{"027C8}{\bsolhsub }{\mathrel}{reverse solidus preceding subset}%
+\UnicodeMathSymbol{"027C9}{\suphsol }{\mathrel}{superset preceding solidus}%
+\UnicodeMathSymbol{"027CC}{\longdivision }{\mathopen}{long division}%
+\UnicodeMathSymbol{"027D0}{\diamondcdot }{\mathord}{white diamond with centred dot}%
+\UnicodeMathSymbol{"027D1}{\wedgedot }{\mathbin}{and with dot}%
+\UnicodeMathSymbol{"027D2}{\upin }{\mathrel}{element of opening upwards}%
+\UnicodeMathSymbol{"027D3}{\pullback }{\mathrel}{lower right corner with dot}%
+\UnicodeMathSymbol{"027D4}{\pushout }{\mathrel}{upper left corner with dot}%
+\UnicodeMathSymbol{"027D5}{\leftouterjoin }{\mathop}{left outer join}%
+\UnicodeMathSymbol{"027D6}{\rightouterjoin }{\mathop}{right outer join}%
+\UnicodeMathSymbol{"027D7}{\fullouterjoin }{\mathop}{full outer join}%
+\UnicodeMathSymbol{"027D8}{\bigbot }{\mathop}{large up tack}%
+\UnicodeMathSymbol{"027D9}{\bigtop }{\mathop}{large down tack}%
+\UnicodeMathSymbol{"027DA}{\DashVDash }{\mathrel}{left and right double turnstile}%
+\UnicodeMathSymbol{"027DB}{\dashVdash }{\mathrel}{left and right tack}%
+\UnicodeMathSymbol{"027DC}{\multimapinv }{\mathrel}{left multimap}%
+\UnicodeMathSymbol{"027DD}{\vlongdash }{\mathrel}{long left tack}%
+\UnicodeMathSymbol{"027DE}{\longdashv }{\mathrel}{long right tack}%
+\UnicodeMathSymbol{"027DF}{\cirbot }{\mathrel}{up tack with circle above}%
+\UnicodeMathSymbol{"027E0}{\lozengeminus }{\mathbin}{lozenge divided by horizontal rule}%
+\UnicodeMathSymbol{"027E1}{\concavediamond }{\mathbin}{white concave-sided diamond}%
+\UnicodeMathSymbol{"027E2}{\concavediamondtickleft }{\mathbin}{white concave-sided diamond with leftwards tick}%
+\UnicodeMathSymbol{"027E3}{\concavediamondtickright }{\mathbin}{white concave-sided diamond with rightwards tick}%
+\UnicodeMathSymbol{"027E4}{\whitesquaretickleft }{\mathbin}{white square with leftwards tick}%
+\UnicodeMathSymbol{"027E5}{\whitesquaretickright }{\mathbin}{white square with rightwards tick}%
+\UnicodeMathSymbol{"027E6}{\lBrack }{\mathopen}{mathematical left white square bracket}%
+\UnicodeMathSymbol{"027E7}{\rBrack }{\mathclose}{mathematical right white square bracket}%
+\UnicodeMathSymbol{"027E8}{\langle }{\mathopen}{mathematical left angle bracket}%
+\UnicodeMathSymbol{"027E9}{\rangle }{\mathclose}{mathematical right angle bracket}%
+\UnicodeMathSymbol{"027EA}{\lAngle }{\mathopen}{mathematical left double angle bracket}%
+\UnicodeMathSymbol{"027EB}{\rAngle }{\mathclose}{mathematical right double angle bracket}%
+\UnicodeMathSymbol{"027EC}{\Lbrbrak }{\mathopen}{mathematical left white tortoise shell bracket}%
+\UnicodeMathSymbol{"027ED}{\Rbrbrak }{\mathclose}{mathematical right white tortoise shell bracket}%
+\UnicodeMathSymbol{"027F0}{\UUparrow }{\mathrel}{upwards quadruple arrow}%
+\UnicodeMathSymbol{"027F1}{\DDownarrow }{\mathrel}{downwards quadruple arrow}%
+\UnicodeMathSymbol{"027F2}{\acwgapcirclearrow }{\mathrel}{anticlockwise gapped circle arrow}%
+\UnicodeMathSymbol{"027F3}{\cwgapcirclearrow }{\mathrel}{clockwise gapped circle arrow}%
+\UnicodeMathSymbol{"027F4}{\rightarrowonoplus }{\mathrel}{right arrow with circled plus}%
+\UnicodeMathSymbol{"027F5}{\longleftarrow }{\mathrel}{long leftwards arrow}%
+\UnicodeMathSymbol{"027F6}{\longrightarrow }{\mathrel}{long rightwards arrow}%
+\UnicodeMathSymbol{"027F7}{\longleftrightarrow }{\mathrel}{long left right arrow}%
+\UnicodeMathSymbol{"027F8}{\Longleftarrow }{\mathrel}{long leftwards double arrow}%
+\UnicodeMathSymbol{"027F9}{\Longrightarrow }{\mathrel}{long rightwards double arrow}%
+\UnicodeMathSymbol{"027FA}{\Longleftrightarrow }{\mathrel}{long left right double arrow}%
+\UnicodeMathSymbol{"027FB}{\longmapsfrom }{\mathrel}{long leftwards arrow from bar}%
+\UnicodeMathSymbol{"027FC}{\longmapsto }{\mathrel}{long rightwards arrow from bar}%
+\UnicodeMathSymbol{"027FD}{\Longmapsfrom }{\mathrel}{long leftwards double arrow from bar}%
+\UnicodeMathSymbol{"027FE}{\Longmapsto }{\mathrel}{long rightwards double arrow from bar}%
+\UnicodeMathSymbol{"027FF}{\longrightsquigarrow }{\mathrel}{long rightwards squiggle arrow}%
+\UnicodeMathSymbol{"02900}{\nvtwoheadrightarrow }{\mathrel}{rightwards two-headed arrow with vertical stroke}%
+\UnicodeMathSymbol{"02901}{\nVtwoheadrightarrow }{\mathrel}{rightwards two-headed arrow with double vertical stroke}%
+\UnicodeMathSymbol{"02902}{\nvLeftarrow }{\mathrel}{leftwards double arrow with vertical stroke}%
+\UnicodeMathSymbol{"02903}{\nvRightarrow }{\mathrel}{rightwards double arrow with vertical stroke}%
+\UnicodeMathSymbol{"02904}{\nvLeftrightarrow }{\mathrel}{left right double arrow with vertical stroke}%
+\UnicodeMathSymbol{"02905}{\twoheadmapsto }{\mathrel}{rightwards two-headed arrow from bar}%
+\UnicodeMathSymbol{"02906}{\Mapsfrom }{\mathrel}{leftwards double arrow from bar}%
+\UnicodeMathSymbol{"02907}{\Mapsto }{\mathrel}{rightwards double arrow from bar}%
+\UnicodeMathSymbol{"02908}{\downarrowbarred }{\mathrel}{downwards arrow with horizontal stroke}%
+\UnicodeMathSymbol{"02909}{\uparrowbarred }{\mathrel}{upwards arrow with horizontal stroke}%
+\UnicodeMathSymbol{"0290A}{\Uuparrow }{\mathrel}{upwards triple arrow}%
+\UnicodeMathSymbol{"0290B}{\Ddownarrow }{\mathrel}{downwards triple arrow}%
+\UnicodeMathSymbol{"0290C}{\leftbkarrow }{\mathrel}{leftwards double dash arrow}%
+\UnicodeMathSymbol{"0290D}{\rightbkarrow }{\mathrel}{rightwards double dash arrow}%
+\UnicodeMathSymbol{"0290E}{\leftdbkarrow }{\mathrel}{leftwards triple dash arrow}%
+\UnicodeMathSymbol{"0290F}{\dbkarow }{\mathrel}{rightwards triple dash arrow}%
+\UnicodeMathSymbol{"02910}{\drbkarow }{\mathrel}{rightwards two-headed triple dash arrow}%
+\UnicodeMathSymbol{"02911}{\rightdotarrow }{\mathrel}{rightwards arrow with dotted stem}%
+\UnicodeMathSymbol{"02912}{\baruparrow }{\mathrel}{upwards arrow to bar}%
+\UnicodeMathSymbol{"02913}{\downarrowbar }{\mathrel}{downwards arrow to bar}%
+\UnicodeMathSymbol{"02914}{\nvrightarrowtail }{\mathrel}{rightwards arrow with tail with vertical stroke}%
+\UnicodeMathSymbol{"02915}{\nVrightarrowtail }{\mathrel}{rightwards arrow with tail with double vertical stroke}%
+\UnicodeMathSymbol{"02916}{\twoheadrightarrowtail }{\mathrel}{rightwards two-headed arrow with tail}%
+\UnicodeMathSymbol{"02917}{\nvtwoheadrightarrowtail }{\mathrel}{rightwards two-headed arrow with tail with vertical stroke}%
+\UnicodeMathSymbol{"02918}{\nVtwoheadrightarrowtail }{\mathrel}{rightwards two-headed arrow with tail with double vertical stroke}%
+\UnicodeMathSymbol{"02919}{\lefttail }{\mathrel}{leftwards arrow-tail}%
+\UnicodeMathSymbol{"0291A}{\righttail }{\mathrel}{rightwards arrow-tail}%
+\UnicodeMathSymbol{"0291B}{\leftdbltail }{\mathrel}{leftwards double arrow-tail}%
+\UnicodeMathSymbol{"0291C}{\rightdbltail }{\mathrel}{rightwards double arrow-tail}%
+\UnicodeMathSymbol{"0291D}{\diamondleftarrow }{\mathrel}{leftwards arrow to black diamond}%
+\UnicodeMathSymbol{"0291E}{\rightarrowdiamond }{\mathrel}{rightwards arrow to black diamond}%
+\UnicodeMathSymbol{"0291F}{\diamondleftarrowbar }{\mathrel}{leftwards arrow from bar to black diamond}%
+\UnicodeMathSymbol{"02920}{\barrightarrowdiamond }{\mathrel}{rightwards arrow from bar to black diamond}%
+\UnicodeMathSymbol{"02921}{\nwsearrow }{\mathrel}{north west and south east arrow}%
+\UnicodeMathSymbol{"02922}{\neswarrow }{\mathrel}{north east and south west arrow}%
+\UnicodeMathSymbol{"02923}{\hknwarrow }{\mathrel}{north west arrow with hook}%
+\UnicodeMathSymbol{"02924}{\hknearrow }{\mathrel}{north east arrow with hook}%
+\UnicodeMathSymbol{"02925}{\hksearow }{\mathrel}{south east arrow with hook}%
+\UnicodeMathSymbol{"02926}{\hkswarow }{\mathrel}{south west arrow with hook}%
+\UnicodeMathSymbol{"02927}{\tona }{\mathrel}{north west arrow and north east arrow}%
+\UnicodeMathSymbol{"02928}{\toea }{\mathrel}{north east arrow and south east arrow}%
+\UnicodeMathSymbol{"02929}{\tosa }{\mathrel}{south east arrow and south west arrow}%
+\UnicodeMathSymbol{"0292A}{\towa }{\mathrel}{south west arrow and north west arrow}%
+\UnicodeMathSymbol{"0292B}{\rdiagovfdiag }{\mathord}{rising diagonal crossing falling diagonal}%
+\UnicodeMathSymbol{"0292C}{\fdiagovrdiag }{\mathord}{falling diagonal crossing rising diagonal}%
+\UnicodeMathSymbol{"0292D}{\seovnearrow }{\mathord}{south east arrow crossing north east arrow}%
+\UnicodeMathSymbol{"0292E}{\neovsearrow }{\mathord}{north east arrow crossing south east arrow}%
+\UnicodeMathSymbol{"0292F}{\fdiagovnearrow }{\mathord}{falling diagonal crossing north east arrow}%
+\UnicodeMathSymbol{"02930}{\rdiagovsearrow }{\mathord}{rising diagonal crossing south east arrow}%
+\UnicodeMathSymbol{"02931}{\neovnwarrow }{\mathord}{north east arrow crossing north west arrow}%
+\UnicodeMathSymbol{"02932}{\nwovnearrow }{\mathord}{north west arrow crossing north east arrow}%
+\UnicodeMathSymbol{"02933}{\rightcurvedarrow }{\mathrel}{wave arrow pointing directly right}%
+\UnicodeMathSymbol{"02934}{\uprightcurvearrow }{\mathord}{arrow pointing rightwards then curving upwards}%
+\UnicodeMathSymbol{"02935}{\downrightcurvedarrow }{\mathord}{arrow pointing rightwards then curving downwards}%
+\UnicodeMathSymbol{"02936}{\leftdowncurvedarrow }{\mathrel}{arrow pointing downwards then curving leftwards}%
+\UnicodeMathSymbol{"02937}{\rightdowncurvedarrow }{\mathrel}{arrow pointing downwards then curving rightwards}%
+\UnicodeMathSymbol{"02938}{\cwrightarcarrow }{\mathrel}{right-side arc clockwise arrow}%
+\UnicodeMathSymbol{"02939}{\acwleftarcarrow }{\mathrel}{left-side arc anticlockwise arrow}%
+\UnicodeMathSymbol{"0293A}{\acwoverarcarrow }{\mathrel}{top arc anticlockwise arrow}%
+\UnicodeMathSymbol{"0293B}{\acwunderarcarrow }{\mathrel}{bottom arc anticlockwise arrow}%
+\UnicodeMathSymbol{"0293C}{\curvearrowrightminus }{\mathrel}{top arc clockwise arrow with minus}%
+\UnicodeMathSymbol{"0293D}{\curvearrowleftplus }{\mathrel}{top arc anticlockwise arrow with plus}%
+\UnicodeMathSymbol{"0293E}{\cwundercurvearrow }{\mathrel}{lower right semicircular clockwise arrow}%
+\UnicodeMathSymbol{"0293F}{\ccwundercurvearrow }{\mathrel}{lower left semicircular anticlockwise arrow}%
+\UnicodeMathSymbol{"02940}{\acwcirclearrow }{\mathrel}{anticlockwise closed circle arrow}%
+\UnicodeMathSymbol{"02941}{\cwcirclearrow }{\mathrel}{clockwise closed circle arrow}%
+\UnicodeMathSymbol{"02942}{\rightarrowshortleftarrow}{\mathrel}{rightwards arrow above short leftwards arrow}%
+\UnicodeMathSymbol{"02943}{\leftarrowshortrightarrow}{\mathrel}{leftwards arrow above short rightwards arrow}%
+\UnicodeMathSymbol{"02944}{\shortrightarrowleftarrow}{\mathrel}{short rightwards arrow above leftwards arrow}%
+\UnicodeMathSymbol{"02945}{\rightarrowplus }{\mathrel}{rightwards arrow with plus below}%
+\UnicodeMathSymbol{"02946}{\leftarrowplus }{\mathrel}{leftwards arrow with plus below}%
+\UnicodeMathSymbol{"02947}{\rightarrowx }{\mathrel}{rightwards arrow through x}%
+\UnicodeMathSymbol{"02948}{\leftrightarrowcircle }{\mathrel}{left right arrow through small circle}%
+\UnicodeMathSymbol{"02949}{\twoheaduparrowcircle }{\mathrel}{upwards two-headed arrow from small circle}%
+\UnicodeMathSymbol{"0294A}{\leftrightharpoonupdown }{\mathrel}{left barb up right barb down harpoon}%
+\UnicodeMathSymbol{"0294B}{\leftrightharpoondownup }{\mathrel}{left barb down right barb up harpoon}%
+\UnicodeMathSymbol{"0294C}{\updownharpoonrightleft }{\mathrel}{up barb right down barb left harpoon}%
+\UnicodeMathSymbol{"0294D}{\updownharpoonleftright }{\mathrel}{up barb left down barb right harpoon}%
+\UnicodeMathSymbol{"0294E}{\leftrightharpoonupup }{\mathrel}{left barb up right barb up harpoon}%
+\UnicodeMathSymbol{"0294F}{\updownharpoonrightright }{\mathrel}{up barb right down barb right harpoon}%
+\UnicodeMathSymbol{"02950}{\leftrightharpoondowndown}{\mathrel}{left barb down right barb down harpoon}%
+\UnicodeMathSymbol{"02951}{\updownharpoonleftleft }{\mathrel}{up barb left down barb left harpoon}%
+\UnicodeMathSymbol{"02952}{\barleftharpoonup }{\mathrel}{leftwards harpoon with barb up to bar}%
+\UnicodeMathSymbol{"02953}{\rightharpoonupbar }{\mathrel}{rightwards harpoon with barb up to bar}%
+\UnicodeMathSymbol{"02954}{\barupharpoonright }{\mathrel}{upwards harpoon with barb right to bar}%
+\UnicodeMathSymbol{"02955}{\downharpoonrightbar }{\mathrel}{downwards harpoon with barb right to bar}%
+\UnicodeMathSymbol{"02956}{\barleftharpoondown }{\mathrel}{leftwards harpoon with barb down to bar}%
+\UnicodeMathSymbol{"02957}{\rightharpoondownbar }{\mathrel}{rightwards harpoon with barb down to bar}%
+\UnicodeMathSymbol{"02958}{\barupharpoonleft }{\mathrel}{upwards harpoon with barb left to bar}%
+\UnicodeMathSymbol{"02959}{\downharpoonleftbar }{\mathrel}{downwards harpoon with barb left to bar}%
+\UnicodeMathSymbol{"0295A}{\leftharpoonupbar }{\mathrel}{leftwards harpoon with barb up from bar}%
+\UnicodeMathSymbol{"0295B}{\barrightharpoonup }{\mathrel}{rightwards harpoon with barb up from bar}%
+\UnicodeMathSymbol{"0295C}{\upharpoonrightbar }{\mathrel}{upwards harpoon with barb right from bar}%
+\UnicodeMathSymbol{"0295D}{\bardownharpoonright }{\mathrel}{downwards harpoon with barb right from bar}%
+\UnicodeMathSymbol{"0295E}{\leftharpoondownbar }{\mathrel}{leftwards harpoon with barb down from bar}%
+\UnicodeMathSymbol{"0295F}{\barrightharpoondown }{\mathrel}{rightwards harpoon with barb down from bar}%
+\UnicodeMathSymbol{"02960}{\upharpoonleftbar }{\mathrel}{upwards harpoon with barb left from bar}%
+\UnicodeMathSymbol{"02961}{\bardownharpoonleft }{\mathrel}{downwards harpoon with barb left from bar}%
+\UnicodeMathSymbol{"02962}{\leftharpoonsupdown }{\mathrel}{leftwards harpoon with barb up above leftwards harpoon with barb down}%
+\UnicodeMathSymbol{"02963}{\upharpoonsleftright }{\mathrel}{upwards harpoon with barb left beside upwards harpoon with barb right}%
+\UnicodeMathSymbol{"02964}{\rightharpoonsupdown }{\mathrel}{rightwards harpoon with barb up above rightwards harpoon with barb down}%
+\UnicodeMathSymbol{"02965}{\downharpoonsleftright }{\mathrel}{downwards harpoon with barb left beside downwards harpoon with barb right}%
+\UnicodeMathSymbol{"02966}{\leftrightharpoonsup }{\mathrel}{leftwards harpoon with barb up above rightwards harpoon with barb up}%
+\UnicodeMathSymbol{"02967}{\leftrightharpoonsdown }{\mathrel}{leftwards harpoon with barb down above rightwards harpoon with barb down}%
+\UnicodeMathSymbol{"02968}{\rightleftharpoonsup }{\mathrel}{rightwards harpoon with barb up above leftwards harpoon with barb up}%
+\UnicodeMathSymbol{"02969}{\rightleftharpoonsdown }{\mathrel}{rightwards harpoon with barb down above leftwards harpoon with barb down}%
+\UnicodeMathSymbol{"0296A}{\leftharpoonupdash }{\mathrel}{leftwards harpoon with barb up above long dash}%
+\UnicodeMathSymbol{"0296B}{\dashleftharpoondown }{\mathrel}{leftwards harpoon with barb down below long dash}%
+\UnicodeMathSymbol{"0296C}{\rightharpoonupdash }{\mathrel}{rightwards harpoon with barb up above long dash}%
+\UnicodeMathSymbol{"0296D}{\dashrightharpoondown }{\mathrel}{rightwards harpoon with barb down below long dash}%
+\UnicodeMathSymbol{"0296E}{\updownharpoonsleftright }{\mathrel}{upwards harpoon with barb left beside downwards harpoon with barb right}%
+\UnicodeMathSymbol{"0296F}{\downupharpoonsleftright }{\mathrel}{downwards harpoon with barb left beside upwards harpoon with barb right}%
+\UnicodeMathSymbol{"02970}{\rightimply }{\mathrel}{right double arrow with rounded head}%
+\UnicodeMathSymbol{"02971}{\equalrightarrow }{\mathrel}{equals sign above rightwards arrow}%
+\UnicodeMathSymbol{"02972}{\similarrightarrow }{\mathrel}{tilde operator above rightwards arrow}%
+\UnicodeMathSymbol{"02973}{\leftarrowsimilar }{\mathrel}{leftwards arrow above tilde operator}%
+\UnicodeMathSymbol{"02974}{\rightarrowsimilar }{\mathrel}{rightwards arrow above tilde operator}%
+\UnicodeMathSymbol{"02975}{\rightarrowapprox }{\mathrel}{rightwards arrow above almost equal to}%
+\UnicodeMathSymbol{"02976}{\ltlarr }{\mathrel}{less-than above leftwards arrow}%
+\UnicodeMathSymbol{"02977}{\leftarrowless }{\mathrel}{leftwards arrow through less-than}%
+\UnicodeMathSymbol{"02978}{\gtrarr }{\mathrel}{greater-than above rightwards arrow}%
+\UnicodeMathSymbol{"02979}{\subrarr }{\mathrel}{subset above rightwards arrow}%
+\UnicodeMathSymbol{"0297A}{\leftarrowsubset }{\mathrel}{leftwards arrow through subset}%
+\UnicodeMathSymbol{"0297B}{\suplarr }{\mathrel}{superset above leftwards arrow}%
+\UnicodeMathSymbol{"0297C}{\leftfishtail }{\mathrel}{left fish tail}%
+\UnicodeMathSymbol{"0297D}{\rightfishtail }{\mathrel}{right fish tail}%
+\UnicodeMathSymbol{"0297E}{\upfishtail }{\mathrel}{up fish tail}%
+\UnicodeMathSymbol{"0297F}{\downfishtail }{\mathrel}{down fish tail}%
+\UnicodeMathSymbol{"02980}{\Vvert }{\mathfence}{triple vertical bar delimiter}%
+\UnicodeMathSymbol{"02981}{\mdsmblkcircle }{\mathord}{z notation spot}%
+\UnicodeMathSymbol{"02982}{\typecolon }{\mathbin}{z notation type colon}%
+\UnicodeMathSymbol{"02983}{\lBrace }{\mathopen}{left white curly bracket}%
+\UnicodeMathSymbol{"02984}{\rBrace }{\mathclose}{right white curly bracket}%
+\UnicodeMathSymbol{"02985}{\lParen }{\mathopen}{left white parenthesis}%
+\UnicodeMathSymbol{"02986}{\rParen }{\mathclose}{right white parenthesis}%
+\UnicodeMathSymbol{"02987}{\llparenthesis }{\mathopen}{z notation left image bracket}%
+\UnicodeMathSymbol{"02988}{\rrparenthesis }{\mathclose}{z notation right image bracket}%
+\UnicodeMathSymbol{"02989}{\llangle }{\mathopen}{z notation left binding bracket}%
+\UnicodeMathSymbol{"0298A}{\rrangle }{\mathclose}{z notation right binding bracket}%
+\UnicodeMathSymbol{"0298B}{\lbrackubar }{\mathopen}{left square bracket with underbar}%
+\UnicodeMathSymbol{"0298C}{\rbrackubar }{\mathclose}{right square bracket with underbar}%
+\UnicodeMathSymbol{"0298D}{\lbrackultick }{\mathopen}{left square bracket with tick in top corner}%
+\UnicodeMathSymbol{"0298E}{\rbracklrtick }{\mathclose}{right square bracket with tick in bottom corner}%
+\UnicodeMathSymbol{"0298F}{\lbracklltick }{\mathopen}{left square bracket with tick in bottom corner}%
+\UnicodeMathSymbol{"02990}{\rbrackurtick }{\mathclose}{right square bracket with tick in top corner}%
+\UnicodeMathSymbol{"02991}{\langledot }{\mathopen}{left angle bracket with dot}%
+\UnicodeMathSymbol{"02992}{\rangledot }{\mathclose}{right angle bracket with dot}%
+\UnicodeMathSymbol{"02993}{\lparenless }{\mathopen}{left arc less-than bracket}%
+\UnicodeMathSymbol{"02994}{\rparengtr }{\mathclose}{right arc greater-than bracket}%
+\UnicodeMathSymbol{"02995}{\Lparengtr }{\mathopen}{double left arc greater-than bracket}%
+\UnicodeMathSymbol{"02996}{\Rparenless }{\mathclose}{double right arc less-than bracket}%
+\UnicodeMathSymbol{"02997}{\lblkbrbrak }{\mathopen}{left black tortoise shell bracket}%
+\UnicodeMathSymbol{"02998}{\rblkbrbrak }{\mathclose}{right black tortoise shell bracket}%
+\UnicodeMathSymbol{"02999}{\fourvdots }{\mathord}{dotted fence}%
+\UnicodeMathSymbol{"0299A}{\vzigzag }{\mathord}{vertical zigzag line}%
+\UnicodeMathSymbol{"0299B}{\measuredangleleft }{\mathord}{measured angle opening left}%
+\UnicodeMathSymbol{"0299C}{\rightanglesqr }{\mathord}{right angle variant with square}%
+\UnicodeMathSymbol{"0299D}{\rightanglemdot }{\mathord}{measured right angle with dot}%
+\UnicodeMathSymbol{"0299E}{\angles }{\mathord}{angle with s inside}%
+\UnicodeMathSymbol{"0299F}{\angdnr }{\mathord}{acute angle}%
+\UnicodeMathSymbol{"029A0}{\gtlpar }{\mathord}{spherical angle opening left}%
+\UnicodeMathSymbol{"029A1}{\sphericalangleup }{\mathord}{spherical angle opening up}%
+\UnicodeMathSymbol{"029A2}{\turnangle }{\mathord}{turned angle}%
+\UnicodeMathSymbol{"029A3}{\revangle }{\mathord}{reversed angle}%
+\UnicodeMathSymbol{"029A4}{\angleubar }{\mathord}{angle with underbar}%
+\UnicodeMathSymbol{"029A5}{\revangleubar }{\mathord}{reversed angle with underbar}%
+\UnicodeMathSymbol{"029A6}{\wideangledown }{\mathord}{oblique angle opening up}%
+\UnicodeMathSymbol{"029A7}{\wideangleup }{\mathord}{oblique angle opening down}%
+\UnicodeMathSymbol{"029A8}{\measanglerutone }{\mathord}{measured angle with open arm ending in arrow pointing up and right}%
+\UnicodeMathSymbol{"029A9}{\measanglelutonw }{\mathord}{measured angle with open arm ending in arrow pointing up and left}%
+\UnicodeMathSymbol{"029AA}{\measanglerdtose }{\mathord}{measured angle with open arm ending in arrow pointing down and right}%
+\UnicodeMathSymbol{"029AB}{\measangleldtosw }{\mathord}{measured angle with open arm ending in arrow pointing down and left}%
+\UnicodeMathSymbol{"029AC}{\measangleurtone }{\mathord}{measured angle with open arm ending in arrow pointing right and up}%
+\UnicodeMathSymbol{"029AD}{\measangleultonw }{\mathord}{measured angle with open arm ending in arrow pointing left and up}%
+\UnicodeMathSymbol{"029AE}{\measangledrtose }{\mathord}{measured angle with open arm ending in arrow pointing right and down}%
+\UnicodeMathSymbol{"029AF}{\measangledltosw }{\mathord}{measured angle with open arm ending in arrow pointing left and down}%
+\UnicodeMathSymbol{"029B0}{\revemptyset }{\mathord}{reversed empty set}%
+\UnicodeMathSymbol{"029B1}{\emptysetobar }{\mathord}{empty set with overbar}%
+\UnicodeMathSymbol{"029B2}{\emptysetocirc }{\mathord}{empty set with small circle above}%
+\UnicodeMathSymbol{"029B3}{\emptysetoarr }{\mathord}{empty set with right arrow above}%
+\UnicodeMathSymbol{"029B4}{\emptysetoarrl }{\mathord}{empty set with left arrow above}%
+\UnicodeMathSymbol{"029B5}{\circlehbar }{\mathbin}{circle with horizontal bar}%
+\UnicodeMathSymbol{"029B6}{\circledvert }{\mathbin}{circled vertical bar}%
+\UnicodeMathSymbol{"029B7}{\circledparallel }{\mathbin}{circled parallel}%
+\UnicodeMathSymbol{"029B8}{\obslash }{\mathbin}{circled reverse solidus}%
+\UnicodeMathSymbol{"029B9}{\operp }{\mathbin}{circled perpendicular}%
+\UnicodeMathSymbol{"029BA}{\obot }{\mathord}{circle divided by horizontal bar and top half divided by vertical bar}%
+\UnicodeMathSymbol{"029BB}{\olcross }{\mathord}{circle with superimposed x}%
+\UnicodeMathSymbol{"029BC}{\odotslashdot }{\mathord}{circled anticlockwise-rotated division sign}%
+\UnicodeMathSymbol{"029BD}{\uparrowoncircle }{\mathord}{up arrow through circle}%
+\UnicodeMathSymbol{"029BE}{\circledwhitebullet }{\mathord}{circled white bullet}%
+\UnicodeMathSymbol{"029BF}{\circledbullet }{\mathord}{circled bullet}%
+\UnicodeMathSymbol{"029C0}{\olessthan }{\mathbin}{circled less-than}%
+\UnicodeMathSymbol{"029C1}{\ogreaterthan }{\mathbin}{circled greater-than}%
+\UnicodeMathSymbol{"029C2}{\cirscir }{\mathord}{circle with small circle to the right}%
+\UnicodeMathSymbol{"029C3}{\cirE }{\mathord}{circle with two horizontal strokes to the right}%
+\UnicodeMathSymbol{"029C4}{\boxdiag }{\mathbin}{squared rising diagonal slash}%
+\UnicodeMathSymbol{"029C5}{\boxbslash }{\mathbin}{squared falling diagonal slash}%
+\UnicodeMathSymbol{"029C6}{\boxast }{\mathbin}{squared asterisk}%
+\UnicodeMathSymbol{"029C7}{\boxcircle }{\mathbin}{squared small circle}%
+\UnicodeMathSymbol{"029C8}{\boxbox }{\mathbin}{squared square}%
+\UnicodeMathSymbol{"029C9}{\boxonbox }{\mathord}{two joined squares}%
+\UnicodeMathSymbol{"029CA}{\triangleodot }{\mathord}{triangle with dot above}%
+\UnicodeMathSymbol{"029CB}{\triangleubar }{\mathord}{triangle with underbar}%
+\UnicodeMathSymbol{"029CC}{\triangles }{\mathord}{s in triangle}%
+\UnicodeMathSymbol{"029CD}{\triangleserifs }{\mathbin}{triangle with serifs at bottom}%
+\UnicodeMathSymbol{"029CE}{\rtriltri }{\mathrel}{right triangle above left triangle}%
+\UnicodeMathSymbol{"029CF}{\ltrivb }{\mathrel}{left triangle beside vertical bar}%
+\UnicodeMathSymbol{"029D0}{\vbrtri }{\mathrel}{vertical bar beside right triangle}%
+\UnicodeMathSymbol{"029D1}{\lfbowtie }{\mathrel}{left black bowtie}%
+\UnicodeMathSymbol{"029D2}{\rfbowtie }{\mathrel}{right black bowtie}%
+\UnicodeMathSymbol{"029D3}{\fbowtie }{\mathrel}{black bowtie}%
+\UnicodeMathSymbol{"029D4}{\lftimes }{\mathrel}{left black times}%
+\UnicodeMathSymbol{"029D5}{\rftimes }{\mathrel}{right black times}%
+\UnicodeMathSymbol{"029D6}{\hourglass }{\mathbin}{white hourglass}%
+\UnicodeMathSymbol{"029D7}{\blackhourglass }{\mathbin}{black hourglass}%
+\UnicodeMathSymbol{"029D8}{\lvzigzag }{\mathopen}{left wiggly fence}%
+\UnicodeMathSymbol{"029D9}{\rvzigzag }{\mathclose}{right wiggly fence}%
+\UnicodeMathSymbol{"029DA}{\Lvzigzag }{\mathopen}{left double wiggly fence}%
+\UnicodeMathSymbol{"029DB}{\Rvzigzag }{\mathclose}{right double wiggly fence}%
+\UnicodeMathSymbol{"029DC}{\iinfin }{\mathord}{incomplete infinity}%
+\UnicodeMathSymbol{"029DD}{\tieinfty }{\mathord}{tie over infinity}%
+\UnicodeMathSymbol{"029DE}{\nvinfty }{\mathord}{infinity negated with vertical bar}%
+\UnicodeMathSymbol{"029DF}{\dualmap }{\mathrel}{double-ended multimap}%
+\UnicodeMathSymbol{"029E0}{\laplac }{\mathord}{square with contoured outline}%
+\UnicodeMathSymbol{"029E1}{\lrtriangleeq }{\mathrel}{increases as}%
+\UnicodeMathSymbol{"029E2}{\shuffle }{\mathbin}{shuffle product}%
+\UnicodeMathSymbol{"029E3}{\eparsl }{\mathrel}{equals sign and slanted parallel}%
+\UnicodeMathSymbol{"029E4}{\smeparsl }{\mathrel}{equals sign and slanted parallel with tilde above}%
+\UnicodeMathSymbol{"029E5}{\eqvparsl }{\mathrel}{identical to and slanted parallel}%
+\UnicodeMathSymbol{"029E6}{\gleichstark }{\mathrel}{gleich stark}%
+\UnicodeMathSymbol{"029E7}{\thermod }{\mathord}{thermodynamic}%
+\UnicodeMathSymbol{"029E8}{\downtriangleleftblack }{\mathord}{down-pointing triangle with left half black}%
+\UnicodeMathSymbol{"029E9}{\downtrianglerightblack }{\mathord}{down-pointing triangle with right half black}%
+\UnicodeMathSymbol{"029EA}{\blackdiamonddownarrow }{\mathord}{black diamond with down arrow}%
+\UnicodeMathSymbol{"029EB}{\mdlgblklozenge }{\mathbin}{black lozenge}%
+\UnicodeMathSymbol{"029EC}{\circledownarrow }{\mathord}{white circle with down arrow}%
+\UnicodeMathSymbol{"029ED}{\blackcircledownarrow }{\mathord}{black circle with down arrow}%
+\UnicodeMathSymbol{"029EE}{\errbarsquare }{\mathord}{error-barred white square}%
+\UnicodeMathSymbol{"029EF}{\errbarblacksquare }{\mathord}{error-barred black square}%
+\UnicodeMathSymbol{"029F0}{\errbardiamond }{\mathord}{error-barred white diamond}%
+\UnicodeMathSymbol{"029F1}{\errbarblackdiamond }{\mathord}{error-barred black diamond}%
+\UnicodeMathSymbol{"029F2}{\errbarcircle }{\mathord}{error-barred white circle}%
+\UnicodeMathSymbol{"029F3}{\errbarblackcircle }{\mathord}{error-barred black circle}%
+\UnicodeMathSymbol{"029F4}{\ruledelayed }{\mathrel}{rule-delayed}%
+\UnicodeMathSymbol{"029F5}{\setminus }{\mathbin}{reverse solidus operator}%
+\UnicodeMathSymbol{"029F6}{\dsol }{\mathbin}{solidus with overbar}%
+\UnicodeMathSymbol{"029F7}{\rsolbar }{\mathbin}{reverse solidus with horizontal stroke}%
+\UnicodeMathSymbol{"029F8}{\xsol }{\mathop}{big solidus}%
+\UnicodeMathSymbol{"029F9}{\xbsol }{\mathop}{big reverse solidus}%
+\UnicodeMathSymbol{"029FA}{\doubleplus }{\mathbin}{double plus}%
+\UnicodeMathSymbol{"029FB}{\tripleplus }{\mathbin}{triple plus}%
+\UnicodeMathSymbol{"029FC}{\lcurvyangle }{\mathopen}{left pointing curved angle bracket}%
+\UnicodeMathSymbol{"029FD}{\rcurvyangle }{\mathclose}{right pointing curved angle bracket}%
+\UnicodeMathSymbol{"029FE}{\tplus }{\mathbin}{tiny}%
+\UnicodeMathSymbol{"029FF}{\tminus }{\mathbin}{miny}%
+\UnicodeMathSymbol{"02A00}{\bigodot }{\mathop}{n-ary circled dot operator}%
+\UnicodeMathSymbol{"02A01}{\bigoplus }{\mathop}{n-ary circled plus operator}%
+\UnicodeMathSymbol{"02A02}{\bigotimes }{\mathop}{n-ary circled times operator}%
+\UnicodeMathSymbol{"02A03}{\bigcupdot }{\mathop}{n-ary union operator with dot}%
+\UnicodeMathSymbol{"02A04}{\biguplus }{\mathop}{n-ary union operator with plus}%
+\UnicodeMathSymbol{"02A05}{\bigsqcap }{\mathop}{n-ary square intersection operator}%
+\UnicodeMathSymbol{"02A06}{\bigsqcup }{\mathop}{n-ary square union operator}%
+\UnicodeMathSymbol{"02A07}{\conjquant }{\mathop}{two logical and operator}%
+\UnicodeMathSymbol{"02A08}{\disjquant }{\mathop}{two logical or operator}%
+\UnicodeMathSymbol{"02A09}{\bigtimes }{\mathop}{n-ary times operator}%
+\UnicodeMathSymbol{"02A0A}{\modtwosum }{\mathord}{modulo two sum}%
+\UnicodeMathSymbol{"02A0B}{\sumint }{\mathop}{summation with integral}%
+\UnicodeMathSymbol{"02A0C}{\iiiint }{\mathop}{quadruple integral operator}%
+\UnicodeMathSymbol{"02A0D}{\intbar }{\mathop}{finite part integral}%
+\UnicodeMathSymbol{"02A0E}{\intBar }{\mathop}{integral with double stroke}%
+\UnicodeMathSymbol{"02A0F}{\fint }{\mathop}{integral average with slash}%
+\UnicodeMathSymbol{"02A10}{\cirfnint }{\mathop}{circulation function}%
+\UnicodeMathSymbol{"02A11}{\awint }{\mathop}{anticlockwise integration}%
+\UnicodeMathSymbol{"02A12}{\rppolint }{\mathop}{line integration with rectangular path around pole}%
+\UnicodeMathSymbol{"02A13}{\scpolint }{\mathop}{line integration with semicircular path around pole}%
+\UnicodeMathSymbol{"02A14}{\npolint }{\mathop}{line integration not including the pole}%
+\UnicodeMathSymbol{"02A15}{\pointint }{\mathop}{integral around a point operator}%
+\UnicodeMathSymbol{"02A16}{\sqint }{\mathop}{quaternion integral operator}%
+\UnicodeMathSymbol{"02A17}{\intlarhk }{\mathop}{integral with leftwards arrow with hook}%
+\UnicodeMathSymbol{"02A18}{\intx }{\mathop}{integral with times sign}%
+\UnicodeMathSymbol{"02A19}{\intcap }{\mathop}{integral with intersection}%
+\UnicodeMathSymbol{"02A1A}{\intcup }{\mathop}{integral with union}%
+\UnicodeMathSymbol{"02A1B}{\upint }{\mathop}{integral with overbar}%
+\UnicodeMathSymbol{"02A1C}{\lowint }{\mathop}{integral with underbar}%
+\UnicodeMathSymbol{"02A1D}{\Join }{\mathop}{join}%
+\UnicodeMathSymbol{"02A1E}{\bigtriangleleft }{\mathop}{large left triangle operator}%
+\UnicodeMathSymbol{"02A1F}{\zcmp }{\mathop}{z notation schema composition}%
+\UnicodeMathSymbol{"02A20}{\zpipe }{\mathop}{z notation schema piping}%
+\UnicodeMathSymbol{"02A21}{\zproject }{\mathop}{z notation schema projection}%
+\UnicodeMathSymbol{"02A22}{\ringplus }{\mathbin}{plus sign with small circle above}%
+\UnicodeMathSymbol{"02A23}{\plushat }{\mathbin}{plus sign with circumflex accent above}%
+\UnicodeMathSymbol{"02A24}{\simplus }{\mathbin}{plus sign with tilde above}%
+\UnicodeMathSymbol{"02A25}{\plusdot }{\mathbin}{plus sign with dot below}%
+\UnicodeMathSymbol{"02A26}{\plussim }{\mathbin}{plus sign with tilde below}%
+\UnicodeMathSymbol{"02A27}{\plussubtwo }{\mathbin}{plus sign with subscript two}%
+\UnicodeMathSymbol{"02A28}{\plustrif }{\mathbin}{plus sign with black triangle}%
+\UnicodeMathSymbol{"02A29}{\commaminus }{\mathbin}{minus sign with comma above}%
+\UnicodeMathSymbol{"02A2A}{\minusdot }{\mathbin}{minus sign with dot below}%
+\UnicodeMathSymbol{"02A2B}{\minusfdots }{\mathbin}{minus sign with falling dots}%
+\UnicodeMathSymbol{"02A2C}{\minusrdots }{\mathbin}{minus sign with rising dots}%
+\UnicodeMathSymbol{"02A2D}{\opluslhrim }{\mathbin}{plus sign in left half circle}%
+\UnicodeMathSymbol{"02A2E}{\oplusrhrim }{\mathbin}{plus sign in right half circle}%
+\UnicodeMathSymbol{"02A2F}{\vectimes }{\mathbin}{vector or cross product}%
+\UnicodeMathSymbol{"02A30}{\dottimes }{\mathbin}{multiplication sign with dot above}%
+\UnicodeMathSymbol{"02A31}{\timesbar }{\mathbin}{multiplication sign with underbar}%
+\UnicodeMathSymbol{"02A32}{\btimes }{\mathbin}{semidirect product with bottom closed}%
+\UnicodeMathSymbol{"02A33}{\smashtimes }{\mathbin}{smash product}%
+\UnicodeMathSymbol{"02A34}{\otimeslhrim }{\mathbin}{multiplication sign in left half circle}%
+\UnicodeMathSymbol{"02A35}{\otimesrhrim }{\mathbin}{multiplication sign in right half circle}%
+\UnicodeMathSymbol{"02A36}{\otimeshat }{\mathbin}{circled multiplication sign with circumflex accent}%
+\UnicodeMathSymbol{"02A37}{\Otimes }{\mathbin}{multiplication sign in double circle}%
+\UnicodeMathSymbol{"02A38}{\odiv }{\mathbin}{circled division sign}%
+\UnicodeMathSymbol{"02A39}{\triangleplus }{\mathbin}{plus sign in triangle}%
+\UnicodeMathSymbol{"02A3A}{\triangleminus }{\mathbin}{minus sign in triangle}%
+\UnicodeMathSymbol{"02A3B}{\triangletimes }{\mathbin}{multiplication sign in triangle}%
+\UnicodeMathSymbol{"02A3C}{\intprod }{\mathbin}{interior product}%
+\UnicodeMathSymbol{"02A3D}{\intprodr }{\mathbin}{righthand interior product}%
+\UnicodeMathSymbol{"02A3E}{\fcmp }{\mathbin}{z notation relational composition}%
+\UnicodeMathSymbol{"02A3F}{\amalg }{\mathbin}{amalgamation or coproduct}%
+\UnicodeMathSymbol{"02A40}{\capdot }{\mathbin}{intersection with dot}%
+\UnicodeMathSymbol{"02A41}{\uminus }{\mathbin}{union with minus sign}%
+\UnicodeMathSymbol{"02A42}{\barcup }{\mathbin}{union with overbar}%
+\UnicodeMathSymbol{"02A43}{\barcap }{\mathbin}{intersection with overbar}%
+\UnicodeMathSymbol{"02A44}{\capwedge }{\mathbin}{intersection with logical and}%
+\UnicodeMathSymbol{"02A45}{\cupvee }{\mathbin}{union with logical or}%
+\UnicodeMathSymbol{"02A46}{\cupovercap }{\mathbin}{union above intersection}%
+\UnicodeMathSymbol{"02A47}{\capovercup }{\mathbin}{intersection above union}%
+\UnicodeMathSymbol{"02A48}{\cupbarcap }{\mathbin}{union above bar above intersection}%
+\UnicodeMathSymbol{"02A49}{\capbarcup }{\mathbin}{intersection above bar above union}%
+\UnicodeMathSymbol{"02A4A}{\twocups }{\mathbin}{union beside and joined with union}%
+\UnicodeMathSymbol{"02A4B}{\twocaps }{\mathbin}{intersection beside and joined with intersection}%
+\UnicodeMathSymbol{"02A4C}{\closedvarcup }{\mathbin}{closed union with serifs}%
+\UnicodeMathSymbol{"02A4D}{\closedvarcap }{\mathbin}{closed intersection with serifs}%
+\UnicodeMathSymbol{"02A4E}{\Sqcap }{\mathbin}{double square intersection}%
+\UnicodeMathSymbol{"02A4F}{\Sqcup }{\mathbin}{double square union}%
+\UnicodeMathSymbol{"02A50}{\closedvarcupsmashprod }{\mathbin}{closed union with serifs and smash product}%
+\UnicodeMathSymbol{"02A51}{\wedgeodot }{\mathbin}{logical and with dot above}%
+\UnicodeMathSymbol{"02A52}{\veeodot }{\mathbin}{logical or with dot above}%
+\UnicodeMathSymbol{"02A53}{\Wedge }{\mathbin}{double logical and}%
+\UnicodeMathSymbol{"02A54}{\Vee }{\mathbin}{double logical or}%
+\UnicodeMathSymbol{"02A55}{\wedgeonwedge }{\mathbin}{two intersecting logical and}%
+\UnicodeMathSymbol{"02A56}{\veeonvee }{\mathbin}{two intersecting logical or}%
+\UnicodeMathSymbol{"02A57}{\bigslopedvee }{\mathbin}{sloping large or}%
+\UnicodeMathSymbol{"02A58}{\bigslopedwedge }{\mathbin}{sloping large and}%
+\UnicodeMathSymbol{"02A59}{\veeonwedge }{\mathrel}{logical or overlapping logical and}%
+\UnicodeMathSymbol{"02A5A}{\wedgemidvert }{\mathbin}{logical and with middle stem}%
+\UnicodeMathSymbol{"02A5B}{\veemidvert }{\mathbin}{logical or with middle stem}%
+\UnicodeMathSymbol{"02A5C}{\midbarwedge }{\mathbin}{ogical and with horizontal dash}%
+\UnicodeMathSymbol{"02A5D}{\midbarvee }{\mathbin}{logical or with horizontal dash}%
+\UnicodeMathSymbol{"02A5E}{\doublebarwedge }{\mathbin}{logical and with double overbar}%
+\UnicodeMathSymbol{"02A5F}{\wedgebar }{\mathbin}{logical and with underbar}%
+\UnicodeMathSymbol{"02A60}{\wedgedoublebar }{\mathbin}{logical and with double underbar}%
+\UnicodeMathSymbol{"02A61}{\varveebar }{\mathbin}{small vee with underbar}%
+\UnicodeMathSymbol{"02A62}{\doublebarvee }{\mathbin}{logical or with double overbar}%
+\UnicodeMathSymbol{"02A63}{\veedoublebar }{\mathbin}{logical or with double underbar}%
+\UnicodeMathSymbol{"02A64}{\dsub }{\mathbin}{z notation domain antirestriction}%
+\UnicodeMathSymbol{"02A65}{\rsub }{\mathbin}{z notation range antirestriction}%
+\UnicodeMathSymbol{"02A66}{\eqdot }{\mathrel}{equals sign with dot below}%
+\UnicodeMathSymbol{"02A67}{\dotequiv }{\mathrel}{identical with dot above}%
+\UnicodeMathSymbol{"02A68}{\equivVert }{\mathrel}{triple horizontal bar with double vertical stroke}%
+\UnicodeMathSymbol{"02A69}{\equivVvert }{\mathrel}{triple horizontal bar with triple vertical stroke}%
+\UnicodeMathSymbol{"02A6A}{\dotsim }{\mathrel}{tilde operator with dot above}%
+\UnicodeMathSymbol{"02A6B}{\simrdots }{\mathrel}{tilde operator with rising dots}%
+\UnicodeMathSymbol{"02A6C}{\simminussim }{\mathrel}{similar minus similar}%
+\UnicodeMathSymbol{"02A6D}{\congdot }{\mathrel}{congruent with dot above}%
+\UnicodeMathSymbol{"02A6E}{\asteq }{\mathrel}{equals with asterisk}%
+\UnicodeMathSymbol{"02A6F}{\hatapprox }{\mathrel}{almost equal to with circumflex accent}%
+\UnicodeMathSymbol{"02A70}{\approxeqq }{\mathrel}{approximately equal or equal to}%
+\UnicodeMathSymbol{"02A71}{\eqqplus }{\mathbin}{equals sign above plus sign}%
+\UnicodeMathSymbol{"02A72}{\pluseqq }{\mathbin}{plus sign above equals sign}%
+\UnicodeMathSymbol{"02A73}{\eqqsim }{\mathrel}{equals sign above tilde operator}%
+\UnicodeMathSymbol{"02A74}{\Coloneq }{\mathrel}{double colon equal}%
+\UnicodeMathSymbol{"02A75}{\eqeq }{\mathrel}{two consecutive equals signs}%
+\UnicodeMathSymbol{"02A76}{\eqeqeq }{\mathrel}{three consecutive equals signs}%
+\UnicodeMathSymbol{"02A77}{\ddotseq }{\mathrel}{equals sign with two dots above and two dots below}%
+\UnicodeMathSymbol{"02A78}{\equivDD }{\mathrel}{equivalent with four dots above}%
+\UnicodeMathSymbol{"02A79}{\ltcir }{\mathrel}{less-than with circle inside}%
+\UnicodeMathSymbol{"02A7A}{\gtcir }{\mathrel}{greater-than with circle inside}%
+\UnicodeMathSymbol{"02A7B}{\ltquest }{\mathrel}{less-than with question mark above}%
+\UnicodeMathSymbol{"02A7C}{\gtquest }{\mathrel}{greater-than with question mark above}%
+\UnicodeMathSymbol{"02A7D}{\leqslant }{\mathrel}{less-than or slanted equal to}%
+\UnicodeMathSymbol{"02A7E}{\geqslant }{\mathrel}{greater-than or slanted equal to}%
+\UnicodeMathSymbol{"02A7F}{\lesdot }{\mathrel}{less-than or slanted equal to with dot inside}%
+\UnicodeMathSymbol{"02A80}{\gesdot }{\mathrel}{greater-than or slanted equal to with dot inside}%
+\UnicodeMathSymbol{"02A81}{\lesdoto }{\mathrel}{less-than or slanted equal to with dot above}%
+\UnicodeMathSymbol{"02A82}{\gesdoto }{\mathrel}{greater-than or slanted equal to with dot above}%
+\UnicodeMathSymbol{"02A83}{\lesdotor }{\mathrel}{less-than or slanted equal to with dot above right}%
+\UnicodeMathSymbol{"02A84}{\gesdotol }{\mathrel}{greater-than or slanted equal to with dot above left}%
+\UnicodeMathSymbol{"02A85}{\lessapprox }{\mathrel}{less-than or approximate}%
+\UnicodeMathSymbol{"02A86}{\gtrapprox }{\mathrel}{greater-than or approximate}%
+\UnicodeMathSymbol{"02A87}{\lneq }{\mathrel}{less-than and single-line not equal to}%
+\UnicodeMathSymbol{"02A88}{\gneq }{\mathrel}{greater-than and single-line not equal to}%
+\UnicodeMathSymbol{"02A89}{\lnapprox }{\mathrel}{less-than and not approximate}%
+\UnicodeMathSymbol{"02A8A}{\gnapprox }{\mathrel}{greater-than and not approximate}%
+\UnicodeMathSymbol{"02A8B}{\lesseqqgtr }{\mathrel}{less-than above double-line equal above greater-than}%
+\UnicodeMathSymbol{"02A8C}{\gtreqqless }{\mathrel}{greater-than above double-line equal above less-than}%
+\UnicodeMathSymbol{"02A8D}{\lsime }{\mathrel}{less-than above similar or equal}%
+\UnicodeMathSymbol{"02A8E}{\gsime }{\mathrel}{greater-than above similar or equal}%
+\UnicodeMathSymbol{"02A8F}{\lsimg }{\mathrel}{less-than above similar above greater-than}%
+\UnicodeMathSymbol{"02A90}{\gsiml }{\mathrel}{greater-than above similar above less-than}%
+\UnicodeMathSymbol{"02A91}{\lgE }{\mathrel}{less-than above greater-than above double-line equal}%
+\UnicodeMathSymbol{"02A92}{\glE }{\mathrel}{greater-than above less-than above double-line equal}%
+\UnicodeMathSymbol{"02A93}{\lesges }{\mathrel}{less-than above slanted equal above greater-than above slanted equal}%
+\UnicodeMathSymbol{"02A94}{\gesles }{\mathrel}{greater-than above slanted equal above less-than above slanted equal}%
+\UnicodeMathSymbol{"02A95}{\eqslantless }{\mathrel}{slanted equal to or less-than}%
+\UnicodeMathSymbol{"02A96}{\eqslantgtr }{\mathrel}{slanted equal to or greater-than}%
+\UnicodeMathSymbol{"02A97}{\elsdot }{\mathrel}{slanted equal to or less-than with dot inside}%
+\UnicodeMathSymbol{"02A98}{\egsdot }{\mathrel}{slanted equal to or greater-than with dot inside}%
+\UnicodeMathSymbol{"02A99}{\eqqless }{\mathrel}{double-line equal to or less-than}%
+\UnicodeMathSymbol{"02A9A}{\eqqgtr }{\mathrel}{double-line equal to or greater-than}%
+\UnicodeMathSymbol{"02A9B}{\eqqslantless }{\mathrel}{double-line slanted equal to or less-than}%
+\UnicodeMathSymbol{"02A9C}{\eqqslantgtr }{\mathrel}{double-line slanted equal to or greater-than}%
+\UnicodeMathSymbol{"02A9D}{\simless }{\mathrel}{similar or less-than}%
+\UnicodeMathSymbol{"02A9E}{\simgtr }{\mathrel}{similar or greater-than}%
+\UnicodeMathSymbol{"02A9F}{\simlE }{\mathrel}{similar above less-than above equals sign}%
+\UnicodeMathSymbol{"02AA0}{\simgE }{\mathrel}{similar above greater-than above equals sign}%
+\UnicodeMathSymbol{"02AA1}{\Lt }{\mathrel}{double nested less-than}%
+\UnicodeMathSymbol{"02AA2}{\Gt }{\mathrel}{double nested greater-than}%
+\UnicodeMathSymbol{"02AA3}{\partialmeetcontraction }{\mathrel}{double less-than with underbar}%
+\UnicodeMathSymbol{"02AA4}{\glj }{\mathrel}{greater-than overlapping less-than}%
+\UnicodeMathSymbol{"02AA5}{\gla }{\mathrel}{greater-than beside less-than}%
+\UnicodeMathSymbol{"02AA6}{\ltcc }{\mathrel}{less-than closed by curve}%
+\UnicodeMathSymbol{"02AA7}{\gtcc }{\mathrel}{greater-than closed by curve}%
+\UnicodeMathSymbol{"02AA8}{\lescc }{\mathrel}{less-than closed by curve above slanted equal}%
+\UnicodeMathSymbol{"02AA9}{\gescc }{\mathrel}{greater-than closed by curve above slanted equal}%
+\UnicodeMathSymbol{"02AAA}{\smt }{\mathrel}{smaller than}%
+\UnicodeMathSymbol{"02AAB}{\lat }{\mathrel}{larger than}%
+\UnicodeMathSymbol{"02AAC}{\smte }{\mathrel}{smaller than or equal to}%
+\UnicodeMathSymbol{"02AAD}{\late }{\mathrel}{larger than or equal to}%
+\UnicodeMathSymbol{"02AAE}{\bumpeqq }{\mathrel}{equals sign with bumpy above}%
+\UnicodeMathSymbol{"02AAF}{\preceq }{\mathrel}{precedes above single-line equals sign}%
+\UnicodeMathSymbol{"02AB0}{\succeq }{\mathrel}{succeeds above single-line equals sign}%
+\UnicodeMathSymbol{"02AB1}{\precneq }{\mathrel}{precedes above single-line not equal to}%
+\UnicodeMathSymbol{"02AB2}{\succneq }{\mathrel}{succeeds above single-line not equal to}%
+\UnicodeMathSymbol{"02AB3}{\preceqq }{\mathrel}{precedes above equals sign}%
+\UnicodeMathSymbol{"02AB4}{\succeqq }{\mathrel}{succeeds above equals sign}%
+\UnicodeMathSymbol{"02AB5}{\precneqq }{\mathrel}{precedes above not equal to}%
+\UnicodeMathSymbol{"02AB6}{\succneqq }{\mathrel}{succeeds above not equal to}%
+\UnicodeMathSymbol{"02AB7}{\precapprox }{\mathrel}{precedes above almost equal to}%
+\UnicodeMathSymbol{"02AB8}{\succapprox }{\mathrel}{succeeds above almost equal to}%
+\UnicodeMathSymbol{"02AB9}{\precnapprox }{\mathrel}{precedes above not almost equal to}%
+\UnicodeMathSymbol{"02ABA}{\succnapprox }{\mathrel}{succeeds above not almost equal to}%
+\UnicodeMathSymbol{"02ABB}{\Prec }{\mathrel}{double precedes}%
+\UnicodeMathSymbol{"02ABC}{\Succ }{\mathrel}{double succeeds}%
+\UnicodeMathSymbol{"02ABD}{\subsetdot }{\mathrel}{subset with dot}%
+\UnicodeMathSymbol{"02ABE}{\supsetdot }{\mathrel}{superset with dot}%
+\UnicodeMathSymbol{"02ABF}{\subsetplus }{\mathrel}{subset with plus sign below}%
+\UnicodeMathSymbol{"02AC0}{\supsetplus }{\mathrel}{superset with plus sign below}%
+\UnicodeMathSymbol{"02AC1}{\submult }{\mathrel}{subset with multiplication sign below}%
+\UnicodeMathSymbol{"02AC2}{\supmult }{\mathrel}{superset with multiplication sign below}%
+\UnicodeMathSymbol{"02AC3}{\subedot }{\mathrel}{subset of or equal to with dot above}%
+\UnicodeMathSymbol{"02AC4}{\supedot }{\mathrel}{superset of or equal to with dot above}%
+\UnicodeMathSymbol{"02AC5}{\subseteqq }{\mathrel}{subset of above equals sign}%
+\UnicodeMathSymbol{"02AC6}{\supseteqq }{\mathrel}{superset of above equals sign}%
+\UnicodeMathSymbol{"02AC7}{\subsim }{\mathrel}{subset of above tilde operator}%
+\UnicodeMathSymbol{"02AC8}{\supsim }{\mathrel}{superset of above tilde operator}%
+\UnicodeMathSymbol{"02AC9}{\subsetapprox }{\mathrel}{subset of above almost equal to}%
+\UnicodeMathSymbol{"02ACA}{\supsetapprox }{\mathrel}{superset of above almost equal to}%
+\UnicodeMathSymbol{"02ACB}{\subsetneqq }{\mathrel}{subset of above not equal to}%
+\UnicodeMathSymbol{"02ACC}{\supsetneqq }{\mathrel}{superset of above not equal to}%
+\UnicodeMathSymbol{"02ACD}{\lsqhook }{\mathrel}{square left open box operator}%
+\UnicodeMathSymbol{"02ACE}{\rsqhook }{\mathrel}{square right open box operator}%
+\UnicodeMathSymbol{"02ACF}{\csub }{\mathrel}{closed subset}%
+\UnicodeMathSymbol{"02AD0}{\csup }{\mathrel}{closed superset}%
+\UnicodeMathSymbol{"02AD1}{\csube }{\mathrel}{closed subset or equal to}%
+\UnicodeMathSymbol{"02AD2}{\csupe }{\mathrel}{closed superset or equal to}%
+\UnicodeMathSymbol{"02AD3}{\subsup }{\mathrel}{subset above superset}%
+\UnicodeMathSymbol{"02AD4}{\supsub }{\mathrel}{superset above subset}%
+\UnicodeMathSymbol{"02AD5}{\subsub }{\mathrel}{subset above subset}%
+\UnicodeMathSymbol{"02AD6}{\supsup }{\mathrel}{superset above superset}%
+\UnicodeMathSymbol{"02AD7}{\suphsub }{\mathrel}{superset beside subset}%
+\UnicodeMathSymbol{"02AD8}{\supdsub }{\mathrel}{superset beside and joined by dash with subset}%
+\UnicodeMathSymbol{"02AD9}{\forkv }{\mathrel}{element of opening downwards}%
+\UnicodeMathSymbol{"02ADA}{\topfork }{\mathrel}{pitchfork with tee top}%
+\UnicodeMathSymbol{"02ADB}{\mlcp }{\mathrel}{transversal intersection}%
+\UnicodeMathSymbol{"02ADC}{\forks }{\mathrel}{forking}%
+\UnicodeMathSymbol{"02ADD}{\forksnot }{\mathrel}{nonforking}%
+\UnicodeMathSymbol{"02ADE}{\shortlefttack }{\mathrel}{short left tack}%
+\UnicodeMathSymbol{"02ADF}{\shortdowntack }{\mathrel}{short down tack}%
+\UnicodeMathSymbol{"02AE0}{\shortuptack }{\mathrel}{short up tack}%
+\UnicodeMathSymbol{"02AE1}{\perps }{\mathord}{perpendicular with s}%
+\UnicodeMathSymbol{"02AE2}{\vDdash }{\mathrel}{vertical bar triple right turnstile}%
+\UnicodeMathSymbol{"02AE3}{\dashV }{\mathrel}{double vertical bar left turnstile}%
+\UnicodeMathSymbol{"02AE4}{\Dashv }{\mathrel}{vertical bar double left turnstile}%
+\UnicodeMathSymbol{"02AE5}{\DashV }{\mathrel}{double vertical bar double left turnstile}%
+\UnicodeMathSymbol{"02AE6}{\varVdash }{\mathrel}{long dash from left member of double vertical}%
+\UnicodeMathSymbol{"02AE7}{\Barv }{\mathrel}{short down tack with overbar}%
+\UnicodeMathSymbol{"02AE8}{\vBar }{\mathrel}{short up tack with underbar}%
+\UnicodeMathSymbol{"02AE9}{\vBarv }{\mathrel}{short up tack above short down tack}%
+\UnicodeMathSymbol{"02AEA}{\barV }{\mathrel}{double down tack}%
+\UnicodeMathSymbol{"02AEB}{\Vbar }{\mathrel}{double up tack}%
+\UnicodeMathSymbol{"02AEC}{\Not }{\mathrel}{double stroke not sign}%
+\UnicodeMathSymbol{"02AED}{\bNot }{\mathrel}{reversed double stroke not sign}%
+\UnicodeMathSymbol{"02AEE}{\revnmid }{\mathrel}{does not divide with reversed negation slash}%
+\UnicodeMathSymbol{"02AEF}{\cirmid }{\mathrel}{vertical line with circle above}%
+\UnicodeMathSymbol{"02AF0}{\midcir }{\mathrel}{vertical line with circle below}%
+\UnicodeMathSymbol{"02AF1}{\topcir }{\mathord}{down tack with circle below}%
+\UnicodeMathSymbol{"02AF2}{\nhpar }{\mathrel}{parallel with horizontal stroke}%
+\UnicodeMathSymbol{"02AF3}{\parsim }{\mathrel}{parallel with tilde operator}%
+\UnicodeMathSymbol{"02AF4}{\interleave }{\mathbin}{triple vertical bar binary relation}%
+\UnicodeMathSymbol{"02AF5}{\nhVvert }{\mathbin}{triple vertical bar with horizontal stroke}%
+\UnicodeMathSymbol{"02AF6}{\threedotcolon }{\mathbin}{triple colon operator}%
+\UnicodeMathSymbol{"02AF7}{\lllnest }{\mathrel}{stacked very much less-than}%
+\UnicodeMathSymbol{"02AF8}{\gggnest }{\mathrel}{stacked very much greater-than}%
+\UnicodeMathSymbol{"02AF9}{\leqqslant }{\mathrel}{double-line slanted less-than or equal to}%
+\UnicodeMathSymbol{"02AFA}{\geqqslant }{\mathrel}{double-line slanted greater-than or equal to}%
+\UnicodeMathSymbol{"02AFB}{\trslash }{\mathbin}{triple solidus binary relation}%
+\UnicodeMathSymbol{"02AFC}{\biginterleave }{\mathop}{large triple vertical bar operator}%
+\UnicodeMathSymbol{"02AFD}{\sslash }{\mathbin}{double solidus operator}%
+\UnicodeMathSymbol{"02AFE}{\talloblong }{\mathbin}{white vertical bar}%
+\UnicodeMathSymbol{"02AFF}{\bigtalloblong }{\mathop}{n-ary white vertical bar}%
+\UnicodeMathSymbol{"02B12}{\squaretopblack }{\mathord}{square with top half black}%
+\UnicodeMathSymbol{"02B13}{\squarebotblack }{\mathord}{square with bottom half black}%
+\UnicodeMathSymbol{"02B14}{\squareurblack }{\mathord}{square with upper right diagonal half black}%
+\UnicodeMathSymbol{"02B15}{\squarellblack }{\mathord}{square with lower left diagonal half black}%
+\UnicodeMathSymbol{"02B16}{\diamondleftblack }{\mathord}{diamond with left half black}%
+\UnicodeMathSymbol{"02B17}{\diamondrightblack }{\mathord}{diamond with right half black}%
+\UnicodeMathSymbol{"02B18}{\diamondtopblack }{\mathord}{diamond with top half black}%
+\UnicodeMathSymbol{"02B19}{\diamondbotblack }{\mathord}{diamond with bottom half black}%
+\UnicodeMathSymbol{"02B1A}{\dottedsquare }{\mathord}{dotted square}%
+\UnicodeMathSymbol{"02B1B}{\lgblksquare }{\mathord}{black large square}%
+\UnicodeMathSymbol{"02B1C}{\lgwhtsquare }{\mathord}{white large square}%
+\UnicodeMathSymbol{"02B1D}{\vysmblksquare }{\mathord}{black very small square}%
+\UnicodeMathSymbol{"02B1E}{\vysmwhtsquare }{\mathord}{white very small square}%
+\UnicodeMathSymbol{"02B1F}{\pentagonblack }{\mathord}{black pentagon}%
+\UnicodeMathSymbol{"02B20}{\pentagon }{\mathord}{white pentagon}%
+\UnicodeMathSymbol{"02B21}{\varhexagon }{\mathord}{white hexagon}%
+\UnicodeMathSymbol{"02B22}{\varhexagonblack }{\mathord}{black hexagon}%
+\UnicodeMathSymbol{"02B23}{\hexagonblack }{\mathord}{horizontal black hexagon}%
+\UnicodeMathSymbol{"02B24}{\lgblkcircle }{\mathord}{black large circle}%
+\UnicodeMathSymbol{"02B25}{\mdblkdiamond }{\mathord}{black medium diamond}%
+\UnicodeMathSymbol{"02B26}{\mdwhtdiamond }{\mathord}{white medium diamond}%
+\UnicodeMathSymbol{"02B27}{\mdblklozenge }{\mathord}{black medium lozenge}%
+\UnicodeMathSymbol{"02B28}{\mdwhtlozenge }{\mathord}{white medium lozenge}%
+\UnicodeMathSymbol{"02B29}{\smblkdiamond }{\mathord}{black small diamond}%
+\UnicodeMathSymbol{"02B2A}{\smblklozenge }{\mathord}{black small lozenge}%
+\UnicodeMathSymbol{"02B2B}{\smwhtlozenge }{\mathord}{white small lozenge}%
+\UnicodeMathSymbol{"02B2C}{\blkhorzoval }{\mathord}{black horizontal ellipse}%
+\UnicodeMathSymbol{"02B2D}{\whthorzoval }{\mathord}{white horizontal ellipse}%
+\UnicodeMathSymbol{"02B2E}{\blkvertoval }{\mathord}{black vertical ellipse}%
+\UnicodeMathSymbol{"02B2F}{\whtvertoval }{\mathord}{white vertical ellipse}%
+\UnicodeMathSymbol{"02B30}{\circleonleftarrow }{\mathrel}{left arrow with small circle}%
+\UnicodeMathSymbol{"02B31}{\leftthreearrows }{\mathrel}{three leftwards arrows}%
+\UnicodeMathSymbol{"02B32}{\leftarrowonoplus }{\mathrel}{left arrow with circled plus}%
+\UnicodeMathSymbol{"02B33}{\longleftsquigarrow }{\mathrel}{long leftwards squiggle arrow}%
+\UnicodeMathSymbol{"02B34}{\nvtwoheadleftarrow }{\mathrel}{leftwards two-headed arrow with vertical stroke}%
+\UnicodeMathSymbol{"02B35}{\nVtwoheadleftarrow }{\mathrel}{leftwards two-headed arrow with double vertical stroke}%
+\UnicodeMathSymbol{"02B36}{\twoheadmapsfrom }{\mathrel}{leftwards two-headed arrow from bar}%
+\UnicodeMathSymbol{"02B37}{\twoheadleftdbkarrow }{\mathrel}{leftwards two-headed triple-dash arrow}%
+\UnicodeMathSymbol{"02B38}{\leftdotarrow }{\mathrel}{leftwards arrow with dotted stem}%
+\UnicodeMathSymbol{"02B39}{\nvleftarrowtail }{\mathrel}{leftwards arrow with tail with vertical stroke}%
+\UnicodeMathSymbol{"02B3A}{\nVleftarrowtail }{\mathrel}{leftwards arrow with tail with double vertical stroke}%
+\UnicodeMathSymbol{"02B3B}{\twoheadleftarrowtail }{\mathrel}{leftwards two-headed arrow with tail}%
+\UnicodeMathSymbol{"02B3C}{\nvtwoheadleftarrowtail }{\mathrel}{leftwards two-headed arrow with tail with vertical stroke}%
+\UnicodeMathSymbol{"02B3D}{\nVtwoheadleftarrowtail }{\mathrel}{leftwards two-headed arrow with tail with double vertical stroke}%
+\UnicodeMathSymbol{"02B3E}{\leftarrowx }{\mathrel}{leftwards arrow through x}%
+\UnicodeMathSymbol{"02B3F}{\leftcurvedarrow }{\mathrel}{wave arrow pointing directly left}%
+\UnicodeMathSymbol{"02B40}{\equalleftarrow }{\mathrel}{equals sign above leftwards arrow}%
+\UnicodeMathSymbol{"02B41}{\bsimilarleftarrow }{\mathrel}{reverse tilde operator above leftwards arrow}%
+\UnicodeMathSymbol{"02B42}{\leftarrowbackapprox }{\mathrel}{leftwards arrow above reverse almost equal to}%
+\UnicodeMathSymbol{"02B43}{\rightarrowgtr }{\mathrel}{rightwards arrow through less-than}%
+\UnicodeMathSymbol{"02B44}{\rightarrowsupset }{\mathrel}{rightwards arrow through subset}%
+\UnicodeMathSymbol{"02B45}{\LLeftarrow }{\mathrel}{leftwards quadruple arrow}%
+\UnicodeMathSymbol{"02B46}{\RRightarrow }{\mathrel}{rightwards quadruple arrow}%
+\UnicodeMathSymbol{"02B47}{\bsimilarrightarrow }{\mathrel}{reverse tilde operator above rightwards arrow}%
+\UnicodeMathSymbol{"02B48}{\rightarrowbackapprox }{\mathrel}{rightwards arrow above reverse almost equal to}%
+\UnicodeMathSymbol{"02B49}{\similarleftarrow }{\mathrel}{tilde operator above leftwards arrow}%
+\UnicodeMathSymbol{"02B4A}{\leftarrowapprox }{\mathrel}{leftwards arrow above almost equal to}%
+\UnicodeMathSymbol{"02B4B}{\leftarrowbsimilar }{\mathrel}{leftwards arrow above reverse tilde operator}%
+\UnicodeMathSymbol{"02B4C}{\rightarrowbsimilar }{\mathrel}{righttwards arrow above reverse tilde operator}%
+\UnicodeMathSymbol{"02B50}{\medwhitestar }{\mathord}{white medium star}%
+\UnicodeMathSymbol{"02B51}{\medblackstar }{\mathord}{black medium star}%
+\UnicodeMathSymbol{"02B52}{\smwhitestar }{\mathord}{white small star}%
+\UnicodeMathSymbol{"02B53}{\rightpentagonblack }{\mathord}{black right-pointing pentagon}%
+\UnicodeMathSymbol{"02B54}{\rightpentagon }{\mathord}{white right-pointing pentagon}%
+\UnicodeMathSymbol{"03012}{\postalmark }{\mathord}{postal mark}%
+\UnicodeMathSymbol{"03014}{\lbrbrak }{\mathopen}{left broken bracket}%
+\UnicodeMathSymbol{"03015}{\rbrbrak }{\mathclose}{right broken bracket}%
+\UnicodeMathSymbol{"03018}{\Lbrbrak }{\mathopen}{left white tortoise shell bracket}%
+\UnicodeMathSymbol{"03019}{\Rbrbrak }{\mathclose}{right white tortoise shell bracket}%
+\UnicodeMathSymbol{"03030}{\hzigzag }{\mathord}{zigzag}%
+\UnicodeMathSymbol{"0306E}{\hiraganano }{\mathord}{hiragana letter no}%
+\UnicodeMathSymbol{"1D400}{\mbfA }{\mathalpha}{mathematical bold capital a}%
+\UnicodeMathSymbol{"1D401}{\mbfB }{\mathalpha}{mathematical bold capital b}%
+\UnicodeMathSymbol{"1D402}{\mbfC }{\mathalpha}{mathematical bold capital c}%
+\UnicodeMathSymbol{"1D403}{\mbfD }{\mathalpha}{mathematical bold capital d}%
+\UnicodeMathSymbol{"1D404}{\mbfE }{\mathalpha}{mathematical bold capital e}%
+\UnicodeMathSymbol{"1D405}{\mbfF }{\mathalpha}{mathematical bold capital f}%
+\UnicodeMathSymbol{"1D406}{\mbfG }{\mathalpha}{mathematical bold capital g}%
+\UnicodeMathSymbol{"1D407}{\mbfH }{\mathalpha}{mathematical bold capital h}%
+\UnicodeMathSymbol{"1D408}{\mbfI }{\mathalpha}{mathematical bold capital i}%
+\UnicodeMathSymbol{"1D409}{\mbfJ }{\mathalpha}{mathematical bold capital j}%
+\UnicodeMathSymbol{"1D40A}{\mbfK }{\mathalpha}{mathematical bold capital k}%
+\UnicodeMathSymbol{"1D40B}{\mbfL }{\mathalpha}{mathematical bold capital l}%
+\UnicodeMathSymbol{"1D40C}{\mbfM }{\mathalpha}{mathematical bold capital m}%
+\UnicodeMathSymbol{"1D40D}{\mbfN }{\mathalpha}{mathematical bold capital n}%
+\UnicodeMathSymbol{"1D40E}{\mbfO }{\mathalpha}{mathematical bold capital o}%
+\UnicodeMathSymbol{"1D40F}{\mbfP }{\mathalpha}{mathematical bold capital p}%
+\UnicodeMathSymbol{"1D410}{\mbfQ }{\mathalpha}{mathematical bold capital q}%
+\UnicodeMathSymbol{"1D411}{\mbfR }{\mathalpha}{mathematical bold capital r}%
+\UnicodeMathSymbol{"1D412}{\mbfS }{\mathalpha}{mathematical bold capital s}%
+\UnicodeMathSymbol{"1D413}{\mbfT }{\mathalpha}{mathematical bold capital t}%
+\UnicodeMathSymbol{"1D414}{\mbfU }{\mathalpha}{mathematical bold capital u}%
+\UnicodeMathSymbol{"1D415}{\mbfV }{\mathalpha}{mathematical bold capital v}%
+\UnicodeMathSymbol{"1D416}{\mbfW }{\mathalpha}{mathematical bold capital w}%
+\UnicodeMathSymbol{"1D417}{\mbfX }{\mathalpha}{mathematical bold capital x}%
+\UnicodeMathSymbol{"1D418}{\mbfY }{\mathalpha}{mathematical bold capital y}%
+\UnicodeMathSymbol{"1D419}{\mbfZ }{\mathalpha}{mathematical bold capital z}%
+\UnicodeMathSymbol{"1D41A}{\mbfa }{\mathalpha}{mathematical bold small a}%
+\UnicodeMathSymbol{"1D41B}{\mbfb }{\mathalpha}{mathematical bold small b}%
+\UnicodeMathSymbol{"1D41C}{\mbfc }{\mathalpha}{mathematical bold small c}%
+\UnicodeMathSymbol{"1D41D}{\mbfd }{\mathalpha}{mathematical bold small d}%
+\UnicodeMathSymbol{"1D41E}{\mbfe }{\mathalpha}{mathematical bold small e}%
+\UnicodeMathSymbol{"1D41F}{\mbff }{\mathalpha}{mathematical bold small f}%
+\UnicodeMathSymbol{"1D420}{\mbfg }{\mathalpha}{mathematical bold small g}%
+\UnicodeMathSymbol{"1D421}{\mbfh }{\mathalpha}{mathematical bold small h}%
+\UnicodeMathSymbol{"1D422}{\mbfi }{\mathalpha}{mathematical bold small i}%
+\UnicodeMathSymbol{"1D423}{\mbfj }{\mathalpha}{mathematical bold small j}%
+\UnicodeMathSymbol{"1D424}{\mbfk }{\mathalpha}{mathematical bold small k}%
+\UnicodeMathSymbol{"1D425}{\mbfl }{\mathalpha}{mathematical bold small l}%
+\UnicodeMathSymbol{"1D426}{\mbfm }{\mathalpha}{mathematical bold small m}%
+\UnicodeMathSymbol{"1D427}{\mbfn }{\mathalpha}{mathematical bold small n}%
+\UnicodeMathSymbol{"1D428}{\mbfo }{\mathalpha}{mathematical bold small o}%
+\UnicodeMathSymbol{"1D429}{\mbfp }{\mathalpha}{mathematical bold small p}%
+\UnicodeMathSymbol{"1D42A}{\mbfq }{\mathalpha}{mathematical bold small q}%
+\UnicodeMathSymbol{"1D42B}{\mbfr }{\mathalpha}{mathematical bold small r}%
+\UnicodeMathSymbol{"1D42C}{\mbfs }{\mathalpha}{mathematical bold small s}%
+\UnicodeMathSymbol{"1D42D}{\mbft }{\mathalpha}{mathematical bold small t}%
+\UnicodeMathSymbol{"1D42E}{\mbfu }{\mathalpha}{mathematical bold small u}%
+\UnicodeMathSymbol{"1D42F}{\mbfv }{\mathalpha}{mathematical bold small v}%
+\UnicodeMathSymbol{"1D430}{\mbfw }{\mathalpha}{mathematical bold small w}%
+\UnicodeMathSymbol{"1D431}{\mbfx }{\mathalpha}{mathematical bold small x}%
+\UnicodeMathSymbol{"1D432}{\mbfy }{\mathalpha}{mathematical bold small y}%
+\UnicodeMathSymbol{"1D433}{\mbfz }{\mathalpha}{mathematical bold small z}%
+\UnicodeMathSymbol{"1D434}{\mitA }{\mathalpha}{mathematical italic capital a`25}%
+\UnicodeMathSymbol{"1D435}{\mitB }{\mathalpha}{mathematical italic capital b}%
+\UnicodeMathSymbol{"1D436}{\mitC }{\mathalpha}{mathematical italic capital c}%
+\UnicodeMathSymbol{"1D437}{\mitD }{\mathalpha}{mathematical italic capital d}%
+\UnicodeMathSymbol{"1D438}{\mitE }{\mathalpha}{mathematical italic capital e}%
+\UnicodeMathSymbol{"1D439}{\mitF }{\mathalpha}{mathematical italic capital f}%
+\UnicodeMathSymbol{"1D43A}{\mitG }{\mathalpha}{mathematical italic capital g}%
+\UnicodeMathSymbol{"1D43B}{\mitH }{\mathalpha}{mathematical italic capital h}%
+\UnicodeMathSymbol{"1D43C}{\mitI }{\mathalpha}{mathematical italic capital i}%
+\UnicodeMathSymbol{"1D43D}{\mitJ }{\mathalpha}{mathematical italic capital j}%
+\UnicodeMathSymbol{"1D43E}{\mitK }{\mathalpha}{mathematical italic capital k}%
+\UnicodeMathSymbol{"1D43F}{\mitL }{\mathalpha}{mathematical italic capital l}%
+\UnicodeMathSymbol{"1D440}{\mitM }{\mathalpha}{mathematical italic capital m}%
+\UnicodeMathSymbol{"1D441}{\mitN }{\mathalpha}{mathematical italic capital n}%
+\UnicodeMathSymbol{"1D442}{\mitO }{\mathalpha}{mathematical italic capital o}%
+\UnicodeMathSymbol{"1D443}{\mitP }{\mathalpha}{mathematical italic capital p}%
+\UnicodeMathSymbol{"1D444}{\mitQ }{\mathalpha}{mathematical italic capital q}%
+\UnicodeMathSymbol{"1D445}{\mitR }{\mathalpha}{mathematical italic capital r}%
+\UnicodeMathSymbol{"1D446}{\mitS }{\mathalpha}{mathematical italic capital s}%
+\UnicodeMathSymbol{"1D447}{\mitT }{\mathalpha}{mathematical italic capital t}%
+\UnicodeMathSymbol{"1D448}{\mitU }{\mathalpha}{mathematical italic capital u}%
+\UnicodeMathSymbol{"1D449}{\mitV }{\mathalpha}{mathematical italic capital v}%
+\UnicodeMathSymbol{"1D44A}{\mitW }{\mathalpha}{mathematical italic capital w}%
+\UnicodeMathSymbol{"1D44B}{\mitX }{\mathalpha}{mathematical italic capital x}%
+\UnicodeMathSymbol{"1D44C}{\mitY }{\mathalpha}{mathematical italic capital y}%
+\UnicodeMathSymbol{"1D44D}{\mitZ }{\mathalpha}{mathematical italic capital z}%
+\UnicodeMathSymbol{"1D44E}{\mita }{\mathalpha}{mathematical italic small a}%
+\UnicodeMathSymbol{"1D44F}{\mitb }{\mathalpha}{mathematical italic small b}%
+\UnicodeMathSymbol{"1D450}{\mitc }{\mathalpha}{mathematical italic small c}%
+\UnicodeMathSymbol{"1D451}{\mitd }{\mathalpha}{mathematical italic small d}%
+\UnicodeMathSymbol{"1D452}{\mite }{\mathalpha}{mathematical italic small e}%
+\UnicodeMathSymbol{"1D453}{\mitf }{\mathalpha}{mathematical italic small f}%
+\UnicodeMathSymbol{"1D454}{\mitg }{\mathalpha}{mathematical italic small g}%
+\UnicodeMathSymbol{"1D456}{\miti }{\mathalpha}{mathematical italic small i}%
+\UnicodeMathSymbol{"1D457}{\mitj }{\mathalpha}{mathematical italic small j}%
+\UnicodeMathSymbol{"1D458}{\mitk }{\mathalpha}{mathematical italic small k}%
+\UnicodeMathSymbol{"1D459}{\mitl }{\mathalpha}{mathematical italic small l}%
+\UnicodeMathSymbol{"1D45A}{\mitm }{\mathalpha}{mathematical italic small m}%
+\UnicodeMathSymbol{"1D45B}{\mitn }{\mathalpha}{mathematical italic small n}%
+\UnicodeMathSymbol{"1D45C}{\mito }{\mathalpha}{mathematical italic small o}%
+\UnicodeMathSymbol{"1D45D}{\mitp }{\mathalpha}{mathematical italic small p}%
+\UnicodeMathSymbol{"1D45E}{\mitq }{\mathalpha}{mathematical italic small q}%
+\UnicodeMathSymbol{"1D45F}{\mitr }{\mathalpha}{mathematical italic small r}%
+\UnicodeMathSymbol{"1D460}{\mits }{\mathalpha}{mathematical italic small s}%
+\UnicodeMathSymbol{"1D461}{\mitt }{\mathalpha}{mathematical italic small t}%
+\UnicodeMathSymbol{"1D462}{\mitu }{\mathalpha}{mathematical italic small u}%
+\UnicodeMathSymbol{"1D463}{\mitv }{\mathalpha}{mathematical italic small v}%
+\UnicodeMathSymbol{"1D464}{\mitw }{\mathalpha}{mathematical italic small w}%
+\UnicodeMathSymbol{"1D465}{\mitx }{\mathalpha}{mathematical italic small x}%
+\UnicodeMathSymbol{"1D466}{\mity }{\mathalpha}{mathematical italic small y}%
+\UnicodeMathSymbol{"1D467}{\mitz }{\mathalpha}{mathematical italic small z}%
+\UnicodeMathSymbol{"1D468}{\mbfitA }{\mathalpha}{mathematical bold italic capital a}%
+\UnicodeMathSymbol{"1D469}{\mbfitB }{\mathalpha}{mathematical bold italic capital b}%
+\UnicodeMathSymbol{"1D46A}{\mbfitC }{\mathalpha}{mathematical bold italic capital c}%
+\UnicodeMathSymbol{"1D46B}{\mbfitD }{\mathalpha}{mathematical bold italic capital d}%
+\UnicodeMathSymbol{"1D46C}{\mbfitE }{\mathalpha}{mathematical bold italic capital e}%
+\UnicodeMathSymbol{"1D46D}{\mbfitF }{\mathalpha}{mathematical bold italic capital f}%
+\UnicodeMathSymbol{"1D46E}{\mbfitG }{\mathalpha}{mathematical bold italic capital g}%
+\UnicodeMathSymbol{"1D46F}{\mbfitH }{\mathalpha}{mathematical bold italic capital h}%
+\UnicodeMathSymbol{"1D470}{\mbfitI }{\mathalpha}{mathematical bold italic capital i}%
+\UnicodeMathSymbol{"1D471}{\mbfitJ }{\mathalpha}{mathematical bold italic capital j}%
+\UnicodeMathSymbol{"1D472}{\mbfitK }{\mathalpha}{mathematical bold italic capital k}%
+\UnicodeMathSymbol{"1D473}{\mbfitL }{\mathalpha}{mathematical bold italic capital l}%
+\UnicodeMathSymbol{"1D474}{\mbfitM }{\mathalpha}{mathematical bold italic capital m}%
+\UnicodeMathSymbol{"1D475}{\mbfitN }{\mathalpha}{mathematical bold italic capital n}%
+\UnicodeMathSymbol{"1D476}{\mbfitO }{\mathalpha}{mathematical bold italic capital o}%
+\UnicodeMathSymbol{"1D477}{\mbfitP }{\mathalpha}{mathematical bold italic capital p}%
+\UnicodeMathSymbol{"1D478}{\mbfitQ }{\mathalpha}{mathematical bold italic capital q}%
+\UnicodeMathSymbol{"1D479}{\mbfitR }{\mathalpha}{mathematical bold italic capital r}%
+\UnicodeMathSymbol{"1D47A}{\mbfitS }{\mathalpha}{mathematical bold italic capital s}%
+\UnicodeMathSymbol{"1D47B}{\mbfitT }{\mathalpha}{mathematical bold italic capital t}%
+\UnicodeMathSymbol{"1D47C}{\mbfitU }{\mathalpha}{mathematical bold italic capital u}%
+\UnicodeMathSymbol{"1D47D}{\mbfitV }{\mathalpha}{mathematical bold italic capital v}%
+\UnicodeMathSymbol{"1D47E}{\mbfitW }{\mathalpha}{mathematical bold italic capital w}%
+\UnicodeMathSymbol{"1D47F}{\mbfitX }{\mathalpha}{mathematical bold italic capital x}%
+\UnicodeMathSymbol{"1D480}{\mbfitY }{\mathalpha}{mathematical bold italic capital y}%
+\UnicodeMathSymbol{"1D481}{\mbfitZ }{\mathalpha}{mathematical bold italic capital z}%
+\UnicodeMathSymbol{"1D482}{\mbfita }{\mathalpha}{mathematical bold italic small a}%
+\UnicodeMathSymbol{"1D483}{\mbfitb }{\mathalpha}{mathematical bold italic small b}%
+\UnicodeMathSymbol{"1D484}{\mbfitc }{\mathalpha}{mathematical bold italic small c}%
+\UnicodeMathSymbol{"1D485}{\mbfitd }{\mathalpha}{mathematical bold italic small d}%
+\UnicodeMathSymbol{"1D486}{\mbfite }{\mathalpha}{mathematical bold italic small e}%
+\UnicodeMathSymbol{"1D487}{\mbfitf }{\mathalpha}{mathematical bold italic small f}%
+\UnicodeMathSymbol{"1D488}{\mbfitg }{\mathalpha}{mathematical bold italic small g}%
+\UnicodeMathSymbol{"1D489}{\mbfith }{\mathalpha}{mathematical bold italic small h}%
+\UnicodeMathSymbol{"1D48A}{\mbfiti }{\mathalpha}{mathematical bold italic small i}%
+\UnicodeMathSymbol{"1D48B}{\mbfitj }{\mathalpha}{mathematical bold italic small j}%
+\UnicodeMathSymbol{"1D48C}{\mbfitk }{\mathalpha}{mathematical bold italic small k}%
+\UnicodeMathSymbol{"1D48D}{\mbfitl }{\mathalpha}{mathematical bold italic small l}%
+\UnicodeMathSymbol{"1D48E}{\mbfitm }{\mathalpha}{mathematical bold italic small m}%
+\UnicodeMathSymbol{"1D48F}{\mbfitn }{\mathalpha}{mathematical bold italic small n}%
+\UnicodeMathSymbol{"1D490}{\mbfito }{\mathalpha}{mathematical bold italic small o}%
+\UnicodeMathSymbol{"1D491}{\mbfitp }{\mathalpha}{mathematical bold italic small p}%
+\UnicodeMathSymbol{"1D492}{\mbfitq }{\mathalpha}{mathematical bold italic small q}%
+\UnicodeMathSymbol{"1D493}{\mbfitr }{\mathalpha}{mathematical bold italic small r}%
+\UnicodeMathSymbol{"1D494}{\mbfits }{\mathalpha}{mathematical bold italic small s}%
+\UnicodeMathSymbol{"1D495}{\mbfitt }{\mathalpha}{mathematical bold italic small t}%
+\UnicodeMathSymbol{"1D496}{\mbfitu }{\mathalpha}{mathematical bold italic small u}%
+\UnicodeMathSymbol{"1D497}{\mbfitv }{\mathalpha}{mathematical bold italic small v}%
+\UnicodeMathSymbol{"1D498}{\mbfitw }{\mathalpha}{mathematical bold italic small w}%
+\UnicodeMathSymbol{"1D499}{\mbfitx }{\mathalpha}{mathematical bold italic small x}%
+\UnicodeMathSymbol{"1D49A}{\mbfity }{\mathalpha}{mathematical bold italic small y}%
+\UnicodeMathSymbol{"1D49B}{\mbfitz }{\mathalpha}{mathematical bold italic small z}%
+\UnicodeMathSymbol{"1D49C}{\mscrA }{\mathalpha}{mathematical script capital a}%
+\UnicodeMathSymbol{"1D49E}{\mscrC }{\mathalpha}{mathematical script capital c}%
+\UnicodeMathSymbol{"1D49F}{\mscrD }{\mathalpha}{mathematical script capital d}%
+\UnicodeMathSymbol{"1D4A2}{\mscrG }{\mathalpha}{mathematical script capital g}%
+\UnicodeMathSymbol{"1D4A5}{\mscrJ }{\mathalpha}{mathematical script capital j}%
+\UnicodeMathSymbol{"1D4A6}{\mscrK }{\mathalpha}{mathematical script capital k}%
+\UnicodeMathSymbol{"1D4A9}{\mscrN }{\mathalpha}{mathematical script capital n}%
+\UnicodeMathSymbol{"1D4AA}{\mscrO }{\mathalpha}{mathematical script capital o}%
+\UnicodeMathSymbol{"1D4AB}{\mscrP }{\mathalpha}{mathematical script capital p}%
+\UnicodeMathSymbol{"1D4AC}{\mscrQ }{\mathalpha}{mathematical script capital q}%
+\UnicodeMathSymbol{"1D4AE}{\mscrS }{\mathalpha}{mathematical script capital s}%
+\UnicodeMathSymbol{"1D4AF}{\mscrT }{\mathalpha}{mathematical script capital t}%
+\UnicodeMathSymbol{"1D4B0}{\mscrU }{\mathalpha}{mathematical script capital u}%
+\UnicodeMathSymbol{"1D4B1}{\mscrV }{\mathalpha}{mathematical script capital v}%
+\UnicodeMathSymbol{"1D4B2}{\mscrW }{\mathalpha}{mathematical script capital w}%
+\UnicodeMathSymbol{"1D4B3}{\mscrX }{\mathalpha}{mathematical script capital x}%
+\UnicodeMathSymbol{"1D4B4}{\mscrY }{\mathalpha}{mathematical script capital y}%
+\UnicodeMathSymbol{"1D4B5}{\mscrZ }{\mathalpha}{mathematical script capital z}%
+\UnicodeMathSymbol{"1D4B6}{\mscra }{\mathalpha}{mathematical script small a}%
+\UnicodeMathSymbol{"1D4B7}{\mscrb }{\mathalpha}{mathematical script small b}%
+\UnicodeMathSymbol{"1D4B8}{\mscrc }{\mathalpha}{mathematical script small c}%
+\UnicodeMathSymbol{"1D4B9}{\mscrd }{\mathalpha}{mathematical script small d}%
+\UnicodeMathSymbol{"1D4BB}{\mscrf }{\mathalpha}{mathematical script small f}%
+\UnicodeMathSymbol{"1D4BD}{\mscrh }{\mathalpha}{mathematical script small h}%
+\UnicodeMathSymbol{"1D4BE}{\mscri }{\mathalpha}{mathematical script small i}%
+\UnicodeMathSymbol{"1D4BF}{\mscrj }{\mathalpha}{mathematical script small j}%
+\UnicodeMathSymbol{"1D4C0}{\mscrk }{\mathalpha}{mathematical script small k}%
+\UnicodeMathSymbol{"1D4C1}{\mscrl }{\mathalpha}{mathematical script small l}%
+\UnicodeMathSymbol{"1D4C2}{\mscrm }{\mathalpha}{mathematical script small m}%
+\UnicodeMathSymbol{"1D4C3}{\mscrn }{\mathalpha}{mathematical script small n}%
+\UnicodeMathSymbol{"1D4C5}{\mscrp }{\mathalpha}{mathematical script small p}%
+\UnicodeMathSymbol{"1D4C6}{\mscrq }{\mathalpha}{mathematical script small q}%
+\UnicodeMathSymbol{"1D4C7}{\mscrr }{\mathalpha}{mathematical script small r}%
+\UnicodeMathSymbol{"1D4C8}{\mscrs }{\mathalpha}{mathematical script small s}%
+\UnicodeMathSymbol{"1D4C9}{\mscrt }{\mathalpha}{mathematical script small t}%
+\UnicodeMathSymbol{"1D4CA}{\mscru }{\mathalpha}{mathematical script small u}%
+\UnicodeMathSymbol{"1D4CB}{\mscrv }{\mathalpha}{mathematical script small v}%
+\UnicodeMathSymbol{"1D4CC}{\mscrw }{\mathalpha}{mathematical script small w}%
+\UnicodeMathSymbol{"1D4CD}{\mscrx }{\mathalpha}{mathematical script small x}%
+\UnicodeMathSymbol{"1D4CE}{\mscry }{\mathalpha}{mathematical script small y}%
+\UnicodeMathSymbol{"1D4CF}{\mscrz }{\mathalpha}{mathematical script small z}%
+\UnicodeMathSymbol{"1D4D0}{\mbfscrA }{\mathalpha}{mathematical bold script capital a}%
+\UnicodeMathSymbol{"1D4D1}{\mbfscrB }{\mathalpha}{mathematical bold script capital b}%
+\UnicodeMathSymbol{"1D4D2}{\mbfscrC }{\mathalpha}{mathematical bold script capital c}%
+\UnicodeMathSymbol{"1D4D3}{\mbfscrD }{\mathalpha}{mathematical bold script capital d}%
+\UnicodeMathSymbol{"1D4D4}{\mbfscrE }{\mathalpha}{mathematical bold script capital e}%
+\UnicodeMathSymbol{"1D4D5}{\mbfscrF }{\mathalpha}{mathematical bold script capital f}%
+\UnicodeMathSymbol{"1D4D6}{\mbfscrG }{\mathalpha}{mathematical bold script capital g}%
+\UnicodeMathSymbol{"1D4D7}{\mbfscrH }{\mathalpha}{mathematical bold script capital h}%
+\UnicodeMathSymbol{"1D4D8}{\mbfscrI }{\mathalpha}{mathematical bold script capital i}%
+\UnicodeMathSymbol{"1D4D9}{\mbfscrJ }{\mathalpha}{mathematical bold script capital j}%
+\UnicodeMathSymbol{"1D4DA}{\mbfscrK }{\mathalpha}{mathematical bold script capital k}%
+\UnicodeMathSymbol{"1D4DB}{\mbfscrL }{\mathalpha}{mathematical bold script capital l}%
+\UnicodeMathSymbol{"1D4DC}{\mbfscrM }{\mathalpha}{mathematical bold script capital m}%
+\UnicodeMathSymbol{"1D4DD}{\mbfscrN }{\mathalpha}{mathematical bold script capital n}%
+\UnicodeMathSymbol{"1D4DE}{\mbfscrO }{\mathalpha}{mathematical bold script capital o}%
+\UnicodeMathSymbol{"1D4DF}{\mbfscrP }{\mathalpha}{mathematical bold script capital p}%
+\UnicodeMathSymbol{"1D4E0}{\mbfscrQ }{\mathalpha}{mathematical bold script capital q}%
+\UnicodeMathSymbol{"1D4E1}{\mbfscrR }{\mathalpha}{mathematical bold script capital r}%
+\UnicodeMathSymbol{"1D4E2}{\mbfscrS }{\mathalpha}{mathematical bold script capital s}%
+\UnicodeMathSymbol{"1D4E3}{\mbfscrT }{\mathalpha}{mathematical bold script capital t}%
+\UnicodeMathSymbol{"1D4E4}{\mbfscrU }{\mathalpha}{mathematical bold script capital u}%
+\UnicodeMathSymbol{"1D4E5}{\mbfscrV }{\mathalpha}{mathematical bold script capital v}%
+\UnicodeMathSymbol{"1D4E6}{\mbfscrW }{\mathalpha}{mathematical bold script capital w}%
+\UnicodeMathSymbol{"1D4E7}{\mbfscrX }{\mathalpha}{mathematical bold script capital x}%
+\UnicodeMathSymbol{"1D4E8}{\mbfscrY }{\mathalpha}{mathematical bold script capital y}%
+\UnicodeMathSymbol{"1D4E9}{\mbfscrZ }{\mathalpha}{mathematical bold script capital z}%
+\UnicodeMathSymbol{"1D4EA}{\mbfscra }{\mathalpha}{mathematical bold script small a}%
+\UnicodeMathSymbol{"1D4EB}{\mbfscrb }{\mathalpha}{mathematical bold script small b}%
+\UnicodeMathSymbol{"1D4EC}{\mbfscrc }{\mathalpha}{mathematical bold script small c}%
+\UnicodeMathSymbol{"1D4ED}{\mbfscrd }{\mathalpha}{mathematical bold script small d}%
+\UnicodeMathSymbol{"1D4EE}{\mbfscre }{\mathalpha}{mathematical bold script small e}%
+\UnicodeMathSymbol{"1D4EF}{\mbfscrf }{\mathalpha}{mathematical bold script small f}%
+\UnicodeMathSymbol{"1D4F0}{\mbfscrg }{\mathalpha}{mathematical bold script small g}%
+\UnicodeMathSymbol{"1D4F1}{\mbfscrh }{\mathalpha}{mathematical bold script small h}%
+\UnicodeMathSymbol{"1D4F2}{\mbfscri }{\mathalpha}{mathematical bold script small i}%
+\UnicodeMathSymbol{"1D4F3}{\mbfscrj }{\mathalpha}{mathematical bold script small j}%
+\UnicodeMathSymbol{"1D4F4}{\mbfscrk }{\mathalpha}{mathematical bold script small k}%
+\UnicodeMathSymbol{"1D4F5}{\mbfscrl }{\mathalpha}{mathematical bold script small l}%
+\UnicodeMathSymbol{"1D4F6}{\mbfscrm }{\mathalpha}{mathematical bold script small m}%
+\UnicodeMathSymbol{"1D4F7}{\mbfscrn }{\mathalpha}{mathematical bold script small n}%
+\UnicodeMathSymbol{"1D4F8}{\mbfscro }{\mathalpha}{mathematical bold script small o}%
+\UnicodeMathSymbol{"1D4F9}{\mbfscrp }{\mathalpha}{mathematical bold script small p}%
+\UnicodeMathSymbol{"1D4FA}{\mbfscrq }{\mathalpha}{mathematical bold script small q}%
+\UnicodeMathSymbol{"1D4FB}{\mbfscrr }{\mathalpha}{mathematical bold script small r}%
+\UnicodeMathSymbol{"1D4FC}{\mbfscrs }{\mathalpha}{mathematical bold script small s}%
+\UnicodeMathSymbol{"1D4FD}{\mbfscrt }{\mathalpha}{mathematical bold script small t}%
+\UnicodeMathSymbol{"1D4FE}{\mbfscru }{\mathalpha}{mathematical bold script small u}%
+\UnicodeMathSymbol{"1D4FF}{\mbfscrv }{\mathalpha}{mathematical bold script small v}%
+\UnicodeMathSymbol{"1D500}{\mbfscrw }{\mathalpha}{mathematical bold script small w}%
+\UnicodeMathSymbol{"1D501}{\mbfscrx }{\mathalpha}{mathematical bold script small x}%
+\UnicodeMathSymbol{"1D502}{\mbfscry }{\mathalpha}{mathematical bold script small y}%
+\UnicodeMathSymbol{"1D503}{\mbfscrz }{\mathalpha}{mathematical bold script small z}%
+\UnicodeMathSymbol{"1D504}{\mfrakA }{\mathalpha}{mathematical fraktur capital a}%
+\UnicodeMathSymbol{"1D505}{\mfrakB }{\mathalpha}{mathematical fraktur capital b}%
+\UnicodeMathSymbol{"1D507}{\mfrakD }{\mathalpha}{mathematical fraktur capital d}%
+\UnicodeMathSymbol{"1D508}{\mfrakE }{\mathalpha}{mathematical fraktur capital e}%
+\UnicodeMathSymbol{"1D509}{\mfrakF }{\mathalpha}{mathematical fraktur capital f}%
+\UnicodeMathSymbol{"1D50A}{\mfrakG }{\mathalpha}{mathematical fraktur capital g}%
+\UnicodeMathSymbol{"1D50D}{\mfrakJ }{\mathalpha}{mathematical fraktur capital j}%
+\UnicodeMathSymbol{"1D50E}{\mfrakK }{\mathalpha}{mathematical fraktur capital k}%
+\UnicodeMathSymbol{"1D50F}{\mfrakL }{\mathalpha}{mathematical fraktur capital l}%
+\UnicodeMathSymbol{"1D510}{\mfrakM }{\mathalpha}{mathematical fraktur capital m}%
+\UnicodeMathSymbol{"1D511}{\mfrakN }{\mathalpha}{mathematical fraktur capital n}%
+\UnicodeMathSymbol{"1D512}{\mfrakO }{\mathalpha}{mathematical fraktur capital o}%
+\UnicodeMathSymbol{"1D513}{\mfrakP }{\mathalpha}{mathematical fraktur capital p}%
+\UnicodeMathSymbol{"1D514}{\mfrakQ }{\mathalpha}{mathematical fraktur capital q}%
+\UnicodeMathSymbol{"1D516}{\mfrakS }{\mathalpha}{mathematical fraktur capital s}%
+\UnicodeMathSymbol{"1D517}{\mfrakT }{\mathalpha}{mathematical fraktur capital t}%
+\UnicodeMathSymbol{"1D518}{\mfrakU }{\mathalpha}{mathematical fraktur capital u}%
+\UnicodeMathSymbol{"1D519}{\mfrakV }{\mathalpha}{mathematical fraktur capital v}%
+\UnicodeMathSymbol{"1D51A}{\mfrakW }{\mathalpha}{mathematical fraktur capital w}%
+\UnicodeMathSymbol{"1D51B}{\mfrakX }{\mathalpha}{mathematical fraktur capital x}%
+\UnicodeMathSymbol{"1D51C}{\mfrakY }{\mathalpha}{mathematical fraktur capital y}%
+\UnicodeMathSymbol{"1D51E}{\mfraka }{\mathalpha}{mathematical fraktur small a}%
+\UnicodeMathSymbol{"1D51F}{\mfrakb }{\mathalpha}{mathematical fraktur small b}%
+\UnicodeMathSymbol{"1D520}{\mfrakc }{\mathalpha}{mathematical fraktur small c}%
+\UnicodeMathSymbol{"1D521}{\mfrakd }{\mathalpha}{mathematical fraktur small d}%
+\UnicodeMathSymbol{"1D522}{\mfrake }{\mathalpha}{mathematical fraktur small e}%
+\UnicodeMathSymbol{"1D523}{\mfrakf }{\mathalpha}{mathematical fraktur small f}%
+\UnicodeMathSymbol{"1D524}{\mfrakg }{\mathalpha}{mathematical fraktur small g}%
+\UnicodeMathSymbol{"1D525}{\mfrakh }{\mathalpha}{mathematical fraktur small h}%
+\UnicodeMathSymbol{"1D526}{\mfraki }{\mathalpha}{mathematical fraktur small i}%
+\UnicodeMathSymbol{"1D527}{\mfrakj }{\mathalpha}{mathematical fraktur small j}%
+\UnicodeMathSymbol{"1D528}{\mfrakk }{\mathalpha}{mathematical fraktur small k}%
+\UnicodeMathSymbol{"1D529}{\mfrakl }{\mathalpha}{mathematical fraktur small l}%
+\UnicodeMathSymbol{"1D52A}{\mfrakm }{\mathalpha}{mathematical fraktur small m}%
+\UnicodeMathSymbol{"1D52B}{\mfrakn }{\mathalpha}{mathematical fraktur small n}%
+\UnicodeMathSymbol{"1D52C}{\mfrako }{\mathalpha}{mathematical fraktur small o}%
+\UnicodeMathSymbol{"1D52D}{\mfrakp }{\mathalpha}{mathematical fraktur small p}%
+\UnicodeMathSymbol{"1D52E}{\mfrakq }{\mathalpha}{mathematical fraktur small q}%
+\UnicodeMathSymbol{"1D52F}{\mfrakr }{\mathalpha}{mathematical fraktur small r}%
+\UnicodeMathSymbol{"1D530}{\mfraks }{\mathalpha}{mathematical fraktur small s}%
+\UnicodeMathSymbol{"1D531}{\mfrakt }{\mathalpha}{mathematical fraktur small t}%
+\UnicodeMathSymbol{"1D532}{\mfraku }{\mathalpha}{mathematical fraktur small u}%
+\UnicodeMathSymbol{"1D533}{\mfrakv }{\mathalpha}{mathematical fraktur small v}%
+\UnicodeMathSymbol{"1D534}{\mfrakw }{\mathalpha}{mathematical fraktur small w}%
+\UnicodeMathSymbol{"1D535}{\mfrakx }{\mathalpha}{mathematical fraktur small x}%
+\UnicodeMathSymbol{"1D536}{\mfraky }{\mathalpha}{mathematical fraktur small y}%
+\UnicodeMathSymbol{"1D537}{\mfrakz }{\mathalpha}{mathematical fraktur small z}%
+\UnicodeMathSymbol{"1D538}{\BbbA }{\mathalpha}{mathematical double-struck capital a}%
+\UnicodeMathSymbol{"1D539}{\BbbB }{\mathalpha}{mathematical double-struck capital b}%
+\UnicodeMathSymbol{"1D53B}{\BbbD }{\mathalpha}{mathematical double-struck capital d}%
+\UnicodeMathSymbol{"1D53C}{\BbbE }{\mathalpha}{mathematical double-struck capital e}%
+\UnicodeMathSymbol{"1D53D}{\BbbF }{\mathalpha}{mathematical double-struck capital f}%
+\UnicodeMathSymbol{"1D53E}{\BbbG }{\mathalpha}{mathematical double-struck capital g}%
+\UnicodeMathSymbol{"1D540}{\BbbI }{\mathalpha}{mathematical double-struck capital i}%
+\UnicodeMathSymbol{"1D541}{\BbbJ }{\mathalpha}{mathematical double-struck capital j}%
+\UnicodeMathSymbol{"1D542}{\BbbK }{\mathalpha}{mathematical double-struck capital k}%
+\UnicodeMathSymbol{"1D543}{\BbbL }{\mathalpha}{mathematical double-struck capital l}%
+\UnicodeMathSymbol{"1D544}{\BbbM }{\mathalpha}{mathematical double-struck capital m}%
+\UnicodeMathSymbol{"1D546}{\BbbO }{\mathalpha}{mathematical double-struck capital o}%
+\UnicodeMathSymbol{"1D54A}{\BbbS }{\mathalpha}{mathematical double-struck capital s}%
+\UnicodeMathSymbol{"1D54B}{\BbbT }{\mathalpha}{mathematical double-struck capital t}%
+\UnicodeMathSymbol{"1D54C}{\BbbU }{\mathalpha}{mathematical double-struck capital u}%
+\UnicodeMathSymbol{"1D54D}{\BbbV }{\mathalpha}{mathematical double-struck capital v}%
+\UnicodeMathSymbol{"1D54E}{\BbbW }{\mathalpha}{mathematical double-struck capital w}%
+\UnicodeMathSymbol{"1D54F}{\BbbX }{\mathalpha}{mathematical double-struck capital x}%
+\UnicodeMathSymbol{"1D550}{\BbbY }{\mathalpha}{mathematical double-struck capital y}%
+\UnicodeMathSymbol{"1D552}{\Bbba }{\mathalpha}{mathematical double-struck small a}%
+\UnicodeMathSymbol{"1D553}{\Bbbb }{\mathalpha}{mathematical double-struck small b}%
+\UnicodeMathSymbol{"1D554}{\Bbbc }{\mathalpha}{mathematical double-struck small c}%
+\UnicodeMathSymbol{"1D555}{\Bbbd }{\mathalpha}{mathematical double-struck small d}%
+\UnicodeMathSymbol{"1D556}{\Bbbe }{\mathalpha}{mathematical double-struck small e}%
+\UnicodeMathSymbol{"1D557}{\Bbbf }{\mathalpha}{mathematical double-struck small f}%
+\UnicodeMathSymbol{"1D558}{\Bbbg }{\mathalpha}{mathematical double-struck small g}%
+\UnicodeMathSymbol{"1D559}{\Bbbh }{\mathalpha}{mathematical double-struck small h}%
+\UnicodeMathSymbol{"1D55A}{\Bbbi }{\mathalpha}{mathematical double-struck small i}%
+\UnicodeMathSymbol{"1D55B}{\Bbbj }{\mathalpha}{mathematical double-struck small j}%
+\UnicodeMathSymbol{"1D55C}{\Bbbk }{\mathalpha}{mathematical double-struck small k}%
+\UnicodeMathSymbol{"1D55D}{\Bbbl }{\mathalpha}{mathematical double-struck small l}%
+\UnicodeMathSymbol{"1D55E}{\Bbbm }{\mathalpha}{mathematical double-struck small m}%
+\UnicodeMathSymbol{"1D55F}{\Bbbn }{\mathalpha}{mathematical double-struck small n}%
+\UnicodeMathSymbol{"1D560}{\Bbbo }{\mathalpha}{mathematical double-struck small o}%
+\UnicodeMathSymbol{"1D561}{\Bbbp }{\mathalpha}{mathematical double-struck small p}%
+\UnicodeMathSymbol{"1D562}{\Bbbq }{\mathalpha}{mathematical double-struck small q}%
+\UnicodeMathSymbol{"1D563}{\Bbbr }{\mathalpha}{mathematical double-struck small r}%
+\UnicodeMathSymbol{"1D564}{\Bbbs }{\mathalpha}{mathematical double-struck small s}%
+\UnicodeMathSymbol{"1D565}{\Bbbt }{\mathalpha}{mathematical double-struck small t}%
+\UnicodeMathSymbol{"1D566}{\Bbbu }{\mathalpha}{mathematical double-struck small u}%
+\UnicodeMathSymbol{"1D567}{\Bbbv }{\mathalpha}{mathematical double-struck small v}%
+\UnicodeMathSymbol{"1D568}{\Bbbw }{\mathalpha}{mathematical double-struck small w}%
+\UnicodeMathSymbol{"1D569}{\Bbbx }{\mathalpha}{mathematical double-struck small x}%
+\UnicodeMathSymbol{"1D56A}{\Bbby }{\mathalpha}{mathematical double-struck small y}%
+\UnicodeMathSymbol{"1D56B}{\Bbbz }{\mathalpha}{mathematical double-struck small z}%
+\UnicodeMathSymbol{"1D56C}{\mbffrakA }{\mathalpha}{mathematical bold fraktur capital a}%
+\UnicodeMathSymbol{"1D56D}{\mbffrakB }{\mathalpha}{mathematical bold fraktur capital b}%
+\UnicodeMathSymbol{"1D56E}{\mbffrakC }{\mathalpha}{mathematical bold fraktur capital c}%
+\UnicodeMathSymbol{"1D56F}{\mbffrakD }{\mathalpha}{mathematical bold fraktur capital d}%
+\UnicodeMathSymbol{"1D570}{\mbffrakE }{\mathalpha}{mathematical bold fraktur capital e}%
+\UnicodeMathSymbol{"1D571}{\mbffrakF }{\mathalpha}{mathematical bold fraktur capital f}%
+\UnicodeMathSymbol{"1D572}{\mbffrakG }{\mathalpha}{mathematical bold fraktur capital g}%
+\UnicodeMathSymbol{"1D573}{\mbffrakH }{\mathalpha}{mathematical bold fraktur capital h}%
+\UnicodeMathSymbol{"1D574}{\mbffrakI }{\mathalpha}{mathematical bold fraktur capital i}%
+\UnicodeMathSymbol{"1D575}{\mbffrakJ }{\mathalpha}{mathematical bold fraktur capital j}%
+\UnicodeMathSymbol{"1D576}{\mbffrakK }{\mathalpha}{mathematical bold fraktur capital k}%
+\UnicodeMathSymbol{"1D577}{\mbffrakL }{\mathalpha}{mathematical bold fraktur capital l}%
+\UnicodeMathSymbol{"1D578}{\mbffrakM }{\mathalpha}{mathematical bold fraktur capital m}%
+\UnicodeMathSymbol{"1D579}{\mbffrakN }{\mathalpha}{mathematical bold fraktur capital n}%
+\UnicodeMathSymbol{"1D57A}{\mbffrakO }{\mathalpha}{mathematical bold fraktur capital o}%
+\UnicodeMathSymbol{"1D57B}{\mbffrakP }{\mathalpha}{mathematical bold fraktur capital p}%
+\UnicodeMathSymbol{"1D57C}{\mbffrakQ }{\mathalpha}{mathematical bold fraktur capital q}%
+\UnicodeMathSymbol{"1D57D}{\mbffrakR }{\mathalpha}{mathematical bold fraktur capital r}%
+\UnicodeMathSymbol{"1D57E}{\mbffrakS }{\mathalpha}{mathematical bold fraktur capital s}%
+\UnicodeMathSymbol{"1D57F}{\mbffrakT }{\mathalpha}{mathematical bold fraktur capital t}%
+\UnicodeMathSymbol{"1D580}{\mbffrakU }{\mathalpha}{mathematical bold fraktur capital u}%
+\UnicodeMathSymbol{"1D581}{\mbffrakV }{\mathalpha}{mathematical bold fraktur capital v}%
+\UnicodeMathSymbol{"1D582}{\mbffrakW }{\mathalpha}{mathematical bold fraktur capital w}%
+\UnicodeMathSymbol{"1D583}{\mbffrakX }{\mathalpha}{mathematical bold fraktur capital x}%
+\UnicodeMathSymbol{"1D584}{\mbffrakY }{\mathalpha}{mathematical bold fraktur capital y}%
+\UnicodeMathSymbol{"1D585}{\mbffrakZ }{\mathalpha}{mathematical bold fraktur capital z}%
+\UnicodeMathSymbol{"1D586}{\mbffraka }{\mathalpha}{mathematical bold fraktur small a}%
+\UnicodeMathSymbol{"1D587}{\mbffrakb }{\mathalpha}{mathematical bold fraktur small b}%
+\UnicodeMathSymbol{"1D588}{\mbffrakc }{\mathalpha}{mathematical bold fraktur small c}%
+\UnicodeMathSymbol{"1D589}{\mbffrakd }{\mathalpha}{mathematical bold fraktur small d}%
+\UnicodeMathSymbol{"1D58A}{\mbffrake }{\mathalpha}{mathematical bold fraktur small e}%
+\UnicodeMathSymbol{"1D58B}{\mbffrakf }{\mathalpha}{mathematical bold fraktur small f}%
+\UnicodeMathSymbol{"1D58C}{\mbffrakg }{\mathalpha}{mathematical bold fraktur small g}%
+\UnicodeMathSymbol{"1D58D}{\mbffrakh }{\mathalpha}{mathematical bold fraktur small h}%
+\UnicodeMathSymbol{"1D58E}{\mbffraki }{\mathalpha}{mathematical bold fraktur small i}%
+\UnicodeMathSymbol{"1D58F}{\mbffrakj }{\mathalpha}{mathematical bold fraktur small j}%
+\UnicodeMathSymbol{"1D590}{\mbffrakk }{\mathalpha}{mathematical bold fraktur small k}%
+\UnicodeMathSymbol{"1D591}{\mbffrakl }{\mathalpha}{mathematical bold fraktur small l}%
+\UnicodeMathSymbol{"1D592}{\mbffrakm }{\mathalpha}{mathematical bold fraktur small m}%
+\UnicodeMathSymbol{"1D593}{\mbffrakn }{\mathalpha}{mathematical bold fraktur small n}%
+\UnicodeMathSymbol{"1D594}{\mbffrako }{\mathalpha}{mathematical bold fraktur small o}%
+\UnicodeMathSymbol{"1D595}{\mbffrakp }{\mathalpha}{mathematical bold fraktur small p}%
+\UnicodeMathSymbol{"1D596}{\mbffrakq }{\mathalpha}{mathematical bold fraktur small q}%
+\UnicodeMathSymbol{"1D597}{\mbffrakr }{\mathalpha}{mathematical bold fraktur small r}%
+\UnicodeMathSymbol{"1D598}{\mbffraks }{\mathalpha}{mathematical bold fraktur small s}%
+\UnicodeMathSymbol{"1D599}{\mbffrakt }{\mathalpha}{mathematical bold fraktur small t}%
+\UnicodeMathSymbol{"1D59A}{\mbffraku }{\mathalpha}{mathematical bold fraktur small u}%
+\UnicodeMathSymbol{"1D59B}{\mbffrakv }{\mathalpha}{mathematical bold fraktur small v}%
+\UnicodeMathSymbol{"1D59C}{\mbffrakw }{\mathalpha}{mathematical bold fraktur small w}%
+\UnicodeMathSymbol{"1D59D}{\mbffrakx }{\mathalpha}{mathematical bold fraktur small x}%
+\UnicodeMathSymbol{"1D59E}{\mbffraky }{\mathalpha}{mathematical bold fraktur small y}%
+\UnicodeMathSymbol{"1D59F}{\mbffrakz }{\mathalpha}{mathematical bold fraktur small z}%
+\UnicodeMathSymbol{"1D5A0}{\msansA }{\mathalpha}{mathematical sans-serif capital a}%
+\UnicodeMathSymbol{"1D5A1}{\msansB }{\mathalpha}{mathematical sans-serif capital b}%
+\UnicodeMathSymbol{"1D5A2}{\msansC }{\mathalpha}{mathematical sans-serif capital c}%
+\UnicodeMathSymbol{"1D5A3}{\msansD }{\mathalpha}{mathematical sans-serif capital d}%
+\UnicodeMathSymbol{"1D5A4}{\msansE }{\mathalpha}{mathematical sans-serif capital e}%
+\UnicodeMathSymbol{"1D5A5}{\msansF }{\mathalpha}{mathematical sans-serif capital f}%
+\UnicodeMathSymbol{"1D5A6}{\msansG }{\mathalpha}{mathematical sans-serif capital g}%
+\UnicodeMathSymbol{"1D5A7}{\msansH }{\mathalpha}{mathematical sans-serif capital h}%
+\UnicodeMathSymbol{"1D5A8}{\msansI }{\mathalpha}{mathematical sans-serif capital i}%
+\UnicodeMathSymbol{"1D5A9}{\msansJ }{\mathalpha}{mathematical sans-serif capital j}%
+\UnicodeMathSymbol{"1D5AA}{\msansK }{\mathalpha}{mathematical sans-serif capital k}%
+\UnicodeMathSymbol{"1D5AB}{\msansL }{\mathalpha}{mathematical sans-serif capital l}%
+\UnicodeMathSymbol{"1D5AC}{\msansM }{\mathalpha}{mathematical sans-serif capital m}%
+\UnicodeMathSymbol{"1D5AD}{\msansN }{\mathalpha}{mathematical sans-serif capital n}%
+\UnicodeMathSymbol{"1D5AE}{\msansO }{\mathalpha}{mathematical sans-serif capital o}%
+\UnicodeMathSymbol{"1D5AF}{\msansP }{\mathalpha}{mathematical sans-serif capital p}%
+\UnicodeMathSymbol{"1D5B0}{\msansQ }{\mathalpha}{mathematical sans-serif capital q}%
+\UnicodeMathSymbol{"1D5B1}{\msansR }{\mathalpha}{mathematical sans-serif capital r}%
+\UnicodeMathSymbol{"1D5B2}{\msansS }{\mathalpha}{mathematical sans-serif capital s}%
+\UnicodeMathSymbol{"1D5B3}{\msansT }{\mathalpha}{mathematical sans-serif capital t}%
+\UnicodeMathSymbol{"1D5B4}{\msansU }{\mathalpha}{mathematical sans-serif capital u}%
+\UnicodeMathSymbol{"1D5B5}{\msansV }{\mathalpha}{mathematical sans-serif capital v}%
+\UnicodeMathSymbol{"1D5B6}{\msansW }{\mathalpha}{mathematical sans-serif capital w}%
+\UnicodeMathSymbol{"1D5B7}{\msansX }{\mathalpha}{mathematical sans-serif capital x}%
+\UnicodeMathSymbol{"1D5B8}{\msansY }{\mathalpha}{mathematical sans-serif capital y}%
+\UnicodeMathSymbol{"1D5B9}{\msansZ }{\mathalpha}{mathematical sans-serif capital z}%
+\UnicodeMathSymbol{"1D5BA}{\msansa }{\mathalpha}{mathematical sans-serif small a}%
+\UnicodeMathSymbol{"1D5BB}{\msansb }{\mathalpha}{mathematical sans-serif small b}%
+\UnicodeMathSymbol{"1D5BC}{\msansc }{\mathalpha}{mathematical sans-serif small c}%
+\UnicodeMathSymbol{"1D5BD}{\msansd }{\mathalpha}{mathematical sans-serif small d}%
+\UnicodeMathSymbol{"1D5BE}{\msanse }{\mathalpha}{mathematical sans-serif small e}%
+\UnicodeMathSymbol{"1D5BF}{\msansf }{\mathalpha}{mathematical sans-serif small f}%
+\UnicodeMathSymbol{"1D5C0}{\msansg }{\mathalpha}{mathematical sans-serif small g}%
+\UnicodeMathSymbol{"1D5C1}{\msansh }{\mathalpha}{mathematical sans-serif small h}%
+\UnicodeMathSymbol{"1D5C2}{\msansi }{\mathalpha}{mathematical sans-serif small i}%
+\UnicodeMathSymbol{"1D5C3}{\msansj }{\mathalpha}{mathematical sans-serif small j}%
+\UnicodeMathSymbol{"1D5C4}{\msansk }{\mathalpha}{mathematical sans-serif small k}%
+\UnicodeMathSymbol{"1D5C5}{\msansl }{\mathalpha}{mathematical sans-serif small l}%
+\UnicodeMathSymbol{"1D5C6}{\msansm }{\mathalpha}{mathematical sans-serif small m}%
+\UnicodeMathSymbol{"1D5C7}{\msansn }{\mathalpha}{mathematical sans-serif small n}%
+\UnicodeMathSymbol{"1D5C8}{\msanso }{\mathalpha}{mathematical sans-serif small o}%
+\UnicodeMathSymbol{"1D5C9}{\msansp }{\mathalpha}{mathematical sans-serif small p}%
+\UnicodeMathSymbol{"1D5CA}{\msansq }{\mathalpha}{mathematical sans-serif small q}%
+\UnicodeMathSymbol{"1D5CB}{\msansr }{\mathalpha}{mathematical sans-serif small r}%
+\UnicodeMathSymbol{"1D5CC}{\msanss }{\mathalpha}{mathematical sans-serif small s}%
+\UnicodeMathSymbol{"1D5CD}{\msanst }{\mathalpha}{mathematical sans-serif small t}%
+\UnicodeMathSymbol{"1D5CE}{\msansu }{\mathalpha}{mathematical sans-serif small u}%
+\UnicodeMathSymbol{"1D5CF}{\msansv }{\mathalpha}{mathematical sans-serif small v}%
+\UnicodeMathSymbol{"1D5D0}{\msansw }{\mathalpha}{mathematical sans-serif small w}%
+\UnicodeMathSymbol{"1D5D1}{\msansx }{\mathalpha}{mathematical sans-serif small x}%
+\UnicodeMathSymbol{"1D5D2}{\msansy }{\mathalpha}{mathematical sans-serif small y}%
+\UnicodeMathSymbol{"1D5D3}{\msansz }{\mathalpha}{mathematical sans-serif small z}%
+\UnicodeMathSymbol{"1D5D4}{\mbfsansA }{\mathalpha}{mathematical sans-serif bold capital a}%
+\UnicodeMathSymbol{"1D5D5}{\mbfsansB }{\mathalpha}{mathematical sans-serif bold capital b}%
+\UnicodeMathSymbol{"1D5D6}{\mbfsansC }{\mathalpha}{mathematical sans-serif bold capital c}%
+\UnicodeMathSymbol{"1D5D7}{\mbfsansD }{\mathalpha}{mathematical sans-serif bold capital d}%
+\UnicodeMathSymbol{"1D5D8}{\mbfsansE }{\mathalpha}{mathematical sans-serif bold capital e}%
+\UnicodeMathSymbol{"1D5D9}{\mbfsansF }{\mathalpha}{mathematical sans-serif bold capital f}%
+\UnicodeMathSymbol{"1D5DA}{\mbfsansG }{\mathalpha}{mathematical sans-serif bold capital g}%
+\UnicodeMathSymbol{"1D5DB}{\mbfsansH }{\mathalpha}{mathematical sans-serif bold capital h}%
+\UnicodeMathSymbol{"1D5DC}{\mbfsansI }{\mathalpha}{mathematical sans-serif bold capital i}%
+\UnicodeMathSymbol{"1D5DD}{\mbfsansJ }{\mathalpha}{mathematical sans-serif bold capital j}%
+\UnicodeMathSymbol{"1D5DE}{\mbfsansK }{\mathalpha}{mathematical sans-serif bold capital k}%
+\UnicodeMathSymbol{"1D5DF}{\mbfsansL }{\mathalpha}{mathematical sans-serif bold capital l}%
+\UnicodeMathSymbol{"1D5E0}{\mbfsansM }{\mathalpha}{mathematical sans-serif bold capital m}%
+\UnicodeMathSymbol{"1D5E1}{\mbfsansN }{\mathalpha}{mathematical sans-serif bold capital n}%
+\UnicodeMathSymbol{"1D5E2}{\mbfsansO }{\mathalpha}{mathematical sans-serif bold capital o}%
+\UnicodeMathSymbol{"1D5E3}{\mbfsansP }{\mathalpha}{mathematical sans-serif bold capital p}%
+\UnicodeMathSymbol{"1D5E4}{\mbfsansQ }{\mathalpha}{mathematical sans-serif bold capital q}%
+\UnicodeMathSymbol{"1D5E5}{\mbfsansR }{\mathalpha}{mathematical sans-serif bold capital r}%
+\UnicodeMathSymbol{"1D5E6}{\mbfsansS }{\mathalpha}{mathematical sans-serif bold capital s}%
+\UnicodeMathSymbol{"1D5E7}{\mbfsansT }{\mathalpha}{mathematical sans-serif bold capital t}%
+\UnicodeMathSymbol{"1D5E8}{\mbfsansU }{\mathalpha}{mathematical sans-serif bold capital u}%
+\UnicodeMathSymbol{"1D5E9}{\mbfsansV }{\mathalpha}{mathematical sans-serif bold capital v}%
+\UnicodeMathSymbol{"1D5EA}{\mbfsansW }{\mathalpha}{mathematical sans-serif bold capital w}%
+\UnicodeMathSymbol{"1D5EB}{\mbfsansX }{\mathalpha}{mathematical sans-serif bold capital x}%
+\UnicodeMathSymbol{"1D5EC}{\mbfsansY }{\mathalpha}{mathematical sans-serif bold capital y}%
+\UnicodeMathSymbol{"1D5ED}{\mbfsansZ }{\mathalpha}{mathematical sans-serif bold capital z}%
+\UnicodeMathSymbol{"1D5EE}{\mbfsansa }{\mathalpha}{mathematical sans-serif bold small a}%
+\UnicodeMathSymbol{"1D5EF}{\mbfsansb }{\mathalpha}{mathematical sans-serif bold small b}%
+\UnicodeMathSymbol{"1D5F0}{\mbfsansc }{\mathalpha}{mathematical sans-serif bold small c}%
+\UnicodeMathSymbol{"1D5F1}{\mbfsansd }{\mathalpha}{mathematical sans-serif bold small d}%
+\UnicodeMathSymbol{"1D5F2}{\mbfsanse }{\mathalpha}{mathematical sans-serif bold small e}%
+\UnicodeMathSymbol{"1D5F3}{\mbfsansf }{\mathalpha}{mathematical sans-serif bold small f}%
+\UnicodeMathSymbol{"1D5F4}{\mbfsansg }{\mathalpha}{mathematical sans-serif bold small g}%
+\UnicodeMathSymbol{"1D5F5}{\mbfsansh }{\mathalpha}{mathematical sans-serif bold small h}%
+\UnicodeMathSymbol{"1D5F6}{\mbfsansi }{\mathalpha}{mathematical sans-serif bold small i}%
+\UnicodeMathSymbol{"1D5F7}{\mbfsansj }{\mathalpha}{mathematical sans-serif bold small j}%
+\UnicodeMathSymbol{"1D5F8}{\mbfsansk }{\mathalpha}{mathematical sans-serif bold small k}%
+\UnicodeMathSymbol{"1D5F9}{\mbfsansl }{\mathalpha}{mathematical sans-serif bold small l}%
+\UnicodeMathSymbol{"1D5FA}{\mbfsansm }{\mathalpha}{mathematical sans-serif bold small m}%
+\UnicodeMathSymbol{"1D5FB}{\mbfsansn }{\mathalpha}{mathematical sans-serif bold small n}%
+\UnicodeMathSymbol{"1D5FC}{\mbfsanso }{\mathalpha}{mathematical sans-serif bold small o}%
+\UnicodeMathSymbol{"1D5FD}{\mbfsansp }{\mathalpha}{mathematical sans-serif bold small p}%
+\UnicodeMathSymbol{"1D5FE}{\mbfsansq }{\mathalpha}{mathematical sans-serif bold small q}%
+\UnicodeMathSymbol{"1D5FF}{\mbfsansr }{\mathalpha}{mathematical sans-serif bold small r}%
+\UnicodeMathSymbol{"1D600}{\mbfsanss }{\mathalpha}{mathematical sans-serif bold small s}%
+\UnicodeMathSymbol{"1D601}{\mbfsanst }{\mathalpha}{mathematical sans-serif bold small t}%
+\UnicodeMathSymbol{"1D602}{\mbfsansu }{\mathalpha}{mathematical sans-serif bold small u}%
+\UnicodeMathSymbol{"1D603}{\mbfsansv }{\mathalpha}{mathematical sans-serif bold small v}%
+\UnicodeMathSymbol{"1D604}{\mbfsansw }{\mathalpha}{mathematical sans-serif bold small w}%
+\UnicodeMathSymbol{"1D605}{\mbfsansx }{\mathalpha}{mathematical sans-serif bold small x}%
+\UnicodeMathSymbol{"1D606}{\mbfsansy }{\mathalpha}{mathematical sans-serif bold small y}%
+\UnicodeMathSymbol{"1D607}{\mbfsansz }{\mathalpha}{mathematical sans-serif bold small z}%
+\UnicodeMathSymbol{"1D608}{\mitsansA }{\mathalpha}{mathematical sans-serif italic capital a}%
+\UnicodeMathSymbol{"1D609}{\mitsansB }{\mathalpha}{mathematical sans-serif italic capital b}%
+\UnicodeMathSymbol{"1D60A}{\mitsansC }{\mathalpha}{mathematical sans-serif italic capital c}%
+\UnicodeMathSymbol{"1D60B}{\mitsansD }{\mathalpha}{mathematical sans-serif italic capital d}%
+\UnicodeMathSymbol{"1D60C}{\mitsansE }{\mathalpha}{mathematical sans-serif italic capital e}%
+\UnicodeMathSymbol{"1D60D}{\mitsansF }{\mathalpha}{mathematical sans-serif italic capital f}%
+\UnicodeMathSymbol{"1D60E}{\mitsansG }{\mathalpha}{mathematical sans-serif italic capital g}%
+\UnicodeMathSymbol{"1D60F}{\mitsansH }{\mathalpha}{mathematical sans-serif italic capital h}%
+\UnicodeMathSymbol{"1D610}{\mitsansI }{\mathalpha}{mathematical sans-serif italic capital i}%
+\UnicodeMathSymbol{"1D611}{\mitsansJ }{\mathalpha}{mathematical sans-serif italic capital j}%
+\UnicodeMathSymbol{"1D612}{\mitsansK }{\mathalpha}{mathematical sans-serif italic capital k}%
+\UnicodeMathSymbol{"1D613}{\mitsansL }{\mathalpha}{mathematical sans-serif italic capital l}%
+\UnicodeMathSymbol{"1D614}{\mitsansM }{\mathalpha}{mathematical sans-serif italic capital m}%
+\UnicodeMathSymbol{"1D615}{\mitsansN }{\mathalpha}{mathematical sans-serif italic capital n}%
+\UnicodeMathSymbol{"1D616}{\mitsansO }{\mathalpha}{mathematical sans-serif italic capital o}%
+\UnicodeMathSymbol{"1D617}{\mitsansP }{\mathalpha}{mathematical sans-serif italic capital p}%
+\UnicodeMathSymbol{"1D618}{\mitsansQ }{\mathalpha}{mathematical sans-serif italic capital q}%
+\UnicodeMathSymbol{"1D619}{\mitsansR }{\mathalpha}{mathematical sans-serif italic capital r}%
+\UnicodeMathSymbol{"1D61A}{\mitsansS }{\mathalpha}{mathematical sans-serif italic capital s}%
+\UnicodeMathSymbol{"1D61B}{\mitsansT }{\mathalpha}{mathematical sans-serif italic capital t}%
+\UnicodeMathSymbol{"1D61C}{\mitsansU }{\mathalpha}{mathematical sans-serif italic capital u}%
+\UnicodeMathSymbol{"1D61D}{\mitsansV }{\mathalpha}{mathematical sans-serif italic capital v}%
+\UnicodeMathSymbol{"1D61E}{\mitsansW }{\mathalpha}{mathematical sans-serif italic capital w}%
+\UnicodeMathSymbol{"1D61F}{\mitsansX }{\mathalpha}{mathematical sans-serif italic capital x}%
+\UnicodeMathSymbol{"1D620}{\mitsansY }{\mathalpha}{mathematical sans-serif italic capital y}%
+\UnicodeMathSymbol{"1D621}{\mitsansZ }{\mathalpha}{mathematical sans-serif italic capital z}%
+\UnicodeMathSymbol{"1D622}{\mitsansa }{\mathalpha}{mathematical sans-serif italic small a}%
+\UnicodeMathSymbol{"1D623}{\mitsansb }{\mathalpha}{mathematical sans-serif italic small b}%
+\UnicodeMathSymbol{"1D624}{\mitsansc }{\mathalpha}{mathematical sans-serif italic small c}%
+\UnicodeMathSymbol{"1D625}{\mitsansd }{\mathalpha}{mathematical sans-serif italic small d}%
+\UnicodeMathSymbol{"1D626}{\mitsanse }{\mathalpha}{mathematical sans-serif italic small e}%
+\UnicodeMathSymbol{"1D627}{\mitsansf }{\mathalpha}{mathematical sans-serif italic small f}%
+\UnicodeMathSymbol{"1D628}{\mitsansg }{\mathalpha}{mathematical sans-serif italic small g}%
+\UnicodeMathSymbol{"1D629}{\mitsansh }{\mathalpha}{mathematical sans-serif italic small h}%
+\UnicodeMathSymbol{"1D62A}{\mitsansi }{\mathalpha}{mathematical sans-serif italic small i}%
+\UnicodeMathSymbol{"1D62B}{\mitsansj }{\mathalpha}{mathematical sans-serif italic small j}%
+\UnicodeMathSymbol{"1D62C}{\mitsansk }{\mathalpha}{mathematical sans-serif italic small k}%
+\UnicodeMathSymbol{"1D62D}{\mitsansl }{\mathalpha}{mathematical sans-serif italic small l}%
+\UnicodeMathSymbol{"1D62E}{\mitsansm }{\mathalpha}{mathematical sans-serif italic small m}%
+\UnicodeMathSymbol{"1D62F}{\mitsansn }{\mathalpha}{mathematical sans-serif italic small n}%
+\UnicodeMathSymbol{"1D630}{\mitsanso }{\mathalpha}{mathematical sans-serif italic small o}%
+\UnicodeMathSymbol{"1D631}{\mitsansp }{\mathalpha}{mathematical sans-serif italic small p}%
+\UnicodeMathSymbol{"1D632}{\mitsansq }{\mathalpha}{mathematical sans-serif italic small q}%
+\UnicodeMathSymbol{"1D633}{\mitsansr }{\mathalpha}{mathematical sans-serif italic small r}%
+\UnicodeMathSymbol{"1D634}{\mitsanss }{\mathalpha}{mathematical sans-serif italic small s}%
+\UnicodeMathSymbol{"1D635}{\mitsanst }{\mathalpha}{mathematical sans-serif italic small t}%
+\UnicodeMathSymbol{"1D636}{\mitsansu }{\mathalpha}{mathematical sans-serif italic small u}%
+\UnicodeMathSymbol{"1D637}{\mitsansv }{\mathalpha}{mathematical sans-serif italic small v}%
+\UnicodeMathSymbol{"1D638}{\mitsansw }{\mathalpha}{mathematical sans-serif italic small w}%
+\UnicodeMathSymbol{"1D639}{\mitsansx }{\mathalpha}{mathematical sans-serif italic small x}%
+\UnicodeMathSymbol{"1D63A}{\mitsansy }{\mathalpha}{mathematical sans-serif italic small y}%
+\UnicodeMathSymbol{"1D63B}{\mitsansz }{\mathalpha}{mathematical sans-serif italic small z}%
+\UnicodeMathSymbol{"1D63C}{\mbfitsansA }{\mathalpha}{mathematical sans-serif bold italic capital a}%
+\UnicodeMathSymbol{"1D63D}{\mbfitsansB }{\mathalpha}{mathematical sans-serif bold italic capital b}%
+\UnicodeMathSymbol{"1D63E}{\mbfitsansC }{\mathalpha}{mathematical sans-serif bold italic capital c}%
+\UnicodeMathSymbol{"1D63F}{\mbfitsansD }{\mathalpha}{mathematical sans-serif bold italic capital d}%
+\UnicodeMathSymbol{"1D640}{\mbfitsansE }{\mathalpha}{mathematical sans-serif bold italic capital e}%
+\UnicodeMathSymbol{"1D641}{\mbfitsansF }{\mathalpha}{mathematical sans-serif bold italic capital f}%
+\UnicodeMathSymbol{"1D642}{\mbfitsansG }{\mathalpha}{mathematical sans-serif bold italic capital g}%
+\UnicodeMathSymbol{"1D643}{\mbfitsansH }{\mathalpha}{mathematical sans-serif bold italic capital h}%
+\UnicodeMathSymbol{"1D644}{\mbfitsansI }{\mathalpha}{mathematical sans-serif bold italic capital i}%
+\UnicodeMathSymbol{"1D645}{\mbfitsansJ }{\mathalpha}{mathematical sans-serif bold italic capital j}%
+\UnicodeMathSymbol{"1D646}{\mbfitsansK }{\mathalpha}{mathematical sans-serif bold italic capital k}%
+\UnicodeMathSymbol{"1D647}{\mbfitsansL }{\mathalpha}{mathematical sans-serif bold italic capital l}%
+\UnicodeMathSymbol{"1D648}{\mbfitsansM }{\mathalpha}{mathematical sans-serif bold italic capital m}%
+\UnicodeMathSymbol{"1D649}{\mbfitsansN }{\mathalpha}{mathematical sans-serif bold italic capital n}%
+\UnicodeMathSymbol{"1D64A}{\mbfitsansO }{\mathalpha}{mathematical sans-serif bold italic capital o}%
+\UnicodeMathSymbol{"1D64B}{\mbfitsansP }{\mathalpha}{mathematical sans-serif bold italic capital p}%
+\UnicodeMathSymbol{"1D64C}{\mbfitsansQ }{\mathalpha}{mathematical sans-serif bold italic capital q}%
+\UnicodeMathSymbol{"1D64D}{\mbfitsansR }{\mathalpha}{mathematical sans-serif bold italic capital r}%
+\UnicodeMathSymbol{"1D64E}{\mbfitsansS }{\mathalpha}{mathematical sans-serif bold italic capital s}%
+\UnicodeMathSymbol{"1D64F}{\mbfitsansT }{\mathalpha}{mathematical sans-serif bold italic capital t}%
+\UnicodeMathSymbol{"1D650}{\mbfitsansU }{\mathalpha}{mathematical sans-serif bold italic capital u}%
+\UnicodeMathSymbol{"1D651}{\mbfitsansV }{\mathalpha}{mathematical sans-serif bold italic capital v}%
+\UnicodeMathSymbol{"1D652}{\mbfitsansW }{\mathalpha}{mathematical sans-serif bold italic capital w}%
+\UnicodeMathSymbol{"1D653}{\mbfitsansX }{\mathalpha}{mathematical sans-serif bold italic capital x}%
+\UnicodeMathSymbol{"1D654}{\mbfitsansY }{\mathalpha}{mathematical sans-serif bold italic capital y}%
+\UnicodeMathSymbol{"1D655}{\mbfitsansZ }{\mathalpha}{mathematical sans-serif bold italic capital z}%
+\UnicodeMathSymbol{"1D656}{\mbfitsansa }{\mathalpha}{mathematical sans-serif bold italic small a}%
+\UnicodeMathSymbol{"1D657}{\mbfitsansb }{\mathalpha}{mathematical sans-serif bold italic small b}%
+\UnicodeMathSymbol{"1D658}{\mbfitsansc }{\mathalpha}{mathematical sans-serif bold italic small c}%
+\UnicodeMathSymbol{"1D659}{\mbfitsansd }{\mathalpha}{mathematical sans-serif bold italic small d}%
+\UnicodeMathSymbol{"1D65A}{\mbfitsanse }{\mathalpha}{mathematical sans-serif bold italic small e}%
+\UnicodeMathSymbol{"1D65B}{\mbfitsansf }{\mathalpha}{mathematical sans-serif bold italic small f}%
+\UnicodeMathSymbol{"1D65C}{\mbfitsansg }{\mathalpha}{mathematical sans-serif bold italic small g}%
+\UnicodeMathSymbol{"1D65D}{\mbfitsansh }{\mathalpha}{mathematical sans-serif bold italic small h}%
+\UnicodeMathSymbol{"1D65E}{\mbfitsansi }{\mathalpha}{mathematical sans-serif bold italic small i}%
+\UnicodeMathSymbol{"1D65F}{\mbfitsansj }{\mathalpha}{mathematical sans-serif bold italic small j}%
+\UnicodeMathSymbol{"1D660}{\mbfitsansk }{\mathalpha}{mathematical sans-serif bold italic small k}%
+\UnicodeMathSymbol{"1D661}{\mbfitsansl }{\mathalpha}{mathematical sans-serif bold italic small l}%
+\UnicodeMathSymbol{"1D662}{\mbfitsansm }{\mathalpha}{mathematical sans-serif bold italic small m}%
+\UnicodeMathSymbol{"1D663}{\mbfitsansn }{\mathalpha}{mathematical sans-serif bold italic small n}%
+\UnicodeMathSymbol{"1D664}{\mbfitsanso }{\mathalpha}{mathematical sans-serif bold italic small o}%
+\UnicodeMathSymbol{"1D665}{\mbfitsansp }{\mathalpha}{mathematical sans-serif bold italic small p}%
+\UnicodeMathSymbol{"1D666}{\mbfitsansq }{\mathalpha}{mathematical sans-serif bold italic small q}%
+\UnicodeMathSymbol{"1D667}{\mbfitsansr }{\mathalpha}{mathematical sans-serif bold italic small r}%
+\UnicodeMathSymbol{"1D668}{\mbfitsanss }{\mathalpha}{mathematical sans-serif bold italic small s}%
+\UnicodeMathSymbol{"1D669}{\mbfitsanst }{\mathalpha}{mathematical sans-serif bold italic small t}%
+\UnicodeMathSymbol{"1D66A}{\mbfitsansu }{\mathalpha}{mathematical sans-serif bold italic small u}%
+\UnicodeMathSymbol{"1D66B}{\mbfitsansv }{\mathalpha}{mathematical sans-serif bold italic small v}%
+\UnicodeMathSymbol{"1D66C}{\mbfitsansw }{\mathalpha}{mathematical sans-serif bold italic small w}%
+\UnicodeMathSymbol{"1D66D}{\mbfitsansx }{\mathalpha}{mathematical sans-serif bold italic small x}%
+\UnicodeMathSymbol{"1D66E}{\mbfitsansy }{\mathalpha}{mathematical sans-serif bold italic small y}%
+\UnicodeMathSymbol{"1D66F}{\mbfitsansz }{\mathalpha}{mathematical sans-serif bold italic small z}%
+\UnicodeMathSymbol{"1D670}{\mttA }{\mathalpha}{mathematical monospace capital a}%
+\UnicodeMathSymbol{"1D671}{\mttB }{\mathalpha}{mathematical monospace capital b}%
+\UnicodeMathSymbol{"1D672}{\mttC }{\mathalpha}{mathematical monospace capital c}%
+\UnicodeMathSymbol{"1D673}{\mttD }{\mathalpha}{mathematical monospace capital d}%
+\UnicodeMathSymbol{"1D674}{\mttE }{\mathalpha}{mathematical monospace capital e}%
+\UnicodeMathSymbol{"1D675}{\mttF }{\mathalpha}{mathematical monospace capital f}%
+\UnicodeMathSymbol{"1D676}{\mttG }{\mathalpha}{mathematical monospace capital g}%
+\UnicodeMathSymbol{"1D677}{\mttH }{\mathalpha}{mathematical monospace capital h}%
+\UnicodeMathSymbol{"1D678}{\mttI }{\mathalpha}{mathematical monospace capital i}%
+\UnicodeMathSymbol{"1D679}{\mttJ }{\mathalpha}{mathematical monospace capital j}%
+\UnicodeMathSymbol{"1D67A}{\mttK }{\mathalpha}{mathematical monospace capital k}%
+\UnicodeMathSymbol{"1D67B}{\mttL }{\mathalpha}{mathematical monospace capital l}%
+\UnicodeMathSymbol{"1D67C}{\mttM }{\mathalpha}{mathematical monospace capital m}%
+\UnicodeMathSymbol{"1D67D}{\mttN }{\mathalpha}{mathematical monospace capital n}%
+\UnicodeMathSymbol{"1D67E}{\mttO }{\mathalpha}{mathematical monospace capital o}%
+\UnicodeMathSymbol{"1D67F}{\mttP }{\mathalpha}{mathematical monospace capital p}%
+\UnicodeMathSymbol{"1D680}{\mttQ }{\mathalpha}{mathematical monospace capital q}%
+\UnicodeMathSymbol{"1D681}{\mttR }{\mathalpha}{mathematical monospace capital r}%
+\UnicodeMathSymbol{"1D682}{\mttS }{\mathalpha}{mathematical monospace capital s}%
+\UnicodeMathSymbol{"1D683}{\mttT }{\mathalpha}{mathematical monospace capital t}%
+\UnicodeMathSymbol{"1D684}{\mttU }{\mathalpha}{mathematical monospace capital u}%
+\UnicodeMathSymbol{"1D685}{\mttV }{\mathalpha}{mathematical monospace capital v}%
+\UnicodeMathSymbol{"1D686}{\mttW }{\mathalpha}{mathematical monospace capital w}%
+\UnicodeMathSymbol{"1D687}{\mttX }{\mathalpha}{mathematical monospace capital x}%
+\UnicodeMathSymbol{"1D688}{\mttY }{\mathalpha}{mathematical monospace capital y}%
+\UnicodeMathSymbol{"1D689}{\mttZ }{\mathalpha}{mathematical monospace capital z}%
+\UnicodeMathSymbol{"1D68A}{\mtta }{\mathalpha}{mathematical monospace small a}%
+\UnicodeMathSymbol{"1D68B}{\mttb }{\mathalpha}{mathematical monospace small b}%
+\UnicodeMathSymbol{"1D68C}{\mttc }{\mathalpha}{mathematical monospace small c}%
+\UnicodeMathSymbol{"1D68D}{\mttd }{\mathalpha}{mathematical monospace small d}%
+\UnicodeMathSymbol{"1D68E}{\mtte }{\mathalpha}{mathematical monospace small e}%
+\UnicodeMathSymbol{"1D68F}{\mttf }{\mathalpha}{mathematical monospace small f}%
+\UnicodeMathSymbol{"1D690}{\mttg }{\mathalpha}{mathematical monospace small g}%
+\UnicodeMathSymbol{"1D691}{\mtth }{\mathalpha}{mathematical monospace small h}%
+\UnicodeMathSymbol{"1D692}{\mtti }{\mathalpha}{mathematical monospace small i}%
+\UnicodeMathSymbol{"1D693}{\mttj }{\mathalpha}{mathematical monospace small j}%
+\UnicodeMathSymbol{"1D694}{\mttk }{\mathalpha}{mathematical monospace small k}%
+\UnicodeMathSymbol{"1D695}{\mttl }{\mathalpha}{mathematical monospace small l}%
+\UnicodeMathSymbol{"1D696}{\mttm }{\mathalpha}{mathematical monospace small m}%
+\UnicodeMathSymbol{"1D697}{\mttn }{\mathalpha}{mathematical monospace small n}%
+\UnicodeMathSymbol{"1D698}{\mtto }{\mathalpha}{mathematical monospace small o}%
+\UnicodeMathSymbol{"1D699}{\mttp }{\mathalpha}{mathematical monospace small p}%
+\UnicodeMathSymbol{"1D69A}{\mttq }{\mathalpha}{mathematical monospace small q}%
+\UnicodeMathSymbol{"1D69B}{\mttr }{\mathalpha}{mathematical monospace small r}%
+\UnicodeMathSymbol{"1D69C}{\mtts }{\mathalpha}{mathematical monospace small s}%
+\UnicodeMathSymbol{"1D69D}{\mttt }{\mathalpha}{mathematical monospace small t}%
+\UnicodeMathSymbol{"1D69E}{\mttu }{\mathalpha}{mathematical monospace small u}%
+\UnicodeMathSymbol{"1D69F}{\mttv }{\mathalpha}{mathematical monospace small v}%
+\UnicodeMathSymbol{"1D6A0}{\mttw }{\mathalpha}{mathematical monospace small w}%
+\UnicodeMathSymbol{"1D6A1}{\mttx }{\mathalpha}{mathematical monospace small x}%
+\UnicodeMathSymbol{"1D6A2}{\mtty }{\mathalpha}{mathematical monospace small y}%
+\UnicodeMathSymbol{"1D6A3}{\mttz }{\mathalpha}{mathematical monospace small z}%
+\UnicodeMathSymbol{"1D6A4}{\imath }{\mathalpha}{mathematical italic small dotless i}%
+\UnicodeMathSymbol{"1D6A5}{\jmath }{\mathalpha}{mathematical italic small dotless j}%
+\UnicodeMathSymbol{"1D6A8}{\mbfAlpha }{\mathalpha}{mathematical bold capital alpha}%
+\UnicodeMathSymbol{"1D6A9}{\mbfBeta }{\mathalpha}{mathematical bold capital beta}%
+\UnicodeMathSymbol{"1D6AA}{\mbfGamma }{\mathalpha}{mathematical bold capital gamma}%
+\UnicodeMathSymbol{"1D6AB}{\mbfDelta }{\mathalpha}{mathematical bold capital delta}%
+\UnicodeMathSymbol{"1D6AC}{\mbfEpsilon }{\mathalpha}{mathematical bold capital epsilon}%
+\UnicodeMathSymbol{"1D6AD}{\mbfZeta }{\mathalpha}{mathematical bold capital zeta}%
+\UnicodeMathSymbol{"1D6AE}{\mbfEta }{\mathalpha}{mathematical bold capital eta}%
+\UnicodeMathSymbol{"1D6AF}{\mbfTheta }{\mathalpha}{mathematical bold capital theta}%
+\UnicodeMathSymbol{"1D6B0}{\mbfIota }{\mathalpha}{mathematical bold capital iota}%
+\UnicodeMathSymbol{"1D6B1}{\mbfKappa }{\mathalpha}{mathematical bold capital kappa}%
+\UnicodeMathSymbol{"1D6B2}{\mbfLambda }{\mathalpha}{mathematical bold capital lambda}%
+\UnicodeMathSymbol{"1D6B3}{\mbfMu }{\mathalpha}{mathematical bold capital mu}%
+\UnicodeMathSymbol{"1D6B4}{\mbfNu }{\mathalpha}{mathematical bold capital nu}%
+\UnicodeMathSymbol{"1D6B5}{\mbfXi }{\mathalpha}{mathematical bold capital xi}%
+\UnicodeMathSymbol{"1D6B6}{\mbfOmicron }{\mathalpha}{mathematical bold capital omicron}%
+\UnicodeMathSymbol{"1D6B7}{\mbfPi }{\mathalpha}{mathematical bold capital pi}%
+\UnicodeMathSymbol{"1D6B8}{\mbfRho }{\mathalpha}{mathematical bold capital rho}%
+\UnicodeMathSymbol{"1D6B9}{\mbfvarTheta }{\mathalpha}{mathematical bold capital theta symbol}%
+\UnicodeMathSymbol{"1D6BA}{\mbfSigma }{\mathalpha}{mathematical bold capital sigma}%
+\UnicodeMathSymbol{"1D6BB}{\mbfTau }{\mathalpha}{mathematical bold capital tau}%
+\UnicodeMathSymbol{"1D6BC}{\mbfUpsilon }{\mathalpha}{mathematical bold capital upsilon}%
+\UnicodeMathSymbol{"1D6BD}{\mbfPhi }{\mathalpha}{mathematical bold capital phi}%
+\UnicodeMathSymbol{"1D6BE}{\mbfChi }{\mathalpha}{mathematical bold capital chi}%
+\UnicodeMathSymbol{"1D6BF}{\mbfPsi }{\mathalpha}{mathematical bold capital psi}%
+\UnicodeMathSymbol{"1D6C0}{\mbfOmega }{\mathalpha}{mathematical bold capital omega}%
+\UnicodeMathSymbol{"1D6C1}{\mbfnabla }{\mathord}{mathematical bold nabla}%
+\UnicodeMathSymbol{"1D6C2}{\mbfalpha }{\mathalpha}{mathematical bold small alpha}%
+\UnicodeMathSymbol{"1D6C3}{\mbfbeta }{\mathalpha}{mathematical bold small beta}%
+\UnicodeMathSymbol{"1D6C4}{\mbfgamma }{\mathalpha}{mathematical bold small gamma}%
+\UnicodeMathSymbol{"1D6C5}{\mbfdelta }{\mathalpha}{mathematical bold small delta}%
+\UnicodeMathSymbol{"1D6C6}{\mbfepsilon }{\mathalpha}{mathematical bold small epsilon}%
+\UnicodeMathSymbol{"1D6C7}{\mbfzeta }{\mathalpha}{mathematical bold small zeta}%
+\UnicodeMathSymbol{"1D6C8}{\mbfeta }{\mathalpha}{mathematical bold small eta}%
+\UnicodeMathSymbol{"1D6C9}{\mbftheta }{\mathalpha}{mathematical bold small theta}%
+\UnicodeMathSymbol{"1D6CA}{\mbfiota }{\mathalpha}{mathematical bold small iota}%
+\UnicodeMathSymbol{"1D6CB}{\mbfkappa }{\mathalpha}{mathematical bold small kappa}%
+\UnicodeMathSymbol{"1D6CC}{\mbflambda }{\mathalpha}{mathematical bold small lambda}%
+\UnicodeMathSymbol{"1D6CD}{\mbfmu }{\mathalpha}{mathematical bold small mu}%
+\UnicodeMathSymbol{"1D6CE}{\mbfnu }{\mathalpha}{mathematical bold small nu}%
+\UnicodeMathSymbol{"1D6CF}{\mbfxi }{\mathalpha}{mathematical bold small xi}%
+\UnicodeMathSymbol{"1D6D0}{\mbfomicron }{\mathalpha}{mathematical bold small omicron}%
+\UnicodeMathSymbol{"1D6D1}{\mbfpi }{\mathalpha}{mathematical bold small pi}%
+\UnicodeMathSymbol{"1D6D2}{\mbfrho }{\mathalpha}{mathematical bold small rho}%
+\UnicodeMathSymbol{"1D6D3}{\mbfvarsigma }{\mathalpha}{mathematical bold small final sigma}%
+\UnicodeMathSymbol{"1D6D4}{\mbfsigma }{\mathalpha}{mathematical bold small sigma}%
+\UnicodeMathSymbol{"1D6D5}{\mbftau }{\mathalpha}{mathematical bold small tau}%
+\UnicodeMathSymbol{"1D6D6}{\mbfupsilon }{\mathalpha}{mathematical bold small upsilon}%
+\UnicodeMathSymbol{"1D6D7}{\mbfvarphi }{\mathalpha}{mathematical bold small phi}%
+\UnicodeMathSymbol{"1D6D8}{\mbfchi }{\mathalpha}{mathematical bold small chi}%
+\UnicodeMathSymbol{"1D6D9}{\mbfpsi }{\mathalpha}{mathematical bold small psi}%
+\UnicodeMathSymbol{"1D6DA}{\mbfomega }{\mathalpha}{mathematical bold small omega}%
+\UnicodeMathSymbol{"1D6DB}{\mbfpartial }{\mathord}{mathematical bold partial differential}%
+\UnicodeMathSymbol{"1D6DC}{\mbfvarepsilon }{\mathalpha}{mathematical bold epsilon symbol}%
+\UnicodeMathSymbol{"1D6DD}{\mbfvartheta }{\mathalpha}{mathematical bold theta symbol}%
+\UnicodeMathSymbol{"1D6DE}{\mbfvarkappa }{\mathalpha}{mathematical bold kappa symbol}%
+\UnicodeMathSymbol{"1D6DF}{\mbfphi }{\mathalpha}{mathematical bold phi symbol}%
+\UnicodeMathSymbol{"1D6E0}{\mbfvarrho }{\mathalpha}{mathematical bold rho symbol}%
+\UnicodeMathSymbol{"1D6E1}{\mbfvarpi }{\mathalpha}{mathematical bold pi symbol}%
+\UnicodeMathSymbol{"1D6E2}{\mitAlpha }{\mathalpha}{mathematical italic capital alpha}%
+\UnicodeMathSymbol{"1D6E3}{\mitBeta }{\mathalpha}{mathematical italic capital beta}%
+\UnicodeMathSymbol{"1D6E4}{\mitGamma }{\mathalpha}{mathematical italic capital gamma}%
+\UnicodeMathSymbol{"1D6E5}{\mitDelta }{\mathalpha}{mathematical italic capital delta}%
+\UnicodeMathSymbol{"1D6E6}{\mitEpsilon }{\mathalpha}{mathematical italic capital epsilon}%
+\UnicodeMathSymbol{"1D6E7}{\mitZeta }{\mathalpha}{mathematical italic capital zeta}%
+\UnicodeMathSymbol{"1D6E8}{\mitEta }{\mathalpha}{mathematical italic capital eta}%
+\UnicodeMathSymbol{"1D6E9}{\mitTheta }{\mathalpha}{mathematical italic capital theta}%
+\UnicodeMathSymbol{"1D6EA}{\mitIota }{\mathalpha}{mathematical italic capital iota}%
+\UnicodeMathSymbol{"1D6EB}{\mitKappa }{\mathalpha}{mathematical italic capital kappa}%
+\UnicodeMathSymbol{"1D6EC}{\mitLambda }{\mathalpha}{mathematical italic capital lambda}%
+\UnicodeMathSymbol{"1D6ED}{\mitMu }{\mathalpha}{mathematical italic capital mu}%
+\UnicodeMathSymbol{"1D6EE}{\mitNu }{\mathalpha}{mathematical italic capital nu}%
+\UnicodeMathSymbol{"1D6EF}{\mitXi }{\mathalpha}{mathematical italic capital xi}%
+\UnicodeMathSymbol{"1D6F0}{\mitOmicron }{\mathalpha}{mathematical italic capital omicron}%
+\UnicodeMathSymbol{"1D6F1}{\mitPi }{\mathalpha}{mathematical italic capital pi}%
+\UnicodeMathSymbol{"1D6F2}{\mitRho }{\mathalpha}{mathematical italic capital rho}%
+\UnicodeMathSymbol{"1D6F3}{\mitvarTheta }{\mathalpha}{mathematical italic capital theta symbol}%
+\UnicodeMathSymbol{"1D6F4}{\mitSigma }{\mathalpha}{mathematical italic capital sigma}%
+\UnicodeMathSymbol{"1D6F5}{\mitTau }{\mathalpha}{mathematical italic capital tau}%
+\UnicodeMathSymbol{"1D6F6}{\mitUpsilon }{\mathalpha}{mathematical italic capital upsilon}%
+\UnicodeMathSymbol{"1D6F7}{\mitPhi }{\mathalpha}{mathematical italic capital phi}%
+\UnicodeMathSymbol{"1D6F8}{\mitChi }{\mathalpha}{mathematical italic capital chi}%
+\UnicodeMathSymbol{"1D6F9}{\mitPsi }{\mathalpha}{mathematical italic capital psi}%
+\UnicodeMathSymbol{"1D6FA}{\mitOmega }{\mathalpha}{mathematical italic capital omega}%
+\UnicodeMathSymbol{"1D6FB}{\mitnabla }{\mathord}{mathematical italic nabla}%
+\UnicodeMathSymbol{"1D6FC}{\mitalpha }{\mathalpha}{mathematical italic small alpha}%
+\UnicodeMathSymbol{"1D6FD}{\mitbeta }{\mathalpha}{mathematical italic small beta}%
+\UnicodeMathSymbol{"1D6FE}{\mitgamma }{\mathalpha}{mathematical italic small gamma}%
+\UnicodeMathSymbol{"1D6FF}{\mitdelta }{\mathalpha}{mathematical italic small delta}%
+\UnicodeMathSymbol{"1D700}{\mitepsilon }{\mathalpha}{mathematical italic small epsilon}%
+\UnicodeMathSymbol{"1D701}{\mitzeta }{\mathalpha}{mathematical italic small zeta}%
+\UnicodeMathSymbol{"1D702}{\miteta }{\mathalpha}{mathematical italic small eta}%
+\UnicodeMathSymbol{"1D703}{\mittheta }{\mathalpha}{mathematical italic small theta}%
+\UnicodeMathSymbol{"1D704}{\mitiota }{\mathalpha}{mathematical italic small iota}%
+\UnicodeMathSymbol{"1D705}{\mitkappa }{\mathalpha}{mathematical italic small kappa}%
+\UnicodeMathSymbol{"1D706}{\mitlambda }{\mathalpha}{mathematical italic small lambda}%
+\UnicodeMathSymbol{"1D707}{\mitmu }{\mathalpha}{mathematical italic small mu}%
+\UnicodeMathSymbol{"1D708}{\mitnu }{\mathalpha}{mathematical italic small nu}%
+\UnicodeMathSymbol{"1D709}{\mitxi }{\mathalpha}{mathematical italic small xi}%
+\UnicodeMathSymbol{"1D70A}{\mitomicron }{\mathalpha}{mathematical italic small omicron}%
+\UnicodeMathSymbol{"1D70B}{\mitpi }{\mathalpha}{mathematical italic small pi}%
+\UnicodeMathSymbol{"1D70C}{\mitrho }{\mathalpha}{mathematical italic small rho}%
+\UnicodeMathSymbol{"1D70D}{\mitvarsigma }{\mathalpha}{mathematical italic small final sigma}%
+\UnicodeMathSymbol{"1D70E}{\mitsigma }{\mathalpha}{mathematical italic small sigma}%
+\UnicodeMathSymbol{"1D70F}{\mittau }{\mathalpha}{mathematical italic small tau}%
+\UnicodeMathSymbol{"1D710}{\mitupsilon }{\mathalpha}{mathematical italic small upsilon}%
+\UnicodeMathSymbol{"1D711}{\mitphi }{\mathalpha}{mathematical italic small phi}%
+\UnicodeMathSymbol{"1D712}{\mitchi }{\mathalpha}{mathematical italic small chi}%
+\UnicodeMathSymbol{"1D713}{\mitpsi }{\mathalpha}{mathematical italic small psi}%
+\UnicodeMathSymbol{"1D714}{\mitomega }{\mathalpha}{mathematical italic small omega}%
+\UnicodeMathSymbol{"1D715}{\mitpartial }{\mathord}{mathematical italic partial differential}%
+\UnicodeMathSymbol{"1D716}{\mitvarepsilon }{\mathalpha}{mathematical italic epsilon symbol}%
+\UnicodeMathSymbol{"1D717}{\mitvartheta }{\mathalpha}{mathematical italic theta symbol}%
+\UnicodeMathSymbol{"1D718}{\mitvarkappa }{\mathalpha}{mathematical italic kappa symbol}%
+\UnicodeMathSymbol{"1D719}{\mitvarphi }{\mathalpha}{mathematical italic phi symbol}%
+\UnicodeMathSymbol{"1D71A}{\mitvarrho }{\mathalpha}{mathematical italic rho symbol}%
+\UnicodeMathSymbol{"1D71B}{\mitvarpi }{\mathalpha}{mathematical italic pi symbol}%
+\UnicodeMathSymbol{"1D71C}{\mbfitAlpha }{\mathalpha}{mathematical bold italic capital alpha}%
+\UnicodeMathSymbol{"1D71D}{\mbfitBeta }{\mathalpha}{mathematical bold italic capital beta}%
+\UnicodeMathSymbol{"1D71E}{\mbfitGamma }{\mathalpha}{mathematical bold italic capital gamma}%
+\UnicodeMathSymbol{"1D71F}{\mbfitDelta }{\mathalpha}{mathematical bold italic capital delta}%
+\UnicodeMathSymbol{"1D720}{\mbfitEpsilon }{\mathalpha}{mathematical bold italic capital epsilon}%
+\UnicodeMathSymbol{"1D721}{\mbfitZeta }{\mathalpha}{mathematical bold italic capital zeta}%
+\UnicodeMathSymbol{"1D722}{\mbfitEta }{\mathalpha}{mathematical bold italic capital eta}%
+\UnicodeMathSymbol{"1D723}{\mbfitTheta }{\mathalpha}{mathematical bold italic capital theta}%
+\UnicodeMathSymbol{"1D724}{\mbfitIota }{\mathalpha}{mathematical bold italic capital iota}%
+\UnicodeMathSymbol{"1D725}{\mbfitKappa }{\mathalpha}{mathematical bold italic capital kappa}%
+\UnicodeMathSymbol{"1D726}{\mbfitLambda }{\mathalpha}{mathematical bold italic capital lambda}%
+\UnicodeMathSymbol{"1D727}{\mbfitMu }{\mathalpha}{mathematical bold italic capital mu}%
+\UnicodeMathSymbol{"1D728}{\mbfitNu }{\mathalpha}{mathematical bold italic capital nu}%
+\UnicodeMathSymbol{"1D729}{\mbfitXi }{\mathalpha}{mathematical bold italic capital xi}%
+\UnicodeMathSymbol{"1D72A}{\mbfitOmicron }{\mathalpha}{mathematical bold italic capital omicron}%
+\UnicodeMathSymbol{"1D72B}{\mbfitPi }{\mathalpha}{mathematical bold italic capital pi}%
+\UnicodeMathSymbol{"1D72C}{\mbfitRho }{\mathalpha}{mathematical bold italic capital rho}%
+\UnicodeMathSymbol{"1D72D}{\mbfitvarTheta }{\mathalpha}{mathematical bold italic capital theta symbol}%
+\UnicodeMathSymbol{"1D72E}{\mbfitSigma }{\mathalpha}{mathematical bold italic capital sigma}%
+\UnicodeMathSymbol{"1D72F}{\mbfitTau }{\mathalpha}{mathematical bold italic capital tau}%
+\UnicodeMathSymbol{"1D730}{\mbfitUpsilon }{\mathalpha}{mathematical bold italic capital upsilon}%
+\UnicodeMathSymbol{"1D731}{\mbfitPhi }{\mathalpha}{mathematical bold italic capital phi}%
+\UnicodeMathSymbol{"1D732}{\mbfitChi }{\mathalpha}{mathematical bold italic capital chi}%
+\UnicodeMathSymbol{"1D733}{\mbfitPsi }{\mathalpha}{mathematical bold italic capital psi}%
+\UnicodeMathSymbol{"1D734}{\mbfitOmega }{\mathalpha}{mathematical bold italic capital omega}%
+\UnicodeMathSymbol{"1D735}{\mbfitnabla }{\mathord}{mathematical bold italic nabla}%
+\UnicodeMathSymbol{"1D736}{\mbfitalpha }{\mathalpha}{mathematical bold italic small alpha}%
+\UnicodeMathSymbol{"1D737}{\mbfitbeta }{\mathalpha}{mathematical bold italic small beta}%
+\UnicodeMathSymbol{"1D738}{\mbfitgamma }{\mathalpha}{mathematical bold italic small gamma}%
+\UnicodeMathSymbol{"1D739}{\mbfitdelta }{\mathalpha}{mathematical bold italic small delta}%
+\UnicodeMathSymbol{"1D73A}{\mbfitepsilon }{\mathalpha}{mathematical bold italic small epsilon}%
+\UnicodeMathSymbol{"1D73B}{\mbfitzeta }{\mathalpha}{mathematical bold italic small zeta}%
+\UnicodeMathSymbol{"1D73C}{\mbfiteta }{\mathalpha}{mathematical bold italic small eta}%
+\UnicodeMathSymbol{"1D73D}{\mbfittheta }{\mathalpha}{mathematical bold italic small theta}%
+\UnicodeMathSymbol{"1D73E}{\mbfitiota }{\mathalpha}{mathematical bold italic small iota}%
+\UnicodeMathSymbol{"1D73F}{\mbfitkappa }{\mathalpha}{mathematical bold italic small kappa}%
+\UnicodeMathSymbol{"1D740}{\mbfitlambda }{\mathalpha}{mathematical bold italic small lambda}%
+\UnicodeMathSymbol{"1D741}{\mbfitmu }{\mathalpha}{mathematical bold italic small mu}%
+\UnicodeMathSymbol{"1D742}{\mbfitnu }{\mathalpha}{mathematical bold italic small nu}%
+\UnicodeMathSymbol{"1D743}{\mbfitxi }{\mathalpha}{mathematical bold italic small xi}%
+\UnicodeMathSymbol{"1D744}{\mbfitomicron }{\mathalpha}{mathematical bold italic small omicron}%
+\UnicodeMathSymbol{"1D745}{\mbfitpi }{\mathalpha}{mathematical bold italic small pi}%
+\UnicodeMathSymbol{"1D746}{\mbfitrho }{\mathalpha}{mathematical bold italic small rho}%
+\UnicodeMathSymbol{"1D747}{\mbfitvarsigma }{\mathalpha}{mathematical bold italic small final sigma}%
+\UnicodeMathSymbol{"1D748}{\mbfitsigma }{\mathalpha}{mathematical bold italic small sigma}%
+\UnicodeMathSymbol{"1D749}{\mbfittau }{\mathalpha}{mathematical bold italic small tau}%
+\UnicodeMathSymbol{"1D74A}{\mbfitupsilon }{\mathalpha}{mathematical bold italic small upsilon}%
+\UnicodeMathSymbol{"1D74B}{\mbfitphi }{\mathalpha}{mathematical bold italic small phi}%
+\UnicodeMathSymbol{"1D74C}{\mbfitchi }{\mathalpha}{mathematical bold italic small chi}%
+\UnicodeMathSymbol{"1D74D}{\mbfitpsi }{\mathalpha}{mathematical bold italic small psi}%
+\UnicodeMathSymbol{"1D74E}{\mbfitomega }{\mathalpha}{mathematical bold italic small omega}%
+\UnicodeMathSymbol{"1D74F}{\mbfitpartial }{\mathord}{mathematical bold italic partial differential}%
+\UnicodeMathSymbol{"1D750}{\mbfitvarepsilon }{\mathalpha}{mathematical bold italic epsilon symbol}%
+\UnicodeMathSymbol{"1D751}{\mbfitvartheta }{\mathalpha}{mathematical bold italic theta symbol}%
+\UnicodeMathSymbol{"1D752}{\mbfitvarkappa }{\mathalpha}{mathematical bold italic kappa symbol}%
+\UnicodeMathSymbol{"1D753}{\mbfitvarphi }{\mathalpha}{mathematical bold italic phi symbol}%
+\UnicodeMathSymbol{"1D754}{\mbfitvarrho }{\mathalpha}{mathematical bold italic rho symbol}%
+\UnicodeMathSymbol{"1D755}{\mbfitvarpi }{\mathalpha}{mathematical bold italic pi symbol}%
+\UnicodeMathSymbol{"1D756}{\mbfsansAlpha }{\mathalpha}{mathematical sans-serif bold capital alpha}%
+\UnicodeMathSymbol{"1D757}{\mbfsansBeta }{\mathalpha}{mathematical sans-serif bold capital beta}%
+\UnicodeMathSymbol{"1D758}{\mbfsansGamma }{\mathalpha}{mathematical sans-serif bold capital gamma}%
+\UnicodeMathSymbol{"1D759}{\mbfsansDelta }{\mathalpha}{mathematical sans-serif bold capital delta}%
+\UnicodeMathSymbol{"1D75A}{\mbfsansEpsilon }{\mathalpha}{mathematical sans-serif bold capital epsilon}%
+\UnicodeMathSymbol{"1D75B}{\mbfsansZeta }{\mathalpha}{mathematical sans-serif bold capital zeta}%
+\UnicodeMathSymbol{"1D75C}{\mbfsansEta }{\mathalpha}{mathematical sans-serif bold capital eta}%
+\UnicodeMathSymbol{"1D75D}{\mbfsansTheta }{\mathalpha}{mathematical sans-serif bold capital theta}%
+\UnicodeMathSymbol{"1D75E}{\mbfsansIota }{\mathalpha}{mathematical sans-serif bold capital iota}%
+\UnicodeMathSymbol{"1D75F}{\mbfsansKappa }{\mathalpha}{mathematical sans-serif bold capital kappa}%
+\UnicodeMathSymbol{"1D760}{\mbfsansLambda }{\mathalpha}{mathematical sans-serif bold capital lambda}%
+\UnicodeMathSymbol{"1D761}{\mbfsansMu }{\mathalpha}{mathematical sans-serif bold capital mu}%
+\UnicodeMathSymbol{"1D762}{\mbfsansNu }{\mathalpha}{mathematical sans-serif bold capital nu}%
+\UnicodeMathSymbol{"1D763}{\mbfsansXi }{\mathalpha}{mathematical sans-serif bold capital xi}%
+\UnicodeMathSymbol{"1D764}{\mbfsansOmicron }{\mathalpha}{mathematical sans-serif bold capital omicron}%
+\UnicodeMathSymbol{"1D765}{\mbfsansPi }{\mathalpha}{mathematical sans-serif bold capital pi}%
+\UnicodeMathSymbol{"1D766}{\mbfsansRho }{\mathalpha}{mathematical sans-serif bold capital rho}%
+\UnicodeMathSymbol{"1D767}{\mbfsansvarTheta }{\mathalpha}{mathematical sans-serif bold capital theta symbol}%
+\UnicodeMathSymbol{"1D768}{\mbfsansSigma }{\mathalpha}{mathematical sans-serif bold capital sigma}%
+\UnicodeMathSymbol{"1D769}{\mbfsansTau }{\mathalpha}{mathematical sans-serif bold capital tau}%
+\UnicodeMathSymbol{"1D76A}{\mbfsansUpsilon }{\mathalpha}{mathematical sans-serif bold capital upsilon}%
+\UnicodeMathSymbol{"1D76B}{\mbfsansPhi }{\mathalpha}{mathematical sans-serif bold capital phi}%
+\UnicodeMathSymbol{"1D76C}{\mbfsansChi }{\mathalpha}{mathematical sans-serif bold capital chi}%
+\UnicodeMathSymbol{"1D76D}{\mbfsansPsi }{\mathalpha}{mathematical sans-serif bold capital psi}%
+\UnicodeMathSymbol{"1D76E}{\mbfsansOmega }{\mathalpha}{mathematical sans-serif bold capital omega}%
+\UnicodeMathSymbol{"1D76F}{\mbfsansnabla }{\mathord}{mathematical sans-serif bold nabla}%
+\UnicodeMathSymbol{"1D770}{\mbfsansalpha }{\mathalpha}{mathematical sans-serif bold small alpha}%
+\UnicodeMathSymbol{"1D771}{\mbfsansbeta }{\mathalpha}{mathematical sans-serif bold small beta}%
+\UnicodeMathSymbol{"1D772}{\mbfsansgamma }{\mathalpha}{mathematical sans-serif bold small gamma}%
+\UnicodeMathSymbol{"1D773}{\mbfsansdelta }{\mathalpha}{mathematical sans-serif bold small delta}%
+\UnicodeMathSymbol{"1D774}{\mbfsansepsilon }{\mathalpha}{mathematical sans-serif bold small epsilon}%
+\UnicodeMathSymbol{"1D775}{\mbfsanszeta }{\mathalpha}{mathematical sans-serif bold small zeta}%
+\UnicodeMathSymbol{"1D776}{\mbfsanseta }{\mathalpha}{mathematical sans-serif bold small eta}%
+\UnicodeMathSymbol{"1D777}{\mbfsanstheta }{\mathalpha}{mathematical sans-serif bold small theta}%
+\UnicodeMathSymbol{"1D778}{\mbfsansiota }{\mathalpha}{mathematical sans-serif bold small iota}%
+\UnicodeMathSymbol{"1D779}{\mbfsanskappa }{\mathalpha}{mathematical sans-serif bold small kappa}%
+\UnicodeMathSymbol{"1D77A}{\mbfsanslambda }{\mathalpha}{mathematical sans-serif bold small lambda}%
+\UnicodeMathSymbol{"1D77B}{\mbfsansmu }{\mathalpha}{mathematical sans-serif bold small mu}%
+\UnicodeMathSymbol{"1D77C}{\mbfsansnu }{\mathalpha}{mathematical sans-serif bold small nu}%
+\UnicodeMathSymbol{"1D77D}{\mbfsansxi }{\mathalpha}{mathematical sans-serif bold small xi}%
+\UnicodeMathSymbol{"1D77E}{\mbfsansomicron }{\mathalpha}{mathematical sans-serif bold small omicron}%
+\UnicodeMathSymbol{"1D77F}{\mbfsanspi }{\mathalpha}{mathematical sans-serif bold small pi}%
+\UnicodeMathSymbol{"1D780}{\mbfsansrho }{\mathalpha}{mathematical sans-serif bold small rho}%
+\UnicodeMathSymbol{"1D781}{\mbfsansvarsigma }{\mathalpha}{mathematical sans-serif bold small final sigma}%
+\UnicodeMathSymbol{"1D782}{\mbfsanssigma }{\mathalpha}{mathematical sans-serif bold small sigma}%
+\UnicodeMathSymbol{"1D783}{\mbfsanstau }{\mathalpha}{mathematical sans-serif bold small tau}%
+\UnicodeMathSymbol{"1D784}{\mbfsansupsilon }{\mathalpha}{mathematical sans-serif bold small upsilon}%
+\UnicodeMathSymbol{"1D785}{\mbfsansphi }{\mathalpha}{mathematical sans-serif bold small phi}%
+\UnicodeMathSymbol{"1D786}{\mbfsanschi }{\mathalpha}{mathematical sans-serif bold small chi}%
+\UnicodeMathSymbol{"1D787}{\mbfsanspsi }{\mathalpha}{mathematical sans-serif bold small psi}%
+\UnicodeMathSymbol{"1D788}{\mbfsansomega }{\mathalpha}{mathematical sans-serif bold small omega}%
+\UnicodeMathSymbol{"1D789}{\mbfsanspartial }{\mathord}{mathematical sans-serif bold partial differential}%
+\UnicodeMathSymbol{"1D78A}{\mbfsansvarepsilon }{\mathalpha}{mathematical sans-serif bold epsilon symbol}%
+\UnicodeMathSymbol{"1D78B}{\mbfsansvartheta }{\mathalpha}{mathematical sans-serif bold theta symbol}%
+\UnicodeMathSymbol{"1D78C}{\mbfsansvarkappa }{\mathalpha}{mathematical sans-serif bold kappa symbol}%
+\UnicodeMathSymbol{"1D78D}{\mbfsansvarphi }{\mathalpha}{mathematical sans-serif bold phi symbol}%
+\UnicodeMathSymbol{"1D78E}{\mbfsansvarrho }{\mathalpha}{mathematical sans-serif bold rho symbol}%
+\UnicodeMathSymbol{"1D78F}{\mbfsansvarpi }{\mathalpha}{mathematical sans-serif bold pi symbol}%
+\UnicodeMathSymbol{"1D790}{\mbfitsansAlpha }{\mathalpha}{mathematical sans-serif bold italic capital alpha}%
+\UnicodeMathSymbol{"1D791}{\mbfitsansBeta }{\mathalpha}{mathematical sans-serif bold italic capital beta}%
+\UnicodeMathSymbol{"1D792}{\mbfitsansGamma }{\mathalpha}{mathematical sans-serif bold italic capital gamma}%
+\UnicodeMathSymbol{"1D793}{\mbfitsansDelta }{\mathalpha}{mathematical sans-serif bold italic capital delta}%
+\UnicodeMathSymbol{"1D794}{\mbfitsansEpsilon }{\mathalpha}{mathematical sans-serif bold italic capital epsilon}%
+\UnicodeMathSymbol{"1D795}{\mbfitsansZeta }{\mathalpha}{mathematical sans-serif bold italic capital zeta}%
+\UnicodeMathSymbol{"1D796}{\mbfitsansEta }{\mathalpha}{mathematical sans-serif bold italic capital eta}%
+\UnicodeMathSymbol{"1D797}{\mbfitsansTheta }{\mathalpha}{mathematical sans-serif bold italic capital theta}%
+\UnicodeMathSymbol{"1D798}{\mbfitsansIota }{\mathalpha}{mathematical sans-serif bold italic capital iota}%
+\UnicodeMathSymbol{"1D799}{\mbfitsansKappa }{\mathalpha}{mathematical sans-serif bold italic capital kappa}%
+\UnicodeMathSymbol{"1D79A}{\mbfitsansLambda }{\mathalpha}{mathematical sans-serif bold italic capital lambda}%
+\UnicodeMathSymbol{"1D79B}{\mbfitsansMu }{\mathalpha}{mathematical sans-serif bold italic capital mu}%
+\UnicodeMathSymbol{"1D79C}{\mbfitsansNu }{\mathalpha}{mathematical sans-serif bold italic capital nu}%
+\UnicodeMathSymbol{"1D79D}{\mbfitsansXi }{\mathalpha}{mathematical sans-serif bold italic capital xi}%
+\UnicodeMathSymbol{"1D79E}{\mbfitsansOmicron }{\mathalpha}{mathematical sans-serif bold italic capital omicron}%
+\UnicodeMathSymbol{"1D79F}{\mbfitsansPi }{\mathalpha}{mathematical sans-serif bold italic capital pi}%
+\UnicodeMathSymbol{"1D7A0}{\mbfitsansRho }{\mathalpha}{mathematical sans-serif bold italic capital rho}%
+\UnicodeMathSymbol{"1D7A1}{\mbfitsansvarTheta }{\mathalpha}{mathematical sans-serif bold italic capital theta symbol}%
+\UnicodeMathSymbol{"1D7A2}{\mbfitsansSigma }{\mathalpha}{mathematical sans-serif bold italic capital sigma}%
+\UnicodeMathSymbol{"1D7A3}{\mbfitsansTau }{\mathalpha}{mathematical sans-serif bold italic capital tau}%
+\UnicodeMathSymbol{"1D7A4}{\mbfitsansUpsilon }{\mathalpha}{mathematical sans-serif bold italic capital upsilon}%
+\UnicodeMathSymbol{"1D7A5}{\mbfitsansPhi }{\mathalpha}{mathematical sans-serif bold italic capital phi}%
+\UnicodeMathSymbol{"1D7A6}{\mbfitsansChi }{\mathalpha}{mathematical sans-serif bold italic capital chi}%
+\UnicodeMathSymbol{"1D7A7}{\mbfitsansPsi }{\mathalpha}{mathematical sans-serif bold italic capital psi}%
+\UnicodeMathSymbol{"1D7A8}{\mbfitsansOmega }{\mathalpha}{mathematical sans-serif bold italic capital omega}%
+\UnicodeMathSymbol{"1D7A9}{\mbfitsansnabla }{\mathord}{mathematical sans-serif bold italic nabla}%
+\UnicodeMathSymbol{"1D7AA}{\mbfitsansalpha }{\mathalpha}{mathematical sans-serif bold italic small alpha}%
+\UnicodeMathSymbol{"1D7AB}{\mbfitsansbeta }{\mathalpha}{mathematical sans-serif bold italic small beta}%
+\UnicodeMathSymbol{"1D7AC}{\mbfitsansgamma }{\mathalpha}{mathematical sans-serif bold italic small gamma}%
+\UnicodeMathSymbol{"1D7AD}{\mbfitsansdelta }{\mathalpha}{mathematical sans-serif bold italic small delta}%
+\UnicodeMathSymbol{"1D7AE}{\mbfitsansepsilon }{\mathalpha}{mathematical sans-serif bold italic small epsilon}%
+\UnicodeMathSymbol{"1D7AF}{\mbfitsanszeta }{\mathalpha}{mathematical sans-serif bold italic small zeta}%
+\UnicodeMathSymbol{"1D7B0}{\mbfitsanseta }{\mathalpha}{mathematical sans-serif bold italic small eta}%
+\UnicodeMathSymbol{"1D7B1}{\mbfitsanstheta }{\mathalpha}{mathematical sans-serif bold italic small theta}%
+\UnicodeMathSymbol{"1D7B2}{\mbfitsansiota }{\mathalpha}{mathematical sans-serif bold italic small iota}%
+\UnicodeMathSymbol{"1D7B3}{\mbfitsanskappa }{\mathalpha}{mathematical sans-serif bold italic small kappa}%
+\UnicodeMathSymbol{"1D7B4}{\mbfitsanslambda }{\mathalpha}{mathematical sans-serif bold italic small lambda}%
+\UnicodeMathSymbol{"1D7B5}{\mbfitsansmu }{\mathalpha}{mathematical sans-serif bold italic small mu}%
+\UnicodeMathSymbol{"1D7B6}{\mbfitsansnu }{\mathalpha}{mathematical sans-serif bold italic small nu}%
+\UnicodeMathSymbol{"1D7B7}{\mbfitsansxi }{\mathalpha}{mathematical sans-serif bold italic small xi}%
+\UnicodeMathSymbol{"1D7B8}{\mbfitsansomicron }{\mathalpha}{mathematical sans-serif bold italic small omicron}%
+\UnicodeMathSymbol{"1D7B9}{\mbfitsanspi }{\mathalpha}{mathematical sans-serif bold italic small pi}%
+\UnicodeMathSymbol{"1D7BA}{\mbfitsansrho }{\mathalpha}{mathematical sans-serif bold italic small rho}%
+\UnicodeMathSymbol{"1D7BB}{\mbfitsansvarsigma }{\mathalpha}{mathematical sans-serif bold italic small final sigma}%
+\UnicodeMathSymbol{"1D7BC}{\mbfitsanssigma }{\mathalpha}{mathematical sans-serif bold italic small sigma}%
+\UnicodeMathSymbol{"1D7BD}{\mbfitsanstau }{\mathalpha}{mathematical sans-serif bold italic small tau}%
+\UnicodeMathSymbol{"1D7BE}{\mbfitsansupsilon }{\mathalpha}{mathematical sans-serif bold italic small upsilon}%
+\UnicodeMathSymbol{"1D7BF}{\mbfitsansphi }{\mathalpha}{mathematical sans-serif bold italic small phi}%
+\UnicodeMathSymbol{"1D7C0}{\mbfitsanschi }{\mathalpha}{mathematical sans-serif bold italic small chi}%
+\UnicodeMathSymbol{"1D7C1}{\mbfitsanspsi }{\mathalpha}{mathematical sans-serif bold italic small psi}%
+\UnicodeMathSymbol{"1D7C2}{\mbfitsansomega }{\mathalpha}{mathematical sans-serif bold italic small omega}%
+\UnicodeMathSymbol{"1D7C3}{\mbfitsanspartial }{\mathord}{mathematical sans-serif bold italic partial differential}%
+\UnicodeMathSymbol{"1D7C4}{\mbfitsansvarepsilon }{\mathalpha}{mathematical sans-serif bold italic epsilon symbol}%
+\UnicodeMathSymbol{"1D7C5}{\mbfitsansvartheta }{\mathalpha}{mathematical sans-serif bold italic theta symbol}%
+\UnicodeMathSymbol{"1D7C6}{\mbfitsansvarkappa }{\mathalpha}{mathematical sans-serif bold italic kappa symbol}%
+\UnicodeMathSymbol{"1D7C7}{\mbfitsansvarphi }{\mathalpha}{mathematical sans-serif bold italic phi symbol}%
+\UnicodeMathSymbol{"1D7C8}{\mbfitsansvarrho }{\mathalpha}{mathematical sans-serif bold italic rho symbol}%
+\UnicodeMathSymbol{"1D7C9}{\mbfitsansvarpi }{\mathalpha}{mathematical sans-serif bold italic pi symbol}%
+\UnicodeMathSymbol{"1D7CA}{\mbfDigamma }{\mathalpha}{mathematical bold capital digamma}%
+\UnicodeMathSymbol{"1D7CB}{\mbfdigamma }{\mathalpha}{mathematical bold small digamma}%
+\UnicodeMathSymbol{"1D7CE}{\mbfzero }{\mathord}{mathematical bold digit 0}%
+\UnicodeMathSymbol{"1D7CF}{\mbfone }{\mathord}{mathematical bold digit 1}%
+\UnicodeMathSymbol{"1D7D0}{\mbftwo }{\mathord}{mathematical bold digit 2}%
+\UnicodeMathSymbol{"1D7D1}{\mbfthree }{\mathord}{mathematical bold digit 3}%
+\UnicodeMathSymbol{"1D7D2}{\mbffour }{\mathord}{mathematical bold digit 4}%
+\UnicodeMathSymbol{"1D7D3}{\mbffive }{\mathord}{mathematical bold digit 5}%
+\UnicodeMathSymbol{"1D7D4}{\mbfsix }{\mathord}{mathematical bold digit 6}%
+\UnicodeMathSymbol{"1D7D5}{\mbfseven }{\mathord}{mathematical bold digit 7}%
+\UnicodeMathSymbol{"1D7D6}{\mbfeight }{\mathord}{mathematical bold digit 8}%
+\UnicodeMathSymbol{"1D7D7}{\mbfnine }{\mathord}{mathematical bold digit 9}%
+\UnicodeMathSymbol{"1D7D8}{\Bbbzero }{\mathord}{mathematical double-struck digit 0}%
+\UnicodeMathSymbol{"1D7D9}{\Bbbone }{\mathord}{mathematical double-struck digit 1}%
+\UnicodeMathSymbol{"1D7DA}{\Bbbtwo }{\mathord}{mathematical double-struck digit 2}%
+\UnicodeMathSymbol{"1D7DB}{\Bbbthree }{\mathord}{mathematical double-struck digit 3}%
+\UnicodeMathSymbol{"1D7DC}{\Bbbfour }{\mathord}{mathematical double-struck digit 4}%
+\UnicodeMathSymbol{"1D7DD}{\Bbbfive }{\mathord}{mathematical double-struck digit 5}%
+\UnicodeMathSymbol{"1D7DE}{\Bbbsix }{\mathord}{mathematical double-struck digit 6}%
+\UnicodeMathSymbol{"1D7DF}{\Bbbseven }{\mathord}{mathematical double-struck digit 7}%
+\UnicodeMathSymbol{"1D7E0}{\Bbbeight }{\mathord}{mathematical double-struck digit 8}%
+\UnicodeMathSymbol{"1D7E1}{\Bbbnine }{\mathord}{mathematical double-struck digit 9}%
+\UnicodeMathSymbol{"1D7E2}{\msanszero }{\mathord}{mathematical sans-serif digit 0}%
+\UnicodeMathSymbol{"1D7E3}{\msansone }{\mathord}{mathematical sans-serif digit 1}%
+\UnicodeMathSymbol{"1D7E4}{\msanstwo }{\mathord}{mathematical sans-serif digit 2}%
+\UnicodeMathSymbol{"1D7E5}{\msansthree }{\mathord}{mathematical sans-serif digit 3}%
+\UnicodeMathSymbol{"1D7E6}{\msansfour }{\mathord}{mathematical sans-serif digit 4}%
+\UnicodeMathSymbol{"1D7E7}{\msansfive }{\mathord}{mathematical sans-serif digit 5}%
+\UnicodeMathSymbol{"1D7E8}{\msanssix }{\mathord}{mathematical sans-serif digit 6}%
+\UnicodeMathSymbol{"1D7E9}{\msansseven }{\mathord}{mathematical sans-serif digit 7}%
+\UnicodeMathSymbol{"1D7EA}{\msanseight }{\mathord}{mathematical sans-serif digit 8}%
+\UnicodeMathSymbol{"1D7EB}{\msansnine }{\mathord}{mathematical sans-serif digit 9}%
+\UnicodeMathSymbol{"1D7EC}{\mbfsanszero }{\mathord}{mathematical sans-serif bold digit 0}%
+\UnicodeMathSymbol{"1D7ED}{\mbfsansone }{\mathord}{mathematical sans-serif bold digit 1}%
+\UnicodeMathSymbol{"1D7EE}{\mbfsanstwo }{\mathord}{mathematical sans-serif bold digit 2}%
+\UnicodeMathSymbol{"1D7EF}{\mbfsansthree }{\mathord}{mathematical sans-serif bold digit 3}%
+\UnicodeMathSymbol{"1D7F0}{\mbfsansfour }{\mathord}{mathematical sans-serif bold digit 4}%
+\UnicodeMathSymbol{"1D7F1}{\mbfsansfive }{\mathord}{mathematical sans-serif bold digit 5}%
+\UnicodeMathSymbol{"1D7F2}{\mbfsanssix }{\mathord}{mathematical sans-serif bold digit 6}%
+\UnicodeMathSymbol{"1D7F3}{\mbfsansseven }{\mathord}{mathematical sans-serif bold digit 7}%
+\UnicodeMathSymbol{"1D7F4}{\mbfsanseight }{\mathord}{mathematical sans-serif bold digit 8}%
+\UnicodeMathSymbol{"1D7F5}{\mbfsansnine }{\mathord}{mathematical sans-serif bold digit 9}%
+\UnicodeMathSymbol{"1D7F6}{\mttzero }{\mathord}{mathematical monospace digit 0}%
+\UnicodeMathSymbol{"1D7F7}{\mttone }{\mathord}{mathematical monospace digit 1}%
+\UnicodeMathSymbol{"1D7F8}{\mtttwo }{\mathord}{mathematical monospace digit 2}%
+\UnicodeMathSymbol{"1D7F9}{\mttthree }{\mathord}{mathematical monospace digit 3}%
+\UnicodeMathSymbol{"1D7FA}{\mttfour }{\mathord}{mathematical monospace digit 4}%
+\UnicodeMathSymbol{"1D7FB}{\mttfive }{\mathord}{mathematical monospace digit 5}%
+\UnicodeMathSymbol{"1D7FC}{\mttsix }{\mathord}{mathematical monospace digit 6}%
+\UnicodeMathSymbol{"1D7FD}{\mttseven }{\mathord}{mathematical monospace digit 7}%
+\UnicodeMathSymbol{"1D7FE}{\mtteight }{\mathord}{mathematical monospace digit 8}%
+\UnicodeMathSymbol{"1D7FF}{\mttnine }{\mathord}{mathematical monospace digit 9}%
diff --git a/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty b/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty
new file mode 100644
index 00000000000..3e86a619ba1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/unicode-math/unicode-math.sty
@@ -0,0 +1,2341 @@
+%%
+%% This is file `unicode-math.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% unicode-math.dtx (with options: `package')
+%% Copyright 2006-2010 by Will Robertson <will.robertson@latex-project.org>
+%%
+%% This package is free software and may be redistributed and/or modified under
+%% the conditions of the LaTeX Project Public License, version 1.3c or higher
+%% (your choice): <http://www.latex-project.org/lppl/>.
+%%
+%% This work is "author-maintained" by Will Robertson.
+\ProvidesPackage{unicode-math}
+ [2010/06/03 v0.5 Unicode maths in XeLaTeX]
+\usepackage{ifxetex,ifluatex}
+\ifxetex\else\ifluatex\else
+ \PackageError{unicode-math}{%
+ Cannot be run with pdfLaTeX!\MessageBreak
+ Use XeLaTeX or LuaLaTeX instead.%
+ }\@ehd
+\fi\fi
+\RequirePackage{expl3}[2009/08/12]
+\RequirePackage{xparse}[2009/08/31]
+\RequirePackage{l3keys2e}
+\RequirePackage{fontspec}[2010/05/18]
+\ExplSyntaxOn
+\@ifclassloaded{memoir}{
+ \cs_set_eq:NN \um_after_pkg:nn \AtEndPackage
+}{
+ \RequirePackage{scrlfile}
+ \cs_set_eq:NN \um_after_pkg:nn \AfterPackage
+}
+\cs_generate_variant:Nn \tl_put_right:Nn {cx}
+\cs_generate_variant:Nn \seq_if_in:NnTF {NV}
+\cs_generate_variant:Nn \prop_gput:Nnn {Nxn}
+\cs_generate_variant:Nn \prop_get:NnN {cxN}
+\cs_generate_variant:Nn \prop_if_in:NnTF {cx}
+\cs_new:Npn \exp_args:NNcc #1#2#3#4 {
+ \exp_after:wN #1 \exp_after:wN #2
+ \cs:w #3 \exp_after:wN \cs_end:
+ \cs:w #4 \cs_end:
+}
+\bool_new:N \l_um_fontspec_feature_bool
+\bool_new:N \l_um_ot_math_bool
+\bool_new:N \l_um_init_bool
+\bool_new:N \l_um_implicit_alph_bool
+\bool_new:N \g_um_literal_bool
+\bool_new:N \g_um_upLatin_bool
+\bool_new:N \g_um_uplatin_bool
+\bool_new:N \g_um_upGreek_bool
+\bool_new:N \g_um_upgreek_bool
+\bool_new:N \g_um_bfliteral_bool
+\bool_new:N \g_um_bfupLatin_bool
+\bool_new:N \g_um_bfuplatin_bool
+\bool_new:N \g_um_bfupGreek_bool
+\bool_new:N \g_um_bfupgreek_bool
+\bool_new:N \g_um_upsans_bool
+\bool_new:N \g_um_sfliteral_bool
+\bool_new:N \g_um_upNabla_bool
+\bool_new:N \g_um_uppartial_bool
+\bool_new:N \g_um_literal_Nabla_bool
+\bool_new:N \g_um_literal_partial_bool
+\bool_new:N \g_um_texgreek_bool
+\bool_new:N \l_um_smallfrac_bool
+\bool_new:N \g_um_literal_colon_bool
+\int_new:N \g_um_fam_int
+\tl_set:Nn \g_um_math_alphabet_name_latin_tl {Latin,~lowercase}
+\tl_set:Nn \g_um_math_alphabet_name_Latin_tl {Latin,~uppercase}
+\tl_set:Nn \g_um_math_alphabet_name_greek_tl {Greek,~lowercase}
+\tl_set:Nn \g_um_math_alphabet_name_Greek_tl {Greek,~uppercase}
+\tl_set:Nn \g_um_math_alphabet_name_num_tl {Numerals}
+\tl_set:Nn \g_um_math_alphabet_name_misc_tl {Misc.}
+\prg_new_conditional:Nnn \um_glyph_if_exist:n {p,TF,T,F} {
+ \etex_iffontchar:D \l_um_font #1 \scan_stop:
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+}
+\cs_generate_variant:Nn \um_glyph_if_exist_p:n {c}
+\cs_generate_variant:Nn \um_glyph_if_exist:nTF {c}
+\cs_generate_variant:Nn \um_glyph_if_exist:nT {c}
+\cs_generate_variant:Nn \um_glyph_if_exist:nF {c}
+\xetex_or_luatex:nnn { \cs_new:Npn \um_cs_compat:n #1 }
+ { \cs_set_eq:cc {U#1} {XeTeX#1} }
+ { \cs_set_eq:cc {U#1} {luatexU#1} }
+\um_cs_compat:n {mathcode}
+\um_cs_compat:n {delcode}
+\um_cs_compat:n {mathcodenum}
+\um_cs_compat:n {mathcharnum}
+\um_cs_compat:n {mathchardef}
+\um_cs_compat:n {radical}
+\um_cs_compat:n {mathaccent}
+\um_cs_compat:n {delimiter}
+\cs_generate_variant:Nn \fontspec_select:nn {x}
+\cs_new:Npn \usv_set:nnn #1#2#3 {
+ \tl_set:cn { \um_to_usv:nn {#1}{#2} } {#3}
+}
+\cs_new:Npn \um_to_usv:nn #1#2 { g_um_#1_#2_usv }
+\usv_set:nnn {up}{num}{48}
+\usv_set:nnn {up}{Latin}{65}
+\usv_set:nnn {up}{latin}{97}
+\usv_set:nnn {up}{Greek}{"391}
+\usv_set:nnn {up}{greek}{"3B1}
+\usv_set:nnn {it}{Latin}{"1D434}
+\usv_set:nnn {it}{latin}{"1D44E}
+\usv_set:nnn {it}{Greek}{"1D6E2}
+\usv_set:nnn {it}{greek}{"1D6FC}
+\usv_set:nnn {bb}{num}{"1D7D8}
+\usv_set:nnn {bb}{Latin}{"1D538}
+\usv_set:nnn {bb}{latin}{"1D552}
+\usv_set:nnn {scr}{Latin}{"1D49C}
+\usv_set:nnn {scr}{latin}{"1D4B6}
+\usv_set:nnn {frak}{Latin}{"1D504}
+\usv_set:nnn {frak}{latin}{"1D51E}
+\usv_set:nnn {sf}{num}{"1D7E2}
+\usv_set:nnn {sfup}{num}{"1D7E2}
+\usv_set:nnn {sfit}{num}{"1D7E2}
+\usv_set:nnn {sfup}{Latin}{"1D5A0}
+\usv_set:nnn {sf}{Latin}{"1D5A0}
+\usv_set:nnn {sfup}{latin}{"1D5BA}
+\usv_set:nnn {sf}{latin}{"1D5BA}
+\usv_set:nnn {sfit}{Latin}{"1D608}
+\usv_set:nnn {sfit}{latin}{"1D622}
+\usv_set:nnn {tt}{num}{"1D7F6}
+\usv_set:nnn {tt}{Latin}{"1D670}
+\usv_set:nnn {tt}{latin}{"1D68A}
+\usv_set:nnn {bf}{num}{"1D7CE}
+\usv_set:nnn {bfup}{num}{"1D7CE}
+\usv_set:nnn {bfit}{num}{"1D7CE}
+\usv_set:nnn {bfup}{Latin}{"1D400}
+\usv_set:nnn {bfup}{latin}{"1D41A}
+\usv_set:nnn {bfup}{Greek}{"1D6A8}
+\usv_set:nnn {bfup}{greek}{"1D6C2}
+\usv_set:nnn {bfit}{Latin}{"1D468}
+\usv_set:nnn {bfit}{latin}{"1D482}
+\usv_set:nnn {bfit}{Greek}{"1D71C}
+\usv_set:nnn {bfit}{greek}{"1D736}
+\usv_set:nnn {bffrak}{Latin}{"1D56C}
+\usv_set:nnn {bffrak}{latin}{"1D586}
+\usv_set:nnn {bfscr}{Latin}{"1D4D0}
+\usv_set:nnn {bfscr}{latin}{"1D4EA}
+\usv_set:nnn {bfsf}{num}{"1D7EC}
+\usv_set:nnn {bfsfup}{num}{"1D7EC}
+\usv_set:nnn {bfsfit}{num}{"1D7EC}
+\usv_set:nnn {bfsfup}{Latin}{"1D5D4}
+\usv_set:nnn {bfsfup}{latin}{"1D5EE}
+\usv_set:nnn {bfsfup}{Greek}{"1D756}
+\usv_set:nnn {bfsfup}{greek}{"1D770}
+\usv_set:nnn {bfsfit}{Latin}{"1D63C}
+\usv_set:nnn {bfsfit}{latin}{"1D656}
+\usv_set:nnn {bfsfit}{Greek}{"1D790}
+\usv_set:nnn {bfsfit}{greek}{"1D7AA}
+\usv_set:nnn {bfsf}{Latin}{ \bool_if:NTF \g_um_upLatin_bool \g_um_bfsfup_Latin_usv \g_um_bfsfit_Latin_usv }
+\usv_set:nnn {bfsf}{latin}{ \bool_if:NTF \g_um_uplatin_bool \g_um_bfsfup_latin_usv \g_um_bfsfit_latin_usv }
+\usv_set:nnn {bfsf}{Greek}{ \bool_if:NTF \g_um_upGreek_bool \g_um_bfsfup_Greek_usv \g_um_bfsfit_Greek_usv }
+\usv_set:nnn {bfsf}{greek}{ \bool_if:NTF \g_um_upgreek_bool \g_um_bfsfup_greek_usv \g_um_bfsfit_greek_usv }
+\usv_set:nnn {bf}{Latin}{ \bool_if:NTF \g_um_bfupLatin_bool \g_um_bfup_Latin_usv \g_um_bfit_Latin_usv }
+\usv_set:nnn {bf}{latin}{ \bool_if:NTF \g_um_bfuplatin_bool \g_um_bfup_latin_usv \g_um_bfit_latin_usv }
+\usv_set:nnn {bf}{Greek}{ \bool_if:NTF \g_um_bfupGreek_bool \g_um_bfup_Greek_usv \g_um_bfit_Greek_usv }
+\usv_set:nnn {bf}{greek}{ \bool_if:NTF \g_um_bfupgreek_bool \g_um_bfup_greek_usv \g_um_bfit_greek_usv }
+\usv_set:nnn {up}{varTheta}{"3F4}
+\usv_set:nnn {up}{Digamma}{"3DC}
+\usv_set:nnn {up}{varepsilon}{"3F5}
+\usv_set:nnn {up}{vartheta}{"3D1}
+\usv_set:nnn {up}{varkappa}{"3F0}
+\usv_set:nnn {up}{varphi}{"3D5}
+\usv_set:nnn {up}{varrho}{"3F1}
+\usv_set:nnn {up}{varpi}{"3D6}
+\usv_set:nnn {up}{digamma}{"3DD}
+\usv_set:nnn {bfup}{varTheta}{"1D6B9}
+\usv_set:nnn {bfup}{Digamma}{"1D7CA}
+\usv_set:nnn {bfup}{varepsilon}{"1D6DC}
+\usv_set:nnn {bfup}{vartheta}{"1D6DD}
+\usv_set:nnn {bfup}{varkappa}{"1D6DE}
+\usv_set:nnn {bfup}{varphi}{"1D6DF}
+\usv_set:nnn {bfup}{varrho}{"1D6E0}
+\usv_set:nnn {bfup}{varpi}{"1D6E1}
+\usv_set:nnn {bfup}{digamma}{"1D7CB}
+\usv_set:nnn {it}{varTheta}{"1D6F3}
+\usv_set:nnn {it}{varepsilon}{"1D716}
+\usv_set:nnn {it}{vartheta}{"1D717}
+\usv_set:nnn {it}{varkappa}{"1D718}
+\usv_set:nnn {it}{varphi}{"1D719}
+\usv_set:nnn {it}{varrho}{"1D71A}
+\usv_set:nnn {it}{varpi}{"1D71B}
+\usv_set:nnn {bfit}{varTheta}{"1D72D}
+\usv_set:nnn {bfit}{varepsilon}{"1D750}
+\usv_set:nnn {bfit}{vartheta}{"1D751}
+\usv_set:nnn {bfit}{varkappa}{"1D752}
+\usv_set:nnn {bfit}{varphi}{"1D753}
+\usv_set:nnn {bfit}{varrho}{"1D754}
+\usv_set:nnn {bfit}{varpi}{"1D755}
+\usv_set:nnn {bfsfup}{varTheta}{"1D767}
+\usv_set:nnn {bfsfup}{varepsilon}{"1D78A}
+\usv_set:nnn {bfsfup}{vartheta}{"1D78B}
+\usv_set:nnn {bfsfup}{varkappa}{"1D78C}
+\usv_set:nnn {bfsfup}{varphi}{"1D78D}
+\usv_set:nnn {bfsfup}{varrho}{"1D78E}
+\usv_set:nnn {bfsfup}{varpi}{"1D78F}
+\usv_set:nnn {bfsfit}{varTheta} {"1D7A1}
+\usv_set:nnn {bfsfit}{varepsilon}{"1D7C4}
+\usv_set:nnn {bfsfit}{vartheta} {"1D7C5}
+\usv_set:nnn {bfsfit}{varkappa} {"1D7C6}
+\usv_set:nnn {bfsfit}{varphi} {"1D7C7}
+\usv_set:nnn {bfsfit}{varrho} {"1D7C8}
+\usv_set:nnn {bfsfit}{varpi} {"1D7C9}
+\usv_set:nnn {up} {Nabla}{"02207}
+\usv_set:nnn {it} {Nabla}{"1D6FB}
+\usv_set:nnn {bfup} {Nabla}{"1D6C1}
+\usv_set:nnn {bfit} {Nabla}{"1D735}
+\usv_set:nnn {bfsfup}{Nabla}{"1D76F}
+\usv_set:nnn {bfsfit}{Nabla}{"1D7A9}
+\usv_set:nnn {up} {partial}{"02202}
+\usv_set:nnn {it} {partial}{"1D715}
+\usv_set:nnn {bfup} {partial}{"1D6DB}
+\usv_set:nnn {bfit} {partial}{"1D74F}
+\usv_set:nnn {bfsfup}{partial}{"1D789}
+\usv_set:nnn {bfsfit}{partial}{"1D7C3}
+\usv_set:nnn {up}{B}{`\B}
+\usv_set:nnn {up}{C}{`\C}
+\usv_set:nnn {up}{D}{`\D}
+\usv_set:nnn {up}{E}{`\E}
+\usv_set:nnn {up}{F}{`\F}
+\usv_set:nnn {up}{H}{`\H}
+\usv_set:nnn {up}{I}{`\I}
+\usv_set:nnn {up}{L}{`\L}
+\usv_set:nnn {up}{M}{`\M}
+\usv_set:nnn {up}{N}{`\N}
+\usv_set:nnn {up}{P}{`\P}
+\usv_set:nnn {up}{Q}{`\Q}
+\usv_set:nnn {up}{R}{`\R}
+\usv_set:nnn {up}{Z}{`\Z}
+\usv_set:nnn {it}{B}{"1D435}
+\usv_set:nnn {it}{C}{"1D436}
+\usv_set:nnn {it}{D}{"1D437}
+\usv_set:nnn {it}{E}{"1D438}
+\usv_set:nnn {it}{F}{"1D439}
+\usv_set:nnn {it}{H}{"1D43B}
+\usv_set:nnn {it}{I}{"1D43C}
+\usv_set:nnn {it}{L}{"1D43F}
+\usv_set:nnn {it}{M}{"1D440}
+\usv_set:nnn {it}{N}{"1D441}
+\usv_set:nnn {it}{P}{"1D443}
+\usv_set:nnn {it}{Q}{"1D444}
+\usv_set:nnn {it}{R}{"1D445}
+\usv_set:nnn {it}{Z}{"1D44D}
+\usv_set:nnn {up}{d}{`\d}
+\usv_set:nnn {up}{e}{`\e}
+\usv_set:nnn {up}{g}{`\g}
+\usv_set:nnn {up}{h}{`\h}
+\usv_set:nnn {up}{i}{`\i}
+\usv_set:nnn {up}{j}{`\j}
+\usv_set:nnn {up}{o}{`\o}
+\usv_set:nnn {it}{d}{"1D451}
+\usv_set:nnn {it}{e}{"1D452}
+\usv_set:nnn {it}{g}{"1D454}
+\usv_set:nnn {it}{h}{"0210E}
+\usv_set:nnn {it}{i}{"1D456}
+\usv_set:nnn {it}{j}{"1D457}
+\usv_set:nnn {it}{o}{"1D45C}
+\usv_set:nnn {bb} {h}{"1D559}
+\usv_set:nnn {tt} {h}{"1D691}
+\usv_set:nnn {scr} {h}{"1D4BD}
+\usv_set:nnn {frak} {h}{"1D525}
+\usv_set:nnn {bfup} {h}{"1D421}
+\usv_set:nnn {bfit} {h}{"1D489}
+\usv_set:nnn {sfup} {h}{"1D5C1}
+\usv_set:nnn {sfit} {h}{"1D629}
+\usv_set:nnn {bffrak}{h}{"1D58D}
+\usv_set:nnn {bfscr} {h}{"1D4F1}
+\usv_set:nnn {bfsfup}{h}{"1D5F5}
+\usv_set:nnn {bfsfit}{h}{"1D65D}
+\usv_set:nnn {up}{dotlessi}{"00131}
+\usv_set:nnn {up}{dotlessj}{"00237}
+\usv_set:nnn {it}{dotlessi}{"1D6A4}
+\usv_set:nnn {it}{dotlessj}{"1D6A5}
+\usv_set:nnn {bb}{C}{"2102}
+\usv_set:nnn {bb}{H}{"210D}
+\usv_set:nnn {bb}{N}{"2115}
+\usv_set:nnn {bb}{P}{"2119}
+\usv_set:nnn {bb}{Q}{"211A}
+\usv_set:nnn {bb}{R}{"211D}
+\usv_set:nnn {bb}{Z}{"2124}
+\usv_set:nnn {up}{Pi} {"003A0}
+\usv_set:nnn {up}{pi} {"003C0}
+\usv_set:nnn {up}{Gamma} {"00393}
+\usv_set:nnn {up}{gamma} {"003B3}
+\usv_set:nnn {up}{summation}{"02211}
+\usv_set:nnn {it}{Pi} {"1D6F1}
+\usv_set:nnn {it}{pi} {"1D70B}
+\usv_set:nnn {it}{Gamma} {"1D6E4}
+\usv_set:nnn {it}{gamma} {"1D6FE}
+\usv_set:nnn {bb}{Pi} {"0213F}
+\usv_set:nnn {bb}{pi} {"0213C}
+\usv_set:nnn {bb}{Gamma} {"0213E}
+\usv_set:nnn {bb}{gamma} {"0213D}
+\usv_set:nnn {bb}{summation}{"02140}
+\usv_set:nnn {bbit}{D}{"2145}
+\usv_set:nnn {bbit}{d}{"2146}
+\usv_set:nnn {bbit}{e}{"2147}
+\usv_set:nnn {bbit}{i}{"2148}
+\usv_set:nnn {bbit}{j}{"2149}
+\usv_set:nnn {scr}{B}{"212C}
+\usv_set:nnn {scr}{E}{"2130}
+\usv_set:nnn {scr}{F}{"2131}
+\usv_set:nnn {scr}{H}{"210B}
+\usv_set:nnn {scr}{I}{"2110}
+\usv_set:nnn {scr}{L}{"2112}
+\usv_set:nnn {scr}{M}{"2133}
+\usv_set:nnn {scr}{R}{"211B}
+\usv_set:nnn {scr}{e}{"212F}
+\usv_set:nnn {scr}{g}{"210A}
+\usv_set:nnn {scr}{o}{"2134}
+\usv_set:nnn {frak}{C}{"212D}
+\usv_set:nnn {frak}{H}{"210C}
+\usv_set:nnn {frak}{I}{"2111}
+\usv_set:nnn {frak}{R}{"211C}
+\usv_set:nnn {frak}{Z}{"2128}
+\DeclareDocumentCommand \unimathsetup {m} {
+ \clist_clear:N \l_um_unknown_keys_clist
+ \keys_set:nn {unicode-math} {#1}
+}
+\keys_define:nn {unicode-math} {
+ normal-style .choice_code:n =
+ {
+ \bool_set_false:N \g_um_literal_bool
+ \ifcase \l_keys_choice_int
+ \bool_set_false:N \g_um_upGreek_bool
+ \bool_set_false:N \g_um_upgreek_bool
+ \bool_set_false:N \g_um_upLatin_bool
+ \bool_set_false:N \g_um_uplatin_bool
+ \or
+ \bool_set_true:N \g_um_upGreek_bool
+ \bool_set_false:N \g_um_upgreek_bool
+ \bool_set_false:N \g_um_upLatin_bool
+ \bool_set_false:N \g_um_uplatin_bool
+ \or
+ \bool_set_true:N \g_um_upGreek_bool
+ \bool_set_true:N \g_um_upgreek_bool
+ \bool_set_true:N \g_um_upLatin_bool
+ \bool_set_false:N \g_um_uplatin_bool
+ \or
+ \bool_set_true:N \g_um_upGreek_bool
+ \bool_set_true:N \g_um_upgreek_bool
+ \bool_set_true:N \g_um_upLatin_bool
+ \bool_set_true:N \g_um_uplatin_bool
+ \or
+ \bool_set_true:N \g_um_literal_bool
+ \fi
+ } ,
+ normal-style .generate_choices:n = {ISO,TeX,french,upright,literal} ,
+}
+\keys_define:nn {unicode-math} {
+ math-style .choice_code:n =
+ {
+ \ifcase \l_keys_choice_int
+ \unimathsetup {
+ normal-style=ISO,
+ bold-style=ISO,
+ sans-style=italic,
+ nabla=upright,
+ partial=italic,
+ }
+ \or
+ \unimathsetup {
+ normal-style=TeX,
+ bold-style=TeX,
+ sans-style=upright,
+ nabla=upright,
+ partial=italic,
+ }
+ \or
+ \unimathsetup {
+ normal-style=french,
+ bold-style=upright,
+ sans-style=upright,
+ nabla=upright,
+ partial=upright,
+ }
+ \or
+ \unimathsetup {
+ normal-style=upright,
+ bold-style=upright,
+ sans-style=upright,
+ nabla=upright,
+ partial=upright,
+ }
+ \or
+ \unimathsetup {
+ normal-style=literal,
+ bold-style=literal,
+ sans-style=literal,
+ colon=literal,
+ nabla=literal,
+ partial=literal,
+ }
+ \fi
+ } ,
+ math-style .generate_choices:n = {ISO,TeX,french,upright,literal} ,
+}
+\keys_define:nn {unicode-math} {
+ bold-style .choice_code:n = {
+ \bool_set_false:N \g_um_bfliteral_bool
+ \ifcase \l_keys_choice_int
+ \bool_set_false:N \g_um_bfupGreek_bool
+ \bool_set_false:N \g_um_bfupgreek_bool
+ \bool_set_false:N \g_um_bfupLatin_bool
+ \bool_set_false:N \g_um_bfuplatin_bool
+ \or
+ \bool_set_true:N \g_um_bfupGreek_bool
+ \bool_set_false:N \g_um_bfupgreek_bool
+ \bool_set_true:N \g_um_bfupLatin_bool
+ \bool_set_true:N \g_um_bfuplatin_bool
+ \or
+ \bool_set_true:N \g_um_bfupGreek_bool
+ \bool_set_true:N \g_um_bfupgreek_bool
+ \bool_set_true:N \g_um_bfupLatin_bool
+ \bool_set_true:N \g_um_bfuplatin_bool
+ \or
+ \bool_set_true:N \g_um_bfliteral_bool
+ \fi
+ } ,
+ bold-style .generate_choices:n = {ISO,TeX,upright,literal} ,
+}
+\keys_define:nn {unicode-math} {
+ sans-style .choice_code:n = {
+ \ifcase \l_keys_choice_int
+ \bool_set_false:N \g_um_upsans_bool
+ \or
+ \bool_set_true:N \g_um_upsans_bool
+ \or
+ \bool_set_true:N \g_um_sfliteral_bool
+ \fi
+ } ,
+ sans-style .generate_choices:n = {italic,upright,literal} ,
+}
+\keys_define:nn {unicode-math} {
+ nabla .choice_code:n = {
+ \bool_set_false:N \g_um_literal_Nabla_bool
+ \ifcase \l_keys_choice_int
+ \bool_set_true:N \g_um_upNabla_bool
+ \or
+ \bool_set_false:N \g_um_upNabla_bool
+ \or
+ \bool_set_true:N \g_um_literal_Nabla_bool
+ \fi
+ } ,
+ nabla .generate_choices:n = {upright,italic,literal} ,
+}
+\keys_define:nn {unicode-math} {
+ partial .choice_code:n = {
+ \bool_set_false:N \g_um_literal_partial_bool
+ \ifcase \l_keys_choice_int
+ \bool_set_true:N \g_um_uppartial_bool
+ \or
+ \bool_set_false:N \g_um_uppartial_bool
+ \or
+ \bool_set_true:N \g_um_literal_partial_bool
+ \fi
+ } ,
+ partial .generate_choices:n = {upright,italic,literal} ,
+}
+\keys_define:nn {unicode-math} {
+ vargreek-shape .choice: ,
+ vargreek-shape / unicode .code:n = {
+ \bool_set_false:N \g_um_texgreek_bool
+ } ,
+ vargreek-shape / TeX .code:n = {
+ \bool_set_true:N \g_um_texgreek_bool
+ }
+}
+\keys_define:nn {unicode-math} {
+ colon .choice: ,
+ colon / literal .code:n = {
+ \bool_set_true:N \g_um_literal_colon_bool
+ } ,
+ colon / TeX .code:n = {
+ \bool_set_false:N \g_um_literal_colon_bool
+ }
+}
+\keys_define:nn {unicode-math} {
+ slash-delimiter .choice: ,
+ slash-delimiter / ascii .code:n = {
+ \tl_set:Nn \g_um_slash_delimiter_usv {"002F}
+ } ,
+ slash-delimiter / frac .code:n = {
+ \tl_set:Nn \g_um_slash_delimiter_usv {"2044}
+ } ,
+ slash-delimiter / div .code:n = {
+ \tl_set:Nn \g_um_slash_delimiter_usv {"2215}
+ }
+}
+\keys_define:nn {unicode-math} {
+ active-frac .choice: ,
+ active-frac / small .code:n = {
+ \cs_if_exist:NTF \tfrac {
+ \bool_set_true:N \l_um_smallfrac_bool
+ }{
+ \um_warning:n {no-tfrac}
+ \bool_set_false:N \l_um_smallfrac_bool
+ }
+ \use:c{um_setup_active_frac:}
+ } ,
+ active-frac / normalsize .code:n = {
+ \bool_set_false:N \l_um_smallfrac_bool
+ \use:c{um_setup_active_frac:}
+ }
+}
+\keys_define:nn {unicode-math} {
+ trace .choice: ,
+ trace / debug .code:n = {
+ \msg_redirect_module:nnn { unicode-math } { trace } { warning }
+ } ,
+ trace / on .code:n = {
+ \msg_redirect_module:nnn { unicode-math } { trace } { trace }
+ } ,
+ trace / off .code:n = {
+ \msg_redirect_module:nnn { unicode-math } { trace } { none }
+ } ,
+}
+\clist_new:N \l_um_unknown_keys_clist
+\keys_define:nn {unicode-math} {
+ unknown .code:n = {
+ \clist_put_right:No \l_um_unknown_keys_clist {
+ \l_keys_key_tl = {#1}
+ }
+ }
+}
+\unimathsetup {math-style=TeX}
+\unimathsetup {slash-delimiter=ascii}
+\unimathsetup {trace=off}
+\cs_if_exist:NT \tfrac {
+ \unimathsetup {active-frac=small}
+}
+\ProcessKeysOptions {unicode-math}
+\tl_map_inline:nn {
+ \new@mathgroup\cdp@list\cdp@elt\DeclareMathSizes
+ \@DeclareMathSizes\newmathalphabet\newmathalphabet@@\newmathalphabet@@@
+ \DeclareMathVersion\define@mathalphabet\define@mathgroup\addtoversion
+ \version@list\version@elt\alpha@list\alpha@elt
+ \restore@mathversion\init@restore@version\dorestore@version\process@table
+ \new@mathversion\DeclareSymbolFont\group@list\group@elt
+ \new@symbolfont\SetSymbolFont\SetSymbolFont@\get@cdp
+ \DeclareMathAlphabet\new@mathalphabet\SetMathAlphabet\SetMathAlphabet@
+ \DeclareMathAccent\set@mathaccent\DeclareMathSymbol\set@mathchar
+ \set@mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
+ \@DeclareMathDelimiter\@xDeclareMathDelimiter\set@mathdelimiter
+ \set@@mathdelimiter\DeclareMathRadical\mathchar@type
+ \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
+}{
+ \tl_remove_in:Nn \@preamblecmds {\do#1}
+}
+\def\new@mathgroup{\alloc@8\mathgroup\chardef\@cclvi}
+\let\newfam\new@mathgroup
+\cs_set:Npn \um_set_mathsymbol:nNNn #1#2#3#4 {
+ \prg_case_tl:Nnn #3 {
+ \mathop {
+ \um_set_big_operator:nnn {#1} {#2} {#4}
+ }
+ \mathopen {
+ \tl_if_in:NnTF \l_um_radicals_tl {#2} {
+ \cs_gset:cpx {\cs_to_str:N #2 sign} { \um_radical:nn {#1} {#4} }
+ }{
+ \um_set_delcode:n {#4}
+ \um_set_mathcode:nnn {#4} \mathopen {#1}
+ \cs_gset:Npx #2 { \um_delimiter:Nnn \mathopen {#1} {#4} }
+ }
+ }
+ \mathclose {
+ \um_set_delcode:n {#4}
+ \um_set_mathcode:nnn {#4} \mathclose {#1}
+ \cs_gset:Npx #2 { \um_delimiter:Nnn \mathclose {#1} {#4} }
+ }
+ \mathfence {
+ \um_set_mathcode:nnn {#4} {#3} {#1}
+ \um_set_delcode:n {#4}
+ \cs_gset:cpx {l \cs_to_str:N #2} { \um_delimiter:Nnn \mathopen {#1} {#4} }
+ \cs_gset:cpx {r \cs_to_str:N #2} { \um_delimiter:Nnn \mathclose {#1} {#4} }
+ }
+ \mathaccent {
+ \cs_gset:Npx #2 { \um_accent:Nnn #3 {#1} {#4} }
+ }
+ }{
+ \um_set_mathcode:nnn {#4} {#3} {#1}
+ }
+}
+\cs_new:Npn \um_set_big_operator:nnn #1#2#3 {
+ \group_begin:
+ \char_make_active:n {#3}
+ \char_gmake_mathactive:n {#3}
+ \um@scanactivedef #3 \@nil { \csname\cs_to_str:N #2 _sym\endcsname }
+ \group_end:
+ \um_set_mathchar:cNnn {\cs_to_str:N #2 op} \mathop {#1} {#3}
+ \cs_gset:cpx { \cs_to_str:N #2 _sym } {
+ \exp_not:c { \cs_to_str:N #2 op }
+ \exp_not:n { \tl_if_in:NnT \l_um_nolimits_tl {#2} \nolimits }
+ }
+}
+\cs_set:Npn \um_set_mathcode:nnnn #1#2#3#4 {
+ \Umathcode \intexpr_eval:n {#1} =
+ \mathchar@type#2 \csname sym#3\endcsname \intexpr_eval:n {#4} \scan_stop:
+}
+\cs_set:Npn \um_set_mathcode:nnn #1#2#3 {
+ \Umathcode \intexpr_eval:n {#1} =
+ \mathchar@type#2 \csname sym#3\endcsname \intexpr_eval:n {#1} \scan_stop:
+}
+\cs_set:Npn \um_set_mathchar:NNnn #1#2#3#4 {
+ \Umathchardef #1 =
+ \mathchar@type#2 \csname sym#3\endcsname \intexpr_eval:n {#4} \scan_stop:
+}
+\cs_new:Npn \um_radical:nn #1#2 {
+ \Uradical \csname sym#1\endcsname #2 \scan_stop:
+}
+\cs_new:Npn \um_delimiter:Nnn #1#2#3 {
+ \Udelimiter \mathchar@type#1 \csname sym#2\endcsname #3 \scan_stop:
+}
+\cs_new:Npn \um_accent:Nnn #1#2#3 {
+ \Umathaccent \mathchar@type#1 \csname sym#2\endcsname #3 \scan_stop:
+}
+\cs_generate_variant:Nn \um_set_mathchar:NNnn {c}
+\cs_new:Npn \char_gmake_mathactive:N #1 {
+ \global\mathcode `#1 = "8000 \scan_stop:
+}
+\cs_new:Npn \char_gmake_mathactive:n #1 {
+ \global\mathcode #1 = "8000 \scan_stop:
+}
+\cs_new:Npn \um_init: {
+ \let\glb@currsize\relax
+ \bool_set_true:N \l_um_init_bool
+ \seq_clear:N \l_um_char_range_seq
+ \clist_clear:N \l_um_char_num_range_clist
+ \seq_clear:N \l_um_mathalph_seq
+ \clist_clear:N \l_um_unknown_keys_clist
+ \seq_clear:N \l_um_missing_alph_seq
+}
+\DeclareDocumentCommand \setmathfont { O{} m } {
+ \um_init:
+ \csname S@\f@size\endcsname
+ \tl_set:Nn \l_um_mversion_tf {normal}
+ \DeclareMathVersion{\l_um_mversion_tf}
+ \tl_set:Nn \l_um_script_features_tl {ScriptStyle}
+ \tl_set:Nn \l_um_sscript_features_tl {ScriptScriptStyle}
+ \tl_set:Nn \l_um_script_font_tl {#2}
+ \tl_set:Nn \l_um_sscript_font_tl {#2}
+ \keys_set:nn {unicode-math} {#1}
+ \um_fontspec_select_font:n {#2}
+%% \ifdim \dimexpr\fontdimen9\l_um_font*65536\relax =65pt\relax
+%% \bool_set_true:N \l_um_ot_math_bool
+%% \else
+%% \bool_set_false:N \l_um_ot_math_bool
+%% \PackageWarningNoLine{unicode-math}{
+%% The~ font~ '#2' ~is~ not~ a~ valid~ OpenType~ maths~ font.~
+%% Some~ maths~ features~ will~ not~ be~ available~ or~ behave~
+%% in~ a~ substandard~ manner
+%% }
+%% \fi
+ \bool_if:NTF \l_um_init_bool {
+ \tl_set:Nn \um_symfont_tl {um_allsym}
+ \msg_trace:nnx {unicode-math} {default-math-font} {#2}
+ \cs_set_eq:NN \UnicodeMathSymbol \um_process_symbol_noparse:nnnn
+ \cs_set_eq:NN \um_set_mathalphabet_char:Nnn \um_mathmap_noparse:Nnn
+ \cs_set_eq:NN \um_remap_symbol:nnn \um_remap_symbol_noparse:nnn
+ \cs_set_eq:NN \um_maybe_init_alphabet:n \um_init_alphabet:n
+ \cs_set_eq:NN \um_map_char_single:nn \um_map_char_noparse:nn
+ }{
+ \int_incr:N \g_um_fam_int
+ \tl_set:Nx \um_symfont_tl {um_fam\int_use:N\g_um_fam_int}
+ \cs_set_eq:NN \UnicodeMathSymbol \um_process_symbol_parse:nnnn
+ \cs_set_eq:NN \um_set_mathalphabet_char:Nnn \um_mathmap_parse:Nnn
+ \cs_set_eq:NN \um_remap_symbol:nnn \um_remap_symbol_parse:nnn
+ \cs_set_eq:NN \um_maybe_init_alphabet:n \use_none:n
+ \cs_set_eq:NN \um_map_char_single:nn \um_map_char_parse:nn
+ }
+ \DeclareSymbolFont{\um_symfont_tl}
+ {\encodingdefault}{\zf@family}{\mddefault}{\updefault}
+ \@input{unicode-math-table.tex}
+ \cs_set_eq:NN \UnicodeMathSymbol \use_none:nnnn
+ \um_remap_symbols:
+ \um_setup_mathactives:
+ \um_setup_delcodes:
+ \um_setup_alphabets:
+ \ignorespaces
+}
+\cs_new:Npn \um_fontspec_select_font:n #1 {
+ \bool_set_true:N \l_um_fontspec_feature_bool
+ \fontspec_select:xn
+ {
+ BoldFont = {}, ItalicFont = {},
+ Script = Math,
+ SizeFeatures = {
+ {Size = \tf@size-} ,
+ {Size = \sf@size-\tf@size ,
+ Font = \l_um_script_font_tl ,
+ \l_um_script_features_tl
+ } ,
+ {Size = -\sf@size ,
+ Font = \l_um_sscript_font_tl ,
+ \l_um_sscript_features_tl
+ }
+ },
+ \l_um_unknown_keys_clist
+ }
+ {#1}
+ \tl_set_eq:NN \l_um_font \zf@basefont
+ \bool_set_false:N \l_um_fontspec_feature_bool
+}
+\cs_set:Npn \um_process_symbol_noparse:nnnn #1#2#3#4 {
+ \um_set_mathsymbol:nNNn {\um_symfont_tl} #2#3{#1}
+}
+\cs_set:Npn \um_process_symbol_parse:nnnn #1#2#3#4 {
+ \um@parse@term{#1}{#2}{#3}{
+ \um_process_symbol_noparse:nnnn{#1}{#2}{#3}{#4}
+ }
+}
+\cs_new:Npn \um_remap_symbols: {
+ \um_remap_symbol:nnn{`\-}{\mathbin}{"02212}% hyphen to minus
+ \um_remap_symbol:nnn{`\*}{\mathbin}{"02217}% text asterisk to "centred asterisk"
+ \bool_if:NF \g_um_literal_colon_bool {
+ \um_remap_symbol:nnn{`\:}{\mathrel}{"02236}% colon to ratio (i.e., punct to rel)
+ }
+}
+\cs_new:Npn \um_remap_symbol_parse:nnn #1#2#3 {
+ \um@parse@term {#3} {\@nil} {#2} {
+ \um_remap_symbol_noparse:nnn {#1} {#2} {#3}
+ }
+}
+\cs_new:Npn \um_remap_symbol_noparse:nnn #1#2#3 {
+ \clist_map_inline:nn {#1} {
+ \um_set_mathcode:nnnn {##1} {#2} {\um_symfont_tl} {#3}
+ }
+}
+\cs_new:Npn \um_setup_mathactives: {
+ \um_make_mathactive:nNN {"2032} \um_prime_single_mchar \mathord
+ \um_make_mathactive:nNN {"2033} \um_prime_double_mchar \mathord
+ \um_make_mathactive:nNN {"2034} \um_prime_triple_mchar \mathord
+ \um_make_mathactive:nNN {"2057} \um_prime_quad_mchar \mathord
+ \um_make_mathactive:nNN {"2035} \um_backprime_single_mchar \mathord
+ \um_make_mathactive:nNN {"2036} \um_backprime_double_mchar \mathord
+ \um_make_mathactive:nNN {"2037} \um_backprime_triple_mchar \mathord
+ \um_make_mathactive:nNN {`\'} \mathstraightquote \mathord
+ \um_make_mathactive:nNN {`\`} \mathbacktick \mathord
+}
+\cs_new:Npn \um_make_mathactive:nNN #1#2#3 {
+ \um_set_mathchar:NNnn #2 #3 {\um_symfont_tl} {#1}
+ \char_gmake_mathactive:n {#1}
+}
+\cs_new:Npn \um_setup_delcodes: {
+ \um_set_delcode:nn {`\/} {\g_um_slash_delimiter_usv}
+ \um_set_delcode:nn {"2044} {\g_um_slash_delimiter_usv} % fracslash
+ \um_set_delcode:nn {"2215} {\g_um_slash_delimiter_usv} % divslash
+ \um_set_delcode:n {"005C} % backslash
+ \um_set_delcode:nn {`\<} {"27E8} % angle brackets with ascii notation
+ \um_set_delcode:nn {`\>} {"27E9} % angle brackets with ascii notation
+ \um_set_delcode:n {"2191} % up arrow
+ \um_set_delcode:n {"2193} % down arrow
+ \um_set_delcode:n {"2195} % updown arrow
+ \um_set_delcode:n {"219F} % up arrow twohead
+ \um_set_delcode:n {"21A1} % down arrow twohead
+ \um_set_delcode:n {"21A5} % up arrow from bar
+ \um_set_delcode:n {"21A7} % down arrow from bar
+ \um_set_delcode:n {"21A8} % updown arrow from bar
+ \um_set_delcode:n {"21BE} % up harpoon right
+ \um_set_delcode:n {"21BF} % up harpoon left
+ \um_set_delcode:n {"21C2} % down harpoon right
+ \um_set_delcode:n {"21C3} % down harpoon left
+ \um_set_delcode:n {"21C5} % arrows up down
+ \um_set_delcode:n {"21F5} % arrows down up
+ \um_set_delcode:n {"21C8} % arrows up up
+ \um_set_delcode:n {"21CA} % arrows down down
+ \um_set_delcode:n {"21D1} % double up arrow
+ \um_set_delcode:n {"21D3} % double down arrow
+ \um_set_delcode:n {"21D5} % double updown arrow
+ \um_set_delcode:n {"21DE} % up arrow double stroke
+ \um_set_delcode:n {"21DF} % down arrow double stroke
+ \um_set_delcode:n {"21E1} % up arrow dashed
+ \um_set_delcode:n {"21E3} % down arrow dashed
+ \um_set_delcode:n {"21E7} % up white arrow
+ \um_set_delcode:n {"21E9} % down white arrow
+ \um_set_delcode:n {"21EA} % up white arrow from bar
+ \um_set_delcode:n {"21F3} % updown white arrow
+}
+\cs_new:Npn \um_set_delcode:nn #1#2 {
+ \Udelcode#1 = \csname sym\um_symfont_tl\endcsname #2
+}
+\cs_new:Npn \um_set_delcode:n #1 {
+ \Udelcode#1 = \csname sym\um_symfont_tl\endcsname #1
+}
+\cs_set:Npn \um_mathmap_noparse:Nnn #1#2#3 {
+ \clist_map_inline:nn {#2} {
+ \tl_put_right:cx {um_switchto_\cs_to_str:N #1:} {
+ \um_set_mathcode:nnnn{##1}{\mathalpha}{\um_symfont_tl}{#3}
+ }
+ }
+}
+\cs_set:Npn \um_mathmap_parse:Nnn #1#2#3 {
+ \clist_if_in:NnT \l_um_char_num_range_clist {#3} {
+ \um_mathmap_noparse:Nnn {#1}{#2}{#3}
+ }
+}
+\tl_new:Nn \l_um_nolimits_tl {
+ \int\iint\iiint\iiiint\oint\oiint\oiiint
+ \intclockwise\varointclockwise\ointctrclockwise\sumint
+ \intbar\intBar\fint\cirfnint\awint\rppolint
+ \scpolint\npolint\pointint\sqint\intlarhk\intx
+ \intcap\intcup\upint\lowint
+}
+\DeclareDocumentCommand \addnolimits {m} {
+ \tl_put_right:Nn \l_um_nolimits_tl {#1}
+}
+\DeclareDocumentCommand \removenolimits {m} {
+ \tl_remove_all_in:Nn \l_um_nolimits_tl {#1}
+}
+\tl_new:Nn \l_um_radicals_tl {\sqrt}
+\let\left@primitive\left
+\def\left{\mathopen{}\left@primitive}
+\newcommand\um@zf@feature[2]{
+ \define@key[zf]{options}{#1}[]{
+ \bool_if:NTF \l_um_fontspec_feature_bool {
+ #2
+ }{
+ \um_warning:n {maths-feature-only}
+ }
+ }
+}
+\um@zf@feature{ScriptStyle}{
+ \zf@update@ff{+ssty=0}
+}
+\um@zf@feature{ScriptScriptStyle}{
+ \zf@update@ff{+ssty=1}
+}
+\keys_define:nn {unicode-math}
+{
+ script-features .tl_set:N = \l_um_script_features_tl ,
+ sscript-features .tl_set:N = \l_um_sscript_features_tl ,
+ script-font .tl_set:N = \l_um_script_font_tl ,
+ sscript-font .tl_set:N = \l_um_sscript_font_tl ,
+}
+\seq_new:N \l_um_mathalph_seq
+\seq_new:N \l_um_char_range_seq
+\keys_define:nn {unicode-math} {
+ range .code:n = {
+ \bool_set_false:N \l_um_init_bool
+ \seq_clear:N \l_um_char_range_seq
+ \seq_clear:N \l_um_mathalph_seq
+ \clist_map_inline:nn {#1} {
+ \um_if_mathalph_decl:nTF {##1} {
+ \seq_put_right:Nx \l_um_mathalph_seq {
+ { \exp_not:V \l_um_tmpa_tl }
+ { \exp_not:V \l_um_tmpb_tl }
+ { \exp_not:V \l_um_tmpc_tl }
+ }
+ }{
+ \seq_put_right:Nn \l_um_char_range_seq {##1}
+ }
+ }
+ }
+}
+\prg_new_conditional:Nnn \um_if_mathalph_decl:n {TF} {
+ \KV_remove_surrounding_spaces:nw {\tl_set:Nf\l_um_tmpa_tl} #1 \q_nil
+ \tl_clear:N \l_um_tmpb_tl
+ \tl_clear:N \l_um_tmpc_tl
+ \tl_if_in:NnT \l_um_tmpa_tl {->} {
+ \exp_after:wN \um_split_arrow:w \l_um_tmpa_tl \q_nil
+ }
+ \tl_if_in:NnT \l_um_tmpa_tl {/} {
+ \exp_after:wN \um_split_slash:w \l_um_tmpa_tl \q_nil
+ }
+ \tl_if_empty:NT \l_um_tmpc_tl { \tl_set_eq:NN \l_um_tmpc_tl \l_um_tmpa_tl }
+ \seq_if_in:NVTF \g_um_mathalph_seq \l_um_tmpa_tl {
+ \prg_return_true:
+ }{
+ \prg_return_false:
+ }
+}
+\cs_set:Npn \um_split_arrow:w #1->#2 \q_nil {
+ \tl_set:Nn \l_um_tmpa_tl {#1}
+ \tl_set:Nn \l_um_tmpc_tl {#2}
+}
+\cs_set:Npn \um_split_slash:w #1/#2 \q_nil {
+ \tl_set:Nn \l_um_tmpa_tl {#1}
+ \tl_set:Nn \l_um_tmpb_tl {#2}
+}
+\newcommand\um@parse@term[4]{
+ \seq_map_variable:NNn \l_um_char_range_seq \@ii {
+ \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
+ \clist_put_right:Nx \l_um_char_num_range_clist { \intexpr_eval:n {#1} }
+ #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
+ \intexpr_compare:nT {#4=#1} \@tempswatrue
+ \else
+ \ifx\@empty\@tempb
+ \intexpr_compare:nT {#4>#1-1} \@tempswatrue
+ \else
+ \ifx\@empty\@tempa
+ \intexpr_compare:nT {#4<#2+1} \@tempswatrue
+ \else
+ \intexpr_compare:nT {#4>#1-1} {
+ \intexpr_compare:nT {#4<#2+1} \@tempswatrue
+ }
+ \fi
+ \fi
+ \fi
+}
+\AtBeginDocument{\um_resolve_greek:}
+\cs_new:Npn \um_resolve_greek: {
+ \clist_map_inline:nn {
+ Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,
+ alpha,beta,gamma,delta, zeta,eta,theta,iota,kappa,lambda,
+ Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,
+ mu,nu,xi,omicron,pi,rho,sigma,tau,upsilon, chi,psi,omega,
+ varTheta,
+ varsigma,vartheta,varkappa,varrho,varpi
+ }{
+ \tl_set:cx {##1} { \exp_not:c { mit ##1 } }
+ }
+ \tl_set:Nn \epsilon {
+ \bool_if:NTF \g_um_texgreek_bool \mitvarepsilon \mitepsilon
+ }
+ \tl_set:Nn \phi {
+ \bool_if:NTF \g_um_texgreek_bool \mitvarphi \mitphi
+ }
+ \tl_set:Nn \varepsilon {
+ \bool_if:NTF \g_um_texgreek_bool \mitepsilon \mitvarepsilon
+ }
+ \tl_set:Nn \varphi {
+ \bool_if:NTF \g_um_texgreek_bool \mitphi \mitvarphi
+ }
+}
+\seq_new:N \g_um_mathalph_seq
+\AtEndOfPackage{
+ \tl_map_inline:nn {
+ \mathup\mathit\mathbb\mathbbit
+ \mathscr\mathfrak\mathtt
+ \mathsf\mathsfup\mathsfit
+ \mathbf\mathbfup\mathbfit
+ \mathbfscr\mathbffrak
+ \mathbfsf\mathbfsfup\mathbfsfit
+ }{
+ \seq_put_right:Nn \g_um_mathalph_seq {#1}
+ \um_prepare_mathstyle:f {\exp_after:wN \use_none:nnnnn \token_to_str:N #1}
+ }
+}
+\cs_new:Npn \um_prepare_mathstyle:n #1 {
+ \um_init_alphabet:x {#1}
+ \cs_set:cpn {_um_math#1_aux:n} ##1 {
+ \use:c {um_switchto_math#1:} ##1 \egroup
+ }
+ \cs_set_protected:cpx {math#1} {
+ \exp_not:n{
+ \bgroup
+ \mode_if_math:F {
+ \egroup\expandafter
+ \non@alpherr\expandafter{\csname math#1\endcsname\space}
+ }
+ }
+ \exp_not:c {_um_math#1_aux:n}
+ }
+}
+\cs_generate_variant:Nn \um_prepare_mathstyle:n {f}
+\cs_set:Npn \um_init_alphabet:n #1 {
+ \um_trace:nx {alph-initialise} {#1}
+ \cs_set_eq:cN {um_switchto_math#1:} \prg_do_nothing:
+}
+\cs_generate_variant:Nn \um_init_alphabet:n {x}
+\cs_new:Npn \um_maybe_init_alphabet:V {
+ \exp_args:NV \um_maybe_init_alphabet:n
+}
+\seq_new:N \g_um_default_mathalph_seq
+\clist_map_inline:nn {
+ {\mathup } {latin,Latin,greek,Greek,num,misc} {\mathup } ,
+ {\mathit } {latin,Latin,greek,Greek,misc} {\mathit } ,
+ {\mathbb } {latin,Latin,num,misc} {\mathbb } ,
+ {\mathbbit } {misc} {\mathbbit } ,
+ {\mathscr } {latin,Latin} {\mathscr } ,
+ {\mathfrak } {latin,Latin} {\mathfrak } ,
+ {\mathtt } {latin,Latin,num} {\mathtt } ,
+ {\mathsfup } {latin,Latin,num} {\mathsfup } ,
+ {\mathsfit } {latin,Latin} {\mathsfit } ,
+ {\mathbfup } {latin,Latin,greek,Greek,num,misc} {\mathbfup } ,
+ {\mathbfit } {latin,Latin,greek,Greek,misc} {\mathbfit } ,
+ {\mathbfscr } {latin,Latin} {\mathbfscr } ,
+ {\mathbffrak} {latin,Latin} {\mathbffrak} ,
+ {\mathbfsfup} {latin,Latin,greek,Greek,num,misc} {\mathbfsfup} ,
+ {\mathbfsfit} {latin,Latin,greek,Greek,misc} {\mathbfsfit}
+}{
+ \seq_put_right:Nn \g_um_default_mathalph_seq {#1}
+}
+\seq_new:N \l_um_missing_alph_seq
+\cs_new:Npn \um_setup_alphabets: {
+ \seq_if_empty:NTF \l_um_mathalph_seq {
+ \um_trace:n {setup-implicit}
+ \seq_set_eq:NN \l_um_mathalph_seq \g_um_default_mathalph_seq
+ \bool_set_true:N \l_um_implicit_alph_bool
+ \um_maybe_init_alphabet:n {sf}
+ \um_maybe_init_alphabet:n {bf}
+ \um_maybe_init_alphabet:n {bfsf}
+ }
+ {
+ \um_trace:n {setup-explicit}
+ \bool_set_false:N \l_um_implicit_alph_bool
+ \cs_set_eq:NN \um_set_mathalphabet_char:Nnn \um_mathmap_noparse:Nnn
+ \cs_set_eq:NN \um_map_char_single:nn \um_map_char_noparse:nn
+ }
+ \seq_map_inline:Nn \l_um_mathalph_seq {
+ \tl_set:No \l_um_tmpa_tl { \use_i:nnn ##1 }
+ \tl_set:No \l_um_tmpb_tl { \use_ii:nnn ##1 }
+ \tl_set:No \l_um_remap_style_tl { \use_iii:nnn ##1 }
+ \tl_set:Nx \l_um_remap_style_tl {
+ \exp_after:wN \exp_after:wN \exp_after:wN \use_none:nnnnn
+ \exp_after:wN \token_to_str:N \l_um_remap_style_tl
+ }
+ \tl_if_empty:NT \l_um_tmpb_tl {
+ \cs_set_eq:NN \um_maybe_init_alphabet:n \um_init_alphabet:n
+ \tl_set:Nn \l_um_tmpb_tl { latin,Latin,greek,Greek,num,misc }
+ }
+ \um_setup_math_alphabet:VVV
+ \l_um_tmpa_tl \l_um_tmpb_tl \l_um_remap_style_tl
+ }
+ \um_warn_missing_alphabets:
+}
+\cs_new:Npn \um_warn_missing_alphabets: {
+ \seq_if_empty:NF \l_um_missing_alph_seq {
+ \typeout{
+ Package~unicode-math~Warning:~
+ missing~math~alphabets~in~font~ \fontname\l_um_font
+ }
+ \seq_map_inline:Nn \l_um_missing_alph_seq {
+ \typeout{\space\space\space\space##1}
+ }
+ }
+}
+\cs_new:Npn \um_setup_math_alphabet:Nnn #1#2#3 {
+ \tl_set:Nx \l_um_style_tl {
+ \exp_after:wN \use_none:nnnnn \token_to_str:N #1
+ }
+ \clist_map_inline:nn {#2} {
+ \cs_if_exist:cT {um_config_ \l_um_style_tl _##1:n} {
+ \tl_if_eq:nnTF {##1}{misc} {
+ \um_maybe_init_alphabet:V \l_um_style_tl
+ \clist_map_break:
+ }{
+ \um_glyph_if_exist:cT { \um_to_usv:nn {#3}{##1} }{
+ \um_maybe_init_alphabet:V \l_um_style_tl
+ \clist_map_break:
+ }
+ }
+ }
+ }
+ \clist_map_inline:nn {#2} {
+ \cs_if_exist:cT {um_config_ \l_um_style_tl _##1:n} {
+ \tl_if_eq:nnTF {##1}{misc} {
+ \um_trace:nx {setup-alph} {math \l_um_style_tl~(##1)}
+ \use:c {um_config_ \l_um_style_tl _##1:n} {#3}
+ }{
+ \um_glyph_if_exist:cTF { \um_to_usv:nn {#3}{##1} } {
+ \um_trace:nx {setup-alph} {math \l_um_style_tl~(##1)}
+ \use:c {um_config_ \l_um_style_tl _##1:n} {#3}
+ }{
+ \bool_if:NTF \l_um_implicit_alph_bool {
+ \seq_put_right:Nx \l_um_missing_alph_seq {
+ \@backslashchar math \l_um_style_tl \space
+ (\tl_use:c{g_um_math_alphabet_name_##1_tl})
+ }
+ }{
+ \use:c {um_config_ \l_um_style_tl _##1:n} {up}
+ }
+ }
+ }
+ }
+ }
+}
+\cs_generate_variant:Nn \um_setup_math_alphabet:Nnn {VVV}
+\cs_set:Npn \um_map_chars_range:nnn #1#2#3 {
+ \prg_stepwise_inline:nnnn {0}{1}{#1-1} {
+ \um_map_char_single:nn {#2+##1}{#3+##1}
+ }
+}
+\cs_generate_variant:Nn \um_map_chars_range:nnn {ncc}
+\cs_new:Npn \um_map_chars_range:nnnn #1#2#3#4 {
+ \um_map_chars_range:ncc {#1} { \um_to_usv:nn {#2}{#4} }
+ { \um_to_usv:nn {#3}{#4} }
+}
+\cs_new:Npn \um_map_char_noparse:nn #1#2 {
+ \um_set_mathcode:nnnn {#1}{\mathalpha}{\um_symfont_tl}{#2}
+}
+\cs_new:Npn \um_map_char_parse:nn #1#2 {
+ \um@parse@term {#1} {\@nil} {\mathalpha} {
+ \um_map_char_noparse:nn {#1}{#2}
+ }
+}
+\cs_set:Npn \um_map_chars_Latin:nn #1#2 {
+ \clist_map_inline:nn {#1} {
+ \um_map_chars_range:nnnn {26} {##1} {#2} {Latin}
+ }
+}
+\cs_set:Npn \um_map_chars_latin:nn #1#2 {
+ \clist_map_inline:nn {#1} {
+ \um_map_chars_range:nnnn {26} {##1} {#2} {latin}
+ }
+}
+\cs_set:Npn \um_map_chars_greek:nn #1#2 {
+ \clist_map_inline:nn {#1} {
+ \um_map_chars_range:nnnn {25} {##1} {#2} {greek}
+ \um_map_char_single:nnn {##1} {#2} {varepsilon}
+ \um_map_char_single:nnn {##1} {#2} {vartheta}
+ \um_map_char_single:nnn {##1} {#2} {varkappa}
+ \um_map_char_single:nnn {##1} {#2} {varphi}
+ \um_map_char_single:nnn {##1} {#2} {varrho}
+ \um_map_char_single:nnn {##1} {#2} {varpi}
+ }
+}
+\cs_set:Npn \um_map_chars_Greek:nn #1#2 {
+ \clist_map_inline:nn {#1} {
+ \um_map_chars_range:nnnn {25} {##1} {#2} {Greek}
+ \um_map_char_single:nnn {##1} {#2} {varTheta}
+ }
+}
+\cs_set:Npn \um_map_chars_numbers:nn #1#2 {
+ \um_map_chars_range:nnnn {10} {#1} {#2} {num}
+}
+\cs_new:Npn \um_map_char_single:cc { \exp_args:Ncc \um_map_char_single:nn }
+\cs_new:Npn \um_map_char_single:nnn #1#2#3 {
+ \um_map_char_single:cc { \um_to_usv:nn {#1}{#3} }
+ { \um_to_usv:nn {#2}{#3} }
+}
+\cs_set:Npn \um_map_single:nnn #1#2#3 {
+ \cs_if_exist:cT { \um_to_usv:nn {#3} {#1} }
+ {
+ \clist_map_inline:nn {#2} {
+ \um_map_char_single:nnn {##1} {#3} {#1}
+ }
+ }
+}
+\cs_new:Npn \um_set_mathalph_range:nNnn #1#2#3#4 {
+ \prg_stepwise_inline:nnnn {0}{1}{#1-1} {
+ \um_set_mathalphabet_char:Nnn {#2} { ##1 + #3 } { ##1 + #4 }
+ }
+}
+\cs_generate_variant:Nn \um_set_mathalph_range:nNnn {nNcc}
+\cs_new:Npn \um_set_mathalphabet_pos:Nnnn #1#2#3#4 {
+ \cs_if_exist:cT { \um_to_usv:nn {#4}{#2} } {
+ \clist_map_inline:nn {#3} {
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#4} {#2}
+ }
+ }
+}
+\cs_new:Npn \um_set_mathalphabet_numbers:Nnn #1#2#3 {
+ \clist_map_inline:nn {#2} {
+ \um_set_mathalph_range:nNnnn {10} #1 {##1} {#3} {num}
+ }
+}
+\cs_new:Npn \um_set_mathalphabet_Latin:Nnn #1#2#3 {
+ \clist_map_inline:nn {#2} {
+ \um_set_mathalph_range:nNnnn {26} #1 {##1} {#3} {Latin}
+ }
+}
+\cs_new:Npn \um_set_mathalphabet_latin:Nnn #1#2#3 {
+ \clist_map_inline:nn {#2} {
+ \um_set_mathalph_range:nNnnn {26} #1 {##1} {#3} {latin}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {h}
+ }
+}
+\cs_new:Npn \um_set_mathalphabet_Greek:Nnn #1#2#3 {
+ \clist_map_inline:nn {#2} {
+ \um_set_mathalph_range:nNnnn {25} #1 {##1} {#3} {Greek}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varTheta}
+ }
+}
+\cs_new:Npn \um_set_mathalphabet_greek:Nnn #1#2#3 {
+ \clist_map_inline:nn {#2} {
+ \um_set_mathalph_range:nNnnn {25} #1 {##1} {#3} {greek}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varepsilon}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {vartheta}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varkappa}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varphi}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varrho}
+ \um_set_mathalphabet_char:Nnnn #1 {##1} {#3} {varpi}
+ }
+}
+\cs_new:Npn \um_set_mathalphabet_char:Ncc {
+ \exp_args:NNcc \um_set_mathalphabet_char:Nnn
+}
+\cs_new:Npn \um_set_mathalphabet_char:Nnnn #1#2#3#4 {
+ \um_set_mathalphabet_char:Ncc #1 { \um_to_usv:nn {#2} {#4} }
+ { \um_to_usv:nn {#3} {#4} }
+}
+\cs_new:Npn \um_set_mathalph_range:nNnnn #1#2#3#4#5 {
+ \um_set_mathalph_range:nNcc {#1} #2 { \um_to_usv:nn {#3} {#5} }
+ { \um_to_usv:nn {#4} {#5} }
+}
+\cs_new:Npn \um_config_up_num:n #1 {
+ \um_map_chars_numbers:nn {up}{#1}
+ \um_set_mathalphabet_numbers:Nnn \mathup {up}{#1}
+}
+\cs_new:Npn \um_config_up_Latin:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_Latin:nn {up} {#1}
+ }{
+ \bool_if:NT \g_um_upLatin_bool {
+ \um_map_chars_Latin:nn {up,it} {#1}
+ }
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathup {up,it}{#1}
+}
+\cs_new:Npn \um_config_up_latin:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_latin:nn {up} {#1}
+ }{
+ \bool_if:NT \g_um_uplatin_bool {
+ \um_map_chars_latin:nn {up,it} {#1}
+ \um_map_single:nnn {h} {up,it} {#1}
+ \um_map_single:nnn {dotlessi} {up,it} {#1}
+ \um_map_single:nnn {dotlessj} {up,it} {#1}
+ }
+ }
+ \um_set_mathalphabet_latin:Nnn \mathup {up,it}{#1}
+}
+\cs_new:Npn \um_config_up_Greek:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_Greek:nn {up}{#1}
+ }{
+ \bool_if:NT \g_um_upGreek_bool {
+ \um_map_chars_Greek:nn {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Greek:Nnn \mathup {up,it}{#1}
+}
+\cs_new:Npn \um_config_up_greek:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_greek:nn {up} {#1}
+ }{
+ \bool_if:NT \g_um_upgreek_bool {
+ \um_map_chars_greek:nn {up,it} {#1}
+ }
+ }
+ \um_set_mathalphabet_greek:Nnn \mathup {up,it} {#1}
+}
+\cs_new:Npn \um_config_up_misc:n #1 {
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_map_single:nnn {Nabla}{up}{up}
+ }{
+ \bool_if:NT \g_um_upNabla_bool {
+ \um_map_single:nnn {Nabla}{up,it}{up}
+ }
+ }
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_map_single:nnn {partial}{up}{up}
+ }{
+ \bool_if:NT \g_um_uppartial_bool {
+ \um_map_single:nnn {partial}{up,it}{up}
+ }
+ }
+ \um_set_mathalphabet_pos:Nnnn \mathup {partial} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathup {Nabla} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathup {dotlessi} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathup {dotlessj} {up,it} {#1}
+}
+\cs_new:Npn \um_config_it_Latin:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_Latin:nn {it} {#1}
+ }{
+ \bool_if:NF \g_um_upLatin_bool {
+ \um_map_chars_Latin:nn {up,it} {#1}
+ }
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathit {up,it}{#1}
+}
+\cs_new:Npn \um_config_it_latin:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_latin:nn {it} {#1}
+ \um_map_single:nnn {h}{it}{#1}
+ }{
+ \bool_if:NF \g_um_uplatin_bool {
+ \um_map_chars_latin:nn {up,it} {#1}
+ \um_map_single:nnn {h}{up,it}{#1}
+ \um_map_single:nnn {dotlessi}{up,it}{#1}
+ \um_map_single:nnn {dotlessj}{up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_latin:Nnn \mathit {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathit {dotlessi} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathit {dotlessj} {up,it} {#1}
+}
+\cs_new:Npn \um_config_it_Greek:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_Greek:nn {it}{#1}
+ }{
+ \bool_if:NF \g_um_upGreek_bool {
+ \um_map_chars_Greek:nn {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Greek:Nnn \mathit {up,it}{#1}
+}
+\cs_new:Npn \um_config_it_greek:n #1 {
+ \bool_if:NTF \g_um_literal_bool {
+ \um_map_chars_greek:nn {it} {#1}
+ }{
+ \bool_if:NF \g_um_upgreek_bool {
+ \um_map_chars_greek:nn {it,up} {#1}
+ }
+ }
+ \um_set_mathalphabet_greek:Nnn \mathit {up,it} {#1}
+}
+\cs_new:Npn \um_config_it_misc:n #1 {
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_map_single:nnn {Nabla}{it}{it}
+ }{
+ \bool_if:NF \g_um_upNabla_bool {
+ \um_map_single:nnn {Nabla}{up,it}{it}
+ }
+ }
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_map_single:nnn {partial}{it}{it}
+ }{
+ \bool_if:NF \g_um_uppartial_bool {
+ \um_map_single:nnn {partial}{up,it}{it}
+ }
+ }
+ \um_set_mathalphabet_pos:Nnnn \mathit {partial} {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathit {Nabla} {up,it}{#1}
+}
+\cs_new:Npn \um_config_bb_latin:n #1 {
+ \um_set_mathalphabet_latin:Nnn \mathbb {up,it}{#1}
+}
+\cs_new:Npn \um_config_bb_Latin:n #1 {
+ \um_set_mathalphabet_Latin:Nnn \mathbb {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {C} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {H} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {N} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {P} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {Q} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {R} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {Z} {up,it} {#1}
+}
+\cs_new:Npn \um_config_bb_num:n #1 {
+ \um_set_mathalphabet_numbers:Nnn \mathbb {up}{#1}
+}
+\cs_new:Npn \um_config_bb_misc:n #1 {
+ \um_set_mathalphabet_pos:Nnnn \mathbb {Pi} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {pi} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {Gamma} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {gamma} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbb {summation} {up} {#1}
+}
+\cs_new:Npn \um_config_bbit_misc:n #1 {
+ \um_set_mathalphabet_pos:Nnnn \mathbbit {D} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbbit {d} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbbit {e} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbbit {i} {up,it} {#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbbit {j} {up,it} {#1}
+}
+\cs_new:Npn \um_config_scr_Latin:n #1 {
+ \um_set_mathalphabet_Latin:Nnn \mathscr {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {B}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {E}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {F}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {H}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {I}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {L}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {M}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {R}{up,it}{#1}
+}
+\cs_new:Npn \um_config_scr_latin:n #1 {
+ \um_set_mathalphabet_latin:Nnn \mathscr {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {e}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {g}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathscr {o}{up,it}{#1}
+}
+\cs_new:Npn \um_config_frak_Latin:n #1 {
+ \um_set_mathalphabet_Latin:Nnn \mathfrak {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathfrak {C}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathfrak {H}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathfrak {I}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathfrak {R}{up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathfrak {Z}{up,it}{#1}
+}
+\cs_new:Npn \um_config_frak_latin:n #1 {
+ \um_set_mathalphabet_latin:Nnn \mathfrak {up,it}{#1}
+}
+\cs_new:Npn \um_config_sfup_num:n #1 {
+ \um_set_mathalphabet_numbers:Nnn \mathsf {up}{#1}
+ \um_set_mathalphabet_numbers:Nnn \mathsfup {up}{#1}
+}
+\cs_new:Npn \um_config_sfup_Latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_Latin:nn {sfup} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathsf {up}{#1}
+ }{
+ \bool_if:NT \g_um_upsans_bool {
+ \um_map_chars_Latin:nn {sfup,sfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathsfup {up,it}{#1}
+}
+\cs_new:Npn \um_config_sfup_latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_latin:nn {sfup} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathsf {up}{#1}
+ }{
+ \bool_if:NT \g_um_upsans_bool {
+ \um_map_chars_latin:nn {sfup,sfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_latin:Nnn \mathsfup {up,it}{#1}
+}
+\cs_new:Npn \um_config_sfit_Latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_Latin:nn {sfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathsf {it}{#1}
+ }{
+ \bool_if:NF \g_um_upsans_bool {
+ \um_map_chars_Latin:nn {sfup,sfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathsfit {up,it}{#1}
+}
+\cs_new:Npn \um_config_sfit_latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_latin:nn {sfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathsf {it}{#1}
+ }{
+ \bool_if:NF \g_um_upsans_bool {
+ \um_map_chars_latin:nn {sfup,sfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_latin:Nnn \mathsfit {up,it}{#1}
+}
+\cs_new:Npn \um_config_tt_num:n #1 {
+ \um_set_mathalphabet_numbers:Nnn \mathtt {up}{#1}
+}
+\cs_new:Npn \um_config_tt_Latin:n #1 {
+ \um_set_mathalphabet_Latin:Nnn \mathtt {up,it}{#1}
+}
+\cs_new:Npn \um_config_tt_latin:n #1 {
+ \um_set_mathalphabet_latin:Nnn \mathtt {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfit_Latin:n #1 {
+ \bool_if:NF \g_um_bfupLatin_bool {
+ \um_map_chars_Latin:nn {bfup,bfit} {#1}
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathbfit {up,it}{#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_Latin:nn {bfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbf {it}{#1}
+ }{
+ \bool_if:NF \g_um_bfupLatin_bool {
+ \um_map_chars_Latin:nn {bfup,bfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbf {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfit_latin:n #1 {
+ \bool_if:NF \g_um_bfuplatin_bool {
+ \um_map_chars_latin:nn {bfup,bfit} {#1}
+ }
+ \um_set_mathalphabet_latin:Nnn \mathbfit {up,it}{#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_latin:nn {bfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbf {it}{#1}
+ }{
+ \bool_if:NF \g_um_bfuplatin_bool {
+ \um_map_chars_latin:nn {bfup,bfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbf {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfit_Greek:n #1 {
+ \um_set_mathalphabet_Greek:Nnn \mathbfit {up,it}{#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_Greek:nn {bfit}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbf {it}{#1}
+ }{
+ \bool_if:NF \g_um_bfupGreek_bool {
+ \um_map_chars_Greek:nn {bfup,bfit}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbf {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfit_greek:n #1 {
+ \um_set_mathalphabet_greek:Nnn \mathbfit {up,it} {#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_greek:nn {bfit} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbf {it} {#1}
+ }{
+ \bool_if:NF \g_um_bfupgreek_bool {
+ \um_map_chars_greek:nn {bfit,bfup} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbf {up,it} {#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfit_misc:n #1 {
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_map_single:nnn {Nabla}{bfit}{#1}
+ }{
+ \bool_if:NF \g_um_upNabla_bool {
+ \um_map_single:nnn {Nabla}{bfup,bfit}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_map_single:nnn {partial}{bfit}{#1}
+ }{
+ \bool_if:NF \g_um_uppartial_bool {
+ \um_map_single:nnn {partial}{bfup,bfit}{#1}
+ }
+ }
+ \um_set_mathalphabet_pos:Nnnn \mathbfit {partial} {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbfit {Nabla} {up,it}{#1}
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {it}{#1}
+ }{
+ \bool_if:NF \g_um_uppartial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {up,it}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {it}{#1}
+ }{
+ \bool_if:NF \g_um_upNabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfup_num:n #1 {
+ \um_set_mathalphabet_numbers:Nnn \mathbf {up}{#1}
+ \um_set_mathalphabet_numbers:Nnn \mathbfup {up}{#1}
+}
+\cs_new:Npn \um_config_bfup_Latin:n #1 {
+ \bool_if:NT \g_um_bfupLatin_bool {
+ \um_map_chars_Latin:nn {bfup,bfit} {#1}
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathbfup {up,it}{#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_Latin:nn {bfup} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbf {up}{#1}
+ }{
+ \bool_if:NT \g_um_bfupLatin_bool {
+ \um_map_chars_Latin:nn {bfup,bfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbf {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfup_latin:n #1 {
+ \bool_if:NT \g_um_bfuplatin_bool {
+ \um_map_chars_latin:nn {bfup,bfit} {#1}
+ }
+ \um_set_mathalphabet_latin:Nnn \mathbfup {up,it}{#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_latin:nn {bfup} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbf {up}{#1}
+ }{
+ \bool_if:NT \g_um_bfuplatin_bool {
+ \um_map_chars_latin:nn {bfup,bfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbf {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfup_Greek:n #1 {
+ \um_set_mathalphabet_Greek:Nnn \mathbfup {up,it}{#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_Greek:nn {bfup}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbf {up}{#1}
+ }{
+ \bool_if:NT \g_um_bfupGreek_bool {
+ \um_map_chars_Greek:nn {bfup,bfit}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbf {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfup_greek:n #1 {
+ \um_set_mathalphabet_greek:Nnn \mathbfup {up,it} {#1}
+ \bool_if:NTF \g_um_bfliteral_bool {
+ \um_map_chars_greek:nn {bfup} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbf {up} {#1}
+ }{
+ \bool_if:NT \g_um_bfupgreek_bool {
+ \um_map_chars_greek:nn {bfup,bfit} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbf {up,it} {#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfup_misc:n #1 {
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_map_single:nnn {Nabla}{bfup}{#1}
+ }{
+ \bool_if:NT \g_um_upNabla_bool {
+ \um_map_single:nnn {Nabla}{bfup,bfit}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_map_single:nnn {partial}{bfup}{#1}
+ }{
+ \bool_if:NT \g_um_uppartial_bool {
+ \um_map_single:nnn {partial}{bfup,bfit}{#1}
+ }
+ }
+ \um_set_mathalphabet_pos:Nnnn \mathbfup {partial} {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbfup {Nabla} {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbfup {digamma} {up}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbfup {Digamma} {up}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbf {digamma} {up}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbf {Digamma} {up}{#1}
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {up}{#1}
+ }{
+ \bool_if:NT \g_um_uppartial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {partial} {up,it}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {up}{#1}
+ }{
+ \bool_if:NT \g_um_upNabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbf {Nabla} {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bffrak_Latin:n #1 {
+ \um_set_mathalphabet_Latin:Nnn \mathbffrak {up,it}{#1}
+}
+\cs_new:Npn \um_config_bffrak_latin:n #1 {
+ \um_set_mathalphabet_latin:Nnn \mathbffrak {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfscr_Latin:n #1 {
+ \um_set_mathalphabet_Latin:Nnn \mathbfscr {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfscr_latin:n #1 {
+ \um_set_mathalphabet_latin:Nnn \mathbfscr {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfup_num:n #1 {
+ \um_set_mathalphabet_numbers:Nnn \mathbfsf {up}{#1}
+ \um_set_mathalphabet_numbers:Nnn \mathbfsfup {up}{#1}
+}
+\cs_new:Npn \um_config_bfsfup_Latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_Latin:nn {bfsfup} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbfsf {up}{#1}
+ }{
+ \bool_if:NT \g_um_upsans_bool {
+ \um_map_chars_Latin:nn {bfsfup,bfsfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbfsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathbfsfup {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfup_latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_latin:nn {bfsfup} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbfsf {up}{#1}
+ }{
+ \bool_if:NT \g_um_upsans_bool {
+ \um_map_chars_latin:nn {bfsfup,bfsfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbfsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_latin:Nnn \mathbfsfup {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfup_Greek:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_Greek:nn {bfsfup}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbfsf {up}{#1}
+ }{
+ \bool_if:NT \g_um_upsans_bool {
+ \um_map_chars_Greek:nn {bfsfup,bfsfit}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbfsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Greek:Nnn \mathbfsfup {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfup_greek:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_greek:nn {bfsfup} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbfsf {up} {#1}
+ }{
+ \bool_if:NT \g_um_upsans_bool {
+ \um_map_chars_greek:nn {bfsfup,bfsfit} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbfsf {up,it} {#1}
+ }
+ }
+ \um_set_mathalphabet_greek:Nnn \mathbfsfup {up,it} {#1}
+}
+\cs_new:Npn \um_config_bfsfup_misc:n #1 {
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_map_single:nnn {Nabla}{bfsfup}{#1}
+ }{
+ \bool_if:NT \g_um_upNabla_bool {
+ \um_map_single:nnn {Nabla}{bfsfup,bfsfit}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_map_single:nnn {partial}{bfsfup}{#1}
+ }{
+ \bool_if:NT \g_um_uppartial_bool {
+ \um_map_single:nnn {partial}{bfsfup,bfsfit}{#1}
+ }
+ }
+ \um_set_mathalphabet_pos:Nnnn \mathbfsfup {partial} {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbfsfup {Nabla} {up,it}{#1}
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {up}{#1}
+ }{
+ \bool_if:NT \g_um_uppartial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {up,it}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {up}{#1}
+ }{
+ \bool_if:NT \g_um_upNabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {up,it}{#1}
+ }
+ }
+}
+\cs_new:Npn \um_config_bfsfit_Latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_Latin:nn {bfsfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbfsf {it}{#1}
+ }{
+ \bool_if:NF \g_um_upsans_bool {
+ \um_map_chars_Latin:nn {bfsfup,bfsfit} {#1}
+ \um_set_mathalphabet_Latin:Nnn \mathbfsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Latin:Nnn \mathbfsfit {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfit_latin:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_latin:nn {bfsfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbfsf {it}{#1}
+ }{
+ \bool_if:NF \g_um_upsans_bool {
+ \um_map_chars_latin:nn {bfsfup,bfsfit} {#1}
+ \um_set_mathalphabet_latin:Nnn \mathbfsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_latin:Nnn \mathbfsfit {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfit_Greek:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_Greek:nn {bfsfit}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbfsf {it}{#1}
+ }{
+ \bool_if:NF \g_um_upsans_bool {
+ \um_map_chars_Greek:nn {bfsfup,bfsfit}{#1}
+ \um_set_mathalphabet_Greek:Nnn \mathbfsf {up,it}{#1}
+ }
+ }
+ \um_set_mathalphabet_Greek:Nnn \mathbfsfit {up,it}{#1}
+}
+\cs_new:Npn \um_config_bfsfit_greek:n #1 {
+ \bool_if:NTF \g_um_sfliteral_bool {
+ \um_map_chars_greek:nn {bfsfit} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbfsf {it} {#1}
+ }{
+ \bool_if:NF \g_um_upsans_bool {
+ \um_map_chars_greek:nn {bfsfup,bfsfit} {#1}
+ \um_set_mathalphabet_greek:Nnn \mathbfsf {up,it} {#1}
+ }
+ }
+ \um_set_mathalphabet_greek:Nnn \mathbfsfit {up,it} {#1}
+}
+\cs_new:Npn \um_config_bfsfit_misc:n #1 {
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_map_single:nnn {Nabla}{bfsfit}{#1}
+ }{
+ \bool_if:NF \g_um_upNabla_bool {
+ \um_map_single:nnn {Nabla}{bfsfup,bfsfit}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_map_single:nnn {partial}{bfsfit}{#1}
+ }{
+ \bool_if:NF \g_um_uppartial_bool {
+ \um_map_single:nnn {partial}{bfsfup,bfsfit}{#1}
+ }
+ }
+ \um_set_mathalphabet_pos:Nnnn \mathbfsfit {partial} {up,it}{#1}
+ \um_set_mathalphabet_pos:Nnnn \mathbfsfit {Nabla} {up,it}{#1}
+ \bool_if:NTF \g_um_literal_partial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {it}{#1}
+ }{
+ \bool_if:NF \g_um_uppartial_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {partial} {up,it}{#1}
+ }
+ }
+ \bool_if:NTF \g_um_literal_Nabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {it}{#1}
+ }{
+ \bool_if:NF \g_um_upNabla_bool {
+ \um_set_mathalphabet_pos:Nnnn \mathbfsf {Nabla} {up,it}{#1}
+ }
+ }
+}
+\begingroup
+ \char_make_other:N \^
+ \cs_gset:Npn \um@scancharlet#1="#2\@nil {
+ \lowercase{
+ \tl_rescan:nn {
+ \char_make_other:N \{
+ \char_make_other:N \}
+ \char_make_other:N \&
+ \char_make_other:N \%
+ \char_make_other:N \$
+ }{
+ \global\let#1=^^^^^#2
+ }
+ }
+ }
+ \gdef\um@scanactivedef"#1\@nil#2{
+ \lowercase{
+ \tl_rescan:nn{
+ \ExplSyntaxOn
+ \char_make_math_superscript:N\^
+ }{
+ \global\def^^^^^#1{#2}
+ }
+ }
+ }
+\endgroup
+\AtBeginDocument{
+ \group_begin:
+ \char_make_math_superscript:N\^
+ \def\UnicodeMathSymbol#1#2#3#4{
+ \bool_if:nF { \cs_if_eq_p:NN #3 \mathaccent ||
+ \cs_if_eq_p:NN #3 \mathopen ||
+ \cs_if_eq_p:NN #3 \mathclose } {
+ \um@scancharlet#2=#1\@nil\ignorespaces
+ }
+ }
+ \char_make_other:N \#
+ \@input{unicode-math-table.tex}
+ \group_end:
+}
+\group_begin:
+ \lccode`\*=`\\
+ \char_make_escape:N \|
+ \char_make_other:N \\
+ |lowercase{
+ |AtBeginDocument{
+ |let|backslash=*
+ }
+ }
+|group_end:
+\muskip_new:N \g_um_primekern_muskip
+\muskip_gset:Nn \g_um_primekern_muskip { -\thinmuskip/2 }% arbitrary
+\int_new:N \l_um_primecount_int
+\cs_new:Npn \um_nprimes:Nn #1#2 {
+ ^{
+ #1
+ \prg_replicate:nn {#2-1} { \mskip \g_um_primekern_muskip #1 }
+ }
+}
+\cs_new:Npn \um_nprimes_select:nn #1#2 {
+ \prg_case_int:nnn {#2}{
+ {1} { ^{#1} }
+ {2} {
+ \um_glyph_if_exist:nTF {"2033} { ^{\um_prime_double_mchar} } {\um_nprimes:Nn #1 {#2}}
+ }
+ {3} {
+ \um_glyph_if_exist:nTF {"2034} {^{\um_prime_triple_mchar} } {\um_nprimes:Nn #1 {#2}}
+ }
+ {4} {
+ \um_glyph_if_exist:nTF {"2057} { ^{\um_prime_quad_mchar} } {\um_nprimes:Nn #1 {#2}}
+ }
+ }{
+ \um_nprimes:Nn #1 {#2}
+ }
+}
+\cs_new:Npn \um_nbackprimes_select:nn #1#2 {
+ \prg_case_int:nnn {#2}{
+ {1} { ^{#1} }
+ {2} {
+ \um_glyph_if_exist:nTF {"2033} { ^{\um_backprime_double_mchar} } {\um_nprimes:Nn #1 {#2}}
+ }
+ {3} {
+ \um_glyph_if_exist:nTF {"2034} {^{\um_backprime_triple_mchar} } {\um_nprimes:Nn #1 {#2}}
+ }
+ }{
+ \um_nprimes:Nn #1 {#2}
+ }
+}
+\cs_new:Npn \um_scan_prime: {
+ \int_zero:N \l_um_primecount_int
+ \um_scanprime_collect:N \um_prime_single_mchar
+}
+\cs_new:Npn \um_scan_dprime: {
+ \int_set:Nn \l_um_primecount_int {1}
+ \um_scanprime_collect:N \um_prime_single_mchar
+}
+\cs_new:Npn \um_scan_trprime: {
+ \int_set:Nn \l_um_primecount_int {2}
+ \um_scanprime_collect:N \um_prime_single_mchar
+}
+\cs_new:Npn \um_scan_qprime: {
+ \int_set:Nn \l_um_primecount_int {3}
+ \um_scanprime_collect:N \um_prime_single_mchar
+}
+\cs_new:Npn \um_scanprime_collect:N #1 {
+ \int_incr:N \l_um_primecount_int
+ \peek_meaning_remove:NTF ' {
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_prime: {
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2032 {
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_dprime: {
+ \int_incr:N \l_um_primecount_int
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2033 {
+ \int_incr:N \l_um_primecount_int
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_trprime: {
+ \int_add:Nn \l_um_primecount_int {2}
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2034 {
+ \int_add:Nn \l_um_primecount_int {2}
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_qprime: {
+ \int_add:Nn \l_um_primecount_int {3}
+ \um_scanprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2057 {
+ \int_add:Nn \l_um_primecount_int {3}
+ \um_scanprime_collect:N #1
+ }{
+ \um_nprimes_select:nn {#1} {\l_um_primecount_int}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+\cs_new:Npn \um_scan_backprime: {
+ \int_zero:N \l_um_primecount_int
+ \um_scanbackprime_collect:N \um_backprime_single_mchar
+}
+\cs_new:Npn \um_scan_backdprime: {
+ \int_set:Nn \l_um_primecount_int {1}
+ \um_scanbackprime_collect:N \um_backprime_single_mchar
+}
+\cs_new:Npn \um_scan_backtrprime: {
+ \int_set:Nn \l_um_primecount_int {2}
+ \um_scanbackprime_collect:N \um_backprime_single_mchar
+}
+\cs_new:Npn \um_scanbackprime_collect:N #1 {
+ \int_incr:N \l_um_primecount_int
+ \peek_meaning_remove:NTF ` {
+ \um_scanbackprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_backprime: {
+ \um_scanbackprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2035 {
+ \um_scanbackprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_backdprime: {
+ \int_incr:N \l_um_primecount_int
+ \um_scanbackprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2036 {
+ \int_incr:N \l_um_primecount_int
+ \um_scanbackprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF \um_scan_backtrprime: {
+ \int_add:Nn \l_um_primecount_int {2}
+ \um_scanbackprime_collect:N #1
+ }{
+ \peek_meaning_remove:NTF ^^^^2037 {
+ \int_add:Nn \l_um_primecount_int {2}
+ \um_scanbackprime_collect:N #1
+ }{
+ \um_nbackprimes_select:nn {#1} {\l_um_primecount_int}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+\AtBeginDocument {
+ \cs_set_eq:NN \prime \um_scan_prime:
+ \cs_set_eq:NN \drime \um_scan_dprime:
+ \cs_set_eq:NN \trprime \um_scan_trprime:
+ \cs_set_eq:NN \qprime \um_scan_qprime:
+ \cs_set_eq:NN \backprime \um_scan_backprime:
+ \cs_set_eq:NN \backdprime \um_scan_backdprime:
+ \cs_set_eq:NN \backtrprime \um_scan_backtrprime:
+}
+\group_begin:
+ \char_make_active:N \'
+ \char_make_active:N \`
+ \char_make_active:n {"2032}
+ \char_make_active:n {"2033}
+ \char_make_active:n {"2034}
+ \char_make_active:n {"2057}
+ \char_make_active:n {"2035}
+ \char_make_active:n {"2036}
+ \char_make_active:n {"2037}
+ \AtBeginDocument{
+ \cs_set_eq:NN ' \um_scan_prime:
+ \cs_set_eq:NN ^^^^2032 \um_scan_prime:
+ \cs_set_eq:NN ^^^^2033 \um_scan_dprime:
+ \cs_set_eq:NN ^^^^2034 \um_scan_trprime:
+ \cs_set_eq:NN ^^^^2057 \um_scan_qprime:
+ \cs_set_eq:NN ` \um_scan_backprime:
+ \cs_set_eq:NN ^^^^2035 \um_scan_backprime:
+ \cs_set_eq:NN ^^^^2036 \um_scan_backdprime:
+ \cs_set_eq:NN ^^^^2037 \um_scan_backtrprime:
+ }
+\group_end:
+\cs_set_nopar:Npn \r@@t #1#2 {
+ \setbox\z@\hbox{$\m@th #1\sqrtsign{#2}$}
+ \um_mathstyle_scale:Nnn{#1}{\kern}{\fontdimen63\l_um_font}
+ \raise \dimexpr(
+ \um_fontdimen_to_percent:nn{65}{\l_um_font}\ht\z@-
+ \um_fontdimen_to_percent:nn{65}{\l_um_font}\dp\z@
+ )\relax
+ \copy \rootbox
+ \um_mathstyle_scale:Nnn{#1}{\kern}{\fontdimen64\l_um_font}
+ \box \z@
+}
+\cs_new:Npn \um_fontdimen_to_percent:nn #1#2 {
+ 0.\strip@pt\dimexpr\fontdimen#1#2 *65536\relax
+}
+\cs_new:Npn \um_mathstyle_scale:Nnn #1#2#3 {
+ \ifx#1\scriptstyle
+ #2\um_fontdimen_to_percent:nn{10}\l_um_font#3
+ \else
+ \ifx#1\scriptscriptstyle
+ #2\um_fontdimen_to_percent:nn{11}\l_um_font#3
+ \else
+ #2#3
+ \fi
+ \fi
+}
+\prop_new:N \g_um_supers_prop
+\prop_new:N \g_um_subs_prop
+\group_begin:
+\cs_set:Npn \um_setup_active_superscript:nn #1#2 {
+ \prop_gput:Nxn \g_um_supers_prop {\meaning #1} {#2}
+ \char_make_active:N #1
+ \char_gmake_mathactive:N #1
+ \scantokens{
+ \cs_gset:Npn #1 {
+ \tl_set:Nn \l_um_ss_chain_tl {#2}
+ \cs_set_eq:NN \um_sub_or_super:n \sp
+ \tl_set:Nn \l_um_tmpa_tl {supers}
+ \um_scan_sscript:
+ }
+ }
+}
+\um_setup_active_superscript:nn {^^^^2070} {0}
+\um_setup_active_superscript:nn {^^^^00b9} {1}
+\um_setup_active_superscript:nn {^^^^00b2} {2}
+\um_setup_active_superscript:nn {^^^^00b3} {3}
+\um_setup_active_superscript:nn {^^^^2074} {4}
+\um_setup_active_superscript:nn {^^^^2075} {5}
+\um_setup_active_superscript:nn {^^^^2076} {6}
+\um_setup_active_superscript:nn {^^^^2077} {7}
+\um_setup_active_superscript:nn {^^^^2078} {8}
+\um_setup_active_superscript:nn {^^^^2079} {9}
+\um_setup_active_superscript:nn {^^^^207a} {+}
+\um_setup_active_superscript:nn {^^^^207b} {-}
+\um_setup_active_superscript:nn {^^^^207c} {=}
+\um_setup_active_superscript:nn {^^^^207d} {(}
+\um_setup_active_superscript:nn {^^^^207e} {)}
+\um_setup_active_superscript:nn {^^^^2071} {i}
+\um_setup_active_superscript:nn {^^^^207f} {n}
+\cs_set:Npn \um_setup_active_subscript:nn #1#2 {
+ \prop_gput:Nxn \g_um_subs_prop {\meaning #1} {#2}
+ \char_make_active:N #1
+ \char_gmake_mathactive:N #1
+ \scantokens{
+ \cs_gset:Npn #1 {
+ \tl_set:Nn \l_um_ss_chain_tl {#2}
+ \cs_set_eq:NN \um_sub_or_super:n \sb
+ \tl_set:Nn \l_um_tmpa_tl {subs}
+ \um_scan_sscript:
+ }
+ }
+}
+\um_setup_active_subscript:nn {^^^^2080} {0}
+\um_setup_active_subscript:nn {^^^^2081} {1}
+\um_setup_active_subscript:nn {^^^^2082} {2}
+\um_setup_active_subscript:nn {^^^^2083} {3}
+\um_setup_active_subscript:nn {^^^^2084} {4}
+\um_setup_active_subscript:nn {^^^^2085} {5}
+\um_setup_active_subscript:nn {^^^^2086} {6}
+\um_setup_active_subscript:nn {^^^^2087} {7}
+\um_setup_active_subscript:nn {^^^^2088} {8}
+\um_setup_active_subscript:nn {^^^^2089} {9}
+\um_setup_active_subscript:nn {^^^^208a} {+}
+\um_setup_active_subscript:nn {^^^^208b} {-}
+\um_setup_active_subscript:nn {^^^^208c} {=}
+\um_setup_active_subscript:nn {^^^^208d} {(}
+\um_setup_active_subscript:nn {^^^^208e} {)}
+\um_setup_active_subscript:nn {^^^^2090} {a}
+\um_setup_active_subscript:nn {^^^^2091} {e}
+\um_setup_active_subscript:nn {^^^^1d62} {i}
+\um_setup_active_subscript:nn {^^^^2092} {o}
+\um_setup_active_subscript:nn {^^^^1d63} {r}
+\um_setup_active_subscript:nn {^^^^1d64} {u}
+\um_setup_active_subscript:nn {^^^^1d65} {v}
+\um_setup_active_subscript:nn {^^^^2093} {x}
+\um_setup_active_subscript:nn {^^^^1d66} {\beta}
+\um_setup_active_subscript:nn {^^^^1d67} {\gamma}
+\um_setup_active_subscript:nn {^^^^1d68} {\rho}
+\um_setup_active_subscript:nn {^^^^1d69} {\phi}
+\um_setup_active_subscript:nn {^^^^1d6a} {\chi}
+\group_end:
+\cs_new:Npn \um_scan_sscript: {
+ \um_scan_sscript:TF {
+ \um_scan_sscript:
+ }{
+ \um_sub_or_super:n {\l_um_ss_chain_tl}
+ }
+}
+\cs_new:Npn \um_scan_sscript:TF #1#2 {
+ \tl_set:Nx \l_peek_true_aux_tl { \exp_not:n{ #1 } }
+ \tl_set_eq:NN \l_peek_true_tl \c_peek_true_remove_next_tl
+ \tl_set:Nx \l_peek_false_tl {\exp_not:n{\group_align_safe_end: #2}}
+ \group_align_safe_begin:
+ \peek_after:NN \um_peek_execute_branches_ss:
+}
+\cs_new:Npn \um_peek_execute_branches_ss: {
+ \bool_if:nTF {
+ \token_if_eq_catcode_p:NN \l_peek_token \c_group_begin_token ||
+ \token_if_eq_catcode_p:NN \l_peek_token \c_group_end_token ||
+ \token_if_eq_meaning_p:NN \l_peek_token \c_space_token
+ }
+ { \l_peek_false_tl }
+ { \um_peek_execute_branches_ss_aux: }
+}
+\cs_new:Npn \um_peek_execute_branches_ss_aux: {
+ \prop_if_in:cxTF
+ {g_um_\l_um_tmpa_tl _prop}
+ {\meaning\l_peek_token}
+ {
+ \prop_get:cxN
+ {g_um_\l_um_tmpa_tl _prop}
+ {\meaning\l_peek_token}
+ \l_um_tmpb_tl
+ \tl_put_right:NV \l_um_ss_chain_tl \l_um_tmpb_tl
+ \l_peek_true_tl
+ }
+ {\l_peek_false_tl}
+}
+\cs_new:Npn \um_define_active_frac:Nw #1 #2/#3 {
+ \char_make_active:N #1
+ \char_gmake_mathactive:N #1
+ \tl_rescan:nn {
+ \ExplSyntaxOn
+ }{
+ \cs_gset:Npx #1 {
+ \bool_if:NTF \l_um_smallfrac_bool {\exp_not:N\tfrac} {\exp_not:N\frac}
+ {#2} {#3}
+ }
+ }
+}
+\cs_new:Npn \um_setup_active_frac: {
+ \group_begin:
+ \um_define_active_frac:Nw ^^^^2152 1/{10}
+ \um_define_active_frac:Nw ^^^^2151 1/9
+ \um_define_active_frac:Nw ^^^^215b 1/8
+ \um_define_active_frac:Nw ^^^^2150 1/7
+ \um_define_active_frac:Nw ^^^^2159 1/6
+ \um_define_active_frac:Nw ^^^^2155 1/5
+ \um_define_active_frac:Nw ^^^^00bc 1/4
+ \um_define_active_frac:Nw ^^^^2153 1/3
+ \um_define_active_frac:Nw ^^^^215c 3/8
+ \um_define_active_frac:Nw ^^^^2156 2/5
+ \um_define_active_frac:Nw ^^^^00bd 1/2
+ \um_define_active_frac:Nw ^^^^2157 3/5
+ \um_define_active_frac:Nw ^^^^215d 5/8
+ \um_define_active_frac:Nw ^^^^2154 2/3
+ \um_define_active_frac:Nw ^^^^00be 3/4
+ \um_define_active_frac:Nw ^^^^2158 4/5
+ \um_define_active_frac:Nw ^^^^215a 5/6
+ \um_define_active_frac:Nw ^^^^215e 7/8
+ \group_end:
+}
+\um_setup_active_frac:
+\def\to{\rightarrow}
+\def\overrightarrow{\vec}
+\def\le{\leq}
+\def\ge{\geq}
+\def\neq{\ne}
+\def\triangle{\mathord{\bigtriangleup}}
+\def\bigcirc{\mdlgwhtcircle}
+\def\circ{\vysmwhtcircle}
+\def\bullet{\smblkcircle}
+\def\mathyen{\yen}
+\def\mathsterling{\sterling}
+\@ifpackageloaded{amsmath}{
+ % define their own colon, perhaps I should just steal it. (It does look much better.)
+}{
+ \cs_set_protected:Npn \colon {
+ \bool_if:NTF \g_um_literal_colon_bool {:} { \mathpunct{:} }
+ }
+}
+\def\mathcal{\mathscr}
+\def\mathrm{\mathup}
+\let\mathfence\mathord
+\def\digamma{\updigamma}
+\def\Digamma{\upDigamma}
+\def\operator@font{\um_switchto_mathup:}
+\cs_new:Npn \um_patch_pkg:nn #1#2 {
+ \@ifpackageloaded {#1} {
+ #2
+ }{
+ \um_after_pkg:nn {#1} {#2}
+ }
+}
+\um_patch_pkg:nn {url} {
+ \tl_put_left:Nn \Url@FormatString { \um_switchto_mathup: }
+ \tl_put_right:Nn \UrlSpecials {
+ \do\`{\mathchar`\`}
+ \do\'{\mathchar`\'}
+ \do\${\mathchar`\$}
+ \do\&{\mathchar`\&}
+ }
+}
+\um_patch_pkg:nn {amsmath} {
+ \tl_remove_in:Nn \@begindocumenthook {
+ \mathchardef\std@minus\mathcode`\-\relax
+ \mathchardef\std@equal\mathcode`\=\relax
+ }
+ \def\std@minus{\Umathcharnum\Umathcodenum`\-\relax}
+ \def\std@equal{\Umathcharnum\Umathcodenum`\=\relax}
+ \def\@cdots{\mathinner{\cdots}}
+ \cs_set_eq:NN \dotsb@ \cdots
+}
+\um_patch_pkg:nn {amsopn} {
+ \cs_set:Npn \newmcodes@ {
+ \mathcode`\'39\scan_stop:
+ \mathcode`\*42\scan_stop:
+ \mathcode`\."613A\scan_stop:
+%% \ifnum\mathcode`\-=45 \else
+%% \mathchardef\std@minus\mathcode`\-\relax
+%% \fi
+ \mathcode`\-45\scan_stop:
+ \mathcode`\/47\scan_stop:
+ \mathcode`\:"603A\scan_stop:
+ }
+}
+\cs_set:Npn \| {\Vert}
+\cs_set:Npn \mathellipsis {\mathinner{\unicodeellipsis}}
+\cs_set:Npn \cdots {\mathinner{\unicodecdots}}
+\AtBeginDocument{
+ \def\widehat{\hat}
+ \def\widetilde{\tilde}
+}
+\AtEndOfPackage{
+ \@ifclassloaded{beamer}{
+ \ifbeamer@suppressreplacements\else
+ \um_warning:n {disable-beamer}
+ \beamer@suppressreplacementstrue
+ \fi
+ }{}
+}
+\cs_new:Npn \um_warning:n { \msg_warning:nn {unicode-math} }
+\cs_new:Npn \um_trace:n { \msg_trace:nn {unicode-math} }
+\cs_new:Npn \um_trace:nx { \msg_trace:nnx {unicode-math} }
+\msg_new:nnn {unicode-math} {maths-feature-only}
+{
+ The~ '#1'~ font~ feature~ can~ only~ be~ used~ for~ maths~ fonts.
+}
+\msg_new:nnn {unicode-math} {disable-beamer}
+{
+ Disabling~ beamer's~ math~ setup.\\
+ Please~ load~ beamer~ with~ the~ [professionalfonts]~ class~ option.
+}
+\msg_new:nnn {unicode-math} {no-tfrac}
+{
+ Small~ fraction~ command~ \protect\tfrac\ not~ defined.\\
+ Load~ amsmath~ or~ define~ it~ manually~ before~ loading~ unicode-math.
+}
+\msg_new:nnn {unicode-math} {default-math-font}
+{
+ Defining~ the~ default~ maths~ font~ as~ '#1'.
+}
+\msg_new:nnn {unicode-math} {setup-implicit}
+{
+ Setup~ alphabets:~ implicit~ mode.
+}
+\msg_new:nnn {unicode-math} {setup-explicit}
+{
+ Setup~ alphabets:~ explicit~ mode.
+}
+\msg_new:nnn {unicode-math} {alph-initialise}
+{
+ Initialising~ \@backslashchar math#1.
+}
+\msg_new:nnn {unicode-math} {setup-alph}
+{
+ Setup~ alphabet:~ #1.
+}
+\ExplSyntaxOff
+\errorcontextlines=999
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index f4d3dda7292..61b45be1833 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -312,8 +312,8 @@ my @TLP_working = qw(
uaclasses uebungsblatt ucdavisthesis ucs ucthesis uhrzeit uiucthesis
ulem ulqda ulsy
umich-thesis uml umlaute
- umthesis umtypewriter underlin underscore undertilde units unitsdef
- universa
+ umthesis umtypewriter
+ underlin underscore undertilde unicode-math units unitsdef universa
upmethodology upquote url urlbst ushort ut-thesis uwthesis
vancouver variations varindex varisize
varsfromjobname varwidth vaucanson-g
diff --git a/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc
index f5c762d2823..3c2b26b49aa 100644
--- a/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-mathextra.tlpsrc
@@ -37,6 +37,7 @@ depend tensor
depend tex-ewd
depend thmbox
depend turnstile
+depend unicode-math
depend venn
depend yhmath
depend collection-fontsrecommended
diff --git a/Master/tlpkg/tlpsrc/unicode-math.tlpsrc b/Master/tlpkg/tlpsrc/unicode-math.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/unicode-math.tlpsrc