texlive[74846] Master/texmf-dist: mathfont (4apr25)
commits+karl at tug.org
commits+karl at tug.org
Fri Apr 4 22:57:38 CEST 2025
Revision: 74846
https://tug.org/svn/texlive?view=revision&revision=74846
Author: karl
Date: 2025-04-04 22:57:38 +0200 (Fri, 04 Apr 2025)
Log Message:
-----------
mathfont (4apr25)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/mathfont/README.txt
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_code.pdf
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_doc_patch.tex
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_equations.tex
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_cormorant.pdf
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_cormorant.tex
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_kelvinch.pdf
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_kelvinch.tex
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_roboto.pdf
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_roboto.tex
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_typey.pdf
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_typey.tex
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_heading.tex
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_symbol_list.pdf
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_symbol_list.tex
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_user_guide.tex
trunk/Master/texmf-dist/source/latex/mathfont/mathfont_code.dtx
trunk/Master/texmf-dist/tex/latex/mathfont/mathfont.sty
Added Paths:
-----------
trunk/Master/texmf-dist/doc/latex/mathfont/user_guide/
trunk/Master/texmf-dist/doc/latex/mathfont/user_guide/mathfont_user_guide.pdf
Removed Paths:
-------------
trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_user_guide.pdf
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/mathfont/README.txt 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/doc/latex/mathfont/README.txt 2025-04-04 20:57:38 UTC (rev 74846)
@@ -1,18 +1,18 @@
- LaTeX Package mathfont v. 2.3
+ LaTeX Package mathfont v. 2.4
Installation Guide/README
Conrad Kosowsky
+This file is README.txt from version 2.4 of the free and
+open-source LaTeX package "mathfont," released April 2025,
+to be used with the XeTeX or LuaTeX engines. The package
+is designed to adapt text fonts for use in math mode. See
+the user guide for more information. See below for license
+and installation instructions.
-This file is README.txt from version 2.3 of the free and
-open-source LaTeX package "mathfont," to be used with the
-XeTeX or LuaTeX engines. The package is designed to adapt
-text fonts for use in math mode. See the user guide for
-more information. See below for installation instructions.
-
*********************************************************
-To install mathfont automatically, update your TeXLive or
-MacTeX distribution or use a package manager such as tlmgr.
+To install mathfont automatically, update your TeX
+distribution or use a package manager such as tlmgr.
To install mathfont manually requires two steps as follows.
@@ -58,7 +58,7 @@
*********************************************************
-Copyright 2018-2023 by Conrad Kosowsky
+Copyright 2018-2023, 2025 by Conrad Kosowsky
This Work may be used, distributed, and modified under the
terms of the LaTeX Public Project License, version 1.3c or
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_code.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_doc_patch.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_doc_patch.tex 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_doc_patch.tex 2025-04-04 20:57:38 UTC (rev 74846)
@@ -6,12 +6,12 @@
%%
%% mathfont_code.dtx (with options: `doc')
%%
-%% This file is from version 2.3 of the free and open-source
-%% LaTeX package "mathfont," released September 2023, to be used
+%% This file is from version 2.4 of the free and open-source
+%% LaTeX package "mathfont," released April 2025, to be used
%% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
%% is recommended.)
%%
-%% Copyright 2018-2023 by Conrad Kosowsky
+%% Copyright 2018-2023, 2025 Conrad Kosowsky
%%
%% This Work may be used, distributed, and modified under the
%% terms of the LaTeX Public Project License, version 1.3c or
@@ -67,6 +67,8 @@
\MacrocodeTopsep=2.5pt plus 3pt minus 1pt
\def\@defname{def}
\def\@edefname{edef}
+\def\@gdefname{gdef}
+\def\@xdefname{xdef}
\def\@letname{let}
\let\main\textbf
@@ -76,6 +78,25 @@
\def\do at not@index at main#1{\egroup
\index at nomainlist\expandafter{\the\index at nomainlist#1,}}
+\reversemarginpar
+\@mparswitchfalse
+\marginparsep=0.5em
+\newbox\@tempboxb
+\newbox\macrobox
+\marginparwidth=\dimexpr1.5in-2\marginparsep\relax
+
+\def\marginmacro#1\@nil{\begingroup\footnotesize
+ \setbox\macrobox\vbox{}\relax
+ \setbox\@tempboxa\hbox{\@backslashchar}\relax
+ \@tfor\@i:=#1\do
+ {\setbox\@tempboxb\hbox{\@i}\relax
+ \ifdim\dimexpr\wd\@tempboxa+\wd\@tempboxb\relax
+ <\marginparwidth
+ \setbox\@tempboxa\hbox{\unhbox\@tempboxa\unhbox\@tempboxb}\else
+ \@break at tfor\fi}\relax
+ \let\par\relax
+ \marginpar{\hb at xt@\marginparwidth{\hfil\unhbox\@tempboxa}}\endgroup}
+
\def\macro at finish{\macro at namepart
\if at def
\@deffalse
@@ -88,6 +109,7 @@
\@tempa
\else
\edef\@tempa{\noexpand\SpecialMainIndex{\bslash\macro at namepart}}\relax
+ \expandafter\marginmacro\macro at namepart\@nil
\@tempa
\fi
\fi
@@ -100,6 +122,14 @@
\else
\ifx\macro at namepart\@letname
\@deftrue
+ \else
+ \ifx\macro at namepart\@gdefname
+ \@deftrue
+ \else
+ \ifx\macro at namepart\@xdefname
+ \@deftrue
+ \fi
+ \fi
\fi
\fi
\fi
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_equations.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_equations.tex 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_equations.tex 2025-04-04 20:57:38 UTC (rev 74846)
@@ -6,12 +6,12 @@
%%
%% mathfont_code.dtx (with options: `equations')
%%
-%% This file is from version 2.3 of the free and open-source
-%% LaTeX package "mathfont," released September 2023, to be used
+%% This file is from version 2.4 of the free and open-source
+%% LaTeX package "mathfont," released April 2025, to be used
%% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
%% is recommended.)
%%
-%% Copyright 2018-2023 by Conrad Kosowsky
+%% Copyright 2018-2023, 2025 Conrad Kosowsky
%%
%% This Work may be used, distributed, and modified under the
%% terms of the LaTeX Public Project License, version 1.3c or
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_cormorant.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_cormorant.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_cormorant.tex 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_cormorant.tex 2025-04-04 20:57:38 UTC (rev 74846)
@@ -6,12 +6,12 @@
%%
%% mathfont_code.dtx (with options: `cormorant')
%%
-%% This file is from version 2.3 of the free and open-source
-%% LaTeX package "mathfont," released September 2023, to be used
+%% This file is from version 2.4 of the free and open-source
+%% LaTeX package "mathfont," released April 2025, to be used
%% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
%% is recommended.)
%%
-%% Copyright 2018-2023 by Conrad Kosowsky
+%% Copyright 2018-2023, 2025 Conrad Kosowsky
%%
%% This Work may be used, distributed, and modified under the
%% terms of the LaTeX Public Project License, version 1.3c or
@@ -81,7 +81,6 @@
\setfont{Cormorant:-liga}
\RuleThicknessFactor{600}
\DeclareMathSymbol{\nabla}{\mathord}{Mupright0}{"2207}
-\DeclareMathSymbol{\nabla}{\mathord}{Mupright0}{"2207}
\parindent=0pt\relax
\begin{document}
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_kelvinch.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_kelvinch.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_kelvinch.tex 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_kelvinch.tex 2025-04-04 20:57:38 UTC (rev 74846)
@@ -6,12 +6,12 @@
%%
%% mathfont_code.dtx (with options: `kelvinch')
%%
-%% This file is from version 2.3 of the free and open-source
-%% LaTeX package "mathfont," released September 2023, to be used
+%% This file is from version 2.4 of the free and open-source
+%% LaTeX package "mathfont," released April 2025, to be used
%% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
%% is recommended.)
%%
-%% Copyright 2018-2023 by Conrad Kosowsky
+%% Copyright 2018-2023, 2025 Conrad Kosowsky
%%
%% This Work may be used, distributed, and modified under the
%% terms of the LaTeX Public Project License, version 1.3c or
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_roboto.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_roboto.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_roboto.tex 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_roboto.tex 2025-04-04 20:57:38 UTC (rev 74846)
@@ -6,12 +6,12 @@
%%
%% mathfont_code.dtx (with options: `roboto')
%%
-%% This file is from version 2.3 of the free and open-source
-%% LaTeX package "mathfont," released September 2023, to be used
+%% This file is from version 2.4 of the free and open-source
+%% LaTeX package "mathfont," released April 2025, to be used
%% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
%% is recommended.)
%%
-%% Copyright 2018-2023 by Conrad Kosowsky
+%% Copyright 2018-2023, 2025 Conrad Kosowsky
%%
%% This Work may be used, distributed, and modified under the
%% terms of the LaTeX Public Project License, version 1.3c or
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_typey.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_typey.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_typey.tex 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_example_typey.tex 2025-04-04 20:57:38 UTC (rev 74846)
@@ -6,12 +6,12 @@
%%
%% mathfont_code.dtx (with options: `typey')
%%
-%% This file is from version 2.3 of the free and open-source
-%% LaTeX package "mathfont," released September 2023, to be used
+%% This file is from version 2.4 of the free and open-source
+%% LaTeX package "mathfont," released April 2025, to be used
%% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
%% is recommended.)
%%
-%% Copyright 2018-2023 by Conrad Kosowsky
+%% Copyright 2018-2023, 2025 Conrad Kosowsky
%%
%% This Work may be used, distributed, and modified under the
%% terms of the LaTeX Public Project License, version 1.3c or
@@ -111,8 +111,8 @@
\setfont{Typey}
\mathfont[]{STIXGeneral}
-\DeclareSymbolFont{Mroman2}{TU}{STIXGeneral}{m}{n}
-\DeclareMathSymbol{\otimes}{\mathbin}{Mroman2}{"2297}
+\DeclareSymbolFont{stix}{TU}{STIXGeneral}{m}{n}
+\DeclareMathSymbol{\otimes}{\mathbin}{stix}{"2297}
\RuleThicknessFactor{1300}
\SurdHorizontalFactor{860}
\parindent=0pt\relax
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_heading.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_heading.tex 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_heading.tex 2025-04-04 20:57:38 UTC (rev 74846)
@@ -6,12 +6,12 @@
%%
%% mathfont_code.dtx (with options: `heading')
%%
-%% This file is from version 2.3 of the free and open-source
-%% LaTeX package "mathfont," released September 2023, to be used
+%% This file is from version 2.4 of the free and open-source
+%% LaTeX package "mathfont," released April 2025, to be used
%% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
%% is recommended.)
%%
-%% Copyright 2018-2023 by Conrad Kosowsky
+%% Copyright 2018-2023, 2025 Conrad Kosowsky
%%
%% This Work may be used, distributed, and modified under the
%% terms of the LaTeX Public Project License, version 1.3c or
@@ -63,12 +63,16 @@
\csname count@\endcsname\catcode`\@
\makeatletter
-\def\packagedate{September 2023}
-\def\packageversion{2.3}
+\def\packagedate{April 2025}
+\def\packageversion{2.4}
-
\let\@@section\section
-\def\section{\@ifstar\star at sect\no at star@sect}
+\def\section{%
+ \vskip0.6in\relax
+ \kern\z@
+ \vskip-0.6in\relax
+ \vskip\z@
+ \@ifstar\star at sect\no at star@sect}
\def\star at sect#1{\@@section*{#1}\section at name{#1}}
\def\no at star@sect#1{\@@section{#1}\section at name{#1}}
\def\section at name#1{\expandafter
@@ -75,14 +79,19 @@
\def\csname section@\thesection\endcsname{#1}}
\def\sectionname{\csname section@\thesection\endcsname}
-\def\@oddhead{\ifnum\count0>1\relax
- \rlap{\textit{\sectionname}}\hfil
- \hbox to 0pt{\hss\documentname\hss}\hfil
- \llap{\the\count0}\fi}
-\def\@evenhead{\ifnum\count0>1\relax
- \rlap{\the\count0}\hfil
- \hbox to 0pt{\hss\documentname\hss}\hfil
- \llap{\textit{\sectionname}}\fi}
+\def\@oddhead{\ifnum\c at page>\@ne
+ \ifodd\c at page
+ \rlap{\textit{\sectionname}}\hfil
+ \hbox to 0pt{\hss\documentname\hss}\hfil
+ \llap{\the\c at page}\relax
+ \else
+ \rlap{\the\c at page}\hfil
+ \hb at xt@\z@{\hss\documentname\hss}\hfil
+ \llap{\textit{\sectionname}}\relax
+ \fi
+ \else
+ \hfil
+ \fi}
\def\@oddfoot{\hfil\ifnum\count0=1\relax1\fi\hfil}
\let\@evenfoot\@empty
@@ -95,18 +104,19 @@
\finalhyphendemerits=300
\doublehyphendemerits=500
-\protected\def\XeTeX{X\kern-0.1em
- \raise-0.5ex\hbox{\rotatebox[origin=c]{180}{E}}\kern-0.15em
+\flushbottom
+
+\protected\def\XeTeX{X\kern-0.125em
+ \raise-0.5ex\hbox{\reflectbox{E}}\kern-0.1667em
\TeX}
-\protected\def\XeLaTeX{X\kern-0.1em
- \raise-0.5ex\hbox{\rotatebox[origin=c]{180}{E}}\kern-0.13em
+\protected\def\XeLaTeX{X\kern-0.125em
+ \raise-0.5ex\hbox{\reflectbox{E}}\kern-0.125em
\LaTeX}
\bgroup
- \count@\catcode`\|
\catcode`\|=12\relax
\gdef\indexpage#1{\index{#1|usage}}
\egroup
-\protected\def\usage#1{\textit{#1}}
+\protected\def\usage#1{\textit{p.~#1}}
\bgroup
\catcode`\_=12
\protected\gdef\fontspeccommand{\texttt{\string\fontspec_set_family:Nnn}}
@@ -152,7 +162,7 @@
\noindent\printchars\loweralphabet\par}
{\large\parindent=0pt\leftskip=0pt plus 1 fil\rightskip=0pt plus 1fil\parfillskip=0pt
-{\strut\Large Package \textsf{mathfont} v.\ \packageversion\ \documentname\let\thefootnote\relax\footnote{Acknowledgements: Thanks to Lyric Bingham for her work checking my unicode hex values. Thanks to Shyam Sundar, Adrian Vollmer, Herbert Voss, and Andreas Zidak for pointing out bugs in previous versions of \textsf{mathfont}. Thanks to Jean-Fran\c cois Burnol for pointing out an error in the documentation in reference to his \textsf{mathastext} package.}\global\advance\c at footnote\m at ne}\par
+{\strut\Large Package \textsf{mathfont} v.\ \packageversion\ \documentname\let\thefootnote\relax\footnote{Acknowledgements: Thanks to Lyric Bingham for her work checking my unicode hex values. Thanks to Daniel Flipo, Shyam Sundar, Adrian Vollmer, Herbert Voss, and Andreas Zidak for pointing out bugs in previous versions of \textsf{mathfont}. Thanks to Jean-Fran\c cois Burnol for pointing out an error in the documentation in reference to his \textsf{mathastext} package.}\global\advance\c at footnote\m at ne}\par
{\strut Conrad Kosowsky}\par
{\strut\packagedate}\par
{\strut\ttfamily kosowsky.latex at gmail.com}\par}
@@ -162,7 +172,7 @@
\ifnum\showabstract=1\relax
\hrule height \p@\hbox{\vrule width \p@\kern-\p@\relax\vbox{\medskip
-{\leftskip=1.4in\rightskip=1.4in
+{\leftskip=0.8in\rightskip=0.8in
\noindent\strut For easy, off-the-shelf use, type the following in your preamble and compile with \XeLaTeX\ or Lua\LaTeX:\par
\medskip
\vbox{\noindent\hfil{|\usepackage[|\meta{font name}|]{mathfont}|}\hfil}
@@ -173,12 +183,10 @@
\bigskip
{\small
+\leftskip=0.5in\relax
+\rightskip=0.5in\relax
\centerline{\bfseries Overview\strut}
-\smallskip
-
-\leftskip=0.5in\relax
-\rightskip=0.5in\relax
\noindent The \textsf{mathfont} package adapts unicode text fonts for math mode. The package allows the user to specify a default unicode font for different classes of math symbols, and it provides tools to change the font locally for math alphabet characters. When typesetting with Lua\TeX, \textsf{mathfont} adds resizable delimiters, big operators, and a MathConstants table to text fonts.\par}
\bigskip\bigskip\nointerlineskip
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_symbol_list.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_symbol_list.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_symbol_list.tex 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_symbol_list.tex 2025-04-04 20:57:38 UTC (rev 74846)
@@ -6,12 +6,12 @@
%%
%% mathfont_code.dtx (with options: `chars')
%%
-%% This file is from version 2.3 of the free and open-source
-%% LaTeX package "mathfont," released September 2023, to be used
+%% This file is from version 2.4 of the free and open-source
+%% LaTeX package "mathfont," released April 2025, to be used
%% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
%% is recommended.)
%%
-%% Copyright 2018-2023 by Conrad Kosowsky
+%% Copyright 2018-2023, 2025 Conrad Kosowsky
%%
%% This Work may be used, distributed, and modified under the
%% terms of the LaTeX Public Project License, version 1.3c or
@@ -59,7 +59,7 @@
%%
%% For more information, see mathfont_code.dtx. Happy TeXing!
%%
-\documentclass[12pt,twoside]{article}
+\documentclass[12pt]{article}
\makeatletter
\usepackage[margin=72.27pt]{geometry}
\usepackage{tabularx}
@@ -97,7 +97,7 @@
\def\showabstract{1}
\input mathfont_heading.tex
-The \textsf{mathfont} package provides tools to access several hundred characters for math typesetting, and this document lists these symbols along with the control sequences to access them. To get access to the symbols from a section of this document, call |\mathfont| with the keyword-option for that section and the name of a font that contains those symbols. The package does not define any math symbols until you call |\mathfont| or |\setfont| (or load \textsf{mathfont} with a font name as package option), and if you see a symbol or control sequence here that is not part of standard \LaTeX, you will not be able to access it until you call |\mathfont| on the corresponding keyword. Further, \textsf{mathfont} does not come with or load any fonts by itself, so you are responsible for the fonts. Not all fonts contain all math symbols, so choose your font wisely!\footnote{Besides letters and digits, most unicode text fonts should contain diacritics, delimiters, and the basic math characters in the keyword |symbols|. Text fonts will often contain square root and basic operator symbols, but they may not be suitable for math typesetting. Greek characters are hit or miss, and it is unusual for English text fonts to contain Cyrillic, Hebrew, ancient Greek, arrows, letterlike characters, or any extended (keywords |extbigops| and |extsymbols|) set of symbols. After you load \textsf{mathfont}, \TeX\ will print a message to the terminal if you try to typeset a missing character from some font.} This document shows ancient Greek in Crimson, Hebrew in Coelacanth, and all other math characters in STIXGeneral.
+\noindent The \textsf{mathfont} package provides tools to access several hundred characters for math typesetting, and this document lists these symbols along with the control sequences to access them. To get access to the symbols from a section of this document, call |\mathfont| with the keyword-option for that section and the name of a font that contains those symbols. The package does not define any math symbols until you call |\mathfont| or |\setfont| (or load \textsf{mathfont} with a font name as package option), and if you see a symbol or control sequence here that is not part of standard \LaTeX, you will not be able to access it until you call |\mathfont| on the corresponding keyword. Further, \textsf{mathfont} does not come with or load any fonts by itself, so you are responsible for the fonts. Not all fonts contain all math symbols, so choose your font wisely!\footnote{Besides letters and digits, most unicode text fonts should contain diacritics, delimiters, and the basic math characters in the keyword |symbols|. Text fonts will often contain square root and basic operator symbols, but they may not be suitable for math typesetting. Greek characters are hit or miss, and it is unusual for English text fonts to contain Cyrillic, Hebrew, ancient Greek, arrows, letterlike characters, or any extended (keywords |extbigops| and |extsymbols|) set of symbols. After you load \textsf{mathfont}, \TeX\ will print a message to the terminal if you try to typeset a missing character from some font.} This document shows ancient Greek in Crimson, Hebrew in Coelacanth, and all other math characters in STIXGeneral.
\begin{figure}[t]
\centerline{\bfseries Table 1: Characters Defined by Multiple Keywords\strut}
@@ -737,6 +737,10 @@
\blockheader{arrows}{Arrow}
\begin{multicols}{2}
+ \def\hook{\footnote{Both \vrb\relbar\space and \vrb\Relbar\space are helper macros that certain packages use to elongate various horizontal arrows.}}
+\charexample\relbar
+ \let\hook\relax
+\charexample\Relbar
\charexample\rightarrow
\charexample\to
\charexample\nrightarrow
Deleted: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_user_guide.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_user_guide.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_user_guide.tex 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/doc/latex/mathfont/mathfont_user_guide.tex 2025-04-04 20:57:38 UTC (rev 74846)
@@ -6,12 +6,12 @@
%%
%% mathfont_code.dtx (with options: `user')
%%
-%% This file is from version 2.3 of the free and open-source
-%% LaTeX package "mathfont," released September 2023, to be used
+%% This file is from version 2.4 of the free and open-source
+%% LaTeX package "mathfont," released April 2025, to be used
%% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
%% is recommended.)
%%
-%% Copyright 2018-2023 by Conrad Kosowsky
+%% Copyright 2018-2023, 2025 Conrad Kosowsky
%%
%% This Work may be used, distributed, and modified under the
%% terms of the LaTeX Public Project License, version 1.3c or
@@ -59,7 +59,7 @@
%%
%% For more information, see mathfont_code.dtx. Happy TeXing!
%%
-\documentclass[12pt,twoside]{article}
+\documentclass[12pt]{article}
\makeatletter
\usepackage[margin=72.27pt]{geometry}
\usepackage[factor=700,stretch=14,shrink=14,step=1]{microtype}
@@ -91,20 +91,29 @@
\def\showabstract{1}
\input mathfont_heading.tex
-Handling fonts in \TeX\ and \LaTeX\ is a notoriously difficult task because fonts are complicated.\footnote{The last 30 years have seen huge advances in loading fonts with \TeX. Donald Knuth originally designed \TeX\ to load fonts created with Metafont, and only more recent engines such as Jonathan Kew's \XeTeX\ and Hans Hagen, et al.'s Lua\TeX\ have extended \TeX's font-loading capabilities to unicode. \XeTeX\ supports OpenType and TrueType fonts natively, and Lua\TeX\ can load OpenType fonts through the \textsf{luaotfload} package. Information on \XeTeX\ is available at \link{https://tug.org/xetex/}, and information on Lua\TeX\ is available at the official website for Lua\TeX: \link{http://www.luatex.org/}. See also Ulrike Fischer, et al., ``\textsf{luaotfload}---OpenType `loader' for Plain \TeX\ and \LaTeX,'' \link{https://ctan.org/pkg/luaotfload}. For discussion of fonts generally, see Yannis Haralambous, \textit{Fonts \& Encodings} (Sebastopol: O'Reilly Media, Inc., 2007).} The \textsf{mathfont} package loads TrueType and OpenType fonts for use in math mode, and this document explains the package's user-level commands. For version history and code implementation, see |mathfont_code.pdf|, and for a list of all symbols accessible with \textsf{mathfont}, see |mathfont_symbol_list.pdf|. The \textsf{mathfont} installation also includes four example files, and all \textsf{mathfont} pdf documentation files are available on \textsc{ctan}. Because unicode text fonts outnumber unicode math fonts, I hope that my package will expand the set of possibilities for typesetting math in \LaTeX.
+\noindent Handling fonts in \TeX\ and \LaTeX\ is a notoriously difficult task because fonts are complicated.\footnote{The last few decades have seen huge advances in loading fonts with \TeX. Donald Knuth originally designed \TeX\ to load fonts created with Metafont, and only more recent engines such as Jonathan Kew's \XeTeX\ and Hans Hagen, et al.'s Lua\TeX\ have extended \TeX's font-loading capabilities to unicode. \XeTeX\ supports OpenType and TrueType fonts natively, and Lua\TeX\ can load OpenType fonts through the \textsf{luaotfload} package. Information on \XeTeX\ is available at \link{https://tug.org/xetex/}, and information on Lua\TeX\ is available at the official website for Lua\TeX: \link{http://www.luatex.org/}. See also Ulrike Fischer, et al., ``\textsf{luaotfload}---OpenType `loader' for Plain \TeX\ and \LaTeX,'' \link{https://ctan.org/pkg/luaotfload}. For discussion of fonts generally, see Yannis Haralambous, \textit{Fonts \& Encodings} (Sebastopol: O'Reilly Media, Inc., 2007).} The \textsf{mathfont} package addresses this situation by providing tools to load TrueType and OpenType fonts for use in math mode, and this document explains how to operate \textsf{mathfont}. For version history and code implementation, see |mathfont_code.pdf|, and for a list of all symbols accessible with \textsf{mathfont}, see |mathfont_symbol_list.pdf|. Those two pdf files, this user guide, and four example files are included in the \textsf{mathfont} installation and are available on \textsc{ctan}. Because unicode text fonts, particularly without built-in math support, are plentiful, I hope that this package expands the possibilities for typesetting math in \LaTeX.
\section{Loading and Basic Functionality}
Loading fonts for math typesetting is more complicated than for regular text. First, selecting fonts for math mode, both in plain \TeX\ and in the \textsc{nfss}, involves additional macros above and beyond what we need to load text fonts. Second, \TeX\ expects fonts for math to contain extra information for formatting equations.\footnote{Specifically, this extra information is a set of large variants, math-specific parameter values associated with individual characters, and a MathConstants table. Also, math fonts often use slightly wider bounding boxes for letters in math mode---the Computer Modern $f$ is a well-known example. (Compare math-mode {\fboxsep=0pt\fbox{$f$}} and italic {\fboxsep=0pt\fbox{\textit{f}}}.) For this reason, \textsf{mathfont} also provides an interface to enlarge the bounding boxes of Latin letters when they appear in math mode. See section 5 for details.} Broadly speaking, we say that a \textit{math font} contains this extra information, whereas a \textit{text font} does not, and typesetting math with glyphs from one or more text fonts usually results in messier equations than using a properly prepared math font. The functionality of \textsf{mathfont} then is twofold: (1) provide a wrapper around the \textsc{nfss} commands for math typesetting that serves as a high-level interface; and (2) implement Lua\TeX\ callbacks that artificially convert text fonts into math fonts at loading.\footnote{Values for MathConstants table are different from but inspired by Ulrik Vieth, ``Understanding the \AE sthetics of Math Typesetting,'' (Bacho\TeX\ Conference, 2008) and Ulrik Vieth ``OpenType Math Illuminated,'' \textit{TUGboat} 30 (2009): 22--31. See also Bogus\l aw Jackowski, ``Appendix G Illuminated,'' \textit{TUGboat} 27 (2006): 83--90.} Although \textsf{mathfont} tries its best to get your fonts right, it may run into trouble when picking fonts to load. If this happens, you should declare your font family and shapes in the \textsc{nfss} before setting any fonts with \textsf{mathfont}.
-You must use one of \XeLaTeX\ or Lua\LaTeX\ to typeset a document with \textsf{mathfont}. You can load \textsf{mathfont} with the standard |\usepackage{mathfont}| syntax, and the package accepts five optional arguments. If you use Lua\TeX, the options |adjust| or |no-adjust| will manually specify whether \textsf{mathfont} should adapt text fonts for math mode, and \textsf{mathfont} selects |adjust| by default. If you use \XeTeX, \textsf{mathfont} cannot adjust any font objects with Lua callbacks, and either of these package options will cause an error.\footnote{With \XeLaTeX, \textsf{mathfont} does not add big operators or resizable delimiters. This means you will have to use the Computer Modern defaults, load a separate math font for resizable characters, or end up with a document where large operators and delimiters do not scale like they do normally.} For this reason, using Lua\TeX\ with \textsf{mathfont} is recommended as of version 2.0. The options |default-loader| and |fontspec-loader| determine which font-loading code \textsf{mathfont} uses. If you load the package with the |default-loader| option, \textsf{mathfont} uses a built-in font-loader, and if you load the package with |fontspec-loader|, \textsf{mathfont} uses the font-loader from \textsf{fontspec}. If you load \textsf{mathfont} with any other optional argument, the package will interpret it as a font name and call |\setfont| (described in the next section) on your argument. Doing so selects that font for the text of your document and for the character classes in the upper section of Table~1.
+You must use one of \XeLaTeX\ or Lua\LaTeX\ to typeset a document with \textsf{mathfont}. You can load \textsf{mathfont} with the standard |\usepackage| syntax, and the package accepts five optional arguments. If you use Lua\TeX, the options |adjust| or |no-adjust| will manually specify whether \textsf{mathfont} should adapt text fonts for math mode, and \textsf{mathfont} selects |adjust| by default. If you use \XeTeX, \textsf{mathfont} cannot adjust any font objects with Lua callbacks, and either of these package options will cause an error.\footnote{With \XeLaTeX, \textsf{mathfont} does not add big operators or resizable delimiters. This means you will have to use the Computer Modern defaults, load a separate math font for resizable characters, or end up with a document where large operators and delimiters do not scale like they do normally.} For this reason, using Lua\TeX\ with \textsf{mathfont} is recommended as of version 2.0. The options |default-loader| and |fontspec-loader| determine which font-loading code \textsf{mathfont} uses. If you load the package with the |default-loader| option, \textsf{mathfont} uses a built-in font-loader, and if you load the package with |fontspec-loader|, \textsf{mathfont} uses the font-loader from \textsf{fontspec}. If you load \textsf{mathfont} with any other optional argument, the package will interpret it as a font name and call |\setfont| (described in the next section) on your argument. Doing so selects that font for the text of your document and for the character classes in the upper section of Table~\ref{Keywords}.
-The \textsf{mathfont} package is closely related to several other \LaTeX\ packages. The functionality is closest to that of \textsf{mathspec} by Andrew Gilbert Moschou, which is compatible with \XeTeX\ only and selects characters from text fonts for math.\footnote{Andrew Gilbert Moschou, ``\textsf{mathspec}---Specify arbitrary fonts for mathematics in \XeTeX,'' \link{https://ctan.org/pkg/mathspec}.} The \textsf{unicode-math} package is the standard \LaTeX\ package for loading actual unicode math fonts, and if you have a unicode font with proper math support, rather than a text font that you want to use for equations, consider using this package instead of \textsf{mathfont}.\footnote{Will Robertson, et al., ``\textsf{unicode-math}---Unicode mathematics support for XeTeX and LuaTeX,'' \link{https://ctan.org/pkg/unicode-math}.} Users who want a text font for math with pdf\LaTeX\ should consider Jean-Fran\c cois Burnol's \textsf{mathastext} because \textsf{mathfont} is incompatible with pdf\TeX.\footnote{Jean-Fran\c cois Burnol, ``\textsf{mathastext}---Use the text font in maths mode,'' \link{https://ctan.org/pkg/mathastext}. In several previous versions of this documentation, I mischaracterized the approach of \textsf{mathastext} to \TeX's internal mathematics spacing. In fact, \textsf{mathastext} preserves and in some cases extends rules for space between various math-mode characters.} Finally, you will probably be better off using \textsf{fontspec} if your document does not contain any math.\footnote{Will Robertson and Khaled Hosny, ``\textsf{fontspec}---Advanced font selection in \XeLaTeX\ and Lua\LaTeX,'' \link{https://ctan.org/pkg/fontspec}.} The \textsf{fontspec} package is designed to load TrueType and OpenType fonts for text and provides a high-level interface for selecting OpenType font features.
+\begin{figure}[t]\labelfig{packages}
+\centerline{\bfseries Table \the\fig: Comparison of General Font-Loading Packages\strut}
+\global\advance\fig\@ne
+\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lll}\toprule
+& Text font & Math font\\\cmidrule{2-3}
+Traditional \TeX\ font & \textsf{mathastext} & No general package\\
+Unicode font (for math typesetting) & \textsf{mathfont} or \textsf{mathspec} & \textsf{unicode-math}\\
+Unicode font (for text only) & \textsf{fontspec} & \textsf{fontspec} \\\bottomrule
+\end{tabular*}
+\end{figure}
\begin{figure}[t]\labelfig{Keywords}
\centerline{\bfseries Table \the\fig: Character Classes\strut}
\global\advance\fig by 1\relax
-\begin{tabularx}\hsize{lXll}\toprule
+\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}llll}\toprule
Keyword & Meaning & Default Shape & Alphabetic?\\\midrule
|upper| & Upper-Case Latin & Italic & Yes\\
|lower| & Lower-Case Latin & Italic & Yes\\
@@ -131,20 +140,22 @@
|bcal| & Bold Caligraphic & Upright & No\\
|bfrak| & Bold Fraktur & Upright & No\\
\bottomrule
-\end{tabularx}
+\end{tabular*}
\end{figure}
+The \textsf{mathfont} package is closely related to several other \LaTeX\ packages. The functionality is closest to that of \textsf{mathspec} by Andrew Gilbert Moschou, which is compatible with \XeTeX\ only and selects characters from text fonts for math.\footnote{Andrew Gilbert Moschou, ``\textsf{mathspec}---Specify arbitrary fonts for mathematics in \XeTeX,'' \link{https://ctan.org/pkg/mathspec}.} The \textsf{unicode-math} package is a main \LaTeX\ package for loading actual unicode math fonts, and if you have a unicode font with proper math support, rather than a text font that you want to use for equations, consider using that package instead of \textsf{mathfont}.\footnote{Will Robertson, et al., ``\textsf{unicode-math}---Unicode mathematics support for XeTeX and LuaTeX,'' \link{https://ctan.org/pkg/unicode-math}.} Users who want a text font for math with pdf\LaTeX\ should consider Jean-Fran\c cois Burnol's \textsf{mathastext} because \textsf{mathfont} is incompatible with pdf\TeX.\footnote{Jean-Fran\c cois Burnol, ``\textsf{mathastext}---Use the text font in maths mode,'' \link{https://ctan.org/pkg/mathastext}. In several previous versions of this documentation, I mischaracterized the approach of \textsf{mathastext} to \TeX's internal mathematics spacing. In fact, \textsf{mathastext} preserves and in some cases extends rules for space between various math-mode characters.} Finally, you may be better off using \textsf{fontspec} if your document does not contain any math.\footnote{Will Robertson and Khaled Hosny, ``\textsf{fontspec}---Advanced font selection in \XeLaTeX\ and Lua\LaTeX,'' \link{https://ctan.org/pkg/fontspec}.} The \textsf{fontspec} package is designed to load TrueType and OpenType fonts for text and provides a high-level interface for selecting OpenType font features. Table~\ref{packages} summarizes this information. At the time of writing this document, I am not aware of a general font-loading package for traditional \TeX\ math fonts.
+
\section{Setting the Default Font}
-The |\mathfont| command sets the default font for certain classes of characters when they appear in math mode. It accepts a single mandatory argument, which should be a system font name or a family name already present in the \textsc{nfss}. The macro also accepts an optional argument, which should be a comma-separated list of keywords from Table~\ref{Keywords}, as in
+The |\mathfont| command sets the default font for certain classes of characters when they appear in math mode. It accepts a single mandatory argument, which should be a system font name or a family name already present in the \textsc{nfss}. The macro also accepts an optional argument, which should be a comma-separated list of keywords from Table~\ref{Keywords}, so the full syntax is
\begin{code}
-|\mathfont[|\meta{keywords}|]{|\meta{font name}|}|,
+|\mathfont[|\meta{keywords}|]{|\meta{font name}|}|
\end{code}
-and \textsf{mathfont} sets the default font face for every character in those keywords to an upright or italic version of the font from the mandatory argument. See |mathfont_symbol_list.pdf| for a list of symbols corresponding to each keyword. If you do not include an optional argument, |\mathfont| acts on all keywords in the upper section of Table~1 (but not including |delimiters|, |radical|, or |bigops| characters in \XeTeX), so calling |\mathfont| with no optional argument is a fast way to change the font for most common math characters. To change the shape, you should say ``|=upright|'' or ``|=italic|'' immediately after the keyword and before the following comma, and spaces are allowed throughout the optional argument. For example, the command
+When you use this command, \textsf{mathfont} sets the default font face for every character in those keywords to an upright or italic version of the font from the mandatory argument. See |mathfont_symbol_list.pdf| for a list of symbols corresponding to each keyword. If you do not include an optional argument, |\mathfont| acts on all keywords in the upper section of Table~\ref{Keywords} (but not including |delimiters|, |radical|, or |bigops| characters in \XeTeX), so calling |\mathfont| with no optional argument is a fast way to change the font for most common math characters. To change the shape, you should say ``|=upright|'' or ``|=italic|'' immediately after the keyword and before the following comma, and spaces are allowed throughout the optional argument. For example, the command
\begin{code}
|\mathfont[lower=upright, upper=upright]{Times New Roman}|
\end{code}
-changes all Latin letters to upright Times New Roman. Once \textsf{mathfont} has set the default font for a keyword in Table~1, it will ignore any future instructions to change the font for that keyword again, and instead the package prints a warning message.
+changes all Latin letters to upright Times New Roman. Once \textsf{mathfont} has set the default font for a keyword in Table~\ref{Keywords}, it will ignore any future instructions to change the font again for that keyword, and instead the package prints a warning message.
\begin{figure}[t]
\labelfig{SetFont}
@@ -173,23 +184,23 @@
\begin{code}
|\mathfont{Adobe Garamond Pro:+onum}|
\end{code}
-for the built-in font-loader or
+with the built-in font-loader or
\begin{code}
|\mathfont{Adobe Garamond Pro:Numbers=OldStyle}|
\end{code}
if using \textsf{fontspec}. With the built-in font-loader, you should separate OpenType tags with semi-colons, and \textsf{fontspec} allows you to use commas.
-Whenever you select a font, \textsf{mathfont} first checks whether your argument corresponds to a font family identifier in the \textsc{nfss}, and if it does, \textsf{mathfont} uses that font. Otherwise, the package uses loads the font, either through the built-in font-loader or with \textsf{fontspec}. Advanced users should know that when the engine is Lua\TeX, \textsf{mathfont} loads fonts twice. During the first loading, \textsf{mathfont} makes no specifications for the renderer, so the first version of the font will typically use node mode. During the second loading, \textsf{mathfont} specifies base mode. My intention is that the font face with unspecified renderer is for text and the font face with base-mode renderer is for math---using different loading options for text and math provides the greatest access to OpenType font features throughout your document.\footnote{The \textsf{luaotfload} package supports two main modes for loading fonts: |node| mode is the default setting, and it supports full OpenType features in text but no OpenType features in math. The |base| mode supports fewer OpenType features, but the font features work in both text and math. Other loading options such as HarfBuzz are similarly useful for text but provide no access to OpenType features in math.}
+Whenever you select a font for anything in this package, \textsf{mathfont} first checks whether your argument corresponds to a font family identifier in the \textsc{nfss}, and if it does, \textsf{mathfont} uses that font.\footnote{Specifically, if you use \XeTeX, \textsf{mathfont} uses the font name as given, and if you use Lua\TeX, \textsf{mathfont} tries to use a font with family name \meta{\textup{\textsc{nfss}} family}|-base| instead. This is due to \textsf{mathfont}'s double font loading and means that if you add fonts to the \textsc{nfss} yourself in Lua\TeX\ to use with \textsf{mathfont}, you should declare the font family twice. The first declaration can be normal, and for the second declaration, you should append |-base| to the family name. If you want to use OpenType font features in your equations, the second declaration should also instruct \textsf{luaotfload} to use |base| mode. If \textsf{mathfont} doesn't see \meta{\textup{\textsc{nfss}} family}|-base| in the \textsc{nfss} in Lua\TeX, it will print a warning and use the \meta{\textup{\textsc{nfss}} family} instead.} Otherwise, the package loads the font, either through the built-in font-loader or with \textsf{fontspec}.\footnote{See |mathfont\_code.pdf| for instructions on how to access the \textsc{nfss} family name in this case.} Advanced users should know that when the engine is Lua\TeX, \textsf{mathfont} loads each font twice. During the first loading, \textsf{mathfont} makes no specifications for the renderer, so the first version of the font will typically use node mode. During the second loading, \textsf{mathfont} specifies base mode. My intention is that the font face with unspecified renderer is for text, and the font face with base mode is for math---using two different loading options provides the greatest access to OpenType font features throughout your document.\footnote{The \textsf{luaotfload} package supports two main modes for loading fonts: |node| mode is the default setting, and it supports full OpenType features in text !
but no OpenType features in math. The |base| mode supports fewer OpenType features, but the font features work in both text and math. Other loading options such as HarfBuzz are similarly useful for text but provide no access to OpenType features in math.}
-The last five keywords in Table~\ref{Keywords} are a bit different. If you call |\mathfont| on a \meta{keyword} from the last five rows in Table~\ref{Keywords}, the package defines the macro
+You have three options for accessing blackboard-bold, calligraphic, or fraktur letters. First, the Unicode standard contains encoding slots for math alphanumeric symbols including these types of letters, and the last five keywords in Table~\ref{Keywords} access this portion of the Unicode table.\footnote{The Math Alphanumeric Symbols block is U+1D400--U+1D7FF. A few blackboard-bold, calligraphic, and fraktur letters live in other areas of the Unicode table.} If you call |\mathfont| on one of these \meta{keyword}s, the package defines the macro
\begin{code}
-|\math|\meta{keyword}|{|\meta{text}|}|
+|\math|\meta{keyword}|{|\meta{text}|}|,
\end{code}
-to access them. The Unicode standard contains a block specifically for math alphanumeric symbols, and the control sequences pull from these characters. For example,
+which behaves like a local font-change command from the next section and converts Latin letters into \meta{keyword} style. For example,
\begin{code}
|\mathfont[bb]{STIXGeneral}|
\end{code}
-defines |\mathbb| to typeset double-struck letters using the glyphs from STIXGeneral stored in the alphanumeric symbols block. This is very different from a font where the regular letters are double-struck, caligraphic, or fraktur! In that case, consider using the font-change commands from the next section.
+defines |\mathbb| to typeset blackboard-bold letters using the glyphs from STIXGeneral. Second, you may have a Unicode font where the normal Latin letters are double struck, calligraphic, or fraktur, and in that case, you should declare a local font-change command using the tools in the next section. If you declare any of the macros |\mathbb|, |\mathcal|, |\mathfrak|, |\mathbcal|, or |\mathbfrak| this way, \textsf{mathfont} will ignore the corresponding keyword in future calls to |\mathfont|. Third, as of version 2.4, \textsf{mathfont} tries to be compatible with any macros |\mathbb|, |\mathcal|, |\mathfrak|, |\mathbcal|, or |\mathbfrak| that come from other packages or the kernel.
\begin{figure}[t]
\labelfig{MathAlpha}
@@ -244,7 +255,7 @@
\labelfig{Charm}
\centerline{\bfseries Table \the\fig: Number of Integers Required in \vrb\CharmLine\strut}
\global\advance\fig by 1\relax
-\begin{tabularx}\textwidth{lX}\toprule
+\begin{tabularx}\textwidth{Xl}\toprule
Type of Character & \hfil Total Number of Entries\\\midrule
Latin Letters & \hfil5 \\
Delimiters, Radical Sign (Surd Character), Big Operators & \hfil33\\
@@ -258,22 +269,22 @@
\item If the unicode value corresponds to a delimiter, the radical (surd) symbol, or a big operator, you need to specify 16 pairs numbers, for a total of 32 more integers. The first 15 pairs are horizontal and vertical scale factors that \textsf{mathfont} uses to create large variants, where successive pairs determine the scaling of each next-larger glyph. The last two integers determine horizontal placement of top and bottom math accents respectively.
\item If the unicode value corresponds to any other symbol, you should specify two more integers. They determine the horizontal placement of top and bottom math accents respectively.
\end{itemize}
-Writing an asterisk tells \textsf{mathfont} to use whatever value it has saved in memory, either the default value or the value from the most recent call to |\CharmLine| or |\CharmFile|. If you specify too few charm values, \textsf{mathfont} will raise an error, and if you provide too many, \textsf{mathfont} will silently ignore the extras.
+Writing an asterisk tells \textsf{mathfont} to use whatever value it has saved in memory, either the default value or the value from the most recent call to |\CharmLine| or |\CharmFile|. If you specify too few charm values, \textsf{mathfont} will raise an error, and if you provide too many, \textsf{mathfont} will silently ignore the extras. These commands should appear only in your document preamble.
\begin{figure}[tb]
\labelfig{Factors}
\centerline{\bfseries Table \the\fig: Commands to Adjust Individual Characters\strut}
\global\advance\fig by 1\relax
-\begin{tabularx}\textwidth{llX}\toprule
+\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lll}\toprule
Command & Default Value & What It Does\\\midrule
|\RuleThicknessFactor| & 1000 & Thickness of fraction rule and radical overbar\\
|\IntegralItalicFactor| & 400 & Positioning of limits for integrals\\
|\SurdVerticalFactor| & 1000 & Vertical positioning of radical overbar\\
|\SurdHorizontalFactor| & 1000 & Horizontal positioning of radical overbar\\\bottomrule
-\end{tabularx}
+\end{tabular*}
\end{figure}
-For most applications, you can probably ignore charm information altogether, but if you find bounding boxes or accent placement to be off slightly in your equations or if you want to change the scaling for a delimiter or big operator, you should try calling |\CharmLine| with different values to see what works. As is standard with decimal inputs in \TeX, \textsf{mathfont} divides your inputs by 1000 before computing with them. Positive integers mean ``increase,'' and negative integers mean ``decrease.'' For a given character, the scale is usually the glyph width. For example,
+For most applications, you can probably ignore charm information altogether, but if you find bounding boxes or accent placement to be off slightly in your equations or if you want to change the scaling for a delimiter or big operator, you should try calling |\CharmLine| with different values to see what works. As is standard with decimal inputs in \TeX, \textsf{mathfont} divides your inputs by 1000 before computing with them. Positive integers mean an increase, and negative integers mean a decrease. For a given character, the scale is usually the glyph width. For example,
\begin{code}
|\CharmLine{97, 200, -200, *, 50}|
\end{code}
@@ -283,7 +294,7 @@
\labelfig{Callbacks}
\centerline{\bfseries Table \the\fig: Lua Callbacks Created by \textsf{mathfont}\strut}
\global\advance\fig by 1\relax
-\begin{tabularx}\textwidth{lX}\toprule
+\begin{tabularx}\textwidth{XX}\toprule
Callback Name & What It Does By Default\\\midrule
|"mathfont.inspect_font"| & Nothing\\\midrule
|"mathfont.pre_adjust"| & Nothing\\
@@ -294,7 +305,7 @@
\end{tabularx}
\end{figure}
-The commands in Table~\ref{Factors} adjust other aspects of the font as indicated. Each command accepts a single integer as an argument, and \textsf{mathfont} divides the input by 1000. With each macro, \textsf{mathfont} multiplies the quotient by some default length, so values greater than or less than 1000 mean ``scale up'' or ``scale down'' respectively. For example,
+The commands in Table~\ref{Factors} adjust other aspects of the font as indicated. Each command accepts a single integer as an argument, and \textsf{mathfont} divides the input by 1000. With each macro, \textsf{mathfont} multiplies the quotient by some default length, so values greater than 1000 mean scale up, and values less than 1000 mean scale down. For example,
\begin{code}
|\RuleThicknessFactor{2000}|
\end{code}
Added: trunk/Master/texmf-dist/doc/latex/mathfont/user_guide/mathfont_user_guide.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/mathfont/user_guide/mathfont_user_guide.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/mathfont/user_guide/mathfont_user_guide.pdf 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/doc/latex/mathfont/user_guide/mathfont_user_guide.pdf 2025-04-04 20:57:38 UTC (rev 74846)
Property changes on: trunk/Master/texmf-dist/doc/latex/mathfont/user_guide/mathfont_user_guide.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/latex/mathfont/mathfont_code.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/mathfont/mathfont_code.dtx 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/source/latex/mathfont/mathfont_code.dtx 2025-04-04 20:57:38 UTC (rev 74846)
@@ -1,9 +1,9 @@
% \iffalse ---!!! FIRST META-COMMENT !!!---
%
%
-% This file is mathfont_code.dtx from version 2.3 of the
+% This file is mathfont_code.dtx from version 2.4 of the
% free and open-source LaTeX package "mathfont," released
-% September 2023, to be used with the XeTeX or LuaTeX engines.
+% April 2025, to be used with the XeTeX or LuaTeX engines.
%
% Running Plain TeX on mathfont_code.dtx will produce the
% following files:
@@ -43,12 +43,12 @@
% \iffalse ---!!! SECOND META-COMMENT !!!---
%
%
-% This file is from version 2.3 of the free and open-source
-% LaTeX package "mathfont," released September 2023, to be used
+% This file is from version 2.4 of the free and open-source
+% LaTeX package "mathfont," released April 2025, to be used
% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
% is recommended.)
%
-% Copyright 2018-2023 by Conrad Kosowsky
+% Copyright 2018-2023, 2025 Conrad Kosowsky
%
% This Work may be used, distributed, and modified under the
% terms of the LaTeX Public Project License, version 1.3c or
@@ -154,12 +154,12 @@
\askforoverwritefalse
\preamble
-This file is from version 2.3 of the free and open-source
-LaTeX package "mathfont," released September 2023, to be used
+This file is from version 2.4 of the free and open-source
+LaTeX package "mathfont," released April 2025, to be used
with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
is recommended.)
-Copyright 2018-2023 by Conrad Kosowsky
+Copyright 2018-2023, 2025 Conrad Kosowsky
This Work may be used, distributed, and modified under the
terms of the LaTeX Public Project License, version 1.3c or
@@ -226,7 +226,7 @@
***************************************************^^J^^J%
***************************************************^^J%
* To finish the installation, move mathfont.sty *^^J%
-* into a directory searchable by TeX once *^^J%
+* to a directory searchable by TeX once *^^J%
* mathfont_code.dtx is done typesetting *^^J%
***************************************************^^J^^J}
\endgroup
@@ -238,9 +238,10 @@
\fi
%</batchfile>
%<*driver>
-\documentclass[12pt,doc2,letterpaper,twoside]{ltxdoc}
+\documentclass[12pt,doc2,letterpaper,oneside]{ltxdoc}
\makeatletter
-\usepackage[margin=1in]{geometry}
+\flushbottom
+\usepackage[margin=1.5in]{geometry}
\usepackage[factor=700,stretch=14,shrink=14,step=1]{microtype}
\usepackage{graphicx}
\usepackage{tabularx}
@@ -248,12 +249,13 @@
\usepackage{multirow}
\usepackage{enumitem}
\usepackage{soul}
+\usepackage{amsmath}
\setlist{itemsep=\smallskipamount,topsep=\smallskipamount,
parsep=\z@,partopsep=\z@}
\c at IndexColumns=2
\c at topnumber\@ne
\columnsep=20pt
-\MacroIndent=1.32em
+\MacroIndent=1.5em
\AtBeginDocument{%
\baselineskip=\the\baselineskip plus 0.3pt minus 0.3pt\relax}
\let\index at prologue\relax
@@ -278,6 +280,8 @@
entries indicate pages in the document. Bold means a
definition.
+ \hfuzz=20pt
+
%\medskip
\input mathfont_code.ind
@@ -288,7 +292,7 @@
% \fi
%
%
-% \CheckSum{6640}
+% \CheckSum{7077}
% \init at checksum
%
%
@@ -311,14 +315,14 @@
%
%
% \DoNotIndex{\NeedsTeXFormat,\ProvidesPackage,\DeclareOption,\ProcessOptions,%
-% \def,\edef,\global,\let,\csname,\endcsname,\expandafter,\relax,\advance,%
-% \newcount,\newif,\z@,\@ne,\m at ne,\ifx,\ifcat,\ifnum,\ifeof,\ifmmode,%
+% \def,\edef,\global,\let,\csname,\endcsname,\expandafter,\relax,\advance,
+% \newcount,\newif,\z@,\@ne,\m at ne,\ifx,\ifcat,\ifnum,\ifeof,\ifmmode,
% \else,\fi,\PackageInfo,\PackageWarning,\PackageError,\message,\@undefined,%
-% \space,\MessageBreak,\string,\M at count,\count@,\noexpand,\@empty,%
+% \space,\MessageBreak,\string,\M at count,\count@,\noexpand,\@empty,
% \@tempa,\@tempb,\@tempc,\@temp at opt,\@temp at sub,\@i,\@j,\@k,\count,\tw@,%
-% \do,\DeclareMathSymbol,\the,\mathalpha,\mathord,\multiply,%
+% \do,\DeclareMathSymbol,\the,\mathalpha,\mathord,\multiply,
% \mathop,\mathbin,\mathrel,\mathopen,\mathclose,\mathpunct,\mathinner,%
-% \DeclareRobustCommand,\joinrel,\smash,\newtoks,\if,\\,\@nil,\leavevmode,%
+% \DeclareRobustCommand,\joinrel,\smash,\newtoks,\if,\\,\@nil,\leavevmode,
% \begingroup,\endgroup,\+,\active,\@gobbletwo,\GenericError,\catcode,
% \wlog,\typeout,\E at sterEggUpd@te,\show,\@temperror,%
% \xdef,\@for,\@tfor,\@ifundefined,\@ifpackageloaded,\@nnil,\@onlypreamble,%
@@ -337,7 +341,7 @@
% \protected,\@eha,\@cclv,\new at mathgroup,\new at symbolfont,\@latex at error,%
% \ifcase,\or,\thr@@,\gdef,\rmdefault,\openin,\closein,\immediate,%
% \M at Decl@reF at milytrue,\M at Decl@reF at milyfalse,\itdefault,\shapedefault,%
-% \mddefault,\bfdefault,\E at sterEggDecl@redtrue,\detokenize,\@ifnextchar,%
+% \mddefault,\bfdefault,\E at sterEggDecl@redtrue,\detokenize,\scdefault,%
% \@next,\@suboptionpresenttrue,\@suboptionpresentfalse,\@break at tfor,%
% \M at adjust@fonttrue,\M at adjust@fontfalse,\M at fromCharmFiletrue,%
% \M at fromCharmFilefalse,\M at arg@goodtrue,\M at arg@goodfalse,\M at Noluaotfloadtrue,%
@@ -344,15 +348,29 @@
% \M at Noluaotfloadfalse,\M at XeTeXLuaTeXtrue,\ifcsname,\ifdefined,\TU,\",%
% \@@DeclareSymbolFont,\@@set at mathaccent,\@@set at mathchar,\@@set at mathsymbol,%
% \@expandedtwoargs,\@spaces,\@tempswatrue,\@tempswafalse,\@iftempswa,%
-% \@tempbase,\@tempfeatures,\copy,\e at mathgroup@top,\endlinechar,\everyeof,%
+% \copy,\e at mathgroup@top,\endlinechar,\everyeof,%
% \globaldefs,\m at th,\newbox,\newread,\newmuskip,\number,\setmainfont,%
% \zap at space,\setbox,\clap,\hss,\ht,\wd,\dp,\raise,\M at arrows@font,%
% \M at delimiters@font,\M at extbigops@font,\M at extsymbols@font,\M at symbols@font,%
% \M at greekupper@font,\M at greeklower@font,\M at agreekupper@font,%
% \M at agreeklower@font,\M at bigops@font,\M at upper@font,\M at lower@font,%
-% \M at radical@font,\M at diacritics@font,\M at cyrillicupper@font,%
+% \M at radical@font,\M at diacritics@font,\M at cyrillicupper@font,\M at digits@font,%
% \M at cyrilliclower@font,\M at hebrew@font,\Umathcode,\EasterEggUpdate,%
-% \@firstofone,\if at arg@good,\M at f@ntn at me,\M at f@ntn at meb@se,\dimen@}
+% \@firstofone,\if at arg@good,\M at f@ntn at me,\M at f@ntn at meb@se,\dimen@,%
+% \math at E@sterEggUpd at te,\@DMA,\@DMS,\@tempwarning,\@mathfontinfo,\everymath,%
+% \Udelcode,\Udelimiter,\restoremathinternals,\@@set at mathchar,%
+% \@@set at mathsymbol,\@@set at mathaccent,\set at mathchar,\set at mathsymbol,%
+% \set at mathaccent,\Umathcode,\Umathchardef,\Umathaccent,\@easter at egg@,%
+% \@expandtwoargs,\afterassignment,\aftergroup,\AtEndDocument,%
+% \DeclareSymbolFont at m@dropped,\directlua,\ifodd,\edef at nospace,\hb at xt@,%
+% \hbox,\hfil,\if at operator@s,\ifE at sterEggDecl@red,\ifin@,in@,\llap,%
+% \mathpalette,\mathsm at sh,\meaning,\numexpr,\scantokens,\scantextokens,%
+% \strip at prefix,\vphantom,\XeTeXrevision,\symMupright,\ProcessE at sterEgg,%
+% \@ifnextchar,\@testopt,\endinput,\Umathcharnumdef,\Umathcodes,\Umathcodenum,%
+% \seriesdefault,\@@DeclareSymbolFont at m@dropped,\ifM at radical,\@backslashchar,%
+% \}
+%
+%
% \DoNotIndex{\cyrA,\cyrBe,\cyrVe,\cyrGhe,\cyrDe,%
% \cyrIe,\cyrZhe,\cyrZe,\cyrI,\cyrKa,\cyrEl,%
% \cyrEm,\cyrEn,\cyrO,\cyrPe,\cyrEr,\cyrEs,%
@@ -367,10 +385,7 @@
% \cyrya,\cyrvari}
%
%
-% \DoNotIndex{\@@set at mathchar,\@@set at mathsymbol,%
-% \@@set at mathaccent,\set at mathchar,\set at mathsymbol,%
-% \set at mathaccent,\Umathcode,\Umathchardef,%
-% \colon,\mathellipsis,\angle,\sqsubset,\sqsupset,\bowtie,%
+% \DoNotIndexMain{\colon,\mathellipsis,\angle,\sqsubset,\sqsupset,\bowtie,%
% \doteq,\neq,\ng,\clubsuit,\spadesuit,\diamondsuit,%
% \heartsuit,\cong,\uparrow,\Uparrow,\downarrow,\Downarrow,%
% \updownarrow,\Updownarrow,\longrightarrow,\longleftarrow,$
@@ -380,25 +395,26 @@
% \from,\mapsfrom,\longmapsfrom,\lightningboltarrow,\sum,%
% \prod,\coprod,\bigvee,\bigwedge,\bigcup,\bigcap,%
% \bigoplus,\bigotimes,\bigodot,\bigsqcup,\iint,\iiint,%
-% \oint,\oiint,\oiiint,\Umathaccent,\@uppershape,%
-% \@lowershape,\@diacriticsshape,\@greekuppershape,%
-% \@greeklowershape,\@agreekuppershape,\@agreeklowershape,%
-% \@cyrillicuppershape,\@cyrilliclowershape,\@hebrewshape,%
-% \@digitsshape,\@operatorshape,\@symbolsshape,%
-% \@extsymbolsshape,\@delimitersshape,\@arrowsshape,%
-% \@bigopsshape,\@extbigopsshape,\@bbshape,\@calshape,%
-% \@frakshape,\@bcalshape,\@bfrakshape}
+% \oint,\oiint,\oiiint,\lbrace,\rbrace,\lguil,\rguil,%
+% \backslash,\mathbackslash,\textng,\simeq,\vert,\llguil,%
+% \rrguil,\fakelangle,\fakerangle,\fakellangle,\fakerrangle,%
+% \models,\bigtimes,\@@relbar,\@@Relbar}
%
-%
% \noindent This file documents the code for the \textsf{mathfont} package. It is not a user guide! If you are looking for instructions on how to use \textsf{mathfont} in your document, see |mathfont_user_guide.pdf|, which is included with the \textsf{mathfont} installation and is available on \textsc{ctan}. See also the other |pdf| documentation files for \textsf{mathfont}. Section~1 of this document begins with the implementation basics, including package declaration and package options. Section~2 deals with errors and messaging, and section~3 provides package default settings. Section~4 contains fontloader, and section~5 contains the optional-argument parser for |\mathfont|. Section 6 documents the code for the |\mathfont| command itself. Section~7 contains the code for local font changes. Section~8 contains miscellaneous material. Sections~9--11 contain the Lua code to modify font objects at loading, and section~12 lists the unicode hex values used in symbol declaration. Version history and code index appear at the end of the document.
%
-% \section{Implementation Basics}
+% \section{Setup}
%
-% First and foremost, the package needs to declare itself.
+%
+%
+% First, the package should declare itself. The first 61 lines of |mathfont.sty| are comments. \c at CodelineNo=61\relax
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{mathfont}[2023/09/09 v. 2.3 Package mathfont]
+\ProvidesPackage{mathfont}[2025/04/03 v. 2.4 Package mathfont]
% \end{macrocode}
+% Informational message.
+% \begin{macrocode}
+\def\@mathfontinfo#1{\wlog{Package mathfont Info: #1}}
+% \end{macrocode}
% We specify conditionals and one count variable that we use later in handling options and setup.
% \begin{macrocode}
\newif\ifM at XeTeXLuaTeX % is engine one of xetex or luatex?
@@ -427,11 +443,10 @@
\SurdHorizontalFactor
\CharmLine
\CharmFile\do{%
- \edef\@tempa{\protected\def\expandafter\noexpand\@i}%
- \edef\@tempb{\noexpand\M at NoMathfontError
- \expandafter\noexpand\@i
- \noexpand\@gobble}%
- \expandafter\@tempa\expandafter{\@tempb}}
+ \edef\@tempa{\protected\def\expandafter\noexpand\@i{%
+ \noexpand\M at NoMathfontError\expandafter\noexpand\@i
+ \noexpand\@gobble}}
+ \@tempa}
% \end{macrocode}
% Now for the macros that |\@gobbletwo| their argument. The code is essentially the same.
% \begin{macrocode}
@@ -439,27 +454,25 @@
\newmathit
\newmathbf
\newmathbfit
- \newmathbold
- \newmathboldit
\newmathsc
\newmathscit
\newmathbfsc
\newmathbfscit\do{%
- \edef\@tempa{\protected\def\expandafter\noexpand\@i}%
- \edef\@tempb{\noexpand\M at NoMathfontError
- \expandafter\noexpand\@i
- \noexpand\@gobbletwo}%
- \expandafter\@tempa\expandafter{\@tempb}}
+ \edef\@tempa{\protected\def\expandafter\noexpand\@i{%
+ \noexpand\M at NoMathfontError\expandafter\noexpand\@i
+ \noexpand\@gobbletwo}}
+ \@tempa}
% \end{macrocode}
% For the optional argument, we check if the following character is a |[|. If yes, we gobble first the brackets and then the mandatory argument. If not, we gobble the single mandatory argument.
% \begin{macrocode}
-\@tfor\@i:=\mathfont\mathconstantsfont\do{%
- \edef\@tempa{\protected\def\expandafter\noexpand\@i}%
- \edef\@tempb{\noexpand\M at NoMathfontError
- \expandafter\noexpand\@i
- \noexpand\@ifnextchar[{\noexpand\expandafter
- \noexpand\@gobble\noexpand\@gobble at brackets}{\noexpand\@gobble}}
- \expandafter\@tempa\expandafter{\@tempb}}
+\protected\def\mathfont{%
+ \M at NoMathfontError\mathfont
+ \@ifnextchar[{\expandafter\@gobble\expandafter\@gobble at brackets}
+ {\@gobble}}
+\protected\def\mathconstantsfont{%
+ \M at NoMathfontError\mathconstantsfont
+ \@ifnextchar[{\expandafter\@gobble\expandafter\@gobble at brackets}
+ {\@gobble}}
% \end{macrocode}
% We code |\newmathfontcommand| by hand because it is the only command with four arguments.
% \begin{macrocode}
@@ -503,8 +516,9 @@
document with one of those two engines.^^J}}%
\expandafter\endgroup
\M at XeTeXLuaTeXError
- \AtEndOfPackage{\typeout{:: mathfont :: Failed to load\on at line.}}
- \expandafter\endinput % we should \endinput with a balanced conditional
+ \AtEndOfPackage{%
+ \typeout{:: mathfont :: Failed to load\on at line.}}
+ \expandafter\endinput % we \endinput with a balanced conditional
\fi
% \end{macrocode}
% Now do the same thing in checking for \textsf{luaotfload}. If the engine is Lua\TeX, we tell \textsf{mathfont} to implement Lua-based font adjustments by default. The conditional |\ifM at Noluaotfload| will keep track of whether \TeX\ could find |luaotfload.sty|. If the engine is \XeTeX, issue a warning.
@@ -512,7 +526,8 @@
\ifdefined\directlua
\M at adjust@fonttrue % if engine is LuaTeX, adjust font by default
\IfFileExists{luaotfload.sty}
- {\M at Noluaotfloadfalse\RequirePackage{luaotfload}}{\M at Noluaotfloadtrue}
+ {\M at Noluaotfloadfalse\RequirePackage{luaotfload}}
+ {\M at Noluaotfloadtrue}
\else
\AtEndOfPackage{\PackageWarningNoLine{mathfont}{%
The current engine is XeTeX, but as\MessageBreak
@@ -522,9 +537,9 @@
work with XeTeX}}
\fi
% \end{macrocode}
-% If the engine is Lua\TeX, we absolutely must have \textsf{luaotfload} because Lua\TeX\ needs this package to load OpenType fonts. Before anything else, \TeX\ should check whether it can find |luaotfload.sty| and stop reading in \textsf{mathfont} if it cannot. Same command structure as before. Newer \LaTeX\ versions load \textsf{luaotfload} as part of the format, but it never hurts to double check.\indexpage{unable to load}\indexpage{cannot not find the file luaotfloadsty=cannot find the file \texttt{luaotfload}}
+% If the engine is Lua\TeX, we must have \textsf{luaotfload} because Lua\TeX\ needs this package to load OpenType fonts. Before anything else, \TeX\ should check whether it can find |luaotfload.sty| and stop reading in \textsf{mathfont} if it cannot. Same command structure as before. Newer \LaTeX\ versions load \textsf{luaotfload} as part of the format, but it never hurts to double check.\indexpage{unable to load}\indexpage{cannot not find the file luaotfloadsty=cannot find the file \texttt{luaotfload}}
% \begin{macrocode}
-\ifM at Noluaotfload % false by default; true if LuaTeX AND no luaotfload.sty
+\ifM at Noluaotfload % true if LuaTeX AND no luaotfload.sty
\begingroup
\catcode`\ =12\relax
\def\M at NoluaotfloadError{\GenericError{}%
@@ -556,52 +571,105 @@
by TeX or compile with XeLaTeX.^^J}}%
\expandafter\endgroup
\M at NoluaotfloadError
- \AtEndOfPackage{\typeout{:: mathfont :: Failed to load\on at line.}}
- \expandafter\endinput % we should \endinput with a balanced conditional
+ \AtEndOfPackage{%
+ \typeout{:: mathfont :: Failed to load\on at line.}}
+ \expandafter\endinput % we \endinput with a balanced conditional
\fi
% \end{macrocode}
-% Some package options are now deprecated, specifically |packages|, |operators|, and |no-|\penalty0|operators|. In the case of these options, the command |\M at Optiondeprecated| issues an error and tells the user the appropriate alternative.\indexpage{deprecated} We check for \textsf{atveryend} to use with the easter egg.
+% As of version 2.4, I'm taking out the deprecated package options, which used to live here. Easter egg!!
% \begin{macrocode}
-\def\M at 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.}}
-% \end{macrocode}
-% Now we code the package options. The deprecated options cause an error.
-% \begin{macrocode}
-\DeclareOption{packages}{%
- \M at Optiondeprecated{packages}
- {the macro \string\restoremathinternals}}
-\DeclareOption{operators}{%
- \M at Optiondeprecated{operators}
- {the bigops keyword with \string\mathfont}}
-\DeclareOption{no-operators}{%
- \M at Optiondeprecated{no-operators}
- {the bigops keyword with \string\mathfont}}
-% \end{macrocode}
-% Easter egg!
-% \begin{macrocode}
\DeclareOption{easter-egg}{%
\ifE at sterEggDecl@red\else
\E at sterEggDecl@redtrue
- \def\EasterEggUpdate{\show\E at sterEggUpd@te}
- \def\E at sterEggUpd@te{Easter Egg Status:^^J^^J%
- Okay, opening your Easter egg.^^J^^J}
+ \newcount\@easter at egg@
+ \def\EasterEggUpdate{\ProcessE at sterEgg\show\E at sterEggUpd@te}
+ \let\ProcessE at sterEgg\relax
+% \end{macrocode}
+% Two status updates during package loading.
+% \begin{macrocode}
+ \edef\E at sterEggUpd@te{Easter Egg Status:^^J^^J%
+ Okay, opening your Easter egg.^^J%
+ Type \string\EasterEggUpdate\space in your^^J%
+ document to see the status.^^J^^J}
\EasterEggUpdate
\def\E at 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}
+ Uh oh. It looks like your Easter^^J%
+ egg flew out the window. I don't^^J%
+ I don't suppose you know the best^^J%
+ kind of bait to lure an egg?^^J^^J}
\EasterEggUpdate
- \def\E at sterEggUpd@te{Easter Egg Status:^^J^^J%
- Still wrangling. Try back later.^^J^^J}
+% \end{macrocode}
+% Possible updates if the user types |\EasterEggUpdate|. We define the status update with |\ProcessE at sterEgg|, which stores the current message in |\E at sterEggUpd@te| and changes the message as the user calls |\EasterEggUpdate|. The count |\@easter at egg@| keeps track of how many times the user has requested a status update.
+% \begin{macrocode}
+ \def\ProcessE at sterEgg{%
+ \edef\E at sterEggUpd@te{Easter Egg Status:^^J^^J%
+ \ifodd\@easter at egg@
+ \ifcase\numexpr(\@easter at egg@ - 1) / 2\relax
+ An Easter bunny must be related to a^^J%
+ platypus, no? Some sort of monotreme...%
+ \or
+ Don't count your chickens before they hatch^^J%
+ out of Easter eggs! But we don't have any^^J%
+ chickens right now because there are no eggs,^^J%
+ and the supply chain is sad.%
+ \or
+ Sorry, I'm late to a meeting. Can't talk right now.%
+ \or
+ Sunday, Monday, Tuesday, Wednesday, also^^J%
+ known as hump day, as in camel humps, which^^J%
+ I must say look distinctly egg-like if you^^J%
+ squint.%
+ \or
+ I'm calling Eggs Anonymous!%
+ \or
+ Sorry, I'm on the phone. Can't talk right now.%
+ \or
+ Still haven't found your Easter egg. I know^^J%
+ it's floating around here somewhere. Like an^^J%
+ asteroid in space, hopefully without the^^J%
+ massive extinction event.%
+ \or
+ Did you know eggs are used to make certain^^J%
+ types of vaccines? PSA: get your flu shot^^J%
+ and your covid shot!%
+ \or
+ Three large eggs.^^J%
+ Three large eggs.^^J%
+ See how they crack.^^J%
+ See how they crack.^^J%
+ Their broken shells are so pearly white.^^J%
+ In simmering water they catch the light.^^J%
+ Did you ever see such a sight in your life^^J%
+ As three poached eggs?%
+ \or
+ Do gnus eat eggs? Surely they must.%
+ \or
+ Okay, I have a fishing rod, some twine, and^^J%
+ a hook, but I still haven't caught your Easter^^J%
+ egg. Apparently it's harder to catch an egg^^J%
+ than a fish.%
+ \or
+ Sorry, I'm out fishing. Can't talk right now.%
+ \or
+ Is ghoti really an acceptable phonetic^^J%
+ spelling of fish? I am skeptical.%
+ \or
+ Perhaps an Easter bunny is actually a species^^J%
+ of fish. A rabbit fish.%
+ \else
+ Sorry, I'm all out of witty things to say.^^J%
+ Check back later.%
+ \fi
+ \else
+ Still wrangling. Check back later.%
+ \fi^^J^^J}%
+ \global\advance\@easter at egg@\@ne}
+% \end{macrocode}
+% One status update |\AtBeginDocument|.
+% \begin{macrocode}
\AtBeginDocument{\bgroup
- \def\E at sterEggUpd@te{Easter Egg Status:^^J^^J:%
+ \let\ProcessE at sterEgg\relax
+ \def\E at sterEggUpd@te{Easter Egg Status:^^J^^J%
If we have zero eggs^^J%
and zero bunnies, how^^J%
many gnats does it take^^J%
@@ -608,13 +676,72 @@
to change a lightbulb??^^J^^J}
\EasterEggUpdate
\egroup}
- \AtEndDocument{%
+% \end{macrocode}
+% One update at the first instance of math mode, assuming another package doesn't overwrite the contents of |\everymath| first.
+% \begin{macrocode}
+ \def\math at E@sterEggUpd at te{\begingroup
+ \let\ProcessE at sterEgg\relax
\def\E at sterEggUpd@te{Easter Egg Status:^^J^^J%
+ Scrambled, poached, or sunny side up?^^J^^J}%
+ \EasterEggUpdate
+ \endgroup
+ \global\let\math at E@sterEggUpd at te\relax}
+ \everymath\expandafter{\the\everymath\math at E@sterEggUpd at te}
+% \end{macrocode}
+% Two status updates |\AtEndDocument|, including the egg itself. First, we disable |\ProcessE at sterEgg| since we don't need it anymore. Then inside a group, we make the control symbols |\*|, |\/|, and |\=| expand to their own names and do some extreme catcode sports. We convert |+| to active and make it expand to a space. Because everything has already been tokenized inside |\DeclareOption|, we have to retokenize the definition of |+| inside |\scantokens|, and we set |\everyeof| to |\noexpand| to avoid an end-of-file error.
+% \begin{macrocode}
+ \AtEndDocument{\let\ProcessE at sterEgg\relax
+ \begingroup
+ \edef\*{\@backslashchar*}
+ \edef\/{\@backslashchar/}
+ \edef\={\@backslashchar=}
+ \catcode`\+=\active
+ \everyeof{\noexpand}
+ \scantokens{\def+{ }}
+% \end{macrocode}
+% At this point we are ready to make the egg message Again, we have to retokenize everything with |\scantokens| because it was previously tokenized. However, if we write |^^J| directly inside |\scantokens|, that primitive will convert the newline to a blank space, so instead we store |^^J| in |\@tempb|. After the |\edef| expands |\scantokens|, it also expands each |\@tempb|, so |\@tempa| has the line breaks we want.
+% \begin{macrocode}
+ \def\@tempb{^^J}
+ \edef\@tempa{\scantokens{Easter Egg Status:\@tempb\@tempb
+ The egg has been retrieved. What\@tempb
+ pinnacle of pulchritude!\@tempb\@tempb
+ +++++++++++++******\@tempb
+ ++++++++++************\@tempb
+ +++++++******************\@tempb
+ +++++----------------------\@tempb
+ +++**************************\@tempb
+ ++****/\****/\****/\****/\****\@tempb
+ +*****\/****\/****\/****\/*****\@tempb
+ +******************************\@tempb
+ ********************************\@tempb
+ ***/\****/\****/\****/\****/\***\@tempb
+ ***\/****\/****\/****\/****\/***\@tempb
+ ********************************\@tempb
+ ********************************\@tempb
+ ******/\****/\****/\****/\******\@tempb
+ +*****\/****\/****\/****\/*****\@tempb
+ ++****************************\@tempb
+ +++--------------------------\@tempb
+ +++++**********************\@tempb
+ +++++++******************\@tempb
+ +++++++++\============/\@tempb
+ +++++++++++\========/\@tempb
+ ++++++++++++\======/\@tempb
+ +++++++++++++|====|\@tempb
+ ++++++++++++/======\@backslashchar\@tempb
+ +++++++++++(________)\@tempb}}
+% \end{macrocode}
+% Then end the group and store the message in |\E at sterEggUpd@te|.
+% \begin{macrocode}
+ \expandafter\endgroup\expandafter
+ \def\expandafter\E at sterEggUpd@te\expandafter{\@tempa}
+ \EasterEggUpdate
+ \def\E at 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
+ \EasterEggUpdate
\let\E at sterEggUpd@te\relax
\let\EasterEggUpdate\relax}
\fi}% my easter egg :)
@@ -624,7 +751,7 @@
\DeclareOption{default-loader}{\M at loader\z@}
\DeclareOption{fontspec-loader}{\M at loader\@ne}
% \end{macrocode}
-% The options |adjust| and |no-adjust| overwrite \textsf{mathfont}'s default decision about whether to apply Lua-based font adjustments to all future fonts loaded.
+% The options |adjust| and |no-adjust| determine whether \textsf{mathfont} applies Lua-based font adjustments to fonts loaded in the future.
% \begin{macrocode}
\DeclareOption{adjust}{\M at adjust@fonttrue}
\DeclareOption{no-adjust}{\M at adjust@fontfalse}
@@ -631,25 +758,26 @@
% \end{macrocode}
% Interpret an unknown option as a font name and save it for loading. In this case, the package sets |\ifM at font@loaded| to true and stores the font name in |\M at font@load|.
% \begin{macrocode}
-\DeclareOption*{\M at font@loadedtrue\edef\M at font@load{\CurrentOption}}
+\DeclareOption*{\M at font@loadedtrue
+ \edef\M at font@load{\CurrentOption}}
\ProcessOptions*
% \end{macrocode}
% For the font-loader, we have a bit of processing to do. First print an informational message in the |log| file. The default loader is easy, but if the user requests \textsf{fontspec}, we have to make sure to load everything properly.
% \begin{macrocode}
\ifcase\M at loader
- \wlog{Package mathfont Info: Default font-loader was
+ \@mathfontinfo{Default font-loader was
requested for font loading.}
\or
- \wlog{Package mathfont Info: Package fontspec was
+ \@mathfontinfo{Package fontspec was
requested for font loading.}
% \end{macrocode}
% If \textsf{fontspec} was already loaded, check whether |\g__fontspec_math_bool| is true or not. If it is, change it to false.
% \begin{macrocode}
\@ifpackageloaded{fontspec}
- {\wlog{Package mathfont Info: Package fontspec detected.}
+ {\@mathfontinfo{Package fontspec detected.}
\csname bool_if:NTF\expandafter\endcsname
\csname g__fontspec_math_bool\endcsname
- {\wlog{Package mathfont Info: Setting
+ {\@mathfontinfo{Setting
\string\g__fontspec_math_bool to false.}
\csname bool_set_false:N\expandafter\endcsname
\csname g__fontspec_math_bool\endcsname}{\relax}}
@@ -656,22 +784,32 @@
% \end{macrocode}
% If \textsf{fontspec} was not loaded, check that the package file exists.
% \begin{macrocode}
- {\wlog{Package mathfont Info: Package fontspec not detected.}
+ {\@mathfontinfo{Package fontspec not detected.}
\IfFileExists{fontspec.sty}
- {\wlog{Package mathfont Info: File fontspec.sty was found.}
- \wlog{Package mathfont Info: Loading fontspec.}
+ {\@mathfontinfo{File fontspec.sty was found.}
+ \@mathfontinfo{Loading fontspec.}
\RequirePackage[no-math]{fontspec}}
- {\PackageError{mathfont}{Missing package fontspec;\MessageBreak
+ {\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
+ {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 at loader\z@}}
\fi
@@ -679,12 +817,15 @@
% We print an informational message specifying the font-loader in use. We store default OpenType features in |\M at otf@features|. The contents depend on the font-loader because we use \XeTeX/\textsf{luaotfload} syntax versus \textsf{fontspec} syntax. By default, \textsf{mathfont} loads fonts with Latin script, default language, \TeX\ and common ligatures, and lining numbers.
% \begin{macrocode}
\ifcase\M at loader
- \wlog{Package mathfont Info: Using default font-loader.}
- \AtEndOfPackage{\typeout{:: mathfont :: Using default font-loader.}}
- \def\M at otf@features{script=latin;language=DFLT;+tlig;+liga;+lnum}
+ \@mathfontinfo{Using default font-loader.}
+ \AtEndOfPackage{%
+ \typeout{:: mathfont :: Using default font-loader.}}
+ \def\M at 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.}}
+ \@mathfontinfo{Using fontspec as font-loader.}
+ \AtEndOfPackage{%
+ \typeout{:: mathfont :: Using fontspec as font-loader.}}
\def\M at otf@features{Script=Latin,
Language=Default,
Ligatures={TeX,Common},
@@ -695,13 +836,15 @@
% \begin{macrocode}
\ifdefined\directlua
\ifM at adjust@font
- \wlog{Package mathfont Info: Enabling Lua-based font adjustments.}
+ \@mathfontinfo{Enabling Lua-based font adjustments.}
\AtEndOfPackage{%
- \typeout{:: mathfont :: Lua-based font adjustments enabled.}}
+ \typeout{:: mathfont :: Lua-based font adjustments
+ enabled.}}
\else
- \wlog{Package mathfont Info: Disabling Lua-based font adjustments.}
+ \@mathfontinfo{Disabling Lua-based font adjustments.}
\AtEndOfPackage{%
- \typeout{:: mathfont :: Lua-based font adjustments disabled.}}
+ \typeout{:: mathfont :: Lua-based font adjustments
+ disabled.}}
\fi
\else
% \end{macrocode}
@@ -716,7 +859,7 @@
with LuaLaTeX.^^J}
\M at adjust@fontfalse
\fi
- \wlog{Package mathfont Info: Disabling Lua-based font adjustments.}
+ \@mathfontinfo{Disabling Lua-based font adjustments.}
\AtEndOfPackage{%
\typeout{:: mathfont :: Lua-based font adjustments disabled.}}
\fi
@@ -723,18 +866,21 @@
% \end{macrocode}
%
%
-% \section{Errors and Messaging}
+% \section{Messages and Errors}
%
+%
+%
% Some error and informational messages. Table~1 lists all macros defined in this section along with a brief description of their use. We begin with general informational messages.\indexpage{Package mathfont Info}
%
-% \begin{figure}[b]
+% \begin{figure}[tbp]
% \def\vrb#1{\texttt{\string#1}}
% \centerline{\bfseries Table 1: Various Messages and Errors and Their Uses\strut}
-% \begin{tabularx}\textwidth{lX}
+% \begin{tabularx}\textwidth{lX<{\raggedright\arraybackslash}}
% \toprule
% Command & Use\\\midrule
-% \vrb\M at FontChangeInfo & Use a symbol font inside \vrb\mathfont\\
-% \vrb\M at NewFontCommandInfo & Declare new alphanumeric font-change command\\
+% \vrb\@mathfontinfo & General informational macro\\
+% \vrb\M at FontChangeInfo & When using a new symbol font\\
+% \vrb\M at NewFontCommandInfo & New local font-change command\\
% \vrb\M at SymbolFontInfo & Declare new symbol font\\\midrule
% \vrb\M at CharsSetWarning & Warning when calling \vrb\mathfont\ multiple times for same keyword\\
% \vrb\M at InternalsRestoredError & User called \vrb\mathfont\ after restoring kernel\\\midrule
@@ -747,131 +893,143 @@
% \vrb\M at BadMathConstantsFontError & Argument not previously fed to \vrb\mathfont\\
% \vrb\M at BadMathConstantsFontTypeError & Argument not ``upright'' or ``italic''\\
% \vrb\M at LuaTeXOnlyWarning & User called \vrb\mathcontsantsfont\ in \XeTeX\\\midrule
-% \vrb\M at DeprecatedWarning & Warning for certain deprecated macros\\
% \vrb\M at DoubleArgError & Gave multiple tokens to be the font-change macro\\
% \vrb\M at HModeError & Font-change command used outside math mode\\
-% \vrb\M at MissingControlSequenceError & No macro provided to be font-change command\\\midrule
+% \vrb\M at MissingControlSequenceError & No macro for font-change command\\\midrule
% \vrb\M at BadIntegerError & Font metric adjustment value was not an integer\\
-% \vrb\M at ForbiddenCharmFile & Charm file contains a bad character\\
-% \vrb\M at ForbiddenCharmLine & Charm line contains a bad character\\
+% \vrb\M at ForbiddenCharmFile & Bad character in charm file\\
+% \vrb\M at ForbiddenCharmLine & Bad character in charm line\\
% \vrb\M at NoFontAdjustError & Command called when Lua-based font adjustment was disabled\\
% \bottomrule
% \end{tabularx}
% \end{figure}
%
+% \indexpage{I already set the font}
+% \indexpage{The nfss family}
+% \indexpage{I couldn't find a base-mode}
% \begin{macrocode}
-\def\M at SymbolFontInfo#1#2#3#4{\wlog{^^JPackage mathfont Info:
- Declaring new symbol font from #1!^^J%
+\def\M at SymbolFontInfo#1#2#3#4{\wlog{}%
+ \@mathfontinfo{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 at FontChangeInfo#1#2{\wlog{Package mathfont Info:
- Setting #1 chars to #2!}}
-\def\M at NewFontCommandInfo#1#2#3#4#5{\wlog{^^JPackage mathfont Info:
- Creating \string#1 using #2!^^J%
+\def\M at FontChangeInfo#1#2{\@mathfontinfo{Setting #1 chars to #2!}}
+\def\M at NewFontCommandInfo#1#2#3#4#5{\wlog{}%
+ \@mathfontinfo{Creating \string#1 using #2!^^J%
NFSS Family Name: \space#3^^J%
Series/Shape Info: #4/#5^^J}}
-\def\M at CharsSetWarning#1{\PackageWarning{mathfont}
+\def\M at 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 at MissingNFSSShapesWarning#1#2{\PackageWarning{mathfont}
+\def\M at MissingNFSSShapesWarning#1#2{%
+ \PackageWarning{mathfont}
{The nfss family "#1"\MessageBreak
- from line \the\inputlineno\space is missing shapes. You\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 at NoBaseModeDetectedWarning#1{\PackageWarning{mathfont}
+\def\M at 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
+ 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}}
% \end{macrocode}
-% \indexpage{I already set the font}
-% Warnings for the |\mathbb|, etc.\ commands.
-% Warning for deprecated commands.\indexpage{deprecated}
-% \begin{macrocode}
-\def\M at 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}}
-% \end{macrocode}
% Error messages associated with |\mathfont|.
-% \indexpage{invalid option for mathfont=Invalid Option for \texttt{\char`\\mathfont}}
-% \indexpage{invalid suboption for mathfont=Invalid Suboption for \texttt{\char`\\mathfont}}
-% \indexpage{missing option for mathfont=Missing Option for \texttt{\char`\\mathfont}}
-% \indexpage{missing suboption for mathfont=Missing Suboption for \texttt{\char`\\mathfont}}
-% \indexpage{Internal commands restored}
+% \indexpage{invalid option for mathfont=Invalid option for \texttt{\char`\\mathfont}}
+% \indexpage{invalid suboption for mathfont=Invalid suboption for \texttt{\char`\\mathfont}}
+% \indexpage{missing option for mathfont=Missing option for \texttt{\char`\\mathfont}}
+% \indexpage{missing suboption for mathfont=Missing suboption for \texttt{\char`\\mathfont}}
% \indexpage{no previous font}\indexpage{missing package fontspec=Missing package \texttt{fontspec}}
% \begin{macrocode}
-\def\M at InvalidOptionError#1{\PackageError{mathfont}
- {Invalid^^Joption "#1" for \string\mathfont\on at line}
- {Hm. You used a keyword that isn't actually an optional\MessageBreak
+\def\M at InvalidOptionError#1{%
+ \PackageError{mathfont}
+ {Invalid^^Joption "#1"
+ for \string\mathfont\on at 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
+ 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 at InvalidSuboptionError#1{\PackageError{mathfont}
- {Invalid^^Jsuboption "#1" for \string\mathfont\on at line}
- {Hm. You used a keyword that isn't actually a suboption\MessageBreak
+\def\M at InvalidSuboptionError#1{%
+ \PackageError{mathfont}
+ {Invalid^^Jsuboption "#1"
+ for \string\mathfont\on at 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
+ 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 at MissingOptionError{\PackageError{mathfont}
- {Missing^^Joption for \string\mathfont\on at line}
- {It looks like you included a , or = in\MessageBreak
- the optional argument of \string\mathfont\space but\MessageBreak
+\def\M at MissingOptionError{%
+ \PackageError{mathfont}
+ {Missing^^Joption for
+ \string\mathfont\on at 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 at MissingSuboptionError{\PackageError{mathfont}
- {Missing^^Jsuboption for \string\mathfont\on at 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
+\def\M at MissingSuboptionError{%
+ \PackageError{mathfont}
+ {Missing^^Jsuboption for
+ \string\mathfont\on at 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 at 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}}
% \end{macrocode}
% Error messages for |\mathconstantsfont|.
% \indexpage{Invalid font specifier}
% \indexpage{your mathconstants on line=Your \texttt{\char`\\mathconstants} on line}
% \begin{macrocode}
-\def\M at BadMathConstantsFontError#1{\PackageError{mathfont}
+\def\M at 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
+ {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 at BadMathConstantsFontTypeError#1{\PackageError{mathfont}
+\def\M at 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
+ {The optional argument of
+ \string\mathconstantsfont\MessageBreak
+ should be "upright" or "italic."
+ Right now,\MessageBreak
it's "#1."^^J}}
-\def\M at MathConstantsNoFontAdjustWarning{\PackageWarning{mathfont}
+\def\M at MathConstantsNoAdjustWarning{%
+ \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
+ is mainly for use in
+ LuaTeX with font\MessageBreak
+ adjustments enabled.
+ In the current\MessageBreak
+ situation, it is
+ probably not doing\MessageBreak
anything\@gobble}}
% \end{macrocode}
% Error messages for the |\newmathrm|, etc.\ commands.
@@ -879,27 +1037,39 @@
% \indexpage{Multiple characters in argument}
% \indexpage{Missing \$ inserted=Missing \texttt\$ inserted}
% \begin{macrocode}
-\def\M at MissingControlSequenceError#1#2{\PackageError{mathfont}
+\def\M at 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 at DoubleArgError#1#2{\PackageError{mathfont}
+ 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 at 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
+ {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 at HModeError#1{\PackageError{mathfont}
+\def\M at 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
+ you used \string#1\space
+ outside of\MessageBreak
math mode. I inserted a \string$
- before your \string#1, so we\MessageBreak
+ before your \string#1,
+ so we\MessageBreak
should be all good now.^^J}}
% \end{macrocode}
% We need error messages related to Lua-based font adjustments.
@@ -907,56 +1077,80 @@
% \indexpage{Your command is invalid without Lua-based}
% \indexpage{Bad argument for}
% \begin{macrocode}
-\def\M at ForbiddenCharmLine#1{\PackageError{mathfont}
+\def\M at 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
+ 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 at ForbiddenCharmFile#1{\PackageError{mathfont}
+\def\M at ForbiddenCharmFile#1{%
+ \PackageError{mathfont}
{Forbidden charm info contains #1}
- {One of the lines in your \string\CharmFile\space
+ {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
+ 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 at NoFontAdjustError#1{\PackageError{mathfont}
- {Your command \MessageBreak\string#1 is invalid\MessageBreak
+\def\M at 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
+ {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 at BadIntegerError#1#2{\PackageError{mathfont}
+\def\M at 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
+ {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}}
% \end{macrocode}
%
+%
% \section{Default Settings}
%
-% We save four macros from the \LaTeX\ kernel so we can change their definitions. To adapt the symbol declaration macros for use with unicode fonts, we reverse the conversion to hexadecimal in |\count0| and change the |\math| primitive to |\Umath|. Whereas the traditional primitives accept hexadecimal input, |\Umath| primitives accept decimal input with a |+| sign.\indexpage{LaTeX kernel=\LaTeX\ kernel}
+% We save four macros from the \LaTeX\ kernel for safe-keeping, and then we change their definitions. To make the symbol declaration macros from the kernel compatible with unicode fonts, we convert the hexadecimal digits in |\count0| and |\count2| back to decimal and change the |\math| primitive to |\Umath|.\indexpage{LaTeX kernel=\LaTeX\ kernel}
% \begin{macrocode}
\let\@@set at mathchar\set at mathchar
\let\@@set at mathsymbol\set at mathsymbol
\let\@@set at mathaccent\set at mathaccent
\let\@@DeclareSymbolFont\DeclareSymbolFont
+\let\@@DeclareSymbolFont at m@dropped\DeclareSymbolFont at m@dropped
\@onlypreamble\@@set at mathchar
\@onlypreamble\@@set at mathsymbol
\@onlypreamble\@@set at mathaccent
\@onlypreamble\@@DeclareSymbolFont
-\wlog{Package mathfont Info: Adapting \noexpand\set at mathchar for unicode.}
-\wlog{Package mathfont Info: Adapting \noexpand\set at mathsymbol for unicode.}
-\wlog{Package mathfont Info: Adapting \noexpand\set at mathaccent for unicode.}
-\wlog{Package mathfont Info: Increasing upper bound on
+\@onlypreamble\@@DeclareSymbolFont at m@dropped
+\@mathfontinfo{Adapting \noexpand\set at mathchar for unicode.}
+\@mathfontinfo{Adapting \noexpand\set at mathsymbol for unicode.}
+\@mathfontinfo{Adapting \noexpand\set at mathaccent for unicode.}
+\@mathfontinfo{Increasing upper bound on
\noexpand\DeclareSymbolFont to 256.}
% \end{macrocode}
% Kernel command to set math characters from keystrokes.
@@ -981,15 +1175,17 @@
\protected\xdef#2{%
\Umathaccent\mathchar at type#3+\number#1+\the\count\z@\relax}}
% \end{macrocode}
-% We increase the upper bound on the number of symbol fonts to be 256. Lua\TeX\ and \XeTeX\ allow up to 256 math families, but the \LaTeX\ kernel keeps the old upper bound of 16 symbol fonts under these two engines. We patch |\DeclareSymbolFont| to change the |\count18<15| to |\count18<\e at mathgroup@top|, where |\e at mathgroup@top| is the number of math families and is 256 in \XeTeX\ and Lua\TeX. Because macro patching is complicated, the next few lines may seem somewhat esoteric. Our approach is to get a sanitized definition with |\meaning| and |\strip at prefix|, implement the patch by expanding |\M at p@tch at decl@re|, and retokenize the whole thing. A simpler approach, such as calling |\M at p@tch at decl@re| directly on the expansion of |\DeclareSymbolFont|, won't work because of how \TeX\ stores and expands parameter symbols inside macros.
+% We increase the upper bound on the number of symbol fonts to be 256. Lua\TeX\ and \XeTeX\ allow up to 256 math families, but the \LaTeX\ kernel keeps the old upper bound of 16 symbol fonts under these two engines. We patch |\DeclareSymbolFont| to change the |\count18<15| to |\count18|\penalty0|<\e at mathgroup@top|, where |\e at mathgroup@top| is the number of math families, which is 256 in \XeTeX\ and Lua\TeX. We get a sanitized definition with |\meaning| and |\strip at prefix|, implement the patch by expanding |\M at p@tch at decl@re|, and retokenize the whole thing. A simpler approach, such as calling |\M at p@tch at decl@re| directly on the expansion of |\DeclareSymbolFont|, won't work because of how \TeX\ stores and expands parameter symbols inside macros.
%
-% As of November 2022, the \LaTeX\ kernel team the name of |\DeclareSymbolFont| to |\DeclareSymbolFont at m@dropped|, and now |\DeclareSymbolFont| is a wrapper around the renamed macro. This was done for error checking purposes to remove extra |m|'s from certain \textsc{nfss} family names. This means that if |\DeclareSymbolFont at m@dropped| is defined, we should patch that macro, and otherwise, we should patch |\DeclareSymbolFont|.
+% As of November 2022, the \LaTeX\ team renamed |\DeclareSymbolFont| to |\DeclareSymbolFont at m@dropped|, and now |\DeclareSymbolFont| is a wrapper around the old version of itself. This was done for error checking purposes to remove extra |m|'s from certain \textsc{nfss} family names. This means that if |\DeclareSymbolFont at m@dropped| is defined, we should patch that macro, and otherwise, we should patch |\DeclareSymbolFont|.
% \begin{macrocode}
\ifx\DeclareSymbolFont at m@dropped\@undefined
- \edef\@tempa{\expandafter\strip at prefix\meaning\DeclareSymbolFont}
+ \edef\@tempa{\expandafter
+ \strip at prefix\meaning\DeclareSymbolFont}
\def\@tempb{\def\DeclareSymbolFont##1##2##3##4##5}
\else
- \edef\@tempa{\expandafter\strip at prefix\meaning\DeclareSymbolFont at m@dropped}
+ \edef\@tempa{\expandafter
+ \strip at prefix\meaning\DeclareSymbolFont at m@dropped}
\def\@tempb{\def\DeclareSymbolFont at m@dropped##1##2##3##4##5}
\fi
\def\M at p@tch at decl@re#1<15#2\@nil{#1<\e at mathgroup@top#2}
@@ -998,27 +1194,29 @@
% Now |\M at DecSymDef| contains the patched text of our new |\DeclareSymbolFont|, all with catcode 12. In order to make it useable, we have to retokenize it. We use |\scantextokens| in Lua\TeX\ and a safe version of |\scantokens| in \XeTeX. We store the |\def\DeclareSymbolFont| and parameter declaration in a separate macro |\@tempa| to make it easy to expand around them when we redefine |\DeclareSymbolFont|.
% \begin{macrocode}
\ifdefined\directlua
- \expandafter\@tempb\expandafter{\scantextokens\expandafter{\M at DecSymDef}}
+ \expandafter\@tempb\expandafter{\scantextokens
+ \expandafter{\M at DecSymDef}}
% \end{macrocode}
-% Unfortunately, while |\scantextokens| is straightforward, |\scantokens| is a menace. The problem is that when it expands, the primitive inserts an end-of-file token (because |\scantokens| mimics writing to a file and |\input|ing what it just wrote) after the retokenized code, and this is why |\scantokens| can produce an end-of-file error. The easiest way to make the command useable is to put a |\noexpand| before the end-of-file token with |\everyeof|, and at the same time, this needs to happen inside an |\edef| so that \TeX\ handles the |\noexpand| as it is first seeing the end-of-file token. In order to prevent the |\edef| from also expanding our retokenized definition of |\DeclareSymbolFont|, we put the definition inside an |\unexpanded|.
+% Unfortunately, while |\scantextokens| is straightforward, |\scantokens| is a menace. The problem is that when it expands, the primitive inserts an end-of-file token (because |\scantokens| mimics writing to a file and |\input|ing what it just wrote) after the retokenized code, and as a result, |\scantokens| can produce an end-of-file error. We can make the command usable by putting a |\noexpand| inside |\everyeof|. In order to prevent the |\edef| from also expanding our retokenized definition of |\DeclareSymbolFont|, we put the definition inside |\unexpanded|.
% \begin{macrocode}
\else
\begingroup
\everyeof{\noexpand}
- \endlinechar\m at ne
% \end{macrocode}
-% The first |\edef| expands |\M at DecSymDef| and defines |\M at retokenize| to be |\scantokens|\penalty0|{|\penalty0|\unexpanded|\penalty0|{|\meta{new definition}|}}|, and the second |\edef| carries out the retokenization. Once we have stored the patched definition in |\M at retokenize|, we expand |\M at retokenize| after the |\endgroup| and redefine |\DeclareSymbolFont| by calling |\@tempa|.
+% The first |\edef| expands |\M at DecSymDef| and defines |\M at retokenize| to be |\scantokens|\penalty0|{|\penalty0|\unexpanded|\penalty0|{|\meta{new definition}|}}|, and the second |\edef| carries out the retokenization. Once we have stored the patched definition in |\M at retokenize|, we expand |\M at retokenize| before the |\endgroup| and redefine |\DeclareSymbolFont| by calling |\@tempa|.
% \begin{macrocode}
- \edef\M at retokenize{\noexpand\scantokens{\noexpand\unexpanded{\M at DecSymDef}}}
+ \edef\M at retokenize{\noexpand\scantokens
+ {\noexpand\unexpanded{\M at DecSymDef}}}
\edef\M at retokenize{\M at retokenize}
\expandafter\endgroup
\expandafter\@tempb\expandafter{\M at retokenize}
\fi
% \end{macrocode}
-% We need to keep track of the number of times we have loaded fonts, and |\M at count| fulfills this role. The |\M at toks| object will record a message that displays in the |log| file when the user calls |\mathfont|. The |\newread| is for Lua-based font adjustments.
+% We need to keep track of the number of times we have loaded fonts, and |\M at count| fulfills this role. The |\toks| will record a message that displays in the |log| file when the user calls |\mathfont|. The |\newread| is for Lua-based font adjustments.
% \begin{macrocode}
\newbox\surdbox
\newcount\M at count
+\newcount\M at num@localfonts
\newcount\M at RuleThicknessFactor
\newcount\M at IntegralItalicFactor
\newcount\M at SurdVerticalFactor
@@ -1033,6 +1231,10 @@
\M at SurdVerticalFactor\@m
\radicandoffset=3mu\relax
% \end{macrocode}
+% Macro that we use later to store font names for local font changes.
+% \begin{macrocode}
+\let\M at localfonts\@empty
+% \end{macrocode}
% Necessary booleans and default math font shapes.
% \begin{macrocode}
\newif\ifM at upper
@@ -1066,6 +1268,9 @@
\newif\ifM at fromCharmFile
% \end{macrocode}
% Default shapes.
+% \let\@@marginmacro\marginmacro ^^A temporarily disable writing macros
+% ^^A in the margin
+% \def\marginmacro#1\@nil{}
% \indexpage{keyword options=keyword options for \texttt{\char`\\mathfont}}
% \begin{macrocode}
\def\M at uppershape{italic} % latin upper
@@ -1093,8 +1298,8 @@
\def\M at bcalshape{upright} % bold caligraphic
\def\M at bfrakshape{upright} % bold fraktur
% \end{macrocode}
-% The |\M at keys| list stores all the possible keyword options, and |\M at defaultkeys| stores the character classes that |\mathfont| acts on by default.
-% \indexpage{keyword options=keyword options for \texttt{\char`\\mathfont}}
+% \let\marginmacro\@@marginmacro
+% The |\M at keys| list stores all the possible keyword options, and |\M at defaultkeys| stores the character classes that |\mathfont| acts on by default.\indexpage{keyword options=keyword options for \texttt{\char`\\mathfont}}
% \begin{macrocode}
\def\M at keys{upper,lower,diacritics,greekupper,%
greeklower,agreekupper,agreeklower,cyrillicupper,%
@@ -1111,6 +1316,7 @@
\fi
% \end{macrocode}
%
+%
% \section{Fontloader}
%
% We come to the fontloader. The main font-loading macro is |\M at newfont|. It expects a font name and OpenType feature information in its argument, and it parses the information, adds fonts to the \textsc{nfss} if necessary, and stores \textsc{nfss} font family names in |\M at f@ntn at me| and |\M at f@nt at n@me at base|. (Advanced users: please do not call |\M at newfont| directly because its implementation may change. Instead call |\mathfont| with the |empty| keyword and extract the \textsc{nfss} family name from |\M at f@ntn at me| or |\M at f@ntn at meb@se|.) Our general approach is to feed the mandatory argument of |\mathfont| to |\M at newfont|, then proceed in one of three ways: (1) if the argument of |\mathfont| corresponds to a font family already in the \textsc{nfss}, including one that \textsf{mathfont} created through the built-in font-loader, check what shapes are present and issue a warning if we appear to be missing any important ones; (2) if the argument is not a family in the \textsc{nfss} and |\M at loader| is 0, we use the default font-loader, which is essentially a wrapper around code that we would expect to find in a typical |fd| file; or (3) otherwise, we feed the font name and feature information directly to \textsf{fontspec} and save the corresponding family name for reference later.
@@ -1174,14 +1380,14 @@
% \begin{macrocode}
\@tempwarning{\expandafter\@gobble\@tempb}}
% \end{macrocode}
-% We use |\M at split@colon| and |\M at strip@colon| for parsing the argument of |\mathfont|. If the user calls |\mathfont{|\meta{name}|:|\meta{features}|}|, we store the name in |\@tempbase| and the features in |\@tempfeatures|. If the user specifies a name only, then |\@tempfeatures| will be empty. Syntactically, we use |\M at strip@colon| to remove a final |:| the same way we remove\st{d} a final |=| when we parse\st{d} the optional argument in the \st{previous}next section.
-% \?\@tempfeatures\?\@tempbase
+% We use |\M at split@colon| and |\M at strip@colon| for parsing the argument of |\mathfont|. If the user calls |\mathfont{|\meta{name}|:|\meta{features}|}|, we store the name in |\@tempbase| and the features in |\@tempfeatures|. If the user specifies a name only, then |\@tempfeatures| will be empty. Syntactically, we use |\M at strip@colon| to remove a final |:| the same way we remove a final |=| when we parse the optional argument in the next section.
% \begin{macrocode}
-\def\M at split@colon#1:#2\@nil{\def\@tempbase{#1}
+\def\M at split@colon#1:#2\@nil{%
+ \def\@tempbase{#1}
\def\@tempfeatures{#2}}
\def\M at strip@colon#1:{#1}
% \end{macrocode}
-% The main font-loading macro. The command takes a single argument, which should have the form \meta{\textsc{nfss} family} or \meta{font name}|:|\meta{optional features}, and it begins by parsing the argument. It splits the argument at a |:| and stores each portion in |\@tempbase| and |\@tempfeatures|. If |\@tempfeatures| is not empty, it has an extra colon at the end. We remove it. Previous versions of \textsf{mathfont} allowed users to say |\mathfont{fontspec}|, but this functionality is no longer supported.
+% The main font-loading macro. The command takes a single argument, which should have the form \meta{\textup{\textsc{nfss}} family} or \meta{font name}|:|\meta{optional features}, and it begins by parsing the argument. It splits the argument at a |:| and stores each portion in |\@tempbase| and |\@tempfeatures|. If |\@tempfeatures| is not empty, it has an extra colon at the end. We remove it. Previous versions of \textsf{mathfont} allowed users to say |\mathfont{fontspec}|, but this functionality is no longer supported.
% \begin{macrocode}
\def\M at newfont#1{%
\edef\@tempa{#1}
@@ -1192,31 +1398,36 @@
% \end{macrocode}
% First we check if the argument is an entry in the \textsc{nfss}. If yes, we check if the shapes are present using |\M at check@nfss at shapes|. We assume that if the user specifies a font family identifier here, they know what they are doing, and the font-loader makes no attempt to fill in missing shapes.
% \begin{macrocode}
- \ifcsname TU+\@tempbase\endcsname % is font family already in nfss?
+ \ifcsname TU+\@tempbase\endcsname % is font family in the nfss?
\let\M at f@ntn at me\@tempbase
\M at check@nfss at shapes\M at f@ntn at me
\ifx\directlua\@undefined % if XeTeX
- \expandafter\edef\csname\M at f@ntn at me-base\endcsname{\M at f@ntn at me}
+ \expandafter\edef
+ \csname\M at f@ntn at me-base\endcsname{\M at f@ntn at me}
\let\M at f@ntn at meb@se\M at f@ntn at me
\else % if LuaTeX
% \end{macrocode}
% With Lua\TeX, we would like to have a proper base-mode version of the font. If the font declaration happened outside of \textsf{mathfont} and the engine is Lua\TeX, then \textsf{mathfont} expects to find another font family whose \textsc{nfss} identifier is stored in |\|\meta{font family}|-base|, and we assume this second font was loaded with |mode=base|. If that information exists, we use it for the base-mode version. Otherwise, we issue a warning if the engine is Lua\TeX.
% \begin{macrocode}
- \ifcsname\M at f@ntn at me-base\endcsname % if base-mode version is known
- \edef\M at f@ntn at meb@se{\csname\M at f@ntn at me-base\endcsname}
+ \ifcsname\M at f@ntn at me-base\endcsname % if base-mode version
+ \edef\M at f@ntn at meb@se
+ {\csname\M at f@ntn at me-base\endcsname}
\M at check@nfss at shapes\M at f@ntn at meb@se
\else
\M at NoBaseModeDetectedWarning{\M at f@ntn at me}
\edef\M at f@ntn at meb@se{\M at f@ntn at me}
- \expandafter\edef\csname\M at f@ntn at me-base\endcsname{\M at f@ntn at me}
+ \expandafter\edef
+ \csname\M at f@ntn at me-base\endcsname{\M at f@ntn at me}
\fi
\fi
% \end{macrocode}
% Now save the font families for reference later.
% \begin{macrocode}
- \expandafter\edef\csname M at fontfamily@\@tempbase\endcsname
+ \expandafter\edef
+ \csname M at fontfamily@\@tempbase\endcsname
{\M at f@ntn at me}
- \expandafter\edef\csname M at fontfamily@base@\@tempbase\endcsname
+ \expandafter\edef
+ \csname M at fontfamily@base@\@tempbase\endcsname
{\M at f@ntn at meb@se}
\else
% \end{macrocode}
@@ -1225,7 +1436,8 @@
\edef at nospace\@tempa{\@tempa}
\ifcsname M at fontfamily@\@tempa\endcsname
\edef\M at f@ntn at me{\csname M at fontfamily@\@tempa\endcsname}
- \edef\M at f@ntn at meb@se{\csname M at fontfamily@base@\@tempa\endcsname}
+ \edef\M at f@ntn at meb@se
+ {\csname M at fontfamily@base@\@tempa\endcsname}
\else
% \end{macrocode}
% If |\M at newfont| doesn't find anything previously that matches |#1|, we load the font. Under the built-in font-loader, the name for the font family will be |#1| with spaces removed, which we store in |\M at f@ntn at me|. (A properly declared \textsc{nfss} font family does not have spaces in its name because \LaTeX\ ignores spaces when scanning a font family declaration.) Then we call |\M at fill@nfss at shapes| to declare all the shapes.
@@ -1234,21 +1446,23 @@
\edef at nospace\@tempa{\@tempa}
\ifcase\M at loader % are we using default font-loader?
\let\M at f@ntn at me\@tempa
- \wlog{Package mathfont Info: Adding \@tempbase\space to the nfss!}
+ \@mathfontinfo{^^JAdding \@tempbase\space
+ to the nfss!}
\wlog{Family name: \M at f@ntn at me}
\DeclareFontFamily{TU}{\M at f@ntn at me}{}
- \M at fill@nfss at shapes{\M at f@ntn at me}{\M at otf@features}{\@tempfeatures}
+ \M at fill@nfss at shapes{\M at f@ntn at me}{\M at otf@features}
+ {\@tempfeatures}
% \end{macrocode}
% If the engine is Lua\TeX, we load a separate version of the font with |mode=base|. Then we link the base-mode and regular versions.
% \begin{macrocode}
\ifdefined\directlua
\edef\M at f@ntn at meb@se{\M at f@ntn at me-base}
- \wlog{Package mathfont Info: Adding \@tempbase with mode=base
+ \@mathfontinfo{Adding \@tempbase\space with mode=base
to the nfss!}
\wlog{Family name: \M at f@ntn at meb@se}
\DeclareFontFamily{TU}{\M at f@ntn at meb@se}{}
- \M at fill@nfss at shapes
- {\M at f@ntn at meb@se}{\M at otf@features}{\@tempfeatures;mode=base}
+ \M at fill@nfss at shapes{\M at f@ntn at meb@se}{\M at otf@features}
+ {\@tempfeatures;mode=base}
\else
\edef\M at f@ntn at meb@se{\M at f@ntn at me}
\fi
@@ -1256,15 +1470,16 @@
% \end{macrocode}
% If the user requested \textsf{fontspec} as the font-loader, we pass the font name and features to |\fontspec_set_family:Nnn| for loading and store the \textsc{nfss} family name in |\M at f@ntn at me|. In Lua\TeX, we request a separate base-mode version by specifying |Renderer=Base|.
% \begin{macrocode}
- \wlog{Package mathfont Info: Passing \@tempbase\space to fontspec
- for handling!}
+ \@mathfontinfo{^^JPassing \@tempbase\space
+ to fontspec for handling!}
\csname fontspec_set_family:Nnn\endcsname\M at f@ntn at me
{\M at otf@features,\@tempfeatures}{\@tempbase}
\ifdefined\directlua
- \wlog{Package mathfont Info: Passing \@tempbase\space with
- Renderer=Base to fontspec for handling!}
+ \@mathfontinfo{Passing \@tempbase\space
+ with Renderer=Base to fontspec for handling!}
\csname fontspec_set_family:Nnn\endcsname\M at f@ntn at meb@se
- {\M at otf@features,\@tempfeatures,Renderer=Base}{\@tempbase}
+ {\M at otf@features,\@tempfeatures,Renderer=Base}
+ {\@tempbase}
\else
\edef\M at f@ntn at meb@se{\M at f@ntn at me}
\fi
@@ -1272,7 +1487,8 @@
% \end{macrocode}
% Now link the base-mode family name and store the family names for future reference.
% \begin{macrocode}
- \expandafter\edef\csname\M at f@ntn at me-base\endcsname{\M at f@ntn at meb@se}
+ \expandafter\edef\csname\M at f@ntn at me-base\endcsname
+ {\M at f@ntn at meb@se}
\expandafter\edef\csname M at fontfamily@\@tempa\endcsname
{\M at f@ntn at me}
\expandafter\edef\csname M at fontfamily@base@\@tempa\endcsname
@@ -1286,7 +1502,7 @@
\@onlypreamble\M at fill@nfss at shapes
\@onlypreamble\M at newfont
% \end{macrocode}
-% At this point, the font information is stored in the \textsc{nfss}, but nothing has been loaded. For text fonts, that happens during a call to |\selectfont|, and for math fonts, that happens the first time entering math mode. I've considered forcing some fonts to load now, but I'm hesitant to change \LaTeX's standard font-loading behavior. On this issue, I plan to leave \textsf{mathfont} as is for the forseeable future.
+% At this point, the font information is stored in the \textsc{nfss}, but nothing has been loaded. For text fonts, that happens during a call to |\selectfont|, and for math fonts, that happens the first time entering math mode. I've considered forcing some fonts to load now, but I'm hesitant to change \LaTeX's standard font-loading behavior. On this issue, I plan to leave \textsf{mathfont} as is for the foreseeable future. (Which probably means forever because backwards compatibility.)
%
%
%
@@ -1353,7 +1569,7 @@
\ifx\@temp at sub\@empty
\else
\edef\@temp at sub{\expandafter\M at strip@equals\@temp at sub}
- \M at check@suboption at valid\@temp at sub % check that suboption is valid
+ \M at check@suboption at valid\@temp at sub % is suboption legit?
\fi
\fi
% \end{macrocode}
@@ -1377,42 +1593,37 @@
% Perhaps something that sets spaces to |\catcode9| and then retokenizes |#2| would be better, but I don't think it matters very much.
%
%
-% \section{Default Font Changes}
+% \section{Default Font Changes}\indexpage{default font changes}
%
-% This section documents default math font changes. The user-level font-changing command is |\mathfont|, and it feeds the font information to |\@mathfont|, the internal command that does the actual font changing. This macro is basically a wrapper around |\DeclareSymbolFont| and a bunch of calls to |\DeclareMathSymbol|, and when the user calls |\@mathfont|, the command declares the user's font in the \textsc{nfss} with |\M at newfont| and loops through the optional argument. On each iteration, |\@mathfont| validates the option and suboption, calls |\DeclareSymbolFont| if necessary, and sets the math codes with |\M@|\meta{keyword}|@set|.
+% This\vadjust{\penalty-100} section documents default math font changes. The user-level font-changing command is |\mathfont|, and it feeds the font information to |\@mathfont|, the internal command that does the actual font changing. This macro is basically a wrapper around |\DeclareSymbolFont| and a bunch of calls to |\DeclareMathSymbol|, and when the user calls |\@mathfont|, the command declares the user's font in the \textsc{nfss} with |\M at newfont| and loops through the optional argument. On each iteration, |\@mathfont| validates the option and suboption, calls |\DeclareSymbolFont| if necessary, and sets the math codes with |\M@|\meta{keyword}|@set|.
% \indexpage{keyword options=keyword options for \texttt{\char`\\mathfont}}
% \begin{macrocode}
-\protected\def\mathfont{\@ifnextchar[{\@mathfont}{\@mathfont[\M at defaultkeys]}}
+\protected\def\mathfont{\@testopt{\@mathfont}{\M at defaultkeys}}
% \end{macrocode}
-% The internal font-changing command.
+% The internal font-changing command. As of version 2.4, I'm taking out |\restoremathinternals|, so we don't need to check for restored primitives anymore.
% \begin{macrocode}
\def\@mathfont[#1]#2{%
- \ifx\set at mathchar\@@set at mathchar
- \M at InternalsRestoredError
+ \M at toks{}
% \end{macrocode}
-% If the kernel commands have not been reset, we can do fun stuff. As of version 2.0, I'm removing the documentation for |\restoremathinternals| in the user guide, but the code will stay in for backwards compatibility.
+% We call |\M at newfont| on the mandatory argument of |\mathfont|, which stores the two \textsc{nfss} family names (one for default renderer and one for base-mode renderer if using Lua\TeX) in |\M at f@ntn at me| and |\M at f@ntn at meb@se|. If we need a new value of |\M at count|, we store it in |\M at fontid@|\meta{\textup{\textsc{nfss}} family name}. We will not need a new value of |\M at count| if the user asks for the same \textsc{nfss} font family twice. Throughout the definition of |\mathfont|, |\@tempa| stores the value of |\M at count| that corresponds to the current font.
+% \indexpage{keyword options=keyword options for \texttt{\char`\\mathfont}}
% \begin{macrocode}
+ \M at newfont{#2}
+ \ifcsname M at fontid@\M at f@ntn at me\endcsname % need new \M at count?
\else
- \M at toks{}
+ \expandafter\edef
+ \csname M at fontid@\M at f@ntn at me\endcsname{\the\M at count}
+ \expandafter\edef
+ \csname M at fontid@\M at f@ntn at meb@se\endcsname{\the\M at count}
+ \advance\M at count\@ne
+ \fi
+ \edef\@tempa{\csname M at fontid@\M at f@ntn at me\endcsname}
% \end{macrocode}
-% We call |\M at newfont| on the mandatory argument of |\mathfont|, which stores the two \textsc{nfss} family names (one for default renderer and one for base-mode renderer if using Lua\TeX) in |\M at f@ntn at me| and |\M at f@ntn at meb@se|. If we need a new value of |\M at count|, we store it in |\M at fontid@|\meta{\textsc{nfss} family name}. We will not need a new value of |\M at count| if the user asks for the same \textsc{nfss} font family twice. Throughout the definition of |\mathfont|, |\@tempa| stores the value of |\M at count| that corresponds to the current font.
-% \indexpage{keyword options=keyword options for \texttt{\char`\\mathfont}}
-% \begin{macrocode}
- \M at newfont{#2}
- \ifcsname M at fontid@\M at f@ntn at me\endcsname\else % need new \M at count value?
- \expandafter\edef\csname M at fontid@\M at f@ntn at me\endcsname{\the
- \M at count}
- \expandafter\edef\csname M at fontid@\M at f@ntn at meb@se\endcsname{\the
- \M at count}
- \advance\M at count\@ne
- \fi
- \edef\@tempa{\csname M at fontid@\M at f@ntn at me\endcsname}
-% \end{macrocode}
% Expand, zap spaces from, and store the optional argument in |\@tempa|, and then perform the loop. We store the current keyword-suboption pair in |\@i| and then feed it to |\M at parse@option|. We need two |\edef|s here because |\zap at space| appears before |\@tempa| in |\M at eat@spaces|. We expand the argument with the first |\edef| and remove the spaces with the second.
% \begin{macrocode}
- \edef at nospace\@tempb{#1}
- \@for\@i:=\@tempb\do{\expandafter\M at parse@option\@i=\@nil
- \if at optionpresent
+ \edef at nospace\@tempb{#1}
+ \@for\@i:=\@tempb\do{\expandafter\M at parse@option\@i=\@nil
+ \if at optionpresent
% \end{macrocode}
% If the user calls |\mathfont| and tries multiple times to set the font for a certain class of characters, \textsf{mathfont} will issue a warning, and the package will not adjust the font for those characters. Notice the particularly awkward syntax with the |\csname|-|\endcsname| pairs. Without this construct, \TeX\ won't realize that |\csname if@\@tempa\endcsname| matches the eventual |\fi|, and the |\@for| loop will break. (\TeX\ does not have a smart if-parser!)
% \indexpage{I already set the font}
@@ -1419,98 +1630,113 @@
% \indexpage{if-parser}
% \indexpage{keyword options=keyword options for \texttt{\char`\\mathfont}}
% \begin{macrocode}
- \expandafter\ifx % next line is two cs to be compared
- \csname ifM@\@temp at opt\expandafter\endcsname\csname iftrue\endcsname
- \M at CharsSetWarning{\@temp at opt}
- \else
+ \expandafter\ifx % next lines are two cs to be compared
+ \csname ifM@\@temp at opt\expandafter\endcsname
+ \csname iftrue\endcsname
+ \M at CharsSetWarning{\@temp at opt}
+ \else
% \end{macrocode}
% The case where the current option has not had its math font set. We add the keyword-option to the |\toks|.
% \begin{macrocode}
- \edef\@tempc{\the\M at toks^^J\@temp at opt}
- \M at toks\expandafter{\@tempc}
+ \edef\@tempc{\the\M at toks^^J\@temp at opt}
+ \M at toks\expandafter{\@tempc}
% \end{macrocode}
% If it's present, store the suboption in |\@|\meta{option}|shape| and overwrite the default definition from earlier. Then add the shape information to the toks and store it in |\@tempc|. When it actually sets the font by calling |\M@|\meta{keyword}|@set|, \textsf{mathfont} will determine shape information for the current character class by calling the same |\@|\meta{option}|shape| macro that we store in |\@tempc|.
% \begin{macrocode}
- \if at suboptionpresent
- \expandafter\edef\csname M@\@temp at opt shape\endcsname{\@temp at sub}
- \fi
- \edef\@tempc{\the\M at toks\space
- (\csname M@\@temp at opt shape\endcsname)}
- \M at toks\expandafter{\@tempc}
- \edef\@tempc{\csname M@\@temp at opt shape\endcsname}
+ \if at suboptionpresent
+ \expandafter\edef
+ \csname M@\@temp at opt shape\endcsname{\@temp at sub}
+ \fi
+ \edef\@tempc{\the\M at toks\space
+ (\csname M@\@temp at opt shape\endcsname)}
+ \M at toks\expandafter{\@tempc}
+ \edef\@tempc{\csname M@\@temp at opt shape\endcsname}
% \end{macrocode}
% \indexpage{suboption roman=suboption \texttt{roman}}
% \indexpage{suboption italic=suboption \texttt{italic}}
% We store the font shape information in |\@tempb|, specifically |\@tempb| will be the default \textsc{nfss} shape code corresponding to the current suboption. At this point, |\@tempc| is either ``upright'' or ``italic,'' so we temporarily let |\@tempb| be the string ``upright'' and check if it equals |\@tempc|. We redefine |\@tempb| depending on the results.
% \begin{macrocode}
- \def\@tempb{upright}
- \ifx\@tempb\@tempc
- \let\@tempb\shapedefault
- \else
- \let\@tempb\itdefault
- \fi
+ \def\@tempb{upright}
+ \ifx\@tempb\@tempc
+ \let\@tempb\shapedefault
+ \else
+ \let\@tempb\itdefault
+ \fi
% \end{macrocode}
-% At this point we have the information we need to declare the symbol font: the \textsc{nfss} family (|\M at f@ntn at me|), series (|\mddefault|), and shape (|\@tempb|) information. The symbol font name will be |M|\meta{suboption}\meta{value of {\fontshape\shapedefault\fontfamily\ttdefault\selectfont\string\M at count}}. We check if the symbol font we need for the current set of characters is defined, and if not, we define it using this information.
+% At this point we have the information we need to declare the symbol font, namely the \textsc{nfss} family (|\M at f@ntn at me|), series (|\mddefault|), and shape (|\@tempb|). The symbol font name will be |M|\meta{suboption}\meta{value of \textrm{\texttt{\string\M at count}}}. We check if the symbol font we need for the current set of characters is defined, and if not, we define it using this information.
% \begin{macrocode}
- \ifcsname symM\@tempc\@tempa\endcsname\else
- \M at SymbolFontInfo{\@tempbase}{\M at f@ntn at meb@se}
- {\mddefault/\@tempb}{M\@tempc\@tempa}
- \DeclareSymbolFont
- {M\@tempc\@tempa}{TU}{\M at f@ntn at meb@se}{\mddefault}{\@tempb}
- \fi
+ \ifcsname symM\@tempc\@tempa\endcsname\else
+ \M at SymbolFontInfo{\@tempbase}{\M at f@ntn at meb@se}
+ {\mddefault/\@tempb}{M\@tempc\@tempa}
+ \DeclareSymbolFont{M\@tempc\@tempa}{TU}
+ {\M at f@ntn at meb@se}{\mddefault}{\@tempb}
+ \fi
% \end{macrocode}
% We store the new font information so we can write it to the |log| file |\AtBeginDocument| and send an informational message to the user.\indexpage{log file=\texttt{log} file}
% \begin{macrocode}
- \expandafter
- \edef\csname M@\@temp at opt @fontinfo\endcsname{\@tempbase}
- \M at FontChangeInfo{\@temp at opt}{\@tempbase}
+ \expandafter\edef
+ \csname M@\@temp at opt @fontinfo\endcsname{\@tempbase}
+ \M at FontChangeInfo{\@temp at opt}{\@tempbase}
% \end{macrocode}
+% We have extra information to keep track of when |\@temp at opt| is |bb|, |cal|, |frak|, |bcal|, or |bfrak| because then \textsf{mathfont} effectively creates a new local font-change command, and we want to make sure that information gets added to |\M at localfonts|.
+% \begin{macrocode}
+ \@tfor\@j:={bb}{cal}{frak}{bcal}{bfrak}\do{%
+ \ifx\@temp at opt\@j
+ \@expandtwoargs\M at addto@localfonts
+ {\expandafter\string
+ \csname math\@temp at opt\endcsname}
+ {\@tempbase}
+ \@break at tfor
+ \fi}
+% \end{macrocode}
% And now the magic happens!
-% \indexpage{keyword options=keyword options for \texttt{\char`\\mathfont}}
-% \?\M at upper@set
-% \?\M at lower@set
-% \?\M at diacritics@set
-% \?\M at greekupper@set
-% \?\M at greeklower@set
-% \?\M at agreekupper@set
-% \?\M at agreeklower@set
-% \?\M at cyrillicupper@set
-% \?\M at cyrilliclower@set
-% \?\M at hebrew@set
-% \?\M at digits@set
-% \?\M at operator@set
-% \?\M at delimiters@set
-% \?\M at radical@set
-% \?\M at bigops@set
-% \?\M at extbigops@set
-% \?\M at symbols@set
-% \?\M at extsymbols@set
-% \?\M at arrows@set
-% \?\M at bb@set
-% \?\M at cal@set
-% \?\M at frak@set
-% \?\M at bcal@set
-% \?\M at bfrak@set
+% \bgroup
+% \advance\c at CodelineNo\@ne
+% \SpecialIndex{\M at upper@set}
+% \SpecialIndex{\M at lower@set}
+% \SpecialIndex{\M at diacritics@set}
+% \SpecialIndex{\M at greekupper@set}
+% \SpecialIndex{\M at greeklower@set}
+% \SpecialIndex{\M at agreekupper@set}
+% \SpecialIndex{\M at agreeklower@set}
+% \SpecialIndex{\M at cyrillicupper@set}
+% \SpecialIndex{\M at cyrilliclower@set}
+% \SpecialIndex{\M at hebrew@set}
+% \SpecialIndex{\M at digits@set}
+% \SpecialIndex{\M at operator@set}
+% \SpecialIndex{\M at delimiters@set}
+% \SpecialIndex{\M at radical@set}
+% \SpecialIndex{\M at bigops@set}
+% \SpecialIndex{\M at extbigops@set}
+% \SpecialIndex{\M at symbols@set}
+% \SpecialIndex{\M at extsymbols@set}
+% \SpecialIndex{\M at arrows@set}
+% \SpecialIndex{\M at bb@set}
+% \SpecialIndex{\M at cal@set}
+% \SpecialIndex{\M at frak@set}
+% \SpecialIndex{\M at bcal@set}
+% \SpecialIndex{\M at bfrak@set}
+% \egroup
% \begin{macrocode}
- \csname M@\@temp at opt @set\endcsname % set default font
- \csname M@\@temp at opt true\endcsname % set switch to true
- \fi
- \fi}
+ \csname M@\@temp at opt @set\endcsname % set default font
+ \csname M@\@temp at opt true\endcsname % set switch to true
+ \fi
+ \fi}
% \end{macrocode}
% Display concluding messages for the user.
% \indexpage{log file=\texttt{log} file}
% \indexpage{terminal}
% \begin{macrocode}
- \edef\@tempa{\the\M at 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 at toks}
- \fi
+ \edef\@tempa{\the\M at 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 at toks}
\fi}
\@onlypreamble\mathfont
\@onlypreamble\m at thf@nt
@@ -1529,7 +1755,7 @@
% \begin{macrocode}
\let\M at SetMathConstants\relax
\protected\def\mathconstantsfont{%
- \@ifnextchar[{\@mathconstantsfont}{\@mathconstantsfont[upright]}}
+ \@testopt{\@mathconstantsfont}{upright}}
\def\@mathconstantsfont[#1]#2{%
\edef at nospace\@tempa{#2}
\edef\@tempa{\csname M at fontfamily@base@\@tempa\endcsname}
@@ -1551,7 +1777,8 @@
\M at BadMathConstantsFontTypeError{#1}
\fi
\fi
- \ifcsname symM#1\csname M at fontid@\@tempa\endcsname\endcsname\else
+ \ifcsname symM#1\csname M at fontid@\@tempa\endcsname\endcsname
+ \else
\DeclareSymbolFont{M#1\csname M at fontid@\@tempa\endcsname}
{TU}{\@tempa}{\mddefault}{\m at th@const at nts@font at sh@pe}
\fi
@@ -1559,13 +1786,14 @@
% \end{macrocode}
% We come to the tricky problem of making sure to use the correct MathConstants table. Lua\TeX\ automatically initializes all math parameters based on the most recent |\textfont|, etc.\ assignment, so we want to tell \LaTeX\ to reassign whatever default font we're using to the correct math family whenever we load new math fonts. This is possible, but the implementation is super hacky. When \LaTeX\ enters math mode, it checks whether it needs to redo any math family assignments, typically because of a change in font size, and if so, it calls |\getanddefine at fonts| repeatedly to append |\textfont|, etc.\ assignments onto the macro |\math at fonts|. Usually |\math at fonts| is empty because this process always happens inside a group, so we can hook into the code by defining |\math at font| to be |\aftergroup|\meta{extra code}. In this case, the \textit{extra code} will be another call to |\getanddefine at fonts|.
%
-% We initialize |\M at SetMathConstants| to be |\relax|, so we define it the first time the user calls |\mathconstantsfont|. The command calls |\getanddefine at fonts| inside a group and uses as arguments the upright face of the font corresponding to |#1|. Then we call |\math at fonts|, and to avoid an infinite loop, we gobble the |\aftergroup||\M at SetMathConstants| macros that \textsf{mathfont} has inserted at the start of |\math at fonts|. Setting |\globaldefs| to 1 makes the |\textfont|, etc.\ assignments from |\getanddefine at fonts| global when we call |\math at fonts|.\indexpage{LaTeX kernel=\LaTeX\ kernel}^^A
+% We initialize |\M at SetMathConstants| to be |\relax|, and we define it the first time the user calls |\mathconstantsfont|. When that happens, \textsf{mathfont} begins by calling |\getanddefine at fonts| inside a group and uses as arguments the upright face of the font corresponding to |#1|. That puts the |\textfont|, |\scriptfont|, and |\scriptscriptfont| assignments corresponding to |#1| inside |\math at fonts|. Then we call |\math at fonts|, and to avoid an infinite loop, we gobble the |\aftergroup||\M at SetMathConstants| macros that \textsf{mathfont} has inserted at the start of |\math at fonts|. Setting |\globaldefs| to 1 makes the |\textfont|, etc.\ assignments from |\getanddefine at fonts| global when we call |\math at fonts|.\indexpage{LaTeX kernel=\LaTeX\ kernel}^^A
% \begin{macrocode}
\protected\def\M at SetMathConstants{%
\begingroup
\escapechar\m at ne
\expandafter\getanddefine at fonts
- \csname symM#1\csname M at fontid@\m at th@const at nts@font\endcsname
+ \csname symM#1%
+ \csname M at fontid@\m at th@const at nts@font\endcsname
\expandafter
\endcsname % expands to \symMupright<id>
\csname TU/\m at th@const at nts@font
@@ -1573,19 +1801,19 @@
/\m at th@const at nts@font at sh@pe
\endcsname % expands to \TU/<nfss family name>/m/<shape>
\globaldefs\@ne
- \expandafter\@gobbletwo\math at fonts % gobble to avoid infinite loop
+ \expandafter\@gobbletwo\math at fonts % avoid infinite loop
\endgroup}
\fi
\ifM at adjust@font\else
- \M at MathConstantsNoFontAdjustWarning
+ \M at MathConstantsNoAdjustWarning
\fi}
\def\math at fonts{\aftergroup\M at SetMathConstants}
\@onlypreamble\mathconstantsfont
% \end{macrocode}
-% If the user has not enabled Lua font adjustments, then |\mathconstantsfont| will generate an error message and gobble its argument. This definition happens later in |mathfont.sty| when we define other Lua-related macros such as |\IntegralItalicFactor| to do the same thing absent font adjustments.
+% If the user did not enable Lua font adjustments, then |\mathconstantsfont| will generate an error message and gobble its argument. This definition happens later in |mathfont.sty| when we define other Lua-related macros such as |\IntegralItalicFactor| to do the same thing absent font adjustments.
%
-% \vfill
%
+%
% \section{Local Font Changes}\indexpage{local font changes}
%
% This section deals with local font changes. The |\newmathfontcommand| creates macros that change the font for math alphabet characters and is basically a wrapper around |\DeclareMathAlphabet|. First we code |\M at check@csarg|, which accepts two arguments. The |#1| argument is the user-level command that called |\M at check@csarg|, which we use for error messaging, and |#2| should be a single control sequence. The way |\M at check@csarg| scans the following tokens is a bit tricky: (1) check the length of the argument by seeing if |\@gobble| eats it completely; and (2) check that the argument is a control sequence. If the user specifies an argument of the form |{..}|, i.e.\ extra text inside braces, the |\ifcat| will catch it and issue an error. If |\M at check@csarg| likes the input, it sets |\ifM at good@arg| to true, and otherwise, it sets |\ifM at arg@good| to false.
@@ -1603,8 +1831,38 @@
\M at arg@goodfalse
\fi}
% \end{macrocode}
-% Now declare the math alphabet. This macro first checks that its |#1| argument is a control sequence using |\M at check@csarg|. If yes, we feed the |#2| argument to |\M at newfont| for loading, print a message in the |log| file, and call |\DeclareMathAlphabet|.
+% The macro |\M at checkspecials| accepts a control sequence as its |#1| argument and a font name as its |#2| argument, and it checks whether |#1| is |\mathbb| or a related command. If yes, we assume that the user is using some variant of |\newmathrm| instead of |\mathfont[bb]|, so we do some processing analogous to what we do inside |\mathfont|.
% \begin{macrocode}
+\def\M at checkspecials#1#2{%
+ \in@#1{\mathbb\mathcal\mathfrak\mathbcal\mathbfrak}
+ \ifin@
+% \end{macrocode}
+% We set |\escapechar| to $-1$ and use |\@gobblefour| to remove the |\math| from the start of |#1|. The string of |\expandafter|s hits the |\string| inside |\@tempa|, and then the |\edef| expands the |\@gobblefour|. We are left with just the keyword inside |\@tempa|.
+% \begin{macrocode}
+ \begingroup
+ \escapechar\m at ne
+ \expandafter
+ \endgroup
+ \expandafter\edef\expandafter\@tempa\expandafter{%
+ \expandafter\@gobblefour\string#1}
+% \end{macrocode}
+% Then write a message to the |log| file and set the corresponding boolean to true.
+% \begin{macrocode}
+ \@mathfontinfo{Interpreting your new macro \string#1\space
+ as \@tempa\space chars.}
+ \@mathfontinfo{Setting \expandafter\string
+ \csname ifM@\@tempa\endcsname\space to true.}
+ \csname M@\@tempa true\endcsname
+% \end{macrocode}
+% And store the information to write to the |log| file |\AtBeginDocument|. The structure of |\M@|\meta{keyword}|shape| is unusual because we want the macro to gobble ``|\space shape|'' in |\M at keyword@info at begin|.
+% \begin{macrocode}
+ \expandafter\edef\csname M@\@tempa @fontinfo\endcsname{#2}
+ \expandafter\edef\csname M@\@tempa shape\endcsname
+ \space shape{inferred from \string#1}
+ \fi}
+% \end{macrocode}
+% Now declare the math alphabet. This macro first checks that its |#1| argument is a control sequence using |\M at check@csarg|. If yes, load the |#2| argument with |\M at newfont|, call |\DeclareMathAlphabet|, and check whether |#1| is |\mathbb| or a related command, and finally add |#1| and |#2| to the list of local font-change commands.
+% \begin{macrocode}
\protected\def\newmathfontcommand#1#2#3#4{%
\M at check@csarg\newmathfontcommand{#1}
\ifM at arg@good
@@ -1611,10 +1869,31 @@
\M at newfont{#2}
\M at NewFontCommandInfo{#1}{\@tempbase}{\M at f@ntn at meb@se}{#3}{#4}
\DeclareMathAlphabet{#1}{TU}{\M at f@ntn at meb@se}{#3}{#4}
+ \M at checkspecials{#1}{\@tempbase}
+ \M at addto@localfonts{\string#1}{\@tempbase}
\fi}
\@onlypreamble\newmathfontcommand
% \end{macrocode}
-% Then define macros that create local font-changing commands with default series and shape information. Because they're all so similar, we metacode them. We define the commands themselves with |\define at newmath@cmd|. The argument structure is:
+% A helper macro that accepts two arguments. Its |#1| argument is a control sequence (from |\string|), and the |#2| argument is a font name. This macro checks whether |#2| is a new font, increments |\M at num@localfonts| if so, and then adds both |#1| and |#2| to |\M at localfonts|. If |\M at localfonts| is |\@empty|, that means we haven't added any fonts to the list yet, so in that case, we obviously increase |\M at num@localfonts|. Otherwise we loop through |\M at localfonts|, and if any of them are equal to |\@tempbase|, we do not need to increase |\M at num@localfonts|. We have to use |\@tempb| instead of |\@tempa| here because we use |\M at addto@localfonts| inside |\mathfont| where we need to preserve the definition of |\@tempb|.
+% \begin{macrocode}
+\def\M at addto@localfonts#1#2{%
+ \ifx\M at localfonts\@empty
+ \advance\M at num@localfonts\@ne
+ \edef\M at localfonts{{#1}{#2}}
+ \else
+ \@tempswatrue % increase by default
+ \@for\@j:=\M at localfonts\do{%
+ \edef\@tempb{\expandafter\@secondoftwo\@j}
+ \ifx\@tempbase\@tempb
+ \@tempswafalse % if \@tempbase is in list, don't add
+ \fi}
+ \if at tempswa
+ \advance\M at num@localfonts\@ne
+ \fi
+ \edef\M at localfonts{\M at localfonts,{#1}{#2}}
+ \fi}
+% \end{macrocode}
+% Then define macros that create local font-changing commands with default series and shape information. Because they're all similar, we metacode them. We define the commands themselves with |\define at newmath@cmd|. The argument structure is:
% \begin{itemize}
% \item |#1|---|\newmath|\meta{key} macro name
% \item |#2|---font series
@@ -1637,7 +1916,8 @@
\newmathscit{\mddefault}{\scdefault\itdefault},%
\newmathbfsc{\bfdefault}{\scdefault},%
\newmathbfscit{\bfdefault}{\scdefault\itdefault}}
-\@for\@i:=\M at default@newmath at cmds\do{\expandafter\M at define@newmath at cmd\@i}
+\@for\@i:=\M at default@newmath at cmds\do{%
+ \expandafter\M at define@newmath at cmd\@i}
\@onlypreamble\newmathrm
\@onlypreamble\newmathit
\@onlypreamble\newmathbf
@@ -1662,54 +1942,22 @@
\newmathbfscit\mathbfscit{#1}}
\@onlypreamble\setmathfontcommands
% \end{macrocode}
-% We provide |\newmathbold| and |\newmathboldit| for backwards compatibility but issue a warning.
-% \begin{macrocode}
-\protected\def\newmathbold{%
- \M at DeprecatedWarning\newmathbold\newmathbf\newmathbf}
-\protected\def\newmathboldit{%
- \M at DeprecatedWarning\newmathboldit\newmathbfit\newmathbfit}
-% \end{macrocode}
%
-% \section{Miscellaneous Material}
%
+% \section{Miscellaneous}
%
%
-% We begin this section with the user-level macros that provide information for Lua-based font adjustments. If font adjustments are allowed, we begin with a macro |\M at check@int| that passes the user's argument to Lua and determines whether it is an integer. We check whether the argument contains a backslash or quote mark similar to error checking later in |\CharmLine|. Depending on the result, \textsf{mathfont} sets |\ifM at arg@good| to true or false.
+% We begin this section with the user-level macros that provide information for Lua-based font adjustments. If font adjustments are allowed, we begin with a macro |\M at check@int| that checks whether |#1| is a nonnegative integer. Depending on the result, \textsf{mathfont} sets |\ifM at arg@good| to true or false. The use of |\afterassignment| is inspired by |\@defaultunits| from the \LaTeX\ kernel.
% \begin{macrocode}
\ifM at adjust@font
\def\M at check@int#1{%
- \M at arg@goodfalse
- \begingroup
- \edef\@tempa{\number0#1}
- \edef\@tempa{\detokenize\expandafter{\@tempa}}
- \@expandtwoargs\in@{"}{\@tempa}
-% \end{macrocode}
-% If |#1| contains a |"| or backslash, we set |\M at arg@good| to false and stop parsing the argument.
-% \begin{macrocode}
- \ifin@ % is " in #1?
- \endgroup % first branch \endgroup
- \else
- \@expandtwoargs\in@{\@backslashchar}{\@tempa}
- \ifin@ % is backslash in #1?
- \endgroup % second branch \endgroup
+ \def\@tempa##1\relax{\def\@tempb{##1}}
+ \afterassignment\@tempa\count@=0#1\relax
+ \expandafter\ifx\expandafter\@nnil\@tempb\@nnil
+ \M at arg@goodtrue
\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 at arg@goodtrue%
- \@backslashchar\@backslashchar endcsname")
- end}
- \fi
- \fi}
+ \M at arg@goodfalse
+ \fi}
% \end{macrocode}
% We meta-code the definitions of |\RuleThicknessFactor|, etc. To keep the syntax relatively clean, we temporarily eliminate the |\escapechar| and redefine |~| to |\noexpand|.
% \begin{macrocode}
@@ -1722,8 +1970,10 @@
\protected\expandafter\edef\@i#1{%
~\M at check@int{#1}%
~\ifM at arg@good
- ~\global
- \expandafter~\csname M@\expandafter\string\@i\endcsname=#1\relax
+ ~\global\expandafter
+ ~\csname
+ M@\expandafter\string\@i
+ \endcsname=#1\relax
~\else
~\M at BadIntegerError\expandafter~\@i{#1}%
~\fi}}
@@ -1733,11 +1983,11 @@
% If automatic font adjustments are disabled, we should also disable the related user-level commands. In this case, each of the font-adjustment macros expands to raise an |\M at NoFontAdjustError| and gobble its argument.
% \begin{macrocode}
\else
- \@tfor\@i:=\RuleThicknessFactor\IntegralItalicFactor\SurdHorizontalFactor
- \SurdVerticalFactor\CharmLine\CharmFile
+ \@tfor\@i:=\RuleThicknessFactor\IntegralItalicFactor
+ \SurdHorizontalFactor\SurdVerticalFactor\CharmLine\CharmFile
\do{%
- \protected\expandafter\edef\@i{\noexpand\M at NoFontAdjustError
- \expandafter\noexpand\@i
+ \protected\expandafter\edef\@i{%
+ \noexpand\M at NoFontAdjustError\expandafter\noexpand\@i
\noexpand\@gobble}}
\fi
% \end{macrocode}
@@ -1750,42 +2000,26 @@
\@onlypreamble\CharmLine
\@onlypreamble\CharmFile
% \end{macrocode}
-% Provide the command to reset the kernel. I am not sure that we need this macro, but it will stay in the package for backwards compatibility.
-% \indexpage{Internal commands restored}
+% As of version 2.4, I'm taking out |\restoremathinternals|. We use the next three macros in defining |\simeq| and |\cong|. The construction is clunky and needs the intermediate macro |\st at ck@fl at trel| because |\mathchoice| is a bit of an odd macro. It feels like it should be expandable, but it isn't. Instead, it fully typesets each of its four arguments and then takes the one corresponding to the correct style. A cleaner implementation would use |\mathstyle| from Lua\TeX, but this control sequence isn't always accurate. In fact, the Lua\TeX\ manual suggests that it is impossible to have an expandable version of |\mathchoice| that is always correct because of how \TeX's math mode algorithm works..
% \begin{macrocode}
-\def\restoremathinternals{%
- \ifx\set at mathchar\@@set at mathchar
+\protected\gdef\clap#1{\hb at xt@\z@{\hss#1\hss}}
+\protected\def\stack at flatrel#1#2{\expandafter
+ \st at ck@fl at trel\expandafter#1\@firstofone#2}
+\protected\gdef\st at ck@fl at trel#1#2#3{%
+ {\setbox0\hbox{$\m at th#1#2$}% contains \mathrel symbol
+ \setbox1\hbox{$\m at th#1#3$}% gets raised over \box0
+ \if\wd0>\wd1\relax
+ \hb at xt@\wd0{%
+ \hfil
+ \clap{\raise0.7\ht0\box1}%
+ \clap{\box0}\hfil}%
\else
- \wlog{Package mathfont Info: Restoring \string\set at mathchar.}
- \wlog{Package mathfont Info: Restoring \string\set at mathsymbol.}
- \wlog{Package mathfont Info: Restoring \string\set at mathaccent.}
- \wlog{Package mathfont Info: Restoring \string\DeclareSymbolFont.}
- \let\set at mathchar\@@set at mathchar
- \let\set at mathsymbol\@@set at mathsymbol
- \let\set at mathaccent\@@set at mathaccent
- \let\DeclareSymbolFont\@@DeclareSymbolFont
- \fi}
+ \hb at xt@\wd1{%
+ \hfil
+ \clap{\raise0.7\ht0\box1}%
+ \clap{\box0}\hfil}%
+ \fi}}
% \end{macrocode}
-% Three macros used in defining |\simeq| and |\cong|. The construction is clunky and needs the intermediate macro |\st at ck@fl at trel| because |\mathchoice| is a bit of an odd macro. Instead of expanding to different replacement text depending on the math style, it fully typesets each of its four arguments and then takes the one corresponding to the correct style. A cleaner implementation would use |\mathstyle| from Lua\TeX---perhaps in a future version.
-% \begin{macrocode}
- \protected\gdef\clap#1{\hb at xt@\z@{\hss#1\hss}}
- \protected\def\stack at flatrel#1#2{\expandafter
- \st at ck@fl at trel\expandafter#1\@firstofone#2}
- \protected\gdef\st at ck@fl at trel#1#2#3{%
- {\setbox0\hbox{$\m at th#1#2$}% contains \mathrel symbol
- \setbox1\hbox{$\m at th#1#3$}% gets raised over \box0
- \if\wd0>\wd1\relax
- \hb at xt@\wd0{%
- \hfil
- \clap{\raise0.7\ht0\box1}%
- \clap{\box0}\hfil}%
- \else
- \hb at xt@\wd1{%
- \hfil
- \clap{\raise0.7\ht0\box1}%
- \clap{\box0}\hfil}%
- \fi}}
-% \end{macrocode}
% Some fonts do not contain characters that \textsf{mathfont} can declare as math symbols. We want to make sure that if this happens, \TeX\ prints a message in the |log| file and terminal.\indexpage{log file=\texttt{log} file}\indexpage{terminal}
% \begin{macrocode}
\ifnum\tracinglostchars<\tw@
@@ -1792,21 +2026,159 @@
\tracinglostchars\tw@
\fi
% \end{macrocode}
-% Write to the |log| file |\AtBeginDocument| all font changes carried out by \textsf{mathfont}. The command |\keyword at info@begindocument| accepts two arguments and is what acutally prints the informational message after the preamble. One argument is a keyword-argument from |\mathfont|, and the other is a number of spaces. The spaces make the messages line up with each other in the log file.\indexpage{log file=\texttt{log} file}
+% If \textsf{mathfont} is adjusting fonts, it also changes the |\Umathcode|s for Latin letters. As a result, math alphabet commands will no longer work for fonts where \textsf{mathfont} as not added new Latin letters in the correct encoding slots. The |\M at normal@mathcodes| macro addresses this issue by resetting all Latin letters to their usual encoding slots in math mode. This macro should always appear inside a group, and I am intending for it to be used alongside math alphabet commands from other packages. In particular, we use this macro to make \textsf{mathfont} compatible with any |\mathbb| or related commands that don't come from \textsf{mathfont}.
% \begin{macrocode}
-\def\keyword at 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
+\ifM at adjust@font
+ \protected\def\M at normal@mathcodes{%
+ \ifM at upper
+ \Umathcode`A=7+0+`A\relax
+ \Umathcode`B=7+0+`B\relax
+ \Umathcode`C=7+0+`C\relax
+ \Umathcode`D=7+0+`D\relax
+ \Umathcode`E=7+0+`E\relax
+ \Umathcode`F=7+0+`F\relax
+ \Umathcode`G=7+0+`G\relax
+ \Umathcode`H=7+0+`H\relax
+ \Umathcode`I=7+0+`I\relax
+ \Umathcode`J=7+0+`J\relax
+ \Umathcode`K=7+0+`K\relax
+ \Umathcode`L=7+0+`L\relax
+ \Umathcode`M=7+0+`M\relax
+ \Umathcode`N=7+0+`N\relax
+ \Umathcode`O=7+0+`O\relax
+ \Umathcode`P=7+0+`P\relax
+ \Umathcode`Q=7+0+`Q\relax
+ \Umathcode`R=7+0+`R\relax
+ \Umathcode`S=7+0+`S\relax
+ \Umathcode`T=7+0+`T\relax
+ \Umathcode`U=7+0+`U\relax
+ \Umathcode`V=7+0+`V\relax
+ \Umathcode`W=7+0+`W\relax
+ \Umathcode`X=7+0+`X\relax
+ \Umathcode`Y=7+0+`Y\relax
+ \Umathcode`Z=7+0+`Z\relax
+ \fi
+ \ifM at lower
+ \Umathcode`a=7+0+`a\relax
+ \Umathcode`b=7+0+`b\relax
+ \Umathcode`c=7+0+`c\relax
+ \Umathcode`d=7+0+`d\relax
+ \Umathcode`e=7+0+`e\relax
+ \Umathcode`f=7+0+`f\relax
+ \Umathcode`g=7+0+`g\relax
+ \Umathcode`h=7+0+`h\relax
+ \Umathcode`i=7+0+`i\relax
+ \Umathcode`j=7+0+`j\relax
+ \Umathcode`k=7+0+`k\relax
+ \Umathcode`l=7+0+`l\relax
+ \Umathcode`m=7+0+`m\relax
+ \Umathcode`n=7+0+`n\relax
+ \Umathcode`o=7+0+`o\relax
+ \Umathcode`p=7+0+`p\relax
+ \Umathcode`q=7+0+`q\relax
+ \Umathcode`r=7+0+`r\relax
+ \Umathcode`s=7+0+`s\relax
+ \Umathcode`t=7+0+`t\relax
+ \Umathcode`u=7+0+`u\relax
+ \Umathcode`v=7+0+`v\relax
+ \Umathcode`w=7+0+`w\relax
+ \Umathcode`x=7+0+`x\relax
+ \Umathcode`y=7+0+`y\relax
+ \Umathcode`z=7+0+`z\relax
+ \fi}
+% \end{macrocode}
+% We loop through each |bb|, etc.\ keyword and check whether the corresponding |\math|\meta{keyword} is defined. For convenience, we store |\math|\meta{keyword} inside |\@tempa|. If the definition didn't come from \textsf{mathfont}, we wrap a call to |\M at normal@mathcodes| around the macro. This has to happen |\AtBeginDocument| because the user could load a package after \textsf{mathfont} that defines |\mathbb|.
+% \begin{macrocode}
+ \AtBeginDocument{\@tfor\@i:={bb}{cal}{frak}{bcal}{bfrak}\do{%
+ \ifcsname math\@i\endcsname
+% \end{macrocode}
+% If |\math|\meta{keyword} is defined, check whether the definition came from \textsf{mathfont}. Once again, we use |\ifx| with two booleans inside |\csname|/|\endcsname| pairs becuase otherwise \TeX\ will get confused and think we have an unbalanced boolean inside |\@tfor|.
+% \begin{macrocode}
+ \expandafter\ifx % next two lines are cs to be compared
+ \csname ifM@\@i\expandafter\endcsname
+ \csname iffalse\endcsname % is \ifM@<keyword> false?
+% \end{macrocode}
+% If \textsf{mathfont} did not define the control sequence, we have to do things. First an informational message in the |log| file.
+% \begin{macrocode}
+ \@mathfontinfo{Restoring \string\Umathcode\space values
+ for \expandafter\string\csname math\@i\endcsname.}
+% \end{macrocode}
+% Then save |\math|\meta{keyword} as |\@@math|\meta{keyword}, and make |\math|\meta{keyword} into a wrapper around its original definition.
+% \begin{macrocode}
+ \expandafter\let\csname @@math\@i\expandafter\endcsname
+ \csname math\@i\endcsname
+ \protected\expandafter\edef\csname math\@i\endcsname#1{%
+ \begingroup
+ \noexpand\M at normal@mathcodes
+ \expandafter\noexpand\csname @@math\@i\endcsname{#1}
+ \endgroup}
+ \fi
+ \fi}}
+% \end{macrocode}
+% If \textsf{mathfont} is not adjusting fonts, then we do not need to change any |\Umathcodes|.
+% \begin{macrocode}
+\else
+ \let\M at normal@mathcodes\relax
+\fi
+% \end{macrocode}
+% Now a messages about local font changes. We |\typeout| a message about local font-change commands.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \ifcase\M at num@localfonts
+ \or
+ \def\@tempa#1#2#3\@nil{#2}
+ \wlog{}
+ \typeout{:: mathfont :: Using
+ \expandafter\@tempa\M at localfonts\@nil\space
+ for local font changes.}
+ \else
+ \wlog{}
+ \typeout{:: mathfont :: Using \the\M at num@localfonts\space
+ fonts for local font changes.}
+ \fi}
+% \end{macrocode}
+% Write to the |log| file |\AtBeginDocument| all font changes carried out by \textsf{mathfont}. The command |\M at keyword@info at begin| accepts two arguments and prints an informational message about default font changes for keyword options for |\mathfont|. The |#1| argument is a keyword, and the |#2| argument is a number of spaces. The spaces make the messages line up with each other in the log file.\indexpage{log file=\texttt{log} file}
+% \begin{macrocode}
+\def\M at keyword@info at begin#1:#2\@nil{%
+ \expandafter\ifx % next lines are two cs to be compared
+ \csname ifM@#1\expandafter\endcsname
+ \csname iftrue\endcsname
+ \wlog{#1#2\@spaces\space\space\space Set to
\csname M@#1 at fontinfo\endcsname,
- \csname M@#1shape\endcsname\space shape.}
+ \csname M@#1shape\endcsname\space shape}
\else
- \wlog{#1:#2\@spaces No change.}
+ \wlog{#1#2\@spaces\space\space\space No change}
\fi}
% \end{macrocode}
+% The macro |\M at local@info at begin| does the same thing except for the local font-change commands. The |#1| argument is a control sequence from |\string|, and the |#2| argument is a font name. We use |\count@| and |\@tfor| to count out the number of characters in |#1|, and if we get to 13, we cut it off and add three dots. We need to use this approach here because the control sequences in |\M at localfonts| have an unknown number of characters. We could have coded up an algorithm like this for |\M at keyword@info at begin| too, but I didn't do it before, and it won't make any practical difference to do it now.
+% \begin{macrocode}
+\def\M at local@info at begin#1#2{%
+ \let\@tempa\@empty
+ \count@\z@
+ \@tfor\@i:=#1\do{%
+ \edef\@tempa{\@tempa\@i}
+ \advance\count@\@ne
+ \ifnum\count@=15\relax
+ \edef\@tempa{\@tempa...}
+ \advance\count@\thr@@
+ \@break at tfor
+ \fi}
+% \end{macrocode}
+% Now add spaces to |\@tempa| until we get up to 20 characters. At that point, we can write the message to the |log| file.
+% \begin{macrocode}
+ \@whilenum\count@<20\do{%
+ \edef\@tempa{\@tempa\space}
+ \advance\count@\@ne}
+ \wlog{\@tempa#2}}
+% \end{macrocode}
% Now print the messages.
% \begin{macrocode}
\AtBeginDocument{%
+ \wlog{}
+ \wlog{********************************************^^J%
+ * Changes made by mathfont in the preamble *^^J%
+ ********************************************^^J}
+ \wlog{Fonts for character classes:}
\def\@tempa{% <-- everything should be 14 characters long
upper:\@spaces\@spaces,%
lower:\@spaces\@spaces,%
@@ -1832,9 +2204,18 @@
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 at info@begindocument\@i\@nil}
+ \expandafter\M at keyword@info at begin\@i\@nil}
+ \wlog{}
+% \end{macrocode}
+% And information in the |log| file about local font-change commands.
+% \begin{macrocode}
+ \wlog{Local font-change commands:}
+ \ifnum\M at num@localfonts=\z@
+ \wlog{No local font change commands declared.}
+ \else
+ \@for\@j:=\M at localfonts\do{\expandafter\M at local@info at begin\@j}
+ \fi
\wlog{}}
% \end{macrocode}
% Warn the user about possible problems with a multi-word optional package argument in \XeTeX.
@@ -1892,11 +2273,11 @@
%
%
% The next three sections implement Lua-based font adjustments and apply only if the user has enabled font adjustment. Most of the implementation happens through Lua code, but we need some \TeX\ code in case the user wants to adjust character metric information. Here is a rough outline of what happens in the next three sections:
-% \begin{enumerate}\itemsep\z@
+% \begin{enumerate}\itemsep\smallskipamount
% \item Initialize a Lua table that contains new metrics for certain characters specific to math mode, such as letters with wider bounding boxes and large operator symbols.
% \item Provide an interface for the user to change this metric information.
% \item Write functions that accept a fontdata object and (a) change top-level math specs to indicate that we have a math function; (b) alter characters according to our Lua table of new metric information; and (c) populate a MathConstants table for the font.
-% \item Create callbacks that call these functions. Insert them into |luaotfload.patch_font|.
+% \item Create callbacks that call these functions. Put a wrapper around them, and insert the wrapper-function into |luaotfload.patch_font|.
% \end{enumerate}
% Step 2 happens on the \TeX\ side of things and is documented next, and everything else happens inside |\directlua|. On the Lua side of things, we store all the functions and character metric information in the table |mathfont|. Every entry in mathfont is a function or is a subtable indexed within |mathfont| by an \meta{integer}. The \textit{integer} is a unicode encoding number and tells which unicode character the subtable keeps track of. See tables~2 and 3 for a list of the functions in |mathfont| and the fields in character subtables. See section 11 for discussion of the callbacks for editing fontdata objects.
%
@@ -1903,9 +2284,9 @@
%
% \begin{figure}[t]
% \centerline{\bfseries Table 2: Fields of Character Subtables in |mathfont|\strut}
-% \begin{tabularx}\textwidth{lllllX}\toprule
-% Field & Data Type & In |a|? & In |e|? & In |u|? & Used For\\\midrule
-% |type| & string & Yes & Yes & Yes & Tells if type |a|, |e|, |u|\\
+% \begin{tabularx}\textwidth{lllllX<{\raggedright\arraybackslash}}\toprule
+% Field & Data Type & In |a| & In |e| & In |u| & Used For\\\midrule
+% |type| & string & Yes & Yes & Yes & Type is |a|, |e|, |u|\\
% |next| & depends & Yes & Yes & No & Unicode index of next-larger character(s);
% integer for type |a|, table for type |u|\\
% |left_stretch| & numeric & Yes & No & No & Stretch bounding box left\\
@@ -1919,15 +2300,15 @@
% \end{figure}
%
%
-% \begin{figure}[t]
+% \begin{figure}[tbp]
% \centerline{\bfseries Table 3: Functions in |mathfont|\strut}
-% \begin{tabularx}\textwidth{llX}\toprule
+% \begin{tabularx}\textwidth{lp{1.5in}X<{\raggedright\arraybackslash}}\toprule
% Function & Argument(s) & Used For\\\midrule
% |new_type_a| & |index|, |next|, data & Add type |a| entry to |mathfont|\\
% |new_type_e| & |index|, |smash|, |next|, data & Add type |e| entry to |mathfont|\\
% |new_type_u| & |index|, |smash|, |next|, data & Add type |u| entry to |mathfont|\\\midrule
% |add_to_charm| & string of new charm info & Add new charm into to |mathfont|\\
-% |parse_charm| & string of new charm info & Split the string, validate inputs\\\midrule
+% |parse_charm| & string of new charm info & Split string, validate inputs\\\midrule
% |empty| & none & Does nothing\\
% |glyph_info| & character subtable & Return height, width, depth, italic\\
% |make_a_commands| & |index|, offset & Return virtual font commands\\
@@ -1944,7 +2325,7 @@
% |get_font_name| & fontdata & Return font name\\
% |info| & string & Writes a message in the |log| file\\
% |math_constants| & fontdata & Creates a MathConstants table\\
-% |set_nomath_true| & fontdata & Set top-level font specs for math\\\bottomrule
+% |set_nomath_false| & fontdata & Set top-level font specs for math\\\bottomrule
% \end{tabularx}
% \end{figure}
%
@@ -1968,21 +2349,25 @@
~def~M at 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%
+ 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 at index@ssert{"\n%
Package mathfont error: Invalid unicode index.\n\n%
- The unicode index \""..split_string[1].."\" is invalid. Make sure\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 at 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%
+ 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"}}
% \end{macrocode}
@@ -2093,7 +2478,7 @@
self[index].bot_accent_stretch = data[2] / 1000
end
% \end{macrocode}
-% Interim processing. We provide a way for the user to edit resizing and accent information for the characters in |mathfont|. The function |mathfont.parse_charm| parses and validates the user's input, and the function |mathfont:add_to_charm| incorporates the user's information into the tables already in |mathfont|. The |mathfont:add_to_charm| function expects a single string of integers, floats, or asterisks separated by spaces or commas and immediately passes it to |parse_charm|. Our first task is to split the string into components, and we store the results in |split_string|. The dummy variable |i| keeps track of the number of entries currently in |split_string|.
+% Interim processing. We let the user edit resizing and accent information for the characters in |mathfont|. The function |mathfont.parse_charm| parses and validates the user's input, and the function |mathfont:add_to_charm| incorporates the user's information into the tables already in |mathfont|. The |mathfont:add_to_charm| function expects a single string of integers, floats, or asterisks separated by spaces or commas and immediately passes it to |parse_charm|. Our first task is to split the string into components, and we store the results in |split_string|. The dummy variable |i| keeps track of the number of entries currently in |split_string|.
% \begin{macrocode}
function mathfont.parse_charm(charm_input)
local split_string = {}
@@ -2103,7 +2488,8 @@
% \end{macrocode}
% We loop through |charm_string| as long as it contains a comma or space. At each iteration, we remove the portion of |charm_string| preceeding the first comma or space and append it to |split_string| as a separate entry.
% \begin{macrocode}
- while string.find(charm_string, " ") or string.find(charm_string, ",") do
+ 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
@@ -2123,10 +2509,10 @@
% If |temp_string| is not empty, we store it in position |i| in |split_string|, then increment |i| by 1. If |temp_string| does not contain a number or asterisk, we raise an error.
% \begin{macrocode}
if temp_string \noexpand~= "" then
- if tonumber(temp_string) then % if a number, append number
+ if tonumber(temp_string) then % if a number, append it
split_string[i] = tonumber(temp_string)
i = i+1
- elseif temp_string == "*" then % if asterisk, append asterisk
+ elseif temp_string == "*" then % if asterisk, append it
split_string[i] = temp_string
i = i+1
else % if neither, raise error
@@ -2135,7 +2521,7 @@
end
end
% \end{macrocode}
-% After we iterate the splitting procedure, we have a final portion of |charm_string| with no commas or spaces, and we perform the same check as on |temp_string| above.
+% After iteratinf the splitting procedure, we have a final portion of |charm_string| with no commas or spaces, and we perform the same check as on |temp_string| above.
% \begin{macrocode}
temp_string = charm_string
if temp_string \noexpand~= "" then
@@ -2157,9 +2543,11 @@
% \end{macrocode}
% The last check is to make sure the entry is (1) an integer and not a float; (2) nonnegative; and (3) less than 1,114,111, the maximum unicode entry. We round the entry down by subtracting the decimal portion, and the result will be equal to the original entry if and only if we begn with an integer. We perform the three checks inside an |assert| and issue an error if any of them fail, and if |split_string| is valid, we return it to |mathfont:add_to_charm|.
% \begin{macrocode}
- local rounded = index - (index \@percentchar 1) % subtract decimal portion
+ local rounded = index - (index \@percentchar 1) % round down
local max = 1114111
- assert(index == rounded and index >= 0 and index <= max, \M at index@ssert)
+ assert(index == rounded and
+ index >= 0 and
+ index <= max, \M at index@ssert)
return split_string
end
% \end{macrocode}
@@ -2211,11 +2599,13 @@
% \end{macrocode}
% The final two entries for type |e| or |r| are the accent information.
% \begin{macrocode}
- if charm_metrics[2*tot_variants+2] \noexpand~= "*" then
- self[index].top_accent_stretch = charm_metrics[2*tot_variants+2] / 1000
+ 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
+ if charm_metrics[2 * tot_variants + 3] \noexpand~= "*" then
+ self[index].bot_accent_stretch =
+ charm_metrics[2 * tot_variants + 3] / 1000
end
% \end{macrocode}
% Again the information for type |u| is the simplest. We need two values besides the |index|, one for the top accent and one for the bottom accent.
@@ -2232,7 +2622,7 @@
end
end
% \end{macrocode}
-% We end this section with three general-purpose Lua functions. The |make_hex_value| function accepts a nonnegative integer and returns its hexadecimal representation as a string. The result will go in the variable |hex_string|. We handle the cases of 0 and 1 manually.
+% We end this section with three general-purpose Lua functions. The first function, |make_hex_value|, accepts a nonnegative integer and returns its hexadecimal representation as a string. The result will go in the variable |hex_string|. We handle the cases of 0 and 1 manually.
% \begin{macrocode}
function mathfont.make_hex_value(integer)
if integer == 0 then
@@ -2258,7 +2648,8 @@
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)
+ hex_string = hex_string ..
+ string.sub(hex_digits, curr_val+1, curr_val+1)
curr_val = remainder
end
% \end{macrocode}
@@ -2300,28 +2691,29 @@
% \end{macrocode}
%
%
+%
% \section{Adjust Fonts: Changes}
%
%
-% \begin{figure}[t]
+%
+%
+% This section contains the Lua functions\vadjust{\penalty\z@} that actually modify the font during loading. The three functions |set_nomath_false|, |math_constants|, and |apply_charm_info| do most of the heavy lifting, and we set them as the default behavior for three callbacks. In total, \textsf{mathfont} defines six different callbacks and calls them inside the function |adjust_font|---see table~4 for a list. Each callback accepts a fontdata object as an argument and returns nothing. You can use these callbacks to change \textsf{mathfont}'s default modifications or to modify a fontdata object before or after \textsf{mathfont} looks at it. Be aware that if you add a function to any of the |disable_nomath|, |add_math_constants|, or |fix_character_metrics| callbacks, Lua\TeX\ will not call the default |mathfont| function associated with the callback anymore. In other words, do not mess with these three callbacks unless you are duplicating the functionality of the corresponding ``Default Behavior'' function from table~4.
+%
+% \begin{figure}[bp]
% \centerline{\bfseries Table 4: Callbacks Created by \textsf{mathfont}\strut}
-% \begin{tabularx}\textwidth{lXl}\toprule
-% Callback Name & Called? & Default Behavior\\\midrule
-% |"mathfont.inspect_font"| & Always & none\\\midrule
-% |"mathfont.pre_adjust"| &
-% \multirow{5}{*}{\vbox{\hbox{If |nomath|}\hbox{in |fontdata|}\hbox{is set to true}}} & none\\
-% |"mathfont.disable_nomath"| & & |mathfont.set_nomath_true|\\
-% |"mathfont.add_math_constants"| & & |mathfont.math_constants|\\
-% |"mathfont.fix_character_metrics"|& & |mathfont.apply_charm_info|\\
-% |"mathfont.post_adjust"| & & none\\\bottomrule
+% \begin{tabularx}\textwidth{lX}\toprule
+% Callback Name & Default Behavior\\\midrule
+% |"mathfont.inspect_font"| & None\\\midrule
+% |"mathfont.pre_adjust"| & None\\
+% |"mathfont.disable_nomath"| & |mathfont.set_nomath_false|\\
+% |"mathfont.add_math_constants"| & |mathfont.math_constants|\\
+% |"mathfont.fix_character_metrics"|& |mathfont.apply_charm_info|\\
+% |"mathfont.post_adjust"| & None\\\bottomrule
% \end{tabularx}
% \end{figure}
-%
-%
-%
%
-% This section contains the Lua functions that actually modify the font during loading. The three functions |set_nomath_true|, |math_constants|, and |apply_charm_info| do most of the heavy lifting, and we set them as the default behavior for three callbacks. In total, \textsf{mathfont} defines six different callbacks and calls them inside the function |adjust_font|---see table~4 for a list. Each callback accepts a fontdata object as an argument and returns nothing. You can use these callbacks to change \textsf{mathfont}'s default modifications or to modify a fontdata object before or after \textsf{mathfont} looks at it. Be aware that if you add a function to any of the |disable_nomath|, |add_math_constants|, or |fix_character_metrics| callbacks, Lua\TeX\ will not call the default |mathfont| function associated with the callback anymore. In other words, do not mess with these three callbacks unless you are duplicating the functionality of the corresponding ``Default Behavior'' function from table~4.
%
+%
% We begin with the functions that modify character subtables in the font table, and in all cases, we return a new character table (or set of character tables in the case of type |e|) that we insert into the font object. For types |a| and |e|, we code the table from scratch, and for type |u|, we add information to the character tables that already exist in the font object. The three functions for assembling character tables take three arguments. The |index| argument is the unicode index of the base character that the function is modifying. The |charm_data| argument is the subtable in |mathfont| of charm information that corresponds to |index|, and the |fontdata| argument is a font object. We will pull information from |charm_data| and |fontdata| to assemble the new table.
%
% We will incorporate five categories of information into our new character tables: glyph dimensions, unicode values, accent placement dimensions, virtual font commands, and math kerning. For type |a|, we increase the original horizontal glyph dimensions based on charm information, and for type |e|, we increase the width by horizontal scale factors and the height and depth by vertical scale factors. Accent placement dimensions come from charm information. For types |a| and |e|, we return a character table that will become a virtual character in the font, and we need to include commands to typeset certain base characters. For type |e|, we also create the large variants through |pdf| commands that stretch the base glyphs.
@@ -2365,9 +2757,10 @@
a_table.tounicode = self.make_hex_value(index)
% \end{macrocode}
% We specify accent placement information by including |top_accent| and |bot_accent| entries in the |a_table|. We determine placement by setting the |top_accent| to be a base value plus a distance determined by the charm data and similarly for |bot_accent|. We imagine dividing up the character's bounding box as follows: (1)~some rectangular portion of the left and right areas of the bounding box is empty space added according to |left_stretch| and |right_stretch|; (2)~accordingly, the glyph occupies some rectangular area in the middle of the bounding box; (3)~if the font is slanted, that rectangle will actually be a parallogram where the rectangle overhangs both slanted edges of the parallogram in two triangles; and (4)~we can determine the size of these triangles according to the |slant| font parameter. We want the base measurement for the top accent to be located in the middle of the parallogram from step~(3) previously, and we end up with
-% \[
-% \hbox{base measurement}={|left_stretch|}*{|width|}+0.5*({|width|}-\sigma_1*{|height|})+\sigma_1*{|height|},
-% \]
+% \begin{align*}
+% \hbox{base measurement}&={\texttt{left\_stretch}}*{\texttt{width}}\\
+% &\qquad{}+0.5*({\texttt{width}}-\sigma_1*{\texttt{height}})+\sigma_1*{\texttt{height}},
+% \end{align*}
% where $\sigma_1$ is the |slant| parameter and |width| and |height| refer to the character in question. This equation simplifies to
% \[
% (0.5 + {|left_stretch|}) * {|width|} + 0.5 \sigma_1 * {|height|},
@@ -2374,8 +2767,10 @@
% \]
% which is the formula we use for the base value of the top accent. We determine the base value of the bottom accent similarly. For the shift amount, we take the corresponding factor from the charm information and multiply it by the width of the character. Note that in all these cases, we use the |width|, not the |new_width| as our unit of measurement. This keeps the scaling of the accent placement independent of the |left_stretch| and |right_stretch| values.
% \begin{macrocode}
- 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_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
@@ -2408,8 +2803,10 @@
% \end{macrocode}
% Now get the scale factors from the \TeX\ side of things and scale down (or up) the height and with of the surd.
% \begin{macrocode}
- local horizontal_scale = tex.getcount("M at SurdHorizontalFactor") / 1000
- local vertical_scale = tex.getcount("M at SurdVerticalFactor") / 1000
+ local horizontal_scale =
+ tex.getcount("M at SurdHorizontalFactor") / 1000
+ local vertical_scale =
+ tex.getcount("M at SurdVerticalFactor") / 1000
char.width = horizontal_scale * char.width
char.height = vertical_scale * height
end
@@ -2417,7 +2814,8 @@
% For the integral symbol, get the scale factor add the appropriate italic correction.
% \begin{macrocode}
if index == 8747 then
- local scale_factor = tex.getcount("M at IntegralItalicFactor") / 1000
+ local scale_factor =
+ tex.getcount("M at IntegralItalicFactor") / 1000
char.italic = scale_factor * width
end
end
@@ -2425,8 +2823,9 @@
% For the |e| commands, we not only typeset a certain glyph but also instruct the |pdf| backend to scale by a horizontal and vertical factor before doing so. In this way, we artificially add larger variants of a particular base glyph. The |pdf| command sends code directly to the pdf backend that handles the transformation. The |q| command indicates a linear transformation of the output, and the following string contains the transformation coordinates. The |Q| command restores the original coordinate system, and because it occurs between the transformation commands, the typeset glyph from the |char| command will be enlarged according to the transformation matrix.
% \begin{macrocode}
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_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}
@@ -2467,10 +2866,14 @@
% \end{macrocode}
% We handle accent placement the same way as with type |a| characters.
% \begin{macrocode}
- 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
+ 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
% \end{macrocode}
@@ -2499,10 +2902,14 @@
% \end{macrocode}
% We handle accents in the same way as with the other types.
% \begin{macrocode}
- 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
+ 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
% \end{macrocode}
@@ -2539,7 +2946,8 @@
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)},
+ {"pdf", "origin",
+ string.format("q 1 0 0 \@percentchar s 0 0 cm", factor)},
{"char", smash},
{"pdf", "origin", "Q"},
{"down", -shift}}
@@ -2548,7 +2956,7 @@
% \end{macrocode}
% We come to the main functions that modify the font. We need to accomplish three tasks, and we define separate functions for each one. First, we set the font's |nomath| entry to |false|. Second, we incorporate the modifications based on charm information into the font, i.e.\ set the font's character subtables using the previous functions from this section. Third, we need to add a MathConstants table. The first task is very easy.
% \begin{macrocode}
-function mathfont.set_nomath_true(fontdata)
+function mathfont.set_nomath_false(fontdata)
fontdata.nomath = false
fontdata.oldmath = false
end
@@ -2562,15 +2970,19 @@
% \begin{macrocode}
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[1044540] = mathfont:smash_glyph(171, fontdata) % \llguil
+ chars[1044541] = mathfont:smash_glyph(187, fontdata) % \rrguil
% \end{macrocode}
% Now add the characters to the font.
% \begin{macrocode}
- 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)
+ 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)
% \end{macrocode}
% Add the nabla (inverted Delta) character to the font if it is missing.
% \begin{macrocode}
@@ -2582,8 +2994,10 @@
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].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 = {
@@ -2602,7 +3016,8 @@
% If the character's type is |a|, all we need to do is replace the character subtable in the font with our version.
% \begin{macrocode}
if info.type == "a" then
- chars[info.next] = mathfont:make_a_table(index, info, fontdata)
+ chars[info.next] =
+ mathfont:make_a_table(index, info, fontdata)
% \end{macrocode}
% Again, type |e| is more complicated. This time we need to insert multiple character subtables into the font, one for the smashed version of the base glyph and others corresponding to the large variants that we create using the |:make_e_table| function from above. We also need to add |next| entries to the caracters in the font linking all the variants together.
% \begin{macrocode}
@@ -2618,7 +3033,8 @@
% \end{macrocode}
% The function that creates the character table for type |e| produces one character subtable for each larger variant that we want to add, so we loop through the resulting table and add the contents to the font one at time. Each subtable goes in unicode slots that we take from the charm information, specifically the |next| table from |info|.
% \begin{macrocode}
- local variants_table = mathfont:make_e_table(index, info, 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
@@ -2626,7 +3042,8 @@
% We deal with type |u| in the same way as we do type |a|.
% \begin{macrocode}
elseif info.type == "u" then
- chars[index] = mathfont:make_u_table(index, info, fontdata)
+ chars[index] =
+ mathfont:make_u_table(index, info, fontdata)
end
end
end
@@ -2660,7 +3077,8 @@
% \begin{macrocode}
local dim = "FractionRuleThickness"
if not fontdata.MathConstants[dim] then
- local scale_factor = tex.getcount("M at RuleThicknessFactor") / 1000
+ local scale_factor =
+ tex.getcount("M at RuleThicknessFactor") / 1000
rule_thickness = (size / 18) * scale_factor
fontdata.MathConstants[dim] = rule_thickness
else
@@ -2685,14 +3103,15 @@
%
% The parameter $\xi_9$ is the minimum clearance between the top of a large operator and the limit above it, and we set it to be twice the rule thickness. Before ensuring that the bottom of the upper limit is at least $\xi_9$ away from the operator character, \TeX\ attempts to position the baseline of the limit at $\xi_{10}$ distance above the operator character, and we set $\xi_{10}$ to be slightly larger than $\xi_9$. If the upper limit has no decender, \TeX\ will raise its baseline by $\xi_{10}$, and if it has a descener, \TeX\ will position the bottom of the descender to be $\xi_9$ above the operator, which in practice means it will be higher than limits without descenders. This approach balances the desire for consistency in whitespace with the desire for consistency in baseline height. Similarly, we set the minimum clearance $\xi_{11}$ for the lower limit to be equal to the attempted clearance for the upper limit, and the attempted clearance $\xi_{12}$ for the lower limit will be the minimum clearance plus the average of the |\scriptfont| x-height and |\scriptfont| A-height.
% \begin{macrocode}
- 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 xi_9 = 2 * rule_thickness % top limit min clearance
+ local xi_10 = xi_9 + 0.35 * y_depth % bottom limit try placement
+ local xi_11 = xi_10 % top limit min clearance
+ local xi_12 = xi_10 + 0.35 * (A_height + ex) % bottom attempt
% \end{macrocode}
% Our general approach for |\displaystyle| fractions is to place the baseline of the numerator numerator at a distance above the fraction rule of 1.5 times the rule height plus descender depth plus a small extra space. The minimum clearance will be the rule height, so we expect the numerator to strictly exceed the minimum clearance in most situations. Doing so produces consistent baselines of numerators and gives our value for $\sigma_8$, the attempted height of the numerator in |\displaystyle| fractions. For smaller styles, we use a single rule height as clearance, so we add $0.5*|rule_thickness|+|y_depth|$ scaled down by 0.7 to the rule thickness. The minimum clearance for numerator and denominator are separate OpenType parameters, and we set them later. The extra 0.1 A-height in the attempted clearance relative to the minimum clearance appears because we measure attempted clearance from the axis, whereas we measure minimum clearance from the top or bottom of the fraction rule.
% \begin{macrocode}
- local sigma_8 = axis + 1.5 * rule_thickness + y_depth + 0.1 * A_height
+ 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
@@ -2699,22 +3118,22 @@
% \end{macrocode}
% Our approach in the denominators is the same except that we add half the descender depth to the minimum clearance. This creates extra space below the fraction rule so that the typographical color above the rule matches that below the rule when the numerator contains descenders.
% \begin{macrocode}
- 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_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)
% \end{macrocode}
% For superscripts we think in terms of the top of the superscript. We raise the baseline of the superscript by the desired height of the superscript top minus the |\scriptfont| A-height. Choosing $1.3*|A_height|$ for regular styles and $1.2*|A_height|$ for cramped styles was a design choice that worked well. The attempted drop for subscripts is one-fifth the A-height or slightly more than the y-depth, whichever is greater. This way the subscript baseline is slightly lower than any descenders, and for fonts without descenders, we still clearly lower the subscript. Setting $\sigma_{18}$ and $\sigma_{19}$ was another design choice that worked well.
% \begin{macrocode}
- 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
+ local sigma_13 = 0.6 * A_height % attempted superscript height
+ local sigma_15 = 0.5 * A_height % attempt for cramped scripts
+ 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 sigma_17 = sigma_16 % sigma_16 when superscript
+ local sigma_18 = 0.5 * A_height % superscript lower for boxed
+ local sigma_19 = 0.1 * A_height % subscript lower for boxed
% \end{macrocode}
% The MathConstants themselves come from the unicode equivalents of the traditional \TeX\ |\fontdimen| parameters where appropriate. Where not appropriate, I made design choices as indicated. Setting the next three parameters was purely a design choice.
% \begin{macrocode}
@@ -2898,11 +3317,13 @@
% \begin{macrocode}
local dim = "StackDisplayStyleGapMin"
if not fontdata.MathConstants[dim] then
- fontdata.MathConstants[dim] = 5 * rule_thickness + 0.5 * y_depth
+ 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
+ fontdata.MathConstants[dim] = 3 * rule_thickness +
+ 0.35 * y_depth
end
% \end{macrocode}
% With three exceptions, superscript and subscript parameters come from traditional \TeX\ dimensions.
@@ -2957,7 +3378,8 @@
% \begin{macrocode}
local dim = "SuperscriptBottomMaxWithSubscript"
if not fontdata.MathConstants[dim] then
- fontdata.MathConstants[dim] = -sigma_16 + 0.7 * A_height + rule_thickness
+ fontdata.MathConstants[dim] = -sigma_16 +
+ 0.7 * A_height + rule_thickness
end
% \end{macrocode}
% As with the |Overbar| parameters, we set the extra clearance to be the rule height and the gap to be twice the rule height.
@@ -2985,15 +3407,18 @@
% \end{macrocode}
% Time for callbacks! We create six of them.
% \begin{macrocode}
-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)
+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_false)
+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)
% \end{macrocode}
% The functions |mathfont.info| and |mathfont.get_font_name| are used for informational messaging. The first prints a message in the |log| file, and the second returns a font name.
% \begin{macrocode}
@@ -3001,33 +3426,41 @@
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 "<??>"
+ return fontdata.fullname or
+ fontdata.psname or
+ fontdata.name or "<??>"
end
% \end{macrocode}
-% The |adjust_font| function is what we will actually be adding to |luaotfload.patch_font|. This function calls the six callbacks at appropriate times and writes informational messages in the |log| file.
+% The |adjust_font| function is what actually goes in |luaotfload.patch_font|. This function calls the six callbacks at appropriate times and writes informational messages in the |log| file.
% \begin{macrocode}
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)
+ local the_font = mathfont.get_font_name(fontdata)
+ mathfont.info("Adjusting font " .. the_font .. ".")
+ 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) .. ".")
+ mathfont.info("No changes made to " .. the_font .. ".")
end
end
% \end{macrocode}
% Finally, add the processing function to \textsf{luaotfload}'s |patch_font| callback.
% \begin{macrocode}
-luatexbase.add_to_callback("luaotfload.patch_font", mathfont.adjust_font,
- "mathfont.adjust_font")
+luatexbase.add_to_callback("luaotfload.patch_font",
+ mathfont.adjust_font, "mathfont.adjust_font")
% \end{macrocode}
%
%
+%
% \section{Adjust Fonts: Metrics}
%
%
@@ -3217,17 +3650,17 @@
% Populate each table with magnification information. For every type |e| character we will create fifteen larger variants in the font. Delimiters stretch mostly vertically and some horzontally. Vertical characters stretch vertically only, so their horizontal scale factors are all constant. Big operators stretch the same in vertical and horizoontal directions.
% \begin{macrocode}
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
+ delim_scale[2*i-1] = 1000 + 100*i % delimiters - horizontal
+ delim_scale[2*i] = 1000 + 500*i % delimiters - vertical
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
+ vert_scale[2*i] = 1000 + 500*i % vertically scaled chars
+ big_op_scale[2*i-1] = 1000 + 100*i % big operators - horizontal
+ big_op_scale[2*i] = 1000 + 100*i % big operators - vertical
% \end{macrocode}
% The integral sign is particular. Visually, we would like an integral symbol that is larger than the large operators, which means that the integral sign should have no variants between the font's value of |\Umathoperatorsize| and the desired larger size. Accordingly, I decided it would be easiest to have large variants of the integral sign jump by large enough scale factors that the smallest variant larger than the regular size is already significantly larger than the |\Umathoperatorsize| setting in |populate_math_constants|. Effectively this means that the user should take the size of the integral operator as fixed and should set |\Umathoperatorsize| to make all other big operators the desired size.
% \begin{macrocode}
- int_scale[2*i-1] = 1000 + 500*i % horizontal - integral sign
- int_scale[2*i] = 1000 + 1500*i % vertical - integral sign
+ int_scale[2*i-1] = 1000 + 500*i % integral sign - horizontal
+ int_scale[2*i] = 1000 + 1500*i % integral sign - vertical
end
% \end{macrocode}
% We do not modify accent placement.
@@ -3243,7 +3676,8 @@
% \end{macrocode}
% The wrapper for |:new_type_e|. We feed it the index to use for the smashed base character, a list of characters to create charm information for, and a table of scaling information.
% \begin{macrocode}
-function mathfont:add_extensible_variants(first_smash, glyph_list, scale_list)
+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
@@ -3267,7 +3701,7 @@
% Add the charm information for the type |e| characters.
% \begin{macrocode}
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,big_op_glyphs,big_op_scale)
mathfont:add_extensible_variants(smash, vert_glyphs, vert_scale)
mathfont:add_extensible_variants(smash, int_glyphs, int_scale)
% \end{macrocode}
@@ -3279,10 +3713,16 @@
%
%
%
+%
% \section{Unicode Hex Values}
%
-%
-%
+% We make aliases for |\DeclareMathAccent| and |\DeclareMathSymbol| to save space.
+% \begin{macrocode}
+\let\@DMA\DeclareMathAccent
+\let\@DMS\DeclareMathSymbol
+\@onlypreamble\@DMA
+\@onlypreamble\@DMS
+% \end{macrocode}
% Set upper-case Latin characters. We use an |\edef| for |\M at upper@font| because
% every expansion now will save \LaTeX\ twenty-six expansions later when it
% evaluates each |\DeclareMathSymbol|. If the user has enabled Lua font adjustments, we set the math codes to be the large values from the Supplemental Private Use Area-A.\indexpage{keywordupper=keyword \texttt{upper}}%
@@ -3290,61 +3730,61 @@
\ifM at adjust@font
\def\M at upper@set{%
\edef\M at upper@font{M\M at uppershape\@tempa}
- \DeclareMathSymbol{A}{\mathalpha}{\M at upper@font}{1044512}
- \DeclareMathSymbol{B}{\mathalpha}{\M at upper@font}{1044513}
- \DeclareMathSymbol{C}{\mathalpha}{\M at upper@font}{1044514}
- \DeclareMathSymbol{D}{\mathalpha}{\M at upper@font}{1044515}
- \DeclareMathSymbol{E}{\mathalpha}{\M at upper@font}{1044516}
- \DeclareMathSymbol{F}{\mathalpha}{\M at upper@font}{1044517}
- \DeclareMathSymbol{G}{\mathalpha}{\M at upper@font}{1044518}
- \DeclareMathSymbol{H}{\mathalpha}{\M at upper@font}{1044519}
- \DeclareMathSymbol{I}{\mathalpha}{\M at upper@font}{1044520}
- \DeclareMathSymbol{J}{\mathalpha}{\M at upper@font}{1044521}
- \DeclareMathSymbol{K}{\mathalpha}{\M at upper@font}{1044522}
- \DeclareMathSymbol{L}{\mathalpha}{\M at upper@font}{1044523}
- \DeclareMathSymbol{M}{\mathalpha}{\M at upper@font}{1044524}
- \DeclareMathSymbol{N}{\mathalpha}{\M at upper@font}{1044525}
- \DeclareMathSymbol{O}{\mathalpha}{\M at upper@font}{1044526}
- \DeclareMathSymbol{P}{\mathalpha}{\M at upper@font}{1044527}
- \DeclareMathSymbol{Q}{\mathalpha}{\M at upper@font}{1044528}
- \DeclareMathSymbol{R}{\mathalpha}{\M at upper@font}{1044529}
- \DeclareMathSymbol{S}{\mathalpha}{\M at upper@font}{1044530}
- \DeclareMathSymbol{T}{\mathalpha}{\M at upper@font}{1044531}
- \DeclareMathSymbol{U}{\mathalpha}{\M at upper@font}{1044532}
- \DeclareMathSymbol{V}{\mathalpha}{\M at upper@font}{1044533}
- \DeclareMathSymbol{W}{\mathalpha}{\M at upper@font}{1044534}
- \DeclareMathSymbol{X}{\mathalpha}{\M at upper@font}{1044535}
- \DeclareMathSymbol{Y}{\mathalpha}{\M at upper@font}{1044536}
- \DeclareMathSymbol{Z}{\mathalpha}{\M at upper@font}{1044537}}
+ \@DMS{A}{\mathalpha}{\M at upper@font}{1044512}
+ \@DMS{B}{\mathalpha}{\M at upper@font}{1044513}
+ \@DMS{C}{\mathalpha}{\M at upper@font}{1044514}
+ \@DMS{D}{\mathalpha}{\M at upper@font}{1044515}
+ \@DMS{E}{\mathalpha}{\M at upper@font}{1044516}
+ \@DMS{F}{\mathalpha}{\M at upper@font}{1044517}
+ \@DMS{G}{\mathalpha}{\M at upper@font}{1044518}
+ \@DMS{H}{\mathalpha}{\M at upper@font}{1044519}
+ \@DMS{I}{\mathalpha}{\M at upper@font}{1044520}
+ \@DMS{J}{\mathalpha}{\M at upper@font}{1044521}
+ \@DMS{K}{\mathalpha}{\M at upper@font}{1044522}
+ \@DMS{L}{\mathalpha}{\M at upper@font}{1044523}
+ \@DMS{M}{\mathalpha}{\M at upper@font}{1044524}
+ \@DMS{N}{\mathalpha}{\M at upper@font}{1044525}
+ \@DMS{O}{\mathalpha}{\M at upper@font}{1044526}
+ \@DMS{P}{\mathalpha}{\M at upper@font}{1044527}
+ \@DMS{Q}{\mathalpha}{\M at upper@font}{1044528}
+ \@DMS{R}{\mathalpha}{\M at upper@font}{1044529}
+ \@DMS{S}{\mathalpha}{\M at upper@font}{1044530}
+ \@DMS{T}{\mathalpha}{\M at upper@font}{1044531}
+ \@DMS{U}{\mathalpha}{\M at upper@font}{1044532}
+ \@DMS{V}{\mathalpha}{\M at upper@font}{1044533}
+ \@DMS{W}{\mathalpha}{\M at upper@font}{1044534}
+ \@DMS{X}{\mathalpha}{\M at upper@font}{1044535}
+ \@DMS{Y}{\mathalpha}{\M at upper@font}{1044536}
+ \@DMS{Z}{\mathalpha}{\M at upper@font}{1044537}}
\else
\def\M at upper@set{%
\edef\M at upper@font{M\M at uppershape\@tempa}
- \DeclareMathSymbol{A}{\mathalpha}{\M at upper@font}{`A}
- \DeclareMathSymbol{B}{\mathalpha}{\M at upper@font}{`B}
- \DeclareMathSymbol{C}{\mathalpha}{\M at upper@font}{`C}
- \DeclareMathSymbol{D}{\mathalpha}{\M at upper@font}{`D}
- \DeclareMathSymbol{E}{\mathalpha}{\M at upper@font}{`E}
- \DeclareMathSymbol{F}{\mathalpha}{\M at upper@font}{`F}
- \DeclareMathSymbol{G}{\mathalpha}{\M at upper@font}{`G}
- \DeclareMathSymbol{H}{\mathalpha}{\M at upper@font}{`H}
- \DeclareMathSymbol{I}{\mathalpha}{\M at upper@font}{`I}
- \DeclareMathSymbol{J}{\mathalpha}{\M at upper@font}{`J}
- \DeclareMathSymbol{K}{\mathalpha}{\M at upper@font}{`K}
- \DeclareMathSymbol{L}{\mathalpha}{\M at upper@font}{`L}
- \DeclareMathSymbol{M}{\mathalpha}{\M at upper@font}{`M}
- \DeclareMathSymbol{N}{\mathalpha}{\M at upper@font}{`N}
- \DeclareMathSymbol{O}{\mathalpha}{\M at upper@font}{`O}
- \DeclareMathSymbol{P}{\mathalpha}{\M at upper@font}{`P}
- \DeclareMathSymbol{Q}{\mathalpha}{\M at upper@font}{`Q}
- \DeclareMathSymbol{R}{\mathalpha}{\M at upper@font}{`R}
- \DeclareMathSymbol{S}{\mathalpha}{\M at upper@font}{`S}
- \DeclareMathSymbol{T}{\mathalpha}{\M at upper@font}{`T}
- \DeclareMathSymbol{U}{\mathalpha}{\M at upper@font}{`U}
- \DeclareMathSymbol{V}{\mathalpha}{\M at upper@font}{`V}
- \DeclareMathSymbol{W}{\mathalpha}{\M at upper@font}{`W}
- \DeclareMathSymbol{X}{\mathalpha}{\M at upper@font}{`X}
- \DeclareMathSymbol{Y}{\mathalpha}{\M at upper@font}{`Y}
- \DeclareMathSymbol{Z}{\mathalpha}{\M at upper@font}{`Z}}
+ \@DMS{A}{\mathalpha}{\M at upper@font}{`A}
+ \@DMS{B}{\mathalpha}{\M at upper@font}{`B}
+ \@DMS{C}{\mathalpha}{\M at upper@font}{`C}
+ \@DMS{D}{\mathalpha}{\M at upper@font}{`D}
+ \@DMS{E}{\mathalpha}{\M at upper@font}{`E}
+ \@DMS{F}{\mathalpha}{\M at upper@font}{`F}
+ \@DMS{G}{\mathalpha}{\M at upper@font}{`G}
+ \@DMS{H}{\mathalpha}{\M at upper@font}{`H}
+ \@DMS{I}{\mathalpha}{\M at upper@font}{`I}
+ \@DMS{J}{\mathalpha}{\M at upper@font}{`J}
+ \@DMS{K}{\mathalpha}{\M at upper@font}{`K}
+ \@DMS{L}{\mathalpha}{\M at upper@font}{`L}
+ \@DMS{M}{\mathalpha}{\M at upper@font}{`M}
+ \@DMS{N}{\mathalpha}{\M at upper@font}{`N}
+ \@DMS{O}{\mathalpha}{\M at upper@font}{`O}
+ \@DMS{P}{\mathalpha}{\M at upper@font}{`P}
+ \@DMS{Q}{\mathalpha}{\M at upper@font}{`Q}
+ \@DMS{R}{\mathalpha}{\M at upper@font}{`R}
+ \@DMS{S}{\mathalpha}{\M at upper@font}{`S}
+ \@DMS{T}{\mathalpha}{\M at upper@font}{`T}
+ \@DMS{U}{\mathalpha}{\M at upper@font}{`U}
+ \@DMS{V}{\mathalpha}{\M at upper@font}{`V}
+ \@DMS{W}{\mathalpha}{\M at upper@font}{`W}
+ \@DMS{X}{\mathalpha}{\M at upper@font}{`X}
+ \@DMS{Y}{\mathalpha}{\M at upper@font}{`Y}
+ \@DMS{Z}{\mathalpha}{\M at upper@font}{`Z}}
\fi
% \end{macrocode}
% Set lower-case Latin characters.\indexpage{keywordlower=keyword \texttt{lower}}
@@ -3352,67 +3792,67 @@
\ifM at adjust@font
\def\M at lower@set{%
\edef\M at lower@font{M\M at lowershape\@tempa}
- \DeclareMathSymbol{a}{\mathalpha}{\M at lower@font}{1044480}
- \DeclareMathSymbol{b}{\mathalpha}{\M at lower@font}{1044481}
- \DeclareMathSymbol{c}{\mathalpha}{\M at lower@font}{1044482}
- \DeclareMathSymbol{d}{\mathalpha}{\M at lower@font}{1044483}
- \DeclareMathSymbol{e}{\mathalpha}{\M at lower@font}{1044484}
- \DeclareMathSymbol{f}{\mathalpha}{\M at lower@font}{1044485}
- \DeclareMathSymbol{g}{\mathalpha}{\M at lower@font}{1044486}
- \DeclareMathSymbol{h}{\mathalpha}{\M at lower@font}{1044487}
- \DeclareMathSymbol{i}{\mathalpha}{\M at lower@font}{1044488}
- \DeclareMathSymbol{j}{\mathalpha}{\M at lower@font}{1044489}
- \DeclareMathSymbol{k}{\mathalpha}{\M at lower@font}{1044490}
- \DeclareMathSymbol{l}{\mathalpha}{\M at lower@font}{1044491}
- \DeclareMathSymbol{m}{\mathalpha}{\M at lower@font}{1044492}
- \DeclareMathSymbol{n}{\mathalpha}{\M at lower@font}{1044493}
- \DeclareMathSymbol{o}{\mathalpha}{\M at lower@font}{1044494}
- \DeclareMathSymbol{p}{\mathalpha}{\M at lower@font}{1044495}
- \DeclareMathSymbol{q}{\mathalpha}{\M at lower@font}{1044496}
- \DeclareMathSymbol{r}{\mathalpha}{\M at lower@font}{1044497}
- \DeclareMathSymbol{s}{\mathalpha}{\M at lower@font}{1044498}
- \DeclareMathSymbol{t}{\mathalpha}{\M at lower@font}{1044499}
- \DeclareMathSymbol{u}{\mathalpha}{\M at lower@font}{1044500}
- \DeclareMathSymbol{v}{\mathalpha}{\M at lower@font}{1044501}
- \DeclareMathSymbol{w}{\mathalpha}{\M at lower@font}{1044502}
- \DeclareMathSymbol{x}{\mathalpha}{\M at lower@font}{1044503}
- \DeclareMathSymbol{y}{\mathalpha}{\M at lower@font}{1044504}
- \DeclareMathSymbol{z}{\mathalpha}{\M at lower@font}{1044505}
- \DeclareMathSymbol{\imath}{\mathalpha}{\M at lower@font}{1044506}
- \DeclareMathSymbol{\jmath}{\mathalpha}{\M at lower@font}{1044507}
- \DeclareMathSymbol{\hbar}{\mathord}{\M at lower@font}{"127}}
+ \@DMS{a}{\mathalpha}{\M at lower@font}{1044480}
+ \@DMS{b}{\mathalpha}{\M at lower@font}{1044481}
+ \@DMS{c}{\mathalpha}{\M at lower@font}{1044482}
+ \@DMS{d}{\mathalpha}{\M at lower@font}{1044483}
+ \@DMS{e}{\mathalpha}{\M at lower@font}{1044484}
+ \@DMS{f}{\mathalpha}{\M at lower@font}{1044485}
+ \@DMS{g}{\mathalpha}{\M at lower@font}{1044486}
+ \@DMS{h}{\mathalpha}{\M at lower@font}{1044487}
+ \@DMS{i}{\mathalpha}{\M at lower@font}{1044488}
+ \@DMS{j}{\mathalpha}{\M at lower@font}{1044489}
+ \@DMS{k}{\mathalpha}{\M at lower@font}{1044490}
+ \@DMS{l}{\mathalpha}{\M at lower@font}{1044491}
+ \@DMS{m}{\mathalpha}{\M at lower@font}{1044492}
+ \@DMS{n}{\mathalpha}{\M at lower@font}{1044493}
+ \@DMS{o}{\mathalpha}{\M at lower@font}{1044494}
+ \@DMS{p}{\mathalpha}{\M at lower@font}{1044495}
+ \@DMS{q}{\mathalpha}{\M at lower@font}{1044496}
+ \@DMS{r}{\mathalpha}{\M at lower@font}{1044497}
+ \@DMS{s}{\mathalpha}{\M at lower@font}{1044498}
+ \@DMS{t}{\mathalpha}{\M at lower@font}{1044499}
+ \@DMS{u}{\mathalpha}{\M at lower@font}{1044500}
+ \@DMS{v}{\mathalpha}{\M at lower@font}{1044501}
+ \@DMS{w}{\mathalpha}{\M at lower@font}{1044502}
+ \@DMS{x}{\mathalpha}{\M at lower@font}{1044503}
+ \@DMS{y}{\mathalpha}{\M at lower@font}{1044504}
+ \@DMS{z}{\mathalpha}{\M at lower@font}{1044505}
+ \@DMS{\imath}{\mathalpha}{\M at lower@font}{1044506}
+ \@DMS{\jmath}{\mathalpha}{\M at lower@font}{1044507}
+ \@DMS{\hbar}{\mathord}{\M at lower@font}{"127}}
\else
\def\M at lower@set{%
\edef\M at lower@font{M\M at lowershape\@tempa}
- \DeclareMathSymbol{a}{\mathalpha}{\M at lower@font}{`a}
- \DeclareMathSymbol{b}{\mathalpha}{\M at lower@font}{`b}
- \DeclareMathSymbol{c}{\mathalpha}{\M at lower@font}{`c}
- \DeclareMathSymbol{d}{\mathalpha}{\M at lower@font}{`d}
- \DeclareMathSymbol{e}{\mathalpha}{\M at lower@font}{`e}
- \DeclareMathSymbol{f}{\mathalpha}{\M at lower@font}{`f}
- \DeclareMathSymbol{g}{\mathalpha}{\M at lower@font}{`g}
- \DeclareMathSymbol{h}{\mathalpha}{\M at lower@font}{`h}
- \DeclareMathSymbol{i}{\mathalpha}{\M at lower@font}{`i}
- \DeclareMathSymbol{j}{\mathalpha}{\M at lower@font}{`j}
- \DeclareMathSymbol{k}{\mathalpha}{\M at lower@font}{`k}
- \DeclareMathSymbol{l}{\mathalpha}{\M at lower@font}{`l}
- \DeclareMathSymbol{m}{\mathalpha}{\M at lower@font}{`m}
- \DeclareMathSymbol{n}{\mathalpha}{\M at lower@font}{`n}
- \DeclareMathSymbol{o}{\mathalpha}{\M at lower@font}{`o}
- \DeclareMathSymbol{p}{\mathalpha}{\M at lower@font}{`p}
- \DeclareMathSymbol{q}{\mathalpha}{\M at lower@font}{`q}
- \DeclareMathSymbol{r}{\mathalpha}{\M at lower@font}{`r}
- \DeclareMathSymbol{s}{\mathalpha}{\M at lower@font}{`s}
- \DeclareMathSymbol{t}{\mathalpha}{\M at lower@font}{`t}
- \DeclareMathSymbol{u}{\mathalpha}{\M at lower@font}{`u}
- \DeclareMathSymbol{v}{\mathalpha}{\M at lower@font}{`v}
- \DeclareMathSymbol{w}{\mathalpha}{\M at lower@font}{`w}
- \DeclareMathSymbol{x}{\mathalpha}{\M at lower@font}{`x}
- \DeclareMathSymbol{y}{\mathalpha}{\M at lower@font}{`y}
- \DeclareMathSymbol{z}{\mathalpha}{\M at lower@font}{`z}
- \DeclareMathSymbol{\imath}{\mathalpha}{\M at lower@font}{"131}
- \DeclareMathSymbol{\jmath}{\mathalpha}{\M at lower@font}{"237}
- \DeclareMathSymbol{\hbar}{\mathord}{\M at lower@font}{"127}}
+ \@DMS{a}{\mathalpha}{\M at lower@font}{`a}
+ \@DMS{b}{\mathalpha}{\M at lower@font}{`b}
+ \@DMS{c}{\mathalpha}{\M at lower@font}{`c}
+ \@DMS{d}{\mathalpha}{\M at lower@font}{`d}
+ \@DMS{e}{\mathalpha}{\M at lower@font}{`e}
+ \@DMS{f}{\mathalpha}{\M at lower@font}{`f}
+ \@DMS{g}{\mathalpha}{\M at lower@font}{`g}
+ \@DMS{h}{\mathalpha}{\M at lower@font}{`h}
+ \@DMS{i}{\mathalpha}{\M at lower@font}{`i}
+ \@DMS{j}{\mathalpha}{\M at lower@font}{`j}
+ \@DMS{k}{\mathalpha}{\M at lower@font}{`k}
+ \@DMS{l}{\mathalpha}{\M at lower@font}{`l}
+ \@DMS{m}{\mathalpha}{\M at lower@font}{`m}
+ \@DMS{n}{\mathalpha}{\M at lower@font}{`n}
+ \@DMS{o}{\mathalpha}{\M at lower@font}{`o}
+ \@DMS{p}{\mathalpha}{\M at lower@font}{`p}
+ \@DMS{q}{\mathalpha}{\M at lower@font}{`q}
+ \@DMS{r}{\mathalpha}{\M at lower@font}{`r}
+ \@DMS{s}{\mathalpha}{\M at lower@font}{`s}
+ \@DMS{t}{\mathalpha}{\M at lower@font}{`t}
+ \@DMS{u}{\mathalpha}{\M at lower@font}{`u}
+ \@DMS{v}{\mathalpha}{\M at lower@font}{`v}
+ \@DMS{w}{\mathalpha}{\M at lower@font}{`w}
+ \@DMS{x}{\mathalpha}{\M at lower@font}{`x}
+ \@DMS{y}{\mathalpha}{\M at lower@font}{`y}
+ \@DMS{z}{\mathalpha}{\M at lower@font}{`z}
+ \@DMS{\imath}{\mathalpha}{\M at lower@font}{"131}
+ \@DMS{\jmath}{\mathalpha}{\M at lower@font}{"237}
+ \@DMS{\hbar}{\mathord}{\M at lower@font}{"127}}
\fi
% \end{macrocode}
% Set diacritics.\indexpage{keyworddiacritics=keyword \texttt{diacritics}}
@@ -3419,61 +3859,66 @@
% \begin{macrocode}
\def\M at diacritics@set{%
\edef\M at diacritics@font{M\M at diacriticsshape\@tempa}
- \DeclareMathAccent{\acute}{\mathalpha}{\M at diacritics@font}{"B4}
- \DeclareMathAccent{\aacute}{\mathalpha}{\M at diacritics@font}{"2DD}
- \DeclareMathAccent{\dot}{\mathalpha}{\M at diacritics@font}{"2D9}
- \DeclareMathAccent{\ddot}{\mathalpha}{\M at diacritics@font}{"A8}
- \DeclareMathAccent{\grave}{\mathalpha}{\M at diacritics@font}{"60}
- \DeclareMathAccent{\breve}{\mathalpha}{\M at diacritics@font}{"2D8}
- \DeclareMathAccent{\hat}{\mathalpha}{\M at diacritics@font}{"2C6}
- \DeclareMathAccent{\check}{\mathalpha}{\M at diacritics@font}{"2C7}
- \DeclareMathAccent{\bar}{\mathalpha}{\M at diacritics@font}{"2C9}
- \DeclareMathAccent{\mathring}{\mathalpha}{\M at diacritics@font}{"2DA}
- \DeclareMathAccent{\tilde}{\mathalpha}{\M at diacritics@font}{"2DC}}
+ \@DMA{\acute} {\mathalpha}{\M at diacritics@font}{"B4}
+ \@DMA{\aacute} {\mathalpha}{\M at diacritics@font}{"2DD}
+ \@DMA{\dot} {\mathalpha}{\M at diacritics@font}{"2D9}
+ \@DMA{\ddot} {\mathalpha}{\M at diacritics@font}{"A8}
+ \@DMA{\grave} {\mathalpha}{\M at diacritics@font}{"60}
+ \@DMA{\breve} {\mathalpha}{\M at diacritics@font}{"2D8}
+ \@DMA{\hat} {\mathalpha}{\M at diacritics@font}{"2C6}
+ \@DMA{\check} {\mathalpha}{\M at diacritics@font}{"2C7}
+ \@DMA{\bar} {\mathalpha}{\M at diacritics@font}{"2C9}
+ \@DMA{\mathring}{\mathalpha}{\M at diacritics@font}{"2DA}
+ \@DMA{\tilde} {\mathalpha}{\M at diacritics@font}{"2DC}}
% \end{macrocode}
-% Set capital Greek characters.\indexpage{keywordgreeklower=keyword \texttt{greekupper}}
+% Set capital Greek characters. We undefine |\Chi| because \textsf{math-operator} defines it to be the hyperbolic cosine integral function.\indexpage{keywordgreeklower=keyword \texttt{greekupper}}
% \begin{macrocode}
\def\M at greekupper@set{%
\edef\M at greekupper@font{M\M at greekuppershape\@tempa}
- \DeclareMathSymbol{\Alpha}{\mathalpha}{\M at greekupper@font}{"391}
- \DeclareMathSymbol{\Beta}{\mathalpha}{\M at greekupper@font}{"392}
- \DeclareMathSymbol{\Gamma}{\mathalpha}{\M at greekupper@font}{"393}
- \DeclareMathSymbol{\Delta}{\mathalpha}{\M at greekupper@font}{"394}
- \DeclareMathSymbol{\Epsilon}{\mathalpha}{\M at greekupper@font}{"395}
- \DeclareMathSymbol{\Zeta}{\mathalpha}{\M at greekupper@font}{"396}
- \DeclareMathSymbol{\Eta}{\mathalpha}{\M at greekupper@font}{"397}
- \DeclareMathSymbol{\Theta}{\mathalpha}{\M at greekupper@font}{"398}
- \DeclareMathSymbol{\Iota}{\mathalpha}{\M at greekupper@font}{"399}
- \DeclareMathSymbol{\Kappa}{\mathalpha}{\M at greekupper@font}{"39A}
- \DeclareMathSymbol{\Lambda}{\mathalpha}{\M at greekupper@font}{"39B}
- \DeclareMathSymbol{\Mu}{\mathalpha}{\M at greekupper@font}{"39C}
- \DeclareMathSymbol{\Nu}{\mathalpha}{\M at greekupper@font}{"39D}
- \DeclareMathSymbol{\Xi}{\mathalpha}{\M at greekupper@font}{"39E}
- \DeclareMathSymbol{\Omicron}{\mathalpha}{\M at greekupper@font}{"39F}
- \DeclareMathSymbol{\Pi}{\mathalpha}{\M at greekupper@font}{"3A0}
- \DeclareMathSymbol{\Rho}{\mathalpha}{\M at greekupper@font}{"3A1}
- \DeclareMathSymbol{\Sigma}{\mathalpha}{\M at greekupper@font}{"3A3}
- \DeclareMathSymbol{\Tau}{\mathalpha}{\M at greekupper@font}{"3A4}
- \DeclareMathSymbol{\Upsilon}{\mathalpha}{\M at greekupper@font}{"3A5}
- \DeclareMathSymbol{\Phi}{\mathalpha}{\M at greekupper@font}{"3A6}
- \DeclareMathSymbol{\Chi}{\mathalpha}{\M at greekupper@font}{"3A7}
- \DeclareMathSymbol{\Psi}{\mathalpha}{\M at greekupper@font}{"3A8}
- \DeclareMathSymbol{\Omega}{\mathalpha}{\M at greekupper@font}{"3A9}
- \DeclareMathSymbol{\varTheta}{\mathalpha}{\M at greekupper@font}{"3F4}
+ \let\Chi\@undefined
+ \@DMS{\Alpha} {\mathalpha}{\M at greekupper@font}{"391}
+ \@DMS{\Beta} {\mathalpha}{\M at greekupper@font}{"392}
+ \@DMS{\Gamma} {\mathalpha}{\M at greekupper@font}{"393}
+ \@DMS{\Delta} {\mathalpha}{\M at greekupper@font}{"394}
+ \@DMS{\Epsilon} {\mathalpha}{\M at greekupper@font}{"395}
+ \@DMS{\Zeta} {\mathalpha}{\M at greekupper@font}{"396}
+ \@DMS{\Eta} {\mathalpha}{\M at greekupper@font}{"397}
+ \@DMS{\Theta} {\mathalpha}{\M at greekupper@font}{"398}
+ \@DMS{\Iota} {\mathalpha}{\M at greekupper@font}{"399}
+ \@DMS{\Kappa} {\mathalpha}{\M at greekupper@font}{"39A}
+ \@DMS{\Lambda} {\mathalpha}{\M at greekupper@font}{"39B}
+ \@DMS{\Mu} {\mathalpha}{\M at greekupper@font}{"39C}
+ \@DMS{\Nu} {\mathalpha}{\M at greekupper@font}{"39D}
+ \@DMS{\Xi} {\mathalpha}{\M at greekupper@font}{"39E}
+ \@DMS{\Omicron} {\mathalpha}{\M at greekupper@font}{"39F}
+ \@DMS{\Pi} {\mathalpha}{\M at greekupper@font}{"3A0}
+ \@DMS{\Rho} {\mathalpha}{\M at greekupper@font}{"3A1}
+ \@DMS{\Sigma} {\mathalpha}{\M at greekupper@font}{"3A3}
+ \@DMS{\Tau} {\mathalpha}{\M at greekupper@font}{"3A4}
+ \@DMS{\Upsilon} {\mathalpha}{\M at greekupper@font}{"3A5}
+ \@DMS{\Phi} {\mathalpha}{\M at greekupper@font}{"3A6}
+ \@DMS{\Chi} {\mathalpha}{\M at greekupper@font}{"3A7}
+ \@DMS{\Psi} {\mathalpha}{\M at greekupper@font}{"3A8}
+ \@DMS{\Omega} {\mathalpha}{\M at greekupper@font}{"3A9}
+ \@DMS{\varTheta}{\mathalpha}{\M at greekupper@font}{"3F4}
% \end{macrocode}
% Declare |\increment| and |\nabla| if they haven't already been declared in the |symbols| or |extsymbols| fonts.
% \begin{macrocode}
\ifM at adjust@font
\ifM at symbols\else
- \DeclareMathSymbol{\increment}{\mathord}{\M at greekupper@font}{"2206}
- \DeclareMathSymbol{\nabla}{\mathord}{\M at greekupper@font}{"2207}
+ \@DMS{\increment}
+ {\mathord}{\M at greekupper@font}{"2206}
+ \@DMS{\nabla}
+ {\mathord}{\M at greekupper@font}{"2207}
\fi
\else
\ifM at symbols\else
- \DeclareMathSymbol{\increment}{\mathord}{\M at greekupper@font}{"2206}
+ \@DMS{\increment}
+ {\mathord}{\M at greekupper@font}{"2206}
\fi
\ifM at extsymbols\else
- \DeclareMathSymbol{\nabla}{\mathord}{\M at greekupper@font}{"2207}
+ \@DMS{\nabla}
+ {\mathord}{\M at greekupper@font}{"2207}
\fi
\fi}
% \end{macrocode}
@@ -3481,188 +3926,188 @@
% \begin{macrocode}
\def\M at greeklower@set{%
\edef\M at greeklower@font{M\M at greeklowershape\@tempa}
- \DeclareMathSymbol{\alpha}{\mathalpha}{\M at greeklower@font}{"3B1}
- \DeclareMathSymbol{\beta}{\mathalpha}{\M at greeklower@font}{"3B2}
- \DeclareMathSymbol{\gamma}{\mathalpha}{\M at greeklower@font}{"3B3}
- \DeclareMathSymbol{\delta}{\mathalpha}{\M at greeklower@font}{"3B4}
- \DeclareMathSymbol{\epsilon}{\mathalpha}{\M at greeklower@font}{"3B5}
- \DeclareMathSymbol{\zeta}{\mathalpha}{\M at greeklower@font}{"3B6}
- \DeclareMathSymbol{\eta}{\mathalpha}{\M at greeklower@font}{"3B7}
- \DeclareMathSymbol{\theta}{\mathalpha}{\M at greeklower@font}{"3B8}
- \DeclareMathSymbol{\iota}{\mathalpha}{\M at greeklower@font}{"3B9}
- \DeclareMathSymbol{\kappa}{\mathalpha}{\M at greeklower@font}{"3BA}
- \DeclareMathSymbol{\lambda}{\mathalpha}{\M at greeklower@font}{"3BB}
- \DeclareMathSymbol{\mu}{\mathalpha}{\M at greeklower@font}{"3BC}
- \DeclareMathSymbol{\nu}{\mathalpha}{\M at greeklower@font}{"3BD}
- \DeclareMathSymbol{\xi}{\mathalpha}{\M at greeklower@font}{"3BE}
- \DeclareMathSymbol{\omicron}{\mathalpha}{\M at greeklower@font}{"3BF}
- \DeclareMathSymbol{\pi}{\mathalpha}{\M at greeklower@font}{"3C0}
- \DeclareMathSymbol{\rho}{\mathalpha}{\M at greeklower@font}{"3C1}
- \DeclareMathSymbol{\sigma}{\mathalpha}{\M at greeklower@font}{"3C3}
- \DeclareMathSymbol{\tau}{\mathalpha}{\M at greeklower@font}{"3C4}
- \DeclareMathSymbol{\upsilon}{\mathalpha}{\M at greeklower@font}{"3C5}
- \DeclareMathSymbol{\phi}{\mathalpha}{\M at greeklower@font}{"3C6}
- \DeclareMathSymbol{\chi}{\mathalpha}{\M at greeklower@font}{"3C7}
- \DeclareMathSymbol{\psi}{\mathalpha}{\M at greeklower@font}{"3C8}
- \DeclareMathSymbol{\omega}{\mathalpha}{\M at greeklower@font}{"3C9}
- \DeclareMathSymbol{\varbeta}{\mathalpha}{\M at greeklower@font}{"3D0}
- \DeclareMathSymbol{\varepsilon}{\mathalpha}{\M at greeklower@font}{"3F5}
- \DeclareMathSymbol{\varkappa}{\mathalpha}{\M at greeklower@font}{"3F0}
- \DeclareMathSymbol{\vartheta}{\mathalpha}{\M at greeklower@font}{"3D1}
- \DeclareMathSymbol{\varrho}{\mathalpha}{\M at greeklower@font}{"3F1}
- \DeclareMathSymbol{\varsigma}{\mathalpha}{\M at greeklower@font}{"3C2}
- \DeclareMathSymbol{\varphi}{\mathalpha}{\M at greeklower@font}{"3D5}}
+ \@DMS{\alpha} {\mathalpha}{\M at greeklower@font}{"3B1}
+ \@DMS{\beta} {\mathalpha}{\M at greeklower@font}{"3B2}
+ \@DMS{\gamma} {\mathalpha}{\M at greeklower@font}{"3B3}
+ \@DMS{\delta} {\mathalpha}{\M at greeklower@font}{"3B4}
+ \@DMS{\epsilon} {\mathalpha}{\M at greeklower@font}{"3B5}
+ \@DMS{\zeta} {\mathalpha}{\M at greeklower@font}{"3B6}
+ \@DMS{\eta} {\mathalpha}{\M at greeklower@font}{"3B7}
+ \@DMS{\theta} {\mathalpha}{\M at greeklower@font}{"3B8}
+ \@DMS{\iota} {\mathalpha}{\M at greeklower@font}{"3B9}
+ \@DMS{\kappa} {\mathalpha}{\M at greeklower@font}{"3BA}
+ \@DMS{\lambda} {\mathalpha}{\M at greeklower@font}{"3BB}
+ \@DMS{\mu} {\mathalpha}{\M at greeklower@font}{"3BC}
+ \@DMS{\nu} {\mathalpha}{\M at greeklower@font}{"3BD}
+ \@DMS{\xi} {\mathalpha}{\M at greeklower@font}{"3BE}
+ \@DMS{\omicron} {\mathalpha}{\M at greeklower@font}{"3BF}
+ \@DMS{\pi} {\mathalpha}{\M at greeklower@font}{"3C0}
+ \@DMS{\rho} {\mathalpha}{\M at greeklower@font}{"3C1}
+ \@DMS{\sigma} {\mathalpha}{\M at greeklower@font}{"3C3}
+ \@DMS{\tau} {\mathalpha}{\M at greeklower@font}{"3C4}
+ \@DMS{\upsilon} {\mathalpha}{\M at greeklower@font}{"3C5}
+ \@DMS{\phi} {\mathalpha}{\M at greeklower@font}{"3C6}
+ \@DMS{\chi} {\mathalpha}{\M at greeklower@font}{"3C7}
+ \@DMS{\psi} {\mathalpha}{\M at greeklower@font}{"3C8}
+ \@DMS{\omega} {\mathalpha}{\M at greeklower@font}{"3C9}
+ \@DMS{\varbeta} {\mathalpha}{\M at greeklower@font}{"3D0}
+ \@DMS{\varepsilon}{\mathalpha}{\M at greeklower@font}{"3F5}
+ \@DMS{\varkappa} {\mathalpha}{\M at greeklower@font}{"3F0}
+ \@DMS{\vartheta} {\mathalpha}{\M at greeklower@font}{"3D1}
+ \@DMS{\varrho} {\mathalpha}{\M at greeklower@font}{"3F1}
+ \@DMS{\varsigma} {\mathalpha}{\M at greeklower@font}{"3C2}
+ \@DMS{\varphi} {\mathalpha}{\M at greeklower@font}{"3D5}}
% \end{macrocode}
% Set capital ancient Greek characters.\indexpage{keywordagreekupper=keyword \texttt{agreekupper}}
% \begin{macrocode}
\def\M at agreekupper@set{%
\edef\M at agreekupper@font{M\M at agreekuppershape\@tempa}
- \DeclareMathSymbol{\Heta}{\mathalpha}{\M at agreekupper@font}{"370}
- \DeclareMathSymbol{\Sampi}{\mathalpha}{\M at agreekupper@font}{"3E0}
- \DeclareMathSymbol{\Digamma}{\mathalpha}{\M at agreekupper@font}{"3DC}
- \DeclareMathSymbol{\Koppa}{\mathalpha}{\M at agreekupper@font}{"3D8}
- \DeclareMathSymbol{\Stigma}{\mathalpha}{\M at agreekupper@font}{"3DA}
- \DeclareMathSymbol{\Sho}{\mathalpha}{\M at agreekupper@font}{"3F7}
- \DeclareMathSymbol{\San}{\mathalpha}{\M at agreekupper@font}{"3FA}
- \DeclareMathSymbol{\varSampi}{\mathalpha}{\M at agreekupper@font}{"372}
- \DeclareMathSymbol{\varDigamma}{\mathalpha}{\M at agreekupper@font}{"376}
- \DeclareMathSymbol{\varKoppa}{\mathalpha}{\M at agreekupper@font}{"3DE}}
+ \@DMS{\Heta} {\mathalpha}{\M at agreekupper@font}{"370}
+ \@DMS{\Sampi} {\mathalpha}{\M at agreekupper@font}{"3E0}
+ \@DMS{\Digamma} {\mathalpha}{\M at agreekupper@font}{"3DC}
+ \@DMS{\Koppa} {\mathalpha}{\M at agreekupper@font}{"3D8}
+ \@DMS{\Stigma} {\mathalpha}{\M at agreekupper@font}{"3DA}
+ \@DMS{\Sho} {\mathalpha}{\M at agreekupper@font}{"3F7}
+ \@DMS{\San} {\mathalpha}{\M at agreekupper@font}{"3FA}
+ \@DMS{\varSampi} {\mathalpha}{\M at agreekupper@font}{"372}
+ \@DMS{\varDigamma}{\mathalpha}{\M at agreekupper@font}{"376}
+ \@DMS{\varKoppa} {\mathalpha}{\M at agreekupper@font}{"3DE}}
% \end{macrocode}
% Set minuscule ancient Greek characters.\indexpage{keywordagreeklower=keyword \texttt{agreeklower}}
% \begin{macrocode}
\def\M at agreeklower@set{%
\edef\M at agreeklower@font{M\M at agreeklowershape\@tempa}
- \DeclareMathSymbol{\heta}{\mathalpha}{\M at agreeklower@font}{"371}
- \DeclareMathSymbol{\sampi}{\mathalpha}{\M at agreeklower@font}{"3E1}
- \DeclareMathSymbol{\digamma}{\mathalpha}{\M at agreeklower@font}{"3DD}
- \DeclareMathSymbol{\koppa}{\mathalpha}{\M at agreeklower@font}{"3D9}
- \DeclareMathSymbol{\stigma}{\mathalpha}{\M at agreeklower@font}{"3DB}
- \DeclareMathSymbol{\sho}{\mathalpha}{\M at agreeklower@font}{"3F8}
- \DeclareMathSymbol{\san}{\mathalpha}{\M at agreeklower@font}{"3FB}
- \DeclareMathSymbol{\varsampi}{\mathalpha}{\M at agreeklower@font}{"373}
- \DeclareMathSymbol{\vardigamma}{\mathalpha}{\M at agreeklower@font}{"377}
- \DeclareMathSymbol{\varkoppa}{\mathalpha}{\M at agreeklower@font}{"3DF}}
+ \@DMS{\heta} {\mathalpha}{\M at agreeklower@font}{"371}
+ \@DMS{\sampi} {\mathalpha}{\M at agreeklower@font}{"3E1}
+ \@DMS{\digamma} {\mathalpha}{\M at agreeklower@font}{"3DD}
+ \@DMS{\koppa} {\mathalpha}{\M at agreeklower@font}{"3D9}
+ \@DMS{\stigma} {\mathalpha}{\M at agreeklower@font}{"3DB}
+ \@DMS{\sho} {\mathalpha}{\M at agreeklower@font}{"3F8}
+ \@DMS{\san} {\mathalpha}{\M at agreeklower@font}{"3FB}
+ \@DMS{\varsampi} {\mathalpha}{\M at agreeklower@font}{"373}
+ \@DMS{\vardigamma}{\mathalpha}{\M at agreeklower@font}{"377}
+ \@DMS{\varkoppa} {\mathalpha}{\M at agreeklower@font}{"3DF}}
% \end{macrocode}
% Set capital Cyrillic characters.\indexpage{keywordcyrillicupper=keyword \texttt{cyrillicupper}}
% \begin{macrocode}
\def\M at cyrillicupper@set{%
\edef\M at cyrillicupper@font{M\M at cyrillicuppershape\@tempa}
- \DeclareMathSymbol{\cyrA}{\mathalpha}{\M at cyrillicupper@font}{"410}
- \DeclareMathSymbol{\cyrBe}{\mathalpha}{\M at cyrillicupper@font}{"411}
- \DeclareMathSymbol{\cyrVe}{\mathalpha}{\M at cyrillicupper@font}{"412}
- \DeclareMathSymbol{\cyrGhe}{\mathalpha}{\M at cyrillicupper@font}{"413}
- \DeclareMathSymbol{\cyrDe}{\mathalpha}{\M at cyrillicupper@font}{"414}
- \DeclareMathSymbol{\cyrIe}{\mathalpha}{\M at cyrillicupper@font}{"415}
- \DeclareMathSymbol{\cyrZhe}{\mathalpha}{\M at cyrillicupper@font}{"416}
- \DeclareMathSymbol{\cyrZe}{\mathalpha}{\M at cyrillicupper@font}{"417}
- \DeclareMathSymbol{\cyrI}{\mathalpha}{\M at cyrillicupper@font}{"418}
- \DeclareMathSymbol{\cyrKa}{\mathalpha}{\M at cyrillicupper@font}{"41A}
- \DeclareMathSymbol{\cyrEl}{\mathalpha}{\M at cyrillicupper@font}{"41B}
- \DeclareMathSymbol{\cyrEm}{\mathalpha}{\M at cyrillicupper@font}{"41C}
- \DeclareMathSymbol{\cyrEn}{\mathalpha}{\M at cyrillicupper@font}{"41D}
- \DeclareMathSymbol{\cyrO}{\mathalpha}{\M at cyrillicupper@font}{"41E}
- \DeclareMathSymbol{\cyrPe}{\mathalpha}{\M at cyrillicupper@font}{"41F}
- \DeclareMathSymbol{\cyrEr}{\mathalpha}{\M at cyrillicupper@font}{"420}
- \DeclareMathSymbol{\cyrEs}{\mathalpha}{\M at cyrillicupper@font}{"421}
- \DeclareMathSymbol{\cyrTe}{\mathalpha}{\M at cyrillicupper@font}{"422}
- \DeclareMathSymbol{\cyrU}{\mathalpha}{\M at cyrillicupper@font}{"423}
- \DeclareMathSymbol{\cyrEf}{\mathalpha}{\M at cyrillicupper@font}{"424}
- \DeclareMathSymbol{\cyrHa}{\mathalpha}{\M at cyrillicupper@font}{"425}
- \DeclareMathSymbol{\cyrTse}{\mathalpha}{\M at cyrillicupper@font}{"426}
- \DeclareMathSymbol{\cyrChe}{\mathalpha}{\M at cyrillicupper@font}{"427}
- \DeclareMathSymbol{\cyrSha}{\mathalpha}{\M at cyrillicupper@font}{"428}
- \DeclareMathSymbol{\cyrShcha}{\mathalpha}{\M at cyrillicupper@font}{"429}
- \DeclareMathSymbol{\cyrHard}{\mathalpha}{\M at cyrillicupper@font}{"42A}
- \DeclareMathSymbol{\cyrYeru}{\mathalpha}{\M at cyrillicupper@font}{"42B}
- \DeclareMathSymbol{\cyrSoft}{\mathalpha}{\M at cyrillicupper@font}{"42C}
- \DeclareMathSymbol{\cyrE}{\mathalpha}{\M at cyrillicupper@font}{"42D}
- \DeclareMathSymbol{\cyrYu}{\mathalpha}{\M at cyrillicupper@font}{"42E}
- \DeclareMathSymbol{\cyrYa}{\mathalpha}{\M at cyrillicupper@font}{"42F}
- \DeclareMathSymbol{\cyrvarI}{\mathalpha}{\M at cyrillicupper@font}{"419}}
+ \@DMS{\cyrA} {\mathalpha}{\M at cyrillicupper@font}{"410}
+ \@DMS{\cyrBe} {\mathalpha}{\M at cyrillicupper@font}{"411}
+ \@DMS{\cyrVe} {\mathalpha}{\M at cyrillicupper@font}{"412}
+ \@DMS{\cyrGhe} {\mathalpha}{\M at cyrillicupper@font}{"413}
+ \@DMS{\cyrDe} {\mathalpha}{\M at cyrillicupper@font}{"414}
+ \@DMS{\cyrIe} {\mathalpha}{\M at cyrillicupper@font}{"415}
+ \@DMS{\cyrZhe} {\mathalpha}{\M at cyrillicupper@font}{"416}
+ \@DMS{\cyrZe} {\mathalpha}{\M at cyrillicupper@font}{"417}
+ \@DMS{\cyrI} {\mathalpha}{\M at cyrillicupper@font}{"418}
+ \@DMS{\cyrKa} {\mathalpha}{\M at cyrillicupper@font}{"41A}
+ \@DMS{\cyrEl} {\mathalpha}{\M at cyrillicupper@font}{"41B}
+ \@DMS{\cyrEm} {\mathalpha}{\M at cyrillicupper@font}{"41C}
+ \@DMS{\cyrEn} {\mathalpha}{\M at cyrillicupper@font}{"41D}
+ \@DMS{\cyrO} {\mathalpha}{\M at cyrillicupper@font}{"41E}
+ \@DMS{\cyrPe} {\mathalpha}{\M at cyrillicupper@font}{"41F}
+ \@DMS{\cyrEr} {\mathalpha}{\M at cyrillicupper@font}{"420}
+ \@DMS{\cyrEs} {\mathalpha}{\M at cyrillicupper@font}{"421}
+ \@DMS{\cyrTe} {\mathalpha}{\M at cyrillicupper@font}{"422}
+ \@DMS{\cyrU} {\mathalpha}{\M at cyrillicupper@font}{"423}
+ \@DMS{\cyrEf} {\mathalpha}{\M at cyrillicupper@font}{"424}
+ \@DMS{\cyrHa} {\mathalpha}{\M at cyrillicupper@font}{"425}
+ \@DMS{\cyrTse} {\mathalpha}{\M at cyrillicupper@font}{"426}
+ \@DMS{\cyrChe} {\mathalpha}{\M at cyrillicupper@font}{"427}
+ \@DMS{\cyrSha} {\mathalpha}{\M at cyrillicupper@font}{"428}
+ \@DMS{\cyrShcha}{\mathalpha}{\M at cyrillicupper@font}{"429}
+ \@DMS{\cyrHard} {\mathalpha}{\M at cyrillicupper@font}{"42A}
+ \@DMS{\cyrYeru} {\mathalpha}{\M at cyrillicupper@font}{"42B}
+ \@DMS{\cyrSoft} {\mathalpha}{\M at cyrillicupper@font}{"42C}
+ \@DMS{\cyrE} {\mathalpha}{\M at cyrillicupper@font}{"42D}
+ \@DMS{\cyrYu} {\mathalpha}{\M at cyrillicupper@font}{"42E}
+ \@DMS{\cyrYa} {\mathalpha}{\M at cyrillicupper@font}{"42F}
+ \@DMS{\cyrvarI} {\mathalpha}{\M at cyrillicupper@font}{"419}}
% \end{macrocode}
% Set minuscule Cyrillic characters.\indexpage{keywordcyrilliclower=keyword \texttt{cyrilliclower}}
% \begin{macrocode}
\def\M at cyrilliclower@set{%
\edef\M at cyrilliclower@font{M\M at cyrilliclowershape\@tempa}
- \DeclareMathSymbol{\cyra}{\mathalpha}{\M at cyrilliclower@font}{"430}
- \DeclareMathSymbol{\cyrbe}{\mathalpha}{\M at cyrilliclower@font}{"431}
- \DeclareMathSymbol{\cyrve}{\mathalpha}{\M at cyrilliclower@font}{"432}
- \DeclareMathSymbol{\cyrghe}{\mathalpha}{\M at cyrilliclower@font}{"433}
- \DeclareMathSymbol{\cyrde}{\mathalpha}{\M at cyrilliclower@font}{"434}
- \DeclareMathSymbol{\cyrie}{\mathalpha}{\M at cyrilliclower@font}{"435}
- \DeclareMathSymbol{\cyrzhe}{\mathalpha}{\M at cyrilliclower@font}{"436}
- \DeclareMathSymbol{\cyrze}{\mathalpha}{\M at cyrilliclower@font}{"437}
- \DeclareMathSymbol{\cyri}{\mathalpha}{\M at cyrilliclower@font}{"438}
- \DeclareMathSymbol{\cyrka}{\mathalpha}{\M at cyrilliclower@font}{"43A}
- \DeclareMathSymbol{\cyrel}{\mathalpha}{\M at cyrilliclower@font}{"43B}
- \DeclareMathSymbol{\cyrem}{\mathalpha}{\M at cyrilliclower@font}{"43C}
- \DeclareMathSymbol{\cyren}{\mathalpha}{\M at cyrilliclower@font}{"43D}
- \DeclareMathSymbol{\cyro}{\mathalpha}{\M at cyrilliclower@font}{"43E}
- \DeclareMathSymbol{\cyrpe}{\mathalpha}{\M at cyrilliclower@font}{"43F}
- \DeclareMathSymbol{\cyrer}{\mathalpha}{\M at cyrilliclower@font}{"440}
- \DeclareMathSymbol{\cyres}{\mathalpha}{\M at cyrilliclower@font}{"441}
- \DeclareMathSymbol{\cyrte}{\mathalpha}{\M at cyrilliclower@font}{"442}
- \DeclareMathSymbol{\cyru}{\mathalpha}{\M at cyrilliclower@font}{"443}
- \DeclareMathSymbol{\cyref}{\mathalpha}{\M at cyrilliclower@font}{"444}
- \DeclareMathSymbol{\cyrha}{\mathalpha}{\M at cyrilliclower@font}{"445}
- \DeclareMathSymbol{\cyrtse}{\mathalpha}{\M at cyrilliclower@font}{"446}
- \DeclareMathSymbol{\cyrche}{\mathalpha}{\M at cyrilliclower@font}{"447}
- \DeclareMathSymbol{\cyrsha}{\mathalpha}{\M at cyrilliclower@font}{"448}
- \DeclareMathSymbol{\cyrshcha}{\mathalpha}{\M at cyrilliclower@font}{"449}
- \DeclareMathSymbol{\cyrhard}{\mathalpha}{\M at cyrilliclower@font}{"44A}
- \DeclareMathSymbol{\cyryeru}{\mathalpha}{\M at cyrilliclower@font}{"44B}
- \DeclareMathSymbol{\cyrsoft}{\mathalpha}{\M at cyrilliclower@font}{"44C}
- \DeclareMathSymbol{\cyre}{\mathalpha}{\M at cyrilliclower@font}{"44D}
- \DeclareMathSymbol{\cyryu}{\mathalpha}{\M at cyrilliclower@font}{"44E}
- \DeclareMathSymbol{\cyrya}{\mathalpha}{\M at cyrilliclower@font}{"44F}
- \DeclareMathSymbol{\cyrvari}{\mathalpha}{\M at cyrilliclower@font}{"439}}
+ \@DMS{\cyra} {\mathalpha}{\M at cyrilliclower@font}{"430}
+ \@DMS{\cyrbe} {\mathalpha}{\M at cyrilliclower@font}{"431}
+ \@DMS{\cyrve} {\mathalpha}{\M at cyrilliclower@font}{"432}
+ \@DMS{\cyrghe} {\mathalpha}{\M at cyrilliclower@font}{"433}
+ \@DMS{\cyrde} {\mathalpha}{\M at cyrilliclower@font}{"434}
+ \@DMS{\cyrie} {\mathalpha}{\M at cyrilliclower@font}{"435}
+ \@DMS{\cyrzhe} {\mathalpha}{\M at cyrilliclower@font}{"436}
+ \@DMS{\cyrze} {\mathalpha}{\M at cyrilliclower@font}{"437}
+ \@DMS{\cyri} {\mathalpha}{\M at cyrilliclower@font}{"438}
+ \@DMS{\cyrka} {\mathalpha}{\M at cyrilliclower@font}{"43A}
+ \@DMS{\cyrel} {\mathalpha}{\M at cyrilliclower@font}{"43B}
+ \@DMS{\cyrem} {\mathalpha}{\M at cyrilliclower@font}{"43C}
+ \@DMS{\cyren} {\mathalpha}{\M at cyrilliclower@font}{"43D}
+ \@DMS{\cyro} {\mathalpha}{\M at cyrilliclower@font}{"43E}
+ \@DMS{\cyrpe} {\mathalpha}{\M at cyrilliclower@font}{"43F}
+ \@DMS{\cyrer} {\mathalpha}{\M at cyrilliclower@font}{"440}
+ \@DMS{\cyres} {\mathalpha}{\M at cyrilliclower@font}{"441}
+ \@DMS{\cyrte} {\mathalpha}{\M at cyrilliclower@font}{"442}
+ \@DMS{\cyru} {\mathalpha}{\M at cyrilliclower@font}{"443}
+ \@DMS{\cyref} {\mathalpha}{\M at cyrilliclower@font}{"444}
+ \@DMS{\cyrha} {\mathalpha}{\M at cyrilliclower@font}{"445}
+ \@DMS{\cyrtse} {\mathalpha}{\M at cyrilliclower@font}{"446}
+ \@DMS{\cyrche} {\mathalpha}{\M at cyrilliclower@font}{"447}
+ \@DMS{\cyrsha} {\mathalpha}{\M at cyrilliclower@font}{"448}
+ \@DMS{\cyrshcha}{\mathalpha}{\M at cyrilliclower@font}{"449}
+ \@DMS{\cyrhard} {\mathalpha}{\M at cyrilliclower@font}{"44A}
+ \@DMS{\cyryeru} {\mathalpha}{\M at cyrilliclower@font}{"44B}
+ \@DMS{\cyrsoft} {\mathalpha}{\M at cyrilliclower@font}{"44C}
+ \@DMS{\cyre} {\mathalpha}{\M at cyrilliclower@font}{"44D}
+ \@DMS{\cyryu} {\mathalpha}{\M at cyrilliclower@font}{"44E}
+ \@DMS{\cyrya} {\mathalpha}{\M at cyrilliclower@font}{"44F}
+ \@DMS{\cyrvari} {\mathalpha}{\M at cyrilliclower@font}{"439}}
% \end{macrocode}
% Set Hebrew characters.\indexpage{keywordhebrew=keyword \texttt{hebrew}}
% \begin{macrocode}
\def\M at hebrew@set{%
\edef\M at hebrew@font{M\M at hebrewshape\@tempa}
- \DeclareMathSymbol{\aleph}{\mathalpha}{\M at hebrew@font}{"5D0}
- \DeclareMathSymbol{\beth}{\mathalpha}{\M at hebrew@font}{"5D1}
- \DeclareMathSymbol{\gimel}{\mathalpha}{\M at hebrew@font}{"5D2}
- \DeclareMathSymbol{\daleth}{\mathalpha}{\M at hebrew@font}{"5D3}
- \DeclareMathSymbol{\he}{\mathalpha}{\M at hebrew@font}{"5D4}
- \DeclareMathSymbol{\vav}{\mathalpha}{\M at hebrew@font}{"5D5}
- \DeclareMathSymbol{\zayin}{\mathalpha}{\M at hebrew@font}{"5D6}
- \DeclareMathSymbol{\het}{\mathalpha}{\M at hebrew@font}{"5D7}
- \DeclareMathSymbol{\tet}{\mathalpha}{\M at hebrew@font}{"5D8}
- \DeclareMathSymbol{\yod}{\mathalpha}{\M at hebrew@font}{"5D9}
- \DeclareMathSymbol{\kaf}{\mathalpha}{\M at hebrew@font}{"5DB}
- \DeclareMathSymbol{\lamed}{\mathalpha}{\M at hebrew@font}{"5DC}
- \DeclareMathSymbol{\mem}{\mathalpha}{\M at hebrew@font}{"5DE}
- \DeclareMathSymbol{\nun}{\mathalpha}{\M at hebrew@font}{"5E0}
- \DeclareMathSymbol{\samekh}{\mathalpha}{\M at hebrew@font}{"5E1}
- \DeclareMathSymbol{\ayin}{\mathalpha}{\M at hebrew@font}{"5E2}
- \DeclareMathSymbol{\pe}{\mathalpha}{\M at hebrew@font}{"5E4}
- \DeclareMathSymbol{\tsadi}{\mathalpha}{\M at hebrew@font}{"5E6}
- \DeclareMathSymbol{\qof}{\mathalpha}{\M at hebrew@font}{"5E7}
- \DeclareMathSymbol{\resh}{\mathalpha}{\M at hebrew@font}{"5E8}
- \DeclareMathSymbol{\shin}{\mathalpha}{\M at hebrew@font}{"5E9}
- \DeclareMathSymbol{\tav}{\mathalpha}{\M at hebrew@font}{"5EA}
- \DeclareMathSymbol{\varkaf}{\mathalpha}{\M at hebrew@font}{"5DA}
- \DeclareMathSymbol{\varmem}{\mathalpha}{\M at hebrew@font}{"5DD}
- \DeclareMathSymbol{\varnun}{\mathalpha}{\M at hebrew@font}{"5DF}
- \DeclareMathSymbol{\varpe}{\mathalpha}{\M at hebrew@font}{"5E3}
- \DeclareMathSymbol{\vartsadi}{\mathalpha}{\M at hebrew@font}{"5E5}}
+ \@DMS{\aleph} {\mathalpha}{\M at hebrew@font}{"5D0}
+ \@DMS{\beth} {\mathalpha}{\M at hebrew@font}{"5D1}
+ \@DMS{\gimel} {\mathalpha}{\M at hebrew@font}{"5D2}
+ \@DMS{\daleth} {\mathalpha}{\M at hebrew@font}{"5D3}
+ \@DMS{\he} {\mathalpha}{\M at hebrew@font}{"5D4}
+ \@DMS{\vav} {\mathalpha}{\M at hebrew@font}{"5D5}
+ \@DMS{\zayin} {\mathalpha}{\M at hebrew@font}{"5D6}
+ \@DMS{\het} {\mathalpha}{\M at hebrew@font}{"5D7}
+ \@DMS{\tet} {\mathalpha}{\M at hebrew@font}{"5D8}
+ \@DMS{\yod} {\mathalpha}{\M at hebrew@font}{"5D9}
+ \@DMS{\kaf} {\mathalpha}{\M at hebrew@font}{"5DB}
+ \@DMS{\lamed} {\mathalpha}{\M at hebrew@font}{"5DC}
+ \@DMS{\mem} {\mathalpha}{\M at hebrew@font}{"5DE}
+ \@DMS{\nun} {\mathalpha}{\M at hebrew@font}{"5E0}
+ \@DMS{\samekh} {\mathalpha}{\M at hebrew@font}{"5E1}
+ \@DMS{\ayin} {\mathalpha}{\M at hebrew@font}{"5E2}
+ \@DMS{\pe} {\mathalpha}{\M at hebrew@font}{"5E4}
+ \@DMS{\tsadi} {\mathalpha}{\M at hebrew@font}{"5E6}
+ \@DMS{\qof} {\mathalpha}{\M at hebrew@font}{"5E7}
+ \@DMS{\resh} {\mathalpha}{\M at hebrew@font}{"5E8}
+ \@DMS{\shin} {\mathalpha}{\M at hebrew@font}{"5E9}
+ \@DMS{\tav} {\mathalpha}{\M at hebrew@font}{"5EA}
+ \@DMS{\varkaf} {\mathalpha}{\M at hebrew@font}{"5DA}
+ \@DMS{\varmem} {\mathalpha}{\M at hebrew@font}{"5DD}
+ \@DMS{\varnun} {\mathalpha}{\M at hebrew@font}{"5DF}
+ \@DMS{\varpe} {\mathalpha}{\M at hebrew@font}{"5E3}
+ \@DMS{\vartsadi}{\mathalpha}{\M at hebrew@font}{"5E5}}
% \end{macrocode}
% Set digits.\indexpage{keyworddigits=keyword \texttt{digits}}
% \begin{macrocode}
\def\M at digits@set{%
\edef\M at digits@font{M\M at digitsshape\@tempa}
- \DeclareMathSymbol{0}{\mathalpha}{\M at digits@font}{`0}
- \DeclareMathSymbol{1}{\mathalpha}{\M at digits@font}{`1}
- \DeclareMathSymbol{2}{\mathalpha}{\M at digits@font}{`2}
- \DeclareMathSymbol{3}{\mathalpha}{\M at digits@font}{`3}
- \DeclareMathSymbol{4}{\mathalpha}{\M at digits@font}{`4}
- \DeclareMathSymbol{5}{\mathalpha}{\M at digits@font}{`5}
- \DeclareMathSymbol{6}{\mathalpha}{\M at digits@font}{`6}
- \DeclareMathSymbol{7}{\mathalpha}{\M at digits@font}{`7}
- \DeclareMathSymbol{8}{\mathalpha}{\M at digits@font}{`8}
- \DeclareMathSymbol{9}{\mathalpha}{\M at digits@font}{`9}}
+ \@DMS{0}{\mathalpha}{\M at digits@font}{`0}
+ \@DMS{1}{\mathalpha}{\M at digits@font}{`1}
+ \@DMS{2}{\mathalpha}{\M at digits@font}{`2}
+ \@DMS{3}{\mathalpha}{\M at digits@font}{`3}
+ \@DMS{4}{\mathalpha}{\M at digits@font}{`4}
+ \@DMS{5}{\mathalpha}{\M at digits@font}{`5}
+ \@DMS{6}{\mathalpha}{\M at digits@font}{`6}
+ \@DMS{7}{\mathalpha}{\M at digits@font}{`7}
+ \@DMS{8}{\mathalpha}{\M at digits@font}{`8}
+ \@DMS{9}{\mathalpha}{\M at digits@font}{`9}}
% \end{macrocode}
% Set new operator font.\indexpage{keywordoperator=keyword \texttt{operator}}
% If \textsf{mathfont} is set to adjust fonts, we will have a problem when typesetting operators because the |\operator at font| will pull modified (lengthened) letters from the operator font. Traditional \TeX\ addressed this problem by storing the Latin letters for math in the same endoding slots but in a different font from Computer Modern Roman and switching to Computer Modern Roman. Here we want to use the same font but different encoding slots. The macro |\M at default@latin| changes all |\Umathcode|s of Latin letters from their big (lengthened) values to their original values. Because |\operator at font| is always called inside a group, we don't have to worry about messing up any other math.
@@ -3669,7 +4114,8 @@
% \begin{macrocode}
\def\M at operator@set{%
\ifM at adjust@font
- \edef\M at operator@num{\number\csname symM\M at operatorshape\@tempa\endcsname}
+ \edef\M at operator@num{\number
+ \csname symM\M at operatorshape\@tempa\endcsname}
\protected\edef\M at operator@mathcodes{%
\Umathcode`A=7+\M at operator@num+`A\relax
\Umathcode`B=7+\M at operator@num+`B\relax
@@ -3731,8 +4177,9 @@
% \end{macrocode}
% Then we change the |\operator at font| definition and, if applicable, change the math codes.
% \begin{macrocode}
- \xdef\operator at font{\noexpand\mathgroup
- \csname symM\M at operatorshape\@tempa\endcsname\M at operator@mathcodes}}
+ \xdef\operator at font{\mathgroup
+ \csname symM\M at operatorshape\@tempa\endcsname
+ \M at operator@mathcodes}}
% \end{macrocode}
% Set delimiters.\indexpage{keyworddelimiters=keyword \texttt{delimiters}}
% \begin{macrocode}
@@ -3739,70 +4186,67 @@
\ifM at adjust@font
\def\M at delimiters@set{%
\edef\M at delimiters@font{M\M at delimitersshape\@tempa}
- \DeclareMathSymbol{(}{\mathopen}{\M at delimiters@font}{"28}
- \DeclareMathSymbol{)}{\mathclose}{\M at delimiters@font}{"29}
- \DeclareMathSymbol{[}{\mathopen}{\M at delimiters@font}{"5B}
- \DeclareMathSymbol{]}{\mathclose}{\M at delimiters@font}{"5D}
+ \edef\M at delimiters@num{%
+ \csname sym\M at delimiters@font\endcsname}
+ \@DMS{(} {\mathopen} {\M at delimiters@font}{"28}
+ \@DMS{)} {\mathclose}{\M at delimiters@font}{"29}
+ \@DMS{[} {\mathopen} {\M at delimiters@font}{"5B}
+ \@DMS{]} {\mathclose}{\M at delimiters@font}{"5D}
+ \@DMS{\leftbrace} {\mathopen}{\M at delimiters@font}{"7B}
+ \@DMS{\rightbrace}{\mathclose}{\M at delimiters@font}{"7D}
+% \end{macrocode}
+% Set |\Udelcode|s for delimiters that come from individual characters.
+% \begin{macrocode}
+ \global\Udelcode40 +\M at delimiters@num+40\relax % (
+ \global\Udelcode41 +\M at delimiters@num+41\relax % )
+ \global\Udelcode47 +\M at delimiters@num+47\relax % /
+ \global\Udelcode91 +\M at delimiters@num+91\relax % [
+ \global\Udelcode93 +\M at delimiters@num+93\relax % ]
+ \global\Udelcode124+\M at delimiters@num+124\relax % |
\ifM at symbols\else
- \DeclareMathSymbol{|}{\mathord}{\M at delimiters@font}{"7C}
+ \@DMS{|}{\mathord}{\M at delimiters@font}{"7C}
\fi
- \DeclareMathSymbol{\leftbrace}{\mathopen}{\M at delimiters@font}{"7B}
- \DeclareMathSymbol{\rightbrace}{\mathclose}{\M at delimiters@font}{"7D}
- \global\Udelcode40=+\csname sym\M at delimiters@font\endcsname+40\relax % (
- \global\Udelcode41=+\csname sym\M at delimiters@font\endcsname+41\relax % )
- \global\Udelcode47=+\csname sym\M at delimiters@font\endcsname+47\relax % /
- \global\Udelcode91=+\csname sym\M at delimiters@font\endcsname+91\relax % [
- \global\Udelcode93=+\csname sym\M at delimiters@font\endcsname+93\relax % ]
- \global\Udelcode124=+\csname sym\M at delimiters@font\endcsname+124\relax % |
\global\let\vert=|
- \protected\gdef\backslash{\ifmmode\mathbackslash\else\textbackslash\fi}
+% \end{macrocode}
+% For the delimiters that come from control sequences, we use |\xdef| and |\Udelimiter|.
+% \begin{macrocode}
+ \protected\xdef\backslash{%
+ \ifmmode\mathbackslash\else\textbackslash\fi}
\protected\xdef\mathbackslash{%
- \Udelimiter+2+\number\csname sym\M at delimiters@font\endcsname
- +92\relax} % backslash
+ \Udelimiter+2+\M at delimiters@num+92\relax}
\protected\xdef\lbrace{%
- \Udelimiter+4+\number\csname sym\M at delimiters@font\endcsname
- +123\relax} % {
+ \Udelimiter+4+\M at delimiters@num+123\relax}
\protected\xdef\rbrace{%
- \Udelimiter+5+\number\csname sym\M at delimiters@font\endcsname
- +125\relax} % }
+ \Udelimiter+5+\M at delimiters@num+125\relax}
\protected\xdef\lguil{%
- \Udelimiter+4+\number\csname sym\M at delimiters@font\endcsname
- +8249\relax} % single left guilement
+ \Udelimiter+4+\M at delimiters@num+8249\relax}
\protected\xdef\rguil{%
- \Udelimiter+5+\number\csname sym\M at delimiters@font\endcsname
- +8250\relax} % single right guilement
+ \Udelimiter+5+\M at delimiters@num+8250\relax}
\protected\xdef\llguil{%
- \Udelimiter+4+\number\csname sym\M at delimiters@font\endcsname
- +171\relax} % double left guilement
+ \Udelimiter+4+\M at delimiters@num+171\relax}
\protected\xdef\rrguil{%
- \Udelimiter+5+\number\csname sym\M at delimiters@font\endcsname
- +187\relax} % double right guilement
+ \Udelimiter+5+\M at delimiters@num+187\relax}
\protected\xdef\fakelangle{%
- \Udelimiter+4+\number\csname sym\M at delimiters@font\endcsname
- +1044508\relax} % fake left angle
+ \Udelimiter+4+\M at delimiters@num+1044508\relax}
\protected\xdef\fakerangle{%
- \Udelimiter+5+\number\csname sym\M at delimiters@font\endcsname
- +1044509\relax} % fake right angle
+ \Udelimiter+5+\M at delimiters@num+1044509\relax}
\protected\xdef\fakellangle{%
- \Udelimiter+4+\number\csname sym\M at delimiters@font\endcsname
- +1044510\relax} % fake double left angle
+ \Udelimiter+4+\M at delimiters@num+1044510\relax}
\protected\xdef\fakerrangle{%
- \Udelimiter+5+\number\csname sym\M at delimiters@font\endcsname
- +1044511\relax} % fake double right angle
- }
+ \Udelimiter+5+\M at delimiters@num+1044511\relax}}
\else
\def\M at delimiters@set{%
\edef\M at delimiters@font{M\M at delimitersshape\@tempa}
- \DeclareMathSymbol{(}{\mathopen}{\M at delimiters@font}{"28}
- \DeclareMathSymbol{)}{\mathclose}{\M at delimiters@font}{"29}
- \DeclareMathSymbol{[}{\mathopen}{\M at delimiters@font}{"5B}
- \DeclareMathSymbol{]}{\mathclose}{\M at delimiters@font}{"5D}
- \DeclareMathSymbol{\lguil}{\mathopen}{\M at delimiters@font}{"2039}
- \DeclareMathSymbol{\rguil}{\mathclose}{\M at delimiters@font}{"203A}
- \DeclareMathSymbol{\llguil}{\mathopen}{\M at delimiters@font}{"AB}
- \DeclareMathSymbol{\rrguil}{\mathclose}{\M at delimiters@font}{"BB}
- \DeclareMathSymbol{\leftbrace}{\mathopen}{\M at delimiters@font}{"7B}
- \DeclareMathSymbol{\rightbrace}{\mathclose}{\M at delimiters@font}{"7D}}
+ \@DMS{(} {\mathopen} {\M at delimiters@font}{"28}
+ \@DMS{)} {\mathclose}{\M at delimiters@font}{"29}
+ \@DMS{[} {\mathopen} {\M at delimiters@font}{"5B}
+ \@DMS{]} {\mathclose}{\M at delimiters@font}{"5D}
+ \@DMS{\lguil} {\mathopen} {\M at delimiters@font}{"2039}
+ \@DMS{\rguil} {\mathclose}{\M at delimiters@font}{"203A}
+ \@DMS{\llguil} {\mathopen} {\M at delimiters@font}{"AB}
+ \@DMS{\rrguil} {\mathclose}{\M at delimiters@font}{"BB}
+ \@DMS{\leftbrace} {\mathopen} {\M at delimiters@font}{"7B}
+ \@DMS{\rightbrace}{\mathclose}{\M at delimiters@font}{"7D}}
\fi
% \end{macrocode}
% Radicals.\indexpage{keywordradical=keyword \texttt{radical}}
@@ -3810,9 +4254,9 @@
\ifM at adjust@font
\def\M at radical@set{%
\edef\M at radical@font{M\M at radicalshape\@tempa}
- \DeclareMathSymbol{\surd}{\mathord}{\M at radical@font}{"221A}
- \xdef\@sqrts at gn##1{%
- \Uradical+\number\csname sym\M at radical@font\endcsname+8730\relax{##1}}
+ \@DMS{\surd}{\mathord}{\M at radical@font}{"221A}
+ \xdef\@sqrts at gn##1{\Uradical+\number
+ \csname sym\M at radical@font\endcsname+8730\relax{##1}}
% \end{macrocode}
% We redefine |\r@@t|, which typesets the degree symbol on an $n$th root. We set the placement so that right side of the box containing the degree lies 60\% of the horizontal distance across the surd symbol, and the baseline of the degree symbol is 60\% of the vertical distance up the surd.
% \indexpage{LaTeX kernel=\LaTeX\ kernel}
@@ -3837,7 +4281,7 @@
\else
\def\M at radical@set{%
\edef\M at radical@font{M\M at radicalshape\@tempa}
- \DeclareMathSymbol{\surd}{\mathord}{\M at radical@font}{"221A}}
+ \@DMS{\surd}{\mathord}{\M at radical@font}{"221A}}
\fi
% \end{macrocode}
% Big operators.\indexpage{keywordbigops=keyword \texttt{bigops}}
@@ -3846,9 +4290,9 @@
\edef\M at bigops@font{M\M at bigopsshape\@tempa}
\let\sum\@undefined
\let\prod\@undefined
- \DeclareMathSymbol{\sum}{\mathop}{\M at bigops@font}{"2211}
- \DeclareMathSymbol{\prod}{\mathop}{\M at bigops@font}{"220F}
- \DeclareMathSymbol{\intop}{\mathop}{\M at bigops@font}{"222B}}
+ \@DMS{\sum}{\mathop}{\M at bigops@font}{"2211}
+ \@DMS{\prod}{\mathop}{\M at bigops@font}{"220F}
+ \@DMS{\intop}{\mathop}{\M at bigops@font}{"222B}}
% \end{macrocode}
% Extended big operators.\indexpage{keywordextbigops=keyword \texttt{extbigops}}
% \begin{macrocode}
@@ -3863,26 +4307,26 @@
\let\bigotimes\@undefined
\let\bigodot\@undefined
\let\bigsqcup\@undefined
- \DeclareMathSymbol{\coprod}{\mathop}{\M at extbigops@font}{"2210}
- \DeclareMathSymbol{\bigvee}{\mathop}{\M at extbigops@font}{"22C1}
- \DeclareMathSymbol{\bigwedge}{\mathop}{\M at extbigops@font}{"22C0}
- \DeclareMathSymbol{\bigcup}{\mathop}{\M at extbigops@font}{"22C3}
- \DeclareMathSymbol{\bigcap}{\mathop}{\M at extbigops@font}{"22C2}
- \DeclareMathSymbol{\iintop}{\mathop}{\M at extbigops@font}{"222C}
- \protected\gdef\iint{\iintop\nolimits}
- \DeclareMathSymbol{\iiintop}{\mathop}{\M at extbigops@font}{"222D}
- \protected\gdef\iiint{\iiintop\nolimits}
- \DeclareMathSymbol{\ointop}{\mathop}{\M at extbigops@font}{"222E}
- \protected\gdef\oint{\ointop\nolimits}
- \DeclareMathSymbol{\oiintop}{\mathop}{\M at extbigops@font}{"222F}
- \protected\gdef\oiint{\oiintop\nolimits}
- \DeclareMathSymbol{\oiiintop}{\mathop}{\M at extbigops@font}{"2230}
- \protected\gdef\oiiint{\oiiintop\nolimits}
- \DeclareMathSymbol{\bigoplus}{\mathop}{\M at extbigops@font}{"2A01}
- \DeclareMathSymbol{\bigotimes}{\mathop}{\M at extbigops@font}{"2A02}
- \DeclareMathSymbol{\bigodot}{\mathop}{\M at extbigops@font}{"2A00}
- \DeclareMathSymbol{\bigsqcap}{\mathop}{\M at extbigops@font}{"2A05}
- \DeclareMathSymbol{\bigsqcup}{\mathop}{\M at extbigops@font}{"2A06}}
+ \@DMS{\coprod} {\mathop}{\M at extbigops@font}{"2210}
+ \@DMS{\bigvee} {\mathop}{\M at extbigops@font}{"22C1}
+ \@DMS{\bigwedge} {\mathop}{\M at extbigops@font}{"22C0}
+ \@DMS{\bigcup} {\mathop}{\M at extbigops@font}{"22C3}
+ \@DMS{\bigcap} {\mathop}{\M at extbigops@font}{"22C2}
+ \@DMS{\iintop} {\mathop}{\M at extbigops@font}{"222C}
+ \@DMS{\iiintop} {\mathop}{\M at extbigops@font}{"222D}
+ \@DMS{\ointop} {\mathop}{\M at extbigops@font}{"222E}
+ \@DMS{\oiintop} {\mathop}{\M at extbigops@font}{"222F}
+ \@DMS{\oiiintop} {\mathop}{\M at extbigops@font}{"2230}
+ \@DMS{\bigoplus} {\mathop}{\M at extbigops@font}{"2A01}
+ \@DMS{\bigotimes}{\mathop}{\M at extbigops@font}{"2A02}
+ \@DMS{\bigodot} {\mathop}{\M at extbigops@font}{"2A00}
+ \@DMS{\bigsqcap} {\mathop}{\M at extbigops@font}{"2A05}
+ \@DMS{\bigsqcup} {\mathop}{\M at extbigops@font}{"2A06}
+ \protected\gdef\iint{\iintop\nolimits}
+ \protected\gdef\iiint{\iiintop\nolimits}
+ \protected\gdef\oint{\ointop\nolimits}
+ \protected\gdef\oiint{\oiintop\nolimits}
+ \protected\gdef\oiiint{\oiiintop\nolimits}}
% \end{macrocode}
% Set symbols.\indexpage{keywordsymbols=keyword \texttt{symbols}}
% \begin{macrocode}
@@ -3890,90 +4334,114 @@
\edef\M at symbols@font{M\M at symbolsshape\@tempa}
\let\colon\@undefined
\let\mathellipsis\@undefined
- \DeclareMathSymbol{.}{\mathord}{\M at symbols@font}{"2E}
- \DeclareMathSymbol{@}{\mathord}{\M at symbols@font}{"40}
- \DeclareMathSymbol{'}{\mathord}{\M at symbols@font}{"2032}
- \DeclareMathSymbol{\prime}{\mathord}{\M at symbols@font}{"2032}
- \DeclareMathSymbol{"}{\mathord}{\M at symbols@font}{"2033}
- \DeclareMathSymbol{\mathhash}{\mathord}{\M at symbols@font}{"23}
- \DeclareMathSymbol{\mathdollar}{\mathord}{\M at symbols@font}{"24}
- \DeclareMathSymbol{\mathpercent}{\mathord}{\M at symbols@font}{"25}
- \DeclareMathSymbol{\mathand}{\mathord}{\M at symbols@font}{"26}
- \DeclareMathSymbol{\mathparagraph}{\mathord}{\M at symbols@font}{"B6}
- \DeclareMathSymbol{\mathsection}{\mathord}{\M at symbols@font}{"A7}
- \DeclareMathSymbol{\mathsterling}{\mathord}{\M at symbols@font}{"A3}
- \DeclareMathSymbol{\neg}{\mathord}{\M at symbols@font}{"AC}
- \DeclareMathSymbol{|}{\mathord}{\M at symbols@font}{"7C}
- \DeclareMathSymbol{\infty}{\mathord}{\M at symbols@font}{"221E}
- \DeclareMathSymbol{\partial}{\mathord}{\M at symbols@font}{"2202}
- \DeclareMathSymbol{\degree}{\mathord}{\M at symbols@font}{"B0}
- \DeclareMathSymbol{\increment}{\mathord}{\M at symbols@font}{"2206}
- \DeclareMathSymbol{\comma}{\mathord}{\M at symbols@font}{"2C}
- \DeclareMathSymbol{+}{\mathbin}{\M at symbols@font}{"2B}
- \DeclareMathSymbol{-}{\mathbin}{\M at symbols@font}{"2212}
- \DeclareMathSymbol{*}{\mathbin}{\M at symbols@font}{"2A}
- \DeclareMathSymbol{\times}{\mathbin}{\M at symbols@font}{"D7}
- \DeclareMathSymbol{/}{\mathord}{\M at symbols@font}{"2F}
- \DeclareMathSymbol{\fractionslash}{\mathord}{\M at symbols@font}{"2215}
- \DeclareMathSymbol{\div}{\mathbin}{\M at symbols@font}{"F7}
- \DeclareMathSymbol{\pm}{\mathbin}{\M at symbols@font}{"B1}
- \DeclareMathSymbol{\bullet}{\mathbin}{\M at symbols@font}{"2022}
- \DeclareMathSymbol{\dagger}{\mathbin}{\M at symbols@font}{"2020}
- \DeclareMathSymbol{\ddagger}{\mathbin}{\M at symbols@font}{"2021}
- \DeclareMathSymbol{\cdot}{\mathbin}{\M at symbols@font}{"2219}
- \DeclareMathSymbol{\setminus}{\mathbin}{\M at symbols@font}{"5C}
- \DeclareMathSymbol{=}{\mathrel}{\M at symbols@font}{"3D}
- \DeclareMathSymbol{<}{\mathrel}{\M at symbols@font}{"3C}
- \DeclareMathSymbol{>}{\mathrel}{\M at symbols@font}{"3E}
- \DeclareMathSymbol{\leq}{\mathrel}{\M at symbols@font}{"2264}
- \DeclareMathSymbol{\geq}{\mathrel}{\M at symbols@font}{"2265}
- \DeclareMathSymbol{\sim}{\mathrel}{\M at symbols@font}{"7E}
- \DeclareMathSymbol{\approx}{\mathrel}{\M at symbols@font}{"2248}
- \DeclareMathSymbol{\equiv}{\mathrel}{\M at symbols@font}{"2261}
- \DeclareMathSymbol{\mid}{\mathrel}{\M at symbols@font}{"7C}
- \DeclareMathSymbol{\parallel}{\mathrel}{\M at symbols@font}{"2016}
- \DeclareMathSymbol{:}{\mathrel}{\M at symbols@font}{"3A}
- \DeclareMathSymbol{?}{\mathclose}{\M at symbols@font}{"3F}
- \DeclareMathSymbol{!}{\mathclose}{\M at symbols@font}{"21}
- \DeclareMathSymbol{,}{\mathpunct}{\M at symbols@font}{"2C}
- \DeclareMathSymbol{;}{\mathpunct}{\M at symbols@font}{"3B}
- \DeclareMathSymbol{\colon}{\mathord}{\M at symbols@font}{"3A}
- \DeclareMathSymbol{\mathellipsis}{\mathinner}{\M at symbols@font}{"2026}
% \end{macrocode}
-% Now a bit of housekeeping. We redefine |\#|, |\%|, and |\&| as robust commands that expand to previously declared |\mathhash|, etc.\ commands in math mode and retain their standard |\char| definitions otherwise. Other commands that function in both math and horizontal modes such as |\S| or |\dag| also use this technique. Then we define macros |\cong| and |\simeq|. The last three commands defined here preserve the Computer Modern font for charcters used in several math-mode symbols.\indexpage{robust commands}
+% Before we start declaring symbols, specifically minus or equals signs, we have to address a minor clash with \textsf{amsmath}. That package defines |\relbar| and |\Relbar| as essentially a minus and equals sign respectively. However, those two control sequences are for making arrows, so they should come from the |arrows| font, not the |symbols| font. If the user already called |\mathfont| with the |arrows| keyword, we do nothing because |\M at arrows@set| defines |\relbar| and |\Relbar| correctly. If not, we make these two control sequences be the current minus and equals sign (before the font changes in |\M at symbols@set|) because that's as good a choice as any, and we prevent \textsf{amsmath} from changing them to the |symbols| font. Users or package authors who want to modify |\relbar| or |\Relbar| should change |\@relbar| or |\@Relbar| respectively.
% \begin{macrocode}
+ \ifM at arrows\else
+ \global\Umathcharnumdef\@relbar=\Umathcodenum`\-
+ \global\Umathcharnumdef\@Relbar=\Umathcodenum`\=
+ \protected\gdef\relbar{\mathrel
+ {\mathpalette\mathsm at sh\@relbar}}
+ \protected\gdef\Relbar{\@Relbar}
+% \end{macrocode}
+% We redefine stuff if \textsf{amsmath} gets loaded after \textsf{mathfont}.
+% \begin{macrocode}
+ \@ifpackageloaded{amsmath}
+ {\relax}{%
+ \global\let\@@relbar\relbar
+ \global\let\@@Relbar\Relbar
+ \AtBeginDocument{\ifM at arrows\else
+ \@ifpackageloaded{amsmath}{%
+ \global\let\relbar\@@relbar
+ \global\let\Relbar\@@Relbar}
+ {\relax}
+ \fi}}
+ \fi
+% \end{macrocode}
+% The rest of the symbols.
+% \begin{macrocode}
+ \@DMS{.} {\mathord} {\M at symbols@font}{"2E}
+ \@DMS{@} {\mathord} {\M at symbols@font}{"40}
+ \@DMS{'} {\mathord} {\M at symbols@font}{"2032}
+ \@DMS{\prime} {\mathord} {\M at symbols@font}{"2032}
+ \@DMS{"} {\mathord} {\M at symbols@font}{"2033}
+ \@DMS{\mathhash} {\mathord} {\M at symbols@font}{"23}
+ \@DMS{\mathdollar} {\mathord} {\M at symbols@font}{"24}
+ \@DMS{\mathpercent} {\mathord} {\M at symbols@font}{"25}
+ \@DMS{\mathand} {\mathord} {\M at symbols@font}{"26}
+ \@DMS{\mathparagraph}{\mathord} {\M at symbols@font}{"B6}
+ \@DMS{\mathsection} {\mathord} {\M at symbols@font}{"A7}
+ \@DMS{\mathsterling} {\mathord} {\M at symbols@font}{"A3}
+ \@DMS{\neg} {\mathord} {\M at symbols@font}{"AC}
+ \@DMS{|} {\mathord} {\M at symbols@font}{"7C}
+ \@DMS{\infty} {\mathord} {\M at symbols@font}{"221E}
+ \@DMS{\partial} {\mathord} {\M at symbols@font}{"2202}
+ \@DMS{\degree} {\mathord} {\M at symbols@font}{"B0}
+ \@DMS{\increment} {\mathord} {\M at symbols@font}{"2206}
+ \@DMS{\comma} {\mathord} {\M at symbols@font}{"2C}
+ \@DMS{+} {\mathbin} {\M at symbols@font}{"2B}
+ \@DMS{-} {\mathbin} {\M at symbols@font}{"2212}
+ \@DMS{*} {\mathbin} {\M at symbols@font}{"2A}
+ \@DMS{\times} {\mathbin} {\M at symbols@font}{"D7}
+ \@DMS{/} {\mathord} {\M at symbols@font}{"2F}
+ \@DMS{\fractionslash}{\mathord} {\M at symbols@font}{"2215}
+ \@DMS{\div} {\mathbin} {\M at symbols@font}{"F7}
+ \@DMS{\pm} {\mathbin} {\M at symbols@font}{"B1}
+ \@DMS{\bullet} {\mathbin} {\M at symbols@font}{"2022}
+ \@DMS{\dagger} {\mathbin} {\M at symbols@font}{"2020}
+ \@DMS{\ddagger} {\mathbin} {\M at symbols@font}{"2021}
+ \@DMS{\cdot} {\mathbin} {\M at symbols@font}{"2219}
+ \@DMS{\setminus} {\mathbin} {\M at symbols@font}{"5C}
+ \@DMS{=} {\mathrel} {\M at symbols@font}{"3D}
+ \@DMS{<} {\mathrel} {\M at symbols@font}{"3C}
+ \@DMS{>} {\mathrel} {\M at symbols@font}{"3E}
+ \@DMS{\leq} {\mathrel} {\M at symbols@font}{"2264}
+ \@DMS{\geq} {\mathrel} {\M at symbols@font}{"2265}
+ \@DMS{\sim} {\mathrel} {\M at symbols@font}{"7E}
+ \@DMS{\approx} {\mathrel} {\M at symbols@font}{"2248}
+ \@DMS{\equiv} {\mathrel} {\M at symbols@font}{"2261}
+ \@DMS{\mid} {\mathrel} {\M at symbols@font}{"7C}
+ \@DMS{\parallel} {\mathrel} {\M at symbols@font}{"2016}
+ \@DMS{:} {\mathrel} {\M at symbols@font}{"3A}
+ \@DMS{?} {\mathclose}{\M at symbols@font}{"3F}
+ \@DMS{!} {\mathclose}{\M at symbols@font}{"21}
+ \@DMS{,} {\mathpunct}{\M at symbols@font}{"2C}
+ \@DMS{;} {\mathpunct}{\M at symbols@font}{"3B}
+ \@DMS{\colon} {\mathpunct}{\M at symbols@font}{"3A}
+ \@DMS{\mathellipsis} {\mathinner}{\M at symbols@font}{"2026}
+% \end{macrocode}
+% Now a bit of housekeeping. We redefine |\#|, |\%|, and |\&| as |\protected| macros that expand to previously declared |\mathhash|, etc.\ commands in math mode and retain their standard |\char| definitions otherwise. Other commands that function in both math and horizontal modes such as |\S| or |\dag| also use this technique. Then we define macros |\cong| and |\simeq| if the user hasn't called |\mathfont| with |extsymbols|.
+% \begin{macrocode}
\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 at extsymbols\else
- \protected\gdef\simeq{\mathrel{\mathpalette\stack at flatrel{{-}{\sim}}}}
- \protected\gdef\cong{\mathrel{\mathpalette\stack at flatrel{{=}{\sim}}}}
+ \protected\gdef\simeq{%
+ \mathrel{\mathpalette\stack at flatrel{{-}{\sim}}}}
+ \protected\gdef\cong{%
+ \mathrel{\mathpalette\stack at flatrel{{=}{\sim}}}}
\fi
- \protected\gdef\relbar{\mathrel{\smash\@relbar}}
- \protected\gdef\Relbar{\mathrel{\@Relbar}}
- \protected\gdef\models{\mathrel{\@verticalbar}\joinrel\Relbar}
+ \protected\gdef\models{\mathrel{|}\joinrel\mathrel{=}}
% \end{macrocode}
-% If the user enabled Lua-based font asjustments, we declare a few more big operators for fun. For brevity, we put the |adjust at font| conditional here rather than redefining |\M at symbols@set|.
+% If the user enabled Lua-based font asjustments, we declare a few more big operators for fun. For brevity, we put the |adjust at font| conditional here rather than redefining |\M at symbols@set|. Apparently, \textsf{newtx} defines |\bigtimes|, so if that package gets loaded ahead of \textsf{mathfont}, we should make sure to clear that definition.
% \begin{macrocode}
\ifM at adjust@font
- \DeclareMathSymbol{\bigat}{\mathop}{\M at symbols@font}{"40}
- \DeclareMathSymbol{\bighash}{\mathop}{\M at symbols@font}{"23}
- \DeclareMathSymbol{\bigdollar}{\mathop}{\M at symbols@font}{"24}
- \DeclareMathSymbol{\bigpercent}{\mathop}{\M at symbols@font}{"25}
- \DeclareMathSymbol{\bigand}{\mathop}{\M at symbols@font}{"26}
- \DeclareMathSymbol{\bigplus}{\mathop}{\M at symbols@font}{"2B}
- \DeclareMathSymbol{\bigp}{\mathop}{\M at symbols@font}{"21}
- \DeclareMathSymbol{\bigq}{\mathop}{\M at symbols@font}{"3F}
- \DeclareMathSymbol{\bigS}{\mathop}{\M at symbols@font}{"A7}
- \DeclareMathSymbol{\bigtimes}{\mathop}{\M at symbols@font}{"D7}
- \DeclareMathSymbol{\bigdiv}{\mathop}{\M at symbols@font}{"F7}
+ \let\bigtimes\@undefined
+ \@DMS{\bigat} {\mathop}{\M at symbols@font}{"40}
+ \@DMS{\bighash} {\mathop}{\M at symbols@font}{"23}
+ \@DMS{\bigdollar} {\mathop}{\M at symbols@font}{"24}
+ \@DMS{\bigpercent}{\mathop}{\M at symbols@font}{"25}
+ \@DMS{\bigand} {\mathop}{\M at symbols@font}{"26}
+ \@DMS{\bigplus} {\mathop}{\M at symbols@font}{"2B}
+ \@DMS{\bigp} {\mathop}{\M at symbols@font}{"21}
+ \@DMS{\bigq} {\mathop}{\M at symbols@font}{"3F}
+ \@DMS{\bigS} {\mathop}{\M at symbols@font}{"A7}
+ \@DMS{\bigtimes} {\mathop}{\M at symbols@font}{"D7}
+ \@DMS{\bigdiv} {\mathop}{\M at symbols@font}{"F7}
% \end{macrocode}
-% Define |\nabla| if we're adjusting the font. If not, this declaration will go in |extsymbols|.
+% Define |\nabla| here if we're adjusting the font. If we are not doing that, this declaration goes in |extsymbols|.
% \begin{macrocode}
- \DeclareMathSymbol{\nabla}{\mathord}{\M at symbols@font}{"2207}
+ \@DMS{\nabla} {\mathord}{\M at symbols@font}{"2207}
\fi}
% \end{macrocode}
% Set extended symbols.\indexpage{keywordextsymbols=keyword \texttt{extsymbols}}
@@ -3987,183 +4455,192 @@
\let\bowtie\@undefined
\let\doteq\@undefined
\let\neq\@undefined
- \DeclareMathSymbol{\wp}{\mathord}{\M at extsymbols@font}{"2118}
- \DeclareMathSymbol{\Re}{\mathord}{\M at extsymbols@font}{"211C}
- \DeclareMathSymbol{\Im}{\mathord}{\M at extsymbols@font}{"2111}
- \DeclareMathSymbol{\ell}{\mathord}{\M at extsymbols@font}{"2113}
- \DeclareMathSymbol{\forall}{\mathord}{\M at extsymbols@font}{"2200}
- \DeclareMathSymbol{\exists}{\mathord}{\M at extsymbols@font}{"2203}
- \DeclareMathSymbol{\emptyset}{\mathord}{\M at extsymbols@font}{"2205}
- \DeclareMathSymbol{\in}{\mathord}{\M at extsymbols@font}{"2208}
- \DeclareMathSymbol{\ni}{\mathord}{\M at extsymbols@font}{"220B}
- \DeclareMathSymbol{\mp}{\mathord}{\M at extsymbols@font}{"2213}
- \DeclareMathSymbol{\angle}{\mathord}{\M at extsymbols@font}{"2220}
- \DeclareMathSymbol{\top}{\mathord}{\M at extsymbols@font}{"22A4}
- \DeclareMathSymbol{\bot}{\mathord}{\M at extsymbols@font}{"22A5}
- \DeclareMathSymbol{\vdash}{\mathord}{\M at extsymbols@font}{"22A2}
- \DeclareMathSymbol{\dashv}{\mathord}{\M at extsymbols@font}{"22A3}
- \DeclareMathSymbol{\flat}{\mathord}{\M at extsymbols@font}{"266D}
- \DeclareMathSymbol{\natural}{\mathord}{\M at extsymbols@font}{"266E}
- \DeclareMathSymbol{\sharp}{\mathord}{\M at extsymbols@font}{"266F}
- \DeclareMathSymbol{\fflat}{\mathord}{\M at extsymbols@font}{"1D12B}
- \DeclareMathSymbol{\ssharp}{\mathord}{\M at extsymbols@font}{"1D12A}
- \DeclareMathSymbol{\bclubsuit}{\mathord}{\M at extsymbols@font}{"2663}
- \DeclareMathSymbol{\bdiamondsuit}{\mathord}{\M at extsymbols@font}{"2666}
- \DeclareMathSymbol{\bheartsuit}{\mathord}{\M at extsymbols@font}{"2665}
- \DeclareMathSymbol{\bspadesuit}{\mathord}{\M at extsymbols@font}{"2660}
- \DeclareMathSymbol{\wclubsuit}{\mathord}{\M at extsymbols@font}{"2667}
- \DeclareMathSymbol{\wdiamondsuit}{\mathord}{\M at extsymbols@font}{"2662}
- \DeclareMathSymbol{\wheartsuit}{\mathord}{\M at extsymbols@font}{"2661}
- \DeclareMathSymbol{\wspadesuit}{\mathord}{\M at extsymbols@font}{"2664}
+ \@DMS{\wp} {\mathord}{\M at extsymbols@font}{"2118}
+ \@DMS{\ell} {\mathord}{\M at extsymbols@font}{"2113}
+ \@DMS{\forall} {\mathord}{\M at extsymbols@font}{"2200}
+ \@DMS{\exists} {\mathord}{\M at extsymbols@font}{"2203}
+ \@DMS{\emptyset} {\mathord}{\M at extsymbols@font}{"2205}
+ \@DMS{\in} {\mathord}{\M at extsymbols@font}{"2208}
+ \@DMS{\ni} {\mathord}{\M at extsymbols@font}{"220B}
+ \@DMS{\mp} {\mathord}{\M at extsymbols@font}{"2213}
+ \@DMS{\angle} {\mathord}{\M at extsymbols@font}{"2220}
+ \@DMS{\top} {\mathord}{\M at extsymbols@font}{"22A4}
+ \@DMS{\bot} {\mathord}{\M at extsymbols@font}{"22A5}
+ \@DMS{\vdash} {\mathord}{\M at extsymbols@font}{"22A2}
+ \@DMS{\dashv} {\mathord}{\M at extsymbols@font}{"22A3}
+ \@DMS{\flat} {\mathord}{\M at extsymbols@font}{"266D}
+ \@DMS{\natural} {\mathord}{\M at extsymbols@font}{"266E}
+ \@DMS{\sharp} {\mathord}{\M at extsymbols@font}{"266F}
+ \@DMS{\fflat} {\mathord}{\M at extsymbols@font}{"1D12B}
+ \@DMS{\ssharp} {\mathord}{\M at extsymbols@font}{"1D12A}
+ \@DMS{\bclubsuit} {\mathord}{\M at extsymbols@font}{"2663}
+ \@DMS{\bdiamondsuit} {\mathord}{\M at extsymbols@font}{"2666}
+ \@DMS{\bheartsuit} {\mathord}{\M at extsymbols@font}{"2665}
+ \@DMS{\bspadesuit} {\mathord}{\M at extsymbols@font}{"2660}
+ \@DMS{\wclubsuit} {\mathord}{\M at extsymbols@font}{"2667}
+ \@DMS{\wdiamondsuit} {\mathord}{\M at extsymbols@font}{"2662}
+ \@DMS{\wheartsuit} {\mathord}{\M at extsymbols@font}{"2661}
+ \@DMS{\wspadesuit} {\mathord}{\M at extsymbols@font}{"2664}
\global\let\spadesuit\bspadesuit
\global\let\heartsuit\wheartsuit
\global\let\diamondsuit\wdiamondsuit
\global\let\clubsuit\bclubsuit
- \DeclareMathSymbol{\wedge}{\mathbin}{\M at extsymbols@font}{"2227}
- \DeclareMathSymbol{\vee}{\mathbin}{\M at extsymbols@font}{"2228}
- \DeclareMathSymbol{\cap}{\mathord}{\M at extsymbols@font}{"2229}
- \DeclareMathSymbol{\cup}{\mathbin}{\M at extsymbols@font}{"222A}
- \DeclareMathSymbol{\sqcap}{\mathbin}{\M at extsymbols@font}{"2293}
- \DeclareMathSymbol{\sqcup}{\mathbin}{\M at extsymbols@font}{"2294}
- \DeclareMathSymbol{\amalg}{\mathbin}{\M at extsymbols@font}{"2A3F}
- \DeclareMathSymbol{\wr}{\mathbin}{\M at extsymbols@font}{"2240}
- \DeclareMathSymbol{\ast}{\mathbin}{\M at extsymbols@font}{"2217}
- \DeclareMathSymbol{\star}{\mathbin}{\M at extsymbols@font}{"22C6}
- \DeclareMathSymbol{\diamond}{\mathbin}{\M at extsymbols@font}{"22C4}
- \DeclareMathSymbol{\varcdot}{\mathbin}{\M at extsymbols@font}{"22C5}
- \DeclareMathSymbol{\varsetminus}{\mathbin}{\M at extsymbols@font}{"2216}
- \DeclareMathSymbol{\oplus}{\mathbin}{\M at extsymbols@font}{"2295}
- \DeclareMathSymbol{\otimes}{\mathbin}{\M at extsymbols@font}{"2297}
- \DeclareMathSymbol{\ominus}{\mathbin}{\M at extsymbols@font}{"2296}
- \DeclareMathSymbol{\odiv}{\mathbin}{\M at extsymbols@font}{"2A38}
- \DeclareMathSymbol{\oslash}{\mathbin}{\M at extsymbols@font}{"2298}
- \DeclareMathSymbol{\odot}{\mathbin}{\M at extsymbols@font}{"2299}
- \DeclareMathSymbol{\sqplus}{\mathbin}{\M at extsymbols@font}{"229E}
- \DeclareMathSymbol{\sqtimes}{\mathbin}{\M at extsymbols@font}{"22A0}
- \DeclareMathSymbol{\sqminus}{\mathbin}{\M at extsymbols@font}{"229F}
- \DeclareMathSymbol{\sqdot}{\mathbin}{\M at extsymbols@font}{"22A1}
- \DeclareMathSymbol{\in}{\mathrel}{\M at extsymbols@font}{"2208}
- \DeclareMathSymbol{\ni}{\mathrel}{\M at extsymbols@font}{"220B}
- \DeclareMathSymbol{\subset}{\mathrel}{\M at extsymbols@font}{"2282}
- \DeclareMathSymbol{\supset}{\mathrel}{\M at extsymbols@font}{"2283}
- \DeclareMathSymbol{\subseteq}{\mathrel}{\M at extsymbols@font}{"2286}
- \DeclareMathSymbol{\supseteq}{\mathrel}{\M at extsymbols@font}{"2287}
- \DeclareMathSymbol{\sqsubset}{\mathrel}{\M at extsymbols@font}{"228F}
- \DeclareMathSymbol{\sqsupset}{\mathrel}{\M at extsymbols@font}{"2290}
- \DeclareMathSymbol{\sqsubseteq}{\mathrel}{\M at extsymbols@font}{"2291}
- \DeclareMathSymbol{\sqsupseteq}{\mathrel}{\M at extsymbols@font}{"2292}
- \DeclareMathSymbol{\triangleleft}{\mathrel}{\M at extsymbols@font}{"22B2}
- \DeclareMathSymbol{\triangleright}{\mathrel}{\M at extsymbols@font}{"22B3}
- \DeclareMathSymbol{\trianglelefteq}{\mathrel}{\M at extsymbols@font}{"22B4}
- \DeclareMathSymbol{\trianglerighteq}{\mathrel}{\M at extsymbols@font}{"22B5}
- \DeclareMathSymbol{\propto}{\mathrel}{\M at extsymbols@font}{"221D}
- \DeclareMathSymbol{\bowtie}{\mathrel}{\M at extsymbols@font}{"22C8}
- \DeclareMathSymbol{\hourglass}{\mathrel}{\M at extsymbols@font}{"29D6}
- \DeclareMathSymbol{\therefore}{\mathrel}{\M at extsymbols@font}{"2234}
- \DeclareMathSymbol{\because}{\mathrel}{\M at extsymbols@font}{"2235}
- \DeclareMathSymbol{\ratio}{\mathrel}{\M at extsymbols@font}{"2236}
- \DeclareMathSymbol{\proportion}{\mathrel}{\M at extsymbols@font}{"2237}
- \DeclareMathSymbol{\ll}{\mathrel}{\M at extsymbols@font}{"226A}
- \DeclareMathSymbol{\gg}{\mathrel}{\M at extsymbols@font}{"226B}
- \DeclareMathSymbol{\lll}{\mathrel}{\M at extsymbols@font}{"22D8}
- \DeclareMathSymbol{\ggg}{\mathrel}{\M at extsymbols@font}{"22D9}
- \DeclareMathSymbol{\leqq}{\mathrel}{\M at extsymbols@font}{"2266}
- \DeclareMathSymbol{\geqq}{\mathrel}{\M at extsymbols@font}{"2267}
- \DeclareMathSymbol{\lapprox}{\mathrel}{\M at extsymbols@font}{"2A85}
- \DeclareMathSymbol{\gapprox}{\mathrel}{\M at extsymbols@font}{"2A86}
- \DeclareMathSymbol{\simeq}{\mathrel}{\M at extsymbols@font}{"2243}
- \DeclareMathSymbol{\eqsim}{\mathrel}{\M at extsymbols@font}{"2242}
- \DeclareMathSymbol{\simeqq}{\mathrel}{\M at extsymbols@font}{"2245}
+ \@DMS{\wedge} {\mathbin}{\M at extsymbols@font}{"2227}
+ \@DMS{\vee} {\mathbin}{\M at extsymbols@font}{"2228}
+ \@DMS{\cap} {\mathord}{\M at extsymbols@font}{"2229}
+ \@DMS{\cup} {\mathbin}{\M at extsymbols@font}{"222A}
+ \@DMS{\sqcap} {\mathbin}{\M at extsymbols@font}{"2293}
+ \@DMS{\sqcup} {\mathbin}{\M at extsymbols@font}{"2294}
+ \@DMS{\amalg} {\mathbin}{\M at extsymbols@font}{"2A3F}
+ \@DMS{\wr} {\mathbin}{\M at extsymbols@font}{"2240}
+ \@DMS{\ast} {\mathbin}{\M at extsymbols@font}{"2217}
+ \@DMS{\star} {\mathbin}{\M at extsymbols@font}{"22C6}
+ \@DMS{\diamond} {\mathbin}{\M at extsymbols@font}{"22C4}
+ \@DMS{\varcdot} {\mathbin}{\M at extsymbols@font}{"22C5}
+ \@DMS{\varsetminus} {\mathbin}{\M at extsymbols@font}{"2216}
+ \@DMS{\oplus} {\mathbin}{\M at extsymbols@font}{"2295}
+ \@DMS{\otimes} {\mathbin}{\M at extsymbols@font}{"2297}
+ \@DMS{\ominus} {\mathbin}{\M at extsymbols@font}{"2296}
+ \@DMS{\odiv} {\mathbin}{\M at extsymbols@font}{"2A38}
+ \@DMS{\oslash} {\mathbin}{\M at extsymbols@font}{"2298}
+ \@DMS{\odot} {\mathbin}{\M at extsymbols@font}{"2299}
+ \@DMS{\sqplus} {\mathbin}{\M at extsymbols@font}{"229E}
+ \@DMS{\sqtimes} {\mathbin}{\M at extsymbols@font}{"22A0}
+ \@DMS{\sqminus} {\mathbin}{\M at extsymbols@font}{"229F}
+ \@DMS{\sqdot} {\mathbin}{\M at extsymbols@font}{"22A1}
+ \@DMS{\in} {\mathrel}{\M at extsymbols@font}{"2208}
+ \@DMS{\ni} {\mathrel}{\M at extsymbols@font}{"220B}
+ \@DMS{\subset} {\mathrel}{\M at extsymbols@font}{"2282}
+ \@DMS{\supset} {\mathrel}{\M at extsymbols@font}{"2283}
+ \@DMS{\subseteq} {\mathrel}{\M at extsymbols@font}{"2286}
+ \@DMS{\supseteq} {\mathrel}{\M at extsymbols@font}{"2287}
+ \@DMS{\sqsubset} {\mathrel}{\M at extsymbols@font}{"228F}
+ \@DMS{\sqsupset} {\mathrel}{\M at extsymbols@font}{"2290}
+ \@DMS{\sqsubseteq} {\mathrel}{\M at extsymbols@font}{"2291}
+ \@DMS{\sqsupseteq} {\mathrel}{\M at extsymbols@font}{"2292}
+ \@DMS{\triangleleft} {\mathrel}{\M at extsymbols@font}{"22B2}
+ \@DMS{\triangleright} {\mathrel}{\M at extsymbols@font}{"22B3}
+ \@DMS{\trianglelefteq} {\mathrel}{\M at extsymbols@font}{"22B4}
+ \@DMS{\trianglerighteq} {\mathrel}{\M at extsymbols@font}{"22B5}
+ \@DMS{\propto} {\mathrel}{\M at extsymbols@font}{"221D}
+ \@DMS{\bowtie} {\mathrel}{\M at extsymbols@font}{"22C8}
+ \@DMS{\hourglass} {\mathrel}{\M at extsymbols@font}{"29D6}
+ \@DMS{\therefore} {\mathrel}{\M at extsymbols@font}{"2234}
+ \@DMS{\because} {\mathrel}{\M at extsymbols@font}{"2235}
+ \@DMS{\ratio} {\mathrel}{\M at extsymbols@font}{"2236}
+ \@DMS{\proportion} {\mathrel}{\M at extsymbols@font}{"2237}
+ \@DMS{\ll} {\mathrel}{\M at extsymbols@font}{"226A}
+ \@DMS{\gg} {\mathrel}{\M at extsymbols@font}{"226B}
+ \@DMS{\lll} {\mathrel}{\M at extsymbols@font}{"22D8}
+ \@DMS{\ggg} {\mathrel}{\M at extsymbols@font}{"22D9}
+ \@DMS{\leqq} {\mathrel}{\M at extsymbols@font}{"2266}
+ \@DMS{\geqq} {\mathrel}{\M at extsymbols@font}{"2267}
+ \@DMS{\lapprox} {\mathrel}{\M at extsymbols@font}{"2A85}
+ \@DMS{\gapprox} {\mathrel}{\M at extsymbols@font}{"2A86}
+ \@DMS{\simeq} {\mathrel}{\M at extsymbols@font}{"2243}
+ \@DMS{\eqsim} {\mathrel}{\M at extsymbols@font}{"2242}
+ \@DMS{\simeqq} {\mathrel}{\M at extsymbols@font}{"2245}
\global\let\cong\simeqq
- \DeclareMathSymbol{\approxeq}{\mathrel}{\M at extsymbols@font}{"224A}
- \DeclareMathSymbol{\sssim}{\mathrel}{\M at extsymbols@font}{"224B}
- \DeclareMathSymbol{\seq}{\mathrel}{\M at extsymbols@font}{"224C}
- \DeclareMathSymbol{\doteq}{\mathrel}{\M at extsymbols@font}{"2250}
- \DeclareMathSymbol{\coloneq}{\mathrel}{\M at extsymbols@font}{"2254}
- \DeclareMathSymbol{\eqcolon}{\mathrel}{\M at extsymbols@font}{"2255}
- \DeclareMathSymbol{\ringeq}{\mathrel}{\M at extsymbols@font}{"2257}
- \DeclareMathSymbol{\arceq}{\mathrel}{\M at extsymbols@font}{"2258}
- \DeclareMathSymbol{\wedgeeq}{\mathrel}{\M at extsymbols@font}{"2259}
- \DeclareMathSymbol{\veeeq}{\mathrel}{\M at extsymbols@font}{"225A}
- \DeclareMathSymbol{\stareq}{\mathrel}{\M at extsymbols@font}{"225B}
- \DeclareMathSymbol{\triangleeq}{\mathrel}{\M at extsymbols@font}{"225C}
- \DeclareMathSymbol{\defeq}{\mathrel}{\M at extsymbols@font}{"225D}
- \DeclareMathSymbol{\qeq}{\mathrel}{\M at extsymbols@font}{"225F}
- \DeclareMathSymbol{\lsim}{\mathrel}{\M at extsymbols@font}{"2272}
- \DeclareMathSymbol{\gsim}{\mathrel}{\M at extsymbols@font}{"2273}
- \DeclareMathSymbol{\prec}{\mathrel}{\M at extsymbols@font}{"227A}
- \DeclareMathSymbol{\succ}{\mathrel}{\M at extsymbols@font}{"227B}
- \DeclareMathSymbol{\preceq}{\mathrel}{\M at extsymbols@font}{"227C}
- \DeclareMathSymbol{\succeq}{\mathrel}{\M at extsymbols@font}{"227D}
- \DeclareMathSymbol{\preceqq}{\mathrel}{\M at extsymbols@font}{"2AB3}
- \DeclareMathSymbol{\succeqq}{\mathrel}{\M at extsymbols@font}{"2AB4}
- \DeclareMathSymbol{\precsim}{\mathrel}{\M at extsymbols@font}{"227E}
- \DeclareMathSymbol{\succsim}{\mathrel}{\M at extsymbols@font}{"227F}
- \DeclareMathSymbol{\precapprox}{\mathrel}{\M at extsymbols@font}{"2AB7}
- \DeclareMathSymbol{\succapprox}{\mathrel}{\M at extsymbols@font}{"2AB8}
- \DeclareMathSymbol{\precprec}{\mathrel}{\M at extsymbols@font}{"2ABB}
- \DeclareMathSymbol{\succsucc}{\mathrel}{\M at extsymbols@font}{"2ABC}
- \DeclareMathSymbol{\asymp}{\mathrel}{\M at extsymbols@font}{"224D}
- \DeclareMathSymbol{\nin}{\mathrel}{\M at extsymbols@font}{"2209}
- \DeclareMathSymbol{\nni}{\mathrel}{\M at extsymbols@font}{"220C}
- \DeclareMathSymbol{\nsubset}{\mathrel}{\M at extsymbols@font}{"2284}
- \DeclareMathSymbol{\nsupset}{\mathrel}{\M at extsymbols@font}{"2285}
- \DeclareMathSymbol{\nsubseteq}{\mathrel}{\M at extsymbols@font}{"2288}
- \DeclareMathSymbol{\nsupseteq}{\mathrel}{\M at extsymbols@font}{"2289}
- \DeclareMathSymbol{\subsetneq}{\mathrel}{\M at extsymbols@font}{"228A}
- \DeclareMathSymbol{\supsetneq}{\mathrel}{\M at extsymbols@font}{"228B}
- \DeclareMathSymbol{\nsqsubseteq}{\mathrel}{\M at extsymbols@font}{"22E2}
- \DeclareMathSymbol{\nsqsupseteq}{\mathrel}{\M at extsymbols@font}{"22E3}
- \DeclareMathSymbol{\sqsubsetneq}{\mathrel}{\M at extsymbols@font}{"22E4}
- \DeclareMathSymbol{\sqsupsetneq}{\mathrel}{\M at extsymbols@font}{"22E5}
- \DeclareMathSymbol{\neq}{\mathrel}{\M at extsymbols@font}{"2260}
- \DeclareMathSymbol{\nl}{\mathrel}{\M at extsymbols@font}{"226E}
- \DeclareMathSymbol{\nleq}{\mathrel}{\M at extsymbols@font}{"2270}
- \DeclareMathSymbol{\ngeq}{\mathrel}{\M at extsymbols@font}{"2271}
- \DeclareMathSymbol{\lneq}{\mathrel}{\M at extsymbols@font}{"2A87}
- \DeclareMathSymbol{\gneq}{\mathrel}{\M at extsymbols@font}{"2A88}
- \DeclareMathSymbol{\lneqq}{\mathrel}{\M at extsymbols@font}{"2268}
- \DeclareMathSymbol{\gneqq}{\mathrel}{\M at extsymbols@font}{"2269}
- \DeclareMathSymbol{\ntriangleleft}{\mathrel}{\M at extsymbols@font}{"22EA}
- \DeclareMathSymbol{\ntriangleright}{\mathrel}{\M at extsymbols@font}{"22EB}
- \DeclareMathSymbol{\ntrianglelefteq}{\mathrel}{\M at extsymbols@font}{"22EC}
- \DeclareMathSymbol{\ntrianglerighteq}{\mathrel}{\M at extsymbols@font}{"22ED}
- \DeclareMathSymbol{\nsim}{\mathrel}{\M at extsymbols@font}{"2241}
- \DeclareMathSymbol{\napprox}{\mathrel}{\M at extsymbols@font}{"2249}
- \DeclareMathSymbol{\nsimeq}{\mathrel}{\M at extsymbols@font}{"2244}
- \DeclareMathSymbol{\nsimeqq}{\mathrel}{\M at extsymbols@font}{"2247}
- \DeclareMathSymbol{\simneqq}{\mathrel}{\M at extsymbols@font}{"2246}
- \DeclareMathSymbol{\nlsim}{\mathrel}{\M at extsymbols@font}{"2274}
- \DeclareMathSymbol{\ngsim}{\mathrel}{\M at extsymbols@font}{"2275}
- \DeclareMathSymbol{\lnsim}{\mathrel}{\M at extsymbols@font}{"22E6}
- \DeclareMathSymbol{\gnsim}{\mathrel}{\M at extsymbols@font}{"22E7}
- \DeclareMathSymbol{\lnapprox}{\mathrel}{\M at extsymbols@font}{"2A89}
- \DeclareMathSymbol{\gnapprox}{\mathrel}{\M at extsymbols@font}{"2A8A}
- \DeclareMathSymbol{\nprec}{\mathrel}{\M at extsymbols@font}{"2280}
- \DeclareMathSymbol{\nsucc}{\mathrel}{\M at extsymbols@font}{"2281}
- \DeclareMathSymbol{\npreceq}{\mathrel}{\M at extsymbols@font}{"22E0}
- \DeclareMathSymbol{\nsucceq}{\mathrel}{\M at extsymbols@font}{"22E1}
- \DeclareMathSymbol{\precneq}{\mathrel}{\M at extsymbols@font}{"2AB1}
- \DeclareMathSymbol{\succneq}{\mathrel}{\M at extsymbols@font}{"2AB2}
- \DeclareMathSymbol{\precneqq}{\mathrel}{\M at extsymbols@font}{"2AB5}
- \DeclareMathSymbol{\succneqq}{\mathrel}{\M at extsymbols@font}{"2AB6}
- \DeclareMathSymbol{\precnsim}{\mathrel}{\M at extsymbols@font}{"22E8}
- \DeclareMathSymbol{\succnsim}{\mathrel}{\M at extsymbols@font}{"22E9}
- \DeclareMathSymbol{\precnapprox}{\mathrel}{\M at extsymbols@font}{"2AB9}
- \DeclareMathSymbol{\succnapprox}{\mathrel}{\M at extsymbols@font}{"2ABA}
- \DeclareMathSymbol{\nequiv}{\mathrel}{\M at extsymbols@font}{"2262}
+ \@DMS{\approxeq} {\mathrel}{\M at extsymbols@font}{"224A}
+ \@DMS{\sssim} {\mathrel}{\M at extsymbols@font}{"224B}
+ \@DMS{\seq} {\mathrel}{\M at extsymbols@font}{"224C}
+ \@DMS{\doteq} {\mathrel}{\M at extsymbols@font}{"2250}
+ \@DMS{\coloneq} {\mathrel}{\M at extsymbols@font}{"2254}
+ \@DMS{\eqcolon} {\mathrel}{\M at extsymbols@font}{"2255}
+ \@DMS{\ringeq} {\mathrel}{\M at extsymbols@font}{"2257}
+ \@DMS{\arceq} {\mathrel}{\M at extsymbols@font}{"2258}
+ \@DMS{\wedgeeq} {\mathrel}{\M at extsymbols@font}{"2259}
+ \@DMS{\veeeq} {\mathrel}{\M at extsymbols@font}{"225A}
+ \@DMS{\stareq} {\mathrel}{\M at extsymbols@font}{"225B}
+ \@DMS{\triangleeq} {\mathrel}{\M at extsymbols@font}{"225C}
+ \@DMS{\defeq} {\mathrel}{\M at extsymbols@font}{"225D}
+ \@DMS{\qeq} {\mathrel}{\M at extsymbols@font}{"225F}
+ \@DMS{\lsim} {\mathrel}{\M at extsymbols@font}{"2272}
+ \@DMS{\gsim} {\mathrel}{\M at extsymbols@font}{"2273}
+ \@DMS{\prec} {\mathrel}{\M at extsymbols@font}{"227A}
+ \@DMS{\succ} {\mathrel}{\M at extsymbols@font}{"227B}
+ \@DMS{\preceq} {\mathrel}{\M at extsymbols@font}{"227C}
+ \@DMS{\succeq} {\mathrel}{\M at extsymbols@font}{"227D}
+ \@DMS{\preceqq} {\mathrel}{\M at extsymbols@font}{"2AB3}
+ \@DMS{\succeqq} {\mathrel}{\M at extsymbols@font}{"2AB4}
+ \@DMS{\precsim} {\mathrel}{\M at extsymbols@font}{"227E}
+ \@DMS{\succsim} {\mathrel}{\M at extsymbols@font}{"227F}
+ \@DMS{\precapprox} {\mathrel}{\M at extsymbols@font}{"2AB7}
+ \@DMS{\succapprox} {\mathrel}{\M at extsymbols@font}{"2AB8}
+ \@DMS{\precprec} {\mathrel}{\M at extsymbols@font}{"2ABB}
+ \@DMS{\succsucc} {\mathrel}{\M at extsymbols@font}{"2ABC}
+ \@DMS{\asymp} {\mathrel}{\M at extsymbols@font}{"224D}
+ \@DMS{\nin} {\mathrel}{\M at extsymbols@font}{"2209}
+ \@DMS{\nni} {\mathrel}{\M at extsymbols@font}{"220C}
+ \@DMS{\nsubset} {\mathrel}{\M at extsymbols@font}{"2284}
+ \@DMS{\nsupset} {\mathrel}{\M at extsymbols@font}{"2285}
+ \@DMS{\nsubseteq} {\mathrel}{\M at extsymbols@font}{"2288}
+ \@DMS{\nsupseteq} {\mathrel}{\M at extsymbols@font}{"2289}
+ \@DMS{\subsetneq} {\mathrel}{\M at extsymbols@font}{"228A}
+ \@DMS{\supsetneq} {\mathrel}{\M at extsymbols@font}{"228B}
+ \@DMS{\nsqsubseteq} {\mathrel}{\M at extsymbols@font}{"22E2}
+ \@DMS{\nsqsupseteq} {\mathrel}{\M at extsymbols@font}{"22E3}
+ \@DMS{\sqsubsetneq} {\mathrel}{\M at extsymbols@font}{"22E4}
+ \@DMS{\sqsupsetneq} {\mathrel}{\M at extsymbols@font}{"22E5}
+ \@DMS{\neq} {\mathrel}{\M at extsymbols@font}{"2260}
+ \@DMS{\nl} {\mathrel}{\M at extsymbols@font}{"226E}
+ \@DMS{\nleq} {\mathrel}{\M at extsymbols@font}{"2270}
+ \@DMS{\ngeq} {\mathrel}{\M at extsymbols@font}{"2271}
+ \@DMS{\lneq} {\mathrel}{\M at extsymbols@font}{"2A87}
+ \@DMS{\gneq} {\mathrel}{\M at extsymbols@font}{"2A88}
+ \@DMS{\lneqq} {\mathrel}{\M at extsymbols@font}{"2268}
+ \@DMS{\gneqq} {\mathrel}{\M at extsymbols@font}{"2269}
+ \@DMS{\ntriangleleft} {\mathrel}{\M at extsymbols@font}{"22EA}
+ \@DMS{\ntriangleright} {\mathrel}{\M at extsymbols@font}{"22EB}
+ \@DMS{\ntrianglelefteq} {\mathrel}{\M at extsymbols@font}{"22EC}
+ \@DMS{\ntrianglerighteq}{\mathrel}{\M at extsymbols@font}{"22ED}
+ \@DMS{\nsim} {\mathrel}{\M at extsymbols@font}{"2241}
+ \@DMS{\napprox} {\mathrel}{\M at extsymbols@font}{"2249}
+ \@DMS{\nsimeq} {\mathrel}{\M at extsymbols@font}{"2244}
+ \@DMS{\nsimeqq} {\mathrel}{\M at extsymbols@font}{"2247}
+ \@DMS{\simneqq} {\mathrel}{\M at extsymbols@font}{"2246}
+ \@DMS{\nlsim} {\mathrel}{\M at extsymbols@font}{"2274}
+ \@DMS{\ngsim} {\mathrel}{\M at extsymbols@font}{"2275}
+ \@DMS{\lnsim} {\mathrel}{\M at extsymbols@font}{"22E6}
+ \@DMS{\gnsim} {\mathrel}{\M at extsymbols@font}{"22E7}
+ \@DMS{\lnapprox} {\mathrel}{\M at extsymbols@font}{"2A89}
+ \@DMS{\gnapprox} {\mathrel}{\M at extsymbols@font}{"2A8A}
+ \@DMS{\nprec} {\mathrel}{\M at extsymbols@font}{"2280}
+ \@DMS{\nsucc} {\mathrel}{\M at extsymbols@font}{"2281}
+ \@DMS{\npreceq} {\mathrel}{\M at extsymbols@font}{"22E0}
+ \@DMS{\nsucceq} {\mathrel}{\M at extsymbols@font}{"22E1}
+ \@DMS{\precneq} {\mathrel}{\M at extsymbols@font}{"2AB1}
+ \@DMS{\succneq} {\mathrel}{\M at extsymbols@font}{"2AB2}
+ \@DMS{\precneqq} {\mathrel}{\M at extsymbols@font}{"2AB5}
+ \@DMS{\succneqq} {\mathrel}{\M at extsymbols@font}{"2AB6}
+ \@DMS{\precnsim} {\mathrel}{\M at extsymbols@font}{"22E8}
+ \@DMS{\succnsim} {\mathrel}{\M at extsymbols@font}{"22E9}
+ \@DMS{\precnapprox} {\mathrel}{\M at extsymbols@font}{"2AB9}
+ \@DMS{\succnapprox} {\mathrel}{\M at extsymbols@font}{"2ABA}
+ \@DMS{\nequiv} {\mathrel}{\M at extsymbols@font}{"2262}
% \end{macrocode}
+% The \textsf{math-operator} package renames |\Re| and |\Im| to |\varRe| and |\varIm|. To make \textsf{mathfont} compatible with that package, we test whether these commands have been redefined.
+% \begin{macrocode}
+ \@ifpackageloaded{math-operator}{\if at operator@s
+ \@DMS{\varRe}{\mathord}{\M at extsymbols@font}{"211C}
+ \@DMS{\varIm}{\mathord}{\M at extsymbols@font}{"2111}
+ \else
+ \@DMS{\Re}{\mathord}{\M at extsymbols@font}{"211C}
+ \@DMS{\Im}{\mathord}{\M at extsymbols@font}{"2111}
+ \fi}{%
+ \@DMS{\Re}{\mathord}{\M at extsymbols@font}{"211C}
+ \@DMS{\Im}{\mathord}{\M at extsymbols@font}{"2111}}
+% \end{macrocode}
% We handle |\ng| specially. The \LaTeX\ kernel defines |\ng| as a text symbol, so we define |\mathng| like for |\$|, etc.
% \begin{macrocode}
\global\let\textng\ng
- \let\ng\@undefined
- \DeclareMathSymbol{\mathng}{\mathrel}{\M at extsymbols@font}{"226F}
+ \@DMS{\mathng}{\mathrel}{\M at extsymbols@font}{"226F}
\protected\gdef\ng{\ifmmode\mathng\else\textng\fi}
% \end{macrocode}
% If we're not adjusting the font, we declare |\nabla| here.
% \begin{macrocode}
\ifM at adjust@font\else
- \DeclareMathSymbol{\nabla}{\mathord}{\M at extsymbols@font}{"2207}
+ \@DMS{\nabla}{\mathord}{\M at extsymbols@font}{"2207}
\fi}
% \end{macrocode}
% Set arrows.\indexpage{keywordarrows=keyword \texttt{arrows}}
@@ -4185,123 +4662,143 @@
\let\Longleftarrow\@undefined
\let\Longleftrightarrow\@undefined
\let\rightleftharpoons\@undefined
- \DeclareMathSymbol{\rightarrow}{\mathrel}{\M at arrows@font}{"2192}
+ \@DMS{\rightarrow} {\mathrel}{\M at arrows@font}{"2192}
\global\let\to\rightarrow
- \DeclareMathSymbol{\nrightarrow}{\mathrel}{\M at arrows@font}{"219B}
- \DeclareMathSymbol{\Rightarrow}{\mathrel}{\M at arrows@font}{"21D2}
- \DeclareMathSymbol{\nRightarrow}{\mathrel}{\M at arrows@font}{"21CF}
- \DeclareMathSymbol{\Rrightarrow}{\mathrel}{\M at arrows@font}{"21DB}
- \DeclareMathSymbol{\longrightarrow}{\mathrel}{\M at arrows@font}{"27F6}
- \DeclareMathSymbol{\Longrightarrow}{\mathrel}{\M at arrows@font}{"27F9}
- \DeclareMathSymbol{\rightbararrow}{\mathrel}{\M at arrows@font}{"21A6}
+ \@DMS{\nrightarrow} {\mathrel}{\M at arrows@font}{"219B}
+ \@DMS{\Rightarrow} {\mathrel}{\M at arrows@font}{"21D2}
+ \@DMS{\nRightarrow} {\mathrel}{\M at arrows@font}{"21CF}
+ \@DMS{\Rrightarrow} {\mathrel}{\M at arrows@font}{"21DB}
+ \@DMS{\longrightarrow} {\mathrel}{\M at arrows@font}{"27F6}
+ \@DMS{\Longrightarrow} {\mathrel}{\M at arrows@font}{"27F9}
+ \@DMS{\rightbararrow} {\mathrel}{\M at arrows@font}{"21A6}
\global\let\mapsto\rightbararrow
- \DeclareMathSymbol{\Rightbararrow}{\mathrel}{\M at arrows@font}{"2907}
- \DeclareMathSymbol{\longrightbararrow}{\mathrel}{\M at arrows@font}{"27FC}
+ \@DMS{\Rightbararrow} {\mathrel}{\M at arrows@font}{"2907}
+ \@DMS{\longrightbararrow} {\mathrel}{\M at arrows@font}{"27FC}
\global\let\longmapsto\longrightbararrow
- \DeclareMathSymbol{\Longrightbararrow}{\mathrel}{\M at arrows@font}{"27FE}
- \DeclareMathSymbol{\hookrightarrow}{\mathrel}{\M at arrows@font}{"21AA}
- \DeclareMathSymbol{\rightdasharrow}{\mathrel}{\M at arrows@font}{"21E2}
- \DeclareMathSymbol{\rightharpoonup}{\mathrel}{\M at arrows@font}{"21C0}
- \DeclareMathSymbol{\rightharpoondown}{\mathrel}{\M at arrows@font}{"21C1}
- \DeclareMathSymbol{\rightarrowtail}{\mathrel}{\M at arrows@font}{"21A3}
- \DeclareMathSymbol{\rightoplusarrow}{\mathrel}{\M at arrows@font}{"27F4}
- \DeclareMathSymbol{\rightwavearrow}{\mathrel}{\M at arrows@font}{"219D}
- \DeclareMathSymbol{\rightsquigarrow}{\mathrel}{\M at arrows@font}{"21DD}
- \DeclareMathSymbol{\longrightsquigarrow}{\mathrel}{\M at arrows@font}{"27FF}
- \DeclareMathSymbol{\looparrowright}{\mathrel}{\M at arrows@font}{"21AC}
- \DeclareMathSymbol{\curvearrowright}{\mathrel}{\M at arrows@font}{"293B}
- \DeclareMathSymbol{\circlearrowright}{\mathrel}{\M at arrows@font}{"21BB}
- \DeclareMathSymbol{\twoheadrightarrow}{\mathrel}{\M at arrows@font}{"21A0}
- \DeclareMathSymbol{\rightarrowtobar}{\mathrel}{\M at arrows@font}{"21E5}
- \DeclareMathSymbol{\rightwhitearrow}{\mathrel}{\M at arrows@font}{"21E8}
- \DeclareMathSymbol{\rightrightarrows}{\mathrel}{\M at arrows@font}{"21C9}
- \DeclareMathSymbol{\rightrightrightarrows}{\mathrel}{\M at arrows@font}{"21F6}
- \DeclareMathSymbol{\leftarrow}{\mathrel}{\M at arrows@font}{"2190}
+ \@DMS{\Longrightbararrow} {\mathrel}{\M at arrows@font}{"27FE}
+ \@DMS{\hookrightarrow} {\mathrel}{\M at arrows@font}{"21AA}
+ \@DMS{\rightdasharrow} {\mathrel}{\M at arrows@font}{"21E2}
+ \@DMS{\rightharpoonup} {\mathrel}{\M at arrows@font}{"21C0}
+ \@DMS{\rightharpoondown} {\mathrel}{\M at arrows@font}{"21C1}
+ \@DMS{\rightarrowtail} {\mathrel}{\M at arrows@font}{"21A3}
+ \@DMS{\rightoplusarrow} {\mathrel}{\M at arrows@font}{"27F4}
+ \@DMS{\rightwavearrow} {\mathrel}{\M at arrows@font}{"219D}
+ \@DMS{\rightsquigarrow} {\mathrel}{\M at arrows@font}{"21DD}
+ \@DMS{\longrightsquigarrow} {\mathrel}{\M at arrows@font}{"27FF}
+ \@DMS{\looparrowright} {\mathrel}{\M at arrows@font}{"21AC}
+ \@DMS{\curvearrowright} {\mathrel}{\M at arrows@font}{"293B}
+ \@DMS{\circlearrowright} {\mathrel}{\M at arrows@font}{"21BB}
+ \@DMS{\twoheadrightarrow} {\mathrel}{\M at arrows@font}{"21A0}
+ \@DMS{\rightarrowtobar} {\mathrel}{\M at arrows@font}{"21E5}
+ \@DMS{\rightwhitearrow} {\mathrel}{\M at arrows@font}{"21E8}
+ \@DMS{\rightrightarrows} {\mathrel}{\M at arrows@font}{"21C9}
+ \@DMS{\rightrightrightarrows}{\mathrel}{\M at arrows@font}{"21F6}
+ \@DMS{\leftarrow} {\mathrel}{\M at arrows@font}{"2190}
\global\let\from\leftarrow
- \DeclareMathSymbol{\nleftarrow}{\mathrel}{\M at arrows@font}{"219A}
- \DeclareMathSymbol{\Leftarrow}{\mathrel}{\M at arrows@font}{"21D0}
- \DeclareMathSymbol{\nLeftarrow}{\mathrel}{\M at arrows@font}{"21CD}
- \DeclareMathSymbol{\Lleftarrow}{\mathrel}{\M at arrows@font}{"21DA}
- \DeclareMathSymbol{\longleftarrow}{\mathrel}{\M at arrows@font}{"27F5}
- \DeclareMathSymbol{\Longleftarrow}{\mathrel}{\M at arrows@font}{"27F8}
- \DeclareMathSymbol{\leftbararrow}{\mathrel}{\M at arrows@font}{"21A4}
+ \@DMS{\nleftarrow} {\mathrel}{\M at arrows@font}{"219A}
+ \@DMS{\Leftarrow} {\mathrel}{\M at arrows@font}{"21D0}
+ \@DMS{\nLeftarrow} {\mathrel}{\M at arrows@font}{"21CD}
+ \@DMS{\Lleftarrow} {\mathrel}{\M at arrows@font}{"21DA}
+ \@DMS{\longleftarrow} {\mathrel}{\M at arrows@font}{"27F5}
+ \@DMS{\Longleftarrow} {\mathrel}{\M at arrows@font}{"27F8}
+ \@DMS{\leftbararrow} {\mathrel}{\M at arrows@font}{"21A4}
\global\let\mapsfrom\leftbararrow
- \DeclareMathSymbol{\Leftbararrow}{\mathrel}{\M at arrows@font}{"2906}
- \DeclareMathSymbol{\longleftbararrow}{\mathrel}{\M at arrows@font}{"27FB}
+ \@DMS{\Leftbararrow} {\mathrel}{\M at arrows@font}{"2906}
+ \@DMS{\longleftbararrow} {\mathrel}{\M at arrows@font}{"27FB}
\global\let\longmapsfrom\longleftbararrow
- \DeclareMathSymbol{\Longleftbararrow}{\mathrel}{\M at arrows@font}{"27FD}
- \DeclareMathSymbol{\hookleftarrow}{\mathrel}{\M at arrows@font}{"21A9}
- \DeclareMathSymbol{\leftdasharrow}{\mathrel}{\M at arrows@font}{"21E0}
- \DeclareMathSymbol{\leftharpoonup}{\mathrel}{\M at arrows@font}{"21BC}
- \DeclareMathSymbol{\leftharpoondown}{\mathrel}{\M at arrows@font}{"21BD}
- \DeclareMathSymbol{\leftarrowtail}{\mathrel}{\M at arrows@font}{"21A2}
- \DeclareMathSymbol{\leftoplusarrow}{\mathrel}{\M at arrows@font}{"2B32}
- \DeclareMathSymbol{\leftwavearrow}{\mathrel}{\M at arrows@font}{"219C}
- \DeclareMathSymbol{\leftsquigarrow}{\mathrel}{\M at arrows@font}{"21DC}
- \DeclareMathSymbol{\longleftsquigarrow}{\mathrel}{\M at arrows@font}{"2B33}
- \DeclareMathSymbol{\looparrowleft}{\mathrel}{\M at arrows@font}{"21AB}
- \DeclareMathSymbol{\curvearrowleft}{\mathrel}{\M at arrows@font}{"293A}
- \DeclareMathSymbol{\circlearrowleft}{\mathrel}{\M at arrows@font}{"21BA}
- \DeclareMathSymbol{\twoheadleftarrow}{\mathrel}{\M at arrows@font}{"219E}
- \DeclareMathSymbol{\leftarrowtobar}{\mathrel}{\M at arrows@font}{"21E4}
- \DeclareMathSymbol{\leftwhitearrow}{\mathrel}{\M at arrows@font}{"21E6}
- \DeclareMathSymbol{\leftleftarrows}{\mathrel}{\M at arrows@font}{"21C7}
- \DeclareMathSymbol{\leftleftleftarrows}{\mathrel}{\M at arrows@font}{"2B31}
- \DeclareMathSymbol{\leftrightarrow}{\mathrel}{\M at arrows@font}{"2194}
- \DeclareMathSymbol{\Leftrightarrow}{\mathrel}{\M at arrows@font}{"21D4}
- \DeclareMathSymbol{\nLeftrightarrow}{\mathrel}{\M at arrows@font}{"21CE}
- \DeclareMathSymbol{\longleftrightarrow}{\mathrel}{\M at arrows@font}{"27F7}
- \DeclareMathSymbol{\Longleftrightarrow}{\mathrel}{\M at arrows@font}{"27FA}
- \DeclareMathSymbol{\leftrightwavearrow}{\mathrel}{\M at arrows@font}{"21AD}
- \DeclareMathSymbol{\leftrightarrows}{\mathrel}{\M at arrows@font}{"21C6}
- \DeclareMathSymbol{\leftrightharpoons}{\mathrel}{\M at arrows@font}{"21CB}
- \DeclareMathSymbol{\leftrightarrowstobar}{\mathrel}{\M at arrows@font}{"21B9}
- \DeclareMathSymbol{\rightleftarrows}{\mathrel}{\M at arrows@font}{"21C4}
- \DeclareMathSymbol{\rightleftharpoons}{\mathrel}{\M at arrows@font}{"21CC}
- \DeclareMathSymbol{\uparrow}{\mathrel}{\M at arrows@font}{"2191}
- \DeclareMathSymbol{\Uparrow}{\mathrel}{\M at arrows@font}{"21D1}
- \DeclareMathSymbol{\Uuparrow}{\mathrel}{\M at arrows@font}{"290A}
- \DeclareMathSymbol{\upbararrow}{\mathrel}{\M at arrows@font}{"21A5}
- \DeclareMathSymbol{\updasharrow}{\mathrel}{\M at arrows@font}{"21E1}
- \DeclareMathSymbol{\upharpoonleft}{\mathrel}{\M at arrows@font}{"21BF}
- \DeclareMathSymbol{\upharpoonright}{\mathrel}{\M at arrows@font}{"21BE}
- \DeclareMathSymbol{\twoheaduparrow}{\mathrel}{\M at arrows@font}{"219F}
- \DeclareMathSymbol{\uparrowtobar}{\mathrel}{\M at arrows@font}{"2912}
- \DeclareMathSymbol{\upwhitearrow}{\mathrel}{\M at arrows@font}{"21E7}
- \DeclareMathSymbol{\upwhitebararrow}{\mathrel}{\M at arrows@font}{"21EA}
- \DeclareMathSymbol{\upuparrows}{\mathrel}{\M at arrows@font}{"21C8}
- \DeclareMathSymbol{\downarrow}{\mathrel}{\M at arrows@font}{"2193}
- \DeclareMathSymbol{\Downarrow}{\mathrel}{\M at arrows@font}{"21D3}
- \DeclareMathSymbol{\Ddownarrow}{\mathrel}{\M at arrows@font}{"290B}
- \DeclareMathSymbol{\downbararrow}{\mathrel}{\M at arrows@font}{"21A7}
- \DeclareMathSymbol{\downdasharrow}{\mathrel}{\M at arrows@font}{"21E3}
- \DeclareMathSymbol{\zigzagarrow}{\mathrel}{\M at arrows@font}{"21AF}
+ \@DMS{\Longleftbararrow} {\mathrel}{\M at arrows@font}{"27FD}
+ \@DMS{\hookleftarrow} {\mathrel}{\M at arrows@font}{"21A9}
+ \@DMS{\leftdasharrow} {\mathrel}{\M at arrows@font}{"21E0}
+ \@DMS{\leftharpoonup} {\mathrel}{\M at arrows@font}{"21BC}
+ \@DMS{\leftharpoondown} {\mathrel}{\M at arrows@font}{"21BD}
+ \@DMS{\leftarrowtail} {\mathrel}{\M at arrows@font}{"21A2}
+ \@DMS{\leftoplusarrow} {\mathrel}{\M at arrows@font}{"2B32}
+ \@DMS{\leftwavearrow} {\mathrel}{\M at arrows@font}{"219C}
+ \@DMS{\leftsquigarrow} {\mathrel}{\M at arrows@font}{"21DC}
+ \@DMS{\longleftsquigarrow} {\mathrel}{\M at arrows@font}{"2B33}
+ \@DMS{\looparrowleft} {\mathrel}{\M at arrows@font}{"21AB}
+ \@DMS{\curvearrowleft} {\mathrel}{\M at arrows@font}{"293A}
+ \@DMS{\circlearrowleft} {\mathrel}{\M at arrows@font}{"21BA}
+ \@DMS{\twoheadleftarrow} {\mathrel}{\M at arrows@font}{"219E}
+ \@DMS{\leftarrowtobar} {\mathrel}{\M at arrows@font}{"21E4}
+ \@DMS{\leftwhitearrow} {\mathrel}{\M at arrows@font}{"21E6}
+ \@DMS{\leftleftarrows} {\mathrel}{\M at arrows@font}{"21C7}
+ \@DMS{\leftleftleftarrows} {\mathrel}{\M at arrows@font}{"2B31}
+ \@DMS{\leftrightarrow} {\mathrel}{\M at arrows@font}{"2194}
+ \@DMS{\Leftrightarrow} {\mathrel}{\M at arrows@font}{"21D4}
+ \@DMS{\nLeftrightarrow} {\mathrel}{\M at arrows@font}{"21CE}
+ \@DMS{\longleftrightarrow} {\mathrel}{\M at arrows@font}{"27F7}
+ \@DMS{\Longleftrightarrow} {\mathrel}{\M at arrows@font}{"27FA}
+ \@DMS{\leftrightwavearrow} {\mathrel}{\M at arrows@font}{"21AD}
+ \@DMS{\leftrightarrows} {\mathrel}{\M at arrows@font}{"21C6}
+ \@DMS{\leftrightharpoons} {\mathrel}{\M at arrows@font}{"21CB}
+ \@DMS{\leftrightarrowstobar} {\mathrel}{\M at arrows@font}{"21B9}
+ \@DMS{\rightleftarrows} {\mathrel}{\M at arrows@font}{"21C4}
+ \@DMS{\rightleftharpoons} {\mathrel}{\M at arrows@font}{"21CC}
+ \@DMS{\uparrow} {\mathrel}{\M at arrows@font}{"2191}
+ \@DMS{\Uparrow} {\mathrel}{\M at arrows@font}{"21D1}
+ \@DMS{\Uuparrow} {\mathrel}{\M at arrows@font}{"290A}
+ \@DMS{\upbararrow} {\mathrel}{\M at arrows@font}{"21A5}
+ \@DMS{\updasharrow} {\mathrel}{\M at arrows@font}{"21E1}
+ \@DMS{\upharpoonleft} {\mathrel}{\M at arrows@font}{"21BF}
+ \@DMS{\upharpoonright} {\mathrel}{\M at arrows@font}{"21BE}
+ \@DMS{\twoheaduparrow} {\mathrel}{\M at arrows@font}{"219F}
+ \@DMS{\uparrowtobar} {\mathrel}{\M at arrows@font}{"2912}
+ \@DMS{\upwhitearrow} {\mathrel}{\M at arrows@font}{"21E7}
+ \@DMS{\upwhitebararrow} {\mathrel}{\M at arrows@font}{"21EA}
+ \@DMS{\upuparrows} {\mathrel}{\M at arrows@font}{"21C8}
+ \@DMS{\downarrow} {\mathrel}{\M at arrows@font}{"2193}
+ \@DMS{\Downarrow} {\mathrel}{\M at arrows@font}{"21D3}
+ \@DMS{\Ddownarrow} {\mathrel}{\M at arrows@font}{"290B}
+ \@DMS{\downbararrow} {\mathrel}{\M at arrows@font}{"21A7}
+ \@DMS{\downdasharrow} {\mathrel}{\M at arrows@font}{"21E3}
+ \@DMS{\zigzagarrow} {\mathrel}{\M at arrows@font}{"21AF}
\global\let\lightningboltarrow\zigzagarrow
- \DeclareMathSymbol{\downharpoonleft}{\mathrel}{\M at arrows@font}{"21C3}
- \DeclareMathSymbol{\downharpoonright}{\mathrel}{\M at arrows@font}{"21C2}
- \DeclareMathSymbol{\twoheaddownarrow}{\mathrel}{\M at arrows@font}{"21A1}
- \DeclareMathSymbol{\downarrowtobar}{\mathrel}{\M at arrows@font}{"2913}
- \DeclareMathSymbol{\downwhitearrow}{\mathrel}{\M at arrows@font}{"21E9}
- \DeclareMathSymbol{\downdownarrows}{\mathrel}{\M at arrows@font}{"21CA}
- \DeclareMathSymbol{\updownarrow}{\mathrel}{\M at arrows@font}{"2195}
- \DeclareMathSymbol{\Updownarrow}{\mathrel}{\M at arrows@font}{"21D5}
- \DeclareMathSymbol{\updownarrows}{\mathrel}{\M at arrows@font}{"21C5}
- \DeclareMathSymbol{\downuparrows}{\mathrel}{\M at arrows@font}{"21F5}
- \DeclareMathSymbol{\updownharpoons}{\mathrel}{\M at arrows@font}{"296E}
- \DeclareMathSymbol{\downupharpoons}{\mathrel}{\M at arrows@font}{"296F}
- \DeclareMathSymbol{\nearrow}{\mathrel}{\M at arrows@font}{"2197}
- \DeclareMathSymbol{\Nearrow}{\mathrel}{\M at arrows@font}{"21D7}
- \DeclareMathSymbol{\nwarrow}{\mathrel}{\M at arrows@font}{"2196}
- \DeclareMathSymbol{\Nwarrow}{\mathrel}{\M at arrows@font}{"21D6}
- \DeclareMathSymbol{\searrow}{\mathrel}{\M at arrows@font}{"2198}
- \DeclareMathSymbol{\Searrow}{\mathrel}{\M at arrows@font}{"21D8}
- \DeclareMathSymbol{\swarrow}{\mathrel}{\M at arrows@font}{"2199}
- \DeclareMathSymbol{\Swarrow}{\mathrel}{\M at arrows@font}{"21D9}
- \DeclareMathSymbol{\nwsearrow}{\mathrel}{\M at arrows@font}{"2921}
- \DeclareMathSymbol{\neswarrow}{\mathrel}{\M at arrows@font}{"2922}
- \DeclareMathSymbol{\lcirclearrow}{\mathrel}{\M at arrows@font}{"27F2}
- \DeclareMathSymbol{\rcirclearrow}{\mathrel}{\M at arrows@font}{"27F3}}
+ \@DMS{\downharpoonleft} {\mathrel}{\M at arrows@font}{"21C3}
+ \@DMS{\downharpoonright} {\mathrel}{\M at arrows@font}{"21C2}
+ \@DMS{\twoheaddownarrow} {\mathrel}{\M at arrows@font}{"21A1}
+ \@DMS{\downarrowtobar} {\mathrel}{\M at arrows@font}{"2913}
+ \@DMS{\downwhitearrow} {\mathrel}{\M at arrows@font}{"21E9}
+ \@DMS{\downdownarrows} {\mathrel}{\M at arrows@font}{"21CA}
+ \@DMS{\updownarrow} {\mathrel}{\M at arrows@font}{"2195}
+ \@DMS{\Updownarrow} {\mathrel}{\M at arrows@font}{"21D5}
+ \@DMS{\updownarrows} {\mathrel}{\M at arrows@font}{"21C5}
+ \@DMS{\downuparrows} {\mathrel}{\M at arrows@font}{"21F5}
+ \@DMS{\updownharpoons} {\mathrel}{\M at arrows@font}{"296E}
+ \@DMS{\downupharpoons} {\mathrel}{\M at arrows@font}{"296F}
+ \@DMS{\nearrow} {\mathrel}{\M at arrows@font}{"2197}
+ \@DMS{\Nearrow} {\mathrel}{\M at arrows@font}{"21D7}
+ \@DMS{\nwarrow} {\mathrel}{\M at arrows@font}{"2196}
+ \@DMS{\Nwarrow} {\mathrel}{\M at arrows@font}{"21D6}
+ \@DMS{\searrow} {\mathrel}{\M at arrows@font}{"2198}
+ \@DMS{\Searrow} {\mathrel}{\M at arrows@font}{"21D8}
+ \@DMS{\swarrow} {\mathrel}{\M at arrows@font}{"2199}
+ \@DMS{\Swarrow} {\mathrel}{\M at arrows@font}{"21D9}
+ \@DMS{\nwsearrow} {\mathrel}{\M at arrows@font}{"2921}
+ \@DMS{\neswarrow} {\mathrel}{\M at arrows@font}{"2922}
+ \@DMS{\lcirclearrow} {\mathrel}{\M at arrows@font}{"27F2}
+ \@DMS{\rcirclearrow} {\mathrel}{\M at arrows@font}{"27F3}
% \end{macrocode}
+% The commands |\relbar| and |\Relbar| produce a smashed minus and an equals sign respectively. They are helper control sequences that \LaTeX\ uses to create other arrows. We have a small issue with \textsf{amsmath} because in \XeTeX\ and Lua\TeX, \textsf{amsmath} defines |\relbar| and |\Relbar| in terms of the |\Umathcodes| of the minus and equals signs respectively. That is a good approach in general, but it doesn't work when a package like \textsf{mathfont} allows users to pick different fonts for symbols and arrows. We really want |\relbar| and |\Relbar| to come from the |arrows| font, so our approach is to define the control sequences now and then redefine |\AtBeginDocument| if needed.
+% \begin{macrocode}
+ \let\@relbar\@undefined
+ \let\@Relbar\@undefined
+ \@DMS{\@relbar}{\mathbin}{\M at arrows@font}{"2212}
+ \@DMS{\@Relbar}{\mathrel}{\M at arrows@font}{"3D}
+ \protected\gdef\relbar{\mathrel{\mathpalette\mathsm at sh\@relbar}}
+ \protected\gdef\Relbar{\@Relbar}
+% \end{macrocode}
+% We redefine stuff if \textsf{amsmath} gets loaded after \textsf{mathfont}.
+% \begin{macrocode}
+ \@ifpackageloaded{amsmath}
+ {\relax}{%
+ \global\let\@@relbar\relbar
+ \global\let\@@Relbar\Relbar
+ \AtBeginDocument{\@ifpackageloaded{amsmath}{%
+ \global\let\relbar\@@relbar
+ \global\let\Relbar\@@Relbar}
+ {\relax}}}}
+% \end{macrocode}
% Set blackboard bold letters and numbers. The alphanumeric keywords work a bit differently from the other font-setting commands. We define |\mathbb| here, which takes a single argument and is essentially a wrapper around |\M at bb@mathcodes|. That command changes the |\Umathcode|s of letters to the unicode hex values of corresponding blackboard-bold characters, and throughout, |\M at bb@num| stores the family number of the sumbol font for the |bb| character class. In the definition of |\mathbb|, we use |\begingroup| and |\endgroup| to avoid creating unexpected atoms. The other alphanumeric keywords work similarly.\indexpage{keywordbb=keyword \texttt{bb}}
% \begin{macrocode}
\def\M at bb@set{%
@@ -4314,70 +4811,71 @@
\M at bb@mathcodes
##1%
\endgroup}
- \edef\M at bb@num{\number\csname symM\M at bbshape\@tempa\endcsname}
+ \edef\M at bb@num{\number
+ \csname symM\M at bbshape\@tempa\endcsname}
\protected\edef\M at bb@mathcodes{%
- \Umathcode`A=0+\M at bb@num"1D538\relax
- \Umathcode`B=0+\M at bb@num"1D539\relax
- \Umathcode`C=0+\M at bb@num"2102\relax
- \Umathcode`D=0+\M at bb@num"1D53B\relax
- \Umathcode`E=0+\M at bb@num"1D53C\relax
- \Umathcode`F=0+\M at bb@num"1D53D\relax
- \Umathcode`G=0+\M at bb@num"1D53E\relax
- \Umathcode`H=0+\M at bb@num"210D\relax
- \Umathcode`I=0+\M at bb@num"1D540\relax
- \Umathcode`J=0+\M at bb@num"1D541\relax
- \Umathcode`K=0+\M at bb@num"1D542\relax
- \Umathcode`L=0+\M at bb@num"1D543\relax
- \Umathcode`M=0+\M at bb@num"1D544\relax
- \Umathcode`N=0+\M at bb@num"2115\relax
- \Umathcode`O=0+\M at bb@num"1D546\relax
- \Umathcode`P=0+\M at bb@num"2119\relax
- \Umathcode`Q=0+\M at bb@num"211A\relax
- \Umathcode`R=0+\M at bb@num"211D\relax
- \Umathcode`S=0+\M at bb@num"1D54A\relax
- \Umathcode`T=0+\M at bb@num"1D54B\relax
- \Umathcode`U=0+\M at bb@num"1D54C\relax
- \Umathcode`V=0+\M at bb@num"1D54D\relax
- \Umathcode`W=0+\M at bb@num"1D54E\relax
- \Umathcode`X=0+\M at bb@num"1D54F\relax
- \Umathcode`Y=0+\M at bb@num"1D550\relax
- \Umathcode`Z=0+\M at bb@num"2124\relax
- \Umathcode`a=0+\M at bb@num"1D552\relax
- \Umathcode`b=0+\M at bb@num"1D553\relax
- \Umathcode`c=0+\M at bb@num"1D554\relax
- \Umathcode`d=0+\M at bb@num"1D555\relax
- \Umathcode`e=0+\M at bb@num"1D556\relax
- \Umathcode`f=0+\M at bb@num"1D557\relax
- \Umathcode`g=0+\M at bb@num"1D558\relax
- \Umathcode`h=0+\M at bb@num"1D559\relax
- \Umathcode`i=0+\M at bb@num"1D55A\relax
- \Umathcode`j=0+\M at bb@num"1D55B\relax
- \Umathcode`k=0+\M at bb@num"1D55C\relax
- \Umathcode`l=0+\M at bb@num"1D55D\relax
- \Umathcode`m=0+\M at bb@num"1D55E\relax
- \Umathcode`n=0+\M at bb@num"1D55F\relax
- \Umathcode`o=0+\M at bb@num"1D560\relax
- \Umathcode`p=0+\M at bb@num"1D561\relax
- \Umathcode`q=0+\M at bb@num"1D562\relax
- \Umathcode`r=0+\M at bb@num"1D563\relax
- \Umathcode`s=0+\M at bb@num"1D564\relax
- \Umathcode`t=0+\M at bb@num"1D565\relax
- \Umathcode`u=0+\M at bb@num"1D566\relax
- \Umathcode`v=0+\M at bb@num"1D567\relax
- \Umathcode`w=0+\M at bb@num"1D568\relax
- \Umathcode`x=0+\M at bb@num"1D569\relax
- \Umathcode`y=0+\M at bb@num"1D56A\relax
- \Umathcode`z=0+\M at bb@num"1D56B\relax
- \Umathcode`0=0+\M at bb@num"1D7D8\relax
- \Umathcode`1=0+\M at bb@num"1D7D9\relax
- \Umathcode`2=0+\M at bb@num"1D7DA\relax
- \Umathcode`3=0+\M at bb@num"1D7DB\relax
- \Umathcode`4=0+\M at bb@num"1D7DC\relax
- \Umathcode`5=0+\M at bb@num"1D7DD\relax
- \Umathcode`6=0+\M at bb@num"1D7DE\relax
- \Umathcode`7=0+\M at bb@num"1D7DF\relax
- \Umathcode`8=0+\M at bb@num"1D7E0\relax
- \Umathcode`9=0+\M at bb@num"1D7E1\relax}}
+ \Umathcode`A=0+\M at bb@num"1D538\relax
+ \Umathcode`B=0+\M at bb@num"1D539\relax
+ \Umathcode`C=0+\M at bb@num"2102\relax
+ \Umathcode`D=0+\M at bb@num"1D53B\relax
+ \Umathcode`E=0+\M at bb@num"1D53C\relax
+ \Umathcode`F=0+\M at bb@num"1D53D\relax
+ \Umathcode`G=0+\M at bb@num"1D53E\relax
+ \Umathcode`H=0+\M at bb@num"210D\relax
+ \Umathcode`I=0+\M at bb@num"1D540\relax
+ \Umathcode`J=0+\M at bb@num"1D541\relax
+ \Umathcode`K=0+\M at bb@num"1D542\relax
+ \Umathcode`L=0+\M at bb@num"1D543\relax
+ \Umathcode`M=0+\M at bb@num"1D544\relax
+ \Umathcode`N=0+\M at bb@num"2115\relax
+ \Umathcode`O=0+\M at bb@num"1D546\relax
+ \Umathcode`P=0+\M at bb@num"2119\relax
+ \Umathcode`Q=0+\M at bb@num"211A\relax
+ \Umathcode`R=0+\M at bb@num"211D\relax
+ \Umathcode`S=0+\M at bb@num"1D54A\relax
+ \Umathcode`T=0+\M at bb@num"1D54B\relax
+ \Umathcode`U=0+\M at bb@num"1D54C\relax
+ \Umathcode`V=0+\M at bb@num"1D54D\relax
+ \Umathcode`W=0+\M at bb@num"1D54E\relax
+ \Umathcode`X=0+\M at bb@num"1D54F\relax
+ \Umathcode`Y=0+\M at bb@num"1D550\relax
+ \Umathcode`Z=0+\M at bb@num"2124\relax
+ \Umathcode`a=0+\M at bb@num"1D552\relax
+ \Umathcode`b=0+\M at bb@num"1D553\relax
+ \Umathcode`c=0+\M at bb@num"1D554\relax
+ \Umathcode`d=0+\M at bb@num"1D555\relax
+ \Umathcode`e=0+\M at bb@num"1D556\relax
+ \Umathcode`f=0+\M at bb@num"1D557\relax
+ \Umathcode`g=0+\M at bb@num"1D558\relax
+ \Umathcode`h=0+\M at bb@num"1D559\relax
+ \Umathcode`i=0+\M at bb@num"1D55A\relax
+ \Umathcode`j=0+\M at bb@num"1D55B\relax
+ \Umathcode`k=0+\M at bb@num"1D55C\relax
+ \Umathcode`l=0+\M at bb@num"1D55D\relax
+ \Umathcode`m=0+\M at bb@num"1D55E\relax
+ \Umathcode`n=0+\M at bb@num"1D55F\relax
+ \Umathcode`o=0+\M at bb@num"1D560\relax
+ \Umathcode`p=0+\M at bb@num"1D561\relax
+ \Umathcode`q=0+\M at bb@num"1D562\relax
+ \Umathcode`r=0+\M at bb@num"1D563\relax
+ \Umathcode`s=0+\M at bb@num"1D564\relax
+ \Umathcode`t=0+\M at bb@num"1D565\relax
+ \Umathcode`u=0+\M at bb@num"1D566\relax
+ \Umathcode`v=0+\M at bb@num"1D567\relax
+ \Umathcode`w=0+\M at bb@num"1D568\relax
+ \Umathcode`x=0+\M at bb@num"1D569\relax
+ \Umathcode`y=0+\M at bb@num"1D56A\relax
+ \Umathcode`z=0+\M at bb@num"1D56B\relax
+ \Umathcode`0=0+\M at bb@num"1D7D8\relax
+ \Umathcode`1=0+\M at bb@num"1D7D9\relax
+ \Umathcode`2=0+\M at bb@num"1D7DA\relax
+ \Umathcode`3=0+\M at bb@num"1D7DB\relax
+ \Umathcode`4=0+\M at bb@num"1D7DC\relax
+ \Umathcode`5=0+\M at bb@num"1D7DD\relax
+ \Umathcode`6=0+\M at bb@num"1D7DE\relax
+ \Umathcode`7=0+\M at bb@num"1D7DF\relax
+ \Umathcode`8=0+\M at bb@num"1D7E0\relax
+ \Umathcode`9=0+\M at bb@num"1D7E1\relax}}
% \end{macrocode}
% Set caligraphic letters.\indexpage{keywordcal=keyword \texttt{cal}}
% \begin{macrocode}
@@ -4391,60 +4889,61 @@
\M at cal@mathcodes
##1%
\endgroup}
- \edef\M at cal@num{\number\csname symM\M at calshape\@tempa\endcsname}
+ \edef\M at cal@num{\number
+ \csname symM\M at calshape\@tempa\endcsname}
\protected\edef\M at cal@mathcodes{%
- \Umathcode`A=0+\M at cal@num"1D49C\relax
- \Umathcode`B=0+\M at cal@num"212C\relax
- \Umathcode`C=0+\M at cal@num"1D49E\relax
- \Umathcode`D=0+\M at cal@num"1D49F\relax
- \Umathcode`E=0+\M at cal@num"2130\relax
- \Umathcode`F=0+\M at cal@num"2131\relax
- \Umathcode`G=0+\M at cal@num"1D4A2\relax
- \Umathcode`H=0+\M at cal@num"210B\relax
- \Umathcode`I=0+\M at cal@num"2110\relax
- \Umathcode`J=0+\M at cal@num"1D4A5\relax
- \Umathcode`K=0+\M at cal@num"1D4A6\relax
- \Umathcode`L=0+\M at cal@num"2112\relax
- \Umathcode`M=0+\M at cal@num"2133\relax
- \Umathcode`N=0+\M at cal@num"1D4A9\relax
- \Umathcode`O=0+\M at cal@num"1D4AA\relax
- \Umathcode`P=0+\M at cal@num"1D4AB\relax
- \Umathcode`Q=0+\M at cal@num"1D4AC\relax
- \Umathcode`R=0+\M at cal@num"211B\relax
- \Umathcode`S=0+\M at cal@num"1D4AE\relax
- \Umathcode`T=0+\M at cal@num"1D4AF\relax
- \Umathcode`U=0+\M at cal@num"1D4B0\relax
- \Umathcode`V=0+\M at cal@num"1D4B1\relax
- \Umathcode`W=0+\M at cal@num"1D4B2\relax
- \Umathcode`X=0+\M at cal@num"1D4B3\relax
- \Umathcode`Y=0+\M at cal@num"1D4B4\relax
- \Umathcode`Z=0+\M at cal@num"1D4B5\relax
- \Umathcode`a=0+\M at cal@num"1D4B6\relax
- \Umathcode`b=0+\M at cal@num"1D4B7\relax
- \Umathcode`c=0+\M at cal@num"1D4B8\relax
- \Umathcode`d=0+\M at cal@num"1D4B9\relax
- \Umathcode`e=0+\M at cal@num"212F\relax
- \Umathcode`f=0+\M at cal@num"1D4BB\relax
- \Umathcode`g=0+\M at cal@num"210A\relax
- \Umathcode`h=0+\M at cal@num"1D4BD\relax
- \Umathcode`i=0+\M at cal@num"1D4BE\relax
- \Umathcode`j=0+\M at cal@num"1D4BF\relax
- \Umathcode`k=0+\M at cal@num"1D4C0\relax
- \Umathcode`l=0+\M at cal@num"1D4C1\relax
- \Umathcode`m=0+\M at cal@num"1D4C2\relax
- \Umathcode`n=0+\M at cal@num"1D4C3\relax
- \Umathcode`o=0+\M at cal@num"2134\relax
- \Umathcode`p=0+\M at cal@num"1D4C5\relax
- \Umathcode`q=0+\M at cal@num"1D4C6\relax
- \Umathcode`r=0+\M at cal@num"1D4C7\relax
- \Umathcode`s=0+\M at cal@num"1D4C8\relax
- \Umathcode`t=0+\M at cal@num"1D4C9\relax
- \Umathcode`u=0+\M at cal@num"1D4CA\relax
- \Umathcode`v=0+\M at cal@num"1D4CB\relax
- \Umathcode`w=0+\M at cal@num"1D4CC\relax
- \Umathcode`x=0+\M at cal@num"1D4CD\relax
- \Umathcode`y=0+\M at cal@num"1D4CE\relax
- \Umathcode`z=0+\M at cal@num"1D4CF\relax}}
+ \Umathcode`A=0+\M at cal@num"1D49C\relax
+ \Umathcode`B=0+\M at cal@num"212C\relax
+ \Umathcode`C=0+\M at cal@num"1D49E\relax
+ \Umathcode`D=0+\M at cal@num"1D49F\relax
+ \Umathcode`E=0+\M at cal@num"2130\relax
+ \Umathcode`F=0+\M at cal@num"2131\relax
+ \Umathcode`G=0+\M at cal@num"1D4A2\relax
+ \Umathcode`H=0+\M at cal@num"210B\relax
+ \Umathcode`I=0+\M at cal@num"2110\relax
+ \Umathcode`J=0+\M at cal@num"1D4A5\relax
+ \Umathcode`K=0+\M at cal@num"1D4A6\relax
+ \Umathcode`L=0+\M at cal@num"2112\relax
+ \Umathcode`M=0+\M at cal@num"2133\relax
+ \Umathcode`N=0+\M at cal@num"1D4A9\relax
+ \Umathcode`O=0+\M at cal@num"1D4AA\relax
+ \Umathcode`P=0+\M at cal@num"1D4AB\relax
+ \Umathcode`Q=0+\M at cal@num"1D4AC\relax
+ \Umathcode`R=0+\M at cal@num"211B\relax
+ \Umathcode`S=0+\M at cal@num"1D4AE\relax
+ \Umathcode`T=0+\M at cal@num"1D4AF\relax
+ \Umathcode`U=0+\M at cal@num"1D4B0\relax
+ \Umathcode`V=0+\M at cal@num"1D4B1\relax
+ \Umathcode`W=0+\M at cal@num"1D4B2\relax
+ \Umathcode`X=0+\M at cal@num"1D4B3\relax
+ \Umathcode`Y=0+\M at cal@num"1D4B4\relax
+ \Umathcode`Z=0+\M at cal@num"1D4B5\relax
+ \Umathcode`a=0+\M at cal@num"1D4B6\relax
+ \Umathcode`b=0+\M at cal@num"1D4B7\relax
+ \Umathcode`c=0+\M at cal@num"1D4B8\relax
+ \Umathcode`d=0+\M at cal@num"1D4B9\relax
+ \Umathcode`e=0+\M at cal@num"212F\relax
+ \Umathcode`f=0+\M at cal@num"1D4BB\relax
+ \Umathcode`g=0+\M at cal@num"210A\relax
+ \Umathcode`h=0+\M at cal@num"1D4BD\relax
+ \Umathcode`i=0+\M at cal@num"1D4BE\relax
+ \Umathcode`j=0+\M at cal@num"1D4BF\relax
+ \Umathcode`k=0+\M at cal@num"1D4C0\relax
+ \Umathcode`l=0+\M at cal@num"1D4C1\relax
+ \Umathcode`m=0+\M at cal@num"1D4C2\relax
+ \Umathcode`n=0+\M at cal@num"1D4C3\relax
+ \Umathcode`o=0+\M at cal@num"2134\relax
+ \Umathcode`p=0+\M at cal@num"1D4C5\relax
+ \Umathcode`q=0+\M at cal@num"1D4C6\relax
+ \Umathcode`r=0+\M at cal@num"1D4C7\relax
+ \Umathcode`s=0+\M at cal@num"1D4C8\relax
+ \Umathcode`t=0+\M at cal@num"1D4C9\relax
+ \Umathcode`u=0+\M at cal@num"1D4CA\relax
+ \Umathcode`v=0+\M at cal@num"1D4CB\relax
+ \Umathcode`w=0+\M at cal@num"1D4CC\relax
+ \Umathcode`x=0+\M at cal@num"1D4CD\relax
+ \Umathcode`y=0+\M at cal@num"1D4CE\relax
+ \Umathcode`z=0+\M at cal@num"1D4CF\relax}}
% \end{macrocode}
% Set fraktur letters.\indexpage{keywordfrak=keyword \texttt{frak}}
% \begin{macrocode}
@@ -4458,60 +4957,61 @@
\M at frak@mathcodes
##1%
\endgroup}
- \edef\M at frak@num{\number\csname symM\M at frakshape\@tempa\endcsname}
+ \edef\M at frak@num{\number
+ \csname symM\M at frakshape\@tempa\endcsname}
\protected\edef\M at frak@mathcodes{%
- \Umathcode`A=0+\M at frak@num"1D504\relax
- \Umathcode`B=0+\M at frak@num"1D505\relax
- \Umathcode`C=0+\M at frak@num"212D\relax
- \Umathcode`D=0+\M at frak@num"1D507\relax
- \Umathcode`E=0+\M at frak@num"1D508\relax
- \Umathcode`F=0+\M at frak@num"1D509\relax
- \Umathcode`G=0+\M at frak@num"1D50A\relax
- \Umathcode`H=0+\M at frak@num"210C\relax
- \Umathcode`I=0+\M at frak@num"2111\relax
- \Umathcode`J=0+\M at frak@num"1D50D\relax
- \Umathcode`K=0+\M at frak@num"1D50E\relax
- \Umathcode`L=0+\M at frak@num"1D50F\relax
- \Umathcode`M=0+\M at frak@num"1D510\relax
- \Umathcode`N=0+\M at frak@num"1D511\relax
- \Umathcode`O=0+\M at frak@num"1D512\relax
- \Umathcode`P=0+\M at frak@num"1D513\relax
- \Umathcode`Q=0+\M at frak@num"1D514\relax
- \Umathcode`R=0+\M at frak@num"211C\relax
- \Umathcode`S=0+\M at frak@num"1D516\relax
- \Umathcode`T=0+\M at frak@num"1D517\relax
- \Umathcode`U=0+\M at frak@num"1D518\relax
- \Umathcode`V=0+\M at frak@num"1D519\relax
- \Umathcode`W=0+\M at frak@num"1D51A\relax
- \Umathcode`X=0+\M at frak@num"1D51B\relax
- \Umathcode`Y=0+\M at frak@num"1D51C\relax
- \Umathcode`Z=0+\M at frak@num"2128\relax
- \Umathcode`a=0+\M at frak@num"1D51E\relax
- \Umathcode`b=0+\M at frak@num"1D51F\relax
- \Umathcode`c=0+\M at frak@num"1D520\relax
- \Umathcode`d=0+\M at frak@num"1D521\relax
- \Umathcode`e=0+\M at frak@num"1D522\relax
- \Umathcode`f=0+\M at frak@num"1D523\relax
- \Umathcode`g=0+\M at frak@num"1D524\relax
- \Umathcode`h=0+\M at frak@num"1D525\relax
- \Umathcode`i=0+\M at frak@num"1D526\relax
- \Umathcode`j=0+\M at frak@num"1D527\relax
- \Umathcode`k=0+\M at frak@num"1D528\relax
- \Umathcode`l=0+\M at frak@num"1D529\relax
- \Umathcode`m=0+\M at frak@num"1D52A\relax
- \Umathcode`n=0+\M at frak@num"1D52B\relax
- \Umathcode`o=0+\M at frak@num"1D52C\relax
- \Umathcode`p=0+\M at frak@num"1D52D\relax
- \Umathcode`q=0+\M at frak@num"1D52E\relax
- \Umathcode`r=0+\M at frak@num"1D52F\relax
- \Umathcode`s=0+\M at frak@num"1D530\relax
- \Umathcode`t=0+\M at frak@num"1D531\relax
- \Umathcode`u=0+\M at frak@num"1D532\relax
- \Umathcode`v=0+\M at frak@num"1D533\relax
- \Umathcode`w=0+\M at frak@num"1D534\relax
- \Umathcode`x=0+\M at frak@num"1D535\relax
- \Umathcode`y=0+\M at frak@num"1D536\relax
- \Umathcode`z=0+\M at frak@num"1D537\relax}}
+ \Umathcode`A=0+\M at frak@num"1D504\relax
+ \Umathcode`B=0+\M at frak@num"1D505\relax
+ \Umathcode`C=0+\M at frak@num"212D\relax
+ \Umathcode`D=0+\M at frak@num"1D507\relax
+ \Umathcode`E=0+\M at frak@num"1D508\relax
+ \Umathcode`F=0+\M at frak@num"1D509\relax
+ \Umathcode`G=0+\M at frak@num"1D50A\relax
+ \Umathcode`H=0+\M at frak@num"210C\relax
+ \Umathcode`I=0+\M at frak@num"2111\relax
+ \Umathcode`J=0+\M at frak@num"1D50D\relax
+ \Umathcode`K=0+\M at frak@num"1D50E\relax
+ \Umathcode`L=0+\M at frak@num"1D50F\relax
+ \Umathcode`M=0+\M at frak@num"1D510\relax
+ \Umathcode`N=0+\M at frak@num"1D511\relax
+ \Umathcode`O=0+\M at frak@num"1D512\relax
+ \Umathcode`P=0+\M at frak@num"1D513\relax
+ \Umathcode`Q=0+\M at frak@num"1D514\relax
+ \Umathcode`R=0+\M at frak@num"211C\relax
+ \Umathcode`S=0+\M at frak@num"1D516\relax
+ \Umathcode`T=0+\M at frak@num"1D517\relax
+ \Umathcode`U=0+\M at frak@num"1D518\relax
+ \Umathcode`V=0+\M at frak@num"1D519\relax
+ \Umathcode`W=0+\M at frak@num"1D51A\relax
+ \Umathcode`X=0+\M at frak@num"1D51B\relax
+ \Umathcode`Y=0+\M at frak@num"1D51C\relax
+ \Umathcode`Z=0+\M at frak@num"2128\relax
+ \Umathcode`a=0+\M at frak@num"1D51E\relax
+ \Umathcode`b=0+\M at frak@num"1D51F\relax
+ \Umathcode`c=0+\M at frak@num"1D520\relax
+ \Umathcode`d=0+\M at frak@num"1D521\relax
+ \Umathcode`e=0+\M at frak@num"1D522\relax
+ \Umathcode`f=0+\M at frak@num"1D523\relax
+ \Umathcode`g=0+\M at frak@num"1D524\relax
+ \Umathcode`h=0+\M at frak@num"1D525\relax
+ \Umathcode`i=0+\M at frak@num"1D526\relax
+ \Umathcode`j=0+\M at frak@num"1D527\relax
+ \Umathcode`k=0+\M at frak@num"1D528\relax
+ \Umathcode`l=0+\M at frak@num"1D529\relax
+ \Umathcode`m=0+\M at frak@num"1D52A\relax
+ \Umathcode`n=0+\M at frak@num"1D52B\relax
+ \Umathcode`o=0+\M at frak@num"1D52C\relax
+ \Umathcode`p=0+\M at frak@num"1D52D\relax
+ \Umathcode`q=0+\M at frak@num"1D52E\relax
+ \Umathcode`r=0+\M at frak@num"1D52F\relax
+ \Umathcode`s=0+\M at frak@num"1D530\relax
+ \Umathcode`t=0+\M at frak@num"1D531\relax
+ \Umathcode`u=0+\M at frak@num"1D532\relax
+ \Umathcode`v=0+\M at frak@num"1D533\relax
+ \Umathcode`w=0+\M at frak@num"1D534\relax
+ \Umathcode`x=0+\M at frak@num"1D535\relax
+ \Umathcode`y=0+\M at frak@num"1D536\relax
+ \Umathcode`z=0+\M at frak@num"1D537\relax}}
% \end{macrocode}
% Set bold caligraphic letters.\indexpage{keywordbcal=keyword \texttt{bcal}}
% \begin{macrocode}
@@ -4525,60 +5025,61 @@
\M at bcal@mathcodes
##1%
\endgroup}
- \edef\M at bcal@num{\number\csname symM\M at bcalshape\@tempa\endcsname}
+ \edef\M at bcal@num{\number
+ \csname symM\M at bcalshape\@tempa\endcsname}
\protected\edef\M at bcal@mathcodes{%
- \Umathcode`A=0+\M at bcal@num"1D4D0\relax
- \Umathcode`B=0+\M at bcal@num"1D4D1\relax
- \Umathcode`C=0+\M at bcal@num"1D4D2\relax
- \Umathcode`D=0+\M at bcal@num"1D4D3\relax
- \Umathcode`E=0+\M at bcal@num"1D4D4\relax
- \Umathcode`F=0+\M at bcal@num"1D4D5\relax
- \Umathcode`G=0+\M at bcal@num"1D4D6\relax
- \Umathcode`H=0+\M at bcal@num"1D4D7\relax
- \Umathcode`I=0+\M at bcal@num"1D4D8\relax
- \Umathcode`J=0+\M at bcal@num"1D4D9\relax
- \Umathcode`K=0+\M at bcal@num"1D4DA\relax
- \Umathcode`L=0+\M at bcal@num"1D4DB\relax
- \Umathcode`M=0+\M at bcal@num"1D4DC\relax
- \Umathcode`N=0+\M at bcal@num"1D4DD\relax
- \Umathcode`O=0+\M at bcal@num"1D4DE\relax
- \Umathcode`P=0+\M at bcal@num"1D4DF\relax
- \Umathcode`Q=0+\M at bcal@num"1D4E0\relax
- \Umathcode`R=0+\M at bcal@num"1D4E1\relax
- \Umathcode`S=0+\M at bcal@num"1D4E2\relax
- \Umathcode`T=0+\M at bcal@num"1D4E3\relax
- \Umathcode`U=0+\M at bcal@num"1D4E4\relax
- \Umathcode`V=0+\M at bcal@num"1D4E5\relax
- \Umathcode`W=0+\M at bcal@num"1D4E6\relax
- \Umathcode`X=0+\M at bcal@num"1D4E7\relax
- \Umathcode`Y=0+\M at bcal@num"1D4E8\relax
- \Umathcode`Z=0+\M at bcal@num"1D4E9\relax
- \Umathcode`a=0+\M at bcal@num"1D4EA\relax
- \Umathcode`b=0+\M at bcal@num"1D4EB\relax
- \Umathcode`c=0+\M at bcal@num"1D4EC\relax
- \Umathcode`d=0+\M at bcal@num"1D4ED\relax
- \Umathcode`e=0+\M at bcal@num"1D4EE\relax
- \Umathcode`f=0+\M at bcal@num"1D4EF\relax
- \Umathcode`g=0+\M at bcal@num"1D4F0\relax
- \Umathcode`h=0+\M at bcal@num"1D4F1\relax
- \Umathcode`i=0+\M at bcal@num"1D4F2\relax
- \Umathcode`j=0+\M at bcal@num"1D4F3\relax
- \Umathcode`k=0+\M at bcal@num"1D4F4\relax
- \Umathcode`l=0+\M at bcal@num"1D4F5\relax
- \Umathcode`m=0+\M at bcal@num"1D4F6\relax
- \Umathcode`n=0+\M at bcal@num"1D4F7\relax
- \Umathcode`o=0+\M at bcal@num"1D4F8\relax
- \Umathcode`p=0+\M at bcal@num"1D4F9\relax
- \Umathcode`q=0+\M at bcal@num"1D4FA\relax
- \Umathcode`r=0+\M at bcal@num"1D4FB\relax
- \Umathcode`s=0+\M at bcal@num"1D4FC\relax
- \Umathcode`t=0+\M at bcal@num"1D4FD\relax
- \Umathcode`u=0+\M at bcal@num"1D4FE\relax
- \Umathcode`v=0+\M at bcal@num"1D4FF\relax
- \Umathcode`w=0+\M at bcal@num"1D500\relax
- \Umathcode`x=0+\M at bcal@num"1D501\relax
- \Umathcode`y=0+\M at bcal@num"1D502\relax
- \Umathcode`z=0+\M at bcal@num"1D503\relax}}
+ \Umathcode`A=0+\M at bcal@num"1D4D0\relax
+ \Umathcode`B=0+\M at bcal@num"1D4D1\relax
+ \Umathcode`C=0+\M at bcal@num"1D4D2\relax
+ \Umathcode`D=0+\M at bcal@num"1D4D3\relax
+ \Umathcode`E=0+\M at bcal@num"1D4D4\relax
+ \Umathcode`F=0+\M at bcal@num"1D4D5\relax
+ \Umathcode`G=0+\M at bcal@num"1D4D6\relax
+ \Umathcode`H=0+\M at bcal@num"1D4D7\relax
+ \Umathcode`I=0+\M at bcal@num"1D4D8\relax
+ \Umathcode`J=0+\M at bcal@num"1D4D9\relax
+ \Umathcode`K=0+\M at bcal@num"1D4DA\relax
+ \Umathcode`L=0+\M at bcal@num"1D4DB\relax
+ \Umathcode`M=0+\M at bcal@num"1D4DC\relax
+ \Umathcode`N=0+\M at bcal@num"1D4DD\relax
+ \Umathcode`O=0+\M at bcal@num"1D4DE\relax
+ \Umathcode`P=0+\M at bcal@num"1D4DF\relax
+ \Umathcode`Q=0+\M at bcal@num"1D4E0\relax
+ \Umathcode`R=0+\M at bcal@num"1D4E1\relax
+ \Umathcode`S=0+\M at bcal@num"1D4E2\relax
+ \Umathcode`T=0+\M at bcal@num"1D4E3\relax
+ \Umathcode`U=0+\M at bcal@num"1D4E4\relax
+ \Umathcode`V=0+\M at bcal@num"1D4E5\relax
+ \Umathcode`W=0+\M at bcal@num"1D4E6\relax
+ \Umathcode`X=0+\M at bcal@num"1D4E7\relax
+ \Umathcode`Y=0+\M at bcal@num"1D4E8\relax
+ \Umathcode`Z=0+\M at bcal@num"1D4E9\relax
+ \Umathcode`a=0+\M at bcal@num"1D4EA\relax
+ \Umathcode`b=0+\M at bcal@num"1D4EB\relax
+ \Umathcode`c=0+\M at bcal@num"1D4EC\relax
+ \Umathcode`d=0+\M at bcal@num"1D4ED\relax
+ \Umathcode`e=0+\M at bcal@num"1D4EE\relax
+ \Umathcode`f=0+\M at bcal@num"1D4EF\relax
+ \Umathcode`g=0+\M at bcal@num"1D4F0\relax
+ \Umathcode`h=0+\M at bcal@num"1D4F1\relax
+ \Umathcode`i=0+\M at bcal@num"1D4F2\relax
+ \Umathcode`j=0+\M at bcal@num"1D4F3\relax
+ \Umathcode`k=0+\M at bcal@num"1D4F4\relax
+ \Umathcode`l=0+\M at bcal@num"1D4F5\relax
+ \Umathcode`m=0+\M at bcal@num"1D4F6\relax
+ \Umathcode`n=0+\M at bcal@num"1D4F7\relax
+ \Umathcode`o=0+\M at bcal@num"1D4F8\relax
+ \Umathcode`p=0+\M at bcal@num"1D4F9\relax
+ \Umathcode`q=0+\M at bcal@num"1D4FA\relax
+ \Umathcode`r=0+\M at bcal@num"1D4FB\relax
+ \Umathcode`s=0+\M at bcal@num"1D4FC\relax
+ \Umathcode`t=0+\M at bcal@num"1D4FD\relax
+ \Umathcode`u=0+\M at bcal@num"1D4FE\relax
+ \Umathcode`v=0+\M at bcal@num"1D4FF\relax
+ \Umathcode`w=0+\M at bcal@num"1D500\relax
+ \Umathcode`x=0+\M at bcal@num"1D501\relax
+ \Umathcode`y=0+\M at bcal@num"1D502\relax
+ \Umathcode`z=0+\M at bcal@num"1D503\relax}}
% \end{macrocode}
% Set bold fraktur letters.\indexpage{keywordbfrak=keyword \texttt{bfrak}}
% \begin{macrocode}
@@ -4592,60 +5093,61 @@
\M at bfrak@mathcodes
##1%
\endgroup}
- \edef\M at bfrak@num{\number\csname symM\M at bfrakshape\@tempa\endcsname}
+ \edef\M at bfrak@num{\number
+ \csname symM\M at bfrakshape\@tempa\endcsname}
\protected\edef\M at bfrak@mathcodes{%
- \Umathcode`A=0+\M at bfrak@num"1D56C\relax
- \Umathcode`B=0+\M at bfrak@num"1D56D\relax
- \Umathcode`C=0+\M at bfrak@num"1D56E\relax
- \Umathcode`D=0+\M at bfrak@num"1D56F\relax
- \Umathcode`E=0+\M at bfrak@num"1D570\relax
- \Umathcode`F=0+\M at bfrak@num"1D571\relax
- \Umathcode`G=0+\M at bfrak@num"1D572\relax
- \Umathcode`H=0+\M at bfrak@num"1D573\relax
- \Umathcode`I=0+\M at bfrak@num"1D574\relax
- \Umathcode`J=0+\M at bfrak@num"1D575\relax
- \Umathcode`K=0+\M at bfrak@num"1D576\relax
- \Umathcode`L=0+\M at bfrak@num"1D577\relax
- \Umathcode`M=0+\M at bfrak@num"1D578\relax
- \Umathcode`N=0+\M at bfrak@num"1D579\relax
- \Umathcode`O=0+\M at bfrak@num"1D57A\relax
- \Umathcode`P=0+\M at bfrak@num"1D57B\relax
- \Umathcode`Q=0+\M at bfrak@num"1D57C\relax
- \Umathcode`R=0+\M at bfrak@num"1D57D\relax
- \Umathcode`S=0+\M at bfrak@num"1D57E\relax
- \Umathcode`T=0+\M at bfrak@num"1D57F\relax
- \Umathcode`U=0+\M at bfrak@num"1D580\relax
- \Umathcode`V=0+\M at bfrak@num"1D581\relax
- \Umathcode`W=0+\M at bfrak@num"1D582\relax
- \Umathcode`X=0+\M at bfrak@num"1D583\relax
- \Umathcode`Y=0+\M at bfrak@num"1D584\relax
- \Umathcode`Z=0+\M at bfrak@num"1D585\relax
- \Umathcode`a=0+\M at bfrak@num"1D586\relax
- \Umathcode`b=0+\M at bfrak@num"1D587\relax
- \Umathcode`c=0+\M at bfrak@num"1D588\relax
- \Umathcode`d=0+\M at bfrak@num"1D589\relax
- \Umathcode`e=0+\M at bfrak@num"1D58A\relax
- \Umathcode`f=0+\M at bfrak@num"1D58B\relax
- \Umathcode`g=0+\M at bfrak@num"1D58C\relax
- \Umathcode`h=0+\M at bfrak@num"1D58D\relax
- \Umathcode`i=0+\M at bfrak@num"1D58E\relax
- \Umathcode`j=0+\M at bfrak@num"1D58F\relax
- \Umathcode`k=0+\M at bfrak@num"1D590\relax
- \Umathcode`l=0+\M at bfrak@num"1D591\relax
- \Umathcode`m=0+\M at bfrak@num"1D592\relax
- \Umathcode`n=0+\M at bfrak@num"1D593\relax
- \Umathcode`o=0+\M at bfrak@num"1D594\relax
- \Umathcode`p=0+\M at bfrak@num"1D595\relax
- \Umathcode`q=0+\M at bfrak@num"1D596\relax
- \Umathcode`r=0+\M at bfrak@num"1D597\relax
- \Umathcode`s=0+\M at bfrak@num"1D598\relax
- \Umathcode`t=0+\M at bfrak@num"1D599\relax
- \Umathcode`u=0+\M at bfrak@num"1D59A\relax
- \Umathcode`v=0+\M at bfrak@num"1D59B\relax
- \Umathcode`w=0+\M at bfrak@num"1D59C\relax
- \Umathcode`x=0+\M at bfrak@num"1D59D\relax
- \Umathcode`y=0+\M at bfrak@num"1D59E\relax
- \Umathcode`z=0+\M at bfrak@num"1D59F\relax}}
+ \Umathcode`A=0+\M at bfrak@num"1D56C\relax
+ \Umathcode`B=0+\M at bfrak@num"1D56D\relax
+ \Umathcode`C=0+\M at bfrak@num"1D56E\relax
+ \Umathcode`D=0+\M at bfrak@num"1D56F\relax
+ \Umathcode`E=0+\M at bfrak@num"1D570\relax
+ \Umathcode`F=0+\M at bfrak@num"1D571\relax
+ \Umathcode`G=0+\M at bfrak@num"1D572\relax
+ \Umathcode`H=0+\M at bfrak@num"1D573\relax
+ \Umathcode`I=0+\M at bfrak@num"1D574\relax
+ \Umathcode`J=0+\M at bfrak@num"1D575\relax
+ \Umathcode`K=0+\M at bfrak@num"1D576\relax
+ \Umathcode`L=0+\M at bfrak@num"1D577\relax
+ \Umathcode`M=0+\M at bfrak@num"1D578\relax
+ \Umathcode`N=0+\M at bfrak@num"1D579\relax
+ \Umathcode`O=0+\M at bfrak@num"1D57A\relax
+ \Umathcode`P=0+\M at bfrak@num"1D57B\relax
+ \Umathcode`Q=0+\M at bfrak@num"1D57C\relax
+ \Umathcode`R=0+\M at bfrak@num"1D57D\relax
+ \Umathcode`S=0+\M at bfrak@num"1D57E\relax
+ \Umathcode`T=0+\M at bfrak@num"1D57F\relax
+ \Umathcode`U=0+\M at bfrak@num"1D580\relax
+ \Umathcode`V=0+\M at bfrak@num"1D581\relax
+ \Umathcode`W=0+\M at bfrak@num"1D582\relax
+ \Umathcode`X=0+\M at bfrak@num"1D583\relax
+ \Umathcode`Y=0+\M at bfrak@num"1D584\relax
+ \Umathcode`Z=0+\M at bfrak@num"1D585\relax
+ \Umathcode`a=0+\M at bfrak@num"1D586\relax
+ \Umathcode`b=0+\M at bfrak@num"1D587\relax
+ \Umathcode`c=0+\M at bfrak@num"1D588\relax
+ \Umathcode`d=0+\M at bfrak@num"1D589\relax
+ \Umathcode`e=0+\M at bfrak@num"1D58A\relax
+ \Umathcode`f=0+\M at bfrak@num"1D58B\relax
+ \Umathcode`g=0+\M at bfrak@num"1D58C\relax
+ \Umathcode`h=0+\M at bfrak@num"1D58D\relax
+ \Umathcode`i=0+\M at bfrak@num"1D58E\relax
+ \Umathcode`j=0+\M at bfrak@num"1D58F\relax
+ \Umathcode`k=0+\M at bfrak@num"1D590\relax
+ \Umathcode`l=0+\M at bfrak@num"1D591\relax
+ \Umathcode`m=0+\M at bfrak@num"1D592\relax
+ \Umathcode`n=0+\M at bfrak@num"1D593\relax
+ \Umathcode`o=0+\M at bfrak@num"1D594\relax
+ \Umathcode`p=0+\M at bfrak@num"1D595\relax
+ \Umathcode`q=0+\M at bfrak@num"1D596\relax
+ \Umathcode`r=0+\M at bfrak@num"1D597\relax
+ \Umathcode`s=0+\M at bfrak@num"1D598\relax
+ \Umathcode`t=0+\M at bfrak@num"1D599\relax
+ \Umathcode`u=0+\M at bfrak@num"1D59A\relax
+ \Umathcode`v=0+\M at bfrak@num"1D59B\relax
+ \Umathcode`w=0+\M at bfrak@num"1D59C\relax
+ \Umathcode`x=0+\M at bfrak@num"1D59D\relax
+ \Umathcode`y=0+\M at bfrak@num"1D59E\relax
+ \Umathcode`z=0+\M at bfrak@num"1D59F\relax}}
% \end{macrocode}
% And that's everything!
%
@@ -4725,7 +5227,7 @@
% \advance\dimen@ by -2\fboxrule
% \advance\dimen@ by -2\fboxsep
% \fbox{\vbox{\hsize\dimen@
-% \strut\textbf{Big Change:} Font adjustments for Lua\TeX: new glyph boundaries for Latin letters in math mode, resizable delimiters, big operators, MathConstants table based on font metrics.\vphantom{y}}}
+% \strut\textbf{Big Change:} Font adjustments for Lua\TeX: new glyph boundaries for Latin letters in math mode, resizable delimiters, big operators, MathConstants table based on font metrics.\vphantom y}}
% \par\smallskip}
% \item added |\CharmLine| and |\CharmFile|
% \item added |\mathconstantsfont|
@@ -4778,6 +5280,17 @@
% \item redesigned font-loader
% \item added package options |default-loader| and |fontspec-loader|
%
+% \version{2.4}{April 2025\strut}
+% \item |\colon| is |\mathpunct| instead of |\mathord|
+% \item moved |\relbar| and |\Relbar| to |arrows|
+% \item reformatted |mathfont_code.pdf|
+% \item made compatible with |\mathbb|, etc.\ commands from other packages
+% \item renamed |set_nomath_true| to |set_nomath_false|
+% \item improved messaging |\AtBeginDocument|
+% \item removed deprecated package options, |\newmathbold|, |\restoremathinternals|
+% \item more Easter egg messages
+%
+%
% \egroup
% \end{multicols*}
%
@@ -4787,7 +5300,7 @@
%
%</package>
%<*user>
-\documentclass[12pt,twoside]{article}
+\documentclass[12pt]{article}
\makeatletter
\usepackage[margin=72.27pt]{geometry}
\usepackage[factor=700,stretch=14,shrink=14,step=1]{microtype}
@@ -4823,7 +5336,7 @@
\input mathfont_heading.tex
-Handling fonts in \TeX\ and \LaTeX\ is a notoriously difficult task because fonts are complicated.\footnote{The last 30 years have seen huge advances in loading fonts with \TeX. Donald Knuth originally designed \TeX\ to load fonts created with Metafont, and only more recent engines such as Jonathan Kew's \XeTeX\ and Hans Hagen, et al.'s Lua\TeX\ have extended \TeX's font-loading capabilities to unicode. \XeTeX\ supports OpenType and TrueType fonts natively, and Lua\TeX\ can load OpenType fonts through the \textsf{luaotfload} package. Information on \XeTeX\ is available at \link{https://tug.org/xetex/}, and information on Lua\TeX\ is available at the official website for Lua\TeX: \link{http://www.luatex.org/}. See also Ulrike Fischer, et al., ``\textsf{luaotfload}---OpenType `loader' for Plain \TeX\ and \LaTeX,'' \link{https://ctan.org/pkg/luaotfload}. For discussion of fonts generally, see Yannis Haralambous, \textit{Fonts \& Encodings} (Sebastopol: O'Reilly Media, Inc., 2007).} The \textsf{mathfont} package loads TrueType and OpenType fonts for use in math mode, and this document explains the package's user-level commands. For version history and code implementation, see |mathfont_code.pdf|, and for a list of all symbols accessible with \textsf{mathfont}, see |mathfont_symbol_list.pdf|. The \textsf{mathfont} installation also includes four example files, and all \textsf{mathfont} pdf documentation files are available on \textsc{ctan}. Because unicode text fonts outnumber unicode math fonts, I hope that my package will expand the set of possibilities for typesetting math in \LaTeX.
+\noindent Handling fonts in \TeX\ and \LaTeX\ is a notoriously difficult task because fonts are complicated.\footnote{The last few decades have seen huge advances in loading fonts with \TeX. Donald Knuth originally designed \TeX\ to load fonts created with Metafont, and only more recent engines such as Jonathan Kew's \XeTeX\ and Hans Hagen, et al.'s Lua\TeX\ have extended \TeX's font-loading capabilities to unicode. \XeTeX\ supports OpenType and TrueType fonts natively, and Lua\TeX\ can load OpenType fonts through the \textsf{luaotfload} package. Information on \XeTeX\ is available at \link{https://tug.org/xetex/}, and information on Lua\TeX\ is available at the official website for Lua\TeX: \link{http://www.luatex.org/}. See also Ulrike Fischer, et al., ``\textsf{luaotfload}---OpenType `loader' for Plain \TeX\ and \LaTeX,'' \link{https://ctan.org/pkg/luaotfload}. For discussion of fonts generally, see Yannis Haralambous, \textit{Fonts \& Encodings} (Sebastopol: O'Reilly Media, Inc., 2007).} The \textsf{mathfont} package addresses this situation by providing tools to load TrueType and OpenType fonts for use in math mode, and this document explains how to operate \textsf{mathfont}. For version history and code implementation, see |mathfont_code.pdf|, and for a list of all symbols accessible with \textsf{mathfont}, see |mathfont_symbol_list.pdf|. Those two pdf files, this user guide, and four example files are included in the \textsf{mathfont} installation and are available on \textsc{ctan}. Because unicode text fonts, particularly without built-in math support, are plentiful, I hope that this package expands the possibilities for typesetting math in \LaTeX.
\section{Loading and Basic Functionality}
@@ -4830,14 +5343,27 @@
Loading fonts for math typesetting is more complicated than for regular text. First, selecting fonts for math mode, both in plain \TeX\ and in the \textsc{nfss}, involves additional macros above and beyond what we need to load text fonts. Second, \TeX\ expects fonts for math to contain extra information for formatting equations.\footnote{Specifically, this extra information is a set of large variants, math-specific parameter values associated with individual characters, and a MathConstants table. Also, math fonts often use slightly wider bounding boxes for letters in math mode---the Computer Modern $f$ is a well-known example. (Compare math-mode {\fboxsep=0pt\fbox{$f$}} and italic {\fboxsep=0pt\fbox{\textit{f}}}.) For this reason, \textsf{mathfont} also provides an interface to enlarge the bounding boxes of Latin letters when they appear in math mode. See section 5 for details.} Broadly speaking, we say that a \textit{math font} contains this extra information, whereas a \textit{text font} does not, and typesetting math with glyphs from one or more text fonts usually results in messier equations than using a properly prepared math font. The functionality of \textsf{mathfont} then is twofold: (1) provide a wrapper around the \textsc{nfss} commands for math typesetting that serves as a high-level interface; and (2) implement Lua\TeX\ callbacks that artificially convert text fonts into math fonts at loading.\footnote{Values for MathConstants table are different from but inspired by Ulrik Vieth, ``Understanding the \AE sthetics of Math Typesetting,'' (Bacho\TeX\ Conference, 2008) and Ulrik Vieth ``OpenType Math Illuminated,'' \textit{TUGboat} 30 (2009): 22--31. See also Bogus\l aw Jackowski, ``Appendix G Illuminated,'' \textit{TUGboat} 27 (2006): 83--90.} Although \textsf{mathfont} tries its best to get your fonts right, it may run into trouble when picking fonts to load. If this happens, you should declare your font family and shapes in the \textsc{nfss} before setting any fonts with \textsf{mathfont}.
-You must use one of \XeLaTeX\ or Lua\LaTeX\ to typeset a document with \textsf{mathfont}. You can load \textsf{mathfont} with the standard |\usepackage{mathfont}| syntax, and the package accepts five optional arguments. If you use Lua\TeX, the options |adjust| or |no-adjust| will manually specify whether \textsf{mathfont} should adapt text fonts for math mode, and \textsf{mathfont} selects |adjust| by default. If you use \XeTeX, \textsf{mathfont} cannot adjust any font objects with Lua callbacks, and either of these package options will cause an error.\footnote{With \XeLaTeX, \textsf{mathfont} does not add big operators or resizable delimiters. This means you will have to use the Computer Modern defaults, load a separate math font for resizable characters, or end up with a document where large operators and delimiters do not scale like they do normally.} For this reason, using Lua\TeX\ with \textsf{mathfont} is recommended as of version 2.0. The options |default-loader| and |fontspec-loader| determine which font-loading code \textsf{mathfont} uses. If you load the package with the |default-loader| option, \textsf{mathfont} uses a built-in font-loader, and if you load the package with |fontspec-loader|, \textsf{mathfont} uses the font-loader from \textsf{fontspec}. If you load \textsf{mathfont} with any other optional argument, the package will interpret it as a font name and call |\setfont| (described in the next section) on your argument. Doing so selects that font for the text of your document and for the character classes in the upper section of Table~1.
+You must use one of \XeLaTeX\ or Lua\LaTeX\ to typeset a document with \textsf{mathfont}. You can load \textsf{mathfont} with the standard |\usepackage| syntax, and the package accepts five optional arguments. If you use Lua\TeX, the options |adjust| or |no-adjust| will manually specify whether \textsf{mathfont} should adapt text fonts for math mode, and \textsf{mathfont} selects |adjust| by default. If you use \XeTeX, \textsf{mathfont} cannot adjust any font objects with Lua callbacks, and either of these package options will cause an error.\footnote{With \XeLaTeX, \textsf{mathfont} does not add big operators or resizable delimiters. This means you will have to use the Computer Modern defaults, load a separate math font for resizable characters, or end up with a document where large operators and delimiters do not scale like they do normally.} For this reason, using Lua\TeX\ with \textsf{mathfont} is recommended as of version 2.0. The options |default-loader| and |fontspec-loader| determine which font-loading code \textsf{mathfont} uses. If you load the package with the |default-loader| option, \textsf{mathfont} uses a built-in font-loader, and if you load the package with |fontspec-loader|, \textsf{mathfont} uses the font-loader from \textsf{fontspec}. If you load \textsf{mathfont} with any other optional argument, the package will interpret it as a font name and call |\setfont| (described in the next section) on your argument. Doing so selects that font for the text of your document and for the character classes in the upper section of Table~\ref{Keywords}.
-The \textsf{mathfont} package is closely related to several other \LaTeX\ packages. The functionality is closest to that of \textsf{mathspec} by Andrew Gilbert Moschou, which is compatible with \XeTeX\ only and selects characters from text fonts for math.\footnote{Andrew Gilbert Moschou, ``\textsf{mathspec}---Specify arbitrary fonts for mathematics in \XeTeX,'' \link{https://ctan.org/pkg/mathspec}.} The \textsf{unicode-math} package is the standard \LaTeX\ package for loading actual unicode math fonts, and if you have a unicode font with proper math support, rather than a text font that you want to use for equations, consider using this package instead of \textsf{mathfont}.\footnote{Will Robertson, et al., ``\textsf{unicode-math}---Unicode mathematics support for XeTeX and LuaTeX,'' \link{https://ctan.org/pkg/unicode-math}.} Users who want a text font for math with pdf\LaTeX\ should consider Jean-Fran\c cois Burnol's \textsf{mathastext} because \textsf{mathfont} is incompatible with pdf\TeX.\footnote{Jean-Fran\c cois Burnol, ``\textsf{mathastext}---Use the text font in maths mode,'' \link{https://ctan.org/pkg/mathastext}. In several previous versions of this documentation, I mischaracterized the approach of \textsf{mathastext} to \TeX's internal mathematics spacing. In fact, \textsf{mathastext} preserves and in some cases extends rules for space between various math-mode characters.} Finally, you will probably be better off using \textsf{fontspec} if your document does not contain any math.\footnote{Will Robertson and Khaled Hosny, ``\textsf{fontspec}---Advanced font selection in \XeLaTeX\ and Lua\LaTeX,'' \link{https://ctan.org/pkg/fontspec}.} The \textsf{fontspec} package is designed to load TrueType and OpenType fonts for text and provides a high-level interface for selecting OpenType font features.
+\begin{figure}[t]\labelfig{packages}
+\centerline{\bfseries Table \the\fig: Comparison of General Font-Loading Packages\strut}
+\global\advance\fig\@ne
+\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lll}\toprule
+& Text font & Math font\\\cmidrule{2-3}
+Traditional \TeX\ font & \textsf{mathastext} & No general package\\
+Unicode font (for math typesetting) & \textsf{mathfont} or \textsf{mathspec} & \textsf{unicode-math}\\
+Unicode font (for text only) & \textsf{fontspec} & \textsf{fontspec} \\\bottomrule
+\end{tabular*}
+\end{figure}
+
+
+
+
\begin{figure}[t]\labelfig{Keywords}
\centerline{\bfseries Table \the\fig: Character Classes\strut}
\global\advance\fig by 1\relax
-\begin{tabularx}\hsize{lXll}\toprule
+\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}llll}\toprule
Keyword & Meaning & Default Shape & Alphabetic?\\\midrule
|upper| & Upper-Case Latin & Italic & Yes\\
|lower| & Lower-Case Latin & Italic & Yes\\
@@ -4864,21 +5390,27 @@
|bcal| & Bold Caligraphic & Upright & No\\
|bfrak| & Bold Fraktur & Upright & No\\
\bottomrule
-\end{tabularx}
+\end{tabular*}
\end{figure}
+
+
+The \textsf{mathfont} package is closely related to several other \LaTeX\ packages. The functionality is closest to that of \textsf{mathspec} by Andrew Gilbert Moschou, which is compatible with \XeTeX\ only and selects characters from text fonts for math.\footnote{Andrew Gilbert Moschou, ``\textsf{mathspec}---Specify arbitrary fonts for mathematics in \XeTeX,'' \link{https://ctan.org/pkg/mathspec}.} The \textsf{unicode-math} package is a main \LaTeX\ package for loading actual unicode math fonts, and if you have a unicode font with proper math support, rather than a text font that you want to use for equations, consider using that package instead of \textsf{mathfont}.\footnote{Will Robertson, et al., ``\textsf{unicode-math}---Unicode mathematics support for XeTeX and LuaTeX,'' \link{https://ctan.org/pkg/unicode-math}.} Users who want a text font for math with pdf\LaTeX\ should consider Jean-Fran\c cois Burnol's \textsf{mathastext} because \textsf{mathfont} is incompatible with pdf\TeX.\footnote{Jean-Fran\c cois Burnol, ``\textsf{mathastext}---Use the text font in maths mode,'' \link{https://ctan.org/pkg/mathastext}. In several previous versions of this documentation, I mischaracterized the approach of \textsf{mathastext} to \TeX's internal mathematics spacing. In fact, \textsf{mathastext} preserves and in some cases extends rules for space between various math-mode characters.} Finally, you may be better off using \textsf{fontspec} if your document does not contain any math.\footnote{Will Robertson and Khaled Hosny, ``\textsf{fontspec}---Advanced font selection in \XeLaTeX\ and Lua\LaTeX,'' \link{https://ctan.org/pkg/fontspec}.} The \textsf{fontspec} package is designed to load TrueType and OpenType fonts for text and provides a high-level interface for selecting OpenType font features. Table~\ref{packages} summarizes this information. At the time of writing this document, I am not aware of a general font-loading package for traditional \TeX\ math fonts.
+
+
+
\section{Setting the Default Font}
-The |\mathfont| command sets the default font for certain classes of characters when they appear in math mode. It accepts a single mandatory argument, which should be a system font name or a family name already present in the \textsc{nfss}. The macro also accepts an optional argument, which should be a comma-separated list of keywords from Table~\ref{Keywords}, as in
+The |\mathfont| command sets the default font for certain classes of characters when they appear in math mode. It accepts a single mandatory argument, which should be a system font name or a family name already present in the \textsc{nfss}. The macro also accepts an optional argument, which should be a comma-separated list of keywords from Table~\ref{Keywords}, so the full syntax is
\begin{code}
-|\mathfont[|\meta{keywords}|]{|\meta{font name}|}|,
+|\mathfont[|\meta{keywords}|]{|\meta{font name}|}|
\end{code}
-and \textsf{mathfont} sets the default font face for every character in those keywords to an upright or italic version of the font from the mandatory argument. See |mathfont_symbol_list.pdf| for a list of symbols corresponding to each keyword. If you do not include an optional argument, |\mathfont| acts on all keywords in the upper section of Table~1 (but not including |delimiters|, |radical|, or |bigops| characters in \XeTeX), so calling |\mathfont| with no optional argument is a fast way to change the font for most common math characters. To change the shape, you should say ``|=upright|'' or ``|=italic|'' immediately after the keyword and before the following comma, and spaces are allowed throughout the optional argument. For example, the command
+When you use this command, \textsf{mathfont} sets the default font face for every character in those keywords to an upright or italic version of the font from the mandatory argument. See |mathfont_symbol_list.pdf| for a list of symbols corresponding to each keyword. If you do not include an optional argument, |\mathfont| acts on all keywords in the upper section of Table~\ref{Keywords} (but not including |delimiters|, |radical|, or |bigops| characters in \XeTeX), so calling |\mathfont| with no optional argument is a fast way to change the font for most common math characters. To change the shape, you should say ``|=upright|'' or ``|=italic|'' immediately after the keyword and before the following comma, and spaces are allowed throughout the optional argument. For example, the command
\begin{code}
|\mathfont[lower=upright, upper=upright]{Times New Roman}|
\end{code}
-changes all Latin letters to upright Times New Roman. Once \textsf{mathfont} has set the default font for a keyword in Table~1, it will ignore any future instructions to change the font for that keyword again, and instead the package prints a warning message.
+changes all Latin letters to upright Times New Roman. Once \textsf{mathfont} has set the default font for a keyword in Table~\ref{Keywords}, it will ignore any future instructions to change the font again for that keyword, and instead the package prints a warning message.
\begin{figure}[t]
@@ -4910,25 +5442,26 @@
\begin{code}
|\mathfont{Adobe Garamond Pro:+onum}|
\end{code}
-for the built-in font-loader or
+with the built-in font-loader or
\begin{code}
|\mathfont{Adobe Garamond Pro:Numbers=OldStyle}|
\end{code}
if using \textsf{fontspec}. With the built-in font-loader, you should separate OpenType tags with semi-colons, and \textsf{fontspec} allows you to use commas.
-Whenever you select a font, \textsf{mathfont} first checks whether your argument corresponds to a font family identifier in the \textsc{nfss}, and if it does, \textsf{mathfont} uses that font. Otherwise, the package uses loads the font, either through the built-in font-loader or with \textsf{fontspec}. Advanced users should know that when the engine is Lua\TeX, \textsf{mathfont} loads fonts twice. During the first loading, \textsf{mathfont} makes no specifications for the renderer, so the first version of the font will typically use node mode. During the second loading, \textsf{mathfont} specifies base mode. My intention is that the font face with unspecified renderer is for text and the font face with base-mode renderer is for math---using different loading options for text and math provides the greatest access to OpenType font features throughout your document.\footnote{The \textsf{luaotfload} package supports two main modes for loading fonts: |node| mode is the default setting, and it supports full OpenType features in text but no OpenType features in math. The |base| mode supports fewer OpenType features, but the font features work in both text and math. Other loading options such as HarfBuzz are similarly useful for text but provide no access to OpenType features in math.}
+Whenever you select a font for anything in this package, \textsf{mathfont} first checks whether your argument corresponds to a font family identifier in the \textsc{nfss}, and if it does, \textsf{mathfont} uses that font.\footnote{Specifically, if you use \XeTeX, \textsf{mathfont} uses the font name as given, and if you use Lua\TeX, \textsf{mathfont} tries to use a font with family name \meta{\textup{\textsc{nfss}} family}|-base| instead. This is due to \textsf{mathfont}'s double font loading and means that if you add fonts to the \textsc{nfss} yourself in Lua\TeX\ to use with \textsf{mathfont}, you should declare the font family twice. The first declaration can be normal, and for the second declaration, you should append |-base| to the family name. If you want to use OpenType font features in your equations, the second declaration should also instruct \textsf{luaotfload} to use |base| mode. If \textsf{mathfont} doesn't see \meta{\textup{\textsc{nfss}} family}|-base| in the \textsc{nfss} in Lua\TeX, it will print a warning and use the \meta{\textup{\textsc{nfss}} family} instead.} Otherwise, the package loads the font, either through the built-in font-loader or with \textsf{fontspec}.\footnote{See |mathfont\_code.pdf| for instructions on how to access the \textsc{nfss} family name in this case.} Advanced users should know that when the engine is Lua\TeX, \textsf{mathfont} loads each font twice. During the first loading, \textsf{mathfont} makes no specifications for the renderer, so the first version of the font will typically use node mode. During the second loading, \textsf{mathfont} specifies base mode. My intention is that the font face with unspecified renderer is for text, and the font face with base mode is for math---using two different loading options provides the greatest access to OpenType font features throughout your document.\footnote{The \textsf{luaotfload} package supports two main modes for loading fonts: |node| mode is the default setting, and it supports full OpenType features in text !
but no OpenType features in math. The |base| mode supports fewer OpenType features, but the font features work in both text and math. Other loading options such as HarfBuzz are similarly useful for text but provide no access to OpenType features in math.}
-The last five keywords in Table~\ref{Keywords} are a bit different. If you call |\mathfont| on a \meta{keyword} from the last five rows in Table~\ref{Keywords}, the package defines the macro
+You have three options for accessing blackboard-bold, calligraphic, or fraktur letters. First, the Unicode standard contains encoding slots for math alphanumeric symbols including these types of letters, and the last five keywords in Table~\ref{Keywords} access this portion of the Unicode table.\footnote{The Math Alphanumeric Symbols block is U+1D400--U+1D7FF. A few blackboard-bold, calligraphic, and fraktur letters live in other areas of the Unicode table.} If you call |\mathfont| on one of these \meta{keyword}s, the package defines the macro
\begin{code}
-|\math|\meta{keyword}|{|\meta{text}|}|
+|\math|\meta{keyword}|{|\meta{text}|}|,
\end{code}
-to access them. The Unicode standard contains a block specifically for math alphanumeric symbols, and the control sequences pull from these characters. For example,
+which behaves like a local font-change command from the next section and converts Latin letters into \meta{keyword} style. For example,
\begin{code}
|\mathfont[bb]{STIXGeneral}|
\end{code}
-defines |\mathbb| to typeset double-struck letters using the glyphs from STIXGeneral stored in the alphanumeric symbols block. This is very different from a font where the regular letters are double-struck, caligraphic, or fraktur! In that case, consider using the font-change commands from the next section.
+defines |\mathbb| to typeset blackboard-bold letters using the glyphs from STIXGeneral. Second, you may have a Unicode font where the normal Latin letters are double struck, calligraphic, or fraktur, and in that case, you should declare a local font-change command using the tools in the next section. If you declare any of the macros |\mathbb|, |\mathcal|, |\mathfrak|, |\mathbcal|, or |\mathbfrak| this way, \textsf{mathfont} will ignore the corresponding keyword in future calls to |\mathfont|. Third, as of version 2.4, \textsf{mathfont} tries to be compatible with any macros |\mathbb|, |\mathcal|, |\mathfrak|, |\mathbcal|, or |\mathbfrak| that come from other packages or the kernel.
+
\begin{figure}[t]
\labelfig{MathAlpha}
\centerline{\bfseries Table \the\fig: Macros to Create Local Font-Change Commands\strut}
@@ -4986,7 +5519,7 @@
\labelfig{Charm}
\centerline{\bfseries Table \the\fig: Number of Integers Required in \vrb\CharmLine\strut}
\global\advance\fig by 1\relax
-\begin{tabularx}\textwidth{lX}\toprule
+\begin{tabularx}\textwidth{Xl}\toprule
Type of Character & \hfil Total Number of Entries\\\midrule
Latin Letters & \hfil5 \\
Delimiters, Radical Sign (Surd Character), Big Operators & \hfil33\\
@@ -5001,23 +5534,23 @@
\item If the unicode value corresponds to a delimiter, the radical (surd) symbol, or a big operator, you need to specify 16 pairs numbers, for a total of 32 more integers. The first 15 pairs are horizontal and vertical scale factors that \textsf{mathfont} uses to create large variants, where successive pairs determine the scaling of each next-larger glyph. The last two integers determine horizontal placement of top and bottom math accents respectively.
\item If the unicode value corresponds to any other symbol, you should specify two more integers. They determine the horizontal placement of top and bottom math accents respectively.
\end{itemize}
-Writing an asterisk tells \textsf{mathfont} to use whatever value it has saved in memory, either the default value or the value from the most recent call to |\CharmLine| or |\CharmFile|. If you specify too few charm values, \textsf{mathfont} will raise an error, and if you provide too many, \textsf{mathfont} will silently ignore the extras.
+Writing an asterisk tells \textsf{mathfont} to use whatever value it has saved in memory, either the default value or the value from the most recent call to |\CharmLine| or |\CharmFile|. If you specify too few charm values, \textsf{mathfont} will raise an error, and if you provide too many, \textsf{mathfont} will silently ignore the extras. These commands should appear only in your document preamble.
\begin{figure}[tb]
\labelfig{Factors}
\centerline{\bfseries Table \the\fig: Commands to Adjust Individual Characters\strut}
\global\advance\fig by 1\relax
-\begin{tabularx}\textwidth{llX}\toprule
+\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lll}\toprule
Command & Default Value & What It Does\\\midrule
|\RuleThicknessFactor| & 1000 & Thickness of fraction rule and radical overbar\\
|\IntegralItalicFactor| & 400 & Positioning of limits for integrals\\
|\SurdVerticalFactor| & 1000 & Vertical positioning of radical overbar\\
|\SurdHorizontalFactor| & 1000 & Horizontal positioning of radical overbar\\\bottomrule
-\end{tabularx}
+\end{tabular*}
\end{figure}
-For most applications, you can probably ignore charm information altogether, but if you find bounding boxes or accent placement to be off slightly in your equations or if you want to change the scaling for a delimiter or big operator, you should try calling |\CharmLine| with different values to see what works. As is standard with decimal inputs in \TeX, \textsf{mathfont} divides your inputs by 1000 before computing with them. Positive integers mean ``increase,'' and negative integers mean ``decrease.'' For a given character, the scale is usually the glyph width. For example,
+For most applications, you can probably ignore charm information altogether, but if you find bounding boxes or accent placement to be off slightly in your equations or if you want to change the scaling for a delimiter or big operator, you should try calling |\CharmLine| with different values to see what works. As is standard with decimal inputs in \TeX, \textsf{mathfont} divides your inputs by 1000 before computing with them. Positive integers mean an increase, and negative integers mean a decrease. For a given character, the scale is usually the glyph width. For example,
\begin{code}
|\CharmLine{97, 200, -200, *, 50}|
\end{code}
@@ -5029,7 +5562,7 @@
\labelfig{Callbacks}
\centerline{\bfseries Table \the\fig: Lua Callbacks Created by \textsf{mathfont}\strut}
\global\advance\fig by 1\relax
-\begin{tabularx}\textwidth{lX}\toprule
+\begin{tabularx}\textwidth{XX}\toprule
Callback Name & What It Does By Default\\\midrule
|"mathfont.inspect_font"| & Nothing\\\midrule
|"mathfont.pre_adjust"| & Nothing\\
@@ -5041,7 +5574,7 @@
\end{figure}
-The commands in Table~\ref{Factors} adjust other aspects of the font as indicated. Each command accepts a single integer as an argument, and \textsf{mathfont} divides the input by 1000. With each macro, \textsf{mathfont} multiplies the quotient by some default length, so values greater than or less than 1000 mean ``scale up'' or ``scale down'' respectively. For example,
+The commands in Table~\ref{Factors} adjust other aspects of the font as indicated. Each command accepts a single integer as an argument, and \textsf{mathfont} divides the input by 1000. With each macro, \textsf{mathfont} multiplies the quotient by some default length, so values greater than 1000 mean scale up, and values less than 1000 mean scale down. For example,
\begin{code}
|\RuleThicknessFactor{2000}|
\end{code}
@@ -5054,7 +5587,7 @@
\end{document}
%</user>
%<*chars>
-\documentclass[12pt,twoside]{article}
+\documentclass[12pt]{article}
\makeatletter
\usepackage[margin=72.27pt]{geometry}
\usepackage{tabularx}
@@ -5092,7 +5625,7 @@
\def\showabstract{1}
\input mathfont_heading.tex
-The \textsf{mathfont} package provides tools to access several hundred characters for math typesetting, and this document lists these symbols along with the control sequences to access them. To get access to the symbols from a section of this document, call |\mathfont| with the keyword-option for that section and the name of a font that contains those symbols. The package does not define any math symbols until you call |\mathfont| or |\setfont| (or load \textsf{mathfont} with a font name as package option), and if you see a symbol or control sequence here that is not part of standard \LaTeX, you will not be able to access it until you call |\mathfont| on the corresponding keyword. Further, \textsf{mathfont} does not come with or load any fonts by itself, so you are responsible for the fonts. Not all fonts contain all math symbols, so choose your font wisely!\footnote{Besides letters and digits, most unicode text fonts should contain diacritics, delimiters, and the basic math characters in the keyword |symbols|. Text fonts will often contain square root and basic operator symbols, but they may not be suitable for math typesetting. Greek characters are hit or miss, and it is unusual for English text fonts to contain Cyrillic, Hebrew, ancient Greek, arrows, letterlike characters, or any extended (keywords |extbigops| and |extsymbols|) set of symbols. After you load \textsf{mathfont}, \TeX\ will print a message to the terminal if you try to typeset a missing character from some font.} This document shows ancient Greek in Crimson, Hebrew in Coelacanth, and all other math characters in STIXGeneral.
+\noindent The \textsf{mathfont} package provides tools to access several hundred characters for math typesetting, and this document lists these symbols along with the control sequences to access them. To get access to the symbols from a section of this document, call |\mathfont| with the keyword-option for that section and the name of a font that contains those symbols. The package does not define any math symbols until you call |\mathfont| or |\setfont| (or load \textsf{mathfont} with a font name as package option), and if you see a symbol or control sequence here that is not part of standard \LaTeX, you will not be able to access it until you call |\mathfont| on the corresponding keyword. Further, \textsf{mathfont} does not come with or load any fonts by itself, so you are responsible for the fonts. Not all fonts contain all math symbols, so choose your font wisely!\footnote{Besides letters and digits, most unicode text fonts should contain diacritics, delimiters, and the basic math characters in the keyword |symbols|. Text fonts will often contain square root and basic operator symbols, but they may not be suitable for math typesetting. Greek characters are hit or miss, and it is unusual for English text fonts to contain Cyrillic, Hebrew, ancient Greek, arrows, letterlike characters, or any extended (keywords |extbigops| and |extsymbols|) set of symbols. After you load \textsf{mathfont}, \TeX\ will print a message to the terminal if you try to typeset a missing character from some font.} This document shows ancient Greek in Crimson, Hebrew in Coelacanth, and all other math characters in STIXGeneral.
\begin{figure}[t]
\centerline{\bfseries Table 1: Characters Defined by Multiple Keywords\strut}
@@ -5737,6 +6270,10 @@
\blockheader{arrows}{Arrow}
\begin{multicols}{2}
+ \def\hook{\footnote{Both \vrb\relbar\space and \vrb\Relbar\space are helper macros that certain packages use to elongate various horizontal arrows.}}
+\charexample\relbar
+ \let\hook\relax
+\charexample\Relbar
\charexample\rightarrow
\charexample\to
\charexample\nrightarrow
@@ -6039,7 +6576,6 @@
\setfont{Cormorant:-liga}
\RuleThicknessFactor{600}
\DeclareMathSymbol{\nabla}{\mathord}{Mupright0}{"2207}
-\DeclareMathSymbol{\nabla}{\mathord}{Mupright0}{"2207}
\parindent=0pt\relax
\begin{document}
@@ -6194,8 +6730,8 @@
\setfont{Typey}
\mathfont[]{STIXGeneral}
-\DeclareSymbolFont{Mroman2}{TU}{STIXGeneral}{m}{n}
-\DeclareMathSymbol{\otimes}{\mathbin}{Mroman2}{"2297}
+\DeclareSymbolFont{stix}{TU}{STIXGeneral}{m}{n}
+\DeclareMathSymbol{\otimes}{\mathbin}{stix}{"2297}
\RuleThicknessFactor{1300}
\SurdHorizontalFactor{860}
\parindent=0pt\relax
@@ -6222,13 +6758,17 @@
\makeatletter
% package date and edition
-\def\packagedate{September 2023}
-\def\packageversion{2.3}
+\def\packagedate{April 2025}
+\def\packageversion{2.4}
% header and footer commands
-
\let\@@section\section
-\def\section{\@ifstar\star at sect\no at star@sect}
+\def\section{%
+ \vskip0.6in\relax
+ \kern\z@
+ \vskip-0.6in\relax
+ \vskip\z@
+ \@ifstar\star at sect\no at star@sect}
\def\star at sect#1{\@@section*{#1}\section at name{#1}}
\def\no at star@sect#1{\@@section{#1}\section at name{#1}}
\def\section at name#1{\expandafter
@@ -6235,14 +6775,19 @@
\def\csname section@\thesection\endcsname{#1}}
\def\sectionname{\csname section@\thesection\endcsname}
-\def\@oddhead{\ifnum\count0>1\relax
- \rlap{\textit{\sectionname}}\hfil
- \hbox to 0pt{\hss\documentname\hss}\hfil
- \llap{\the\count0}\fi}
-\def\@evenhead{\ifnum\count0>1\relax
- \rlap{\the\count0}\hfil
- \hbox to 0pt{\hss\documentname\hss}\hfil
- \llap{\textit{\sectionname}}\fi}
+\def\@oddhead{\ifnum\c at page>\@ne
+ \ifodd\c at page
+ \rlap{\textit{\sectionname}}\hfil
+ \hbox to 0pt{\hss\documentname\hss}\hfil
+ \llap{\the\c at page}\relax
+ \else
+ \rlap{\the\c at page}\hfil
+ \hb at xt@\z@{\hss\documentname\hss}\hfil
+ \llap{\textit{\sectionname}}\relax
+ \fi
+ \else
+ \hfil
+ \fi}
\def\@oddfoot{\hfil\ifnum\count0=1\relax1\fi\hfil}
\let\@evenfoot\@empty
@@ -6256,19 +6801,20 @@
\finalhyphendemerits=300
\doublehyphendemerits=500
+\flushbottom
+
% general macros
-\protected\def\XeTeX{X\kern-0.1em
- \raise-0.5ex\hbox{\rotatebox[origin=c]{180}{E}}\kern-0.15em
+\protected\def\XeTeX{X\kern-0.125em
+ \raise-0.5ex\hbox{\reflectbox{E}}\kern-0.1667em
\TeX}
-\protected\def\XeLaTeX{X\kern-0.1em
- \raise-0.5ex\hbox{\rotatebox[origin=c]{180}{E}}\kern-0.13em
+\protected\def\XeLaTeX{X\kern-0.125em
+ \raise-0.5ex\hbox{\reflectbox{E}}\kern-0.125em
\LaTeX}
\bgroup
- \count@\catcode`\|
\catcode`\|=12\relax
\gdef\indexpage#1{\index{#1|usage}}
\egroup
-\protected\def\usage#1{\textit{#1}}
+\protected\def\usage#1{\textit{p.~#1}}
\bgroup
\catcode`\_=12
\protected\gdef\fontspeccommand{\texttt{\string\fontspec_set_family:Nnn}}
@@ -6316,7 +6862,7 @@
% title information
{\large\parindent=0pt\leftskip=0pt plus 1 fil\rightskip=0pt plus 1fil\parfillskip=0pt
-{\strut\Large Package \textsf{mathfont} v.\ \packageversion\ \documentname\let\thefootnote\relax\footnote{Acknowledgements: Thanks to Lyric Bingham for her work checking my unicode hex values. Thanks to Shyam Sundar, Adrian Vollmer, Herbert Voss, and Andreas Zidak for pointing out bugs in previous versions of \textsf{mathfont}. Thanks to Jean-Fran\c cois Burnol for pointing out an error in the documentation in reference to his \textsf{mathastext} package.}\global\advance\c at footnote\m at ne}\par
+{\strut\Large Package \textsf{mathfont} v.\ \packageversion\ \documentname\let\thefootnote\relax\footnote{Acknowledgements: Thanks to Lyric Bingham for her work checking my unicode hex values. Thanks to Daniel Flipo, Shyam Sundar, Adrian Vollmer, Herbert Voss, and Andreas Zidak for pointing out bugs in previous versions of \textsf{mathfont}. Thanks to Jean-Fran\c cois Burnol for pointing out an error in the documentation in reference to his \textsf{mathastext} package.}\global\advance\c at footnote\m at ne}\par
{\strut Conrad Kosowsky}\par
{\strut\packagedate}\par
{\strut\ttfamily kosowsky.latex at gmail.com}\par}
@@ -6324,10 +6870,10 @@
\bigskip
\ifnum\showabstract=1\relax
+
% off-the-shelf insert
-
\hrule height \p@\hbox{\vrule width \p@\kern-\p@\relax\vbox{\medskip
-{\leftskip=1.4in\rightskip=1.4in
+{\leftskip=0.8in\rightskip=0.8in
\noindent\strut For easy, off-the-shelf use, type the following in your preamble and compile with \XeLaTeX\ or Lua\LaTeX:\par
\medskip
\vbox{\noindent\hfil{|\usepackage[|\meta{font name}|]{mathfont}|}\hfil}
@@ -6338,12 +6884,11 @@
\bigskip
{\small
+\leftskip=0.5in\relax
+\rightskip=0.5in\relax
+% abstract
\centerline{\bfseries Overview\strut}
-\smallskip
-
-\leftskip=0.5in\relax
-\rightskip=0.5in\relax
\noindent The \textsf{mathfont} package adapts unicode text fonts for math mode. The package allows the user to specify a default unicode font for different classes of math symbols, and it provides tools to change the font locally for math alphabet characters. When typesetting with Lua\TeX, \textsf{mathfont} adds resizable delimiters, big operators, and a MathConstants table to text fonts.\par}
\bigskip\bigskip\nointerlineskip
@@ -6364,6 +6909,8 @@
\MacrocodeTopsep=2.5pt plus 3pt minus 1pt
\def\@defname{def}
\def\@edefname{edef}
+\def\@gdefname{gdef}
+\def\@xdefname{xdef}
\def\@letname{let}
\let\main\textbf
@@ -6375,6 +6922,29 @@
\index at nomainlist\expandafter{\the\index at nomainlist#1,}}
% the patch
+\reversemarginpar
+\@mparswitchfalse
+\marginparsep=0.5em
+\newbox\@tempboxb
+\newbox\macrobox
+\marginparwidth=\dimexpr1.5in-2\marginparsep\relax
+
+% macro to put macros in the margin
+% we need to \let\par\relax because \marginpar
+% contains a transition to h mode and back to v
+% mode that will mess up our code line numbering
+\def\marginmacro#1\@nil{\begingroup\footnotesize
+ \setbox\macrobox\vbox{}\relax
+ \setbox\@tempboxa\hbox{\@backslashchar}\relax
+ \@tfor\@i:=#1\do
+ {\setbox\@tempboxb\hbox{\@i}\relax
+ \ifdim\dimexpr\wd\@tempboxa+\wd\@tempboxb\relax
+ <\marginparwidth
+ \setbox\@tempboxa\hbox{\unhbox\@tempboxa\unhbox\@tempboxb}\else
+ \@break at tfor\fi}\relax
+ \let\par\relax
+ \marginpar{\hb at xt@\marginparwidth{\hfil\unhbox\@tempboxa}}\endgroup}
+
\def\macro at finish{\macro at namepart
\if at def
\@deffalse
@@ -6387,6 +6957,7 @@
\@tempa
\else
\edef\@tempa{\noexpand\SpecialMainIndex{\bslash\macro at namepart}}\relax
+ \expandafter\marginmacro\macro at namepart\@nil
\@tempa
\fi
\fi
@@ -6399,6 +6970,14 @@
\else
\ifx\macro at namepart\@letname
\@deftrue
+ \else
+ \ifx\macro at namepart\@gdefname
+ \@deftrue
+ \else
+ \ifx\macro at namepart\@xdefname
+ \@deftrue
+ \fi
+ \fi
\fi
\fi
\fi
Modified: trunk/Master/texmf-dist/tex/latex/mathfont/mathfont.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/mathfont/mathfont.sty 2025-04-03 23:44:14 UTC (rev 74845)
+++ trunk/Master/texmf-dist/tex/latex/mathfont/mathfont.sty 2025-04-04 20:57:38 UTC (rev 74846)
@@ -6,12 +6,12 @@
%%
%% 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
+%% This file is from version 2.4 of the free and open-source
+%% LaTeX package "mathfont," released April 2025, to be used
%% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
%% is recommended.)
%%
-%% Copyright 2018-2023 by Conrad Kosowsky
+%% Copyright 2018-2023, 2025 Conrad Kosowsky
%%
%% This Work may be used, distributed, and modified under the
%% terms of the LaTeX Public Project License, version 1.3c or
@@ -60,7 +60,8 @@
%% For more information, see mathfont_code.dtx. Happy TeXing!
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{mathfont}[2023/09/09 v. 2.3 Package mathfont]
+\ProvidesPackage{mathfont}[2025/04/03 v. 2.4 Package mathfont]
+\def\@mathfontinfo#1{\wlog{Package mathfont Info: #1}}
\newif\ifM at XeTeXLuaTeX % is engine one of xetex or luatex?
\newif\ifM at Noluaotfload % cannot find luaotfload.sty?
\newif\ifM at adjust@font % should adjust fonts with lua script?
@@ -81,33 +82,30 @@
\SurdHorizontalFactor
\CharmLine
\CharmFile\do{%
- \edef\@tempa{\protected\def\expandafter\noexpand\@i}%
- \edef\@tempb{\noexpand\M at NoMathfontError
- \expandafter\noexpand\@i
- \noexpand\@gobble}%
- \expandafter\@tempa\expandafter{\@tempb}}
+ \edef\@tempa{\protected\def\expandafter\noexpand\@i{%
+ \noexpand\M at NoMathfontError\expandafter\noexpand\@i
+ \noexpand\@gobble}}
+ \@tempa}
\@tfor\@i:=\newmathrm
\newmathit
\newmathbf
\newmathbfit
- \newmathbold
- \newmathboldit
\newmathsc
\newmathscit
\newmathbfsc
\newmathbfscit\do{%
- \edef\@tempa{\protected\def\expandafter\noexpand\@i}%
- \edef\@tempb{\noexpand\M at 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 at NoMathfontError
- \expandafter\noexpand\@i
- \noexpand\@ifnextchar[{\noexpand\expandafter
- \noexpand\@gobble\noexpand\@gobble at brackets}{\noexpand\@gobble}}
- \expandafter\@tempa\expandafter{\@tempb}}
+ \edef\@tempa{\protected\def\expandafter\noexpand\@i{%
+ \noexpand\M at NoMathfontError\expandafter\noexpand\@i
+ \noexpand\@gobbletwo}}
+ \@tempa}
+\protected\def\mathfont{%
+ \M at NoMathfontError\mathfont
+ \@ifnextchar[{\expandafter\@gobble\expandafter\@gobble at brackets}
+ {\@gobble}}
+\protected\def\mathconstantsfont{%
+ \M at NoMathfontError\mathconstantsfont
+ \@ifnextchar[{\expandafter\@gobble\expandafter\@gobble at brackets}
+ {\@gobble}}
\protected\def\newmathfontcommand{%
\M at NoMathfontError\newmathfontcommand\@gobblefour}
\ifdefined\directlua
@@ -142,13 +140,15 @@
document with one of those two engines.^^J}}%
\expandafter\endgroup
\M at XeTeXLuaTeXError
- \AtEndOfPackage{\typeout{:: mathfont :: Failed to load\on at line.}}
- \expandafter\endinput % we should \endinput with a balanced conditional
+ \AtEndOfPackage{%
+ \typeout{:: mathfont :: Failed to load\on at line.}}
+ \expandafter\endinput % we \endinput with a balanced conditional
\fi
\ifdefined\directlua
\M at adjust@fonttrue % if engine is LuaTeX, adjust font by default
\IfFileExists{luaotfload.sty}
- {\M at Noluaotfloadfalse\RequirePackage{luaotfload}}{\M at Noluaotfloadtrue}
+ {\M at Noluaotfloadfalse\RequirePackage{luaotfload}}
+ {\M at Noluaotfloadtrue}
\else
\AtEndOfPackage{\PackageWarningNoLine{mathfont}{%
The current engine is XeTeX, but as\MessageBreak
@@ -157,7 +157,7 @@
LuaLaTeX. Certain features will not\MessageBreak
work with XeTeX}}
\fi
-\ifM at Noluaotfload % false by default; true if LuaTeX AND no luaotfload.sty
+\ifM at Noluaotfload % true if LuaTeX AND no luaotfload.sty
\begingroup
\catcode`\ =12\relax
\def\M at NoluaotfloadError{\GenericError{}%
@@ -189,43 +189,93 @@
by TeX or compile with XeLaTeX.^^J}}%
\expandafter\endgroup
\M at NoluaotfloadError
- \AtEndOfPackage{\typeout{:: mathfont :: Failed to load\on at line.}}
- \expandafter\endinput % we should \endinput with a balanced conditional
+ \AtEndOfPackage{%
+ \typeout{:: mathfont :: Failed to load\on at line.}}
+ \expandafter\endinput % we \endinput with a balanced conditional
\fi
-\def\M at 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 at Optiondeprecated{packages}
- {the macro \string\restoremathinternals}}
-\DeclareOption{operators}{%
- \M at Optiondeprecated{operators}
- {the bigops keyword with \string\mathfont}}
-\DeclareOption{no-operators}{%
- \M at Optiondeprecated{no-operators}
- {the bigops keyword with \string\mathfont}}
\DeclareOption{easter-egg}{%
\ifE at sterEggDecl@red\else
\E at sterEggDecl@redtrue
- \def\EasterEggUpdate{\show\E at sterEggUpd@te}
- \def\E at sterEggUpd@te{Easter Egg Status:^^J^^J%
- Okay, opening your Easter egg.^^J^^J}
+ \newcount\@easter at egg@
+ \def\EasterEggUpdate{\ProcessE at sterEgg\show\E at sterEggUpd@te}
+ \let\ProcessE at sterEgg\relax
+ \edef\E at sterEggUpd@te{Easter Egg Status:^^J^^J%
+ Okay, opening your Easter egg.^^J%
+ Type \string\EasterEggUpdate\space in your^^J%
+ document to see the status.^^J^^J}
\EasterEggUpdate
\def\E at 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}
+ Uh oh. It looks like your Easter^^J%
+ egg flew out the window. I don't^^J%
+ I don't suppose you know the best^^J%
+ kind of bait to lure an egg?^^J^^J}
\EasterEggUpdate
- \def\E at sterEggUpd@te{Easter Egg Status:^^J^^J%
- Still wrangling. Try back later.^^J^^J}
+ \def\ProcessE at sterEgg{%
+ \edef\E at sterEggUpd@te{Easter Egg Status:^^J^^J%
+ \ifodd\@easter at egg@
+ \ifcase\numexpr(\@easter at egg@ - 1) / 2\relax
+ An Easter bunny must be related to a^^J%
+ platypus, no? Some sort of monotreme...%
+ \or
+ Don't count your chickens before they hatch^^J%
+ out of Easter eggs! But we don't have any^^J%
+ chickens right now because there are no eggs,^^J%
+ and the supply chain is sad.%
+ \or
+ Sorry, I'm late to a meeting. Can't talk right now.%
+ \or
+ Sunday, Monday, Tuesday, Wednesday, also^^J%
+ known as hump day, as in camel humps, which^^J%
+ I must say look distinctly egg-like if you^^J%
+ squint.%
+ \or
+ I'm calling Eggs Anonymous!%
+ \or
+ Sorry, I'm on the phone. Can't talk right now.%
+ \or
+ Still haven't found your Easter egg. I know^^J%
+ it's floating around here somewhere. Like an^^J%
+ asteroid in space, hopefully without the^^J%
+ massive extinction event.%
+ \or
+ Did you know eggs are used to make certain^^J%
+ types of vaccines? PSA: get your flu shot^^J%
+ and your covid shot!%
+ \or
+ Three large eggs.^^J%
+ Three large eggs.^^J%
+ See how they crack.^^J%
+ See how they crack.^^J%
+ Their broken shells are so pearly white.^^J%
+ In simmering water they catch the light.^^J%
+ Did you ever see such a sight in your life^^J%
+ As three poached eggs?%
+ \or
+ Do gnus eat eggs? Surely they must.%
+ \or
+ Okay, I have a fishing rod, some twine, and^^J%
+ a hook, but I still haven't caught your Easter^^J%
+ egg. Apparently it's harder to catch an egg^^J%
+ than a fish.%
+ \or
+ Sorry, I'm out fishing. Can't talk right now.%
+ \or
+ Is ghoti really an acceptable phonetic^^J%
+ spelling of fish? I am skeptical.%
+ \or
+ Perhaps an Easter bunny is actually a species^^J%
+ of fish. A rabbit fish.%
+ \else
+ Sorry, I'm all out of witty things to say.^^J%
+ Check back later.%
+ \fi
+ \else
+ Still wrangling. Check back later.%
+ \fi^^J^^J}%
+ \global\advance\@easter at egg@\@ne}
\AtBeginDocument{\bgroup
- \def\E at sterEggUpd@te{Easter Egg Status:^^J^^J:%
+ \let\ProcessE at sterEgg\relax
+ \def\E at sterEggUpd@te{Easter Egg Status:^^J^^J%
If we have zero eggs^^J%
and zero bunnies, how^^J%
many gnats does it take^^J%
@@ -232,13 +282,60 @@
to change a lightbulb??^^J^^J}
\EasterEggUpdate
\egroup}
- \AtEndDocument{%
+ \def\math at E@sterEggUpd at te{\begingroup
+ \let\ProcessE at sterEgg\relax
\def\E at sterEggUpd@te{Easter Egg Status:^^J^^J%
+ Scrambled, poached, or sunny side up?^^J^^J}%
+ \EasterEggUpdate
+ \endgroup
+ \global\let\math at E@sterEggUpd at te\relax}
+ \everymath\expandafter{\the\everymath\math at E@sterEggUpd at te}
+ \AtEndDocument{\let\ProcessE at sterEgg\relax
+ \begingroup
+ \edef\*{\@backslashchar*}
+ \edef\/{\@backslashchar/}
+ \edef\={\@backslashchar=}
+ \catcode`\+=\active
+ \everyeof{\noexpand}
+ \scantokens{\def+{ }}
+ \def\@tempb{^^J}
+ \edef\@tempa{\scantokens{Easter Egg Status:\@tempb\@tempb
+ The egg has been retrieved. What\@tempb
+ pinnacle of pulchritude!\@tempb\@tempb
+ +++++++++++++******\@tempb
+ ++++++++++************\@tempb
+ +++++++******************\@tempb
+ +++++----------------------\@tempb
+ +++**************************\@tempb
+ ++****/\****/\****/\****/\****\@tempb
+ +*****\/****\/****\/****\/*****\@tempb
+ +******************************\@tempb
+ ********************************\@tempb
+ ***/\****/\****/\****/\****/\***\@tempb
+ ***\/****\/****\/****\/****\/***\@tempb
+ ********************************\@tempb
+ ********************************\@tempb
+ ******/\****/\****/\****/\******\@tempb
+ +*****\/****\/****\/****\/*****\@tempb
+ ++****************************\@tempb
+ +++--------------------------\@tempb
+ +++++**********************\@tempb
+ +++++++******************\@tempb
+ +++++++++\============/\@tempb
+ +++++++++++\========/\@tempb
+ ++++++++++++\======/\@tempb
+ +++++++++++++|====|\@tempb
+ ++++++++++++/======\@backslashchar\@tempb
+ +++++++++++(________)\@tempb}}
+ \expandafter\endgroup\expandafter
+ \def\expandafter\E at sterEggUpd@te\expandafter{\@tempa}
+ \EasterEggUpdate
+ \def\E at 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
+ \EasterEggUpdate
\let\E at sterEggUpd@te\relax
\let\EasterEggUpdate\relax}
\fi}% my easter egg :)
@@ -246,48 +343,62 @@
\DeclareOption{fontspec-loader}{\M at loader\@ne}
\DeclareOption{adjust}{\M at adjust@fonttrue}
\DeclareOption{no-adjust}{\M at adjust@fontfalse}
-\DeclareOption*{\M at font@loadedtrue\edef\M at font@load{\CurrentOption}}
+\DeclareOption*{\M at font@loadedtrue
+ \edef\M at font@load{\CurrentOption}}
\ProcessOptions*
\ifcase\M at loader
- \wlog{Package mathfont Info: Default font-loader was
+ \@mathfontinfo{Default font-loader was
requested for font loading.}
\or
- \wlog{Package mathfont Info: Package fontspec was
+ \@mathfontinfo{Package fontspec was
requested for font loading.}
\@ifpackageloaded{fontspec}
- {\wlog{Package mathfont Info: Package fontspec detected.}
+ {\@mathfontinfo{Package fontspec detected.}
\csname bool_if:NTF\expandafter\endcsname
\csname g__fontspec_math_bool\endcsname
- {\wlog{Package mathfont Info: Setting
+ {\@mathfontinfo{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.}
+ {\@mathfontinfo{Package fontspec not detected.}
\IfFileExists{fontspec.sty}
- {\wlog{Package mathfont Info: File fontspec.sty was found.}
- \wlog{Package mathfont Info: Loading fontspec.}
+ {\@mathfontinfo{File fontspec.sty was found.}
+ \@mathfontinfo{Loading fontspec.}
\RequirePackage[no-math]{fontspec}}
- {\PackageError{mathfont}{Missing package fontspec;\MessageBreak
+ {\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
+ {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 at loader\z@}}
\fi
\ifcase\M at loader
- \wlog{Package mathfont Info: Using default font-loader.}
- \AtEndOfPackage{\typeout{:: mathfont :: Using default font-loader.}}
- \def\M at otf@features{script=latin;language=DFLT;+tlig;+liga;+lnum}
+ \@mathfontinfo{Using default font-loader.}
+ \AtEndOfPackage{%
+ \typeout{:: mathfont :: Using default font-loader.}}
+ \def\M at 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.}}
+ \@mathfontinfo{Using fontspec as font-loader.}
+ \AtEndOfPackage{%
+ \typeout{:: mathfont :: Using fontspec as font-loader.}}
\def\M at otf@features{Script=Latin,
Language=Default,
Ligatures={TeX,Common},
@@ -295,13 +406,15 @@
\fi
\ifdefined\directlua
\ifM at adjust@font
- \wlog{Package mathfont Info: Enabling Lua-based font adjustments.}
+ \@mathfontinfo{Enabling Lua-based font adjustments.}
\AtEndOfPackage{%
- \typeout{:: mathfont :: Lua-based font adjustments enabled.}}
+ \typeout{:: mathfont :: Lua-based font adjustments
+ enabled.}}
\else
- \wlog{Package mathfont Info: Disabling Lua-based font adjustments.}
+ \@mathfontinfo{Disabling Lua-based font adjustments.}
\AtEndOfPackage{%
- \typeout{:: mathfont :: Lua-based font adjustments disabled.}}
+ \typeout{:: mathfont :: Lua-based font adjustments
+ disabled.}}
\fi
\else
\ifM at adjust@font
@@ -313,170 +426,221 @@
with LuaLaTeX.^^J}
\M at adjust@fontfalse
\fi
- \wlog{Package mathfont Info: Disabling Lua-based font adjustments.}
+ \@mathfontinfo{Disabling Lua-based font adjustments.}
\AtEndOfPackage{%
\typeout{:: mathfont :: Lua-based font adjustments disabled.}}
\fi
-\def\M at SymbolFontInfo#1#2#3#4{\wlog{^^JPackage mathfont Info:
- Declaring new symbol font from #1!^^J%
+\def\M at SymbolFontInfo#1#2#3#4{\wlog{}%
+ \@mathfontinfo{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 at FontChangeInfo#1#2{\wlog{Package mathfont Info:
- Setting #1 chars to #2!}}
-\def\M at NewFontCommandInfo#1#2#3#4#5{\wlog{^^JPackage mathfont Info:
- Creating \string#1 using #2!^^J%
+\def\M at FontChangeInfo#1#2{\@mathfontinfo{Setting #1 chars to #2!}}
+\def\M at NewFontCommandInfo#1#2#3#4#5{\wlog{}%
+ \@mathfontinfo{Creating \string#1 using #2!^^J%
NFSS Family Name: \space#3^^J%
Series/Shape Info: #4/#5^^J}}
-\def\M at CharsSetWarning#1{\PackageWarning{mathfont}
+\def\M at 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 at MissingNFSSShapesWarning#1#2{\PackageWarning{mathfont}
+\def\M at MissingNFSSShapesWarning#1#2{%
+ \PackageWarning{mathfont}
{The nfss family "#1"\MessageBreak
- from line \the\inputlineno\space is missing shapes. You\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 at NoBaseModeDetectedWarning#1{\PackageWarning{mathfont}
+\def\M at 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
+ 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 at 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 at InvalidOptionError#1{\PackageError{mathfont}
- {Invalid^^Joption "#1" for \string\mathfont\on at line}
- {Hm. You used a keyword that isn't actually an optional\MessageBreak
+\def\M at InvalidOptionError#1{%
+ \PackageError{mathfont}
+ {Invalid^^Joption "#1"
+ for \string\mathfont\on at 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
+ 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 at InvalidSuboptionError#1{\PackageError{mathfont}
- {Invalid^^Jsuboption "#1" for \string\mathfont\on at line}
- {Hm. You used a keyword that isn't actually a suboption\MessageBreak
+\def\M at InvalidSuboptionError#1{%
+ \PackageError{mathfont}
+ {Invalid^^Jsuboption "#1"
+ for \string\mathfont\on at 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
+ 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 at MissingOptionError{\PackageError{mathfont}
- {Missing^^Joption for \string\mathfont\on at line}
- {It looks like you included a , or = in\MessageBreak
- the optional argument of \string\mathfont\space but\MessageBreak
+\def\M at MissingOptionError{%
+ \PackageError{mathfont}
+ {Missing^^Joption for
+ \string\mathfont\on at 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 at MissingSuboptionError{\PackageError{mathfont}
- {Missing^^Jsuboption for \string\mathfont\on at 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
+\def\M at MissingSuboptionError{%
+ \PackageError{mathfont}
+ {Missing^^Jsuboption for
+ \string\mathfont\on at 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 at 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 at BadMathConstantsFontError#1{\PackageError{mathfont}
+\def\M at 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
+ {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 at BadMathConstantsFontTypeError#1{\PackageError{mathfont}
+\def\M at 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
+ {The optional argument of
+ \string\mathconstantsfont\MessageBreak
+ should be "upright" or "italic."
+ Right now,\MessageBreak
it's "#1."^^J}}
-\def\M at MathConstantsNoFontAdjustWarning{\PackageWarning{mathfont}
+\def\M at MathConstantsNoAdjustWarning{%
+ \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
+ 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 at MissingControlSequenceError#1#2{\PackageError{mathfont}
+\def\M at 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 at DoubleArgError#1#2{\PackageError{mathfont}
+ 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 at 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
+ {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 at HModeError#1{\PackageError{mathfont}
+\def\M at 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
+ you used \string#1\space
+ outside of\MessageBreak
math mode. I inserted a \string$
- before your \string#1, so we\MessageBreak
+ before your \string#1,
+ so we\MessageBreak
should be all good now.^^J}}
-\def\M at ForbiddenCharmLine#1{\PackageError{mathfont}
+\def\M at 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
+ 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 at ForbiddenCharmFile#1{\PackageError{mathfont}
+\def\M at ForbiddenCharmFile#1{%
+ \PackageError{mathfont}
{Forbidden charm info contains #1}
- {One of the lines in your \string\CharmFile\space
+ {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
+ 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 at NoFontAdjustError#1{\PackageError{mathfont}
- {Your command \MessageBreak\string#1 is invalid\MessageBreak
+\def\M at 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
+ {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 at BadIntegerError#1#2{\PackageError{mathfont}
+\def\M at 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
+ {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 at mathchar\set at mathchar
\let\@@set at mathsymbol\set at mathsymbol
\let\@@set at mathaccent\set at mathaccent
\let\@@DeclareSymbolFont\DeclareSymbolFont
+\let\@@DeclareSymbolFont at m@dropped\DeclareSymbolFont at m@dropped
\@onlypreamble\@@set at mathchar
\@onlypreamble\@@set at mathsymbol
\@onlypreamble\@@set at mathaccent
\@onlypreamble\@@DeclareSymbolFont
-\wlog{Package mathfont Info: Adapting \noexpand\set at mathchar for unicode.}
-\wlog{Package mathfont Info: Adapting \noexpand\set at mathsymbol for unicode.}
-\wlog{Package mathfont Info: Adapting \noexpand\set at mathaccent for unicode.}
-\wlog{Package mathfont Info: Increasing upper bound on
+\@onlypreamble\@@DeclareSymbolFont at m@dropped
+\@mathfontinfo{Adapting \noexpand\set at mathchar for unicode.}
+\@mathfontinfo{Adapting \noexpand\set at mathsymbol for unicode.}
+\@mathfontinfo{Adapting \noexpand\set at mathaccent for unicode.}
+\@mathfontinfo{Increasing upper bound on
\noexpand\DeclareSymbolFont to 256.}
\def\set at mathchar#1#2#3#4{%
\multiply\count\z@ by 16\relax
@@ -492,21 +656,24 @@
\protected\xdef#2{%
\Umathaccent\mathchar at type#3+\number#1+\the\count\z@\relax}}
\ifx\DeclareSymbolFont at m@dropped\@undefined
- \edef\@tempa{\expandafter\strip at prefix\meaning\DeclareSymbolFont}
+ \edef\@tempa{\expandafter
+ \strip at prefix\meaning\DeclareSymbolFont}
\def\@tempb{\def\DeclareSymbolFont##1##2##3##4##5}
\else
- \edef\@tempa{\expandafter\strip at prefix\meaning\DeclareSymbolFont at m@dropped}
+ \edef\@tempa{\expandafter
+ \strip at prefix\meaning\DeclareSymbolFont at m@dropped}
\def\@tempb{\def\DeclareSymbolFont at m@dropped##1##2##3##4##5}
\fi
\def\M at p@tch at decl@re#1<15#2\@nil{#1<\e at mathgroup@top#2}
\edef\M at DecSymDef{\expandafter\M at p@tch at decl@re\@tempa\@nil}
\ifdefined\directlua
- \expandafter\@tempb\expandafter{\scantextokens\expandafter{\M at DecSymDef}}
+ \expandafter\@tempb\expandafter{\scantextokens
+ \expandafter{\M at DecSymDef}}
\else
\begingroup
\everyeof{\noexpand}
- \endlinechar\m at ne
- \edef\M at retokenize{\noexpand\scantokens{\noexpand\unexpanded{\M at DecSymDef}}}
+ \edef\M at retokenize{\noexpand\scantokens
+ {\noexpand\unexpanded{\M at DecSymDef}}}
\edef\M at retokenize{\M at retokenize}
\expandafter\endgroup
\expandafter\@tempb\expandafter{\M at retokenize}
@@ -513,6 +680,7 @@
\fi
\newbox\surdbox
\newcount\M at count
+\newcount\M at num@localfonts
\newcount\M at RuleThicknessFactor
\newcount\M at IntegralItalicFactor
\newcount\M at SurdVerticalFactor
@@ -526,6 +694,7 @@
\M at SurdHorizontalFactor\@m
\M at SurdVerticalFactor\@m
\radicandoffset=3mu\relax
+\let\M at localfonts\@empty
\newif\ifM at upper
\newif\ifM at lower
\newif\ifM at diacritics
@@ -616,7 +785,8 @@
\edef\@tempb{\@tempb, \@i}
\fi}
\@tempwarning{\expandafter\@gobble\@tempb}}
-\def\M at split@colon#1:#2\@nil{\def\@tempbase{#1}
+\def\M at split@colon#1:#2\@nil{%
+ \def\@tempbase{#1}
\def\@tempfeatures{#2}}
\def\M at strip@colon#1:{#1}
\def\M at newfont#1{%
@@ -625,65 +795,75 @@
\ifx\@tempfeatures\@empty\else
\edef\@tempfeatures{\expandafter\M at strip@colon\@tempfeatures}
\fi
- \ifcsname TU+\@tempbase\endcsname % is font family already in nfss?
+ \ifcsname TU+\@tempbase\endcsname % is font family in the nfss?
\let\M at f@ntn at me\@tempbase
\M at check@nfss at shapes\M at f@ntn at me
\ifx\directlua\@undefined % if XeTeX
- \expandafter\edef\csname\M at f@ntn at me-base\endcsname{\M at f@ntn at me}
+ \expandafter\edef
+ \csname\M at f@ntn at me-base\endcsname{\M at f@ntn at me}
\let\M at f@ntn at meb@se\M at f@ntn at me
\else % if LuaTeX
- \ifcsname\M at f@ntn at me-base\endcsname % if base-mode version is known
- \edef\M at f@ntn at meb@se{\csname\M at f@ntn at me-base\endcsname}
+ \ifcsname\M at f@ntn at me-base\endcsname % if base-mode version
+ \edef\M at f@ntn at meb@se
+ {\csname\M at f@ntn at me-base\endcsname}
\M at check@nfss at shapes\M at f@ntn at meb@se
\else
\M at NoBaseModeDetectedWarning{\M at f@ntn at me}
\edef\M at f@ntn at meb@se{\M at f@ntn at me}
- \expandafter\edef\csname\M at f@ntn at me-base\endcsname{\M at f@ntn at me}
+ \expandafter\edef
+ \csname\M at f@ntn at me-base\endcsname{\M at f@ntn at me}
\fi
\fi
- \expandafter\edef\csname M at fontfamily@\@tempbase\endcsname
+ \expandafter\edef
+ \csname M at fontfamily@\@tempbase\endcsname
{\M at f@ntn at me}
- \expandafter\edef\csname M at fontfamily@base@\@tempbase\endcsname
+ \expandafter\edef
+ \csname M at fontfamily@base@\@tempbase\endcsname
{\M at f@ntn at meb@se}
\else
\edef at nospace\@tempa{\@tempa}
\ifcsname M at fontfamily@\@tempa\endcsname
\edef\M at f@ntn at me{\csname M at fontfamily@\@tempa\endcsname}
- \edef\M at f@ntn at meb@se{\csname M at fontfamily@base@\@tempa\endcsname}
+ \edef\M at f@ntn at meb@se
+ {\csname M at fontfamily@base@\@tempa\endcsname}
\else
\edef at nospace\@tempa{\@tempa}
\ifcase\M at loader % are we using default font-loader?
\let\M at f@ntn at me\@tempa
- \wlog{Package mathfont Info: Adding \@tempbase\space to the nfss!}
+ \@mathfontinfo{^^JAdding \@tempbase\space
+ to the nfss!}
\wlog{Family name: \M at f@ntn at me}
\DeclareFontFamily{TU}{\M at f@ntn at me}{}
- \M at fill@nfss at shapes{\M at f@ntn at me}{\M at otf@features}{\@tempfeatures}
+ \M at fill@nfss at shapes{\M at f@ntn at me}{\M at otf@features}
+ {\@tempfeatures}
\ifdefined\directlua
\edef\M at f@ntn at meb@se{\M at f@ntn at me-base}
- \wlog{Package mathfont Info: Adding \@tempbase with mode=base
+ \@mathfontinfo{Adding \@tempbase\space with mode=base
to the nfss!}
\wlog{Family name: \M at f@ntn at meb@se}
\DeclareFontFamily{TU}{\M at f@ntn at meb@se}{}
- \M at fill@nfss at shapes
- {\M at f@ntn at meb@se}{\M at otf@features}{\@tempfeatures;mode=base}
+ \M at fill@nfss at shapes{\M at f@ntn at meb@se}{\M at otf@features}
+ {\@tempfeatures;mode=base}
\else
\edef\M at f@ntn at meb@se{\M at f@ntn at me}
\fi
\or % are we using fontspec as font-loader?
- \wlog{Package mathfont Info: Passing \@tempbase\space to fontspec
- for handling!}
+ \@mathfontinfo{^^JPassing \@tempbase\space
+ to fontspec for handling!}
\csname fontspec_set_family:Nnn\endcsname\M at f@ntn at me
{\M at otf@features,\@tempfeatures}{\@tempbase}
\ifdefined\directlua
- \wlog{Package mathfont Info: Passing \@tempbase\space with
- Renderer=Base to fontspec for handling!}
+ \@mathfontinfo{Passing \@tempbase\space
+ with Renderer=Base to fontspec for handling!}
\csname fontspec_set_family:Nnn\endcsname\M at f@ntn at meb@se
- {\M at otf@features,\@tempfeatures,Renderer=Base}{\@tempbase}
+ {\M at otf@features,\@tempfeatures,Renderer=Base}
+ {\@tempbase}
\else
\edef\M at f@ntn at meb@se{\M at f@ntn at me}
\fi
\fi
- \expandafter\edef\csname\M at f@ntn at me-base\endcsname{\M at f@ntn at meb@se}
+ \expandafter\edef\csname\M at f@ntn at me-base\endcsname
+ {\M at f@ntn at meb@se}
\expandafter\edef\csname M at fontfamily@\@tempa\endcsname
{\M at f@ntn at me}
\expandafter\edef\csname M at fontfamily@base@\@tempa\endcsname
@@ -733,7 +913,7 @@
\ifx\@temp at sub\@empty
\else
\edef\@temp at sub{\expandafter\M at strip@equals\@temp at sub}
- \M at check@suboption at valid\@temp at sub % check that suboption is valid
+ \M at check@suboption at valid\@temp at sub % is suboption legit?
\fi
\fi
\bgroup\def\@tempa{roman}
@@ -747,66 +927,74 @@
\long\def\edef at nospace#1#2{%
\edef#1{#2}%
\edef#1{\expandafter\zap at space#1 \@empty}}
-\protected\def\mathfont{\@ifnextchar[{\@mathfont}{\@mathfont[\M at defaultkeys]}}
+\protected\def\mathfont{\@testopt{\@mathfont}{\M at defaultkeys}}
\def\@mathfont[#1]#2{%
- \ifx\set at mathchar\@@set at mathchar
- \M at InternalsRestoredError
+ \M at toks{}
+ \M at newfont{#2}
+ \ifcsname M at fontid@\M at f@ntn at me\endcsname % need new \M at count?
\else
- \M at toks{}
- \M at newfont{#2}
- \ifcsname M at fontid@\M at f@ntn at me\endcsname\else % need new \M at count value?
- \expandafter\edef\csname M at fontid@\M at f@ntn at me\endcsname{\the
- \M at count}
- \expandafter\edef\csname M at fontid@\M at f@ntn at meb@se\endcsname{\the
- \M at count}
- \advance\M at count\@ne
- \fi
- \edef\@tempa{\csname M at fontid@\M at f@ntn at me\endcsname}
- \edef at nospace\@tempb{#1}
- \@for\@i:=\@tempb\do{\expandafter\M at parse@option\@i=\@nil
- \if at optionpresent
- \expandafter\ifx % next line is two cs to be compared
- \csname ifM@\@temp at opt\expandafter\endcsname\csname iftrue\endcsname
- \M at CharsSetWarning{\@temp at opt}
+ \expandafter\edef
+ \csname M at fontid@\M at f@ntn at me\endcsname{\the\M at count}
+ \expandafter\edef
+ \csname M at fontid@\M at f@ntn at meb@se\endcsname{\the\M at count}
+ \advance\M at count\@ne
+ \fi
+ \edef\@tempa{\csname M at fontid@\M at f@ntn at me\endcsname}
+ \edef at nospace\@tempb{#1}
+ \@for\@i:=\@tempb\do{\expandafter\M at parse@option\@i=\@nil
+ \if at optionpresent
+ \expandafter\ifx % next lines are two cs to be compared
+ \csname ifM@\@temp at opt\expandafter\endcsname
+ \csname iftrue\endcsname
+ \M at CharsSetWarning{\@temp at opt}
+ \else
+ \edef\@tempc{\the\M at toks^^J\@temp at opt}
+ \M at toks\expandafter{\@tempc}
+ \if at suboptionpresent
+ \expandafter\edef
+ \csname M@\@temp at opt shape\endcsname{\@temp at sub}
+ \fi
+ \edef\@tempc{\the\M at toks\space
+ (\csname M@\@temp at opt shape\endcsname)}
+ \M at toks\expandafter{\@tempc}
+ \edef\@tempc{\csname M@\@temp at opt shape\endcsname}
+ \def\@tempb{upright}
+ \ifx\@tempb\@tempc
+ \let\@tempb\shapedefault
\else
- \edef\@tempc{\the\M at toks^^J\@temp at opt}
- \M at toks\expandafter{\@tempc}
- \if at suboptionpresent
- \expandafter\edef\csname M@\@temp at opt shape\endcsname{\@temp at sub}
- \fi
- \edef\@tempc{\the\M at toks\space
- (\csname M@\@temp at opt shape\endcsname)}
- \M at toks\expandafter{\@tempc}
- \edef\@tempc{\csname M@\@temp at opt shape\endcsname}
- \def\@tempb{upright}
- \ifx\@tempb\@tempc
- \let\@tempb\shapedefault
- \else
- \let\@tempb\itdefault
- \fi
- \ifcsname symM\@tempc\@tempa\endcsname\else
- \M at SymbolFontInfo{\@tempbase}{\M at f@ntn at meb@se}
- {\mddefault/\@tempb}{M\@tempc\@tempa}
- \DeclareSymbolFont
- {M\@tempc\@tempa}{TU}{\M at f@ntn at meb@se}{\mddefault}{\@tempb}
- \fi
- \expandafter
- \edef\csname M@\@temp at opt @fontinfo\endcsname{\@tempbase}
- \M at FontChangeInfo{\@temp at opt}{\@tempbase}
- \csname M@\@temp at opt @set\endcsname % set default font
- \csname M@\@temp at opt true\endcsname % set switch to true
+ \let\@tempb\itdefault
\fi
- \fi}
- \edef\@tempa{\the\M at 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 at toks}
- \fi
+ \ifcsname symM\@tempc\@tempa\endcsname\else
+ \M at SymbolFontInfo{\@tempbase}{\M at f@ntn at meb@se}
+ {\mddefault/\@tempb}{M\@tempc\@tempa}
+ \DeclareSymbolFont{M\@tempc\@tempa}{TU}
+ {\M at f@ntn at meb@se}{\mddefault}{\@tempb}
+ \fi
+ \expandafter\edef
+ \csname M@\@temp at opt @fontinfo\endcsname{\@tempbase}
+ \M at FontChangeInfo{\@temp at opt}{\@tempbase}
+ \@tfor\@j:={bb}{cal}{frak}{bcal}{bfrak}\do{%
+ \ifx\@temp at opt\@j
+ \@expandtwoargs\M at addto@localfonts
+ {\expandafter\string
+ \csname math\@temp at opt\endcsname}
+ {\@tempbase}
+ \@break at tfor
+ \fi}
+ \csname M@\@temp at opt @set\endcsname % set default font
+ \csname M@\@temp at opt true\endcsname % set switch to true
+ \fi
+ \fi}
+ \edef\@tempa{\the\M at 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 at toks}
\fi}
\@onlypreamble\mathfont
\@onlypreamble\m at thf@nt
@@ -819,7 +1007,7 @@
\@onlypreamble\setfont
\let\M at SetMathConstants\relax
\protected\def\mathconstantsfont{%
- \@ifnextchar[{\@mathconstantsfont}{\@mathconstantsfont[upright]}}
+ \@testopt{\@mathconstantsfont}{upright}}
\def\@mathconstantsfont[#1]#2{%
\edef at nospace\@tempa{#2}
\edef\@tempa{\csname M at fontfamily@base@\@tempa\endcsname}
@@ -838,7 +1026,8 @@
\M at BadMathConstantsFontTypeError{#1}
\fi
\fi
- \ifcsname symM#1\csname M at fontid@\@tempa\endcsname\endcsname\else
+ \ifcsname symM#1\csname M at fontid@\@tempa\endcsname\endcsname
+ \else
\DeclareSymbolFont{M#1\csname M at fontid@\@tempa\endcsname}
{TU}{\@tempa}{\mddefault}{\m at th@const at nts@font at sh@pe}
\fi
@@ -847,7 +1036,8 @@
\begingroup
\escapechar\m at ne
\expandafter\getanddefine at fonts
- \csname symM#1\csname M at fontid@\m at th@const at nts@font\endcsname
+ \csname symM#1%
+ \csname M at fontid@\m at th@const at nts@font\endcsname
\expandafter
\endcsname % expands to \symMupright<id>
\csname TU/\m at th@const at nts@font
@@ -855,11 +1045,11 @@
/\m at th@const at nts@font at sh@pe
\endcsname % expands to \TU/<nfss family name>/m/<shape>
\globaldefs\@ne
- \expandafter\@gobbletwo\math at fonts % gobble to avoid infinite loop
+ \expandafter\@gobbletwo\math at fonts % avoid infinite loop
\endgroup}
\fi
\ifM at adjust@font\else
- \M at MathConstantsNoFontAdjustWarning
+ \M at MathConstantsNoAdjustWarning
\fi}
\def\math at fonts{\aftergroup\M at SetMathConstants}
\@onlypreamble\mathconstantsfont
@@ -875,6 +1065,24 @@
\M at DoubleArgError#1{#2}
\M at arg@goodfalse
\fi}
+\def\M at checkspecials#1#2{%
+ \in@#1{\mathbb\mathcal\mathfrak\mathbcal\mathbfrak}
+ \ifin@
+ \begingroup
+ \escapechar\m at ne
+ \expandafter
+ \endgroup
+ \expandafter\edef\expandafter\@tempa\expandafter{%
+ \expandafter\@gobblefour\string#1}
+ \@mathfontinfo{Interpreting your new macro \string#1\space
+ as \@tempa\space chars.}
+ \@mathfontinfo{Setting \expandafter\string
+ \csname ifM@\@tempa\endcsname\space to true.}
+ \csname M@\@tempa true\endcsname
+ \expandafter\edef\csname M@\@tempa @fontinfo\endcsname{#2}
+ \expandafter\edef\csname M@\@tempa shape\endcsname
+ \space shape{inferred from \string#1}
+ \fi}
\protected\def\newmathfontcommand#1#2#3#4{%
\M at check@csarg\newmathfontcommand{#1}
\ifM at arg@good
@@ -881,8 +1089,26 @@
\M at newfont{#2}
\M at NewFontCommandInfo{#1}{\@tempbase}{\M at f@ntn at meb@se}{#3}{#4}
\DeclareMathAlphabet{#1}{TU}{\M at f@ntn at meb@se}{#3}{#4}
+ \M at checkspecials{#1}{\@tempbase}
+ \M at addto@localfonts{\string#1}{\@tempbase}
\fi}
\@onlypreamble\newmathfontcommand
+\def\M at addto@localfonts#1#2{%
+ \ifx\M at localfonts\@empty
+ \advance\M at num@localfonts\@ne
+ \edef\M at localfonts{{#1}{#2}}
+ \else
+ \@tempswatrue % increase by default
+ \@for\@j:=\M at localfonts\do{%
+ \edef\@tempb{\expandafter\@secondoftwo\@j}
+ \ifx\@tempbase\@tempb
+ \@tempswafalse % if \@tempbase is in list, don't add
+ \fi}
+ \if at tempswa
+ \advance\M at num@localfonts\@ne
+ \fi
+ \edef\M at localfonts{\M at localfonts,{#1}{#2}}
+ \fi}
\def\M at define@newmath at cmd#1#2#3{%
\protected\def#1##1##2{%
\M at check@csarg{#1}{##1}
@@ -896,7 +1122,8 @@
\newmathscit{\mddefault}{\scdefault\itdefault},%
\newmathbfsc{\bfdefault}{\scdefault},%
\newmathbfscit{\bfdefault}{\scdefault\itdefault}}
-\@for\@i:=\M at default@newmath at cmds\do{\expandafter\M at define@newmath at cmd\@i}
+\@for\@i:=\M at default@newmath at cmds\do{%
+ \expandafter\M at define@newmath at cmd\@i}
\@onlypreamble\newmathrm
\@onlypreamble\newmathit
\@onlypreamble\newmathbf
@@ -917,41 +1144,15 @@
\newmathbfsc\mathbfsc{#1}
\newmathbfscit\mathbfscit{#1}}
\@onlypreamble\setmathfontcommands
-\protected\def\newmathbold{%
- \M at DeprecatedWarning\newmathbold\newmathbf\newmathbf}
-\protected\def\newmathboldit{%
- \M at DeprecatedWarning\newmathboldit\newmathbfit\newmathbfit}
\ifM at adjust@font
\def\M at check@int#1{%
- \M at 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
+ \def\@tempa##1\relax{\def\@tempb{##1}}
+ \afterassignment\@tempa\count@=0#1\relax
+ \expandafter\ifx\expandafter\@nnil\@tempb\@nnil
+ \M at arg@goodtrue
\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 at arg@goodtrue%
- \@backslashchar\@backslashchar endcsname")
- end}
- \fi
- \fi}
+ \M at arg@goodfalse
+ \fi}
\let\@tempa~
\let~\noexpand
\count@\escapechar
@@ -961,8 +1162,10 @@
\protected\expandafter\edef\@i#1{%
~\M at check@int{#1}%
~\ifM at arg@good
- ~\global
- \expandafter~\csname M@\expandafter\string\@i\endcsname=#1\relax
+ ~\global\expandafter
+ ~\csname
+ M@\expandafter\string\@i
+ \endcsname=#1\relax
~\else
~\M at BadIntegerError\expandafter~\@i{#1}%
~\fi}}
@@ -969,11 +1172,11 @@
\let~\@tempa
\escapechar\count@
\else
- \@tfor\@i:=\RuleThicknessFactor\IntegralItalicFactor\SurdHorizontalFactor
- \SurdVerticalFactor\CharmLine\CharmFile
+ \@tfor\@i:=\RuleThicknessFactor\IntegralItalicFactor
+ \SurdHorizontalFactor\SurdVerticalFactor\CharmLine\CharmFile
\do{%
- \protected\expandafter\edef\@i{\noexpand\M at NoFontAdjustError
- \expandafter\noexpand\@i
+ \protected\expandafter\edef\@i{%
+ \noexpand\M at NoFontAdjustError\expandafter\noexpand\@i
\noexpand\@gobble}}
\fi
\@onlypreamble\RuleThicknessFactor
@@ -982,48 +1185,147 @@
\@onlypreamble\SurdVerticalFactor
\@onlypreamble\CharmLine
\@onlypreamble\CharmFile
-\def\restoremathinternals{%
- \ifx\set at mathchar\@@set at mathchar
+\protected\gdef\clap#1{\hb at xt@\z@{\hss#1\hss}}
+\protected\def\stack at flatrel#1#2{\expandafter
+ \st at ck@fl at trel\expandafter#1\@firstofone#2}
+\protected\gdef\st at ck@fl at trel#1#2#3{%
+ {\setbox0\hbox{$\m at th#1#2$}% contains \mathrel symbol
+ \setbox1\hbox{$\m at th#1#3$}% gets raised over \box0
+ \if\wd0>\wd1\relax
+ \hb at xt@\wd0{%
+ \hfil
+ \clap{\raise0.7\ht0\box1}%
+ \clap{\box0}\hfil}%
\else
- \wlog{Package mathfont Info: Restoring \string\set at mathchar.}
- \wlog{Package mathfont Info: Restoring \string\set at mathsymbol.}
- \wlog{Package mathfont Info: Restoring \string\set at mathaccent.}
- \wlog{Package mathfont Info: Restoring \string\DeclareSymbolFont.}
- \let\set at mathchar\@@set at mathchar
- \let\set at mathsymbol\@@set at mathsymbol
- \let\set at mathaccent\@@set at mathaccent
- \let\DeclareSymbolFont\@@DeclareSymbolFont
- \fi}
- \protected\gdef\clap#1{\hb at xt@\z@{\hss#1\hss}}
- \protected\def\stack at flatrel#1#2{\expandafter
- \st at ck@fl at trel\expandafter#1\@firstofone#2}
- \protected\gdef\st at ck@fl at trel#1#2#3{%
- {\setbox0\hbox{$\m at th#1#2$}% contains \mathrel symbol
- \setbox1\hbox{$\m at th#1#3$}% gets raised over \box0
- \if\wd0>\wd1\relax
- \hb at xt@\wd0{%
- \hfil
- \clap{\raise0.7\ht0\box1}%
- \clap{\box0}\hfil}%
- \else
- \hb at xt@\wd1{%
- \hfil
- \clap{\raise0.7\ht0\box1}%
- \clap{\box0}\hfil}%
- \fi}}
+ \hb at xt@\wd1{%
+ \hfil
+ \clap{\raise0.7\ht0\box1}%
+ \clap{\box0}\hfil}%
+ \fi}}
\ifnum\tracinglostchars<\tw@
\tracinglostchars\tw@
\fi
-\def\keyword at 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
+\ifM at adjust@font
+ \protected\def\M at normal@mathcodes{%
+ \ifM at upper
+ \Umathcode`A=7+0+`A\relax
+ \Umathcode`B=7+0+`B\relax
+ \Umathcode`C=7+0+`C\relax
+ \Umathcode`D=7+0+`D\relax
+ \Umathcode`E=7+0+`E\relax
+ \Umathcode`F=7+0+`F\relax
+ \Umathcode`G=7+0+`G\relax
+ \Umathcode`H=7+0+`H\relax
+ \Umathcode`I=7+0+`I\relax
+ \Umathcode`J=7+0+`J\relax
+ \Umathcode`K=7+0+`K\relax
+ \Umathcode`L=7+0+`L\relax
+ \Umathcode`M=7+0+`M\relax
+ \Umathcode`N=7+0+`N\relax
+ \Umathcode`O=7+0+`O\relax
+ \Umathcode`P=7+0+`P\relax
+ \Umathcode`Q=7+0+`Q\relax
+ \Umathcode`R=7+0+`R\relax
+ \Umathcode`S=7+0+`S\relax
+ \Umathcode`T=7+0+`T\relax
+ \Umathcode`U=7+0+`U\relax
+ \Umathcode`V=7+0+`V\relax
+ \Umathcode`W=7+0+`W\relax
+ \Umathcode`X=7+0+`X\relax
+ \Umathcode`Y=7+0+`Y\relax
+ \Umathcode`Z=7+0+`Z\relax
+ \fi
+ \ifM at lower
+ \Umathcode`a=7+0+`a\relax
+ \Umathcode`b=7+0+`b\relax
+ \Umathcode`c=7+0+`c\relax
+ \Umathcode`d=7+0+`d\relax
+ \Umathcode`e=7+0+`e\relax
+ \Umathcode`f=7+0+`f\relax
+ \Umathcode`g=7+0+`g\relax
+ \Umathcode`h=7+0+`h\relax
+ \Umathcode`i=7+0+`i\relax
+ \Umathcode`j=7+0+`j\relax
+ \Umathcode`k=7+0+`k\relax
+ \Umathcode`l=7+0+`l\relax
+ \Umathcode`m=7+0+`m\relax
+ \Umathcode`n=7+0+`n\relax
+ \Umathcode`o=7+0+`o\relax
+ \Umathcode`p=7+0+`p\relax
+ \Umathcode`q=7+0+`q\relax
+ \Umathcode`r=7+0+`r\relax
+ \Umathcode`s=7+0+`s\relax
+ \Umathcode`t=7+0+`t\relax
+ \Umathcode`u=7+0+`u\relax
+ \Umathcode`v=7+0+`v\relax
+ \Umathcode`w=7+0+`w\relax
+ \Umathcode`x=7+0+`x\relax
+ \Umathcode`y=7+0+`y\relax
+ \Umathcode`z=7+0+`z\relax
+ \fi}
+ \AtBeginDocument{\@tfor\@i:={bb}{cal}{frak}{bcal}{bfrak}\do{%
+ \ifcsname math\@i\endcsname
+ \expandafter\ifx % next two lines are cs to be compared
+ \csname ifM@\@i\expandafter\endcsname
+ \csname iffalse\endcsname % is \ifM@<keyword> false?
+ \@mathfontinfo{Restoring \string\Umathcode\space values
+ for \expandafter\string\csname math\@i\endcsname.}
+ \expandafter\let\csname @@math\@i\expandafter\endcsname
+ \csname math\@i\endcsname
+ \protected\expandafter\edef\csname math\@i\endcsname#1{%
+ \begingroup
+ \noexpand\M at normal@mathcodes
+ \expandafter\noexpand\csname @@math\@i\endcsname{#1}
+ \endgroup}
+ \fi
+ \fi}}
+\else
+ \let\M at normal@mathcodes\relax
+\fi
+\AtBeginDocument{%
+ \ifcase\M at num@localfonts
+ \or
+ \def\@tempa#1#2#3\@nil{#2}
+ \wlog{}
+ \typeout{:: mathfont :: Using
+ \expandafter\@tempa\M at localfonts\@nil\space
+ for local font changes.}
+ \else
+ \wlog{}
+ \typeout{:: mathfont :: Using \the\M at num@localfonts\space
+ fonts for local font changes.}
+ \fi}
+\def\M at keyword@info at begin#1:#2\@nil{%
+ \expandafter\ifx % next lines are two cs to be compared
+ \csname ifM@#1\expandafter\endcsname
+ \csname iftrue\endcsname
+ \wlog{#1#2\@spaces\space\space\space Set to
\csname M@#1 at fontinfo\endcsname,
- \csname M@#1shape\endcsname\space shape.}
+ \csname M@#1shape\endcsname\space shape}
\else
- \wlog{#1:#2\@spaces No change.}
+ \wlog{#1#2\@spaces\space\space\space No change}
\fi}
+\def\M at local@info at begin#1#2{%
+ \let\@tempa\@empty
+ \count@\z@
+ \@tfor\@i:=#1\do{%
+ \edef\@tempa{\@tempa\@i}
+ \advance\count@\@ne
+ \ifnum\count@=15\relax
+ \edef\@tempa{\@tempa...}
+ \advance\count@\thr@@
+ \@break at tfor
+ \fi}
+ \@whilenum\count@<20\do{%
+ \edef\@tempa{\@tempa\space}
+ \advance\count@\@ne}
+ \wlog{\@tempa#2}}
\AtBeginDocument{%
+ \wlog{}
+ \wlog{********************************************^^J%
+ * Changes made by mathfont in the preamble *^^J%
+ ********************************************^^J}
+ \wlog{Fonts for character classes:}
\def\@tempa{% <-- everything should be 14 characters long
upper:\@spaces\@spaces,%
lower:\@spaces\@spaces,%
@@ -1049,9 +1351,15 @@
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 at info@begindocument\@i\@nil}
+ \expandafter\M at keyword@info at begin\@i\@nil}
+ \wlog{}
+ \wlog{Local font-change commands:}
+ \ifnum\M at num@localfonts=\z@
+ \wlog{No local font change commands declared.}
+ \else
+ \@for\@j:=\M at localfonts\do{\expandafter\M at local@info at begin\@j}
+ \fi
\wlog{}}
\ifdefined\XeTeXrevision
\ifM at font@loaded
@@ -1103,21 +1411,25 @@
~def~M at 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%
+ 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 at index@ssert{"\n%
Package mathfont error: Invalid unicode index.\n\n%
- The unicode index \""..split_string[1].."\" is invalid. Make sure\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 at 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%
+ 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{%
@@ -1196,7 +1508,8 @@
local charm_string = charm_input
local temp_string = ""
local i = 1
- while string.find(charm_string, " ") or string.find(charm_string, ",") do
+ 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
@@ -1207,10 +1520,10 @@
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
+ if tonumber(temp_string) then % if a number, append it
split_string[i] = tonumber(temp_string)
i = i+1
- elseif temp_string == "*" then % if asterisk, append asterisk
+ elseif temp_string == "*" then % if asterisk, append it
split_string[i] = temp_string
i = i+1
else % if neither, raise error
@@ -1232,9 +1545,11 @@
if index == "*" then
error(\M at index@ssert)
end
- local rounded = index - (index \@percentchar 1) % subtract decimal portion
+ local rounded = index - (index \@percentchar 1) % round down
local max = 1114111
- assert(index == rounded and index >= 0 and index <= max, \M at index@ssert)
+ assert(index == rounded and
+ index >= 0 and
+ index <= max, \M at index@ssert)
return split_string
end
function mathfont:add_to_charm(charm_string)
@@ -1271,11 +1586,13 @@
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
+ 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
+ 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
@@ -1306,7 +1623,8 @@
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)
+ hex_string = hex_string ..
+ string.sub(hex_digits, curr_val+1, curr_val+1)
curr_val = remainder
end
if \string# hex_string < 4 then
@@ -1353,8 +1671,10 @@
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_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
@@ -1372,19 +1692,23 @@
local width, height, depth, italic = self.glyph_info(char)
char.width = width + italic
if index == 8730 then
- local horizontal_scale = tex.getcount("M at SurdHorizontalFactor") / 1000
- local vertical_scale = tex.getcount("M at SurdVerticalFactor") / 1000
+ local horizontal_scale =
+ tex.getcount("M at SurdHorizontalFactor") / 1000
+ local vertical_scale =
+ tex.getcount("M at SurdVerticalFactor") / 1000
char.width = horizontal_scale * char.width
char.height = vertical_scale * height
end
if index == 8747 then
- local scale_factor = tex.getcount("M at IntegralItalicFactor") / 1000
+ local scale_factor =
+ tex.getcount("M at 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_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}
@@ -1410,10 +1734,14 @@
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
+ 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 =
@@ -1430,10 +1758,14 @@
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
+ 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 = {}
@@ -1464,13 +1796,14 @@
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)},
+ {"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)
+function mathfont.set_nomath_false(fontdata)
fontdata.nomath = false
fontdata.oldmath = false
end
@@ -1478,12 +1811,16 @@
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)
+ 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)
@@ -1492,8 +1829,10 @@
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].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 = {
@@ -1506,7 +1845,8 @@
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)
+ chars[info.next] =
+ mathfont:make_a_table(index, info, fontdata)
elseif info.type == "e" then
local smash = info.smash
chars[index] = chars[index] or {}
@@ -1513,12 +1853,14 @@
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)
+ 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)
+ chars[index] =
+ mathfont:make_u_table(index, info, fontdata)
end
end
end
@@ -1540,7 +1882,8 @@
local rule_thickness = 0
local dim = "FractionRuleThickness"
if not fontdata.MathConstants[dim] then
- local scale_factor = tex.getcount("M at RuleThicknessFactor") / 1000
+ local scale_factor =
+ tex.getcount("M at RuleThicknessFactor") / 1000
rule_thickness = (size / 18) * scale_factor
fontdata.MathConstants[dim] = rule_thickness
else
@@ -1557,27 +1900,28 @@
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 xi_9 = 2 * rule_thickness % top limit min clearance
+ local xi_10 = xi_9 + 0.35 * y_depth % bottom limit try placement
+ local xi_11 = xi_10 % top limit min clearance
+ local xi_12 = xi_10 + 0.35 * (A_height + ex) % bottom attempt
+ 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
+ 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 % attempt for cramped scripts
+ 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 sigma_17 = sigma_16 % sigma_16 when superscript
+ local sigma_18 = 0.5 * A_height % superscript lower for boxed
+ local sigma_19 = 0.1 * A_height % subscript lower for boxed
local dim = "DisplayOperatorMinHeight"
if not fontdata.MathConstants[dim] then
fontdata.MathConstants[dim] = 1.8 * A_height
@@ -1724,11 +2068,13 @@
end
local dim = "StackDisplayStyleGapMin"
if not fontdata.MathConstants[dim] then
- fontdata.MathConstants[dim] = 5 * rule_thickness + 0.5 * y_depth
+ 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
+ fontdata.MathConstants[dim] = 3 * rule_thickness +
+ 0.35 * y_depth
end
local dim = "SubscriptShiftDown"
if not fontdata.MathConstants[dim] then
@@ -1768,7 +2114,8 @@
end
local dim = "SuperscriptBottomMaxWithSubscript"
if not fontdata.MathConstants[dim] then
- fontdata.MathConstants[dim] = -sigma_16 + 0.7 * A_height + rule_thickness
+ fontdata.MathConstants[dim] = -sigma_16 +
+ 0.7 * A_height + rule_thickness
end
local dim = "UnderbarExtraDescender"
if not fontdata.MathConstants[dim] then
@@ -1787,37 +2134,47 @@
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)
+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_false)
+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 "<??>"
+ 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)
+ local the_font = mathfont.get_font_name(fontdata)
+ mathfont.info("Adjusting font " .. the_font .. ".")
+ 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) .. ".")
+ mathfont.info("No changes made to " .. the_font .. ".")
end
end
-luatexbase.add_to_callback("luaotfload.patch_font", mathfont.adjust_font,
- "mathfont.adjust_font")
+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
@@ -1979,14 +2336,14 @@
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
+ delim_scale[2*i-1] = 1000 + 100*i % delimiters - horizontal
+ delim_scale[2*i] = 1000 + 500*i % delimiters - vertical
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
+ vert_scale[2*i] = 1000 + 500*i % vertically scaled chars
+ big_op_scale[2*i-1] = 1000 + 100*i % big operators - horizontal
+ big_op_scale[2*i] = 1000 + 100*i % big operators - vertical
+ int_scale[2*i-1] = 1000 + 500*i % integral sign - horizontal
+ int_scale[2*i] = 1000 + 1500*i % integral sign - vertical
end
delim_scale[31] = 0
delim_scale[32] = 0
@@ -1996,7 +2353,8 @@
vert_scale[32] = 0
int_scale[31] = 0
int_scale[32] = 0
-function mathfont:add_extensible_variants(first_smash, glyph_list, scale_list)
+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
@@ -2011,357 +2369,367 @@
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,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 at adjust@font
+\let\@DMA\DeclareMathAccent
+\let\@DMS\DeclareMathSymbol
+\@onlypreamble\@DMA
+\@onlypreamble\@DMS
\ifM at adjust@font
\def\M at upper@set{%
\edef\M at upper@font{M\M at uppershape\@tempa}
- \DeclareMathSymbol{A}{\mathalpha}{\M at upper@font}{1044512}
- \DeclareMathSymbol{B}{\mathalpha}{\M at upper@font}{1044513}
- \DeclareMathSymbol{C}{\mathalpha}{\M at upper@font}{1044514}
- \DeclareMathSymbol{D}{\mathalpha}{\M at upper@font}{1044515}
- \DeclareMathSymbol{E}{\mathalpha}{\M at upper@font}{1044516}
- \DeclareMathSymbol{F}{\mathalpha}{\M at upper@font}{1044517}
- \DeclareMathSymbol{G}{\mathalpha}{\M at upper@font}{1044518}
- \DeclareMathSymbol{H}{\mathalpha}{\M at upper@font}{1044519}
- \DeclareMathSymbol{I}{\mathalpha}{\M at upper@font}{1044520}
- \DeclareMathSymbol{J}{\mathalpha}{\M at upper@font}{1044521}
- \DeclareMathSymbol{K}{\mathalpha}{\M at upper@font}{1044522}
- \DeclareMathSymbol{L}{\mathalpha}{\M at upper@font}{1044523}
- \DeclareMathSymbol{M}{\mathalpha}{\M at upper@font}{1044524}
- \DeclareMathSymbol{N}{\mathalpha}{\M at upper@font}{1044525}
- \DeclareMathSymbol{O}{\mathalpha}{\M at upper@font}{1044526}
- \DeclareMathSymbol{P}{\mathalpha}{\M at upper@font}{1044527}
- \DeclareMathSymbol{Q}{\mathalpha}{\M at upper@font}{1044528}
- \DeclareMathSymbol{R}{\mathalpha}{\M at upper@font}{1044529}
- \DeclareMathSymbol{S}{\mathalpha}{\M at upper@font}{1044530}
- \DeclareMathSymbol{T}{\mathalpha}{\M at upper@font}{1044531}
- \DeclareMathSymbol{U}{\mathalpha}{\M at upper@font}{1044532}
- \DeclareMathSymbol{V}{\mathalpha}{\M at upper@font}{1044533}
- \DeclareMathSymbol{W}{\mathalpha}{\M at upper@font}{1044534}
- \DeclareMathSymbol{X}{\mathalpha}{\M at upper@font}{1044535}
- \DeclareMathSymbol{Y}{\mathalpha}{\M at upper@font}{1044536}
- \DeclareMathSymbol{Z}{\mathalpha}{\M at upper@font}{1044537}}
+ \@DMS{A}{\mathalpha}{\M at upper@font}{1044512}
+ \@DMS{B}{\mathalpha}{\M at upper@font}{1044513}
+ \@DMS{C}{\mathalpha}{\M at upper@font}{1044514}
+ \@DMS{D}{\mathalpha}{\M at upper@font}{1044515}
+ \@DMS{E}{\mathalpha}{\M at upper@font}{1044516}
+ \@DMS{F}{\mathalpha}{\M at upper@font}{1044517}
+ \@DMS{G}{\mathalpha}{\M at upper@font}{1044518}
+ \@DMS{H}{\mathalpha}{\M at upper@font}{1044519}
+ \@DMS{I}{\mathalpha}{\M at upper@font}{1044520}
+ \@DMS{J}{\mathalpha}{\M at upper@font}{1044521}
+ \@DMS{K}{\mathalpha}{\M at upper@font}{1044522}
+ \@DMS{L}{\mathalpha}{\M at upper@font}{1044523}
+ \@DMS{M}{\mathalpha}{\M at upper@font}{1044524}
+ \@DMS{N}{\mathalpha}{\M at upper@font}{1044525}
+ \@DMS{O}{\mathalpha}{\M at upper@font}{1044526}
+ \@DMS{P}{\mathalpha}{\M at upper@font}{1044527}
+ \@DMS{Q}{\mathalpha}{\M at upper@font}{1044528}
+ \@DMS{R}{\mathalpha}{\M at upper@font}{1044529}
+ \@DMS{S}{\mathalpha}{\M at upper@font}{1044530}
+ \@DMS{T}{\mathalpha}{\M at upper@font}{1044531}
+ \@DMS{U}{\mathalpha}{\M at upper@font}{1044532}
+ \@DMS{V}{\mathalpha}{\M at upper@font}{1044533}
+ \@DMS{W}{\mathalpha}{\M at upper@font}{1044534}
+ \@DMS{X}{\mathalpha}{\M at upper@font}{1044535}
+ \@DMS{Y}{\mathalpha}{\M at upper@font}{1044536}
+ \@DMS{Z}{\mathalpha}{\M at upper@font}{1044537}}
\else
\def\M at upper@set{%
\edef\M at upper@font{M\M at uppershape\@tempa}
- \DeclareMathSymbol{A}{\mathalpha}{\M at upper@font}{`A}
- \DeclareMathSymbol{B}{\mathalpha}{\M at upper@font}{`B}
- \DeclareMathSymbol{C}{\mathalpha}{\M at upper@font}{`C}
- \DeclareMathSymbol{D}{\mathalpha}{\M at upper@font}{`D}
- \DeclareMathSymbol{E}{\mathalpha}{\M at upper@font}{`E}
- \DeclareMathSymbol{F}{\mathalpha}{\M at upper@font}{`F}
- \DeclareMathSymbol{G}{\mathalpha}{\M at upper@font}{`G}
- \DeclareMathSymbol{H}{\mathalpha}{\M at upper@font}{`H}
- \DeclareMathSymbol{I}{\mathalpha}{\M at upper@font}{`I}
- \DeclareMathSymbol{J}{\mathalpha}{\M at upper@font}{`J}
- \DeclareMathSymbol{K}{\mathalpha}{\M at upper@font}{`K}
- \DeclareMathSymbol{L}{\mathalpha}{\M at upper@font}{`L}
- \DeclareMathSymbol{M}{\mathalpha}{\M at upper@font}{`M}
- \DeclareMathSymbol{N}{\mathalpha}{\M at upper@font}{`N}
- \DeclareMathSymbol{O}{\mathalpha}{\M at upper@font}{`O}
- \DeclareMathSymbol{P}{\mathalpha}{\M at upper@font}{`P}
- \DeclareMathSymbol{Q}{\mathalpha}{\M at upper@font}{`Q}
- \DeclareMathSymbol{R}{\mathalpha}{\M at upper@font}{`R}
- \DeclareMathSymbol{S}{\mathalpha}{\M at upper@font}{`S}
- \DeclareMathSymbol{T}{\mathalpha}{\M at upper@font}{`T}
- \DeclareMathSymbol{U}{\mathalpha}{\M at upper@font}{`U}
- \DeclareMathSymbol{V}{\mathalpha}{\M at upper@font}{`V}
- \DeclareMathSymbol{W}{\mathalpha}{\M at upper@font}{`W}
- \DeclareMathSymbol{X}{\mathalpha}{\M at upper@font}{`X}
- \DeclareMathSymbol{Y}{\mathalpha}{\M at upper@font}{`Y}
- \DeclareMathSymbol{Z}{\mathalpha}{\M at upper@font}{`Z}}
+ \@DMS{A}{\mathalpha}{\M at upper@font}{`A}
+ \@DMS{B}{\mathalpha}{\M at upper@font}{`B}
+ \@DMS{C}{\mathalpha}{\M at upper@font}{`C}
+ \@DMS{D}{\mathalpha}{\M at upper@font}{`D}
+ \@DMS{E}{\mathalpha}{\M at upper@font}{`E}
+ \@DMS{F}{\mathalpha}{\M at upper@font}{`F}
+ \@DMS{G}{\mathalpha}{\M at upper@font}{`G}
+ \@DMS{H}{\mathalpha}{\M at upper@font}{`H}
+ \@DMS{I}{\mathalpha}{\M at upper@font}{`I}
+ \@DMS{J}{\mathalpha}{\M at upper@font}{`J}
+ \@DMS{K}{\mathalpha}{\M at upper@font}{`K}
+ \@DMS{L}{\mathalpha}{\M at upper@font}{`L}
+ \@DMS{M}{\mathalpha}{\M at upper@font}{`M}
+ \@DMS{N}{\mathalpha}{\M at upper@font}{`N}
+ \@DMS{O}{\mathalpha}{\M at upper@font}{`O}
+ \@DMS{P}{\mathalpha}{\M at upper@font}{`P}
+ \@DMS{Q}{\mathalpha}{\M at upper@font}{`Q}
+ \@DMS{R}{\mathalpha}{\M at upper@font}{`R}
+ \@DMS{S}{\mathalpha}{\M at upper@font}{`S}
+ \@DMS{T}{\mathalpha}{\M at upper@font}{`T}
+ \@DMS{U}{\mathalpha}{\M at upper@font}{`U}
+ \@DMS{V}{\mathalpha}{\M at upper@font}{`V}
+ \@DMS{W}{\mathalpha}{\M at upper@font}{`W}
+ \@DMS{X}{\mathalpha}{\M at upper@font}{`X}
+ \@DMS{Y}{\mathalpha}{\M at upper@font}{`Y}
+ \@DMS{Z}{\mathalpha}{\M at upper@font}{`Z}}
\fi
\ifM at adjust@font
\def\M at lower@set{%
\edef\M at lower@font{M\M at lowershape\@tempa}
- \DeclareMathSymbol{a}{\mathalpha}{\M at lower@font}{1044480}
- \DeclareMathSymbol{b}{\mathalpha}{\M at lower@font}{1044481}
- \DeclareMathSymbol{c}{\mathalpha}{\M at lower@font}{1044482}
- \DeclareMathSymbol{d}{\mathalpha}{\M at lower@font}{1044483}
- \DeclareMathSymbol{e}{\mathalpha}{\M at lower@font}{1044484}
- \DeclareMathSymbol{f}{\mathalpha}{\M at lower@font}{1044485}
- \DeclareMathSymbol{g}{\mathalpha}{\M at lower@font}{1044486}
- \DeclareMathSymbol{h}{\mathalpha}{\M at lower@font}{1044487}
- \DeclareMathSymbol{i}{\mathalpha}{\M at lower@font}{1044488}
- \DeclareMathSymbol{j}{\mathalpha}{\M at lower@font}{1044489}
- \DeclareMathSymbol{k}{\mathalpha}{\M at lower@font}{1044490}
- \DeclareMathSymbol{l}{\mathalpha}{\M at lower@font}{1044491}
- \DeclareMathSymbol{m}{\mathalpha}{\M at lower@font}{1044492}
- \DeclareMathSymbol{n}{\mathalpha}{\M at lower@font}{1044493}
- \DeclareMathSymbol{o}{\mathalpha}{\M at lower@font}{1044494}
- \DeclareMathSymbol{p}{\mathalpha}{\M at lower@font}{1044495}
- \DeclareMathSymbol{q}{\mathalpha}{\M at lower@font}{1044496}
- \DeclareMathSymbol{r}{\mathalpha}{\M at lower@font}{1044497}
- \DeclareMathSymbol{s}{\mathalpha}{\M at lower@font}{1044498}
- \DeclareMathSymbol{t}{\mathalpha}{\M at lower@font}{1044499}
- \DeclareMathSymbol{u}{\mathalpha}{\M at lower@font}{1044500}
- \DeclareMathSymbol{v}{\mathalpha}{\M at lower@font}{1044501}
- \DeclareMathSymbol{w}{\mathalpha}{\M at lower@font}{1044502}
- \DeclareMathSymbol{x}{\mathalpha}{\M at lower@font}{1044503}
- \DeclareMathSymbol{y}{\mathalpha}{\M at lower@font}{1044504}
- \DeclareMathSymbol{z}{\mathalpha}{\M at lower@font}{1044505}
- \DeclareMathSymbol{\imath}{\mathalpha}{\M at lower@font}{1044506}
- \DeclareMathSymbol{\jmath}{\mathalpha}{\M at lower@font}{1044507}
- \DeclareMathSymbol{\hbar}{\mathord}{\M at lower@font}{"127}}
+ \@DMS{a}{\mathalpha}{\M at lower@font}{1044480}
+ \@DMS{b}{\mathalpha}{\M at lower@font}{1044481}
+ \@DMS{c}{\mathalpha}{\M at lower@font}{1044482}
+ \@DMS{d}{\mathalpha}{\M at lower@font}{1044483}
+ \@DMS{e}{\mathalpha}{\M at lower@font}{1044484}
+ \@DMS{f}{\mathalpha}{\M at lower@font}{1044485}
+ \@DMS{g}{\mathalpha}{\M at lower@font}{1044486}
+ \@DMS{h}{\mathalpha}{\M at lower@font}{1044487}
+ \@DMS{i}{\mathalpha}{\M at lower@font}{1044488}
+ \@DMS{j}{\mathalpha}{\M at lower@font}{1044489}
+ \@DMS{k}{\mathalpha}{\M at lower@font}{1044490}
+ \@DMS{l}{\mathalpha}{\M at lower@font}{1044491}
+ \@DMS{m}{\mathalpha}{\M at lower@font}{1044492}
+ \@DMS{n}{\mathalpha}{\M at lower@font}{1044493}
+ \@DMS{o}{\mathalpha}{\M at lower@font}{1044494}
+ \@DMS{p}{\mathalpha}{\M at lower@font}{1044495}
+ \@DMS{q}{\mathalpha}{\M at lower@font}{1044496}
+ \@DMS{r}{\mathalpha}{\M at lower@font}{1044497}
+ \@DMS{s}{\mathalpha}{\M at lower@font}{1044498}
+ \@DMS{t}{\mathalpha}{\M at lower@font}{1044499}
+ \@DMS{u}{\mathalpha}{\M at lower@font}{1044500}
+ \@DMS{v}{\mathalpha}{\M at lower@font}{1044501}
+ \@DMS{w}{\mathalpha}{\M at lower@font}{1044502}
+ \@DMS{x}{\mathalpha}{\M at lower@font}{1044503}
+ \@DMS{y}{\mathalpha}{\M at lower@font}{1044504}
+ \@DMS{z}{\mathalpha}{\M at lower@font}{1044505}
+ \@DMS{\imath}{\mathalpha}{\M at lower@font}{1044506}
+ \@DMS{\jmath}{\mathalpha}{\M at lower@font}{1044507}
+ \@DMS{\hbar}{\mathord}{\M at lower@font}{"127}}
\else
\def\M at lower@set{%
\edef\M at lower@font{M\M at lowershape\@tempa}
- \DeclareMathSymbol{a}{\mathalpha}{\M at lower@font}{`a}
- \DeclareMathSymbol{b}{\mathalpha}{\M at lower@font}{`b}
- \DeclareMathSymbol{c}{\mathalpha}{\M at lower@font}{`c}
- \DeclareMathSymbol{d}{\mathalpha}{\M at lower@font}{`d}
- \DeclareMathSymbol{e}{\mathalpha}{\M at lower@font}{`e}
- \DeclareMathSymbol{f}{\mathalpha}{\M at lower@font}{`f}
- \DeclareMathSymbol{g}{\mathalpha}{\M at lower@font}{`g}
- \DeclareMathSymbol{h}{\mathalpha}{\M at lower@font}{`h}
- \DeclareMathSymbol{i}{\mathalpha}{\M at lower@font}{`i}
- \DeclareMathSymbol{j}{\mathalpha}{\M at lower@font}{`j}
- \DeclareMathSymbol{k}{\mathalpha}{\M at lower@font}{`k}
- \DeclareMathSymbol{l}{\mathalpha}{\M at lower@font}{`l}
- \DeclareMathSymbol{m}{\mathalpha}{\M at lower@font}{`m}
- \DeclareMathSymbol{n}{\mathalpha}{\M at lower@font}{`n}
- \DeclareMathSymbol{o}{\mathalpha}{\M at lower@font}{`o}
- \DeclareMathSymbol{p}{\mathalpha}{\M at lower@font}{`p}
- \DeclareMathSymbol{q}{\mathalpha}{\M at lower@font}{`q}
- \DeclareMathSymbol{r}{\mathalpha}{\M at lower@font}{`r}
- \DeclareMathSymbol{s}{\mathalpha}{\M at lower@font}{`s}
- \DeclareMathSymbol{t}{\mathalpha}{\M at lower@font}{`t}
- \DeclareMathSymbol{u}{\mathalpha}{\M at lower@font}{`u}
- \DeclareMathSymbol{v}{\mathalpha}{\M at lower@font}{`v}
- \DeclareMathSymbol{w}{\mathalpha}{\M at lower@font}{`w}
- \DeclareMathSymbol{x}{\mathalpha}{\M at lower@font}{`x}
- \DeclareMathSymbol{y}{\mathalpha}{\M at lower@font}{`y}
- \DeclareMathSymbol{z}{\mathalpha}{\M at lower@font}{`z}
- \DeclareMathSymbol{\imath}{\mathalpha}{\M at lower@font}{"131}
- \DeclareMathSymbol{\jmath}{\mathalpha}{\M at lower@font}{"237}
- \DeclareMathSymbol{\hbar}{\mathord}{\M at lower@font}{"127}}
+ \@DMS{a}{\mathalpha}{\M at lower@font}{`a}
+ \@DMS{b}{\mathalpha}{\M at lower@font}{`b}
+ \@DMS{c}{\mathalpha}{\M at lower@font}{`c}
+ \@DMS{d}{\mathalpha}{\M at lower@font}{`d}
+ \@DMS{e}{\mathalpha}{\M at lower@font}{`e}
+ \@DMS{f}{\mathalpha}{\M at lower@font}{`f}
+ \@DMS{g}{\mathalpha}{\M at lower@font}{`g}
+ \@DMS{h}{\mathalpha}{\M at lower@font}{`h}
+ \@DMS{i}{\mathalpha}{\M at lower@font}{`i}
+ \@DMS{j}{\mathalpha}{\M at lower@font}{`j}
+ \@DMS{k}{\mathalpha}{\M at lower@font}{`k}
+ \@DMS{l}{\mathalpha}{\M at lower@font}{`l}
+ \@DMS{m}{\mathalpha}{\M at lower@font}{`m}
+ \@DMS{n}{\mathalpha}{\M at lower@font}{`n}
+ \@DMS{o}{\mathalpha}{\M at lower@font}{`o}
+ \@DMS{p}{\mathalpha}{\M at lower@font}{`p}
+ \@DMS{q}{\mathalpha}{\M at lower@font}{`q}
+ \@DMS{r}{\mathalpha}{\M at lower@font}{`r}
+ \@DMS{s}{\mathalpha}{\M at lower@font}{`s}
+ \@DMS{t}{\mathalpha}{\M at lower@font}{`t}
+ \@DMS{u}{\mathalpha}{\M at lower@font}{`u}
+ \@DMS{v}{\mathalpha}{\M at lower@font}{`v}
+ \@DMS{w}{\mathalpha}{\M at lower@font}{`w}
+ \@DMS{x}{\mathalpha}{\M at lower@font}{`x}
+ \@DMS{y}{\mathalpha}{\M at lower@font}{`y}
+ \@DMS{z}{\mathalpha}{\M at lower@font}{`z}
+ \@DMS{\imath}{\mathalpha}{\M at lower@font}{"131}
+ \@DMS{\jmath}{\mathalpha}{\M at lower@font}{"237}
+ \@DMS{\hbar}{\mathord}{\M at lower@font}{"127}}
\fi
\def\M at diacritics@set{%
\edef\M at diacritics@font{M\M at diacriticsshape\@tempa}
- \DeclareMathAccent{\acute}{\mathalpha}{\M at diacritics@font}{"B4}
- \DeclareMathAccent{\aacute}{\mathalpha}{\M at diacritics@font}{"2DD}
- \DeclareMathAccent{\dot}{\mathalpha}{\M at diacritics@font}{"2D9}
- \DeclareMathAccent{\ddot}{\mathalpha}{\M at diacritics@font}{"A8}
- \DeclareMathAccent{\grave}{\mathalpha}{\M at diacritics@font}{"60}
- \DeclareMathAccent{\breve}{\mathalpha}{\M at diacritics@font}{"2D8}
- \DeclareMathAccent{\hat}{\mathalpha}{\M at diacritics@font}{"2C6}
- \DeclareMathAccent{\check}{\mathalpha}{\M at diacritics@font}{"2C7}
- \DeclareMathAccent{\bar}{\mathalpha}{\M at diacritics@font}{"2C9}
- \DeclareMathAccent{\mathring}{\mathalpha}{\M at diacritics@font}{"2DA}
- \DeclareMathAccent{\tilde}{\mathalpha}{\M at diacritics@font}{"2DC}}
+ \@DMA{\acute} {\mathalpha}{\M at diacritics@font}{"B4}
+ \@DMA{\aacute} {\mathalpha}{\M at diacritics@font}{"2DD}
+ \@DMA{\dot} {\mathalpha}{\M at diacritics@font}{"2D9}
+ \@DMA{\ddot} {\mathalpha}{\M at diacritics@font}{"A8}
+ \@DMA{\grave} {\mathalpha}{\M at diacritics@font}{"60}
+ \@DMA{\breve} {\mathalpha}{\M at diacritics@font}{"2D8}
+ \@DMA{\hat} {\mathalpha}{\M at diacritics@font}{"2C6}
+ \@DMA{\check} {\mathalpha}{\M at diacritics@font}{"2C7}
+ \@DMA{\bar} {\mathalpha}{\M at diacritics@font}{"2C9}
+ \@DMA{\mathring}{\mathalpha}{\M at diacritics@font}{"2DA}
+ \@DMA{\tilde} {\mathalpha}{\M at diacritics@font}{"2DC}}
\def\M at greekupper@set{%
\edef\M at greekupper@font{M\M at greekuppershape\@tempa}
- \DeclareMathSymbol{\Alpha}{\mathalpha}{\M at greekupper@font}{"391}
- \DeclareMathSymbol{\Beta}{\mathalpha}{\M at greekupper@font}{"392}
- \DeclareMathSymbol{\Gamma}{\mathalpha}{\M at greekupper@font}{"393}
- \DeclareMathSymbol{\Delta}{\mathalpha}{\M at greekupper@font}{"394}
- \DeclareMathSymbol{\Epsilon}{\mathalpha}{\M at greekupper@font}{"395}
- \DeclareMathSymbol{\Zeta}{\mathalpha}{\M at greekupper@font}{"396}
- \DeclareMathSymbol{\Eta}{\mathalpha}{\M at greekupper@font}{"397}
- \DeclareMathSymbol{\Theta}{\mathalpha}{\M at greekupper@font}{"398}
- \DeclareMathSymbol{\Iota}{\mathalpha}{\M at greekupper@font}{"399}
- \DeclareMathSymbol{\Kappa}{\mathalpha}{\M at greekupper@font}{"39A}
- \DeclareMathSymbol{\Lambda}{\mathalpha}{\M at greekupper@font}{"39B}
- \DeclareMathSymbol{\Mu}{\mathalpha}{\M at greekupper@font}{"39C}
- \DeclareMathSymbol{\Nu}{\mathalpha}{\M at greekupper@font}{"39D}
- \DeclareMathSymbol{\Xi}{\mathalpha}{\M at greekupper@font}{"39E}
- \DeclareMathSymbol{\Omicron}{\mathalpha}{\M at greekupper@font}{"39F}
- \DeclareMathSymbol{\Pi}{\mathalpha}{\M at greekupper@font}{"3A0}
- \DeclareMathSymbol{\Rho}{\mathalpha}{\M at greekupper@font}{"3A1}
- \DeclareMathSymbol{\Sigma}{\mathalpha}{\M at greekupper@font}{"3A3}
- \DeclareMathSymbol{\Tau}{\mathalpha}{\M at greekupper@font}{"3A4}
- \DeclareMathSymbol{\Upsilon}{\mathalpha}{\M at greekupper@font}{"3A5}
- \DeclareMathSymbol{\Phi}{\mathalpha}{\M at greekupper@font}{"3A6}
- \DeclareMathSymbol{\Chi}{\mathalpha}{\M at greekupper@font}{"3A7}
- \DeclareMathSymbol{\Psi}{\mathalpha}{\M at greekupper@font}{"3A8}
- \DeclareMathSymbol{\Omega}{\mathalpha}{\M at greekupper@font}{"3A9}
- \DeclareMathSymbol{\varTheta}{\mathalpha}{\M at greekupper@font}{"3F4}
+ \let\Chi\@undefined
+ \@DMS{\Alpha} {\mathalpha}{\M at greekupper@font}{"391}
+ \@DMS{\Beta} {\mathalpha}{\M at greekupper@font}{"392}
+ \@DMS{\Gamma} {\mathalpha}{\M at greekupper@font}{"393}
+ \@DMS{\Delta} {\mathalpha}{\M at greekupper@font}{"394}
+ \@DMS{\Epsilon} {\mathalpha}{\M at greekupper@font}{"395}
+ \@DMS{\Zeta} {\mathalpha}{\M at greekupper@font}{"396}
+ \@DMS{\Eta} {\mathalpha}{\M at greekupper@font}{"397}
+ \@DMS{\Theta} {\mathalpha}{\M at greekupper@font}{"398}
+ \@DMS{\Iota} {\mathalpha}{\M at greekupper@font}{"399}
+ \@DMS{\Kappa} {\mathalpha}{\M at greekupper@font}{"39A}
+ \@DMS{\Lambda} {\mathalpha}{\M at greekupper@font}{"39B}
+ \@DMS{\Mu} {\mathalpha}{\M at greekupper@font}{"39C}
+ \@DMS{\Nu} {\mathalpha}{\M at greekupper@font}{"39D}
+ \@DMS{\Xi} {\mathalpha}{\M at greekupper@font}{"39E}
+ \@DMS{\Omicron} {\mathalpha}{\M at greekupper@font}{"39F}
+ \@DMS{\Pi} {\mathalpha}{\M at greekupper@font}{"3A0}
+ \@DMS{\Rho} {\mathalpha}{\M at greekupper@font}{"3A1}
+ \@DMS{\Sigma} {\mathalpha}{\M at greekupper@font}{"3A3}
+ \@DMS{\Tau} {\mathalpha}{\M at greekupper@font}{"3A4}
+ \@DMS{\Upsilon} {\mathalpha}{\M at greekupper@font}{"3A5}
+ \@DMS{\Phi} {\mathalpha}{\M at greekupper@font}{"3A6}
+ \@DMS{\Chi} {\mathalpha}{\M at greekupper@font}{"3A7}
+ \@DMS{\Psi} {\mathalpha}{\M at greekupper@font}{"3A8}
+ \@DMS{\Omega} {\mathalpha}{\M at greekupper@font}{"3A9}
+ \@DMS{\varTheta}{\mathalpha}{\M at greekupper@font}{"3F4}
\ifM at adjust@font
\ifM at symbols\else
- \DeclareMathSymbol{\increment}{\mathord}{\M at greekupper@font}{"2206}
- \DeclareMathSymbol{\nabla}{\mathord}{\M at greekupper@font}{"2207}
+ \@DMS{\increment}
+ {\mathord}{\M at greekupper@font}{"2206}
+ \@DMS{\nabla}
+ {\mathord}{\M at greekupper@font}{"2207}
\fi
\else
\ifM at symbols\else
- \DeclareMathSymbol{\increment}{\mathord}{\M at greekupper@font}{"2206}
+ \@DMS{\increment}
+ {\mathord}{\M at greekupper@font}{"2206}
\fi
\ifM at extsymbols\else
- \DeclareMathSymbol{\nabla}{\mathord}{\M at greekupper@font}{"2207}
+ \@DMS{\nabla}
+ {\mathord}{\M at greekupper@font}{"2207}
\fi
\fi}
\def\M at greeklower@set{%
\edef\M at greeklower@font{M\M at greeklowershape\@tempa}
- \DeclareMathSymbol{\alpha}{\mathalpha}{\M at greeklower@font}{"3B1}
- \DeclareMathSymbol{\beta}{\mathalpha}{\M at greeklower@font}{"3B2}
- \DeclareMathSymbol{\gamma}{\mathalpha}{\M at greeklower@font}{"3B3}
- \DeclareMathSymbol{\delta}{\mathalpha}{\M at greeklower@font}{"3B4}
- \DeclareMathSymbol{\epsilon}{\mathalpha}{\M at greeklower@font}{"3B5}
- \DeclareMathSymbol{\zeta}{\mathalpha}{\M at greeklower@font}{"3B6}
- \DeclareMathSymbol{\eta}{\mathalpha}{\M at greeklower@font}{"3B7}
- \DeclareMathSymbol{\theta}{\mathalpha}{\M at greeklower@font}{"3B8}
- \DeclareMathSymbol{\iota}{\mathalpha}{\M at greeklower@font}{"3B9}
- \DeclareMathSymbol{\kappa}{\mathalpha}{\M at greeklower@font}{"3BA}
- \DeclareMathSymbol{\lambda}{\mathalpha}{\M at greeklower@font}{"3BB}
- \DeclareMathSymbol{\mu}{\mathalpha}{\M at greeklower@font}{"3BC}
- \DeclareMathSymbol{\nu}{\mathalpha}{\M at greeklower@font}{"3BD}
- \DeclareMathSymbol{\xi}{\mathalpha}{\M at greeklower@font}{"3BE}
- \DeclareMathSymbol{\omicron}{\mathalpha}{\M at greeklower@font}{"3BF}
- \DeclareMathSymbol{\pi}{\mathalpha}{\M at greeklower@font}{"3C0}
- \DeclareMathSymbol{\rho}{\mathalpha}{\M at greeklower@font}{"3C1}
- \DeclareMathSymbol{\sigma}{\mathalpha}{\M at greeklower@font}{"3C3}
- \DeclareMathSymbol{\tau}{\mathalpha}{\M at greeklower@font}{"3C4}
- \DeclareMathSymbol{\upsilon}{\mathalpha}{\M at greeklower@font}{"3C5}
- \DeclareMathSymbol{\phi}{\mathalpha}{\M at greeklower@font}{"3C6}
- \DeclareMathSymbol{\chi}{\mathalpha}{\M at greeklower@font}{"3C7}
- \DeclareMathSymbol{\psi}{\mathalpha}{\M at greeklower@font}{"3C8}
- \DeclareMathSymbol{\omega}{\mathalpha}{\M at greeklower@font}{"3C9}
- \DeclareMathSymbol{\varbeta}{\mathalpha}{\M at greeklower@font}{"3D0}
- \DeclareMathSymbol{\varepsilon}{\mathalpha}{\M at greeklower@font}{"3F5}
- \DeclareMathSymbol{\varkappa}{\mathalpha}{\M at greeklower@font}{"3F0}
- \DeclareMathSymbol{\vartheta}{\mathalpha}{\M at greeklower@font}{"3D1}
- \DeclareMathSymbol{\varrho}{\mathalpha}{\M at greeklower@font}{"3F1}
- \DeclareMathSymbol{\varsigma}{\mathalpha}{\M at greeklower@font}{"3C2}
- \DeclareMathSymbol{\varphi}{\mathalpha}{\M at greeklower@font}{"3D5}}
+ \@DMS{\alpha} {\mathalpha}{\M at greeklower@font}{"3B1}
+ \@DMS{\beta} {\mathalpha}{\M at greeklower@font}{"3B2}
+ \@DMS{\gamma} {\mathalpha}{\M at greeklower@font}{"3B3}
+ \@DMS{\delta} {\mathalpha}{\M at greeklower@font}{"3B4}
+ \@DMS{\epsilon} {\mathalpha}{\M at greeklower@font}{"3B5}
+ \@DMS{\zeta} {\mathalpha}{\M at greeklower@font}{"3B6}
+ \@DMS{\eta} {\mathalpha}{\M at greeklower@font}{"3B7}
+ \@DMS{\theta} {\mathalpha}{\M at greeklower@font}{"3B8}
+ \@DMS{\iota} {\mathalpha}{\M at greeklower@font}{"3B9}
+ \@DMS{\kappa} {\mathalpha}{\M at greeklower@font}{"3BA}
+ \@DMS{\lambda} {\mathalpha}{\M at greeklower@font}{"3BB}
+ \@DMS{\mu} {\mathalpha}{\M at greeklower@font}{"3BC}
+ \@DMS{\nu} {\mathalpha}{\M at greeklower@font}{"3BD}
+ \@DMS{\xi} {\mathalpha}{\M at greeklower@font}{"3BE}
+ \@DMS{\omicron} {\mathalpha}{\M at greeklower@font}{"3BF}
+ \@DMS{\pi} {\mathalpha}{\M at greeklower@font}{"3C0}
+ \@DMS{\rho} {\mathalpha}{\M at greeklower@font}{"3C1}
+ \@DMS{\sigma} {\mathalpha}{\M at greeklower@font}{"3C3}
+ \@DMS{\tau} {\mathalpha}{\M at greeklower@font}{"3C4}
+ \@DMS{\upsilon} {\mathalpha}{\M at greeklower@font}{"3C5}
+ \@DMS{\phi} {\mathalpha}{\M at greeklower@font}{"3C6}
+ \@DMS{\chi} {\mathalpha}{\M at greeklower@font}{"3C7}
+ \@DMS{\psi} {\mathalpha}{\M at greeklower@font}{"3C8}
+ \@DMS{\omega} {\mathalpha}{\M at greeklower@font}{"3C9}
+ \@DMS{\varbeta} {\mathalpha}{\M at greeklower@font}{"3D0}
+ \@DMS{\varepsilon}{\mathalpha}{\M at greeklower@font}{"3F5}
+ \@DMS{\varkappa} {\mathalpha}{\M at greeklower@font}{"3F0}
+ \@DMS{\vartheta} {\mathalpha}{\M at greeklower@font}{"3D1}
+ \@DMS{\varrho} {\mathalpha}{\M at greeklower@font}{"3F1}
+ \@DMS{\varsigma} {\mathalpha}{\M at greeklower@font}{"3C2}
+ \@DMS{\varphi} {\mathalpha}{\M at greeklower@font}{"3D5}}
\def\M at agreekupper@set{%
\edef\M at agreekupper@font{M\M at agreekuppershape\@tempa}
- \DeclareMathSymbol{\Heta}{\mathalpha}{\M at agreekupper@font}{"370}
- \DeclareMathSymbol{\Sampi}{\mathalpha}{\M at agreekupper@font}{"3E0}
- \DeclareMathSymbol{\Digamma}{\mathalpha}{\M at agreekupper@font}{"3DC}
- \DeclareMathSymbol{\Koppa}{\mathalpha}{\M at agreekupper@font}{"3D8}
- \DeclareMathSymbol{\Stigma}{\mathalpha}{\M at agreekupper@font}{"3DA}
- \DeclareMathSymbol{\Sho}{\mathalpha}{\M at agreekupper@font}{"3F7}
- \DeclareMathSymbol{\San}{\mathalpha}{\M at agreekupper@font}{"3FA}
- \DeclareMathSymbol{\varSampi}{\mathalpha}{\M at agreekupper@font}{"372}
- \DeclareMathSymbol{\varDigamma}{\mathalpha}{\M at agreekupper@font}{"376}
- \DeclareMathSymbol{\varKoppa}{\mathalpha}{\M at agreekupper@font}{"3DE}}
+ \@DMS{\Heta} {\mathalpha}{\M at agreekupper@font}{"370}
+ \@DMS{\Sampi} {\mathalpha}{\M at agreekupper@font}{"3E0}
+ \@DMS{\Digamma} {\mathalpha}{\M at agreekupper@font}{"3DC}
+ \@DMS{\Koppa} {\mathalpha}{\M at agreekupper@font}{"3D8}
+ \@DMS{\Stigma} {\mathalpha}{\M at agreekupper@font}{"3DA}
+ \@DMS{\Sho} {\mathalpha}{\M at agreekupper@font}{"3F7}
+ \@DMS{\San} {\mathalpha}{\M at agreekupper@font}{"3FA}
+ \@DMS{\varSampi} {\mathalpha}{\M at agreekupper@font}{"372}
+ \@DMS{\varDigamma}{\mathalpha}{\M at agreekupper@font}{"376}
+ \@DMS{\varKoppa} {\mathalpha}{\M at agreekupper@font}{"3DE}}
\def\M at agreeklower@set{%
\edef\M at agreeklower@font{M\M at agreeklowershape\@tempa}
- \DeclareMathSymbol{\heta}{\mathalpha}{\M at agreeklower@font}{"371}
- \DeclareMathSymbol{\sampi}{\mathalpha}{\M at agreeklower@font}{"3E1}
- \DeclareMathSymbol{\digamma}{\mathalpha}{\M at agreeklower@font}{"3DD}
- \DeclareMathSymbol{\koppa}{\mathalpha}{\M at agreeklower@font}{"3D9}
- \DeclareMathSymbol{\stigma}{\mathalpha}{\M at agreeklower@font}{"3DB}
- \DeclareMathSymbol{\sho}{\mathalpha}{\M at agreeklower@font}{"3F8}
- \DeclareMathSymbol{\san}{\mathalpha}{\M at agreeklower@font}{"3FB}
- \DeclareMathSymbol{\varsampi}{\mathalpha}{\M at agreeklower@font}{"373}
- \DeclareMathSymbol{\vardigamma}{\mathalpha}{\M at agreeklower@font}{"377}
- \DeclareMathSymbol{\varkoppa}{\mathalpha}{\M at agreeklower@font}{"3DF}}
+ \@DMS{\heta} {\mathalpha}{\M at agreeklower@font}{"371}
+ \@DMS{\sampi} {\mathalpha}{\M at agreeklower@font}{"3E1}
+ \@DMS{\digamma} {\mathalpha}{\M at agreeklower@font}{"3DD}
+ \@DMS{\koppa} {\mathalpha}{\M at agreeklower@font}{"3D9}
+ \@DMS{\stigma} {\mathalpha}{\M at agreeklower@font}{"3DB}
+ \@DMS{\sho} {\mathalpha}{\M at agreeklower@font}{"3F8}
+ \@DMS{\san} {\mathalpha}{\M at agreeklower@font}{"3FB}
+ \@DMS{\varsampi} {\mathalpha}{\M at agreeklower@font}{"373}
+ \@DMS{\vardigamma}{\mathalpha}{\M at agreeklower@font}{"377}
+ \@DMS{\varkoppa} {\mathalpha}{\M at agreeklower@font}{"3DF}}
\def\M at cyrillicupper@set{%
\edef\M at cyrillicupper@font{M\M at cyrillicuppershape\@tempa}
- \DeclareMathSymbol{\cyrA}{\mathalpha}{\M at cyrillicupper@font}{"410}
- \DeclareMathSymbol{\cyrBe}{\mathalpha}{\M at cyrillicupper@font}{"411}
- \DeclareMathSymbol{\cyrVe}{\mathalpha}{\M at cyrillicupper@font}{"412}
- \DeclareMathSymbol{\cyrGhe}{\mathalpha}{\M at cyrillicupper@font}{"413}
- \DeclareMathSymbol{\cyrDe}{\mathalpha}{\M at cyrillicupper@font}{"414}
- \DeclareMathSymbol{\cyrIe}{\mathalpha}{\M at cyrillicupper@font}{"415}
- \DeclareMathSymbol{\cyrZhe}{\mathalpha}{\M at cyrillicupper@font}{"416}
- \DeclareMathSymbol{\cyrZe}{\mathalpha}{\M at cyrillicupper@font}{"417}
- \DeclareMathSymbol{\cyrI}{\mathalpha}{\M at cyrillicupper@font}{"418}
- \DeclareMathSymbol{\cyrKa}{\mathalpha}{\M at cyrillicupper@font}{"41A}
- \DeclareMathSymbol{\cyrEl}{\mathalpha}{\M at cyrillicupper@font}{"41B}
- \DeclareMathSymbol{\cyrEm}{\mathalpha}{\M at cyrillicupper@font}{"41C}
- \DeclareMathSymbol{\cyrEn}{\mathalpha}{\M at cyrillicupper@font}{"41D}
- \DeclareMathSymbol{\cyrO}{\mathalpha}{\M at cyrillicupper@font}{"41E}
- \DeclareMathSymbol{\cyrPe}{\mathalpha}{\M at cyrillicupper@font}{"41F}
- \DeclareMathSymbol{\cyrEr}{\mathalpha}{\M at cyrillicupper@font}{"420}
- \DeclareMathSymbol{\cyrEs}{\mathalpha}{\M at cyrillicupper@font}{"421}
- \DeclareMathSymbol{\cyrTe}{\mathalpha}{\M at cyrillicupper@font}{"422}
- \DeclareMathSymbol{\cyrU}{\mathalpha}{\M at cyrillicupper@font}{"423}
- \DeclareMathSymbol{\cyrEf}{\mathalpha}{\M at cyrillicupper@font}{"424}
- \DeclareMathSymbol{\cyrHa}{\mathalpha}{\M at cyrillicupper@font}{"425}
- \DeclareMathSymbol{\cyrTse}{\mathalpha}{\M at cyrillicupper@font}{"426}
- \DeclareMathSymbol{\cyrChe}{\mathalpha}{\M at cyrillicupper@font}{"427}
- \DeclareMathSymbol{\cyrSha}{\mathalpha}{\M at cyrillicupper@font}{"428}
- \DeclareMathSymbol{\cyrShcha}{\mathalpha}{\M at cyrillicupper@font}{"429}
- \DeclareMathSymbol{\cyrHard}{\mathalpha}{\M at cyrillicupper@font}{"42A}
- \DeclareMathSymbol{\cyrYeru}{\mathalpha}{\M at cyrillicupper@font}{"42B}
- \DeclareMathSymbol{\cyrSoft}{\mathalpha}{\M at cyrillicupper@font}{"42C}
- \DeclareMathSymbol{\cyrE}{\mathalpha}{\M at cyrillicupper@font}{"42D}
- \DeclareMathSymbol{\cyrYu}{\mathalpha}{\M at cyrillicupper@font}{"42E}
- \DeclareMathSymbol{\cyrYa}{\mathalpha}{\M at cyrillicupper@font}{"42F}
- \DeclareMathSymbol{\cyrvarI}{\mathalpha}{\M at cyrillicupper@font}{"419}}
+ \@DMS{\cyrA} {\mathalpha}{\M at cyrillicupper@font}{"410}
+ \@DMS{\cyrBe} {\mathalpha}{\M at cyrillicupper@font}{"411}
+ \@DMS{\cyrVe} {\mathalpha}{\M at cyrillicupper@font}{"412}
+ \@DMS{\cyrGhe} {\mathalpha}{\M at cyrillicupper@font}{"413}
+ \@DMS{\cyrDe} {\mathalpha}{\M at cyrillicupper@font}{"414}
+ \@DMS{\cyrIe} {\mathalpha}{\M at cyrillicupper@font}{"415}
+ \@DMS{\cyrZhe} {\mathalpha}{\M at cyrillicupper@font}{"416}
+ \@DMS{\cyrZe} {\mathalpha}{\M at cyrillicupper@font}{"417}
+ \@DMS{\cyrI} {\mathalpha}{\M at cyrillicupper@font}{"418}
+ \@DMS{\cyrKa} {\mathalpha}{\M at cyrillicupper@font}{"41A}
+ \@DMS{\cyrEl} {\mathalpha}{\M at cyrillicupper@font}{"41B}
+ \@DMS{\cyrEm} {\mathalpha}{\M at cyrillicupper@font}{"41C}
+ \@DMS{\cyrEn} {\mathalpha}{\M at cyrillicupper@font}{"41D}
+ \@DMS{\cyrO} {\mathalpha}{\M at cyrillicupper@font}{"41E}
+ \@DMS{\cyrPe} {\mathalpha}{\M at cyrillicupper@font}{"41F}
+ \@DMS{\cyrEr} {\mathalpha}{\M at cyrillicupper@font}{"420}
+ \@DMS{\cyrEs} {\mathalpha}{\M at cyrillicupper@font}{"421}
+ \@DMS{\cyrTe} {\mathalpha}{\M at cyrillicupper@font}{"422}
+ \@DMS{\cyrU} {\mathalpha}{\M at cyrillicupper@font}{"423}
+ \@DMS{\cyrEf} {\mathalpha}{\M at cyrillicupper@font}{"424}
+ \@DMS{\cyrHa} {\mathalpha}{\M at cyrillicupper@font}{"425}
+ \@DMS{\cyrTse} {\mathalpha}{\M at cyrillicupper@font}{"426}
+ \@DMS{\cyrChe} {\mathalpha}{\M at cyrillicupper@font}{"427}
+ \@DMS{\cyrSha} {\mathalpha}{\M at cyrillicupper@font}{"428}
+ \@DMS{\cyrShcha}{\mathalpha}{\M at cyrillicupper@font}{"429}
+ \@DMS{\cyrHard} {\mathalpha}{\M at cyrillicupper@font}{"42A}
+ \@DMS{\cyrYeru} {\mathalpha}{\M at cyrillicupper@font}{"42B}
+ \@DMS{\cyrSoft} {\mathalpha}{\M at cyrillicupper@font}{"42C}
+ \@DMS{\cyrE} {\mathalpha}{\M at cyrillicupper@font}{"42D}
+ \@DMS{\cyrYu} {\mathalpha}{\M at cyrillicupper@font}{"42E}
+ \@DMS{\cyrYa} {\mathalpha}{\M at cyrillicupper@font}{"42F}
+ \@DMS{\cyrvarI} {\mathalpha}{\M at cyrillicupper@font}{"419}}
\def\M at cyrilliclower@set{%
\edef\M at cyrilliclower@font{M\M at cyrilliclowershape\@tempa}
- \DeclareMathSymbol{\cyra}{\mathalpha}{\M at cyrilliclower@font}{"430}
- \DeclareMathSymbol{\cyrbe}{\mathalpha}{\M at cyrilliclower@font}{"431}
- \DeclareMathSymbol{\cyrve}{\mathalpha}{\M at cyrilliclower@font}{"432}
- \DeclareMathSymbol{\cyrghe}{\mathalpha}{\M at cyrilliclower@font}{"433}
- \DeclareMathSymbol{\cyrde}{\mathalpha}{\M at cyrilliclower@font}{"434}
- \DeclareMathSymbol{\cyrie}{\mathalpha}{\M at cyrilliclower@font}{"435}
- \DeclareMathSymbol{\cyrzhe}{\mathalpha}{\M at cyrilliclower@font}{"436}
- \DeclareMathSymbol{\cyrze}{\mathalpha}{\M at cyrilliclower@font}{"437}
- \DeclareMathSymbol{\cyri}{\mathalpha}{\M at cyrilliclower@font}{"438}
- \DeclareMathSymbol{\cyrka}{\mathalpha}{\M at cyrilliclower@font}{"43A}
- \DeclareMathSymbol{\cyrel}{\mathalpha}{\M at cyrilliclower@font}{"43B}
- \DeclareMathSymbol{\cyrem}{\mathalpha}{\M at cyrilliclower@font}{"43C}
- \DeclareMathSymbol{\cyren}{\mathalpha}{\M at cyrilliclower@font}{"43D}
- \DeclareMathSymbol{\cyro}{\mathalpha}{\M at cyrilliclower@font}{"43E}
- \DeclareMathSymbol{\cyrpe}{\mathalpha}{\M at cyrilliclower@font}{"43F}
- \DeclareMathSymbol{\cyrer}{\mathalpha}{\M at cyrilliclower@font}{"440}
- \DeclareMathSymbol{\cyres}{\mathalpha}{\M at cyrilliclower@font}{"441}
- \DeclareMathSymbol{\cyrte}{\mathalpha}{\M at cyrilliclower@font}{"442}
- \DeclareMathSymbol{\cyru}{\mathalpha}{\M at cyrilliclower@font}{"443}
- \DeclareMathSymbol{\cyref}{\mathalpha}{\M at cyrilliclower@font}{"444}
- \DeclareMathSymbol{\cyrha}{\mathalpha}{\M at cyrilliclower@font}{"445}
- \DeclareMathSymbol{\cyrtse}{\mathalpha}{\M at cyrilliclower@font}{"446}
- \DeclareMathSymbol{\cyrche}{\mathalpha}{\M at cyrilliclower@font}{"447}
- \DeclareMathSymbol{\cyrsha}{\mathalpha}{\M at cyrilliclower@font}{"448}
- \DeclareMathSymbol{\cyrshcha}{\mathalpha}{\M at cyrilliclower@font}{"449}
- \DeclareMathSymbol{\cyrhard}{\mathalpha}{\M at cyrilliclower@font}{"44A}
- \DeclareMathSymbol{\cyryeru}{\mathalpha}{\M at cyrilliclower@font}{"44B}
- \DeclareMathSymbol{\cyrsoft}{\mathalpha}{\M at cyrilliclower@font}{"44C}
- \DeclareMathSymbol{\cyre}{\mathalpha}{\M at cyrilliclower@font}{"44D}
- \DeclareMathSymbol{\cyryu}{\mathalpha}{\M at cyrilliclower@font}{"44E}
- \DeclareMathSymbol{\cyrya}{\mathalpha}{\M at cyrilliclower@font}{"44F}
- \DeclareMathSymbol{\cyrvari}{\mathalpha}{\M at cyrilliclower@font}{"439}}
+ \@DMS{\cyra} {\mathalpha}{\M at cyrilliclower@font}{"430}
+ \@DMS{\cyrbe} {\mathalpha}{\M at cyrilliclower@font}{"431}
+ \@DMS{\cyrve} {\mathalpha}{\M at cyrilliclower@font}{"432}
+ \@DMS{\cyrghe} {\mathalpha}{\M at cyrilliclower@font}{"433}
+ \@DMS{\cyrde} {\mathalpha}{\M at cyrilliclower@font}{"434}
+ \@DMS{\cyrie} {\mathalpha}{\M at cyrilliclower@font}{"435}
+ \@DMS{\cyrzhe} {\mathalpha}{\M at cyrilliclower@font}{"436}
+ \@DMS{\cyrze} {\mathalpha}{\M at cyrilliclower@font}{"437}
+ \@DMS{\cyri} {\mathalpha}{\M at cyrilliclower@font}{"438}
+ \@DMS{\cyrka} {\mathalpha}{\M at cyrilliclower@font}{"43A}
+ \@DMS{\cyrel} {\mathalpha}{\M at cyrilliclower@font}{"43B}
+ \@DMS{\cyrem} {\mathalpha}{\M at cyrilliclower@font}{"43C}
+ \@DMS{\cyren} {\mathalpha}{\M at cyrilliclower@font}{"43D}
+ \@DMS{\cyro} {\mathalpha}{\M at cyrilliclower@font}{"43E}
+ \@DMS{\cyrpe} {\mathalpha}{\M at cyrilliclower@font}{"43F}
+ \@DMS{\cyrer} {\mathalpha}{\M at cyrilliclower@font}{"440}
+ \@DMS{\cyres} {\mathalpha}{\M at cyrilliclower@font}{"441}
+ \@DMS{\cyrte} {\mathalpha}{\M at cyrilliclower@font}{"442}
+ \@DMS{\cyru} {\mathalpha}{\M at cyrilliclower@font}{"443}
+ \@DMS{\cyref} {\mathalpha}{\M at cyrilliclower@font}{"444}
+ \@DMS{\cyrha} {\mathalpha}{\M at cyrilliclower@font}{"445}
+ \@DMS{\cyrtse} {\mathalpha}{\M at cyrilliclower@font}{"446}
+ \@DMS{\cyrche} {\mathalpha}{\M at cyrilliclower@font}{"447}
+ \@DMS{\cyrsha} {\mathalpha}{\M at cyrilliclower@font}{"448}
+ \@DMS{\cyrshcha}{\mathalpha}{\M at cyrilliclower@font}{"449}
+ \@DMS{\cyrhard} {\mathalpha}{\M at cyrilliclower@font}{"44A}
+ \@DMS{\cyryeru} {\mathalpha}{\M at cyrilliclower@font}{"44B}
+ \@DMS{\cyrsoft} {\mathalpha}{\M at cyrilliclower@font}{"44C}
+ \@DMS{\cyre} {\mathalpha}{\M at cyrilliclower@font}{"44D}
+ \@DMS{\cyryu} {\mathalpha}{\M at cyrilliclower@font}{"44E}
+ \@DMS{\cyrya} {\mathalpha}{\M at cyrilliclower@font}{"44F}
+ \@DMS{\cyrvari} {\mathalpha}{\M at cyrilliclower@font}{"439}}
\def\M at hebrew@set{%
\edef\M at hebrew@font{M\M at hebrewshape\@tempa}
- \DeclareMathSymbol{\aleph}{\mathalpha}{\M at hebrew@font}{"5D0}
- \DeclareMathSymbol{\beth}{\mathalpha}{\M at hebrew@font}{"5D1}
- \DeclareMathSymbol{\gimel}{\mathalpha}{\M at hebrew@font}{"5D2}
- \DeclareMathSymbol{\daleth}{\mathalpha}{\M at hebrew@font}{"5D3}
- \DeclareMathSymbol{\he}{\mathalpha}{\M at hebrew@font}{"5D4}
- \DeclareMathSymbol{\vav}{\mathalpha}{\M at hebrew@font}{"5D5}
- \DeclareMathSymbol{\zayin}{\mathalpha}{\M at hebrew@font}{"5D6}
- \DeclareMathSymbol{\het}{\mathalpha}{\M at hebrew@font}{"5D7}
- \DeclareMathSymbol{\tet}{\mathalpha}{\M at hebrew@font}{"5D8}
- \DeclareMathSymbol{\yod}{\mathalpha}{\M at hebrew@font}{"5D9}
- \DeclareMathSymbol{\kaf}{\mathalpha}{\M at hebrew@font}{"5DB}
- \DeclareMathSymbol{\lamed}{\mathalpha}{\M at hebrew@font}{"5DC}
- \DeclareMathSymbol{\mem}{\mathalpha}{\M at hebrew@font}{"5DE}
- \DeclareMathSymbol{\nun}{\mathalpha}{\M at hebrew@font}{"5E0}
- \DeclareMathSymbol{\samekh}{\mathalpha}{\M at hebrew@font}{"5E1}
- \DeclareMathSymbol{\ayin}{\mathalpha}{\M at hebrew@font}{"5E2}
- \DeclareMathSymbol{\pe}{\mathalpha}{\M at hebrew@font}{"5E4}
- \DeclareMathSymbol{\tsadi}{\mathalpha}{\M at hebrew@font}{"5E6}
- \DeclareMathSymbol{\qof}{\mathalpha}{\M at hebrew@font}{"5E7}
- \DeclareMathSymbol{\resh}{\mathalpha}{\M at hebrew@font}{"5E8}
- \DeclareMathSymbol{\shin}{\mathalpha}{\M at hebrew@font}{"5E9}
- \DeclareMathSymbol{\tav}{\mathalpha}{\M at hebrew@font}{"5EA}
- \DeclareMathSymbol{\varkaf}{\mathalpha}{\M at hebrew@font}{"5DA}
- \DeclareMathSymbol{\varmem}{\mathalpha}{\M at hebrew@font}{"5DD}
- \DeclareMathSymbol{\varnun}{\mathalpha}{\M at hebrew@font}{"5DF}
- \DeclareMathSymbol{\varpe}{\mathalpha}{\M at hebrew@font}{"5E3}
- \DeclareMathSymbol{\vartsadi}{\mathalpha}{\M at hebrew@font}{"5E5}}
+ \@DMS{\aleph} {\mathalpha}{\M at hebrew@font}{"5D0}
+ \@DMS{\beth} {\mathalpha}{\M at hebrew@font}{"5D1}
+ \@DMS{\gimel} {\mathalpha}{\M at hebrew@font}{"5D2}
+ \@DMS{\daleth} {\mathalpha}{\M at hebrew@font}{"5D3}
+ \@DMS{\he} {\mathalpha}{\M at hebrew@font}{"5D4}
+ \@DMS{\vav} {\mathalpha}{\M at hebrew@font}{"5D5}
+ \@DMS{\zayin} {\mathalpha}{\M at hebrew@font}{"5D6}
+ \@DMS{\het} {\mathalpha}{\M at hebrew@font}{"5D7}
+ \@DMS{\tet} {\mathalpha}{\M at hebrew@font}{"5D8}
+ \@DMS{\yod} {\mathalpha}{\M at hebrew@font}{"5D9}
+ \@DMS{\kaf} {\mathalpha}{\M at hebrew@font}{"5DB}
+ \@DMS{\lamed} {\mathalpha}{\M at hebrew@font}{"5DC}
+ \@DMS{\mem} {\mathalpha}{\M at hebrew@font}{"5DE}
+ \@DMS{\nun} {\mathalpha}{\M at hebrew@font}{"5E0}
+ \@DMS{\samekh} {\mathalpha}{\M at hebrew@font}{"5E1}
+ \@DMS{\ayin} {\mathalpha}{\M at hebrew@font}{"5E2}
+ \@DMS{\pe} {\mathalpha}{\M at hebrew@font}{"5E4}
+ \@DMS{\tsadi} {\mathalpha}{\M at hebrew@font}{"5E6}
+ \@DMS{\qof} {\mathalpha}{\M at hebrew@font}{"5E7}
+ \@DMS{\resh} {\mathalpha}{\M at hebrew@font}{"5E8}
+ \@DMS{\shin} {\mathalpha}{\M at hebrew@font}{"5E9}
+ \@DMS{\tav} {\mathalpha}{\M at hebrew@font}{"5EA}
+ \@DMS{\varkaf} {\mathalpha}{\M at hebrew@font}{"5DA}
+ \@DMS{\varmem} {\mathalpha}{\M at hebrew@font}{"5DD}
+ \@DMS{\varnun} {\mathalpha}{\M at hebrew@font}{"5DF}
+ \@DMS{\varpe} {\mathalpha}{\M at hebrew@font}{"5E3}
+ \@DMS{\vartsadi}{\mathalpha}{\M at hebrew@font}{"5E5}}
\def\M at digits@set{%
\edef\M at digits@font{M\M at digitsshape\@tempa}
- \DeclareMathSymbol{0}{\mathalpha}{\M at digits@font}{`0}
- \DeclareMathSymbol{1}{\mathalpha}{\M at digits@font}{`1}
- \DeclareMathSymbol{2}{\mathalpha}{\M at digits@font}{`2}
- \DeclareMathSymbol{3}{\mathalpha}{\M at digits@font}{`3}
- \DeclareMathSymbol{4}{\mathalpha}{\M at digits@font}{`4}
- \DeclareMathSymbol{5}{\mathalpha}{\M at digits@font}{`5}
- \DeclareMathSymbol{6}{\mathalpha}{\M at digits@font}{`6}
- \DeclareMathSymbol{7}{\mathalpha}{\M at digits@font}{`7}
- \DeclareMathSymbol{8}{\mathalpha}{\M at digits@font}{`8}
- \DeclareMathSymbol{9}{\mathalpha}{\M at digits@font}{`9}}
+ \@DMS{0}{\mathalpha}{\M at digits@font}{`0}
+ \@DMS{1}{\mathalpha}{\M at digits@font}{`1}
+ \@DMS{2}{\mathalpha}{\M at digits@font}{`2}
+ \@DMS{3}{\mathalpha}{\M at digits@font}{`3}
+ \@DMS{4}{\mathalpha}{\M at digits@font}{`4}
+ \@DMS{5}{\mathalpha}{\M at digits@font}{`5}
+ \@DMS{6}{\mathalpha}{\M at digits@font}{`6}
+ \@DMS{7}{\mathalpha}{\M at digits@font}{`7}
+ \@DMS{8}{\mathalpha}{\M at digits@font}{`8}
+ \@DMS{9}{\mathalpha}{\M at digits@font}{`9}}
\def\M at operator@set{%
\ifM at adjust@font
- \edef\M at operator@num{\number\csname symM\M at operatorshape\@tempa\endcsname}
+ \edef\M at operator@num{\number
+ \csname symM\M at operatorshape\@tempa\endcsname}
\protected\edef\M at operator@mathcodes{%
\Umathcode`A=7+\M at operator@num+`A\relax
\Umathcode`B=7+\M at operator@num+`B\relax
@@ -2420,82 +2788,74 @@
\else
\let\M at operator@mathcodes\@empty
\fi
- \xdef\operator at font{\noexpand\mathgroup
- \csname symM\M at operatorshape\@tempa\endcsname\M at operator@mathcodes}}
+ \xdef\operator at font{\mathgroup
+ \csname symM\M at operatorshape\@tempa\endcsname
+ \M at operator@mathcodes}}
\ifM at adjust@font
\def\M at delimiters@set{%
\edef\M at delimiters@font{M\M at delimitersshape\@tempa}
- \DeclareMathSymbol{(}{\mathopen}{\M at delimiters@font}{"28}
- \DeclareMathSymbol{)}{\mathclose}{\M at delimiters@font}{"29}
- \DeclareMathSymbol{[}{\mathopen}{\M at delimiters@font}{"5B}
- \DeclareMathSymbol{]}{\mathclose}{\M at delimiters@font}{"5D}
+ \edef\M at delimiters@num{%
+ \csname sym\M at delimiters@font\endcsname}
+ \@DMS{(} {\mathopen} {\M at delimiters@font}{"28}
+ \@DMS{)} {\mathclose}{\M at delimiters@font}{"29}
+ \@DMS{[} {\mathopen} {\M at delimiters@font}{"5B}
+ \@DMS{]} {\mathclose}{\M at delimiters@font}{"5D}
+ \@DMS{\leftbrace} {\mathopen}{\M at delimiters@font}{"7B}
+ \@DMS{\rightbrace}{\mathclose}{\M at delimiters@font}{"7D}
+ \global\Udelcode40 +\M at delimiters@num+40\relax % (
+ \global\Udelcode41 +\M at delimiters@num+41\relax % )
+ \global\Udelcode47 +\M at delimiters@num+47\relax % /
+ \global\Udelcode91 +\M at delimiters@num+91\relax % [
+ \global\Udelcode93 +\M at delimiters@num+93\relax % ]
+ \global\Udelcode124+\M at delimiters@num+124\relax % |
\ifM at symbols\else
- \DeclareMathSymbol{|}{\mathord}{\M at delimiters@font}{"7C}
+ \@DMS{|}{\mathord}{\M at delimiters@font}{"7C}
\fi
- \DeclareMathSymbol{\leftbrace}{\mathopen}{\M at delimiters@font}{"7B}
- \DeclareMathSymbol{\rightbrace}{\mathclose}{\M at delimiters@font}{"7D}
- \global\Udelcode40=+\csname sym\M at delimiters@font\endcsname+40\relax % (
- \global\Udelcode41=+\csname sym\M at delimiters@font\endcsname+41\relax % )
- \global\Udelcode47=+\csname sym\M at delimiters@font\endcsname+47\relax % /
- \global\Udelcode91=+\csname sym\M at delimiters@font\endcsname+91\relax % [
- \global\Udelcode93=+\csname sym\M at delimiters@font\endcsname+93\relax % ]
- \global\Udelcode124=+\csname sym\M at delimiters@font\endcsname+124\relax % |
\global\let\vert=|
- \protected\gdef\backslash{\ifmmode\mathbackslash\else\textbackslash\fi}
+ \protected\xdef\backslash{%
+ \ifmmode\mathbackslash\else\textbackslash\fi}
\protected\xdef\mathbackslash{%
- \Udelimiter+2+\number\csname sym\M at delimiters@font\endcsname
- +92\relax} % backslash
+ \Udelimiter+2+\M at delimiters@num+92\relax}
\protected\xdef\lbrace{%
- \Udelimiter+4+\number\csname sym\M at delimiters@font\endcsname
- +123\relax} % {
+ \Udelimiter+4+\M at delimiters@num+123\relax}
\protected\xdef\rbrace{%
- \Udelimiter+5+\number\csname sym\M at delimiters@font\endcsname
- +125\relax} % }
+ \Udelimiter+5+\M at delimiters@num+125\relax}
\protected\xdef\lguil{%
- \Udelimiter+4+\number\csname sym\M at delimiters@font\endcsname
- +8249\relax} % single left guilement
+ \Udelimiter+4+\M at delimiters@num+8249\relax}
\protected\xdef\rguil{%
- \Udelimiter+5+\number\csname sym\M at delimiters@font\endcsname
- +8250\relax} % single right guilement
+ \Udelimiter+5+\M at delimiters@num+8250\relax}
\protected\xdef\llguil{%
- \Udelimiter+4+\number\csname sym\M at delimiters@font\endcsname
- +171\relax} % double left guilement
+ \Udelimiter+4+\M at delimiters@num+171\relax}
\protected\xdef\rrguil{%
- \Udelimiter+5+\number\csname sym\M at delimiters@font\endcsname
- +187\relax} % double right guilement
+ \Udelimiter+5+\M at delimiters@num+187\relax}
\protected\xdef\fakelangle{%
- \Udelimiter+4+\number\csname sym\M at delimiters@font\endcsname
- +1044508\relax} % fake left angle
+ \Udelimiter+4+\M at delimiters@num+1044508\relax}
\protected\xdef\fakerangle{%
- \Udelimiter+5+\number\csname sym\M at delimiters@font\endcsname
- +1044509\relax} % fake right angle
+ \Udelimiter+5+\M at delimiters@num+1044509\relax}
\protected\xdef\fakellangle{%
- \Udelimiter+4+\number\csname sym\M at delimiters@font\endcsname
- +1044510\relax} % fake double left angle
+ \Udelimiter+4+\M at delimiters@num+1044510\relax}
\protected\xdef\fakerrangle{%
- \Udelimiter+5+\number\csname sym\M at delimiters@font\endcsname
- +1044511\relax} % fake double right angle
- }
+ \Udelimiter+5+\M at delimiters@num+1044511\relax}}
\else
\def\M at delimiters@set{%
\edef\M at delimiters@font{M\M at delimitersshape\@tempa}
- \DeclareMathSymbol{(}{\mathopen}{\M at delimiters@font}{"28}
- \DeclareMathSymbol{)}{\mathclose}{\M at delimiters@font}{"29}
- \DeclareMathSymbol{[}{\mathopen}{\M at delimiters@font}{"5B}
- \DeclareMathSymbol{]}{\mathclose}{\M at delimiters@font}{"5D}
- \DeclareMathSymbol{\lguil}{\mathopen}{\M at delimiters@font}{"2039}
- \DeclareMathSymbol{\rguil}{\mathclose}{\M at delimiters@font}{"203A}
- \DeclareMathSymbol{\llguil}{\mathopen}{\M at delimiters@font}{"AB}
- \DeclareMathSymbol{\rrguil}{\mathclose}{\M at delimiters@font}{"BB}
- \DeclareMathSymbol{\leftbrace}{\mathopen}{\M at delimiters@font}{"7B}
- \DeclareMathSymbol{\rightbrace}{\mathclose}{\M at delimiters@font}{"7D}}
+ \@DMS{(} {\mathopen} {\M at delimiters@font}{"28}
+ \@DMS{)} {\mathclose}{\M at delimiters@font}{"29}
+ \@DMS{[} {\mathopen} {\M at delimiters@font}{"5B}
+ \@DMS{]} {\mathclose}{\M at delimiters@font}{"5D}
+ \@DMS{\lguil} {\mathopen} {\M at delimiters@font}{"2039}
+ \@DMS{\rguil} {\mathclose}{\M at delimiters@font}{"203A}
+ \@DMS{\llguil} {\mathopen} {\M at delimiters@font}{"AB}
+ \@DMS{\rrguil} {\mathclose}{\M at delimiters@font}{"BB}
+ \@DMS{\leftbrace} {\mathopen} {\M at delimiters@font}{"7B}
+ \@DMS{\rightbrace}{\mathclose}{\M at delimiters@font}{"7D}}
\fi
\ifM at adjust@font
\def\M at radical@set{%
\edef\M at radical@font{M\M at radicalshape\@tempa}
- \DeclareMathSymbol{\surd}{\mathord}{\M at radical@font}{"221A}
- \xdef\@sqrts at gn##1{%
- \Uradical+\number\csname sym\M at radical@font\endcsname+8730\relax{##1}}
+ \@DMS{\surd}{\mathord}{\M at radical@font}{"221A}
+ \xdef\@sqrts at gn##1{\Uradical+\number
+ \csname sym\M at radical@font\endcsname+8730\relax{##1}}
\gdef\r@@t##1##2{%
\setbox\z@\hbox{$\m at th##1\sqrtsign{##2}$}%
\setbox\surdbox\hbox{$\m at th##1\@sqrts at gn{%
@@ -2516,15 +2876,15 @@
\else
\def\M at radical@set{%
\edef\M at radical@font{M\M at radicalshape\@tempa}
- \DeclareMathSymbol{\surd}{\mathord}{\M at radical@font}{"221A}}
+ \@DMS{\surd}{\mathord}{\M at radical@font}{"221A}}
\fi
\def\M at bigops@set{%
\edef\M at bigops@font{M\M at bigopsshape\@tempa}
\let\sum\@undefined
\let\prod\@undefined
- \DeclareMathSymbol{\sum}{\mathop}{\M at bigops@font}{"2211}
- \DeclareMathSymbol{\prod}{\mathop}{\M at bigops@font}{"220F}
- \DeclareMathSymbol{\intop}{\mathop}{\M at bigops@font}{"222B}}
+ \@DMS{\sum}{\mathop}{\M at bigops@font}{"2211}
+ \@DMS{\prod}{\mathop}{\M at bigops@font}{"220F}
+ \@DMS{\intop}{\mathop}{\M at bigops@font}{"222B}}
\def\M at extbigops@set{%
\edef\M at extbigops@font{M\M at extbigopsshape\@tempa}
\let\coprod\@undefined
@@ -2536,105 +2896,120 @@
\let\bigotimes\@undefined
\let\bigodot\@undefined
\let\bigsqcup\@undefined
- \DeclareMathSymbol{\coprod}{\mathop}{\M at extbigops@font}{"2210}
- \DeclareMathSymbol{\bigvee}{\mathop}{\M at extbigops@font}{"22C1}
- \DeclareMathSymbol{\bigwedge}{\mathop}{\M at extbigops@font}{"22C0}
- \DeclareMathSymbol{\bigcup}{\mathop}{\M at extbigops@font}{"22C3}
- \DeclareMathSymbol{\bigcap}{\mathop}{\M at extbigops@font}{"22C2}
- \DeclareMathSymbol{\iintop}{\mathop}{\M at extbigops@font}{"222C}
- \protected\gdef\iint{\iintop\nolimits}
- \DeclareMathSymbol{\iiintop}{\mathop}{\M at extbigops@font}{"222D}
- \protected\gdef\iiint{\iiintop\nolimits}
- \DeclareMathSymbol{\ointop}{\mathop}{\M at extbigops@font}{"222E}
- \protected\gdef\oint{\ointop\nolimits}
- \DeclareMathSymbol{\oiintop}{\mathop}{\M at extbigops@font}{"222F}
- \protected\gdef\oiint{\oiintop\nolimits}
- \DeclareMathSymbol{\oiiintop}{\mathop}{\M at extbigops@font}{"2230}
- \protected\gdef\oiiint{\oiiintop\nolimits}
- \DeclareMathSymbol{\bigoplus}{\mathop}{\M at extbigops@font}{"2A01}
- \DeclareMathSymbol{\bigotimes}{\mathop}{\M at extbigops@font}{"2A02}
- \DeclareMathSymbol{\bigodot}{\mathop}{\M at extbigops@font}{"2A00}
- \DeclareMathSymbol{\bigsqcap}{\mathop}{\M at extbigops@font}{"2A05}
- \DeclareMathSymbol{\bigsqcup}{\mathop}{\M at extbigops@font}{"2A06}}
+ \@DMS{\coprod} {\mathop}{\M at extbigops@font}{"2210}
+ \@DMS{\bigvee} {\mathop}{\M at extbigops@font}{"22C1}
+ \@DMS{\bigwedge} {\mathop}{\M at extbigops@font}{"22C0}
+ \@DMS{\bigcup} {\mathop}{\M at extbigops@font}{"22C3}
+ \@DMS{\bigcap} {\mathop}{\M at extbigops@font}{"22C2}
+ \@DMS{\iintop} {\mathop}{\M at extbigops@font}{"222C}
+ \@DMS{\iiintop} {\mathop}{\M at extbigops@font}{"222D}
+ \@DMS{\ointop} {\mathop}{\M at extbigops@font}{"222E}
+ \@DMS{\oiintop} {\mathop}{\M at extbigops@font}{"222F}
+ \@DMS{\oiiintop} {\mathop}{\M at extbigops@font}{"2230}
+ \@DMS{\bigoplus} {\mathop}{\M at extbigops@font}{"2A01}
+ \@DMS{\bigotimes}{\mathop}{\M at extbigops@font}{"2A02}
+ \@DMS{\bigodot} {\mathop}{\M at extbigops@font}{"2A00}
+ \@DMS{\bigsqcap} {\mathop}{\M at extbigops@font}{"2A05}
+ \@DMS{\bigsqcup} {\mathop}{\M at extbigops@font}{"2A06}
+ \protected\gdef\iint{\iintop\nolimits}
+ \protected\gdef\iiint{\iiintop\nolimits}
+ \protected\gdef\oint{\ointop\nolimits}
+ \protected\gdef\oiint{\oiintop\nolimits}
+ \protected\gdef\oiiint{\oiiintop\nolimits}}
\def\M at symbols@set{%
\edef\M at symbols@font{M\M at symbolsshape\@tempa}
\let\colon\@undefined
\let\mathellipsis\@undefined
- \DeclareMathSymbol{.}{\mathord}{\M at symbols@font}{"2E}
- \DeclareMathSymbol{@}{\mathord}{\M at symbols@font}{"40}
- \DeclareMathSymbol{'}{\mathord}{\M at symbols@font}{"2032}
- \DeclareMathSymbol{\prime}{\mathord}{\M at symbols@font}{"2032}
- \DeclareMathSymbol{"}{\mathord}{\M at symbols@font}{"2033}
- \DeclareMathSymbol{\mathhash}{\mathord}{\M at symbols@font}{"23}
- \DeclareMathSymbol{\mathdollar}{\mathord}{\M at symbols@font}{"24}
- \DeclareMathSymbol{\mathpercent}{\mathord}{\M at symbols@font}{"25}
- \DeclareMathSymbol{\mathand}{\mathord}{\M at symbols@font}{"26}
- \DeclareMathSymbol{\mathparagraph}{\mathord}{\M at symbols@font}{"B6}
- \DeclareMathSymbol{\mathsection}{\mathord}{\M at symbols@font}{"A7}
- \DeclareMathSymbol{\mathsterling}{\mathord}{\M at symbols@font}{"A3}
- \DeclareMathSymbol{\neg}{\mathord}{\M at symbols@font}{"AC}
- \DeclareMathSymbol{|}{\mathord}{\M at symbols@font}{"7C}
- \DeclareMathSymbol{\infty}{\mathord}{\M at symbols@font}{"221E}
- \DeclareMathSymbol{\partial}{\mathord}{\M at symbols@font}{"2202}
- \DeclareMathSymbol{\degree}{\mathord}{\M at symbols@font}{"B0}
- \DeclareMathSymbol{\increment}{\mathord}{\M at symbols@font}{"2206}
- \DeclareMathSymbol{\comma}{\mathord}{\M at symbols@font}{"2C}
- \DeclareMathSymbol{+}{\mathbin}{\M at symbols@font}{"2B}
- \DeclareMathSymbol{-}{\mathbin}{\M at symbols@font}{"2212}
- \DeclareMathSymbol{*}{\mathbin}{\M at symbols@font}{"2A}
- \DeclareMathSymbol{\times}{\mathbin}{\M at symbols@font}{"D7}
- \DeclareMathSymbol{/}{\mathord}{\M at symbols@font}{"2F}
- \DeclareMathSymbol{\fractionslash}{\mathord}{\M at symbols@font}{"2215}
- \DeclareMathSymbol{\div}{\mathbin}{\M at symbols@font}{"F7}
- \DeclareMathSymbol{\pm}{\mathbin}{\M at symbols@font}{"B1}
- \DeclareMathSymbol{\bullet}{\mathbin}{\M at symbols@font}{"2022}
- \DeclareMathSymbol{\dagger}{\mathbin}{\M at symbols@font}{"2020}
- \DeclareMathSymbol{\ddagger}{\mathbin}{\M at symbols@font}{"2021}
- \DeclareMathSymbol{\cdot}{\mathbin}{\M at symbols@font}{"2219}
- \DeclareMathSymbol{\setminus}{\mathbin}{\M at symbols@font}{"5C}
- \DeclareMathSymbol{=}{\mathrel}{\M at symbols@font}{"3D}
- \DeclareMathSymbol{<}{\mathrel}{\M at symbols@font}{"3C}
- \DeclareMathSymbol{>}{\mathrel}{\M at symbols@font}{"3E}
- \DeclareMathSymbol{\leq}{\mathrel}{\M at symbols@font}{"2264}
- \DeclareMathSymbol{\geq}{\mathrel}{\M at symbols@font}{"2265}
- \DeclareMathSymbol{\sim}{\mathrel}{\M at symbols@font}{"7E}
- \DeclareMathSymbol{\approx}{\mathrel}{\M at symbols@font}{"2248}
- \DeclareMathSymbol{\equiv}{\mathrel}{\M at symbols@font}{"2261}
- \DeclareMathSymbol{\mid}{\mathrel}{\M at symbols@font}{"7C}
- \DeclareMathSymbol{\parallel}{\mathrel}{\M at symbols@font}{"2016}
- \DeclareMathSymbol{:}{\mathrel}{\M at symbols@font}{"3A}
- \DeclareMathSymbol{?}{\mathclose}{\M at symbols@font}{"3F}
- \DeclareMathSymbol{!}{\mathclose}{\M at symbols@font}{"21}
- \DeclareMathSymbol{,}{\mathpunct}{\M at symbols@font}{"2C}
- \DeclareMathSymbol{;}{\mathpunct}{\M at symbols@font}{"3B}
- \DeclareMathSymbol{\colon}{\mathord}{\M at symbols@font}{"3A}
- \DeclareMathSymbol{\mathellipsis}{\mathinner}{\M at symbols@font}{"2026}
+ \ifM at arrows\else
+ \global\Umathcharnumdef\@relbar=\Umathcodenum`\-
+ \global\Umathcharnumdef\@Relbar=\Umathcodenum`\=
+ \protected\gdef\relbar{\mathrel
+ {\mathpalette\mathsm at sh\@relbar}}
+ \protected\gdef\Relbar{\@Relbar}
+ \@ifpackageloaded{amsmath}
+ {\relax}{%
+ \global\let\@@relbar\relbar
+ \global\let\@@Relbar\Relbar
+ \AtBeginDocument{\ifM at arrows\else
+ \@ifpackageloaded{amsmath}{%
+ \global\let\relbar\@@relbar
+ \global\let\Relbar\@@Relbar}
+ {\relax}
+ \fi}}
+ \fi
+ \@DMS{.} {\mathord} {\M at symbols@font}{"2E}
+ \@DMS{@} {\mathord} {\M at symbols@font}{"40}
+ \@DMS{'} {\mathord} {\M at symbols@font}{"2032}
+ \@DMS{\prime} {\mathord} {\M at symbols@font}{"2032}
+ \@DMS{"} {\mathord} {\M at symbols@font}{"2033}
+ \@DMS{\mathhash} {\mathord} {\M at symbols@font}{"23}
+ \@DMS{\mathdollar} {\mathord} {\M at symbols@font}{"24}
+ \@DMS{\mathpercent} {\mathord} {\M at symbols@font}{"25}
+ \@DMS{\mathand} {\mathord} {\M at symbols@font}{"26}
+ \@DMS{\mathparagraph}{\mathord} {\M at symbols@font}{"B6}
+ \@DMS{\mathsection} {\mathord} {\M at symbols@font}{"A7}
+ \@DMS{\mathsterling} {\mathord} {\M at symbols@font}{"A3}
+ \@DMS{\neg} {\mathord} {\M at symbols@font}{"AC}
+ \@DMS{|} {\mathord} {\M at symbols@font}{"7C}
+ \@DMS{\infty} {\mathord} {\M at symbols@font}{"221E}
+ \@DMS{\partial} {\mathord} {\M at symbols@font}{"2202}
+ \@DMS{\degree} {\mathord} {\M at symbols@font}{"B0}
+ \@DMS{\increment} {\mathord} {\M at symbols@font}{"2206}
+ \@DMS{\comma} {\mathord} {\M at symbols@font}{"2C}
+ \@DMS{+} {\mathbin} {\M at symbols@font}{"2B}
+ \@DMS{-} {\mathbin} {\M at symbols@font}{"2212}
+ \@DMS{*} {\mathbin} {\M at symbols@font}{"2A}
+ \@DMS{\times} {\mathbin} {\M at symbols@font}{"D7}
+ \@DMS{/} {\mathord} {\M at symbols@font}{"2F}
+ \@DMS{\fractionslash}{\mathord} {\M at symbols@font}{"2215}
+ \@DMS{\div} {\mathbin} {\M at symbols@font}{"F7}
+ \@DMS{\pm} {\mathbin} {\M at symbols@font}{"B1}
+ \@DMS{\bullet} {\mathbin} {\M at symbols@font}{"2022}
+ \@DMS{\dagger} {\mathbin} {\M at symbols@font}{"2020}
+ \@DMS{\ddagger} {\mathbin} {\M at symbols@font}{"2021}
+ \@DMS{\cdot} {\mathbin} {\M at symbols@font}{"2219}
+ \@DMS{\setminus} {\mathbin} {\M at symbols@font}{"5C}
+ \@DMS{=} {\mathrel} {\M at symbols@font}{"3D}
+ \@DMS{<} {\mathrel} {\M at symbols@font}{"3C}
+ \@DMS{>} {\mathrel} {\M at symbols@font}{"3E}
+ \@DMS{\leq} {\mathrel} {\M at symbols@font}{"2264}
+ \@DMS{\geq} {\mathrel} {\M at symbols@font}{"2265}
+ \@DMS{\sim} {\mathrel} {\M at symbols@font}{"7E}
+ \@DMS{\approx} {\mathrel} {\M at symbols@font}{"2248}
+ \@DMS{\equiv} {\mathrel} {\M at symbols@font}{"2261}
+ \@DMS{\mid} {\mathrel} {\M at symbols@font}{"7C}
+ \@DMS{\parallel} {\mathrel} {\M at symbols@font}{"2016}
+ \@DMS{:} {\mathrel} {\M at symbols@font}{"3A}
+ \@DMS{?} {\mathclose}{\M at symbols@font}{"3F}
+ \@DMS{!} {\mathclose}{\M at symbols@font}{"21}
+ \@DMS{,} {\mathpunct}{\M at symbols@font}{"2C}
+ \@DMS{;} {\mathpunct}{\M at symbols@font}{"3B}
+ \@DMS{\colon} {\mathpunct}{\M at symbols@font}{"3A}
+ \@DMS{\mathellipsis} {\mathinner}{\M at 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 at extsymbols\else
- \protected\gdef\simeq{\mathrel{\mathpalette\stack at flatrel{{-}{\sim}}}}
- \protected\gdef\cong{\mathrel{\mathpalette\stack at flatrel{{=}{\sim}}}}
+ \protected\gdef\simeq{%
+ \mathrel{\mathpalette\stack at flatrel{{-}{\sim}}}}
+ \protected\gdef\cong{%
+ \mathrel{\mathpalette\stack at flatrel{{=}{\sim}}}}
\fi
- \protected\gdef\relbar{\mathrel{\smash\@relbar}}
- \protected\gdef\Relbar{\mathrel{\@Relbar}}
- \protected\gdef\models{\mathrel{\@verticalbar}\joinrel\Relbar}
+ \protected\gdef\models{\mathrel{|}\joinrel\mathrel{=}}
\ifM at adjust@font
- \DeclareMathSymbol{\bigat}{\mathop}{\M at symbols@font}{"40}
- \DeclareMathSymbol{\bighash}{\mathop}{\M at symbols@font}{"23}
- \DeclareMathSymbol{\bigdollar}{\mathop}{\M at symbols@font}{"24}
- \DeclareMathSymbol{\bigpercent}{\mathop}{\M at symbols@font}{"25}
- \DeclareMathSymbol{\bigand}{\mathop}{\M at symbols@font}{"26}
- \DeclareMathSymbol{\bigplus}{\mathop}{\M at symbols@font}{"2B}
- \DeclareMathSymbol{\bigp}{\mathop}{\M at symbols@font}{"21}
- \DeclareMathSymbol{\bigq}{\mathop}{\M at symbols@font}{"3F}
- \DeclareMathSymbol{\bigS}{\mathop}{\M at symbols@font}{"A7}
- \DeclareMathSymbol{\bigtimes}{\mathop}{\M at symbols@font}{"D7}
- \DeclareMathSymbol{\bigdiv}{\mathop}{\M at symbols@font}{"F7}
- \DeclareMathSymbol{\nabla}{\mathord}{\M at symbols@font}{"2207}
+ \let\bigtimes\@undefined
+ \@DMS{\bigat} {\mathop}{\M at symbols@font}{"40}
+ \@DMS{\bighash} {\mathop}{\M at symbols@font}{"23}
+ \@DMS{\bigdollar} {\mathop}{\M at symbols@font}{"24}
+ \@DMS{\bigpercent}{\mathop}{\M at symbols@font}{"25}
+ \@DMS{\bigand} {\mathop}{\M at symbols@font}{"26}
+ \@DMS{\bigplus} {\mathop}{\M at symbols@font}{"2B}
+ \@DMS{\bigp} {\mathop}{\M at symbols@font}{"21}
+ \@DMS{\bigq} {\mathop}{\M at symbols@font}{"3F}
+ \@DMS{\bigS} {\mathop}{\M at symbols@font}{"A7}
+ \@DMS{\bigtimes} {\mathop}{\M at symbols@font}{"D7}
+ \@DMS{\bigdiv} {\mathop}{\M at symbols@font}{"F7}
+ \@DMS{\nabla} {\mathord}{\M at symbols@font}{"2207}
\fi}
\def\M at extsymbols@set{%
\edef\M at extsymbols@font{M\M at extsymbolsshape\@tempa}
@@ -2645,177 +3020,183 @@
\let\bowtie\@undefined
\let\doteq\@undefined
\let\neq\@undefined
- \DeclareMathSymbol{\wp}{\mathord}{\M at extsymbols@font}{"2118}
- \DeclareMathSymbol{\Re}{\mathord}{\M at extsymbols@font}{"211C}
- \DeclareMathSymbol{\Im}{\mathord}{\M at extsymbols@font}{"2111}
- \DeclareMathSymbol{\ell}{\mathord}{\M at extsymbols@font}{"2113}
- \DeclareMathSymbol{\forall}{\mathord}{\M at extsymbols@font}{"2200}
- \DeclareMathSymbol{\exists}{\mathord}{\M at extsymbols@font}{"2203}
- \DeclareMathSymbol{\emptyset}{\mathord}{\M at extsymbols@font}{"2205}
- \DeclareMathSymbol{\in}{\mathord}{\M at extsymbols@font}{"2208}
- \DeclareMathSymbol{\ni}{\mathord}{\M at extsymbols@font}{"220B}
- \DeclareMathSymbol{\mp}{\mathord}{\M at extsymbols@font}{"2213}
- \DeclareMathSymbol{\angle}{\mathord}{\M at extsymbols@font}{"2220}
- \DeclareMathSymbol{\top}{\mathord}{\M at extsymbols@font}{"22A4}
- \DeclareMathSymbol{\bot}{\mathord}{\M at extsymbols@font}{"22A5}
- \DeclareMathSymbol{\vdash}{\mathord}{\M at extsymbols@font}{"22A2}
- \DeclareMathSymbol{\dashv}{\mathord}{\M at extsymbols@font}{"22A3}
- \DeclareMathSymbol{\flat}{\mathord}{\M at extsymbols@font}{"266D}
- \DeclareMathSymbol{\natural}{\mathord}{\M at extsymbols@font}{"266E}
- \DeclareMathSymbol{\sharp}{\mathord}{\M at extsymbols@font}{"266F}
- \DeclareMathSymbol{\fflat}{\mathord}{\M at extsymbols@font}{"1D12B}
- \DeclareMathSymbol{\ssharp}{\mathord}{\M at extsymbols@font}{"1D12A}
- \DeclareMathSymbol{\bclubsuit}{\mathord}{\M at extsymbols@font}{"2663}
- \DeclareMathSymbol{\bdiamondsuit}{\mathord}{\M at extsymbols@font}{"2666}
- \DeclareMathSymbol{\bheartsuit}{\mathord}{\M at extsymbols@font}{"2665}
- \DeclareMathSymbol{\bspadesuit}{\mathord}{\M at extsymbols@font}{"2660}
- \DeclareMathSymbol{\wclubsuit}{\mathord}{\M at extsymbols@font}{"2667}
- \DeclareMathSymbol{\wdiamondsuit}{\mathord}{\M at extsymbols@font}{"2662}
- \DeclareMathSymbol{\wheartsuit}{\mathord}{\M at extsymbols@font}{"2661}
- \DeclareMathSymbol{\wspadesuit}{\mathord}{\M at extsymbols@font}{"2664}
+ \@DMS{\wp} {\mathord}{\M at extsymbols@font}{"2118}
+ \@DMS{\ell} {\mathord}{\M at extsymbols@font}{"2113}
+ \@DMS{\forall} {\mathord}{\M at extsymbols@font}{"2200}
+ \@DMS{\exists} {\mathord}{\M at extsymbols@font}{"2203}
+ \@DMS{\emptyset} {\mathord}{\M at extsymbols@font}{"2205}
+ \@DMS{\in} {\mathord}{\M at extsymbols@font}{"2208}
+ \@DMS{\ni} {\mathord}{\M at extsymbols@font}{"220B}
+ \@DMS{\mp} {\mathord}{\M at extsymbols@font}{"2213}
+ \@DMS{\angle} {\mathord}{\M at extsymbols@font}{"2220}
+ \@DMS{\top} {\mathord}{\M at extsymbols@font}{"22A4}
+ \@DMS{\bot} {\mathord}{\M at extsymbols@font}{"22A5}
+ \@DMS{\vdash} {\mathord}{\M at extsymbols@font}{"22A2}
+ \@DMS{\dashv} {\mathord}{\M at extsymbols@font}{"22A3}
+ \@DMS{\flat} {\mathord}{\M at extsymbols@font}{"266D}
+ \@DMS{\natural} {\mathord}{\M at extsymbols@font}{"266E}
+ \@DMS{\sharp} {\mathord}{\M at extsymbols@font}{"266F}
+ \@DMS{\fflat} {\mathord}{\M at extsymbols@font}{"1D12B}
+ \@DMS{\ssharp} {\mathord}{\M at extsymbols@font}{"1D12A}
+ \@DMS{\bclubsuit} {\mathord}{\M at extsymbols@font}{"2663}
+ \@DMS{\bdiamondsuit} {\mathord}{\M at extsymbols@font}{"2666}
+ \@DMS{\bheartsuit} {\mathord}{\M at extsymbols@font}{"2665}
+ \@DMS{\bspadesuit} {\mathord}{\M at extsymbols@font}{"2660}
+ \@DMS{\wclubsuit} {\mathord}{\M at extsymbols@font}{"2667}
+ \@DMS{\wdiamondsuit} {\mathord}{\M at extsymbols@font}{"2662}
+ \@DMS{\wheartsuit} {\mathord}{\M at extsymbols@font}{"2661}
+ \@DMS{\wspadesuit} {\mathord}{\M at extsymbols@font}{"2664}
\global\let\spadesuit\bspadesuit
\global\let\heartsuit\wheartsuit
\global\let\diamondsuit\wdiamondsuit
\global\let\clubsuit\bclubsuit
- \DeclareMathSymbol{\wedge}{\mathbin}{\M at extsymbols@font}{"2227}
- \DeclareMathSymbol{\vee}{\mathbin}{\M at extsymbols@font}{"2228}
- \DeclareMathSymbol{\cap}{\mathord}{\M at extsymbols@font}{"2229}
- \DeclareMathSymbol{\cup}{\mathbin}{\M at extsymbols@font}{"222A}
- \DeclareMathSymbol{\sqcap}{\mathbin}{\M at extsymbols@font}{"2293}
- \DeclareMathSymbol{\sqcup}{\mathbin}{\M at extsymbols@font}{"2294}
- \DeclareMathSymbol{\amalg}{\mathbin}{\M at extsymbols@font}{"2A3F}
- \DeclareMathSymbol{\wr}{\mathbin}{\M at extsymbols@font}{"2240}
- \DeclareMathSymbol{\ast}{\mathbin}{\M at extsymbols@font}{"2217}
- \DeclareMathSymbol{\star}{\mathbin}{\M at extsymbols@font}{"22C6}
- \DeclareMathSymbol{\diamond}{\mathbin}{\M at extsymbols@font}{"22C4}
- \DeclareMathSymbol{\varcdot}{\mathbin}{\M at extsymbols@font}{"22C5}
- \DeclareMathSymbol{\varsetminus}{\mathbin}{\M at extsymbols@font}{"2216}
- \DeclareMathSymbol{\oplus}{\mathbin}{\M at extsymbols@font}{"2295}
- \DeclareMathSymbol{\otimes}{\mathbin}{\M at extsymbols@font}{"2297}
- \DeclareMathSymbol{\ominus}{\mathbin}{\M at extsymbols@font}{"2296}
- \DeclareMathSymbol{\odiv}{\mathbin}{\M at extsymbols@font}{"2A38}
- \DeclareMathSymbol{\oslash}{\mathbin}{\M at extsymbols@font}{"2298}
- \DeclareMathSymbol{\odot}{\mathbin}{\M at extsymbols@font}{"2299}
- \DeclareMathSymbol{\sqplus}{\mathbin}{\M at extsymbols@font}{"229E}
- \DeclareMathSymbol{\sqtimes}{\mathbin}{\M at extsymbols@font}{"22A0}
- \DeclareMathSymbol{\sqminus}{\mathbin}{\M at extsymbols@font}{"229F}
- \DeclareMathSymbol{\sqdot}{\mathbin}{\M at extsymbols@font}{"22A1}
- \DeclareMathSymbol{\in}{\mathrel}{\M at extsymbols@font}{"2208}
- \DeclareMathSymbol{\ni}{\mathrel}{\M at extsymbols@font}{"220B}
- \DeclareMathSymbol{\subset}{\mathrel}{\M at extsymbols@font}{"2282}
- \DeclareMathSymbol{\supset}{\mathrel}{\M at extsymbols@font}{"2283}
- \DeclareMathSymbol{\subseteq}{\mathrel}{\M at extsymbols@font}{"2286}
- \DeclareMathSymbol{\supseteq}{\mathrel}{\M at extsymbols@font}{"2287}
- \DeclareMathSymbol{\sqsubset}{\mathrel}{\M at extsymbols@font}{"228F}
- \DeclareMathSymbol{\sqsupset}{\mathrel}{\M at extsymbols@font}{"2290}
- \DeclareMathSymbol{\sqsubseteq}{\mathrel}{\M at extsymbols@font}{"2291}
- \DeclareMathSymbol{\sqsupseteq}{\mathrel}{\M at extsymbols@font}{"2292}
- \DeclareMathSymbol{\triangleleft}{\mathrel}{\M at extsymbols@font}{"22B2}
- \DeclareMathSymbol{\triangleright}{\mathrel}{\M at extsymbols@font}{"22B3}
- \DeclareMathSymbol{\trianglelefteq}{\mathrel}{\M at extsymbols@font}{"22B4}
- \DeclareMathSymbol{\trianglerighteq}{\mathrel}{\M at extsymbols@font}{"22B5}
- \DeclareMathSymbol{\propto}{\mathrel}{\M at extsymbols@font}{"221D}
- \DeclareMathSymbol{\bowtie}{\mathrel}{\M at extsymbols@font}{"22C8}
- \DeclareMathSymbol{\hourglass}{\mathrel}{\M at extsymbols@font}{"29D6}
- \DeclareMathSymbol{\therefore}{\mathrel}{\M at extsymbols@font}{"2234}
- \DeclareMathSymbol{\because}{\mathrel}{\M at extsymbols@font}{"2235}
- \DeclareMathSymbol{\ratio}{\mathrel}{\M at extsymbols@font}{"2236}
- \DeclareMathSymbol{\proportion}{\mathrel}{\M at extsymbols@font}{"2237}
- \DeclareMathSymbol{\ll}{\mathrel}{\M at extsymbols@font}{"226A}
- \DeclareMathSymbol{\gg}{\mathrel}{\M at extsymbols@font}{"226B}
- \DeclareMathSymbol{\lll}{\mathrel}{\M at extsymbols@font}{"22D8}
- \DeclareMathSymbol{\ggg}{\mathrel}{\M at extsymbols@font}{"22D9}
- \DeclareMathSymbol{\leqq}{\mathrel}{\M at extsymbols@font}{"2266}
- \DeclareMathSymbol{\geqq}{\mathrel}{\M at extsymbols@font}{"2267}
- \DeclareMathSymbol{\lapprox}{\mathrel}{\M at extsymbols@font}{"2A85}
- \DeclareMathSymbol{\gapprox}{\mathrel}{\M at extsymbols@font}{"2A86}
- \DeclareMathSymbol{\simeq}{\mathrel}{\M at extsymbols@font}{"2243}
- \DeclareMathSymbol{\eqsim}{\mathrel}{\M at extsymbols@font}{"2242}
- \DeclareMathSymbol{\simeqq}{\mathrel}{\M at extsymbols@font}{"2245}
+ \@DMS{\wedge} {\mathbin}{\M at extsymbols@font}{"2227}
+ \@DMS{\vee} {\mathbin}{\M at extsymbols@font}{"2228}
+ \@DMS{\cap} {\mathord}{\M at extsymbols@font}{"2229}
+ \@DMS{\cup} {\mathbin}{\M at extsymbols@font}{"222A}
+ \@DMS{\sqcap} {\mathbin}{\M at extsymbols@font}{"2293}
+ \@DMS{\sqcup} {\mathbin}{\M at extsymbols@font}{"2294}
+ \@DMS{\amalg} {\mathbin}{\M at extsymbols@font}{"2A3F}
+ \@DMS{\wr} {\mathbin}{\M at extsymbols@font}{"2240}
+ \@DMS{\ast} {\mathbin}{\M at extsymbols@font}{"2217}
+ \@DMS{\star} {\mathbin}{\M at extsymbols@font}{"22C6}
+ \@DMS{\diamond} {\mathbin}{\M at extsymbols@font}{"22C4}
+ \@DMS{\varcdot} {\mathbin}{\M at extsymbols@font}{"22C5}
+ \@DMS{\varsetminus} {\mathbin}{\M at extsymbols@font}{"2216}
+ \@DMS{\oplus} {\mathbin}{\M at extsymbols@font}{"2295}
+ \@DMS{\otimes} {\mathbin}{\M at extsymbols@font}{"2297}
+ \@DMS{\ominus} {\mathbin}{\M at extsymbols@font}{"2296}
+ \@DMS{\odiv} {\mathbin}{\M at extsymbols@font}{"2A38}
+ \@DMS{\oslash} {\mathbin}{\M at extsymbols@font}{"2298}
+ \@DMS{\odot} {\mathbin}{\M at extsymbols@font}{"2299}
+ \@DMS{\sqplus} {\mathbin}{\M at extsymbols@font}{"229E}
+ \@DMS{\sqtimes} {\mathbin}{\M at extsymbols@font}{"22A0}
+ \@DMS{\sqminus} {\mathbin}{\M at extsymbols@font}{"229F}
+ \@DMS{\sqdot} {\mathbin}{\M at extsymbols@font}{"22A1}
+ \@DMS{\in} {\mathrel}{\M at extsymbols@font}{"2208}
+ \@DMS{\ni} {\mathrel}{\M at extsymbols@font}{"220B}
+ \@DMS{\subset} {\mathrel}{\M at extsymbols@font}{"2282}
+ \@DMS{\supset} {\mathrel}{\M at extsymbols@font}{"2283}
+ \@DMS{\subseteq} {\mathrel}{\M at extsymbols@font}{"2286}
+ \@DMS{\supseteq} {\mathrel}{\M at extsymbols@font}{"2287}
+ \@DMS{\sqsubset} {\mathrel}{\M at extsymbols@font}{"228F}
+ \@DMS{\sqsupset} {\mathrel}{\M at extsymbols@font}{"2290}
+ \@DMS{\sqsubseteq} {\mathrel}{\M at extsymbols@font}{"2291}
+ \@DMS{\sqsupseteq} {\mathrel}{\M at extsymbols@font}{"2292}
+ \@DMS{\triangleleft} {\mathrel}{\M at extsymbols@font}{"22B2}
+ \@DMS{\triangleright} {\mathrel}{\M at extsymbols@font}{"22B3}
+ \@DMS{\trianglelefteq} {\mathrel}{\M at extsymbols@font}{"22B4}
+ \@DMS{\trianglerighteq} {\mathrel}{\M at extsymbols@font}{"22B5}
+ \@DMS{\propto} {\mathrel}{\M at extsymbols@font}{"221D}
+ \@DMS{\bowtie} {\mathrel}{\M at extsymbols@font}{"22C8}
+ \@DMS{\hourglass} {\mathrel}{\M at extsymbols@font}{"29D6}
+ \@DMS{\therefore} {\mathrel}{\M at extsymbols@font}{"2234}
+ \@DMS{\because} {\mathrel}{\M at extsymbols@font}{"2235}
+ \@DMS{\ratio} {\mathrel}{\M at extsymbols@font}{"2236}
+ \@DMS{\proportion} {\mathrel}{\M at extsymbols@font}{"2237}
+ \@DMS{\ll} {\mathrel}{\M at extsymbols@font}{"226A}
+ \@DMS{\gg} {\mathrel}{\M at extsymbols@font}{"226B}
+ \@DMS{\lll} {\mathrel}{\M at extsymbols@font}{"22D8}
+ \@DMS{\ggg} {\mathrel}{\M at extsymbols@font}{"22D9}
+ \@DMS{\leqq} {\mathrel}{\M at extsymbols@font}{"2266}
+ \@DMS{\geqq} {\mathrel}{\M at extsymbols@font}{"2267}
+ \@DMS{\lapprox} {\mathrel}{\M at extsymbols@font}{"2A85}
+ \@DMS{\gapprox} {\mathrel}{\M at extsymbols@font}{"2A86}
+ \@DMS{\simeq} {\mathrel}{\M at extsymbols@font}{"2243}
+ \@DMS{\eqsim} {\mathrel}{\M at extsymbols@font}{"2242}
+ \@DMS{\simeqq} {\mathrel}{\M at extsymbols@font}{"2245}
\global\let\cong\simeqq
- \DeclareMathSymbol{\approxeq}{\mathrel}{\M at extsymbols@font}{"224A}
- \DeclareMathSymbol{\sssim}{\mathrel}{\M at extsymbols@font}{"224B}
- \DeclareMathSymbol{\seq}{\mathrel}{\M at extsymbols@font}{"224C}
- \DeclareMathSymbol{\doteq}{\mathrel}{\M at extsymbols@font}{"2250}
- \DeclareMathSymbol{\coloneq}{\mathrel}{\M at extsymbols@font}{"2254}
- \DeclareMathSymbol{\eqcolon}{\mathrel}{\M at extsymbols@font}{"2255}
- \DeclareMathSymbol{\ringeq}{\mathrel}{\M at extsymbols@font}{"2257}
- \DeclareMathSymbol{\arceq}{\mathrel}{\M at extsymbols@font}{"2258}
- \DeclareMathSymbol{\wedgeeq}{\mathrel}{\M at extsymbols@font}{"2259}
- \DeclareMathSymbol{\veeeq}{\mathrel}{\M at extsymbols@font}{"225A}
- \DeclareMathSymbol{\stareq}{\mathrel}{\M at extsymbols@font}{"225B}
- \DeclareMathSymbol{\triangleeq}{\mathrel}{\M at extsymbols@font}{"225C}
- \DeclareMathSymbol{\defeq}{\mathrel}{\M at extsymbols@font}{"225D}
- \DeclareMathSymbol{\qeq}{\mathrel}{\M at extsymbols@font}{"225F}
- \DeclareMathSymbol{\lsim}{\mathrel}{\M at extsymbols@font}{"2272}
- \DeclareMathSymbol{\gsim}{\mathrel}{\M at extsymbols@font}{"2273}
- \DeclareMathSymbol{\prec}{\mathrel}{\M at extsymbols@font}{"227A}
- \DeclareMathSymbol{\succ}{\mathrel}{\M at extsymbols@font}{"227B}
- \DeclareMathSymbol{\preceq}{\mathrel}{\M at extsymbols@font}{"227C}
- \DeclareMathSymbol{\succeq}{\mathrel}{\M at extsymbols@font}{"227D}
- \DeclareMathSymbol{\preceqq}{\mathrel}{\M at extsymbols@font}{"2AB3}
- \DeclareMathSymbol{\succeqq}{\mathrel}{\M at extsymbols@font}{"2AB4}
- \DeclareMathSymbol{\precsim}{\mathrel}{\M at extsymbols@font}{"227E}
- \DeclareMathSymbol{\succsim}{\mathrel}{\M at extsymbols@font}{"227F}
- \DeclareMathSymbol{\precapprox}{\mathrel}{\M at extsymbols@font}{"2AB7}
- \DeclareMathSymbol{\succapprox}{\mathrel}{\M at extsymbols@font}{"2AB8}
- \DeclareMathSymbol{\precprec}{\mathrel}{\M at extsymbols@font}{"2ABB}
- \DeclareMathSymbol{\succsucc}{\mathrel}{\M at extsymbols@font}{"2ABC}
- \DeclareMathSymbol{\asymp}{\mathrel}{\M at extsymbols@font}{"224D}
- \DeclareMathSymbol{\nin}{\mathrel}{\M at extsymbols@font}{"2209}
- \DeclareMathSymbol{\nni}{\mathrel}{\M at extsymbols@font}{"220C}
- \DeclareMathSymbol{\nsubset}{\mathrel}{\M at extsymbols@font}{"2284}
- \DeclareMathSymbol{\nsupset}{\mathrel}{\M at extsymbols@font}{"2285}
- \DeclareMathSymbol{\nsubseteq}{\mathrel}{\M at extsymbols@font}{"2288}
- \DeclareMathSymbol{\nsupseteq}{\mathrel}{\M at extsymbols@font}{"2289}
- \DeclareMathSymbol{\subsetneq}{\mathrel}{\M at extsymbols@font}{"228A}
- \DeclareMathSymbol{\supsetneq}{\mathrel}{\M at extsymbols@font}{"228B}
- \DeclareMathSymbol{\nsqsubseteq}{\mathrel}{\M at extsymbols@font}{"22E2}
- \DeclareMathSymbol{\nsqsupseteq}{\mathrel}{\M at extsymbols@font}{"22E3}
- \DeclareMathSymbol{\sqsubsetneq}{\mathrel}{\M at extsymbols@font}{"22E4}
- \DeclareMathSymbol{\sqsupsetneq}{\mathrel}{\M at extsymbols@font}{"22E5}
- \DeclareMathSymbol{\neq}{\mathrel}{\M at extsymbols@font}{"2260}
- \DeclareMathSymbol{\nl}{\mathrel}{\M at extsymbols@font}{"226E}
- \DeclareMathSymbol{\nleq}{\mathrel}{\M at extsymbols@font}{"2270}
- \DeclareMathSymbol{\ngeq}{\mathrel}{\M at extsymbols@font}{"2271}
- \DeclareMathSymbol{\lneq}{\mathrel}{\M at extsymbols@font}{"2A87}
- \DeclareMathSymbol{\gneq}{\mathrel}{\M at extsymbols@font}{"2A88}
- \DeclareMathSymbol{\lneqq}{\mathrel}{\M at extsymbols@font}{"2268}
- \DeclareMathSymbol{\gneqq}{\mathrel}{\M at extsymbols@font}{"2269}
- \DeclareMathSymbol{\ntriangleleft}{\mathrel}{\M at extsymbols@font}{"22EA}
- \DeclareMathSymbol{\ntriangleright}{\mathrel}{\M at extsymbols@font}{"22EB}
- \DeclareMathSymbol{\ntrianglelefteq}{\mathrel}{\M at extsymbols@font}{"22EC}
- \DeclareMathSymbol{\ntrianglerighteq}{\mathrel}{\M at extsymbols@font}{"22ED}
- \DeclareMathSymbol{\nsim}{\mathrel}{\M at extsymbols@font}{"2241}
- \DeclareMathSymbol{\napprox}{\mathrel}{\M at extsymbols@font}{"2249}
- \DeclareMathSymbol{\nsimeq}{\mathrel}{\M at extsymbols@font}{"2244}
- \DeclareMathSymbol{\nsimeqq}{\mathrel}{\M at extsymbols@font}{"2247}
- \DeclareMathSymbol{\simneqq}{\mathrel}{\M at extsymbols@font}{"2246}
- \DeclareMathSymbol{\nlsim}{\mathrel}{\M at extsymbols@font}{"2274}
- \DeclareMathSymbol{\ngsim}{\mathrel}{\M at extsymbols@font}{"2275}
- \DeclareMathSymbol{\lnsim}{\mathrel}{\M at extsymbols@font}{"22E6}
- \DeclareMathSymbol{\gnsim}{\mathrel}{\M at extsymbols@font}{"22E7}
- \DeclareMathSymbol{\lnapprox}{\mathrel}{\M at extsymbols@font}{"2A89}
- \DeclareMathSymbol{\gnapprox}{\mathrel}{\M at extsymbols@font}{"2A8A}
- \DeclareMathSymbol{\nprec}{\mathrel}{\M at extsymbols@font}{"2280}
- \DeclareMathSymbol{\nsucc}{\mathrel}{\M at extsymbols@font}{"2281}
- \DeclareMathSymbol{\npreceq}{\mathrel}{\M at extsymbols@font}{"22E0}
- \DeclareMathSymbol{\nsucceq}{\mathrel}{\M at extsymbols@font}{"22E1}
- \DeclareMathSymbol{\precneq}{\mathrel}{\M at extsymbols@font}{"2AB1}
- \DeclareMathSymbol{\succneq}{\mathrel}{\M at extsymbols@font}{"2AB2}
- \DeclareMathSymbol{\precneqq}{\mathrel}{\M at extsymbols@font}{"2AB5}
- \DeclareMathSymbol{\succneqq}{\mathrel}{\M at extsymbols@font}{"2AB6}
- \DeclareMathSymbol{\precnsim}{\mathrel}{\M at extsymbols@font}{"22E8}
- \DeclareMathSymbol{\succnsim}{\mathrel}{\M at extsymbols@font}{"22E9}
- \DeclareMathSymbol{\precnapprox}{\mathrel}{\M at extsymbols@font}{"2AB9}
- \DeclareMathSymbol{\succnapprox}{\mathrel}{\M at extsymbols@font}{"2ABA}
- \DeclareMathSymbol{\nequiv}{\mathrel}{\M at extsymbols@font}{"2262}
+ \@DMS{\approxeq} {\mathrel}{\M at extsymbols@font}{"224A}
+ \@DMS{\sssim} {\mathrel}{\M at extsymbols@font}{"224B}
+ \@DMS{\seq} {\mathrel}{\M at extsymbols@font}{"224C}
+ \@DMS{\doteq} {\mathrel}{\M at extsymbols@font}{"2250}
+ \@DMS{\coloneq} {\mathrel}{\M at extsymbols@font}{"2254}
+ \@DMS{\eqcolon} {\mathrel}{\M at extsymbols@font}{"2255}
+ \@DMS{\ringeq} {\mathrel}{\M at extsymbols@font}{"2257}
+ \@DMS{\arceq} {\mathrel}{\M at extsymbols@font}{"2258}
+ \@DMS{\wedgeeq} {\mathrel}{\M at extsymbols@font}{"2259}
+ \@DMS{\veeeq} {\mathrel}{\M at extsymbols@font}{"225A}
+ \@DMS{\stareq} {\mathrel}{\M at extsymbols@font}{"225B}
+ \@DMS{\triangleeq} {\mathrel}{\M at extsymbols@font}{"225C}
+ \@DMS{\defeq} {\mathrel}{\M at extsymbols@font}{"225D}
+ \@DMS{\qeq} {\mathrel}{\M at extsymbols@font}{"225F}
+ \@DMS{\lsim} {\mathrel}{\M at extsymbols@font}{"2272}
+ \@DMS{\gsim} {\mathrel}{\M at extsymbols@font}{"2273}
+ \@DMS{\prec} {\mathrel}{\M at extsymbols@font}{"227A}
+ \@DMS{\succ} {\mathrel}{\M at extsymbols@font}{"227B}
+ \@DMS{\preceq} {\mathrel}{\M at extsymbols@font}{"227C}
+ \@DMS{\succeq} {\mathrel}{\M at extsymbols@font}{"227D}
+ \@DMS{\preceqq} {\mathrel}{\M at extsymbols@font}{"2AB3}
+ \@DMS{\succeqq} {\mathrel}{\M at extsymbols@font}{"2AB4}
+ \@DMS{\precsim} {\mathrel}{\M at extsymbols@font}{"227E}
+ \@DMS{\succsim} {\mathrel}{\M at extsymbols@font}{"227F}
+ \@DMS{\precapprox} {\mathrel}{\M at extsymbols@font}{"2AB7}
+ \@DMS{\succapprox} {\mathrel}{\M at extsymbols@font}{"2AB8}
+ \@DMS{\precprec} {\mathrel}{\M at extsymbols@font}{"2ABB}
+ \@DMS{\succsucc} {\mathrel}{\M at extsymbols@font}{"2ABC}
+ \@DMS{\asymp} {\mathrel}{\M at extsymbols@font}{"224D}
+ \@DMS{\nin} {\mathrel}{\M at extsymbols@font}{"2209}
+ \@DMS{\nni} {\mathrel}{\M at extsymbols@font}{"220C}
+ \@DMS{\nsubset} {\mathrel}{\M at extsymbols@font}{"2284}
+ \@DMS{\nsupset} {\mathrel}{\M at extsymbols@font}{"2285}
+ \@DMS{\nsubseteq} {\mathrel}{\M at extsymbols@font}{"2288}
+ \@DMS{\nsupseteq} {\mathrel}{\M at extsymbols@font}{"2289}
+ \@DMS{\subsetneq} {\mathrel}{\M at extsymbols@font}{"228A}
+ \@DMS{\supsetneq} {\mathrel}{\M at extsymbols@font}{"228B}
+ \@DMS{\nsqsubseteq} {\mathrel}{\M at extsymbols@font}{"22E2}
+ \@DMS{\nsqsupseteq} {\mathrel}{\M at extsymbols@font}{"22E3}
+ \@DMS{\sqsubsetneq} {\mathrel}{\M at extsymbols@font}{"22E4}
+ \@DMS{\sqsupsetneq} {\mathrel}{\M at extsymbols@font}{"22E5}
+ \@DMS{\neq} {\mathrel}{\M at extsymbols@font}{"2260}
+ \@DMS{\nl} {\mathrel}{\M at extsymbols@font}{"226E}
+ \@DMS{\nleq} {\mathrel}{\M at extsymbols@font}{"2270}
+ \@DMS{\ngeq} {\mathrel}{\M at extsymbols@font}{"2271}
+ \@DMS{\lneq} {\mathrel}{\M at extsymbols@font}{"2A87}
+ \@DMS{\gneq} {\mathrel}{\M at extsymbols@font}{"2A88}
+ \@DMS{\lneqq} {\mathrel}{\M at extsymbols@font}{"2268}
+ \@DMS{\gneqq} {\mathrel}{\M at extsymbols@font}{"2269}
+ \@DMS{\ntriangleleft} {\mathrel}{\M at extsymbols@font}{"22EA}
+ \@DMS{\ntriangleright} {\mathrel}{\M at extsymbols@font}{"22EB}
+ \@DMS{\ntrianglelefteq} {\mathrel}{\M at extsymbols@font}{"22EC}
+ \@DMS{\ntrianglerighteq}{\mathrel}{\M at extsymbols@font}{"22ED}
+ \@DMS{\nsim} {\mathrel}{\M at extsymbols@font}{"2241}
+ \@DMS{\napprox} {\mathrel}{\M at extsymbols@font}{"2249}
+ \@DMS{\nsimeq} {\mathrel}{\M at extsymbols@font}{"2244}
+ \@DMS{\nsimeqq} {\mathrel}{\M at extsymbols@font}{"2247}
+ \@DMS{\simneqq} {\mathrel}{\M at extsymbols@font}{"2246}
+ \@DMS{\nlsim} {\mathrel}{\M at extsymbols@font}{"2274}
+ \@DMS{\ngsim} {\mathrel}{\M at extsymbols@font}{"2275}
+ \@DMS{\lnsim} {\mathrel}{\M at extsymbols@font}{"22E6}
+ \@DMS{\gnsim} {\mathrel}{\M at extsymbols@font}{"22E7}
+ \@DMS{\lnapprox} {\mathrel}{\M at extsymbols@font}{"2A89}
+ \@DMS{\gnapprox} {\mathrel}{\M at extsymbols@font}{"2A8A}
+ \@DMS{\nprec} {\mathrel}{\M at extsymbols@font}{"2280}
+ \@DMS{\nsucc} {\mathrel}{\M at extsymbols@font}{"2281}
+ \@DMS{\npreceq} {\mathrel}{\M at extsymbols@font}{"22E0}
+ \@DMS{\nsucceq} {\mathrel}{\M at extsymbols@font}{"22E1}
+ \@DMS{\precneq} {\mathrel}{\M at extsymbols@font}{"2AB1}
+ \@DMS{\succneq} {\mathrel}{\M at extsymbols@font}{"2AB2}
+ \@DMS{\precneqq} {\mathrel}{\M at extsymbols@font}{"2AB5}
+ \@DMS{\succneqq} {\mathrel}{\M at extsymbols@font}{"2AB6}
+ \@DMS{\precnsim} {\mathrel}{\M at extsymbols@font}{"22E8}
+ \@DMS{\succnsim} {\mathrel}{\M at extsymbols@font}{"22E9}
+ \@DMS{\precnapprox} {\mathrel}{\M at extsymbols@font}{"2AB9}
+ \@DMS{\succnapprox} {\mathrel}{\M at extsymbols@font}{"2ABA}
+ \@DMS{\nequiv} {\mathrel}{\M at extsymbols@font}{"2262}
+ \@ifpackageloaded{math-operator}{\if at operator@s
+ \@DMS{\varRe}{\mathord}{\M at extsymbols@font}{"211C}
+ \@DMS{\varIm}{\mathord}{\M at extsymbols@font}{"2111}
+ \else
+ \@DMS{\Re}{\mathord}{\M at extsymbols@font}{"211C}
+ \@DMS{\Im}{\mathord}{\M at extsymbols@font}{"2111}
+ \fi}{%
+ \@DMS{\Re}{\mathord}{\M at extsymbols@font}{"211C}
+ \@DMS{\Im}{\mathord}{\M at extsymbols@font}{"2111}}
\global\let\textng\ng
- \let\ng\@undefined
- \DeclareMathSymbol{\mathng}{\mathrel}{\M at extsymbols@font}{"226F}
+ \@DMS{\mathng}{\mathrel}{\M at extsymbols@font}{"226F}
\protected\gdef\ng{\ifmmode\mathng\else\textng\fi}
\ifM at adjust@font\else
- \DeclareMathSymbol{\nabla}{\mathord}{\M at extsymbols@font}{"2207}
+ \@DMS{\nabla}{\mathord}{\M at extsymbols@font}{"2207}
\fi}
\def\M at arrows@set{%
\edef\M at arrows@font{M\M at arrowsshape\@tempa}
@@ -2834,122 +3215,136 @@
\let\Longleftarrow\@undefined
\let\Longleftrightarrow\@undefined
\let\rightleftharpoons\@undefined
- \DeclareMathSymbol{\rightarrow}{\mathrel}{\M at arrows@font}{"2192}
+ \@DMS{\rightarrow} {\mathrel}{\M at arrows@font}{"2192}
\global\let\to\rightarrow
- \DeclareMathSymbol{\nrightarrow}{\mathrel}{\M at arrows@font}{"219B}
- \DeclareMathSymbol{\Rightarrow}{\mathrel}{\M at arrows@font}{"21D2}
- \DeclareMathSymbol{\nRightarrow}{\mathrel}{\M at arrows@font}{"21CF}
- \DeclareMathSymbol{\Rrightarrow}{\mathrel}{\M at arrows@font}{"21DB}
- \DeclareMathSymbol{\longrightarrow}{\mathrel}{\M at arrows@font}{"27F6}
- \DeclareMathSymbol{\Longrightarrow}{\mathrel}{\M at arrows@font}{"27F9}
- \DeclareMathSymbol{\rightbararrow}{\mathrel}{\M at arrows@font}{"21A6}
+ \@DMS{\nrightarrow} {\mathrel}{\M at arrows@font}{"219B}
+ \@DMS{\Rightarrow} {\mathrel}{\M at arrows@font}{"21D2}
+ \@DMS{\nRightarrow} {\mathrel}{\M at arrows@font}{"21CF}
+ \@DMS{\Rrightarrow} {\mathrel}{\M at arrows@font}{"21DB}
+ \@DMS{\longrightarrow} {\mathrel}{\M at arrows@font}{"27F6}
+ \@DMS{\Longrightarrow} {\mathrel}{\M at arrows@font}{"27F9}
+ \@DMS{\rightbararrow} {\mathrel}{\M at arrows@font}{"21A6}
\global\let\mapsto\rightbararrow
- \DeclareMathSymbol{\Rightbararrow}{\mathrel}{\M at arrows@font}{"2907}
- \DeclareMathSymbol{\longrightbararrow}{\mathrel}{\M at arrows@font}{"27FC}
+ \@DMS{\Rightbararrow} {\mathrel}{\M at arrows@font}{"2907}
+ \@DMS{\longrightbararrow} {\mathrel}{\M at arrows@font}{"27FC}
\global\let\longmapsto\longrightbararrow
- \DeclareMathSymbol{\Longrightbararrow}{\mathrel}{\M at arrows@font}{"27FE}
- \DeclareMathSymbol{\hookrightarrow}{\mathrel}{\M at arrows@font}{"21AA}
- \DeclareMathSymbol{\rightdasharrow}{\mathrel}{\M at arrows@font}{"21E2}
- \DeclareMathSymbol{\rightharpoonup}{\mathrel}{\M at arrows@font}{"21C0}
- \DeclareMathSymbol{\rightharpoondown}{\mathrel}{\M at arrows@font}{"21C1}
- \DeclareMathSymbol{\rightarrowtail}{\mathrel}{\M at arrows@font}{"21A3}
- \DeclareMathSymbol{\rightoplusarrow}{\mathrel}{\M at arrows@font}{"27F4}
- \DeclareMathSymbol{\rightwavearrow}{\mathrel}{\M at arrows@font}{"219D}
- \DeclareMathSymbol{\rightsquigarrow}{\mathrel}{\M at arrows@font}{"21DD}
- \DeclareMathSymbol{\longrightsquigarrow}{\mathrel}{\M at arrows@font}{"27FF}
- \DeclareMathSymbol{\looparrowright}{\mathrel}{\M at arrows@font}{"21AC}
- \DeclareMathSymbol{\curvearrowright}{\mathrel}{\M at arrows@font}{"293B}
- \DeclareMathSymbol{\circlearrowright}{\mathrel}{\M at arrows@font}{"21BB}
- \DeclareMathSymbol{\twoheadrightarrow}{\mathrel}{\M at arrows@font}{"21A0}
- \DeclareMathSymbol{\rightarrowtobar}{\mathrel}{\M at arrows@font}{"21E5}
- \DeclareMathSymbol{\rightwhitearrow}{\mathrel}{\M at arrows@font}{"21E8}
- \DeclareMathSymbol{\rightrightarrows}{\mathrel}{\M at arrows@font}{"21C9}
- \DeclareMathSymbol{\rightrightrightarrows}{\mathrel}{\M at arrows@font}{"21F6}
- \DeclareMathSymbol{\leftarrow}{\mathrel}{\M at arrows@font}{"2190}
+ \@DMS{\Longrightbararrow} {\mathrel}{\M at arrows@font}{"27FE}
+ \@DMS{\hookrightarrow} {\mathrel}{\M at arrows@font}{"21AA}
+ \@DMS{\rightdasharrow} {\mathrel}{\M at arrows@font}{"21E2}
+ \@DMS{\rightharpoonup} {\mathrel}{\M at arrows@font}{"21C0}
+ \@DMS{\rightharpoondown} {\mathrel}{\M at arrows@font}{"21C1}
+ \@DMS{\rightarrowtail} {\mathrel}{\M at arrows@font}{"21A3}
+ \@DMS{\rightoplusarrow} {\mathrel}{\M at arrows@font}{"27F4}
+ \@DMS{\rightwavearrow} {\mathrel}{\M at arrows@font}{"219D}
+ \@DMS{\rightsquigarrow} {\mathrel}{\M at arrows@font}{"21DD}
+ \@DMS{\longrightsquigarrow} {\mathrel}{\M at arrows@font}{"27FF}
+ \@DMS{\looparrowright} {\mathrel}{\M at arrows@font}{"21AC}
+ \@DMS{\curvearrowright} {\mathrel}{\M at arrows@font}{"293B}
+ \@DMS{\circlearrowright} {\mathrel}{\M at arrows@font}{"21BB}
+ \@DMS{\twoheadrightarrow} {\mathrel}{\M at arrows@font}{"21A0}
+ \@DMS{\rightarrowtobar} {\mathrel}{\M at arrows@font}{"21E5}
+ \@DMS{\rightwhitearrow} {\mathrel}{\M at arrows@font}{"21E8}
+ \@DMS{\rightrightarrows} {\mathrel}{\M at arrows@font}{"21C9}
+ \@DMS{\rightrightrightarrows}{\mathrel}{\M at arrows@font}{"21F6}
+ \@DMS{\leftarrow} {\mathrel}{\M at arrows@font}{"2190}
\global\let\from\leftarrow
- \DeclareMathSymbol{\nleftarrow}{\mathrel}{\M at arrows@font}{"219A}
- \DeclareMathSymbol{\Leftarrow}{\mathrel}{\M at arrows@font}{"21D0}
- \DeclareMathSymbol{\nLeftarrow}{\mathrel}{\M at arrows@font}{"21CD}
- \DeclareMathSymbol{\Lleftarrow}{\mathrel}{\M at arrows@font}{"21DA}
- \DeclareMathSymbol{\longleftarrow}{\mathrel}{\M at arrows@font}{"27F5}
- \DeclareMathSymbol{\Longleftarrow}{\mathrel}{\M at arrows@font}{"27F8}
- \DeclareMathSymbol{\leftbararrow}{\mathrel}{\M at arrows@font}{"21A4}
+ \@DMS{\nleftarrow} {\mathrel}{\M at arrows@font}{"219A}
+ \@DMS{\Leftarrow} {\mathrel}{\M at arrows@font}{"21D0}
+ \@DMS{\nLeftarrow} {\mathrel}{\M at arrows@font}{"21CD}
+ \@DMS{\Lleftarrow} {\mathrel}{\M at arrows@font}{"21DA}
+ \@DMS{\longleftarrow} {\mathrel}{\M at arrows@font}{"27F5}
+ \@DMS{\Longleftarrow} {\mathrel}{\M at arrows@font}{"27F8}
+ \@DMS{\leftbararrow} {\mathrel}{\M at arrows@font}{"21A4}
\global\let\mapsfrom\leftbararrow
- \DeclareMathSymbol{\Leftbararrow}{\mathrel}{\M at arrows@font}{"2906}
- \DeclareMathSymbol{\longleftbararrow}{\mathrel}{\M at arrows@font}{"27FB}
+ \@DMS{\Leftbararrow} {\mathrel}{\M at arrows@font}{"2906}
+ \@DMS{\longleftbararrow} {\mathrel}{\M at arrows@font}{"27FB}
\global\let\longmapsfrom\longleftbararrow
- \DeclareMathSymbol{\Longleftbararrow}{\mathrel}{\M at arrows@font}{"27FD}
- \DeclareMathSymbol{\hookleftarrow}{\mathrel}{\M at arrows@font}{"21A9}
- \DeclareMathSymbol{\leftdasharrow}{\mathrel}{\M at arrows@font}{"21E0}
- \DeclareMathSymbol{\leftharpoonup}{\mathrel}{\M at arrows@font}{"21BC}
- \DeclareMathSymbol{\leftharpoondown}{\mathrel}{\M at arrows@font}{"21BD}
- \DeclareMathSymbol{\leftarrowtail}{\mathrel}{\M at arrows@font}{"21A2}
- \DeclareMathSymbol{\leftoplusarrow}{\mathrel}{\M at arrows@font}{"2B32}
- \DeclareMathSymbol{\leftwavearrow}{\mathrel}{\M at arrows@font}{"219C}
- \DeclareMathSymbol{\leftsquigarrow}{\mathrel}{\M at arrows@font}{"21DC}
- \DeclareMathSymbol{\longleftsquigarrow}{\mathrel}{\M at arrows@font}{"2B33}
- \DeclareMathSymbol{\looparrowleft}{\mathrel}{\M at arrows@font}{"21AB}
- \DeclareMathSymbol{\curvearrowleft}{\mathrel}{\M at arrows@font}{"293A}
- \DeclareMathSymbol{\circlearrowleft}{\mathrel}{\M at arrows@font}{"21BA}
- \DeclareMathSymbol{\twoheadleftarrow}{\mathrel}{\M at arrows@font}{"219E}
- \DeclareMathSymbol{\leftarrowtobar}{\mathrel}{\M at arrows@font}{"21E4}
- \DeclareMathSymbol{\leftwhitearrow}{\mathrel}{\M at arrows@font}{"21E6}
- \DeclareMathSymbol{\leftleftarrows}{\mathrel}{\M at arrows@font}{"21C7}
- \DeclareMathSymbol{\leftleftleftarrows}{\mathrel}{\M at arrows@font}{"2B31}
- \DeclareMathSymbol{\leftrightarrow}{\mathrel}{\M at arrows@font}{"2194}
- \DeclareMathSymbol{\Leftrightarrow}{\mathrel}{\M at arrows@font}{"21D4}
- \DeclareMathSymbol{\nLeftrightarrow}{\mathrel}{\M at arrows@font}{"21CE}
- \DeclareMathSymbol{\longleftrightarrow}{\mathrel}{\M at arrows@font}{"27F7}
- \DeclareMathSymbol{\Longleftrightarrow}{\mathrel}{\M at arrows@font}{"27FA}
- \DeclareMathSymbol{\leftrightwavearrow}{\mathrel}{\M at arrows@font}{"21AD}
- \DeclareMathSymbol{\leftrightarrows}{\mathrel}{\M at arrows@font}{"21C6}
- \DeclareMathSymbol{\leftrightharpoons}{\mathrel}{\M at arrows@font}{"21CB}
- \DeclareMathSymbol{\leftrightarrowstobar}{\mathrel}{\M at arrows@font}{"21B9}
- \DeclareMathSymbol{\rightleftarrows}{\mathrel}{\M at arrows@font}{"21C4}
- \DeclareMathSymbol{\rightleftharpoons}{\mathrel}{\M at arrows@font}{"21CC}
- \DeclareMathSymbol{\uparrow}{\mathrel}{\M at arrows@font}{"2191}
- \DeclareMathSymbol{\Uparrow}{\mathrel}{\M at arrows@font}{"21D1}
- \DeclareMathSymbol{\Uuparrow}{\mathrel}{\M at arrows@font}{"290A}
- \DeclareMathSymbol{\upbararrow}{\mathrel}{\M at arrows@font}{"21A5}
- \DeclareMathSymbol{\updasharrow}{\mathrel}{\M at arrows@font}{"21E1}
- \DeclareMathSymbol{\upharpoonleft}{\mathrel}{\M at arrows@font}{"21BF}
- \DeclareMathSymbol{\upharpoonright}{\mathrel}{\M at arrows@font}{"21BE}
- \DeclareMathSymbol{\twoheaduparrow}{\mathrel}{\M at arrows@font}{"219F}
- \DeclareMathSymbol{\uparrowtobar}{\mathrel}{\M at arrows@font}{"2912}
- \DeclareMathSymbol{\upwhitearrow}{\mathrel}{\M at arrows@font}{"21E7}
- \DeclareMathSymbol{\upwhitebararrow}{\mathrel}{\M at arrows@font}{"21EA}
- \DeclareMathSymbol{\upuparrows}{\mathrel}{\M at arrows@font}{"21C8}
- \DeclareMathSymbol{\downarrow}{\mathrel}{\M at arrows@font}{"2193}
- \DeclareMathSymbol{\Downarrow}{\mathrel}{\M at arrows@font}{"21D3}
- \DeclareMathSymbol{\Ddownarrow}{\mathrel}{\M at arrows@font}{"290B}
- \DeclareMathSymbol{\downbararrow}{\mathrel}{\M at arrows@font}{"21A7}
- \DeclareMathSymbol{\downdasharrow}{\mathrel}{\M at arrows@font}{"21E3}
- \DeclareMathSymbol{\zigzagarrow}{\mathrel}{\M at arrows@font}{"21AF}
+ \@DMS{\Longleftbararrow} {\mathrel}{\M at arrows@font}{"27FD}
+ \@DMS{\hookleftarrow} {\mathrel}{\M at arrows@font}{"21A9}
+ \@DMS{\leftdasharrow} {\mathrel}{\M at arrows@font}{"21E0}
+ \@DMS{\leftharpoonup} {\mathrel}{\M at arrows@font}{"21BC}
+ \@DMS{\leftharpoondown} {\mathrel}{\M at arrows@font}{"21BD}
+ \@DMS{\leftarrowtail} {\mathrel}{\M at arrows@font}{"21A2}
+ \@DMS{\leftoplusarrow} {\mathrel}{\M at arrows@font}{"2B32}
+ \@DMS{\leftwavearrow} {\mathrel}{\M at arrows@font}{"219C}
+ \@DMS{\leftsquigarrow} {\mathrel}{\M at arrows@font}{"21DC}
+ \@DMS{\longleftsquigarrow} {\mathrel}{\M at arrows@font}{"2B33}
+ \@DMS{\looparrowleft} {\mathrel}{\M at arrows@font}{"21AB}
+ \@DMS{\curvearrowleft} {\mathrel}{\M at arrows@font}{"293A}
+ \@DMS{\circlearrowleft} {\mathrel}{\M at arrows@font}{"21BA}
+ \@DMS{\twoheadleftarrow} {\mathrel}{\M at arrows@font}{"219E}
+ \@DMS{\leftarrowtobar} {\mathrel}{\M at arrows@font}{"21E4}
+ \@DMS{\leftwhitearrow} {\mathrel}{\M at arrows@font}{"21E6}
+ \@DMS{\leftleftarrows} {\mathrel}{\M at arrows@font}{"21C7}
+ \@DMS{\leftleftleftarrows} {\mathrel}{\M at arrows@font}{"2B31}
+ \@DMS{\leftrightarrow} {\mathrel}{\M at arrows@font}{"2194}
+ \@DMS{\Leftrightarrow} {\mathrel}{\M at arrows@font}{"21D4}
+ \@DMS{\nLeftrightarrow} {\mathrel}{\M at arrows@font}{"21CE}
+ \@DMS{\longleftrightarrow} {\mathrel}{\M at arrows@font}{"27F7}
+ \@DMS{\Longleftrightarrow} {\mathrel}{\M at arrows@font}{"27FA}
+ \@DMS{\leftrightwavearrow} {\mathrel}{\M at arrows@font}{"21AD}
+ \@DMS{\leftrightarrows} {\mathrel}{\M at arrows@font}{"21C6}
+ \@DMS{\leftrightharpoons} {\mathrel}{\M at arrows@font}{"21CB}
+ \@DMS{\leftrightarrowstobar} {\mathrel}{\M at arrows@font}{"21B9}
+ \@DMS{\rightleftarrows} {\mathrel}{\M at arrows@font}{"21C4}
+ \@DMS{\rightleftharpoons} {\mathrel}{\M at arrows@font}{"21CC}
+ \@DMS{\uparrow} {\mathrel}{\M at arrows@font}{"2191}
+ \@DMS{\Uparrow} {\mathrel}{\M at arrows@font}{"21D1}
+ \@DMS{\Uuparrow} {\mathrel}{\M at arrows@font}{"290A}
+ \@DMS{\upbararrow} {\mathrel}{\M at arrows@font}{"21A5}
+ \@DMS{\updasharrow} {\mathrel}{\M at arrows@font}{"21E1}
+ \@DMS{\upharpoonleft} {\mathrel}{\M at arrows@font}{"21BF}
+ \@DMS{\upharpoonright} {\mathrel}{\M at arrows@font}{"21BE}
+ \@DMS{\twoheaduparrow} {\mathrel}{\M at arrows@font}{"219F}
+ \@DMS{\uparrowtobar} {\mathrel}{\M at arrows@font}{"2912}
+ \@DMS{\upwhitearrow} {\mathrel}{\M at arrows@font}{"21E7}
+ \@DMS{\upwhitebararrow} {\mathrel}{\M at arrows@font}{"21EA}
+ \@DMS{\upuparrows} {\mathrel}{\M at arrows@font}{"21C8}
+ \@DMS{\downarrow} {\mathrel}{\M at arrows@font}{"2193}
+ \@DMS{\Downarrow} {\mathrel}{\M at arrows@font}{"21D3}
+ \@DMS{\Ddownarrow} {\mathrel}{\M at arrows@font}{"290B}
+ \@DMS{\downbararrow} {\mathrel}{\M at arrows@font}{"21A7}
+ \@DMS{\downdasharrow} {\mathrel}{\M at arrows@font}{"21E3}
+ \@DMS{\zigzagarrow} {\mathrel}{\M at arrows@font}{"21AF}
\global\let\lightningboltarrow\zigzagarrow
- \DeclareMathSymbol{\downharpoonleft}{\mathrel}{\M at arrows@font}{"21C3}
- \DeclareMathSymbol{\downharpoonright}{\mathrel}{\M at arrows@font}{"21C2}
- \DeclareMathSymbol{\twoheaddownarrow}{\mathrel}{\M at arrows@font}{"21A1}
- \DeclareMathSymbol{\downarrowtobar}{\mathrel}{\M at arrows@font}{"2913}
- \DeclareMathSymbol{\downwhitearrow}{\mathrel}{\M at arrows@font}{"21E9}
- \DeclareMathSymbol{\downdownarrows}{\mathrel}{\M at arrows@font}{"21CA}
- \DeclareMathSymbol{\updownarrow}{\mathrel}{\M at arrows@font}{"2195}
- \DeclareMathSymbol{\Updownarrow}{\mathrel}{\M at arrows@font}{"21D5}
- \DeclareMathSymbol{\updownarrows}{\mathrel}{\M at arrows@font}{"21C5}
- \DeclareMathSymbol{\downuparrows}{\mathrel}{\M at arrows@font}{"21F5}
- \DeclareMathSymbol{\updownharpoons}{\mathrel}{\M at arrows@font}{"296E}
- \DeclareMathSymbol{\downupharpoons}{\mathrel}{\M at arrows@font}{"296F}
- \DeclareMathSymbol{\nearrow}{\mathrel}{\M at arrows@font}{"2197}
- \DeclareMathSymbol{\Nearrow}{\mathrel}{\M at arrows@font}{"21D7}
- \DeclareMathSymbol{\nwarrow}{\mathrel}{\M at arrows@font}{"2196}
- \DeclareMathSymbol{\Nwarrow}{\mathrel}{\M at arrows@font}{"21D6}
- \DeclareMathSymbol{\searrow}{\mathrel}{\M at arrows@font}{"2198}
- \DeclareMathSymbol{\Searrow}{\mathrel}{\M at arrows@font}{"21D8}
- \DeclareMathSymbol{\swarrow}{\mathrel}{\M at arrows@font}{"2199}
- \DeclareMathSymbol{\Swarrow}{\mathrel}{\M at arrows@font}{"21D9}
- \DeclareMathSymbol{\nwsearrow}{\mathrel}{\M at arrows@font}{"2921}
- \DeclareMathSymbol{\neswarrow}{\mathrel}{\M at arrows@font}{"2922}
- \DeclareMathSymbol{\lcirclearrow}{\mathrel}{\M at arrows@font}{"27F2}
- \DeclareMathSymbol{\rcirclearrow}{\mathrel}{\M at arrows@font}{"27F3}}
+ \@DMS{\downharpoonleft} {\mathrel}{\M at arrows@font}{"21C3}
+ \@DMS{\downharpoonright} {\mathrel}{\M at arrows@font}{"21C2}
+ \@DMS{\twoheaddownarrow} {\mathrel}{\M at arrows@font}{"21A1}
+ \@DMS{\downarrowtobar} {\mathrel}{\M at arrows@font}{"2913}
+ \@DMS{\downwhitearrow} {\mathrel}{\M at arrows@font}{"21E9}
+ \@DMS{\downdownarrows} {\mathrel}{\M at arrows@font}{"21CA}
+ \@DMS{\updownarrow} {\mathrel}{\M at arrows@font}{"2195}
+ \@DMS{\Updownarrow} {\mathrel}{\M at arrows@font}{"21D5}
+ \@DMS{\updownarrows} {\mathrel}{\M at arrows@font}{"21C5}
+ \@DMS{\downuparrows} {\mathrel}{\M at arrows@font}{"21F5}
+ \@DMS{\updownharpoons} {\mathrel}{\M at arrows@font}{"296E}
+ \@DMS{\downupharpoons} {\mathrel}{\M at arrows@font}{"296F}
+ \@DMS{\nearrow} {\mathrel}{\M at arrows@font}{"2197}
+ \@DMS{\Nearrow} {\mathrel}{\M at arrows@font}{"21D7}
+ \@DMS{\nwarrow} {\mathrel}{\M at arrows@font}{"2196}
+ \@DMS{\Nwarrow} {\mathrel}{\M at arrows@font}{"21D6}
+ \@DMS{\searrow} {\mathrel}{\M at arrows@font}{"2198}
+ \@DMS{\Searrow} {\mathrel}{\M at arrows@font}{"21D8}
+ \@DMS{\swarrow} {\mathrel}{\M at arrows@font}{"2199}
+ \@DMS{\Swarrow} {\mathrel}{\M at arrows@font}{"21D9}
+ \@DMS{\nwsearrow} {\mathrel}{\M at arrows@font}{"2921}
+ \@DMS{\neswarrow} {\mathrel}{\M at arrows@font}{"2922}
+ \@DMS{\lcirclearrow} {\mathrel}{\M at arrows@font}{"27F2}
+ \@DMS{\rcirclearrow} {\mathrel}{\M at arrows@font}{"27F3}
+ \let\@relbar\@undefined
+ \let\@Relbar\@undefined
+ \@DMS{\@relbar}{\mathbin}{\M at arrows@font}{"2212}
+ \@DMS{\@Relbar}{\mathrel}{\M at arrows@font}{"3D}
+ \protected\gdef\relbar{\mathrel{\mathpalette\mathsm at sh\@relbar}}
+ \protected\gdef\Relbar{\@Relbar}
+ \@ifpackageloaded{amsmath}
+ {\relax}{%
+ \global\let\@@relbar\relbar
+ \global\let\@@Relbar\Relbar
+ \AtBeginDocument{\@ifpackageloaded{amsmath}{%
+ \global\let\relbar\@@relbar
+ \global\let\Relbar\@@Relbar}
+ {\relax}}}}
\def\M at bb@set{%
\protected\def\mathbb##1{\relax
\ifmmode\else
@@ -2960,70 +3355,71 @@
\M at bb@mathcodes
##1%
\endgroup}
- \edef\M at bb@num{\number\csname symM\M at bbshape\@tempa\endcsname}
+ \edef\M at bb@num{\number
+ \csname symM\M at bbshape\@tempa\endcsname}
\protected\edef\M at bb@mathcodes{%
- \Umathcode`A=0+\M at bb@num"1D538\relax
- \Umathcode`B=0+\M at bb@num"1D539\relax
- \Umathcode`C=0+\M at bb@num"2102\relax
- \Umathcode`D=0+\M at bb@num"1D53B\relax
- \Umathcode`E=0+\M at bb@num"1D53C\relax
- \Umathcode`F=0+\M at bb@num"1D53D\relax
- \Umathcode`G=0+\M at bb@num"1D53E\relax
- \Umathcode`H=0+\M at bb@num"210D\relax
- \Umathcode`I=0+\M at bb@num"1D540\relax
- \Umathcode`J=0+\M at bb@num"1D541\relax
- \Umathcode`K=0+\M at bb@num"1D542\relax
- \Umathcode`L=0+\M at bb@num"1D543\relax
- \Umathcode`M=0+\M at bb@num"1D544\relax
- \Umathcode`N=0+\M at bb@num"2115\relax
- \Umathcode`O=0+\M at bb@num"1D546\relax
- \Umathcode`P=0+\M at bb@num"2119\relax
- \Umathcode`Q=0+\M at bb@num"211A\relax
- \Umathcode`R=0+\M at bb@num"211D\relax
- \Umathcode`S=0+\M at bb@num"1D54A\relax
- \Umathcode`T=0+\M at bb@num"1D54B\relax
- \Umathcode`U=0+\M at bb@num"1D54C\relax
- \Umathcode`V=0+\M at bb@num"1D54D\relax
- \Umathcode`W=0+\M at bb@num"1D54E\relax
- \Umathcode`X=0+\M at bb@num"1D54F\relax
- \Umathcode`Y=0+\M at bb@num"1D550\relax
- \Umathcode`Z=0+\M at bb@num"2124\relax
- \Umathcode`a=0+\M at bb@num"1D552\relax
- \Umathcode`b=0+\M at bb@num"1D553\relax
- \Umathcode`c=0+\M at bb@num"1D554\relax
- \Umathcode`d=0+\M at bb@num"1D555\relax
- \Umathcode`e=0+\M at bb@num"1D556\relax
- \Umathcode`f=0+\M at bb@num"1D557\relax
- \Umathcode`g=0+\M at bb@num"1D558\relax
- \Umathcode`h=0+\M at bb@num"1D559\relax
- \Umathcode`i=0+\M at bb@num"1D55A\relax
- \Umathcode`j=0+\M at bb@num"1D55B\relax
- \Umathcode`k=0+\M at bb@num"1D55C\relax
- \Umathcode`l=0+\M at bb@num"1D55D\relax
- \Umathcode`m=0+\M at bb@num"1D55E\relax
- \Umathcode`n=0+\M at bb@num"1D55F\relax
- \Umathcode`o=0+\M at bb@num"1D560\relax
- \Umathcode`p=0+\M at bb@num"1D561\relax
- \Umathcode`q=0+\M at bb@num"1D562\relax
- \Umathcode`r=0+\M at bb@num"1D563\relax
- \Umathcode`s=0+\M at bb@num"1D564\relax
- \Umathcode`t=0+\M at bb@num"1D565\relax
- \Umathcode`u=0+\M at bb@num"1D566\relax
- \Umathcode`v=0+\M at bb@num"1D567\relax
- \Umathcode`w=0+\M at bb@num"1D568\relax
- \Umathcode`x=0+\M at bb@num"1D569\relax
- \Umathcode`y=0+\M at bb@num"1D56A\relax
- \Umathcode`z=0+\M at bb@num"1D56B\relax
- \Umathcode`0=0+\M at bb@num"1D7D8\relax
- \Umathcode`1=0+\M at bb@num"1D7D9\relax
- \Umathcode`2=0+\M at bb@num"1D7DA\relax
- \Umathcode`3=0+\M at bb@num"1D7DB\relax
- \Umathcode`4=0+\M at bb@num"1D7DC\relax
- \Umathcode`5=0+\M at bb@num"1D7DD\relax
- \Umathcode`6=0+\M at bb@num"1D7DE\relax
- \Umathcode`7=0+\M at bb@num"1D7DF\relax
- \Umathcode`8=0+\M at bb@num"1D7E0\relax
- \Umathcode`9=0+\M at bb@num"1D7E1\relax}}
+ \Umathcode`A=0+\M at bb@num"1D538\relax
+ \Umathcode`B=0+\M at bb@num"1D539\relax
+ \Umathcode`C=0+\M at bb@num"2102\relax
+ \Umathcode`D=0+\M at bb@num"1D53B\relax
+ \Umathcode`E=0+\M at bb@num"1D53C\relax
+ \Umathcode`F=0+\M at bb@num"1D53D\relax
+ \Umathcode`G=0+\M at bb@num"1D53E\relax
+ \Umathcode`H=0+\M at bb@num"210D\relax
+ \Umathcode`I=0+\M at bb@num"1D540\relax
+ \Umathcode`J=0+\M at bb@num"1D541\relax
+ \Umathcode`K=0+\M at bb@num"1D542\relax
+ \Umathcode`L=0+\M at bb@num"1D543\relax
+ \Umathcode`M=0+\M at bb@num"1D544\relax
+ \Umathcode`N=0+\M at bb@num"2115\relax
+ \Umathcode`O=0+\M at bb@num"1D546\relax
+ \Umathcode`P=0+\M at bb@num"2119\relax
+ \Umathcode`Q=0+\M at bb@num"211A\relax
+ \Umathcode`R=0+\M at bb@num"211D\relax
+ \Umathcode`S=0+\M at bb@num"1D54A\relax
+ \Umathcode`T=0+\M at bb@num"1D54B\relax
+ \Umathcode`U=0+\M at bb@num"1D54C\relax
+ \Umathcode`V=0+\M at bb@num"1D54D\relax
+ \Umathcode`W=0+\M at bb@num"1D54E\relax
+ \Umathcode`X=0+\M at bb@num"1D54F\relax
+ \Umathcode`Y=0+\M at bb@num"1D550\relax
+ \Umathcode`Z=0+\M at bb@num"2124\relax
+ \Umathcode`a=0+\M at bb@num"1D552\relax
+ \Umathcode`b=0+\M at bb@num"1D553\relax
+ \Umathcode`c=0+\M at bb@num"1D554\relax
+ \Umathcode`d=0+\M at bb@num"1D555\relax
+ \Umathcode`e=0+\M at bb@num"1D556\relax
+ \Umathcode`f=0+\M at bb@num"1D557\relax
+ \Umathcode`g=0+\M at bb@num"1D558\relax
+ \Umathcode`h=0+\M at bb@num"1D559\relax
+ \Umathcode`i=0+\M at bb@num"1D55A\relax
+ \Umathcode`j=0+\M at bb@num"1D55B\relax
+ \Umathcode`k=0+\M at bb@num"1D55C\relax
+ \Umathcode`l=0+\M at bb@num"1D55D\relax
+ \Umathcode`m=0+\M at bb@num"1D55E\relax
+ \Umathcode`n=0+\M at bb@num"1D55F\relax
+ \Umathcode`o=0+\M at bb@num"1D560\relax
+ \Umathcode`p=0+\M at bb@num"1D561\relax
+ \Umathcode`q=0+\M at bb@num"1D562\relax
+ \Umathcode`r=0+\M at bb@num"1D563\relax
+ \Umathcode`s=0+\M at bb@num"1D564\relax
+ \Umathcode`t=0+\M at bb@num"1D565\relax
+ \Umathcode`u=0+\M at bb@num"1D566\relax
+ \Umathcode`v=0+\M at bb@num"1D567\relax
+ \Umathcode`w=0+\M at bb@num"1D568\relax
+ \Umathcode`x=0+\M at bb@num"1D569\relax
+ \Umathcode`y=0+\M at bb@num"1D56A\relax
+ \Umathcode`z=0+\M at bb@num"1D56B\relax
+ \Umathcode`0=0+\M at bb@num"1D7D8\relax
+ \Umathcode`1=0+\M at bb@num"1D7D9\relax
+ \Umathcode`2=0+\M at bb@num"1D7DA\relax
+ \Umathcode`3=0+\M at bb@num"1D7DB\relax
+ \Umathcode`4=0+\M at bb@num"1D7DC\relax
+ \Umathcode`5=0+\M at bb@num"1D7DD\relax
+ \Umathcode`6=0+\M at bb@num"1D7DE\relax
+ \Umathcode`7=0+\M at bb@num"1D7DF\relax
+ \Umathcode`8=0+\M at bb@num"1D7E0\relax
+ \Umathcode`9=0+\M at bb@num"1D7E1\relax}}
\def\M at cal@set{%
\protected\def\mathcal##1{\relax
\ifmmode\else
@@ -3034,60 +3430,61 @@
\M at cal@mathcodes
##1%
\endgroup}
- \edef\M at cal@num{\number\csname symM\M at calshape\@tempa\endcsname}
+ \edef\M at cal@num{\number
+ \csname symM\M at calshape\@tempa\endcsname}
\protected\edef\M at cal@mathcodes{%
- \Umathcode`A=0+\M at cal@num"1D49C\relax
- \Umathcode`B=0+\M at cal@num"212C\relax
- \Umathcode`C=0+\M at cal@num"1D49E\relax
- \Umathcode`D=0+\M at cal@num"1D49F\relax
- \Umathcode`E=0+\M at cal@num"2130\relax
- \Umathcode`F=0+\M at cal@num"2131\relax
- \Umathcode`G=0+\M at cal@num"1D4A2\relax
- \Umathcode`H=0+\M at cal@num"210B\relax
- \Umathcode`I=0+\M at cal@num"2110\relax
- \Umathcode`J=0+\M at cal@num"1D4A5\relax
- \Umathcode`K=0+\M at cal@num"1D4A6\relax
- \Umathcode`L=0+\M at cal@num"2112\relax
- \Umathcode`M=0+\M at cal@num"2133\relax
- \Umathcode`N=0+\M at cal@num"1D4A9\relax
- \Umathcode`O=0+\M at cal@num"1D4AA\relax
- \Umathcode`P=0+\M at cal@num"1D4AB\relax
- \Umathcode`Q=0+\M at cal@num"1D4AC\relax
- \Umathcode`R=0+\M at cal@num"211B\relax
- \Umathcode`S=0+\M at cal@num"1D4AE\relax
- \Umathcode`T=0+\M at cal@num"1D4AF\relax
- \Umathcode`U=0+\M at cal@num"1D4B0\relax
- \Umathcode`V=0+\M at cal@num"1D4B1\relax
- \Umathcode`W=0+\M at cal@num"1D4B2\relax
- \Umathcode`X=0+\M at cal@num"1D4B3\relax
- \Umathcode`Y=0+\M at cal@num"1D4B4\relax
- \Umathcode`Z=0+\M at cal@num"1D4B5\relax
- \Umathcode`a=0+\M at cal@num"1D4B6\relax
- \Umathcode`b=0+\M at cal@num"1D4B7\relax
- \Umathcode`c=0+\M at cal@num"1D4B8\relax
- \Umathcode`d=0+\M at cal@num"1D4B9\relax
- \Umathcode`e=0+\M at cal@num"212F\relax
- \Umathcode`f=0+\M at cal@num"1D4BB\relax
- \Umathcode`g=0+\M at cal@num"210A\relax
- \Umathcode`h=0+\M at cal@num"1D4BD\relax
- \Umathcode`i=0+\M at cal@num"1D4BE\relax
- \Umathcode`j=0+\M at cal@num"1D4BF\relax
- \Umathcode`k=0+\M at cal@num"1D4C0\relax
- \Umathcode`l=0+\M at cal@num"1D4C1\relax
- \Umathcode`m=0+\M at cal@num"1D4C2\relax
- \Umathcode`n=0+\M at cal@num"1D4C3\relax
- \Umathcode`o=0+\M at cal@num"2134\relax
- \Umathcode`p=0+\M at cal@num"1D4C5\relax
- \Umathcode`q=0+\M at cal@num"1D4C6\relax
- \Umathcode`r=0+\M at cal@num"1D4C7\relax
- \Umathcode`s=0+\M at cal@num"1D4C8\relax
- \Umathcode`t=0+\M at cal@num"1D4C9\relax
- \Umathcode`u=0+\M at cal@num"1D4CA\relax
- \Umathcode`v=0+\M at cal@num"1D4CB\relax
- \Umathcode`w=0+\M at cal@num"1D4CC\relax
- \Umathcode`x=0+\M at cal@num"1D4CD\relax
- \Umathcode`y=0+\M at cal@num"1D4CE\relax
- \Umathcode`z=0+\M at cal@num"1D4CF\relax}}
+ \Umathcode`A=0+\M at cal@num"1D49C\relax
+ \Umathcode`B=0+\M at cal@num"212C\relax
+ \Umathcode`C=0+\M at cal@num"1D49E\relax
+ \Umathcode`D=0+\M at cal@num"1D49F\relax
+ \Umathcode`E=0+\M at cal@num"2130\relax
+ \Umathcode`F=0+\M at cal@num"2131\relax
+ \Umathcode`G=0+\M at cal@num"1D4A2\relax
+ \Umathcode`H=0+\M at cal@num"210B\relax
+ \Umathcode`I=0+\M at cal@num"2110\relax
+ \Umathcode`J=0+\M at cal@num"1D4A5\relax
+ \Umathcode`K=0+\M at cal@num"1D4A6\relax
+ \Umathcode`L=0+\M at cal@num"2112\relax
+ \Umathcode`M=0+\M at cal@num"2133\relax
+ \Umathcode`N=0+\M at cal@num"1D4A9\relax
+ \Umathcode`O=0+\M at cal@num"1D4AA\relax
+ \Umathcode`P=0+\M at cal@num"1D4AB\relax
+ \Umathcode`Q=0+\M at cal@num"1D4AC\relax
+ \Umathcode`R=0+\M at cal@num"211B\relax
+ \Umathcode`S=0+\M at cal@num"1D4AE\relax
+ \Umathcode`T=0+\M at cal@num"1D4AF\relax
+ \Umathcode`U=0+\M at cal@num"1D4B0\relax
+ \Umathcode`V=0+\M at cal@num"1D4B1\relax
+ \Umathcode`W=0+\M at cal@num"1D4B2\relax
+ \Umathcode`X=0+\M at cal@num"1D4B3\relax
+ \Umathcode`Y=0+\M at cal@num"1D4B4\relax
+ \Umathcode`Z=0+\M at cal@num"1D4B5\relax
+ \Umathcode`a=0+\M at cal@num"1D4B6\relax
+ \Umathcode`b=0+\M at cal@num"1D4B7\relax
+ \Umathcode`c=0+\M at cal@num"1D4B8\relax
+ \Umathcode`d=0+\M at cal@num"1D4B9\relax
+ \Umathcode`e=0+\M at cal@num"212F\relax
+ \Umathcode`f=0+\M at cal@num"1D4BB\relax
+ \Umathcode`g=0+\M at cal@num"210A\relax
+ \Umathcode`h=0+\M at cal@num"1D4BD\relax
+ \Umathcode`i=0+\M at cal@num"1D4BE\relax
+ \Umathcode`j=0+\M at cal@num"1D4BF\relax
+ \Umathcode`k=0+\M at cal@num"1D4C0\relax
+ \Umathcode`l=0+\M at cal@num"1D4C1\relax
+ \Umathcode`m=0+\M at cal@num"1D4C2\relax
+ \Umathcode`n=0+\M at cal@num"1D4C3\relax
+ \Umathcode`o=0+\M at cal@num"2134\relax
+ \Umathcode`p=0+\M at cal@num"1D4C5\relax
+ \Umathcode`q=0+\M at cal@num"1D4C6\relax
+ \Umathcode`r=0+\M at cal@num"1D4C7\relax
+ \Umathcode`s=0+\M at cal@num"1D4C8\relax
+ \Umathcode`t=0+\M at cal@num"1D4C9\relax
+ \Umathcode`u=0+\M at cal@num"1D4CA\relax
+ \Umathcode`v=0+\M at cal@num"1D4CB\relax
+ \Umathcode`w=0+\M at cal@num"1D4CC\relax
+ \Umathcode`x=0+\M at cal@num"1D4CD\relax
+ \Umathcode`y=0+\M at cal@num"1D4CE\relax
+ \Umathcode`z=0+\M at cal@num"1D4CF\relax}}
\def\M at frak@set{%
\protected\def\mathfrak##1{\relax
\ifmmode\else
@@ -3098,60 +3495,61 @@
\M at frak@mathcodes
##1%
\endgroup}
- \edef\M at frak@num{\number\csname symM\M at frakshape\@tempa\endcsname}
+ \edef\M at frak@num{\number
+ \csname symM\M at frakshape\@tempa\endcsname}
\protected\edef\M at frak@mathcodes{%
- \Umathcode`A=0+\M at frak@num"1D504\relax
- \Umathcode`B=0+\M at frak@num"1D505\relax
- \Umathcode`C=0+\M at frak@num"212D\relax
- \Umathcode`D=0+\M at frak@num"1D507\relax
- \Umathcode`E=0+\M at frak@num"1D508\relax
- \Umathcode`F=0+\M at frak@num"1D509\relax
- \Umathcode`G=0+\M at frak@num"1D50A\relax
- \Umathcode`H=0+\M at frak@num"210C\relax
- \Umathcode`I=0+\M at frak@num"2111\relax
- \Umathcode`J=0+\M at frak@num"1D50D\relax
- \Umathcode`K=0+\M at frak@num"1D50E\relax
- \Umathcode`L=0+\M at frak@num"1D50F\relax
- \Umathcode`M=0+\M at frak@num"1D510\relax
- \Umathcode`N=0+\M at frak@num"1D511\relax
- \Umathcode`O=0+\M at frak@num"1D512\relax
- \Umathcode`P=0+\M at frak@num"1D513\relax
- \Umathcode`Q=0+\M at frak@num"1D514\relax
- \Umathcode`R=0+\M at frak@num"211C\relax
- \Umathcode`S=0+\M at frak@num"1D516\relax
- \Umathcode`T=0+\M at frak@num"1D517\relax
- \Umathcode`U=0+\M at frak@num"1D518\relax
- \Umathcode`V=0+\M at frak@num"1D519\relax
- \Umathcode`W=0+\M at frak@num"1D51A\relax
- \Umathcode`X=0+\M at frak@num"1D51B\relax
- \Umathcode`Y=0+\M at frak@num"1D51C\relax
- \Umathcode`Z=0+\M at frak@num"2128\relax
- \Umathcode`a=0+\M at frak@num"1D51E\relax
- \Umathcode`b=0+\M at frak@num"1D51F\relax
- \Umathcode`c=0+\M at frak@num"1D520\relax
- \Umathcode`d=0+\M at frak@num"1D521\relax
- \Umathcode`e=0+\M at frak@num"1D522\relax
- \Umathcode`f=0+\M at frak@num"1D523\relax
- \Umathcode`g=0+\M at frak@num"1D524\relax
- \Umathcode`h=0+\M at frak@num"1D525\relax
- \Umathcode`i=0+\M at frak@num"1D526\relax
- \Umathcode`j=0+\M at frak@num"1D527\relax
- \Umathcode`k=0+\M at frak@num"1D528\relax
- \Umathcode`l=0+\M at frak@num"1D529\relax
- \Umathcode`m=0+\M at frak@num"1D52A\relax
- \Umathcode`n=0+\M at frak@num"1D52B\relax
- \Umathcode`o=0+\M at frak@num"1D52C\relax
- \Umathcode`p=0+\M at frak@num"1D52D\relax
- \Umathcode`q=0+\M at frak@num"1D52E\relax
- \Umathcode`r=0+\M at frak@num"1D52F\relax
- \Umathcode`s=0+\M at frak@num"1D530\relax
- \Umathcode`t=0+\M at frak@num"1D531\relax
- \Umathcode`u=0+\M at frak@num"1D532\relax
- \Umathcode`v=0+\M at frak@num"1D533\relax
- \Umathcode`w=0+\M at frak@num"1D534\relax
- \Umathcode`x=0+\M at frak@num"1D535\relax
- \Umathcode`y=0+\M at frak@num"1D536\relax
- \Umathcode`z=0+\M at frak@num"1D537\relax}}
+ \Umathcode`A=0+\M at frak@num"1D504\relax
+ \Umathcode`B=0+\M at frak@num"1D505\relax
+ \Umathcode`C=0+\M at frak@num"212D\relax
+ \Umathcode`D=0+\M at frak@num"1D507\relax
+ \Umathcode`E=0+\M at frak@num"1D508\relax
+ \Umathcode`F=0+\M at frak@num"1D509\relax
+ \Umathcode`G=0+\M at frak@num"1D50A\relax
+ \Umathcode`H=0+\M at frak@num"210C\relax
+ \Umathcode`I=0+\M at frak@num"2111\relax
+ \Umathcode`J=0+\M at frak@num"1D50D\relax
+ \Umathcode`K=0+\M at frak@num"1D50E\relax
+ \Umathcode`L=0+\M at frak@num"1D50F\relax
+ \Umathcode`M=0+\M at frak@num"1D510\relax
+ \Umathcode`N=0+\M at frak@num"1D511\relax
+ \Umathcode`O=0+\M at frak@num"1D512\relax
+ \Umathcode`P=0+\M at frak@num"1D513\relax
+ \Umathcode`Q=0+\M at frak@num"1D514\relax
+ \Umathcode`R=0+\M at frak@num"211C\relax
+ \Umathcode`S=0+\M at frak@num"1D516\relax
+ \Umathcode`T=0+\M at frak@num"1D517\relax
+ \Umathcode`U=0+\M at frak@num"1D518\relax
+ \Umathcode`V=0+\M at frak@num"1D519\relax
+ \Umathcode`W=0+\M at frak@num"1D51A\relax
+ \Umathcode`X=0+\M at frak@num"1D51B\relax
+ \Umathcode`Y=0+\M at frak@num"1D51C\relax
+ \Umathcode`Z=0+\M at frak@num"2128\relax
+ \Umathcode`a=0+\M at frak@num"1D51E\relax
+ \Umathcode`b=0+\M at frak@num"1D51F\relax
+ \Umathcode`c=0+\M at frak@num"1D520\relax
+ \Umathcode`d=0+\M at frak@num"1D521\relax
+ \Umathcode`e=0+\M at frak@num"1D522\relax
+ \Umathcode`f=0+\M at frak@num"1D523\relax
+ \Umathcode`g=0+\M at frak@num"1D524\relax
+ \Umathcode`h=0+\M at frak@num"1D525\relax
+ \Umathcode`i=0+\M at frak@num"1D526\relax
+ \Umathcode`j=0+\M at frak@num"1D527\relax
+ \Umathcode`k=0+\M at frak@num"1D528\relax
+ \Umathcode`l=0+\M at frak@num"1D529\relax
+ \Umathcode`m=0+\M at frak@num"1D52A\relax
+ \Umathcode`n=0+\M at frak@num"1D52B\relax
+ \Umathcode`o=0+\M at frak@num"1D52C\relax
+ \Umathcode`p=0+\M at frak@num"1D52D\relax
+ \Umathcode`q=0+\M at frak@num"1D52E\relax
+ \Umathcode`r=0+\M at frak@num"1D52F\relax
+ \Umathcode`s=0+\M at frak@num"1D530\relax
+ \Umathcode`t=0+\M at frak@num"1D531\relax
+ \Umathcode`u=0+\M at frak@num"1D532\relax
+ \Umathcode`v=0+\M at frak@num"1D533\relax
+ \Umathcode`w=0+\M at frak@num"1D534\relax
+ \Umathcode`x=0+\M at frak@num"1D535\relax
+ \Umathcode`y=0+\M at frak@num"1D536\relax
+ \Umathcode`z=0+\M at frak@num"1D537\relax}}
\def\M at bcal@set{%
\protected\def\mathbcal##1{\relax
\ifmmode\else
@@ -3162,60 +3560,61 @@
\M at bcal@mathcodes
##1%
\endgroup}
- \edef\M at bcal@num{\number\csname symM\M at bcalshape\@tempa\endcsname}
+ \edef\M at bcal@num{\number
+ \csname symM\M at bcalshape\@tempa\endcsname}
\protected\edef\M at bcal@mathcodes{%
- \Umathcode`A=0+\M at bcal@num"1D4D0\relax
- \Umathcode`B=0+\M at bcal@num"1D4D1\relax
- \Umathcode`C=0+\M at bcal@num"1D4D2\relax
- \Umathcode`D=0+\M at bcal@num"1D4D3\relax
- \Umathcode`E=0+\M at bcal@num"1D4D4\relax
- \Umathcode`F=0+\M at bcal@num"1D4D5\relax
- \Umathcode`G=0+\M at bcal@num"1D4D6\relax
- \Umathcode`H=0+\M at bcal@num"1D4D7\relax
- \Umathcode`I=0+\M at bcal@num"1D4D8\relax
- \Umathcode`J=0+\M at bcal@num"1D4D9\relax
- \Umathcode`K=0+\M at bcal@num"1D4DA\relax
- \Umathcode`L=0+\M at bcal@num"1D4DB\relax
- \Umathcode`M=0+\M at bcal@num"1D4DC\relax
- \Umathcode`N=0+\M at bcal@num"1D4DD\relax
- \Umathcode`O=0+\M at bcal@num"1D4DE\relax
- \Umathcode`P=0+\M at bcal@num"1D4DF\relax
- \Umathcode`Q=0+\M at bcal@num"1D4E0\relax
- \Umathcode`R=0+\M at bcal@num"1D4E1\relax
- \Umathcode`S=0+\M at bcal@num"1D4E2\relax
- \Umathcode`T=0+\M at bcal@num"1D4E3\relax
- \Umathcode`U=0+\M at bcal@num"1D4E4\relax
- \Umathcode`V=0+\M at bcal@num"1D4E5\relax
- \Umathcode`W=0+\M at bcal@num"1D4E6\relax
- \Umathcode`X=0+\M at bcal@num"1D4E7\relax
- \Umathcode`Y=0+\M at bcal@num"1D4E8\relax
- \Umathcode`Z=0+\M at bcal@num"1D4E9\relax
- \Umathcode`a=0+\M at bcal@num"1D4EA\relax
- \Umathcode`b=0+\M at bcal@num"1D4EB\relax
- \Umathcode`c=0+\M at bcal@num"1D4EC\relax
- \Umathcode`d=0+\M at bcal@num"1D4ED\relax
- \Umathcode`e=0+\M at bcal@num"1D4EE\relax
- \Umathcode`f=0+\M at bcal@num"1D4EF\relax
- \Umathcode`g=0+\M at bcal@num"1D4F0\relax
- \Umathcode`h=0+\M at bcal@num"1D4F1\relax
- \Umathcode`i=0+\M at bcal@num"1D4F2\relax
- \Umathcode`j=0+\M at bcal@num"1D4F3\relax
- \Umathcode`k=0+\M at bcal@num"1D4F4\relax
- \Umathcode`l=0+\M at bcal@num"1D4F5\relax
- \Umathcode`m=0+\M at bcal@num"1D4F6\relax
- \Umathcode`n=0+\M at bcal@num"1D4F7\relax
- \Umathcode`o=0+\M at bcal@num"1D4F8\relax
- \Umathcode`p=0+\M at bcal@num"1D4F9\relax
- \Umathcode`q=0+\M at bcal@num"1D4FA\relax
- \Umathcode`r=0+\M at bcal@num"1D4FB\relax
- \Umathcode`s=0+\M at bcal@num"1D4FC\relax
- \Umathcode`t=0+\M at bcal@num"1D4FD\relax
- \Umathcode`u=0+\M at bcal@num"1D4FE\relax
- \Umathcode`v=0+\M at bcal@num"1D4FF\relax
- \Umathcode`w=0+\M at bcal@num"1D500\relax
- \Umathcode`x=0+\M at bcal@num"1D501\relax
- \Umathcode`y=0+\M at bcal@num"1D502\relax
- \Umathcode`z=0+\M at bcal@num"1D503\relax}}
+ \Umathcode`A=0+\M at bcal@num"1D4D0\relax
+ \Umathcode`B=0+\M at bcal@num"1D4D1\relax
+ \Umathcode`C=0+\M at bcal@num"1D4D2\relax
+ \Umathcode`D=0+\M at bcal@num"1D4D3\relax
+ \Umathcode`E=0+\M at bcal@num"1D4D4\relax
+ \Umathcode`F=0+\M at bcal@num"1D4D5\relax
+ \Umathcode`G=0+\M at bcal@num"1D4D6\relax
+ \Umathcode`H=0+\M at bcal@num"1D4D7\relax
+ \Umathcode`I=0+\M at bcal@num"1D4D8\relax
+ \Umathcode`J=0+\M at bcal@num"1D4D9\relax
+ \Umathcode`K=0+\M at bcal@num"1D4DA\relax
+ \Umathcode`L=0+\M at bcal@num"1D4DB\relax
+ \Umathcode`M=0+\M at bcal@num"1D4DC\relax
+ \Umathcode`N=0+\M at bcal@num"1D4DD\relax
+ \Umathcode`O=0+\M at bcal@num"1D4DE\relax
+ \Umathcode`P=0+\M at bcal@num"1D4DF\relax
+ \Umathcode`Q=0+\M at bcal@num"1D4E0\relax
+ \Umathcode`R=0+\M at bcal@num"1D4E1\relax
+ \Umathcode`S=0+\M at bcal@num"1D4E2\relax
+ \Umathcode`T=0+\M at bcal@num"1D4E3\relax
+ \Umathcode`U=0+\M at bcal@num"1D4E4\relax
+ \Umathcode`V=0+\M at bcal@num"1D4E5\relax
+ \Umathcode`W=0+\M at bcal@num"1D4E6\relax
+ \Umathcode`X=0+\M at bcal@num"1D4E7\relax
+ \Umathcode`Y=0+\M at bcal@num"1D4E8\relax
+ \Umathcode`Z=0+\M at bcal@num"1D4E9\relax
+ \Umathcode`a=0+\M at bcal@num"1D4EA\relax
+ \Umathcode`b=0+\M at bcal@num"1D4EB\relax
+ \Umathcode`c=0+\M at bcal@num"1D4EC\relax
+ \Umathcode`d=0+\M at bcal@num"1D4ED\relax
+ \Umathcode`e=0+\M at bcal@num"1D4EE\relax
+ \Umathcode`f=0+\M at bcal@num"1D4EF\relax
+ \Umathcode`g=0+\M at bcal@num"1D4F0\relax
+ \Umathcode`h=0+\M at bcal@num"1D4F1\relax
+ \Umathcode`i=0+\M at bcal@num"1D4F2\relax
+ \Umathcode`j=0+\M at bcal@num"1D4F3\relax
+ \Umathcode`k=0+\M at bcal@num"1D4F4\relax
+ \Umathcode`l=0+\M at bcal@num"1D4F5\relax
+ \Umathcode`m=0+\M at bcal@num"1D4F6\relax
+ \Umathcode`n=0+\M at bcal@num"1D4F7\relax
+ \Umathcode`o=0+\M at bcal@num"1D4F8\relax
+ \Umathcode`p=0+\M at bcal@num"1D4F9\relax
+ \Umathcode`q=0+\M at bcal@num"1D4FA\relax
+ \Umathcode`r=0+\M at bcal@num"1D4FB\relax
+ \Umathcode`s=0+\M at bcal@num"1D4FC\relax
+ \Umathcode`t=0+\M at bcal@num"1D4FD\relax
+ \Umathcode`u=0+\M at bcal@num"1D4FE\relax
+ \Umathcode`v=0+\M at bcal@num"1D4FF\relax
+ \Umathcode`w=0+\M at bcal@num"1D500\relax
+ \Umathcode`x=0+\M at bcal@num"1D501\relax
+ \Umathcode`y=0+\M at bcal@num"1D502\relax
+ \Umathcode`z=0+\M at bcal@num"1D503\relax}}
\def\M at bfrak@set{%
\protected\def\mathbfrak##1{\relax
\ifmmode\else
@@ -3226,60 +3625,61 @@
\M at bfrak@mathcodes
##1%
\endgroup}
- \edef\M at bfrak@num{\number\csname symM\M at bfrakshape\@tempa\endcsname}
+ \edef\M at bfrak@num{\number
+ \csname symM\M at bfrakshape\@tempa\endcsname}
\protected\edef\M at bfrak@mathcodes{%
- \Umathcode`A=0+\M at bfrak@num"1D56C\relax
- \Umathcode`B=0+\M at bfrak@num"1D56D\relax
- \Umathcode`C=0+\M at bfrak@num"1D56E\relax
- \Umathcode`D=0+\M at bfrak@num"1D56F\relax
- \Umathcode`E=0+\M at bfrak@num"1D570\relax
- \Umathcode`F=0+\M at bfrak@num"1D571\relax
- \Umathcode`G=0+\M at bfrak@num"1D572\relax
- \Umathcode`H=0+\M at bfrak@num"1D573\relax
- \Umathcode`I=0+\M at bfrak@num"1D574\relax
- \Umathcode`J=0+\M at bfrak@num"1D575\relax
- \Umathcode`K=0+\M at bfrak@num"1D576\relax
- \Umathcode`L=0+\M at bfrak@num"1D577\relax
- \Umathcode`M=0+\M at bfrak@num"1D578\relax
- \Umathcode`N=0+\M at bfrak@num"1D579\relax
- \Umathcode`O=0+\M at bfrak@num"1D57A\relax
- \Umathcode`P=0+\M at bfrak@num"1D57B\relax
- \Umathcode`Q=0+\M at bfrak@num"1D57C\relax
- \Umathcode`R=0+\M at bfrak@num"1D57D\relax
- \Umathcode`S=0+\M at bfrak@num"1D57E\relax
- \Umathcode`T=0+\M at bfrak@num"1D57F\relax
- \Umathcode`U=0+\M at bfrak@num"1D580\relax
- \Umathcode`V=0+\M at bfrak@num"1D581\relax
- \Umathcode`W=0+\M at bfrak@num"1D582\relax
- \Umathcode`X=0+\M at bfrak@num"1D583\relax
- \Umathcode`Y=0+\M at bfrak@num"1D584\relax
- \Umathcode`Z=0+\M at bfrak@num"1D585\relax
- \Umathcode`a=0+\M at bfrak@num"1D586\relax
- \Umathcode`b=0+\M at bfrak@num"1D587\relax
- \Umathcode`c=0+\M at bfrak@num"1D588\relax
- \Umathcode`d=0+\M at bfrak@num"1D589\relax
- \Umathcode`e=0+\M at bfrak@num"1D58A\relax
- \Umathcode`f=0+\M at bfrak@num"1D58B\relax
- \Umathcode`g=0+\M at bfrak@num"1D58C\relax
- \Umathcode`h=0+\M at bfrak@num"1D58D\relax
- \Umathcode`i=0+\M at bfrak@num"1D58E\relax
- \Umathcode`j=0+\M at bfrak@num"1D58F\relax
- \Umathcode`k=0+\M at bfrak@num"1D590\relax
- \Umathcode`l=0+\M at bfrak@num"1D591\relax
- \Umathcode`m=0+\M at bfrak@num"1D592\relax
- \Umathcode`n=0+\M at bfrak@num"1D593\relax
- \Umathcode`o=0+\M at bfrak@num"1D594\relax
- \Umathcode`p=0+\M at bfrak@num"1D595\relax
- \Umathcode`q=0+\M at bfrak@num"1D596\relax
- \Umathcode`r=0+\M at bfrak@num"1D597\relax
- \Umathcode`s=0+\M at bfrak@num"1D598\relax
- \Umathcode`t=0+\M at bfrak@num"1D599\relax
- \Umathcode`u=0+\M at bfrak@num"1D59A\relax
- \Umathcode`v=0+\M at bfrak@num"1D59B\relax
- \Umathcode`w=0+\M at bfrak@num"1D59C\relax
- \Umathcode`x=0+\M at bfrak@num"1D59D\relax
- \Umathcode`y=0+\M at bfrak@num"1D59E\relax
- \Umathcode`z=0+\M at bfrak@num"1D59F\relax}}
+ \Umathcode`A=0+\M at bfrak@num"1D56C\relax
+ \Umathcode`B=0+\M at bfrak@num"1D56D\relax
+ \Umathcode`C=0+\M at bfrak@num"1D56E\relax
+ \Umathcode`D=0+\M at bfrak@num"1D56F\relax
+ \Umathcode`E=0+\M at bfrak@num"1D570\relax
+ \Umathcode`F=0+\M at bfrak@num"1D571\relax
+ \Umathcode`G=0+\M at bfrak@num"1D572\relax
+ \Umathcode`H=0+\M at bfrak@num"1D573\relax
+ \Umathcode`I=0+\M at bfrak@num"1D574\relax
+ \Umathcode`J=0+\M at bfrak@num"1D575\relax
+ \Umathcode`K=0+\M at bfrak@num"1D576\relax
+ \Umathcode`L=0+\M at bfrak@num"1D577\relax
+ \Umathcode`M=0+\M at bfrak@num"1D578\relax
+ \Umathcode`N=0+\M at bfrak@num"1D579\relax
+ \Umathcode`O=0+\M at bfrak@num"1D57A\relax
+ \Umathcode`P=0+\M at bfrak@num"1D57B\relax
+ \Umathcode`Q=0+\M at bfrak@num"1D57C\relax
+ \Umathcode`R=0+\M at bfrak@num"1D57D\relax
+ \Umathcode`S=0+\M at bfrak@num"1D57E\relax
+ \Umathcode`T=0+\M at bfrak@num"1D57F\relax
+ \Umathcode`U=0+\M at bfrak@num"1D580\relax
+ \Umathcode`V=0+\M at bfrak@num"1D581\relax
+ \Umathcode`W=0+\M at bfrak@num"1D582\relax
+ \Umathcode`X=0+\M at bfrak@num"1D583\relax
+ \Umathcode`Y=0+\M at bfrak@num"1D584\relax
+ \Umathcode`Z=0+\M at bfrak@num"1D585\relax
+ \Umathcode`a=0+\M at bfrak@num"1D586\relax
+ \Umathcode`b=0+\M at bfrak@num"1D587\relax
+ \Umathcode`c=0+\M at bfrak@num"1D588\relax
+ \Umathcode`d=0+\M at bfrak@num"1D589\relax
+ \Umathcode`e=0+\M at bfrak@num"1D58A\relax
+ \Umathcode`f=0+\M at bfrak@num"1D58B\relax
+ \Umathcode`g=0+\M at bfrak@num"1D58C\relax
+ \Umathcode`h=0+\M at bfrak@num"1D58D\relax
+ \Umathcode`i=0+\M at bfrak@num"1D58E\relax
+ \Umathcode`j=0+\M at bfrak@num"1D58F\relax
+ \Umathcode`k=0+\M at bfrak@num"1D590\relax
+ \Umathcode`l=0+\M at bfrak@num"1D591\relax
+ \Umathcode`m=0+\M at bfrak@num"1D592\relax
+ \Umathcode`n=0+\M at bfrak@num"1D593\relax
+ \Umathcode`o=0+\M at bfrak@num"1D594\relax
+ \Umathcode`p=0+\M at bfrak@num"1D595\relax
+ \Umathcode`q=0+\M at bfrak@num"1D596\relax
+ \Umathcode`r=0+\M at bfrak@num"1D597\relax
+ \Umathcode`s=0+\M at bfrak@num"1D598\relax
+ \Umathcode`t=0+\M at bfrak@num"1D599\relax
+ \Umathcode`u=0+\M at bfrak@num"1D59A\relax
+ \Umathcode`v=0+\M at bfrak@num"1D59B\relax
+ \Umathcode`w=0+\M at bfrak@num"1D59C\relax
+ \Umathcode`x=0+\M at bfrak@num"1D59D\relax
+ \Umathcode`y=0+\M at bfrak@num"1D59E\relax
+ \Umathcode`z=0+\M at bfrak@num"1D59F\relax}}
\endinput
%%
%% End of file `mathfont.sty'.
More information about the tex-live-commits
mailing list.