Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: Manuela am Sonntag, 8. Mai 2016, 23:41

Titel: No wie in alter Manier schreiben (GELÖST)
Beitrag von: Manuela am Sonntag, 8. Mai 2016, 23:41
Ich hoffe, ich werde nicht lästig  ;)

Ich möchte No. schreiben so wie es früher üblich war (ist nur eine Marotte von mir).
Ich kriege es einigermaßen hin, ich möchte das "o" und den "." noch näher beim "N" haben.

\version "2.19.37"

\new PianoStaff \with {
  instrumentName =
  \markup {
    \center-column {
      \line {
        \bold \huge { N } \column {
          \translate #'(-2.7 . 0.8) \line { \super \fontsize #+2.5 o }
          \translate #'(-2.5 . 3)
          \line { \bold . }
        }
        \fontsize #-4 " " \number 2.
      }
      \line \large { F Dur }
      \italic \line { Fa majeur. }
    }
  }
} \relative c''
{ c }

Wahrscheinlich gibt es noch eine wesentlich elegantere Lösung, aber ich komme in absehbarer Zeit nicht drauf...
Titel: Re: No wie in alter Manier schreiben
Beitrag von: fugenkomponist am Montag, 9. Mai 2016, 00:08
Das Zeichen № ist im Unicode-Standard enthalten; auch der Standard-LilyPond-Font (TeX Gyre Schola) enthält dieses Zeichen, du kannst es also direkt verwenden:
\version "2.19.37"

\new PianoStaff \with {
  instrumentName =
  \markup {
    \center-column {
      \bold \huge "№ 2."
      \large "F-Dur"
      \italic "Fa majeur."
    }
  }
} \relative c''
{ c }
Zwei Anmerkungen dazu: \line ist für einfache Strings nicht notwendig, wenn man sie in "" packt. Und F-Dur schreibt sich mit Bindestrich ;)
Titel: Re: No wie in alter Manier schreiben
Beitrag von: harm6 am Montag, 9. Mai 2016, 00:30
Wie fugenkomponist schon sagte, es ist ein standard.

Du kannst natürlich verschiedene fonts ausprobieren:

%% sometimes needed:
\paper { #(include-special-characters) }

\markup
  \column {
    \override #'(font-name . "Century Schoolbook L Roman")
      \line { "№" "№" }
    \override #'(font-name . "Courier New")
      \line { "№" "№" }
  }

Gruß,
  Harm
Titel: Re: No wie in alter Manier schreiben
Beitrag von: Manuela am Montag, 9. Mai 2016, 10:06
Danke! Auf die Idee mit dem Font bin ich erst gekommen, nachdem ich die Anfrage bereits abgeschickt hatte.
Aber ich lerne ständig dazu.  :)


Und F-Dur schreibt sich mit Bindestrich ;)

Die Notenstecher waren früher anderer Ansicht  ;)
Titel: Re: No wie in alter Manier schreiben
Beitrag von: fugenkomponist am Montag, 9. Mai 2016, 11:07
Und F-Dur schreibt sich mit Bindestrich ;)
Die Notenstecher waren früher anderer Ansicht  ;)
Achso, ok. Die schreiben Dur auch klein, war mir nicht klar, dass du das so weit übernehmen willst ;) Clarinetten, Hoboen und Violoncell sind auch dabei?
Titel: Re: No wie in alter Manier schreiben
Beitrag von: Manuela am Montag, 9. Mai 2016, 13:17

Achso, ok. Die schreiben Dur auch klein, war mir nicht klar, dass du das so weit übernehmen willst ;) Clarinetten, Hoboen und Violoncell sind auch dabei?

Das ist mir gar nicht aufgefallen.

Nein, nur Klavier (Czerny Op. 840) http://imslp.org/wiki/50_Exercises_progressifs_dans_tous_les_tons_majeurs_et_mineurs,_Op.840_%28Czerny,_Carl%29 (http://imslp.org/wiki/50_Exercises_progressifs_dans_tous_les_tons_majeurs_et_mineurs,_Op.840_%28Czerny,_Carl%29)
Titel: Re: No wie in alter Manier schreiben
Beitrag von: Lilysetter am Montag, 16. Mai 2016, 10:30
> ich möchte das "o" und den "." noch näher beim "N" haben.
Unabhängig davon, dass es bereits ein fertiges Symbol für "Numero" (Nummero?) gibt, der Befehl \overlay (und evtl. \combine) eignet sich statt \column besser, da er nicht versucht, Kollisionen zu verhindern. So sind beliebige Abstände möglich.

\set Staff.instrumentName=\markup\overlay{\huge\bold"N"\translate#'(2.2 . 1.0)"o"\translate#'(2.4 . 0)\huge\bold". 2."}
oder kürzer
\set Staff.instrumentName=\markup\overlay{\huge\bold"N. 2."\translate#'(2.2 . 1.0)"o"}
oder
\set Staff.instrumentName=\markup\overlay{\huge\bold"N  2."\translate#'(2.2 . 1.0)"o"\translate#'(2.4 . 0.3)"-"}

Manuela, Dein Programmierstil  und Deine Herangehensweise gefallen mir ;-)
Titel: Re: No wie in alter Manier schreiben
Beitrag von: Manuela am Montag, 16. Mai 2016, 12:25

Manuela, Dein Programmierstil  und Deine Herangehensweise gefallen mir ;-)

Danke  :D :D :D
Titel: Re: No wie in alter Manier schreiben (GELÖST)
Beitrag von: Manuela am Dienstag, 26. Juli 2016, 06:52
Sry dass ich diesen alten Thread wieder hervorhole.

Ich habe das im Code-Snippet-Repository gefunden, das wollte ich noch ergänzen.

%% http://lsr.di.unimi.it/LSR/Item?id=614

%LSR modified by P.P.Schneider on Feb.2014 for v2.18

% "\No" markup: create stylized movement number for the instrumentName field.
% syntax example:  instrumentName = \markup \No #"14a"
#(define-markup-command (No layout props n) (string?)
  (define (format-char c)
    (let ((s (string c)))
      (if (number? (string->number s))
          (markup #:hspace 0.125 #:number s #:hspace 0.125)
          (markup #:hspace 0 #:fontsize 2 s))))
  (define (format-string s i)
    (let ((n (string-length s)))
      (if (= n 0)
          (markup #:null)
          (markup (format-char (string-ref s i))
                  (if (= (1+ i) n)
                      (markup #:null)
                      (format-string s (1+ i)))))))
  (let ((i (string-length n)))
    (interpret-markup layout props
     (markup
      #:concat
       (#:concat
        (#:fontsize 2
         "N"
         #:hspace 0
         #:override '(baseline-skip . 0.825)
         #:override '(direction . 1)
         #:dir-column (#:fontsize 2 #:center-align "."
                       #:fontsize 1 #:center-align "o"))
         #:hspace 0.5
         #:concat ((format-string n 0)
                   #:hspace -.8
                   #:fontsize 2 "."))
         #:hspace -2))))

\markup \No #"7"

\markup \No #"14a"

\relative c' {
  \override Score.InstrumentName.padding = #3 % a simple workaround against LSR bug: not needed.
  \set Staff.instrumentName = \markup { \No #"8" }
  % or:
  %\set Staff.instrumentName = \markup\magnify #1.3 \concat { № \hspace#.4 8. \hspace#-2 }
\time 6/8
c8 e g c g e
c2.
}