[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Complex/Large Lilypond projects and build automation

From: Urs Liska
Subject: Re: Complex/Large Lilypond projects and build automation
Date: Sun, 8 Dec 2019 09:17:49 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1

Am 08.12.19 um 08:44 schrieb Jacques Menu:
Urs, who is the creator/maintainer of LuaLaTeX? There seems to be a mist cloud around it...

I'm not completely sure about the relation between LuaTeX and LuaLaTeX. The LuaTeX homepage is, and the LuaTeX manual is basically what one refers to when learning about the Lua capabilities of working with LuaLaTeX.

With regard to the one project I've right now set the repository visibility to public, and it can be accessed at The idea has always been to make it public, but the repository is not in a state where we liked anyone to look at it ;-)

On the plus side I can say that the project is extensively documented - because that was part of my paid commission. You can find the docs in the (surprise) documentation directory but I have uploaded the compiled PDFs to and (where I'll eventually remove them again, this is not a permanent link).

This project has a very complex infrastructure on the LilyPond side as well, and there's a conference paper giving a high-level introduction to it:

The LaTeX part is of course very different from the use case asked for here, but it is surely an example showing what it means to use the Lua based LaTeX flavor as a document generation system. I'll try to outline as concisely as possible what the project does.

Our edition (complete works of Isfrid Kayser) is organized as a directory hierarchy <workgroup>/<work>/<movement>/<part>.ily. On the LilyPond side I can basically say

  \engrave \with { 
    workgroup = masses
    work = one
    movement = all
    part = violin-one


with "part" shorthands "score" and "choir" (printing the four voices plus basso continuo). Several options can be given to make some decisions about using modern or original clefs, using original line breaks or highlighting annotations.

The LaTeX infrastructure does a similar thing. You can tell it --  through command line options -- *what* volume you want to have created, and it collects the necessary information from the directory tree.

First it checks which score(s) are needed, then uses lyluatex to conditionally compile them (if they are not already cached). Then it uses Pandoc to convert additional texts (preface, editorial comments) from Markdown files - if they are present in the relevant directory (i.e. if an editor has provided a preface to a specific volume it will be included, otherwise it is simply skipped). Finally the critical report is typeset from the data exported from LilyPond using scholarLY.

Note that much of the code is somewhat outdated because in essence this project was the trigger to make me think further. What I realized is that essentially in *every* Lua project I did since I ended up implementing a kind of template system (starting with a copy from a previous project). So I started off generalizing this, and I hope my `luaformatters` package ( will become a really useful tool, with the potential of extremely simplifying the use of Lua in LaTeX document(s/ packages). (



Le 8 déc. 2019 à 07:43, Urs Liska <address@hidden> a écrit :

Am 8. Dezember 2019 06:22:22 MEZ schrieb Jacques Menu <address@hidden>:
Hello folks,

I’ll look into those alternative build systems.

Urs, where can I find a MWE of LuaLaTeX use for LilyPond? Didn't find
any when I seached the web recently.
I have MacTeX 2019 installed.

I only have one real example so far, and this is *far* from minimal - but includes an extensive documentation.
I'll discuss whether it is time to make this freely available now or if I can give you access to the repository.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]