On Sun, 20 Jan 2013, Henning Hraban Ramm wrote:

Am 2013-01-20 um 17:57 schrieb Aditya Mahajan:

Now, I'd like my lilypond sections/buffers to have different names than just 
numbers; I'd prefer some unique IDs or even manually set names to be able to 
re-order them without the need of re-compiling.
I.e. if I change the order of songs in my songbook, all LilyPond snippets must 
get recalculated, even if they didn’t change.

Does

\startlilypond[name=one]
....
\stoplilypond

what you are looking for? (see the docs for how this behaves behind the scenes)

Oh, so simple? Great, that’s exactly what I meant. Since I would normally set 
[name=\currentcomponent], can I make that default?

Unfortunately no. The name key is reset at every `\startexternalfilter`; otherwise it will be difficult to mix `name=....` with normal usage.

There are some more enhancements that I’d like to implement, e.g. checking the 
resulting files if there are several pages or using single notelines to let 
ConTeXt do the page breaking (like lilypond-book does with LaTeX). I guess that 
would be as simple as replacing my \readPDFfile with some Lua code - can you 
give me a hint how to do that?

See grph-inc.*. I'll post an example later on how to handle single page and 
multipage pdfs differently.

Thanks, handling of multipage PDFs might help, but I’d try a different approach: LilyPond can generate EPS/PDF for single note systems and writes the number of them into a simple text file. I’d parse that with Lua and place all those small PDFs. I just need a clue how I must define t-filter’s "readcommand" as a Lua function.

Something like this:

\def\ParseLilypondFile#1%
   % #1 is the name of the output file
   {\ctxlua{thirddata.parselilypondfile("#1")}

\startluacode
  thirddata = thirddata or {}
  function thirddata.parselilypondfile(name)
    --- parse "name" file as you wish and
    --- generate approapriate context(...) commands
    --- to write back to ConTeXt
  end
\stopluacode

\defineexternalfilter[lilypond]
   [
     .....
     readcommand=\ParseLilypondFile,
     ....
   ]

Aditya
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to