Hallo Christa,
gerade bei Dreiecken wird die Angelegenheit langsam sperrig...

Was mir für Deinen Fall an den \box- und \circle-Kommandos nicht gefällt, ist, daß sich sich von der Größe her dem Inhalt anpassen. Das ist zwar einerseits sinnvoll und wünschenswert, aber bei den Rehearsal Marks, die auch schon mal zweistellig werden, fände ich es schöner, wenn die Umrahmungen immer gleich groß wären bzw. eine kontrollierbare Größe hätten.
Deshalb habe ich ein Markup-Kommando
\n-agon geschrieben, das ein
n-Eck mit einem anzugebenden Radius rings um das Markpu zeichnet - egal, wie groß/breit das Markup ist.
So lassen sich nicht nur Kreise, gleichseitige Dreiecke und Quadrate zeichnen, sondern auch Penta-, Hexa-, Hepta, Okta- und andere -gone.
Der Aufruf
\markup \n-agon #5 #3 "A" zeichnet beispielsweise ein Fünfeck mit "Radius" 3 um den Buchstaben A.
Wenn man als Eckenzahl (erster Parameter) eine #0 übergibt, wird ein Kreis gezeichnet.
Die Dinger "stehen" auf einer waagrechten Basis, wenn man einen negativen Radius übergibt, stehen sie auf dem Kopf.
Es werden einfach Eckpunkte eines
n-Ecks berechnet, die auf einen Kreis mit dem gewünschten Radius liegen und dann ein entsprechendes Polygon gezeichnet. Ausnahme wie gesagt bei "Eckenzahl 0", dann gibt's einen Kreis.
Überlagern lassen sie sich auch problemlos, so daß man z. B. einen jahreszeitlich nicht unpassenden Davidsstern (siehe Ende der ersten Zeile in der Beispieldatei) bauen kann.
Nicht-ganzzahlige Eck-Anzahlen führen auch zu lustigen Zwischenstufen (siehe den "Schnipsel-Look" in der letzten Zeile.
Wenn man die
line-thickness hochsetzt, kann man auch ein schönes Warndreieck basteln (letztes Studierzeichen unten im Eck).
Viele Grüße
Torsten
\version "2.16.1"
#(define-markup-command (n-agon layout props corners radius arg)
(number? number? markup?)
#:category graphic
#:properties ((thickness 1))
(let* ((th (* (ly:output-def-lookup layout 'line-thickness)
thickness))
(alpha-step (if (= corners 0) 99 (/ (* 2 PI) corners)))
(alpha-start (if (>= radius 0) (/ alpha-step 2) 0))
(polypoints
(let loop ((alpha alpha-start))
(if (> alpha (* 2 PI))
'()
(cons (* (abs radius) (sin alpha)) (cons (- 0 (* (abs radius) (cos alpha)))
(loop (+ alpha alpha-step)))))))
(m (interpret-markup layout props arg))
(x-ext (ly:stencil-extent m X))
(y-ext (ly:stencil-extent m Y)))
(ly:stencil-add m
(ly:stencil-translate
(if (equal? polypoints '())
(ly:make-stencil (list 'circle radius th #f))
(ly:make-stencil `(polygon ',polypoints ,th #f)))
(cons (/ (cdr x-ext) 2) (/ (cdr y-ext) 2))))))
% TEST:
\header { tagline = ##f }
\paper { ragged-last-bottom = ##f }
\relative c' {
\override Score.RehearsalMark #'padding = #4
% gleichseitige Dreiecke
s1 \mark \markup \n-agon #3 #4 "3"
s \mark \markup \n-agon #3 #4 "33"
s \mark \markup \n-agon #3 #-4 "3"
s \mark \markup \n-agon #3 #-4 "33"
s \mark \markup \n-agon #3 #4 \n-agon #3 #-4 "3"
s \mark \markup \n-agon #3 #4 \n-agon #3 #-4 "33"
s \break
% Quadrate
s \mark \markup \n-agon #4 #3 "4"
s \mark \markup \n-agon #4 #3 "44"
s \mark \markup \n-agon #4 #-3 "4"
s \mark \markup \n-agon #4 #-3 "44"
s \mark \markup \n-agon #4 #3 \n-agon #4 #-3 "4"
s \mark \markup \n-agon #4 #3 \n-agon #4 #-3 "44"
s \break
% gleichseitige Pentagone
s \mark \markup \n-agon #5 #2.5 "5"
s \mark \markup \n-agon #5 #2.5 "55"
s \mark \markup \n-agon #5 #-2.5 "5"
s \mark \markup \n-agon #5 #-2.5 "55"
s \mark \markup \n-agon #5 #2.5 \n-agon #5 #-2.5 "5"
s \mark \markup \n-agon #5 #2.5 \n-agon #5 #-2.5 "55"
s \break
% gleichseitige Hexagone
s \mark \markup \n-agon #6 #2.5 "6"
s \mark \markup \n-agon #6 #2.5 "66"
s \mark \markup \n-agon #6 #-2.5 "6"
s \mark \markup \n-agon #6 #-2.5 "66"
s \break
% gleichseitige Heptagone
s \mark \markup \n-agon #7 #2.5 "7"
s \mark \markup \n-agon #7 #2.5 "77"
s \mark \markup \n-agon #7 #-2.5 "7"
s \mark \markup \n-agon #7 #-2.5 "77"
s \break
% gleichseitige Oktagone
s \mark \markup \n-agon #8 #2.5 "8"
s \mark \markup \n-agon #8 #2.5 "88"
s \mark \markup \n-agon #8 #-2.5 "8"
s \mark \markup \n-agon #8 #-2.5 "88"
s \break
% Kreise
s \mark \markup \n-agon #0 #2.5 "0"
s \mark \markup \n-agon #0 #2.5 "00"
% Kombinationen Quadrat und Dreieck
s \mark \markup \n-agon #4 #2.5 \n-agon #3 #5.5 "9"
s \mark \markup \n-agon #4 #2.5 \n-agon #3 #5.5 "99"
s \mark \markup \n-agon #4 #5 \lower #1.5 \n-agon #3 #3.5 "9"
s \mark \markup \n-agon #4 #5 \lower #1.5 \n-agon #3 #3.5 "99"
s \break
% Kombinationen Dreieck und Kreis
s \mark \markup \n-agon #0 #1.9 \n-agon #3 #4.5 "9"
s \mark \markup \n-agon #0 #1.9 \n-agon #3 #4.5 "99"
s \mark \markup \n-agon #0 #2.5 \n-agon #3 #3.5 "9"
s \mark \markup \n-agon #0 #2.5 \n-agon #3 #3.5 "99"
s \mark \markup \n-agon #0 #3.5 \n-agon #3 #3.5 "9"
s \mark \markup \n-agon #0 #3.5 \n-agon #3 #3.5 "99"
s \mark \markup \n-agon #0 #4 \n-agon #3 #3.5 "9"
s \mark \markup \n-agon #0 #4 \n-agon #3 #3.5 "99"
s \break
% Kombinationen Quadrat und Kreis
s \mark \markup \n-agon #0 #2 \n-agon #4 #4 "9"
s \mark \markup \n-agon #0 #2 \n-agon #4 #4 "99"
s \mark \markup \n-agon #0 #2.5 \n-agon #4 #3 "9"
s \mark \markup \n-agon #0 #2.5 \n-agon #4 #3 "99"
s \mark \markup \n-agon #0 #3 \n-agon #4 #3 "9"
s \mark \markup \n-agon #0 #3 \n-agon #4 #3 "99"
s \mark \markup \n-agon #0 #3.5 \n-agon #4 #3 "9"
s \mark \markup \n-agon #0 #3.5 \n-agon #4 #3 "99"
s \break
% Kombinationen Pentagon und Kreis
s \mark \markup \n-agon #0 #2 \n-agon #5 #3.5 "9"
s \mark \markup \n-agon #0 #2 \n-agon #5 #3.5 "99"
s \mark \markup \n-agon #0 #2.4 \n-agon #5 #3 "9"
s \mark \markup \n-agon #0 #2.4 \n-agon #5 #3 "99"
s \mark \markup \n-agon #0 #3 \n-agon #5 #3 "9"
s \mark \markup \n-agon #0 #3 \n-agon #5 #3 "99"
s \mark \markup \n-agon #0 #3 \n-agon #5 #2.5 "9"
s \mark \markup \n-agon #0 #3 \n-agon #5 #2.5 "99"
s \break
% lustige Zwischenstufen
s \mark \markup \n-agon #2.7 #3 "A"
s \mark \markup \n-agon #2.8 #-3 "B"
s \mark \markup \n-agon #3.2 #-3 "C"
s \mark \markup \n-agon #4.2 #3 "D"
s \mark \markup \n-agon #4.6 #3 "E"
s \mark \markup \n-agon #5.4 #3 "F"
s \mark \markup \override #'(thickness . 7) \n-agon #3 #3 \raise #0.5 \bold \sans "!"
\bar "|."
}