Juan Manuel Macías <maciasch...@posteo.net> writes: > TL;DR: A list of use cases where using LuaTeX is more advantageous than > using pdfTeX > > ------------ > > Many times Org users who frequently need to export their documents to > LaTeX, but who do not have much LaTeX experience (or their knowledge of > the TeX ecosystem is somewhat out of date), find themselves confused by > the different versions of the TeX engine: pdfTeX, XeTeX, LuaTeX… In Org > pdfTeX is the default engine, which in 2022 has a few limitations and is > really old, but still perfectly meets the needs of a significant group > of users. However, there may be a number of cases where it is more > advantageous to compile with LuaTeX, so here I will leave a short list > of those cases where LuaTeX may be a happy choice over pdfTeX. > > But first it is worth clarifying some things about LuaTeX along with > some misunderstandings: > > • LuaTeX is the evolution of pdfTeX, therefore LuaTeX can be considered > as the current de facto TeX engine. It is intended to replace pdfTeX, > and in fact many of us already consider pdfTeX obsolete and > deprecated. > > • To use LuaTeX it is not necessary to learn anything new or to know how > to program in Lua. LuaTeX includes a Lua interpreter and the ability > to bypass TeX primitives through Lua scripting (hence called LuaTeX). > But all of that is more on the side of developers and packagers. For > example, I am currently writing two LaTeX packages (one in > collaboration with a colleague) where 80% of the code is Lua and 20% > is (La)TeX. Of course, any user who knows Lua can take advantage of > the \directlua primitive or the luacode environment in their > documents. > > • A standard LaTeX document is always a LaTeX document, regardless of > the flavor of TeX used to compile that document. There will be some > minor differences. For example, in LuaLaTeX it is unnecessary to add > fontenc and inputenc commands in the preamble. > > And now we go with the non-exhaustive list of cases where compiling with > LuaTeX can be more advantageous for the user: > > 1. When you need to work in a *real* Unicode environment and not in > pdfTeX’s 'fake Unicode'. And, especially, when it is required to work > with languages that use a non-Latin writing system: Greek, Arabic, > Hebrew, all the languages that use Cyrillic, oriental languages, etc. > An extreme example you can see in this small code that I wrote for > LuaTeX in order to be able to use the syllabograms of the ancient > Mycenaean script: > > <https://gitlab.com/maciaschain/linealb-in-luatex> > > 2. When using truetype or opentype fonts is required. The pdfTeX user is > limited to using only the included type1 fonts, the number of which > is very limited. Besides, type1 is a deprecated and pre-unicode > format. In fact, it almost always ends up leaving the default > Computer Modern font. In LuaTeX we can use not only all the fonts > installed on our system but also any font (just indicate the path), > which is an important advantage over XeTeX. A basic command could be > something like (loading the fontspec package): > > ┌──── > │ \setmainfont{Palatino Linotype} > └──── > > And with the latest versions of Babel we can associate fonts for > different writing systems, without the need to change languages > explicitly with a \selectlanguage. > > We can define all the font families we want or redefine the default > families. For example, with this command I define the default > monospaced font and request that it be scaled according to the > height of the lowercase of the main font: > > ┌──── > │ \setmonofont{Iosevka Fixed Curly}[Scale=MatchLowercase] > └──── > > 3. When you need to take advantage, to a greater or lesser extent, of > the opentype features of a font. For example, here we define the main > font to use old style numbers: > > ┌──── > │ \setmainfont{Palatino Linotype}[Numbers=Lowercase] > └──── > > We can also load the otf tags directly: > > ┌──── > │ \setmainfont{Palatino Linotype}[RawFeature=+onum] > └──── > > The fontspec package for managing fonts in LuaTeX and XeTeX is very > versatile and powerful. We can also associate a different font as > italic for an already defined font family, use different optical > resolutions of a font, etc. If what you are looking for is precise > and absolute fine-tuning of the fonts used, of course LuaTeX is the > ideal choice. > > 4. In general, when professional-level typographic fine-tuning is needed > (and far superior to that offered by dtp programs like InDesign or > QuarkXpress). For example, we can define on the fly new position > opentype properties for a specific font, without having to edit the > font. It is a non-destructive method that uses the > fonts.handlers.otf.addfeature lua function. For example, we can > define a new kerning value for the letters A and V. We’ll call it > ’mykern’ > > ┌──── > │ \directlua{ > │ fonts.handlers.otf.addfeature > │ { > │ name ="mykern", > │ type ="kern", > │ data = > │ { > │ ["A"] = { ["V"] = 270 }, > │ }} > │ } > │ > │ \setmainfont{Linux Libertine O}[RawFeature=+mykern] > └──── > > Here you can see a more bizarre and vandalistic example, where I have > replaced the accent of the accented letters in Spanish with the image of > a hammer :-) > > https://i.imgur.com/iixxJmx.png > > Here I have placed the image of a dancer on the tilde of the spanish > letter ñ: > > https://i.imgur.com/oIZzpbJ.png > > (The process is simply to decompose the complex characters from the > precombined form to their canonical decomposition: NFC > NFD, and then > use a png image as a diacritic :-): > > \newunicodechar{^^^^0301}{\raisebox{1.2ex}{\includegraphics[width=.28em]{martillo.png}}} > > 1. Lastly, a lot of new (increasingly) LaTeX packages are written on top > of the advanced features of LuaTeX and require LuaTeX. A very useful > package, for example, is impnattypo, for post-production fine-tuning > (<https://www.ctan.org/pkg/impnattypo>). Among the many features of > impnattypo we have the ability to prevent lines from ending in > single-letter words. It also highlights in draft mode, homeoarchy > cases, which are typographically incorrect. An example in one of my > recent works: > > <https://i.imgur.com/Kf8Oot0.png> > > Best regards, > > Juan Manuel
I typically use luatex instead of pdftex and the sole reason is performance for pgfplots. The performance gain is night and day when generating plots with many points. I forget exactly why this is. When I'm generating very simple documents I stick with pdftex, which is faster in those cases. As for lua scripting: I made some brief forays into this but found it not to be especially useful for me: the reason for that may just have been lack of persistent effort, though. When I want more modern programming features I typically use pylatex. Matt