commit 3c1a68e9e2a87847edd48345bb1bd16b85cd9394
parent a08197334526f4c4c82916d00dd97748e8d4a33a
Author: Robert Russell <robertrussell.72001@gmail.com>
Date: Sat, 26 Nov 2022 11:49:14 -0800
Stuff
Diffstat:
5 files changed, 95 insertions(+), 50 deletions(-)
diff --git a/alloc.tex b/alloc.tex
@@ -2,6 +2,8 @@
% By "temporary", we mean the register may be clobbered by any macro. In some
% cases, not being able to use temporary registers with certain macros is very
% restrictive, so these macros are documented as not using temporary registers.
+% Also, macros likely to be assigned to active characters should not use
+% temporary registers, because then checking for conflicts is difficult.
% count:
% 0--9: page identification
% 10--29: internal to allocator
diff --git a/math.tex b/math.tex
@@ -17,6 +17,7 @@
\def\lnot{\neg}
\def\land{\wedge}
\def\lor{\vee}
+\def\limp{\rightarrow}
\def\int{\intop\nolimits}
\def\oint{\ointop\nolimits}
@@ -162,7 +163,7 @@
\def\cong{\mathrel{\mathpalette\@vereq\sim}}
\def\@vereq#1#2{\lower.5pt \vbox{\lineskiplimit\maxdimen\lineskip-.5pt
\ialign{$\m@th\sty#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}
-\def\notin{\mathrel{\mathpalette\c@ncel\in}}
+%\def\notin{\mathrel{\mathpalette\c@ncel\in}}
\def\c@ncel#1#2{\m@th\ooalign{$\hfil\sty#1\mkern1mu/\hfil$\crcr$\sty#1#2$}}
% \def\rightleftharpoons{\mathrel{\mathpalette\rlh@{}}}
% \def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2pt
diff --git a/mathenc.tex b/mathenc.tex
@@ -102,7 +102,7 @@
% scheme) that, e.g., provisions for unfilled/filled shapes, single vs double
% vs triple vs etc. stroke arrows, etc.
-\mathchardef\aleph="0240
+\mathchardef\aleph="0640
\def\hbar{{\mathchar'26 \mkern-9mu h}}
\mathchardef\imath="017B
\mathchardef\jmath="017C
diff --git a/primitive.tex b/primitive.tex
@@ -8,6 +8,7 @@
\let\@primxdef=\xdef \protected\def\xdef{\@primlong\@primxdef}
%%% Old LuaTeX compatibility
+% TODO remove this?
\ifprimitive\glet \else
\protected\def\glet{\global\let}
\fi
diff --git a/tmpfont.tex b/tmpfont.tex
@@ -48,8 +48,8 @@
\def\@Fentries#1=#2;;{#2;}
\def\@Fgobble#1;{}
\def\@Fsearch#1:#2;{%
- \gdef\@Fname{#2 }%
- \ifdim#1pt>\@dimen \else \let\\=\@Fgobble \fi
+ \gdef\@Fname{#2}%
+ \ifdim#1pt>\dimenA \else \let\\=\@Fgobble \fi
}
% \@Fload loads a font with size \dimenA from font set #1 according to the
@@ -58,8 +58,7 @@
\@Fskewchar=\defaultskewchar \@Fhyphenchar=\defaulthyphenchar
\@Fscalenum=1 \@Fscaleden=1
{\let\\=\@Fsearch \ea\@Fentries#1}%
- \dimenB=\dimexpr\dimenA*\@Fscalenum/\@Fscaleden\relax
- \font\Ffont=\@Fname at\dimenA
+ \font\Ffont={\@Fname}at\dimexpr\dimenA*\@Fscalenum/\@Fscaleden\relax
\skewchar\Ffont=\@Fskewchar \hyphenchar\Ffont=\@Fhyphenchar
}
@@ -82,21 +81,26 @@
\def\Fdef#1#2{\def\@{\Ffind#2\let#1=\Ffont}\afterassignment\@\dimenA=}
\def\@Fdecompose#1#2#3{\let\@Ftset=#1\let\@Fsset=#2\let\@Fssset=#3}
-\def\@Fupdfam"#1#2{%
- \ea\@Fdecompose#2%
- \dimenA=\Ftsize \Ffind\@Ftset\textfont"#1=\Ffont
- \dimenA=\Fssize \Ffind\@Fsset\scriptfont"#1=\Ffont
- \dimenA=\Fsssize \Ffind\@Fssset\scriptscriptfont"#1=\Ffont
+\def\@Fupdfam"#1#2#3{%
+ \ea\@Fdecompose#3%
+ \dimenA=\Ftsize \Ffind\@Ftset\textfont"#1#2=\Ffont
+ \dimenA=\Fssize \Ffind\@Fsset\scriptfont"#1#2=\Ffont
+ \dimenA=\Fsssize \Ffind\@Fssset\scriptscriptfont"#1#2=\Ffont
}
\def\Fupdfams{%
- \@Fupdfam"0\Ffamseta \@Fupdfam"1\Ffamsetb
- \@Fupdfam"2\Ffamsetc \@Fupdfam"3\Ffamsetd
- \@Fupdfam"4\Ffamsete \@Fupdfam"5\Ffamsetf
- \@Fupdfam"6\Ffamsetg \@Fupdfam"7\Ffamseth
- \@Fupdfam"8\Ffamseti \@Fupdfam"9\Ffamsetj
- \@Fupdfam"A\FfamsetA \@Fupdfam"B\FfamsetB
- \@Fupdfam"C\FfamsetC \@Fupdfam"D\FfamsetD
- \@Fupdfam"E\FfamsetE \@Fupdfam"F\FfamsetF
+ \@Fupdfam"00\Ffamseta \@Fupdfam"01\Ffamsetb
+ \@Fupdfam"02\Ffamsetc \@Fupdfam"03\Ffamsetd
+ \@Fupdfam"04\Ffamsete \@Fupdfam"05\Ffamsetf
+ \@Fupdfam"06\Ffamsetg \@Fupdfam"07\Ffamseth
+ \@Fupdfam"08\Ffamseti \@Fupdfam"09\Ffamsetj
+ \@Fupdfam"0A\FfamsetA \@Fupdfam"0B\FfamsetB
+ \@Fupdfam"0C\FfamsetC \@Fupdfam"0D\FfamsetD
+ \@Fupdfam"0E\FfamsetE \@Fupdfam"0F\FfamsetF
+ \@Fupdfam"10\FfamsetG \@Fupdfam"11\FfamsetH
+ \@Fupdfam"12\FfamsetI \@Fupdfam"13\FfamsetJ
+ \@Fupdfam"14\FfamsetK \@Fupdfam"15\FfamsetL
+ \@Fupdfam"16\FfamsetM \@Fupdfam"17\FfamsetN
+ \@Fupdfam"18\FfamsetO \@Fupdfam"19\FfamsetP
}
\def\Fupdfonts{\dimenA=\Fsize \Fupduser}
\def\@Fupddelim#1#2{%
@@ -174,6 +178,14 @@
\def\FSmpalbexx{mpalbexx=\\10:zplbexx;;}
\def\FSmpalbexa{mpalbexa=\\10:zplbexa;;}
+\def\FSrrrmpalwidecheck{r3mpalwidecheck=\\10:r3-widecheck;;}
+
+% Palatino sans
+\def\FSpalsansl{r3palsansl=\\10:r3-palatino_sans-light-tlf;;}
+\def\FSpalsansr{r3palsansr=\\10:r3-palatino_sans-regular-tlf;;}
+\def\FSpalsansm{r3palsansm=\\10:r3-palatino_sans-medium-tlf;;}
+\def\FSpalsansb{r3palsansb=\\10:r3-palatino_sans-bold-tlf;;}
+
% Optima
\def\FSoptr{optr=\\10:URWClassico-Regular-lf-t1;;}
\def\FSopti{opti=\\10:URWClassico-Italic-lf-t1;;}
@@ -181,8 +193,8 @@
\def\FSoptbi{optbi=\\10:URWClassico-BoldItalic-lf-t1;;}
% Inconsolata (not narrow and without variant 0, l, or quotes)
-\def\FSincr{incr=\\10:t1-zi4r-0;;}
-\def\FSincb{incb=\\10:t1-zi4b-0;;}
+\def\FSincr{incr=\Fscale11/10\\10:t1-zi4r-0;;}
+\def\FSincb{incb=\Fscale11/10\\10:t1-zi4b-0;;}
% Euler
\def\FSeurm{eurm=\Fskew'177\\10:eurm10;\\9:eurm9;\\8:eurm8;\\7:eurm7;\\6:eurm6;\\5:eurm5;;}
@@ -197,22 +209,35 @@
\def\FSboondsr{boondsr=\\10:BOONDOX-r-ds;;}
\def\FSboondsb{boondsb=\\10:BOONDOX-b-ds;;}
-\def\Ffamseta{\FSpalr\FSpalr\FSpalr} % palatino rm
-\def\Ffamsetb{\FSeurm\FSeurm\FSeurm} % euler rm
-\def\Ffamsetc{\FSmpalsy\FSmpalsy\FSmpalsy} % newpx symbols
-\def\Ffamsetd{\FSmpalexx\FSmpalexx\FSmpalexx} % newpx ext
-\def\Ffamsete{\FSeuex\FSeuex\FSeuex} % euler ext
-\def\Ffamsetf{\FSeurb\FSeurb\FSeurb} % euler rb
-\def\Ffamsetg{\FSeusm\FSeusm\FSeusm} % euler sm
-\def\Ffamseth{\FSeusb\FSeusb\FSeusb} % euler sb
-\def\Ffamseti{\FSeufm\FSeufm\FSeufm} % euler fm
-\def\Ffamsetj{\FSeufb\FSeufb\FSeufb} % euler fb
-\def\FfamsetA{\FSboondsr\FSboondsr\FSboondsr} % boon ds
-\def\FfamsetB{\FSpali\FSnull\FSnull} % palatino it
-\def\FfamsetC{\FSpalb\FSnull\FSnull} % palatino rm b
-\def\FfamsetD{\FSpalbi\FSnull\FSnull} % palatino it b
-% \def\FfamsetE{}
-% \def\FfamsetF{}
+% Pagella double struct
+\def\FSrrrpalmathds{r3palmathds=\\10:r3-palatino_math-ds;;}
+
+\def\Ffamseta{\FSpalr\FSpalr\FSpalr} % palatino rm
+\def\Ffamsetb{\FSeurm\FSeurm\FSeurm} % euler rm
+\def\Ffamsetc{\FSmpalsy\FSmpalsy\FSmpalsy} % newpx symbols
+\def\Ffamsetd{\FSmpalexx\FSmpalexx\FSmpalexx} % newpx ext
+\def\Ffamsete{\FSeuex\FSeuex\FSeuex} % euler ext
+\def\Ffamsetf{\FSeurb\FSeurb\FSeurb} % euler rb
+\def\Ffamsetg{\FSeusm\FSeusm\FSeusm} % euler sm
+\def\Ffamseth{\FSeusb\FSeusb\FSeusb} % euler sb
+\def\Ffamseti{\FSeufm\FSeufm\FSeufm} % euler fm
+\def\Ffamsetj{\FSeufb\FSeufb\FSeufb} % euler fb
+\def\FfamsetA{\FSrrrpalmathds\FSrrrpalmathds\FSrrrpalmathds} % pagella ds
+\def\FfamsetB{\FSpali\FSnull\FSnull} % palatino it
+\def\FfamsetC{\FSpalb\FSnull\FSnull} % palatino rm b
+\def\FfamsetD{\FSpalbi\FSnull\FSnull} % palatino it b
+\def\FfamsetE{\FSmpalmia\FSmpalmia\FSmpalmia} % newpx
+\def\FfamsetF{\FSmpalsym\FSmpalsym\FSmpalsym} % newpx
+\def\FfamsetG{\FSmpalmi\FSmpalmi\FSmpalmi} % newpx
+\def\FfamsetH{\FSmpalexa\FSmpalexa\FSmpalexa} % newpx
+\def\FfamsetI{\FSmpalsyc\FSmpalsyc\FSmpalsyc} % newpx
+\def\FfamsetJ{\FSincr\FSincr\FSincr} % inconsolata r
+\def\FfamsetK{\FSincb\FSincb\FSincb} % inconsolata b
+\def\FfamsetL{\FSpalsansl\FSpalsansl\FSpalsansl} % palatino sans l
+\def\FfamsetM{\FSpalsansr\FSpalsansr\FSpalsansr} % palatino sans r
+\def\FfamsetN{\FSpalsansm\FSpalsansm\FSpalsansm} % palatino sans m
+\def\FfamsetO{\FSpalsansb\FSpalsansb\FSpalsansb} % palatino sans b
+\def\FfamsetP{\FSrrrmpalwidecheck\FSrrrmpalwidecheck\FSrrrmpalwidecheck}
\mathchardef\Fbigchar="0300
\mathchardef\FBigchar="0310
@@ -220,29 +245,37 @@
\mathchardef\FBiggchar="0320
\def\Fupduser{%
- \Ffind\FSpalr \let\rmfont=\Ffont
- \Ffind\FSeufm \let\fmfont=\Ffont
- \Ffind\FSpali \let\itfont=\Ffont
- \Ffind\FSpalb \let\bffont=\Ffont
- \Ffind\FSpalbi \let\bifont=\Ffont
- \Ffind\FSincr \let\ttfont=\Ffont
- \Ffind\FSincb \let\tbfont=\Ffont
- \Ffind\FSpalrsc \let\scfont=\Ffont
+ \Ffind\FSpalr \let\rmfont=\Ffont
+ \Ffind\FSeufm \let\fmfont=\Ffont
+ \Ffind\FSpali \let\itfont=\Ffont
+ \Ffind\FSpalb \let\bffont=\Ffont
+ \Ffind\FSpalbi \let\bifont=\Ffont
+ \Ffind\FSincr \let\trfont=\Ffont
+ \Ffind\FSincb \let\tbfont=\Ffont
+ \Ffind\FSpalsansl \let\slfont=\Ffont
+ \Ffind\FSpalsansr \let\srfont=\Ffont
+ \Ffind\FSpalsansm \let\smfont=\Ffont
+ \Ffind\FSpalsansb \let\sbfont=\Ffont
+ \Ffind\FSpalrsc \let\scfont=\Ffont
}
\def\rm{\fam=0 \rmfont}
\def\mi{\fam=1 }
\def\sy{\fam=2 }
\def\bm{\fam=5 }
-\def\sr{\fam=6 }
-\def\sb{\fam=7 }
+\def\hr{\fam=6 }
+\def\hb{\fam=7 }
\def\fr{\fam=8 } \def\oldstyle{\fam=8 \fmfont}
\def\fb{\fam=9 }
\def\bb{\fam=10 }
\def\it{\fam=11 \itfont}
\def\bf{\fam=12 \bffont}
\def\bi{\fam=13 \bifont}
-\def\tt{\ttfont}
-\def\tb{\tbfont}
+\def\tr{\fam=19 \trfont}
+\def\tb{\fam=20 \tbfont}
+\def\sl{\fam=21 \slfont}
+\def\sr{\fam=22 \srfont}
+\def\sm{\fam=23 \smfont}
+\def\sb{\fam=24 \sbfont}
\def\sc{\scfont}
@@ -250,7 +283,7 @@
% Encoding stuff necessary for euler (see gkpmac.tex)
% Actually, we take most non-letter symbols from newpx instead. This keeps
% things consistent (since euler is somewhat incomplete) and easy (since
-% we needn't change the conventions from plain).
+% we needn't change many of the conventions from plain).
% Take numerals from euler rm (default is fam 0)
\mathcode`\0="7130
@@ -323,6 +356,14 @@
% \def\vert{\delimiter"066A30C }
% \def\backslash{\delimiter"066E30F }
+\mathcode`\,="602C
+\mathcode`\.="002E
+\Umathcode`\/="0"10"3D
+\Umathcode`\<="3"10"3C
+\Umathcode`\>="3"10"3E
+\Umathchardef\star="2"10"3F
+\Umathchardef\ldotp="6"10"3A
+
\tenpt\rm
\endinput