Hello Andrew,
Yes, in fact, I was considering rotating the content. There isn't much
room, but just enough to get a few words sideways.
----
Hello Aaron,
Many thanks for the solution of translation. I'm toying around with it
right now, and had a question:
I am possible misunderstanding the solution, and using the abs-override
incorrectly. I cannot seem to place a comment string next to the stave.
Here is my sample code.
\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"
}
Many thanks,
mattfong
On Thu, Oct 15, 2020 at 3:23 AM Aaron Hill <[email protected]> wrote:
> 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