From d65b10c7cfb0918a690f01a81c42a331b03ee192 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 17 Dec 2018 21:30:58 +0000 Subject: newpx (17dec18) git-svn-id: svn://tug.org/texlive/trunk@49438 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/newpx/newpxmath.sty | 282 ++++++++++++++++-------- 1 file changed, 195 insertions(+), 87 deletions(-) (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/newpx/newpxmath.sty b/Master/texmf-dist/tex/latex/newpx/newpxmath.sty index 29f408e04f0..60b6483fc14 100644 --- a/Master/texmf-dist/tex/latex/newpx/newpxmath.sty +++ b/Master/texmf-dist/tex/latex/newpx/newpxmath.sty @@ -11,8 +11,8 @@ % of glyph collisions. % These modifications are by Michael Sharpe, msharpe at ucsd dot edu -\def\fileversion{1.32} -\def\filedate{2017/05/31} +\def\fileversion{1.33} +\def\filedate{2018/11/22} \ProvidesPackage{newpxmath} [\filedate\space v\fileversion] %\@ifundefined{newpxmathLoaded}{}{\endinput} @@ -22,7 +22,10 @@ %\csname newpxmathLoaded\endcsname %\let\newpxmathLoaded\endinput \RequirePackage{amsmath} % for better \left -%\def\ly@one{LY1} +\RequirePackage{etoolbox} +%\RequirePackage{etextools} % for \ifiscs, conflicts with biblatex +% replacement for \ifiscs +\def\ifiscseq#1{\ifcat$\expandafter\@gobble\string#1$\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}%\def\ly@one{LY1} \def\t@one{T1} %\def\ot@one{OT1} @@ -201,26 +204,44 @@ amssymbols,uprightGreek} \DeclareMathSymbol{#1}{#2}{#3}{#4} \advance #4 by1} +\DeclareRobustCommand{\BI@}[1]{% +\begingroup\text{\mathversion{bold}$#1$}\endgroup} +%\DeclareRobustCommand{\BIA}{\BI@{A}} % etc + +\newcount\px@cntz +\newcount\px@IsAlNum \def\px@isdigit#1{% #1 should be a single character \px@Isdigit=\z@ % -\count0=\number`#1\relax% -\ifnum\count0>47\relax% -\ifnum\count0<58\relax% +\px@cntz=\number`#1\relax% +\ifnum\px@cntz>47\relax% +\ifnum\px@cntz<58\relax% \px@Isdigit=\@ne % \fi% \fi% } -\DeclareRobustCommand{\BI@}[1]{% -\begingroup\text{\mathversion{bold}$#1$}\endgroup} -%\DeclareRobustCommand{\BIA}{\BI@{A}} % etc +\def\px@isAlNum#1{% #1 should be a single character +\px@IsAlNum=\z@ % +\px@cntz=\number`#1\relax% +\ifnum\px@cntz>47\relax% + \ifnum\px@cntz<58\relax% + \px@IsAlNum=\@ne % + \else + \ifnum\px@cntz>64\relax% + \ifnum\px@cntz<91\relax% + \px@IsAlNum=\tw@ % + \else + \ifnum\px@cntz>96\relax% + \ifnum\px@cntz<123\relax% + \px@IsAlNum=3\relax % + \fi + \fi + \fi + \fi + \fi +\fi +} -\def\px@XXX#1#2\@nil{% #1=first character, #2=rest of string -\px@isdigit{#1}% -\ifnum\px@Isdigit>\z@ $#1$\else#1\fi% -\if\relax\detokenize{#2}\relax \else -\edef\px@XXXcmd{\noexpand\px@XXX #2\noexpand\@nil}\px@XXXcmd \fi} -\def\equalht#1{\px@XXX #1\@nil} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1524,98 +1545,185 @@ $\hfil\displaystyle{#1}\hfil$\crcr% \re@DeclareMathSymbol{\varg}{\mathord}{lettersA}{49} \DeclareMathSymbol{\uppartial}{\mathord}{lettersA}{64} -\def\npx@UC{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} -\def\npx@lc{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} -\def\npx@num{0,1,2,3,4,5,6,7,8,9} +%\def\npx@UC{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} +%\def\npx@lc{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} +%\def\npx@num{0,1,2,3,4,5,6,7,8,9} -%\@for\npx@x:=\npx@UC\do{\edef\npx@tmp{\edef\csname +%%\@for\npx@x:=\npx@UC\do{\edef\npx@tmp{\edef\csname +%%\DeclareMathSymbol{\m@thbbch@rA}{\mathord}{lettersA}{129} %\DeclareMathSymbol{\m@thbbch@rA}{\mathord}{lettersA}{129} -\DeclareMathSymbol{\m@thbbch@rA}{\mathord}{lettersA}{129} -\DeclareMathSymbol{\m@thbbch@rB}{\mathord}{lettersA}{130} -\DeclareMathSymbol{\m@thbbch@rC}{\mathord}{lettersA}{131} -\DeclareMathSymbol{\m@thbbch@rD}{\mathord}{lettersA}{132} -\DeclareMathSymbol{\m@thbbch@rE}{\mathord}{lettersA}{133} -\DeclareMathSymbol{\m@thbbch@rF}{\mathord}{lettersA}{134} -\DeclareMathSymbol{\m@thbbch@rG}{\mathord}{lettersA}{135} -\DeclareMathSymbol{\m@thbbch@rH}{\mathord}{lettersA}{136} -\DeclareMathSymbol{\m@thbbch@rI}{\mathord}{lettersA}{137} -\DeclareMathSymbol{\m@thbbch@rJ}{\mathord}{lettersA}{138} -\DeclareMathSymbol{\m@thbbch@rK}{\mathord}{lettersA}{139} -\DeclareMathSymbol{\m@thbbch@rL}{\mathord}{lettersA}{140} -\DeclareMathSymbol{\m@thbbch@rM}{\mathord}{lettersA}{141} -\DeclareMathSymbol{\m@thbbch@rN}{\mathord}{lettersA}{142} -\DeclareMathSymbol{\m@thbbch@rO}{\mathord}{lettersA}{143} -\DeclareMathSymbol{\m@thbbch@rP}{\mathord}{lettersA}{144} -\DeclareMathSymbol{\m@thbbch@rQ}{\mathord}{lettersA}{145} -\DeclareMathSymbol{\m@thbbch@rR}{\mathord}{lettersA}{146} -\DeclareMathSymbol{\m@thbbch@rS}{\mathord}{lettersA}{147} -\DeclareMathSymbol{\m@thbbch@rT}{\mathord}{lettersA}{148} -\DeclareMathSymbol{\m@thbbch@rU}{\mathord}{lettersA}{149} -\DeclareMathSymbol{\m@thbbch@rV}{\mathord}{lettersA}{150} -\DeclareMathSymbol{\m@thbbch@rW}{\mathord}{lettersA}{151} -\DeclareMathSymbol{\m@thbbch@rX}{\mathord}{lettersA}{152} -\DeclareMathSymbol{\m@thbbch@rY}{\mathord}{lettersA}{153} -\DeclareMathSymbol{\m@thbbch@rZ}{\mathord}{lettersA}{154} - -\DeclareMathSymbol{\m@thbbch@rk}{\mathord}{lettersA}{171} -% Original \varmathbb macro, slightly polished -\def\DoFutureLet{% - \def\@FutureLetDecide{% - \ifx\@nil\@FutureLetToken - \def\@FutureLetNext{\@EachCharacterDone} - \else - \def\@FutureLetNext{\@PickUpTheCharacter} - \fi - \@FutureLetNext - }% -\futurelet\@FutureLetToken\@FutureLetDecide}% end DoFutureLet - -%\def\m@keCharacter#1{% -% \@tempcnta=`#1\relax \advance\@tempcnta "40\relax -% \edef\npx@char{\npx@lettersA\nhex{2}{\the\@tempcnta}} -% \expandafter\mathchar\npx@char} -%\def\@PickUpTheCharacter#1{\m@keCharacter{#1}\DoFutureLet} -%\def\@EachCharacterDone \@nil{}% cleanup---get rid of \@nil -%\newif\ifnpx@notnil -%\def\@EachCharacter{% -% \DoFutureLet{\@EachCharacterDone}{\@PickUpTheCharacter}} +%\DeclareMathSymbol{\m@thbbch@rB}{\mathord}{lettersA}{130} +%\DeclareMathSymbol{\m@thbbch@rC}{\mathord}{lettersA}{131} +%\DeclareMathSymbol{\m@thbbch@rD}{\mathord}{lettersA}{132} +%\DeclareMathSymbol{\m@thbbch@rE}{\mathord}{lettersA}{133} +%\DeclareMathSymbol{\m@thbbch@rF}{\mathord}{lettersA}{134} +%\DeclareMathSymbol{\m@thbbch@rG}{\mathord}{lettersA}{135} +%\DeclareMathSymbol{\m@thbbch@rH}{\mathord}{lettersA}{136} +%\DeclareMathSymbol{\m@thbbch@rI}{\mathord}{lettersA}{137} +%\DeclareMathSymbol{\m@thbbch@rJ}{\mathord}{lettersA}{138} +%\DeclareMathSymbol{\m@thbbch@rK}{\mathord}{lettersA}{139} +%\DeclareMathSymbol{\m@thbbch@rL}{\mathord}{lettersA}{140} +%\DeclareMathSymbol{\m@thbbch@rM}{\mathord}{lettersA}{141} +%\DeclareMathSymbol{\m@thbbch@rN}{\mathord}{lettersA}{142} +%\DeclareMathSymbol{\m@thbbch@rO}{\mathord}{lettersA}{143} +%\DeclareMathSymbol{\m@thbbch@rP}{\mathord}{lettersA}{144} +%\DeclareMathSymbol{\m@thbbch@rQ}{\mathord}{lettersA}{145} +%\DeclareMathSymbol{\m@thbbch@rR}{\mathord}{lettersA}{146} +%\DeclareMathSymbol{\m@thbbch@rS}{\mathord}{lettersA}{147} +%\DeclareMathSymbol{\m@thbbch@rT}{\mathord}{lettersA}{148} +%\DeclareMathSymbol{\m@thbbch@rU}{\mathord}{lettersA}{149} +%\DeclareMathSymbol{\m@thbbch@rV}{\mathord}{lettersA}{150} +%\DeclareMathSymbol{\m@thbbch@rW}{\mathord}{lettersA}{151} +%\DeclareMathSymbol{\m@thbbch@rX}{\mathord}{lettersA}{152} +%\DeclareMathSymbol{\m@thbbch@rY}{\mathord}{lettersA}{153} +%\DeclareMathSymbol{\m@thbbch@rZ}{\mathord}{lettersA}{154} % -\def\m@keCharacter#1{\csname\F@ntPrefix#1\endcsname} -\def\@PickUpTheCharacter#1{\m@keCharacter{#1}\DoFutureLet} -\def\@EachCharacterDone \@nil{} +%\DeclareMathSymbol{\m@thbbch@rk}{\mathord}{lettersA}{171} +%% Original \varmathbb macro, slightly polished +%\def\DoFutureLet{% +% \def\@FutureLetDecide{% +% \ifx\@nil\@FutureLetToken +% \def\@FutureLetNext{\@EachCharacterDone} +% \else +% \def\@FutureLetNext{\@PickUpTheCharacter} +% \fi +% \@FutureLetNext +% }% +%\futurelet\@FutureLetToken\@FutureLetDecide}% end DoFutureLet % +%%\def\m@keCharacter#1{% +%% \@tempcnta=`#1\relax \advance\@tempcnta "40\relax +%% \edef\npx@char{\npx@lettersA\nhex{2}{\the\@tempcnta}} +%% \expandafter\mathchar\npx@char} +%%\def\@PickUpTheCharacter#1{\m@keCharacter{#1}\DoFutureLet} +%%\def\@EachCharacterDone \@nil{}% cleanup---get rid of \@nil +%%\newif\ifnpx@notnil +%%\def\@EachCharacter{% +%% \DoFutureLet{\@EachCharacterDone}{\@PickUpTheCharacter}} +%% +%\def\m@keCharacter#1{\csname\F@ntPrefix#1\endcsname} +%\def\@PickUpTheCharacter#1{\m@keCharacter{#1}\DoFutureLet} +%\def\@EachCharacterDone \@nil{} +%% +%%\DeclareRobustCommand*{\varmathbb}[1]{\gdef\F@ntPrefix{m@thbbch@r}% +%% \@EachCharacter #1\@nil} %\DeclareRobustCommand*{\varmathbb}[1]{\gdef\F@ntPrefix{m@thbbch@r}% -% \@EachCharacter #1\@nil} -\DeclareRobustCommand*{\varmathbb}[1]{\gdef\F@ntPrefix{m@thbbch@r}% - \DoFutureLet #1\@nil} +% \DoFutureLet #1\@nil} % Additional macros to access process a single character only, work with \bm -\def\npx@char{} -\DeclareRobustCommand*{\vmathbb}[1]{% for original variant bb - \@tempcnta=`#1\relax \advance\@tempcnta "40\relax - \edef\npx@char{"\hexnumber@\symlettersA\nhex{2}{\the\@tempcnta}} - \expandafter\mathchar\npx@char -} -\DeclareRobustCommand*{\vvmathbb}[1]{% for new (STIX) variant - \@tempcnta=`#1\relax \advance\@tempcnta "80\relax - \edef\npx@char{"\hexnumber@\symlettersA\nhex{2}{\the\@tempcnta}} - \expandafter\mathchar\npx@char -} +%\def\npx@char{} +%\DeclareRobustCommand*{\vmathbb}[1]{% for original variant bb +% \@tempcnta=`#1\relax \advance\@tempcnta "40\relax +% \edef\npx@char{"\hexnumber@\symlettersA\nhex{2}{\the\@tempcnta}} +% \expandafter\mathchar\npx@char +%} +%\DeclareRobustCommand*{\vvmathbb}[1]{% for new (STIX) variant +% \@tempcnta=`#1\relax \advance\@tempcnta "80\relax +% \edef\npx@char{"\hexnumber@\symlettersA\nhex{2}{\the\@tempcnta}} +% \expandafter\mathchar\npx@char +%} %\DeclareRobustCommand*{\vvmathbbb}[1]{% for new (STIX) variant % \@tempcnta=`#1\relax \advance\@tempcnta "80\relax % \edef\npx@char{"\hexnumber@\symboldlettersA\nhex{2}{\the\@tempcnta}} % \expandafter\mathchar\npx@char %} +% Experimental code May 8, 2018 +\newcount\npx@numstart +\newcount\npx@UCstart +\newcount\npx@lcstart +\newcount\npx@tmpc +\newcount\npx@imath +\newcount\npx@jmath +\newif\ifnpx@notempty +\def\npx@fam{} +\def\npx@char{} +\def\npx@alfa#1#2#3#4#5#6#7{%#1=string, #2=UC,#3=lc,#4=imath,#5=jmath,#6=numstart,#7=fam + \npx@UCstart=#2 + %\gdef\xx{x#3x} + \@xp\ifblank\@xp{#3}{\npx@lcstart=512 }{\npx@lcstart=#3} + \@xp\ifblank\@xp{#4}{\npx@imath=512 }{\npx@imath=#4} + \@xp\ifblank\@xp{#5}{\npx@jmath=512 }{\npx@jmath=#5} + \@xp\ifblank\@xp{#6}{\npx@numstart=512 }{\npx@numstart=#6} + \def\npx@fam{#7} + \@xp\ifblank\@xp{#1}{\relax}{\@xp\npx@@alfa #1\@nil}} + +\def\npx@@alfa#1#2\@nil{% + \npx@out{#1} + \ifblank{#2}{\relax}{\npx@@alfa #2\@nil}} + +\def\npx@out#1{% #1 is always a single token---use values from \npx@alfa + %\showthe\npx@numstart + \npx@tmpc=\z@ + \ifx#1\imath\npx@tmpc=128\relax + \ifnum\npx@imath>255\relax #1\npx@tmpc=256 \message{^^JNo imath in this alphabet^^J}\fi + \else % not \imath + \ifx#1\jmath\npx@tmpc=129\relax + \ifnum\npx@jmath>255\relax #1\npx@tmpc=256 \message{^^JNo jmath in this alphabet^^J}\fi + \else % neither \imath nor \jmath + \ifiscseq{#1}{#1\npx@tmpc=256 }{% not a cs + \npx@tmpc=\number\@xp`#1} + \fi + \fi + %\message{^^JCharacter index = \the\npx@tmpc^^J} + \ifnum\npx@tmpc<128\relax % neither \imath nor \jmath nor cs + \px@isAlNum{#1} + %\message{^^JIsAlNum = \the\px@IsAlNum^^J} + \ifnum\px@IsAlNum=\@ne % it's a digit + \ifnum\npx@numstart>255\relax #1\npx@tmpc=256 \message{^^JNo digits in this alphabet^^J} + \else + \advance\npx@tmpc -48 % 0..9 + \advance\npx@tmpc \npx@numstart + \fi + \else + \ifnum\px@IsAlNum=\tw@ % it's UC + \advance\npx@tmpc -65 % 0..25 + \advance\npx@tmpc\npx@UCstart + \else + \ifnum\px@IsAlNum>\tw@ % it's lc + \ifnum\npx@lcstart>255 #1\npx@tmpc=256 \message{^^JNo lowercase in this alphabet^^J} + \else + %\message{^^JCharacter index = \the\npx@tmpc^^J + %lcstart = \the\npx@lcstart^^J} + \advance\npx@tmpc -97 % 0..25 + \advance\npx@tmpc\npx@lcstart + %\message{^^JCharacter index = \the\npx@tmpc^^J} + \fi + \else % it must be a character outside alphanumerics + #1 + \fi + \fi + \fi + \else % npx@tmpc>127 + \ifnum\npx@tmpc=128\relax % imath + \npx@tmpc=\npx@imath + \else + \ifnum\npx@tmpc=129\relax % jmath + \npx@tmpc=\npx@jmath + \fi + \fi + \fi + \ifnum\npx@tmpc<256\relax + \edef\npx@char{"\@xp\hexnumber@\csname sym\npx@fam\endcsname\nhex{2}{\the\npx@tmpc}} + %\message{^^Joutput char = \npx@char^^J} + \@xp\mathchar\npx@char%\traceoff + \fi %end of ifnum <256 +} + +\DeclareRobustCommand{\vmathbb}[1]{\npx@alfa{#1}{129}{159}{}{}{}{lettersA}} +\DeclareRobustCommand{\vvmathbb}[1]{\npx@alfa{#1}{193}{225}{}{}{176}{lettersA}} + \ifpx@vvarbb \let\mathbb\vvmathbb \else \ifpx@varbb - \let\mathbb\varmathbb + \let\mathbb\vmathbb \else - \ifpx@ams\else\let\mathbb\varmathbb\fi + \ifpx@ams\else\let\mathbb\vmathbb\fi \fi \fi +\let\varmathbb\vmathbb +\let\vvarmathbb\vvmathbb %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Math Extension (npxex) Definition % largesymbols %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- cgit v1.2.3