summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/xelatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-10-02 00:06:36 +0000
committerKarl Berry <karl@freefriends.org>2008-10-02 00:06:36 +0000
commit92090712c51bbf2c7667b0b9fe1e78e1566c05c8 (patch)
tree97e1853125cd9bca71197c1fc622f0e1c13903ad /Master/texmf-dist/source/xelatex
parent22e41a448803cd30f71ffa82b7c42a44b0fb1c62 (diff)
mathspec update (1oct08)
git-svn-id: svn://tug.org/texlive/trunk@10820 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/xelatex')
-rw-r--r--Master/texmf-dist/source/xelatex/mathspec/mathspec.dtx1907
-rw-r--r--Master/texmf-dist/source/xelatex/mathspec/mathspec.ins77
2 files changed, 1263 insertions, 721 deletions
diff --git a/Master/texmf-dist/source/xelatex/mathspec/mathspec.dtx b/Master/texmf-dist/source/xelatex/mathspec/mathspec.dtx
index 7eac417d831..ada9b8d66e7 100644
--- a/Master/texmf-dist/source/xelatex/mathspec/mathspec.dtx
+++ b/Master/texmf-dist/source/xelatex/mathspec/mathspec.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright Andrew Gilbert Moschou 2008
+% © Andrew Gilbert Moschou 2008
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -9,65 +9,89 @@
%
% http://www.latex-project.org/lppl.txt
%
-% and version 1.3c or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
+% and version 1.3c or later is part of all recent distributions of
+% LaTeX.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Andrew Gilbert Moschou.
%
% \fi
%
% \iffalse
-%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{mathspec}[2008/08/17 v0.10 LaTeX Package (Specify arbitrary fonts for mathematics)]
-%
+%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
+%<package>\ProvidesPackage{mathspec}[2008/10/01 v0.15 LaTeX Package (Specify arbitrary fonts for mathematics)]
+%<*internal>
+\begingroup
+%</internal>
+%<*batchfile>
+%%
+%% © Andrew Gilbert Moschou 2008
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all recent distributions of
+%% LaTeX.
+%%
+
+\input docstrip.tex
+\keepsilent
+\usedir{tex/xelatex/mathspec}
+\preamble
+
+This is a generated file.
+
+© Andrew Gilbert Moschou
+
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3c of this license or (at your option) any later
+version. The latest version of this license is in:
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.3c or later is part of all recent distributions of
+LaTeX.
+
+\endpreamble
+\askforoverwritefalse
+\generate{\file{mathspec.sty}{\from{mathspec.dtx}{package}}}
+%</batchfile>
+%<batchfile>\endbatchfile
+%<*internal>
+\nopreamble
+\generate{\file{mathspec.ins}{\from{mathspec.dtx}{batchfile}}}
+\endgroup
+%</internal>
%
%<*driver>
\documentclass[a4paper]{ltxdoc}
\usepackage{amsmath}
-\usepackage{mathspec}
-\usepackage{xltxtra}
-\EnableCrossrefs
-\CodelineIndex
-\RecordChanges
-\setmainfont[Numbers={OldStyle,Proportional},Mapping=tex-text]{Constantia}
-\setsansfont[Numbers={OldStyle,Proportional},Scale=MatchLowercase]{Candara}
-\setmonofont[Numbers={OldStyle},Scale=MatchLowercase]{Consolas}
-\setmathsfont[Set=Latin,Scale=MatchLowercase]{Berling Antiqua}
-\setmathsfont*[Set=Greek,Lowercase=Regular,Scale=MatchLowercase]{GFS Didot}
-\setmathsfont[Set=Symbols,Scale=MatchLowercase]{Gentium Basic}
-\newcommand\makemonofontCambria{\setmonofont[Numbers=OldStyle,Scale=MatchLowercase]{Cambria Math}}
-\newcommand\revertmonofont{\setmonofont[Numbers=OldStyle,Scale=MatchLowercase]{Consolas}}
-\newcommand\unicode[2][]{\sc{U+#2}\ #1: {\fontspec{Cambria Math}\char"#2}}
-\usepackage{booktabs}
-\usepackage{eukdate}
-\usepackage[xetex,usenames]{color}
-\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.0833emX}
-\DeclareRobustCommand{\LaTeX}{L\kern-.25em{\sbox0 T\vbox to\ht0{\hbox{\textsc{a}}\vss}}\kern-.0833em\TeX}
-\def\Xe{X\kern-.0833em\lower.5ex\hbox{\reflectbox{E}}}
-\def\XeTeX{\Xe\kern-.1667em\TeX}
-\def\XeLaTeX{\Xe\kern-0.0833em\LaTeX}
-\renewcommand\sc[1]{\textsc{\MakeLowercase{#1}}}
+\DeclareSymbolFont{AMSb}{U}{msb}{m}{n}
\makeatletter
-\newenvironment{ttdescription}
- {\list{}{\labelwidth\z@ \itemindent-\leftmargin
- \let\makelabel\ttdescriptionlabel}%
- \renewcommand\meta{\boldmeta}}
- {\endlist}
-\newcommand*\ttdescriptionlabel[1]{\hspace\labelsep
- \normalfont\bfseries\texttt{#1}}
-\DeclareRobustCommand\boldmeta[1]{%
- {\boldmath\ensuremath\langle}%
- \ifmmode \expandafter \nfss@text \fi{%
- \meta@font@select%
- \edef\meta@hyphen@restore%
- {\hyphenchar\the\font\the\hyphenchar\font}%
- \hyphenchar\font\m@ne%
- \language\l@nohyphenation%
- \textrm{#1}\/%
- \meta@hyphen@restore}{%
- \boldmath\ensuremath\rangle}}
+\DeclareMathSymbol{\eu@digamma}{\mathord}{AMSb}{"7A}
+\usepackage[MnSymbol,normalskips]{mathspec}
+\usepackage{eukdate}
+\def\@seccntformat#1{%
+ \protect\makebox[0pt][r]{\csname the#1\endcsname\hspace{1\@ptsize pt}}}
+\DeclareRobustCommand{\MakeSC}[1]{{%
+ \def\reserved@a##1##2{\let##2##1\reserved@a}%
+ \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
+ \protected@edef\reserved@a{{\scshape\lowercase{#1}}}%
+ \reserved@a
+ }}
+\protected@edef\MakeSC#1{\MakeSC{#1}}
+\global\let\MakeSCorLowercase\MakeSC
+\newcommand\orLowercase{\let\l@section\l@sectionLC}
\renewcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
- {\normalfont\Large\scshape\MakeLowercase}}
+ {\normalfont\Large\MakeSCorLowercase}}
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
@@ -76,189 +100,360 @@
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\normalsize\itshape}}
-\def\@seccntformat#1{\protect\makebox[0pt][r]{\sc{\csname the#1\endcsname}\hspace{10pt}}}
+\newcommand\STIX{\MakeSC{STIX}}
+\RequirePackage{graphicx}
+\RequirePackage{booktabs}
+\usepackage[xetex,usenames]{color}
\def\abovetopsep{1ex}
-\makeatother
-\hyphenation{math-ema-tic math-ema-tics spec-ify speci-fies be-ne-fit be-ne-fits ela-borate addi-tion addi-tions addi-tion-al addi-tion-al-ly mo-dern separ-ate}
-\frenchspacing
-\definecolor{eured}{rgb}{.8,.1,.2}
-\newcommand\te[1]{\textcolor{eured}{#1}}
-\newcommand\pp[1]{\left(#1\right)}
-\renewcommand\tablename{\sc{Table}}
-\renewcommand\d{\mathord{\mathrm{d}}}
-\newcommand\permitbreak{\linebreak[0]}
+\def\TeX{%
+ \ifdim\fontdimen1\font=0pt\@tempdima=0pt%
+ \else\@tempdima=-0.106275ex\fi
+ T\kern-.1667em\kern\@tempdima\lower.5ex\hbox{E}\kern-.125em X}
+\def\Xe{X\kern-.125em \lower.5ex\hbox{\reflectbox{E}}}
+\def\XeTeX{\Xe\kern-.1667em\TeX}
+\DeclareRobustCommand{\LaTeX}{%
+ L\kern-.36em%
+ {\sbox\z@ T\vbox to\ht\z@{\hbox{\scshape a}\vss}}%
+ \kern-.10em\TeX}
+\def\XeLaTeX{\Xe\kern-.0833em\LaTeX}
\newcommand\closebracket{\char"5D}
\renewcommand\backslash{\char"5C}
+\newcommand\permitbreak{\linebreak[0]}
+\definecolor{eured}{rgb}{.8,.1,.2}
+\newcommand\te[1]{\textcolor{eured}{#1}}
+\newcommand\eg{e.g.\ }
+\renewcommand\labelitemi{\char"2022}
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \sbox\@tempboxa{\MakeSC{#1:} #2}%
+ \ifdim \wd\@tempboxa >\hsize
+ \MakeSC{#1:} #2\par
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip}
+\frenchspacing
+\let\@meta\meta
+\renewcommand\meta[1]{{%
+ \ifmmode
+ \let\@@meta\relax
+ \else
+ \let\@@meta\rmfamily
+ \fi
+ \@@meta\@meta{#1}}}
+\newcommand\displaycommand[2]{%
+ \begin{center}\ttfamily%
+ \fbox{\string#1#2}%
+ \end{center}}
+\fontspec{Bembo MT}
+\let\eu@Bembo\zf@family
+\DeclareSymbolFont{BemboMTmn}{EU1}{\eu@Bembo}{m}{n}
+\DeclareSymbolFont{BemboMTmit}{EU1}{\eu@Bembo}{m}{it}
+\newcommand\BemboMathematics{
+ \XeTeXmathcode `f = 7 \symBemboMTmit `f
+ \XeTeXmathcode `x = 7 \symBemboMTmit `x
+ \XeTeXmathcode `c = 7 \symBemboMTmit `c
+ \XeTeXmathcode `e = 7 \symBemboMTmit `e
+ \XeTeXmathcode `j = 7 \symBemboMTmit `j
+ \XeTeXmathcode `n = 7 \symBemboMTmit `n
+ \XeTeXmathcode `d = 7 \symBemboMTmn `d
+ \XeTeXmathcode `1 = 0 \symBemboMTmn `1
+ \XeTeXmathcode `2 = 0 \symBemboMTmn `2}
+\newcommand\biggerskips{
+ \thinmuskip=4mu
+ \medmuskip=5mu plus 2mu minus 4mu
+ \thickmuskip=6mu plus 5mu}
+\newcommand\grp[3]{\left#1#3\right#2}
+\renewcommand\contentsname{Table of Contents}
+\renewcommand*\l@section[2]{%
+ \ifnum \c@tocdepth >\z@
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus\p@}%
+ \setlength\@tempdima{1.5em}%
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ \MakeSC{#1}\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+ \endgroup
+ \fi}
+\newcommand*\l@sectionLC[2]{%
+ \ifnum \c@tocdepth >\z@
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus\p@}%
+ \setlength\@tempdima{1.5em}%
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ \MakeLowercase{#1}\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+ \endgroup
+ \fi}
+\setcounter{tocdepth}{2}
+\renewcommand\tableofcontents{%
+ \begin{multicols}{2}[\section*{\contentsname}]%
+ \small\@starttoc{toc}%
+ \end{multicols}}
+\renewenvironment{theglossary}
+ {\small\list{}{}
+ \item\relax
+ \glossary@prologue\GlossaryParms
+ \let\item\@idxitem \ignorespaces
+ \def\pfill{\hspace*{\fill}}}
+ {\endlist}
+\newfontfamily\CambriaMath[Scale=0.9468786611]{Cambria Math}
+\newfontfamily\STIXGeneral[Scale=1.03271028]{STIXGeneral}
+\newcommand\CambriaOrSTIX{
+ \CambriaMath
+ \@gobble{\STIXGeneral\itshape}}
+\newfontfamily\GFSElpis[Scale=0.9821428571]{GFS ElpisX}
+\newfontfamily\GaramondNoVIII[Scale=1.036902635]{GaramondNo8}
+\usepackage{multirow}
+\newcommand\tablerow[3]{
+ \CambriaMath #1 &
+ \ttfamily\string#3 &
+ \CambriaMath\char"#2 &
+ \ttfamily\MakeLowercase{\string#3}}
+\renewcommand\tablerow[3]{
+ \GFSElpis #1 & \ttfamily\string#3 & $#2$ &
+ \ttfamily\MakeLowercase{\string#3}}
+\hyphenation{se-par-ate math-ema-tics math-ema-tic cor-res-pond-ing}
+\makeatother
+\setprimaryfont[Numbers={OldStyle,Proportional},Ligatures=Rare,Scale=0.884]{Serif12 Beta}
+\setmonofonts[Numbers=OldStyle,Scale=0.8975298805]{Consolas}
+\setsansfonts[Numbers={OldStyle,Proportional},Scale=MatchLowercase]{Candara}
+\setmathsfont[Set=Greek,Scale=0.9821428571,FakeSlant=0.21255]{GFS ElpisX}
+\normalvarforms
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
\begin{document}
\DocInput{mathspec.dtx}
\end{document}
%</driver>
% \fi
%
-% \CheckSum{1096}
-%
% \GetFileInfo{mathspec.sty}
%
-% \title{The \textsf{mathspec} package\thanks{This document corresponds to \textsf{mathspec}~\fileversion, dated~\filedate.}}
-% \author{Andrew Gilbert Moschou\\\texttt{andmos@gmail.com}}
-%
-% \frenchspacing
+% \DoNotIndex{
+% \@argdef,\@eu@GreekDigits@true,\@eu@GreekLowercase@true,\@eu@GreekUppercase@true,
+% \@eu@LatinDigits@true,\@eu@LatinLowercase@true,\@eu@LatinUppercase@true,
+% \@eu@Symbols@false,\@eu@Symbols@true,\@firstofone,\@gobble,\@ifdefinable,\@ifnext,
+% \@ifnexta,\@ifpackageloaded,\@ifundefined,\@latex@info,\@rc@ifdefinable,
+% \@star@or@long,\@tempa,\@tempb,\@tempc,\@tempd,\@undefined,\@xargdef}
+% \DoNotIndex{
+% \AtBeginDocument,\csname,\CurrentOption,\DeclareMathAlphabet,\DeclareMathSymbol,
+% \DeclareOption,\DeclareSymbolFont,\def,\defin@boolkey,\define@choicekey,\edef,
+% \else,\endcsname,\ensuremath,\expandafter}
+% \DoNotIndex{
+% \fi,\fontfamily,\futurelet,\ifcase,\ifnum,\ifthnelse,\ifx,\isempty,\let,\long,
+% \mathalpha,\makeatother,\mathbin,\mathchar@type,\mathclose,\mathgroup,\mathord,
+% \mathpunct,\meaning,\mskip,\newcommand,\newif,\noexpand,\or,\PackageError,
+% \PackageWarning,\PassOptionsToPackage,\presetkeys,\ProcessOptions,\protect,
+% \providecommand,\relax,\renewcommand,\RequirePackage,\resered@a,\reserved@b}
+% \DoNotIndex{
+% \selectfont,\setkeys,\SetMathAlphabet,\string,\strip@prefix,\unexpanded,\x@protect,
+% \XKV@rm}
+%
+% \makeatletter
+% \title{\itshape \XeTeXglyph241\XeTeXglyph247e \textsf{mathspec} \XeTeXglyph261ac\XeTeXglyph259ag\XeTeXglyph245\\[1ex]\normalsize version \expandafter\@gobble\fileversion}
+% \author{\textit{\XeTeXglyph246no\kern-0.236em\XeTeXglyph234rew Gi\XeTeXglyph222bert Mosc\XeTeXglyph248ou}\\\texttt{andmos@gmail.com}}
+% \makeatletter\let\@today\today\def\today{\MakeSC{\@today}}\makeatother
+%
% \maketitle
%
-% \section{Preamble}
+% \tableofcontents
%
-% This document describes the |mathspec| package, a package that provides an interface to typeset mathematics in \XeLaTeX\ using arbitrary text fonts. This package is in its developmental stage and users are advised that later versions are likely to be incompatible with this version. Thanks to Will Robertson for his useful advice and suggestions!
+%\section{Preamble}
%
-% \subsection{Desired features}
+%This document describes the |mathspec| package, a package that provides an interface to typeset mathematics in \XeLaTeX\ using arbitrary text fonts. It relies on |fontspec| to work and familiarity with |fontspec| is advised. Thanks to Will Robertson for his useful advice and suggestions!
%
-% This is a list of features that I intend to include in some version. Please contact me to make any suggestions.
-% \begin{itemize}\def\labelitemi{•}
-% \item Definitions of Latin and Greek alphabetic symbols and digits to be typeset in the specified font
-% \item Specifications of the shape (regular, italic) for uppercase and lowercase Latin and Greek alphabets and digits
-% \item Definitions of mathematical symbols to be typeset in such text fonts
-% \item Integration with |MnSymbol| and other mathematics packages.
-% \item Fine control of spacing
-% \item Provision of shape change commands.
-% \end{itemize}
+%The package is in its developmental stage and later versions are likely to be incompatible with this version.
%
-% \section{Introduction}
-%
-% Since Jonathan Kew released \XeTeX, an extension to \TeX\ that permits the inclusion of system wide Unicode fonts and modern font technologies in \TeX\ documents, users have been able to easily typeset documents using readily available fonts such as Hoefler Text and Times New Roman (This document is typeset using Microsoft’s Constantia, Candara and Consolas.). Will Robertson’s \XeLaTeX\ package |fontspec| provides an automatic font selection process for such arbitrary fonts. Still, mathematics typesetting has not benefitted from this development to the same extent as text typesetting, which is not surprising given the font requirements that are demanded.
-%
-% Will Robertson has in development a package |Unicode-math| that is used to typeset mathematics using some font that has an OpenType mathematics table. Currently, the only two that are in widespread use, to my knowledge, are Cambria Math, a new design, by Microsoft and Asana Math, based on Hermann Zapf’s Palatino, by Apostolos Syropoulos. It is expected that the \sc{STIX} fonts, based on Times, may also be used.
-%
-% Thus, it is evident that a book designer is confronted with such narrow variety in mathematics typefaces, even considering already established \LaTeX\ packages such as |euler| (and Computer Modern, of course!) that are dedicated to providing mathematics typefaces; and the book designer is challenged to find a suitable pair of typefaces for mathematics and body text.
-%
-% This package provides mathematics alphabets in any of the same typefaces that are available to \XeTeX, using |fontspec| as a backend. Other mathematics symbols such as arrows and operators, whose designs are largely independent of an alphabetic typeface, can be taken from collections like MnSymbol or Computer Modern and are not covered by the scope of this package, but provision is made to allow them to be used.
-%
-% \section{Implementation}
+%\section{Introduction}
+%
+%Since Jonathan Kew released \XeTeX, an extension to \TeX\ that permits the inclusion of system wide Unicode fonts and modern font technologies in \TeX\ documents, users have been able to easily typeset documents using readily available fonts such as Hoefler Text and Times New Roman (This document is typeset using a prototype version of an unnamed typeface, currently known as ‘Serif Beta’, from Betatype). Will Robertson’s \XeLaTeX\ package |fontspec| provides an automatic font selection process for such arbitrary fonts. Still, mathematics typesetting has not benefited from this development to the same extent as text typesetting, which is not surprising given the font requirements that are demanded.
+%
+%Will Robertson has in development a package |unicode-math| that is used to typeset mathematics using some font that has an OpenType mathematics table. Currently, the only two that are available are Cambria Math, a new design, by Microsoft and Asana Math, based on Hermann Zapf’s Palatino, by Apostolos Syropoulos. It is expected that the \STIX\ fonts, based on Times, may also be used.
+%
+%Thus, it is evident that a book designer is confronted with such narrow variety in mathematics typefaces, even considering already established \LaTeX\ packages such as |euler| (and Computer Modern, of course!) that are dedicated to providing mathematics typefaces; and the book designer is challenged to find a suitable pair of typefaces for mathematics and body text.
+%
+%This package provides mathematics alphabets in any of the same typefaces that are available to \XeTeX, using |fontspec| as a back end. Other mathematics symbols such as arrows and operators, whose designs are largely independent of an alphabetic typeface, can be taken from collections like MnSymbol or Computer Modern and are not covered by the scope of this package.
%
-% To use the package, put |\usepackage{mathspec}| in the premable of the document. It is not necessary to put |\usepackage{fontspec}| because |mathspec| will ensure that |fontspec| is loaded anyway. To load |fontspec| with some options, parse them through |mathspec|, for example, |\usepackage[quiet]{mathspec}| is equivalent to |\usepackage[quiet]{fontspec}|\permitbreak|\usepackage{mathspec}|.
+%\section{Implementation}
%
-% \subsection{Summary of commands}
+%\displaycommand\usepackage{\oarg{|mathspec| and |fontspec| options}\char"7B mathspec\char"7D}
%
-%\begin{ttdescription}
-%\item[\cs{setmathsfont}[Set=\meta{set},\meta{shapes},\meta{font features}\closebracket\marg{font name}]Specifies the mathematics fonts. \meta{set} is either |Latin|, |Greek| or |Symbols|; \meta{shapes} is an optional comma separated list of keys with their respective values; keys are |Uppercase|, |Lowercase| and |Digits| and values are |Regular|, |Italic| and |Plain|; \meta{font features} and \meta{font name} are interpreted by |fontspec|.
+%\noindent To use the package, put |\usepackage{mathspec}| in the preamble of the document. It is not necessary to put |\usepackage{fontspec}| because |mathspec| will ensure that |fontspec| is loaded anyway. To load |fontspec| with some options, parse them through |mathspec|, for example, |\usepackage|\permitbreak|[quiet]|\permitbreak|{mathspec}| is equivalent to |\usepackage|\permitbreak|[quiet]|\permitbreak|{fontspec}|\permitbreak|\usepackage|\permitbreak|{mathspec}|.
%
-%Starred form |\setmathsfont*| additionally sets the digits in the specified font, ignored if \meta{set} is |Symbols|.
+%Actually, |mathspec| ordinarily loads |fontspec| with the |no-math| option. To cancel this, explicitly use the |math| option: \eg|\usepackage[math]{mathspec}|.
%
-%Also |\setmathfont|.
+%\subsection{Letters and Digits}
%
-%\item[\cs{+}\oarg{size}]Inserts a \meta{size}\,mu ($\frac{\meta{size}}{\textrm{18}}$\,em) space in mathematics mode. The default \meta{size} is 1.
-%\end{ttdescription}
+%\displaycommand\setmathsfont
+% {[Set=\meta{set},\meta{shapes},\meta{font features}]\marg{font name}}
%
-% \subsection{Letters, Digits and Symbols}
+%\noindent \DescribeMacro{\setmathsfont}\DescribeMacro{\setmathfont}This single command is used to entirely describe the desired font for some use. Usually, the command would appear up to two times in a document, to specify each the Latin and the Greek fonts. The command can be used only in the preamble, that is before |\begin{document}| because \LaTeX\ will not allow it to be used elsewhere. Then, there can be only one Latin mathematics typeface and one Greek mathematics typeface in the document (The different fonts in section~\ref{sec:ic} of this document was only achieved through trickery).
%
-%\begin{center}\fbox{\begin{tabular}{@{}c@{}}
-%|\backslash setmathsfont[Set=|\meta{set}|,|\meta{shapes}|,|\meta{font features}|]|\marg{fontname}\\
-%|\backslash setmathsfont*[Set=|\meta{set}|,|\meta{shapes}|,|\meta{font features}|]|\marg{fontname}
-%\end{tabular}}\end{center}
+%\begin{description}
+%\item[\meta{set}]Compulsory value for key |Set|.
%
-% \noindent This single command is used to entirely describe the desired font for some use. Usually, the command would appear up to three times in a document, to specify each the Latin and the Greek fonts and the Symbol font. The command can be used only in the preamble, that is before |\begin{document}| because \LaTeX\ will not allow it to be used elsewere. Then, there can be only one Latin mathematics typeface and one Greek mathematics typeface in the document.
+%|Latin|, |Greek|.
%
-% \begin{ttdescription}
-% \item[\meta{set}]Compulsory value for key |Set| (except in unusual circumstances; see section~\ref{eu:Set}).
+%\item[\meta{shapes}]Optional comma separated list of keys.
%
-% |Latin|, |Greek| or |Symbols|.
-% \item[\meta{shapes}]Optional comma separated list of keys. Ignored if \meta{set} is |Symbols|.
+%A comma separated list of keys and their values, \eg|(Uppercase=Regular,|\permitbreak|Lowercase=Italic,|\permitbreak|Digits=Regular)|. Keys are |Uppercase|, |Lowercase| and |Digits| which can each have value |Regular|, |Italic| or |Plain|; |Regular| and |Italic| respectively indicate the regular and italic fonts of the typeface, |Plain| indicates that no font assignment is performed by |mathspec|, and that the symbols will by typeset in the default font, which is usually Computer Modern. If a key is absent, its default value, as indicated in table~\ref{tab:shapes}, is used.
%
-%A comma separated list of keys and their values, e.g.~|(Uppercase=Regular,|\permitbreak|Lowercase=Italic,|\permitbreak|Digits=Regular)|. Keys are |Uppercase|, |Lowercase| and |Digits| which can each have value |Regular|, |Italic| or |Plain|; |Regular| and |Italic| respectively indicate the regular and italic fonts of the typeface, |Plain| indiciates that no redefinition is performed by |mathspec|, and that the symbols will by typeset in the default font, which is usually Computer Modern. The |Digits| key is ignored if the digits are not typeset using the font that is specified by the command. If a key is absent, its default value, as listed in table~\ref{tab:shapes}, is used.
+%The default values are very good and you would be wise not to change the Latin and the digit shapes. The Greek shapes can be changed to adhere to some particular style, for example all italic, or because the specified Greek font has only one shape regular.
+%\begin{table}[htbp]\centering
+%\caption{The default shapes for the symbol sets}\label{tab:shapes}
+%\begin{tabular}{@{}ccccc@{}}\toprule
+% & \multicolumn{2}{@{}c@{}}{Latin} & \multicolumn{2}{@{}c@{}}{Greek} \\\cmidrule(lr){2-3}\cmidrule(l){4-5}
+%Digits & Uppercase & Lowercase & Uppercase & Lowercase \\\midrule
+%Regular & Italic & Italic & Regular & Italic \\\bottomrule
+%\end{tabular}\end{table}
%
-% Note that the default values are very good and you would never normally want to change the Latin and digits shapes. The Greek shapes can be changed to adhere to some particular style, for example all italic, or because the specified Greek font has only one shape regular.
-% \begin{table}[htbp]\centering
-% \caption{The default shapes for the symbol sets}\label{tab:shapes}
-% \begin{tabular}{@{}ccccc@{}}\toprule
-% & \multicolumn{2}{@{}c@{}}{Latin} & \multicolumn{2}{@{}c@{}}{Greek} \\\cmidrule(lr){2-3}\cmidrule(l){4-5}
-% Digits & Uppercase & Lowercase & Uppercase & Lowercase \\\midrule
-% Regular & Italic & Italic & Regular & Italic \\\bottomrule
-% \end{tabular}\end{table}
-% \item[\meta{font features}\textrm{, }\meta{font name}]\meta{font features} optional comma separated list, \meta{font name} compulsory argument.
+%\DescribeMacro{\plaindigits}It is clear that the digits can be typeset by only one font at any one time. By default, if only one set is specified (Latin or Greek), then the digits are typeset using the font that is used for the set or if both sets are specified, then teh digits are typset using the Latin font, unless this choice is overridden. The choice can be overridden by explicitely writing |Digits=Regular| or |Digits=Plain| in the optional argument to |\setmathsfont|, or with the command |\plaindigits|, which might be an easier way to cancel the assignment of a new font for the digits.
+%
+%\item[\meta{font features}\textrm{, }\meta{font name}]\meta{font features} optional comma separated list, \meta{font name} compulsory argument.
%
%These are the same arguments as those used by |\fontspec| and are interpreted by |fontspec|. See |fontspec|’s documentation for details.
-% \end{ttdescription}
-%The starred form of the command causes the digits to be typeset using the font that is specified by the command (interpreted only if \meta{set} is either |Latin| or |Greek|). In practice, the Latin font, by default, is used to typeset the digits, unless the Greek font command is starred, in which case the Greek font is used to typeset the digits. If both commands are starred, then the Latin font is used to typeset the digits.
-%
-% \section{Alphabets}
-%
-% \LaTeX\ defines |\mathrm|\marg{variable}, |\mathit|\marg{variable}, |\mathbf|\marg{variable} to change mathematics alphabets to roman, italic and bold respectively for Latin characters. |\mathspec| also declares the bold italic alphabet which is invoked using \DescribeMacro{\mathbi}\DescribeMacro{\greekmathrm}\DescribeMacro{\greekmathrg}\DescribeMacro{\greekmathit}\DescribeMacro{\greekmathbf}\DescribeMacro{\greekmathbi}|\mathbi|\marg{variable}. |\mathspec| also defines comparable commands to change the Greek alphabet: |\greekmathrm| (or |\greekmathrg|), |greekmathit|, |\greekmathbf| and |\greekmathbi|.
-%
-% This is still being worked out, beware the error ‘|! LaTeX Error: Too many math alphabets used in version normal.|’.
-%
-% \section{Example}
-% The preamble of this document contains:
-% \begin{verbatim}\setmathsfont[Set=Latin,Scale=MatchLowercase]{Berling Antiqua}
-%\setmathsfont*[Set=Greek,Lowercase=Regular,Scale=MatchLowercase]{GFS Didot}
-%\setmathsfont[Set=Symbols,Scale=MatchLowercase]{Gentium Basic}
-%\end{verbatim}
-% The code:\makemonofontCambria
-% \begin{verbatim}\begin{gather*}
-% 0123456789\\
-% ABCDEFG \quad \mathrm{HIJKLM} \quad
-% \mathbf{NOPQRS} \quad \mathbi{TUVWXYZ}\\
-% abcdefg \quad \mathrm{hijklm} \quad
-% \mathbf{nopqrs} \quad \latinmathbi{tuvwxyz}\\
-% ΑΒΓΔΕΖ \quad \greekmathit{ΗΘΙΚΛΜ} \quad
-% \greekmathbf{ΝΞΟΠΡΣ} \quad \greekmathbi{ΤΥΦΧΨΩ}\\
-% αβγδεζ \quad \greekmathit{ηθικλμ} \quad
-% \greekmathbf{νξοπρςσ} \quad \greekmathbi{τυφχψω}\\
-% o!o+o,o.o:o\colon o;o<o=o>o?o¬o°o±oµo×o÷o\\
-% o∀o∂o∃o∅o∆o∇o∈o∉o∋o−o∕o∗o∙o∝o∞o∟o∠o∧o∨o∩o∪o∴o∼o\\
-% o≅o≈o≠o≡o≤o≥o\\
-% o⊂o⊃o⊄o⊆o⊇o⊕o⊗o⊥o⋅o
-%\end{gather*}\end{verbatim}\revertmonofont
-% produces:%%%%%%%
-% \begin{gather*}
-% 0123456789\\
-% ABCDEFG \quad \mathrm{HIJKLM} \quad \mathbf{NOPQRS} \quad \mathbi{TUVWXYZ}\\
-% abcdefg \quad \mathrm{hijklm} \quad \mathbf{nopqrs} \quad \mathbi{tuvwxyz}\\
-% ΑΒΓΔΕΖ \quad \greekmathit{ΗΘΙΚΛΜ} \quad \greekmathbf{ΝΞΟΠΡΣ} \quad \greekmathbi{ΤΥΦΧΨΩ}\\
-% αβγδεζ \quad \greekmathit{ηθικλμ} \quad \greekmathbf{νξοπρςσ} \quad \greekmathbi{τυφχψω}\\
-% o!o+o,o.o:o\colon o;o<o=o>o?o¬o°o±oµo×o÷o\\
-% o∀o∂o∃o∅o∆o∇o∈o∉o∋o−o∕o∗o∙o∝o∞o∟o∠o∧o∨o∩o∪o∴o∼o\\
-% o≅o≈o≠o≡o≤o≥o\\
-% o⊂o⊃o⊄o⊆o⊇o⊕o⊗o⊥o⋅o
-% \end{gather*}
-%
-% There is no difference whether Greek letters are input using familiar control sequences (although not shown here, they are still available) or literal characters, for example, |$y = α×x^2 + β×x + γ$| and |$y = \alpha\times x^2 + \beta\times x + \gamma$| are equivalent. Note that the two colons are defined differently; |:| is a ratio relation, as in $p:q$ and |\colon| is a punctuation symbol, as in $f\+[3]\colon X\to Y$.
-%
-% Greek letters that are absent from Computer Modern (i.e. those that appear similar to Latin leters, e.g., |Α| |\Alpha|: $Α$, |Ρ| |\Rho|: $Ρ$, |ο| |\omicron|: $ο$) are defined. In addition, three more symbols are defined: |°| |\degree|: $°$, |µ| |\micro|: $µ$, |∆| |\increment|: $∆$.
-%
-% There is a bug in the package, in that symbols will be remapped, even if they do not exist in the font. As can be seen in this example, Berling Antiqua does not contain \unicode[Right angle]{221F}, and $∟$ is substituted. Until this bug is fixed, it might be best not to specify a symbols font at all.
-%
-% Additionally, if the symbols font is specified, the symbols are taken from two sources and it is likely that they will not harmonise together. Potential problems are that their designs be too incompatible, which would cause inconsistencies in colour, and that their widths be different, which would destroy vertical alignment. If this is an issue, then do not specify a symbols font.
-%
-% The big operators |∏| |\prod|: $\prod$, |∑| |\sum|: $\sum$ and |∫| |\int|: $\int$ are not included here because in many fonts, they are designed far too small for practical use, as shown in equation~(\ref{eq:toosmall}) where the sum operator is typeset in Constantia, the text font of this document (In Gentium Basic, the symbol font of this document, it is even smaller!) and leaving them alone is currently the best option, as shown in equations~(\ref{eq:good1}, \ref{eq:good2}).
-% \begin{align}
-% \mathop{\mbox{∑}}_{n=0}^\infty {\frac{1}{2^n}} &= 2\label{eq:toosmall}
-% \end{align}
-%
-% For now, a list of symbols that the package remaps and their commands is in section~\ref{thesymbols}.
-%
-% \section{Additional information}
-%
-% This section describes the shortcomings of this package. I wonder whether the benefits of being able to use an arbitrary font for mathematics outweigh the detriments; in a production environment, it might be best to seek an alternative approach and use some \LaTeX\ package like |euler|, |mathdesign| or |MinionPro| that is dedicated to producing good mathematics with one font.
-%
-% \subsection{Italic correction}
-%
-% In using this package to provide arbitrary fonts for mathematics, there are issues with italic correction, as is illustrated in the equations:
-% \begin{align}
-% f(x) &= \sum_{n=-\infty}^{\infty}{c_ne^{jnx}}\label{eq:1}\\
-% c_n &= \frac{1}{2π}\int_{-π}^π{f(x)e^{-jnx}\,\d x}\label{eq:2}
-% \end{align}where the function $f$ is too close to the parenthesis $($ and the base $e$’s exponent $jnx$ is too close to $e$. The reason is that the font has metrics that are suitable for use in text, but not for mathematics. Comparing the alphabets typeset in Computer Modern Italic, in table~\ref{tab:cmcompare}, it is shown that many characters have greater space around them in the mathematics version, which does not exist in the text version. The adjusted alphabet shows the alphabet typeset as text, but also with a constant 1\,mu space intercharacter space (poor man’s tracking). Since the adjusted alphabet is approximately as long as the mathematics alphabet, on average, this is a fair method to increase the space between alphabetic characters in mathematics.
-%
-% \begin{table}[htbp]\centering
-% \caption{Computer Modern Italic in text and mathematics.\label{tab:cmcompare}}
-% \begin{tabular}{@{}rl@{}}\toprule
-% Text & \usefont{OT1}{cmr}{m}{it}abcdefghijklmnopqrstuvwxyz\\
-% Mathematics & $\mit abcdefghijklmnopqrstuvwxyz$\\
-% Adjusted &\usefont{OT1}{cmr}{m}{it} a\+b\+c\+d\+e\+f\+g\+h\+i\+j\+k\+l\+m\+n\+o\+p\+q\+r\+s\+t\+u\+v\+w\+x\+y\+z\\\bottomrule
-% \end{tabular}\end{table}
-%
-% Now, the problem lies with implementing this behaviour. The best way would be adjust \TeX’s mathematics spacing rules to add this 1\,mu extra space after each |\mathalpha|, but not after the |\mathord|s. I don't know whether it is possible to separate the two types as such, since they are almost equivalent. Otherwise, would it look worse if |\mathord|s also have this extra space?
-
-% As it turns out, \TeX’s mathematics spacing rules are hardwired into \TeX\ and can not be adjusted by the user. The table that is used to determine the spacing between pairs of adjacent atoms, from \emph{The \TeX book}, is reproduced below:%
-%\begin{center}{\footnotesize
-%\begin{tabular}{@{}r@{ }lcccccccc@{}}\toprule
+%\end{description}
+%
+%\subsection{Symbols}
+%
+%Support for setting the symbols font was removed in this version. I am focussing on the other areas of the package and feel that an incomplete feature should not be present at all.
+%
+%You can try MnSymbol, which has greater (and more uniform) coverage, with the package option |MnSymbol|, \eg|\usepackage[MnSymbol]{mathspec}|.
+%
+%\section{Alphabets}
+%
+%\DescribeMacro{\setmathrm}\DescribeMacro{\setmathcal}\DescribeMacro{\setmathsf}\DescribeMacro{\setmathtt}\DescribeMacro{\setmathfrak}\DescribeMacro{\setmathbb}The mathematics alphabets like |\mathrm| and |\mathcal| can be set using the commands:
+%\begin{itemize}
+%\item|\setmathrm|\oarg{font features}\marg{font name} (defines |\mathrm|, |\mathit|, |\mathbf| and the font for operators)
+%\item|\setmathcal|\oarg{font features}\marg{font name} (defines |\mathcal|)
+%\item|\setmathsf|\oarg{font features}\marg{font name} (defines |\mathsf|)
+%\item|\setmathtt|\oarg{font features}\marg{font name} (defines |\mathtt|)
+%\item|\setmathfrak|\oarg{font features}\marg{font name} (defines |\mathfrak|)
+%\item|\setmathbb|\oarg{font features}\marg{font name} (defines |\mathbb|)
+%\end{itemize}
+%All are straight forward, but |\setmathrm| does a little more than the others. |mathspec| redefines |fontspec|’s definitions.
+%\subsection{Shorthands}
+%
+%\displaycommand\setprimaryfont{\oarg{font features}\marg{font name}}
+%
+%\noindent \DescribeMacro{\setprimaryfont}|\setprimaryfont| is equivalent to:
+%\begin{flushleft}\ttfamily
+%\string\setmainfont\oarg{font features}\marg{font name}\\
+%\string\setmathsfont[Set=Latin,\meta{font features}]\marg{font name}\\
+%\string\setmathrm\oarg{font features}\marg{font name}
+%\end{flushleft}and is useful to save typing the same information multiple times.
+%
+%\begin{center}\ttfamily
+%\fbox{\begin{tabular}{@{}c@{}}
+% \string\setsansfonts\oarg{font features}\marg{font name}\\
+% \string\setmonofonts\oarg{font features}\marg{font name}
+% \end{tabular}}
+%\end{center}
+%Similarly, \DescribeMacro{\setsansfonts}\DescribeMacro{\setmonofonts}|\setsansfonts| and |\setmonofonts| (note the plurals) are equivalent to:
+%\begin{flushleft}\ttfamily
+%\string\setsansfont\oarg{font features}\marg{font name}\\
+%\string\setmathsf\oarg{font features}\marg{font name}
+%\end{flushleft}and
+%\begin{flushleft}\ttfamily
+%\string\setmonofont\oarg{font features}\marg{font name}\\
+%\string\setmathtt\oarg{font features}\marg{font name}
+%\end{flushleft}respectively.
+%
+%See |fontspec|’s documentation for details of |\setmainfont|, |\setsansfont| and |\setmonofont|.
+%
+%\subsection{Limitations}
+%
+%Apparently, there is a limit on the number of math groups (symbol fonts and alphabets) that a document may contain. It seems that 16 is the limit, which is enforced by \LaTeXe{} kernel macros. I am under the impression that \XeTeX{} actually permits 256 math groups, but I have not found that redefined \LaTeX{} macros alleviates the problem.
+%
+%Maybe I am going about this the wrong way, but until I truly understand what’s going on and improve this area, beware ‘{\ttfamily! LaTeX Error: Too many math alphabets used in version normal.}’.
+%
+%\section{Greek characters}
+%
+%For reference, the Greek alphabet and variant letter forms is given in table~\ref{tab:greek}. Despite the name, |\varsigma|~$\varsigma$ is not a variant form of |\sigma|~$\sigma\+$, it is the final form. Digamma~{\GaramondNoVIII\char"EFD5} is an obsolete letter of the alphabet, originally placed between epsilon~$\epsilon$ and zeta~$\zeta\+$.
+%
+%\begin{table}[htbp]\centering
+%\caption{The Greek alphabet and variant letter forms with control sequences\label{tab:greek}}
+%\begin{tabular}{@{}c@{}}\toprule
+%\begin{tabular}{@{}clcl@{\hspace{2em}}clcl@{}}
+%\multicolumn{2}{@{}c@{}}{Uppercase} & \multicolumn{2}{@{}c@{\hspace{2em}}}{Lowercase} &
+%\multicolumn{2}{@{}c@{}}{Uppercase} & \multicolumn{2}{@{}c@{}}{Lowercase} \\\midrule
+%\tablerow{Α}{α}{\Alpha} &\tablerow{Χ}{ξ}{\Xi}\\
+%\tablerow{Β}{β}{\Beta} &\tablerow{Ο}{ο}{\Omicron}\\
+%\tablerow{Γ}{γ}{\Gamma} &\tablerow{Π}{π}{\Pi}\\
+%\tablerow{Δ}{δ}{\Delta} &\tablerow{Ρ}{ρ}{\Rho}\\
+%\tablerow{Ε}{ε}{\Epsilon} &\multirow{2}*{\GFSElpis Σ}&\multirow{2}*{\ttfamily\string\Sigma}& $ς$ & \ttfamily\string\varsigma\\
+%\tablerow{Ζ}{ζ}{\Zeta} &&& $σ$ & \ttfamily\string\sigma\\
+%\tablerow{Η}{η}{\Eta} &\tablerow{Τ}{τ}{\Tau}\\
+%\tablerow{Θ}{θ}{\Theta} &\tablerow{Υ}{υ}{\Upsilon}\\
+%\tablerow{Ι}{ι}{\Iota} &\tablerow{Φ}{φ}{\Phi}\\
+%\tablerow{Κ}{κ}{\Kappa} &\tablerow{Χ}{χ}{\Chi}\\
+%\tablerow{Λ}{λ}{\Lambda} &\tablerow{Ψ}{ψ}{\Psi}\\
+%\tablerow{Μ}{μ}{\Mu} &\tablerow{Ω}{ω}{\Omega}\\
+%\tablerow{Ν}{ν}{\Nu} &\GFSElpis\char"3DC &\ttfamily\string\Digamma &\GaramondNoVIII\char"EFD5 &\ttfamily\string\digamma
+%\end{tabular}\\\toprule
+%\begin{tabular}{@{}ccl@{\hspace{2em}}ccl@{}}
+%Normal form & \multicolumn{2}{@{}c@{\hspace{2em}}}{Variant form} &
+%Normal form & \multicolumn{2}{@{}c@{}}{Variant form} \\\midrule
+%$β$ &$\varbeta$ &\ttfamily\string\varbeta&
+%$π$ &$\varpi$ &\ttfamily\string\varpi\\
+%$ε$ &\GaramondNoVIII\char"EFEC &\ttfamily\string\varepsilon&
+%$ρ$ &\CambriaOrSTIX\itshape\char"1D71A &\ttfamily\string\varrho\\
+%$θ$ &$\vartheta$ &\ttfamily\string\vartheta&
+%$φ$ &$\varphi$ &\ttfamily\string\varphi\\
+%$κ$ &\CambriaOrSTIX\itshape\char"1D718 &\ttfamily\string\varkappa&
+%\GFSElpis Θ &\GFSElpis\char"3F4 &\ttfamily\string\varTheta\\
+%\end{tabular}\\\bottomrule
+%\end{tabular}\end{table}
+%
+%Initially, |mathspec| defines control sequences for the Greek characters that are absent in Computer Modern, because they are similar in form to Latin characters, from \MakeSC{ASCII}, thus control sequences like |\Alpha| and |\omicron| are defined. Any variant forms that are absent are equivalent to the normal forms. The meanings of these control sequences are preserved by a control sequence of the same name with the prefix |cm| (e.g. |\cmAlpha|), which may be recalled after the Greek mathematics font is changed.
+%
+%\DescribeMacro{\normalvarforms}Since not all fonts contain all variant forms, there might be the odd variant letter that remains in Computer Modern while other Greek letters have changed font. For these characters, the command |\normalvarforms| will make then equivalent to their corresponding normal forms. Note that this command only adjusts those that are absent in the font. Of course, this might mean that, for example, |\vartheta| and |\theta| would print the same glyph, which would be dubious if they are used in the same document, with different meanings.
+%
+%\DescribeMacro{\varforms}If an author does not agree with the font designer’s choice of normal and variant forms, for example, I prefer |\phi| to print ‘$\varphi\+$’ and |\varphi| to print ‘$\phi\+$’, which is not the default behaviour for many fonts, the forms can be exchanged by putting the list of letters to the command |\varforms|, \eg|\varforms{theta,kappa,phi}| might be used if the Greek mathematics font is Garamond Premier Pro Italic.
+%
+%It should be noted that |\epsilon| prints the lunate epsilon~‘$\cmepsilon$’ and |\varepsilon| prints the usual (double loop) epsilon~‘$\cmvarepsilon$’ in Plain \TeX\ and \LaTeX. This is in contrast to other fonts, which contain the lunate style epsilon separately from the Greek alphabet among variant letter forms and symbols (where Unicode assigns ‘Greek Lunate Epsilon Symbol’). The definition of |\LaTeXe|, which prints ‘\LaTeXe’ uses |\varepsilon| and care should be taken to ensure that |\LaTeXe| uses the usual epsilon either by using one of the methods that were presented in this section or by redefining |\LaTeXe|, because \makeatletter \let\@tempa\varepsilon \def\varepsilon{\mbox{\GaramondNoVIII\char"EFEC}} ‘\LaTeXe’ \let\varepsilon\@tempa \makeatother is not as good as ‘\LaTeXe’.
+%
+%\section{Additional information}
+%
+%This section describes the shortcomings of this package. I wonder whether the benefits of being able to use an arbitrary font for mathematics outweigh the detriments; in a production environment, it might be best to seek an alternative approach and use some \LaTeX\ set, like MathTime, MinionPro, Math Design or the \MakeSC{TX} or \MakeSC{PX} fonts, that is dedicated to producing good mathematics with one font.
+%
+%\subsection{Glyph bounds}\label{sec:ic}
+%
+%In using this package to provide arbitrary fonts for mathematics, there are issues with glyph bounds (similar to italic correction), as illustrated in the equations:
+%\begin{align}
+%f(x) &= \sum_{n=-\infty}^{\infty}{c_ne^{jnx}}\label{eq:2}\\
+%c_n &= \frac{1}{2\pi}\int_{-\pi}^{\pi}{f(x)e^{-jnx}\,\mathrm{d}x}\label{eq:3}
+%\end{align}
+%where the function $f$ is too close the parenthesis $($ and the exponent $jnx$ is so close to its base $e$ that there is actually a collision! The reason is that the font has metrics that are suitable for use in text, but not for mathematics.
+%
+% \subsubsection{Discussion}
+%
+%Comparing the alphabets typeset in Computer Modern Italic, in table~\ref{tab:2}, it is shown that many characters have greater space around them in the mathematics version, which does not exist in the text version. The tracked alphabet shows the alphabet typeset as text, but also with a constant 1\,mu intercharacter space (poor man’s tracking). Since the adjusted alphabet is approximately as long as the mathematics alphabet, on average, this is a fair method to increase the space between alphabetic characters in mathematics.
+%
+%\begin{table}[htbp]\centering
+%\caption{Computer Modern Italic in text and mathematics\label{tab:2}}
+%\begin{tabular}{@{}rl@{}}\toprule
+%Text & \usefont{OT1}{cmr}{m}{it}abcdefghijklmnopqrstuvwxyz\\
+%Mathematics & $\mathnormal{abcdefghijklmnopqrstuvwxyz}$\\
+%Tracked & \usefont{OT1}{cmr}{m}{it} a\+b\+c\+d\+e\+f\+g\+h\+i\+j\+k\+l\+m\+n\+o\+p\+q\+r\+s\+t\+u\+v\+w\+x\+y\+z\\\bottomrule
+%\end{tabular}
+%\end{table}
+%
+%Now, the problem lies with implementing this behaviour. The best way would be to adjust \TeX’s mathematics spacing rules to add this 1\,mu extra space after each |\mathalpha|, but not after the |\mathord|s. I do not know whether it is possible to separate the two types as such, since they are almost equivalent. Otherwise, would it look worse if |\mathord|s also have this extra space?
+%
+%As it turns out, \TeX’s mathematics spacing rules are hardwired into \TeX\ and can not be adjusted by the user. The table that is used to determine the spacing between pairs of adjacent atoms, from \emph{The \TeX book}, is reproduced below:
+%\begin{center}\begin{tabular}{@{}r@{ }lc@{\;\;}c@{\;\;}c@{\;\;}c@{\;\;}c@{\;\;}c@{\;\;}c@{\;\;}c@{}}\toprule
% && \multicolumn{8}{@{}c@{}}{Right atom} \\ \cmidrule(l){3-10}
%\multicolumn{2}{@{}c@{}}{Left atom}& Ord. & Op. & Bin. & Rel. & Open & Close & Punct. & Inner\\ \cmidrule(r){1-2}\cmidrule(l){3-10}
%Ordinary, et al.&(Ord.) & 0 & 1 & \te{2} & \te{3} & 0 & 0 & 0 & \te{1} \\
@@ -269,269 +464,639 @@
%Closing&(Close)& 0 & 1 & \te{2} & \te{3} & 0 & 0 & 0 & \te{1} \\
%Punctuation&(Punct.)& \te{1} & \te{1} & & \te{1} & \te{1} & \te{1} & \te{1} & \te{1} \\
%Delimited subformula&(Inner)& \te{1} & 1 & \te{2} & \te{3} & \te{1} & 0 & \te{1} & \te{1} \\\bottomrule
-%\end{tabular}}\end{center}where 0, 1, 2 and 3 represent zero, thin, medium and thick skips respectively and coloured entires indicate that space is to be inserted only in display and text styles and not in script and scriptsript styles.
-% Both Plain \TeX\ and \LaTeX\ define the three skips as:
+%\end{tabular}\end{center}where 0, 1, 2 and 3 represent zero, thin, medium and thick skips respectively and coloured entries indicate that space is to be inserted only in display and text styles and not in script and scriptscript styles. Both Plain \TeX\ and \LaTeX\ define the three skips as:
%\begin{center}\begin{tabular}{@{}rl@{}}\toprule
%|\thinmuskip| & |3mu|\\
-%|\medmuskip| & |4mu plus 2mu minus 4mu|\\
+%|\medmuskip| & |4mu plus 3mu minus 4mu|\\
%|\thickmuskip| & |5mu plus 5mu|\\\bottomrule
-%\end{tabular}\end{center}and unless the option |normalskips| is used, |mathspec| increases each skip by 1\,mu:
+%\end{tabular}\end{center}and unless the option |normalskips| to the package is used (\eg|\usepackage|\permitbreak|[normalskips]|\permitbreak|{mathspec}|), |mathspec| increases each skip by 1\,mu:
%\begin{center}\begin{tabular}{@{}rl@{}}\toprule
%|\thinmuskip| & |4mu|\\
-%|\medmuskip| & |5mu plus 2mu minus 4mu|\\
+%|\medmuskip| & |5mu plus 3mu minus 4mu|\\
%|\thickmuskip| & |6mu plus 5mu|\\\bottomrule
-%\end{tabular}\end{center}As far as I can tell, nothing can be done about the zero skip.
+%\end{tabular}\end{center}As far as I can tell, nothing can be done about the zero skip.\biggerskips
+%
+%If \XeTeX\ is able to get information about the ‘ink box’ of a character, this elaborate, awkward and ugly hack, which is not even good anyway, might be replaced with something that is more elegant (or at least yields better results); better yet, if \XeTeX\ allows customisation of the mathematics spacing rules. It is impossible at the moment, for now, this described method is the best that is possible.
+%
+% \subsubsection{Solution}
+%
+%\displaycommand\+{\oarg{size}}
%
-% If \XeTeX\ is able to get information about the ‘ink box’ of a character, this elaborate, awkward and ugly hack, which is not even good anyway, might be replaced with something that is more elegant (or at least yields better results); better yet, if \XeTeX\ allows customisation of the mathematics spacing rules. It is impossible at the moment, for now, this described method is the best that is possible.
+%\noindent \DescribeMacro{\+}The command |\+| is used to produce fine control over the spacing in mathematics. Without its optional argument, it inserts a 1\,mu ($\frac{1}{18}$\,em) skip. |\+|\oarg{size} inserts a \meta{size}\,mu skip. The spacing of equations~(\ref{eq:2}, \ref{eq:3}) are improved by the replacements that are described in table~\ref{tab:3}:
+%\begin{align}
+%f\grp(){x} &= \sum_{n=-\infty}^{\infty}{c_ne^{\+[5]jn\+x}}\label{eq:4}\\
+%c_n &= \frac{1}{2\pi}\int_{-\pi}^{\pi}{\+f\grp(){x}e^{\+-jn\+x}\,\mathrm{d}x}\label{eq:5}
+%\end{align}
+%\begin{table}[htbp]\centering
+%\caption{Example replacements that improve spacing\label{tab:3}}
+%\begin{tabular}{@{}cc@{}}\toprule
+%Original & Replacement \\\midrule
+%|f(x)| & |\+f\left(x\right)|\\
+%|e^{jnx}| & |e^{\+[5]jn\+x}|\\
+%|e^{-jnx}| & |e^{\+-jn\+x}|\\\bottomrule
+%\end{tabular}
+%\end{table}
%
-% The command \DescribeMacro{\+}|\+| is used to produce fine control over the spacing in mathematics. Without its optional argument, it inserts a 1\,mu ($\frac{\textrm{1}}{\textrm{18}}$\,em) skip. |\+|\oarg{size} inserts a \meta{size}\,mu skip. The spacing of equations~(\ref{eq:1}, \ref{eq:2}) are improved by the replacements that are described in table~\ref{tab:eqs}:
+%This procedure is indeed awkward for the user, but still necessary to produce decent results. Note that |(x)| is replaced with |\left(x\right)|, which should always be done anyway (or with a more convenient macro, perhaps |\grp(){x}| defined by |\newcommand|\permitbreak|\grp|\permitbreak|[3]|\permitbreak|{\left#1|\permitbreak|#3|\permitbreak|\right#2}|).
%
-% \begin{align}
-% f\pp x &= \sum_{n=-\infty}^{\infty}{c_ne^{\+[4]jnx}}\label{eq:good1}\\
-% c_n &= \frac{1}{2π}\int_{-π}^π{f\pp xe^{\+-jnx}\,\d\+x}\label{eq:good2}
-% \end{align}
+%\subsection{Compatibility}
%
-% This procedure is indeed awkward for the user, but still necessary to produce decent results. Note that |(x)| is replaced with |\left(x\right)|, which should always be done anyway.
+%If the package |amsmath| is used, it must be loaded before |mathspec|.
%
-% \begin{table}[htbp]\centering
-% \caption{Example replacements that improve spacing\label{tab:eqs}}
-% \begin{tabular}{@{}cc@{}}\toprule
-% Original & Replacement \\\midrule
-% |f(x)| & |f\left(x\right)|\\
-% |e^{jnx}| & |e^{\+[4]jnx}|\\
-% |e^{-jnx}| & |e^{\+-jnx}|\\
-% |\mathrm{d}x| & |\mathrm{d}\+x|\\\bottomrule
-% \end{tabular}\end{table}
+% \newpage
+% \StopEventually{
+% \addfontfeature{Mapping=tex-text}
+% \global\let\MakeSCorLowercase\MakeSC
+% \PrintIndex}
%
-% \StopEventually{\PrintIndex}
+% \addtocontents{toc}{\protect\orLowercase}
+% \global\let\MakeSCorLowercase\MakeLowercase
+% \section{\sffamily mathspec.sty}
%
-% \section{\textsf{mathspec.sty}}
+% \subsection{Initialising and options processing}
+% \iffalse
+%<*package>
+% \fi
% \begin{macrocode}
-\newif\if@eu@normalskips
-\DeclareOption{normalskips}{\@eu@normalskipsfalse}
+\let\eu@ifnot@normalskips\@firstofone
+\let\eu@if@MnSymbol\@gobble
+\def\eu@zf@math{no-math}
+\DeclareOption{normalskips}{\let\eu@ifnot@normalskips\@gobble}
+\DeclareOption{no-math}{\relax}
+\DeclareOption{MnSymbol}{\let\eu@if@MnSymbol\@firstofone}
+\DeclareOption{math}{\def\eu@zf@math{math}}
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{fontspec}}
\ProcessOptions\relax
-\RequirePackage{fontspec}
+\RequirePackage[\eu@zf@math]{fontspec}
+\eu@if@MnSymbol{\RequirePackage{MnSymbol}}
\RequirePackage{xkeyval}
\RequirePackage{xifthen}
-\newif\if@eu@Latinmathsfontspecified
-\newif\if@eu@Greekmathsfontspecified
-\newif\if@eu@Symbolsmathsfontspecified
-\newif\if@eu@LatinDigits
-\newif\if@eu@GreekDigits
-\newif\if@eu@declareDigits\@eu@declareDigitstrue
-% \end{macrocode}
-% \begin{macro}{\eu@isloaded}
-% |amsmath| must be loaded before |mathspec|.
-% \begin{macrocode}
-\newcommand\eu@isloaded[2][]{%
- \expandafter\newif\csname if@eu@#2loaded\endcsname
- \@ifpackageloaded{#2}%
- {\csname @eu@#2loadedtrue\endcsname #1}%
- {\csname @eu@#2loadedfalse\endcsname}}
+\newif\if@eu@LatinUppercase@
+\newif\if@eu@LatinLowercase@
+\newif\if@eu@LatinDigits@
+\newif\if@eu@GreekUppercase@
+\newif\if@eu@GreekLowercase@
+\newif\if@eu@GreekDigits@
+\newif\if@eu@Symbols@
+\newif\if@eu@Digits@
+\let\eu@if@varforms\@gobble
+\let\eu@ifset@mathrm\@gobble
+\let\eu@ifset@mathcal\@gobble
+\let\eu@ifset@mathsf\@gobble
+\let\eu@ifset@mathtt\@gobble
+\let\eu@ifset@mathfrak\@gobble
+\let\eu@ifset@mathbb\@gobble
+% \end{macrocode}
+% Redefine the skips.
+% \begin{macrocode}
+\eu@ifnot@normalskips{
+ \thinmuskip=4mu
+ \medmuskip=5mu plus 2mu minus 4mu
+ \thickmuskip=6mu plus 5mu}
+% \end{macrocode}
+%\begin{macro}{\eu@isloaded}
+% A command to test whether a package is loaded and puts the result in a Boolean. Used to test for |amsmath| here and |\AtBeginDocument| because |amsmath|, if used, must be loaded before |mathspec|.
+% \begin{macrocode}
+\newcommand\eu@isloaded[2][]{
+ \expandafter\ifx\csname if@eu@#2loaded@\endcsname\relax
+ \expandafter\newif\csname if@eu@#2loaded@\endcsname
+ \fi
+ \@ifpackageloaded{#2}
+ {\csname @eu@#2loaded@true\endcsname #1}
+ {\csname @eu@#2loaded@false\endcsname}}
\eu@isloaded{amsmath}
% \end{macrocode}
-% \end{macro}
-% \subsection{End user commands}
-% \begin{macro}{\setmathsfont}
-% \begin{macro}{\setmathfont}
-% The general font specification command.
-% \begin{macrocode}
-\newcommand\setmathsfont{%
- \@ifstar%
- \eu@setmathsfont@star%
- \eu@setmathsfont@nostar}
-\let\setmathfont\setmathsfont
+%\end{macro}
+%
+% \subsection{Greek characters and digits}
+%
+% Complete the missing Greek characters from \MakeSC{ASCII}. Easier done now than later.
+% \begin{macrocode}
+\DeclareMathSymbol{\Alpha}{\mathalpha}{operators}{"41}
+\DeclareMathSymbol{\Beta}{\mathalpha}{operators}{"42}
+\DeclareMathSymbol{\Epsilon}{\mathalpha}{operators}{"45}
+\DeclareMathSymbol{\Zeta}{\mathalpha}{operators}{"5A}
+\DeclareMathSymbol{\Eta}{\mathalpha}{operators}{"48}
+\DeclareMathSymbol{\Iota}{\mathalpha}{operators}{"49}
+\DeclareMathSymbol{\Kappa}{\mathalpha}{operators}{"4B}
+\DeclareMathSymbol{\Mu}{\mathalpha}{operators}{"4D}
+\DeclareMathSymbol{\Nu}{\mathalpha}{operators}{"4E}
+\DeclareMathSymbol{\Omicron}{\mathalpha}{operators}{"4F}
+\DeclareMathSymbol{\Rho}{\mathalpha}{operators}{"50}
+\DeclareMathSymbol{\Tau}{\mathalpha}{operators}{"54}
+\DeclareMathSymbol{\Chi}{\mathalpha}{operators}{"58}
+\DeclareMathSymbol{\omicron}{\mathord}{letters}{"6F}
% \end{macrocode}
-% \begin{macro}{\eu@ScopeSet@Special}
-% If |Set=Special|\label{eu:Set} (or if |Set| is not listed), then do |\eu@ScopeSet@Special|, which can be externally set in the document (or a package) before |mathspec| is loaded.
-% \begin{macrocode}
-\providecommand\eu@ScopeSet@Special[2]{\relax}
-\newcommand\eu@setmathsfont@star[2][]{%
- \eu@retreiveset{#1}{#2}
- \ifthenelse{\equal{\eu@ScopeSet@value}{Special}}{%
- \eu@ScopeSet@Special{\eu@keysminusScope}{#2}
- }{%
- \expandafter\csname @eu@\eu@ScopeSet@value Digitstrue\endcsname
- \eu@setmathsfont{\eu@keysminusScope}{#2}}}
-\newcommand\eu@setmathsfont@nostar[2][]{%
- \eu@retreiveset{#1}{#2}
- \ifthenelse{\equal{\eu@ScopeSet@value}{Special}}{%
- \eu@ScopeSet@Special{\eu@keysminusScope}{#2}
- }{%
- \expandafter\csname @eu@\eu@ScopeSet@value Digitsfalse\endcsname
- \eu@setmathsfont{\eu@keysminusScope}{#2}}}
-\newcommand\eu@retreiveset[2]{%
- \presetkeys[eu]{Scope}{Set}{}
- \setkeys*[eu]{Scope}{#1}
- \let\eu@keysminusScope\XKV@rm}
-\newcommand\eu@setmathsfont[2]{%
- \ifnum\eu@@ScopeSet@value=0\else
- \expandafter\csname @eu@\eu@ScopeSet@value mathsfontspecifiedtrue\endcsname
- \presetkeys[eu]{\eu@ScopeSet@value}{Uppercase,Lowercase,Digits}{}
- \setkeys*[eu]{\eu@ScopeSet@value}{#1}
- \zf@fontspec{\XKV@rm}{#2}
- \expandafter\let\csname eu@\eu@ScopeSet@value mathsfont\endcsname\zf@family
- \ifthenelse{\equal{\eu@ScopeSet@value}{Latin}}%
- {\let\zf@rmmaths\eu@Latinmathsfont}{\relax}
- \fi}
+% Unavailable variant forms are equivalent to normal forms. Using Latin ‘{\usefont{OT1}{cmr}{m}{n}F}’ for \makeatletter digamma~$\eu@digamma$ \makeatother is better than nothing.
+% \begin{macrocode}
+\let\varbeta\beta
+\@ifundefined{varkappa}
+ {\let\varkappa\kappa}
+ {\relax}
+\let\varTheta\Theta
+\@ifundefined{digamma}
+ {\DeclareMathSymbol{\Digamma}{\mathalpha}{operators}{"46}
+ \DeclareMathSymbol{\digamma}{\mathord}{operators}{"46}}
+ {\let\Digamma\digamma}
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \begin{macro}{\+}
-% A new command that inserts a space in mathematics. It must be robust and any white space between the |\+| and |[| must not be ignored so that legitimate (square) brackets in mathematics is not interpreted as some optional argument. To do this, |breqn|’s |\@ifnext| replaces |\@ifnextchar| in the definition of \LaTeX’s |\DeclareRobustCommand|.
+% Preserve the original definitions of the Greek control sequences with |cm| prefix.
+% \begin{macrocode}
+\let\cmAlpha\Alpha
+\let\cmBeta\Beta
+\let\cmGamma\Gamma
+\let\cmDelta\Delta
+\let\cmEpsilon\Epsilon
+\let\cmZeta\Zeta
+\let\cmEta\Eta
+\let\cmTheta\Theta
+\let\cmIota\Iota
+\let\cmKappa\Kappa
+\let\cmLambda\Lambda
+\let\cmMu\Mu
+\let\cmNu\Nu
+\let\cmXi\Xi
+\let\cmOmicron\Omicron
+\let\cmPi\Pi
+\let\cmRho\Rho
+\let\cmSigma\Sigma
+\let\cmTau\Tau
+\let\cmUpsilon\Upsilon
+\let\cmPhi\Phi
+\let\cmChi\Chi
+\let\cmPsi\Psi
+\let\cmOmega\Omega
+\let\cmDigamma\Digamma
+\let\cmalpha\alpha
+\let\cmbeta\beta
+\let\cmgamma\gamma
+\let\cmdelta\delta
+\let\cmepsilon\epsilon
+\let\cmzeta\zeta
+\let\cmeta\eta
+\let\cmtheta\theta
+\let\cmiota\iota
+\let\cmkappa\kappa
+\let\cmlambda\lambda
+\let\cmmu\mu
+\let\cmnu\nu
+\let\cmxi\xi
+\let\cmomicron\omicron
+\let\cmpi\pi
+\let\cmrho\rho
+\let\cmvarsigma\varsigma
+\let\cmsigma\sigma
+\let\cmtau\tau
+\let\cmupsilon\upsilon
+\let\cmphi\phi
+\let\cmchi\chi
+\let\cmpsi\psi
+\let\cmomega\omega
+\let\cmdigamma\digamma
+\let\cmvarbeta\varbeta
+\let\cmvarepsilon\varepsilon
+\let\cmvartheta\vartheta
+\let\cmvarkappa\varkappa
+\let\cmvarpi\varpi
+\let\cmvarrho\varrho
+\let\cmvarphi\varphi
+\let\cmvarTheta\varTheta
+% \end{macrocode}
+%
+% \subsection{Internal commands}
+%
+%\begin{macro}{\ernewcommand}
+% Useful macros and internal commands.
+% \begin{macrocode}
+\providecommand\expandonce[1]{\unexpanded\expandafter{#1}}
+\providecommand\expanded[1]{\edef\@tempa{#1}\@tempa}
+\providecommand\ernewcommand[1]{
+ \@ifundefined{\expandafter\@gobble\string#1}%
+ {\let\er@newcommand\newcommand}%
+ {\let\er@newcommand\renewcommand
+ \PackageWarning{mathspec}{Redefining command `\string#1'}}%
+ \er@newcommand#1}
+\newcommand\eu@setkeys[3][]{
+ \ifthenelse{\isempty{#1}}
+ {\relax}
+ {\presetkeys[eu]{#2}{#1}{}}
+ \expanded{\noexpand\setkeys*[eu]{#2}{\expandonce#3}}}
+\newcommand\eu@fontspec[2]{\expanded{\noexpand\zf@fontspec{\expandonce#1}{\expandonce#2}}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\eu@DeclareRobustCommand}
+% |breqn|’s |\@ifnext| replaces |\@ifnextchar| in the definition of \LaTeX’s |\DeclareRobustCommand|. This is needed for the definition of |\+|.
% \begin{macrocode}
\def\@ifnext#1#2#3{%
- \let\@tempd= #1\def\@tempa{#2}\def\@tempb{#3}%
- \futurelet\@tempc\@ifnexta
-}
-\def\@ifnexta{\ifx\@tempc\@tempd \let\@tempb\@tempa \fi \@tempb}
+ \let\@tempd=#1%
+ \def\@tempa{#2}%
+ \def\@tempb{#3}%
+ \futurelet\@tempc\@ifnexta}
+\def\@ifnexta{%
+ \ifx\@tempc\@tempd%
+ \let\@tempb\@tempa%
+ \fi\@tempb}
\def\eu@DeclareRobustCommand{\@star@or@long\eu@declare@robustcommand}
\def\eu@declare@robustcommand#1{%
- \ifx#1\@undefined\else\ifx#1\relax\else
- \@latex@info{Redefining \string#1}%
- \fi\fi
- \edef\reserved@a{\string#1}%
- \def\reserved@b{#1}%
- \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}%
- \edef#1{%
- \ifx\reserved@a\reserved@b
- \noexpand\x@protect
- \noexpand#1%
- \fi
- \noexpand\protect
- \expandafter\noexpand\csname
- \expandafter\@gobble\string#1 \endcsname
- }%
- \let\@ifdefinable\@rc@ifdefinable
- \expandafter\eu@new@command\csname
- \expandafter\@gobble\string#1 \endcsname
-}
-\def\eu@new@command#1{%
- \eu@@testopt{\eu@@newcommand#1}0}
-\def\eu@@newcommand#1[#2]{%
- \@ifnext [{\@xargdef#1[#2]}%
- {\@argdef#1[#2]}}
-\long\def\eu@@testopt#1#2{%
- \@ifnext[{#1}{#1[{#2}]}}
+ \ifx#1\@undefined\else\ifx#1\relax\else
+ \@latex@info{Redefining \string#1}%
+ \fi\fi
+ \edef\reserved@a{\string#1}%
+ \def\reserved@b{#1}%
+ \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}%
+ \edef#1{%
+ \ifx\reserved@a\reserved@b
+ \noexpand\x@protect
+ \noexpand#1%
+ \fi
+ \noexpand\protect
+ \expandafter\noexpand\csname\expandafter\@gobble\string#1\endcsname}%
+ \let\@ifdefinable\@rc@ifdefinable
+ \expandafter\eu@new@command\csname\expandafter\@gobble\string#1\endcsname}
+\def\eu@new@command#1{\eu@@testopt{\eu@@newcommand#1}0}
+\def\eu@@newcommand#1[#2]{\@ifnext[{\@xargdef#1[#2]}{\@argdef#1[#2]}}
+\long\def\eu@@testopt#1#2{\@ifnext[{#1}{#1[{#2}]}}
+% \end{macrocode}
+%\end{macro}
+%
+% \subsection{End user commands}
+%
+%\begin{macro}{\normalvarforms}
+% If, after the Greek font is assigned, variant forms retain their original definitions, this command will cause them to be equivalent to the normal forms.
+% \begin{macrocode}
+\newcommand\normalvarforms[1][]{\AtBeginDocument{
+ \ifx\varbeta\cmvarbeta
+ \let\varbeta\beta
+ \fi
+ \ifx\varepsilon\cmvarepsilon
+ \let\varepsilon\epsilon
+ \fi
+ \ifx\vartheta\cmvartheta
+ \let\vartheta\theta
+ \fi
+ \ifx\varkappa\cmvarkappa
+ \let\varkappa\kappa
+ \fi
+ \ifx\varpi\cmvarpi
+ \let\varpi\pi
+ \fi
+ \ifx\varrho\cmvarrho
+ \let\varrho\rho
+ \fi
+ \ifx\varphi\cmvarphi
+ \let\varphi\phi
+ \fi
+ \ifx\varTheta\cmvarTheta
+ \let\varTheta\Theta
+ \fi}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{plaindigits}
+% This command is used to easily disable digits redefinitions.
+% \begin{macrocode}
+\let\eu@ifnot@plaindigits\@firstofone
+\newcommand\plaindigits{\let\eu@ifnot@plaindigits\@gobble}
+% \end{macrocode}
+%\end{macro}
+%
+% The quintessential command. From here, the code branches to four locations.
+%\begin{macro}{\setmathsfont}
+% \begin{macrocode}
+\providecommand\setmathsfont{\eu@setmathsfont}
+\let\setmathfont\setmathsfont
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\+}
+% This command inserts a horizontal skip in mathematics. It must be robust and any white space between the control sequence and a next |[| must not be ignored, so that legitimate (square) brackets in mathematics is not interpreted as an optional argument.
+% \begin{macrocode}
\eu@DeclareRobustCommand\+[1][1]{\ensuremath{\mskip#1mu}}
% \end{macrocode}
-% \end{macro}
-% \subsection{Redefinitions}
+%\end{macro}
+%\begin{macro}{\varforms}
+% This command exchanges variant and normal forms for the specified letters.
% \begin{macrocode}
-\if@eu@normalskips\else
- \thinmuskip=4mu
- \medmuskip=5mu plus 2mu minus 4mu
- \thickmuskip=6mu plus 5mu
-\fi
+\newcommand\varforms[1]{\def\eu@if@varforms##1{##1{#1}}}
% \end{macrocode}
-% \subsection{Internal commands}
-% |xkeyval| key definitions.
-% \begin{macrocode}
-\define@choicekey[eu]{Scope}{Set}%
- [\eu@ScopeSet@value\eu@@ScopeSet@value]%
- {Special,Latin,Greek,Symbols}[Special]{\relax}
-\define@choicekey[eu]{Latin}{Uppercase}%
- [\eu@LatinUppercase@value\eu@@LatinUppercase@value]%
- {Regular,Italic,Plain}[Italic]{\relax}
-\define@choicekey[eu]{Latin}{Lowercase}%
- [\eu@LatinLowercase@value\eu@@LatinLowercase@value]%
- {Regular,Italic,Plain}[Italic]{\relax}
-\define@choicekey[eu]{Latin}{Digits}%
- [\eu@LatinDigits@value\eu@@LatinDigits@value]%
- {Regular,Italic,Plain}[Regular]{\relax}
-\define@choicekey[eu]{Greek}{Uppercase}%
- [\eu@GreekUppercase@value\eu@@GreekUppercase@value]%
- {Regular,Italic,Plain}[Regular]{\relax}
-\define@choicekey[eu]{Greek}{Lowercase}%
- [\eu@GreekLowercase@value\eu@@GreekLowercase@value]%
- {Regular,Italic,Plain}[Italic]{\relax}
-\define@choicekey[eu]{Greek}{Digits}%
- [\eu@GreekDigits@value\eu@@GreekDigits@value]%
- {Regular,Italic,Plain}[Regular]{\relax}
-% \end{macrocode}
-% \begin{macro}{\eu@XeTeXDeclareMathSymbol}
-% A crude extension of \LaTeX’s |\DeclareMathSymbol|\permitbreak\marg{symbol}\permitbreak\marg{type}\permitbreak\marg{sym-font}\permitbreak\marg{slot} to allow the greater set of Unicode characters; It could do with some work, for example to permit a control sequence as the first argument. The command allows us to type, say, literal Greek characters in mathematics, for example, |$y = αx^2 + βx + γ$| and |$y = \alpha x^2 + \beta x + \gamma$| are equivalent, and potentially the other mathematical symbols that are represented in Unicode, as in something like |$∫_{-∞}^∞ e^{-\frac{x²}{2}}\,\mathrm{d}x = √{2π}$|, but perhaps not exactly.
+%\end{macro}
+%\begin{macro}{\setmathrm}
+%\begin{macro}{\setmathcal}
+%\begin{macro}{\setmathsf}
+%\begin{macro}{\setmathtt}
+%\begin{macro}{\setmathfrak}
+%\begin{macro}{\setmathbb}
+% Mathematics alphabet commands.
% \begin{macrocode}
-\newcommand\eu@XeTeXDeclareMathSymbol[4]{
- \expandafter\XeTeXmathcode`#1=\mathchar@type#2 \csname sym#3\endcsname #4}
+\ernewcommand\setmathrm[2][]{
+ \zf@fontspec{#1}{#2}
+ \let\eu@mathrm\zf@family
+ \let\eu@ifset@mathrm\@firstofone
+ \providecommand\eu@mathbf@shape{n}}
+\ernewcommand\setmathcal[2][]{
+ \zf@fontspec{#1}{#2}
+ \let\eu@mathcal\zf@family
+ \let\eu@ifset@mathcal\@firstofone
+ \providecommand\eu@mathcal@series{m}
+ \providecommand\eu@mathcal@shape{n}}
+\ernewcommand\setmathsf[2][]{
+ \zf@fontspec{#1}{#2}
+ \let\eu@mathsf\zf@family
+ \let\eu@ifset@mathsf\@firstofone}
+\ernewcommand\setmathtt[2][]{
+ \zf@fontspec{#1}{#2}
+ \let\eu@mathtt\zf@family
+ \let\eu@ifset@mathtt\@firstofone}
+\ernewcommand\setmathfrak[2][]{
+ \zf@fontspec{#1}{#2}
+ \let\eu@mathfrak\zf@family
+ \let\eu@ifset@mathfrak\@firstofone
+ \providecommand\eu@mathfrak@series{m}}
+\ernewcommand\setmathbb[2][]{
+ \zf@fontspec{#1}{#2}
+ \let\eu@mathbb\zf@family
+ \let\eu@ifset@mathbb\@firstofone
+ \providecommand\eu@mathbb@series{m}}
% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\eu@DeclareMathSymbol}
-% The command |\eu@DeclareMathSymbol| used in this package lets a control sequence be equivalent to a literal character but will only do something if the character exists in the font.
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\setprimaryfont}
+%\begin{macro}{\setsansfonts}
+%\begin{macro}{\setmonofonts}
+% Shorthands
% \begin{macrocode}
-\newcommand\eu@DeclareMathSymbol[4]{%
- \iffontchar\font#4%
- \eu@XeTeXDeclareMathSymbol#1#2#3#4%
- \let\eu@Character#1%
- \else
- \let\eu@Character\relax
+\newcommand\setprimaryfont[2][]{
+ \setmainfont[#1]{#2}
+ \setmathsfont[Set=Latin,#1]{#2}
+ \setmathrm[#1]{#2}}
+\newcommand\setsansfonts[2][]{
+ \setsansfont[#1]{#2}
+ \setmathsf[#1]{#2}}
+\newcommand\setmonofonts[2][]{
+ \setmonofont[#1]{#2}
+ \setmathtt[#1]{#2}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsection{More internal commands}
+%
+% \subsubsection{{\ttfamily\string\setmathsfont} branches}
+% \begin{macrocode}
+\newcommand\eu@setmathsfont[1][Set=Special]{
+ \eu@setkeys{Scope}{#1}
+ \ifcase\eu@ScopeSet@@value
+ \let\eu@ScopeSet@Value\eu@ScopeSet@Special
+ \or
+ \let\eu@ScopeSet@Value\eu@ScopeSet@Latin
+ \or
+ \let\eu@ScopeSet@Value\eu@ScopeSet@Greek
+ \or
+ \let\eu@ScopeSet@Value\eu@ScopeSet@Symbols
+ \fi
+ \eu@ScopeSet@Value}
+% \end{macrocode}
+% Special set. This command can be used as a hook to some external code.
+% \begin{macrocode}
+\providecommand\eu@ScopeSet@Special[1]{\relax}
+% \end{macrocode}
+% Latin set.
+% \begin{macrocode}
+\newcommand\eu@ScopeSet@Latin[1]{
+ \eu@setkeys[Uppercase=Italic,Lowercase=Italic,Digits=Regular]{Latin}{\XKV@rm}
+ \eu@fontspec{\XKV@rm}{#1}
+ \ifcase\eu@LatinUppercase@@value
+ \ernewcommand\eu@LatinUppercase@symfont{Lmn}
+ \let\eu@Latinmathsfont\zf@family
+ \@eu@LatinUppercase@true
+ \def\operator@font{\mathgroup\symLmn}
+ \or
+ \ernewcommand\eu@LatinUppercase@symfont{Lmit}
+ \let\eu@Latinmathsfont\zf@family
+ \@eu@LatinUppercase@true
+ \or\fi
+ \ifcase\eu@LatinLowercase@@value
+ \ernewcommand\eu@LatinLowercase@symfont{Lmn}
+ \let\eu@Latinmathsfont\zf@family
+ \@eu@LatinLowercase@true
+ \or
+ \ernewcommand\eu@LatinLowercase@symfont{Lmit}
+ \let\eu@Latinmathsfont\zf@family
+ \@eu@LatinLowercase@true
+ \or\fi
+ \ifcase\eu@LatinDigits@@value
+ \ernewcommand\eu@LatinDigits@symfont{Lmn}
+ \let\eu@Latinmathsfont\zf@family
+ \@eu@LatinDigits@true
+ \or
+ \ernewcommand\eu@LatinDigits@symfont{Lmit}
+ \let\eu@Latinmathsfont\zf@family
+ \@eu@LatinDigits@true
+ \or\fi}
+% \end{macrocode}
+% Greek set
+% \begin{macrocode}
+\newcommand\eu@ScopeSet@Greek[1]{
+ \eu@setkeys[Uppercase=Regular,Lowercase=Italic,Digits=Plain]{Greek}{\XKV@rm}
+ \eu@fontspec{\XKV@rm}{#1}
+ \ifcase\eu@GreekUppercase@@value
+ \ernewcommand\eu@GreekUppercase@symfont{Gmn}
+ \let\eu@Greekmathsfont\zf@family
+ \@eu@GreekUppercase@true
+ \or
+ \ernewcommand\eu@GreekUppercase@symfont{Gmit}
+ \let\eu@Greekmathsfont\zf@family
+ \@eu@GreekUppercase@true
+ \or\fi
+ \ifcase\eu@GreekLowercase@@value
+ \ernewcommand\eu@GreekLowercase@symfont{Gmn}
+ \let\eu@Greekmathsfont\zf@family
+ \@eu@GreekLowercase@true
+ \or
+ \ernewcommand\eu@GreekLowercase@symfont{Gmit}
+ \let\eu@Greekmathsfont\zf@family
+ \@eu@GreekLowercase@true
+ \or\fi
+ \ifcase\eu@GreekDigits@@value
+ \ernewcommand\eu@GreekDigits@symfont{Gmn}
+ \let\eu@Greekmathsfont\zf@family
+ \@eu@GreekDigits@true
+ \or
+ \ernewcommand\eu@GreekDigits@symfont{Gmit}
+ \let\eu@Greekmathsfont\zf@family
+ \@eu@GreekDigits@true
+ \or\fi}
+% \end{macrocode}
+% Symbols set. This command actually does not do a lot.
+% \begin{macrocode}
+\newcommand\eu@ScopeSet@Symbols[1]{
+ \@eu@Symbols@true
+ \zf@fontspec{}{#1}
+ \let\eu@Symbolsmathsfont\zf@family
+ \def\eu@Symbls@symfont{Smn}}
+\renewcommand\eu@ScopeSet@Symbols[1]{
+ \@eu@Symbols@false}
+% \end{macrocode}
+%
+% \subsubsection{Exchanging variant and normal forms}
+%
+% \begin{macrocode}
+\newcommand\eu@VarForms[1]{
+ \fontfamily\eu@Greekmathsfont\selectfont
+ \eu@setkeys{VarForms}{#1}
+ \ifeu@VarForms@beta
+ \eu@DeclareMathSymbol{β}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D0}[\beta]
+ \eu@DeclareMathSymbol{ϐ}{\mathalpha}{\eu@GreekLowercase@symfont}{`β}[\varbeta]
+ \fi
+ \ifeu@VarForms@epsilon
+ \eu@DeclareMathSymbol{ϵ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ε}[\varepsilon]
+ \eu@DeclareMathSymbol{ε}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F5}[\epsilon]
+ \fi
+ \ifeu@VarForms@theta
+ \eu@DeclareMathSymbol{ϑ}{\mathalpha}{\eu@GreekLowercase@symfont}{`θ}[\vartheta]
+ \eu@DeclareMathSymbol{θ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D1}[\theta]
+ \fi
+ \ifeu@VarForms@kappa
+ \eu@DeclareMathSymbol{ϰ}{\mathalpha}{\eu@GreekLowercase@symfont}{`κ}[\varkappa]
+ \eu@DeclareMathSymbol{κ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F0}[\kappa]
+ \fi
+ \ifeu@VarForms@pi
+ \eu@DeclareMathSymbol{ϖ}{\mathalpha}{\eu@GreekLowercase@symfont}{`π}[\varpi]
+ \eu@DeclareMathSymbol{π}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D6}[\pi]
+ \fi
+ \ifeu@VarForms@rho
+ \eu@DeclareMathSymbol{ϱ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ρ}[\varrho]
+ \eu@DeclareMathSymbol{ρ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F1}[\rho]
\fi
- \futurelet\eu@nexttoken\eu@DeclareMathSymbol@option}
-\newcommand\eu@DeclareMathSymbol@option{%
- \ifx\eu@nexttoken[%
- \let\eu@next\eu@option
+ \ifeu@VarForms@phi
+ \eu@DeclareMathSymbol{ϕ}{\mathalpha}{\eu@GreekLowercase@symfont}{`φ}[\varphi]
+ \eu@DeclareMathSymbol{φ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D5}[\phi]
+ \fi
+ \ifeu@VarForms@Theta
+ \eu@DeclareMathSymbol{ϴ}{\mathalpha}{\eu@GreekLowercase@symfont}{`Θ}[\varTheta]
+ \eu@DeclareMathSymbol{Θ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F4}[\Theta]
+ \fi}
+% \end{macrocode}
+%
+% \subsection{{\sffamily xkeyval} things}
+%
+% \begin{macrocode}
+\define@choicekey[eu]{Scope}{Set}
+ [\eu@ScopeSet@value\eu@ScopeSet@@value]
+ {Special,Latin,Greek,Symbols}[Special]{\relax}
+\define@choicekey[eu]{Latin}{Uppercase}
+ [\eu@LatinUppercase@value\eu@LatinUppercase@@value]
+ {Regular,Italic,Plain}[Italic]{\relax}
+\define@choicekey[eu]{Latin}{Lowercase}
+ [\eu@LatinLowercase@value\eu@LatinLowercase@@value]
+ {Regular,Italic,Plain}[Italic]{\relax}
+\define@choicekey[eu]{Latin}{Digits}
+ [\eu@LatinDigits@value\eu@LatinDigits@@value]
+ {Regular,Italic,Plain}[Regular]{\relax}
+\define@choicekey[eu]{Greek}{Uppercase}
+ [\eu@GreekUppercase@value\eu@GreekUppercase@@value]
+ {Regular,Italic,Plain}[Regular]{\relax}
+\define@choicekey[eu]{Greek}{Lowercase}
+ [\eu@GreekLowercase@value\eu@GreekLowercase@@value]
+ {Regular,Italic,Plain}[Italic]{\relax}
+\define@choicekey[eu]{Greek}{Digits}
+ [\eu@GreekDigits@value\eu@GreekDigits@@value]
+ {Regular,Italic,Plain}[Regular]{\relax}
+\define@boolkey[eu]{VarForms}{beta}[True]{\relax}
+\define@boolkey[eu]{VarForms}{epsilon}[True]{\relax}
+\define@boolkey[eu]{VarForms}{theta}[True]{\relax}
+\define@boolkey[eu]{VarForms}{kappa}[True]{\relax}
+\define@boolkey[eu]{VarForms}{pi}[True]{\relax}
+\define@boolkey[eu]{VarForms}{rho}[True]{\relax}
+\define@boolkey[eu]{VarForms}{phi}[True]{\relax}
+\define@boolkey[eu]{VarForms}{Theta}[True]{\relax}
+% \end{macrocode}
+% \subsection{Extending \LaTeX\ commands}
+%
+%\begin{macro}{\eu@XeTeXDeclareMathSymbol}
+% A crude extension of \LaTeX’s |\DeclareMathSymbol| to allow the greater set of Unicode characters.
+% \begin{macrocode}
+\newcommand\eu@XeTeXDeclareMathSymbol[4]{
+ \expandafter\XeTeXmathcode`#1\mathchar@type#2\csname sym#3\endcsname#4}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\eu@DeclareMathSymbol}
+% This command declares a symbol only if it appears in the font and optionally defines an equivalent control sequence.
+% \begin{macrocode}
+\newcommand\eu@DeclareMathSymbol[4]{
+ \ifnum\XeTeXcharglyph#4>0
+ \eu@XeTeXDeclareMathSymbol#1#2#3#4
+ \fi
+ \let\eu@character#1
+ \def\eu@@character{#4}
+ \futurelet\@tempa\eu@@DeclareMathSymbol}
+\def\eu@@DeclareMathSymbol{
+ \ifx\@tempa[
+ \let\eu@@@DeclareMathSymbol\eu@DeclareMathSymbol@option
\else
- \let\eu@next\relax
+ \let\eu@@@DeclareMathSymbol\relax
\fi
- \eu@next}
-\def\eu@option[#1]{%
- \ifx\eu@Character\relax\else
- \let#1\eu@Character
+ \eu@@@DeclareMathSymbol}
+\def\eu@DeclareMathSymbol@option[#1]{%
+ \ifnum\XeTeXcharglyph\eu@@character>0
+ \let#1\eu@character
+ \fi}
+% \end{macrocode}
+%\end{macro}
+% A modification of \LaTeX’s |\DeclareMathSymbol| to perform only if the glyph appears in the font.
+% \begin{macrocode}
+\let\LaTeXe@DeclareMathSymbol\DeclareMathSymbol
+\newcommand\eu@LaTeXe@DeclareMathSymbol[4]{
+ \ifnum\XeTeXcharglyph#4>0
+ \LaTeXe@DeclareMathSymbol{#1}{#2}{#3}{#4}
\fi}
+\let\DeclareMathSymbol\eu@LaTeXe@DeclareMathSymbol
% \end{macrocode}
-% \end{macro}
-% \subsection{The heavy work}
-% \subsubsection{Declaring the fonts}
-% \begin{macro}{\eu@DeclareFonts}
+
+%
+% \subsection{Declarations}
+%
+% Fonts.
% \begin{macrocode}
\newcommand\eu@DeclareFonts{
- \if@eu@Latinmathsfontspecified
+ \let\eu@if@Latin\@gobble
+ \if@eu@LatinUppercase@\let\eu@if@Latin\@firstofone\fi
+ \if@eu@LatinLowercase@\let\eu@if@Latin\@firstofone\fi
+ \if@eu@LatinDigits@\let\eu@if@Latin\@firstofone\fi
+ \let\eu@if@Greek\@gobble
+ \if@eu@GreekUppercase@\let\eu@if@Greek\@firstofone\fi
+ \if@eu@GreekLowercase@\let\eu@if@Greek\@firstofone\fi
+ \if@eu@GreekDigits@\let\eu@if@Greek\@firstofone\fi
+ \eu@if@Latin{
\DeclareSymbolFont{Lmn}{EU1}{\eu@Latinmathsfont}{m}{n}
\DeclareSymbolFont{Lmit}{EU1}{\eu@Latinmathsfont}{m}{it}
- \DeclareMathAlphabet{\mathbi}{EU1}{\eu@Latinmathsfont}{bx}{it}
- \fi
- \if@eu@Greekmathsfontspecified
+ }
+ \eu@if@Greek{
\DeclareSymbolFont{Gmn}{EU1}{\eu@Greekmathsfont}{m}{n}
- \DeclareSymbolFont{Gmit}{EU1}{\eu@Greekmathsfont}{m}{it}
- \DeclareMathAlphabet{\greekmathrm}{EU1}{\eu@Greekmathsfont}{m}{n}
- \def\greekmathrg{\greekmathrm}
- \DeclareMathAlphabet{\greekmathit}{EU1}{\eu@Greekmathsfont}{m}{it}
- \DeclareMathAlphabet{\greekmathbf}{EU1}{\eu@Greekmathsfont}{bx}{n}
- \DeclareMathAlphabet{\greekmathbi}{EU1}{\eu@Greekmathsfont}{bx}{it}
- \fi
- \if@eu@Symbolsmathsfontspecified
+ \DeclareSymbolFont{Gmit}{EU1}{\eu@Greekmathsfont}{m}{it}}
+ \if@eu@Symbols@
\DeclareSymbolFont{Smn}{EU1}{\eu@Symbolsmathsfont}{m}{n}
\fi}
% \end{macrocode}
-% \end{macro}
-% \subsubsection{Declaring the digits}
-% \begin{macro}{\eu@DeclareDigits}
+% Digits.
% \begin{macrocode}
\newcommand\eu@DeclareDigits{
- \if@eu@Latinmathsfontspecified
- \if@eu@LatinDigits
- \eu@LatinDigits@Plain
- \else
- \if@eu@Greekmathsfontspecified
- \if@eu@GreekDigits
- \eu@GreekDigits@Plain
- \else
- \eu@LatinDigits@Plain
- \fi
- \else
- \eu@LatinDigits@Plain
- \fi
- \fi
+ \let\eu@if@Digits\@gobble
+ \if@eu@GreekDigits@
+ \let\eu@if@Digits\@firstofone
+ \let\eu@Digits@symfont\eu@GreekDigits@symfont
+ \let\eu@Digitsmathsfont\eu@Greekmathsfont
\else
- \if@eu@Greekmathsfontspecified
- \eu@GreekDigits@Plain
- \else
- \@eu@declareDigitsfalse
+ \if@eu@LatinDigits@
+ \let\eu@if@Digits\@firstofone
+ \let\eu@Digits@symfont\eu@LatinDigits@symfont
+ \let\eu@Digitsmathsfont\eu@Latinmathsfont
\fi
\fi
- \if@eu@declareDigits
+ \eu@if@Digits{
+ \fontfamily\eu@Digitsmathsfont\selectfont
\DeclareMathSymbol{0}{\mathord}{\eu@Digits@symfont}{`0}
\DeclareMathSymbol{1}{\mathord}{\eu@Digits@symfont}{`1}
\DeclareMathSymbol{2}{\mathord}{\eu@Digits@symfont}{`2}
@@ -541,287 +1106,273 @@
\DeclareMathSymbol{6}{\mathord}{\eu@Digits@symfont}{`6}
\DeclareMathSymbol{7}{\mathord}{\eu@Digits@symfont}{`7}
\DeclareMathSymbol{8}{\mathord}{\eu@Digits@symfont}{`8}
- \DeclareMathSymbol{9}{\mathord}{\eu@Digits@symfont}{`9}
- \fi}
-\newcommand\eu@LatinDigits@Plain{%
- \ifcase\eu@@LatinDigits@value
- \newcommand\eu@Digits@symfont{Lmn}
- \or
- \newcommand\eu@Digits@symfont{Lmit}
- \or
- \@eu@declareDigitsfalse
- \fi}
-\newcommand\eu@GreekDigits@Plain{%
- \ifcase\eu@@GreekDigits@value
- \newcommand\eu@Digits@symfont{Gmn}
- \or
- \newcommand\eu@Digits@symfont{Gmit}
- \or
- \@eu@declareDigitsfalse
- \fi}
-% \end{macrocode}
-% \end{macro}
-% \subsubsection{Declaring the uppercase Latin characters}
-% \begin{macro}{\eu@DeclareLatinUppercase}
+ \DeclareMathSymbol{9}{\mathord}{\eu@Digits@symfont}{`9}}}
+% \end{macrocode}
+% Uppercase Latin.
% \begin{macrocode}
\newcommand\eu@DeclareLatinUppercase{
- \ifcase\eu@@LatinUppercase@value
- \newcommand\eu@LatinUppercase@symfont{Lmn}
- \else
- \newcommand\eu@LatinUppercase@symfont{Lmit}
- \fi
- \DeclareMathSymbol{A}{\mathalpha}{\eu@LatinUppercase@symfont}{`A}
- \DeclareMathSymbol{B}{\mathalpha}{\eu@LatinUppercase@symfont}{`B}
- \DeclareMathSymbol{C}{\mathalpha}{\eu@LatinUppercase@symfont}{`C}
- \DeclareMathSymbol{D}{\mathalpha}{\eu@LatinUppercase@symfont}{`D}
- \DeclareMathSymbol{E}{\mathalpha}{\eu@LatinUppercase@symfont}{`E}
- \DeclareMathSymbol{F}{\mathalpha}{\eu@LatinUppercase@symfont}{`F}
- \DeclareMathSymbol{G}{\mathalpha}{\eu@LatinUppercase@symfont}{`G}
- \DeclareMathSymbol{H}{\mathalpha}{\eu@LatinUppercase@symfont}{`H}
- \DeclareMathSymbol{I}{\mathalpha}{\eu@LatinUppercase@symfont}{`I}
- \DeclareMathSymbol{J}{\mathalpha}{\eu@LatinUppercase@symfont}{`J}
- \DeclareMathSymbol{K}{\mathalpha}{\eu@LatinUppercase@symfont}{`K}
- \DeclareMathSymbol{L}{\mathalpha}{\eu@LatinUppercase@symfont}{`L}
- \DeclareMathSymbol{M}{\mathalpha}{\eu@LatinUppercase@symfont}{`M}
- \DeclareMathSymbol{N}{\mathalpha}{\eu@LatinUppercase@symfont}{`N}
- \DeclareMathSymbol{O}{\mathalpha}{\eu@LatinUppercase@symfont}{`O}
- \DeclareMathSymbol{P}{\mathalpha}{\eu@LatinUppercase@symfont}{`P}
- \DeclareMathSymbol{Q}{\mathalpha}{\eu@LatinUppercase@symfont}{`Q}
- \DeclareMathSymbol{R}{\mathalpha}{\eu@LatinUppercase@symfont}{`R}
- \DeclareMathSymbol{S}{\mathalpha}{\eu@LatinUppercase@symfont}{`S}
- \DeclareMathSymbol{T}{\mathalpha}{\eu@LatinUppercase@symfont}{`T}
- \DeclareMathSymbol{U}{\mathalpha}{\eu@LatinUppercase@symfont}{`U}
- \DeclareMathSymbol{V}{\mathalpha}{\eu@LatinUppercase@symfont}{`V}
- \DeclareMathSymbol{W}{\mathalpha}{\eu@LatinUppercase@symfont}{`W}
- \DeclareMathSymbol{X}{\mathalpha}{\eu@LatinUppercase@symfont}{`X}
- \DeclareMathSymbol{Y}{\mathalpha}{\eu@LatinUppercase@symfont}{`Y}
- \DeclareMathSymbol{Z}{\mathalpha}{\eu@LatinUppercase@symfont}{`Z}}
-% \end{macrocode}
-% \end{macro}
-% \subsubsection{Declaring the lowercase Latin characters}
-% \begin{macro}{\eu@DeclareLatinLowercase}
+ \if@eu@LatinUppercase@
+ \fontfamily\eu@Latinmathsfont\selectfont
+ \DeclareMathSymbol{A}{\mathalpha}{\eu@LatinUppercase@symfont}{`A}
+ \DeclareMathSymbol{B}{\mathalpha}{\eu@LatinUppercase@symfont}{`B}
+ \DeclareMathSymbol{C}{\mathalpha}{\eu@LatinUppercase@symfont}{`C}
+ \DeclareMathSymbol{D}{\mathalpha}{\eu@LatinUppercase@symfont}{`D}
+ \DeclareMathSymbol{E}{\mathalpha}{\eu@LatinUppercase@symfont}{`E}
+ \DeclareMathSymbol{F}{\mathalpha}{\eu@LatinUppercase@symfont}{`F}
+ \DeclareMathSymbol{G}{\mathalpha}{\eu@LatinUppercase@symfont}{`G}
+ \DeclareMathSymbol{H}{\mathalpha}{\eu@LatinUppercase@symfont}{`H}
+ \DeclareMathSymbol{I}{\mathalpha}{\eu@LatinUppercase@symfont}{`I}
+ \DeclareMathSymbol{J}{\mathalpha}{\eu@LatinUppercase@symfont}{`J}
+ \DeclareMathSymbol{K}{\mathalpha}{\eu@LatinUppercase@symfont}{`K}
+ \DeclareMathSymbol{L}{\mathalpha}{\eu@LatinUppercase@symfont}{`L}
+ \DeclareMathSymbol{M}{\mathalpha}{\eu@LatinUppercase@symfont}{`M}
+ \DeclareMathSymbol{N}{\mathalpha}{\eu@LatinUppercase@symfont}{`N}
+ \DeclareMathSymbol{O}{\mathalpha}{\eu@LatinUppercase@symfont}{`O}
+ \DeclareMathSymbol{P}{\mathalpha}{\eu@LatinUppercase@symfont}{`P}
+ \DeclareMathSymbol{Q}{\mathalpha}{\eu@LatinUppercase@symfont}{`Q}
+ \DeclareMathSymbol{R}{\mathalpha}{\eu@LatinUppercase@symfont}{`R}
+ \DeclareMathSymbol{S}{\mathalpha}{\eu@LatinUppercase@symfont}{`S}
+ \DeclareMathSymbol{T}{\mathalpha}{\eu@LatinUppercase@symfont}{`T}
+ \DeclareMathSymbol{U}{\mathalpha}{\eu@LatinUppercase@symfont}{`U}
+ \DeclareMathSymbol{V}{\mathalpha}{\eu@LatinUppercase@symfont}{`V}
+ \DeclareMathSymbol{W}{\mathalpha}{\eu@LatinUppercase@symfont}{`W}
+ \DeclareMathSymbol{X}{\mathalpha}{\eu@LatinUppercase@symfont}{`X}
+ \DeclareMathSymbol{Y}{\mathalpha}{\eu@LatinUppercase@symfont}{`Y}
+ \DeclareMathSymbol{Z}{\mathalpha}{\eu@LatinUppercase@symfont}{`Z}
+ \fi}
+% \end{macrocode}
+% Lowercase Latin.
% \begin{macrocode}
\newcommand\eu@DeclareLatinLowercase{
- \ifcase\eu@@LatinLowercase@value
- \newcommand\eu@LatinLowercase@symfont{Lmn}
- \else
- \newcommand\eu@LatinLowercase@symfont{Lmit}
- \fi
- \DeclareMathSymbol{a}{\mathalpha}{\eu@LatinLowercase@symfont}{`a}
- \DeclareMathSymbol{b}{\mathalpha}{\eu@LatinLowercase@symfont}{`b}
- \DeclareMathSymbol{c}{\mathalpha}{\eu@LatinLowercase@symfont}{`c}
- \DeclareMathSymbol{d}{\mathalpha}{\eu@LatinLowercase@symfont}{`d}
- \DeclareMathSymbol{e}{\mathalpha}{\eu@LatinLowercase@symfont}{`e}
- \DeclareMathSymbol{f}{\mathalpha}{\eu@LatinLowercase@symfont}{`f}
- \DeclareMathSymbol{g}{\mathalpha}{\eu@LatinLowercase@symfont}{`g}
- \DeclareMathSymbol{h}{\mathalpha}{\eu@LatinLowercase@symfont}{`h}
- \DeclareMathSymbol{i}{\mathalpha}{\eu@LatinLowercase@symfont}{`i}
- \DeclareMathSymbol{j}{\mathalpha}{\eu@LatinLowercase@symfont}{`j}
- \DeclareMathSymbol{k}{\mathalpha}{\eu@LatinLowercase@symfont}{`k}
- \DeclareMathSymbol{l}{\mathalpha}{\eu@LatinLowercase@symfont}{`l}
- \DeclareMathSymbol{m}{\mathalpha}{\eu@LatinLowercase@symfont}{`m}
- \DeclareMathSymbol{n}{\mathalpha}{\eu@LatinLowercase@symfont}{`n}
- \DeclareMathSymbol{o}{\mathalpha}{\eu@LatinLowercase@symfont}{`o}
- \DeclareMathSymbol{p}{\mathalpha}{\eu@LatinLowercase@symfont}{`p}
- \DeclareMathSymbol{q}{\mathalpha}{\eu@LatinLowercase@symfont}{`q}
- \DeclareMathSymbol{r}{\mathalpha}{\eu@LatinLowercase@symfont}{`r}
- \DeclareMathSymbol{s}{\mathalpha}{\eu@LatinLowercase@symfont}{`s}
- \DeclareMathSymbol{t}{\mathalpha}{\eu@LatinLowercase@symfont}{`t}
- \DeclareMathSymbol{u}{\mathalpha}{\eu@LatinLowercase@symfont}{`u}
- \DeclareMathSymbol{v}{\mathalpha}{\eu@LatinLowercase@symfont}{`v}
- \DeclareMathSymbol{w}{\mathalpha}{\eu@LatinLowercase@symfont}{`w}
- \DeclareMathSymbol{x}{\mathalpha}{\eu@LatinLowercase@symfont}{`x}
- \DeclareMathSymbol{y}{\mathalpha}{\eu@LatinLowercase@symfont}{`y}
- \DeclareMathSymbol{z}{\mathalpha}{\eu@LatinLowercase@symfont}{`z}}
-% \end{macrocode}
-% \end{macro}
-% \subsubsection{Declaring the uppercase Greek characters}
-% \begin{macro}{\eu@DeclareGreekUppercase}
+ \if@eu@LatinLowercase@
+ \fontfamily\eu@Latinmathsfont\selectfont
+ \DeclareMathSymbol{a}{\mathalpha}{\eu@LatinLowercase@symfont}{`a}
+ \DeclareMathSymbol{b}{\mathalpha}{\eu@LatinLowercase@symfont}{`b}
+ \DeclareMathSymbol{c}{\mathalpha}{\eu@LatinLowercase@symfont}{`c}
+ \DeclareMathSymbol{d}{\mathalpha}{\eu@LatinLowercase@symfont}{`d}
+ \DeclareMathSymbol{e}{\mathalpha}{\eu@LatinLowercase@symfont}{`e}
+ \DeclareMathSymbol{f}{\mathalpha}{\eu@LatinLowercase@symfont}{`f}
+ \DeclareMathSymbol{g}{\mathalpha}{\eu@LatinLowercase@symfont}{`g}
+ \DeclareMathSymbol{h}{\mathalpha}{\eu@LatinLowercase@symfont}{`h}
+ \DeclareMathSymbol{i}{\mathalpha}{\eu@LatinLowercase@symfont}{`i}
+ \DeclareMathSymbol{j}{\mathalpha}{\eu@LatinLowercase@symfont}{`j}
+ \DeclareMathSymbol{k}{\mathalpha}{\eu@LatinLowercase@symfont}{`k}
+ \DeclareMathSymbol{l}{\mathalpha}{\eu@LatinLowercase@symfont}{`l}
+ \DeclareMathSymbol{m}{\mathalpha}{\eu@LatinLowercase@symfont}{`m}
+ \DeclareMathSymbol{n}{\mathalpha}{\eu@LatinLowercase@symfont}{`n}
+ \DeclareMathSymbol{o}{\mathalpha}{\eu@LatinLowercase@symfont}{`o}
+ \DeclareMathSymbol{p}{\mathalpha}{\eu@LatinLowercase@symfont}{`p}
+ \DeclareMathSymbol{q}{\mathalpha}{\eu@LatinLowercase@symfont}{`q}
+ \DeclareMathSymbol{r}{\mathalpha}{\eu@LatinLowercase@symfont}{`r}
+ \DeclareMathSymbol{s}{\mathalpha}{\eu@LatinLowercase@symfont}{`s}
+ \DeclareMathSymbol{t}{\mathalpha}{\eu@LatinLowercase@symfont}{`t}
+ \DeclareMathSymbol{u}{\mathalpha}{\eu@LatinLowercase@symfont}{`u}
+ \DeclareMathSymbol{v}{\mathalpha}{\eu@LatinLowercase@symfont}{`v}
+ \DeclareMathSymbol{w}{\mathalpha}{\eu@LatinLowercase@symfont}{`w}
+ \DeclareMathSymbol{x}{\mathalpha}{\eu@LatinLowercase@symfont}{`x}
+ \DeclareMathSymbol{y}{\mathalpha}{\eu@LatinLowercase@symfont}{`y}
+ \DeclareMathSymbol{z}{\mathalpha}{\eu@LatinLowercase@symfont}{`z}
+ \fi}
+% \end{macrocode}
+% Uppercase Greek.
% \begin{macrocode}
\newcommand\eu@DeclareGreekUppercase{
- \ifcase\eu@@GreekUppercase@value
- \newcommand\eu@GreekUppercase@symfont{Gmn}
- \else
- \newcommand\eu@GreekUppercase@symfont{Gmit}
- \fi
- \eu@DeclareMathSymbol{Α}{\mathalpha}{\eu@GreekUppercase@symfont}{`Α}[\Alpha]
- \eu@DeclareMathSymbol{Β}{\mathalpha}{\eu@GreekUppercase@symfont}{`Β}[\Beta]
- \eu@DeclareMathSymbol{Γ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Γ}[\Gamma]
- \eu@DeclareMathSymbol{Δ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Δ}[\Delta]
- \eu@DeclareMathSymbol{Ε}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ε}[\Epsilon]
- \eu@DeclareMathSymbol{Ζ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ζ}[\Zeta]
- \eu@DeclareMathSymbol{Η}{\mathalpha}{\eu@GreekUppercase@symfont}{`Η}[\Eta]
- \eu@DeclareMathSymbol{Θ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Θ}[\Theta]
- \eu@DeclareMathSymbol{Ι}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ι}[\Iota]
- \eu@DeclareMathSymbol{Κ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Κ}[\Kappa]
- \eu@DeclareMathSymbol{Λ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Λ}[\Lambda]
- \eu@DeclareMathSymbol{Μ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Μ}[\Mu]
- \eu@DeclareMathSymbol{Ν}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ν}[\Nu]
- \eu@DeclareMathSymbol{Ξ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ξ}[\Xi]
- \eu@DeclareMathSymbol{Ο}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ο}[\Omicron]
- \eu@DeclareMathSymbol{Π}{\mathalpha}{\eu@GreekUppercase@symfont}{`Π}[\Pi]
- \eu@DeclareMathSymbol{Ρ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ρ}[\Rho]
- \eu@DeclareMathSymbol{Σ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Σ}[\Sigma]
- \eu@DeclareMathSymbol{Τ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Τ}[\Tau]
- \eu@DeclareMathSymbol{Υ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Υ}[\Upsilon]
- \eu@DeclareMathSymbol{Φ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Φ}[\Phi]
- \eu@DeclareMathSymbol{Χ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Χ}[\Chi]
- \eu@DeclareMathSymbol{Ψ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ψ}[\Psi]
- \eu@DeclareMathSymbol{Ω}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ω}[\Omega]}
-% \end{macrocode}
-% \end{macro}
-% \subsubsection{Declaring the lowercase Greek characters}
-% \begin{macro}{\eu@DeclareGreekLowercase}
+ \if@eu@GreekUppercase@
+ \fontfamily\eu@Greekmathsfont\selectfont
+ \eu@DeclareMathSymbol{Α}{\mathalpha}{\eu@GreekUppercase@symfont}{`Α}[\Alpha]
+ \eu@DeclareMathSymbol{Β}{\mathalpha}{\eu@GreekUppercase@symfont}{`Β}[\Beta]
+ \eu@DeclareMathSymbol{Γ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Γ}[\Gamma]
+ \eu@DeclareMathSymbol{Δ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Δ}[\Delta]
+ \eu@DeclareMathSymbol{Ε}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ε}[\Epsilon]
+ \eu@DeclareMathSymbol{Ζ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ζ}[\Zeta]
+ \eu@DeclareMathSymbol{Η}{\mathalpha}{\eu@GreekUppercase@symfont}{`Η}[\Eta]
+ \eu@DeclareMathSymbol{Θ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Θ}[\Theta]
+ \eu@DeclareMathSymbol{Ι}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ι}[\Iota]
+ \eu@DeclareMathSymbol{Κ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Κ}[\Kappa]
+ \eu@DeclareMathSymbol{Λ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Λ}[\Lambda]
+ \eu@DeclareMathSymbol{Μ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Μ}[\Mu]
+ \eu@DeclareMathSymbol{Ν}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ν}[\Nu]
+ \eu@DeclareMathSymbol{Ξ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ξ}[\Xi]
+ \eu@DeclareMathSymbol{Ο}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ο}[\Omicron]
+ \eu@DeclareMathSymbol{Π}{\mathalpha}{\eu@GreekUppercase@symfont}{`Π}[\Pi]
+ \eu@DeclareMathSymbol{Ρ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ρ}[\Rho]
+ \eu@DeclareMathSymbol{Σ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Σ}[\Sigma]
+ \eu@DeclareMathSymbol{Τ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Τ}[\Tau]
+ \eu@DeclareMathSymbol{Υ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Υ}[\Upsilon]
+ \eu@DeclareMathSymbol{Φ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Φ}[\Phi]
+ \eu@DeclareMathSymbol{Χ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Χ}[\Chi]
+ \eu@DeclareMathSymbol{Ψ}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ψ}[\Psi]
+ \eu@DeclareMathSymbol{Ω}{\mathalpha}{\eu@GreekUppercase@symfont}{`Ω}[\Omega]
+ \eu@DeclareMathSymbol{ϴ}{\mathalpha}{\eu@GreekUppercase@symfont}{"3F4}[\varTheta]
+ \eu@DeclareMathSymbol{Ϝ}{\mathalpha}{\eu@GreekUppercase@symfont}{"3DC}[\Digamma]
+ \fi}
+% \end{macrocode}
+% Lowercase Greek.
% \begin{macrocode}
\newcommand\eu@DeclareGreekLowercase{
- \ifcase\eu@@GreekLowercase@value
- \newcommand\eu@GreekLowercase@symfont{Gmn}
- \else
- \newcommand\eu@GreekLowercase@symfont{Gmit}
- \fi
- \eu@DeclareMathSymbol{α}{\mathalpha}{\eu@GreekLowercase@symfont}{`α}[\alpha]
- \eu@DeclareMathSymbol{β}{\mathalpha}{\eu@GreekLowercase@symfont}{`β}[\beta]
- \eu@DeclareMathSymbol{γ}{\mathalpha}{\eu@GreekLowercase@symfont}{`γ}[\gamma]
- \eu@DeclareMathSymbol{δ}{\mathalpha}{\eu@GreekLowercase@symfont}{`δ}[\delta]
- \eu@DeclareMathSymbol{ε}{\mathalpha}{\eu@GreekLowercase@symfont}{`ε}[\epsilon]
- \eu@DeclareMathSymbol{ζ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ζ}[\zeta]
- \eu@DeclareMathSymbol{η}{\mathalpha}{\eu@GreekLowercase@symfont}{`η}[\eta]
- \eu@DeclareMathSymbol{θ}{\mathalpha}{\eu@GreekLowercase@symfont}{`θ}[\theta]
- \eu@DeclareMathSymbol{ι}{\mathalpha}{\eu@GreekLowercase@symfont}{`ι}[\iota]
- \eu@DeclareMathSymbol{κ}{\mathalpha}{\eu@GreekLowercase@symfont}{`κ}[\kappa]
- \eu@DeclareMathSymbol{λ}{\mathalpha}{\eu@GreekLowercase@symfont}{`λ}[\lambda]
- \eu@DeclareMathSymbol{μ}{\mathalpha}{\eu@GreekLowercase@symfont}{`μ}[\mu]
- \eu@DeclareMathSymbol{ν}{\mathalpha}{\eu@GreekLowercase@symfont}{`ν}[\nu]
- \eu@DeclareMathSymbol{ξ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ξ}[\xi]
- \eu@DeclareMathSymbol{ο}{\mathalpha}{\eu@GreekLowercase@symfont}{`ο}[\omicron]
- \eu@DeclareMathSymbol{π}{\mathalpha}{\eu@GreekLowercase@symfont}{`π}[\pi]
- \eu@DeclareMathSymbol{ρ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ρ}[\rho]
- \eu@DeclareMathSymbol{σ}{\mathalpha}{\eu@GreekLowercase@symfont}{`σ}[\sigma]
- \eu@DeclareMathSymbol{τ}{\mathalpha}{\eu@GreekLowercase@symfont}{`τ}[\tau]
- \eu@DeclareMathSymbol{υ}{\mathalpha}{\eu@GreekLowercase@symfont}{`υ}[\upsilon]
- \eu@DeclareMathSymbol{φ}{\mathalpha}{\eu@GreekLowercase@symfont}{`φ}[\phi]
- \eu@DeclareMathSymbol{χ}{\mathalpha}{\eu@GreekLowercase@symfont}{`χ}[\chi]
- \eu@DeclareMathSymbol{ψ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ψ}[\psi]
- \eu@DeclareMathSymbol{ω}{\mathalpha}{\eu@GreekLowercase@symfont}{`ω}[\omega]
- \eu@DeclareMathSymbol{ς}{\mathalpha}{\eu@GreekLowercase@symfont}{`ς}[\varsigma]}
-% \end{macrocode}
-% \end{macro}
-% \subsubsection{Declaring common symbols}\label{thesymbols}
-% \begin{macro}{\eu@DeclareSymbols}
-% The future might hold |\include{Unicode-math.tex}| here to quickly expand the list of supported Unicode math symbols, but that list has several omissions and unwanted inclusions.\makemonofontCambria
+ \if@eu@GreekLowercase@
+ \fontfamily\eu@Greekmathsfont\selectfont
+ \eu@DeclareMathSymbol{α}{\mathalpha}{\eu@GreekLowercase@symfont}{`α}[\alpha]
+ \eu@DeclareMathSymbol{β}{\mathalpha}{\eu@GreekLowercase@symfont}{`β}[\beta]
+ \eu@DeclareMathSymbol{γ}{\mathalpha}{\eu@GreekLowercase@symfont}{`γ}[\gamma]
+ \eu@DeclareMathSymbol{δ}{\mathalpha}{\eu@GreekLowercase@symfont}{`δ}[\delta]
+ \eu@DeclareMathSymbol{ε}{\mathalpha}{\eu@GreekLowercase@symfont}{`ε}[\epsilon]
+ \eu@DeclareMathSymbol{ζ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ζ}[\zeta]
+ \eu@DeclareMathSymbol{η}{\mathalpha}{\eu@GreekLowercase@symfont}{`η}[\eta]
+ \eu@DeclareMathSymbol{θ}{\mathalpha}{\eu@GreekLowercase@symfont}{`θ}[\theta]
+ \eu@DeclareMathSymbol{ι}{\mathalpha}{\eu@GreekLowercase@symfont}{`ι}[\iota]
+ \eu@DeclareMathSymbol{κ}{\mathalpha}{\eu@GreekLowercase@symfont}{`κ}[\kappa]
+ \eu@DeclareMathSymbol{λ}{\mathalpha}{\eu@GreekLowercase@symfont}{`λ}[\lambda]
+ \eu@DeclareMathSymbol{μ}{\mathalpha}{\eu@GreekLowercase@symfont}{`μ}[\mu]
+ \eu@DeclareMathSymbol{ν}{\mathalpha}{\eu@GreekLowercase@symfont}{`ν}[\nu]
+ \eu@DeclareMathSymbol{ξ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ξ}[\xi]
+ \eu@DeclareMathSymbol{ο}{\mathalpha}{\eu@GreekLowercase@symfont}{`ο}[\omicron]
+ \eu@DeclareMathSymbol{π}{\mathalpha}{\eu@GreekLowercase@symfont}{`π}[\pi]
+ \eu@DeclareMathSymbol{ρ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ρ}[\rho]
+ \eu@DeclareMathSymbol{σ}{\mathalpha}{\eu@GreekLowercase@symfont}{`σ}[\sigma]
+ \eu@DeclareMathSymbol{τ}{\mathalpha}{\eu@GreekLowercase@symfont}{`τ}[\tau]
+ \eu@DeclareMathSymbol{υ}{\mathalpha}{\eu@GreekLowercase@symfont}{`υ}[\upsilon]
+ \eu@DeclareMathSymbol{φ}{\mathalpha}{\eu@GreekLowercase@symfont}{`φ}[\phi]
+ \eu@DeclareMathSymbol{χ}{\mathalpha}{\eu@GreekLowercase@symfont}{`χ}[\chi]
+ \eu@DeclareMathSymbol{ψ}{\mathalpha}{\eu@GreekLowercase@symfont}{`ψ}[\psi]
+ \eu@DeclareMathSymbol{ω}{\mathalpha}{\eu@GreekLowercase@symfont}{`ω}[\omega]
+ \eu@DeclareMathSymbol{ς}{\mathalpha}{\eu@GreekLowercase@symfont}{`ς}[\varsigma]
+ \eu@DeclareMathSymbol{ϐ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D0}[\varbeta]
+ \eu@DeclareMathSymbol{ϵ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F5}[\varepsilon]
+ \eu@DeclareMathSymbol{ϑ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D1}[\vartheta]
+ \eu@DeclareMathSymbol{ϰ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F0}[\varkappa]
+ \eu@DeclareMathSymbol{ϖ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D6}[\varpi]
+ \eu@DeclareMathSymbol{ϱ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3F1}[\varrho]
+ \eu@DeclareMathSymbol{ϕ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3D5}[\varphi]
+ \eu@DeclareMathSymbol{ϝ}{\mathalpha}{\eu@GreekLowercase@symfont}{"3DD}[\digamma]
+ \fi}
+% \end{macrocode}
+% Symbols.
% \begin{macrocode}
\newcommand\eu@DeclareSymbols{
- \newcommand\eu@Symbols@symfont{Smn}
- \fontfamily\eu@Symbolsmathsfont\selectfont
- \eu@DeclareMathSymbol{!}{\mathclose}{\eu@Symbols@symfont}{`!}[\exclam]
- \eu@DeclareMathSymbol{+}{\mathbin}{\eu@Symbols@symfont}{`+}[\plus]
- \eu@DeclareMathSymbol{,}{\mathpunct}{\eu@Symbols@symfont}{`,}
- \eu@DeclareMathSymbol{.}{\mathord}{\eu@Symbols@symfont}{`.}
- \iffontchar\font`.
- \XeTeXmathchardef\ldotp6\symSmn`.
- \fi
- \eu@DeclareMathSymbol{:}{\mathrel}{\eu@Symbols@symfont}{`:}
- \iffontchar\font`:
- \XeTeXmathchardef\colon6\symSmn`:
- \fi
- \eu@DeclareMathSymbol{;}{\mathpunct}{\eu@Symbols@symfont}{`;}[\semicolon]
- \eu@DeclareMathSymbol{<}{\mathrel}{\eu@Symbols@symfont}{`<}[\less]
- \eu@DeclareMathSymbol{=}{\mathrel}{\eu@Symbols@symfont}{`=}[\equal]
- \eu@DeclareMathSymbol{>}{\mathrel}{\eu@Symbols@symfont}{`>}[\greater]
- \eu@DeclareMathSymbol{?}{\mathclose}{\eu@Symbols@symfont}{`?}
- \eu@DeclareMathSymbol{¬}{\mathord}{\eu@Symbols@symfont}{`¬}[\neg]
- \let\lnot\neg
- \eu@DeclareMathSymbol{°}{\mathord}{\eu@Symbols@symfont}{`°}[\degree]
- \eu@DeclareMathSymbol{±}{\mathbin}{\eu@Symbols@symfont}{`±}[\pm]
- \eu@DeclareMathSymbol{µ}{\mathord}{\eu@Symbols@symfont}{`µ}[\micro]
- \eu@DeclareMathSymbol{×}{\mathbin}{\eu@Symbols@symfont}{`×}[\times]
- \eu@DeclareMathSymbol{÷}{\mathbin}{\eu@Symbols@symfont}{`÷}[\div]
- \eu@DeclareMathSymbol{∀}{\mathord}{\eu@Symbols@symfont}{`∀}[\forall]
- \eu@DeclareMathSymbol{∂}{\mathord}{\eu@Symbols@symfont}{`∂}[\partial]
- \eu@DeclareMathSymbol{∃}{\mathord}{\eu@Symbols@symfont}{`∃}[\exists]
- \eu@DeclareMathSymbol{∅}{\mathord}{\eu@Symbols@symfont}{`∅}[\varnothing]
- \eu@DeclareMathSymbol{∆}{\mathord}{\eu@Symbols@symfont}{`∆}[\increment]
- \eu@DeclareMathSymbol{∇}{\mathord}{\eu@Symbols@symfont}{`∇}[\nabla]
- \eu@DeclareMathSymbol{∈}{\mathrel}{\eu@Symbols@symfont}{`∈}[\in]
- \eu@DeclareMathSymbol{∉}{\mathrel}{\eu@Symbols@symfont}{`∉}[\notin]
- \eu@DeclareMathSymbol{∋}{\mathrel}{\eu@Symbols@symfont}{`∋}[\ni]
- \let\owns\ni
- \eu@DeclareMathSymbol{-}{\mathbin}{\eu@Symbols@symfont}{`−}
- \eu@DeclareMathSymbol{−}{\mathbin}{\eu@Symbols@symfont}{`−}[\minus]
- \eu@DeclareMathSymbol{∕}{\mathbin}{\eu@Symbols@symfont}{`∕}[\slash]
- \eu@DeclareMathSymbol{*}{\mathbin}{\eu@Symbols@symfont}{`∗}
- \eu@DeclareMathSymbol{∗}{\mathbin}{\eu@Symbols@symfont}{`∗}[\ast]
- \eu@DeclareMathSymbol{∙}{\mathbin}{\eu@Symbols@symfont}{`∙}[\vysmblkcircle]
- \let\bullet\vysmblkcircle
- \eu@DeclareMathSymbol{∝}{\mathrel}{\eu@Symbols@symfont}{`∝}[\propto]
- \eu@DeclareMathSymbol{∞}{\mathord}{\eu@Symbols@symfont}{`∞}[\infty]
- \eu@DeclareMathSymbol{∟}{\mathord}{\eu@Symbols@symfont}{`∟}[\rightangle]
- \eu@DeclareMathSymbol{∠}{\mathord}{\eu@Symbols@symfont}{`∠}[\angle]
- \eu@DeclareMathSymbol{∧}{\mathbin}{\eu@Symbols@symfont}{`∧}[\wedge]
- \let\land\wedge
- \eu@DeclareMathSymbol{∨}{\mathbin}{\eu@Symbols@symfont}{`∨}[\vee]
- \let\lor\vee
- \eu@DeclareMathSymbol{∩}{\mathbin}{\eu@Symbols@symfont}{`∩}[\cap]
- \eu@DeclareMathSymbol{∪}{\mathbin}{\eu@Symbols@symfont}{`∪}[\cup]
- \eu@DeclareMathSymbol{∴}{\mathord}{\eu@Symbols@symfont}{`∴}[\therefore]
- \eu@DeclareMathSymbol{∼}{\mathrel}{\eu@Symbols@symfont}{`∼}[\sim]
- \eu@DeclareMathSymbol{≅}{\mathrel}{\eu@Symbols@symfont}{`≅}[\cong]
- \eu@DeclareMathSymbol{≈}{\mathrel}{\eu@Symbols@symfont}{`≈}[\approx]
- \eu@DeclareMathSymbol{≠}{\mathrel}{\eu@Symbols@symfont}{`≠}[\neq]
- \let\ne\neq
- \eu@DeclareMathSymbol{≡}{\mathrel}{\eu@Symbols@symfont}{`≡}[\equiv]
- \eu@DeclareMathSymbol{≤}{\mathrel}{\eu@Symbols@symfont}{`≤}[\leq]
- \let\le\leq
- \eu@DeclareMathSymbol{≥}{\mathrel}{\eu@Symbols@symfont}{`≥}[\geq]
- \let\ge\geq
- \eu@DeclareMathSymbol{⊂}{\mathrel}{\eu@Symbols@symfont}{`⊂}[\subset]
- \eu@DeclareMathSymbol{⊃}{\mathrel}{\eu@Symbols@symfont}{`⊃}[\supset]
- \eu@DeclareMathSymbol{⊄}{\mathrel}{\eu@Symbols@symfont}{`⊄}[\nsubset]
- \let\notsubset\nsubset
- \eu@DeclareMathSymbol{⊆}{\mathrel}{\eu@Symbols@symfont}{`⊆}[\subseteq]
- \eu@DeclareMathSymbol{⊇}{\mathrel}{\eu@Symbols@symfont}{`⊇}[\supseteq]
- \eu@DeclareMathSymbol{⊕}{\mathbin}{\eu@Symbols@symfont}{`⊕}[\oplus]
- \eu@DeclareMathSymbol{⊗}{\mathbin}{\eu@Symbols@symfont}{`⊗}[\otimes]
- \eu@DeclareMathSymbol{⊥}{\mathord}{\eu@Symbols@symfont}{`⊥}[\bot]
- \let\perp\bot
- \eu@DeclareMathSymbol{⋅}{\mathbin}{\eu@Symbols@symfont}{`⋅}[\cdot]
- \iffontchar\font`⋅
- \XeTeXmathchardef\cdotp6\symSmn`⋅
- \fi
- \fontfamily\rmdefault\selectfont}
+ \if@eu@Symbols@
+ \fontfamily\eu@Symbolsmathsfont\selectfont
+ \eu@DeclareMathSymbol{!}{\mathclose}{\eu@Symbols@symfont}{`!}[\exclam]
+ \eu@DeclareMathSymbol{+}{\mathbin}{\eu@Symbols@symfont}{`+}[\plus]
+ \eu@DeclareMathSymbol{,}{\mathpunct}{\eu@Symbols@symfont}{`,}
+ \eu@DeclareMathSymbol{.}{\mathord}{\eu@Symbols@symfont}{`.}
+ \XeTeXmathchardef\ldotp=6\symSmn`.
+ \eu@DeclareMathSymbol{:}{\mathrel}{\eu@Symbols@symfont}{`:}
+ \XeTeXmathchardef\colon=6\symSmn`:
+ \eu@DeclareMathSymbol{;}{\mathpunct}{\eu@Symbols@symfont}{`;}[\semicolon]
+ \eu@DeclareMathSymbol{<}{\mathrel}{\eu@Symbols@symfont}{`<}[\less]
+ \DeclareMathSymbol{=}{\mathrel}{\eu@Symbols@symfont}{`=}
+ \let\equal==
+ \eu@DeclareMathSymbol{>}{\mathrel}{\eu@Symbols@symfont}{`>}[\greater]
+ \eu@DeclareMathSymbol{?}{\mathclose}{\eu@Symbols@symfont}{`?}
+ \eu@DeclareMathSymbol{¬}{\mathord}{\eu@Symbols@symfont}{`¬}[\neg]
+ \let\lnot\neg
+ \eu@DeclareMathSymbol{°}{\mathord}{\eu@Symbols@symfont}{`°}[\degree]
+ \eu@DeclareMathSymbol{±}{\mathbin}{\eu@Symbols@symfont}{`±}[\pm]
+ \eu@DeclareMathSymbol{µ}{\mathord}{\eu@Symbols@symfont}{`µ}[\micro]
+ \eu@DeclareMathSymbol{×}{\mathbin}{\eu@Symbols@symfont}{`×}[\times]
+ \eu@DeclareMathSymbol{÷}{\mathbin}{\eu@Symbols@symfont}{`÷}[\div]
+ \eu@DeclareMathSymbol{∀}{\mathord}{\eu@Symbols@symfont}{`∀}[\forall]
+ \eu@DeclareMathSymbol{∂}{\mathord}{\eu@Symbols@symfont}{`∂}[\partial]
+ \eu@DeclareMathSymbol{∃}{\mathord}{\eu@Symbols@symfont}{`∃}[\exists]
+ \eu@DeclareMathSymbol{∅}{\mathord}{\eu@Symbols@symfont}{`∅}[\varnothing]
+ \eu@DeclareMathSymbol{∆}{\mathord}{\eu@Symbols@symfont}{`∆}[\increment]
+ \eu@DeclareMathSymbol{∇}{\mathord}{\eu@Symbols@symfont}{`∇}[\nabla]
+ \eu@DeclareMathSymbol{∈}{\mathrel}{\eu@Symbols@symfont}{`∈}[\in]
+ \eu@DeclareMathSymbol{∉}{\mathrel}{\eu@Symbols@symfont}{`∉}[\notin]
+ \eu@DeclareMathSymbol{∋}{\mathrel}{\eu@Symbols@symfont}{`∋}[\ni]
+ \let\owns\ni
+ \eu@DeclareMathSymbol{-}{\mathbin}{\eu@Symbols@symfont}{`−}
+ \eu@DeclareMathSymbol{−}{\mathbin}{\eu@Symbols@symfont}{`−}[\minus]
+ \eu@DeclareMathSymbol{∕}{\mathbin}{\eu@Symbols@symfont}{`∕}[\slash]
+ \eu@DeclareMathSymbol{*}{\mathbin}{\eu@Symbols@symfont}{`∗}
+ \eu@DeclareMathSymbol{∗}{\mathbin}{\eu@Symbols@symfont}{`∗}[\ast]
+ \eu@DeclareMathSymbol{∙}{\mathbin}{\eu@Symbols@symfont}{`∙}[\vysmblkcircle]
+ \let\bullet\vysmblkcircle
+ \eu@DeclareMathSymbol{∝}{\mathrel}{\eu@Symbols@symfont}{`∝}[\propto]
+ \eu@DeclareMathSymbol{∞}{\mathord}{\eu@Symbols@symfont}{`∞}[\infty]
+ \eu@DeclareMathSymbol{∟}{\mathord}{\eu@Symbols@symfont}{`∟}[\rightangle]
+ \eu@DeclareMathSymbol{∠}{\mathord}{\eu@Symbols@symfont}{`∠}[\angle]
+ \eu@DeclareMathSymbol{∧}{\mathbin}{\eu@Symbols@symfont}{`∧}[\wedge]
+ \let\land\wedge
+ \eu@DeclareMathSymbol{∨}{\mathbin}{\eu@Symbols@symfont}{`∨}[\vee]
+ \let\lor\vee
+ \eu@DeclareMathSymbol{∩}{\mathbin}{\eu@Symbols@symfont}{`∩}[\cap]
+ \eu@DeclareMathSymbol{∪}{\mathbin}{\eu@Symbols@symfont}{`∪}[\cup]
+ \eu@DeclareMathSymbol{∴}{\mathord}{\eu@Symbols@symfont}{`∴}[\therefore]
+ \eu@DeclareMathSymbol{∼}{\mathrel}{\eu@Symbols@symfont}{`∼}[\sim]
+ \eu@DeclareMathSymbol{≅}{\mathrel}{\eu@Symbols@symfont}{`≅}[\cong]
+ \eu@DeclareMathSymbol{≈}{\mathrel}{\eu@Symbols@symfont}{`≈}[\approx]
+ \eu@DeclareMathSymbol{≠}{\mathrel}{\eu@Symbols@symfont}{`≠}[\neq]
+ \let\ne\neq
+ \eu@DeclareMathSymbol{≡}{\mathrel}{\eu@Symbols@symfont}{`≡}[\equiv]
+ \eu@DeclareMathSymbol{≤}{\mathrel}{\eu@Symbols@symfont}{`≤}[\leq]
+ \let\le\leq
+ \eu@DeclareMathSymbol{≥}{\mathrel}{\eu@Symbols@symfont}{`≥}[\geq]
+ \let\ge\geq
+ \eu@DeclareMathSymbol{⊂}{\mathrel}{\eu@Symbols@symfont}{`⊂}[\subset]
+ \eu@DeclareMathSymbol{⊃}{\mathrel}{\eu@Symbols@symfont}{`⊃}[\supset]
+ \eu@DeclareMathSymbol{⊄}{\mathrel}{\eu@Symbols@symfont}{`⊄}[\nsubset]
+ \let\notsubset\nsubset
+ \eu@DeclareMathSymbol{⊆}{\mathrel}{\eu@Symbols@symfont}{`⊆}[\subseteq]
+ \eu@DeclareMathSymbol{⊇}{\mathrel}{\eu@Symbols@symfont}{`⊇}[\supseteq]
+ \eu@DeclareMathSymbol{⊕}{\mathbin}{\eu@Symbols@symfont}{`⊕}[\oplus]
+ \eu@DeclareMathSymbol{⊗}{\mathbin}{\eu@Symbols@symfont}{`⊗}[\otimes]
+ \eu@DeclareMathSymbol{⊥}{\mathord}{\eu@Symbols@symfont}{`⊥}[\bot]
+ \let\perp\bot
+ \eu@DeclareMathSymbol{⋅}{\mathbin}{\eu@Symbols@symfont}{`⋅}[\cdot]
+ \XeTeXmathchardef\cdotp=6\symSmn`⋅
+ \fi}
% \end{macrocode}
-% \end{macro}
-% \subsection{Finishing}
-% \revertmonofont The commands that declare each symbol are done |\AtBeginDocument|.
+% The main work.
% \begin{macrocode}
\AtBeginDocument{
- \if@eu@amsmathloaded\else
- \eu@isloaded[%
- \PackageError{mathspec}%
- {Package amsmath must be loaded before mathspec}{}]{amsmath}
+ \if@eu@amsmathloaded@\else
+ \eu@isloaded[\PackageError{mathspec}{Package amsmath must be loaded before mathspec}{}]{amsmath}
\fi
\eu@DeclareFonts
- \eu@DeclareDigits
- \if@eu@Latinmathsfontspecified
- \ifnum\eu@@LatinUppercase@value<2
- \eu@DeclareLatinUppercase
- \fi
- \ifnum\eu@@LatinLowercase@value<2
- \eu@DeclareLatinLowercase
- \fi
- \fi
- \if@eu@Greekmathsfontspecified
- \ifnum\eu@@GreekUppercase@value<2
- \eu@DeclareGreekUppercase
- \fi
- \ifnum\eu@@GreekLowercase@value<2
- \eu@DeclareGreekLowercase
- \fi
- \fi
- \if@eu@Symbolsmathsfontspecified
- \eu@DeclareSymbols
- \fi
- }
+ \eu@ifnot@plaindigits{\eu@DeclareDigits}
+ \eu@DeclareLatinUppercase
+ \eu@DeclareLatinLowercase
+ \eu@DeclareGreekUppercase
+ \eu@DeclareGreekLowercase
+ \eu@DeclareSymbols
+ \eu@if@varforms{\eu@VarForms}
+ \eu@ifset@mathrm{
+ \DeclareMathAlphabet{\mathrm}{EU1}{\eu@mathrm}{m}{n}
+ \SetMathAlphabet{\mathrm}{bold}{EU1}{\eu@mathrm}{bx}{n}
+ \DeclareMathAlphabet{\mathit}{EU1}{\eu@mathrm}{m}{it}
+ \DeclareMathAlphabet{\mathbf}{EU1}{\eu@mathrm}{bx}{\eu@mathbf@shape}
+ \SetMathAlphabet{\mathit}{bold}{EU1}{\eu@mathrm}{bx}{it}
+ \@ifundefined{symLmn}{\relax}{\def\operator@font{\mathgroup\symLmn}}}
+ \eu@ifset@mathcal{
+ \DeclareMathAlphabet{\mathcal}{EU1}{\eu@mathcal}{\eu@mathcal@series}{\eu@mathcal@shape}}
+ \eu@ifset@mathsf{
+ \DeclareMathAlphabet{\mathsf}{EU1}{\eu@mathsf}{m}{n}
+ \SetMathAlphabet{\mathsf}{bold}{EU1}{\eu@mathsf}{bx}{n}}
+ \eu@ifset@mathtt{
+ \DeclareMathAlphabet{\mathtt}{EU1}{\eu@mathtt}{m}{n}}
+ \eu@ifset@mathfrak{
+ \DeclareMathAlphabet{\mathfrak}{EU1}{\eu@mathfrak}{\eu@mathfrak@series}{n}}
+ \eu@ifset@mathbb{
+ \DeclareMathAlphabet{\mathbb}{EU1}{\eu@mathbb}{\eu@mathbb@series}{n}}
+ \fontfamily\rmdefault\selectfont
+ \let\DeclareMathSymbol\LaTeXe@DeclareMathSymbol}
% \end{macrocode}
+% \iffalse
+%<*package>
+% \fi
% \Finale
-\endinput \ No newline at end of file
+% \typeout{*********************************************************}
+% \typeout{*}
+% \typeout{* To finish the installation you have to move the}
+% \typeout{* following file into a directory searched by TeX:}
+% \typeout{*}
+% \typeout{* \space\space mathspec.sty}
+% \typeout{*}
+% \typeout{* To produce the documentation run the file mathspec.dtx}
+% \typeout{* through XeLaTeX.}
+% \typeout{*}
+% \typeout{* Happy XeTeXing!}
+% \typeout{*********************************************************}
+\endinput
diff --git a/Master/texmf-dist/source/xelatex/mathspec/mathspec.ins b/Master/texmf-dist/source/xelatex/mathspec/mathspec.ins
index d62c60a6afa..1083e8db6f7 100644
--- a/Master/texmf-dist/source/xelatex/mathspec/mathspec.ins
+++ b/Master/texmf-dist/source/xelatex/mathspec/mathspec.ins
@@ -1,58 +1,49 @@
-%% Copyright Andrew Gilbert Moschou 2008
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3c
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-%
-% http://www.latex-project.org/lppl.txt
-%
-% and version 1.3c or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Andrew Gilbert Moschou.
-%
-% This work consists of the files mathspec.dtx and mathspec.ins
-% and the derived file mathspec.sty.
+%%
+%% This is file `mathspec.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% mathspec.dtx (with options: `batchfile')
+%%
+%% This is a generated file.
+%%
+%% © Andrew Gilbert Moschou
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. The latest version of this license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all recent distributions of
+%% LaTeX.
+%%
\input docstrip.tex
\keepsilent
-
\usedir{tex/xelatex/mathspec}
-
\preamble
This is a generated file.
-Copyright Andrew Gilbert Moschou 2008
+© Andrew Gilbert Moschou
-This work may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3c
-of this license or (at your option) any later version.
-The latest version of this license is in
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3c of this license or (at your option) any later
+version. The latest version of this license is in:
http://www.latex-project.org/lppl.txt
-
-and version 1.3c or later is part of all distributions of LaTeX
-version 2005/12/01 or later.
-\endpreamble
+and version 1.3c or later is part of all recent distributions of
+LaTeX.
+\endpreamble
+\askforoverwritefalse
\generate{\file{mathspec.sty}{\from{mathspec.dtx}{package}}}
-
-\Msg{*********************************************************}
-\Msg{*}
-\Msg{* To finish the installation you have to move the}
-\Msg{* following file into a directory searched by TeX:}
-\Msg{*}
-\Msg{* \space\space mathspec.sty}
-\Msg{*}
-\Msg{* To produce the documentation run the file mathspec.dtx}
-\Msg{* through XeLaTeX.}
-\Msg{*}
-\Msg{* Happy XeTeXing!}
-\Msg{*********************************************************}
-
\endbatchfile
+\endinput
+%%
+%% End of file `mathspec.ins'.