% \iffalse meta-comment % Time-stamp: <06-02-2011 23:43:34 CET JF> % File `mathastext.dtx' % % Copyright (C) 2011 by Jean-Francois Burnol % % Please report errors to jfbu at free . fr % Illustrative examples available at % http://jf.burnol.free.fr/mathastext.html % % This file be distributed and/or modified under the % conditions of the LaTeX Project Public License, % either version 1.3 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.3 or later is part of all distributions of % LaTeX version 2003/12/01 or later. % \fi % \iffalse %<*dtx> \ProvidesFile{mathastext.dtx} [2011/02/06 1.11 Use the text font in simple mathematics] % % %<*driver> \documentclass[a4paper]{ltxdoc} \setlength{\topmargin}{0pt} \setlength{\headsep}{12pt} \setlength{\headheight}{10pt} \setlength{\textheight}{600pt} \setlength{\footskip}{34pt} \setlength{\textwidth}{360pt} \setlength{\oddsidemargin}{46pt} \setlength{\marginparwidth}{100pt} %% glyphs from the Symbol font \DeclareSymbolFont{mtpsymbol}{U}{psy}{m}{n} \makeatletter \DeclareFontFamily{U}{psy}{} \DeclareFontShape{U}{psy}{m}{n}{<-> psyr}{} \let\prod\undefined \DeclareMathSymbol{\prod}{\mathop}{mtpsymbol}{213} \let\sum\undefined \DeclareMathSymbol{\sum}{\mathop}{mtpsymbol}{229} \DeclareMathSymbol{\mt@implies}{\mathrel}{mtpsymbol}{222} \DeclareRobustCommand{\implies}{\;\mt@implies\;} \DeclareMathSymbol{\mt@impliedby}{\mathrel}{mtpsymbol}{220} \DeclareRobustCommand{\impliedby}{\;\mt@impliedby\;} \DeclareRobustCommand{\iff}{\;\mt@impliedby\mathrel{\mkern-3mu}\mt@implies\;} \DeclareMathSymbol{\mt@iff}{\mathrel}{mtpsymbol}{219} \DeclareRobustCommand{\shortiff}{\;\mt@iff\;} \DeclareMathSymbol{\mt@to}{\mathrel}{mtpsymbol}{174} \DeclareMathSymbol{\mt@trait}{\mathrel}{mtpsymbol}{190} \DeclareRobustCommand\to{\mt@to} \DeclareRobustCommand\longto{\mkern2mu\mt@trait\mathrel{\mkern-10mu}\mt@to} \DeclareRobustCommand\mapsto{\mapstochar\mathrel{\mkern0.2mu}\mt@to} \DeclareRobustCommand\longmapsto{% \mapstochar\mathrel{\mkern2mu}\mt@trait\mathrel{\mkern-10mu}\mt@to} \makeatother %% \DeclareMathSymbol{\aleph}{\mathord}{mtpsymbol}{192} \DeclareMathSymbol{\inftypsy}{\mathord}{mtpsymbol}{165} \DeclareMathSymbol{\emptyset}{\mathord}{mtpsymbol}{198} \let\varnothing\emptyset \DeclareMathSymbol{\nabla}{\mathord}{mtpsymbol}{209} \DeclareMathSymbol{\surd}{\mathop}{mtpsymbol}{214} \let\angle\undefined \DeclareMathSymbol{\angle}{\mathord}{mtpsymbol}{208} \DeclareMathSymbol{\forall}{\mathord}{mtpsymbol}{34} \DeclareMathSymbol{\exists}{\mathord}{mtpsymbol}{36} \DeclareMathSymbol{\neg}{\mathord}{mtpsymbol}{216} \DeclareMathSymbol{\clubsuit}{\mathord}{mtpsymbol}{167} \DeclareMathSymbol{\diamondsuit}{\mathord}{mtpsymbol}{168} \DeclareMathSymbol{\heartsuit}{\mathord}{mtpsymbol}{169} \DeclareMathSymbol{\spadesuit}{\mathord}{mtpsymbol}{170} \DeclareMathSymbol{\smallint}{\mathop}{mtpsymbol}{242} \DeclareMathSymbol{\wedge}{\mathbin}{mtpsymbol}{217} \DeclareMathSymbol{\vee}{\mathbin}{mtpsymbol}{218} \DeclareMathSymbol{\cap}{\mathbin}{mtpsymbol}{199} \DeclareMathSymbol{\cup}{\mathbin}{mtpsymbol}{200} \DeclareMathSymbol{\bullet}{\mathbin}{mtpsymbol}{183} \DeclareMathSymbol{\div}{\mathbin}{mtpsymbol}{184} \DeclareMathSymbol{\otimes}{\mathbin}{mtpsymbol}{196} \DeclareMathSymbol{\oplus}{\mathbin}{mtpsymbol}{197} \DeclareMathSymbol{\pm}{\mathbin}{mtpsymbol}{177} \DeclareMathSymbol{\ast}{\mathbin}{mtpsymbol}{42} \DeclareMathSymbol{\times}{\mathbin}{mtpsymbol}{180} \DeclareMathSymbol{\proptopsy}{\mathrel}{mtpsymbol}{181} \DeclareMathSymbol{\mid}{\mathrel}{mtpsymbol}{124} \DeclareMathSymbol{\leq}{\mathrel}{mtpsymbol}{163} \DeclareMathSymbol{\geq}{\mathrel}{mtpsymbol}{179} \DeclareMathSymbol{\approx}{\mathrel}{mtpsymbol}{187} \DeclareMathSymbol{\supset}{\mathrel}{mtpsymbol}{201} \DeclareMathSymbol{\subset}{\mathrel}{mtpsymbol}{204} \DeclareMathSymbol{\supseteq}{\mathrel}{mtpsymbol}{202} \DeclareMathSymbol{\subseteq}{\mathrel}{mtpsymbol}{205} \DeclareMathSymbol{\in}{\mathrel}{mtpsymbol}{206} \DeclareMathSymbol{\sim}{\mathrel}{mtpsymbol}{126} \let\cong\undefined \DeclareMathSymbol{\cong}{\mathrel}{mtpsymbol}{64} \DeclareMathSymbol{\perp}{\mathrel}{mtpsymbol}{94} \DeclareMathSymbol{\equiv}{\mathrel}{mtpsymbol}{186} \let\notin\undefined \DeclareMathSymbol{\notin}{\mathrel}{mtpsymbol}{207} \DeclareMathDelimiter{\rangle} {\mathclose}{mtpsymbol}{241}{largesymbols}{"0B} \DeclareMathDelimiter{\langle} {\mathopen}{mtpsymbol}{225}{largesymbols}{"0A} \DeclareMathSymbol{\Re}{\mathord}{mtpsymbol}{"C2} \DeclareMathSymbol{\Im}{\mathord}{mtpsymbol}{"C1} \DeclareMathSymbol{\DotTriangle}{\mathord}{mtpsymbol}{92} %\RecordChanges %\OnlyDescription \begin{document} \DocInput{mathastext.dtx} \end{document} % % \fi % \changes{1.11}{2011/02/06}{ % * bugs from version 1.1 have been fixed. % * Among them the non correct behavior when % eulergreek and one of the symbol options were used % at the same time. % * Also the macro \cs{Mathastext} did not % contrarily to what was said in the docs pick up % the font defaults at the time of it being used in % the preamble. % * the endash option provoked an error when used % with XeTeX or LuaTeX. % * for brevity sake long macro names starting with % \cs{Mathastext\cdots} now exist in the form % \cs{MT\cdots} % * the |endash| option is made default, as well as the % |alldelims| option. A new |symboldelimiters| option % specifies to use the Symbol font for characters others % then letters and digits. % * the \cs{fouriervec} command must be explicitely % requested by the |fouriervec| option % * the command \cs{Mathastext} now accepts an optional % argument which, if present, makes \cs{Mathastext} acts % as \cs{MathastextDeclareVersion} with the current font % defaults, the optional argument giving the name of the % version. This mechanism allows to use |mathastext| with % unicode fonts (XeTeX or LuaTeX with |fontspec|) % * |mathastext| is more clever for the dotless i and j % and the hbar with respect to encoding problems; and it % knows also their Unicode locations. % } % % \changes{1.1}{2011/02/01}{ % * option |italic|: this is the main change for the user. Internally we now % have two distinct fonts, however they differ only in shape. % * the mechanism of math versions is extended to accomodate this: the % macros \cs{MathastextWillUse} and \cs{MathastextDeclareVersion} now % accept an optional argument for specifying the letters' shape % * |frenchmath| sets the uppercase Latin letters nevertheless in the % digits font % * \cs{mathnormal}, \cs{mathrm}, \cs{mathbf} work in the same way as in % standard \LaTeX{}, but with the |mathastext| font. But I do nothing % with the other default alphabet changing commands. % * the minus sign can be represented as an en-dash. This seems to be clever % enough to accomodate all 8bit encodings, not limited to OT1 or T1. % * the |noplusnominus| option is split into two % * I change the way the encoding is chosen for the math accents: I use the % default encoding at the time of loading. So there is nothing more in the % code at AtBeginDocument for this. I do not know an automatic way to go % from the encoding to the accent slots, and I did not want to manually % incorporate here all possible or at least many encodings, so basically % only OT1 and T1 are ok. Default to OT1. Of course in case on more than one % math versions, they should have the same encoding for everything to work % everywhere. % * same change for \cs{imath}: but defaults to T1. % * some attention devoted to |hbar|. Works ok, or at least reasonably with % the fonts I tested. Adjusts to whether or not the |italic| option was used. % * |defaultvec| deprecated, rather we now have \cs{fouriervec} command to % access the vec accent from the Fourier font. % * new alphabet commands \cs{mathnormalbold}, \cs{MathEulerBold}, and % \cs{MathEuler} and \cs{MathPSymbol} have new names. % * names for the capital Greek letters which look like their Latin versions. % * bug fixed: the character slot for \cs{Xi} in the Symbol font was wrong. % **** limitations: % * the \cs{pmvec} accent will not change its size when % used in subscripts or exponents % * now that internally we have two fonts for letters and % digits they could be entirely unrelated, it is just a % question of providing the user macros to pass the info to % the package, and to duplicate some variables. As this % goes really against the initial design goals, and adds % complications, I did not do it.} % % \changes{1.0}{2011/01/25}{Initial version.} % % \GetFileInfo{mathastext.dtx} % % \begin{center} % {\Large The \texttt{mathastext} package}\\ % Jean-Fran\c cois \textsc{Burnol}\\ % \texttt{jfbu at free dot fr} % \end{center} % % \begin{abstract} % The |mathastext| package\footnote{This document describes |mathastext| % version \fileversion\ (\filedate).} propagates the document {\em text} % font to {\em mathematical} mode, for the letters and digits of the Latin % alphabet and, optionally, some further characters. The idea is to produce % handouts or research papers with a less book-like typography than what is % typical of standard \TeX\ with the Computer Modern fonts. Hopefully, this % will force the reader to concentrate more on the contents ;-). It also % makes it possible (for a document with simple mathematics) to use a quite % arbitrary font without worrying too much that it does not have specially % designed accompanying math fonts. Also, |mathastext| provides a simple % mechanism in order to use many different choices of (text hence, now, % math) fonts in the same document (not that we recommend it!). A final % aspect is that |mathastext| helps sometimes produce smaller PDF files. % % \begin{center} % Further documentation, and examples, are available here:\\ % |http://jf.burnol.free.fr/mathastext.html| % \end{center} % \end{abstract} % % \section{Description of what the package does} % % \subsection{Motivation} % % |mathastext| was conceived as a result of frustration of % distributing to students \TeX-crafted mathematical handouts with % a subsequent realization that not much had made it to a % semi-permanent brain location. So, I forced \LaTeX\ to produce % material as if written on a primitive typewriter, a little bit % like the good old seminar notes of the Cartan and Grothendieck % days. Don't ask me if this helped, I have long since opted for a % positive attitude in life. % % The package |mathastext| is less extreme, but retains % the idea of using inside mathematics the same font as % is used for text for the letters of the Latin % alphabet and the digits:\\ % \centerline{abcdefghijklmnopqrstuvwxyz} % \centerline{ABCDEFGHIJKLMNOPQRSTUVWXYZ} % \centerline{0123456789} By % default the text font will also be used for:\\ % \DeleteShortVerb{\|} % \centerline{!\,?\,*\,,\,.\,:\,;\,+\,\textendash\,=\,(\,)\,[\,]\,/\,\#\,% % \$\,\%\,\&\,$\mathord{<}\,\mathord{>}\,\mathord{|}$\,\{\,\} % and $\backslash$} If the package detects at the time of % being loaded that the default encoding is OT1, it takes % out from the list % $\mathord{<}\,\mathord{>}\,\mathord{|}$\,\{\,\} and % $\backslash$. \MakeShortVerb{\|} The option % |alldelims| can force re-integration in case one uses a % fixed-width OT1 font. % % The commands \cs{mathnormal}, \cs{mathrm} and % \cs{mathbf} are modified but nothing is changed to % \cs{mathit} and the other math alphabet commands which % will use the default math fonts, not the text font. % % A very short list of further glyphs will be also picked % up in or constructed from the text font: the dotless i % and j, the hbar and the math accents. By default the % en-dash \textendash{} is used for the minus sign and % not the hyphen character -. Version |1.11| brings a % better compatibility with a Unicode setting (assuming % that |fontspec| is made use of), but the scope of % |mathastext| does not include directly input % letters with diacritics \'e, \`a, \"o in math % mode. Users of Xe\TeX{} are advised to look at the much % more sophisticated and encompassing |mathspec| package. % % Even when typesetting simple mathematics, some glyphs % may have to be taken from the default math fonts, for % example the prime $\prime$. % % \subsection{The italic option} % % In the initial version |1.0|, the package gave the same % shape to both letters and digits, either the one given % by \cs{shapedefault} at the time of loading the % package, or another one specified by the user, and this % was deliberate. This gives a very uniform look to the % document, so that one has to make an effort and read it % with attention, I explained above why I did this on % purpose. % % Nevertheless, soon after I posted the package to CTAN, I was overwhelmed % by numerous\footnote{this means ``more then one.''} questions\footnote{I % thank in particular Tariq~\textsc{Perwez} and Kevin~\textsc{Klement} for % their kind remarks (chronological order).} on how to have % the letters be in italic shape. % % The version |1.1| provided precisely this feature. The % default is still, as in version |1.0|, for everything to be % in upright shape, but it suffices to pass to the package the % option |italic|. There is now also an option |frenchmath| to % make the uppercase letters nevertheless upright, because this % is the way of traditional French mathematical typography. % % \subsection{Greek letters} % % Regarding the Greek letters: the default (lowercase) % ones from Computer Modern are slanted, hence, if the % |italic| option just mentioned is not made use of, they % will not mix well with upright letters (besides, the % Computer Modern typefaces are very light in comparison % to many text fonts). So there are options to take these % glyphs either from the Euler font or from the % Postscript Symbol font. Both are included in all % \LaTeX{} distributions. Although no package loading is % necessary for the user, nor done internally by % |mathastext|, the file |uzeur.fd| from the |eulervm| % package must be accessible to \LaTeX{} as it provides a % mechanism to scale by an arbitrary factor the Euler % font. For the Postscript Symbol font (which is included % in the basic \LaTeX{} distribution), |mathastext| does % internally what is necessary, so that in both cases % commands are provided so that the user can scale the % font with respect to nominal size. % % Of course, it is also possible to access upright Greek % letters via loading first specific packages providing math % fonts, for example the |fourier| package (with option % `upright'). One just has to make sure to load |mathastext| as % the last one of the font-related packages. % % \subsection{Math versions} % % \LaTeX{} has two math versions (|normal| and |bold|): % |mathastext| provides a straightforward mechanism to define % many more. The encodings of the various |mathastext|-defined versions % can be arbitrary; but as |mathastext| decides at the time % when it is loaded where to look for things like the en-dash, % or the dotless i and j, or the math accents, which are % encoding-dependent, there are obviously some limitations to % the use of these things in more than one math % version. Here is an example of how this goes: % \begin{verbatim} % \usepackage[T1]{fontenc} % \usepackage{mathastext} % % Latin Modern Typewriter Proportional % \MTDeclareVersion{lmvtt}{T1}{lmvtt}{m}{n} % % Baskervald, letters in italics % \MTDeclareVersion[it]{baskervald}{T1}{ybv}{m}{n} % % Bold Helvetica, digits and operator names slanted % % and letters (in math mode only) upright % \MTDeclareVersion[n]{helvetica}{T1}{phv}{b}{sl} % \begin{document} % \MTVersion{helvetica} % Hello $world!$. % \MTVersion[lmvtt]{baskervald} % Here lmvtt but $here\ baskervald$. % \MTVersion{normal} % Default font when loading mathastext, $in\ math\ also$. % \end{document} % \end{verbatim} % Other ways to achieve the same result: % \begin{verbatim} % \usepackage[T1]{fontenc} % \usepackage{mathastext} % \renewcommand{\rmdefault}{lmvtt} % \Mathastext[lmvtt] % \renewcommand{\rmdefault}{ybv} % \MTlettershape{it} % \Mathastext[baskervald] % \renewcommand{\shapedefault}{sl} % \renewcommand{\rmdefault}{phv} % \renewcommand{\mddefault}{b} % \MTlettershape{n} % \Mathastext[helvetica] % \begin{document} % \MTVersion{helvetica} % Hello $world!$. % \MTVersion[lmvtt]{baskervald} % Here lmvtt but $here\ baskervald$. % \MTVersion{normal} % Default font when loading mathastext, $in\ math\ also$. % \end{document} % \end{verbatim} % Unicode encoded fonts can also be accomodated. Here is % an example (a bit schizophrenic) for a Xe\TeX{} or % Lua\LaTeX{} user. Of course |mathastext|'s facilities % are very meager to specify a math font, as basically % they are quasi-limited to a subset of the 32-127 ascii % range:\footnote{see the introduction describing the % initial goals of this package.} the much more powerful % and sophisticated package |mathspec| is recommended to % Xe\TeX{} users. % \begin{verbatim} % \usepackage[no-math]{fontspec} % \setmainfont{comfortaa} % \usepackage{mathastext} % the normal version uses Comfortaa % \setmainfont{TeX Gyre Pagella} % \Mathastext[pagella] % the pagella version uses Pagella % \MTDeclareVersion{times}{T1}{ptm}{m}{n} % % this is a T1-times. Do not try to use this % % command for a Unicode font, use rather the % % \setmainfont command of |fontspec|, % % followed by \Mathastext % \setmainfont{TeX Gyre Schola} % \Mathastext[schola] % and unicode TeX Gyre Schola % \begin{document} % \MTVersion{pagella} % This is in TeX Gyre Pagella $and\ this\ also$ (unicode font). % \MTVersion{times} % Now we are in URW Times, $here\ also$ (T1 encoded font). % \MTVersion[normal]{schola} % Text in Unicode Comfortaa and $math\ in\ Unicode\ Schola$. % \end{document} % \end{verbatim} % % % For basic use one does not need to worry about the purely % optional mechanism of math versions: to use the package, one % only needs loading it (the default font at the time of % loading the package will become the font used in % mathematics). Users of Xe\TeX{} and % Lua\LaTeX{} will need to have loaded the package |fontspec|, % \emph{with option} |no-math|, and \emph{before} |mathastext|. % % \subsection{Main options} % \begin{description} % \item[{\tt italic, frenchmath:}] were described above (new in |1.1|). % \item[{\tt symbolgreek:}] the Greek letters will be taken from the % Postscript Symbol font. % \item[{\tt eulergreek:}] the Greek letters will be taken from the Euler % font. % \item[{\tt symbolmax:}] all characters other than letters and digits will % be taken from the Symbol font. This option also makes a number of % further glyphs available, including some basic mathematical arrows, as % well as the sum and product signs. For documents with very simple needs % in mathematical symbols, the options |symbolmax| (and another one % called |alldelims|) may give in the end a quite smaller PDF file, as % the Computer Modern fonts, or whatever mathematical fonts initially % loaded by packages for use in the document, may well be avoided % altogether. % \item[{\tt defaultmathsizes:}] the package |mathastext| opts for quite big % subscripts (and, copied from the |moresize| package, redefines % \cs{Huge} and defines \cs{HUGE}). Use this option to prevent it from % doing so. % \end{description} % % \subsection{Miscellaneous} % % \begin{description} % \item[the en-dash as minus sign:] % Very often the - character from the text font does % not give a good minus sign. So by default, the % package uses the en-dash sign \textendash{}. In % version |1.11| of the package this should work in all % encodings, including Unicode (it is then assumed that % |fontspec| has been loaded). It is not necessary % anymore to pass the option |endash|, rather there is % |noendash| to deactivate it. % % % \item[hbar:] The definition of \cs{hbar} inherited from % default \LaTeX{} will in our context make use of the % |h| of the current math font (so for us, it is also % the text font, perhaps in italic shape), but the bar % accross the |h| will come from the original default % math font for letters (usually |cmmi|), and % furthermore its placement on the |h| can be % odd-looking. So we redefine \cs{hbar} to use only the % text font (and this will be aware of the |italic| % option). Our construction does not always give an % optimal result (and is limited to OT1 and T1 % encodings), so an option |nohbar| deactivates % it. There is no \cs{hslash} provided by the package, % though. With version |1.11| and a Unicode font the % package tries to get the \cs{hbar} directly as a % glyph from the font. % % % \item[dotless i and j:] By default the package redefines % \cs{i} and \cs{j} to give the dotless i and j (if it % exists at all), \emph{also in math mode,} in the text % font. Will overwrite the default commands \cs{imath} % and \cs{jmath}. In version |1.11| of the package this % should work in all encodings, including Unicode (it % is then assumed that |fontspec| has been loaded, and % of course that the glyphs are indeed in the font). % % % \item[vec accent:] The default \cs{vec} accent is not % appropriate for upright letters, so |mathastext| % provides a \cs{fouriervec} which takes its glyph in a % Fourier font, and an Ersatz \cs{pmvec} % which is reasonably good looking on upright letters % and works with the \cs{rightarrow} glyph. Contrarily % to version |1.0|, the default \cs{vec} is not % overwritten with \cs{fouriervec}. And contrarily to % version |1.1|, one now needs to pass the option % |fouriervec| to have the math accent \cs{fouriervec} % defined by the package. % % % \item[math alphabets:] The \cs{mathnormal}, \cs{mathrm}, and \cs{mathbf} are % modified to use the text font (or the arbitrarily % specified font for a math version), and behave as in % standard \LaTeX{}. But we provide a new % \cs{mathnormalbold}, to access the bold letters while % maintaining their italic shape (or whatever shape has % been specified for them) in case of the |italic| % option. Other math alphabet changing commands are % \cs{MathEulerBold}, \cs{MathEuler} and % \cs{MathPSymbol}. Note though that it is not possible % to use too many of such commands in the same % document, due to some limitations of % \LaTeX{}. Declaring them does not seem to be a % problem, and I will welcome any information by % knowledgeable people. % % \item[math accents:] an option |mathaccents| is % provided to pick up the accents in math mode from the % text font, but this is only for either an OT1-compatible or a % T1-encoded font. % % \end{description} % % Regarding the encoding-dependent glyphs: the en-dash, % the dotless i and j, the math accents, the hbar, are % encoding dependent and the relevant decisions are made % by |mathastext| at the time it is loaded. So you can % use math versions with different encodings but, % regarding these characters only those with the same % encoding as the normal math version will display them % correctly. % % \section{Commands} % % \subsection{Preamble-only commands} % Nothing is necessary besides loading |mathastext|, possibly % with some customizing options. The following commands provide % enhancements to the basic use of the package. % \begin{itemize} % \item |\Mathastext|: reinitializes |mathastext| according to the current % defaults of encoding, family, series and shape. % \begin{itemize} % \item It can also be preceded optionally by one or % more of\footnote{these commands exist also with % long names: \texttt{\char92Mathastextencoding}, % etc\dots{} The same applies to the other commands % mentioned in this section.} % |\MTencoding|\marg{enc}, % |\MTfamily|\marg{fam}, % |\MTseries|\marg{ser}, % |\MTshape|\marg{sh}, and, new with version % |1.1|, |\MTlettershape|\marg{sh}. For % example valid values are, respectively, \meta{T1}, % \meta{phv}, \meta{m}, \meta{n}, and \meta{it}: this % is the Helvetica font in T1-encoding, regular % (medium) series, upright shape, and the letters % will be in italic shape. % \item with version |1.11| \cs{Mathastext} accepts an % optional argument, which will serve as a name to % designate the corresponding math version. Without % optional argument \cs{Mathastext} redefines the default % normal and bold versions. This argument, being % optional, must be enclosed within square brackets. % \end{itemize} % \item % |\MTWillUse|\oarg{ltsh}\marg{enc}\marg{fam}\marg{ser}\marg{sh}: % tells |mathastext| to use the font with the % specified encoding, family, series, and shape for % the letters and digits (and all other afflicted % characters) in math mode. The optional argument % \meta{ltsh} specifies a shape for the letters, for % example \cs{itdefault}, or directly \meta{it} or % \meta{sc}. % % \item % |\MTDeclareVersion|\oarg{ltsh}\marg{name}\marg{enc}\marg{fam}\marg{ser}\marg{sh}: % declares that the document will have access to the font % with the specified characteristics, under the version name % \meta{name}. For % example:\\ % \hbox % to\hsize{\hss|\MTDeclareVersion[sc]{palatino}{T1}{ppl}{b}{sl}|\hss} % declares under the name |palatino| a version where % mathematics will be typset using the Palatino font in % T1-encoding, bold, slanted, and the letters will in fact be % in caps and small caps (and bold).\footnote{I do not % especially recommend to use this in real life!} When the % optional argument is absent, and |mathastext| was loaded % with the |italic| option, then the default letter shape % will be |it|,\footnote{more precisely, the shape is the % latest value passed in one of the previously used package % commands to specify the shape of letters, or the \cs{itdefault} % of the time of loading the package.} else letters will % have the same shape as used for digits and operator-names. % \item |\MTboldvariant|\marg{var}: when used before |\Mathastext|, % specifies which bold % (|b|,|sb|,|bx|,\dots) to be used by \cs{mathbf} (and % \cs{boldmath}). Default is the \cs{bfdefault} at the time of % loading |mathastext|. When used before the declaration % of a version, decides the way \cs{mathbf} will act in this version. % \item |\MTEulerScale|\marg{factor}: scales the Euler font by % \meta{factor}. % \item |\MTSymbolScale|\marg{factor}: scales the Symbol font by % \meta{factor}. % \end{itemize} % % \subsection{Body Text and Math commands} % % \begin{itemize} % \item |\MTVersion|\oarg{nametext}\marg{namemath}: in % the absence of the optional argument changes % simultaneously (the behavior changed in version % |1.11|) the text and the math font to be the font % corresponding to the version \meta{namemath}. If % there is an optional argument then the text font will % use \meta{nametext} and the math mode will use \meta{namemath}. To % change only the math font, use the \LaTeX{} command % \cs{mathversion}. % \end{itemize} % All further commands are for math mode only. % \begin{itemize} % \item \cs{hbar}: this is constructed % (in a way compatible with the |italic| option) from % the |h| letter and the \={ } accent from the % |mathastext| font. Note that \cs{mathrm}|{\hbar}| and % \cs{mathbf}|{\hbar}| should work and that \cs{hbar} % does scale in subscripts and exponents. Only for T1 % and OT1 encodings. % \item |\fouriervec|: this is a |\vec| accent taken from the Fourier font; % the |fourier| package need not be loaded. Active only % if option |fouriervec|. % \item |\pmvec|: this provides a poor man \cs{vec} accent command, for % upright letters. It uses the right arrow. Does not change % size in subscripts and exponents. % \item |\Mathnormal|, |\Mathrm|, |\Mathbf|: suitable modifications of the % original \cs{mathnormal}, \cs{mathrm}, \cs{mathbf}. By default, the % originals are also overwritten by the new commands. % \item |\mathnormalbold|: a bold version of \cs{mathnormal}. % \item |\inodot|, |\jnodot|: the corresponding glyphs in % the chosen font for math mode. By default, will % overwrite |\imath| and |\jmath|. With version |1.11| % by default |\i| and |\j| work also in math mode and % give then |\inodot|, resp. |\jnodot|. This should work for % all 8bit-encodings having these glyphs, and % also in Unicode. % \item |\MathEuler|, |\MathEulerBold|: math alphabets to access % all the glyphs of the Euler font, if option |eulergreek| (or % |eulerdigits|) was passed to the package. % \item |\MathPSymbol|: math alphabet to access the Symbol font. % \item Capital Greek letters: macro names \cs{Digamma}, \cs{Alpha}, % \cs{Beta}, \cs{Epsilon}, \cs{Zeta}, \cs{Eta}, \cs{Iota}, \cs{Kappa}, % \cs{Mu}, \cs{Nu}, \cs{Omicron}, \cs{Rho}, \cs{Tau}, \cs{Chi} are % provided for the capital Greek letters which look like their Latin % counterparts. This is not done if the package detects that |\digamma| % is a defined macro, as then it is assumed that a suitable package has % been loaded for Greek letters. Also an \cs{omicron} control sequence is % provided. % \item Miscelleneous mathematical symbols from the % postscript Symbol font are made available (or % replaced) when option |symbolmisc| is passed. They % are \cs{prod}~$\prod$ \cs{sum}~$\sum$ % \cs{implies}~$\implies$ \cs{impliedby}~$\impliedby$ % \cs{iff}~$\iff$, \cs{shortiff}~$\shortiff$ % \cs{to}~$\to$ \cs{longto}~$\longto$ % \cs{mapsto}~$\mapsto$ \cs{longmapsto}~$\longmapsto$, % \cs{aleph}~$\aleph$ \cs{inftypsy}~$\inftypsy$ % \cs{emptyset}~$\emptyset$ \cs{surd}~$\surd$ % \cs{nabla}~$\nabla$, \cs{angle}~$\angle$ % \cs{forall}~$\forall$ \cs{exists}~$\exists$ % \cs{neg}~$\neg$ \cs{clubsuit}~$\clubsuit$, % \cs{diamondsuit}~$\diamondsuit$ % \cs{heartsuit}~$\heartsuit$ % \cs{spadesuit}~$\spadesuit$ % \cs{smallint}~$\smallint$, \cs{wedge}~$\wedge$ % \cs{vee}~$\vee$ \cs{cap}~$\cap$ \cs{cup}~$\cup$ % \cs{bullet}~$\bullet$ \cs{div}~$\div$, % \cs{otimes}~$\otimes$ \cs{oplus}~$\oplus$ % \cs{pm}~$\pm$ \cs{ast}~$\ast$ \cs{times}~$\times$ % \cs{proptopsy}~$\proptopsy$, \cs{mid}~$\mid$ % \cs{leq}~$\leq$ \cs{geq}~$\geq$ \cs{approx}~$\approx$ % \cs{supset}~$\supset$ \cs{subset}~$\subset$, % \cs{supseteq}~$\supseteq$ \cs{subseteq}~$\subseteq$ % \cs{in}~$\in$ \cs{sim}~$\sim$ \cs{cong}~$\cong$ % \cs{perp}~$\perp$, \cs{equiv}~$\equiv$ % \cs{notin}~$\notin$ \cs{langle}~$\langle$ % \cs{rangle}~$\rangle$. And a % \cs{DotTriangle}~$\DotTriangle$ is made available by % option |symbolre| (which overwrites \cs{Re} and % \cs{Im}: $\Re,\Im$). % \end{itemize} % % \section{Complete list of options} % % \begin{itemize} % \item |basic|: only mathastextify letters and digits. % \item |italic|: the letters will default to italic shape in % math mode. % \item |frenchmath|: uppercase Latin letters in the same font as for digits % and operator names. In general this means that they will be upright. % \item |endash|, |emdash|: use the text font en-dash \textendash\ or even % the em-dash \textemdash\ (but this seems crazy) for the minus sign % rather than {}-{}. |endash| option is default for the package. % \item |noendash|: the minus sign will be the - from the % text font, not the en-dash \textendash. % \item |nohbar|: prevents |mathastext| from defining its own % \cs{hbar}. % \item |nolessnomore|: besides % !\,?\,*\,,\,.\,:\,;\,+\,-\,=\,(\,)\,[\,]\,/\,\#\,\$\,\%\,\& % |mathastext| treats also \DeleteShortVerb{\|} % $\mathord{<}\,\mathord{>}\,\mathord{|}$\, \{\,\} and % $\backslash$.\MakeShortVerb{\|} Use this option to not % do it. The option |nolessnomore| is activated by default % in case of OT1-encoding. % \item further excluding options: |noexclam|\ !\,?\ % |noasterisk|\ *\ |nopunct|\ ,\,.\,:\,;\ |noplus|, % |nominus|, |noplusnominus|\ +\,\textendash{} |noequal|\ =\ % |noparenthesis|\, (\,)\,[\,]\,/ \ |nospecials|\ % \#\,\$\,\%\,\& and |nodigits|. % \item |alldelims|: true by default, means that the % characters excluded by |nolessnomore| are % treated. Use this option in case of a mono-width % OT1-encoded font. % \item |symbolgreek|, |symboldigits|: to let Greek letters (digits) use the % Symbol font. % \item |symbolre|: replaces \cs{Re} and \cs{Im} by the % Symbol glyphs $\Re, \Im$ and defines a % \cs{DotTriangle} command ($\DotTriangle$). % \item |symbolmisc|: takes quite a few glyphs, including logical arrows, % product and sum signs from Symbol. They are listed \emph{supra}.. You may % also consider \cs{renewcommand}|{\int}{\smallint}| to maximize still more % the use of the Symbol font. % \item |symboldelimiters|: the characters apart from % letters and digits will be taken from the Symbol font. % \item |symbol|: combines |symbolgreek|, |symbolre|, and |symbolmisc|. % \item |symbolmax|: combines |symbol| and |symboldelimiters|. % \item |eulergreek|, |eulerdigits|: to let Greek letters (digits) use the % Euler font. % \item |selfGreek|: this is for a font which has the capital Greek % letters at the OT1 slot positions. % \item |mathaccents|: use the text font also for the math % accents. As in vanilla \LaTeX{}, they are taken from the font % for the digits and \cs{log}-like names. Obey the alphabet % changing commands. Will work only for T1 or OT1-compatible encodings. % \item |defaultrm|, |defaultbf|, |defaulnormal|: do not % overwrite the default \cs{mathrm}, \cs{mathbf}, \cs{mathnormal}. % \item |defaultimath|: do not overwrite \cs{imath} and % \cs{jmath}, do not extend \cs{i} and \cs{j} to math mode use. % \item |defaultmathsizes|: do not change the \LaTeX{} defaults. % \item |fouriervec|: provides a \cs{fouriervec} command. % \end{itemize} % % \StopEventually{} % % \section{Commented source code} % % % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesFile{mathastext.sty} [2011/02/06 1.11 Use the text font in simple mathematics] % \end{macrocode} % We turn off the official loggings as we intend to write our owns % \begin{macrocode} \def\mt@font@info@off{ \let\m@stext@info\@font@info \let\m@stext@warning\@font@warning \let\@font@info\@gobble \let\@font@warning\@gobble} \def\mt@font@info@on{ \let\@font@info\m@stext@info \let\@font@warning\m@stext@warning} \mt@font@info@off % \end{macrocode} % \begin{macro}{\m@stextenc} % \begin{macro}{\m@stextfam} % \begin{macro}{\m@stextser} % \begin{macro}{\m@stextsh} % \begin{macro}{\m@stextbold} % \begin{macro}{\m@stextshletter} % Internal variables. Will be redefined with \cs{def} later. % \begin{macrocode} \edef\m@stextenc{\encodingdefault} \edef\m@stextfam{\familydefault} \edef\m@stextser{\seriesdefault} \edef\m@stextsh{\shapedefault} \edef\m@stextbold{\bfdefault} \edef\m@stextshletter{\shapedefault} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % A number of ifs for treating (some among) the options % \begin{macrocode} \newif\ifmt@need@euler\mt@need@eulerfalse \newif\ifmt@need@symbol\mt@need@symbolfalse \newif\ifmt@defaultnormal\mt@defaultnormalfalse \newif\ifmt@defaultrm\mt@defaultrmfalse \newif\ifmt@defaultbf\mt@defaultbffalse \newif\ifmt@defaultsizes\mt@defaultsizesfalse \newif\ifmt@twelve\mt@twelvefalse %% new behavior in v1.11: \newif\ifmt@endash\mt@endashtrue \newif\ifmt@emdash\mt@emdashfalse \def\mt@oti{OT1}\def\mt@ti{T1} \def\mt@eui{EU1}\def\mt@euii{EU2} \newif\ifmt@alldelims \ifx\mt@oti\m@stextenc\mt@alldelimsfalse\else\mt@alldelimstrue\fi % \end{macrocode} % The options: % \begin{macrocode} %% new or modified in v1.11: \DeclareOption{fouriervec}{\let\mt@fouriervec\@empty} \DeclareOption{nolessnomore}{\mt@alldelimsfalse} \DeclareOption{endash}{\mt@endashtrue} \DeclareOption{emdash}{\mt@emdashtrue} \DeclareOption{noendash}{\mt@endashfalse} \DeclareOption{symboldelimiters}{\mt@need@symboltrue \let\mt@symboldelimiters\@empty} %% new in v1.1: \DeclareOption{italic}{\let\mt@italic\@empty\edef\m@stextshletter{\itdefault}} \DeclareOption{frenchmath}{\let\mt@frenchmath\@empty} \DeclareOption{noplus}{\let\mtno@plus\@empty} \DeclareOption{nominus}{\let\mtno@minus\@empty} \DeclareOption{nohbar}{\let\mtno@hbar\@empty} %% \DeclareOption{noparenthesis}{\let\mtno@paren\@empty} \DeclareOption{nopunctuation}{\let\mtno@punct\@empty} \DeclareOption{noplusnominus}{\ExecuteOptions{noplus,nominus}} \DeclareOption{noequal}{\let\mtno@equal\@empty} \DeclareOption{noexclam}{\let\mtno@exclam\@empty} \DeclareOption{noasterisk}{\let\mtno@ast\@empty} \DeclareOption{nospecials}{\let\mtno@specials\@empty} \DeclareOption{basic}{\ExecuteOptions{noparenthesis,% nopunctuation,noplusnominus,noequal,noexclam,nospecials}} \DeclareOption{nodigits}{\let\mtno@digits\@empty} \DeclareOption{defaultimath}{\let\mt@defaultimath\@empty} \DeclareOption{alldelims}{\mt@alldelimstrue} \DeclareOption{mathaccents}{\let\mt@mathaccents\@empty} \DeclareOption{selfGreek}{\let\mt@selfGreek\@empty} \DeclareOption{selfgreek}{\let\mt@selfGreek\@empty} \DeclareOption{symboldigits}{\mt@need@symboltrue \let\mt@symboldigits\@empty} \DeclareOption{symbolgreek}{\mt@need@symboltrue \let\mt@symbolgreek\@empty} \DeclareOption{symbolre}{\mt@need@symboltrue \let\mt@symbolre\@empty} \DeclareOption{symbolmisc}{\mt@need@symboltrue \let\mt@symbolmisc\@empty} \DeclareOption{symbol}{\ExecuteOptions{symbolgreek,symbolmisc,symbolre}} \DeclareOption{symbolmax}{\ExecuteOptions{symbol,symboldelimiters}} \DeclareOption{eulerdigits}{\mt@need@eulertrue\let\mt@eulerdigits\@empty} \DeclareOption{eulergreek}{\mt@need@eulertrue\let\mt@eulergreek\@empty} \DeclareOption{defaultnormal}{\mt@defaultnormaltrue} \DeclareOption{defaultrm}{\mt@defaultrmtrue} \DeclareOption{defaultbf}{\mt@defaultbftrue} % \end{macrocode} % We intend to change the default script and scriptscript sizes, and also to % declare a \cs{HUGE} size and modify the \cs{Huge} one at 12pt (taken from % the |moresize| package). So we have an option to maintain default situation. % \begin{macrocode} \DeclareOption{defaultmathsizes}{\mt@defaultsizestrue} \DeclareOption{12pt}{\mt@twelvetrue} \DeclareOption*{\PackageWarning{mathastext}{Unknown option `\CurrentOption'}} \ProcessOptions\relax % \end{macrocode} %% % \begin{macro}{\pmvec} % Definition of a poor man version of the \cs{vec} accent % \begin{macrocode} \DeclareRobustCommand\pmvec[1]{\mathord{\stackrel{\raisebox{-.5ex}% {\tiny\boldmath$\mathord{\rightarrow}$}}{{}#1}}} % \end{macrocode} % \end{macro} % \begin{macro}{\fouriervec} % The glyph is taken from the Fourier font of Michel~\textsc{Bovani}. % \begin{macrocode} \ifx\mt@fouriervec\@empty \DeclareFontEncoding{FML}{}{} \DeclareFontSubstitution{FML}{futm}{m}{it} \DeclareSymbolFont{mtfourierpourvec}{FML}{futm}{m}{it} \SetSymbolFont{mtfourierpourvec}{bold}{FML}{futm}{b}{it} \DeclareMathAccent{\fouriervec}{\mathord}{mtfourierpourvec}{"7E} \fi % \end{macrocode} % \end{macro} % \begin{macro}{mtoperatorfont} % Declaration of the current default font as our math font. % \begin{macrocode} \DeclareSymbolFont{mtoperatorfont} {\m@stextenc}{\m@stextfam}{\m@stextser}{\m@stextsh} % \end{macrocode} % \end{macro} % \begin{macro}{mtletterfont} % In version 1.1, we add the possibility to mimick the standard % behavior, that is to have italic letters and upright % digits. Thanks to Tariq~\textsc{Perwez} and % Kevin~\textsc{Klement} who asked for such a feature. % \begin{macrocode} \DeclareSymbolFont{mtletterfont} {\m@stextenc}{\m@stextfam}{\m@stextser}{\m@stextshletter} \DeclareSymbolFontAlphabet{\Mathnormal}{mtletterfont} \DeclareSymbolFontAlphabet{\Mathrm}{mtoperatorfont} % \end{macrocode} % Our internal variables redefined without expansion. They will get expanded % inside the \cs{Mathastext} macro. % \begin{macrocode} \def\m@stextenc{\encodingdefault} \def\m@stextfam{\familydefault} \def\m@stextser{\seriesdefault} \def\m@stextsh{\shapedefault} \def\m@stextbold{\bfdefault} \def\m@stextshletter{\shapedefault} \ifx\mt@italic\@empty\def\m@stextshletter{\itdefault}\fi % \end{macrocode} % \end{macro} % \begin{macro}{mteulervm} % \begin{macro}{\MathEuler} % In case we need the Euler font, we declare it here. It will use % |uzeur.fd| from the |eulervm| package of Walter~\textsc{Schmidt} % \begin{macrocode} \ifmt@need@euler \DeclareSymbolFont{mteulervm}{U}{zeur}{m}{n} \DeclareSymbolFontAlphabet{\MathEuler}{mteulervm} %% \SetSymbolFont{mteulervm}{bold}{U}{zeur}{\m@stextbold}{n} \fi \newcommand\MTEulerScale[1]{\edef\zeu@Scale{#1}} \let\MathastextEulerScale\MTEulerScale % \end{macrocode} % \end{macro} % \end{macro} % In the end, I moved the bold stuff to \cs{Mathastext} as the user may want % his choice of |boldvariant| to have effect on the Euler font (it is % possible to use \cs{Mathastextboldvariant}|{m}|). % % \LaTeXe{} has a strange initial configuration where the % capital Greek letters are of type |mathalpha|, but the % lower Greek letters of type |mathord|, so that \cs{mathbf} % does not act on them, although lowercase Greek letters and % Latin letters are from the same font. This is because % \cs{mathbf} is set up to be like a bold version of % \cs{mathrm}, and \cs{mathrm} uses the `operators' font, by % default |cmr|, where there are no lowercase greek % letters. This set-up is ok for the Capital Greek letters % which are together with the Latin letters in both |cmmi| % and |cmr|. % % The package eulervm sets also the lowercase Greek letters % to be of type |mathalpha|, the default \cs{mathbf} and % \cs{mathrm} will act wierdly on them, but a new % \cs{mathbold} is defined which will use the bold series of % the Euler roman font, it gives something coherent for % Latin and Greek \emph{lowercase} letters, and this is % possible because the same font contains upright forms for % them all. % % Here in |mathastext|, Latin letters and Greek letters (lower and % upper case) must be assumed to come from two different fonts, as % a result the standard \cs{mathbf} (and \cs{mathrm}) will give % weird results when used for Greek letters. It would be tricky % but not impossible to coerce \cs{mathbf} to do something % reasonable. I posted the method I have in mind to the texhax % mailing list % (|http://tug.org/pipermail/texhax/2011-January/016605.html|) but % at this time |30-01-2011 09:42:27 CET| I decided I would not try % to implement it here. I prefer to respect the default things. % % I follow the simpler idea of the |eulervm| package and % define \cs{MathEuler} and \cs{MathEulerBold} alphabet % commands (the |eulervm| package does this only for the % bold font). % \begin{macro}{mtpsymbol} % \begin{macro}{\MathPSymbol} % In case we need the Symbol font, we declare it here. The macro % \cs{psy@scale} will be used to scale the font (see at the % very end of this file). % \begin{macrocode} \ifmt@need@symbol \def\psy@scale{1} \DeclareSymbolFont{mtpsymbol}{U}{psy}{m}{n} %% \SetSymbolFont{mtpsymbol}{bold}{U}{psy}{\m@stextbold}{n} \DeclareSymbolFontAlphabet{\MathPSymbol}{mtpsymbol} \fi \newcommand\MTSymbolScale[1]{\edef\psy@scale{#1}} \let\MathastextSymbolScale\MTSymbolScale % \end{macrocode} % In v1.0 the math alphabet was called \cs{MathastextSymbol}. I did not % choose the name \cs{MathSymbol} as this name may be % defined somewhere for another thing. % \end{macro} % There is no bold for the postscript Symbol font % distributed with the \LaTeXe{} |psnffs|. In v1.0 I % included some code ready for an eventual bold, one never % knows which might come in an update to the |psnfss| % package, but, if this day arrives, I or someone else shall % simply upgrade the package. % \end{macro} % \begin{macro}{\MTencoding} % \begin{macro}{\MTfamily} % \begin{macro}{\MTseries} % \begin{macro}{\MTshape} % \begin{macro}{\MTboldvariant} % \begin{macro}{\MTlettershape} % We declare some public macros to modify our private internals, and we will % use them also ourself. % % In version 1.1 we add the possibility to have two distinct font shapes for % letters and digits. So in fact we could as well have two really unrelated % fonts but this is really not the spirit of the package, already making % italic letters easy for the user was only made possible by a moment of % weakness of the package author. % % In version 1.11 I fix bugs in the way this was all set % up. I change the macro names for brevity sake. % \begin{macrocode} \DeclareRobustCommand\MTencoding[1]{\def\m@stextenc{#1}} \DeclareRobustCommand\MTfamily[1]{\def\m@stextfam{#1}} \DeclareRobustCommand\MTseries[1]{\def\m@stextser{#1}} \DeclareRobustCommand\MTshape[1]{\def\m@stextsh{#1} \ifx\mt@italic\@empty\else\def\m@stextshletter{#1}\fi} \DeclareRobustCommand\MTboldvariant[1]{\def\m@stextbold{#1}} \DeclareRobustCommand\MTlettershape[1]{\def\m@stextshletter{#1}} \let\Mathastextencoding\MTencoding \let\Mathastextfamily\MTfamily \let\Mathastextseries\MTseries \let\Mathastextshape\MTshape \let\Mathastextboldvariant\MTboldvariant \let\Mathastextlettershape\MTlettershape % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\MTWillUse} % This is a preamble-only command, it can be called more than once, only the % latest call counts. % \begin{macrocode} \DeclareRobustCommand\MTWillUse[5][\@empty]{ \MTencoding{#2} \MTfamily{#3} \MTseries{#4} \MTshape{#5} \ifx\@empty#1 \else %% we check if optional argument was [], this does not detect [ ] \def\mt@empty{}\def\mt@tmp{#1} \ifx\mt@empty\mt@tmp\else\MTlettershape{#1}\fi \fi \Mathastext} \let\MathastextWillUse\MTWillUse % \end{macrocode} % \end{macro} % \begin{macro}{\Mathastext} % The command \cs{Mathastext} can be used anywhere in the preamble and any % number of time, the last one is the one that counts. % % In version 1.1 we have two fonts: they only differ in shape. The % |mtletterfont| is for letters, and the |mtoperatorfont| for digits and % log-like operator names. The default is that both are upright. % \begin{macrocode} \DeclareRobustCommand\Mathastext[1][\@empty]{ \mt@font@info@off \ifx\@empty#1 % no optional argument \edef\mt@encoding@normal{\m@stextenc} \edef\mt@family@normal{\m@stextfam} \edef\mt@series@normal{\m@stextser} \edef\mt@shape@normal{\m@stextsh} \edef\mt@ltshape@normal{\m@stextshletter} \edef\mt@boldvariant@normal{\m@stextbold} \edef\mt@encoding@bold{\m@stextenc} \edef\mt@family@bold{\m@stextfam} \edef\mt@series@bold{\m@stextbold} \edef\mt@shape@bold{\m@stextsh} \edef\mt@ltshape@bold{\m@stextshletter} \edef\mt@boldvariant@bold{\m@stextbold} %% \SetSymbolFont{mtletterfont}{normal}{\mt@encoding@normal} {\mt@family@normal} {\mt@series@normal} {\mt@ltshape@normal} \SetSymbolFont{mtletterfont}{bold} {\mt@encoding@bold} {\mt@family@bold} {\mt@series@bold} {\mt@ltshape@bold} \SetSymbolFont{mtoperatorfont}{normal}{\mt@encoding@normal} {\mt@family@normal} {\mt@series@normal} {\mt@shape@normal} \SetSymbolFont{mtoperatorfont}{bold} {\mt@encoding@bold} {\mt@family@bold} {\mt@series@bold} {\mt@shape@bold} % \end{macrocode} % \begin{macro}{\Mathbf} % We follow the standard \LaTeX{} behavior for \cs{mathbf}, which is to pick up % the bold series of the roman font (digits and operator names). % \begin{macrocode} \DeclareMathAlphabet{\Mathbf} {\mt@encoding@bold} {\mt@family@bold} {\mt@series@bold} {\mt@shape@bold} % \end{macrocode} % \end{macro} % \begin{macro}{\mathnormalbold} % We add a new Alphabet changing macro to standard \LaTeX{} % \begin{macrocode} \DeclareMathAlphabet{\mathnormalbold} {\mt@encoding@bold} {\mt@family@bold} {\mt@series@bold} {\mt@ltshape@bold} % \end{macrocode} % \end{macro} % \begin{macro}{\MathEulerBold} % We define it here as we leave open the possibility to deactivate it via % using \cs{Mathastextboldvariant}|{m}|. % \begin{macrocode} \ifmt@need@euler \SetSymbolFont{mteulervm}{bold}{U}{zeur}{\mt@boldvariant@normal}{n} \DeclareMathAlphabet{\MathEulerBold}{U}{zeur}{\mt@boldvariant@normal}{n} \fi % \end{macrocode} % \end{macro} % \begin{macrocode} \ifmt@need@symbol\SetSymbolFont{mtpsymbol}{bold} {U}{psy}{\mt@boldvariant@normal}{n}\fi \typeout{** Latin letters in math versions normal (resp. bold) are now\MessageBreak ** set up to use the fonts \mt@encoding@normal/\mt@family@normal/\mt@series@normal% (\mt@boldvariant@normal)/\mt@ltshape@normal} \ifx\mtno@digits\@empty\else \typeout{** Other characters (digits, ...) and \protect\log-like names will be\MessageBreak ** typeset with the \expandafter`\mt@shape@normal' shape.} \fi \else % optional argument, then we rather do DeclareVersion \edef\mt@tmp{#1}\def\mt@empty{} \ifx\mt@tmp\mt@empty \Mathastext % no infinite loop! \else \MTDeclareVersion[\m@stextshletter]{#1} {\m@stextenc}{\m@stextfam}{\m@stextser}{\m@stextsh} \fi \fi \mt@font@info@on } % \end{macrocode} % \end{macro} % \begin{macro}{\MTDeclareVersion} % The \cs{MTDeclareVersion} command is to be used in the preamble to % declare a math version. I refrained from providing a more complicated one % which would also specify a choice of series for the Euler and Symbol font: % anyhow Symbol only has the medium series, and Euler has medium and bold, so % what is lacking is the possibility to create a version with a bold % Euler. There is already one such version: the default |bold| one. And there % is always the possibility to add to the preamble % \cs{SetSymbolFont}|{mteulervm}||{version}||{U}{zeur}{bx}{n}| if one % wants to have a math version with bold Euler characters. % % For version 1.1 we add an optional parameter specifying the shape to be used % for letters: most users will want `it' (thus going contrary to the % philosophy which motivated me writing this package!). If the package option % `italic' was passed, `it' is the default. % \begin{macrocode} \DeclareRobustCommand\MTDeclareVersion[6][\@empty]{ \mt@font@info@off \edef\mt@tmp{#2} \DeclareMathVersion{\mt@tmp} \expandafter\edef\csname mt@encoding@\mt@tmp\endcsname{#3} \expandafter\edef\csname mt@family@\mt@tmp\endcsname{#4} \expandafter\edef\csname mt@series@\mt@tmp\endcsname{#5} \expandafter\edef\csname mt@shape@\mt@tmp\endcsname{#6} \expandafter\edef\csname mt@boldvariant@\mt@tmp\endcsname{\m@stextbold} \newif\ifmt@reallynoopt\mt@reallynoopttrue \ifx\@empty#1 \else % we check nevertheless for [] situation, will not work with [ ] \def\mt@@tmp{#1}\def\mt@empty{} \ifx\mt@@tmp\mt@empty\else\mt@reallynooptfalse\fi \fi \ifmt@reallynoopt \ifx\mt@italic\@empty \SetSymbolFont{mtletterfont}{#2}{#3}{#4}{#5}{\m@stextshletter} \typeout{** Latin letters in math version `#2' will use the font #3/#4/#5/\m@stextshletter\MessageBreak ** Other characters (digits, ...) and \protect\log-like names will be in `#6' shape.} \expandafter\def\csname mt@ltshape\mt@tmp\endcsname{\m@stextshletter} \else \SetSymbolFont{mtletterfont}{#2}{#3}{#4}{#5}{#6} \typeout{** Latin letters in math version `#2' will use the fonts #3/#4/#5(\m@stextbold)/#6} \expandafter\edef\csname mt@ltshape\mt@tmp\endcsname{#6} \fi \else \SetSymbolFont{mtletterfont}{#2}{#3}{#4}{#5}{#1} \typeout{** Latin letters in math version `#2' will use the font #3/#4/#5/#1\MessageBreak ** Other characters (digits, ...) and \protect\log-like names will be in `#6' shape.} \expandafter\edef\csname mt@ltshape\mt@tmp\endcsname{#1} \fi \SetMathAlphabet{\Mathbf}{#2}{#3}{#4}{\m@stextbold}{#6} \SetSymbolFont{mtoperatorfont}{#2}{#3}{#4}{#5}{#6} \ifmt@need@euler \SetMathAlphabet{\MathEulerBold}{#2}{U}{zeur}{\m@stextbold}{n} \fi \mt@font@info@on } \let\MathastextDeclareVersion\MTDeclareVersion % \end{macrocode} % \end{macro} % \begin{macro}{\operator@font} % We modify this \LaTeX{} internal variable in order for the % predefined \cs{cos}, \cs{sin}, etc\dots to be typeset with the % |mathastext| font. This will also work for things declared % through the |amsmath| package command % \cs{DeclareMathOperator}. The alternative would have been to % redefine the `operators' Math Symbol Font. Obviously people % who expect that \cs{operator@font} will always refer to the % `operators' math font might be in for a surprise\dots{} well, % we'll see. % \begin{macrocode} \def\operator@font{\mathgroup\symmtoperatorfont} % \end{macrocode} % \end{macro} % Initialization call: % \begin{macrocode} \Mathastext % \end{macrocode} % We redefine the normal, rm and bf alphabets. In version 1.1 we % follow the standard: normal gives the font for letters, rm gives % the font for digits and log-like names, bf for the bold series % of the font for digits and log-like names. % % We will access by default the \cs{omicron} via % \cs{mathnormal}. So we save it for future use. But % unfortunately the Fourier package with the upright option does % not have an upright omicron obtainable by simply typing % \cs{mathnormal}|{o}|. So in this case we shall use \cs{mathrm} % and not \cs{mathnormal}. % \begin{macrocode} \let\mt@saved@mathnormal\mathnormal \@ifpackageloaded{fourier}{\ifsloped\else\let\mt@saved@mathnormal\mathrm\fi}{} \ifmt@defaultnormal\else\renewcommand{\mathnormal}{\Mathnormal}\fi \ifmt@defaultrm\else\renewcommand{\mathrm}{\Mathrm}\fi \ifmt@defaultbf\else\renewcommand{\mathbf}{\Mathbf}\fi % \end{macrocode} % We write appropriate messages to the terminal and the log. % \begin{macrocode} \ifx\mt@symbolgreek\@empty \typeout{** Greek letters will use the PostScript Symbol font. Use\MessageBreak ** \protect\MathastextSymbolScale{factor} to scale the font by .} \fi \ifx\mt@eulergreek\@empty \typeout{** Greek letters will use the Euler font. Use\MessageBreak ** \protect\MathastextEulerScale{factor} to scale the font by .} \fi \ifx\mt@selfGreek\@empty \typeout{** Capital Greek letters from the fonts declared for latin letters:\MessageBreak ** only for OT1 or compatible encodings; glyphs may be unavailable.} \fi % \end{macrocode} % \begin{macro}{\MTVersion} % This is a wrapper around \LaTeX{}'s \cs{mathversion}: here we have an % optional argument allowing a quick and easy change of the text font. % \begin{macrocode} \DeclareRobustCommand\MTVersion[2][\@empty]{% \mathversion{#2}% \ifx\@empty#1% no optional argument \edef\mt@tmp{@#2} \else% we check nevertheless for [] situation, will not work with [ ] \def\mt@@tmp{#1}\def\mt@empty{}% \ifx\mt@@tmp\mt@empty\edef\mt@tmp{@#2}% \else\edef\mt@tmp{@#1}% \fi% \fi% \usefont{\csname mt@encoding\mt@tmp\endcsname}% {\csname mt@family\mt@tmp\endcsname}% {\csname mt@series\mt@tmp\endcsname}% {\csname mt@shape\mt@tmp\endcsname}% \edef\mt@@encoding{\csname mt@encoding\mt@tmp\endcsname}% \renewcommand{\encodingdefault}{\mt@@encoding}% \edef\mt@@family{\csname mt@family\mt@tmp\endcsname}% \renewcommand{\rmdefault}{\mt@@family}% \edef\mt@@series{\csname mt@series\mt@tmp\endcsname}% \renewcommand{\mddefault}{\mt@@series}% \edef\mt@@shape{\csname mt@shape\mt@tmp\endcsname}% \renewcommand{\updefault}{\mt@@shape}% \edef\mt@@boldvariant{\csname mt@boldvariant\mt@tmp\endcsname}% \renewcommand{\bfdefault}{\mt@@boldvariant}} \let\MathastextVersion\MTVersion % \end{macrocode} % \end{macro} % At last we now change the font for the letters of the latin alphabet. % In version 1.1, Latin letters have their own font (shape). % \begin{macrocode} \DeclareMathSymbol{a}{\mathalpha}{mtletterfont}{`a} \DeclareMathSymbol{b}{\mathalpha}{mtletterfont}{`b} \DeclareMathSymbol{c}{\mathalpha}{mtletterfont}{`c} \DeclareMathSymbol{d}{\mathalpha}{mtletterfont}{`d} \DeclareMathSymbol{e}{\mathalpha}{mtletterfont}{`e} \DeclareMathSymbol{f}{\mathalpha}{mtletterfont}{`f} \DeclareMathSymbol{g}{\mathalpha}{mtletterfont}{`g} \DeclareMathSymbol{h}{\mathalpha}{mtletterfont}{`h} \DeclareMathSymbol{i}{\mathalpha}{mtletterfont}{`i} \DeclareMathSymbol{j}{\mathalpha}{mtletterfont}{`j} \DeclareMathSymbol{k}{\mathalpha}{mtletterfont}{`k} \DeclareMathSymbol{l}{\mathalpha}{mtletterfont}{`l} \DeclareMathSymbol{m}{\mathalpha}{mtletterfont}{`m} \DeclareMathSymbol{n}{\mathalpha}{mtletterfont}{`n} \DeclareMathSymbol{o}{\mathalpha}{mtletterfont}{`o} \DeclareMathSymbol{p}{\mathalpha}{mtletterfont}{`p} \DeclareMathSymbol{q}{\mathalpha}{mtletterfont}{`q} \DeclareMathSymbol{r}{\mathalpha}{mtletterfont}{`r} \DeclareMathSymbol{s}{\mathalpha}{mtletterfont}{`s} \DeclareMathSymbol{t}{\mathalpha}{mtletterfont}{`t} \DeclareMathSymbol{u}{\mathalpha}{mtletterfont}{`u} \DeclareMathSymbol{v}{\mathalpha}{mtletterfont}{`v} \DeclareMathSymbol{w}{\mathalpha}{mtletterfont}{`w} \DeclareMathSymbol{x}{\mathalpha}{mtletterfont}{`x} \DeclareMathSymbol{y}{\mathalpha}{mtletterfont}{`y} \DeclareMathSymbol{z}{\mathalpha}{mtletterfont}{`z} \ifx\mt@frenchmath\@empty\def\mt@font@tbu{mtoperatorfont} \else\def\mt@font@tbu{mtletterfont}\fi \DeclareMathSymbol{A}{\mathalpha}{\mt@font@tbu}{`A} \DeclareMathSymbol{B}{\mathalpha}{\mt@font@tbu}{`B} \DeclareMathSymbol{C}{\mathalpha}{\mt@font@tbu}{`C} \DeclareMathSymbol{D}{\mathalpha}{\mt@font@tbu}{`D} \DeclareMathSymbol{E}{\mathalpha}{\mt@font@tbu}{`E} \DeclareMathSymbol{F}{\mathalpha}{\mt@font@tbu}{`F} \DeclareMathSymbol{G}{\mathalpha}{\mt@font@tbu}{`G} \DeclareMathSymbol{H}{\mathalpha}{\mt@font@tbu}{`H} \DeclareMathSymbol{I}{\mathalpha}{\mt@font@tbu}{`I} \DeclareMathSymbol{J}{\mathalpha}{\mt@font@tbu}{`J} \DeclareMathSymbol{K}{\mathalpha}{\mt@font@tbu}{`K} \DeclareMathSymbol{L}{\mathalpha}{\mt@font@tbu}{`L} \DeclareMathSymbol{M}{\mathalpha}{\mt@font@tbu}{`M} \DeclareMathSymbol{N}{\mathalpha}{\mt@font@tbu}{`N} \DeclareMathSymbol{O}{\mathalpha}{\mt@font@tbu}{`O} \DeclareMathSymbol{P}{\mathalpha}{\mt@font@tbu}{`P} \DeclareMathSymbol{Q}{\mathalpha}{\mt@font@tbu}{`Q} \DeclareMathSymbol{R}{\mathalpha}{\mt@font@tbu}{`R} \DeclareMathSymbol{S}{\mathalpha}{\mt@font@tbu}{`S} \DeclareMathSymbol{T}{\mathalpha}{\mt@font@tbu}{`T} \DeclareMathSymbol{U}{\mathalpha}{\mt@font@tbu}{`U} \DeclareMathSymbol{V}{\mathalpha}{\mt@font@tbu}{`V} \DeclareMathSymbol{W}{\mathalpha}{\mt@font@tbu}{`W} \DeclareMathSymbol{X}{\mathalpha}{\mt@font@tbu}{`X} \DeclareMathSymbol{Y}{\mathalpha}{\mt@font@tbu}{`Y} \DeclareMathSymbol{Z}{\mathalpha}{\mt@font@tbu}{`Z} %% \ifx\mtno@digits\@empty\else \def\mt@font@tbu{mtoperatorfont} % \end{macrocode} % In version 1.1, we have now separated digits from letters, so paradoxically % it is less problematic to give them the |mathalpha| type. % \begin{macrocode} \ifx\mt@symboldigits\@empty \def\mt@font@tbu{mtpsymbol} \fi \ifx\mt@eulerdigits\@empty \def\mt@font@tbu{mteulervm} \fi \DeclareMathSymbol{0}{\mathalpha}{\mt@font@tbu}{`0} \DeclareMathSymbol{1}{\mathalpha}{\mt@font@tbu}{`1} \DeclareMathSymbol{2}{\mathalpha}{\mt@font@tbu}{`2} \DeclareMathSymbol{3}{\mathalpha}{\mt@font@tbu}{`3} \DeclareMathSymbol{4}{\mathalpha}{\mt@font@tbu}{`4} \DeclareMathSymbol{5}{\mathalpha}{\mt@font@tbu}{`5} \DeclareMathSymbol{6}{\mathalpha}{\mt@font@tbu}{`6} \DeclareMathSymbol{7}{\mathalpha}{\mt@font@tbu}{`7} \DeclareMathSymbol{8}{\mathalpha}{\mt@font@tbu}{`8} \DeclareMathSymbol{9}{\mathalpha}{\mt@font@tbu}{`9} \fi % \end{macrocode} % When |symboldelimiters| is passed as an option, we use the % Symbol font for the printable characters other than % letters and digits. The character @ has been left out. % \begin{macrocode} \ifx\mt@symboldelimiters\@empty \def\mt@font@tbu{mtpsymbol} \else \def\mt@font@tbu{mtoperatorfont} \fi %% \ifx\mtno@exclam\@empty\else \DeclareMathSymbol{!}{\mathclose}{\mt@font@tbu}{"21} \DeclareMathSymbol{?}{\mathclose}{\mt@font@tbu}{"3F} \fi %% \ifx\mtno@ast\@empty\else \DeclareMathSymbol{*}{\mathalpha}{\mt@font@tbu}{"2A} \fi % \end{macrocode} % We completely renounced to try to do things with all the various dots, they % are defined in many different ways, and there is the amsmath also. Dealing % with this issue would mean a lot a time for a minuscule result. Better to % leave the user use the |mathdots| package and accept that we can not avoid % the default fonts in that case. So here I just treat |.| (in the hope to % really lessen by 1 the number of fonts embedded at the end in the PDF). % \begin{macrocode} \ifx\mtno@punct\@empty\else \DeclareMathSymbol{,}{\mathpunct}{\mt@font@tbu}{"2C} \DeclareMathSymbol{.}{\mathord}{\mt@font@tbu}{"2E} \DeclareMathSymbol{:}{\mathrel}{\mt@font@tbu}{"3A} \@ifpackageloaded{amsmath} {} {\let\colon\undefined \DeclareMathSymbol{\colon}{\mathpunct}{\mt@font@tbu}{"3A}} \DeclareMathSymbol{;}{\mathpunct}{\mt@font@tbu}{"3B} \fi % \end{macrocode} % \begin{macro}{\relbar} % Due to the way = and - are used by \LaTeX{} in arrows, we will % have to redefine \cs{Relbar} and \cs{relbar} in order for % them to preserve their original meanings. % \begin{macrocode} \ifx\mtno@minus\@empty\else \edef\mt@minus@sign{\mathord{\expandafter\mathchar\number\mathcode`\-}} \def\relbar{\mathrel{\smash\mt@minus@sign}} \def\rightarrowfill{$\m@th\mt@minus@sign\mkern-7mu% \cleaders\hbox{$\mkern-2mu\mt@minus@sign\mkern-2mu$}\hfill \mkern-7mu\mathord\rightarrow$} \def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu% \cleaders\hbox{$\mkern-2mu\mt@minus@sign\mkern-2mu$}\hfill \mkern-7mu\smash\mt@minus@sign$} % \end{macrocode} % \end{macro} % \begin{macro}{\endash} % 2011/01/29, v1.1 Producing this next piece of code was % not a piece of cake for a novice like myself! I got % some LaTeX internal info from ltoutenc.dtx. However this % will only work in the math versions having the same % encoding as defined by default. % 2011/02/05, v1.11. Compatibility with Unicode (via % fontspec encodings EU1 and EU2) % \begin{macrocode} \edef\mt@enc{\m@stextenc} \ifmt@endash \ifx\mt@enc\mt@eui % xetex \XeTeXmathcode`\-="2 "\the\symmtoperatorfont "2013 \relax \else \ifx\mt@enc\mt@euii % luatex \luatexUmathcode`\-="2 "\the\symmtoperatorfont "2013 \relax \else % assume 8bit encoding \DeclareMathSymbol{-}{\mathbin}{mtoperatorfont} {\expandafter\the\expandafter\csname\mt@enc\string\textendash\endcsname} \fi\fi \else % \end{macrocode} % \end{macro} % 2011/01/29, v1.1 This |emdash| has possibly almost no interest. % \begin{macrocode} \ifmt@emdash \ifx\mt@enc\mt@eui % xetex \XeTeXmathcode`\-="2 "\the\symmtoperatorfont "2014 \relax \else \ifx\mt@enc\mt@euii % luatex \luatexUmathcode`\-="2 "\the\symmtoperatorfont "2014 \relax \else \DeclareMathSymbol{-}{\mathbin}{mtoperatorfont} {\expandafter\the\expandafter\csname\mt@enc\string\textemdash\endcsname} \fi\fi \else \DeclareMathSymbol{-}{\mathbin}{\mt@font@tbu}{"2D} \fi\fi\fi % \end{macrocode} % \begin{macro}{\hbar} % \begin{macro}{\mt@ltbar} % 2011/01/31, v1.1 I decide to settle the question of the |\hbar|. First, I % should repeat the \LaTeX{} definition % \begin{macrocode} %%\def\hbar{{\mathchar'26\mkern-9muh}} %% (original definition from latex.ltx) % \end{macrocode} % Well, the fact is that there is a DeclareMathSymbol in |amsfonts.sty|, so I % can not always rely on the original which had the advantage that at least % |h| would be in the correct font. But of course not the macron character % (|\=|, |\bar|). And there is also the issue of the kern whose length is % given in a way which depends on |cmsy| (18mu=1em and em taken from info in % |cmsy|). The first problem is that I don't know how to get the slot position % of the macron, given the encoding. So I found another way. I will need an % |rlap| adapted to math mode, and this is provided by code from % Alexander~R.~\textsc{Perlis} in his TugBoat article 22 (2001), 350--352, % which I found by googling |rlap|. % \begin{macrocode} \def\mathrlap{\mathpalette\mathrlapinternal} \def\mathrlapinternal#1#2{\rlap{$\mathsurround=0pt#1{#2}$}} \ifx\mt@ti\mt@enc \DeclareMathAccent{\mt@ltbar}{\mathalpha}{mtletterfont}{9} \else \DeclareMathAccent{\mt@ltbar}{\mathalpha}{mtletterfont}{22} \fi \ifx\mtno@hbar\@empty\else \ifx\mt@enc\mt@eui % xetex \XeTeXmathchardef\hbar="7 "\the\symmtoperatorfont "0127 \relax \else \ifx\mt@enc\mt@euii % luatex \luatexUmathchardef\hbar="7 "\the\symmtoperatorfont "0127 \relax %% or 210F? \else % assume 8bit encoding \def\hbar{\mathrlap{\mt@ltbar{\ }}h} \fi\fi\fi % \end{macrocode} % \end{macro} % \end{macro} % As |h| is from |mtletterfont|, the accent \cs{mt@ltbar} is the % \cs{bar} accent from that same font. Of course, if the user % defines math versions with other encodings than the default one % when loading the package this will probably not work there (if I % knew how to do for accents what I did for the endash I could do % it for all encodings. Surely easy for a \TeX{}pert.) Not to % mention if he/she changes the letter shape... one never should % give so much freedom to users ;-) Well this construction gives % an acceptable result for some of the fonts I have tested, % whether upright or in italics. % \begin{macro}{+,=,\Relbar} % \begin{macrocode} \ifx\mtno@plus\@empty\else \DeclareMathSymbol{+}{\mathbin}{\mt@font@tbu}{"2B} \fi \ifx\mtno@equal\@empty\else \edef\mt@equal@sign{{\expandafter\mathchar\number\mathcode`\=}} \DeclareRobustCommand\Relbar{\mathrel{\mt@equal@sign}} \DeclareMathSymbol{=}{\mathrel}{\mt@font@tbu}{"3D} \fi % \end{macrocode} % \end{macro} % \begin{macro}{(,),[,],/} % \begin{macrocode} \ifx\mtno@paren\@empty\else \DeclareMathDelimiter{(}{\mathopen} {\mt@font@tbu}{"28}{largesymbols}{"00} \DeclareMathDelimiter{)}{\mathclose}{\mt@font@tbu}{"29}{largesymbols}{"01} \DeclareMathDelimiter{[}{\mathopen} {\mt@font@tbu}{"5B}{largesymbols}{"02} \DeclareMathDelimiter{]}{\mathclose}{\mt@font@tbu}{"5D}{largesymbols}{"03} \DeclareMathDelimiter{/}{\mathord}{\mt@font@tbu}{"2F}{largesymbols}{"0E} \DeclareMathSymbol{/}{\mathord}{\mt@font@tbu}{"2F} \fi % \end{macrocode} % \end{macro} % \begin{macro}{alldelims} % \begin{macrocode} \ifmt@alldelims %% \ifx\mt@symboldelimiters\@empty\else %% \ifx\mt@ti\mt@enc\else %% \typeout{** mathastext: `alldelims'. Characters <,>,{,},| will be assumed %% to\MessageBreak %% ** be located as in ascii. True for T1 fonts or OT1 fixed-width fonts.} %% \fi\fi \DeclareMathDelimiter{<}{\mathopen}{\mt@font@tbu}{"3C}{largesymbols}{"0A} \DeclareMathDelimiter{>}{\mathclose}{\mt@font@tbu}{"3E}{largesymbols}{"0B} \DeclareMathSymbol{<}{\mathrel}{\mt@font@tbu}{"3C} \DeclareMathSymbol{>}{\mathrel}{\mt@font@tbu}{"3E} % \end{macrocode} % There is no backslash in the Symbol font % \begin{macrocode} \expandafter\DeclareMathDelimiter\@backslashchar {\mathord}{mtoperatorfont}{"5C}{largesymbols}{"0F} \DeclareMathDelimiter{\backslash} {\mathord}{mtoperatorfont}{"5C}{largesymbols}{"0F} \DeclareMathSymbol\setminus\mathbin{mtoperatorfont}{"5C} \DeclareMathSymbol{|}\mathord{\mt@font@tbu}{"7C} \DeclareMathDelimiter{|}{\mt@font@tbu}{"7C}{largesymbols}{"0C} % \end{macrocode} % I stopped short of redeclaring also \cs{Vert}! % \begin{macrocode} \DeclareMathDelimiter\vert \mathord{\mt@font@tbu}{"7C}{largesymbols}{"0C} \DeclareMathSymbol\mid\mathrel{\mt@font@tbu}{"7C} \DeclareMathDelimiter{\lbrace} {\mathopen}{\mt@font@tbu}{"7B}{largesymbols}{"08} \DeclareMathDelimiter{\rbrace} {\mathclose}{\mt@font@tbu}{"7D}{largesymbols}{"09} \fi % \end{macrocode} % \end{macro} % \begin{macro}{specials} % We never take the specials from the Symbol (Adobe) font, as they are not all % available there. % \begin{macrocode} \ifx\mtno@specials\@empty\else \renewcommand{\#}{\ifmmode\edef\ms@tmp{7\the\symmtoperatorfont23}% \mathchar\expandafter"\ms@tmp\relax\else\char"23\relax\fi} \renewcommand{\$}{\ifmmode\edef\ms@tmp{7\the\symmtoperatorfont24}% \mathchar\expandafter"\ms@tmp\relax\else\char"24\relax\fi} \renewcommand{\%}{\ifmmode\edef\ms@tmp{7\the\symmtoperatorfont25}% \mathchar\expandafter"\ms@tmp\relax\else\char"25\relax\fi} \renewcommand{\&}{\ifmmode\edef\ms@tmp{7\the\symmtoperatorfont26}% \mathchar\expandafter"\ms@tmp\relax\else\char"26\relax\fi} \fi % \end{macrocode} % \end{macro} % \begin{macro}{symbolmisc} % We construct (with some effort) some long arrows from the Symbol glyphs, of % almost the same lengths as the standard ones. By the way, I always found the % \cs{iff} to be too wide, but I follow here the default. Also, although % there is a \cs{longmapsto} in standard \LaTeX{}, if I am not mistaken, there % is no \cs{longto}. So I define one here. I could not construct in the same % manner \cs{Longrightarrow} etc\dots{} as the = sign from Symbol does not % combine easily with the logical arrows, well, I could have done some box % manipulations, but well, life is finite. % \begin{macrocode} \ifx\mt@symbolmisc\@empty \let\prod\undefined \DeclareMathSymbol{\prod}{\mathop}{mtpsymbol}{213} \let\sum\undefined \DeclareMathSymbol{\sum}{\mathop}{mtpsymbol}{229} \DeclareMathSymbol{\mt@implies}{\mathrel}{mtpsymbol}{222} \DeclareRobustCommand{\implies}{\;\mt@implies\;} \DeclareMathSymbol{\mt@impliedby}{\mathrel}{mtpsymbol}{220} \DeclareRobustCommand{\impliedby}{\;\mt@impliedby\;} \DeclareRobustCommand{\iff}{\;\mt@impliedby\mathrel{\mkern-3mu}\mt@implies\;} \DeclareMathSymbol{\mt@iff}{\mathrel}{mtpsymbol}{219} \DeclareRobustCommand{\shortiff}{\;\mt@iff\;} \DeclareMathSymbol{\mt@to}{\mathrel}{mtpsymbol}{174} \DeclareMathSymbol{\mt@trait}{\mathrel}{mtpsymbol}{190} \DeclareRobustCommand\to{\mt@to} \DeclareRobustCommand\longto{\mkern2mu\mt@trait\mathrel{\mkern-10mu}\mt@to} \DeclareRobustCommand\mapsto{\mapstochar\mathrel{\mkern0.2mu}\mt@to} \DeclareRobustCommand\longmapsto{% \mapstochar\mathrel{\mkern2mu}\mt@trait\mathrel{\mkern-10mu}\mt@to} \DeclareMathSymbol{\aleph}{\mathord}{mtpsymbol}{192} \DeclareMathSymbol{\inftypsy}{\mathord}{mtpsymbol}{165} \DeclareMathSymbol{\emptyset}{\mathord}{mtpsymbol}{198} \let\varnothing\emptyset \DeclareMathSymbol{\nabla}{\mathord}{mtpsymbol}{209} \DeclareMathSymbol{\surd}{\mathop}{mtpsymbol}{214} \let\angle\undefined \DeclareMathSymbol{\angle}{\mathord}{mtpsymbol}{208} \DeclareMathSymbol{\forall}{\mathord}{mtpsymbol}{34} \DeclareMathSymbol{\exists}{\mathord}{mtpsymbol}{36} \DeclareMathSymbol{\neg}{\mathord}{mtpsymbol}{216} \DeclareMathSymbol{\clubsuit}{\mathord}{mtpsymbol}{167} \DeclareMathSymbol{\diamondsuit}{\mathord}{mtpsymbol}{168} \DeclareMathSymbol{\heartsuit}{\mathord}{mtpsymbol}{169} \DeclareMathSymbol{\spadesuit}{\mathord}{mtpsymbol}{170} \DeclareMathSymbol{\smallint}{\mathop}{mtpsymbol}{242} \DeclareMathSymbol{\wedge}{\mathbin}{mtpsymbol}{217} \DeclareMathSymbol{\vee}{\mathbin}{mtpsymbol}{218} \DeclareMathSymbol{\cap}{\mathbin}{mtpsymbol}{199} \DeclareMathSymbol{\cup}{\mathbin}{mtpsymbol}{200} \DeclareMathSymbol{\bullet}{\mathbin}{mtpsymbol}{183} \DeclareMathSymbol{\div}{\mathbin}{mtpsymbol}{184} \DeclareMathSymbol{\otimes}{\mathbin}{mtpsymbol}{196} \DeclareMathSymbol{\oplus}{\mathbin}{mtpsymbol}{197} \DeclareMathSymbol{\pm}{\mathbin}{mtpsymbol}{177} %%\DeclareMathSymbol{*}{\mathbin}{mtpsymbol}{42} \DeclareMathSymbol{\ast}{\mathbin}{mtpsymbol}{42} \DeclareMathSymbol{\times}{\mathbin}{mtpsymbol}{180} \DeclareMathSymbol{\proptopsy}{\mathrel}{mtpsymbol}{181} \DeclareMathSymbol{\mid}{\mathrel}{mtpsymbol}{124} \DeclareMathSymbol{\leq}{\mathrel}{mtpsymbol}{163} \DeclareMathSymbol{\geq}{\mathrel}{mtpsymbol}{179} \DeclareMathSymbol{\approx}{\mathrel}{mtpsymbol}{187} \DeclareMathSymbol{\supset}{\mathrel}{mtpsymbol}{201} \DeclareMathSymbol{\subset}{\mathrel}{mtpsymbol}{204} \DeclareMathSymbol{\supseteq}{\mathrel}{mtpsymbol}{202} \DeclareMathSymbol{\subseteq}{\mathrel}{mtpsymbol}{205} \DeclareMathSymbol{\in}{\mathrel}{mtpsymbol}{206} \DeclareMathSymbol{\sim}{\mathrel}{mtpsymbol}{126} \let\cong\undefined \DeclareMathSymbol{\cong}{\mathrel}{mtpsymbol}{64} \DeclareMathSymbol{\perp}{\mathrel}{mtpsymbol}{94} \DeclareMathSymbol{\equiv}{\mathrel}{mtpsymbol}{186} \let\notin\undefined \DeclareMathSymbol{\notin}{\mathrel}{mtpsymbol}{207} \DeclareMathDelimiter{\rangle} {\mathclose}{mtpsymbol}{241}{largesymbols}{"0B} \DeclareMathDelimiter{\langle} {\mathopen}{mtpsymbol}{225}{largesymbols}{"0A} \fi % \end{macrocode} % \end{macro} % \begin{macro}{symbolre} % I like the \cs{Re} and \cs{Im} from Symbol, so I overwrite the CM ones. % \begin{macrocode} \ifx\mt@symbolre\@empty \DeclareMathSymbol{\Re}{\mathord}{mtpsymbol}{"C2} \DeclareMathSymbol{\Im}{\mathord}{mtpsymbol}{"C1} \DeclareMathSymbol{\DotTriangle}{\mathord}{mtpsymbol}{92} \fi % \end{macrocode} % \end{macro} % \begin{macro}{Greek letters} % selfGreek $>$ eulergreek $>$ symbolgreek % % v1.1 We declare control sequences for the capital Greek letters % which look like their latin counterparts. If \cs{digamma} is % defined, presumably some package has been loaded for greek % letters and we do not change anything (except if option % symbolgreek or eulergreek or selfgreek was passed). I took % motivation for this from the Xe\LaTeX{} package |mathspec|, % which I didn't know about when writing up the version |1.0| of % the present package. The goals of |mathastext| are much more % restricted than those achieved by |mathspec|. % % v1.11 I correct some bugs on how eulergreek and % symbolgreek interacted. % \begin{macrocode} \def\mt@font@tbu{operators} \let\mt@mathord\mathord \ifx\digamma\undefined\else\def\mt@font@tbu{1}\fi \ifx\mt@selfGreek\@empty \def\mt@font@tbu{mtoperatorfont} \let\mt@mathord\mathalpha \else \ifx\mt@eulergreek\@empty \def\mt@font@tbu{mteulervm} \let\mt@mathord\mathalpha \else \ifx\mt@symbolgreek\@empty \def\mt@font@tbu{mtpsymbol} \fi\fi\fi \def\mt@tmp{1} \ifx\mt@font@tbu\mt@tmp\else % \end{macrocode} % \cs{digamma} either undefined or defined and *greek option % v1.11: I correct the bug with Symbol preempting capital % Greek letters % \begin{macrocode} \DeclareMathSymbol{\Digamma}{\mt@mathord}{\mt@font@tbu}{"46} \DeclareMathSymbol{\Alpha}{\mt@mathord}{\mt@font@tbu}{"41} \DeclareMathSymbol{\Beta}{\mt@mathord}{\mt@font@tbu}{"42} \DeclareMathSymbol{\Epsilon}{\mt@mathord}{\mt@font@tbu}{"45} \DeclareMathSymbol{\Zeta}{\mt@mathord}{\mt@font@tbu}{"5A} \DeclareMathSymbol{\Eta}{\mt@mathord}{\mt@font@tbu}{"48} \DeclareMathSymbol{\Iota}{\mt@mathord}{\mt@font@tbu}{"49} \DeclareMathSymbol{\Kappa}{\mt@mathord}{\mt@font@tbu}{"4B} \DeclareMathSymbol{\Mu}{\mt@mathord}{\mt@font@tbu}{"4D} \DeclareMathSymbol{\Nu}{\mt@mathord}{\mt@font@tbu}{"4E} \DeclareMathSymbol{\Omicron}{\mt@mathord}{\mt@font@tbu}{"4F} \DeclareMathSymbol{\Rho}{\mt@mathord}{\mt@font@tbu}{"50} \DeclareMathSymbol{\Tau}{\mt@mathord}{\mt@font@tbu}{"54} \DeclareMathSymbol{\Chi}{\mt@mathord}{\mt@font@tbu}{"58} % \end{macrocode} % When we in fact do use Symbol, we will have to correct \cs{Rho} and % \cs{Chi} and \cs{Digamma} which is non-existent in fact (no F % in Symbol, F codes a \cs{Phi}). % \begin{macrocode} \ifx\mt@symbolgreek\@empty \ifx\mt@eulergreek\@empty\else \ifx\mt@selfGreek\@empty\else %% attention le P de Symbol est un \Pi pas un \Rho \DeclareMathSymbol{\Rho}{\mathord}{mtpsymbol}{"52} %% attention le X de Symbol est un \Xi pas un \Chi \DeclareMathSymbol{\Chi}{\mathord}{mtpsymbol}{"43} %% attention le F de Symbol est un \Phi. Il n'y a pas de \Digamma \let\Digamma\undefined \DeclareMathSymbol{\Gamma}{\mathord}{mtpsymbol}{"47} \DeclareMathSymbol{\Delta}{\mathord}{mtpsymbol}{"44} \DeclareMathSymbol{\Theta}{\mathord}{mtpsymbol}{"51} \DeclareMathSymbol{\Lambda}{\mathord}{mtpsymbol}{"4C} \DeclareMathSymbol{\Xi}{\mathord}{mtpsymbol}{"58} %% was "59 in v10 \DeclareMathSymbol{\Pi}{\mathord}{mtpsymbol}{"50} \DeclareMathSymbol{\Sigma}{\mathord}{mtpsymbol}{"53} \DeclareMathSymbol{\Upsilon}{\mathord}{mtpsymbol}{"A1} \DeclareMathSymbol{\Phi}{\mathord}{mtpsymbol}{"46} \DeclareMathSymbol{\Psi}{\mathord}{mtpsymbol}{"59} \DeclareMathSymbol{\Omega}{\mathord}{mtpsymbol}{"57} \fi\fi \else % \end{macrocode} % not symbolgreek, perhaps eulergreek, selfgreek, or none % but then \cs{digamma} is not defined. We assume the non % Latin-looking capital Greek letters to be as in OT1. % \begin{macrocode} \DeclareMathSymbol\Gamma {\mathalpha}{\mt@font@tbu}{"00} \DeclareMathSymbol\Delta {\mathalpha}{\mt@font@tbu}{"01} \DeclareMathSymbol\Theta {\mathalpha}{\mt@font@tbu}{"02} \DeclareMathSymbol\Lambda {\mathalpha}{\mt@font@tbu}{"03} \DeclareMathSymbol\Xi {\mathalpha}{\mt@font@tbu}{"04} \DeclareMathSymbol\Pi {\mathalpha}{\mt@font@tbu}{"05} \DeclareMathSymbol\Sigma {\mathalpha}{\mt@font@tbu}{"06} \DeclareMathSymbol\Upsilon {\mathalpha}{\mt@font@tbu}{"07} \DeclareMathSymbol\Phi {\mathalpha}{\mt@font@tbu}{"08} \DeclareMathSymbol\Psi {\mathalpha}{\mt@font@tbu}{"09} \DeclareMathSymbol\Omega {\mathalpha}{\mt@font@tbu}{"0A} \fi \fi % \end{macrocode} % The \cs{omicron} requires special treatment. By default we use the o from the % (original) normal alphabet, if eulergreek or symbolgreek we adapt. There is % also a special adjustment needed if the package |fourier| was loaded in its % |upright| variant: we then take \cs{omicron} from the (original) rm alphabet. % % There are differences regarding Euler and Symbol with respect to the % available var-letters. We include one or two things like the |wp| and the % |partial|. % % The lower case Greek letters in default \LaTeX{} are of type |mathord|. If % we use the Euler font it is perhaps better to have them be of type % |mathalpha| % \begin{macrocode} \let\omicron\undefined \newcommand\omicron{\mt@saved@mathnormal{o}} \ifx\mt@eulergreek\@empty \DeclareMathSymbol{\alpha} {\mathalpha}{mteulervm}{"0B} \DeclareMathSymbol{\beta} {\mathalpha}{mteulervm}{"0C} \DeclareMathSymbol{\gamma} {\mathalpha}{mteulervm}{"0D} \DeclareMathSymbol{\delta} {\mathalpha}{mteulervm}{"0E} \DeclareMathSymbol{\epsilon}{\mathalpha}{mteulervm}{"0F} \DeclareMathSymbol{\zeta} {\mathalpha}{mteulervm}{"10} \DeclareMathSymbol{\eta} {\mathalpha}{mteulervm}{"11} \DeclareMathSymbol{\theta} {\mathalpha}{mteulervm}{"12} \DeclareMathSymbol{\iota} {\mathalpha}{mteulervm}{"13} \DeclareMathSymbol{\kappa} {\mathalpha}{mteulervm}{"14} \DeclareMathSymbol{\lambda} {\mathalpha}{mteulervm}{"15} \DeclareMathSymbol{\mu} {\mathalpha}{mteulervm}{"16} \DeclareMathSymbol{\nu} {\mathalpha}{mteulervm}{"17} \DeclareMathSymbol{\xi} {\mathalpha}{mteulervm}{"18} \renewcommand\omicron{\MathEuler{o}} \DeclareMathSymbol{\pi} {\mathalpha}{mteulervm}{"19} \DeclareMathSymbol{\rho} {\mathalpha}{mteulervm}{"1A} \DeclareMathSymbol{\sigma} {\mathalpha}{mteulervm}{"1B} \DeclareMathSymbol{\tau} {\mathalpha}{mteulervm}{"1C} \DeclareMathSymbol{\upsilon}{\mathalpha}{mteulervm}{"1D} \DeclareMathSymbol{\phi} {\mathalpha}{mteulervm}{"1E} \DeclareMathSymbol{\chi} {\mathalpha}{mteulervm}{"1F} \DeclareMathSymbol{\psi} {\mathalpha}{mteulervm}{"20} \DeclareMathSymbol{\omega} {\mathalpha}{mteulervm}{"21} \DeclareMathSymbol{\varepsilon}{\mathalpha}{mteulervm}{"22} \DeclareMathSymbol{\vartheta}{\mathalpha}{mteulervm}{"23} \DeclareMathSymbol{\varpi} {\mathalpha}{mteulervm}{"24} \let\varrho=\rho \let\varsigma=\sigma \DeclareMathSymbol{\varphi} {\mathalpha}{mteulervm}{"27} \DeclareMathSymbol{\partial}{\mathalpha}{mteulervm}{"40} \DeclareMathSymbol{\wp}{\mathalpha}{mteulervm}{"7D} \DeclareMathSymbol{\ell}{\mathalpha}{mteulervm}{"60} \else \ifx\mt@symbolgreek\@empty \DeclareMathSymbol{\alpha}{\mathord}{mtpsymbol}{"61} \DeclareMathSymbol{\beta}{\mathord}{mtpsymbol}{"62} \DeclareMathSymbol{\gamma}{\mathord}{mtpsymbol}{"67} \DeclareMathSymbol{\delta}{\mathord}{mtpsymbol}{"64} \DeclareMathSymbol{\epsilon}{\mathord}{mtpsymbol}{"65} \DeclareMathSymbol{\zeta}{\mathord}{mtpsymbol}{"7A} \DeclareMathSymbol{\eta}{\mathord}{mtpsymbol}{"68} \DeclareMathSymbol{\theta}{\mathord}{mtpsymbol}{"71} \DeclareMathSymbol{\iota}{\mathord}{mtpsymbol}{"69} \DeclareMathSymbol{\kappa}{\mathord}{mtpsymbol}{"6B} \DeclareMathSymbol{\lambda}{\mathord}{mtpsymbol}{"6C} \DeclareMathSymbol{\mu}{\mathord}{mtpsymbol}{"6D} \DeclareMathSymbol{\nu}{\mathord}{mtpsymbol}{"6E} \DeclareMathSymbol{\xi}{\mathord}{mtpsymbol}{"78} \renewcommand\omicron{\mathord{\MathPSymbol{o}}} \DeclareMathSymbol{\pi}{\mathord}{mtpsymbol}{"70} \DeclareMathSymbol{\rho}{\mathord}{mtpsymbol}{"72} \DeclareMathSymbol{\sigma}{\mathord}{mtpsymbol}{"73} \DeclareMathSymbol{\tau}{\mathord}{mtpsymbol}{"74} \DeclareMathSymbol{\upsilon}{\mathord}{mtpsymbol}{"75} \DeclareMathSymbol{\phi}{\mathord}{mtpsymbol}{"66} \DeclareMathSymbol{\chi}{\mathord}{mtpsymbol}{"63} \DeclareMathSymbol{\psi}{\mathord}{mtpsymbol}{"79} \DeclareMathSymbol{\omega}{\mathord}{mtpsymbol}{"77} \let\varepsilon=\epsilon \DeclareMathSymbol{\vartheta}{\mathord}{mtpsymbol}{"4A} \DeclareMathSymbol{\varpi}{\mathord}{mtpsymbol}{"76} \let\varrho=\rho \DeclareMathSymbol{\varsigma}{\mathord}{mtpsymbol}{"56} \DeclareMathSymbol{\varphi}{\mathord}{mtpsymbol}{"6A} \DeclareMathSymbol{\partial}{\mathord}{mtpsymbol}{"B6} \DeclareMathSymbol{\wp}{\mathord}{mtpsymbol}{"C3} \fi\fi % \end{macrocode} % \end{macro} % \begin{macro}{\inodot} % \begin{macro}{\jnodot} % In v1.0, I had them of type |mathord|, here I choose |mathalpha|. If I % used \cs{i} and \cs{j} from the text font the problem would be with the % fontsize, if in scriptstyle. The amsmath \cs{text} would do the trick. % \begin{macrocode} \ifx\mt@enc\mt@eui % xetex \XeTeXmathchardef\inodot="7 "\the\symmtletterfont "0131 \relax \XeTeXmathchardef\jnodot="7 "\the\symmtletterfont "0237 \relax \else \ifx\mt@enc\mt@euii % luatex \luatexUmathchardef\inodot="7 "\the\symmtletterfont "0131 \relax \luatexUmathchardef\jnodot="7 "\the\symmtletterfont "0237 \relax \else % assume 8bit encoding \DeclareMathSymbol{\inodot}{\mathalpha}{mtletterfont} {\expandafter\the\expandafter\csname\mt@enc\string\i\endcsname} \DeclareMathSymbol{\jnodot}{\mathalpha}{mtletterfont} {\expandafter\the\expandafter\csname\mt@enc\string\j\endcsname} \fi\fi \ifx\mt@defaultimath\@empty\else \renewcommand{\imath}{\inodot} \renewcommand{\jmath}{\jnodot} \let\mt@oldi\i \let\mt@oldj\j \DeclareRobustCommand{\i}{\ifmmode\inodot\else\mt@oldi\fi} \DeclareRobustCommand{\j}{\ifmmode\jnodot\else\mt@oldj\fi} \fi % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{math accents} % I don't know how to get from the encoding to the slot % positions of the accents (apart from going to look at % all possible encodings definition files and putting this % info here). In standard \LaTeX{}, the mathaccents are % taken from the `operators' font. So we do the same % here. Of course there is the problem that the user can % define math versions with different encodings. Here I % take T1 if it was the default at the time of loading the % package, else OT1. % \begin{macrocode} \ifx\mt@mathaccents\@empty \ifx\mt@ti\mt@enc \DeclareMathAccent{\acute}{\mathalpha}{mtoperatorfont}{1} \DeclareMathAccent{\grave}{\mathalpha}{mtoperatorfont}{0} \DeclareMathAccent{\ddot}{\mathalpha}{mtoperatorfont}{4} \DeclareMathAccent{\tilde}{\mathalpha}{mtoperatorfont}{3} \DeclareMathAccent{\bar}{\mathalpha}{mtoperatorfont}{9} \DeclareMathAccent{\breve}{\mathalpha}{mtoperatorfont}{8} \DeclareMathAccent{\check}{\mathalpha}{mtoperatorfont}{7} \DeclareMathAccent{\hat}{\mathalpha}{mtoperatorfont}{2} \DeclareMathAccent{\dot}{\mathalpha}{mtoperatorfont}{10} \DeclareMathAccent{\mathring}{\mathalpha}{mtoperatorfont}{6} \else \DeclareMathAccent{\acute}{\mathalpha}{mtoperatorfont}{19} \DeclareMathAccent{\grave}{\mathalpha}{mtoperatorfont}{18} \DeclareMathAccent{\ddot}{\mathalpha}{mtoperatorfont}{127} \DeclareMathAccent{\tilde}{\mathalpha}{mtoperatorfont}{126} \DeclareMathAccent{\bar}{\mathalpha}{mtoperatorfont}{22} \DeclareMathAccent{\breve}{\mathalpha}{mtoperatorfont}{21} \DeclareMathAccent{\check}{\mathalpha}{mtoperatorfont}{20} \DeclareMathAccent{\hat}{\mathalpha}{mtoperatorfont}{94} \DeclareMathAccent{\dot}{\mathalpha}{mtoperatorfont}{95} \DeclareMathAccent{\mathring}{\mathalpha}{mtoperatorfont}{23} \ifx\mt@oti\mt@enc\else \typeout{** mathastext: `mathaccents'; accents have been assumed to be\MessageBreak ** as in OT1 encoding.} \fi\fi\fi % \end{macrocode} % \end{macro} % \begin{macro}{Math sizes} % I took the code for \cs{Huge} and \cs{HUGE} from the |moresize| package of % Christian~\textsc{Cornelssen} % \begin{macrocode} \ifmt@defaultsizes\else \providecommand\@xxxpt{29.86} \providecommand\@xxxvipt{35.83} \ifmt@twelve \def\Huge{\@setfontsize\Huge\@xxxpt{36}} \def\HUGE{\@setfontsize\HUGE\@xxxvipt{43}} \typeout{** \protect\Huge\space and \protect\HUGE\space have been (re)-defined.} \else \def\HUGE{\@setfontsize\HUGE\@xxxpt{36}} \typeout{** \protect\HUGE\space has been (re)-defined.} \fi % \end{macrocode} % I choose rather big subscripts. % \begin{macrocode} \def\defaultscriptratio{.8333} \def\defaultscriptscriptratio{.7} \DeclareMathSizes{9}{9}{7}{5} \DeclareMathSizes{\@xpt}{\@xpt}{8}{6} \DeclareMathSizes{\@xipt}{\@xipt}{9}{7} \DeclareMathSizes{\@xiipt}{\@xiipt}{10}{8} \DeclareMathSizes{\@xivpt}{\@xivpt}{\@xiipt}{10} \DeclareMathSizes{\@xviipt}{\@xviipt}{\@xivpt}{\@xiipt} \DeclareMathSizes{\@xxpt}{\@xxpt}{\@xviipt}{\@xivpt} \DeclareMathSizes{\@xxvpt}{\@xxvpt}{\@xxpt}{\@xviipt} \DeclareMathSizes{\@xxxpt}{\@xxxpt}{\@xxvpt}{\@xxpt} \DeclareMathSizes{\@xxxvipt}{\@xxxvipt}{\@xxxpt}{\@xxvpt} \typeout{** mathastext has declared larger sizes for subscripts.\MessageBreak ** To keep LaTeX defaults, use option `defaultmathsizes'.} \fi % \end{macrocode} % \end{macro} % Scaling mechanism for the Symbol font. % \begin{macrocode} \AtBeginDocument{ \ifmt@need@symbol \DeclareFontFamily{U}{psy}{} \DeclareFontShape{U}{psy}{m}{n}{<->s*[\psy@scale] psyr}{} \fi } % \end{macrocode} % Time to reactivate the standard font infos and warnings and we are done. % \begin{macrocode} \mt@font@info@on \endinput % \end{macrocode} % \iffalse % %<*dtx> % \fi % % \CharacterTable % {Upper-case \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 % Lower-case \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 % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % \iffalse % % \fi % % \CheckSum{2232} % \Finale \endinput