%% This is part of OpTeX project, see http://petr.olsak.net/optex \_codedecl \sdef {Basic macros for OpTeX <2020-02-14>} \let\_bgroup={ \let\_egroup=} \_def \_empty {} \_def \_space { } \_def \_null {\_hbox{}} \_def \_wlog {\_immediate\_write-1 } % write on log file (only) \_edef\_bslash {\_csstring\\} \_edef \_nbb {\_bslash\_bslash} \_edef \_pcent{\_csstring\%} \_def \_sdef #1{\_ea\_def \_csname#1\_endcsname} \_def \_sxdef #1{\_ea\_xdef \_csname#1\_endcsname} \_def \_slet #1#2{\_ea\_let \_csname#1\_ea\_endcsname \_csname#2\_endcsname} \_def \_adef #1{\_catcode`#1=13 \_begingroup \_lccode`\~=`#1\_lowercase{\_endgroup\_def~}} \_def \_cs #1{\_csname#1\_endcsname} \_long\_def \_addto #1#2{\_ea\_def\_ea#1\_ea{#1#2}} \_def \_opwarning #1{\_wterm{WARNING: #1.}} \_def\_loggingall{\_tracingcommands=3 \_tracingstats=2 \_tracingpages=1 \_tracingoutput=1 \_tracinglostchars=1 \_tracingmacros=2 \_tracingparagraphs=1 \_tracingrestores=1 \_tracingscantokens=1 \_tracingifs=1 \_tracinggroups=1 \_tracingassigns=1 } \_def\_tracingall{\_tracingonline=1 \_loggingall} \_public \bgroup \egroup \empty \space \null \wlog \bslash \nbb \pcent \sdef \sxdef \slet \cs \adef \addto \wlog \opwarning \loggingall \tracingall ; \_endcode % ------------------------------------- `\bgroup`, `\egroup`, `\empty`, `\space`, `\null` and `\wlog` are classical macros from plain \TeX/. `\bslash` is \"normal backslash" with category code 12. `\nbb` and `\pcent` are double backslash and normal `%`, they should be used in lua codes, for example. `\sdef{}` is equivalent to `\def\`, where `\` is a control sequence. You can use arbitrary parameter mask after `\sdef{}`, don't put the (unwanted) space immediately after closing brace \code{\}}. `\sxdef{}` is equivalent to `\xdef\`. `\slet{}{}` is equivalent to `\let \ = \`. `\adef{}{}` puts the as active character and defines it as {}. You can use parameter mask too. `\cs{}` is only a shortcut to `\csname \endcsname`, but you need one more `\ea` if you need to ger the real control sequence `\`. `\addto\macro{}` adds to your `\macro`, which must be defined. `\opwarning{}` prints warning on the terminal and to the log file. `\loggingall` and `\tracingall` is similar as in plain \TeX/, but prints more logging information to the log file and to the terminal.