This snippet shows how to implement a counter in LilyPond for use in markup texts. Whenever you call the \counter #"name"
markup function, the counter named name
will be increased by one and the new value will be printed as a text markup. The first call will print 1
by default. Example:
\markup { Initial value of the counter: \counter #"mycounter". Second call: \counter #"mycounter" }
The snippet also implements a \setcounter #"name" newvalue
markup command to set the the counter to a specific value and print it out.
One can have an arbitrary number of simultaneous counters, each indicated by its own name (as a string).
The storage of the counter values is implemented as a global alist counter-alist
(Scheme/Guile's concept of a hash), where the counter
command simply extracts the current value, increases it by one and stores it back in the alist.