summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/optex/basics-macros.opm
blob: 9f87f27c8328e2a2d92e7b9fd40fed97a1cc5bd1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
%% 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{<text>}` is equivalent to `\def\<text>`, where `\<text>` is a control
sequence. You can use arbitrary parameter mask after `\sdef{<text>}`, don't
put the (unwanted) space immediately after closing brace \code{\}}.

`\sxdef{<text>}` is equivalent to `\xdef\<text>`.

`\slet{<textA>}{<textB>}` is equivalent to `\let \<textA> = \<textB>`.

`\adef{<char>}{<body>}` puts the <char> as active character and defines it
as {<body>}. You can use parameter mask too.

`\cs{<text>}` is only a shortcut to `\csname <text>\endcsname`, but you need
one more `\ea` if you need to ger the real control sequence `\<text>`.

`\addto\macro{<text>}` adds <text> to your `\macro`, which must be defined.

`\opwarning{<text>}` 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.