Previous |  Up |  Next

Article

Summary:
Jazyk plain TeX vznikl pro sazbu knih a turingovsky úplným programovacím jazykem se stal až na konci svého vývoje. Zatímco příprava textu dokumentů a úpravy vzhledu jsou v plain TeXu přímočaré, programování naráží na chybějící základní datové struktury a na odloženou expanzi maker, která neodpovídá běžnému vyhodnocování v moderních imperativních jazycích. Ve stroji LuaTeX je možné programovat také v imperativním programovacím jazyce Lua. Jazyk Lua sice zmíněnými neduhy plain TeXu netrpí, ale komunikace mezi TeXem a Luou není přímočará a při předávání dat dochází ke ztrátě důležitých informací, jako jsou kategorie TeXových znaků. Programovací jazyk expl3 nabízí zlatou střední cestu a umožňuje uživatelům programovat v TeXu způsobem, na který jsou zvyklí z moderních imperativních programovacích jazyků. V tomto článku představuji modul l3seq jazyka expl3, který poskytuje datovou strukturu seznamu. Možnosti modulu demonstruji na sazbě textu české lidové písně Když jsem já sloužil. Implementaci v jazyce expl3 porovnávám s implementací v plain TeXu.
Summary:
The language of plain TeX was developed for typesetting books and only became a Turing-complete programming language at the end of its development. Whereas writing and designing documents is straightforward in plain TeX, programming is difficult due to a lack of basic data structures and the delayed macro expansion, which is different from modern imperative programming languages. In the LuaTeX engine, authors can also program in the imperative programming language of Lua. Although Lua does not share the limitations of plain TeX, passing data between TeX and Lua is not straightforward and important information such as token category codes are lost in transit. The expl3 programming language combines the best of both worlds and allows authors to program in TeX in a way that is similar to modern imperative programming languages. In this article, I introduce the l3seq module of the expl3 language that provides the list data structure. Using l3seq, I typeset the lyrics of the Czech folksong Když jsem já sloužil. I also compare the l3seq implementation with plain TeX.
References:
[1] Novotný, Vít: Vysokoúrovňové jazyky pro TeX. Zpravodaj CSTUGu. 2022, 32(1–4), 35–48. Dostupné z DOI: 10.5300/2022-1-4/35. DOI 10.5300/2022-1-4/35
[2] The LaTeX Project: The expl3 package and LaTeX3 programming. [online]. CTAN, 2023-08-29 [cit. 2023-10-05]. Dostupné z: https://tug.ctan.org/macros/latex/contrib/l3kernel/expl3.pdf
[3] The LaTeX Project: The LaTeX3 interfaces. [online]. CTAN, 2023-08-29 [cit. 2023-10-05]. Dostupné z: https://tug.ctan.org/macros/latex/contrib/l3kernel/interface3.pdf
[4] Starý Novotný, Vít: Nápadovník jmen pro tvůrčí psaní v LuaTeXu. Zpravodaj CSTUGu. 2023, 33(1–2), 3–38. Dostupné z DOI: 10.5300/2023-1-2/3. DOI 10.5300/2023-1-2/3
[5] Hroudová, Eva: Když jsem já sloužil. [online]. ProMaminky.cz, 2015-06-20 [cit. 2023-08-13]. Dostupné z: https://www.promaminky.cz/pisnicky/lidove-36/kdyz-jsem-ja-slouzil-287
[6] Starý Novotný, Vít: Sazba textu české lidové písně „Když jsem já sloužil“ pomocí modulu l3seq jazyka expl3: Release The latest version. [online]. GitHub, 2023-09-10 [cit. 2023-09-10]. Dostupné z: https://github.com/Witiko/typesetting-czech-folksong-with-l3seq/releases/tag/latest
[7] Olšák, Petr: OpTeX: Format Based on Plain TeX and OPmac. [online]. CTAN, 2023-05-25 [cit. 2023-09-18]. Dostupné z: https://mirrors.ctan.org/macros/optex/doc/optex-doc.pdf Verze 1.12.
Partner of
EuDML logo