lilypond-devel
[Top][All Lists]

## Re: Rationale for LaTeX lilypond-book syntax?

 From: David Kastrup Subject: Re: Rationale for LaTeX lilypond-book syntax? Date: Sun, 18 Apr 2010 19:21:54 +0200 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.92 (gnu/linux)

Werner LEMBERG <address@hidden> writes:

>> the "LaTeX" syntax for lilypond-book happens to be something like
>>
>> \begin[verbatim,fragment]{lilypond}
>>   \relative c' { c << { d e } { b c } >> <c es g> }
>> \end{lilypond}
>>
>> Unfortunately, this is quite annoying since actual optional
>> arguments for environments come _after_ the environment name in
>> LaTeX, like
>>
>> \begin{lilypond}[verbatim,fragment]
>>   \relative c' { c << { d e } { b c } >> <c es g> }
>> \end{lilypond}
>>
>> Would it be feasible to obsolete the first syntax and support (and
>> recommend) the second syntax?
>
> I don't see any reason not to do that.  We even don't have to change
> the name of the environment.  Just allow both
>
>   \begin{lilypond}[...]
>
> and
>
>   \begin[...]{lilypond}
>
> It should be straightforward to extend lilypond-book's regexp to make
> this work.

It is not an entirely backward-compatible change since

\begin{lilypond}[c16 d e f]
\end{lilypond}

is likely currently valid input.  Also LaTeX has the rather annoying
feature to skip whitespace before prospective optional arguments.  So

\begin{lilypond}
[c16 d e f]
\end{lilypond}

would still count, from a LaTeX point of view, as an optional argument.

My personal take on this would be to have lilypond-book interpret
\begin{lilypond}[...
as introducing options, but don't interpret [ as an option introducer
after any spaces have occured after \begin{lilypond}.

One can implement this on the TeX side (once one wants to implement
lilypond-book in that manner) as well, in order to avoid having to write

\begin{lilypond}[]
[c16 d e f]
\end{lilypond}

in order to convince LaTeX that no options are present.

--
David Kastrup