A lyric problem - with one possible solution
These are slightly "rich" minimum examples since I've used different colours for the verses -- in part to make the problem with the initial example more clearly visible and to show the desired result in the second example. My solution can best be described as "brute force and ignorance" and I'd be happy to see a more elegant solution. In any case, I'd suggest that the problem is a combination of Bob Dylan's lyrics, and my imperative of keeping scores to no more than two pages while using a largish text size to make it easy for aging eyes to read the text and score from a nearly 1 metre distance. (standing with the music stand low so that my shoulders and face are visible to an audience.) And, if the brute force solution is the only viable solution, this example may prove useful to someone else who is faced with a similar problem. The best suggestion that I could find in the documentation was: http://lilypond.org/doc/v2.19/Documentation/notation/techniques-specific-to-lyrics#divisi-lyrics But this resulted in the lyrics "scrambling" as in: --- min-example.ly -- \version "2.18.2" \header { title = \markup{"FUBAR"} composer = \markup{\italic{"Bob ???"}} } #(set-global-staff-size 19.5) emphasize = { \override Lyrics.LyricText.font-series = #'bold \override Lyrics.LyricText.color = #blue } normal= { \revert Lyrics.LyricText.font-family \revert Lyrics.LyricText.font-series %% \revert Lyrics.LyricText.color } blue = { \override Lyrics.LyricText.color = #blue } green = { \override Lyrics.LyricText.color = #green } red = { \override Lyrics.LyricText.color = #red } melody = \relative c' { \clef treble \key d \major \time 2/2 \repeat volta 2{ \partial4 e4 | fis b a fis | \partial2 d2 } \bar "|." } LyricsOne = \lyricmode{ \set stanza = "1. " I have no one to meet } LyricsTwo = \lyricmode{ \emphasize \set stanza = "2. " << { I’m rea -- dy for to fade. } \new Lyrics { \set associatedVoice = "melody" \emphasize \blue In -- to my own pa -- rade, } >> } LyricsThree = \lyricmode{ \set stanza = "3. " \red << { of skip -- pin’ reels of rhyme } \new Lyrics { \red \set associatedVoice = "melody" "To your" tam -- bour -- ine in time } \new Lyrics { \red \set associatedVoice = "melody" "it’s just" a rag -- ged clown be-hind } \new Lyrics { \red \set associatedVoice = "melody" I woul-dn’t pay it any mind } >> } LyricsFour = \lyricmode{ \emphasize \set stanza = "4. " \green << { Sil -- houet -- ted by the sea,} \new Lyrics { \set associatedVoice = "melody" \emphasize\green circled by the cir -- cus sands } \new Lyrics { \set associatedVoice = "melody" \emphasize\green With all mem -- ory and fate } \new Lyrics { \set associatedVoice = "melody" \emphasize\green driven deep be -- neath the waves } >> } \score { << \new Staff { \melody } \addlyrics { \LyricsOne } \addlyrics { \LyricsTwo } \addlyrics { \LyricsThree } \addlyrics { \LyricsFour } \set Score.majorSevenSymbol = \markup {maj7} >> \layout { } \midi { } } -- end min-example.ly - Now here's where the Brut force comes in. -- min-example2.ly - \version "2.18.2" \header { title = \markup{"FUBAR, but Better"} composer = \markup{\italic{"Bob ???"}} } #(set-global-staff-size 19.5) emphasize = { \override Lyrics.LyricText.font-series = #'bold \override Lyrics.LyricText.color = #blue } normal= { \revert Lyrics.LyricText.font-family \revert Lyrics.LyricText.font-series %% \revert Lyrics.LyricText.color } blue = { \override Lyrics.LyricText.color = #blue } green = { \override Lyrics.LyricText.color = #green } red = { \override Lyrics.LyricText.color = #red } melody = \relative c' { \clef treble \key d \major \time 2/2 \repeat volta 2{ \partial4 e4 | fis b a fis | \partial2 d2 } \bar "|." } LyricsOne = \lyricmode{ \set stanza = "1. " I have no one to meet } LyricsTwo = \lyricmode{ \emphasize \set stanza = "2. " I’m rea -- dy for to fade. } LyricsTwoB = \lyricmode{ \emphasize \blue In -- to my own pa -- rade, } LyricsThree = \lyricmode{ \set stanza = "3. " \red of skip -- pin’ reels of rhyme } LyricsThreeB = \lyricmode{ \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \skip1 \sk
Re: Define variable only if it doesn't exist / is unbound
On Thu, 2019-03-28 at 18:22 -0700, Aaron Hill wrote: > On 2019-03-28 3:14 pm, Thomas Morley wrote: > > Am Do., 28. März 2019 um 22:22 Uhr schrieb Aaron Hill > > : > > > > > > On 2019-03-28 2:18 pm, Valentin Villenave wrote: > > > > On 3/28/19, Pedro Pessoa wrote: > > > > > I imagined something like: > > > > > > > > > > %%% pseudo > > > > > #(define var > > > > > (not (is-bound? var) 0)) > > > > > %%% > > > > > > > > I’d probably probably do something like > > > > > > > > (null? (ly:parser-lookup 'var)) > > > > > > > > But I’m sure there are better ways :-) > > > > > > > > > (if (not (defined? 'foo)) (define foo 47)) > > > > > > > > > > > > -- Aaron Hill > > > > It's worth mentioning, the above will throw an error in guilev2: > > > > error: GUILE signaled an error for the expression beginning here > > # > > (if (not (defined? 'foo)) (define foo 47)) > > definition in expression context, where definitions are not allowed This sounds like a problem I had when Denemo started running under Guile 2 - I asked on the guile mailing list and got fixed up with this: ;;; for guile 2.0 compatibility define the define-once procedure to work in guile 1.8 (cond-expand (guile-2) ; nothing (else ; guile < 2.0 (define-macro (define-once sym exp) `(define ,sym (if (module-locally-bound? (current-module) ',sym) ,sym ,exp) Apologies in advance if this is un-related, I've not been following this thread :( Richard ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: treble and bass clef simultaneously
Am Do., 28. März 2019 um 23:52 Uhr schrieb Thomas Morley : > > Am Do., 28. März 2019 um 08:02 Uhr schrieb Werner LEMBERG : > > > > > > > here my factious approach: [...] > > > > Thanks a lot! Attached is the same sample code as with Aaron's > > solution. Do you see a possibility to make leading skips work in the > > second argument of \clefTst? > > > > > > Werner > > Probably like below. > Again: not tested beyond the given example! > > \version "2.19.82" > > \layout { > \context { > \Voice > \name "ClefVoice" > \alias "Voice" > \consists "Clef_engraver" > clefGlyph = #"clefs.F" > middleCPosition = #6 > clefPosition = #-8 > explicitClefVisibility = ##(#f #t #t) > \override Clef.full-size-change = ##t > \override Clef.font-size = #-4 > \override Clef.space-alist.next-note = #'(fixed-space . 2) > \override Clef.after-line-breaking = > #(lambda (grob) > (let ((col (ly:item-get-column grob))) > (if (eqv? (ly:item-break-dir grob) 1) > (ly:grob-translate-axis! > grob > (cdr (ly:grob-extent col col X)) > X > } > %% probably let ClefVoice be accepted by other contexts too > \context { > \Staff > \accepts "ClefVoice" > } > } > > > clefTst = > #(define-music-function (m1 m2) (ly:music? ly:music?) > > > (ly:music-set-property! m2 'elements > (call-with-values >(lambda () > (partition >(lambda (m) (music-is-of-type? m 'skip-event)) >(ly:music-property m2 'elements))) >(lambda (a b) > (append >a >(list > #{ >\context ClefVoice = "ClefVoice" { > %% Mmmh, this is a Score-override, may cause problems ... > \temporary \override Score.BreakAlignment.before-line-breaking = >#(lambda (grob) > (if (eqv? (ly:item-break-dir grob) 0) > (ly:grob-set-property! grob 'break-align-orders > (make-vector 3 '(span-bar >breathing-sign >staff-bar >key-cancellation >key-signature >time-signature >clef) > \voiceTwo > %\set forceClef = ##t > #(make-sequential-music b) > \revert Score.BreakAlignment.before-line-breaking >} > #}) > > #{ << $m1 $m2 >> #}) > > > \new PianoStaff << > \new Staff = "right" { > \repeat unfold 8 { c'8_[ b''' b''' c'] } | > } > \new Staff = "left" \relative c'' { > c8 g'' a g,, \clefTst { g } { c,,,4 } a'''8 g | > \clefTst { 8 g } { s cis,,,8 } a'''8 g c g a g | > > \break > > \clefTst { 8 g } { c,,,4 } a'''8 g c g a g | > c8 g'' a g,, \clefTst { g } { s ces,,,8 } a'''8 g | > } > >> > > Cheers, > Harm More robust: clefTst = #(define-music-function (m1 m2) (ly:music? ly:music?) (ly:music-set-property! m2 'elements (let* ((m2-elts (ly:music-property m2 'elements)) (idx (list-index (lambda (m) (or (music-is-of-type? m 'note-event) (music-is-of-type? m 'event-chord))) m2-elts))) (call-with-values (lambda () (split-at m2-elts idx)) (lambda (a b) (append a (list #{ \context ClefVoice = "ClefVoice" { %% Mmmh, this is a Score-override, may cause problems ... \temporary \override Score.BreakAlignment.before-line-breaking = #(lambda (grob) (if (eqv? (ly:item-break-dir grob) 0) (ly:grob-set-property! grob 'break-align-orders (make-vector 3 '(span-bar breathing-sign staff-bar key-cancellation key-signature time-signature clef) \voiceTwo %\set forceClef = ##t #(make-sequential-music b) \revert Score.BreakAlignment.before-line-breaking } #})) #{ << $m1 $m2 >> #}) Cheers, Harm ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Define variable only if it doesn't exist / is unbound
Am Fr., 29. März 2019 um 02:23 Uhr schrieb Aaron Hill : > > On 2019-03-28 3:14 pm, Thomas Morley wrote: > > Am Do., 28. März 2019 um 22:22 Uhr schrieb Aaron Hill > > : > >> > >> On 2019-03-28 2:18 pm, Valentin Villenave wrote: > >> > On 3/28/19, Pedro Pessoa wrote: > >> >> I imagined something like: > >> >> > >> >> %%% pseudo > >> >> #(define var > >> >> (not (is-bound? var) 0)) > >> >> %%% > >> > > >> > I’d probably probably do something like > >> > > >> > (null? (ly:parser-lookup 'var)) > >> > > >> > But I’m sure there are better ways :-) > >> > >> > >> (if (not (defined? 'foo)) (define foo 47)) > >> > >> > >> > >> -- Aaron Hill > > > > It's worth mentioning, the above will throw an error in guilev2: > > > > error: GUILE signaled an error for the expression beginning here > > # > > (if (not (defined? 'foo)) (define foo 47)) > > definition in expression context, where definitions are not allowed > > > > Probably better get used to below: > > > > #(if (not (defined? 'foo)) (ly:parser-define! 'foo 47)) > > Wouldn't... > > (define foo (if (defined? 'foo) foo 123)) > > ...work? Since foo is not defined (or redefined) until the S-expression > is fully evaluated, it should be able to resolve the existing value > should it exist. This also keeps the define at the top-level. > > -- Aaron Hill Think so. Cheers, Harm ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Define variable only if it doesn't exist / is unbound
Am Fr., 29. März 2019 um 10:00 Uhr schrieb Richard Shann : > > On Thu, 2019-03-28 at 18:22 -0700, Aaron Hill wrote: > > On 2019-03-28 3:14 pm, Thomas Morley wrote: > > > Am Do., 28. März 2019 um 22:22 Uhr schrieb Aaron Hill > > > : > > > > > > > > On 2019-03-28 2:18 pm, Valentin Villenave wrote: > > > > > On 3/28/19, Pedro Pessoa wrote: > > > > > > I imagined something like: > > > > > > > > > > > > %%% pseudo > > > > > > #(define var > > > > > > (not (is-bound? var) 0)) > > > > > > %%% > > > > > > > > > > I’d probably probably do something like > > > > > > > > > > (null? (ly:parser-lookup 'var)) > > > > > > > > > > But I’m sure there are better ways :-) > > > > > > > > > > > > (if (not (defined? 'foo)) (define foo 47)) > > > > > > > > > > > > > > > > -- Aaron Hill > > > > > > It's worth mentioning, the above will throw an error in guilev2: > > > > > > error: GUILE signaled an error for the expression beginning here > > > # > > > (if (not (defined? 'foo)) (define foo 47)) > > > definition in expression context, where definitions are not allowed > > This sounds like a problem I had when Denemo started running under > Guile 2 - I asked on the guile mailing list and got fixed up with > this: > > ;;; for guile 2.0 compatibility define the define-once procedure to > work in guile 1.8 > (cond-expand >(guile-2) ; nothing >(else ; guile < 2.0 > (define-macro (define-once sym exp) > `(define ,sym > (if (module-locally-bound? (current-module) ',sym) > ,sym > ,exp) > > Apologies in advance if this is un-related, I've not been following > this thread :( > > Richard Hi Richard, I tried to understand what you've got from the guile-list. Thus I opened a guilev2 prompt and simply typed cond-expand: scheme@(guile-user)> (version) $1 = "2.2.4.9-71f536" scheme@(guile-user)> cond-expand While compiling expression: Syntax error: unknown location: source expression failed to match any pattern in form cond-expand scheme@(guile-user)> Well, ok, the guile-manual says: 7.5.2 SRFI-0 - cond-expand [...] So I tried: scheme@(guile-user)> (use-modules (srfi srfi-0)) While compiling expression: no code for module (srfi srfi-0) What am I missing? Cheers, Harm ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Define variable only if it doesn't exist / is unbound
On 2019-03-29 3:37 am, Thomas Morley wrote: Am Fr., 29. März 2019 um 10:00 Uhr schrieb Richard Shann : This sounds like a problem I had when Denemo started running under Guile 2 - I asked on the guile mailing list and got fixed up with this: ;;; for guile 2.0 compatibility define the define-once procedure to work in guile 1.8 (cond-expand (guile-2) ; nothing (else ; guile < 2.0 (define-macro (define-once sym exp) `(define ,sym (if (module-locally-bound? (current-module) ',sym) ,sym ,exp) Apologies in advance if this is un-related, I've not been following this thread :( Richard Hi Richard, I tried to understand what you've got from the guile-list. Thus I opened a guilev2 prompt and simply typed cond-expand: scheme@(guile-user)> (version) $1 = "2.2.4.9-71f536" scheme@(guile-user)> cond-expand While compiling expression: Syntax error: unknown location: source expression failed to match any pattern in form cond-expand scheme@(guile-user)> Well, ok, the guile-manual says: 7.5.2 SRFI-0 - cond-expand [...] So I tried: scheme@(guile-user)> (use-modules (srfi srfi-0)) While compiling expression: no code for module (srfi srfi-0) What am I missing? Looks like srfi-0 is built into guile 2, so there is no module to use anymore. But cond-expand does work if you do something with it: scheme@(guile-user)> (cond-expand (guile-2 'hi)) $2 = hi -- Aaron Hill ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Tangled up in Lilypond syntax
Aaron Hill writes: > On 2019-03-27 4:19 pm, Kieren MacMillan wrote: >> That’s great… But essentially all of the documentation has \relative >> at the top-level. So what is a newbie to think, other than "My code >> should look like >> >> \paper { … } >> >> \header {…} >> >> \relative c' { … } >> >> But then they start to cut and paste code bits, or switch the order of >> voices, or any of a dozen other natural and intuitive operations that >> don’t imply ‘I’m destructive!!’… and then wonder why their music goes >> off the deep end. > > Truly it is not "destructive", to be fair. It at best is "chaotic", > where there is a perfectly deterministic behavior behind the scenes > that simply is not obvious at first glance. > > And, that's a fault of the documentation but also the end user. As > with most things with computers, it is ultimately the responsibility* > of the user to be willing to understand how a system works. An electrician cannot state "end user responsibility" when he leaves blank wires sticking out of sockets. It's the job of the documentation and templates to teach useful patterns at a time before the user understands what the patterns' details are about. > \relative is documented clearly enough that anyone who asks "Why is my > music switching octaves?" is not honoring their side of the contract. > The notes shift because \relative depends on context; and > cutting-and-pasting is going to change that context. We don't demand that musicians refrain from using an instrument until they understand its physics. LilyPond is a musician's tool, not a programmer's tool. > That said, I fully agree with advising folks who intend on moving > music around more fluidly to avoid \relative since it adds a > maintenance chore that would otherwise impede the creative process. > And there does seem to be an over-reliance on \relative in the > documentation, to the extent that folks are certainly biased to use > it. Well, yes. We had that discussion a few years ago. It lead to the introduction of \fixed and \absolute and some changes in the documentation to stop \relative from being the only explained and recommended way of note entry. But the documentation is a large document with a large history: until such changes are pervasive enough to change the "lore", it takes a lot of work and time. > Largely, I adopted \relative simply because pitches on the treble > staff would otherwise require at least one apostrophe. I have > considered dropping \relative in my own works, replacing it with > something like "\transpose c c'" so that I can at least minimize the > use of octave punctuation. You know \fixed? -- David Kastrup ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Define variable only if it doesn't exist / is unbound
Am Fr., 29. März 2019 um 11:48 Uhr schrieb Aaron Hill : > > On 2019-03-29 3:37 am, Thomas Morley wrote: > > Am Fr., 29. März 2019 um 10:00 Uhr schrieb Richard Shann > > : > >> This sounds like a problem I had when Denemo started running under > >> Guile 2 - I asked on the guile mailing list and got fixed up with > >> this: > >> > >> ;;; for guile 2.0 compatibility define the define-once procedure to > >> work in guile 1.8 > >> (cond-expand > >>(guile-2) ; nothing > >>(else ; guile < 2.0 > >> (define-macro (define-once sym exp) > >> `(define ,sym > >> (if (module-locally-bound? (current-module) ',sym) > >> ,sym > >> ,exp) > >> > >> Apologies in advance if this is un-related, I've not been following > >> this thread :( > >> > >> Richard > > > > Hi Richard, > > > > I tried to understand what you've got from the guile-list. > > > > Thus I opened a guilev2 prompt and simply typed cond-expand: > > > > scheme@(guile-user)> (version) > > $1 = "2.2.4.9-71f536" > > scheme@(guile-user)> cond-expand > > While compiling expression: > > Syntax error: > > unknown location: source expression failed to match any pattern in > > form cond-expand > > scheme@(guile-user)> > > > > Well, ok, the guile-manual says: > > 7.5.2 SRFI-0 - cond-expand > > [...] > > > > So I tried: > > > > scheme@(guile-user)> (use-modules (srfi srfi-0)) > > While compiling expression: > > no code for module (srfi srfi-0) > > > > What am I missing? > > Looks like srfi-0 is built into guile 2, so there is no module to use > anymore. > > But cond-expand does work if you do something with it: > > scheme@(guile-user)> (cond-expand (guile-2 'hi)) > $2 = hi > > -- Aaron Hill Yeah, I should have read a little more: 7.5.2 SRFI-0 - cond-expand [...] There’s no module to load, this is in the Guile core. Though, then I'd expect scheme@(guile-user)> cond-expand not returning an error. But surely my expectations are wong. Even scheme@(guile-user)> if errors. :( Harm ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Define variable only if it doesn't exist / is unbound
Pedro Pessoa writes: > Hello, > I want to init a variable only if it isn't bound. This seems a simple > matter, I was surpised I couldn't do it. > The thing is that it throws an 'unbound variable error' with anything I try. > I imagined something like: > > %%% pseudo > #(define var > (not (is-bound? var) 0)) > %%% var = 0 Does it need to be in Scheme? -- David Kastrup ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Markup wrap at the end of the line
el 2019-03-17 a las 11:33 Andrew Bernard escribió: > Sorry, not the specific answer to your question. hi, thank you for your answer, and excuse my delayed response. leaving aside considerations if what i'm asking for is a good practice or not, should i understand that there's no way to allow a line break in a markup? -- ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Markup wrap at the end of the line
el 2019-03-16 a las 19:23 Saul Tobin escribió: > I agree that when a long markup stretches the measure at the end of a > line, it suggests that there may be better ways of laying out the line > breaks. > > Perhaps there should be a penalty for stretched measures due to markup in > Lilypond's line breaking algorithm? it seems to me that this should be taken into account, definitely. specially if everyone agrees in the previous statement. -- ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Markup wrap at the end of the line
edes writes: > el 2019-03-16 a las 19:23 Saul Tobin escribió: > >> I agree that when a long markup stretches the measure at the end of a >> line, it suggests that there may be better ways of laying out the line >> breaks. >> >> Perhaps there should be a penalty for stretched measures due to markup in >> Lilypond's line breaking algorithm? > > it seems to me that this should be taken into account, definitely. > specially if everyone agrees in the previous statement. Agreement does not buy a whole lot when there is nobody who can or will do the job. There are a number of LilyPond subsystems where the existing expertise is mostly in the hands or rather heads of programmers who are mostly withdrawn from active development. I have taken efforts in some regions to restructure code and operation in manners that have quite a lower barrier to entry (in my opinion) but of course the short-term effects are such that the main source of expertise is myself which does not exactly increase the robustness against resource starvation. There have also been several refactoring projects by several people who have used that opportunity as a launch pad into more extensive changes but the process tends to have drained their energy to a degree where larger followup projects were not really within the scope of what they ended up to be able to invest themselves in. Breaking LilyPond's code more open to manipulation here, in a first step to C++ programming but ultimately also open to adaptation in Scheme, would certainly be desirable. -- David Kastrup ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
a curious workaround for flabby rounded-boxes
Hallo there I was looking to revamp my DIY fingering functions in the light of features available when moving from 2.18 to 2.20, e.g. I can get tighter positioning via TextScript.parent-alignment-X. There is a 'ringed' function for fingerings which need highlighting. Its bulbous \circle now seems rather wasteful of width, so I thought I could try \rounded-box instead. Well, it could certainly made be narrower and still readable, but it has spurious padding which wastes width too. This padding bug was found a year ago http://lists.gnu.org/archive/html/bug-lilypond/2018-03/msg00022.html and it should be gone by 2.21.0. https://sourceforge.net/p/testlilyissues/issues/5307/ My workaround involved using \with-dimensions-from to apply the extents of a throwaway corner-radius_0 version to the wanted rounded version. This was ugly but effective. Today I inadvertently changed that 0 to 1 and it still worked! So here is a compact workaround - attached, as \rounded-boxx. It uses the rounded version to correctly crop itself. This is beyond the extent of my explanatory powers. Note that \pad-x 0 is ineffective, presumably because it sets the extents in a different way. Cheers, Robin \version "2.18.2" #(ly:set-option 'debug-skylines) % needed before 2_19_37 #(define-markup-command (with-dimensions-from layout props arg1 arg2) (markup? markup?) (let* ((stil1 (interpret-markup layout props arg1)) (x (ly:stencil-extent stil1 0)) (y (ly:stencil-extent stil1 1))) (interpret-markup layout props (markup #:with-dimensions x y arg2 % workaround #(define-markup-command (rounded-boxx layout props args) (markup?) (let * ((m (make-rounded-box-markup (markup args (interpret-markup layout props (markup #:with-dimensions-from m m { % \override TextScript.stencil = % #(make-stencil-boxer 0.03 0 ly:text-interface::print) \textLengthOn s1 s1_\markup \rounded-box "-box" s1_\markup \rounded-boxx "-boxx" % s1_\markup \pad-x #0 \rounded-box "pad-x" } ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Markup wrap at the end of the line
Am 29.03.19 um 15:19 schrieb edes: el 2019-03-17 a las 11:33 Andrew Bernard escribió: Sorry, not the specific answer to your question. hi, thank you for your answer, and excuse my delayed response. leaving aside considerations if what i'm asking for is a good practice or not, should i understand that there's no way to allow a line break in a markup? Not sure if I'm misunderstanding you, but in -\markup "Something long" there may not be any line break, but there are constructs like -\markup \override #(line-width . 20) \wordwrap { This will be wrapped to some line-width } will produce line breaks (and there are a few other commands). HTH Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Markup wrap at the end of the line
Am 29.03.19 um 21:01 schrieb Urs Liska: -\markup \override #(line-width . 20) \wordwrap { This will be wrapped to some line-width } Sorry, that must read #'(line-width . 20) ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user