3

Compared to pdfeTeX, which primitives have been added to LuaTeX?

Besides the rearrangement of the standard pdfeTeX PDF primitives, and the somewhat odd (as compared to XeTeX) beaviour of \font (which requires luaotfload.sty and alike), which primitives are exclusive/proper to LuaTeX besides \directlua?

A crossreference to documentation is welcome.

4
  • 4
    They are all in the LuaTeX manual: I don't think we can reasonably cover all of them here
    – Joseph Wright
    Commented Oct 12, 2023 at 18:42
  • 1
    Why do you say that \directlua is either famous or infamous? What's wrong with \directlua?
    – Mico
    Commented Oct 12, 2023 at 19:23
  • 1
    texdoc luatex will document all of them to some extent Commented Oct 12, 2023 at 19:40
  • @Mico : \directlua gave me at first a lot of trouble, because it forced me to retrain my brain from some parts of TeX's usual behavior; figuring out catcodes in particular. Now I see it as fairly friendly, but back then... Bad experiences, I guess. :-\
    – jarnosz
    Commented Oct 12, 2023 at 23:54

1 Answer 1

11

You can ask luatex to list all the TeX primitives that are not enabled initially (although some correspond to pdftex or xetex, so may not be strictly unique to luatex)


\directlua{
for p,v in pairs(tex.extraprimitives())
do
print(p, v)
end
}
\bye

Which produces

