commit 26c3d11457f86f879223ef239320401343276335
parent 95f17e9275eecafdc11c2133f5dff8bc2fb08012
Author: robert <robertrussell.72001@gmail.com>
Date: Fri, 17 Dec 2021 20:57:04 -0800
Import and organize more from plain
Diffstat:
| M | debug.tex | | | 3 | +++ |
| M | util.tex | | | 80 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------- |
2 files changed, 68 insertions(+), 15 deletions(-)
diff --git a/debug.tex b/debug.tex
@@ -1,3 +1,6 @@
+\def\wlog{\immediate\write-1 }
+\def\wterm{\immediate\write16 }
+
\def\loggingall{%
\tracingcommands=3
\tracingstats=2
diff --git a/util.tex b/util.tex
@@ -1,6 +1,4 @@
-\let\bgroup={ \let\egroup=}
-
-% Primitive abbreviations.
+% Primitive abbreviations
\let\g=\global
\let\ea=\expandafter
\let\attr=\attribute
@@ -12,13 +10,26 @@
\let\endcs=\endcsname
\let\ifcs=\ifcsname
-% Useful inside \edef's:
+% Control symbol aliases for special characters
+\chardef\%=`\%
+\chardef\&=`\&
+\chardef\#=`\#
+\chardef\$=`\$
+
+% Misc from plain
+\let\bgroup={
+\let\egroup=}
+\let\endgraf=\par
+\let\endline=\cr
+\def\empty{}
+\def\space{ }
+\def\null{\hbox{}}
+\def\m@th{\mathsurround=0pt }
+
+% Expansion control
\def\nea{\noexpand\ea}
\def\eonce#1{\unexpanded\ea{#1}}
-\def\wlog{\immediate\write-1 }
-\def\wterm{\immediate\write16 }
-
% Caution: \incr\count0 does not do what you'd hope. We use the "by" keyword
% to catch this error.
\protected\def\incr#1{\advance#1by1 }
@@ -43,6 +54,7 @@
\protected\def\gcsletcs#1#2{\ea\glet\begcs#1\ea\endcs\begcs#2\endcs}
\def\selectx#1{} % \gobble
+\def\selectO#1{#1}
\def\selectxx#1#2{} % \gobbletwo
\def\selectOx#1#2{#1} % \firstoftwo
\def\selectxO#1#2{#2} % \secondoftwo
@@ -51,19 +63,57 @@
\def\selectxOx#1#2#3{#2}
\def\selectxxO#1#2#3{#3}
-\def\empty{}
-\def\space{ }
-\def\null{\hbox{}}
+% White space control
+\def\^^M{\ } % control <return> = control <space>
+\def\^^I{\ } % control <tab> = control <space>
+{
+ \catcode`\^^M=13 % these lines must end with %
+ % In \obeylines, we say `\let^^M=\par' instead of `\def^^M{\par}'
+ % since this allows, for example, `\let\par=\cr \obeylines \halign{...'
+ \gdef\obeylines{\catcode`\^^M=13 \let^^M=\par}%
+ \glet^^M=\par % in case ^^M appears in a \write
+}
+\def\obeyspaces{\catcode`\ =13 }
+{\obeyspaces\glet =\space}
+
+% Mode control
+\def\leavevmode{\unhbox\voidbox} \def\hmode{\leavevmode}
+\def\leavehmode{\par} \def\vmode{\leavehmode}
+\def\modechoice#1#2#3{%
+ \relax
+ \ifvmode
+ \def\next{#1}%
+ \else\ifhmode
+ \def\next{#2}%
+ \else % mmode
+ \def\next{#3}%
+ \fi\fi
+ \next
+}
+
+% Generalized mathpalette---gives number to be used with \ifcase
+\def\mathpalette#1#2{\mathchoice{#10{#2}}{#11{#2}}{#12{#2}}{#13{#2}}}
+\def\sty#1{%
+ \ifcase\numexpr#1\relax
+ \displaystyle
+ \or\textstyle
+ \or\scriptstyle
+ \or\scriptscriptstyle
+ \fi
+}
+\def\styfont#1{%
+ \ifcase\numexpr#1\relax
+ \textfont
+ \or\textfont
+ \or\scriptfont
+ \or\scriptscriptfont
+ \fi
+}
{\catcode`\p=12 \catcode`\t=12 \gdef\csA#1pt{#1}}
\let\rempt=\csA
\def\decimal{\ea\rempt\the}
-\chardef\%=`\%
-\chardef\&=`\&
-\chardef\#=`\#
-\chardef\$=`\$
-
\def\@regnum#1#2\@END{%
\ifx\relax#1\else
\ifnum1<1#1 #1\fi