@node Setup
@chapter Setup
-In diesem Kapitel werden verschiedene Konfigurationsoptionen für LilyPond und
-andere Programme behandelt, die nach der Installation auszuführen sind. Dieses
-Kapitel kann als Referenz betrachtet werden, lesen Sie einen Abschnitt nur,
+In diesem Kapitel werden verschiedene Konfigurationsoptionen für LilyPond und
+andere Programme behandelt, die nach der Installation auszuführen sind. Dieses
+Kapitel kann als Referenz betrachtet werden, lesen Sie einen Abschnitt nur,
wenn er auf Sie zutrifft.
@menu
Die Skripte (etwa @command{lilypond-book}, @command{convert-ly},
@command{abc2ly} und sogar @command{lilypond}) befinden sich
-innerhalb der @code{.app}-Datei für MacOS@tie{}X. Sie können
+innerhalb der @code{.app}-Datei für MacOS@tie{}X. Sie können
auf der Kommandozeile direkt aufgerufen werden, etwa
@example
@end example
@noindent
-Entsprechend funktionieren auch die anderen Skripte wie
+Entsprechend funktionieren auch die anderen Skripte wie
@command{lilypond-book}, @command{convert-ly}, @command{abc2ly} usw.
-Sie können sich auch selber Skripte anlegen, die diesen Pfad automatisch
+Sie können sich auch selber Skripte anlegen, die diesen Pfad automatisch
hinzufügen. Erstellen Sie ein Verzeichnis, indem die Skripte gespeichert werden:
@example
Erstellen Sie entsprechende Dateien mit den Namen @code{lilypond-book},
@code{convert-ly} und den Namen der anderen Hilfsprogramme, die Sie benutzen
(@code{abc2ly}, @code{midi2ly} usw.). Ersetzen Sie einfach den Teil
- @code{bin/lilypond} mit @code{bin/convert-ly} (oder einem anderen
+ @code{bin/lilypond} mit @code{bin/convert-ly} (oder einem anderen
Programmnamen) in der entsprechenden Datei.
Machen Sie die Datei ausführbar:
chmod u+x lilypond
@end example
-Jetzt müssen Sie dieses Verzeichnis noch zu Ihrem Pfad (PATH) hinzufügen.
-Verändern Sie die Datei @code{.profile} in Ihrem Benutzerverzeichnis
-(oder erstellen Sie sie), dass sie die Zeile
+Jetzt müssen Sie dieses Verzeichnis noch zu Ihrem Pfad (PATH) hinzufügen.
+Verändern Sie die Datei @code{.profile} in Ihrem Benutzerverzeichnis
+(oder erstellen Sie sie), dass sie die Zeile
@example
export PATH=$PATH:~/bin
@node Emacs mode
@subsection Emacs mode
-Emacs hat einen LilyPond-Modus (@file{lilypond-mode}), eine Datei, die
-die Vervollständigung von Befehlen, Einrückungen, für LilyPond spezifische
-Klammerschließungen und die Markierung der Syntax beherrscht.
+Emacs hat einen LilyPond-Modus (@file{lilypond-mode}), eine Datei, die
+die Vervollständigung von Befehlen, Einrückungen, für LilyPond spezifische
+Klammerschließungen und die Markierung der Syntax beherrscht.
Zusätzlich stehen noch praktische Tastaturkombinationen zum
-Programmaufruf und zum Nachschlagen in den Handbüchern zur
-Verfügung. Siehe unten, wenn die Datei @file{lilypond-mode}
+Programmaufruf und zum Nachschlagen in den Handbüchern zur
+Verfügung. Siehe unten, wenn die Datei @file{lilypond-mode}
sich nicht auf Ihrem Computer befindet.
-Der Emacs-Modus zur Noteneingabe und zum Programmaufruf ist
-in den Emacs-Quellen im @file{elisp}-Verzeichnis enthalten. Mit
+Der Emacs-Modus zur Noteneingabe und zum Programmaufruf ist
+in den Emacs-Quellen im @file{elisp}-Verzeichnis enthalten. Mit
dem Befehl @command{make install} können Sie es nach @var{elispdir}
-installieren. Die Datei @file{lilypond-init.el} sollte in
+installieren. Die Datei @file{lilypond-init.el} sollte in
@var{load-path}@file{/site-start.d/} liegen oder Ihrem
@file{~/.emacs} or @file{~/.emacs.el} hinzugefügt werden.
-Als Benutzer können Sie Ihren Quellenpfad (etwa @file{~/site-lisp/})
+Als Benutzer können Sie Ihren Quellenpfad (etwa @file{~/site-lisp/})
ihrem @var{load-path} hinzufügen, indem Sie folgende Zeile zu Ihrer
@file{~/.emacs}-Datei hinzufügen:
@subsection Vim mode
Für @uref{http://@/www@/.vim@/.org,VIM} wird ein @file{vimrc} bereitgestellt,
-zusammen mit Werkzeugen zur Syntaxauszeichnung. Ein Vim-Modus zur
-Noteneingabe und zum Programmaufruf befindet sich im Quellarchiv im
+zusammen mit Werkzeugen zur Syntaxauszeichnung. Ein Vim-Modus zur
+Noteneingabe und zum Programmaufruf befindet sich im Quellarchiv im
@code{$VIM}-Verzeichnis.
LilyPond-Dateien werden automatisch erkannt, wenn sich in der Datei
finish
endif
augroup filetypedetect
- au! BufNewFile,BufRead *.ly setf lilypond
+ au! BufNewFile,BufRead *.ly,*.ily setf lilypond
augroup END
@end example
@noindent
Dabei wird $@{LILYPOND_VERSION@}durch Ihre LilyPond-Version ersetzt. Sollten
-Sie LilyPond nicht nach @file{/usr/local/} installiert haben, müssen Sie den
+Sie LilyPond nicht nach @file{/usr/local/} installiert haben, müssen Sie den
Pfad entsprechend anpassen.
@subsection jEdit
Das Plugin für den @uref{http://@/www@/.jedit@/.org@/,jEdit}-Texteditor,
-LilyPondTool genannt, ist das vielfältigste textbasierte Werkzeug, um
-LilyPond-Notationsdateien zu editieren. Zu den besonderen Eigenschaften
-gehört ein Dokument-Ersteller mit Liedtextunterstützung, der die Neuerstellung
+LilyPondTool genannt, ist das vielfältigste textbasierte Werkzeug, um
+LilyPond-Notationsdateien zu editieren. Zu den besonderen Eigenschaften
+gehört ein Dokument-Ersteller mit Liedtextunterstützung, der die Neuerstellung
von Dateien erleichtert, und ein integriertes PDF-Anzeigeprogramm mit
-@qq{point-and-click}-Unterstützung. Demos, Bildschirmphotos und
+@qq{point-and-click}-Unterstützung. Demos, Bildschirmphotos und
Installationsanweisungen finden sich unter
@uref{http://lilypondtool@/.organum@/.hu}
@node TexShop
@subsection TexShop
-Der
-@uref{http://@/www@/.uoregon@/.edu/~koch/texshop/index@/.html,TexShop}-Editor
+Der
+@uref{http://@/www@/.uoregon@/.edu/~koch/texshop/index@/.html,TexShop}-Editor
für MacOS@tie{}X kann erweitert werden, um LilyPond, lilypond-book und convert-ly aus dem
Editor heraus zu starten. Die Erweiterung findet sich unter
@uref{http://@/www@/.dimi@/.uniud@/.it/vitacolo/freesoftware@/.html}.
@node LilyKDE
@subsection LilyKDE
-@uref{http://lilykde.googlecode.com/,LilyKDE} ist eine Erweiterung für
+@uref{http://lilykde.googlecode.com/,LilyKDE} ist eine Erweiterung für
den Texteditor @uref{http://kate-editor.org/,Kate} für KDE. LilyKDE
beinhaltet einen mächtigen Assistenten, mit dem sehr schnell neue
LilyPond-Dokumente erstellt werden könne, sowie einen eingebetteten
@cindex Point and click
-Point and click erlaubt es, die Noten in der Quelldatei zu finden, indem man sie
+Point and click erlaubt es, die Noten in der Quelldatei zu finden, indem man sie
im PDF anklickt. Das erleichtert es, fehlerhafte Stellen zu finden.
-Wenn diese Funktionalität aktiv ist, fügt LilyPond Hyperlinks zum PDF hinzu.
-Diese werden dann bei einem Klick zum Browser geschickt, der wiederum
+Wenn diese Funktionalität aktiv ist, fügt LilyPond Hyperlinks zum PDF hinzu.
+Diese werden dann bei einem Klick zum Browser geschickt, der wiederum
einen Texteditor mit dem Cursor an der richtigen Stelle öffnet.
Damit diese Kettenreaktion funktioniert, müssen Sie ihrem PDF-Programm
@end example
Das Programm @file{lilypond-invoke-editor} ist ein kleines Hilfsprogramm.
-Es ruft einen Editor auf für bestimmte @code{textedit}-URIs und startet
-einen Browser für die anderen. Die Umgebungsvariable @code{EDITOR}
+Es ruft einen Editor auf für bestimmte @code{textedit}-URIs und startet
+einen Browser für die anderen. Die Umgebungsvariable @code{EDITOR}
wird für folgende Zeichenketten:
@table @code
@end example
@end table
-Die Umgebungsvariable @code{LYEDITOR} wird verwendet, um dieses zu
+Die Umgebungsvariable @code{LYEDITOR} wird verwendet, um dieses zu
überschreiben. Sie enthält den Befehl, um den Editor aufzurufen, wobei
die Variablen @code{%(file)s},
-@code{%(column)s}, @code{%(line)s} mit der Datei, Spalte und Zeile
+@code{%(column)s}, @code{%(line)s} mit der Datei, Spalte und Zeile
ersetzt werden. Die Einstellung
@example
@end example
@noindent
-für @code{LYEDITOR} etwa entspricht dem von vornherein eingestellten
+für @code{LYEDITOR} etwa entspricht dem von vornherein eingestellten
Emacs-Aufruf.
@cindex Dateigröße, Ausgabedatei
-Die point and click-Links vergrößern die Notationsdatei erheblich. Um die
-Größe der PDF- und PS-Dateien zu verringern, kann point and click
+Die point and click-Links vergrößern die Notationsdatei erheblich. Um die
+Größe der PDF- und PS-Dateien zu verringern, kann point and click
ausgeschaltet werden, indem die Zeile
@example
lilypond -dno-point-and-click file.ly
@end example
-@warning{Sie sollten Point and Click immer für Dateien ausschalten, die
+@warning{Sie sollten Point and Click immer für Dateien ausschalten, die
Sie an andere Personen weitergeben möchten. Anderenfalls werden
Pfadinformationen Ihres Computers in die PDF-Datei kopiert, was ein
potentielles Sicherheitsrisiko darstellt.}
finish
endif
augroup filetypedetect
- au! BufNewFile,BufRead *.ly setf lilypond
+ au! BufNewFile,BufRead *.ly,*.ily setf lilypond
augroup END
@end example
@section Setup for specific Operating Systems
Cette partie explique comment optimiser l'installation propres à
-certains systèmes.
+certains systèmes.
@menu
* Setup for MacOS X::
Ajoutez alors ce répertoire à votre @var{PATH}. Modifiez le fichier
@code{.profile} -- créez-le si besoin -- de votre répertoire personnel,
-de telle sorte qu'il contienne
+de telle sorte qu'il contienne
@example
export PATH=$PATH:~/bin
coloration synthaxique, ainsi que des raccourcis pour compiler et
consulter les manuels de LilyPond en mode info. Si le
@file{lilypond-mode} n'était pas installé sur votre système, procédez
-comme ci-dessous.
+comme ci-dessous.
Le répertoire @file{elisp} inclus dans les sources contient aussi un
mode pour saisir la musique et lancer LilyPond. Faites @command{make
install} pour l'installer dans votre @var{elispdir}. Le fichier
@file{lilypond-init.el} devrait trouver sa place dans
@var{load-path}@file{/site-start.d/} ou bien ajouté à votre
-@file{~/.emacs} ou @file{~/.emacs.el}.
+@file{~/.emacs} ou @file{~/.emacs.el}.
En tant que simple utilisateur, vous pouvez toujours ajouter votre
propre répertoire (par exemple @file{~/site-lisp/}) à votre
@node Vim mode
@subsection Vim mode
-En ce qui concerne @uref{http://@/www@/.vim@/.org,VIM}, LilyPond fournit
+En ce qui concerne @uref{http://@/www@/.vim@/.org,VIM}, LilyPond fournit
un fichier @file{vimrc} qui gère la coloration synthaxique. Le
répertoire @code{$VIM} inclus dans les sources contient aussi un
-mode pour saisir la musique et lancer LilyPond.
+mode pour saisir la musique et lancer LilyPond.
Le type de fichier LilyPond sera reconnu si votre
@file{~/.vim/filetype.vim} contient
finish
endif
augroup filetypedetect
- au! BufNewFile,BufRead *.ly setf lilypond
+ au! BufNewFile,BufRead *.ly,*.ily setf lilypond
augroup END
@end example
@node jEdit
@subsection jEdit
-Créé en tant que greffon pour l'éditeur de texte
+Créé en tant que greffon pour l'éditeur de texte
@uref{http://@/www@/.jedit@/.org@/,jEdit}, LilyPondTool est l'outil le
plus riche en fonctionnalités pour éditer des partitions écrites avec
LilyPond. Cela inclue un assistant à la création de document qui prend
en charge les paroles, un visionneur de PDF avec gestion du
pointer-cliquer. Captures d'écran, démonstrations et instructions
-d'installation sont disponibles sur le site de
+d'installation sont disponibles sur le site de
@uref{http://lilypondtool@/.organum@/.hu,LilyPondTool}.
L'éditeur
@uref{http://@/www@/.uoregon@/.edu/~koch/texshop/index@/.html,TexShop}
pour MacOS@tie{}X peut prendre en charge LilyPond, lilypond-book et
-convert-ly, en lui adjoignant les extensions disponibles
+convert-ly, en lui adjoignant les extensions disponibles
@uref{http://@/www@/.dimi@/.uniud@/.it/vitacolo/freesoftware@/.html,ici}.
la musique à l'aide d'un clavier MIDI.
LilyKDE gère l'hyphénation des paroles, et le gestionnaire de fichiers
-de KDE permet de lancer LilyPond sur plusierus fichiers simultanément.
+de KDE permet de lancer LilyPond sur plusierus fichiers simultanément.
@node Point and click
Lorsque cette fonctionnalité est active, LilyPond ajoute des hyperliens
au fichier PDF. Ces liens sont transmis au navigateur internet qui se
charge d'ouvrir un éditeur de texte à l'enfroit même où le curseur
-pointe.
+pointe.
Afin que cette chaîne de traitement soit pleinement opérationnelle, il
faut configurer votre visionneur de PDF de façon à ce qu'il suive les
liens grâce au script @file{lilypond-invoke-editor} fourni avec
-LilyPond.
+LilyPond.
-Pour Xpdf, sous UNIX, vous devrez insérer la ligne suivante dans
+Pour Xpdf, sous UNIX, vous devrez insérer la ligne suivante dans
le fichier @file{xpdfrc} -- soit @file{/etc/xpdfrc}, soit dans votre
répertoire personnel @file{.xpdfrc}.
charge d'appeler un éditeur pour les identifants de ressource
(@emph{URI}) de type @code{textedit}, et un navigateur pour les autres.
Il teste en outre la variable d'environnement @code{EDITOR} pour les cas
-suivant :
+suivant :
@table @code
@item emacs
@noindent
dans le fichier @file{.ly}. Il peut alors être activé de manière
-explicite grâce à
+explicite grâce à
@example
\pointAndClickOn
Chords entered using chord mode are music elements, and can be
transposed just like chords entered using simultaneous music.
+@code{\chordmode} is absolute, as @code{\relative} has no effect
+on @code{chordmode} blocks. However, in @code{\chordmode} the
+absolute pitches are one octave higher than in note mode.
Chord mode and note mode can be mixed in sequential music:
The table belows shows the actions of the quality modifiers on
triads and seventh chords. The default seventh step added to
chords is a minor or flatted seventh, which makes the dominant
-seventh the basic seventh chord. All alterations are relative to
+seventh the basic seventh chord. All alterations are relative to
the dominant seventh. A more complete table of modifier usage
is found at @ref{Common chord modifiers}.
@rlsr{Chords}.
@knownissues
-Only one quality modifier should be used per chord, typically on the
+Only one quality modifier should be used per chord, typically on the
highest step present in the chord. Chords with more than quality
modifier will be parsed without an error or warning, but the results
are unpredictable. Chords that cannot be achieved with a single
}
@end lilypond
+When @code{\relative} blocks are nested, the innermost
+@code{\relative} block applies.
+
+@lilypond[verbatim,quote]
+\relative c' {
+ c d e f
+ \relative c'' {
+ c d e f
+ }
+}
+@end lilypond
+
+@code{\relative} has no effect on @code{\chordmode} blocks.
+
+@lilypond[verbatim,quote]
+\new Staff {
+ \relative c''' {
+ \chordmode { c1 }
+ }
+ \chordmode { c1 }
+}
+@end lilypond
+
+@code{\relative} is not allowed inside of @code{\chordmode} blocks.
+
+Music inside a @code{\transpose} block is absolute unless a
+@code{\relative} is included.
+
+@lilypond[verbatim,quote]
+\relative c' {
+ d e
+ \transpose f g {
+ d e
+ \relative c' {
+ d e
+ }
+ }
+}
+@end lilypond
+
+
@cindex chords and relative octave entry
@cindex relative octave entry and chords
@funindex relative
-@knownissues
-
-The relative conversion will not affect @code{\transpose},
-@code{\chordmode} or @code{\relative} sections in its argument.
-To use relative mode within transposed music, an additional
-@code{\relative} must be placed inside @code{\transpose}.
-
@c DEPRECATED
If no @var{startpitch} is specified for @code{\relative},
then@tie{}@code{c'} is assumed. However, this is a deprecated
other note is transposed by the same interval. Both pitches are
entered in absolute mode.
+@warning{Music inside a @code{@bs{}transpose} block is absolute
+unless a @code{@bs{}relative} is included in the block.}
+
Consider a piece written in the key of D-major. It can be
transposed up to E-major; note that the key signature is
automatically transposed as well.
@seealso
Notation Reference:
+@ref{Relative octave entry},
@ref{Instrument transpositions}.
Snippets:
To use relative mode within transposed music, an additional
@code{\relative} must be placed inside @code{\transpose}.
-
@node Displaying pitches
@subsection Displaying pitches
finish
endif
augroup filetypedetect
- au! BufNewFile,BufRead *.ly setf lilypond
+ au! BufNewFile,BufRead *.ly,*.ily setf lilypond
augroup END
@end example
&& !to_boolean (it->get_property ("cross-staff")))
{
Interval dims = items[j]->pure_height (common, start, end);
- Interval &target_iv = it->pure_is_visible (start-1, end) ? mid_line_iv : begin_line_iv;
+ Interval &target_iv = start == it->get_column ()->get_rank () ? begin_line_iv : mid_line_iv;
if (!dims.is_empty ())
target_iv.unite (dims);
int line_count = 0;
cache_line_details (configuration);
+
+ // If the first line on a page has titles, allow them some extra space.
+ if (cached_line_details_.size ()
+ && cached_line_details_[0].compressed_nontitle_lines_count_ < cached_line_details_[0].compressed_lines_count_)
+ cur_page_height += page_top_space ();
+
for (vsize i = 0; i < cached_line_details_.size (); i++)
{
Real ext_len = cached_line_details_[i].extent_.length ();
cur_rod_height = ext_len;
cur_spring_height = cached_line_details_[i].space_;
cur_page_height = page_height (first_page_num + ret, false);
+
+ if (cached_line_details_[i].compressed_nontitle_lines_count_ < cached_line_details_[i].compressed_lines_count_)
+ cur_page_height += page_top_space ();
ret++;
}
else
if (extra_systems)
{
ret.systems_per_page_.back () += extra_systems;
- ret.demerits_ += BAD_SPACING_PENALTY;
+ ret.force_.back () = BAD_SPACING_PENALTY;
}
if (extra_pages)
{
ret.force_.insert (ret.force_.end (), extra_pages, BAD_SPACING_PENALTY);
ret.systems_per_page_.insert (ret.systems_per_page_.end (), extra_pages, 0);
- ret.demerits_ += BAD_SPACING_PENALTY;
}
-
- ret.demerits_ += ret.penalty_;
return ret;
}
/*
it would be better to do this at engraver level, but that is
- fragile, as the breakabl items are generated on staff level, at
+ fragile, as the breakable items are generated on staff level, at
which point slur starts and ends have to be tracked
*/
void
0.0);
yext.widen (slur_padding);
- Real EPS = 1e-3;
+ const Real EPS = 1e-3;
Interval bezext (curve.control_[0][X_AXIS], curve.control_[3][X_AXIS]);
- bool consider[] = { false, false, false };
+ bool consider[] = {false, false, false};
Real ys[] = {0, 0, 0};
bool do_shift = false;
e->set_object ("slur", slur->self_scm ());
}
}
- else
+ else if (avoid != ly_symbol2scm ("ignore"))
e->warning (_f ("Ignoring grob for slur: %s. avoid-slur not set?",
e->name().c_str ()));
}
} bind def
% this is for drawing slurs and barre-indicators.
-/draw_bezier_sandwich % thickness controls
+/draw_bezier_sandwich % x5 y5 x6 y6 x7 y7
+ % x4 y4
+ % x1 y1 x2 y2 x3 y3
+ % x0 y0
+ % linewidth draw_bezier_sandwich
{
gsave
currentpoint translate
- % round ending and round beginning
- 1 setlinejoin 1 setlinecap
+ % round ending and round beginning
+ 1 setlinejoin 1 setlinecap
setlinewidth
moveto
curveto
(avoid-note-head ,boolean? "If set, the stem of a chord does not
pass through all note heads, but starts at the last note head.")
(avoid-slur ,symbol? "Method of handling slur collisions.
-Choices are @code{around}, @code{inside}, @code{outside}. If unset,
-scripts and slurs ignore each other. @code{around} only moves the
-script if there is a collision; @code{outside} always moves the
-script.")
+Choices are @code{inside}, @code{outside}, @code{around}, and
+@code{ignore}. @code{inside} adjusts the slur if needed to keep the
+grob inside the slur. @code{outside} moves the grob vertically to the
+outside of the slur. @code{around} moves the grob vertically to the
+outside of the slur only if there is a collision. @code{ignore} does
+not move either. In grobs whose notational significance depends on
+vertical position (such as accidentals, clefs, etc.), @code{outside}
+and @code{around} behave like @code{ignore}.")
(axes ,list? "List of axis numbers. In the case of alignment
grobs, this should contain only one number.")
(accidental-grob ,ly:grob? "The accidental for this note.")
(accidental-grobs ,list? "An alist with @code{(@var{notename} .
@var{groblist})} entries.")
- (adjacent-pure-heights ,pair? "A pair of vectors. Used by a @code{VerticalAxisGroup} to
-cache the @code{Y-extent}s of different column ranges.")
+ (adjacent-pure-heights ,pair? "A pair of vectors. Used by a
+@code{VerticalAxisGroup} to cache the @code{Y-extent}s of different column
+ranges.")
(adjacent-hairpins ,ly:grob-array? "A list of directly neighboring
hairpins.")
(all-elements ,ly:grob-array? "A list of all grobs in this line. Its
(cons string-coordinate (- fret-coordinate)))))
(define (stencil-coordinate-offset fret-offset string-offset)
- "Return a pair @code{(x-offset . y-offstet)}
+ "Return a pair @code{(x-offset . y-offset)}
for translation in stencil coordinate system."
(cond
((eq? orientation 'landscape)
ifneq ($(patsubst %/local,%,$(DESTDIR)$(prefix)),/usr)
-## install-info can't do all his job for binary packages build systems.
+## install-info can't do all its job for binary packages' build systems.
## Best we can do is to notify the builder or packager.
local-install-info: info
-$(INSTALL) -d $(DESTDIR)$(infodir)
@echo "***************************************************************"
@echo "To compile Info documentation with images, do from top of the build tree"
@echo
- @echo " make web"
+ @echo " make doc"
@echo
@echo "which builds documentation in all formats; to build only Info documentation, do"
@echo
finish
endif
augroup filetypedetect
- au! BufNewFile,BufRead *.ly setf lilypond
+ au! BufNewFile,BufRead *.ly,*.ily setf lilypond
augroup END
"
" Installed As: vim/ftdetect/lilypond.vim
"
-au! BufNewFile,BufRead *.ly setf lilypond
+au! BufNewFile,BufRead *.ly,*.ily setf lilypond