1   Umathcloseopspacing
2   unless
3   botmarks
4   textdir
5   Umathordpunctspacing
6   currentiftype
7   Udelimiterunder
8   variablefam
9   pagediscards
10  mathsurroundmode
11  Uskewedwithdelims
12  bodydirection
13  Umathopenpunctspacing
14  pagebottomoffset
15  partokencontext
16  luabytecodecall
17  mathsurroundskip
18  displaywidowpenalties
19  endlocalcontrol
20  Umathordinnerspacing
21  Umathbinclosespacing
22  toksapp
23  rightghost
24  fontcharic
25  fontchardp
26  fontcharht
27  Umathlimitbelowbgap
28  fontcharwd
29  Umathopeninnerspacing
30  partokenname
31  textdirection
32  tokspre
33  Umathnolimitsubfactor
34  Uoverdelimiter
35  Umathpunctpunctspacing
36  Umathclosepunctspacing
37  mathdisplayskipmode
38  saveimageresource
39  mathrulesfam
40  Umathrelordspacing
41  Umathsupbottommin
42  Umathlimitbelowkern
43  copyfont
44  pagedirection
45  Umathstackdenomdown
46  localrightbox
47  Umathfractionrule
48  widowpenalties
49  Umathcharfam
50  Umathcloseinnerspacing
51  Umathopenrelspacing
52  tracingifs
53  Uhextensible
54  Umathsupsubbottommax
55  leftmarginkern
56  iffontchar
57  Umathcloserelspacing
58  linedirection
59  eTeXVersion
60  ifincsname
61  Umathcharnum
62  Umathinnerordspacing
63  synctex
64  luabytecode
65  formatname
66  letterspacefont
67  boxdirection
68  pdfextension
69  protected
70  discretionaryligaturemode
71  Umathrelinnerspacing
72  topmarks
73  showgroups
74  Umathsubtopmax
75  glueexpr
76  randomseed
77  splitfirstmarks
78  suppressoutererror
79  predisplaydirection
80  Umathsubsupshiftdown
81  Umathopbinspacing
82  Umathordbinspacing
83  Umathrelopspacing
84  Umathopenbinspacing
85  suppressprimitiveerror
86  Umathoverdelimiterbgap
87  localleftbox
88  alignmark
89  Uunderdelimiter
90  hyphenationmin
91  Umathclosebinspacing
92  Umathcodenum
93  dvifeedback
94  outputmode
95  luafunction
96  compoundhyphenmode
97  Umathpunctopenspacing
98  luacopyinputnodes
99  Umathconnectoroverlapmin
100 crampedscriptscriptstyle
101 csstring
102 Umathradicaldegreeafter
103 everyeof
104 eTeXversion
105 uniformdeviate
106 luatexversion
107 Umathfractionnumup
108 rightmarginkern
109 Umathopclosespacing
110 clubpenalties
111 mathrulesmode
112 explicithyphenpenalty
113 Umathordclosespacing
114 savingvdiscards
115 splitbotmarks
116 Umathoverdelimitervgap
117 etokspre
118 expanded
119 suppressmathparerror
120 Udelcode
121 bodydir
122 showtokens
123 immediateassigned
124 tracingassigns
125 shapemode
126 dimexpr
127 parshapedimen
128 attribute
129 readline
130 Umathsubshiftdrop
131 Umathsubshiftdown
132 matheqnogapstep
133 Umathpunctrelspacing
134 lastsavedimageresourceindex
135 lastsavedimageresourcepages
136 mathoption
137 Umathradicaldegreeraise
138 fixupboxesmode
139 adjustspacing
140 Umathsupshiftdrop
141 Umathcharslot
142 Umathcloseclosespacing
143 luatexrevision
144 insertht
145 localinterlinepenalty
146 useboxresource
147 explicitdiscretionary
148 Umathchar
149 Udelimiterover
150 Ustack
151 Umathcode
152 mathdelimitersmode
153 saveboxresource
154 Udelcodenum
155 gtoksapp
156 tracingscantokens
157 suppresslongerror
158 ignoreligaturesinfont
159 Umathaxis
160 Umathfractionnumvgap
161 gtokspre
162 mathflattenmode
163 Umathskewedfractionhgap
164 Umathrelclosespacing
165 Umathpunctbinspacing
166 Ustopdisplaymath
167 quitvmode
168 crampedscriptstyle
169 letcharcode
170 setrandomseed
171 hyphenationbounds
172 crampedtextstyle
173 pagedir
174 Umathbinrelspacing
175 Umathopordspacing
176 dvivariable
177 attributedef
178 mathdirection
179 Umathordordspacing
180 pdffeedback
181 Umathskewedfractionvgap
182 Umathopenordspacing
183 mathitalicsmode
184 mathdir
185 outputbox
186 Umathcloseordspacing
187 Umathnolimitsupfactor
188 pagewidth
189 Ustopmath
190 aligntab
191 prehyphenchar
192 dviextension
193 luafunctioncall
194 Umathpunctopspacing
195 breakafterdirmode
196 Umathsubsupvgap
197 luaescapestring
198 prerelpenalty
199 begincsname
200 tracingnesting
201 Umathradicalrule
202 Umathunderbarrule
203 postexhyphenchar
204 Umathradicaldegreebefore
205 Umathstacknumup
206 normaldeviate
207 ifdefined
208 Umathbinopspacing
209 xtoksapp
210 boxdir
211 Ustartdisplaymath
212 savecatcodetable
213 Umathbinpunctspacing
214 eTeXglueshrinkorder
215 mathscriptboxmode
216 tagcode
217 Uroot
218 lastsavedboxresourceindex
219 Unosuperscript
220 Umathoperatorsize
221 xtokspre
222 Uradical
223 mathstyle
224 Umathopopenspacing
225 Umathordopenspacing
226 automatichyphenpenalty
227 Umathbininnerspacing
228 Umathinnerrelspacing
229 clearmarks
230 Umathoverbarvgap
231 fontid
232 Umathopenopenspacing
233 immediateassignment
234 Umathunderdelimiterbgap
235 Umathoverbarrule
236 setfontid
237 crampeddisplaystyle
238 ifabsdim
239 Umathlimitabovebgap
240 Umathcharclass
241 Umathstackvgap
242 Umathinneropspacing
243 currentifbranch
244 Umathrelbinspacing
245 Umathcloseopenspacing
246 ifcondition
247 pardir
248 firstmarks
249 initcatcodetable
250 lastnodetype
251 nokerns
252 pageleftoffset
253 luadef
254 tracingfonts
255 nospaces
256 Umathrelopenspacing
257 Umathlimitabovekern
258 Udelimiter
259 savepos
260 nohrule
261 mathrulethicknessmode
262 marks
263 localbrokenpenalty
264 Umathfractiondelsize
265 exceptionpenalty
266 automaticdiscretionary
267 currentgrouplevel
268 gleaders
269 Umathunderdelimitervgap
270 Umathinnerbinspacing
271 noligs
272 hyphenpenaltymode
273 draftmode
274 automatichyphenmode
275 prebinoppenalty
276 Usubscript
277 Umathcharnumdef
278 rpcode
279 interlinepenalties
280 muexpr
281 unexpanded
282 mathpenaltiesmode
283 ifcsname
284 parshapeindent
285 mathscriptcharmode
286 mathdefaultsmode
287 Umathaccent
288 pagetopoffset
289 showifs
290 matheqdirmode
291 pageheight
292 catcodetable
293 parshapelength
294 Umathspaceafterscript
295 predisplaygapfactor
296 primitive
297 Umathinneropenspacing
298 Uskewed
299 pxdimen
300 glyphdimensionsmode
301 Umathopenopspacing
302 splitdiscards
303 gluetomu
304 mutoglue
305 eTeXgluestretchorder
306 glueshrink
307 gluestretch
308 glueshrinkorder
309 gluestretchorder
310 numexpr
311 ifabsnum
312 scantextokens
313 scantokens
314 interactionmode
315 detokenize
316 currentiflevel
317 currentgrouptype
318 mathnolimitsmode
319 mathscriptsmode
320 suppressifcsnameerror
321 suppressfontnotfounderror
322 savinghyphcodes
323 lastlinefit
324 tracinggroups
325 eTeXrevision
326 eTeXminorversion
327 pardirection
328 pdfvariable
329 lateluafunction
330 latelua
331 useimageresource
332 pagerightoffset
333 linedir
334 efcode
335 lpcode
336 hjcode
337 preexhyphenchar
338 posthyphenchar
339 Umathinnerinnerspacing
340 Umathinnerpunctspacing
341 Umathinnerclosespacing
342 Umathpunctinnerspacing
343 Umathpunctclosespacing
344 Umathpunctordspacing
345 Umathopenclosespacing
346 Umathrelpunctspacing
347 Umathrelrelspacing
348 Umathbinopenspacing
349 Umathbinbinspacing
350 Umathbinordspacing
351 Umathopinnerspacing
352 Umathoppunctspacing
353 Umathoprelspacing
354 Umathopopspacing
355 Umathordrelspacing
356 Umathordopspacing
357 Umathsupshiftup
358 Umathlimitbelowvgap
359 Umathlimitabovevgap
360 Umathfractiondenomdown
361 Umathfractiondenomvgap
362 Umathradicalvgap
363 Umathradicalkern
364 Umathunderbarvgap
365 Umathunderbarkern
366 Umathoverbarkern
367 Umathquad
368 Umathchardef
369 Uvextensible
370 Unosubscript
371 Usuperscript
372 Ustartmath
373 ifprimitive
374 Uchar
375 luatexbanner
376 lastypos
377 lastxpos
378 novrule
379 etoksapp
380 leftghost
381 expandglyphsinfont
382 lastnamedcs
383 protrudechars
3
  • very nice starter: and dynamically updated with each new version, I presume...
    – jarnosz
    Commented Oct 12, 2023 at 23:58
  • eTeXversion appears twice... why?
    – jarnosz
    Commented Oct 13, 2023 at 13:01
  • 1
    @jarnosz interesting: v comes from etex and is an internal count register so needs \the to expand to 2, V is a luatex addition and is expandable without \the to the non-integer 2.2 Commented Oct 13, 2023 at 16:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .