• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Scheme und \markup

Begonnen von iugin, Sonntag, 25. August 2013, 08:26

Vorheriges Thema - Nächstes Thema

iugin

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




harm6

Hallo Eugenio,

ZitatWie 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

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