\version "2.19.42"
leftCol =
\markuplist {
\column
\column-lines {
"Left Verse 1"
}
\column
\column-lines {
"Left Verse 2"
}
}
rightCol =
\markuplist {
\column
\column-lines {
"Right Verse 1"
}
\column
\column-lines {
"Right Verse 2 "
}
}
#(define (reorder-lists lists)
;; TODO better name and DOC
"Example:
(reorder-lists '((a) (b c) (d e f)))
->'(a b d "" c e "" "" f)"
(let* ((max-length (apply max 0 (map length lists)))
(equal-length-lists
(map
(lambda (l)
(let ((length-diff (- max-length (length l))))
(if (zero? length-diff)
l
(append l (make-list length-diff "")))))
lists)))
(define (new-lists lists rl)
;; TODO better name and DOC
"Example
(new-lists '((a b c) (d e f) (g h i)) '())
->
'((a d g) (b e h) (c f i))"
(if (every null? lists)
(reverse rl)
(new-lists
(map cdr lists)
(cons (map car lists) rl))))
(apply append '() (new-lists equal-length-lists '()))))
#(define-markup-list-command (paragraph layout props args) (markup-list?)
#:properties ((x-shift 2))
(interpret-markup-list layout props
(make-justified-lines-markup-list (cons (make-hspace-markup x-shift) args))))
#(define (numbering-start lst strt)
"Returns a list of custom formated markups for numbers, relying on the length
of @var{lst}, starting with number 2"
(if (eq? strt 0)
(map
(lambda (i)
#{ \markup \concat \paragraph { " " } #})
(iota (length lst)))
(map
(lambda (i)
#{ \markup \concat \paragraph { \bold #(format #f "~2d. " i) } #})
(iota (length lst) strt 1))))
%% so funktioniert es (eh klar, stammt von Harm ;) )
\markuplist {
\table
#'(1 -1 1 -1)
#(reorder-lists
(list
;; numbering is done for each list, because we can't warrant equal
;; length of each list
(numbering-start leftCol 2)
leftCol
(numbering-start rightCol 2)
rightCol))
}
%% und jetzt mein Versuch
%% irgendwo ist ein Hund drinnen :( aber wo???
formatTwoColumns =
#(define-scheme-function (r-col r-start l-col l-start)
(markup-list? index? markup-list? index?)
#{
\markuplist {
\table
#'(1 -1 1 -1)
#(reorder-lists
(list
;; numbering is done for each list, because we can't warrant equal
;; length of each list
(numbering-start $r-col $r-start)
$r-col
(numbering-start $l-col $l-start)
$l-col))
}
#}
)
\markuplist
{
\formatTwoColumns #leftCol #2 #rightCol #2
}Parsing...
G:/Lilypond/_Liederheft/Forum/2spaltigalsmarkuplis.ly:97:9: error: GUILE signaled an error for the expression beginning here
#
(reorder-lists
G:/Lilypond/_Liederheft/Forum/2spaltigalsmarkuplis.ly:97:8: error: not a markup
#(reorder-lists
G:/Lilypond/_Liederheft/Forum/2spaltigalsmarkuplis.ly:97:8: error: syntax error, unexpected MARKUP_IDENTIFIER, expecting MARKUPLIST_IDENTIFIER
#(reorder-lists
G:/Lilypond/_Liederheft/Forum/2spaltigalsmarkuplis.ly:113:3: error: error in #{ ... #}
\formatTwoColumns #leftCol #2 #rightCol #2
G:/Lilypond/_Liederheft/Forum/2spaltigalsmarkuplis.ly:113:3: error: not a markup
\formatTwoColumns #leftCol #2 #rightCol #2
Als Fehlermeldung erhalte ich folgendes:
[...]
Problem durch Hinschauen gelöst
Die Dollarzeichen innerhalt der Scheme-Funktion gehören natürlich weg!
error: GUILE signaled an error for the expression beginning hereund dann gings weiter wie bei Dir.
#
(reorder-lists
Unbound variable: $r-col
Jetzt habe ich doch noch eine Frage: wie kann ich den Abstand zwischen den Strophen vergrößern?
\version "2.19.42"
leftCol =
\markuplist {
\override #'(baseline-skip . 3)
\column
\column-lines {
"Left Verse 1"
"Left Verse 1a"
}
\override #'(baseline-skip . 3)
\column
\column-lines {
"Left Verse 2"
"Left Verse 2a"
}
}
rightCol =
\markuplist {
\override #'(baseline-skip . 3)
\column
\column-lines {
"Right Verse 1"
}
\override #'(baseline-skip . 3)
\column
\column-lines {
"Right Verse 2 "
}
}
#(define (reorder-lists lists)
;; TODO better name and DOC
"Example:
(reorder-lists '((a) (b c) (d e f)))
->'(a b d "" c e "" "" f)"
(let* ((max-length (apply max 0 (map length lists)))
(equal-length-lists
(map
(lambda (l)
(let ((length-diff (- max-length (length l))))
(if (zero? length-diff)
l
(append l (make-list length-diff "")))))
lists)))
(define (new-lists lists rl)
;; TODO better name and DOC
"Example
(new-lists '((a b c) (d e f) (g h i)) '())
->
'((a d g) (b e h) (c f i))"
(if (every null? lists)
(reverse rl)
(new-lists
(map cdr lists)
(cons (map car lists) rl))))
(apply append '() (new-lists equal-length-lists '()))))
#(define-markup-list-command (paragraph layout props args) (markup-list?)
#:properties ((x-shift 2))
(interpret-markup-list layout props
(make-justified-lines-markup-list (cons (make-hspace-markup x-shift) args))))
#(define (numbering-start lst strt)
"Returns a list of custom formated markups for numbers, relying on the length
of @var{lst}, starting with number 2"
(if (eq? strt 0)
(map
(lambda (i)
#{ \markup \concat \paragraph { " " } #})
(iota (length lst)))
(map
(lambda (i)
#{ \markup \concat \paragraph { \bold #(format #f "~2d. " i) } #})
(iota (length lst) strt 1))))
%% so funktioniert es (eh klar, stammt von Harm ;) )
%\markuplist {
% \table
% #'(1 -1 1 -1)
% #(reorder-lists
% (list
% ;; numbering is done for each list, because we can't warrant equal
% ;; length of each list
% (numbering-start leftCol 2)
% leftCol
% (numbering-start rightCol 2)
% rightCol))
%}
%
%% und jetzt mein Versuch
%% irgendwo ist ein Hund drinnen :( aber wo???
formatTwoColumns =
#(define-scheme-function (r-col r-start l-col l-start)
(markup-list? index? markup-list? index?)
#{
\markuplist {
\table
#'(1 -1 1 -1)
#(reorder-lists
(list
;; numbering is done for each list, because we can't warrant equal
;; length of each list
(numbering-start r-col r-start)
r-col
(numbering-start l-col l-start)
l-col))
}
#}
)
\markuplist
\override-lines #'(baseline-skip . 15)
{
\formatTwoColumns #leftCol #2 #rightCol #2
}
%% so funktioniert es (eh klar, stammt von Harm ;) )Nun gebe ich mir zwar alle Mühe, jedoch bin ich immer sehr dankbar wenn meine Codings hinterfragt werden, nicht selten kann man Sachen besser machen, hab' ich was übersehen oder dergleichen.
ich verwende deine Funktionen aus diesem Thread ständig (kommt das eigentlich in eine der nächsten Releases als Standard rein?).Das bezweifel ich.
Zitaterror: GUILE signaled an error for the expression beginning hereund dann gings weiter wie bei Dir.
#
(reorder-lists
Unbound variable: $r-col
Diese Meldung identifiziert das Problem direkt. Hast Du sie nicht so bekommen?
Das bezweifel ich.
Diese Funktionalität ist massgeschneidert. Es gibt zu wenig Variabilität für andere Erscheinungsbilder, vielleicht ins LSR...
Jetzt, wo du es schreibst, finde ich diese Meldung im weiteren Fehlertext. Die habe ich glatt übersehen, vll. sollte ich Lilypond etwas weniger geschwätzig bei der Ausgabe machen
ich finde, die Ausgabe ist sehr flexibel, was Liedsetzung betrifft. Beliebig viele Spalten, Strophenabstände etc., die Strophennummerierung ist automatisch und kann geändert bzw. weggelassen werden (meine Bastelei).
jetzt habe ich deinen Code ausprobiert, funktioniert super. Leider sehe ich den Unterschied im Code zu vorher nicht,
leftCol =
\markuplist {
\override #'(baseline-skip . 3)
\column
\column-lines {
"Left Verse 1"
"Left Verse 1a"
}
...
\markuplist
\override-lines #'(baseline-skip . 15)
{
\formatTwoColumns #leftCol #2 #rightCol #2
}