Autor Thema: Scheme und \markup  (Gelesen 1640 mal)

iugin

  • Member
Scheme und \markup
« am: Sonntag, 25. August 2013, 08:26 »
Hallo miteinander,

ich habe es bis jetzt geschafft eine Scheme-Funktion zu schreiben, die ein \markup verändert (wie http://www.lilypond.org/doc/v2.17/Documentation/extending/new-markup-command-definition), damit eine TODO Liste oben auf der Seite gedruckt wird.
date = #(strftime "%d-%m-%Y" (localtime (current-time)))

#(define-markup-list-command (TODO layout props text)(markup-list?)
(interpret-markup-list layout props
#{
\markuplist {
\with-color #red
{ \line {"TODO: " \date}
\vspace #1.0
{ #text }
}}
#}))
Ich muss aber immer schreiben
\markup \TODO {
"1. mach das"
"2. und das"
}
Wie kann ich dasselbe haben, indem ich nur \TODO {...} schreibe, ohne \markup?
Es ist sicher elementar, ich schaffe es aber nicht (trotz langes Suchen in Internet).

Einen schönen Sonntag wünsche ich euch!

Ciao a tutti!

Eugenio



« Letzte Änderung: Sonntag, 25. August 2013, 08:40 von iugin »

harm6

  • Member
Re: Scheme und \markup
« Antwort #1 am: Sonntag, 25. August 2013, 13:39 »
Hallo Eugenio,

Zitat
Wie kann ich dasselbe haben, indem ich nur \TODO {...} schreibe, ohne \markup?

jedes markup-command oder markup-list-command muß durch \markup oder \markuplist aufgerufen werden.

Was Du suchst ist ein macro welches für den gewünschten output sorgt.

In 2.17. gibt es dafür (und für andere Aufgaben) define-scheme-function.
define-scheme-function gibt es zwar schon in 2.16, aber mit eingeschränkter, zumindest jedoch anderer Funktionalität.

Der Code unten klappt deshalb nur mit 2.17.
Für 2.16. fällt mir im Moment nichts helfendes ein.

Eingefügt habe ich noch eine leicht veränderte Definition für \paragraph aus dem Extending Manual

\version "2.17.24"

date = #(strftime "%d-%m-%Y" (localtime (current-time)))

% Slightly modified copy from EM 2.5.4 New markup list command definition
% German translation:
% http://lilypond.org/doc/v2.17/Documentation/extending/new-markup-list-command-definition.de.html

#(define-markup-list-command (paragraph layout props space args)
  (number? markup-list?)
   (interpret-markup-list layout props
     #{\markuplist \justified-lines { \hspace #space #args } #}))

TODO =
#(define-scheme-function (parser location text)(markup-list?)
  #{
    \markup \column {
      \with-color #red {
      \line { "TODO: " \date }
      %\vspace #1.0
         \paragraph #2  { \column #text }
      }
    }
  #})

\TODO
  #'(
    "1. mach das"
    "2. und das"
  )

Bild im Anhang.

HTH,
  Harm

iugin

  • Member
Re: Scheme und \markup
« Antwort #2 am: Sonntag, 25. August 2013, 18:59 »
Hallo Harm,

wie immer: ganz herzlichen Dank!
Mit define-scheme-function hatte ich eben probiert, erfolgslos. :)
Jetzt ist aber klar...

Ich wünsche dir einen schönen Abend

Liebe Grüsse

Eugenio