diff options
Diffstat (limited to 'fonts/newtx/tex/newtx.sty')
-rw-r--r-- | fonts/newtx/tex/newtx.sty | 312 |
1 files changed, 218 insertions, 94 deletions
diff --git a/fonts/newtx/tex/newtx.sty b/fonts/newtx/tex/newtx.sty index e80baff17b..8d86b9aeaf 100644 --- a/fonts/newtx/tex/newtx.sty +++ b/fonts/newtx/tex/newtx.sty @@ -1,9 +1,8 @@ \NeedsTeXFormat{LaTeX2e} - %Package to simplify loading of newtxmath with a text font family such as newtxtext for all latex engines, or for newtxtext and an otf math package. -\def\fileversion{1.739} -\def\filedate{2024/02/24} +\def\fileversion{1.751} +\def\filedate{2024/06/22} \ProvidesPackage{newtx}[% \filedate\space v\fileversion (Michael Sharpe) latex and unicode latex support for newtxmath and a supported text font family, or for newtxtext and an otf math package] @@ -54,7 +53,10 @@ % options for newtxmath as etoolbox internal list allowing \ifinlist %\def\ntx@mathlstr{vecsep,amsthm,nosubscriptcorrection,subscriptcorrection,timesmathacc,varbb,vvarbb,nosymbolsc,noamssymbols,amssymbols,uprightscript,uprightGreek,slantedGreek,frenchmath,nonewtxmathopt,upint,smallerops,useBImacros,varg,varvw,noOT1} -\forcsvlist{\listadd\ntx@mathlst}{vecsep,amsthm,nosubscriptcorrection,subscriptcorrection,timesmathacc,varbb,vvarbb,nosymbolsc,noamssymbols,amssymbols,uprightscript,uprightGreek,slantedGreek,frenchmath,nonewtxmathopt,upint,smallerops,useBImacros,varg,varvw,noOT1,propmathfigs,curlybraces,cochrho,cochf,alty,alth,liby,nochvw} +\forcsvlist{\listadd\ntx@mathlst}{vecsep,amsthm,nosubscriptcorrection,subscriptcorrection, +timesmathacc,varbb,vvarbb,nosymbolsc,noamssymbols,amssymbols,uprightscript,uprightGreek, +slantedGreek,frenchmath,nonewtxmathopt,upint,smallerops,useBImacros,varg,varvw,noOT1, +propmathfigs,curlybraces,cochrho,cochf,alty,alth,liby,nochvw} %\show\ntx@mathlst % Note that subscriptcorrectionfile is not on the list---we process it in this sty file @@ -95,8 +97,10 @@ %\newif\ifntx@nofontspec % must load fontspec if unicode engine \newif\ifntx@otfmath %\ntx@otfmathfalse % default is type1 math +%\newdimen\ntx@dima +%\def\tx@divide#1#2{\ntx@dima=\dimexpr 1pt * (\dimexpr #1pt\relax) / \dimexpr #2pt\relax\relax} +%\tx@divide{300}{400}\showthe\ntx@dima -\def\tx@divide#1#2{\strip@pt\dimexpr 1pt * (\dimexpr #1pt\relax) / \dimexpr #2pt\relax\relax} \newcommand*{\ntxtext@RM}{1} \newcommand*{\ntxtext@SF}{1} \newcommand*{\ntxtext@TT}{.88} @@ -105,10 +109,11 @@ \newcommand*{\ntxtext@rm}{} % not understood by libertinus-otf \newcommand*{\ntxtext@sf}{}% not understood by libertinus-otf -\newcommand*{\ntxtext@scale}{1} +\newcommand*{\ntxtext@scale}{0} \newcommand*{\ntxmath@scale}{1} -\DeclareOptionX{scaled}[1]{\renewcommand*{\ntxtext@scale}{#1}\renewcommand*{\ntxmath@scale}{#1}} -\DeclareOptionX{scale}[1]{\renewcommand*{\ntxtext@scale}{#1}\renewcommand*{\ntxmath@scale}{#1}} +%\traceon +\DeclareOptionX{scaled}[1]{\renewcommand*{\ntxmath@scale}{#1}} +\DeclareOptionX{scale}[1]{\renewcommand*{\ntxmath@scale}{#1}} \DeclareOptionX{textscale}[1]{\renewcommand*{\ntxtext@scale}{#1}} \DeclareOptionX{textscaled}[1]{\renewcommand*{\ntxtext@scale}{#1}} \DeclareOptionX{mathscale}[1]{\renewcommand*{\ntxmath@scale}{#1}} @@ -258,6 +263,12 @@ \def\ntx@sc{TeXGyreScholaX@scale}% \def\ntx@TF{scholax}\def\ntx@MF{nc} \def\ntx@id{14}\def\ntx@minfam{minscholax}\fi} +\DeclareOptionX{Gelasio}[true]{\@nameuse{if#1} + \def\ntx@sc{Gelasio@scale}\def\ntx@TF{gelasio}\def\ntx@MF{gelasio} + \def\ntx@id{16}\def\ntx@minfam{mingelasio}\fi} +\DeclareOptionX{gelasio}[true]{\@nameuse{if#1} + \def\ntx@sc{Gelasio@scale}\def\ntx@TF{gelasio}\def\ntx@MF{gelasio} + \def\ntx@id{16}\def\ntx@minfam{mingelasio}\fi} % for stacked fractions \DeclareOptionX{sfracvcenter}{% \def\tx@sfrVC{#1}} @@ -270,6 +281,23 @@ % \ntx@Topt contains all unknown options that are not math options. It contains no scale options. \ntx@Mopt lists all the math options. \ProcessOptionsX\relax +\def\tx@mathtotextfactor{1} +\ifcase\ntx@id % 0, newtxtext + \or\or % 1,2 + \or \def\tx@mathtotextfactor{1.05} % 3, ebg + \or\or % 4,5 + \or \def\tx@mathtotextfactor{.94} % 6, garx + \or\or % 7,8 + \or \def\tx@mathtotextfactor{.94} % 9, heur + \or\or % 10, 11 + \or \def\tx@mathtotextfactor{.935} % 12, xch + \or % 13 + \or \def\tx@mathtotextfactor{.93} % 14, schx + \or \def\tx@mathtotextfactor{.93} % 15, schx/four + \or \def\tx@mathtotextfactor{.92} % 16, gel +\fi + +\def\tx@divide#1#2{\ntx@dima=\dimexpr 1pt * (\dimexpr #1 pt\relax) / \dimexpr #2pt\relax\relax} %\show\ntx@Mopt %\show\ntx@Topt %\traceon @@ -280,34 +308,48 @@ % \ntx@otftextfalse % \fi %\fi +\newif\ifntx@iszero +\@tempdima=\@ne\p@\@tempdima=\ntxtext@scale\@tempdima +\expandafter\ifnum\number\@tempdima=0\relax\ntx@iszerotrue\fi + +\ifntx@iszero% + \@tempdima=\tx@mathtotextfactor\p@% + \@tempdima=\ntxmath@scale\@tempdima% + \edef\ntxtext@scale{\strip@pt\@tempdima} + %\show\ntxtext@scale +\fi +\def\ntxtext@scaled{s*[\ntxtext@scale]} + \ifntx@otfmath \ifnum\ntx@id>0 \PackageWarning{newtx.sty}{Reverting to newtxtext: newtx with option {\tt otfmath} can not handle other text packages.} \ntx@id=0 \ntx@text % revert to newtxtext \fi -\else % t1 math - \ifnum\ntx@id=0 +\fi + +\ifnum\ntx@id=0 \ifthenelse{\not\equal{\sfdefault}{cmss}}% {\tx@helvfalse}{} \ifthenelse{\not\equal{\ttdefault}{cmtt}}% {\tx@ttfalse}{} - \iftx@helv +\fi +\iftx@helv \renewcommand*{\sfdefault}{qhv} \@tempdima=\ntxtext@scale\p@ \@tempdima=\tx@helvratio\@tempdima% \edef\qhv@scale{\strip@pt\@tempdima} - \else +\else \PassOptionsToPackage{nohelv=true}{newtxtext} - \fi - \iftx@tt\renewcommand*{\ttdefault}{ntxtt}\fi - \ifthenelse{\not\equal{\tx@helvratio}{.94}}% +\fi + +\ifthenelse{\not\equal{\tx@helvratio}{.94}}% {\PassOptionsToPackage{helvratio=\tx@helvratio}% {newtxtext}}{} - \iftx@tt\else% - \PassOptionsToPackage{nott=true}{newtxtext}\fi - - \fi + +\iftx@tt\renewcommand*{\ttdefault}{ntxtt}\fi +\iftx@tt\else% + \PassOptionsToPackage{nott=true}{newtxtext} \fi %\ifntx@badnof\PackageError{newtx.sty}{Incompatible options, nofontspec and otfmath}{Incompatible options, nofontspec and otfmath}\fi % Set the text scale macros appropriately @@ -316,14 +358,12 @@ %\PassOptionsToPackage{scaled=\ntxtext@scale}{\ntx@TF} \edef\ntxmath@scaled{s*[\ntxmath@scale]} % For the min text fd files, need to use actual scale macro passed to fd? -%\@namedef{\ntx@sc}{\ntxtext@scale} +%\@namedef{\ntx@sc}{\ntxtext@scale}% -\newif\ifntx@iszero -\@tempdima\@ne\p@\@tempdima\ntxtext@scale\@tempdima -\expandafter\ifnum\number\@tempdima=0\relax\ntx@iszerotrue\fi -% +%\newcommand{\PassMathScale}{%\ifntx@iszero\gdef\ntxtext@scale{\ntxmath@scale} +%\gdef\ntxtext@scaled{s*[\ntxtext@scale]}\fi -\newcommand{\PassMathScale}{\ifntx@iszero\gdef\ntxtext@scale{\ntxmath@scale}\gdef\ntxtext@scaled{s*[\ntxtext@scale]}\fi +% The following block sents scale instructions to text package \ifnum\ntx@id=4 % MinionPro \PassOptionsToPackage{scale=\ntxtext@scale}{\ntx@TF} \else @@ -345,24 +385,32 @@ \@tempdimb=\ntxtext@TT\@tempdima \PassOptionsToPackage{ttscale=\strip@pt\@tempdimb}{\ntx@TF} - \else % - \PassOptionsToPackage{scaled=\ntxtext@scale}{\ntx@TF} + \else % + \ifnum\ntx@id=16 % gelasio + \PassOptionsToPackage{scale=\ntxtext@scale}{\ntx@TF}% + \else + \PassOptionsToPackage{scaled=\ntxtext@scale}{\ntx@TF} + \fi \fi \fi \fi -} +%} % -\newcommand{\PassMatchingScale}[1]{% - \ifntx@iszero% - \@tempdima #1\p@ \@tempdima\ntxmath@scale\@tempdima \xdef\ntxtext@scale{\strip@pt\@tempdima} - \gdef\ntxtext@scaled{s*[\ntxtext@scale]} - \fi - \PassOptionsToPackage{scaled=\ntxtext@scale}{\ntx@TF}% -} +%\newcommand{\PassMatchingScale}[1]{% +% \ifntx@iszero% +% \@tempdima #1\p@ \@tempdima\ntxmath@scale\@tempdima \xdef\ntxtext@scale{\strip@pt\@tempdima} +% \fi +% \xdef\ntxtext@scaled{s*[\ntxtext@scale]} +%} %\fi +%\PassMathScale +%\traceon +% Send parameters for stacked fractions +\def\tx@sfrac{} % X for cases where parameters are given \ifcase\ntx@id % 0, newtxtext -\PassMathScale +\def\tx@sfrac{X} +%\PassMathScale % info for sfrac (stacked fractions) involving newtxtext \@ifundefined{tx@xht}{\def\tx@xht{450}}{} % lowercase letters \@ifundefined{tx@deht}{\def\tx@deht{406}}{} % denominator figures ht @@ -373,7 +421,7 @@ \@ifundefined{tx@sfrTH}{\def\tx@sfrTH{54}}{} % bar thickness \@ifundefined{tx@sfrSC}{\def\tx@sfrSC{.9}}{} % scale defigures by this \or %1, libertine -\PassMathScale +\def\tx@sfrac{X} % \PassOptionsToPackage{ttscaled=\ntxtext@scale, % llscaled=\ntxtext@scale}{\ntx@TF} % for tt and serifed in Libertine \@ifundefined{tx@xht}{\def\tx@xht{431}}{} % lowercase letters @@ -393,7 +441,7 @@ %{\addfontfeature{RawFeature=+frac}#2/#3}}% %}} \or % 2, etbb -\PassMathScale +\def\tx@sfrac{X} \@ifundefined{tx@xht}{\def\tx@xht{431}}{} % lowercase letters \@ifundefined{tx@deht}{\def\tx@deht{357}}{} % denominator figures ht \@ifundefined{tx@nubase}{\def\tx@nubase{295}}{} % baseline of numerators @@ -403,7 +451,7 @@ \@ifundefined{tx@sfrTH}{\def\tx@sfrTH{64}}{} % bar thickness \@ifundefined{tx@sfrSC}{\def\tx@sfrSC{.8}}{} % scale defigures by this \or % 3, ebgaramond -\PassMatchingScale{1.05} +\def\tx@sfrac{X} \@ifundefined{tx@xht}{\def\tx@xht{431}}{} % lowercase letters \@ifundefined{tx@deht}{\def\tx@deht{341}}{} % denominator figures ht \@ifundefined{tx@nubase}{\def\tx@nubase{443}}{} % baseline of numerators @@ -422,7 +470,7 @@ %{\addfontfeature{RawFeature=+frac}#2/#3}}% %}}}} \or % 4, MinionPro -\PassMathScale +%\PassMathScale %\@ifundefined{tx@xht}{\def\tx@xht{437}}{} % lowercase letters %\@ifundefined{tx@deht}{\def\tx@deht{359}}{} % denominator figures ht %\@ifundefined{tx@nubase}{\def\tx@nubase{277}}{} % baseline of numerators @@ -432,7 +480,7 @@ %\@ifundefined{tx@sfrTH}{\def\tx@sfrTH{54}}{} % bar thickness %\@ifundefined{tx@sfrSC}{\def\tx@sfrSC{.9}}{} % scale defigures by this \or % 5, cochineal -\PassMathScale +\def\tx@sfrac{X} \@ifundefined{tx@xht}{\def\tx@xht{430}}{} % lowercase letters \@ifundefined{tx@deht}{\def\tx@deht{378}}{} % denominator figures ht \@ifundefined{tx@nubase}{\def\tx@nubase{248}}{} % baseline of numerators @@ -442,15 +490,15 @@ \@ifundefined{tx@sfrTH}{\def\tx@sfrTH{54}}{} % bar thickness \@ifundefined{tx@sfrSC}{\def\tx@sfrSC{.9}}{} % scale defigures by this amount \or % 6, garamondx -\PassMatchingScale{.94} +%\PassMatchingScale{.94} \or % 7, BaskervilleF -\PassMathScale +%\PassMathScale \or % 8, baskervaldx -\PassMathScale +%\PassMathScale \or % 9, heuristica -\PassMatchingScale{.94} +%\PassMatchingScale{.94} \or % 10, libertinus -\PassMathScale +\def\tx@sfrac{X} \@ifundefined{tx@xht}{\def\tx@xht{431}}{} % lowercase letters \@ifundefined{tx@deht}{\def\tx@deht{324}}{} % denominator figures ht \@ifundefined{tx@nubase}{\def\tx@nubase{364}}{} % baseline of numerators @@ -470,7 +518,7 @@ %{\addfontfeature{RawFeature=+frac}#2/#3}}% %}}}} \or % 11, erewhon -\PassMathScale +\def\tx@sfrac{X} \@ifundefined{tx@xht}{\def\tx@xht{461}}{} % lowercase letters \@ifundefined{tx@deht}{\def\tx@deht{384}}{} % denominator figures ht \@ifundefined{tx@nubase}{\def\tx@nubase{256}}{} % baseline of numerators @@ -480,7 +528,7 @@ \@ifundefined{tx@sfrTH}{\def\tx@sfrTH{58}}{} % bar thickness \@ifundefined{tx@sfrSC}{\def\tx@sfrSC{.8}}{} % scale defigures by this \or % 12, XCharter -\PassMatchingScale{.98} +\def\tx@sfrac{X} \@ifundefined{tx@xht}{\def\tx@xht{481}}{} % lowercase letters \@ifundefined{tx@deht}{\def\tx@deht{382}}{} % denominator figures ht \@ifundefined{tx@nubase}{\def\tx@nubase{295}}{} % baseline of numerators @@ -490,7 +538,7 @@ \@ifundefined{tx@sfrTH}{\def\tx@sfrTH{54}}{} % bar thickness \@ifundefined{tx@sfrSC}{\def\tx@sfrSC{.8}}{} % scale defigures by this \or % 13, stickstoo -\PassMathScale +\def\tx@sfrac{X} \@ifundefined{tx@xht}{\def\tx@xht{473}}{} % lowercase letters \@ifundefined{tx@deht}{\def\tx@deht{411}}{} % denominator figures ht \@ifundefined{tx@nubase}{\def\tx@nubase{252}}{} % baseline of numerators @@ -500,7 +548,7 @@ \@ifundefined{tx@sfrTH}{\def\tx@sfrTH{56}}{} % bar thickness \@ifundefined{tx@sfrSC}{\def\tx@sfrSC{.75}}{} % scale defigures by this \or % 14, scholax -\PassMatchingScale{.93} +\def\tx@sfrac{X} \@ifundefined{tx@xht}{\def\tx@xht{466}}{} % lowercase letters \@ifundefined{tx@deht}{\def\tx@deht{423}}{} % denominator figures ht \@ifundefined{tx@nubase}{\def\tx@nubase{289}}{} % baseline of numerators @@ -510,7 +558,7 @@ \@ifundefined{tx@sfrTH}{\def\tx@sfrTH{70}}{} % bar thickness \@ifundefined{tx@sfrSC}{\def\tx@sfrSC{.8}}{} % scale defigures by this \or % 15, scholax/fourier -\PassMatchingScale{.93} +\def\tx@sfrac{X} \@ifundefined{tx@xht}{\def\tx@xht{466}}{} % lowercase letters \@ifundefined{tx@deht}{\def\tx@deht{423}}{} % denominator figures ht \@ifundefined{tx@nubase}{\def\tx@nubase{289}}{} % baseline of numerators @@ -519,6 +567,16 @@ \@ifundefined{tx@sfrVS}{\def\tx@sfrVS{106}}{} % space above/below bar \@ifundefined{tx@sfrTH}{\def\tx@sfrTH{70}}{} % bar thickness \@ifundefined{tx@sfrSC}{\def\tx@sfrSC{.8}}{} % scale defigures by this +\or % 16, gelasio +\def\tx@sfrac{X} +\@ifundefined{tx@xht}{\def\tx@xht{485}}{} % lowercase letters +\@ifundefined{tx@deht}{\def\tx@deht{473}}{} % denominator figures +\@ifundefined{tx@nubase}{\def\tx@nubase{246}}{} % baseline of numerators +\@ifundefined{tx@debase}{\def\tx@debase{0}}{} % baseline of denoms +\@ifundefined{tx@sfrVC}{\def\tx@sfrVC{360}}{}% vertical center of sfrac +\@ifundefined{tx@sfrVS}{\def\tx@sfrVS{106}}{} % space above/below bar +\@ifundefined{tx@sfrTH}{\def\tx@sfrTH{70}}{} % bar thickness +\@ifundefined{tx@sfrSC}{\def\tx@sfrSC{.75}}{} % scale defigures by this \fi \PassOptionsToPackage{\ntx@MF}{newtxmath} @@ -526,57 +584,69 @@ %\ifblank{\ntx@textopt}{}% %{\PassOptionsToPackage{\ntx@textopt}{\ntx@TF}} -\newdimen\tx@sixem\tx@sixem6pt % for checking if a number refers to ex -\newdimen\tx@y \newdimen\tx@x - -% convert numerical entry that may be multiple of ex (<6) or em value -\def\tx@toex#1{\tx@x#1pt \ifdim\tx@x<\z@\tx@y-\tx@x\else\tx@y\tx@x\fi \ifdim\tx@y>\tx@sixem \tx@x\dimexpr 1pt * (\dimexpr #1pt\relax) / \dimexpr \tx@xht pt\relax\relax\fi} - -\newdimen\tx@tmpdima \newdimen\tx@tmpdimb \newdimen\tx@tmpdimc -\newdimen\tx@tmpdimd \newdimen\tx@tmpdime \newdimen\tx@tmpdimf -\newdimen\tx@dimA -\newdimen\tx@dimAA \newdimen\tx@dimB \newdimen\tx@dimBB -\newdimen\tx@dimC % vertical center -% double cap letters for below bar, single cap for above -\tx@toex\tx@sfrVC\tx@dimC\tx@x %Vertical center of fraction -\tx@toex\tx@sfrTH\tx@tmpdimb\tx@x % bar thickness -\tx@tmpdime.5\tx@tmpdimb % half bar thickness -\tx@toex\tx@sfrVS\tx@tmpdimc\tx@x% vertical space -\tx@toex\tx@deht\tx@tmpdimd\tx@x % height of unscaled figures -\tx@tmpdimd\tx@sfrSC\tx@tmpdimd % height of scaled figures -\tx@toex\tx@debase\tx@tmpdimf\tx@x % unscaled baseline of de figures -\tx@toex\tx@nubase\tx@tmpdima\tx@x % unscaled baseline of nu figures -\tx@tmpdima\tx@sfrSC\tx@tmpdima % scaled nu baseline -\tx@tmpdimf\tx@sfrSC\tx@tmpdimf % scaled de baseline -\tx@dimA\tx@dimC -\advance\tx@dimA by \tx@tmpdime % top of bar -\tx@dimAA\tx@dimC -\advance\tx@dimAA by -\tx@tmpdime % bottom of bar -\tx@dimB\tx@dimA -\advance\tx@dimB by \tx@tmpdimc % top figure baseline -\advance\tx@dimB by -\tx@tmpdima -\tx@dimBB\tx@dimAA -\advance\tx@dimBB by -\tx@tmpdimc % -\advance\tx@dimBB by -\tx@tmpdimd % bottom figure baseline -\advance\tx@dimBB by -\tx@tmpdimf +%\newdimen\tx@sixem\tx@sixem6pt % for checking if a number refers to ex +\newdimen\tx@x \newdimen\tx@y + +% convert numerical entry that may be multiple of ex or em value +%\def\tx@toex#1{\tx@x#1pt \ifdim\tx@x<\z@\tx@y=-\tx@x\else\tx@y=\tx@x\fi \ifdim\tx@y>\tx@sixem \tx@x=\dimexpr 1pt * (\dimexpr #1pt\relax) / \dimexpr \tx@xht pt\relax\relax\fi} +%\def\tx@chkex#1{\@tx@chkex#1ex\@nil} +%\def\@tx@chkex#1ex#2\@nil{\ifthenelse{\equal{#2}{}}{\tx@toex #1}{\tx@x=#1ex}} # defines dimen \tx@x +\def\tx@toex#1{\tx@x=\dimexpr 1pt * (\dimexpr #1pt\relax) / \dimexpr \tx@xht pt\relax\relax} +%\def\tx@divide#1#2{\ntx@dima=\dimexpr 1pt * (\dimexpr #1 pt\relax) / \dimexpr #2pt\relax\relax} + +% Code for stacked fractions---not available in cases 4,6,7,8,9 +\if X\tx@sfrac +\newdimen\tx@tmpdima \newdimen\tx@tmpdimb \newdimen\tx@tmpdimC +\newdimen\tx@dimX \newdimen\tx@dimY \newdimen\tx@dimZ +\newdimen\tx@numrbase \newdimen\tx@dnombase +\newdimen\tx@bartop \newdimen\tx@barbot +\newdimen\tx@bartopex \newdimen\tx@barbotex +\setlength\tx@tmpdimb{\tx@sfrTH pt} % bar thickness +\setlength\tx@tmpdima{\tx@deht pt} % de figure ht +\setlength\tx@tmpdimC{\tx@sfrVC pt} % bar center height +\tx@bartop=\tx@tmpdimC +\advance\tx@bartop by .5\tx@tmpdimb % top of bar +\tx@toex{\strip@pt\tx@bartop}\tx@bartopex=\tx@x % same, in ex units +\tx@barbot=\tx@bartop +\advance\tx@barbot by -\tx@tmpdimb % bottom of bar +\tx@toex{\strip@pt\tx@barbot}\tx@barbotex=\tx@x % same, in ex units +\tx@dimX=\tx@bartop +\advance\tx@dimX by \tx@sfrVS pt % bottom of numr +\tx@dimY=\tx@barbot +\advance\tx@dimY by -\tx@sfrVS pt % top of dnom +\advance\tx@dimY by -\tx@sfrSC\tx@tmpdima % baseline of dnom + +\tx@toex{\strip@pt\tx@dimX}\tx@numrbase=\tx@x % num baseline in ex units +\tx@toex{\strip@pt\tx@dimY}\tx@dnombase=\tx@x % dnom baseline in ex units + \newcommand*{\textsfrac}[3][]{% like \textsfrac[1]{23}{34} \mbox{% \ifthenelse{\not\equal{#1}{}}%Test for integer portion [optional #1] {\textlf{#1}\kern.04em}{}% {\hmode@bgroup% \ooalign{% - \setbox0=\hbox{\scalefont{\tx@sfrSC}\nustyle#2}% - \hfil \raise\strip@pt\tx@dimB ex\box0\hfil \crcr% - \leaders\hrule height \strip@pt\tx@dimA ex depth -\strip@pt\tx@dimAA ex\hfill \crcr% - \setbox1=\hbox{\scalefont{\tx@sfrSC}\destyle#3}% - \hfil\raise\strip@pt\tx@dimBB ex\box1\hfil}% +% \ifnum\ntx@id=16\relax + \setbox0=\hbox{\textsmde{#2}}% scaled down denom, baseline 0 + \tx@dimZ=\strip@pt\tx@numrbase ex% + \hfil \raise \tx@dimZ \box0\hfil \crcr% + \tx@dimX=\strip@pt\tx@bartopex ex% + \tx@dimY=-\strip@pt\tx@barbotex ex% + \leaders\hrule height \tx@dimX depth \tx@dimY \hfill \crcr% + \setbox1=\hbox{\textsmde{#3}}% + \tx@dimZ=\strip@pt\tx@dnombase ex + \hfil\raise \tx@dimZ \box1\hfil}% \egroup}} } +\else +\newcommand*{\textsfrac}[3][]{% +\mbox{% + \ifthenelse{\not\equal{#1}{}}%Test for integer portion [optional #1] + {\textlf{#1}\kern.04em}{}% +#2/#3}} +\fi -%\ifntx@otfmath\typeout{otf math}\else\typeout{type1 math}\fi - - +% Document setup instructions \ifntx@otftext \ifntx@otfmath %I \typeout{I} @@ -611,7 +681,7 @@ \mbox{% \ifthenelse{\not\equal{#1}{}}%Test for integer portion [optional #1] {\textlf{#1}\kern.02em}{}% -{\ifntx@otftext\addfontfeature{RawFeature=+frac}#2/#3} +\ifntx@otftext\addfontfeature{RawFeature=+frac}#2/#3 \else\textnu{#2}{\normalfont\fontencoding{TS1}\selectfont\char"2F}% \textde{#3}\fi} }}} @@ -699,6 +769,60 @@ \or % 13, stickstoo \or % 14, scholax \or % 15, scholax/fourier +\or % 16, gelasio \fi - +% galasio.sty does not offer macros for numerators, denominators or inferiors +%\ifgelasio@otf +% \providecommand\nufigures{% +% \addfontfeatures{VerticalPosition=Numerator}} +% \providecommand\defigures{% +% \addfontfeatures{VerticalPosition=Denominator}} +% \providecommand\infigures{% +% \addfontfeatures{VerticalPosition=Inferior}} +% +% \DeclareTextFontCommand{\textnum}{\nufigures} +% \DeclareTextFontCommand{\textde}{\defigures} +% \DeclareTextFontCommand{\textinf}{\infigures} +% \@ifundefined{tx@sfrSC}{}{% +% \newcommand*{\textsmde}[1]{% +% \setbox0=\hbox{\scalebox\tx@sfrSC{\textde{#1}}}\box0}} +% +%\else % type1 --we define \text.. by lowering \textsu +% \newbox\tx@box +% \newcommand*{\textde}[1]{{\setbox0=\hbox{\textsu{#1}}\setbox1=\hbox{\raise -.763ex \box0}\dp1=0pt\ht1=.977ex\box1\relax}} +% +% \providecommand*\textnum[1]{\raisebox{.507ex}{\textde{#1}}} +% \let\textnu\textnum +%% \providecommand*\textde[1]{{\setbox0=\hbox{\textsu{#1}}% +%% \setbox1=\hbox{\lower.763ex\box0}\dp0=0pt\relax\box1\relax}} +% %\raisebox{-.763ex}{\textsu{#1}}} +% % the following will be used only by \textsfrac +% \@ifundefined{tx@sfrSC}{}{% +% \newcommand*{\textsmde}[1]{% +% \setbox0=\hbox{\scalebox\tx@sfrSC{\textde{#1}}}\box0}% +% } +%\fi +%\DeclareTextFontCommand{\textlf}{\liningnums} +%\fi % end ifcase +\ifnum\ntx@id=16\relax +\else % create \textsmsmde for other than minion and gelasio +% We move the small font to the text baseline and scale it by \tx@sfrSC, for use only in the \textsfrac macro. +\ifnum\ntx@id=4\relax +\else + \ifnum\tx@debase=0 + \newcommand*{\textsmde}[1]{% + \setbox0=\hbox{\scalebox\tx@sfrSC{\textde{#1}}}\box0} + \else + \newdimen\tx@u \newdimen\tx@v + \tx@u=-\tx@debase pt + \tx@toex{\strip@pt\tx@u}\tx@y=\tx@x + %\showthe\tx@y + \tx@v=\strip@pt\tx@y ex + \newcommand*{\textsmde}[1]{% + \setbox2=\hbox{\textde{#1}}% + \setbox1=\hbox{\raise \tx@v \box2}% + \setbox0=\hbox{\scalebox{\tx@sfrSC}{\box1}}\box0} + \fi %\ifnum\tx@debase=0 +\fi %\ifnum\ntx@id=4 +\fi %\ifnum\ntx@id=16 \endinput |