r3tex

custom LuaTeX format
git clone git://git.rr3.xyz/r3tex
Log | Files | Refs | README | LICENSE

basic.tex (2555B)


      1 % Primitive abbreviations
      2 \let\ea=\expandafter
      3 \let\nx=\noexpand
      4 \let\attr=\attribute
      5 \let\attrdef=\attributedef
      6 \let\cctab=\catcodetable
      7 \let\initcctab=\initcatcodetable
      8 \let\savecctab=\savecatcodetable
      9 \let\begcs=\csname
     10 \let\endcs=\endcsname
     11 \let\ifcs=\ifcsname
     12 \let\beggroup=\begingroup
     13 \let\easn=\immediateassignment
     14 \let\easnall=\immediateassigned
     15 
     16 % Primitive aliases
     17 \let\rescan=\scantextokens
     18 \let\endgraf=\par
     19 \let\endline=\cr
     20 \def\null{\hbox{}}
     21 
     22 % Special character aliases
     23 \chardef\%=`\%
     24 \chardef\&=`\&
     25 \chardef\#=`\#
     26 \chardef\$=`\$
     27 \chardef\~=`\~
     28 
     29 % Misc, mostly from plain
     30 \let\bgroup={
     31 \let\egroup=}
     32 \def\empty{}
     33 \def\space{ }
     34 \def\tab{^^I}
     35 \def\nosurround{\mathsurround=0pt } % XXX: \mathsurroundskip and \mathsurroundmode
     36 \def\m@th{\errmessage{m@th is deprecated}} % TODO: remove
     37 
     38 % Expansion control
     39 \def\eonce#1{\unexpanded\ea{#1}}
     40 % XXX: are these useful?
     41 \def\deferfi#1#2\fi{#2\fi#1}
     42 \def\afterfi#1\fi{\fi#1}
     43 \def\jumpfi#1#2\fi{\fi#1}
     44 
     45 % Expandable macro to get the number of a defined register. E.g.,
     46 %   \countdef\mycount=255
     47 %   \regnum\mycount  ->  255
     48 \def\@regnum#1#2\@END{%
     49 	\ifx\relax#1\else
     50 		\ifnum1<1#1 #1\fi % Check if #1 is a digit.
     51 		\@regnum#2\@END
     52 	\fi
     53 }
     54 \def\regnum#1{\ea\@regnum\meaning#1\relax\@END\relax}
     55 
     56 {\catcode`\p=12 \catcode`\t=12 \gdef\csA#1pt{#1}}
     57 \let\rempt=\csA
     58 \def\decimal{\ea\rempt\the}
     59 
     60 % Caution: \incr\count0 does not do what you'd hope. We use the "by" keyword
     61 % to catch this error.
     62 \protected\def\incr#1{\advance#1by1 }
     63 \protected\def\gincr{\global\incr}
     64 \protected\def\decr#1{\advance#1by-1 }
     65 \protected\def\gdecr{\global\decr}
     66 
     67 \def\gsetbox{\global\setbox}
     68 
     69 \def\cs#1{\begcs#1\endcs}
     70 
     71 \protected\def\csdef#1{\ea\def\begcs#1\endcs}
     72 \protected\def\ecsdef#1{\ea\edef\begcs#1\endcs}
     73 \protected\def\gcsdef#1{\ea\gdef\begcs#1\endcs}
     74 \protected\def\xcsdef#1{\ea\xdef\begcs#1\endcs}
     75 \protected\def\undef#1{\let#1\@undefined}
     76 \protected\def\gundef#1{\glet#1\@undefined}
     77 
     78 \protected\def\cslet#1{\ea\let\begcs#1\endcs}
     79 \protected\def\gcslet#1{\ea\glet\begcs#1\endcs}
     80 \protected\def\letcs#1#2{\ea\let\ea#1\begcs#2\endcs}
     81 \protected\def\gletcs#1#2{\ea\glet\ea#1\begcs#2\endcs}
     82 \protected\def\csletcs#1#2{\ea\let\begcs#1\ea\endcs\begcs#2\endcs}
     83 \protected\def\gcsletcs#1#2{\ea\glet\begcs#1\ea\endcs\begcs#2\endcs}
     84 
     85 \def\swap#1#2{#2#1}
     86 \def\selectx#1{}       % \gobble
     87 \def\selecto#1{#1}
     88 \def\selectxx#1#2{}    % \gobbletwo
     89 \def\selectox#1#2{#1}  % \firstoftwo
     90 \def\selectxo#1#2{#2}  % \secondoftwo
     91 \def\selectxxx#1#2#3{}
     92 \def\selectoxx#1#2#3{#1}
     93 \def\selectxox#1#2#3{#2}
     94 \def\selectxxo#1#2#3{#3}
     95 
     96 \endinput