diff options
author | Karl Berry <karl@freefriends.org> | 2013-09-05 22:37:53 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-09-05 22:37:53 +0000 |
commit | 9d9546d7063ae0cd4c8d42e86c3fd58e338b4314 (patch) | |
tree | 733fcb06d26f6467ce9590f3939c96fb8ea6de2f /Master/texmf-dist/source/latex/mathastext | |
parent | 708b6d464538f70ef04e1f2128802bbff99da2e8 (diff) |
mathastext (5sep13)
git-svn-id: svn://tug.org/texlive/trunk@31578 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/mathastext')
-rw-r--r-- | Master/texmf-dist/source/latex/mathastext/mathastext.dtx | 1338 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/mathastext/mathastext.ins | 43 |
2 files changed, 819 insertions, 562 deletions
diff --git a/Master/texmf-dist/source/latex/mathastext/mathastext.dtx b/Master/texmf-dist/source/latex/mathastext/mathastext.dtx index bbb3c601e73..740355546fb 100644 --- a/Master/texmf-dist/source/latex/mathastext/mathastext.dtx +++ b/Master/texmf-dist/source/latex/mathastext/mathastext.dtx @@ -1,19 +1,20 @@ -% -*- coding: iso-latin-1; -*- +% -*- coding: iso-latin-1; -*- +% This file (mathastext.dtx) is to be processed with the pdfetex engine, +% it does not compile under the Unicode engines lualatex or xetex. %% -%% Package `mathastext' by Jean-Francois Burnol -%% Copyright (C) 2011, 2012 by Jean-Francois Burnol +%% Package `mathastext', for LaTeX2e. +%% Author: Jean-Francois Burnol +%% Copyright (C) 2011, 2012, 2013 by Jean-Francois Burnol %% -%<*ins> -\def\pkgname{mathastext} % these macros of course are not included -\def\pkgdate{2013/01/21} % into the package file! (else I would have -\def\pkgversion{v1.2f} % given them other names) -\def\pkgdescription{Use the text font in math mode (jfB)} -%</ins> -%<*none> -\def\lasttimestamp{Time-stamp: <23-01-2013 11:27:46 CET jfb>} -% -% The copyright statement applies to `mathastext.dtx' and to its derived files. -% +% Contact: jfbu (at) free.fr +% +% Examples of use of mathastext: +% http://jf.burnol.free.fr/mathastext.html +% http://jf.burnol.free.fr/showcase.html +% +% License: +% ======== +% % This file may be distributed and/or modified under the % conditions of the LaTeX Project Public License, % either version 1.3 of this license or (at your @@ -23,97 +24,96 @@ % and version 1.3 or later is part of all distributions of % LaTeX version 2003/12/01 or later. % -% Please report errors to jfbu (at) free.fr -% For examples of use of mathastext: -% http://jf.burnol.free.fr/mathastext.html -% http://jf.burnol.free.fr/showcase.html -% % Installation: -% ============ +% ============= % % Create a temporary repertory and copy `mathastext.dtx' to it. % % do `latex mathastext.dtx' or `pdflatex mathastext.dtx' % % Run thrice to get the table of contents, labels and bookmarks right. -% (compilation of the documentation will succeed only if `etoc' is available). +% Successful compilation requires package `etoc'. % % The first latex run (even in the absence of `etoc') has generated % `mathastext.sty', `mathastext.ins' and some test files which serve to % illustrate various features. % % Move `mathastext.sty' to a suitable location within the TeX installation: -% mathastext.sty -> ..path..to../tex/latex/mathastext/ -% -% `mathastext.ins' is for TeX distributions expecting it. +% mathastext.sty -> <TDS>/tex/latex/mathastext/ % -\let\docdate\pkgdate -\def\striptimestamp#1 <#2 #3 #4 #5>{#2 at #3 #4} -\edef\dtxtimestamp{\expandafter\striptimestamp\lasttimestamp} -\ProvidesFile{\pkgname.dtx} - [`\pkgname' source and documentation (\dtxtimestamp)] +%<*none> +\def\lasttimestamp{Time-stamp: <03-09-2013 09:38:15 CEST jfb>} +%</none> +%<*ins> +\def\pkgname{mathastext} +\def\pkgdate{2013/09/02} +\def\pkgversion{1.3} +\def\pkgdescription{Use the text font in math mode (jfB)} +%</ins> +%<*none> +\ProvidesFile{\pkgname.dtx}[source of `\pkgname' (\pkgdate, v\pkgversion)] +%------------------------------------ EXTRACTING THE STYLE FILE AND OTHERS \begingroup \input docstrip.tex \askforoverwritefalse \def\pkgpreamble{\defaultpreamble^^J\MetaPrefix^^J% \string\ProvidesPackage{\pkgname}^^J% -\space[\pkgdate\space\pkgversion\space\pkgdescription]} +\space[\pkgdate\space v\pkgversion\space\pkgdescription]} \def\testfilepreamble{\string\def\string\testfileincipit{Test file to accompany \string\texttt{\pkgname}^^J% -version \string\texttt{\pkgversion} of \string\texttt{\pkgdate.}}} +version \string\texttt{\pkgversion} of \string\texttt{\pkgdate}}} \generate{\nopreamble \file{\pkgname.ins}{\from{\pkgname.dtx}{ins}} \usepreamble\testfilepreamble -\file{test\pkgname mathversions.tex}{\from{\pkgname.dtx}{mathversions}} -\file{test\pkgname macos.tex}{\from{\pkgname.dtx}{macos}} -\file{test\pkgname linux.tex}{\from{\pkgname.dtx}{linux}} -\file{test\pkgname alphabets.tex}{\from{\pkgname.dtx}{alphabets}} +\file{\pkgname testmathversions.tex}{\from{\pkgname.dtx}{mathversions}} +\file{\pkgname testmacos.tex}{\from{\pkgname.dtx}{macos}} +\file{\pkgname testlinux.tex}{\from{\pkgname.dtx}{linux}} +\file{\pkgname testalphabets.tex}{\from{\pkgname.dtx}{alphabets}} \usepreamble\pkgpreamble \file{\pkgname.sty}{\from{\pkgname.dtx}{package}}} \endgroup +%------------------------------------------------------------------------------- \iffalse %</none> %<*ins> -%------------------------------------------------------------------------------- -%% This file `mathastext.ins' is provided for compatibility with TeX -%% distributions expecting to find it for installation of `mathastext.sty'. +%------------------------------------- FILE `mathastext.ins' %% -%% As usual `latex mathastext.ins' produces `mathastext.sty' from the source -%% `mathastext.dtx' +%% `mathastext.ins' is provided for compatibility with TeX distributions +%% expecting to find it for installation of `mathastext.sty'. %% -%% (an already existing `mathastext.sty' in the same repertory will be -%% overwritten) +%% `latex mathastext.ins' produces `mathastext.sty' from the source +%% `mathastext.dtx'; an already existing `mathastext.sty' in the same repertory +%% will be overwritten. %% -%% Put `mathastext.sty' in a suitable location within the TeX installation: -%% mathastext.sty -> ................/tex/latex/mathastext/ +%% Move `mathastext.sty' to a suitable location within the TeX installation: +%% mathastext.sty -> <TDS>/tex/latex/mathastext/ %% -%% Some test files are also generated, processing them through latex, pdflatex, -%% lualatex or xetex checks if some of the package commands work as advertised. +%% Some test files are also generated, to be processed through latex, pdflatex, +%% lualatex or xetex. %% -%% See `mathastext.dtx' for the copyright and conditions of distribution or -%% modification. +%% See the source file for the copyright and license informations. %% \input docstrip.tex \askforoverwritefalse \def\pkgpreamble{\defaultpreamble^^J\MetaPrefix^^J% \string\ProvidesPackage{\pkgname}^^J% -\space[\pkgdate\space\pkgversion\space\pkgdescription]} +\space[\pkgdate\space v\pkgversion\space\pkgdescription]} \def\testfilepreamble{\string\def\string\testfileincipit{Test file to accompany \string\texttt{\pkgname}^^J% version \string\texttt{\pkgversion} of \string\texttt{\pkgdate.}}} \generate{\usepreamble\testfilepreamble -\file{test\pkgname mathversions.tex}{\from{\pkgname.dtx}{mathversions}} -\file{test\pkgname macos.tex}{\from{\pkgname.dtx}{macos}} -\file{test\pkgname linux.tex}{\from{\pkgname.dtx}{linux}} -\file{test\pkgname alphabets.tex}{\from{\pkgname.dtx}{alphabets}} +\file{\pkgname testmathversions.tex}{\from{\pkgname.dtx}{mathversions}} +\file{\pkgname testmacos.tex}{\from{\pkgname.dtx}{macos}} +\file{\pkgname testlinux.tex}{\from{\pkgname.dtx}{linux}} +\file{\pkgname testalphabets.tex}{\from{\pkgname.dtx}{alphabets}} \usepreamble\pkgpreamble \file{\pkgname.sty}{\from{\pkgname.dtx}{package}}} \endbatchfile -%------------------------------------------------------------------------------- +%------------------------------------- END OF FILE `mathastext.ins' %</ins> %<*mathversions> -%------------------------------------------------------------------------------- -%% This file `testmathastextversions.tex' is for testing the enhanced +%------------------------------------- FILE `mathastexttestversions.tex' +%% This file `mathastexttestversions.tex' is for testing the enhanced %% concept of math versions provided by the package `mathastext'. %% %% See `mathastext.dtx' for the copyright and conditions of distribution or @@ -140,11 +140,11 @@ Courier$,\MTversion{bold} text in bold NewCentury and $math\ as\ in\ bold\ default$,\MTversion[courier]{avantgarde} text in Courier and $math\ in\ AvantGarde$. \end{document} -%------------------------------------------------------------------------------- +%------------------------------------- END OF FILE `mathastexttestversions.tex' %</mathversions> %<*macos> -%------------------------------------------------------------------------------- -%% This file `testmathastextmacos.tex' is for testing the use of the package +%------------------------------------- FILE `mathastexttestmacos.tex' +%% This file `mathastexttestmacos.tex' is for testing the use of the package %% `mathastext' with the unicode engines XeTeX or LuaLaTeX. %% %% Mac OS X specific fonts are used (10.8.2). @@ -157,6 +157,7 @@ $math\ in\ AvantGarde$. \usepackage{multicol} \usepackage[no-math]{fontspec} \usepackage{lmodern} +\usepackage{metalogo} \usepackage[subdued,italic,asterisk]{mathastext} \setmainfont[Color=FF0000]{Hoefler Text} \Mathastext[Hoefler] \setmainfont[Color=336633]{American Typewriter}\Mathastext[Typewriter] @@ -186,6 +187,11 @@ use encoding \verb|OT1| in the normal and bold versions, as we loaded Some among the fonts tested have no bold variant or no italic variant. +Note (tested 2013/09/03): for some reason the \verb|Color| specifications in the +\verb|\setmainfont| commands work only +with \XeTeX{}, not with \LuaLaTeX{}; a few months back I had not noticed +such a difference between the two engines. + \newcommand\TEST[1]{\MTversion{#1}\def\tmpa{#1}% \def\tmpb{normal}\def\tmpc{bold}% \ifx\tmpa\tmpb\else\ifx\tmpa\tmpc\else \MTnonlettersobeymathxx @@ -216,11 +222,11 @@ Some among the fonts tested have no bold variant or no italic variant. \TEST{Didot}\TEST{Comic}\TEST{normal}\TEST{Herculanum} \TEST{Hoefler}\TEST{Typewriter}\TEST{bold}\TEST{Times} \end{document} -%------------------------------------------------------------------------------- +%------------------------------------- END OF FILE `mathastexttestmacos.tex' %</macos> %<*linux> -%------------------------------------------------------------------------------- -%% This file `testmathastextlinux.tex' is for testing the use of the package +%------------------------------------- FILE `mathastexttestlinux.tex' +%% This file `mathastexttestlinux.tex' is for testing the use of the package %% `mathastext' with the unicode engines XeTeX or LuaLaTeX. %% %% Fonts available on a Linux machine are used. @@ -295,16 +301,16 @@ Some among the fonts tested have no bold variant or no italic variant. \TEST{Arial}\TEST{Chancery}\TEST{Liberation} \TEST{bold}\TEST{normal}\TEST{Times} \end{document} -%------------------------------------------------------------------------------- +%------------------------------------- END OF FILE `mathastextlinux.tex' %</linux> %<*none> \fi -\catcode`\~0\catcode`\\12 % this is to fool TeX's recognition of conditionals -~iffalse % indeed some are used in this next fragment +\catcode`\~0\catcode`\\12 % this is to fool TeX's recognition of \if... +~iffalse % conditionals, which are used in the next sub-file %</none> %<*alphabets> -%------------------------------------------------------------------------------- -%% This file `testmathastextalphabets.tex' is for testing the extended +%------------------------------------- FILE `mathastexttestalphabets.tex' +%% This file `mathastexttestalphabets.tex' is for testing the extended %% scope of the math alphabet commands with package `mathastext', via %% the package command \MTnonlettersobeymathxx. %% @@ -355,6 +361,12 @@ Some among the fonts tested have no bold variant or no italic variant. \begin{document} \testfileincipit +\begin{center} + \bfseries Two features of \texttt{mathastext}:\\ +extended scope of the math alphabets and added italic corrections\par +\end{center} + + The package makes ${!}\,{?}\,{,}\,{:}\,{;}\,{+}\,{-}\,{=}\,{(}\,{)}\,{[}\,{]}\,{<}\,{>}\,{\{}\,{\}}$, the asterisk $*$, and $.\,/\,\vert\,\backslash\,{\#}\,{\$}\,{\%}\,{\&}$ obey the @@ -400,25 +412,32 @@ to make the character mathematically active, this will be overruled by the package wins except if it is Babel, as \verb|mathastext| may in the latter case safely modify the action in math mode (paying attention to the fact that the character should be usable in \verb|\label| and \verb|\ref| in and outside -of math mode). The displayed equations below have been labeled using various -characters from our list, to test if it works ok with then. +of math mode). -\def\testformula{\Biggl\lbrace\biggl(\left(\left[[\sin(a) + \cos(b) - \log(c) = + +The displayed equations next illustrate the extended scope of the math alphabets +which now apply to $=$, $-$, $($, $)$, $[$, $]$ (but not to the large delimiters +of course). Furthermore, for testing purposes the equations were labeled using +such characters, for example the last one has label \verb|eq=7|, to check that +the mathematical activation of $=$ does not cause problems with +\verb|\label/\ref|. + +\def\testformula{\quad\Biggl\lbrace\biggl(\left(\left[[\sin(a) + \cos(b) - \log(c) = \sec(d)]\right]\right)\biggr)\Biggr\rbrace} \begin{equation}\testformula\label{eq:1}\end{equation} -\begin{equation}\mathnormalbold{\testformula}\label{eq;2}\end{equation} -\begin{equation}\mathrm{\testformula}\label{eq?3}\end{equation} -\begin{equation}\mathbf{\testformula}\label{eq!4}\end{equation} -\begin{equation}\mathit{\testformula}\label{eq(5}\end{equation} -\begin{equation}\mathtt{\testformula}\label{eq)6}\end{equation} -\begin{equation}\mathsf{\testformula}\label{eq=7}\end{equation} +\begin{equation}\mathnormalbold{mathnormalbold:\testformula}\label{eq;2}\end{equation} +\begin{equation}\mathrm{mathrm:\testformula}\label{eq?3}\end{equation} +\begin{equation}\mathbf{mathbf:\testformula}\label{eq!4}\end{equation} +\begin{equation}\mathit{mathit:\testformula}\label{eq(5}\end{equation} +\begin{equation}\mathtt{mathtt:\testformula}\label{eq)6}\end{equation} +\begin{equation}\mathsf{mathsf:\testformula}\label{eq=7}\end{equation} Equations above are numbered \ref{eq:1}, \ref{eq;2}, \ref{eq?3}, \ref{eq!4}, and $\ref{eq(5}$, $\ref{eq)6}$, and $\ref{eq=7}$. \def\testline#1{$#1$&$\mathnormalbold{#1}$&$\mathrm{#1}$&$\mathbf{#1}$&$\mathit{#1}$&$\mathtt{#1}$&$\mathsf{#1}$} -\begin{tabular}{ccccccc} +\centerline{\begin{tabular}{ccccccc} \testline{a!b}\\ \testline{a?b}\\ \testline{a,b}\\ @@ -444,7 +463,7 @@ $\ref{eq(5}$, $\ref{eq)6}$, and $\ref{eq=7}$. \testline{(a,b)}\\ \testline{[a,b]}\\ \testline{\{a,b\}} -\end{tabular} +\end{tabular}} The question mark has been made active by \verb|babel+frenchb|. @@ -458,57 +477,60 @@ To double-check we will now make \string? mathematically active: normally with Babel (don't do this at home without \verb|mathastext|!). But here with \verb|$?$| no bad surprise (infinite loop!) awaits us: just $?$. -Let's take some other character which was not made active by -\verb|babel+frenchb|, for example the opening parenthesis: -\verb|\catcode`(=\active \def ({X}|. -Let's try now \verb|( vs $($|.\begingroup\catcode`(=\active \gdef ({X} This -gives ( vs $($\endgroup. We see that \verb|mathastext| does not -attempt anything (this could not safely be done for technical reasons). - -We have now cancelled the activation of the parenthesis, and let's make it only -mathematically active with \verb|\mathcode`(="8000|.\mathcode`(="8000\ If -we try \verb|$((($| we see that nothing special happens $((($. The -mathematically active character was overruled by \verb|mathastext|. - -But if we now issue -\verb|\MTnonlettersdonotobeymathxx|\MTnonlettersdonotobeymathxx\ we get $((($ -from the input \verb|$((($|. This shows that indeed the parenthesis had been -made mathematically active. - -By the way -don't do this at home without \verb|mathastext|: \verb|amsmath| is not -compatible with a mathematically active opening parenthesis, and -\verb|mathastext| does a patch. Always load \verb|amsmath| before -\verb|mathastext|. +Let's take some other character, for example the opening parenthesis, and make +it catcode active: +\verb|\catcode`(=\active \def ({X}|. +Let's try the input +\verb|( and $($|. +\begingroup +\catcode`(=\active \gdef ({X} +This gives ( and $($. +We +see that \verb|mathastext| does not attempt to modify the definition of the +active character, as this activation was not done via the \verb|babel| services. +\catcode`\(=12 +\mathcode`(="8000 +We now revert the parenthesis to catcode other (but maintain \verb|\def ({X}| as +definition of its active version), and then make it mathematically +active using the command \verb|\mathcode`(="8000|. +If we try +\verb|$((($| we see that the parenthesis is not converted into an $X$: $((($. +The mathematically active character was overruled by \verb|mathastext|. + +Issuing \verb|\MTnonlettersdonotobeymathxx|\MTnonlettersdonotobeymathxx\ we do +get the $X$'s from the input \verb|$((($|: $((($ +\endgroup +This shows that \verb|mathastext| now does not modify in math mode the +non-letter \verb|(|. \MTversion{upright}\MTnonlettersobeymathxx We defined in the preamble of the document a \verb|mathastext|-enhanced math version (named \verb|upright|) having the Latin letters upright in math mode. Let's switch to -it.\footnote{\texttt{\char92MTversion\{upright\}}. This maintains - the status of the `difficult non-letters'.}\footnote{as we - left \string? mathematically active, we initially had the bad surprise - to fall into an infinite loop. And indeed we had forgotten our - previous \texttt{\char92MTnonlettersdonotobeymathxx}. So a new - \texttt{\char92MTnonlettersobeymathxx} was done to prevent this - problem of \texttt{babel} when it activates a character which is - mathematically active.} -Then, italic corrections are added,\footnote{this has an effect only - with \LaTeX{} and PDF\LaTeX{} not with \XeTeX{} or \LuaLaTeX{}.} as we -can see here, to correct the positioning of the subscript: $f_i^i$. -After using \verb|\MTnoicinmath| to turns off the -feature\MTnoicinmath{}, this is $f_i^i$. Let's turn it back on -(\verb|\MTicinmath|)\MTicinmath{} and try \verb|$f_{abc}^{def}$|, this -gives $f_{abc}^{def}$, or this other one: $f^{f_{abc}^{def}}_u$. Without -italic corrections\MTnoicinmath: $f_{abc}^{def}$, and respectively -$f^{f_{abc}^{def}}_u$.\MTicinmath We can also check that the added -italic corrections do not prevent the formation of ligatures when using +it: \newline +\hbox to\linewidth{\hss\verb|\MTversion{upright}|\hss} + + +With a font which is neither italic nor slanted, \verb|mathastext| automatically +inserts italic corrections for better positioning of the subscript: +\verb|$f_i^i$| gives +$f_i^i$. +After \verb|\MTnoicinmath| which turns off this feature\MTnoicinmath{}, the same +input gives $f_i^i$, which is different. \footnote{last time I tried, this only + worked with + PDF\LaTeX{}, not with \LuaLaTeX{} or \XeTeX{}.} + +Again with italic corrections on (\verb|\MTicinmath|)\MTicinmath{} +\verb|$f_{abc}^{def}$| gives $f_{abc}^{def}$, and here is another one: +$f^{f_{abc}^{def}}_u$. Without italic corrections\MTnoicinmath: $f_{abc}^{def}$, +and respectively $f^{f_{abc}^{def}}_u$.\MTicinmath We can also check that the +added italic corrections do not prevent the formation of ligatures when using the math alphabets, apart from \verb|\mathnormal| (which comes first): -$\mathnormal{ff}$, $\mathrm{ff}$, $\mathit{ff}$, $\mathbf{ff}$, -$\mathtt{ff}$ (no ligature in teletype) and $\mathsf{ff}$. +$\mathnormal{ff}$, $\mathrm{ff}$, $\mathit{ff}$, $\mathbf{ff}$, $\mathtt{ff}$ +(no ligature in teletype) and $\mathsf{ff}$. -\begin{tabular}{ccccccc} +\centerline{\begin{tabular}{ccccccc} \testline{a!b}\\ \testline{a?b}\\ \testline{a,b}\\ @@ -534,10 +556,10 @@ $\mathtt{ff}$ (no ligature in teletype) and $\mathsf{ff}$. \testline{(a,b)}\\ \testline{[a,b]}\\ \testline{\{a,b\}} -\end{tabular} +\end{tabular}} \end{document} -%------------------------------------------------------------------------------- +%------------------------------------- END OF FILE `mathastexttestalphabets.tex' %</alphabets> %<*none> ~fi @@ -548,6 +570,7 @@ $\mathtt{ff}$ (no ligature in teletype) and $\mathsf{ff}$. \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} +\usepackage{enumitem} % in order to cancel the stripping done by ltxdoc % of comment characters inside verbatim blocks. @@ -572,8 +595,9 @@ bookmarks=true,% \hypersetup{linktoc=all,% %hidelinks,% +colorlinks=true,% breaklinks=true,% -linkcolor={red},% +linkcolor={blue},% urlcolor={joli}, pdfauthor={Jean-Fran\c cois Burnol},% pdftitle={The mathastext package},% @@ -583,21 +607,61 @@ pdfstartview=FitH,% pdfpagemode=UseOutlines,% } -\DeclareRobustCommand\cs[1]{{\ttfamily\hyphenchar\font45\char`\\#1}} -\DeclareRobustCommand\csb[1]{{% -\color{blue}\ttfamily\hyphenchar\font45\char`\\#1}} +% ---- \centeredeline: OUR OWN LITTLE MACRO FOR CENTERING LINES (fait +% initialement pour la documentation de mes autres paquetages etoc et xint) + +% 7 mars 2013 +% This macro allows to conveniently center a line inside a paragraph and still +% use therein \verb or other commands changing catcodes. +% A proposito, the \LaTeX \centerline uses \hsize and not \linewidth ! +% (which in my humble opinion is bad) + +% \ignorespaces ajouté le 9 juin. Cela m'aurait évité des dizaines de % lorsque +% plusieurs \centeredline se suivent (car on reste en mode horizontal si on y +% est au début). + +\makeatletter +\newcommand*\centeredline {% + \ifhmode \\\relax + \def\centeredline@{\hss\egroup\hskip\z@skip\ignorespaces }% + \else + \def\centeredline@{\hss\egroup }% + \fi + \afterassignment\@centeredline + \let\next=} +\def\@centeredline + {\hbox to \linewidth \bgroup \hss \bgroup \aftergroup\centeredline@ } +\makeatother + +\DeclareRobustCommand\cs[1]% + {{\ttfamily\hyphenchar\font45\char`\\#1}} +% \DeclareRobustCommand\csb[1]% +% {{\color{blue}\ttfamily\hyphenchar\font45\char`\\#1}} +\DeclareRobustCommand\csb[1]% + {\hyperref[#1]{\ttfamily\char`\\#1}} + +\newcommand*\blueit[1]{\texorpdfstring{\blueitaux #1\relax}{#1}} +\def\blueitaux #1#2\relax{\hyperref[#2]{\ttfamily #1#2}} + -\newcommand\cshyp[1]{\texorpdfstring{\cs{#1}}{\textbackslash #1}} -\newcommand\csbhyp[1]{\texorpdfstring{\csb{#1}}{\textbackslash #1}} -\newcommand\blueit[1]{\texorpdfstring{{\color{blue}\ttfamily #1}}{#1}} -\newcommand\lowast{\raisebox{-.25\height}{*}} -\newcommand\starit[1]{\cs{#1\lowast}} -\newcommand\staritb[1]{\csb{#1\lowast}} +% ancien: +%\catcode`\§=13 +% \newif\iftoggled +% \def§{\iftoggled\endgroup\toggledfalse\xspace\else +% \toggledtrue\begingroup\color{blue}\ttfamily\expandafter\string\fi} -\newif\iftoggled + +% 2 septembre 2013, 22:25 +% je réussis avec un minimum de modifs dans la source à convertir tous mes +% mots-clés bleux en hyperliens; les labels sont créés simplement en modifiant +% plus loins \@jfendshrtverb \catcode`\§=13 -\def§{\iftoggled\endgroup\toggledfalse\xspace\else - \toggledtrue\begingroup\color{blue}\ttfamily\expandafter\string\fi} +\makeatletter +\def§{\begingroup + \let\do\@makeother\dospecials + \@jfendshrtverb } +\def\@jfendshrtverb #1#2§{\hyperref[#2]{\ttfamily #1#2}\endgroup\xspace} +\makeatother \newcommand\mst{% \texorpdfstring{{\color{joli}\ttfamily\bfseries mathastext}} @@ -638,13 +702,14 @@ LGRgreek]{mathastext} \frenchspacing \begin{center} +\def\striptimestamp#1 <#2 #3 #4 #5>{#2 at #3 #4} +\edef\dtxtimestamp{\expandafter\striptimestamp\lasttimestamp} {\normalfont\LARGE The \mst package}\\ \textsc{\small Jean-François Burnol}\par \footnotesize \ttfamily jfbu (at) free (dot) fr\\ - Package version: \pkgversion\ (\pkgdate)\\ - Documentation generated from the source file\\ - with timestamp ``\dtxtimestamp'' + Version \pkgversion{} of \pkgdate\footnote{Documentation generated from the + source file with timestamp ``\dtxtimestamp''.} \end{center} @@ -660,7 +725,7 @@ LGRgreek]{mathastext} \end{small} \etoctoclines -\renewcommand\etocaftertitlehook{% +\renewcommand\etocaftertitlehook{\hypersetup{hidelinks}% added 1.3 \setlength{\columnseprule}{.4pt}% \renewcommand{\columnseprulecolor}{\color{DarkMagenta}}} \renewcommand\etocbelowtocskip{1ex} @@ -700,9 +765,30 @@ fonts. \subsection{Recent changes} -The current version is |1.2f|: {\small addition of the ``change - log'' to this user manual, and some minor code improvements not - changing neither features nor user interface.\par} +This is the documentation for version \texttt{\pkgversion} of \pkgdate. + +\begin{enumerate}[noitemsep] +\item (see \autoref{sec:mathskips}) new command §\MTsetmathskips§ allows to specify, on a letter by letter + basis, extra spaces (expressed in terms of `mu' units, or as \cs{thinmuskip} + for example) to be inserted automatically in math mode around the specified + letter. This is provided for text fonts whose use in math mode creates glyph + collisions or excessive crampedness. +\item use of the latest version of \cs{luatexUmathcodenum} now allows equal + treatment of |=| and |-| by \mst under both unicode engines \LuaTeX{} and + \XeTeX. So \mst version |1.3| under \LuaLaTeX{} \emph{requires} the version of + |lualatex| (binaries and format) as included for example in the TeXLive 2013 + distribution, or later. + \item a few minor changes and code improvements for better compatibility in + various contexts. + \item blue keywords in the documentation are now (mostly) hyperlinked to their more detailed descriptions. +\end{enumerate} + + +{\small +Version |1.2f|: addition of the ``change + log'' at the end of this user manual, and some minor code improvements not + changing neither features nor user interface. + \smallskip Version |1.2e| made additions: in this user manual to the section \ref{sec:compat} describing the compatibility issues, and @@ -712,10 +798,8 @@ active characters dating back to the |1.2| version. Also, an oversight in the implementation of the italic correction features from |1.2b| was corrected. -\smallskip -Version |1.2d| introduced the |asterisk| option (strangely the command -\cs{MTlowerast} was not the one described in the manual; this has been -corrected) and solved a problem of compatibility with |amsmath|. +\smallskip Version |1.2d| introduced the |asterisk| option and addressed a +problem of compatibility with |amsmath|. \smallskip The main new features in versions |1.2| and |1.2b| were the @@ -726,12 +810,13 @@ problems related to globally active characters were finally solved to (almost) complete satisfaction (let's hope) only in the current |1.2e| version. These issues are commented upon in the \hyperref[sec:compat]{compatibility section}, in the test file -\texttt{testmathastextalphabets.tex} and in the commented source code. +\texttt{mathastexttestalphabets.tex} and in the commented source code. \smallskip Earlier, version |1.15| introduced the concept of the \hyperref[sec:subdued]{{subdued} math versions.} - +\par +} \section{What \mst does} @@ -740,7 +825,9 @@ Earlier, version |1.15| introduced the concept of the \mst's basic aim is to have the same font for text and mathematics. With hundreds of free text fonts packaged for \LaTeX{} and only a handful of math ones, chances are your favorite text font does not mix so well with -the available math ones; \mst may then help. +the available math ones; \mst may then help. Note that \mst was initially +developed for the traditional \TeX{} fonts and engines, and that compatibility +with Unicode engines and OpenType fonts is partial. Here is an example with Latin Modern typewriter proportional: @@ -890,8 +977,14 @@ the preamble: \usepackage{times} \usepackage[italic]{mathastext} \end{verbatim} - -All letters, digits, and punctuation signs inside math mode will then be +The package records which font is set up for text, at the time it is +loaded,\footnote{alternatively it is possible to configure the text font after + loading \mst, and then the command \cs{Mathastext} will accomplish the + necessary changes to the font for letters, digits and a few extra ascii + symbols in math mode.} and +then arranges things in order for this text font to be used in math mode as +well. So, with the preamble as above +all letters, digits, and punctuation signs inside math mode will then be typeset in Times.\footnote{let's do as if we did not know the excellent |txfonts| package which employs Times for text and has a very complete math support, including many additional mathematical glyphs in @@ -1122,12 +1215,11 @@ command which is invoked internally, so no spaces in the names). Two additional math versions preexist: the |normal| and |bold|, which, because there was the §subdued§ option, were left untouched by \mst. -Once these |math versions| are defined, -§\Mathastextversion\{name\_of\_version\}§, or equivalently -§\MTversion\{name\_of\_version\}§ in the body of the document -enacts the font switches. As is usual with \LaTeX{} one can limit the -scope to the inside of a group, or also switch back to the main set-up -through issuing \cs{Mathastextversion\{normal\}}. +Once these |math versions| are defined, §\MTversion§|{name_of_version}|, or +equivalently §\Mathastextversion§|{name_of_version}|, enacts the font switches +in the body of the document. As is usual with \LaTeX{} one can limit the scope +to the inside of a group, or also switch back to the main set-up through issuing +\cs{Mathastextversion\{normal\}}. When \cs{Mathastext} is used in the preamble, it records the current font defaults and (except for the |normal| and |bold| versions under the §subdued§ @@ -1149,7 +1241,7 @@ math version to have distinct fonts for text and math: In the body of the document the \LaTeX{} command \cs{mathversion}\marg{version\_name} will change only the fonts used in math mode. It is recommended to use instead the package command -\csb{mathastextversion} (or its synonyms \csb{MTversion}, +\csb{MTversion} (or its synonyms \cs{mathastextversion}, \cs{Mathastextversion}, \cs{MTVersion}), with a mandatory argument \marg{version\_name}. It \begin{itemize} @@ -1198,161 +1290,50 @@ package option §LGRgreek§ and the command \cs{usepackage}|{epigrafica}| followed with |\usepackage[LGRgreek]{mathastext}|. -\subsection{Extended scope of the math alphabets commands} -\label{sec:mathxx} +\subsection{Extra spaces around letters} +\label{sec:mathskips} +This is a new feature added with release |1.3|: the command §\MTsetmathskips§ +allows the user to set up some spaces (more precisely, `mu glue') to be +automatically inserted around the letters in math mode. Some (very) unrealistic +uses: +\begin{verbatim} +% this may be anywhere in the document (also within a math group): +\MTsetmathskips{x}{20.33mu}{15.66mu}% 20.33mu before all x's and 15.66mu after. +\MTsetmathskips{y}{\thickmuskip}{\thickmuskip}% +\MTsetmathskips{z}{10mu plus 10mu minus 5mu}{5mu plus 2mu minus 3mu}% +\MTsetmathskips{A}{\muexpr \thickmuskip*2}{\muexpr \medmuskip-\thinmuskip/2}% +\end{verbatim} +Here is what |$wxtytz^{wxtytz}=BAC^{BAC}$| then gives using the Times font: \begingroup -\MTversion{italic}\renewcommand\familydefault\sfdefault -% il faudra peut-être que j'annule cette façon qu'à mathastext de tripatouiller -% \familydefault... -\makeatletter\let\mst@doasterisk\relax\makeatother - -Ever since the initial version of the package, some characters usually -unaffected by the math alphabet commands \cs{mathbf}, \cs{mathtt}, -\cs{mathsf}\dots{} are declared to be of `variable family type', in order for -them to obey these commands: for example the hash sign $\#$ gives $\mathbf{\#}$ -if input as |$\mathbf{\#}$| (\mst, especially in its beginnings, wanted as many -characters as possible to be picked up from the text font and to behave -similarly to letters and digits). - -So it was especially frustrating that mathematical characters such as $+$, or -$<$, or $]$ could not be declared of `variable family' (in addition to being -picked up in the text font) as this would, for reasons of the inner workings of -\TeX{}, not be compatible with the automatically inserted spaces around them. - -A revolutionary ;-) novelty is introduced with version |1.2| of the package: -\begin{enumerate} -\item the pre-declared or user-declared (using the |amsmath| - \cs{DeclareMathOperator} or equivalent) operator names obey the math - alphabet commands,\footnote{contrarily to the next feature, this one is not - likely to create incompatibilities with other packages, so it is - activated by default.} -\item and, \emph{optionally}, all non alphabetical - characters\footnote{of course some of them are input preceded by a - backslash, and the backslash itself is input as \cs{backslash}.} treated by - \mst, \emph{i.e.}, if not disabled by options, - ${!}\,{?}\,{,}\,{:}\,{;}\,{+}\,{-}\,{=}\,{(}\,{)}\,{[}\,{]}\,{<}\,{>}\,{\{}\,{\}}$, - the asterisk $*$, and - $.\,/\,\vert\,\backslash\,{\#}\,{\$}\,{\%}\,{\&}$\footnote{% - ${\#}\,{\$}\,{\%}\,{\&}$ - obey the math alphabets since the initial version of \mst; the dot - $.$, the slash $/$, the vertical bar $\vert$ and the backslash - $\backslash$ do not have specific spacings inserted by \TeX{} around - them, and the procedure is then not a devilish one, this is why it - is made the default for these characters which are listed apart. The - math symbols \cs{mid} (which is $\vert$ with type \cs{mathrel}) and - \cs{setminus} ($\backslash$ with type \cs{mathbin}) are counted - among the `difficult' cases, not the `easy non-letters'.} will also obey - the math alphabet commands (when not used as delimiters). The - important thing is that the spaces added by \TeX{} before and after - are not modified. - -\end{enumerate} -Let us compare, for example, the new behavior of \cs{mathtt} and \cs{mathbf} -\MTmathoperatorsobeymathxx\MTnonlettersobeymathxx\MTeasynonlettersobeymathxx -\[ \mathtt{(\sin(n!)<\cos(m-p)?)}\qquad \mathbf{[\sin(x+y)=\cos(z-t)]}\] -with the traditional default behavior: -\MTmathoperatorsdonotobeymathxx\MTnonlettersdonotobeymathxx -\MTeasynonlettersdonotobeymathxx -\[ \mathtt{(\sin(n!)<\cos(m-p)?)}\qquad \mathbf{[\sin(x+y)=\cos(z-t)]}\] - -The first feature is activated by default, except of course for the normal and -bold math versions when the package was given the \emph{subdued} option. The -second feature is \emph{off} by default for the characters listed first. It is -\emph{on} for the `easy' cases -${\#}\,{\$}\,{\%}\,{\&}\,.\,/\,\vert\,\backslash$ (activating the feature for -them puts no constraint on the user input and should not be too upsetting to -other packages), and also for $*$ but only if this was required explicitely by -the option §asterisk§, as the user then is supposed to know that |$R^*$| is no -valid input anymore and should be replaced by |$R^{*}$|. The remaining `difficult' -cases create similar -constraints, which will be commented more upon next. The relevant commands are\\ -\mbox{}\hspace{2cm}\csb{MTmathoperatorsdonotobeymathxx}\\ -\mbox{}\hspace{2cm}\csb{MTnonlettersdonotobeymathxx}\\ -\mbox{}\hspace{2cm}\csb{MTeasynonlettersdonotobeymathxx}\\ -for deactivation and \\ -\mbox{}\hspace{2cm}\csb{MTmathoperatorsobeymathxx}\\ -\mbox{}\hspace{2cm}\csb{MTnonlettersobeymathxx}\\ -\mbox{}\hspace{2cm}\csb{MTeasynonlettersobeymathxx}\\ -for activation.\footnote{these commands are to be used outside of math mode. - Their scope is limited to the current \LaTeX{} environment or group. They use - the \cs{everymath} and \cs{everydisplay} mechanism so if the document needs to - modify these token lists it has to do so in a responsible manner, extending - not annihilating their previous contents.} \footnote{when in subdued mode, the - math alphabets are the default ones, not the ones modified by \mst to use the - document text fonts. As a result, matters of font encodings may then give - unexpected results, for example for $-$. On the present document page we - switched to a math version to escape from the |subdued| mode and avoid the - problem with \cs{mathbf\{-\}} giving in the normal (subdued) math version - {\MTversion{normal}\MTnonlettersobeymathxx$\mathbf-$\sffamily, when - `non-letters' are declared to obey math alphabets.}} - -\begin{framed} - \textbf{Important:} the package does \cs{MTnonlettersdonotobeymathxx} by - default. The reason is that activating the mechanism adds some constraints to - the way things must be input, adding - |\usepackage{mathastext}|{}\cs{MTnon\-letters\-obey\-mathxx} to a pre-existing - document might well create errors: - - All these characters treated by \mst, such - as |?|, |[|, |<| now represent (in math mode only!) \emph{two} `tokens' and - this will utterly confuse \TeX{} if some precautions are not taken: |$x^?$|, - |$R^+$| or |$\mathopen<A\mathclose>$| \emph{must} now be coded as |$x^{?}$|, - |$R^{+}$| and |$\mathopen{<}A\mathclose{>}$| (the rule is to do as if |?|, - |+|, |<| or |>| were each really \emph{two} characters). - - Even if this rule is respected in the document source, it is still a - possibility that incompatibilities with other packages will arise because \mst - does a `mathematical activation' of the characters which could be unexpected - and unchecked for by other packages. This is precisely the case with the - |amsmath| package, and the problem goes away by just making sure that - |amsmath| is loaded before \mst{} (generally speaking, \mst should be loaded - last after all packages dealing with math things). -\end{framed} - -The brace control sequences |\{| and |\}| have their own (supplementary) switch, -which is (even) less activated by default. The reason is that after -\csb{MTexplicitbracesobeymathxx}, they regrettably can not be used anymore as -delimiters: |\big\{| or |\big\}| cease to function and must be replaced by -|\big\lbrace| and |\big\rbrace|. But -\MTmathoperatorsobeymathxx\MTnonlettersobeymathxx\MTexplicitbracesobeymathxx we -can now enjoy $\mathtt{\{a, a>b\}}$, $\mathbf{\{a, a>b\}}$, $\mathsf{\{a, - a>b\}}$, or even $\mathnormalbold{\{a, a>b\}}$.\footnote{this last example - uses the \cs{mathnormalbold} additional alphabet defined by \mst.} - -There is no such restriction with $($, $)$ or the brackets $[$, $]$. When used -as delimiters though, they will become again unreactive to the math alphabets: -the same applies to $<$ and $>$ or to any of the other characters such as the -slashes $/$, $\backslash$, when they are used as delimiters. This is a rather -obvious restriction except possibly for the smallest size delimiters (the -so-called `small variants'), as all other sizes will be anyway absent from the -text fonts. Even the small variants may not be really available in the text -fonts: for example the standard $<$ used as a delimiter is in \LaTeX{} a -\cs{langle}: $\langle$. With standard \LaTeX{} |$\left< x\right>$| gives -$\langle x\rangle$. - - -Actually, \mst does try to pick up most of the `small variants' in the text -font: |$\left<x\right>$| gives $\left<x\right>$ (but |$\left<b\right>$| gives $\left<b\right>$.) If you don't like that use the -option §nosmalldelims§ (it is indeed perhaps a bit strange to have $\left< - x\right>$ next to $\left< X\right>$, again before blaming me, consider using -§nosmalldelims§.) At any rate, whether `small' or not, delimiters are not under -the extended law of math alphabets, this is a general rule of the way \mst -manages these things. - -Examples: |\mathbf{<a,b>}| gives $\mathbf{<a,b>}$. -|\mathbf{\left<a,b\right>}| gives $\mathbf{\left<a,b\right>}$. -|\mathbf{\mathopen{<}a,b \mathclose{>}}| gives $\mathbf{\mathopen{<} a,b - \mathclose{>}}$. -The \LaTeX{} standard behavior for -|\mathbf{\mathopen{<}a,b\mathclose{>}}| is -\endgroup -$\mathbf{\mathopen{<} a,b \mathclose{>}}$. - +\MTsetmathskips{x}{20.33mu}{15.66mu}% +\MTsetmathskips{y}{\thickmuskip}{\thickmuskip}% +\MTsetmathskips{z}{10mu plus 10mu minus 5mu}{5mu plus 2mu minus 3mu}% +\MTsetmathskips{A}{\muexpr \thickmuskip*2}{\muexpr \medmuskip-\thinmuskip/2}% +\MTversion{times}% +$wxtytz^{wxtytz}=BAC^{BAC}$.\endgroup{} Any \TeX{} group or \LaTeX{} environment +limits as usual the scope of this command. Furthermore the command +§\MTunsetmathskips§ cancels previous use of \cs{MTsetmathskips} for a given +letter (in a more complete manner than re-using it to specify |0mu| as +the before and after skips). + +The implementation relies on the `mathematical activation' of letters, which is +done by default by the package since release |1.2b|. Should this cause +compatibility problems, the command §\MTmathstandardletters§ cancels it +entirely. To reactivate it, there is §\MTmathactiveletters§. Note that +\cs{MTmathactiveletters} is done automatically by \mst when loaded, and also +each time the package enhanced math-version-switch command §\MTversion§ is used, +except for the normal and bold math versions under the §subdued§ option. + +Earlier this `mathematical activation' of letters had been used by the package +only to add automatically italic corrections, as described in the next section. \subsection{Italic corrections} \label{sec:ic} +{\small Note: this is somewhat technical discussion which may well be skipped in + its entirety on first reading.\par} + \begingroup \fboxsep0pt\fboxrule.1pt @@ -1518,7 +1499,7 @@ to preserve this behavior). \texttt{\$\char92mathbin x\$}. Nevertheless it is still true that (in math mode only) the letter characters |a-z|, |A-Z|, expand to composite objects, something which could surprise other packages. The - macro §\MTnoicinmath§ cancels the mechanism.} + macro \csb{MTnoicinmath} cancels the mechanism.} The feature-implementing commands §\MTicinmath§, §\MTnoicinmath§, §\MTicalsoinmathxx§ are described in section \ref{sec:cmds}. @@ -1547,7 +1528,7 @@ $\mathit{f_i^i}$\par $\mathrm{f_i^i}$ the italic corrections. \LuaLaTeX{} does, but only for the italic font. pdf\LaTeX{} has them for both the italic and the upright font.} -\subsection{Additional whitespaces} +\subsection{Other extra glue in math mode} \label{sec:extraskips} \begingroup\MTversion{upright}\renewcommand\familydefault\sfdefault @@ -1611,6 +1592,159 @@ of |\begin{document}|), even when the §subdued§ option is in force. As a \endgroup +\subsection{Extended scope of the math alphabets commands} +\label{sec:mathxx} + +\begingroup +\MTversion{italic}\renewcommand\familydefault\sfdefault +% il faudra peut-être que j'annule cette façon qu'à mathastext de tripatouiller +% \familydefault... +\makeatletter\let\mst@doasterisk\relax\makeatother + +Ever since the initial version of the package, some characters usually +unaffected by the math alphabet commands \cs{mathbf}, \cs{mathtt}, +\cs{mathsf}\dots{} are declared to be of `variable family type', in order for +them to obey these commands: for example the hash sign $\#$ gives $\mathbf{\#}$ +if input as |$\mathbf{\#}$| (\mst, especially in its beginnings, wanted as many +characters as possible to be picked up from the text font and to behave +similarly to letters and digits). + +So it was especially frustrating that mathematical characters such as $+$, or +$<$, or $]$ could not be declared of `variable family' (in addition to being +picked up in the text font) as this would, for reasons of the inner workings of +\TeX{}, not be compatible with the automatically inserted spaces around them. + +A revolutionary ;-) novelty is introduced with version |1.2| of the package: +\begin{enumerate} +\item the pre-declared or user-declared (using the |amsmath| + \cs{DeclareMathOperator} or equivalent) operator names obey the math + alphabet commands,\footnote{contrarily to the next feature, this one is not + likely to create incompatibilities with other packages, so it is + activated by default.} +\item and, \emph{optionally}, all non alphabetical + characters\footnote{of course some of them are input preceded by a + backslash, and the backslash itself is input as \cs{backslash}.} treated by + \mst, \emph{i.e.}, if not disabled by options, + ${!}\,{?}\,{,}\,{:}\,{;}\,{+}\,{-}\,{=}\,{(}\,{)}\,{[}\,{]}\,{<}\,{>}\,{\{}\,{\}}$, + the asterisk $*$, and + $.\,/\,\vert\,\backslash\,{\#}\,{\$}\,{\%}\,{\&}$\footnote{% + ${\#}\,{\$}\,{\%}\,{\&}$ + obey the math alphabets since the initial version of \mst; the dot + $.$, the slash $/$, the vertical bar $\vert$ and the backslash + $\backslash$ do not have specific spacings inserted by \TeX{} around + them, and the procedure is then not a devilish one, this is why it + is made the default for these characters which are listed apart. The + math symbols \cs{mid} (which is $\vert$ with type \cs{mathrel}) and + \cs{setminus} ($\backslash$ with type \cs{mathbin}) are counted + among the `difficult' cases, not the `easy non-letters'.} will also obey + the math alphabet commands (when not used as delimiters). The + important thing is that the spaces added by \TeX{} before and after + are not modified. + +\end{enumerate} +Let us compare, for example, the new behavior of \cs{mathtt} and \cs{mathbf} +\MTmathoperatorsobeymathxx\MTnonlettersobeymathxx\MTeasynonlettersobeymathxx +\[ \mathtt{(\sin(n!)<\cos(m-p)?)}\qquad \mathbf{[\sin(x+y)=\cos(z-t)]}\] +with the traditional default behavior: +\MTmathoperatorsdonotobeymathxx\MTnonlettersdonotobeymathxx +\MTeasynonlettersdonotobeymathxx +\[ \mathtt{(\sin(n!)<\cos(m-p)?)}\qquad \mathbf{[\sin(x+y)=\cos(z-t)]}\] + +The first feature is activated by default, except of course for the normal and +bold math versions when the package was given the \emph{subdued} option. The +second feature is \emph{off} by default for the characters listed first. It is +\emph{on} for the `easy' cases +${\#}\,{\$}\,{\%}\,{\&}\,.\,/\,\vert\,\backslash$ (activating the feature for +them puts no constraint on the user input and should not be too upsetting to +other packages), and also for $*$ but only if this was required explicitely by +the option §asterisk§, as the user then is supposed to know that |$R^*$| is no +valid input anymore and should be replaced by |$R^{*}$|. The remaining `difficult' +cases create similar +constraints, which will be commented more upon next. The relevant commands are\\ +\mbox{}\hspace{2cm}\csb{MTmathoperatorsdonotobeymathxx}\\ +\mbox{}\hspace{2cm}\csb{MTnonlettersdonotobeymathxx}\\ +\mbox{}\hspace{2cm}\csb{MTeasynonlettersdonotobeymathxx}\\ +for deactivation and \\ +\mbox{}\hspace{2cm}\csb{MTmathoperatorsobeymathxx}\\ +\mbox{}\hspace{2cm}\csb{MTnonlettersobeymathxx}\\ +\mbox{}\hspace{2cm}\csb{MTeasynonlettersobeymathxx}\\ +for activation.\footnote{these commands are to be used outside of math mode. + Their scope is limited to the current \LaTeX{} environment or group. They use + the \cs{everymath} and \cs{everydisplay} mechanism so if the document needs to + modify these token lists it has to do so in a responsible manner, extending + not annihilating their previous contents.} \footnote{when in subdued mode, the + math alphabets are the default ones, not the ones modified by \mst to use the + document text fonts. As a result, matters of font encodings may then give + unexpected results, for example for $-$. On the present document page we + switched to a math version to escape from the |subdued| mode and avoid the + problem with \cs{mathbf\{-\}} giving in the normal (subdued) math version + {\MTversion{normal}\MTnonlettersobeymathxx$\mathbf-$\sffamily, when + `non-letters' are declared to obey math alphabets.}} + +\begin{framed} + \textbf{Important:} the package does \cs{MTnonlettersdonotobeymathxx} by + default. The reason is that activating the mechanism adds some constraints to + the way things must be input, adding + |\usepackage{mathastext}|{}\cs{MTnon\-letters\-obey\-mathxx} to a pre-existing + document might well create errors: + + All these characters treated by \mst, such + as |?|, |[|, |<| now represent (in math mode only!) \emph{two} `tokens' and + this will utterly confuse \TeX{} if some precautions are not taken: |$x^?$|, + |$R^+$| or |$\mathopen<A\mathclose>$| \emph{must} now be coded as |$x^{?}$|, + |$R^{+}$| and |$\mathopen{<}A\mathclose{>}$| (the rule is to do as if |?|, + |+|, |<| or |>| were each really \emph{two} characters). + + Even if this rule is respected in the document source, it is still a + possibility that incompatibilities with other packages will arise because \mst + does a `mathematical activation' of the characters which could be unexpected + and unchecked for by other packages. This is precisely the case with the + |amsmath| package, and the problem goes away by just making sure that + |amsmath| is loaded before \mst{} (generally speaking, \mst should be loaded + last after all packages dealing with math things). +\end{framed} + +The brace control sequences |\{| and |\}| have their own (supplementary) switch, +which is (even) less activated by default. The reason is that after +\csb{MTexplicitbracesobeymathxx}, they regrettably can not be used anymore as +delimiters: |\big\{| or |\big\}| cease to function and must be replaced by +|\big\lbrace| and |\big\rbrace|. But +\MTmathoperatorsobeymathxx\MTnonlettersobeymathxx\MTexplicitbracesobeymathxx we +can now enjoy $\mathtt{\{a, a>b\}}$, $\mathbf{\{a, a>b\}}$, $\mathsf{\{a, + a>b\}}$, or even $\mathnormalbold{\{a, a>b\}}$.\footnote{this last example + uses the \cs{mathnormalbold} additional alphabet defined by \mst.} + +There is no such restriction with $($, $)$ or the brackets $[$, $]$. When used +as delimiters though, they will become again unreactive to the math alphabets: +the same applies to $<$ and $>$ or to any of the other characters such as the +slashes $/$, $\backslash$, when they are used as delimiters. This is a rather +obvious restriction except possibly for the smallest size delimiters (the +so-called `small variants'), as all other sizes will be anyway absent from the +text fonts. Even the small variants may not be really available in the text +fonts: for example the standard $<$ used as a delimiter is in \LaTeX{} a +\cs{langle}: $\langle$. With standard \LaTeX{} |$\left< x\right>$| gives +$\langle x\rangle$. + + +Actually, \mst does try to pick up most of the `small variants' in the text +font: |$\left<x\right>$| gives $\left<x\right>$ (but |$\left<b\right>$| gives $\left<b\right>$.) If you don't like that use the +option §nosmalldelims§ (it is indeed perhaps a bit strange to have $\left< + x\right>$ next to $\left< X\right>$, again before blaming me, consider using +§nosmalldelims§.) At any rate, whether `small' or not, delimiters are not under +the extended law of math alphabets, this is a general rule of the way \mst +manages these things. + +Examples: |\mathbf{<a,b>}| gives $\mathbf{<a,b>}$. +|\mathbf{\left<a,b\right>}| gives $\mathbf{\left<a,b\right>}$. +|\mathbf{\mathopen{<}a,b \mathclose{>}}| gives $\mathbf{\mathopen{<} a,b + \mathclose{>}}$. +The \LaTeX{} standard behavior for +|\mathbf{\mathopen{<}a,b\mathclose{>}}| is +\endgroup +$\mathbf{\mathopen{<} a,b \mathclose{>}}$. + + + \subsection{Greek letters} The Computer Modern fonts are very light and thin in comparison @@ -1675,7 +1809,7 @@ following way: \begin{enumerate} \item in its presence, the §LGRgreek§ and §LGRgreeks§ options cease to have any effect in the normal and bold math versions, -\item §selfGreek(s)§, §eulergreek§ and §symbolgreek§ act normally, +\item §selfGreek§\unskip(s), §eulergreek§ and §symbolgreek§ act normally, they are not affected by the presence or absence of §subdued§. \end{enumerate} @@ -1703,11 +1837,11 @@ from the lowest to the highest priority: \item[§frenchmath§:] both lowercase and uppercase are in the same shape as the digits and operator names (most of the time this means ``upright shape'', but it can be otherwise), -\item[§itgreek,upgreek§:] both lowercase and uppercase are in the +\item[§itgreek§, §upgreek§:] both lowercase and uppercase are in the \cs{itdefault}, respectively the \cs{updefault} shape (at the time of loading the package or at the time of a subsequent call to \cs{Mathastext} or \cs{MathastextWillUse}), -\item[§itGreek,upGreek§:] same as above, but only for the uppercase +\item[§itGreek§, §upGreek§:] same as above, but only for the uppercase letters. \end{description} @@ -1729,7 +1863,7 @@ letters, in case of package options §LGRgreek§/§selfGreek§. They are §\MTitgreek§, §\MTupgreek§, §\MTitGreek§, §\MTupGreek§: these are used like the options and change only the shapes for the math versions which will be declared \emph{next} in the preamble; and -§\MTgreekfont\{name\_of\_font\}§ will tell the \emph{next} math +§\MTgreekfont§|{name_of_font}| will tell the \emph{next} math versions to use that font family. To use this command you need to know the (little) name of a suitable font family available in |LGR| encoding: for example |lmr|, |txr| (needs |txfontsb| @@ -1751,28 +1885,38 @@ font, as it applies basically only to a subset of the 32-127 ascii range, and in particular it does not know how to use a given Unicode font simultaneously for Latin and Greek letters. Again the user is strongly advised to look at |mathspec| and |unicode-math|. + +Let me point out explicitely that \mst has not been tested in any systematic +manner under the Unicode engines; and that it is expected to be most definitely +incompatible with |unicode-math|, although your mileage may vary and some +features may appear to work. -When using \mst with either \XeTeX{} or \LuaLaTeX{} it is recommended to use -the |fontspec| package. Else, some of the encoding dependent things done by -\mst like using the en-dash character to get a minus sign in math mode will -not be put in place. Furthermore, it is \emph{necessary} to load |fontspec| +When using \mst with either \XeTeX{} or \LuaLaTeX{} it is recommended to use the +|fontspec| package. Else, some of the encoding dependent things done by \mst +like using the en-dash character to get a minus sign in math mode will not work +correctly. Furthermore, it is \emph{necessary} to load |fontspec| with its |no-math| option, and this \emph{must} happen before loading \mst. \begin{framed} Use |fontspec| with its - \emph{no-math} option, and load it \emph{prior} to \mst. + \emph{no-math} option, and load it \emph{prior} to \mst. For example, when + using |polyglossia| one should presumably say: + \centeredline{|\PassOptionsToPackage{no-math}{fontspec}|} before the + |\usepackage{polyglossia}| as |fontspec| will then be loaded in a manner + compatible with \mst. \end{framed} \begin{framed} The |amsmath| package, if used, \emph{must} be loaded \emph{prior} to \mst. \end{framed} -A little piece of the functionality of \mst is less fully -realized under the \LuaLaTeX{} engine than it is with -\XeTeX{}. This is a temporary situation as the needed feature -of \LuaLaTeX{} has been implemented in its latest development -release. I will update \mst when these binaries will have -reached the distribution stage. +% obsolte with release 1.3: +% A little piece of the functionality of \mst is less fully +% realized under the \LuaLaTeX{} engine than it is with +% \XeTeX{}. This is a temporary situation as the needed feature +% of \LuaLaTeX{} has been implemented in its latest development +% release. I will update \mst when these binaries will have +% reached the distribution stage. I already mentioned in the section \ref{sec:ic} the fact that the italic corrections were not available for OpenType fonts @@ -1859,8 +2003,8 @@ And now the same thing with fonts available on Mac OS X: \TEST{Hoefler}\TEST{Typewriter}\TEST{bold} \end{document} \end{verbatim} -The test files which will be produced by running |latex| on -|mathastext.dtx| are more extent. +% The test files which will be produced by running |latex| on +% |mathastext.dtx| are more extent. \subsection{Compatibility issues}\label{sec:compat} @@ -1919,9 +2063,11 @@ home: $:$ \end{document} \end{verbatim} -\fbox{DO NOT DO THIS AT HOME}\thinspace: it creates an infinite loop. +\fbox{DO NOT DO THIS AT HOME}\thinspace: it creates an infinite +loop.\footnote{This seems to still be the case with Babel |3.9f| and frenchb.ldf + |2.6e|, as tested on Sep. 2, 2013.} This is due to the fact that the colon is simultaneously active (this is -made by |babel| at begin document) and mathematically active (done by +made by |babel+frenchb| at begin document) and mathematically active (done by |mathtools| in the preamble). The interaction gives an infinite loop. Such a situation will be cured by |mathastext|, even loaded before |mathtools|, \emph{if} use is made of \cs{MTnonlettersobeymathxx}. @@ -1934,7 +2080,7 @@ mathematically active remained true). So far I have briefly described the problem of document active - characters (see the test file |testmathastextalphabets.tex| for more + characters (see the test file |mathastexttestalphabets.tex| for more explanations and illustrations, and the commented source code of the package). Pure mathematical activation revealed an incompatibility of another type with |amsmath|. To fix it, \mst now replaces @@ -1988,14 +2134,14 @@ mathematically active remained true). \subsection{Summary of main options} \begin{description} -\item[{§italic, frenchmath§}:] italic letters in +\item[{§italic§, §frenchmath§}:] italic letters in math, upright uppercase if §frenchmath§. \item[{§subdued§}:] acts in a subdued way. The \LaTeX{} normal and bold math versions are left (quasi) unchanged. With version |1.15e| of the package this statement applies also to the math alphabets \cs{mathbf}, \cs{mathit}, \cs{mathsf}, and \cs{mathtt} (and not only to \cs{mathnormal} and \cs{mathrm} as in previous versions.) -\item[{§LGRgreek, eulergreek, symbolgreek§}:] the +\item[{§LGRgreek§, §eulergreek§, §symbolgreek§}:] the Greek letters will be taken, respectively from the text font itself (in |LGR| encoding), or from the Euler font, or from the Postscript Symbol font. @@ -2010,7 +2156,7 @@ math, upright uppercase if §frenchmath§. smaller than the one one would get without the package. \item[{§defaultmathsizes§}:] \mst sets up bigger sizes -for subscripts (it also copies code from the §moresize§ package to redefine +for subscripts (it also copies code from the |moresize| package to redefine \cs{Huge} and define \cs{HUGE}). Use this option to prevent it from doing so. \item[{§defaultalphabets§}:] by default, \mst redeclares the math @@ -2060,11 +2206,11 @@ Note though that the quote ' will be typeset as a derivative sign $'$. \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 + |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 + accross the |h| will come from the original default math font for letters (usually |cmmi|), and - furthermore its placement on the §h§ can be + 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 @@ -2127,7 +2273,7 @@ there is no such limitation and all 8bit-encodings \item[fontspec:] one more note to users of \XeTeX{}/\LuaLaTeX{} with |fontspec|: it has to be -loaded {with the option} §no-math§, +loaded {with the option} |no-math|, {and before} \mst. \item[vec accent:] The default \cs{vec} accent is not @@ -2187,19 +2333,27 @@ correctly. versions use the same font encoding. \end{framed} - \subsection{Commands} +% 2 septembre 2013; finalisé 22:58 +\makeatletter +\def\@jfendshrtverb #1#2§{\@ifundefined{FLAG#2}% + {\color{blue}\ttfamily #1#2\endgroup + \global\@namedef{FLAG#2}{!}\label{#2}}% + {\hyperref[#2]{\ttfamily #1#2}\endgroup}\xspace} +\makeatother + +\subsection{Commands} \subsubsection{Preamble-only commands} These commands mainly facilitate the definition of math versions, in a \mst extended sense. It is thus not necessary to use them to activate the package basic functionalities, loading \mst is enough. -\begin{itemize} +\begin{enumerate}[label=$\bullet$] \item §\Mathastext§ (or §\mathastext§): reinitializes \mst according to the current defaults of encoding, family, series and shape.\footnote{updates also - the font and shapes for the Greek letters (§LGRgreek§ option), and the skips + the font and shapes for the Greek letters (|LGRgreek| option), and the skips to be inserted after the symbols $\oldforall$ and $\oldexists$, see \emph{infra.}} - \begin{itemize} + \begin{enumerate}[label=$\bullet$] \item It can also be preceded optionally by one or more of\footnote{these commands exist also with long names: \texttt{\char92Mathastextencoding}, @@ -2217,7 +2371,7 @@ basic functionalities, loading \mst is enough. will be in italic shape. Once used their effect applies to all succeeding calls to \cs{Mathastext}, and can only be undone by using them again. - \item \textbf{math versions:} starting with version |1.12| \cs{Mathastext} + \item \textbf{math versions:} starting with version |1.12| \csb{Mathastext} accepts an optional argument \oarg{version\_name}, 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 @@ -2226,7 +2380,7 @@ basic functionalities, loading \mst is enough. \cs{DeclareMathVersion} macro. Do not use ``normal'' or ``bold''; this is already taken care of by the initial loading of the package or a later command \cs{Mathastext} without any optional argument.} - \end{itemize} + \end{enumerate} \item §\MTWillUse§\oarg{ltsh}\marg{enc}\marg{fam}\marg{ser}\marg{sh}: @@ -2243,16 +2397,15 @@ basic functionalities, loading \mst is enough. declares that the document will have access to the font with the specified characteristics, under the math version name \meta{name}. For - example:\\ - \hbox - to\hsize{\hss§\MTDeclareVersion[sc]\{palatino\}\{T1\}\{ppl\}\{b\}\{sl\}§\hss} + example: + \centeredline{|\MTDeclareVersion[sc]{palatino}{T1}{ppl}{b}{sl}|} declares under the name |palatino| a version where mathematics will be typeset 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 \mst was loaded - with the §italic§ option, then the default letter shape + with the \blueit{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} @@ -2270,16 +2423,61 @@ specifies which bold \meta{factor}. \item §\MTitgreek§, §\MTupgreek§, §\MTitGreek§, §\MTupGreek§: optional commands, active only in -the case of the §LGRgreek§ option, to decide the shape of the +the case of the \blueit{LGRgreek} option, to decide the shape of the Greek letters in the versions which will be declared next. \item §\MTgreekfont§\marg{fontfamily}: optional command with a mandatory argument which specifies the font for Greek letters in all \mst math - versions declared afterwards via \cs{Mathastext} or \cs{MTDeclareVersion}. Only effective with §LGRgreek§ option. -\end{itemize} + versions declared afterwards via \cs{Mathastext} or \cs{MTDeclareVersion}. Only effective with \blueit{LGRgreek} option. +\end{enumerate} \subsubsection{Commands usable everywhere}\label{sec:cmds} -\begin{itemize} +\begin{enumerate}[label=$\bullet$]\DeleteShortVerb{\|}% + +\item §\MTsetmathskips§\marg{a-z|A-Z}\marg{muglue}\marg{muglue}: + \MakeShortVerb{\|}is used to specify extra skips (or rather mu glue) to be + inserted in math mode, before and after a letter. The rationale is that + standard text fonts used in math mode may sometimes cause glyph (near-) + collisions with math symbols, as \TeX{} has some implicit expectations on the + design of fonts for math letters. Random (silly) examples: + \centeredline{|\MTsetmathskips{x}{\medmuskip}{\thickmuskip}|} \centeredline + {|\MTsetmathskips{A}{.5mu}{2.3mu plus .5mu minus .5mu}|} and the effect: + \begingroup\MTversion{italic}\MTsetmathskips{x}{\medmuskip}{\thickmuskip}% + \MTsetmathskips{A}{.5mu}{2.3mu plus .5mu minus .5mu}% + $vwxyzABC^{vwxyzABC}$\endgroup. The effect obeys the usual \LaTeX{} scoping + rules. + + Note that contrarily to the \csb{MTexistsskip}, \csb{MTforallskip}, and + \csb{MTprimeskip} commands described below, these extra skips (which may be + specified in the preamble) are not recorded in the definition of the math + version (as defined via \cs{Mathastext} with its optional argument or via + \cs{MTDeclareVersion}). Rather the skips once set hold thoughout the document + until modified or canceled, independently of the switches of math versions (of + course, \mst cancels the effect in the normal and bold math versions if + package option \blueit{subdued} was used).\DeleteShortVerb{\|} + +\item §\MTunsetmathskips§\marg{a-z|A-Z}: \MakeShortVerb{\|} cancels the effect + of a previous \cs{MTsetmathskips} for that letter (this is better than setting + the skips to |0mu|, which would still prevent formation of ligatures when the + letter is used inside a \cs{mathbf} for example). Example (using a version + with upright Latin + Modern): \centeredline + {|\MTsetmathskips{f}{8mu}{0mu}$gffg\MTunsetmathskips{f}ff\mathbf{ff}$|} + gives: \begingroup\MTversion{upright}% + \MTsetmathskips{f}{8mu}{0mu}$gffg\MTunsetmathskips{f}ff\mathbf{ff}$\endgroup. + The ligature was correctly formed. + +\item §\MTmathstandardletters§: this command cancels the mechanism (used by the + package to insert the extra skips as specified by \cs{MTsetmathskips}, and the + italic corrections) of `math activation' of the letters. + +\item §\MTmathactiveletters§: this is done by default by the package (initially + and each time a switch of math version occurs, except for the normal and bold + math versions under the \blueit{subdued} option). It allows the + mathematical activation of the Latin letters a to z, A to Z which is used to + add user-specified optional spaces around the letters, or (automatically if + the font is not italic nor slanted) the italic corrections. Canceled by + \cs{MTmathstandardletters}. \item §\MTexistsskip§\marg{math glue}: specifies the amount of skip or more generally glue to put after each $\oldexists$ @@ -2287,32 +2485,32 @@ Greek letters in the versions which will be declared next. matter) often appear to be positioned a bit too close to the quantifier: $\oldexists\mathrm{B}$. The package default is to add a |1mu| skip (this default is set to zero in the case - of §italic§): $\oldexists\mskip 1mu\mathrm{B}$. One can + of \blueit{italic}): $\oldexists\mskip 1mu\mathrm{B}$. One can change the default with the following syntax: |\MTexistsskip{2mu plus 1mu minus 1mu}|, which if used in the preamble and followed with a \cs{Mathastext} command (or \cs{MTDeclareVersion}), will be recorded in the definition of this math version (and subsequent ones). One may also use the command at any time in the document. In the case of the - option §subdued§, the skips are set to zero for the normal - and bold math versions. In the case of the option §italic§, + option \blueit{subdued}, the skips are set to zero for the normal + and bold math versions. In the case of the option \blueit{italic}, the default skip is set to zero. \item §\MTforallskip§\marg{math glue}: the default is to add a |.6667mu| math skip after each $\oldforall$ (except with the - option §italic§ for which the default is set to zero). + option \blueit{italic} for which the default is set to zero). Compare $\oldforall\mskip.6667mu\mathrm{F}$ (has the skip) with $\oldforall\mathrm{F}$ (has no skip). Use this command in the preamble to set up the skip or glue to be used in the \emph{next to be declared} math versions. In the case of the - option §subdued§, the skips are set to be zero by default in + option \blueit{subdued}, the skips are set to be zero by default in the normal and bold math versions. In the case of the option - §italic§, the default skip is zero for all math versions. + \blueit{italic}, the default skip is zero for all math versions. One may use the command also at any time in the document. \item §\MTprimeskip§\marg{math glue}: the default is to add a |0.5mu| skip - before the derivative glyph, except for the §italic§ option, and except in - the normal and bold math versions with option §subdued§. The same + before the derivative glyph, except for the \blueit{italic} option, and except in + the normal and bold math versions with option \blueit{subdued}. The same observations apply.\footnote{if \cs{begin\{document\}} is not followed with \cs{MTversion\{normal\}}, the latest values set in the preamble by these commands are used at the beginning of the document, @@ -2329,12 +2527,12 @@ Greek letters in the versions which will be declared next. \item §\MTmathoperatorsobeymathxx§, §\MTmathoperatorsdonotobeymathxx§, §\MTnonlettersobeymathxx§, §\MTnonlettersdonotobeymathxx§, - §\MTexplicitbra\-cesobeymathxx§, §\MTexplicitbracesdonotobeymathxx§, + §\MTexplicitbracesobeymathxx§, §\MTexplicitbracesdonotobeymathxx§, §\MTeasynonlettersobeymathxx§, §\MTeasynonlettersdonotobeymathxx§: these commands without argument must be used \emph{outside} of math mode. \mst - issues automatically §\MTmathoperatorsobeymathxx§, - §\MTeasynonlettersobeymathxx§ and and - §\MTnonletters\textbf{donot}obeymathxx§ at the time of + issues automatically \cs{MTmathoperatorsobeymathxx}, + \cs{MTeasynonlettersobeymathxx} and + \cs{MTnonlettersdonotobeymathxx} at the time of \cs{usepackage\{math\-as\-text\}}. See the discussion in section \ref{sec:mathxx}. The `explicit braces' activation works only when \cs{MTnonletters\-obeymathxx} has already been used. @@ -2345,10 +2543,7 @@ Greek letters in the versions which will be declared next. shape of the letters used in math mode is neither italic nor slanted. It is reissued each time a math version is entered, under the same conditions (and except of course for the normal and bold subdued math versions). Its effect is - local to the group or environment in which it has been issued. From inside - math mode, it will only revert an earlier \cs{MTnoicinmath} from the same math - group, and the math mode itself must have been entered with the italic - corrections on. + local to the group or environment in which it has been issued. \item §\MTnoicinmath§: this command deactivates the package added italic corrections. It can be used inside as well as outside @@ -2356,7 +2551,7 @@ Greek letters in the versions which will be declared next. remains local to the group or environment where it was issued. -\item §\MTICinmath§, §\MTnoICinmath§: these commands set up the italic +\item §\MTICinmath§, §\MTnoICinmath§: these commands activate the italic corrections only for the uppercase letters. Using §\MTICinmath§ de-activates the added italic corrections for uppercase letters in the arguments of \emph{all} the math alphabet commands. @@ -2370,14 +2565,14 @@ Greek letters in the versions which will be declared next. math alphabets.} To cancel its effect either enclose it in a group or environment or re-issue \cs{MTicinmath} after it. -\end{itemize} +\end{enumerate} \subsubsection{Body-only commands} -\begin{itemize} -\item §\MTversion§\oarg{nametext}\marg{namemath}:\footnote{\cs{MTversion} - is also available as \cs{MTVersion}, \cs{Mathastextversion} and - \cs{mathastextversion}.} in the absence +\begin{enumerate}[label=$\bullet$] +\item §\MTversion§\oarg{nametext}\marg{namemath}, also known as + §\Mathastextversion§ (and as \cs{MTVersion}, and + \cs{mathastextversion}): in the absence of the optional argument changes simultaneously the text and the math fonts to be the fonts corresponding to the version \meta{namemath}. If there is an @@ -2392,18 +2587,18 @@ Greek letters in the versions which will be declared next. mode and if it is not \emph{italic} or \emph{slanted} it activates the automatic insertion of italic corrections in math mode, for better positioning of subscripts. See the discussion in the section \ref{sec:ic}. With the - §frenchmath§ option the package checks separately whether to insert the italic + \blueit{frenchmath} option the package checks separately whether to insert the italic corrections after lowercase and/or uppercase letters. - With the §subdued§ option, \cs{MTversion\{normal\}} and \cs{MTversion\{bold\}} + With the \blueit{subdued} option, \cs{MTversion\{normal\}} and \cs{MTversion\{bold\}} do \cs{MTmathoperatorsdonotobeymathxx} (and \cs{MTnonlettersdonotobeymathxx}). -\end{itemize} +\end{enumerate} All further commands are for math mode only. -\begin{itemize} +\begin{enumerate}[label=$\bullet$] \item §\hbar§: this is constructed - (in a way compatible with the §italic§ option) from - the §h§ letter and the \={ } accent from the + (in a way compatible with the \blueit{italic} option) from + the |h| letter and the \={ } accent from the \mst 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| @@ -2423,7 +2618,7 @@ commands are not overwritten, so the original commands can be saved under other names before |\usepackage{mathastext}|, to be used in case of necessity (this is what option |subdued| does.) \item §\mathnormalbold§: a bold version of \cs{mathnormal}. Differs -from §\mathbf§ when the §italic§ option has been used, or when use +from §\mathbf§ when the \blueit{italic} option has been used, or when use has been made of §\MTlettershape§ to specify a shape for letters distinct from the one for digits and operator names, or similarly when the math version has been declared via §\MTDeclareVersion§ with @@ -2436,11 +2631,11 @@ its optional parameter for shape of letters. 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. +all the glyphs of the Euler font, if option \blueit{eulergreek} (or +\blueit{eulerdigits}) was passed to the package. \item §\MathPSymbol§: math alphabet to access the Symbol font. -\item when one of the options §symbolgreek§, - §eulergreek§, or §selfGreek§ is passed to the package +\item when one of the options \blueit{symbolgreek}, + \blueit{eulergreek}, or \blueit{selfGreek} is passed to the package the capital Greek letters which look like their Latin counterparts acquire names: \cs{Digamma}, \cs{Alpha}, \cs{Beta}, \cs{Epsilon}, \cs{Zeta}, @@ -2459,7 +2654,7 @@ all the glyphs of the Euler font, if option §eulergreek§ (or in the documents. \item \hypertarget{symbolmisc}{Miscelleneous mathematical symbols} from the postscript Symbol font are made available (or replaced) by option - §symbolmisc§.\footnote{option §asterisk§ is also required to treat the $*$. + §symbolmisc§.\footnote{option \cs{asterisk} is also required to treat the $*$. Recall from section \ref{sec:mathxx} that the asterisk in math mode (also when using the control sequence \cs{ast}) appears then to \TeX{} to be a composite object.} @@ -2498,11 +2693,11 @@ all the glyphs of the Euler font, if option §eulergreek§ (or |$\displaystyle\defaultprod$| or |\[\textstyle\defaultprod\]|, because they would not work with the \cs{prod} and \cs{sum} as re-defined by the package. -\end{itemize} +\end{enumerate} \subsection{Complete list of options} - \begin{itemize} + \begin{enumerate}[label=$\bullet$] \item §basic§: only mathastextify letters and digits. \item §subdued§: do not change the default fonts or the math alphabets in math mode for the normal and bold math versions, turn on the \mst-ification only @@ -2515,7 +2710,7 @@ all the glyphs of the Euler font, if option §eulergreek§ (or \item §frenchmath§: italic lowercase Latin letters, but uppercase Latin letters in the same font as for digits and operator names. In general this means that they will be - upright. In case of the §LGRgreek§ option, §frenchmath§ + upright. In case of the \blueit{LGRgreek} option, §frenchmath§ influences also the shape of the Greek letters. \item §endash§, §emdash§: use the text font en-dash (\textendash) or even the em-dash (\textemdash, but this seems crazy) for the minus sign @@ -2578,7 +2773,7 @@ letters. \item §upgreek§, §itgreek§, §upGreek§, §itGreek§: options to tell to use \cs{itdefault} or \cs{updefault} for the lowercase and uppercase (or only the uppercase) Greek letters. Only operant - in the case of the §LGRgreek(s)§ and §selfGreek(s)§ options. + in the case of the |LGRgreek(s)| and |selfGreek(s)| options. \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 @@ -2604,7 +2799,7 @@ additionally tells \mst not to create the \cs{mathnormalbold} alphabet either. \item §fouriervec§: provides a \cs{fouriervec} command. The user can then add in the preamble \cs{let}\cs{vec}$=$\cs{fouriervec}. There is also always available a ``poor man'' vec accent \cs{pmvec} for upright letters. - \end{itemize} + \end{enumerate} Thanks to Kevin~\textsc{Klement}, Tariq~\textsc{Perwez} and Ricard~\textsc{Torres} for sending bug reports and feature requests when @@ -2650,6 +2845,29 @@ Numerous examples will be found there:\\ \begin{multicols}{2} \begin{verbatim} +1.3 [2013/09/02] + + * commands \MTsetmathskips and \MTunsetmathskips added. + + * commands \MTmathactiveletters and \MTmathstandardletters to govern the math +activation of letters independently of its use for insertion of the italic +corrections (\MTicinmath and \MTnoicinmath correspondingly modified). + + * the new \luatexUmathcodenum as available since TL2013 allows identical +treatment by mathastext of = and - under both LuaTeX and XeTeX. + + * \newmcodes@ of amsmath is left untouched in case of option basic. + + * a sentence containing | which was written to +the log during the loading caused a problem if | was active +(typically if \MakeShortVerb{\|} was added to the preamble prior to the loading +of mathastext). + + * some preemptive measures taken regarding things such as \mid, \lbrace, and +\rbrace, as some packages define these things in manners which made the +re-definitions done by mathastext issue errors. + + 1.2f [2013/01/21] * minor code improvements. Change log added to the user manual. @@ -2668,7 +2886,7 @@ appears to originate in the Babel system, as it is then possible to modify appropriately the Babel macros \user@active<char> and \normal@char<char>. The relevant issues are discussed in section 2.10 of the user manual, in the test -file testmathastextalphabets.tex, and in the source code +file mathastexttestalphabets.tex, and in the source code comments to the macro \mst@mathactivate. The inherent incompatibility of Babel with packages having made mathematically active the characters itself makes document @@ -2707,7 +2925,7 @@ alphabet commands. * documentation extended and improved. -~1.2c [2012/12/31] +1.2c [2012/12/31] * mathastext now inserts automatically after all (latin) letters in math mode their italic corrections, if the font @@ -2917,7 +3135,7 @@ encodings, Unicode inclusive. \llap{\theCodelineNo\ \hskip\@totalleftmargin}}% \fi \string\ProvidesPackage\string{\pkgname\string}\par -\noindent\space [\pkgdate\space\pkgversion\space\pkgdescription]\par +\noindent\space [\pkgdate\space v\pkgversion\space\pkgdescription]\par \nointerlineskip \global\@inlabelfalse \endtrivlist @@ -2934,12 +3152,30 @@ encodings, Unicode inclusive. % %</none> %<*package> +% The usual catcode regime for letters and digits is assumed and some characters +% such as `, ", = are supposed to be of catcode other at the time of loading of +% \mst. The source of \mst takes precautions for some other characters such as +% the right quote ', which may thus be active with no harm at the time of +% loading. By the way, I think \LaTeX2e should have provided to authors a +% standard macro to be used at the beginning of a style file to make sure the +% catcodes are standard. Shorthands created by Babel should be mostly no problem +% as Babel does the activation only at the |\begin{document}|. +% +% The comments have been accumulating through successive versions with only +% partial efforts to achieve some sort of coherence; as a result some are a +% bit strange or obsolete to various degrees. +% +% Particularly, \emph{mentions of the Babel system refer to the 3.8 version, +% thus some remarks may have been made invalid or obsolete by the newer 3.9 +% version released in 2013 by Javier Bezos.} +% % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} % \end{macrocode} -% Testing for XeTeX and LuaLaTeX. I should load some package for this -% code which I copied somewhere. 2013/01/01: at least the code now does not -% overwrite previous \cs{ifXeTeX} or \cs{ifLuaTeX}... +% Testing for XeTeX and LuaLaTeX. I should load some package for this code which +% I copied somewhere (perhaps from the |iftex| package? or some post on +% |comp.text.tex|). 2013/01/01: at least +% the code now does not overwrite previous \cs{ifXeTeX} or \cs{ifLuaTeX}... % \begin{macrocode} \newif\ifmst@XeTeX \begingroup\expandafter\expandafter\expandafter\endgroup @@ -3048,8 +3284,10 @@ encodings, Unicode inclusive. \let\mst@doasterisk\relax}}} \newif\ifmst@nospecials \DeclareOption{nospecials}{\mst@nospecialstrue} -\DeclareOption{basic}{\ExecuteOptions{noparenthesis,nopunctuation,% -noplusnominus,noequal,noexclam,nospecials,nolessnomore}} +\newif\ifmst@basic % 1.3 to avoid unnecessary patch of amsmath \newmcodes@ +\DeclareOption{basic}{\mst@basictrue + \ExecuteOptions{noparenthesis,nopunctuation,% + noplusnominus,noequal,noexclam,nospecials,nolessnomore}} %% \newif\ifmst@nohbar \DeclareOption{nohbar}{\mst@nohbartrue} @@ -3134,7 +3372,8 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % \begin{macrocode} \newif\ifmst@subdued \DeclareOption{subdued}{\mst@subduedtrue} -\DeclareOption*{\PackageWarningNoLine{mathastext}{Unknown option `\CurrentOption\string'}} +\DeclareOption*{\PackageWarningNoLine{mathastext} + {Unknown option `\CurrentOption\string'}} % \end{macrocode} % \end{macro} % \begin{macrocode} @@ -3209,27 +3448,30 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \def\mst@active@math@prime{\sp\bgroup\mskip\mst@prime@muskip\prim@s} {\catcode`\'=12 \gdef\mst@modifyprime{\mst@mathactivate'{}\mst@active@math@prime}} +\newcommand*\MTnormalprime{\let\mst@modifyprime\relax} \AtBeginDocument{ \everymath\expandafter{\the\everymath \mst@modifyprime \MTnormalprime} \everydisplay\expandafter{\the\everydisplay \mst@modifyprime \MTnormalprime} } -\newcommand*\MTnormalprime{\let\mst@modifyprime\relax} % \end{macrocode} % \end{macro}\end{macro}\end{macro}\end{macro} % \begin{macro}{\MTexistsskip} % \begin{macro}{\MTforallskip} % \begin{macro}{\MTprimeskip} -% |1.15e|: These user macros set up the amount of mu skip or glue after -% \cs{exists} or \cs{forall}, on a math version basis (the normal and +% |1.15e|: These user macros set up the amount of muglue after +% \cs{exists} or \cs{forall}. The normal and % bold math versions inherit the same skips; these skips are set to -% zero in case of the subdued, or the italic option), as each -% \cs{Mathastext}\oarg{version\_name} stores the then current values in +% zero in case of the subdued, or the italic option. Each command +% \cs{Mathastext}\oarg{version\_name} stores the current values in % the definition of the math version. % % |1.2|: \cs{MTprimeskip} added, the silly \cs{@onlypreamble} are removed % and the macros are modified to have immediate effect in the document, % independently of their possible use in the preamble for the math % versions to store values. +% +% Note (september 2013): the names were badly chosen; \cs{MTsetprimeskipto} +% for example would have been a better choice. % \begin{macrocode} \newcommand*\MTexistsskip[1]{\edef\mst@exists@skip{#1}% \mst@exists@muskip\mst@exists@skip\relax} @@ -3262,23 +3504,25 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % already made the parenthesis (mathematically) active. And % \cs{boldsymbol} from |amsbsy| disables the \cs{@nomath} switch and % executes \cs{mathversion\{bold\}} directly in math mode. So we have a -% problem with \cs{resetMathstrut@}. |lualatex-math| replaces -% \cs{resetMathstrut@} with its own version (which also looks at |)|). -% With |lualatex| no error is signaled when \mst has done -% |\mathcode`(="8000|, but the \cs{Mathstrutbox@} is then wrong. +% problem with \cs{resetMathstrut@}. +% +% |lualatex-math| replaces \cs{resetMathstrut@} with its own version +% (which also looks at |)|) and no error is signaled when \mst has done +% |\mathcode`(="8000|, but the \cs{Mathstrutbox@} created by \mst is then +% wrong. % % The replacement macro avoids a potentially math active |(|. It % assumes that there is still some appropriate glyph in slot |40| of % |operators| and it sets the height and depth of \cs{Mathstrutbox@} % to be large enough to accomodate both this glyph and the one from the % mathastext font (both in the current math version). If option -% |noparen| was used, we leave everything untouched. +% |noparenthesis| was used, we leave everything untouched. % \begin{macrocode} \ifmst@noparen\else \AtBeginDocument{ \@ifundefined{resetMathstrut@}{}{% - \PackageWarningNoLine{mathastext}{a custom version of the amsmath macro^^J% - \space\space\space\string\resetMathstrut@\space will replace the original} + \PackageWarningNoLine{mathastext}{% + \string\resetMathstrut@\space from amsmath replaced by custom version} \ifmst@symboldelimiters \def\resetMathstrut@{% \setbox\z@\hbox{\the\textfont\symmtpsymbol\char40 @@ -3349,7 +3593,7 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % an imitation of what Babel does). So the final decision is to not % do anything when the character is catcode active \emph{except} it % it seems that Babel is behind the scenes. -% +% % Incidently, Babel and TikZ are buggy with characters which are % mathcode actives. For example the combination of |[french]{babel}| % and |mathtools| with its |centercolon| turns |$:$| into an @@ -3437,9 +3681,11 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % italic corrections. See the \hyperref[sec:ic]{discussion} in the user % manual. Ironically I wrote the code initially for the |italic| option only % to realize later it was more suitable to using an \emph{upright} text font -% in math mode! +% in math mode! So this mathematical activation of the letters is not done if +% the font shape is detected to be |it| or |sl|; to bypass this the command +% \cs{MTicinmath} is provided. % -% Note: |1.2e| [2013/01/10] corrects a bad oversight of |1.2b| in +% |1.2e| [2013/01/10] corrects a bad oversight of |1.2b| in % \cs{mst@mathactivate} which made the reproduction of the user % manual illustrations with |$f_i^i$| impossible. As % \cs{mst@mathactivate} was used also to get the non-letters obey @@ -3449,8 +3695,7 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % ligatures when the letters are arguments to the math alphabet % commands, the added macro \cs{mst@itcorr} then expands to nothing). % -% \cs{MTnoicinmath} can be used inside math mode (and has -% its scope limited by the group of course). +% \cs{MTnoicinmath} can also be used from inside math mode. % % \cs{MTicalsoinmathxx} is destined to be used inside % \cs{mathnormalbold} as I didn't want to add the complication of @@ -3458,10 +3703,20 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % perhaps come back if I have time to spend on % |source2e|). % -% \cs{MTicinmath} can also be used inside math mode, -% but it can then only revert an earlier -% \cs{MTnoicinmath} inside the same math group. So the -% math mode had to be entered with italic corrections on. +% \cs{MTicinmath} can also be used inside math mode, to revert an +% earlier \cs{MTnoicinmath} from inside the same math group: the math mode +% had to be entered with the math activation of letters allowed. +% \begin{macro}{\MTmath-}\begin{macro}{activeletters} +% \begin{macro}{\MTmath-}\begin{macro}{standardletters} +% |1.3| [2013/09/02] extends the use of mathematically active letters to +% allow the user to specify muglue before and after the letter itself (see +% \cs{MTsetmathskips}, below). +% Mathematically active letters were previously used only to add the italic +% correction; the math activation has now been separated and put in +% \cs{MTmathactiveletters}. There is also \cs{MTmathactiveLetters} to allow +% math activation only for the uppercase letters. To cancel the (now default, +% even with option |italic|) math +% activation of letters, there is \cs{MTmathstandardletters}. % \begin{macro}{\MTnonletters-}\begin{macro}{obeymathxx} % \begin{macro}{\MTnonletters-}\begin{macro}{donotobeymathxx} % \begin{macrocode} @@ -3475,20 +3730,18 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \newcommand*\MTeasynonlettersobeymathxx{\let\mst@theeasy\the} \MTnonlettersdonotobeymathxx % 1.2c !!! \MTeasynonlettersobeymathxx +\newcommand*\MTmathactiveletters{\let\mst@thef\the \let\mst@theF\the} +\newcommand*\MTmathactiveLetters{\let\mst@theF\the} +\newcommand*\MTmathstandardletters{\let\mst@thef\@gobble \let\mst@theF\@gobble} \newcommand*\MTicinmath{% - \let\mst@thef\the - \let\mst@theF\the + \MTmathactiveletters \def\mst@itcorr{\ifnum\fam=\m@ne\/\else\ifnum\fam=\symmtletterfont\/\fi\fi}% \let\mst@ITcorr\mst@itcorr} -\newcommand*\MTnoicinmath{% also usable in math mode - \def\mst@itcorr{}\def\mst@ITcorr{}% - \let\mst@thef\@gobble\let\mst@theF\@gobble} -\newcommand*\MTICinmath{% - \let\mst@theF\the +\newcommand*\MTICinmath{% + \MTmathactiveLetters \def\mst@ITcorr{\ifnum\fam=\m@ne\/\fi}} -\newcommand*\MTnoICinmath{% also usable in math mode - \def\mst@ITcorr{}% - \let\mst@theF\@gobble} +\newcommand*\MTnoicinmath{\def\mst@itcorr{}\def\mst@ITcorr{}} +\newcommand*\MTnoICinmath{\def\mst@ITcorr{}} \newcommand*\MTicalsoinmathxx{% \ifx\mst@itcorr\@empty\else\def\mst@itcorr{\/}\fi \ifx\mst@ITcorr\@empty\else\def\mst@ITcorr{\/}\fi} @@ -3507,6 +3760,41 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % \end{macrocode} % \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro} % \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro} +% \end{macro}\end{macro}\end{macro}\end{macro} +% \begin{macro}{\MTsetmathskips} +% \begin{macro}{\MTunsetmathskips} +% |1.3| [2013/09/02]: user level command to specify extra spaces in math mode +% around the letters (only the 7bit a,b,..,z and A,B,..,Z). First parameter is +% the letter, second is the math skip to be inserted before, and third the +% skip to be inserted after; for example \cs{thickmuskip} or explicitely +% |0.1mu| or |0.1mu plus 0.1mu minus 0.1mu|. +% +% For this, letters are made mathematically active. This is now the package +% default (version |1.2| did this only in the absence of option |italic|, or +% more precisely when the font used was not of shape |it| or |sl|). But if +% \cs{MTsetmathskips} has not been used for that letter, the only effect of +% the math activation is, as in |1.2|, to add the italic correction +% automatically, except when the font shape is detected to be |it| or |sl|; in +% these latter cases, although mathematically active, the letter acts in the +% standard way. +% +% The command \cs{MTmathstandardletters} turns off math activation and its +% effects for all letters. +% +% Ligatures within the argument of a math alphabet command are impeached by +% skips; so \cs{MTunsetmathskips} is provided to cancel the skips for one +% specific letter (|f| for example). +% \begin{macrocode} +\newcommand*\MTsetmathskips[3]{% + \@namedef{mst@before\string#1}{\mskip#2\relax}% + \@namedef{mst@after\string#1}{\mskip#3\relax}% +} +\newcommand*\MTunsetmathskips[1]{% + \@namedef{mst@before\string#1}{\relax}% + \@namedef{mst@after\string#1}{\relax}% +} +% \end{macrocode} +% \end{macro}\end{macro} % \begin{macro}{\mst@mathactivate} % \begin{macro}{\mst@addtodo@nonletters} % \begin{macro}{\mst@addtodo@easynonletters} @@ -3546,8 +3834,8 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \noexpand\csname mst@orig@normal@char#1\endcsname }% \fi}} -\begingroup % make sure ~ is active at mathastext loading time - \catcode`~=\active +\begingroup + \catcode`\~=\active \def\x{\endgroup \def\mst@mathactivate##1##2##3{% ##1 guaranteed of cat 11 or 12 \begingroup @@ -3555,20 +3843,23 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \lccode`##1=`##1 \lowercase{\endgroup \ifnum\catcode`##1=\active - \mst@do@activecase ##1{##2}##3 + \mst@do@activecase ##1{##2}##3 % careful as ##2 is empty in the asterisk and % prime case! \else \mathcode`##1="8000 - % I use " many times later, \string" everywhere would be a pain - \ifcat##1a\def~{{##2##3}}\else\def~{##2##3}\fi + % version 1.3 adds the possibility of extra skips around letters, + % (only if non catcode active at the time of use). + \ifcat##1a\def~{{\csname mst@before##1\endcsname ##2##3% + \csname mst@after##1\endcsname}}% + \else\def~{##2##3}\fi \fi}}} \x \def\mst@addtodo@nonletters#1#2#3{% % #1 will be of cat 11 or 12. - % #2 is empty for asterisk and right quote - \mst@do@nonletters\expandafter{\the\mst@do@nonletters - \mst@mathactivate#1{#2}#3}% + % #2 is empty for asterisk and right quote + \mst@do@nonletters\expandafter + {\the\mst@do@nonletters \mst@mathactivate#1{#2}#3}% } \def\mst@addtodo@easynonletters#1#2{% #1 is a one char control sequence \mst@do@easynonletters\expandafter{\the\mst@do@easynonletters\mathcode`#1=#2}% @@ -3588,10 +3879,14 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % font family 0 as being the one to be used. Moreover just putting the % concerned signs -,:,.,\,' inside braces emulates enough the % behavior (although the tick will give a prime). +% +% |1.3|: now tests if `basic' option was used. % \begin{macrocode} -\@ifpackageloaded{amsmath} -{\let\newmcodes@\relax} % brutal, but bye bye and don't come back. -{} +\ifmst@basic\else + \@ifpackageloaded{amsmath} + {\let\newmcodes@\relax} % brutal, but bye bye and don't come back. + {} +\fi % \end{macrocode} % \end{macro} % \begin{macro}{subdued} @@ -3608,13 +3903,16 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} % replaced by T1 ($(1)$: but the \emph{euler} package for example % assigns the digits to the \emph{letters} symbol font...) % -% |1.15d|: Oct 13, 2012. The \cs{mathcode} thing has to be used with -% care under Unicode engines. Unfortunately the \cs{luatexUmathcode} -% macro is helpless [update: I have since been told by TH that the -% next LuaLaTeX release will change this] as it is not possible to -% know if it will return a legacy mathcode or a Unicode mathcode. On -% the other hand the much saner \cs{XeTeXmathcodenum} always return a -% Unicode mathcode. +% |1.15d|: Oct 13, 2012. The \cs{mathcode} thing has to be used with care +% under Unicode engines. Unfortunately the \cs{luatexUmathcode} macro is +% helpless as it is not possible to know if it will return a legacy mathcode +% or a Unicode mathcode. On the other hand the much saner +% \cs{XeTeXmathcodenum} always return a Unicode mathcode. +% +% \textbf{UPDATE for \mst\ 1.3: since the release of lualatex as included in +% TL2013, \cs{luatexUmathcodenum} behaves as \cs{XeTeXmathcodenum} so \mst 1.3 +% treats identically under both unicode engines the equal and minus signs (and +% the vertical bar).} % % |1.15e|: Oct 22, 2012. I add the necessary things to also subdue the % \cs{mathbf}, \cs{mathit}, \cs{mathsf} and \cs{mathtt} macros (previous @@ -4120,7 +4418,7 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \edef\mst@exists@skip@bold{\mst@exists@skip} \edef\mst@forall@skip@bold{\mst@forall@skip} \edef\mst@prime@skip@bold{\mst@prime@skip} - \MTicinmath + \MTicinmath % does \MTmathactiveletters, \MTnoicinmath only cancels ics \@for\mst@tmp:=it,sl\do{\ifx\mst@tmp\mst@ltshape@normal\MTnoicinmath\fi}% \ifmst@frenchmath \MTICinmath @@ -4130,7 +4428,7 @@ defaultbf,defaultit,defaultsf,defaulttt}\mst@nonormalboldtrue} \MTeasynonlettersdonotobeymathxx \MTnonlettersdonotobeymathxx \MTmathoperatorsdonotobeymathxx - \MTnoicinmath + \MTmathstandardletters % prior to 1.3, was \MTnoicinmath \ifmst@asterisk\let\mst@doasterisk\relax\fi \def\mst@exists@skip@normal{0mu} \def\mst@forall@skip@normal{0mu} @@ -4453,6 +4751,9 @@ and \protect\log-like names will be^^J% % since |1.15|: the values of the math skips were taken not from the % settings for the math version (\#2) but from those of the optional argument % (\#1), if present... +% +% |1.3|: activation of italic corrections is now separated from actual math +% activation of letters. % \begin{macrocode} \newcommand*\MTVersion[2][\empty]{% \mathversion{#2}% @@ -4498,6 +4799,8 @@ and \protect\log-like names will be^^J% \mst@prime@muskip\csname mst@prime@skip@\mst@tmp\endcsname\relax %% v1.2b: italic corrections except for italic/slanted (sic) letters, and of %% course except in the subdued normal and bold math versions +%% v1.3: by default, letters are made mathematically active, even if italic +%% corrections are not used, to allow the action of \MTsetmathskips. \edef\mst@tmpa{\csname mst@ltshape@\mst@tmp\endcsname}% \edef\mst@tmpb{\csname mst@shape@\mst@tmp\endcsname}% \MTicinmath @@ -4514,13 +4817,14 @@ and \protect\log-like names will be^^J% \MTeasynonlettersobeymathxx \ifmst@asterisk\let\mst@doasterisk\mst@@doasterisk\fi \ifmst@subdued - \edef\mst@tmp{#2}\def\mst@tmpa{normal}% + \edef\mst@tmp{#2}% + \def\mst@tmpa{normal}% \ifx\mst@tmp\mst@tmpa \mst@restorealphabets \MTmathoperatorsdonotobeymathxx \MTnonlettersdonotobeymathxx \MTeasynonlettersdonotobeymathxx - \MTnoicinmath + \MTmathstandardletters \ifmst@asterisk\let\mst@doasterisk\relax\fi \ifmst@LGRgreek\mst@restoregreek\fi \else @@ -4530,7 +4834,7 @@ and \protect\log-like names will be^^J% \MTmathoperatorsdonotobeymathxx \MTnonlettersdonotobeymathxx \MTeasynonlettersdonotobeymathxx - \MTnoicinmath + \MTmathstandardletters \ifmst@asterisk\let\mst@doasterisk\relax\fi \ifmst@LGRgreek\mst@restoregreek\fi \else @@ -4565,73 +4869,31 @@ and \protect\log-like names will be^^J% % latin alphabet. In version |1.1|, Latin letters have their own font % (shape). % -% |1.2b| uses |\mathcode`x="8000| to insert the italic corrections -% after letters. +% |1.2b| initiated the use of mathematically active letters to insert the italic +% corrections. With version |1.3| the use of math active letters is also for +% extra muglue added before and after the letters. Use of |\@for| to shorten the +% code initiated with release |1.3|. % \begin{macrocode} -\def\mst@DeclareMathSymbol#1#2#3#4{% - \DeclareMathSymbol{#1}{#2}{#3}{#4} - \expandafter\DeclareMathSymbol\csname mst@#1\endcsname{#2}{#3}{#4} +\def\mst@DeclareMathLetter #1{% + \DeclareMathSymbol {#1}{\mathalpha}{mtletterfont}{`#1}% + \expandafter + \DeclareMathSymbol \csname mst@#1\endcsname{\mathalpha}{mtletterfont}{`#1}% \expandafter\mst@addtodo@az - \expandafter#1\csname mst@#1\endcsname\mst@itcorr} -\mst@DeclareMathSymbol{a}{\mathalpha}{mtletterfont}{`a} -\mst@DeclareMathSymbol{b}{\mathalpha}{mtletterfont}{`b} -\mst@DeclareMathSymbol{c}{\mathalpha}{mtletterfont}{`c} -\mst@DeclareMathSymbol{d}{\mathalpha}{mtletterfont}{`d} -\mst@DeclareMathSymbol{e}{\mathalpha}{mtletterfont}{`e} -\mst@DeclareMathSymbol{f}{\mathalpha}{mtletterfont}{`f} -\mst@DeclareMathSymbol{g}{\mathalpha}{mtletterfont}{`g} -\mst@DeclareMathSymbol{h}{\mathalpha}{mtletterfont}{`h} -\mst@DeclareMathSymbol{i}{\mathalpha}{mtletterfont}{`i} -\mst@DeclareMathSymbol{j}{\mathalpha}{mtletterfont}{`j} -\mst@DeclareMathSymbol{k}{\mathalpha}{mtletterfont}{`k} -\mst@DeclareMathSymbol{l}{\mathalpha}{mtletterfont}{`l} -\mst@DeclareMathSymbol{m}{\mathalpha}{mtletterfont}{`m} -\mst@DeclareMathSymbol{n}{\mathalpha}{mtletterfont}{`n} -\mst@DeclareMathSymbol{o}{\mathalpha}{mtletterfont}{`o} -\mst@DeclareMathSymbol{p}{\mathalpha}{mtletterfont}{`p} -\mst@DeclareMathSymbol{q}{\mathalpha}{mtletterfont}{`q} -\mst@DeclareMathSymbol{r}{\mathalpha}{mtletterfont}{`r} -\mst@DeclareMathSymbol{s}{\mathalpha}{mtletterfont}{`s} -\mst@DeclareMathSymbol{t}{\mathalpha}{mtletterfont}{`t} -\mst@DeclareMathSymbol{u}{\mathalpha}{mtletterfont}{`u} -\mst@DeclareMathSymbol{v}{\mathalpha}{mtletterfont}{`v} -\mst@DeclareMathSymbol{w}{\mathalpha}{mtletterfont}{`w} -\mst@DeclareMathSymbol{x}{\mathalpha}{mtletterfont}{`x} -\mst@DeclareMathSymbol{y}{\mathalpha}{mtletterfont}{`y} -\mst@DeclareMathSymbol{z}{\mathalpha}{mtletterfont}{`z} -\ifmst@frenchmath\def\mst@font@tbu{mtoperatorfont} - \else\def\mst@font@tbu{mtletterfont}\fi -\def\mst@DeclareMathSymbol#1#2#3#4{% - \DeclareMathSymbol{#1}{#2}{#3}{#4} - \expandafter\DeclareMathSymbol\csname mst@#1\endcsname{#2}{#3}{#4} + \expandafter #1\csname mst@#1\endcsname\mst@itcorr} +\@for\mst@tmp:=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\do + {\expandafter\mst@DeclareMathLetter\mst@tmp} +\ifmst@frenchmath \def\mst@font@tbu{mtoperatorfont} + \else \def\mst@font@tbu{mtletterfont} +\fi +\def\mst@DeclareMathLetter #1{% + \DeclareMathSymbol {#1}{\mathalpha}{\mst@font@tbu}{`#1}% + \expandafter + \DeclareMathSymbol \csname mst@#1\endcsname{\mathalpha}{\mst@font@tbu}{`#1}% \expandafter\mst@addtodo@AZ - \expandafter#1\csname mst@#1\endcsname\mst@ITcorr} -\mst@DeclareMathSymbol{A}{\mathalpha}{\mst@font@tbu}{`A} -\mst@DeclareMathSymbol{B}{\mathalpha}{\mst@font@tbu}{`B} -\mst@DeclareMathSymbol{C}{\mathalpha}{\mst@font@tbu}{`C} -\mst@DeclareMathSymbol{D}{\mathalpha}{\mst@font@tbu}{`D} -\mst@DeclareMathSymbol{E}{\mathalpha}{\mst@font@tbu}{`E} -\mst@DeclareMathSymbol{F}{\mathalpha}{\mst@font@tbu}{`F} -\mst@DeclareMathSymbol{G}{\mathalpha}{\mst@font@tbu}{`G} -\mst@DeclareMathSymbol{H}{\mathalpha}{\mst@font@tbu}{`H} -\mst@DeclareMathSymbol{I}{\mathalpha}{\mst@font@tbu}{`I} -\mst@DeclareMathSymbol{J}{\mathalpha}{\mst@font@tbu}{`J} -\mst@DeclareMathSymbol{K}{\mathalpha}{\mst@font@tbu}{`K} -\mst@DeclareMathSymbol{L}{\mathalpha}{\mst@font@tbu}{`L} -\mst@DeclareMathSymbol{M}{\mathalpha}{\mst@font@tbu}{`M} -\mst@DeclareMathSymbol{N}{\mathalpha}{\mst@font@tbu}{`N} -\mst@DeclareMathSymbol{O}{\mathalpha}{\mst@font@tbu}{`O} -\mst@DeclareMathSymbol{P}{\mathalpha}{\mst@font@tbu}{`P} -\mst@DeclareMathSymbol{Q}{\mathalpha}{\mst@font@tbu}{`Q} -\mst@DeclareMathSymbol{R}{\mathalpha}{\mst@font@tbu}{`R} -\mst@DeclareMathSymbol{S}{\mathalpha}{\mst@font@tbu}{`S} -\mst@DeclareMathSymbol{T}{\mathalpha}{\mst@font@tbu}{`T} -\mst@DeclareMathSymbol{U}{\mathalpha}{\mst@font@tbu}{`U} -\mst@DeclareMathSymbol{V}{\mathalpha}{\mst@font@tbu}{`V} -\mst@DeclareMathSymbol{W}{\mathalpha}{\mst@font@tbu}{`W} -\mst@DeclareMathSymbol{X}{\mathalpha}{\mst@font@tbu}{`X} -\mst@DeclareMathSymbol{Y}{\mathalpha}{\mst@font@tbu}{`Y} -\mst@DeclareMathSymbol{Z}{\mathalpha}{\mst@font@tbu}{`Z} + \expandafter #1\csname mst@#1\endcsname\mst@ITcorr} +\@for\mst@tmp:=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\do + {\expandafter\mst@DeclareMathLetter\mst@tmp} +\let\mst@DeclareMathLetter\relax %% \ifmst@nodigits\else \def\mst@font@tbu{mtoperatorfont} @@ -4792,12 +5054,9 @@ and \protect\log-like names will be^^J% \XeTeXmathcharnumdef\mst@minus@sign=\XeTeXmathcodenum`\-\relax \else \ifmst@LuaTeX -%% \luatexUmathcharnumdef\mst@minus@sign=\luatexUmathcodenum`\-\relax ne -%% marche pas pour le moment car \luatexUmathcodenum retourne parfois un -%% legacy mathcode, parfois un Unicode mathcode, \`a mon avis c'est un bug -%% de LuaLatex. En fait Taco H me dit que la prochaine version -%% r\'eglera ce probl\`eme. \luatexUmathchardef\mst@minus@sign="2 "2 "0\relax -\mathchardef\mst@minus@sign=8704\relax % "2200 +\luatexUmathcharnumdef\mst@minus@sign=\luatexUmathcodenum`\-\relax +%% I used this prior to the new \luatexUmathcodenum, as available with TL2013: +%% \mathchardef\mst@minus@sign=8704\relax % "2200 \else \mathchardef\mst@minus@sign=\mathcode`\-\relax \fi\fi @@ -4968,12 +5227,7 @@ and \protect\log-like names will be^^J% \XeTeXmathcharnumdef\mst@equal@sign=\XeTeXmathcodenum`\=\relax \else \ifmst@LuaTeX -%% 12 octobre 2012 \luatexUmathcodenum`\= -%% ne marche pas pour le moment \`a cause du fait que \luatexUmathcodenum -%% donne un mathcode sur 8bit ou un Unicode mathcode sans qu'on puisse -%% savoir lequel -%% \luatexUmathchardef\mst@equal@sign="3 "0 "3D\relax -\mathchardef\mst@equal@sign=12349\relax +\luatexUmathcharnumdef\mst@equal@sign=\luatexUmathcodenum`\=\relax \else \mathchardef\mst@equal@sign=\mathcode`\=\relax \fi\fi @@ -5061,7 +5315,7 @@ and \protect\log-like names will be^^J% % \begin{macro}{<,>,\}\begin{macro}{\setminus}\begin{macro}{\backslash} % \begin{macrocode} \ifmst@alldelims\typeout{** alldelims: \string< \string> - \string\backslash\space\string\setminus\space| + \string\backslash\space\string\setminus\space\string| \string\vert\space\string\mid\space\string\{\space and \string\}} \ifmst@nosmalldelims % \end{macrocode} @@ -5108,8 +5362,7 @@ and \protect\log-like names will be^^J% \XeTeXmathcharnumdef\mst@vert@bar=\XeTeXmathcodenum`\|\relax \else \ifmst@LuaTeX -%% \luatexUmathchardef\mst@vert@bar="0 "2 "006A\relax -\mathchardef\mst@vert@bar=618\relax +\luatexUmathcharnumdef\mst@vert@bar=\luatexUmathcodenum`\|\relax \else\mathchardef\mst@vert@bar=\mathcode`\|\relax \fi\fi \DeclareRobustCommand\models{\mathrel{\mst@vert@bar}\joinrel\Relbar} @@ -5128,6 +5381,7 @@ and \protect\log-like names will be^^J% \def\vert{|} \DeclareMathSymbol{\mst@varfam@vbar}{\mathalpha}{\mst@font@tbu}{124} \mst@addtodo@easynonletters\|\mst@varfam@vbar +\let\mid\undefined % 1.3: to avoid problems with some packages \DeclareMathSymbol{\mid}{\mathrel}{\mst@font@tbu}{124} \mst@do@nonletters\expandafter{\the\mst@do@nonletters \def\mid{\mathrel\mst@varfam@vbar}} @@ -5138,16 +5392,20 @@ and \protect\log-like names will be^^J% % delimiters anymore if the redefinitions below in \cs{mst@dobraces} are % enacted. But they will obey math alphabets. Improvements in |1.2a|, to % preserve robustness. +% +% For |1.3| I make |\lbrace| and |\rbrace| undefined first, else problems +% may arise with some packages. % \begin{macrocode} -\ifmst@nosmalldelims - \DeclareMathSymbol{\lbrace}{\mathopen}{\mst@font@tbu}{123} - \DeclareMathSymbol{\rbrace}{\mathclose}{\mst@font@tbu}{125} -\else - \DeclareMathDelimiter{\lbrace} +\let\lbrace\undefined \let\rbrace\undefined + \ifmst@nosmalldelims + \DeclareMathSymbol{\lbrace}{\mathopen}{\mst@font@tbu}{123} + \DeclareMathSymbol{\rbrace}{\mathclose}{\mst@font@tbu}{125} + \else + \DeclareMathDelimiter{\lbrace} {\mathopen}{\mst@font@tbu}{123}{largesymbols}{"08} - \DeclareMathDelimiter{\rbrace} + \DeclareMathDelimiter{\rbrace} {\mathclose}{\mst@font@tbu}{125}{largesymbols}{"09} -\fi + \fi \DeclareMathSymbol{\mst@varfam@lbrace}{\mathalpha}{\mst@font@tbu}{123} \DeclareMathSymbol{\mst@varfam@rbrace}{\mathalpha}{\mst@font@tbu}{125} \DeclareRobustCommand*{\mst@lbrace} @@ -5893,7 +6151,7 @@ and \protect\log-like names will be^^J% Grave accent \` Left brace \{ Vertical bar \| Right brace \} Tilde \~} -\CheckSum{5053} +\CheckSum{4977} \Finale %% diff --git a/Master/texmf-dist/source/latex/mathastext/mathastext.ins b/Master/texmf-dist/source/latex/mathastext/mathastext.ins index aaae59e18bd..441fc89f984 100644 --- a/Master/texmf-dist/source/latex/mathastext/mathastext.ins +++ b/Master/texmf-dist/source/latex/mathastext/mathastext.ins @@ -1,42 +1,41 @@ %% -%% Package `mathastext' by Jean-Francois Burnol -%% Copyright (C) 2011, 2012 by Jean-Francois Burnol +%% Package `mathastext', for LaTeX2e. +%% Author: Jean-Francois Burnol +%% Copyright (C) 2011, 2012, 2013 by Jean-Francois Burnol %% -\def\pkgname{mathastext} % these macros of course are not included -\def\pkgdate{2013/01/21} % into the package file! (else I would have -\def\pkgversion{v1.2f} % given them other names) +\def\pkgname{mathastext} +\def\pkgdate{2013/09/02} +\def\pkgversion{1.3} \def\pkgdescription{Use the text font in math mode (jfB)} -%% This file `mathastext.ins' is provided for compatibility with TeX -%% distributions expecting to find it for installation of `mathastext.sty'. %% -%% As usual `latex mathastext.ins' produces `mathastext.sty' from the source -%% `mathastext.dtx' +%% `mathastext.ins' is provided for compatibility with TeX distributions +%% expecting to find it for installation of `mathastext.sty'. %% -%% (an already existing `mathastext.sty' in the same repertory will be -%% overwritten) +%% `latex mathastext.ins' produces `mathastext.sty' from the source +%% `mathastext.dtx'; an already existing `mathastext.sty' in the same repertory +%% will be overwritten. %% -%% Put `mathastext.sty' in a suitable location within the TeX installation: -%% mathastext.sty -> ................/tex/latex/mathastext/ +%% Move `mathastext.sty' to a suitable location within the TeX installation: +%% mathastext.sty -> <TDS>/tex/latex/mathastext/ %% -%% Some test files are also generated, processing them through latex, pdflatex, -%% lualatex or xetex checks if some of the package commands work as advertised. +%% Some test files are also generated, to be processed through latex, pdflatex, +%% lualatex or xetex. %% -%% See `mathastext.dtx' for the copyright and conditions of distribution or -%% modification. +%% See the source file for the copyright and license informations. %% \input docstrip.tex \askforoverwritefalse \def\pkgpreamble{\defaultpreamble^^J\MetaPrefix^^J% \string\ProvidesPackage{\pkgname}^^J% -\space[\pkgdate\space\pkgversion\space\pkgdescription]} +\space[\pkgdate\space v\pkgversion\space\pkgdescription]} \def\testfilepreamble{\string\def\string\testfileincipit{Test file to accompany \string\texttt{\pkgname}^^J% version \string\texttt{\pkgversion} of \string\texttt{\pkgdate.}}} \generate{\usepreamble\testfilepreamble -\file{test\pkgname mathversions.tex}{\from{\pkgname.dtx}{mathversions}} -\file{test\pkgname macos.tex}{\from{\pkgname.dtx}{macos}} -\file{test\pkgname linux.tex}{\from{\pkgname.dtx}{linux}} -\file{test\pkgname alphabets.tex}{\from{\pkgname.dtx}{alphabets}} +\file{\pkgname testmathversions.tex}{\from{\pkgname.dtx}{mathversions}} +\file{\pkgname testmacos.tex}{\from{\pkgname.dtx}{macos}} +\file{\pkgname testlinux.tex}{\from{\pkgname.dtx}{linux}} +\file{\pkgname testalphabets.tex}{\from{\pkgname.dtx}{alphabets}} \usepreamble\pkgpreamble \file{\pkgname.sty}{\from{\pkgname.dtx}{package}}} \endbatchfile |