Typesetting Lyrics of Czech Folksong “Když jsem já sloužil” using the l3seq Module of Expl3 Language

Vít Novotný

Zpravodaj Československého sdružení uživatelů TeXu (2023)

  • Volume: 033, Issue: 3-4, page 153-164
  • ISSN: 1211-6661

Abstract

top
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.

How to cite

top

Novotný, Vít. "Sazba textu české lidové písně „Když jsem já sloužil“ pomocí modulu l3seq jazyka expl3." Zpravodaj Československého sdružení uživatelů TeXu 033.3-4 (2023): 153-164. <http://eudml.org/doc/299157>.

@article{Novotný2023,
abstract = {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.},
author = {Novotný, Vít},
journal = {Zpravodaj Československého sdružení uživatelů TeXu},
language = {cze},
number = {3-4},
pages = {153-164},
publisher = {Československé sdružení uživatelů TeXu},
title = {Sazba textu české lidové písně „Když jsem já sloužil“ pomocí modulu l3seq jazyka expl3},
url = {http://eudml.org/doc/299157},
volume = {033},
year = {2023},
}

TY - JOUR
AU - Novotný, Vít
TI - Sazba textu české lidové písně „Když jsem já sloužil“ pomocí modulu l3seq jazyka expl3
JO - Zpravodaj Československého sdružení uživatelů TeXu
PY - 2023
PB - Československé sdružení uživatelů TeXu
VL - 033
IS - 3-4
SP - 153
EP - 164
AB - 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.
LA - cze
UR - http://eudml.org/doc/299157
ER -

References

top
  1. Novotný, Vít, 10.5300/2022-1-4/35, Zpravodaj CSTUGu. 2022, 32(1–4), 35–48. Dostupné z DOI: 10.5300/2022-1-4/35. (2022) DOI10.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. (2023) 
  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. (2023) 
  4. Starý Novotný, Vít, 10.5300/2023-1-2/3, Zpravodaj CSTUGu. 2023, 33(1–2), 3–38. Dostupné z DOI: 10.5300/2023-1-2/3. (2023) DOI10.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. (2015) 
  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. (2023) 
  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. (2023) 

NotesEmbed ?

top

You must be logged in to post comments.

To embed these notes on your page include the following JavaScript code on your page where you want the notes to appear.

Only the controls for the widget will be shown in your chosen language. Notes will be shown in their authored language.

Tells the widget how many notes to show per page. You can cycle through additional notes using the next and previous controls.

    
                

Note: Best practice suggests putting the JavaScript code just before the closing </body> tag.