LUATEX(1)
okay bestie, buckle up โ this is luatex(1) from the General Commands Manual, and she is not a normal typesetter, she's a whole personality. Six names, one icon. Let's get into it. ๐
โจ NAME โจ
luatex, dviluatex, luahbtex, luajittex, texlua, texluac โ an extended version of TeX using Lua as an embedded scripting language. Yes, TeX. With Lua inside it. It's giving "your fave could never." ๐
๐ SYNOPSIS ๐
luatex [--lua=FILE] [OPTION]... [TEXNAME[.tex]] [COMMANDS]
luatex [--lua=FILE] [OPTION]... \FIRST-LINE
luatex [--lua=FILE] [OPTION]... &FMT [ARGS]
๐ DESCRIPTION ๐
So basically: run the luaTeX typesetter on TEXNAME, and it usually makes you a TEXNAME.pdf. Any leftover COMMANDS get processed as luaTeX input, right after TEXNAME is read. slay.
Alternatively โ and this is the fun part โ if the first non-option argument starts with a backslash, then all the non-option arguments get read as one single line of luaTeX input. iconic behavior honestly.
Alternatively, if that first non-option argument starts with a &, then the next word is taken as the FMT to read, and that overrides everything else. Any remaining arguments get processed like above.
If you pass no arguments and no options at all? It just prompts you for input. shy little thing. ๐
If you call it as texlua, it acts as a Lua interpreter. If you call it as texluac, it acts as a Lua bytecode compiler. Same girl, different era. ๐
LuaTeX began as an extended version of pdfTeX, and she came with: Unicode and OpenType font support, an embedded Lua scripting language, the e-TeX and Omega extensions, plus an integrated MetaPost engine โ and she can create PDF files as well as DVI files. For more info about luatex, see http://www.luatex.org, and you can read the LuaTeX manual using the texdoc utility (texdoc luatex). ๐ซถ
All LuaTeX text input and output is considered to be Unicode text, although various filters make it possible to support any encoding.
In DVI mode, LuaTeX can be used as a complete replacement for the TeX engine. no cap.
In PDF mode, LuaTeX can natively handle the PDF, JPG, JBIG2, and PNG graphics formats. LuaTeX cannot include PostScript or Encapsulated PostScript (EPS) graphics files โ first convert them to PDF using epstopdf (1). that's the rule, bestie, don't fight it. ๐ญ
The luajittex variant includes the Lua just-in-time compiler. fast girl summer. โก
The luahbtex variant can use the HarfBuzz engine for glyph shaping, instead of LuaTeX's built-in shaper. โจ
๐ OPTIONS ๐
When the LuaTeX executable starts, it looks for the --lua command-line option. If there is no --lua option, the command line is interpreted in a similar fashion as in traditional pdfTeX and Aleph. But if the option is present, LuaTeX will enter an alternative mode of command-line parsing in comparison to the standard web2c programs. And like โ heads up โ the presence of --lua makes most of the other options unreliable, because the lua initialization file can disable kpathsea and/or hook functions into various callbacks. it's giving "choose your fighter." ๐
--lua=FILEโ the lua initialization file.
The following two options alter the executable behaviour:
--luaonlyโ start LuaTeX as a Lua interpreter. In this mode, it will set Lua'sarg[0]to the found script name, pushing preceding options in negative values and the rest of the command line in the positive values, just like the Lua interpreter. LuaTeX will exit immediately after executing the specified Lua script.--luaconlyโ start LuaTeX as a Lua byte compiler. In this mode, LuaTeX is exactly likeluacfrom the standalone Lua distribution, except that it does not have the-lswitch, and that it accepts (but ignores) the--luaconlyswitch.
Then the regular web2c options:
--debug-formatโ debug format loading.--draftmodeโ sets\pdfdraftmodeso luaTeX doesn't write a PDF and doesn't read any included images, thus speeding up execution. zoom zoom. ๐๏ธ--enable-write18โ synonym for--shell-escape.--disable-write18โ synonym for--no-shell-escape.--shell-escapeโ enable the\write18{command}construct, and Lua functionsos.execute(),os.exec(),os.spawn(), andio.popen(). The command can be any shell command. This construct is normally disallowed for security reasons.
โ ๏ธ bestie. this one runs shell commands. it is normally disallowed for security reasons. treat it with the respect it demands, fr fr.
--no-shell-escapeโ disable the\write18{command}construct and the other Lua functions, even if it is enabled in thetexmf.cnffile.--shell-restrictedโ enable restricted version of\write18,os.execute(),os.exec(),os.spawn(), andio.popen(), only commands listed intexmf.cnffile are allowed.--file-line-errorโ print error messages in the formfile:line:errorwhich is similar to the way many compilers format them.--no-file-line-errorโ disable printing error messages in thefile:line:errorstyle.--fmt=FORMATโ use FORMAT as the name of the format to be used, instead of the name by which luaTeX was called or a%&line.--helpโ print help message and exit.--iniโ start in INI mode, which is used to dump formats. The INI mode can be used for typesetting, but no format is preloaded, and basic initializations like setting catcodes may be required.--interaction=MODEโ sets the interaction mode. The MODE can be eitherbatchmode,nonstopmode,scrollmode, anderrorstopmode. The meaning of these modes is the same as that of the corresponding\commands.--jobname=NAMEโ use NAME for the job name, instead of deriving it from the name of the input file.--kpathsea-debug=BITMASKโ sets path searching debugging flags according to the BITMASK. See the Kpathsea manual for details.--mktex=FMTโ enable mktex*FMT* generation, where FMT must be eithertexortfm.--nosocketโ disable the luasocket (network) library.--output-comment=STRINGโ in DVI mode, use STRING for the DVI file comment instead of the date. This option is ignored in PDF mode.--output-directory=DIRECTORYโ write output files in DIRECTORY instead of the current directory. Look up input files in DIRECTORY first, then along the normal search path.--output-format=FORMATโ set the output format mode, where FORMAT must be eitherpdfordvi. This also influences the set of graphics formats understood by luaTeX.--progname=NAMEโ pretend to be program NAME (only for kpathsea).--recorderโ enable the filename recorder. This leaves a trace of the files opened for input and output in a file with extension.fls.--saferโ disable some Lua commands that can easily be abused by a malicious document. ๐ก๏ธ--synctex=NUMBERโ enable/disable SyncTeX extension.--versionโ print version information and exit.--creditsโ print credits and version details.
The following options are ignored:
--8bit,--etex,--parse-first-line,--no-parse-first-lineโ these are always on.--default-translate-file=TCXNAME,--translate-file=TCXNAMEโ these are always off.
๐ SEE ALSO ๐
pdftex(1), etex(1), aleph(1), lua(1). the whole friend group. ๐ซถ
๐ฆ AUTHORS ๐ฆ
The primary authors of LuaTeX are Taco Hoekwater, Hartmut Henkel, Hans Hagen, and Luigi Scarso, with help from Martin Schrรถder, Karel Skoupy, and Han The Thanh. absolute legends, every one. ๐
TeX was designed by Donald E. Knuth, who implemented it using his Web system for Pascal programs. It was ported to Unix at Stanford by Howard Trickey, and at Cornell by Pavel Curtis. The version now offered with the Unix TeX distribution is that generated by the Web to C system (web2c), originally written by Tomas Rokicki and Tim Morgan.
The LuaTeX home page is http://luatex.org. ๐ฆ
okay that's the whole page bestie, tysm for reading ๐ this was Web2C 2025, dated 17 November 2019 โ go typeset something gorgeous, mwah ๐ โจ๐
๐ฆ where this page comes from
- alpine 3.24: texlive-doc 2026.0-r0 ยท GPL-2.0-or-later AND GPL-3.0-or-later
- fedora 44: texlive-luatex 12:svn78218-105.fc44 ยท GPL-2.0-or-later
- fedora 44: texlive-luatex 12:svn78218-111.fc44 ยท GPL-2.0-or-later
- opensuse-leap 16.0: texlive-luatex-doc 2025.221.svn73850-160000.3.1 ยท GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms