LuaTeX
LuaTeX je rozšířená verze pdfTeX s embedovaným jazykem Lua, podporující OTF (OpenType fonty).
Info
[editovat]Tutoriály
[editovat]Instalace
[editovat]Pokud jsme si třeba v ubuntu nainstalovali sázecí systém texlive, tak jedním z navrhovaných balíků byl i texlive-luatex.
A pokud jsme si nainstalovali balík texlive-lang-czechslovak (já jsem tak kvůli pdfcsplain učinil 2021-09-11, viz Ubuntu/balíky/Kychot/Focal, tak pak se mi balík texlive-luatex nainstaloval automaticky. Není už tudíž nutno cokoli dál řešit. Nainstalovaly se nám soubory:
dpkg -L texlive-luatex
Přečteme si:
/usr/share/doc/texlive-luatex/README.Debian
man
[editovat]Manuálové stránky:
man luahbtex man luatex ... atd:
NAME
- luatex, dviluatex, luajittex, texlua, texluac - An extended version of pdfTeX using Lua as an embedded scripting language
Obvyklé volání je:
luatex [--lua=FILE] [OPTION]... [TEXNAME[.tex]] [COMMANDS]
Běžně stačí:
luatex TEXNAME[.tex]
což vytvoří PDF soubor.
OTF
[editovat]Častý důvod pro použití luaTeX je podpora OTF (w: OpenType fonts).
Na začátku se schválně podívám, kolik mám místa na disku:
Souborový systém Velikost Užito Volno Uži% Připojeno do /dev/nvme0n1p10 33G 30G 1,8G 95% /
Příklad: Pro Projekt: Hesla Jednoty bratrské/2026 jsme si zakoupili výhodnou sadu tří typografických řezů JBW Value Pack, zahrnující rodiny řezů Jannon, Baskerville, Walbaum.
Po zaplacení licence jsme obdrželi soubory:
JBW Value Pack: BaskervilleNeo-TextBold.otf BaskervilleNeo-TextItalic.otf BaskervilleNeo-Text.otf JannonSans-Bold.otf Jannon10Pro-Bold.otf Jannon10Pro-Italic.otf Jannon10Pro.otf JohnSans-Bold.otf WalbaumGrotesk-Bold.otf Walbaum10-Bold.otf Walbaum10-Italic.otf Walbaum10.otf
Tyto soubory musíme umístit do systémové složky:
sudo mkdir -p /usr/share/fonts/opentype/storm sudo cp *.otf /usr/share/fonts/opentype/storm sudo chmod 644 /usr/share/fonts/opentype/storm/*.otf
Updatujeme Font Cache:
sudo fc-cache -f -v
Verifikujeme instalaci fontů:
$ fc-list | grep "storm"
/usr/share/fonts/opentype/storm/Walbaum10-Bold.otf: Walbaum 10 Pro:style=Bold /usr/share/fonts/opentype/storm/Jannon10Pro-Bold.otf: Jannon 10 Pro:style=Bold /usr/share/fonts/opentype/storm/JohnSans-Bold.otf: John Sans:style=Bold /usr/share/fonts/opentype/storm/Jannon10Pro.otf: Jannon 10 Pro:style=Regular /usr/share/fonts/opentype/storm/BaskervilleNeo-TextBold.otf: Baskerville Neo,Baskerville Neo Text:style=Text Bold,Bold /usr/share/fonts/opentype/storm/BaskervilleNeo-Text.otf: Baskerville Neo,Baskerville Neo Text:style=Text,Regular /usr/share/fonts/opentype/storm/Jannon10Pro-Italic.otf: Jannon 10 Pro:style=Italic /usr/share/fonts/opentype/storm/Walbaum10.otf: Walbaum 10 Pro:style=Regular /usr/share/fonts/opentype/storm/Walbaum10-Italic.otf: Walbaum 10 Pro:style=Italic,Regular /usr/share/fonts/opentype/storm/JannonSans-Bold.otf: Jannon Sans:style=Bold /usr/share/fonts/opentype/storm/BaskervilleNeo-TextItalic.otf: Baskerville Neo,Baskerville Neo Text:style=Text Italic,Italic /usr/share/fonts/opentype/storm/WalbaumGrotesk-Bold.otf: Walbaum Grotesk:style=Bold
a updatujeme LuaTeX font database:
luaotfload-tool --update
luaotfload | db : Font names database not found, generating new one. luaotfload | db : This can take several minutes; please be patient.
A ještě si zkusíme ověřit např.:
luaotfload-tool --find=Jannon10Pro luaotfload | resolve : Font "Jannon10Pro" found! luaotfload | resolve : Resolved file name "/usr/share/fonts/opentype/storm/Jannon10Pro.otf"
Tak a teď by nám to už mělo (teoreticky) fungovat. Ověříme: Projekt: Hesla Jednoty bratrské/2026#2025-08-04 Pondělí
Nejdřív si to testuji na Heslech 2025. A nefunguje tak, jak by mělo. Jakým příkazem mám to PDF generovat? Zkouším:
luatex hesla25.tex
Jenže to chcípne na řádku:
\chyph
tj. české dělení slov.
CS
[editovat]Dříve jsem to spouštěl příkazem:
pdfcsplain hesla25.tex
Takže teď by to mělo jít příkazem:
luacsplain
Ale takový příkaz nemám.
Možná je problém v tom, že jsem původně instaloval balík texlive-lang-czechslovak přes apt-get a teď je nutné vše instalovat přes tlmgr = the native TeX Live Manager?
tak ho zase odinstaluji:
sudo apt-get purge texlive-lang-czechslovak
Ale když se předtím s tímhle balíkem automaticky nainstalovala závislost na luatech, mám ho tam ještě?
tlmgr list --only-installed
(running on Debian, switching to user mode!) TLPDB: not a directory, not loading: /home/petr/texmf tlmgr: running in usermode, did you call `tlmgr init-usertree'?
Tak zkusím:
sudo tlmgr list --only-installed
[sudo] heslo pro petr: (running on Debian, switching to user mode!) TLPDB: not a directory, not loading: /root/texmf tlmgr: running in usermode, did you call `tlmgr init-usertree'?
sudo tlmgr update --self --all
(running on Debian, switching to user mode!) TLPDB: not a directory, not loading: /root/texmf tlmgr: running in usermode, did you call `tlmgr init-usertree'?
Problém bude asi v něčem jiném. Nainstaluji opět ten československý balík přes apt-get:
sudo apt-get install texlive-lang-czechoslovak
Načítají se seznamy balíků… Hotovo
Vytváří se strom závislostí
Načítají se stavové informace… Hotovo
Následující NOVÉ balíky budou nainstalovány:
texlive-lang-czechslovak
0 aktualizováno, 1 nově instalováno, 0 k odstranění a 1 neaktualizováno.
Nutno stáhnout 10,9 MB archivů.
Po této operaci bude na disku použito dalších 14,9 MB.
Stahuje se:1 http://cz.archive.ubuntu.com/ubuntu focal/universe amd64 texlive-lang-czechslovak all 2019.20200218-1 [10,9 MB]
Staženo 10,9 MB za 7s (1 485 kB/s)
Vybírá se dosud nevybraný balík texlive-lang-czechslovak.
(Načítá se databáze … nyní je nainstalováno 297985 souborů a adresářů.)
Připravuje se nahrazení …/texlive-lang-czechslovak_2019.20200218-1_all.deb …
Rozbaluje se texlive-lang-czechslovak (2019.20200218-1) …
Nastavuje se balík texlive-lang-czechslovak (2019.20200218-1) …
Zpracovávají se spouštěče pro balík tex-common (6.13) …
Running mktexlsr. This may take some time... done.
Running updmap-sys. This may take some time... done.
Running mktexlsr /var/lib/texmf ... done.
Building format(s) --all.
This may take some time... done.
Zpracovávají se spouštěče pro balík man-db (2.9.1-1) …
A ještě se přes apt-get podívám, jak to vypadá s tím luatex:
sudo apt-get install texlive-luatex
Načítají se seznamy balíků… Hotovo Vytváří se strom závislostí Načítají se stavové informace… Hotovo texlive-luatex je již nejnovější verze (2019.20200218-1). texlive-luatex nastaven jako instalovaný ručně. Následující balíky byly nainstalovány automaticky a již nejsou potřeba: texlive-lang-english texlive-lang-european texlive-lang-german texlive-lang-italian texlive-lang-polish texlive-lang-spanish Pro jejich odstranění použijte „sudo apt autoremove“. 0 aktualizováno, 0 nově instalováno, 0 k odstranění a 1 neaktualizováno.
Asi ten příkaz musím vygenerovat:
sudo fmtutil-sys --byfmt luacsplain
fmtutil: fmtutil is using the following fmtutil.cnf files (in precedence order): fmtutil: /usr/share/texmf/web2c/fmtutil.cnf fmtutil: /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf fmtutil: fmtutil is using the following fmtutil.cnf file for writing changes: fmtutil: /etc/texmf/web2c/fmtutil.cnf fmtutil [INFO]: writing formats under /var/lib/texmf/web2c fmtutil [INFO]: --- remaking luacsplain with luatex fmtutil: running `luatex -ini -jobname=luacsplain -progname=luacsplain -etex csplain.ini' ... This is LuaTeX, Version 1.10.0 (TeX Live 2019/Debian) (INITEX) restricted system commands enabled. (/usr/share/texlive/texmf-dist/tex/csplain/base/csplain.ini (/usr/share/texlive/texmf-dist/tex/csplain/base/csfonts.tex) (/usr/share/texlive/texmf-dist/tex/plain/base/plain.tex Preloading the plain format: codes, registers, parameters, fonts, more fonts, macros, math definitions, output routines, hyphenation (/usr/share/texlive/texmf-dist/tex/generic/hyphen/hyphen.tex)) (/usr/share/texlive/texmf-dist/tex/csplain/base/csfontsm.tex) (/usr/share/texlive/texmf-dist/tex/generic/config/luatexiniconfig.tex) (/usr/share/texlive/texmf-dist/tex/generic/luatex85/luatex85.sty) (/usr/share/texlive/texmf-dist/tex/csplain/base/etex-mac.tex) (/usr/share/texlive/texmf-dist/tex/csplain/base/hyphen.lan (/usr/share/texlive/texmf-dist/tex/csplain/base/lua-hyphen.lan (/usr/share/texlive/texmf-dist/tex/csplain/base/uni-lcuc.tex Setting lccodes and uccodes for Unicode characters.) Language hyph.patterns ready to load: en(USpreloaded) enus(usenglishmax) engb(u kenglish) it(italian) ia(interlingua) id(indonesian) cs(czech) sk(slovak) de(ng erman) fr(french) pl(polish) cy(welsh) da(danish) es(spanish) sl(slovenian) fi( finnish) hy(hungarian) tr(turkish) et(estoniak) eu(basque) ga(irish) nb(bokmal) nn(nynorsk) nl(dutch) pt(portuguese) ro(romanian) hr(croatian) zh(pinyin) is(i celandic) hsb(uppersorbian) af(afrikaans) gl(galician) kmr(kurmanji) tk(turkmen ) la(latin) lac(classiclatin) lal(liturgicallatin) elm(monogreek) elp(greek) gr c(ancientgreek) ca(catalan) cop(coptic) mn(mongolian) sa(sanskrit) ru(russian) uk(ukrainian) hy(armenian) as(assamese) hi(hindi) kn(kannada) lv(latvian) lt(li thuanian) ml(malayalam) mr(marathi) or(oriya) pa(panjabi) ta(tamil) te(telugu). Use \<shortname>lang to initialize language, \cslang for example)) (/usr/share/texlive/texmf-dist/tex/csplain/base/plaina4.tex \hsize=159.2 mm \vsize=239.2 mm) (/usr/share/texlive/texmf-dist/tex/csplain/base/ucode.tex Font encoding set to Unicode.) jobname=pdf*, PDF output initialised. (/var/lib/texmf/tex/generic/config/pdftexconfig.tex)) Beginning to dump on file luacsplain.fmt (format=luacsplain 2025.8.4) 3573 strings using 11969 bytes 65067 memory locations dumped; current usage is 149&10458 2070 multiletter control sequences \font\nullfont=nullfont \font\tenrm=csr10 \font\sevenrm=csr7 \font\fiverm=csr5 \font\teni=cmmi10 \font\seveni=cmmi7 \font\fivei=cmmi5 \font\tensy=cmsy10 \font\sevensy=cmsy7 \font\fivesy=cmsy5 \font\tenex=cmex10 \font\tenbf=csbx10 \font\sevenbf=csbx7 \font\fivebf=csbx5 \font\tentt=cstt10 \font\tensl=cssl10 \font\tenit=csti10 \font\tenbi=csbxti10 17 preloaded fonts warning (pdf backend): no pages of output. Transcript written on luacsplain.log. fmtutil [INFO]: log file copied to: /var/lib/texmf/web2c/luatex/luacsplain.log fmtutil [INFO]: /var/lib/texmf/web2c/luatex/luacsplain.fmt installed. fmtutil [INFO]: disabled formats: 1 fmtutil [INFO]: successfully rebuilt formats: 1 fmtutil [INFO]: not selected formats: 22 fmtutil [INFO]: total formats: 24 fmtutil [INFO]: exiting with status 0
Ale stejně ten příkaz luacsplain v systému nemám.
Tady csplain čeština a slovenština v plain TeXu Petr Olšák píše:
CSplain spolupracuje s klasickým TeXem, pdfTeXem, LuaTeXem nebo XeTeXem. Poslední dva TeXové programy interně pracují v Unicode (Unicode-TeX) a jste-li nový uživatel, doporučujeme použít jeden z nich, lépe LuaTeX. CSplain se v takovém případě spouští pomocí příkazu
luacsplain dokument (...nebo: luatex -fmt pdfcsplain dokument)
Takže zkusím tu druhou možnost:
luatex -fmt pdfcsplain hesla25.tex
a už to vypadá, že to funguje.