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 <lilyp...@hillvisions.com> 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

Reply via email to