summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/newtx/newtx.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/newtx/newtx.sty')
-rw-r--r--Master/texmf-dist/tex/latex/newtx/newtx.sty310
1 files changed, 217 insertions, 93 deletions
diff --git a/Master/texmf-dist/tex/latex/newtx/newtx.sty b/Master/texmf-dist/tex/latex/newtx/newtx.sty
index e80baff17b6..3c31a91788b 100644
--- a/Master/texmf-dist/tex/latex/newtx/newtx.sty
+++ b/Master/texmf-dist/tex/latex/newtx/newtx.sty
@@ -2,8 +2,8 @@
%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 +54,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 +98,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 +110,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 +264,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 +282,22 @@
% \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
+
%\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