%% %% This is file `mathfont.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% mathfont_code.dtx (with options: `package') %% %% This file is from version 2.3 of the free and open-source %% LaTeX package "mathfont," released September 2023, to be used %% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX %% is recommended.) %% %% Copyright 2018-2023 by Conrad Kosowsky %% %% This Work may be used, distributed, and modified under the %% terms of the LaTeX Public Project License, version 1.3c or %% any later version. The most recent version of this license %% is available online at %% %% https://www.latex-project.org/lppl/. %% %% This Work has the LPPL status "maintained," and the current %% maintainer is the package author, Conrad Kosowsky. He can %% be reached at kosowsky.latex@gmail.com. %% %% PLEASE KNOW THAT THIS FREE SOFTWARE IS PROVIDED WITHOUT %% ANY WARRANTY. SPECIFICALLY, THE "NO WARRANTY" SECTION OF %% THE LATEX PROJECT PUBLIC LICENSE STATES THE FOLLOWING: %% %% THERE IS NO WARRANTY FOR THE WORK. EXCEPT WHEN OTHERWISE %% STATED IN WRITING, THE COPYRIGHT HOLDER PROVIDES THE WORK %% `AS IS’, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED %% OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED %% WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR %% PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE %% OF THE WORK IS WITH YOU. SHOULD THE WORK PROVE DEFECTIVE, %% YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR %% CORRECTION. %% %% IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED %% TO IN WRITING WILL THE COPYRIGHT HOLDER, OR ANY AUTHOR %% NAMED IN THE COMPONENTS OF THE WORK, OR ANY OTHER PARTY %% WHO MAY DISTRIBUTE AND/OR MODIFY THE WORK AS PERMITTED %% ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, %% SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT %% OF ANY USE OF THE WORK OR OUT OF INABILITY TO USE THE WORK %% (INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA, DATA BEING %% RENDERED INACCURATE, OR LOSSES SUSTAINED BY ANYONE AS A %% RESULT OF ANY FAILURE OF THE WORK TO OPERATE WITH ANY %% OTHER PROGRAMS), EVEN IF THE COPYRIGHT HOLDER OR SAID %% AUTHOR OR SAID OTHER PARTY HAS BEEN ADVISED OF THE %% POSSIBILITY OF SUCH DAMAGES. %% %% For more information, see the LaTeX Project Public License. %% Derivative works based on this package may come with their %% own license or terms of use, and the package author is not %% responsible for any third-party software. %% %% For more information, see mathfont_code.dtx. Happy TeXing! %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{mathfont}[2023/09/09 v. 2.3 Package mathfont] \newif\ifM@XeTeXLuaTeX % is engine one of xetex or luatex? \newif\ifM@Noluaotfload % cannot find luaotfload.sty? \newif\ifM@adjust@font % should adjust fonts with lua script? \newif\ifM@font@loaded % load mathfont with font specified? \newif\ifE@sterEggDecl@red % already did easter egg? \newcount\M@loader % specifies which font-loader to use \long\def\@gobble@brackets[#1]{} \def\M@NoMathfontError#1{\PackageError{mathfont} {\MessageBreak Invalid command\MessageBreak \string#1 on line \the\inputlineno} {Your command was ignored. I couldn't\MessageBreak load mathfont, so I never defined this\MessageBreak control sequence.}} \@tfor\@i:=\setfont \RuleThicknessFactor \IntegralItalicFactor \SurdVerticalFactor \SurdHorizontalFactor \CharmLine \CharmFile\do{% \edef\@tempa{\protected\def\expandafter\noexpand\@i}% \edef\@tempb{\noexpand\M@NoMathfontError \expandafter\noexpand\@i \noexpand\@gobble}% \expandafter\@tempa\expandafter{\@tempb}} \@tfor\@i:=\newmathrm \newmathit \newmathbf \newmathbfit \newmathbold \newmathboldit \newmathsc \newmathscit \newmathbfsc \newmathbfscit\do{% \edef\@tempa{\protected\def\expandafter\noexpand\@i}% \edef\@tempb{\noexpand\M@NoMathfontError \expandafter\noexpand\@i \noexpand\@gobbletwo}% \expandafter\@tempa\expandafter{\@tempb}} \@tfor\@i:=\mathfont\mathconstantsfont\do{% \edef\@tempa{\protected\def\expandafter\noexpand\@i}% \edef\@tempb{\noexpand\M@NoMathfontError \expandafter\noexpand\@i \noexpand\@ifnextchar[{\noexpand\expandafter \noexpand\@gobble\noexpand\@gobble@brackets}{\noexpand\@gobble}} \expandafter\@tempa\expandafter{\@tempb}} \protected\def\newmathfontcommand{% \M@NoMathfontError\newmathfontcommand\@gobblefour} \ifdefined\directlua \M@XeTeXLuaTeXtrue \fi \ifdefined\XeTeXrevision \M@XeTeXLuaTeXtrue \fi \ifM@XeTeXLuaTeX\else \begingroup \catcode`\ =12\relax \def\M@XeTeXLuaTeXError{\GenericError{}% {\MessageBreak\MessageBreak Package mathfont error:% \MessageBreak\MessageBreak *************************\MessageBreak * *\MessageBreak * UNABLE TO *\MessageBreak * LOAD MATHFONT *\MessageBreak * *\MessageBreak * Missing XeTeX *\MessageBreak * or LuaTeX *\MessageBreak * *\MessageBreak *************************\MessageBreak\@gobbletwo}% {See the mathfont package documentation for explanation.}% {I need XeTeX or LuaTeX to use mathfont. It\MessageBreak looks like the current engine is something\MessageBreak else, so I'm going to stop reading in the\MessageBreak package file now. (You won't be able to use\MessageBreak commands from mathfont in your document.) To\MessageBreak load mathfont correctly, please retypeset your\MessageBreak document with one of those two engines.^^J}}% \expandafter\endgroup \M@XeTeXLuaTeXError \AtEndOfPackage{\typeout{:: mathfont :: Failed to load\on@line.}} \expandafter\endinput % we should \endinput with a balanced conditional \fi \ifdefined\directlua \M@adjust@fonttrue % if engine is LuaTeX, adjust font by default \IfFileExists{luaotfload.sty} {\M@Noluaotfloadfalse\RequirePackage{luaotfload}}{\M@Noluaotfloadtrue} \else \AtEndOfPackage{\PackageWarningNoLine{mathfont}{% The current engine is XeTeX, but as\MessageBreak of mathfont version 2.0, LuaTeX is\MessageBreak recommended. Consider compiling with\MessageBreak LuaLaTeX. Certain features will not\MessageBreak work with XeTeX}} \fi \ifM@Noluaotfload % false by default; true if LuaTeX AND no luaotfload.sty \begingroup \catcode`\ =12\relax \def\M@NoluaotfloadError{\GenericError{}% {\MessageBreak\MessageBreak Package mathfont error:% \MessageBreak\MessageBreak *************************\MessageBreak * *\MessageBreak * UNABLE TO *\MessageBreak * LOAD MATHFONT *\MessageBreak * *\MessageBreak * Cannot find the *\MessageBreak * file luaotfload.sty *\MessageBreak * *\MessageBreak *************************\MessageBreak\@gobbletwo}% {You are likely seeing this message because you haven't^^J% installed luaotfload. Check your TeX distribution for a^^J% list of the packages on your system.^^J^^J% See the mathfont documentation for further explanation.}% {You're in trouble here. It looks like the current\MessageBreak engine is LuaTeX, so I need the luaotfload package\MessageBreak to make mathfont work properly. However, I can't\MessageBreak find luaotfload, which likely means something is\MessageBreak wrong with your TeX installation. I'm going to stop\MessageBreak reading in the mathfont package file. (You won't be\MessageBreak able to use commands from mathfont in your document.)\MessageBreak To load mathfont work correctly, make sure you have\MessageBreak installed luaotfload.sty in a directory searchable\MessageBreak by TeX or compile with XeLaTeX.^^J}}% \expandafter\endgroup \M@NoluaotfloadError \AtEndOfPackage{\typeout{:: mathfont :: Failed to load\on@line.}} \expandafter\endinput % we should \endinput with a balanced conditional \fi \def\M@Optiondeprecated#1#2{\PackageError{mathfont} {Option "#1" deprecated} {Your option was ignored. Please\MessageBreak use #2\MessageBreak instead. For more information,\MessageBreak see the mathfont documentation.}} \DeclareOption{packages}{% \M@Optiondeprecated{packages} {the macro \string\restoremathinternals}} \DeclareOption{operators}{% \M@Optiondeprecated{operators} {the bigops keyword with \string\mathfont}} \DeclareOption{no-operators}{% \M@Optiondeprecated{no-operators} {the bigops keyword with \string\mathfont}} \DeclareOption{easter-egg}{% \ifE@sterEggDecl@red\else \E@sterEggDecl@redtrue \def\EasterEggUpdate{\show\E@sterEggUpd@te} \def\E@sterEggUpd@te{Easter Egg Status:^^J^^J% Okay, opening your Easter egg.^^J^^J} \EasterEggUpdate \def\E@sterEggUpd@te{Easter Egg Status:^^J^^J% Uh oh. It looks like^^J% your Easter egg flew^^J% out the window. I don't^^J% suppose you know the^^J% best kind of bait to^^J% lure an egg?^^J^^J} \EasterEggUpdate \def\E@sterEggUpd@te{Easter Egg Status:^^J^^J% Still wrangling. Try back later.^^J^^J} \AtBeginDocument{\bgroup \def\E@sterEggUpd@te{Easter Egg Status:^^J^^J:% If we have zero eggs^^J% and zero bunnies, how^^J% many gnats does it take^^J% to change a lightbulb??^^J^^J} \EasterEggUpdate \egroup} \AtEndDocument{% \def\E@sterEggUpd@te{Easter Egg Status:^^J^^J% Happy, happy day! Happy,^^J% happy day! Clap your hands,^^J% and be glad your hovercraft^^J% isn't full of eels!^^J^^J} \EasterEggUpdate \let\E@sterEggUpd@te\relax \let\EasterEggUpdate\relax} \fi}% my easter egg :) \DeclareOption{default-loader}{\M@loader\z@} \DeclareOption{fontspec-loader}{\M@loader\@ne} \DeclareOption{adjust}{\M@adjust@fonttrue} \DeclareOption{no-adjust}{\M@adjust@fontfalse} \DeclareOption*{\M@font@loadedtrue\edef\M@font@load{\CurrentOption}} \ProcessOptions* \ifcase\M@loader \wlog{Package mathfont Info: Default font-loader was requested for font loading.} \or \wlog{Package mathfont Info: Package fontspec was requested for font loading.} \@ifpackageloaded{fontspec} {\wlog{Package mathfont Info: Package fontspec detected.} \csname bool_if:NTF\expandafter\endcsname \csname g__fontspec_math_bool\endcsname {\wlog{Package mathfont Info: Setting \string\g__fontspec_math_bool to false.} \csname bool_set_false:N\expandafter\endcsname \csname g__fontspec_math_bool\endcsname}{\relax}} {\wlog{Package mathfont Info: Package fontspec not detected.} \IfFileExists{fontspec.sty} {\wlog{Package mathfont Info: File fontspec.sty was found.} \wlog{Package mathfont Info: Loading fontspec.} \RequirePackage[no-math]{fontspec}} {\PackageError{mathfont}{Missing package fontspec;\MessageBreak using default font-loader instead} {You requested fontspec as the font-loader for\MessageBreak mathfont. However, I can't find the fontspec\MessageBreak package file, so I'm going to use the default\MessageBreak font-loader instead. (This likely means that\MessageBreak something is wrong with your TeX installation.)\MessageBreak Check your TeX distribution for a list of the\MessageBreak packages installed on your system. To resolve\MessageBreak this error, make sure fontspec is installed in\MessageBreak a directory searchable by TeX or load mathfont\MessageBreak with the default-loader option.^^J} \M@loader\z@}} \fi \ifcase\M@loader \wlog{Package mathfont Info: Using default font-loader.} \AtEndOfPackage{\typeout{:: mathfont :: Using default font-loader.}} \def\M@otf@features{script=latin;language=DFLT;+tlig;+liga;+lnum} \or \wlog{Package mathfont Info: Using fontspec as font-loader.} \AtEndOfPackage{\typeout{:: mathfont :: Using fontspec as font-loader.}} \def\M@otf@features{Script=Latin, Language=Default, Ligatures={TeX,Common}, Numbers=Lining} \fi \ifdefined\directlua \ifM@adjust@font \wlog{Package mathfont Info: Enabling Lua-based font adjustments.} \AtEndOfPackage{% \typeout{:: mathfont :: Lua-based font adjustments enabled.}} \else \wlog{Package mathfont Info: Disabling Lua-based font adjustments.} \AtEndOfPackage{% \typeout{:: mathfont :: Lua-based font adjustments disabled.}} \fi \else \ifM@adjust@font \PackageError{mathfont}{Option^^J"adjust" ignored with XeTeX} {Your package option "adjust" was ignored.\MessageBreak This option works only with LuaTeX, and it\MessageBreak looks like the current engine is XeTeX. To\MessageBreak enable Lua-based font adjustments, typeset\MessageBreak with LuaLaTeX.^^J} \M@adjust@fontfalse \fi \wlog{Package mathfont Info: Disabling Lua-based font adjustments.} \AtEndOfPackage{% \typeout{:: mathfont :: Lua-based font adjustments disabled.}} \fi \def\M@SymbolFontInfo#1#2#3#4{\wlog{^^JPackage mathfont Info: Declaring new symbol font from #1!^^J% NFSS Family Name: \space#2^^J% Series/Shape Info: #3^^J% Symbol Font Name: \space#4^^J}} \def\M@FontChangeInfo#1#2{\wlog{Package mathfont Info: Setting #1 chars to #2!}} \def\M@NewFontCommandInfo#1#2#3#4#5{\wlog{^^JPackage mathfont Info: Creating \string#1 using #2!^^J% NFSS Family Name: \space#3^^J% Series/Shape Info: #4/#5^^J}} \def\M@CharsSetWarning#1{\PackageWarning{mathfont} {I already set the font for\MessageBreak #1 chars, so I'm ignoring\MessageBreak this option for \string\mathfont\space on line \the\inputlineno\@gobble}} \def\M@MissingNFSSShapesWarning#1#2{\PackageWarning{mathfont} {The nfss family "#1"\MessageBreak from line \the\inputlineno\space is missing shapes. You\MessageBreak may see some substitutions or errors.\MessageBreak Missing shape(s):#2\@gobble}} \def\M@NoBaseModeDetectedWarning#1{\PackageWarning{mathfont} {I couldn't find a base-mode version of\MessageBreak the nfss family "#1"\MessageBreak from line \the\inputlineno, so I'm using the family\MessageBreak you specified for the math font. Some\MessageBreak font features may not work in math\MessageBreak mode\@gobble}} \def\M@DeprecatedWarning#1#2{\PackageWarning{mathfont} {Your \string#1\space command on\MessageBreak line \the\inputlineno\space is deprecated, and I\MessageBreak replaced it with \string#2\@gobble}} \def\M@InvalidOptionError#1{\PackageError{mathfont} {Invalid^^Joption "#1" for \string\mathfont\on@line} {Hm. You used a keyword that isn't actually an optional\MessageBreak argument for \string\mathfont. Check that you spelled the keyword\MessageBreak correctly. Otherwise, I'm not sure what's wrong. Is this\MessageBreak option listed in the package documentation? In any event,\MessageBreak I'm going to ignore it.^^J}} \def\M@InvalidSuboptionError#1{\PackageError{mathfont} {Invalid^^Jsuboption "#1" for \string\mathfont\on@line} {Hm. You used a keyword that isn't actually a suboption\MessageBreak for \string\mathfont. Check that you spelled the keyword correctly.\MessageBreak Otherwise, I'm not sure what's wrong. Is this suboption\MessageBreak listed in the package documentation? In any event, I'm\MessageBreak going to ignore it.^^J}} \def\M@MissingOptionError{\PackageError{mathfont} {Missing^^Joption for \string\mathfont\on@line} {It looks like you included a , or = in\MessageBreak the optional argument of \string\mathfont\space but\MessageBreak didn't put anything before it.^^J}} \def\M@MissingSuboptionError{\PackageError{mathfont} {Missing^^Jsuboption for \string\mathfont\on@line} {It looks like you included an = somewhere\MessageBreak in the optional argument of \string\mathfont\space but\MessageBreak didn't put the suboption after it. Either\MessageBreak that or you typed == instead of =.^^J}} \def\M@InternalsRestoredError{\PackageError{mathfont} {Internal^^Jcommands restored} {This package slightly changes two LaTeX\MessageBreak internal commands, and you really shouldn't\MessageBreak be loading new math fonts without those\MessageBreak adjustments. What happened here is that you\MessageBreak used \string\mathfont\space in a situation where those\MessageBreak two commands retain their original defini-\MessageBreak tions. Presumably you used \string\mathfont\space after\MessageBreak calling the \string\restoremathinternals\space command.\MessageBreak I'm going to ignore this call to \string\mathfont.\MessageBreak Try typesetting this document with all\MessageBreak \string\mathfont\space commands placed before you call\MessageBreak \string\restoremathinternals.^^J}} \def\M@BadMathConstantsFontError#1{\PackageError{mathfont} {Invalid font specifier\MessageBreak for \string\mathconstantsfont:\MessageBreak "#1"} {Your command was ignored--I can't parse your argument.\MessageBreak Please make sure to use text that you have previously\MessageBreak fed to \string\mathfont\space for the argument of \string\mathconstantsfont.^^J}} \def\M@BadMathConstantsFontTypeError#1{\PackageError{mathfont} {Invalid\MessageBreak font specifier for \string\mathconstantsfont:\MessageBreak"#1"} {The optional argument of \string\mathconstantsfont\MessageBreak should be "upright" or "italic." Right now,\MessageBreak it's "#1."^^J}} \def\M@MathConstantsNoFontAdjustWarning{\PackageWarning{mathfont} {Your \string\mathconstantsfont\space on line \the\inputlineno\MessageBreak is mainly for use in LuaTeX with font\MessageBreak adjustments enabled. In the current\MessageBreak situation, it is probably not doing\MessageBreak anything\@gobble}} \def\M@MissingControlSequenceError#1#2{\PackageError{mathfont} {Missing control sequence\MessageBreak for\string#1\MessageBreak on input line \the\inputlineno} {Your command was ignored. Right now the\MessageBreak first argument of \string#1\space is "#2."\MessageBreak Please use a control sequence instead.^^J}} \def\M@DoubleArgError#1#2{\PackageError{mathfont} {Multiple characters in\MessageBreak first argument of \string#1\MessageBreak on input line \the\inputlineno} {Your command was ignored. Right now the\MessageBreak first argument of \string#1\space is "#2,"\MessageBreak which is multiple characters. Please use\MessageBreak a single character instead.^^J}} \def\M@HModeError#1{\PackageError{mathfont} {Missing \string$ inserted\MessageBreak on input line line \the\inputlineno} {I generated an error because you used \string#1\space outside of\MessageBreak math mode. I inserted a \string$ before your \string#1, so we\MessageBreak should be all good now.^^J}} \def\M@ForbiddenCharmLine#1{\PackageError{mathfont} {Forbidden charm info contains #1} {The argument of your \string\CharmLine\space macro on line \the\inputlineno\MessageBreak contains the character #1, which will mess me up\MessageBreak if I try to read it, so I'm ignoring this call\MessageBreak to \string\CharmLine. To resolve this error, make sure\MessageBreak your charm information contains only integers,\MessageBreak floats, asterisks, commas, and spaces.^^J}} \def\M@ForbiddenCharmFile#1{\PackageError{mathfont} {Forbidden charm info contains #1} {One of the lines in your \string\CharmFile\space from line \the\inputlineno\MessageBreak contains the character #1, which will mess me up\MessageBreak if I try to read it, so I'm ignoring this line\MessageBreak from your file. To resolve this error, make sure\MessageBreak your charm information contains only integers,\MessageBreak floats, asterisks, commas, and spaces.^^J}} \def\M@NoFontAdjustError#1{\PackageError{mathfont} {Your command \MessageBreak\string#1 is invalid\MessageBreak without Lua-based font adjustments} {You haven't enabled Lua-based font adjustments,\MessageBreak but the macro you called won't do anything without\MessageBreak them. I'm going to ignore your command for now. To\MessageBreak resolve this error, load mathfont with the package\MessageBreak option "adjust" or compile with LuaLaTeX.^^J}} \def\M@BadIntegerError#1#2{\PackageError{mathfont} {Bad argument for\MessageBreak\string#1} {Your command was ignored. Please make sure\MessageBreak that your argument of \string#1\space\MessageBreak is a nonnegative integer. Right now it's\MessageBreak "#2".^^J}} \let\@@set@mathchar\set@mathchar \let\@@set@mathsymbol\set@mathsymbol \let\@@set@mathaccent\set@mathaccent \let\@@DeclareSymbolFont\DeclareSymbolFont \@onlypreamble\@@set@mathchar \@onlypreamble\@@set@mathsymbol \@onlypreamble\@@set@mathaccent \@onlypreamble\@@DeclareSymbolFont \wlog{Package mathfont Info: Adapting \noexpand\set@mathchar for unicode.} \wlog{Package mathfont Info: Adapting \noexpand\set@mathsymbol for unicode.} \wlog{Package mathfont Info: Adapting \noexpand\set@mathaccent for unicode.} \wlog{Package mathfont Info: Increasing upper bound on \noexpand\DeclareSymbolFont to 256.} \def\set@mathchar#1#2#3#4{% \multiply\count\z@ by 16\relax \advance\count\z@\count\tw@ \global\Umathcode`#2=\mathchar@type#3+#1+\count\z@\relax} \def\set@mathsymbol#1#2#3#4{% \multiply\count\z@ by 16\relax \advance\count\z@\count\tw@ \global\Umathchardef#2=\mathchar@type#3+#1+\count\z@\relax} \def\set@mathaccent#1#2#3#4{% \multiply\count\z@ by 16\relax \advance\count\z@\count\tw@ \protected\xdef#2{% \Umathaccent\mathchar@type#3+\number#1+\the\count\z@\relax}} \ifx\DeclareSymbolFont@m@dropped\@undefined \edef\@tempa{\expandafter\strip@prefix\meaning\DeclareSymbolFont} \def\@tempb{\def\DeclareSymbolFont##1##2##3##4##5} \else \edef\@tempa{\expandafter\strip@prefix\meaning\DeclareSymbolFont@m@dropped} \def\@tempb{\def\DeclareSymbolFont@m@dropped##1##2##3##4##5} \fi \def\M@p@tch@decl@re#1<15#2\@nil{#1<\e@mathgroup@top#2} \edef\M@DecSymDef{\expandafter\M@p@tch@decl@re\@tempa\@nil} \ifdefined\directlua \expandafter\@tempb\expandafter{\scantextokens\expandafter{\M@DecSymDef}} \else \begingroup \everyeof{\noexpand} \endlinechar\m@ne \edef\M@retokenize{\noexpand\scantokens{\noexpand\unexpanded{\M@DecSymDef}}} \edef\M@retokenize{\M@retokenize} \expandafter\endgroup \expandafter\@tempb\expandafter{\M@retokenize} \fi \newbox\surdbox \newcount\M@count \newcount\M@RuleThicknessFactor \newcount\M@IntegralItalicFactor \newcount\M@SurdVerticalFactor \newcount\M@SurdHorizontalFactor \newmuskip\radicandoffset \newread\M@Charm \newtoks\M@toks \M@count\z@ \M@RuleThicknessFactor\@m \M@IntegralItalicFactor=400\relax \M@SurdHorizontalFactor\@m \M@SurdVerticalFactor\@m \radicandoffset=3mu\relax \newif\ifM@upper \newif\ifM@lower \newif\ifM@diacritics \newif\ifM@greekupper \newif\ifM@greeklower \newif\ifM@agreekupper \newif\ifM@agreeklower \newif\ifM@cyrillicupper \newif\ifM@cyrilliclower \newif\ifM@hebrew \newif\ifM@digits \newif\ifM@operator \newif\ifM@symbols \newif\ifM@extsymbols \newif\ifM@delimiters \newif\ifM@radical \newif\ifM@arrows \newif\ifM@bigops \newif\ifM@extbigops \newif\ifM@bb \newif\ifM@cal \newif\ifM@frak \newif\ifM@bcal \newif\ifM@bfrak \newif\if@optionpresent \newif\if@suboptionpresent \newif\ifM@arg@good \newif\ifM@Decl@reF@mily \newif\ifM@fromCharmFile \def\M@uppershape{italic} % latin upper \def\M@lowershape{italic} % latin lower \def\M@diacriticsshape{upright} % diacritics \def\M@greekuppershape{upright} % greek upper \def\M@greeklowershape{italic} % greek lower \def\M@agreekuppershape{upright} % ancient greek upper \def\M@agreeklowershape{italic} % ancient greek lower \def\M@cyrillicuppershape{upright} % cyrillic upper \def\M@cyrilliclowershape{italic} % cyrillic lower \def\M@hebrewshape{upright} % hebrew \def\M@digitsshape{upright} % numerals \def\M@operatorshape{upright} % operator font \def\M@delimitersshape{upright} % delimiters \def\M@radicalshape{upright} % surd \def\M@bigopsshape{upright} % big operators \def\M@extbigopsshape{upright} % extended big operators \def\M@symbolsshape{upright} % basic symbols \def\M@extsymbolsshape{upright} % extended symbols \def\M@arrowsshape{upright} % arrows \def\M@bbshape{upright} % blackboard bold \def\M@calshape{upright} % caligraphic \def\M@frakshape{upright} % fraktur \def\M@bcalshape{upright} % bold caligraphic \def\M@bfrakshape{upright} % bold fraktur \def\M@keys{upper,lower,diacritics,greekupper,% greeklower,agreekupper,agreeklower,cyrillicupper,% cyrilliclower,hebrew,digits,operator,delimiters,% radical,bigops,extbigops,symbols,extsymbols,arrows,% bb,cal,frak,bcal,bfrak} \def\M@defaultkeys{upper,lower,diacritics,greekupper,% greeklower,digits,operator,symbols} \ifM@adjust@font \edef\M@defaultkeys{\M@defaultkeys,delimiters,radical,bigops} \fi \def\M@declare@shape#1#2#3#4#5#6{% \ifcsname TU/#1/#5/#6\endcsname \else \DeclareFontShape{TU}{#1}{#5}{#6}{<->"\@tempbase#2:#3;#4"}{} \fi} \def\M@fill@nfss@shapes#1#2#3{% \@for\@i:={#1}{}{#2;-smcp}{#3}{\mddefault}{\shapedefault},% {#1}{/I}{#2;-smcp}{#3}{\mddefault}{\itdefault},% {#1}{/B}{#2;-smcp}{#3}{\bfdefault}{\shapedefault},% {#1}{/BI}{#2;-smcp}{#3}{\bfdefault}{\itdefault},% {#1}{}{#2;+smcp}{#3}{\mddefault}{\scdefault},% {#1}{/I}{#2;+smcp}{#3}{\mddefault}{\scdefault\itdefault},% {#1}{/B}{#2;+smcp}{#3}{\bfdefault}{\shapedefault},% {#1}{/BI}{#2;+smcp}{#3}{\bfdefault}{\scdefault\itdefault}% \do{\expandafter\M@declare@shape\@i}} \def\M@check@nfss@shapes#1{% \let\@tempb\@empty \let\@tempwarning\@gobble \@for\@i:=\mddefault/\shapedefault,% \mddefault/\itdefault,% \bfdefault/\shapedefault,% \bfdefault/\itdefault\do{% \expandafter\ifx\csname TU/#1/\@i\endcsname\relax \def\@tempwarning{\M@MissingNFSSShapesWarning{#1}} \edef\@tempb{\@tempb, \@i} \fi} \@tempwarning{\expandafter\@gobble\@tempb}} \def\M@split@colon#1:#2\@nil{\def\@tempbase{#1} \def\@tempfeatures{#2}} \def\M@strip@colon#1:{#1} \def\M@newfont#1{% \edef\@tempa{#1} \expandafter\M@split@colon\@tempa:\@nil \ifx\@tempfeatures\@empty\else \edef\@tempfeatures{\expandafter\M@strip@colon\@tempfeatures} \fi \ifcsname TU+\@tempbase\endcsname % is font family already in nfss? \let\M@f@ntn@me\@tempbase \M@check@nfss@shapes\M@f@ntn@me \ifx\directlua\@undefined % if XeTeX \expandafter\edef\csname\M@f@ntn@me-base\endcsname{\M@f@ntn@me} \let\M@f@ntn@meb@se\M@f@ntn@me \else % if LuaTeX \ifcsname\M@f@ntn@me-base\endcsname % if base-mode version is known \edef\M@f@ntn@meb@se{\csname\M@f@ntn@me-base\endcsname} \M@check@nfss@shapes\M@f@ntn@meb@se \else \M@NoBaseModeDetectedWarning{\M@f@ntn@me} \edef\M@f@ntn@meb@se{\M@f@ntn@me} \expandafter\edef\csname\M@f@ntn@me-base\endcsname{\M@f@ntn@me} \fi \fi \expandafter\edef\csname M@fontfamily@\@tempbase\endcsname {\M@f@ntn@me} \expandafter\edef\csname M@fontfamily@base@\@tempbase\endcsname {\M@f@ntn@meb@se} \else \edef@nospace\@tempa{\@tempa} \ifcsname M@fontfamily@\@tempa\endcsname \edef\M@f@ntn@me{\csname M@fontfamily@\@tempa\endcsname} \edef\M@f@ntn@meb@se{\csname M@fontfamily@base@\@tempa\endcsname} \else \edef@nospace\@tempa{\@tempa} \ifcase\M@loader % are we using default font-loader? \let\M@f@ntn@me\@tempa \wlog{Package mathfont Info: Adding \@tempbase\space to the nfss!} \wlog{Family name: \M@f@ntn@me} \DeclareFontFamily{TU}{\M@f@ntn@me}{} \M@fill@nfss@shapes{\M@f@ntn@me}{\M@otf@features}{\@tempfeatures} \ifdefined\directlua \edef\M@f@ntn@meb@se{\M@f@ntn@me-base} \wlog{Package mathfont Info: Adding \@tempbase with mode=base to the nfss!} \wlog{Family name: \M@f@ntn@meb@se} \DeclareFontFamily{TU}{\M@f@ntn@meb@se}{} \M@fill@nfss@shapes {\M@f@ntn@meb@se}{\M@otf@features}{\@tempfeatures;mode=base} \else \edef\M@f@ntn@meb@se{\M@f@ntn@me} \fi \or % are we using fontspec as font-loader? \wlog{Package mathfont Info: Passing \@tempbase\space to fontspec for handling!} \csname fontspec_set_family:Nnn\endcsname\M@f@ntn@me {\M@otf@features,\@tempfeatures}{\@tempbase} \ifdefined\directlua \wlog{Package mathfont Info: Passing \@tempbase\space with Renderer=Base to fontspec for handling!} \csname fontspec_set_family:Nnn\endcsname\M@f@ntn@meb@se {\M@otf@features,\@tempfeatures,Renderer=Base}{\@tempbase} \else \edef\M@f@ntn@meb@se{\M@f@ntn@me} \fi \fi \expandafter\edef\csname\M@f@ntn@me-base\endcsname{\M@f@ntn@meb@se} \expandafter\edef\csname M@fontfamily@\@tempa\endcsname {\M@f@ntn@me} \expandafter\edef\csname M@fontfamily@base@\@tempa\endcsname {\M@f@ntn@meb@se} \fi \fi} \@onlypreamble\M@declare@shape \@onlypreamble\M@fill@nfss@shapes \@onlypreamble\M@newfont \def\M@check@option@valid#1{% \let\@temperror\M@InvalidOptionError % error by default \@for\@j:=\M@keys\do{% \ifx\@j#1 \let\@temperror\@gobble % eliminate error \@optionpresenttrue % set switch to true \fi} \def\@j{empty} % if option is "empty," we do nothing \ifx\@j#1 \let\@temperror\@gobble \@optionpresentfalse \fi \@temperror{#1}} \def\M@check@suboption@valid#1{% \let\@temperror\M@InvalidSuboptionError % error by default \@for\@j:=roman,upright,italic\do{% \ifx\@j#1 \let\@temperror\@gobble % eliminate error \@suboptionpresenttrue % set switch to true \fi} \@temperror{#1}} \def\M@strip@equals#1={#1} \def\M@parse@option#1=#2\@nil{% \@optionpresentfalse % set switch to false by default \@suboptionpresentfalse % set switch to false by default \def\@temp@opt{#1} % store option \def\@temp@sub{#2} % store suboption \ifx\@temp@opt\@empty \M@MissingOptionError \else \M@check@option@valid\@temp@opt \bgroup\def\@tempa{=} \ifx\@temp@sub\@tempa \egroup % first branch \egroup \M@MissingSuboptionError \else \egroup % second branch \egroup \ifx\@temp@sub\@empty \else \edef\@temp@sub{\expandafter\M@strip@equals\@temp@sub} \M@check@suboption@valid\@temp@sub % check that suboption is valid \fi \fi \bgroup\def\@tempa{roman} \ifx\@temp@sub\@tempa \egroup % first branch \egroup \def\@temp@sub{upright} \else \egroup % second branch \egroup \fi \fi} \long\def\edef@nospace#1#2{% \edef#1{#2}% \edef#1{\expandafter\zap@space#1 \@empty}} \protected\def\mathfont{\@ifnextchar[{\@mathfont}{\@mathfont[\M@defaultkeys]}} \def\@mathfont[#1]#2{% \ifx\set@mathchar\@@set@mathchar \M@InternalsRestoredError \else \M@toks{} \M@newfont{#2} \ifcsname M@fontid@\M@f@ntn@me\endcsname\else % need new \M@count value? \expandafter\edef\csname M@fontid@\M@f@ntn@me\endcsname{\the \M@count} \expandafter\edef\csname M@fontid@\M@f@ntn@meb@se\endcsname{\the \M@count} \advance\M@count\@ne \fi \edef\@tempa{\csname M@fontid@\M@f@ntn@me\endcsname} \edef@nospace\@tempb{#1} \@for\@i:=\@tempb\do{\expandafter\M@parse@option\@i=\@nil \if@optionpresent \expandafter\ifx % next line is two cs to be compared \csname ifM@\@temp@opt\expandafter\endcsname\csname iftrue\endcsname \M@CharsSetWarning{\@temp@opt} \else \edef\@tempc{\the\M@toks^^J\@temp@opt} \M@toks\expandafter{\@tempc} \if@suboptionpresent \expandafter\edef\csname M@\@temp@opt shape\endcsname{\@temp@sub} \fi \edef\@tempc{\the\M@toks\space (\csname M@\@temp@opt shape\endcsname)} \M@toks\expandafter{\@tempc} \edef\@tempc{\csname M@\@temp@opt shape\endcsname} \def\@tempb{upright} \ifx\@tempb\@tempc \let\@tempb\shapedefault \else \let\@tempb\itdefault \fi \ifcsname symM\@tempc\@tempa\endcsname\else \M@SymbolFontInfo{\@tempbase}{\M@f@ntn@meb@se} {\mddefault/\@tempb}{M\@tempc\@tempa} \DeclareSymbolFont {M\@tempc\@tempa}{TU}{\M@f@ntn@meb@se}{\mddefault}{\@tempb} \fi \expandafter \edef\csname M@\@temp@opt @fontinfo\endcsname{\@tempbase} \M@FontChangeInfo{\@temp@opt}{\@tempbase} \csname M@\@temp@opt @set\endcsname % set default font \csname M@\@temp@opt true\endcsname % set switch to true \fi \fi} \edef\@tempa{\the\M@toks} \ifx\@tempa\@empty \wlog{The \string\mathfont\space command on line \the\inputlineno\space did not change the font for any characters!} \else \wlog{} \typeout{:: mathfont :: Using font \@tempbase\space on line \the\inputlineno.} \wlog{Character classes changed:\the\M@toks} \fi \fi} \@onlypreamble\mathfont \@onlypreamble\m@thf@nt \@onlypreamble\@mathfont \protected\def\setfont#1{% \mathfont{#1} \mathconstantsfont{#1} \setmathfontcommands{#1} \let\rmdefault\M@f@ntn@me} \@onlypreamble\setfont \let\M@SetMathConstants\relax \protected\def\mathconstantsfont{% \@ifnextchar[{\@mathconstantsfont}{\@mathconstantsfont[upright]}} \def\@mathconstantsfont[#1]#2{% \edef@nospace\@tempa{#2} \edef\@tempa{\csname M@fontfamily@base@\@tempa\endcsname} \expandafter\ifx\@tempa\relax \M@BadMathConstantsFontError{#2} \else \def\@tempb{#1} \def\@tempc{upright} \ifx\@tempb\@tempc \let\m@th@const@nts@font@sh@pe\shapedefault \else \def\@tempc{italic} \ifx\@tempb\@tempc \let\m@th@const@nts@font@sh@pe\itdefault \else \M@BadMathConstantsFontTypeError{#1} \fi \fi \ifcsname symM#1\csname M@fontid@\@tempa\endcsname\endcsname\else \DeclareSymbolFont{M#1\csname M@fontid@\@tempa\endcsname} {TU}{\@tempa}{\mddefault}{\m@th@const@nts@font@sh@pe} \fi \let\m@th@const@nts@font\@tempa \protected\def\M@SetMathConstants{% \begingroup \escapechar\m@ne \expandafter\getanddefine@fonts \csname symM#1\csname M@fontid@\m@th@const@nts@font\endcsname \expandafter \endcsname % expands to \symMupright \csname TU/\m@th@const@nts@font /\seriesdefault /\m@th@const@nts@font@sh@pe \endcsname % expands to \TU//m/ \globaldefs\@ne \expandafter\@gobbletwo\math@fonts % gobble to avoid infinite loop \endgroup} \fi \ifM@adjust@font\else \M@MathConstantsNoFontAdjustWarning \fi} \def\math@fonts{\aftergroup\M@SetMathConstants} \@onlypreamble\mathconstantsfont \def\M@check@csarg#1#2{% \expandafter\ifx\expandafter\@nnil\@gobble#2\@nnil % good \ifcat\relax\noexpand#2 % good \M@arg@goodtrue \else % if #2 not a control sequence \M@MissingControlSequenceError#1{#2} \M@arg@goodfalse \fi \else % if #2 is multiple tokens \M@DoubleArgError#1{#2} \M@arg@goodfalse \fi} \protected\def\newmathfontcommand#1#2#3#4{% \M@check@csarg\newmathfontcommand{#1} \ifM@arg@good \M@newfont{#2} \M@NewFontCommandInfo{#1}{\@tempbase}{\M@f@ntn@meb@se}{#3}{#4} \DeclareMathAlphabet{#1}{TU}{\M@f@ntn@meb@se}{#3}{#4} \fi} \@onlypreamble\newmathfontcommand \def\M@define@newmath@cmd#1#2#3{% \protected\def#1##1##2{% \M@check@csarg{#1}{##1} \newmathfontcommand{##1}{##2}{#2}{#3}}} \def\M@default@newmath@cmds{% \newmathrm{\mddefault}{\shapedefault},% \newmathit{\mddefault}{\itdefault},% \newmathbf{\bfdefault}{\shapedefault},% \newmathbfit{\bfdefault}{\itdefault},% \newmathsc{\mddefault}{\scdefault},% \newmathscit{\mddefault}{\scdefault\itdefault},% \newmathbfsc{\bfdefault}{\scdefault},% \newmathbfscit{\bfdefault}{\scdefault\itdefault}} \@for\@i:=\M@default@newmath@cmds\do{\expandafter\M@define@newmath@cmd\@i} \@onlypreamble\newmathrm \@onlypreamble\newmathit \@onlypreamble\newmathbf \@onlypreamble\newmathbfit \@onlypreamble\newmathsc \@onlypreamble\newmathscit \@onlypreamble\newmathbfsc \@onlypreamble\newmathbfscit \@onlypreamble\M@define@newmath@cmd \let\M@default@newmath@cmds\relax \protected\def\setmathfontcommands#1{% \newmathrm\mathrm{#1} \newmathit\mathit{#1} \newmathbf\mathbf{#1} \newmathbfit\mathbfit{#1} \newmathsc\mathsc{#1} \newmathscit\mathscit{#1} \newmathbfsc\mathbfsc{#1} \newmathbfscit\mathbfscit{#1}} \@onlypreamble\setmathfontcommands \protected\def\newmathbold{% \M@DeprecatedWarning\newmathbold\newmathbf\newmathbf} \protected\def\newmathboldit{% \M@DeprecatedWarning\newmathboldit\newmathbfit\newmathbfit} \ifM@adjust@font \def\M@check@int#1{% \M@arg@goodfalse \begingroup \edef\@tempa{\number0#1} \edef\@tempa{\detokenize\expandafter{\@tempa}} \@expandtwoargs\in@{"}{\@tempa} \ifin@ % is " in #1? \endgroup % first branch \endgroup \else \@expandtwoargs\in@{\@backslashchar}{\@tempa} \ifin@ % is backslash in #1? \endgroup % second branch \endgroup \else \directlua{ local num = tonumber("\@tempa") local bool = 0 % keep track if \@tempa is (int >= 0) if num then % if number? if num == num - (num \@percentchar 1) then % if integer? if num >= 0 then % if nonnegative? bool = 1 end end end tex.print("\@backslashchar\@backslashchar endgroup") if bool == 1 then tex.print("\@backslashchar\@backslashchar csname M@arg@goodtrue% \@backslashchar\@backslashchar endcsname") end} \fi \fi} \let\@tempa~ \let~\noexpand \count@\escapechar \escapechar\m@ne \@tfor\@i:=\RuleThicknessFactor\IntegralItalicFactor \SurdHorizontalFactor\SurdVerticalFactor\do{% \protected\expandafter\edef\@i#1{% ~\M@check@int{#1}% ~\ifM@arg@good ~\global \expandafter~\csname M@\expandafter\string\@i\endcsname=#1\relax ~\else ~\M@BadIntegerError\expandafter~\@i{#1}% ~\fi}} \let~\@tempa \escapechar\count@ \else \@tfor\@i:=\RuleThicknessFactor\IntegralItalicFactor\SurdHorizontalFactor \SurdVerticalFactor\CharmLine\CharmFile \do{% \protected\expandafter\edef\@i{\noexpand\M@NoFontAdjustError \expandafter\noexpand\@i \noexpand\@gobble}} \fi \@onlypreamble\RuleThicknessFactor \@onlypreamble\IntegralItalicFactor \@onlypreamble\SurdHorizontalFactor \@onlypreamble\SurdVerticalFactor \@onlypreamble\CharmLine \@onlypreamble\CharmFile \def\restoremathinternals{% \ifx\set@mathchar\@@set@mathchar \else \wlog{Package mathfont Info: Restoring \string\set@mathchar.} \wlog{Package mathfont Info: Restoring \string\set@mathsymbol.} \wlog{Package mathfont Info: Restoring \string\set@mathaccent.} \wlog{Package mathfont Info: Restoring \string\DeclareSymbolFont.} \let\set@mathchar\@@set@mathchar \let\set@mathsymbol\@@set@mathsymbol \let\set@mathaccent\@@set@mathaccent \let\DeclareSymbolFont\@@DeclareSymbolFont \fi} \protected\gdef\clap#1{\hb@xt@\z@{\hss#1\hss}} \protected\def\stack@flatrel#1#2{\expandafter \st@ck@fl@trel\expandafter#1\@firstofone#2} \protected\gdef\st@ck@fl@trel#1#2#3{% {\setbox0\hbox{$\m@th#1#2$}% contains \mathrel symbol \setbox1\hbox{$\m@th#1#3$}% gets raised over \box0 \if\wd0>\wd1\relax \hb@xt@\wd0{% \hfil \clap{\raise0.7\ht0\box1}% \clap{\box0}\hfil}% \else \hb@xt@\wd1{% \hfil \clap{\raise0.7\ht0\box1}% \clap{\box0}\hfil}% \fi}} \ifnum\tracinglostchars<\tw@ \tracinglostchars\tw@ \fi \def\keyword@info@begindocument#1:#2\@nil{% \expandafter\ifx % next line is two cs to be compared \csname ifM@#1\expandafter\endcsname\csname iftrue\endcsname \wlog{#1:#2\@spaces Set to \csname M@#1@fontinfo\endcsname, \csname M@#1shape\endcsname\space shape.} \else \wlog{#1:#2\@spaces No change.} \fi} \AtBeginDocument{% \def\@tempa{% <-- everything should be 14 characters long upper:\@spaces\@spaces,% lower:\@spaces\@spaces,% diacritics:\space\space\space,% greekupper:\space\space\space,% greeklower:\space\space\space,% agreekupper:\space\space,% agreeklower:\space\space,% cyrillicupper:,% cyrilliclower:,% hebrew:\@spaces\space\space\space,% digits:\@spaces\space\space\space,% operator:\@spaces\space,% delimiters:\space\space\space,% radical:\@spaces\space\space,% bigops:\@spaces\space\space\space,% extbigops:\@spaces,% symbols:\@spaces\space\space,% extsymbols:\space\space\space,% arrows:\@spaces\space\space\space,% bb:\@spaces\@spaces\space\space\space,% cal:\@spaces\@spaces\space\space,% frak:\@spaces\@spaces\space,% bcal:\@spaces\@spaces\space,% bfrak:\@spaces\@spaces} \wlog{^^JPackage mathfont Info: List of changes made in the preamble.} \@for\@i:=\@tempa\do{% \expandafter\keyword@info@begindocument\@i\@nil} \wlog{}} \ifdefined\XeTeXrevision \ifM@font@loaded \AtEndOfPackage{% \PackageWarningNoLine{mathfont} {XeTeX detected. It looks like you\MessageBreak specified a font when you loaded\MessageBreak mathfont. If you run into problems\MessageBreak with a font whose name is multiple\MessageBreak words, try compiling with LuaLaTeX\MessageBreak or call \string\setfont\space or \string\mathfont\MessageBreak manually}} \fi \fi \ifM@font@loaded \AtEndOfPackage{\setfont\M@font@load} \fi \@onlypreamble\M@upper@set \@onlypreamble\M@lower@set \@onlypreamble\M@diacritics@set \@onlypreamble\M@greekupper@set \@onlypreamble\M@greeklower@set \@onlypreamble\M@agreekupper@set \@onlypreamble\M@agreeklower@set \@onlypreamble\M@cyrillicupper@set \@onlypreamble\M@cyrilliclower@set \@onlypreamble\M@hebrew@set \@onlypreamble\M@digits@set \@onlypreamble\M@operator@set \@onlypreamble\M@delimiters@set \@onlypreamble\M@radical@set \@onlypreamble\M@bigops@set \@onlypreamble\M@extbigops@set \@onlypreamble\M@symbols@set \@onlypreamble\M@extsymbols@set \@onlypreamble\M@arrows@set \@onlypreamble\M@bb@set \@onlypreamble\M@cal@set \@onlypreamble\M@frak@set \@onlypreamble\M@bcal@set \@onlypreamble\M@bfrak@set \ifM@adjust@font \mathnolimitsmode=4\relax \bgroup \catcode`\~=0 ~catcode`~\=12 ~@firstofone{ ~egroup ~def~M@number@ssert{"\n% Package mathfont error: Nonnumeric charm value.\n\n% I'm having trouble with a character metric.\n% Your \\CharmLine or \\CharmFile contains \""..temp_string.."\"\n% which is not a number. Make sure that your\n% charm information is all integers, floats,\n% or asterisks separated by commas or spaces.\n"} ~def~M@index@ssert{"\n% Package mathfont error: Invalid unicode index.\n\n% The unicode index \""..split_string[1].."\" is invalid. Make sure\n% that the first number in your \\CharmLine and in each\n% line of your \\CharmFile is an integer between 0 and\n% 1,114,111.\n"} ~def~M@entries@ssert{"\n% Package mathfont error: Charm values too short.\n\n% Your charm information for U+"..index.." needs more\n% entries. Right now you have "..number_of_entries.." entries, and\n% you need at least "..entries_needed..". If you aren't sure what\n% to do, try adding asterisks to your \\CharmLine\n% or line in your \\CharmFile.\n"}} \protected\def\CharmLine#1{% \begingroup \edef\@tempa{#1} \edef\@tempa{\detokenize\expandafter{\@tempa}} \@expandtwoargs\in@{"}{\@tempa} \ifin@ % is " in #1? \ifM@fromCharmFile \M@ForbiddenCharmFile{"} \else \M@ForbiddenCharmLine{"} \fi \else \@expandtwoargs\in@{\@backslashchar}{\@tempa} \ifin@ % is backslash in #1? \ifM@fromCharmFile \M@ForbiddenCharmFile{\@backslashchar} \else \M@ForbiddenCharmLine{\@backslashchar} \fi \else \directlua{mathfont:add_to_charm("\@tempa")} \fi \fi \endgroup} \protected\def\CharmFile#1{% \begingroup \M@fromCharmFiletrue \immediate\openin\M@Charm{#1} \def\@next{% \read\M@Charm to \@tempa \CharmLine\@tempa \ifeof\M@Charm\else % if file has more lines? \expandafter\@next \fi} \@next \immediate\closein\M@Charm \M@fromCharmFilefalse \endgroup} \directlua{ mathfont = {} function mathfont:new_type_a(index, next, data) self[index] = {} self[index].type = "a" self[index].next = next self[index].left_stretch = data[1] / 1000 self[index].right_stretch = data[2] / 1000 self[index].top_accent_stretch = data[3] / 1000 self[index].bot_accent_stretch = data[4] / 1000 end function mathfont:new_type_e(index, smash, next, data) local v = \string# next self[index] = {} self[index].type = "e" self[index].smash = smash self[index].next = next self[index].total_variants = v self[index].data = {} for i = 1, v, 1 do self[index].data[i] = {} self[index].data[i].x = data[2*i-1] / 1000 self[index].data[i].y = data[2*i] / 1000 end self[index].top_accent_stretch = data[2*v+1] / 1000 self[index].bot_accent_stretch = data[2*v+2] / 1000 end function mathfont:new_type_u(index, data) self[index] = {} self[index].type = "u" self[index].top_accent_stretch = data[1] / 1000 self[index].bot_accent_stretch = data[2] / 1000 end function mathfont.parse_charm(charm_input) local split_string = {} local charm_string = charm_input local temp_string = "" local i = 1 while string.find(charm_string, " ") or string.find(charm_string, ",") do local length = string.len(charm_string) local first_space = string.find(charm_string, " ") or length local first_comma = string.find(charm_string, ",") or length local sep = first_space if first_comma < first_space then sep = first_comma end temp_string = string.sub(charm_string, 1, sep-1) charm_string = string.sub(charm_string, sep+1) if temp_string \noexpand~= "" then if tonumber(temp_string) then % if a number, append number split_string[i] = tonumber(temp_string) i = i+1 elseif temp_string == "*" then % if asterisk, append asterisk split_string[i] = temp_string i = i+1 else % if neither, raise error error(\M@number@ssert) end end end temp_string = charm_string if temp_string \noexpand~= "" then if tonumber(temp_string) then % if a number, append number split_string[i] = tonumber(temp_string) elseif temp_string == "*" then % if asterisk, append asterisk split_string[i] = temp_string else % if neither, raise error error(\M@number@ssert) end end local index = split_string[1] if index == "*" then error(\M@index@ssert) end local rounded = index - (index \@percentchar 1) % subtract decimal portion local max = 1114111 assert(index == rounded and index >= 0 and index <= max, \M@index@ssert) return split_string end function mathfont:add_to_charm(charm_string) local charm_metrics = self.parse_charm(charm_string) local index = charm_metrics[1] local number_of_entries = \string# charm_metrics if not self[index] then self:new_type_u(index, {0, 0}) end if self[index].type == "a" then local entries_needed = 5 assert(number_of_entries >= entries_needed, \M@entries@ssert) if charm_metrics[2] \noexpand~= "*" then self[index].left_stretch = charm_metrics[2] / 1000 end if charm_metrics[3] \noexpand~= "*" then self[index].right_stretch = charm_metrics[3] / 1000 end if charm_metrics[4] \noexpand~= "*" then self[index].top_accent_stretch = charm_metrics[4] / 1000 end if charm_metrics[5] \noexpand~= "*" then self[index].bot_accent_stretch = charm_metrics[5] / 1000 end elseif self[index].type == "e" then local tot_variants = self[index].total_variants local entries_needed = 2 * tot_variants + 3 assert(number_of_entries >= entries_needed, \M@entries@ssert) for i = 1, tot_variants, 1 do if charm_metrics[2*i] \noexpand~= "*" then self[index].data[i].x = charm_metrics[2*i] / 1000 end if charm_metrics[2*i+1] \noexpand~= "*" then self[index].data[i].y = charm_metrics[2*i+1] / 1000 end end if charm_metrics[2*tot_variants+2] \noexpand~= "*" then self[index].top_accent_stretch = charm_metrics[2*tot_variants+2] / 1000 end if charm_metrics[2*tot_variants+3] \noexpand~= "*" then self[index].bot_accent_stretch = charm_metrics[2*tot_variants+3] / 1000 end elseif self[index].type == "u" then local entries_needed = 3 assert(number_of_entries >= entries_needed, \M@entries@ssert) if charm_metrics[2] \noexpand~= "*" then self[index].top_accent_stretch = charm_metrics[2] / 1000 end if charm_metrics[3] \noexpand~= "*" then self[index].bot_accent_stretch = charm_metrics[3] / 1000 end end end function mathfont.make_hex_value(integer) if integer == 0 then return "0000" end if integer == 1 then return "0001" end local hex_digits = "0123456789ABCDEF" % for reference local hex_string = "" local curr_val = integer local remainder = 0 local i = 0 while 16^i <= curr_val do i = i+1 end for j = i-1, 0, -1 do remainder = curr_val \@percentchar (16^j) curr_val = (curr_val - remainder) / (16^j) hex_string = hex_string .. string.sub(hex_digits, curr_val+1, curr_val+1) curr_val = remainder end if \string# hex_string < 4 then for i = \string# hex_string, 4, 1 do hex_string = "0" .. hex_string end end return hex_string end function mathfont.glyph_info(char) local glyph_width = char.width or 0 local glyph_height = char.height or 0 local glyph_depth = char.depth or 0 local glyph_italic = char.italic or 0 return glyph_width, glyph_height, glyph_depth, glyph_italic end function mathfont:smash_glyph(index, fontdata) local smash_table = {} smash_table.width = 0 smash_table.height = 0 smash_table.depth = 0 smash_table.commands = {{"char", index}} return smash_table end function mathfont.empty(arg) end function mathfont.make_a_commands(index, offset) local c_1 = {"right", offset} local c_2 = {"char", index} return {c_1, c_2} end function mathfont:make_a_table(index, charm_data, fontdata) local a_table = {} local char = fontdata.characters[index] or {} local slant = fontdata.parameters.slant / 65536 or 0 local left_stretch = charm_data.left_stretch local right_stretch = charm_data.right_stretch local width, height, depth, italic = self.glyph_info(char) width = width + italic local offset = width * left_stretch a_table.width = width * (1 + left_stretch + right_stretch) a_table.height = height a_table.depth = depth a_table.italic = italic a_table.unicode = index a_table.tounicode = self.make_hex_value(index) local top_base = (0.5 + left_stretch) * width + 0.5 * slant * height local bot_base = (0.5 + left_stretch) * width - 0.5 * slant * height local top_accent_shift = charm_data.top_accent_stretch * width local bot_accent_shift = charm_data.bot_accent_stretch * width a_table.top_accent = top_base + top_accent_shift a_table.bot_accent = bot_base + bot_accent_shift a_table.commands = self.make_a_commands(index, offset) a_table.mathkern = {} a_table.mathkern.top_right = {{height = 0, kern = -italic}} a_table.mathkern.bottom_right = {{height = 0, kern = -italic}} a_table.mathkern.top_left = {{height = 0, kern = 0}} a_table.mathkern.bottom_left = {{height = 0, kern = 0}} return a_table end function mathfont:modify_e_base(index, fontdata) local char = fontdata.characters[index] or {} local width, height, depth, italic = self.glyph_info(char) char.width = width + italic if index == 8730 then local horizontal_scale = tex.getcount("M@SurdHorizontalFactor") / 1000 local vertical_scale = tex.getcount("M@SurdVerticalFactor") / 1000 char.width = horizontal_scale * char.width char.height = vertical_scale * height end if index == 8747 then local scale_factor = tex.getcount("M@IntegralItalicFactor") / 1000 char.italic = scale_factor * width end end function mathfont.make_e_commands(index, h_stretch, v_stretch) local c_1 = {"pdf", "origin", string.format( "q \@percentchar s 0 0 \@percentchar s 0 0 cm", h_stretch, v_stretch)} local c_2 = {"char", index} local c_3 = {"pdf", "origin", "Q"} return {c_1, c_2, c_3} end function mathfont:make_e_table(index, charm_data, fontdata) local e_table = {} local char = fontdata.characters[index] or {} local slant = fontdata.parameters.slant / 65536 local tounicode = self.make_hex_value(index) local smash_index = charm_data.smash local width, height, depth, italic = self.glyph_info(char) for i = 1, charm_data.total_variants, 1 do local h_stretch = charm_data.data[i].x local v_stretch = charm_data.data[i].y local new_width = width * h_stretch local new_height = height * v_stretch local new_depth = depth * v_stretch local new_italic = italic * h_stretch e_table[i] = {} e_table[i].width = new_width e_table[i].height = new_height e_table[i].depth = new_depth e_table[i].italic = new_italic e_table[i].unicode = index e_table[i].tounicode = tounicode local base_top_accent = 0.5 * new_width + 0.5 * slant * new_height local base_bot_accent = 0.5 * new_width - 0.5 * slant * new_height local top_accent_shift = charm_data.top_accent_stretch * new_width local bot_accent_shift = charm_data.bot_accent_stretch * new_width e_table[i].top_accent = base_top_accent + top_accent_shift e_table[i].bot_accent = base_bot_accent + bot_accent_shift e_table[i].commands = self.make_e_commands(smash_index, h_stretch, v_stretch) if i < charm_data.total_variants then e_table[i].next = charm_data.next[i+1] end end return e_table end function mathfont:make_u_table(index, charm_data, fontdata) local u_table = fontdata.characters[index] or {} local slant = fontdata.parameters.slant / 65536 or 0 local width, height, depth, italic = self.glyph_info(u_table) local new_width = width + italic u_table.width = new_width local base_top_accent = 0.5 * new_width + 0.5 * slant * height local base_bot_accent = 0.5 * new_width - 0.5 * slant * height local top_accent_shift = charm_data.top_accent_stretch * new_width local bot_accent_shift = charm_data.bot_accent_stretch * new_width u_table.top_accent = base_top_accent + top_accent_shift u_table.bot_accent = base_bot_accent + bot_accent_shift u_table.mathkern = {} u_table.mathkern.top_right = {{height = 0, kern = -italic}} u_table.mathkern.bottom_right = {{height = 0, kern = -italic}} u_table.mathkern.top_left = {{height = 0, kern = 0}} u_table.mathkern.bottom_left = {{height = 0, kern = 0}} return u_table end function mathfont.make_fake_angle(index, smash, fontdata) local temp = {} local lparen = fontdata.characters[40] or {} local lparen_height = lparen.height or 0 local lparen_depth = lparen.depth or 0 local glyph = fontdata.characters[index] or {} local glyph_height = glyph.height or 0 local base_height = 0.9 * glyph_height local factor = 0 if glyph_height \noexpand~= 0 then factor = (lparen_height + lparen_depth) / base_height end local shift = 0.1 * glyph_height * factor + lparen_depth temp.height = lparen_height temp.depth = lparen_depth temp.width = glyph.width or 0 temp.italic = glyph.italic or 0 temp.top_accent = glyph.top_accent or 0.5 * temp.width temp.bot_accent = glyph.bot_accent or 0.5 * temp.width temp.commands = { {"down", shift}, {"pdf", "origin", string.format("q 1 0 0 \@percentchar s 0 0 cm", factor)}, {"char", smash}, {"pdf", "origin", "Q"}, {"down", -shift}} return temp end function mathfont.set_nomath_true(fontdata) fontdata.nomath = false fontdata.oldmath = false end function mathfont.apply_charm_info(fontdata) local chars = fontdata.characters or {} chars[1044538] = mathfont:smash_glyph(8249, fontdata) % \lguil chars[1044539] = mathfont:smash_glyph(8250, fontdata) % \rguil chars[1044540] = mathfont:smash_glyph(171, fontdata) % \llguil chars[1044541] = mathfont:smash_glyph(187, fontdata) % \rrguil chars[1044508] = mathfont.make_fake_angle(8249, 1044538, fontdata) chars[1044509] = mathfont.make_fake_angle(8250, 1044539, fontdata) chars[1044510] = mathfont.make_fake_angle(171, 1044540, fontdata) chars[1044511] = mathfont.make_fake_angle(187, 1044541, fontdata) if not chars[8711] then chars[8710] = chars[8710] or {} chars[1044508] = mathfont:smash_glyph(8710, fontdata) chars[8711] = {} chars[8711].width = chars[8710].width or 0 chars[8711].height = chars[8710].height or 0 chars[8711].depth = chars[8710].depth or 0 chars[8711].italic = chars[8710].italic or 0 chars[8711].top_accent = chars[8710].top_accent or 0.5 * chars[8711].width chars[8711].bot_accent = chars[8710].bot_accent or 0.5 * chars[8711].width chars[8711].unicode = 8711 chars[8711].tounicode = mathfont.make_hex_value(8711) chars[8711].commands = { {"down", -chars[8711].height}, {"pdf", "origin", "q 1 0 0 -1 0 0 cm"}, {"char", 1044508}, {"pdf", "origin", "Q"}, {"down", chars[8711].height}} end for index, info in pairs(mathfont) do if type(info) == "table" then if info.type == "a" then chars[info.next] = mathfont:make_a_table(index, info, fontdata) elseif info.type == "e" then local smash = info.smash chars[index] = chars[index] or {} chars[index].next = info.next[1] mathfont:modify_e_base(index, fontdata) chars[smash] = mathfont:smash_glyph(index, fontdata) local variants_table = mathfont:make_e_table(index, info, fontdata) for i = 1, info.total_variants, 1 do chars[info.next[i]] = variants_table[i] end elseif info.type == "u" then chars[index] = mathfont:make_u_table(index, info, fontdata) end end end end function mathfont.math_constants(fontdata) fontdata.MathConstants = fontdata.MathConstants or {} local size = fontdata.size or 0 local ex = fontdata.parameters.x_height or 0 local em = fontdata.parameters.quad or 0 local A_height = 0 local y_depth = 0 if fontdata.characters[65] then A_height = fontdata.characters[65].height or 0 % A end if fontdata.characters[121] then y_depth = fontdata.characters[121].depth or 0 % y end local axis = 0 local rule_thickness = 0 local dim = "FractionRuleThickness" if not fontdata.MathConstants[dim] then local scale_factor = tex.getcount("M@RuleThicknessFactor") / 1000 rule_thickness = (size / 18) * scale_factor fontdata.MathConstants[dim] = rule_thickness else rule_thickness = fontdata.MathConstants[dim] end local dim = "AxisHeight" if fontdata.MathConstants[dim] then axis = fontdata.MathConstants[dim] else if fontdata.characters[45] then axis = fontdata.characters[45].height - 0.5 * rule_thickness else axis = 0.8 * ex end fontdata.MathConstants[dim] = axis end local xi_9 = 2 * rule_thickness % upper limit minimum clearance local xi_10 = xi_9 + 0.35 * y_depth % upper limit attempt placement local xi_11 = xi_10 % lower limit minimum clearance local xi_12 = xi_10 + 0.35 * (A_height + ex) % lower limit attempt placement local sigma_8 = axis + 1.5 * rule_thickness + y_depth + 0.1 * A_height local sigma_9 = (axis + 1.35 * rule_thickness + 0.7 * y_depth + 0.07 * A_height) local sigma_10 = sigma_9 local sigma_11 = (-axis + 1.5 * rule_thickness + 0.5 * y_depth + 1.1 * A_height) local sigma_12 = (-axis + 1.35 * rule_thickness + 0.35 * y_depth + 0.77 * A_height) local sigma_13 = 0.6 * A_height % attempted superscript height local sigma_15 = 0.5 * A_height % attempted superscript for \cramped local sigma_16 = 1.1 * y_depth % attempted subscript lower if sigma_16 < 0.2 * A_height then sigma_16 = 0.2 * A_height end local sigma_17 = sigma_16 % sigma_16 when superscript present local sigma_18 = 0.5 * A_height % superscript lower for boxed subformula local sigma_19 = 0.1 * A_height % subscript lower for boxed subformula local dim = "DisplayOperatorMinHeight" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 1.8 * A_height end local dim = "FractionDelimiterDisplayStyleSize" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 2 * size end local dim = "FractionDelimiterSize" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 1.3 * size end local dim = "FractionDenominatorDisplayStyleShiftDown" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_11 end local dim = "FractionDenominatorShiftDown" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_12 end local dim = "FractionDenominatorDisplayStyleGapMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = rule_thickness + 0.5 * y_depth end local dim = "FractionDenominatorGapMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = rule_thickness + 0.35 * y_depth end local dim = "FractionNumeratorDisplayStyleShiftUp" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_8 end local dim = "FractionNumeratorShiftUp" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_9 end local dim = "FractionNumeratorDisplayStyleGapMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = rule_thickness end local dim = "FractionNumeratorGapMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = rule_thickness end local dim = "SkewedFractionHorizontalGap" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 0.5 * em end local dim = "SkewedFractionVerticalGap" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = ex end local dim = "UpperLimitBaselineRiseMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = xi_11 end local dim = "UpperLimitGapMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = xi_9 end local dim = "LowerLimitBaselineDropMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = xi_12 end local dim = "LowerLimitGapMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = xi_10 end local dim = "StretchStackGapBelowMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = xi_10 end local dim = "StretchStackTopShiftUp" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = xi_11 end local dim = "StretchStackGapAboveMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = xi_9 end local dim = "StretchStackBottomShiftDown" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = xi_12 end local dim = "OverbarExtraAscender" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = rule_thickness end local dim = "OverbarRuleThickness" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = rule_thickness end local dim = "OverbarVerticalGap" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 2 * rule_thickness end local dim = "RadicalExtraAscender" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = rule_thickness end local dim = "RadicalRuleThickness" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = rule_thickness end local dim = "RadicalDisplayStyleVerticalGap" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 2 * rule_thickness end local dim = "RadicalVerticalGap" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = rule_thickness end local dim = "RadicalKernBeforeDegree" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = (5/18) * em end local dim = "RadicalKernAfterDegree" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = (10/18) * em end local dim = "RadicalDegreeBottomRaisePercent" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 60 end local dim = "SpaceAfterScript" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 0.1 * em end local dim = "StackBottomDisplayStyleShiftDown" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_11 end local dim = "StackBottomShiftDown" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_12 end local dim = "StackTopDisplayStyleShiftUp" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_8 end local dim = "StackTopShiftUp" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_10 end local dim = "StackDisplayStyleGapMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 5 * rule_thickness + 0.5 * y_depth end local dim = "StackGapMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 3 * rule_thickness + 0.35 * y_depth end local dim = "SubscriptShiftDown" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_16 end local dim = "SubscriptBaselineDropMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_19 end local dim = "SubscriptShiftDownWithSuperscript" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_17 end local dim = "SubscriptTopMax" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 0.5 * A_height end local dim = "SubSuperscriptGapMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = rule_thickness end local dim = "SuperscriptBottomMin" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_15 - 0.7 * y_depth end local dim = "SuperscriptBaselineDropMax" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_18 end local dim = "SuperscriptShiftUp" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_13 end local dim = "SuperscriptShiftUpCramped" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = sigma_15 end local dim = "SuperscriptBottomMaxWithSubscript" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = -sigma_16 + 0.7 * A_height + rule_thickness end local dim = "UnderbarExtraDescender" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = rule_thickness end local dim = "UnderbarRuleThickness" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = rule_thickness end local dim = "UnderbarVerticalGap" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 2 * rule_thickness end local dim = "MinConnectorOverlap" if not fontdata.MathConstants[dim] then fontdata.MathConstants[dim] = 0 end end luatexbase.create_callback("mathfont.inspect_font", "simple", mathfont.empty) luatexbase.create_callback("mathfont.pre_adjust", "simple", mathfont.empty) luatexbase.create_callback("mathfont.disable_nomath", "simple", mathfont.set_nomath_true) luatexbase.create_callback("mathfont.add_math_constants", "simple", mathfont.math_constants) luatexbase.create_callback("mathfont.fix_character_metrics", "simple", mathfont.apply_charm_info) luatexbase.create_callback("mathfont.post_adjust", "simple", mathfont.empty) function mathfont.info(msg) texio.write_nl("log", "Package mathfont Info: " .. msg) end function mathfont.get_font_name(fontdata) return fontdata.fullname or fontdata.psname or fontdata.name or "" end function mathfont.adjust_font(fontdata) luatexbase.call_callback("mathfont.inspect_font", fontdata) if fontdata.nomath then mathfont.info("Adjusting font " .. mathfont.get_font_name(fontdata) .. ".") luatexbase.call_callback("mathfont.pre_adjust", fontdata) luatexbase.call_callback("mathfont.disable_nomath", fontdata) luatexbase.call_callback("mathfont.add_math_constants", fontdata) luatexbase.call_callback("mathfont.fix_character_metrics", fontdata) luatexbase.call_callback("mathfont.post_adjust", fontdata) else mathfont.info("No changes made to " .. mathfont.get_font_name(fontdata) .. ".") end end luatexbase.add_to_callback("luaotfload.patch_font", mathfont.adjust_font, "mathfont.adjust_font") mathfont:new_type_a(97, 1044480, {50, 50, -50, 0}) % a mathfont:new_type_a(98, 1044481, {50, 50, -50, 0}) % b mathfont:new_type_a(99, 1044482, {50, 50, 0, 0}) % c mathfont:new_type_a(100, 1044483, {50, -50, -50, 0}) % d mathfont:new_type_a(101, 1044484, {50, 50, 0, 0}) % e mathfont:new_type_a(102, 1044485, {200, 0, 0, 0}) % f mathfont:new_type_a(103, 1044486, {100, 50, -50, 0}) % g mathfont:new_type_a(104, 1044487, {50, 0, -50, 0}) % h mathfont:new_type_a(105, 1044488, {50, 100, -100, 0}) % i mathfont:new_type_a(106, 1044489, {400, 50, -50, 0}) % j mathfont:new_type_a(107, 1044490, {50, 50, -100, 0}) % k mathfont:new_type_a(108, 1044491, {100, 150, -100, 0}) % l mathfont:new_type_a(109, 1044492, {50, 0, 0, 0}) % m mathfont:new_type_a(110, 1044493, {50, 0, 0, 0}) % n mathfont:new_type_a(111, 1044494, {50, 0, 0, 0}) % o mathfont:new_type_a(112, 1044495, {200, 50, -50, 0}) % p mathfont:new_type_a(113, 1044496, {50, 0, -50, 0}) % q mathfont:new_type_a(114, 1044497, {100, 100, -50, 0}) % r mathfont:new_type_a(115, 1044498, {50, 50, -50, 0}) % s mathfont:new_type_a(116, 1044499, {50, 50, -50, 0}) % t mathfont:new_type_a(117, 1044500, {0, 50, 0, 0}) % u mathfont:new_type_a(118, 1044501, {0, 50, -50, 0}) % v mathfont:new_type_a(119, 1044502, {0, 50, 0, 0}) % w mathfont:new_type_a(120, 1044503, {50, 0, -50, 0}) % x mathfont:new_type_a(121, 1044504, {150, 50, -50, 0}) % y mathfont:new_type_a(122, 1044505, {100, 50, -100, 0}) % z mathfont:new_type_a(305, 1044506, {100, 100, -150, 0}) % \imath mathfont:new_type_a(567, 1044507, {700, 50, -150, 0}) % \jmath mathfont:new_type_a(65, 1044512, {50, 0, 150, 0}) % A mathfont:new_type_a(66, 1044513, {50, 0, 0, 0}) % B mathfont:new_type_a(67, 1044514, {0, 0, 0, 0}) % C mathfont:new_type_a(68, 1044515, {50, 0, -50, 0}) % D mathfont:new_type_a(69, 1044516, {50, 0, 0, 0}) % E mathfont:new_type_a(70, 1044517, {50, 0, 0, 0}) % F mathfont:new_type_a(71, 1044518, {0, 0, 0, 0}) % G mathfont:new_type_a(72, 1044519, {50, 0, -50, 0}) % H mathfont:new_type_a(73, 1044520, {100, 0, 0, 0}) % I mathfont:new_type_a(74, 1044521, {50, 0, 100, 0}) % J mathfont:new_type_a(75, 1044522, {50, 0, 0, 0}) % K mathfont:new_type_a(76, 1044523, {50, 0, -180, 0}) % L mathfont:new_type_a(77, 1044524, {50, 0, -50, 0}) % M mathfont:new_type_a(78, 1044525, {50, 0, -50, 0}) % N mathfont:new_type_a(79, 1044526, {0, 0, 0, 0}) % O mathfont:new_type_a(80, 1044527, {0, 0, -50, 0}) % P mathfont:new_type_a(81, 1044528, {0, 50, 0, 0}) % Q mathfont:new_type_a(82, 1044529, {50, 0, -50, 0}) % R mathfont:new_type_a(83, 1044530, {0, 0, -50, 0}) % S mathfont:new_type_a(84, 1044531, {0, 0, -50, 0}) % T mathfont:new_type_a(85, 1044532, {0, 0, -50, 0}) % U mathfont:new_type_a(86, 1044533, {0, 50, 0, 0}) % V mathfont:new_type_a(87, 1044534, {0, 50, -50, 0}) % W mathfont:new_type_a(88, 1044535, {50, 0, 0, 0}) % X mathfont:new_type_a(89, 1044536, {0, 0, -50, 0}) % Y mathfont:new_type_a(90, 1044537, {50, 0, -50, 0}) % Z mathfont:new_type_u(945, {0, 0}) % \alpha mathfont:new_type_u(946, {0, 0}) % \beta mathfont:new_type_u(947, {-50, 0}) % \gamma mathfont:new_type_u(948, {0, 0}) % \delta mathfont:new_type_u(1013, {50, 0}) % \epsilon mathfont:new_type_u(950, {0, 0}) % \zeta mathfont:new_type_u(951, {-50, 0}) % \eta mathfont:new_type_u(952, {0, 0}) % \theta mathfont:new_type_u(953, {-50, 0}) % \iota mathfont:new_type_u(954, {0, 0}) % \kappa mathfont:new_type_u(955, {-150, 0}) % lambda mathfont:new_type_u(956, {0, 0}) % \mu mathfont:new_type_u(957, {-50, 0}) % \nu mathfont:new_type_u(958, {0, 0}) % \xi mathfont:new_type_u(959, {0, 0}) % \omicron mathfont:new_type_u(960, {-100, 0}) % \pi mathfont:new_type_u(961, {-50, 0}) % \rho mathfont:new_type_u(963, {-100, 0}) % \sigma mathfont:new_type_u(964, {-100, 0}) % \tau mathfont:new_type_u(965, {-50, 0}) % \upsilon mathfont:new_type_u(981, {0, 0}) % \phi mathfont:new_type_u(967, {-50, 0}) % \chi mathfont:new_type_u(968, {-50, 0}) % \psi mathfont:new_type_u(969, {0, 0}) % \omega mathfont:new_type_u(976, {0, 0}) % \varbeta mathfont:new_type_u(949, {-50, 0}) % \varepsilon mathfont:new_type_u(977, {50, 0}) % \vartheta mathfont:new_type_u(1009, {-50, 0}) % \varrho mathfont:new_type_u(962, {-50, 0}) % \varsigma mathfont:new_type_u(966, {0, 0}) % \varphi mathfont:new_type_u(913, {0, 0}) % \Alpha mathfont:new_type_u(914, {0, 0}) % \Beta mathfont:new_type_u(915, {0, 0}) % \Gamma mathfont:new_type_u(916, {0, 0}) % \Delta mathfont:new_type_u(917, {0, 0}) % \Epsilon mathfont:new_type_u(918, {0, 0}) % \Zeta mathfont:new_type_u(919, {0, 0}) % \Eta mathfont:new_type_u(920, {0, 0}) % \Theta mathfont:new_type_u(921, {0, 0}) % \Iota mathfont:new_type_u(922, {0, 0}) % \Kappa mathfont:new_type_u(923, {0, 0}) % \Lambda mathfont:new_type_u(924, {0, 0}) % \Mu mathfont:new_type_u(925, {0, 0}) % \Nu mathfont:new_type_u(926, {0, 0}) % \Xi mathfont:new_type_u(927, {0, 0}) % \Omicron mathfont:new_type_u(928, {0, 0}) % \Pi mathfont:new_type_u(929, {0, 0}) % \Rho mathfont:new_type_u(931, {0, 0}) % \Sigma mathfont:new_type_u(932, {0, 0}) % \Tau mathfont:new_type_u(933, {0, 0}) % \Upsilon mathfont:new_type_u(934, {0, 0}) % \Phi mathfont:new_type_u(935, {0, 0}) % \Chi mathfont:new_type_u(936, {0, 0}) % \Psi mathfont:new_type_u(937, {0, 0}) % \Omega mathfont:new_type_u(1012, {0, 0}) % \varTheta local delim_glyphs = {40, % ( 41, % ) 47, % / 91, % [ 92, % backslash 93, % ] 123, % { 125, % } 8249, % \lguil 8250, % \rguil 171, % \llguil 187, % \rrguil 1044508, % \fakelangle 1044509, % \fakerangle 1044510, % \fakellangle 1044511} % \fakerrangle local big_op_glyphs = {33, % ! 35, % # 36, % $ 37, % % 38, % & 43, % + 63, % ? 64, % @ 167, % \S 215, % \times 247, % \div 8719, % \prod 8721, % \sum 8720, % \coprod 8897, % \bigvee 8896, % \bigwedge 8899, % \bigcup 8898, % \bigcap 10753, % \bigoplus 10754, % \bigotimes 10752, % \bigodot 10757, % \bigsqcap 10758} % \bigsqcup local vert_glyphs = {124, 8730} % | and \surd local int_glyphs = {8747, % \intop 8748, % \iint 8749, % \iiint 8750, % \oint 8751, % \oiint 8752} % \oiiint local smash = 1044544 local delim_scale = {} local big_op_scale = {} local vert_scale = {} local int_scale = {} for i = 1, 15, 1 do delim_scale[2*i-1] = 1000 + 100*i % horizontal - delimiters delim_scale[2*i] = 1000 + 500*i % vertical - delimiters vert_scale[2*i-1] = 1000 vert_scale[2*i] = 1000 + 500*i % vertical - vertically scaled chars big_op_scale[2*i-1] = 1000 + 100*i % horizontal - big operators big_op_scale[2*i] = 1000 + 100*i % vertical - big operators int_scale[2*i-1] = 1000 + 500*i % horizontal - integral sign int_scale[2*i] = 1000 + 1500*i % vertical - integral sign end delim_scale[31] = 0 delim_scale[32] = 0 big_op_scale[31] = 0 big_op_scale[32] = 0 vert_scale[31] = 0 vert_scale[32] = 0 int_scale[31] = 0 int_scale[32] = 0 function mathfont:add_extensible_variants(first_smash, glyph_list, scale_list) local variants = (\string# scale_list - 2) / 2 local curr_smash = first_smash for i = 1, \string# glyph_list, 1 do local curr_char = glyph_list[i] local curr_slots = {} for j = 1, variants, 1 do curr_slots[j] = curr_smash + j end self:new_type_e(curr_char, curr_smash, curr_slots, scale_list) smash = smash + variants + 1 curr_smash = smash end end mathfont:add_extensible_variants(smash, delim_glyphs, delim_scale) mathfont:add_extensible_variants(smash, big_op_glyphs, big_op_scale) mathfont:add_extensible_variants(smash, vert_glyphs, vert_scale) mathfont:add_extensible_variants(smash, int_glyphs, int_scale) } \fi % matches previous \ifM@adjust@font \ifM@adjust@font \def\M@upper@set{% \edef\M@upper@font{M\M@uppershape\@tempa} \DeclareMathSymbol{A}{\mathalpha}{\M@upper@font}{1044512} \DeclareMathSymbol{B}{\mathalpha}{\M@upper@font}{1044513} \DeclareMathSymbol{C}{\mathalpha}{\M@upper@font}{1044514} \DeclareMathSymbol{D}{\mathalpha}{\M@upper@font}{1044515} \DeclareMathSymbol{E}{\mathalpha}{\M@upper@font}{1044516} \DeclareMathSymbol{F}{\mathalpha}{\M@upper@font}{1044517} \DeclareMathSymbol{G}{\mathalpha}{\M@upper@font}{1044518} \DeclareMathSymbol{H}{\mathalpha}{\M@upper@font}{1044519} \DeclareMathSymbol{I}{\mathalpha}{\M@upper@font}{1044520} \DeclareMathSymbol{J}{\mathalpha}{\M@upper@font}{1044521} \DeclareMathSymbol{K}{\mathalpha}{\M@upper@font}{1044522} \DeclareMathSymbol{L}{\mathalpha}{\M@upper@font}{1044523} \DeclareMathSymbol{M}{\mathalpha}{\M@upper@font}{1044524} \DeclareMathSymbol{N}{\mathalpha}{\M@upper@font}{1044525} \DeclareMathSymbol{O}{\mathalpha}{\M@upper@font}{1044526} \DeclareMathSymbol{P}{\mathalpha}{\M@upper@font}{1044527} \DeclareMathSymbol{Q}{\mathalpha}{\M@upper@font}{1044528} \DeclareMathSymbol{R}{\mathalpha}{\M@upper@font}{1044529} \DeclareMathSymbol{S}{\mathalpha}{\M@upper@font}{1044530} \DeclareMathSymbol{T}{\mathalpha}{\M@upper@font}{1044531} \DeclareMathSymbol{U}{\mathalpha}{\M@upper@font}{1044532} \DeclareMathSymbol{V}{\mathalpha}{\M@upper@font}{1044533} \DeclareMathSymbol{W}{\mathalpha}{\M@upper@font}{1044534} \DeclareMathSymbol{X}{\mathalpha}{\M@upper@font}{1044535} \DeclareMathSymbol{Y}{\mathalpha}{\M@upper@font}{1044536} \DeclareMathSymbol{Z}{\mathalpha}{\M@upper@font}{1044537}} \else \def\M@upper@set{% \edef\M@upper@font{M\M@uppershape\@tempa} \DeclareMathSymbol{A}{\mathalpha}{\M@upper@font}{`A} \DeclareMathSymbol{B}{\mathalpha}{\M@upper@font}{`B} \DeclareMathSymbol{C}{\mathalpha}{\M@upper@font}{`C} \DeclareMathSymbol{D}{\mathalpha}{\M@upper@font}{`D} \DeclareMathSymbol{E}{\mathalpha}{\M@upper@font}{`E} \DeclareMathSymbol{F}{\mathalpha}{\M@upper@font}{`F} \DeclareMathSymbol{G}{\mathalpha}{\M@upper@font}{`G} \DeclareMathSymbol{H}{\mathalpha}{\M@upper@font}{`H} \DeclareMathSymbol{I}{\mathalpha}{\M@upper@font}{`I} \DeclareMathSymbol{J}{\mathalpha}{\M@upper@font}{`J} \DeclareMathSymbol{K}{\mathalpha}{\M@upper@font}{`K} \DeclareMathSymbol{L}{\mathalpha}{\M@upper@font}{`L} \DeclareMathSymbol{M}{\mathalpha}{\M@upper@font}{`M} \DeclareMathSymbol{N}{\mathalpha}{\M@upper@font}{`N} \DeclareMathSymbol{O}{\mathalpha}{\M@upper@font}{`O} \DeclareMathSymbol{P}{\mathalpha}{\M@upper@font}{`P} \DeclareMathSymbol{Q}{\mathalpha}{\M@upper@font}{`Q} \DeclareMathSymbol{R}{\mathalpha}{\M@upper@font}{`R} \DeclareMathSymbol{S}{\mathalpha}{\M@upper@font}{`S} \DeclareMathSymbol{T}{\mathalpha}{\M@upper@font}{`T} \DeclareMathSymbol{U}{\mathalpha}{\M@upper@font}{`U} \DeclareMathSymbol{V}{\mathalpha}{\M@upper@font}{`V} \DeclareMathSymbol{W}{\mathalpha}{\M@upper@font}{`W} \DeclareMathSymbol{X}{\mathalpha}{\M@upper@font}{`X} \DeclareMathSymbol{Y}{\mathalpha}{\M@upper@font}{`Y} \DeclareMathSymbol{Z}{\mathalpha}{\M@upper@font}{`Z}} \fi \ifM@adjust@font \def\M@lower@set{% \edef\M@lower@font{M\M@lowershape\@tempa} \DeclareMathSymbol{a}{\mathalpha}{\M@lower@font}{1044480} \DeclareMathSymbol{b}{\mathalpha}{\M@lower@font}{1044481} \DeclareMathSymbol{c}{\mathalpha}{\M@lower@font}{1044482} \DeclareMathSymbol{d}{\mathalpha}{\M@lower@font}{1044483} \DeclareMathSymbol{e}{\mathalpha}{\M@lower@font}{1044484} \DeclareMathSymbol{f}{\mathalpha}{\M@lower@font}{1044485} \DeclareMathSymbol{g}{\mathalpha}{\M@lower@font}{1044486} \DeclareMathSymbol{h}{\mathalpha}{\M@lower@font}{1044487} \DeclareMathSymbol{i}{\mathalpha}{\M@lower@font}{1044488} \DeclareMathSymbol{j}{\mathalpha}{\M@lower@font}{1044489} \DeclareMathSymbol{k}{\mathalpha}{\M@lower@font}{1044490} \DeclareMathSymbol{l}{\mathalpha}{\M@lower@font}{1044491} \DeclareMathSymbol{m}{\mathalpha}{\M@lower@font}{1044492} \DeclareMathSymbol{n}{\mathalpha}{\M@lower@font}{1044493} \DeclareMathSymbol{o}{\mathalpha}{\M@lower@font}{1044494} \DeclareMathSymbol{p}{\mathalpha}{\M@lower@font}{1044495} \DeclareMathSymbol{q}{\mathalpha}{\M@lower@font}{1044496} \DeclareMathSymbol{r}{\mathalpha}{\M@lower@font}{1044497} \DeclareMathSymbol{s}{\mathalpha}{\M@lower@font}{1044498} \DeclareMathSymbol{t}{\mathalpha}{\M@lower@font}{1044499} \DeclareMathSymbol{u}{\mathalpha}{\M@lower@font}{1044500} \DeclareMathSymbol{v}{\mathalpha}{\M@lower@font}{1044501} \DeclareMathSymbol{w}{\mathalpha}{\M@lower@font}{1044502} \DeclareMathSymbol{x}{\mathalpha}{\M@lower@font}{1044503} \DeclareMathSymbol{y}{\mathalpha}{\M@lower@font}{1044504} \DeclareMathSymbol{z}{\mathalpha}{\M@lower@font}{1044505} \DeclareMathSymbol{\imath}{\mathalpha}{\M@lower@font}{1044506} \DeclareMathSymbol{\jmath}{\mathalpha}{\M@lower@font}{1044507} \DeclareMathSymbol{\hbar}{\mathord}{\M@lower@font}{"127}} \else \def\M@lower@set{% \edef\M@lower@font{M\M@lowershape\@tempa} \DeclareMathSymbol{a}{\mathalpha}{\M@lower@font}{`a} \DeclareMathSymbol{b}{\mathalpha}{\M@lower@font}{`b} \DeclareMathSymbol{c}{\mathalpha}{\M@lower@font}{`c} \DeclareMathSymbol{d}{\mathalpha}{\M@lower@font}{`d} \DeclareMathSymbol{e}{\mathalpha}{\M@lower@font}{`e} \DeclareMathSymbol{f}{\mathalpha}{\M@lower@font}{`f} \DeclareMathSymbol{g}{\mathalpha}{\M@lower@font}{`g} \DeclareMathSymbol{h}{\mathalpha}{\M@lower@font}{`h} \DeclareMathSymbol{i}{\mathalpha}{\M@lower@font}{`i} \DeclareMathSymbol{j}{\mathalpha}{\M@lower@font}{`j} \DeclareMathSymbol{k}{\mathalpha}{\M@lower@font}{`k} \DeclareMathSymbol{l}{\mathalpha}{\M@lower@font}{`l} \DeclareMathSymbol{m}{\mathalpha}{\M@lower@font}{`m} \DeclareMathSymbol{n}{\mathalpha}{\M@lower@font}{`n} \DeclareMathSymbol{o}{\mathalpha}{\M@lower@font}{`o} \DeclareMathSymbol{p}{\mathalpha}{\M@lower@font}{`p} \DeclareMathSymbol{q}{\mathalpha}{\M@lower@font}{`q} \DeclareMathSymbol{r}{\mathalpha}{\M@lower@font}{`r} \DeclareMathSymbol{s}{\mathalpha}{\M@lower@font}{`s} \DeclareMathSymbol{t}{\mathalpha}{\M@lower@font}{`t} \DeclareMathSymbol{u}{\mathalpha}{\M@lower@font}{`u} \DeclareMathSymbol{v}{\mathalpha}{\M@lower@font}{`v} \DeclareMathSymbol{w}{\mathalpha}{\M@lower@font}{`w} \DeclareMathSymbol{x}{\mathalpha}{\M@lower@font}{`x} \DeclareMathSymbol{y}{\mathalpha}{\M@lower@font}{`y} \DeclareMathSymbol{z}{\mathalpha}{\M@lower@font}{`z} \DeclareMathSymbol{\imath}{\mathalpha}{\M@lower@font}{"131} \DeclareMathSymbol{\jmath}{\mathalpha}{\M@lower@font}{"237} \DeclareMathSymbol{\hbar}{\mathord}{\M@lower@font}{"127}} \fi \def\M@diacritics@set{% \edef\M@diacritics@font{M\M@diacriticsshape\@tempa} \DeclareMathAccent{\acute}{\mathalpha}{\M@diacritics@font}{"B4} \DeclareMathAccent{\aacute}{\mathalpha}{\M@diacritics@font}{"2DD} \DeclareMathAccent{\dot}{\mathalpha}{\M@diacritics@font}{"2D9} \DeclareMathAccent{\ddot}{\mathalpha}{\M@diacritics@font}{"A8} \DeclareMathAccent{\grave}{\mathalpha}{\M@diacritics@font}{"60} \DeclareMathAccent{\breve}{\mathalpha}{\M@diacritics@font}{"2D8} \DeclareMathAccent{\hat}{\mathalpha}{\M@diacritics@font}{"2C6} \DeclareMathAccent{\check}{\mathalpha}{\M@diacritics@font}{"2C7} \DeclareMathAccent{\bar}{\mathalpha}{\M@diacritics@font}{"2C9} \DeclareMathAccent{\mathring}{\mathalpha}{\M@diacritics@font}{"2DA} \DeclareMathAccent{\tilde}{\mathalpha}{\M@diacritics@font}{"2DC}} \def\M@greekupper@set{% \edef\M@greekupper@font{M\M@greekuppershape\@tempa} \DeclareMathSymbol{\Alpha}{\mathalpha}{\M@greekupper@font}{"391} \DeclareMathSymbol{\Beta}{\mathalpha}{\M@greekupper@font}{"392} \DeclareMathSymbol{\Gamma}{\mathalpha}{\M@greekupper@font}{"393} \DeclareMathSymbol{\Delta}{\mathalpha}{\M@greekupper@font}{"394} \DeclareMathSymbol{\Epsilon}{\mathalpha}{\M@greekupper@font}{"395} \DeclareMathSymbol{\Zeta}{\mathalpha}{\M@greekupper@font}{"396} \DeclareMathSymbol{\Eta}{\mathalpha}{\M@greekupper@font}{"397} \DeclareMathSymbol{\Theta}{\mathalpha}{\M@greekupper@font}{"398} \DeclareMathSymbol{\Iota}{\mathalpha}{\M@greekupper@font}{"399} \DeclareMathSymbol{\Kappa}{\mathalpha}{\M@greekupper@font}{"39A} \DeclareMathSymbol{\Lambda}{\mathalpha}{\M@greekupper@font}{"39B} \DeclareMathSymbol{\Mu}{\mathalpha}{\M@greekupper@font}{"39C} \DeclareMathSymbol{\Nu}{\mathalpha}{\M@greekupper@font}{"39D} \DeclareMathSymbol{\Xi}{\mathalpha}{\M@greekupper@font}{"39E} \DeclareMathSymbol{\Omicron}{\mathalpha}{\M@greekupper@font}{"39F} \DeclareMathSymbol{\Pi}{\mathalpha}{\M@greekupper@font}{"3A0} \DeclareMathSymbol{\Rho}{\mathalpha}{\M@greekupper@font}{"3A1} \DeclareMathSymbol{\Sigma}{\mathalpha}{\M@greekupper@font}{"3A3} \DeclareMathSymbol{\Tau}{\mathalpha}{\M@greekupper@font}{"3A4} \DeclareMathSymbol{\Upsilon}{\mathalpha}{\M@greekupper@font}{"3A5} \DeclareMathSymbol{\Phi}{\mathalpha}{\M@greekupper@font}{"3A6} \DeclareMathSymbol{\Chi}{\mathalpha}{\M@greekupper@font}{"3A7} \DeclareMathSymbol{\Psi}{\mathalpha}{\M@greekupper@font}{"3A8} \DeclareMathSymbol{\Omega}{\mathalpha}{\M@greekupper@font}{"3A9} \DeclareMathSymbol{\varTheta}{\mathalpha}{\M@greekupper@font}{"3F4} \ifM@adjust@font \ifM@symbols\else \DeclareMathSymbol{\increment}{\mathord}{\M@greekupper@font}{"2206} \DeclareMathSymbol{\nabla}{\mathord}{\M@greekupper@font}{"2207} \fi \else \ifM@symbols\else \DeclareMathSymbol{\increment}{\mathord}{\M@greekupper@font}{"2206} \fi \ifM@extsymbols\else \DeclareMathSymbol{\nabla}{\mathord}{\M@greekupper@font}{"2207} \fi \fi} \def\M@greeklower@set{% \edef\M@greeklower@font{M\M@greeklowershape\@tempa} \DeclareMathSymbol{\alpha}{\mathalpha}{\M@greeklower@font}{"3B1} \DeclareMathSymbol{\beta}{\mathalpha}{\M@greeklower@font}{"3B2} \DeclareMathSymbol{\gamma}{\mathalpha}{\M@greeklower@font}{"3B3} \DeclareMathSymbol{\delta}{\mathalpha}{\M@greeklower@font}{"3B4} \DeclareMathSymbol{\epsilon}{\mathalpha}{\M@greeklower@font}{"3B5} \DeclareMathSymbol{\zeta}{\mathalpha}{\M@greeklower@font}{"3B6} \DeclareMathSymbol{\eta}{\mathalpha}{\M@greeklower@font}{"3B7} \DeclareMathSymbol{\theta}{\mathalpha}{\M@greeklower@font}{"3B8} \DeclareMathSymbol{\iota}{\mathalpha}{\M@greeklower@font}{"3B9} \DeclareMathSymbol{\kappa}{\mathalpha}{\M@greeklower@font}{"3BA} \DeclareMathSymbol{\lambda}{\mathalpha}{\M@greeklower@font}{"3BB} \DeclareMathSymbol{\mu}{\mathalpha}{\M@greeklower@font}{"3BC} \DeclareMathSymbol{\nu}{\mathalpha}{\M@greeklower@font}{"3BD} \DeclareMathSymbol{\xi}{\mathalpha}{\M@greeklower@font}{"3BE} \DeclareMathSymbol{\omicron}{\mathalpha}{\M@greeklower@font}{"3BF} \DeclareMathSymbol{\pi}{\mathalpha}{\M@greeklower@font}{"3C0} \DeclareMathSymbol{\rho}{\mathalpha}{\M@greeklower@font}{"3C1} \DeclareMathSymbol{\sigma}{\mathalpha}{\M@greeklower@font}{"3C3} \DeclareMathSymbol{\tau}{\mathalpha}{\M@greeklower@font}{"3C4} \DeclareMathSymbol{\upsilon}{\mathalpha}{\M@greeklower@font}{"3C5} \DeclareMathSymbol{\phi}{\mathalpha}{\M@greeklower@font}{"3C6} \DeclareMathSymbol{\chi}{\mathalpha}{\M@greeklower@font}{"3C7} \DeclareMathSymbol{\psi}{\mathalpha}{\M@greeklower@font}{"3C8} \DeclareMathSymbol{\omega}{\mathalpha}{\M@greeklower@font}{"3C9} \DeclareMathSymbol{\varbeta}{\mathalpha}{\M@greeklower@font}{"3D0} \DeclareMathSymbol{\varepsilon}{\mathalpha}{\M@greeklower@font}{"3F5} \DeclareMathSymbol{\varkappa}{\mathalpha}{\M@greeklower@font}{"3F0} \DeclareMathSymbol{\vartheta}{\mathalpha}{\M@greeklower@font}{"3D1} \DeclareMathSymbol{\varrho}{\mathalpha}{\M@greeklower@font}{"3F1} \DeclareMathSymbol{\varsigma}{\mathalpha}{\M@greeklower@font}{"3C2} \DeclareMathSymbol{\varphi}{\mathalpha}{\M@greeklower@font}{"3D5}} \def\M@agreekupper@set{% \edef\M@agreekupper@font{M\M@agreekuppershape\@tempa} \DeclareMathSymbol{\Heta}{\mathalpha}{\M@agreekupper@font}{"370} \DeclareMathSymbol{\Sampi}{\mathalpha}{\M@agreekupper@font}{"3E0} \DeclareMathSymbol{\Digamma}{\mathalpha}{\M@agreekupper@font}{"3DC} \DeclareMathSymbol{\Koppa}{\mathalpha}{\M@agreekupper@font}{"3D8} \DeclareMathSymbol{\Stigma}{\mathalpha}{\M@agreekupper@font}{"3DA} \DeclareMathSymbol{\Sho}{\mathalpha}{\M@agreekupper@font}{"3F7} \DeclareMathSymbol{\San}{\mathalpha}{\M@agreekupper@font}{"3FA} \DeclareMathSymbol{\varSampi}{\mathalpha}{\M@agreekupper@font}{"372} \DeclareMathSymbol{\varDigamma}{\mathalpha}{\M@agreekupper@font}{"376} \DeclareMathSymbol{\varKoppa}{\mathalpha}{\M@agreekupper@font}{"3DE}} \def\M@agreeklower@set{% \edef\M@agreeklower@font{M\M@agreeklowershape\@tempa} \DeclareMathSymbol{\heta}{\mathalpha}{\M@agreeklower@font}{"371} \DeclareMathSymbol{\sampi}{\mathalpha}{\M@agreeklower@font}{"3E1} \DeclareMathSymbol{\digamma}{\mathalpha}{\M@agreeklower@font}{"3DD} \DeclareMathSymbol{\koppa}{\mathalpha}{\M@agreeklower@font}{"3D9} \DeclareMathSymbol{\stigma}{\mathalpha}{\M@agreeklower@font}{"3DB} \DeclareMathSymbol{\sho}{\mathalpha}{\M@agreeklower@font}{"3F8} \DeclareMathSymbol{\san}{\mathalpha}{\M@agreeklower@font}{"3FB} \DeclareMathSymbol{\varsampi}{\mathalpha}{\M@agreeklower@font}{"373} \DeclareMathSymbol{\vardigamma}{\mathalpha}{\M@agreeklower@font}{"377} \DeclareMathSymbol{\varkoppa}{\mathalpha}{\M@agreeklower@font}{"3DF}} \def\M@cyrillicupper@set{% \edef\M@cyrillicupper@font{M\M@cyrillicuppershape\@tempa} \DeclareMathSymbol{\cyrA}{\mathalpha}{\M@cyrillicupper@font}{"410} \DeclareMathSymbol{\cyrBe}{\mathalpha}{\M@cyrillicupper@font}{"411} \DeclareMathSymbol{\cyrVe}{\mathalpha}{\M@cyrillicupper@font}{"412} \DeclareMathSymbol{\cyrGhe}{\mathalpha}{\M@cyrillicupper@font}{"413} \DeclareMathSymbol{\cyrDe}{\mathalpha}{\M@cyrillicupper@font}{"414} \DeclareMathSymbol{\cyrIe}{\mathalpha}{\M@cyrillicupper@font}{"415} \DeclareMathSymbol{\cyrZhe}{\mathalpha}{\M@cyrillicupper@font}{"416} \DeclareMathSymbol{\cyrZe}{\mathalpha}{\M@cyrillicupper@font}{"417} \DeclareMathSymbol{\cyrI}{\mathalpha}{\M@cyrillicupper@font}{"418} \DeclareMathSymbol{\cyrKa}{\mathalpha}{\M@cyrillicupper@font}{"41A} \DeclareMathSymbol{\cyrEl}{\mathalpha}{\M@cyrillicupper@font}{"41B} \DeclareMathSymbol{\cyrEm}{\mathalpha}{\M@cyrillicupper@font}{"41C} \DeclareMathSymbol{\cyrEn}{\mathalpha}{\M@cyrillicupper@font}{"41D} \DeclareMathSymbol{\cyrO}{\mathalpha}{\M@cyrillicupper@font}{"41E} \DeclareMathSymbol{\cyrPe}{\mathalpha}{\M@cyrillicupper@font}{"41F} \DeclareMathSymbol{\cyrEr}{\mathalpha}{\M@cyrillicupper@font}{"420} \DeclareMathSymbol{\cyrEs}{\mathalpha}{\M@cyrillicupper@font}{"421} \DeclareMathSymbol{\cyrTe}{\mathalpha}{\M@cyrillicupper@font}{"422} \DeclareMathSymbol{\cyrU}{\mathalpha}{\M@cyrillicupper@font}{"423} \DeclareMathSymbol{\cyrEf}{\mathalpha}{\M@cyrillicupper@font}{"424} \DeclareMathSymbol{\cyrHa}{\mathalpha}{\M@cyrillicupper@font}{"425} \DeclareMathSymbol{\cyrTse}{\mathalpha}{\M@cyrillicupper@font}{"426} \DeclareMathSymbol{\cyrChe}{\mathalpha}{\M@cyrillicupper@font}{"427} \DeclareMathSymbol{\cyrSha}{\mathalpha}{\M@cyrillicupper@font}{"428} \DeclareMathSymbol{\cyrShcha}{\mathalpha}{\M@cyrillicupper@font}{"429} \DeclareMathSymbol{\cyrHard}{\mathalpha}{\M@cyrillicupper@font}{"42A} \DeclareMathSymbol{\cyrYeru}{\mathalpha}{\M@cyrillicupper@font}{"42B} \DeclareMathSymbol{\cyrSoft}{\mathalpha}{\M@cyrillicupper@font}{"42C} \DeclareMathSymbol{\cyrE}{\mathalpha}{\M@cyrillicupper@font}{"42D} \DeclareMathSymbol{\cyrYu}{\mathalpha}{\M@cyrillicupper@font}{"42E} \DeclareMathSymbol{\cyrYa}{\mathalpha}{\M@cyrillicupper@font}{"42F} \DeclareMathSymbol{\cyrvarI}{\mathalpha}{\M@cyrillicupper@font}{"419}} \def\M@cyrilliclower@set{% \edef\M@cyrilliclower@font{M\M@cyrilliclowershape\@tempa} \DeclareMathSymbol{\cyra}{\mathalpha}{\M@cyrilliclower@font}{"430} \DeclareMathSymbol{\cyrbe}{\mathalpha}{\M@cyrilliclower@font}{"431} \DeclareMathSymbol{\cyrve}{\mathalpha}{\M@cyrilliclower@font}{"432} \DeclareMathSymbol{\cyrghe}{\mathalpha}{\M@cyrilliclower@font}{"433} \DeclareMathSymbol{\cyrde}{\mathalpha}{\M@cyrilliclower@font}{"434} \DeclareMathSymbol{\cyrie}{\mathalpha}{\M@cyrilliclower@font}{"435} \DeclareMathSymbol{\cyrzhe}{\mathalpha}{\M@cyrilliclower@font}{"436} \DeclareMathSymbol{\cyrze}{\mathalpha}{\M@cyrilliclower@font}{"437} \DeclareMathSymbol{\cyri}{\mathalpha}{\M@cyrilliclower@font}{"438} \DeclareMathSymbol{\cyrka}{\mathalpha}{\M@cyrilliclower@font}{"43A} \DeclareMathSymbol{\cyrel}{\mathalpha}{\M@cyrilliclower@font}{"43B} \DeclareMathSymbol{\cyrem}{\mathalpha}{\M@cyrilliclower@font}{"43C} \DeclareMathSymbol{\cyren}{\mathalpha}{\M@cyrilliclower@font}{"43D} \DeclareMathSymbol{\cyro}{\mathalpha}{\M@cyrilliclower@font}{"43E} \DeclareMathSymbol{\cyrpe}{\mathalpha}{\M@cyrilliclower@font}{"43F} \DeclareMathSymbol{\cyrer}{\mathalpha}{\M@cyrilliclower@font}{"440} \DeclareMathSymbol{\cyres}{\mathalpha}{\M@cyrilliclower@font}{"441} \DeclareMathSymbol{\cyrte}{\mathalpha}{\M@cyrilliclower@font}{"442} \DeclareMathSymbol{\cyru}{\mathalpha}{\M@cyrilliclower@font}{"443} \DeclareMathSymbol{\cyref}{\mathalpha}{\M@cyrilliclower@font}{"444} \DeclareMathSymbol{\cyrha}{\mathalpha}{\M@cyrilliclower@font}{"445} \DeclareMathSymbol{\cyrtse}{\mathalpha}{\M@cyrilliclower@font}{"446} \DeclareMathSymbol{\cyrche}{\mathalpha}{\M@cyrilliclower@font}{"447} \DeclareMathSymbol{\cyrsha}{\mathalpha}{\M@cyrilliclower@font}{"448} \DeclareMathSymbol{\cyrshcha}{\mathalpha}{\M@cyrilliclower@font}{"449} \DeclareMathSymbol{\cyrhard}{\mathalpha}{\M@cyrilliclower@font}{"44A} \DeclareMathSymbol{\cyryeru}{\mathalpha}{\M@cyrilliclower@font}{"44B} \DeclareMathSymbol{\cyrsoft}{\mathalpha}{\M@cyrilliclower@font}{"44C} \DeclareMathSymbol{\cyre}{\mathalpha}{\M@cyrilliclower@font}{"44D} \DeclareMathSymbol{\cyryu}{\mathalpha}{\M@cyrilliclower@font}{"44E} \DeclareMathSymbol{\cyrya}{\mathalpha}{\M@cyrilliclower@font}{"44F} \DeclareMathSymbol{\cyrvari}{\mathalpha}{\M@cyrilliclower@font}{"439}} \def\M@hebrew@set{% \edef\M@hebrew@font{M\M@hebrewshape\@tempa} \DeclareMathSymbol{\aleph}{\mathalpha}{\M@hebrew@font}{"5D0} \DeclareMathSymbol{\beth}{\mathalpha}{\M@hebrew@font}{"5D1} \DeclareMathSymbol{\gimel}{\mathalpha}{\M@hebrew@font}{"5D2} \DeclareMathSymbol{\daleth}{\mathalpha}{\M@hebrew@font}{"5D3} \DeclareMathSymbol{\he}{\mathalpha}{\M@hebrew@font}{"5D4} \DeclareMathSymbol{\vav}{\mathalpha}{\M@hebrew@font}{"5D5} \DeclareMathSymbol{\zayin}{\mathalpha}{\M@hebrew@font}{"5D6} \DeclareMathSymbol{\het}{\mathalpha}{\M@hebrew@font}{"5D7} \DeclareMathSymbol{\tet}{\mathalpha}{\M@hebrew@font}{"5D8} \DeclareMathSymbol{\yod}{\mathalpha}{\M@hebrew@font}{"5D9} \DeclareMathSymbol{\kaf}{\mathalpha}{\M@hebrew@font}{"5DB} \DeclareMathSymbol{\lamed}{\mathalpha}{\M@hebrew@font}{"5DC} \DeclareMathSymbol{\mem}{\mathalpha}{\M@hebrew@font}{"5DE} \DeclareMathSymbol{\nun}{\mathalpha}{\M@hebrew@font}{"5E0} \DeclareMathSymbol{\samekh}{\mathalpha}{\M@hebrew@font}{"5E1} \DeclareMathSymbol{\ayin}{\mathalpha}{\M@hebrew@font}{"5E2} \DeclareMathSymbol{\pe}{\mathalpha}{\M@hebrew@font}{"5E4} \DeclareMathSymbol{\tsadi}{\mathalpha}{\M@hebrew@font}{"5E6} \DeclareMathSymbol{\qof}{\mathalpha}{\M@hebrew@font}{"5E7} \DeclareMathSymbol{\resh}{\mathalpha}{\M@hebrew@font}{"5E8} \DeclareMathSymbol{\shin}{\mathalpha}{\M@hebrew@font}{"5E9} \DeclareMathSymbol{\tav}{\mathalpha}{\M@hebrew@font}{"5EA} \DeclareMathSymbol{\varkaf}{\mathalpha}{\M@hebrew@font}{"5DA} \DeclareMathSymbol{\varmem}{\mathalpha}{\M@hebrew@font}{"5DD} \DeclareMathSymbol{\varnun}{\mathalpha}{\M@hebrew@font}{"5DF} \DeclareMathSymbol{\varpe}{\mathalpha}{\M@hebrew@font}{"5E3} \DeclareMathSymbol{\vartsadi}{\mathalpha}{\M@hebrew@font}{"5E5}} \def\M@digits@set{% \edef\M@digits@font{M\M@digitsshape\@tempa} \DeclareMathSymbol{0}{\mathalpha}{\M@digits@font}{`0} \DeclareMathSymbol{1}{\mathalpha}{\M@digits@font}{`1} \DeclareMathSymbol{2}{\mathalpha}{\M@digits@font}{`2} \DeclareMathSymbol{3}{\mathalpha}{\M@digits@font}{`3} \DeclareMathSymbol{4}{\mathalpha}{\M@digits@font}{`4} \DeclareMathSymbol{5}{\mathalpha}{\M@digits@font}{`5} \DeclareMathSymbol{6}{\mathalpha}{\M@digits@font}{`6} \DeclareMathSymbol{7}{\mathalpha}{\M@digits@font}{`7} \DeclareMathSymbol{8}{\mathalpha}{\M@digits@font}{`8} \DeclareMathSymbol{9}{\mathalpha}{\M@digits@font}{`9}} \def\M@operator@set{% \ifM@adjust@font \edef\M@operator@num{\number\csname symM\M@operatorshape\@tempa\endcsname} \protected\edef\M@operator@mathcodes{% \Umathcode`A=7+\M@operator@num+`A\relax \Umathcode`B=7+\M@operator@num+`B\relax \Umathcode`C=7+\M@operator@num+`C\relax \Umathcode`D=7+\M@operator@num+`D\relax \Umathcode`E=7+\M@operator@num+`E\relax \Umathcode`F=7+\M@operator@num+`F\relax \Umathcode`G=7+\M@operator@num+`G\relax \Umathcode`H=7+\M@operator@num+`H\relax \Umathcode`I=7+\M@operator@num+`I\relax \Umathcode`J=7+\M@operator@num+`J\relax \Umathcode`K=7+\M@operator@num+`K\relax \Umathcode`L=7+\M@operator@num+`L\relax \Umathcode`M=7+\M@operator@num+`M\relax \Umathcode`N=7+\M@operator@num+`N\relax \Umathcode`O=7+\M@operator@num+`O\relax \Umathcode`P=7+\M@operator@num+`P\relax \Umathcode`Q=7+\M@operator@num+`Q\relax \Umathcode`R=7+\M@operator@num+`R\relax \Umathcode`S=7+\M@operator@num+`S\relax \Umathcode`T=7+\M@operator@num+`T\relax \Umathcode`U=7+\M@operator@num+`U\relax \Umathcode`V=7+\M@operator@num+`V\relax \Umathcode`W=7+\M@operator@num+`W\relax \Umathcode`X=7+\M@operator@num+`X\relax \Umathcode`Y=7+\M@operator@num+`Y\relax \Umathcode`Z=7+\M@operator@num+`Z\relax \Umathcode`a=7+\M@operator@num+`a\relax \Umathcode`b=7+\M@operator@num+`b\relax \Umathcode`c=7+\M@operator@num+`c\relax \Umathcode`d=7+\M@operator@num+`d\relax \Umathcode`e=7+\M@operator@num+`e\relax \Umathcode`f=7+\M@operator@num+`f\relax \Umathcode`g=7+\M@operator@num+`g\relax \Umathcode`h=7+\M@operator@num+`h\relax \Umathcode`i=7+\M@operator@num+`i\relax \Umathcode`j=7+\M@operator@num+`j\relax \Umathcode`k=7+\M@operator@num+`k\relax \Umathcode`l=7+\M@operator@num+`l\relax \Umathcode`m=7+\M@operator@num+`m\relax \Umathcode`n=7+\M@operator@num+`n\relax \Umathcode`o=7+\M@operator@num+`o\relax \Umathcode`p=7+\M@operator@num+`p\relax \Umathcode`q=7+\M@operator@num+`q\relax \Umathcode`r=7+\M@operator@num+`r\relax \Umathcode`s=7+\M@operator@num+`s\relax \Umathcode`t=7+\M@operator@num+`t\relax \Umathcode`u=7+\M@operator@num+`u\relax \Umathcode`v=7+\M@operator@num+`v\relax \Umathcode`w=7+\M@operator@num+`w\relax \Umathcode`x=7+\M@operator@num+`x\relax \Umathcode`y=7+\M@operator@num+`y\relax \Umathcode`z=7+\M@operator@num+`z\relax \Umathchardef\imath=7+\M@operator@num+1044506\relax \Umathchardef\jmath=7+\M@operator@num+1044500\relax} \else \let\M@operator@mathcodes\@empty \fi \xdef\operator@font{\noexpand\mathgroup \csname symM\M@operatorshape\@tempa\endcsname\M@operator@mathcodes}} \ifM@adjust@font \def\M@delimiters@set{% \edef\M@delimiters@font{M\M@delimitersshape\@tempa} \DeclareMathSymbol{(}{\mathopen}{\M@delimiters@font}{"28} \DeclareMathSymbol{)}{\mathclose}{\M@delimiters@font}{"29} \DeclareMathSymbol{[}{\mathopen}{\M@delimiters@font}{"5B} \DeclareMathSymbol{]}{\mathclose}{\M@delimiters@font}{"5D} \ifM@symbols\else \DeclareMathSymbol{|}{\mathord}{\M@delimiters@font}{"7C} \fi \DeclareMathSymbol{\leftbrace}{\mathopen}{\M@delimiters@font}{"7B} \DeclareMathSymbol{\rightbrace}{\mathclose}{\M@delimiters@font}{"7D} \global\Udelcode40=+\csname sym\M@delimiters@font\endcsname+40\relax % ( \global\Udelcode41=+\csname sym\M@delimiters@font\endcsname+41\relax % ) \global\Udelcode47=+\csname sym\M@delimiters@font\endcsname+47\relax % / \global\Udelcode91=+\csname sym\M@delimiters@font\endcsname+91\relax % [ \global\Udelcode93=+\csname sym\M@delimiters@font\endcsname+93\relax % ] \global\Udelcode124=+\csname sym\M@delimiters@font\endcsname+124\relax % | \global\let\vert=| \protected\gdef\backslash{\ifmmode\mathbackslash\else\textbackslash\fi} \protected\xdef\mathbackslash{% \Udelimiter+2+\number\csname sym\M@delimiters@font\endcsname +92\relax} % backslash \protected\xdef\lbrace{% \Udelimiter+4+\number\csname sym\M@delimiters@font\endcsname +123\relax} % { \protected\xdef\rbrace{% \Udelimiter+5+\number\csname sym\M@delimiters@font\endcsname +125\relax} % } \protected\xdef\lguil{% \Udelimiter+4+\number\csname sym\M@delimiters@font\endcsname +8249\relax} % single left guilement \protected\xdef\rguil{% \Udelimiter+5+\number\csname sym\M@delimiters@font\endcsname +8250\relax} % single right guilement \protected\xdef\llguil{% \Udelimiter+4+\number\csname sym\M@delimiters@font\endcsname +171\relax} % double left guilement \protected\xdef\rrguil{% \Udelimiter+5+\number\csname sym\M@delimiters@font\endcsname +187\relax} % double right guilement \protected\xdef\fakelangle{% \Udelimiter+4+\number\csname sym\M@delimiters@font\endcsname +1044508\relax} % fake left angle \protected\xdef\fakerangle{% \Udelimiter+5+\number\csname sym\M@delimiters@font\endcsname +1044509\relax} % fake right angle \protected\xdef\fakellangle{% \Udelimiter+4+\number\csname sym\M@delimiters@font\endcsname +1044510\relax} % fake double left angle \protected\xdef\fakerrangle{% \Udelimiter+5+\number\csname sym\M@delimiters@font\endcsname +1044511\relax} % fake double right angle } \else \def\M@delimiters@set{% \edef\M@delimiters@font{M\M@delimitersshape\@tempa} \DeclareMathSymbol{(}{\mathopen}{\M@delimiters@font}{"28} \DeclareMathSymbol{)}{\mathclose}{\M@delimiters@font}{"29} \DeclareMathSymbol{[}{\mathopen}{\M@delimiters@font}{"5B} \DeclareMathSymbol{]}{\mathclose}{\M@delimiters@font}{"5D} \DeclareMathSymbol{\lguil}{\mathopen}{\M@delimiters@font}{"2039} \DeclareMathSymbol{\rguil}{\mathclose}{\M@delimiters@font}{"203A} \DeclareMathSymbol{\llguil}{\mathopen}{\M@delimiters@font}{"AB} \DeclareMathSymbol{\rrguil}{\mathclose}{\M@delimiters@font}{"BB} \DeclareMathSymbol{\leftbrace}{\mathopen}{\M@delimiters@font}{"7B} \DeclareMathSymbol{\rightbrace}{\mathclose}{\M@delimiters@font}{"7D}} \fi \ifM@adjust@font \def\M@radical@set{% \edef\M@radical@font{M\M@radicalshape\@tempa} \DeclareMathSymbol{\surd}{\mathord}{\M@radical@font}{"221A} \xdef\@sqrts@gn##1{% \Uradical+\number\csname sym\M@radical@font\endcsname+8730\relax{##1}} \gdef\r@@t##1##2{% \setbox\z@\hbox{$\m@th##1\sqrtsign{##2}$}% \setbox\surdbox\hbox{$\m@th##1\@sqrts@gn{% \hbox{\vphantom{$\m@th##1##2$}}}$} \dimen@\ht\surdbox \advance\dimen@\dp\surdbox \dimen@=0.6\dimen@ \advance\dimen@-\dp\surdbox \ifdim\wd\rootbox<0.6\wd\surdbox \kern0.6\wd\surdbox \else \kern\wd\rootbox \fi \raise\dimen@\hbox{\llap{\copy\rootbox}} \kern-0.6\wd\surdbox \box\z@} \gdef\sqrtsign##1{\@sqrts@gn{\mkern\radicandoffset##1}}} \else \def\M@radical@set{% \edef\M@radical@font{M\M@radicalshape\@tempa} \DeclareMathSymbol{\surd}{\mathord}{\M@radical@font}{"221A}} \fi \def\M@bigops@set{% \edef\M@bigops@font{M\M@bigopsshape\@tempa} \let\sum\@undefined \let\prod\@undefined \DeclareMathSymbol{\sum}{\mathop}{\M@bigops@font}{"2211} \DeclareMathSymbol{\prod}{\mathop}{\M@bigops@font}{"220F} \DeclareMathSymbol{\intop}{\mathop}{\M@bigops@font}{"222B}} \def\M@extbigops@set{% \edef\M@extbigops@font{M\M@extbigopsshape\@tempa} \let\coprod\@undefined \let\bigvee\@undefined \let\bigwedge\@undefined \let\bigcup\@undefined \let\bigcap\@undefined \let\bigoplus\@undefined \let\bigotimes\@undefined \let\bigodot\@undefined \let\bigsqcup\@undefined \DeclareMathSymbol{\coprod}{\mathop}{\M@extbigops@font}{"2210} \DeclareMathSymbol{\bigvee}{\mathop}{\M@extbigops@font}{"22C1} \DeclareMathSymbol{\bigwedge}{\mathop}{\M@extbigops@font}{"22C0} \DeclareMathSymbol{\bigcup}{\mathop}{\M@extbigops@font}{"22C3} \DeclareMathSymbol{\bigcap}{\mathop}{\M@extbigops@font}{"22C2} \DeclareMathSymbol{\iintop}{\mathop}{\M@extbigops@font}{"222C} \protected\gdef\iint{\iintop\nolimits} \DeclareMathSymbol{\iiintop}{\mathop}{\M@extbigops@font}{"222D} \protected\gdef\iiint{\iiintop\nolimits} \DeclareMathSymbol{\ointop}{\mathop}{\M@extbigops@font}{"222E} \protected\gdef\oint{\ointop\nolimits} \DeclareMathSymbol{\oiintop}{\mathop}{\M@extbigops@font}{"222F} \protected\gdef\oiint{\oiintop\nolimits} \DeclareMathSymbol{\oiiintop}{\mathop}{\M@extbigops@font}{"2230} \protected\gdef\oiiint{\oiiintop\nolimits} \DeclareMathSymbol{\bigoplus}{\mathop}{\M@extbigops@font}{"2A01} \DeclareMathSymbol{\bigotimes}{\mathop}{\M@extbigops@font}{"2A02} \DeclareMathSymbol{\bigodot}{\mathop}{\M@extbigops@font}{"2A00} \DeclareMathSymbol{\bigsqcap}{\mathop}{\M@extbigops@font}{"2A05} \DeclareMathSymbol{\bigsqcup}{\mathop}{\M@extbigops@font}{"2A06}} \def\M@symbols@set{% \edef\M@symbols@font{M\M@symbolsshape\@tempa} \let\colon\@undefined \let\mathellipsis\@undefined \DeclareMathSymbol{.}{\mathord}{\M@symbols@font}{"2E} \DeclareMathSymbol{@}{\mathord}{\M@symbols@font}{"40} \DeclareMathSymbol{'}{\mathord}{\M@symbols@font}{"2032} \DeclareMathSymbol{\prime}{\mathord}{\M@symbols@font}{"2032} \DeclareMathSymbol{"}{\mathord}{\M@symbols@font}{"2033} \DeclareMathSymbol{\mathhash}{\mathord}{\M@symbols@font}{"23} \DeclareMathSymbol{\mathdollar}{\mathord}{\M@symbols@font}{"24} \DeclareMathSymbol{\mathpercent}{\mathord}{\M@symbols@font}{"25} \DeclareMathSymbol{\mathand}{\mathord}{\M@symbols@font}{"26} \DeclareMathSymbol{\mathparagraph}{\mathord}{\M@symbols@font}{"B6} \DeclareMathSymbol{\mathsection}{\mathord}{\M@symbols@font}{"A7} \DeclareMathSymbol{\mathsterling}{\mathord}{\M@symbols@font}{"A3} \DeclareMathSymbol{\neg}{\mathord}{\M@symbols@font}{"AC} \DeclareMathSymbol{|}{\mathord}{\M@symbols@font}{"7C} \DeclareMathSymbol{\infty}{\mathord}{\M@symbols@font}{"221E} \DeclareMathSymbol{\partial}{\mathord}{\M@symbols@font}{"2202} \DeclareMathSymbol{\degree}{\mathord}{\M@symbols@font}{"B0} \DeclareMathSymbol{\increment}{\mathord}{\M@symbols@font}{"2206} \DeclareMathSymbol{\comma}{\mathord}{\M@symbols@font}{"2C} \DeclareMathSymbol{+}{\mathbin}{\M@symbols@font}{"2B} \DeclareMathSymbol{-}{\mathbin}{\M@symbols@font}{"2212} \DeclareMathSymbol{*}{\mathbin}{\M@symbols@font}{"2A} \DeclareMathSymbol{\times}{\mathbin}{\M@symbols@font}{"D7} \DeclareMathSymbol{/}{\mathord}{\M@symbols@font}{"2F} \DeclareMathSymbol{\fractionslash}{\mathord}{\M@symbols@font}{"2215} \DeclareMathSymbol{\div}{\mathbin}{\M@symbols@font}{"F7} \DeclareMathSymbol{\pm}{\mathbin}{\M@symbols@font}{"B1} \DeclareMathSymbol{\bullet}{\mathbin}{\M@symbols@font}{"2022} \DeclareMathSymbol{\dagger}{\mathbin}{\M@symbols@font}{"2020} \DeclareMathSymbol{\ddagger}{\mathbin}{\M@symbols@font}{"2021} \DeclareMathSymbol{\cdot}{\mathbin}{\M@symbols@font}{"2219} \DeclareMathSymbol{\setminus}{\mathbin}{\M@symbols@font}{"5C} \DeclareMathSymbol{=}{\mathrel}{\M@symbols@font}{"3D} \DeclareMathSymbol{<}{\mathrel}{\M@symbols@font}{"3C} \DeclareMathSymbol{>}{\mathrel}{\M@symbols@font}{"3E} \DeclareMathSymbol{\leq}{\mathrel}{\M@symbols@font}{"2264} \DeclareMathSymbol{\geq}{\mathrel}{\M@symbols@font}{"2265} \DeclareMathSymbol{\sim}{\mathrel}{\M@symbols@font}{"7E} \DeclareMathSymbol{\approx}{\mathrel}{\M@symbols@font}{"2248} \DeclareMathSymbol{\equiv}{\mathrel}{\M@symbols@font}{"2261} \DeclareMathSymbol{\mid}{\mathrel}{\M@symbols@font}{"7C} \DeclareMathSymbol{\parallel}{\mathrel}{\M@symbols@font}{"2016} \DeclareMathSymbol{:}{\mathrel}{\M@symbols@font}{"3A} \DeclareMathSymbol{?}{\mathclose}{\M@symbols@font}{"3F} \DeclareMathSymbol{!}{\mathclose}{\M@symbols@font}{"21} \DeclareMathSymbol{,}{\mathpunct}{\M@symbols@font}{"2C} \DeclareMathSymbol{;}{\mathpunct}{\M@symbols@font}{"3B} \DeclareMathSymbol{\colon}{\mathord}{\M@symbols@font}{"3A} \DeclareMathSymbol{\mathellipsis}{\mathinner}{\M@symbols@font}{"2026} \protected\gdef\#{\ifmmode\mathhash\else\char"23\relax\fi} \protected\gdef\%{\ifmmode\mathpercent\else\char"25\relax\fi} \protected\gdef\&{\ifmmode\mathand\else\char"26\relax\fi} \DeclareMathSymbol{\@relbar}{\mathbin}{symbols}{"00} \DeclareMathSymbol{\@Relbar}{\mathrel}{operators}{"3D} \DeclareMathSymbol{\@verticalbar}{\mathord}{symbols}{"6A} \ifM@extsymbols\else \protected\gdef\simeq{\mathrel{\mathpalette\stack@flatrel{{-}{\sim}}}} \protected\gdef\cong{\mathrel{\mathpalette\stack@flatrel{{=}{\sim}}}} \fi \protected\gdef\relbar{\mathrel{\smash\@relbar}} \protected\gdef\Relbar{\mathrel{\@Relbar}} \protected\gdef\models{\mathrel{\@verticalbar}\joinrel\Relbar} \ifM@adjust@font \DeclareMathSymbol{\bigat}{\mathop}{\M@symbols@font}{"40} \DeclareMathSymbol{\bighash}{\mathop}{\M@symbols@font}{"23} \DeclareMathSymbol{\bigdollar}{\mathop}{\M@symbols@font}{"24} \DeclareMathSymbol{\bigpercent}{\mathop}{\M@symbols@font}{"25} \DeclareMathSymbol{\bigand}{\mathop}{\M@symbols@font}{"26} \DeclareMathSymbol{\bigplus}{\mathop}{\M@symbols@font}{"2B} \DeclareMathSymbol{\bigp}{\mathop}{\M@symbols@font}{"21} \DeclareMathSymbol{\bigq}{\mathop}{\M@symbols@font}{"3F} \DeclareMathSymbol{\bigS}{\mathop}{\M@symbols@font}{"A7} \DeclareMathSymbol{\bigtimes}{\mathop}{\M@symbols@font}{"D7} \DeclareMathSymbol{\bigdiv}{\mathop}{\M@symbols@font}{"F7} \DeclareMathSymbol{\nabla}{\mathord}{\M@symbols@font}{"2207} \fi} \def\M@extsymbols@set{% \edef\M@extsymbols@font{M\M@extsymbolsshape\@tempa} \let\angle\@undefined \let\simeq\@undefined \let\sqsubset\@undefined \let\sqsupset\@undefined \let\bowtie\@undefined \let\doteq\@undefined \let\neq\@undefined \DeclareMathSymbol{\wp}{\mathord}{\M@extsymbols@font}{"2118} \DeclareMathSymbol{\Re}{\mathord}{\M@extsymbols@font}{"211C} \DeclareMathSymbol{\Im}{\mathord}{\M@extsymbols@font}{"2111} \DeclareMathSymbol{\ell}{\mathord}{\M@extsymbols@font}{"2113} \DeclareMathSymbol{\forall}{\mathord}{\M@extsymbols@font}{"2200} \DeclareMathSymbol{\exists}{\mathord}{\M@extsymbols@font}{"2203} \DeclareMathSymbol{\emptyset}{\mathord}{\M@extsymbols@font}{"2205} \DeclareMathSymbol{\in}{\mathord}{\M@extsymbols@font}{"2208} \DeclareMathSymbol{\ni}{\mathord}{\M@extsymbols@font}{"220B} \DeclareMathSymbol{\mp}{\mathord}{\M@extsymbols@font}{"2213} \DeclareMathSymbol{\angle}{\mathord}{\M@extsymbols@font}{"2220} \DeclareMathSymbol{\top}{\mathord}{\M@extsymbols@font}{"22A4} \DeclareMathSymbol{\bot}{\mathord}{\M@extsymbols@font}{"22A5} \DeclareMathSymbol{\vdash}{\mathord}{\M@extsymbols@font}{"22A2} \DeclareMathSymbol{\dashv}{\mathord}{\M@extsymbols@font}{"22A3} \DeclareMathSymbol{\flat}{\mathord}{\M@extsymbols@font}{"266D} \DeclareMathSymbol{\natural}{\mathord}{\M@extsymbols@font}{"266E} \DeclareMathSymbol{\sharp}{\mathord}{\M@extsymbols@font}{"266F} \DeclareMathSymbol{\fflat}{\mathord}{\M@extsymbols@font}{"1D12B} \DeclareMathSymbol{\ssharp}{\mathord}{\M@extsymbols@font}{"1D12A} \DeclareMathSymbol{\bclubsuit}{\mathord}{\M@extsymbols@font}{"2663} \DeclareMathSymbol{\bdiamondsuit}{\mathord}{\M@extsymbols@font}{"2666} \DeclareMathSymbol{\bheartsuit}{\mathord}{\M@extsymbols@font}{"2665} \DeclareMathSymbol{\bspadesuit}{\mathord}{\M@extsymbols@font}{"2660} \DeclareMathSymbol{\wclubsuit}{\mathord}{\M@extsymbols@font}{"2667} \DeclareMathSymbol{\wdiamondsuit}{\mathord}{\M@extsymbols@font}{"2662} \DeclareMathSymbol{\wheartsuit}{\mathord}{\M@extsymbols@font}{"2661} \DeclareMathSymbol{\wspadesuit}{\mathord}{\M@extsymbols@font}{"2664} \global\let\spadesuit\bspadesuit \global\let\heartsuit\wheartsuit \global\let\diamondsuit\wdiamondsuit \global\let\clubsuit\bclubsuit \DeclareMathSymbol{\wedge}{\mathbin}{\M@extsymbols@font}{"2227} \DeclareMathSymbol{\vee}{\mathbin}{\M@extsymbols@font}{"2228} \DeclareMathSymbol{\cap}{\mathord}{\M@extsymbols@font}{"2229} \DeclareMathSymbol{\cup}{\mathbin}{\M@extsymbols@font}{"222A} \DeclareMathSymbol{\sqcap}{\mathbin}{\M@extsymbols@font}{"2293} \DeclareMathSymbol{\sqcup}{\mathbin}{\M@extsymbols@font}{"2294} \DeclareMathSymbol{\amalg}{\mathbin}{\M@extsymbols@font}{"2A3F} \DeclareMathSymbol{\wr}{\mathbin}{\M@extsymbols@font}{"2240} \DeclareMathSymbol{\ast}{\mathbin}{\M@extsymbols@font}{"2217} \DeclareMathSymbol{\star}{\mathbin}{\M@extsymbols@font}{"22C6} \DeclareMathSymbol{\diamond}{\mathbin}{\M@extsymbols@font}{"22C4} \DeclareMathSymbol{\varcdot}{\mathbin}{\M@extsymbols@font}{"22C5} \DeclareMathSymbol{\varsetminus}{\mathbin}{\M@extsymbols@font}{"2216} \DeclareMathSymbol{\oplus}{\mathbin}{\M@extsymbols@font}{"2295} \DeclareMathSymbol{\otimes}{\mathbin}{\M@extsymbols@font}{"2297} \DeclareMathSymbol{\ominus}{\mathbin}{\M@extsymbols@font}{"2296} \DeclareMathSymbol{\odiv}{\mathbin}{\M@extsymbols@font}{"2A38} \DeclareMathSymbol{\oslash}{\mathbin}{\M@extsymbols@font}{"2298} \DeclareMathSymbol{\odot}{\mathbin}{\M@extsymbols@font}{"2299} \DeclareMathSymbol{\sqplus}{\mathbin}{\M@extsymbols@font}{"229E} \DeclareMathSymbol{\sqtimes}{\mathbin}{\M@extsymbols@font}{"22A0} \DeclareMathSymbol{\sqminus}{\mathbin}{\M@extsymbols@font}{"229F} \DeclareMathSymbol{\sqdot}{\mathbin}{\M@extsymbols@font}{"22A1} \DeclareMathSymbol{\in}{\mathrel}{\M@extsymbols@font}{"2208} \DeclareMathSymbol{\ni}{\mathrel}{\M@extsymbols@font}{"220B} \DeclareMathSymbol{\subset}{\mathrel}{\M@extsymbols@font}{"2282} \DeclareMathSymbol{\supset}{\mathrel}{\M@extsymbols@font}{"2283} \DeclareMathSymbol{\subseteq}{\mathrel}{\M@extsymbols@font}{"2286} \DeclareMathSymbol{\supseteq}{\mathrel}{\M@extsymbols@font}{"2287} \DeclareMathSymbol{\sqsubset}{\mathrel}{\M@extsymbols@font}{"228F} \DeclareMathSymbol{\sqsupset}{\mathrel}{\M@extsymbols@font}{"2290} \DeclareMathSymbol{\sqsubseteq}{\mathrel}{\M@extsymbols@font}{"2291} \DeclareMathSymbol{\sqsupseteq}{\mathrel}{\M@extsymbols@font}{"2292} \DeclareMathSymbol{\triangleleft}{\mathrel}{\M@extsymbols@font}{"22B2} \DeclareMathSymbol{\triangleright}{\mathrel}{\M@extsymbols@font}{"22B3} \DeclareMathSymbol{\trianglelefteq}{\mathrel}{\M@extsymbols@font}{"22B4} \DeclareMathSymbol{\trianglerighteq}{\mathrel}{\M@extsymbols@font}{"22B5} \DeclareMathSymbol{\propto}{\mathrel}{\M@extsymbols@font}{"221D} \DeclareMathSymbol{\bowtie}{\mathrel}{\M@extsymbols@font}{"22C8} \DeclareMathSymbol{\hourglass}{\mathrel}{\M@extsymbols@font}{"29D6} \DeclareMathSymbol{\therefore}{\mathrel}{\M@extsymbols@font}{"2234} \DeclareMathSymbol{\because}{\mathrel}{\M@extsymbols@font}{"2235} \DeclareMathSymbol{\ratio}{\mathrel}{\M@extsymbols@font}{"2236} \DeclareMathSymbol{\proportion}{\mathrel}{\M@extsymbols@font}{"2237} \DeclareMathSymbol{\ll}{\mathrel}{\M@extsymbols@font}{"226A} \DeclareMathSymbol{\gg}{\mathrel}{\M@extsymbols@font}{"226B} \DeclareMathSymbol{\lll}{\mathrel}{\M@extsymbols@font}{"22D8} \DeclareMathSymbol{\ggg}{\mathrel}{\M@extsymbols@font}{"22D9} \DeclareMathSymbol{\leqq}{\mathrel}{\M@extsymbols@font}{"2266} \DeclareMathSymbol{\geqq}{\mathrel}{\M@extsymbols@font}{"2267} \DeclareMathSymbol{\lapprox}{\mathrel}{\M@extsymbols@font}{"2A85} \DeclareMathSymbol{\gapprox}{\mathrel}{\M@extsymbols@font}{"2A86} \DeclareMathSymbol{\simeq}{\mathrel}{\M@extsymbols@font}{"2243} \DeclareMathSymbol{\eqsim}{\mathrel}{\M@extsymbols@font}{"2242} \DeclareMathSymbol{\simeqq}{\mathrel}{\M@extsymbols@font}{"2245} \global\let\cong\simeqq \DeclareMathSymbol{\approxeq}{\mathrel}{\M@extsymbols@font}{"224A} \DeclareMathSymbol{\sssim}{\mathrel}{\M@extsymbols@font}{"224B} \DeclareMathSymbol{\seq}{\mathrel}{\M@extsymbols@font}{"224C} \DeclareMathSymbol{\doteq}{\mathrel}{\M@extsymbols@font}{"2250} \DeclareMathSymbol{\coloneq}{\mathrel}{\M@extsymbols@font}{"2254} \DeclareMathSymbol{\eqcolon}{\mathrel}{\M@extsymbols@font}{"2255} \DeclareMathSymbol{\ringeq}{\mathrel}{\M@extsymbols@font}{"2257} \DeclareMathSymbol{\arceq}{\mathrel}{\M@extsymbols@font}{"2258} \DeclareMathSymbol{\wedgeeq}{\mathrel}{\M@extsymbols@font}{"2259} \DeclareMathSymbol{\veeeq}{\mathrel}{\M@extsymbols@font}{"225A} \DeclareMathSymbol{\stareq}{\mathrel}{\M@extsymbols@font}{"225B} \DeclareMathSymbol{\triangleeq}{\mathrel}{\M@extsymbols@font}{"225C} \DeclareMathSymbol{\defeq}{\mathrel}{\M@extsymbols@font}{"225D} \DeclareMathSymbol{\qeq}{\mathrel}{\M@extsymbols@font}{"225F} \DeclareMathSymbol{\lsim}{\mathrel}{\M@extsymbols@font}{"2272} \DeclareMathSymbol{\gsim}{\mathrel}{\M@extsymbols@font}{"2273} \DeclareMathSymbol{\prec}{\mathrel}{\M@extsymbols@font}{"227A} \DeclareMathSymbol{\succ}{\mathrel}{\M@extsymbols@font}{"227B} \DeclareMathSymbol{\preceq}{\mathrel}{\M@extsymbols@font}{"227C} \DeclareMathSymbol{\succeq}{\mathrel}{\M@extsymbols@font}{"227D} \DeclareMathSymbol{\preceqq}{\mathrel}{\M@extsymbols@font}{"2AB3} \DeclareMathSymbol{\succeqq}{\mathrel}{\M@extsymbols@font}{"2AB4} \DeclareMathSymbol{\precsim}{\mathrel}{\M@extsymbols@font}{"227E} \DeclareMathSymbol{\succsim}{\mathrel}{\M@extsymbols@font}{"227F} \DeclareMathSymbol{\precapprox}{\mathrel}{\M@extsymbols@font}{"2AB7} \DeclareMathSymbol{\succapprox}{\mathrel}{\M@extsymbols@font}{"2AB8} \DeclareMathSymbol{\precprec}{\mathrel}{\M@extsymbols@font}{"2ABB} \DeclareMathSymbol{\succsucc}{\mathrel}{\M@extsymbols@font}{"2ABC} \DeclareMathSymbol{\asymp}{\mathrel}{\M@extsymbols@font}{"224D} \DeclareMathSymbol{\nin}{\mathrel}{\M@extsymbols@font}{"2209} \DeclareMathSymbol{\nni}{\mathrel}{\M@extsymbols@font}{"220C} \DeclareMathSymbol{\nsubset}{\mathrel}{\M@extsymbols@font}{"2284} \DeclareMathSymbol{\nsupset}{\mathrel}{\M@extsymbols@font}{"2285} \DeclareMathSymbol{\nsubseteq}{\mathrel}{\M@extsymbols@font}{"2288} \DeclareMathSymbol{\nsupseteq}{\mathrel}{\M@extsymbols@font}{"2289} \DeclareMathSymbol{\subsetneq}{\mathrel}{\M@extsymbols@font}{"228A} \DeclareMathSymbol{\supsetneq}{\mathrel}{\M@extsymbols@font}{"228B} \DeclareMathSymbol{\nsqsubseteq}{\mathrel}{\M@extsymbols@font}{"22E2} \DeclareMathSymbol{\nsqsupseteq}{\mathrel}{\M@extsymbols@font}{"22E3} \DeclareMathSymbol{\sqsubsetneq}{\mathrel}{\M@extsymbols@font}{"22E4} \DeclareMathSymbol{\sqsupsetneq}{\mathrel}{\M@extsymbols@font}{"22E5} \DeclareMathSymbol{\neq}{\mathrel}{\M@extsymbols@font}{"2260} \DeclareMathSymbol{\nl}{\mathrel}{\M@extsymbols@font}{"226E} \DeclareMathSymbol{\nleq}{\mathrel}{\M@extsymbols@font}{"2270} \DeclareMathSymbol{\ngeq}{\mathrel}{\M@extsymbols@font}{"2271} \DeclareMathSymbol{\lneq}{\mathrel}{\M@extsymbols@font}{"2A87} \DeclareMathSymbol{\gneq}{\mathrel}{\M@extsymbols@font}{"2A88} \DeclareMathSymbol{\lneqq}{\mathrel}{\M@extsymbols@font}{"2268} \DeclareMathSymbol{\gneqq}{\mathrel}{\M@extsymbols@font}{"2269} \DeclareMathSymbol{\ntriangleleft}{\mathrel}{\M@extsymbols@font}{"22EA} \DeclareMathSymbol{\ntriangleright}{\mathrel}{\M@extsymbols@font}{"22EB} \DeclareMathSymbol{\ntrianglelefteq}{\mathrel}{\M@extsymbols@font}{"22EC} \DeclareMathSymbol{\ntrianglerighteq}{\mathrel}{\M@extsymbols@font}{"22ED} \DeclareMathSymbol{\nsim}{\mathrel}{\M@extsymbols@font}{"2241} \DeclareMathSymbol{\napprox}{\mathrel}{\M@extsymbols@font}{"2249} \DeclareMathSymbol{\nsimeq}{\mathrel}{\M@extsymbols@font}{"2244} \DeclareMathSymbol{\nsimeqq}{\mathrel}{\M@extsymbols@font}{"2247} \DeclareMathSymbol{\simneqq}{\mathrel}{\M@extsymbols@font}{"2246} \DeclareMathSymbol{\nlsim}{\mathrel}{\M@extsymbols@font}{"2274} \DeclareMathSymbol{\ngsim}{\mathrel}{\M@extsymbols@font}{"2275} \DeclareMathSymbol{\lnsim}{\mathrel}{\M@extsymbols@font}{"22E6} \DeclareMathSymbol{\gnsim}{\mathrel}{\M@extsymbols@font}{"22E7} \DeclareMathSymbol{\lnapprox}{\mathrel}{\M@extsymbols@font}{"2A89} \DeclareMathSymbol{\gnapprox}{\mathrel}{\M@extsymbols@font}{"2A8A} \DeclareMathSymbol{\nprec}{\mathrel}{\M@extsymbols@font}{"2280} \DeclareMathSymbol{\nsucc}{\mathrel}{\M@extsymbols@font}{"2281} \DeclareMathSymbol{\npreceq}{\mathrel}{\M@extsymbols@font}{"22E0} \DeclareMathSymbol{\nsucceq}{\mathrel}{\M@extsymbols@font}{"22E1} \DeclareMathSymbol{\precneq}{\mathrel}{\M@extsymbols@font}{"2AB1} \DeclareMathSymbol{\succneq}{\mathrel}{\M@extsymbols@font}{"2AB2} \DeclareMathSymbol{\precneqq}{\mathrel}{\M@extsymbols@font}{"2AB5} \DeclareMathSymbol{\succneqq}{\mathrel}{\M@extsymbols@font}{"2AB6} \DeclareMathSymbol{\precnsim}{\mathrel}{\M@extsymbols@font}{"22E8} \DeclareMathSymbol{\succnsim}{\mathrel}{\M@extsymbols@font}{"22E9} \DeclareMathSymbol{\precnapprox}{\mathrel}{\M@extsymbols@font}{"2AB9} \DeclareMathSymbol{\succnapprox}{\mathrel}{\M@extsymbols@font}{"2ABA} \DeclareMathSymbol{\nequiv}{\mathrel}{\M@extsymbols@font}{"2262} \global\let\textng\ng \let\ng\@undefined \DeclareMathSymbol{\mathng}{\mathrel}{\M@extsymbols@font}{"226F} \protected\gdef\ng{\ifmmode\mathng\else\textng\fi} \ifM@adjust@font\else \DeclareMathSymbol{\nabla}{\mathord}{\M@extsymbols@font}{"2207} \fi} \def\M@arrows@set{% \edef\M@arrows@font{M\M@arrowsshape\@tempa} \let\uparrow\@undefined \let\Uparrow\@undefined \let\downarrow\@undefined \let\Downarrow\@undefined \let\updownarrow\@undefined \let\Updownarrow\@undefined \let\longrightarrow\@undefined \let\longleftarrow\@undefined \let\longleftrightarrow\@undefined \let\hookrightarrow\@undefined \let\hookleftarrow\@undefined \let\Longrightarrow\@undefined \let\Longleftarrow\@undefined \let\Longleftrightarrow\@undefined \let\rightleftharpoons\@undefined \DeclareMathSymbol{\rightarrow}{\mathrel}{\M@arrows@font}{"2192} \global\let\to\rightarrow \DeclareMathSymbol{\nrightarrow}{\mathrel}{\M@arrows@font}{"219B} \DeclareMathSymbol{\Rightarrow}{\mathrel}{\M@arrows@font}{"21D2} \DeclareMathSymbol{\nRightarrow}{\mathrel}{\M@arrows@font}{"21CF} \DeclareMathSymbol{\Rrightarrow}{\mathrel}{\M@arrows@font}{"21DB} \DeclareMathSymbol{\longrightarrow}{\mathrel}{\M@arrows@font}{"27F6} \DeclareMathSymbol{\Longrightarrow}{\mathrel}{\M@arrows@font}{"27F9} \DeclareMathSymbol{\rightbararrow}{\mathrel}{\M@arrows@font}{"21A6} \global\let\mapsto\rightbararrow \DeclareMathSymbol{\Rightbararrow}{\mathrel}{\M@arrows@font}{"2907} \DeclareMathSymbol{\longrightbararrow}{\mathrel}{\M@arrows@font}{"27FC} \global\let\longmapsto\longrightbararrow \DeclareMathSymbol{\Longrightbararrow}{\mathrel}{\M@arrows@font}{"27FE} \DeclareMathSymbol{\hookrightarrow}{\mathrel}{\M@arrows@font}{"21AA} \DeclareMathSymbol{\rightdasharrow}{\mathrel}{\M@arrows@font}{"21E2} \DeclareMathSymbol{\rightharpoonup}{\mathrel}{\M@arrows@font}{"21C0} \DeclareMathSymbol{\rightharpoondown}{\mathrel}{\M@arrows@font}{"21C1} \DeclareMathSymbol{\rightarrowtail}{\mathrel}{\M@arrows@font}{"21A3} \DeclareMathSymbol{\rightoplusarrow}{\mathrel}{\M@arrows@font}{"27F4} \DeclareMathSymbol{\rightwavearrow}{\mathrel}{\M@arrows@font}{"219D} \DeclareMathSymbol{\rightsquigarrow}{\mathrel}{\M@arrows@font}{"21DD} \DeclareMathSymbol{\longrightsquigarrow}{\mathrel}{\M@arrows@font}{"27FF} \DeclareMathSymbol{\looparrowright}{\mathrel}{\M@arrows@font}{"21AC} \DeclareMathSymbol{\curvearrowright}{\mathrel}{\M@arrows@font}{"293B} \DeclareMathSymbol{\circlearrowright}{\mathrel}{\M@arrows@font}{"21BB} \DeclareMathSymbol{\twoheadrightarrow}{\mathrel}{\M@arrows@font}{"21A0} \DeclareMathSymbol{\rightarrowtobar}{\mathrel}{\M@arrows@font}{"21E5} \DeclareMathSymbol{\rightwhitearrow}{\mathrel}{\M@arrows@font}{"21E8} \DeclareMathSymbol{\rightrightarrows}{\mathrel}{\M@arrows@font}{"21C9} \DeclareMathSymbol{\rightrightrightarrows}{\mathrel}{\M@arrows@font}{"21F6} \DeclareMathSymbol{\leftarrow}{\mathrel}{\M@arrows@font}{"2190} \global\let\from\leftarrow \DeclareMathSymbol{\nleftarrow}{\mathrel}{\M@arrows@font}{"219A} \DeclareMathSymbol{\Leftarrow}{\mathrel}{\M@arrows@font}{"21D0} \DeclareMathSymbol{\nLeftarrow}{\mathrel}{\M@arrows@font}{"21CD} \DeclareMathSymbol{\Lleftarrow}{\mathrel}{\M@arrows@font}{"21DA} \DeclareMathSymbol{\longleftarrow}{\mathrel}{\M@arrows@font}{"27F5} \DeclareMathSymbol{\Longleftarrow}{\mathrel}{\M@arrows@font}{"27F8} \DeclareMathSymbol{\leftbararrow}{\mathrel}{\M@arrows@font}{"21A4} \global\let\mapsfrom\leftbararrow \DeclareMathSymbol{\Leftbararrow}{\mathrel}{\M@arrows@font}{"2906} \DeclareMathSymbol{\longleftbararrow}{\mathrel}{\M@arrows@font}{"27FB} \global\let\longmapsfrom\longleftbararrow \DeclareMathSymbol{\Longleftbararrow}{\mathrel}{\M@arrows@font}{"27FD} \DeclareMathSymbol{\hookleftarrow}{\mathrel}{\M@arrows@font}{"21A9} \DeclareMathSymbol{\leftdasharrow}{\mathrel}{\M@arrows@font}{"21E0} \DeclareMathSymbol{\leftharpoonup}{\mathrel}{\M@arrows@font}{"21BC} \DeclareMathSymbol{\leftharpoondown}{\mathrel}{\M@arrows@font}{"21BD} \DeclareMathSymbol{\leftarrowtail}{\mathrel}{\M@arrows@font}{"21A2} \DeclareMathSymbol{\leftoplusarrow}{\mathrel}{\M@arrows@font}{"2B32} \DeclareMathSymbol{\leftwavearrow}{\mathrel}{\M@arrows@font}{"219C} \DeclareMathSymbol{\leftsquigarrow}{\mathrel}{\M@arrows@font}{"21DC} \DeclareMathSymbol{\longleftsquigarrow}{\mathrel}{\M@arrows@font}{"2B33} \DeclareMathSymbol{\looparrowleft}{\mathrel}{\M@arrows@font}{"21AB} \DeclareMathSymbol{\curvearrowleft}{\mathrel}{\M@arrows@font}{"293A} \DeclareMathSymbol{\circlearrowleft}{\mathrel}{\M@arrows@font}{"21BA} \DeclareMathSymbol{\twoheadleftarrow}{\mathrel}{\M@arrows@font}{"219E} \DeclareMathSymbol{\leftarrowtobar}{\mathrel}{\M@arrows@font}{"21E4} \DeclareMathSymbol{\leftwhitearrow}{\mathrel}{\M@arrows@font}{"21E6} \DeclareMathSymbol{\leftleftarrows}{\mathrel}{\M@arrows@font}{"21C7} \DeclareMathSymbol{\leftleftleftarrows}{\mathrel}{\M@arrows@font}{"2B31} \DeclareMathSymbol{\leftrightarrow}{\mathrel}{\M@arrows@font}{"2194} \DeclareMathSymbol{\Leftrightarrow}{\mathrel}{\M@arrows@font}{"21D4} \DeclareMathSymbol{\nLeftrightarrow}{\mathrel}{\M@arrows@font}{"21CE} \DeclareMathSymbol{\longleftrightarrow}{\mathrel}{\M@arrows@font}{"27F7} \DeclareMathSymbol{\Longleftrightarrow}{\mathrel}{\M@arrows@font}{"27FA} \DeclareMathSymbol{\leftrightwavearrow}{\mathrel}{\M@arrows@font}{"21AD} \DeclareMathSymbol{\leftrightarrows}{\mathrel}{\M@arrows@font}{"21C6} \DeclareMathSymbol{\leftrightharpoons}{\mathrel}{\M@arrows@font}{"21CB} \DeclareMathSymbol{\leftrightarrowstobar}{\mathrel}{\M@arrows@font}{"21B9} \DeclareMathSymbol{\rightleftarrows}{\mathrel}{\M@arrows@font}{"21C4} \DeclareMathSymbol{\rightleftharpoons}{\mathrel}{\M@arrows@font}{"21CC} \DeclareMathSymbol{\uparrow}{\mathrel}{\M@arrows@font}{"2191} \DeclareMathSymbol{\Uparrow}{\mathrel}{\M@arrows@font}{"21D1} \DeclareMathSymbol{\Uuparrow}{\mathrel}{\M@arrows@font}{"290A} \DeclareMathSymbol{\upbararrow}{\mathrel}{\M@arrows@font}{"21A5} \DeclareMathSymbol{\updasharrow}{\mathrel}{\M@arrows@font}{"21E1} \DeclareMathSymbol{\upharpoonleft}{\mathrel}{\M@arrows@font}{"21BF} \DeclareMathSymbol{\upharpoonright}{\mathrel}{\M@arrows@font}{"21BE} \DeclareMathSymbol{\twoheaduparrow}{\mathrel}{\M@arrows@font}{"219F} \DeclareMathSymbol{\uparrowtobar}{\mathrel}{\M@arrows@font}{"2912} \DeclareMathSymbol{\upwhitearrow}{\mathrel}{\M@arrows@font}{"21E7} \DeclareMathSymbol{\upwhitebararrow}{\mathrel}{\M@arrows@font}{"21EA} \DeclareMathSymbol{\upuparrows}{\mathrel}{\M@arrows@font}{"21C8} \DeclareMathSymbol{\downarrow}{\mathrel}{\M@arrows@font}{"2193} \DeclareMathSymbol{\Downarrow}{\mathrel}{\M@arrows@font}{"21D3} \DeclareMathSymbol{\Ddownarrow}{\mathrel}{\M@arrows@font}{"290B} \DeclareMathSymbol{\downbararrow}{\mathrel}{\M@arrows@font}{"21A7} \DeclareMathSymbol{\downdasharrow}{\mathrel}{\M@arrows@font}{"21E3} \DeclareMathSymbol{\zigzagarrow}{\mathrel}{\M@arrows@font}{"21AF} \global\let\lightningboltarrow\zigzagarrow \DeclareMathSymbol{\downharpoonleft}{\mathrel}{\M@arrows@font}{"21C3} \DeclareMathSymbol{\downharpoonright}{\mathrel}{\M@arrows@font}{"21C2} \DeclareMathSymbol{\twoheaddownarrow}{\mathrel}{\M@arrows@font}{"21A1} \DeclareMathSymbol{\downarrowtobar}{\mathrel}{\M@arrows@font}{"2913} \DeclareMathSymbol{\downwhitearrow}{\mathrel}{\M@arrows@font}{"21E9} \DeclareMathSymbol{\downdownarrows}{\mathrel}{\M@arrows@font}{"21CA} \DeclareMathSymbol{\updownarrow}{\mathrel}{\M@arrows@font}{"2195} \DeclareMathSymbol{\Updownarrow}{\mathrel}{\M@arrows@font}{"21D5} \DeclareMathSymbol{\updownarrows}{\mathrel}{\M@arrows@font}{"21C5} \DeclareMathSymbol{\downuparrows}{\mathrel}{\M@arrows@font}{"21F5} \DeclareMathSymbol{\updownharpoons}{\mathrel}{\M@arrows@font}{"296E} \DeclareMathSymbol{\downupharpoons}{\mathrel}{\M@arrows@font}{"296F} \DeclareMathSymbol{\nearrow}{\mathrel}{\M@arrows@font}{"2197} \DeclareMathSymbol{\Nearrow}{\mathrel}{\M@arrows@font}{"21D7} \DeclareMathSymbol{\nwarrow}{\mathrel}{\M@arrows@font}{"2196} \DeclareMathSymbol{\Nwarrow}{\mathrel}{\M@arrows@font}{"21D6} \DeclareMathSymbol{\searrow}{\mathrel}{\M@arrows@font}{"2198} \DeclareMathSymbol{\Searrow}{\mathrel}{\M@arrows@font}{"21D8} \DeclareMathSymbol{\swarrow}{\mathrel}{\M@arrows@font}{"2199} \DeclareMathSymbol{\Swarrow}{\mathrel}{\M@arrows@font}{"21D9} \DeclareMathSymbol{\nwsearrow}{\mathrel}{\M@arrows@font}{"2921} \DeclareMathSymbol{\neswarrow}{\mathrel}{\M@arrows@font}{"2922} \DeclareMathSymbol{\lcirclearrow}{\mathrel}{\M@arrows@font}{"27F2} \DeclareMathSymbol{\rcirclearrow}{\mathrel}{\M@arrows@font}{"27F3}} \def\M@bb@set{% \protected\def\mathbb##1{\relax \ifmmode\else \M@HModeError\mathbb $% \fi \begingroup \M@bb@mathcodes ##1% \endgroup} \edef\M@bb@num{\number\csname symM\M@bbshape\@tempa\endcsname} \protected\edef\M@bb@mathcodes{% \Umathcode`A=0+\M@bb@num"1D538\relax \Umathcode`B=0+\M@bb@num"1D539\relax \Umathcode`C=0+\M@bb@num"2102\relax \Umathcode`D=0+\M@bb@num"1D53B\relax \Umathcode`E=0+\M@bb@num"1D53C\relax \Umathcode`F=0+\M@bb@num"1D53D\relax \Umathcode`G=0+\M@bb@num"1D53E\relax \Umathcode`H=0+\M@bb@num"210D\relax \Umathcode`I=0+\M@bb@num"1D540\relax \Umathcode`J=0+\M@bb@num"1D541\relax \Umathcode`K=0+\M@bb@num"1D542\relax \Umathcode`L=0+\M@bb@num"1D543\relax \Umathcode`M=0+\M@bb@num"1D544\relax \Umathcode`N=0+\M@bb@num"2115\relax \Umathcode`O=0+\M@bb@num"1D546\relax \Umathcode`P=0+\M@bb@num"2119\relax \Umathcode`Q=0+\M@bb@num"211A\relax \Umathcode`R=0+\M@bb@num"211D\relax \Umathcode`S=0+\M@bb@num"1D54A\relax \Umathcode`T=0+\M@bb@num"1D54B\relax \Umathcode`U=0+\M@bb@num"1D54C\relax \Umathcode`V=0+\M@bb@num"1D54D\relax \Umathcode`W=0+\M@bb@num"1D54E\relax \Umathcode`X=0+\M@bb@num"1D54F\relax \Umathcode`Y=0+\M@bb@num"1D550\relax \Umathcode`Z=0+\M@bb@num"2124\relax \Umathcode`a=0+\M@bb@num"1D552\relax \Umathcode`b=0+\M@bb@num"1D553\relax \Umathcode`c=0+\M@bb@num"1D554\relax \Umathcode`d=0+\M@bb@num"1D555\relax \Umathcode`e=0+\M@bb@num"1D556\relax \Umathcode`f=0+\M@bb@num"1D557\relax \Umathcode`g=0+\M@bb@num"1D558\relax \Umathcode`h=0+\M@bb@num"1D559\relax \Umathcode`i=0+\M@bb@num"1D55A\relax \Umathcode`j=0+\M@bb@num"1D55B\relax \Umathcode`k=0+\M@bb@num"1D55C\relax \Umathcode`l=0+\M@bb@num"1D55D\relax \Umathcode`m=0+\M@bb@num"1D55E\relax \Umathcode`n=0+\M@bb@num"1D55F\relax \Umathcode`o=0+\M@bb@num"1D560\relax \Umathcode`p=0+\M@bb@num"1D561\relax \Umathcode`q=0+\M@bb@num"1D562\relax \Umathcode`r=0+\M@bb@num"1D563\relax \Umathcode`s=0+\M@bb@num"1D564\relax \Umathcode`t=0+\M@bb@num"1D565\relax \Umathcode`u=0+\M@bb@num"1D566\relax \Umathcode`v=0+\M@bb@num"1D567\relax \Umathcode`w=0+\M@bb@num"1D568\relax \Umathcode`x=0+\M@bb@num"1D569\relax \Umathcode`y=0+\M@bb@num"1D56A\relax \Umathcode`z=0+\M@bb@num"1D56B\relax \Umathcode`0=0+\M@bb@num"1D7D8\relax \Umathcode`1=0+\M@bb@num"1D7D9\relax \Umathcode`2=0+\M@bb@num"1D7DA\relax \Umathcode`3=0+\M@bb@num"1D7DB\relax \Umathcode`4=0+\M@bb@num"1D7DC\relax \Umathcode`5=0+\M@bb@num"1D7DD\relax \Umathcode`6=0+\M@bb@num"1D7DE\relax \Umathcode`7=0+\M@bb@num"1D7DF\relax \Umathcode`8=0+\M@bb@num"1D7E0\relax \Umathcode`9=0+\M@bb@num"1D7E1\relax}} \def\M@cal@set{% \protected\def\mathcal##1{\relax \ifmmode\else \M@HModeError\mathcal $% \fi \begingroup \M@cal@mathcodes ##1% \endgroup} \edef\M@cal@num{\number\csname symM\M@calshape\@tempa\endcsname} \protected\edef\M@cal@mathcodes{% \Umathcode`A=0+\M@cal@num"1D49C\relax \Umathcode`B=0+\M@cal@num"212C\relax \Umathcode`C=0+\M@cal@num"1D49E\relax \Umathcode`D=0+\M@cal@num"1D49F\relax \Umathcode`E=0+\M@cal@num"2130\relax \Umathcode`F=0+\M@cal@num"2131\relax \Umathcode`G=0+\M@cal@num"1D4A2\relax \Umathcode`H=0+\M@cal@num"210B\relax \Umathcode`I=0+\M@cal@num"2110\relax \Umathcode`J=0+\M@cal@num"1D4A5\relax \Umathcode`K=0+\M@cal@num"1D4A6\relax \Umathcode`L=0+\M@cal@num"2112\relax \Umathcode`M=0+\M@cal@num"2133\relax \Umathcode`N=0+\M@cal@num"1D4A9\relax \Umathcode`O=0+\M@cal@num"1D4AA\relax \Umathcode`P=0+\M@cal@num"1D4AB\relax \Umathcode`Q=0+\M@cal@num"1D4AC\relax \Umathcode`R=0+\M@cal@num"211B\relax \Umathcode`S=0+\M@cal@num"1D4AE\relax \Umathcode`T=0+\M@cal@num"1D4AF\relax \Umathcode`U=0+\M@cal@num"1D4B0\relax \Umathcode`V=0+\M@cal@num"1D4B1\relax \Umathcode`W=0+\M@cal@num"1D4B2\relax \Umathcode`X=0+\M@cal@num"1D4B3\relax \Umathcode`Y=0+\M@cal@num"1D4B4\relax \Umathcode`Z=0+\M@cal@num"1D4B5\relax \Umathcode`a=0+\M@cal@num"1D4B6\relax \Umathcode`b=0+\M@cal@num"1D4B7\relax \Umathcode`c=0+\M@cal@num"1D4B8\relax \Umathcode`d=0+\M@cal@num"1D4B9\relax \Umathcode`e=0+\M@cal@num"212F\relax \Umathcode`f=0+\M@cal@num"1D4BB\relax \Umathcode`g=0+\M@cal@num"210A\relax \Umathcode`h=0+\M@cal@num"1D4BD\relax \Umathcode`i=0+\M@cal@num"1D4BE\relax \Umathcode`j=0+\M@cal@num"1D4BF\relax \Umathcode`k=0+\M@cal@num"1D4C0\relax \Umathcode`l=0+\M@cal@num"1D4C1\relax \Umathcode`m=0+\M@cal@num"1D4C2\relax \Umathcode`n=0+\M@cal@num"1D4C3\relax \Umathcode`o=0+\M@cal@num"2134\relax \Umathcode`p=0+\M@cal@num"1D4C5\relax \Umathcode`q=0+\M@cal@num"1D4C6\relax \Umathcode`r=0+\M@cal@num"1D4C7\relax \Umathcode`s=0+\M@cal@num"1D4C8\relax \Umathcode`t=0+\M@cal@num"1D4C9\relax \Umathcode`u=0+\M@cal@num"1D4CA\relax \Umathcode`v=0+\M@cal@num"1D4CB\relax \Umathcode`w=0+\M@cal@num"1D4CC\relax \Umathcode`x=0+\M@cal@num"1D4CD\relax \Umathcode`y=0+\M@cal@num"1D4CE\relax \Umathcode`z=0+\M@cal@num"1D4CF\relax}} \def\M@frak@set{% \protected\def\mathfrak##1{\relax \ifmmode\else \M@HModeError\mathfrak $% \fi \begingroup \M@frak@mathcodes ##1% \endgroup} \edef\M@frak@num{\number\csname symM\M@frakshape\@tempa\endcsname} \protected\edef\M@frak@mathcodes{% \Umathcode`A=0+\M@frak@num"1D504\relax \Umathcode`B=0+\M@frak@num"1D505\relax \Umathcode`C=0+\M@frak@num"212D\relax \Umathcode`D=0+\M@frak@num"1D507\relax \Umathcode`E=0+\M@frak@num"1D508\relax \Umathcode`F=0+\M@frak@num"1D509\relax \Umathcode`G=0+\M@frak@num"1D50A\relax \Umathcode`H=0+\M@frak@num"210C\relax \Umathcode`I=0+\M@frak@num"2111\relax \Umathcode`J=0+\M@frak@num"1D50D\relax \Umathcode`K=0+\M@frak@num"1D50E\relax \Umathcode`L=0+\M@frak@num"1D50F\relax \Umathcode`M=0+\M@frak@num"1D510\relax \Umathcode`N=0+\M@frak@num"1D511\relax \Umathcode`O=0+\M@frak@num"1D512\relax \Umathcode`P=0+\M@frak@num"1D513\relax \Umathcode`Q=0+\M@frak@num"1D514\relax \Umathcode`R=0+\M@frak@num"211C\relax \Umathcode`S=0+\M@frak@num"1D516\relax \Umathcode`T=0+\M@frak@num"1D517\relax \Umathcode`U=0+\M@frak@num"1D518\relax \Umathcode`V=0+\M@frak@num"1D519\relax \Umathcode`W=0+\M@frak@num"1D51A\relax \Umathcode`X=0+\M@frak@num"1D51B\relax \Umathcode`Y=0+\M@frak@num"1D51C\relax \Umathcode`Z=0+\M@frak@num"2128\relax \Umathcode`a=0+\M@frak@num"1D51E\relax \Umathcode`b=0+\M@frak@num"1D51F\relax \Umathcode`c=0+\M@frak@num"1D520\relax \Umathcode`d=0+\M@frak@num"1D521\relax \Umathcode`e=0+\M@frak@num"1D522\relax \Umathcode`f=0+\M@frak@num"1D523\relax \Umathcode`g=0+\M@frak@num"1D524\relax \Umathcode`h=0+\M@frak@num"1D525\relax \Umathcode`i=0+\M@frak@num"1D526\relax \Umathcode`j=0+\M@frak@num"1D527\relax \Umathcode`k=0+\M@frak@num"1D528\relax \Umathcode`l=0+\M@frak@num"1D529\relax \Umathcode`m=0+\M@frak@num"1D52A\relax \Umathcode`n=0+\M@frak@num"1D52B\relax \Umathcode`o=0+\M@frak@num"1D52C\relax \Umathcode`p=0+\M@frak@num"1D52D\relax \Umathcode`q=0+\M@frak@num"1D52E\relax \Umathcode`r=0+\M@frak@num"1D52F\relax \Umathcode`s=0+\M@frak@num"1D530\relax \Umathcode`t=0+\M@frak@num"1D531\relax \Umathcode`u=0+\M@frak@num"1D532\relax \Umathcode`v=0+\M@frak@num"1D533\relax \Umathcode`w=0+\M@frak@num"1D534\relax \Umathcode`x=0+\M@frak@num"1D535\relax \Umathcode`y=0+\M@frak@num"1D536\relax \Umathcode`z=0+\M@frak@num"1D537\relax}} \def\M@bcal@set{% \protected\def\mathbcal##1{\relax \ifmmode\else \M@HModeError\mathbcal $% \fi \begingroup \M@bcal@mathcodes ##1% \endgroup} \edef\M@bcal@num{\number\csname symM\M@bcalshape\@tempa\endcsname} \protected\edef\M@bcal@mathcodes{% \Umathcode`A=0+\M@bcal@num"1D4D0\relax \Umathcode`B=0+\M@bcal@num"1D4D1\relax \Umathcode`C=0+\M@bcal@num"1D4D2\relax \Umathcode`D=0+\M@bcal@num"1D4D3\relax \Umathcode`E=0+\M@bcal@num"1D4D4\relax \Umathcode`F=0+\M@bcal@num"1D4D5\relax \Umathcode`G=0+\M@bcal@num"1D4D6\relax \Umathcode`H=0+\M@bcal@num"1D4D7\relax \Umathcode`I=0+\M@bcal@num"1D4D8\relax \Umathcode`J=0+\M@bcal@num"1D4D9\relax \Umathcode`K=0+\M@bcal@num"1D4DA\relax \Umathcode`L=0+\M@bcal@num"1D4DB\relax \Umathcode`M=0+\M@bcal@num"1D4DC\relax \Umathcode`N=0+\M@bcal@num"1D4DD\relax \Umathcode`O=0+\M@bcal@num"1D4DE\relax \Umathcode`P=0+\M@bcal@num"1D4DF\relax \Umathcode`Q=0+\M@bcal@num"1D4E0\relax \Umathcode`R=0+\M@bcal@num"1D4E1\relax \Umathcode`S=0+\M@bcal@num"1D4E2\relax \Umathcode`T=0+\M@bcal@num"1D4E3\relax \Umathcode`U=0+\M@bcal@num"1D4E4\relax \Umathcode`V=0+\M@bcal@num"1D4E5\relax \Umathcode`W=0+\M@bcal@num"1D4E6\relax \Umathcode`X=0+\M@bcal@num"1D4E7\relax \Umathcode`Y=0+\M@bcal@num"1D4E8\relax \Umathcode`Z=0+\M@bcal@num"1D4E9\relax \Umathcode`a=0+\M@bcal@num"1D4EA\relax \Umathcode`b=0+\M@bcal@num"1D4EB\relax \Umathcode`c=0+\M@bcal@num"1D4EC\relax \Umathcode`d=0+\M@bcal@num"1D4ED\relax \Umathcode`e=0+\M@bcal@num"1D4EE\relax \Umathcode`f=0+\M@bcal@num"1D4EF\relax \Umathcode`g=0+\M@bcal@num"1D4F0\relax \Umathcode`h=0+\M@bcal@num"1D4F1\relax \Umathcode`i=0+\M@bcal@num"1D4F2\relax \Umathcode`j=0+\M@bcal@num"1D4F3\relax \Umathcode`k=0+\M@bcal@num"1D4F4\relax \Umathcode`l=0+\M@bcal@num"1D4F5\relax \Umathcode`m=0+\M@bcal@num"1D4F6\relax \Umathcode`n=0+\M@bcal@num"1D4F7\relax \Umathcode`o=0+\M@bcal@num"1D4F8\relax \Umathcode`p=0+\M@bcal@num"1D4F9\relax \Umathcode`q=0+\M@bcal@num"1D4FA\relax \Umathcode`r=0+\M@bcal@num"1D4FB\relax \Umathcode`s=0+\M@bcal@num"1D4FC\relax \Umathcode`t=0+\M@bcal@num"1D4FD\relax \Umathcode`u=0+\M@bcal@num"1D4FE\relax \Umathcode`v=0+\M@bcal@num"1D4FF\relax \Umathcode`w=0+\M@bcal@num"1D500\relax \Umathcode`x=0+\M@bcal@num"1D501\relax \Umathcode`y=0+\M@bcal@num"1D502\relax \Umathcode`z=0+\M@bcal@num"1D503\relax}} \def\M@bfrak@set{% \protected\def\mathbfrak##1{\relax \ifmmode\else \M@HModeError\mathbfrak $% \fi \begingroup \M@bfrak@mathcodes ##1% \endgroup} \edef\M@bfrak@num{\number\csname symM\M@bfrakshape\@tempa\endcsname} \protected\edef\M@bfrak@mathcodes{% \Umathcode`A=0+\M@bfrak@num"1D56C\relax \Umathcode`B=0+\M@bfrak@num"1D56D\relax \Umathcode`C=0+\M@bfrak@num"1D56E\relax \Umathcode`D=0+\M@bfrak@num"1D56F\relax \Umathcode`E=0+\M@bfrak@num"1D570\relax \Umathcode`F=0+\M@bfrak@num"1D571\relax \Umathcode`G=0+\M@bfrak@num"1D572\relax \Umathcode`H=0+\M@bfrak@num"1D573\relax \Umathcode`I=0+\M@bfrak@num"1D574\relax \Umathcode`J=0+\M@bfrak@num"1D575\relax \Umathcode`K=0+\M@bfrak@num"1D576\relax \Umathcode`L=0+\M@bfrak@num"1D577\relax \Umathcode`M=0+\M@bfrak@num"1D578\relax \Umathcode`N=0+\M@bfrak@num"1D579\relax \Umathcode`O=0+\M@bfrak@num"1D57A\relax \Umathcode`P=0+\M@bfrak@num"1D57B\relax \Umathcode`Q=0+\M@bfrak@num"1D57C\relax \Umathcode`R=0+\M@bfrak@num"1D57D\relax \Umathcode`S=0+\M@bfrak@num"1D57E\relax \Umathcode`T=0+\M@bfrak@num"1D57F\relax \Umathcode`U=0+\M@bfrak@num"1D580\relax \Umathcode`V=0+\M@bfrak@num"1D581\relax \Umathcode`W=0+\M@bfrak@num"1D582\relax \Umathcode`X=0+\M@bfrak@num"1D583\relax \Umathcode`Y=0+\M@bfrak@num"1D584\relax \Umathcode`Z=0+\M@bfrak@num"1D585\relax \Umathcode`a=0+\M@bfrak@num"1D586\relax \Umathcode`b=0+\M@bfrak@num"1D587\relax \Umathcode`c=0+\M@bfrak@num"1D588\relax \Umathcode`d=0+\M@bfrak@num"1D589\relax \Umathcode`e=0+\M@bfrak@num"1D58A\relax \Umathcode`f=0+\M@bfrak@num"1D58B\relax \Umathcode`g=0+\M@bfrak@num"1D58C\relax \Umathcode`h=0+\M@bfrak@num"1D58D\relax \Umathcode`i=0+\M@bfrak@num"1D58E\relax \Umathcode`j=0+\M@bfrak@num"1D58F\relax \Umathcode`k=0+\M@bfrak@num"1D590\relax \Umathcode`l=0+\M@bfrak@num"1D591\relax \Umathcode`m=0+\M@bfrak@num"1D592\relax \Umathcode`n=0+\M@bfrak@num"1D593\relax \Umathcode`o=0+\M@bfrak@num"1D594\relax \Umathcode`p=0+\M@bfrak@num"1D595\relax \Umathcode`q=0+\M@bfrak@num"1D596\relax \Umathcode`r=0+\M@bfrak@num"1D597\relax \Umathcode`s=0+\M@bfrak@num"1D598\relax \Umathcode`t=0+\M@bfrak@num"1D599\relax \Umathcode`u=0+\M@bfrak@num"1D59A\relax \Umathcode`v=0+\M@bfrak@num"1D59B\relax \Umathcode`w=0+\M@bfrak@num"1D59C\relax \Umathcode`x=0+\M@bfrak@num"1D59D\relax \Umathcode`y=0+\M@bfrak@num"1D59E\relax \Umathcode`z=0+\M@bfrak@num"1D59F\relax}} \endinput %% %% End of file `mathfont.sty'.