|
From: | Matthew Fong |
Subject: | Re: Markup in left and right margins |
Date: | Thu, 15 Oct 2020 18:03:59 -0700 |
\paper {
paper-width = 8\cm
paper-height = 6\cm
top-margin = 1\cm
bottom-margin = 1\cm
left-margin = 1.5\cm
right-margin = 2.5\cm
tagline = ##f
}
\layout { indent = 0 ragged-right = ##t }
\new Staff \relative c' {
c'1^"Comment"
}
\markup \overlay {
\abs-translate #(cons (ly:cm -1.5) 0)
\abs-override #(cons 'line-width (ly:cm 4))
\with-color #'(0.8 0.3 0.2)
\rotate #90 "This is a test"
}
On 2020-10-15 2:53 am, Andrew Bernard wrote:
> Hi Matthew,
>
> A good question. But I would have thought that margins are exactly
> that - margins. I don't think LilyPond was ever conceived to support
> marginal annotations and complex print formatting. Wouldn't you have
> to narrow your content in whatever way so as to create left or right
> vertical space and simply add it there, so, inside the margins? But I
> am sure all the TeX experts on the list will chime in.
Nothing prevents you from \translating \markup outside the normal
bounds.
NOTE: The following code requires some helper functions in order to
specify absolute dimensions in \markup. A real-world usage probably
should be querying the values directly from \paper to eliminate
redundancy.
%%%%
\version "2.20.0"
#(define-markup-command
(abs-override layout props arg rest)
(pair? markup?)
(let* ((sym (car arg))
(val (cdr arg))
(scl (ly:output-def-lookup layout 'output-scale)))
(interpret-markup layout props
(markup #:override (cons sym (/ val scl)) rest))))
#(define-markup-command
(abs-translate layout props arg rest)
(pair? markup?)
(let* ((x (car arg))
(y (cdr arg))
(scl (ly:output-def-lookup layout 'output-scale)))
(interpret-markup layout props
(markup #:translate (cons (/ x scl) (/ y scl)) rest))))
\paper {
paper-width = 8\cm
paper-height = 5\cm
top-margin = 1\cm
bottom-margin = 1\cm
left-margin = 1.5\cm
right-margin = 2.5\cm
tagline = ##f
}
visualizeBounds =
#(define-scheme-function
(text)
(markup?)
#{
\markup
\override #'(thickness . 1.5)
\fill-line {
\overlay {
\lower #0.5 \draw-line #'(0 . 1)
\arrow-head #X #LEFT ##f
\draw-line #'(2 . 0)
}
#text
\overlay {
\lower #0.5 \draw-line #'(0 . 1)
\arrow-head #X #RIGHT ##f
\draw-line #'(-2 . 0)
}
}
#})
\markup \smaller \column {
\fill-line { paper: \concat { 5cm \char ##xd7 8cm } }
\fill-line { left-margin: 1.5cm }
\fill-line { right-margin: 2.5cm }
\vspace #0.5
}
\markup \overlay {
\abs-translate #(cons (ly:cm -1.5) 0)
\abs-override #(cons 'line-width (ly:cm 1.5))
\with-color #'(0.8 0.3 0.2)
\visualizeBounds left
\with-color #'(0.2 0.8 0.4)
\visualizeBounds normal
\abs-translate #(cons (ly:cm 4) 0)
\abs-override #(cons 'line-width (ly:cm 2.5))
\with-color #'(0.2 0.5 0.8)
\visualizeBounds right
}
%%%%
-- Aaron Hill
[Prev in Thread] | Current Thread | [Next in Thread] |