Autor Thema: No wie in alter Manier schreiben (GELÖST)  (Gelesen 3263 mal)

Manuela

  • Member
No wie in alter Manier schreiben (GELÖST)
« 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...
« Letzte Änderung: Mittwoch, 18. Mai 2016, 16:11 von Manuela »

fugenkomponist

  • Member
Re: No wie in alter Manier schreiben
« Antwort #1 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 ;)

harm6

  • Member
Re: No wie in alter Manier schreiben
« Antwort #2 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

Manuela

  • Member
Re: No wie in alter Manier schreiben
« Antwort #3 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  ;)
« Letzte Änderung: Montag, 9. Mai 2016, 10:14 von Manuela »

fugenkomponist

  • Member
Re: No wie in alter Manier schreiben
« Antwort #4 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?

Manuela

  • Member
Re: No wie in alter Manier schreiben
« Antwort #5 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

Lilysetter

  • Member
Re: No wie in alter Manier schreiben
« Antwort #6 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 ;-)
« Letzte Änderung: Montag, 16. Mai 2016, 10:51 von Lilysetter »

Manuela

  • Member
Re: No wie in alter Manier schreiben
« Antwort #7 am: Montag, 16. Mai 2016, 12:25 »

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

Danke  :D :D :D

Manuela

  • Member
Re: No wie in alter Manier schreiben (GELÖST)
« Antwort #8 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.
}