% \iffalse meta-comment % % Copyright (C) 2015-2019 by Enrico Gregorio % % --------------------------------------- % % This file may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c % of this license or (at your option) any later version. % The latest version of this license is in: % % http://www.latex-project.org/lppl.txt % % and version 1.3c or later is part of all distributions of LaTeX % % \fi % % \iffalse %<*driver> \ProvidesFile{fixcmex.dtx} % %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesPackage{fixcmex} %<*package> [2019/08/05 v1.1 Scalable math extensions font (Enrico Gregorio)] % % %<*driver> \documentclass{ltxdoc} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{fixcmex.dtx} \end{document} % % \fi % % \CheckSum{48} % % \changes{v1.0}{2015/11/10}{Initial version} % \changes{v1.1}{2019/08/05}{Fix lmodern} % % \GetFileInfo{fixcmex.dtx} % % \DoNotIndex{\begingroup,\endgroup,\aftergroup,\@nil,\cmex,\lmex} % \DoNotIndex{\def,\edef,\else,\escapechar,\expandafter,\fi,\ifx} % \DoNotIndex{\m@ne,\string,\textfont,\the,\thr@@} % % % \title{The \textsf{fixcmex} package\thanks{This document corresponds % to \textsf{itnumpar}~\fileversion, dated \filedate.}} % % \author{Enrico Gregorio \\ \texttt{Enrico dot Gregorio (at) univr % dot it}} % % \date{\filedate} % % \maketitle % % \section{Description} % % Knuth's Computer Modern fonts only provide the math extensions % font \texttt{cmex10} at just one size. Together with a release % of AMS-\TeX{}, the American Mathematical Society also provided % the font at sizes 7, 8 and 9; these fonts are automatically loaded % when \verb+\usepackage{amsmath}+ is done for a document. The % option \texttt{cmex10} is allowed for reverting back to the fixed % size, but it should only be used when the \TeX{} distribution is % more than, say twenty years old (at the time of writing). % % Where's the difference? With the standard setup, a symbol like % summation or integral in a footnote or in a \verb+\Large+ context % will have the same size as in normal text. This size is also % independent of the main point size of a document. % % When \textsf{amsmath} (or \textsf{exscale}) is loaded, the symbols % will be scaled, but only at the standard sizes, not arbitrarily. % This is not a limitation any more, because the Type1 version of % the \texttt{cmex} fonts has been available for several years and % this package addresses it. % % Many people use the Latin Modern fonts that are, in several respects, % superior to the European Modern fonts when T1 font encoding is % required. However, when \verb+\usepackage{lmodern}+ is done, % the situation about the math extensions font goes back to the % standard state described above, because \texttt{lmex10} is only % provided at a fixed size. % % The present package can be used when the main font of the document % is Computer Modern (or European Modern, if T1 encoding is selected) % or Latin Modern. It redefines the math extensions font so that it % is arbitrarily scalable, using the optical size fonts provided by % the AMS together with the original \texttt{cmex10} font. % % The package should be loaded as late as possible, in any case % \emph{after} any font package. Its position with respect to % \textsf{hyperref} or \textsf{cleveref} is irrelevant. It will do % nothing if the math extensions font turns out to be not from % Computer Modern or Latin Modern (with a warning). % % There are no options and no commands. % % \StopEventually{\PrintChanges\PrintIndex} % % \section{Implementation} % \begin{macro}{\fixcmex@fix} % \changes{v1.1}{2019/08/05}{Fix lmodern} % The main command just resets the math extensions font to % be \texttt{cmex}, fully scalable. % \begin{macrocode} %<*package> \def\fixcmex@fix{% \DeclareFontShape{OMX}{cmex}{m}{n}{% <-7.5> cmex7 <7.5-8.5> cmex8 <8.5-9.5> cmex9 <9.5-> cmex10 }{}% \SetSymbolFont{largesymbols}{normal}{OMX}{cmex}{m}{n}% \SetSymbolFont{largesymbols}{bold}{OMX}{cmex}{m}{n}% \mathversion{\math@version}% } \@onlypreamble\fixcmex@fix % \end{macrocode} % \end{macro} % % Next, at begin document, the \verb+\check@mathfonts+ command % makes sure the font assignments are performed for the normal % size and the family name corresponding to the OMX encoding % is extracted. If it is either \texttt{cmex} or \texttt{lmex} % the command \verb+\fixcmex@fix+ will be executed. Otherwise % a warning is issued, telling that the package has done nothing. % \begin{macrocode} \AtBeginDocument{% \begingroup \check@mathfonts \expandafter\expandafter\expandafter \split@name\expandafter\string\the\textfont\thr@@\@nil \escapechar=\m@ne \edef\fixcmex@cmex{\string\cmex}\edef\fixcmex@lmex{\string\lmex}% \ifx\f@family\fixcmex@cmex \aftergroup\fixcmex@fix \else \ifx\f@family \fixcmex@lmex\aftergroup\fixcmex@fix \else \PackageWarningNoLine{fixcmex}{No change in the math extension font}% \fi \fi \endgroup } % % \end{macrocode} % \Finale \endinput