]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'lilypond/translation' of ssh://jomand@git.sv.gnu.org/srv/git/lilypond
authorJohn Mandereau <john.mandereau@gmail.com>
Sat, 12 Sep 2009 19:00:03 +0000 (21:00 +0200)
committerJohn Mandereau <john.mandereau@gmail.com>
Sat, 12 Sep 2009 19:00:03 +0000 (21:00 +0200)
42 files changed:
.gitignore
.mailmap [new file with mode: 0644]
Documentation/application.tely
Documentation/application/install.itely [deleted file]
Documentation/application/running.itely
Documentation/application/setup.itely [deleted file]
Documentation/application/suggestions.itely
Documentation/application/working.itely [deleted file]
Documentation/contributor.texi
Documentation/contributor/basic-compile.itexi
Documentation/contributor/doc-work.itexi
Documentation/essay.tely
Documentation/essay/engraving.itely
Documentation/general/community.itexi
Documentation/general/download.itexi
Documentation/general/introduction.itexi
Documentation/general/manuals.itexi
Documentation/learning.tely
Documentation/learning/tweaks.itely
Documentation/macros.itexi
Documentation/music-glossary.tely
Documentation/notation.tely
Documentation/notation/chords.itely
Documentation/notation/contemporary.itely [new file with mode: 0644]
Documentation/notation/pitches.itely
Documentation/notation/specialist.itely
Documentation/notation/world.itely
Documentation/pictures/baer-ledger.png
Documentation/pictures/baer-sarabande-hires.png [new file with mode: 0644]
Documentation/pictures/baer-sarabande-original.jpg [new file with mode: 0644]
Documentation/pictures/baer-sarabande.png
Documentation/snippets.tely
GNUmakefile.in
input/regression/full-measure-rest-fermata.ly [new file with mode: 0644]
input/regression/page-spacing-system-count-overfull.ly [new file with mode: 0644]
input/regression/warn-unterminated-span-dynamic.ly [new file with mode: 0644]
lily/constrained-breaking.cc
lily/include/constrained-breaking.hh
lily/new-dynamic-engraver.cc
lily/pango-font.cc
ly/property-init.ly
po/nl.po

index be455e3b63f0e78da6c4f39e51665205bc4982e9..687d6523e49361da2326a84e622e4d8116951ebe 100644 (file)
@@ -77,3 +77,4 @@ ChangeLog
 RELEASE-COMMIT
 Documentation/lilypond
 semantic.cache
+.lock-wscript
diff --git a/.mailmap b/.mailmap
new file mode 100644 (file)
index 0000000..40f2aeb
--- /dev/null
+++ b/.mailmap
@@ -0,0 +1,183 @@
+Andrew Hawryluk <ahawryluk@gmail.com>
+Andrew Wilson <andrew@rivendale.net>
+Arjan Bos <arjan.bos@hetnet.nl>
+Carl D. Sorensen <carldsorensen>
+Carl D. Sorensen <c_sorensen@byu.edu>
+Chris Snyder <csnyder@adoromusicpub.com>
+Damien Heurtebise <famille.heurtebise@free.fr>
+Daniel Johnson <il.basso.buffo@gmail.com>
+Daniel Tonda Castillo <daniel.tonda@gmail.com>
+Dieter Grollmann <groll-ay@bluewin.ch>
+Ed Catmur <ed@capella.catmur.co.uk>
+Erlend Aasland <erlenda>
+Erlend Aasland <erlend.aasland@mac.com>
+Erlend Aasland <erlenda@gmail.com>
+Erlend Aasland <erlend@iMac.local>
+Eyolf Østrem <eyolf@oestrem.com>
+Francisco Vila <francisco.vila@hispalinux.es>
+Francisco Vila <paconet.org@gmail.com>
+Frederic Bron <frederic.bron@m4x.org>
+Graham Percival <gpercival>
+Graham Percival <gperciva@opihi.cs.uvic.ca>
+Graham Percival <gperciva@p214-046.public.uvic.ca>
+Graham Percival <gperciva@p214-056.public.uvic.ca>
+Graham Percival <gperciva@p214-068.public.uvic.ca>
+Graham Percival <gperciva@p214-136.public.uvic.ca>
+Graham Percival <gperciva@p214-191.public.uvic.ca>
+Graham Percival <gperciva@p234-016.public.uvic.ca>
+Graham Percival <gperciva@p234-052.public.uvic.ca>
+Graham Percival <gperciva@p234-072.public.uvic.ca>
+Graham Percival <gperciva@p234-084.public.uvic.ca>
+Graham Percival <gperciva@p234-137.public.uvic.ca>
+Graham Percival <gperciva@p234-154.public.uvic.ca>
+Graham Percival <gperciva@p234-155.public.uvic.ca>
+Graham Percival <gperciva@p234-167.public.uvic.ca>
+Graham Percival <gperciva@p234-172.public.uvic.ca>
+Graham Percival <gperciva@p234-192.public.uvic.ca>
+Graham Percival <gperciva@p234-194.public.uvic.ca>
+Graham Percival <gperciva@p234-197.public.uvic.ca>
+Graham Percival <gperciva@p234-198.public.uvic.ca>
+Graham Percival <gperciva@p234-207.public.uvic.ca>
+Graham Percival <gperciva@p234-215.public.uvic.ca>
+Graham Percival <gperciva@p234-219.public.uvic.ca>
+Graham Percival <gperciva@p234-231.public.uvic.ca>
+Graham Percival <gperciva@p234-235.public.uvic.ca>
+Graham Percival <gperciva@p234-248.public.uvic.ca>
+Graham Percival <gperciva@p236-151.public.uvic.ca>
+Graham Percival <gperciva@p236-174.public.uvic.ca>
+Graham Percival <gperciva@p236-188.public.uvic.ca>
+Graham Percival <gperciva@p236-194.public.uvic.ca>
+Graham Percival <gperciva@p236-202.public.uvic.ca>
+Graham Percival <gperciva@p236-222.public.uvic.ca>
+Graham Percival <gperciva@p236-242.public.uvic.ca>
+Graham Percival <gperciva@p237-137.public.uvic.ca>
+Graham Percival <gperciva@p237-147.public.uvic.ca>
+Graham Percival <gperciva@p237-158.public.uvic.ca>
+Graham Percival <gperciva@p237-167.public.uvic.ca>
+Graham Percival <gperciva@p237-172.public.uvic.ca>
+Graham Percival <gperciva@p237-179.public.uvic.ca>
+Graham Percival <gperciva@p237-182.public.uvic.ca>
+Graham Percival <gperciva@p237-192.public.uvic.ca>
+Graham Percival <gperciva@p237-203.public.uvic.ca>
+Graham Percival <gperciva@p237-206.public.uvic.ca>
+Graham Percival <gperciva@p237-220.public.uvic.ca>
+Graham Percival <gperciva@p237-232.public.uvic.ca>
+Graham Percival <gperciva@p237-236.public.uvic.ca>
+Graham Percival <gperciva@p237-237.public.uvic.ca>
+Graham Percival <gperciva@p242-059.public.uvic.ca>
+Graham Percival <gperciva@p246-195.public.uvic.ca>
+Graham Percival <gperciva@sapphire.(none)>
+Graham Percival <gperciva@spark.(none)>
+Graham Percival <gperciva@tsubasa.gateway.2wire.net>
+Graham Percival <gperciva@tsubasa.local>
+Graham Percival <gperciva@tsubasa.(none)>
+Graham Percival <gpermus@gmail.com>
+Graham Percival <graham@percival-music.ca>
+Hajo Dezelski <dl1sdz@gmail.com>
+Han-Wen Nienhuys <hanwen>
+Han-Wen Nienhuys <hanwen@lilypond.org>
+Han-Wen Nienhuys <hanwen@xs4all.nl>
+Heikki Junes <hjunes>
+Heikki Junes <hjunes@gmail.com>
+Heikki Junes <hjunes@hjunes-laptop.(none)>
+Hu Haipeng <hhpmusic@163.com>
+Ian Hulin <ian@hulin.org.uk>
+James E. Bailey <derhindemith@googlemail.com>
+Jan Nieuwenhuizen <jan>
+Jan Nieuwenhuizen <janneke>
+Jan Nieuwenhuizen <janneke@gnu.org>
+Jan Nieuwenhuizen <janneke@peder.flower>
+Jay Anderson <horndude77@gmail.com>
+Jean-Charles Malahieude <jcharles@localhost>
+Jean-Charles Malahieude <lilyfan-AT-orange-DOT-fr>
+Jean-Charles Malahieude <lilyfan@freesurf.fr>
+Jean-Charles Malahieude <lilyfan@orange.fr>
+Jean-Charles Malahieude <lolyfan-AT-wanadoo-DOT-fr>
+Jean-Charles Malahieude <lolyfanATwanadooDOTfr>
+Jean-Charles Malahieude <lolyfan@wanadoo.fr>
+Joe Neeman <jneem>
+Joe Neeman <joe@joe-laptop.(none)>
+Joe Neeman <joe@joe.(none)>
+Joe Neeman <joe@mercury.(none)>
+Joe Neeman <joeneeman@gmail.com>
+John Mandereau <john.mandereau@free.fr>
+John Mandereau <john.mandereau@gmail.com>
+John Mandereau <jomand>
+John Mandereau <lilydev@freemousse.(none)>
+Jonathan Kulp <jon@bashtop.(none)>
+Jonathan Kulp <jonlancekulp@gmail.com>
+Joseph Wakeling <joseph.wakeling@webdrake.net>
+Kevin Dalley <kevin@kelphead.org>
+Kieren MacMillan <kieren_macmillan@sympatico.ca>
+Kurt Kroon <kroon@winfirst.com>
+Laura Conrad <lconrad@laymusic.org>
+Marc Hohl <marc@hohlart.de>
+Mark Polesky <markpolesky@yahoo.com>
+Martin Tarenskeen <m.tarenskeen@zonnet.nl>
+Mats Bengtsson <mabe@drongo.s3.kth.se>
+Mats Bengtsson <mabe@violin.s3.kth.se>
+Mats Bengtsson <matsb>
+Matthew Rowles <rowlesmr@gmail.com>
+Matthias Kilian <kili@outback.escape.de>
+Matthieu Jacquot <milarepa7@gmail.com>
+Maximilian Albert <Anhalter42@gmx.de>
+Maximilian Albert <cilix@daphne.(none)>
+Maximilian Albert <cilix@dike.(none)>
+Maximilian Albert <maximilian.albert@gmail.com>
+Michael Käppler <xmichael-k@web.de>
+Michael Welsh Duggan <md5i@maru.(none)>
+Milan Zamazal <pdm@brailcom.org>
+Neil Puttock <n.puttock@gmail.com>
+Nicolas Sceaux <nicolas@robert.local>
+Nicolas Sceaux <nicolas.sceaux@free.fr>
+Nicolas Sceaux <nsceaux>
+Paco Vila <francisco.vila@hispalinux.es>
+Paco Vila <fravd@salvia.(none)>
+Paco Vila <fravd@salvia.org>
+Patrick McCarty <pnorcks@gmail.com>
+Paul Jarc <prj@po.cwru.edu>
+Ralph Palmer <palmeer.r.violin@gmail.com>
+Ralph Palmer <palmer.r.violin@gmail.com>
+Ralph Palmer <palmer.r.violin@treda.co.uk>
+Reinhold Kainhofer <reinhold@eee.(none)>
+Reinhold Kainhofer <reinhold@einstein.kainhofer.com>
+Reinhold Kainhofer <reinhold@einstein.(none)>
+Reinhold Kainhofer <reinhold@kainhofer.com>
+Risto Vääräniemi <risvaara@gmail.com>
+Rune Zedeler <rune@zedeler.dk>
+Rune Zedeler <rz>
+Rune Zedeler <rz@daimi.au.dk>
+Sawada Yoshiki <sawada@ubuntu.ubuntu-domain>
+Sawada Yoshiki <sawada.yoshiki@gmail.com>
+Simon Bailey <binabik@gmail.com>
+Simon Bailey <binabik@pc6143-c703.uibk.ac.at>
+Stefan Weil <weil@mail.berlios.de>
+Till Rettig <till.rettig@gmx.de>
+Till Rettig <till@urmeli.(none)>
+Travis Briggs <briggs.travis@gmail.com>
+Trevor Bača <trevorbaca@gmail.com>
+Trevor Daniels <t.daniels@treda.co.uk>
+Trevor Daniels <Trevor@Trevor-Laptop>
+Valentin Villenave <valentin@localhost.(none)>
+Valentin Villenave <v.villenave@gmail.com>
+Vegard Nossum <vegard@peltkore.net>
+Werner Lemberg <wl>
+Werner Lemberg <wl@gnu.org>
+Werner Lemberg <wl@linux-nvf0.site>
+Werner Lemberg <wl@rigel.orion>
+Werner Lemberg <wl@rigel.site>
+Wilbert Berendsen <lilykde@xs4all.nl>
+Wilbert Berendsen <wbsoft@xs4all.nl>
+
+
+
+Maximiliano <maxi@intelacer.(none)>
+Maximiliano <mxgdvg@yahoo.it>
+Lilypond GDP <lilypond@server.kainhofer.com>
+kroger <kroger>
+reuter <reuter>
+root <root@tsubasa.(none)>
+andrew <andrew@obi-wan.(none)>
+erik <erik>
+fred <fred>
+uid67283 <uid67283>
index f8c8d8ef1e580421b0c6812dd5f19c6379933baa..fa543ccae02befe09f9d18ea068eea739d36d245 100644 (file)
@@ -5,17 +5,20 @@
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
+
 @setfilename lilypond-application.info
-@settitle GNU LilyPond Application usage
+@settitle LilyPond Application usage
 @documentencoding UTF-8
 @documentlanguage en
 
+@macro manualIntro
+This file explains how to execute the programs distributed with
+LilyPond version @version{}.  In addition, it suggests some
+@qq{best practices} for efficient usage.
+@end macro
+
 @include macros.itexi
-@c  This produces the unified index
-@syncodeindex fn cp
-@syncodeindex vr cp
 
-@afourpaper
 
 @c don't remove this comment.
 @ignore
 @end ignore
 
 
-@copying
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006, 2007, 2008, 2009 by the authors.
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end copying
-
-@macro introText
-@cartouche
-This file explains how to execute the programs distributed with
-GNU LilyPond version @version{}.  In addition, it suggests some
-@qq{best practices} for efficient usage.
-
-For more information about how this fits with the other
-documentation, or to read this manual in other formats, see
-@rgeneral{Manuals}.
-@end cartouche
-@end macro
-
-
-@c TITLE PAGE
-@ifnottex
-@node Top
-@top GNU LilyPond --- Learning Manual
-@end ifnottex
-
-@finalout
-
-@titlepage
-@title LilyPond
-@subtitle The music typesetter
-@titlefont{Learning Manual}
-@author The LilyPond development team
-
-@vskip 100pt
-
-@introText{}
-
-@vskip 0pt plus 1filll
-@c @vskip 20pt
-
-@insertcopying{}
-
-For LilyPond version @version{}
-@end titlepage
+@lilyTitlePage{Usage}
 
 
 @c TOC -- non-tex
-
 @ifnottex
-@introText{}
-
-@c * Install::                        How to install or compile.
-@c * Setup::                          Using LilyPond with other programs.
 
 @c  maybe add a "Tasks" or "Specific tasks" or something like
 @c  that, after Suggestions  -gp
@@ -96,26 +43,25 @@ For LilyPond version @version{}
 * Updating files with convert-ly:: Updating input files.
 * lilypond-book::                  Integrating text and music.
 * Converting from other formats::  Converting to lilypond source format.
-* Working on LilyPond projects::   Working on non-working files.
-* Suggestions for writing files::  Best practices
+* Suggestions for writing files::  Best practices and effective bug-fixing.
 
 Appendices
 
 * GNU Free Documentation License:: License of this document.
 * LilyPond index::
 @end menu
+
+@docMain
 @end ifnottex
 
+
 @contents
 
 
-@c @include application/install.itely
-@c @include application/setup.itely
 @include application/running.itely
 @include application/updating.itely
 @include application/lilypond-book.itely
 @include application/converters.itely
-@include application/working.itely
 @include application/suggestions.itely
 
 @include fdl.itexi
diff --git a/Documentation/application/install.itely b/Documentation/application/install.itely
deleted file mode 100644 (file)
index 03007b2..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
-
-@ignore
-    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
-
-    When revising a translation, copy the HEAD committish of the
-    version that you are working on.  See TRANSLATION for details.
-@end ignore
-
-@c \version "2.12.0"
-
-@ifclear INSTALL
-@node Install
-@chapter Install
-@end ifclear
-
-There are two sets of releases for LilyPond: stable releases, and
-unstable development releases.  Stable versions have an even-numbered
-@q{minor} version number (i.e. 2.8, 2.10, 2.12, etc).  Development
-versions have an odd-numbered @q{minor} version number (i.e. 2.7, 2.9,
-2.11, etc).
-
-Building LilyPond is a very involved process, so we @strong{highly}
-recommend using the precompiled binaries.
-
-@menu
-* Precompiled binaries::
-@end menu
-
-
-@node Precompiled binaries
-@section Precompiled binaries
-
-@unnumberedsubsec Downloading
-
-Check out @uref{http://lilypond.org/web/install/} for up to date
-information on binary packages for your platform.  If your operating
-system is not covered on that general page, please see the complete list
-at @uref{http://download.linuxaudio.org/lilypond/binaries/}
-
-We currently create binaries for
-
-@example
-darwin-ppc  - MacOS X powerpc
-darwin-x86  - MacOS X intel
-freebsd-64  - FreeBSD 6.x, x86_64
-freebsd-x86 - FreeBSD 4.x, x86
-linux-64    - Any GNU/Linux distribution, x86_64
-linux-ppc   - Any GNU/Linux distribution, powerpc
-linux-x86   - Any GNU/Linux distribution, x86
-mingw       - Windows x86
-@end example
-
-@knownissues
-
-If you have MacOS 10.3 or 10.4 and you would like to use Python
-scripts such as @command{convert-ly} and @command{lilypond-book}, see
-@ref{Setup for MacOS X,,,lilypond-program,Application Usage}.
-
-@ignore
-You can also compile LilyPond directly from the source code. This
-requires that you can read English, so this section is not
-translated.  If you really want to compile LilyPond, see
-@iftex
-@c DO NOT translate the following line at all.
-@ref{Compiling from source,,,lilypond-program,Application Usage}.
-@end iftex
-@ifhtml
-@c Please translate the following line (but not the .html file name)
-the @uref{Compiling-from-source.html,documentation in English}.
-@end ifhtml
-@end ignore
-
-@c TRANSLATORS:
-@c   Please **do not** translate the file included below.  Users
-@c   should not be compiling LilyPond themselves; if they really
-@c   want to do so, they should be able to read the English docs,
-@c   because they'll probably need to ask questions in English
-@c   on the -devel list.   -gp
-@c Instead, please uncomment and translate the paragraph above,
-@c and remove all stuff (menu, nodes, contents) below this line.
-
-
-@include contributor/basic-compile.itexi
index 966e226b62137b301e44bde9fbee27a389629f72..e5a5874634d9f1ecf76b969a9616d3b159486327 100644 (file)
@@ -19,6 +19,8 @@ This chapter details the technicalities of running LilyPond.
 * Normal usage::
 * Command-line usage::
 * Error messages::
+* Point and click::             
+* Text editor support::         
 @end menu
 
 
@@ -487,3 +489,169 @@ above the indicated position.
 More information about errors is given in @ref{Common errors}.
 
 
+@node Point and click
+@section Point and click
+
+@cindex point and click
+
+Point and click lets you find notes in the input by clicking on them
+in the PDF viewer.  This makes it easier to find input that causes
+some error in the sheet music.
+
+When this functionality is active, LilyPond adds hyperlinks to the PDF
+file.  These hyperlinks are sent to the web-browser, which opens a
+text-editor with the cursor in the right place.
+
+To make this chain work, you should configure your PDF viewer to
+follow hyperlinks using the @file{lilypond-invoke-editor} script
+supplied with LilyPond.
+
+For Xpdf on UNIX, the following should be present in
+@file{xpdfrc}@footnote{On UNIX, this file is found either in
+@file{/etc/xpdfrc} or as @file{.xpdfrc} in your home directory.}
+
+@example
+urlCommand     "lilypond-invoke-editor %s"
+@end example
+
+The program @file{lilypond-invoke-editor} is a small helper
+program.  It will invoke an editor for the special @code{textedit}
+URIs, and run a web browser for others.  It tests the environment
+variable @code{EDITOR} for the following patterns,
+
+@table @code
+@item emacs
+  this will invoke
+@example
+emacsclient --no-wait +@var{line}:@var{column} @var{file}
+@end example
+@item vim
+  this will invoke
+@example
+gvim --remote +:@var{line}:norm@var{char} @var{file}
+@end example
+
+@item nedit
+this will invoke
+@example
+  nc -noask +@var{line} @var{file}'
+@end example
+@end table
+
+The environment variable @code{LYEDITOR} is used to override this.  It
+contains the command line to start the editor, where @code{%(file)s},
+@code{%(column)s}, @code{%(line)s} is replaced with the file, column
+and line respectively.  The  setting
+
+@example
+emacsclient --no-wait +%(line)s:%(column)s %(file)s
+@end example
+
+@noindent
+for @code{LYEDITOR} is equivalent to the standard emacsclient
+invocation.
+
+
+@cindex file size, output
+
+The point and click links enlarge the output files significantly.  For
+reducing the size of PDF and PS files, point and click may be switched
+off by issuing
+
+@example
+\pointAndClickOff
+@end example
+
+@noindent
+in a @file{.ly} file.  Point and click may be explicitly enabled with
+
+@example
+\pointAndClickOn
+@end example
+
+Alternately, you may disable point and click with a command-line
+option:
+
+@example
+lilypond -dno-point-and-click file.ly
+@end example
+
+@warning{You should always turn off point and click in any LilyPond
+files to be distributed to avoid including path information about
+your computer in the .pdf file, which can pose a security risk.}
+@node Text editor support
+@section Text editor support
+
+@cindex editors
+@cindex vim
+@cindex emacs
+@cindex modes, editor
+@cindex syntax coloring
+@cindex coloring, syntax
+
+There is support for different text editors for LilyPond.
+
+@menu
+* Emacs mode::                  
+* Vim mode::                    
+@end menu
+
+@node Emacs mode
+@subsection Emacs mode
+
+Emacs has a @file{lilypond-mode}, which provides keyword
+autocompletion, indentation, LilyPond specific parenthesis matching
+and syntax coloring, handy compile short-cuts and reading LilyPond
+manuals using Info.  If @file{lilypond-mode} is not installed on your
+platform, see below.
+
+An Emacs mode for entering music and running LilyPond is contained in
+the source archive in the @file{elisp} directory.  Do @command{make
+install} to install it to @var{elispdir}.  The file @file{lilypond-init.el}
+should be placed to @var{load-path}@file{/site-start.d/} or appended
+to your @file{~/.emacs} or @file{~/.emacs.el}.
+
+As a user, you may want add your source path (e.g. @file{~/site-lisp/}) to
+your @var{load-path} by appending the following line (as modified) to your
+@file{~/.emacs}
+
+@c any reason we do not advise:  (push "~/site-lisp" load-path)
+@example
+(setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
+@end example
+
+
+@node Vim mode
+@subsection Vim mode
+
+For @uref{http://@/www@/.vim@/.org,VIM}, a @file{vimrc} is supplied,
+along with syntax coloring tools.  A Vim mode for entering music and
+running LilyPond is contained in the source archive in @code{$VIM}
+directory.
+
+The LilyPond file type is detected if the file
+@file{~/.vim/filetype.vim} has the following content
+
+@example
+if exists("did_load_filetypes")
+  finish
+endif
+augroup filetypedetect
+  au! BufNewFile,BufRead *.ly,*.ily           setf lilypond
+augroup END
+@end example
+
+Please include this path by appending the following line to your
+@file{~/.vimrc}
+
+@example
+set runtimepath+=/usr/local/share/lilypond/$@{LILYPOND_VERSION@}/vim/
+@end example
+
+@noindent
+where $@{LILYPOND_VERSION@} is your LilyPond version.  If LilyPond was not
+installed in @file{/usr/local/}, then change this path accordingly.
+
+
+
+
diff --git a/Documentation/application/setup.itely b/Documentation/application/setup.itely
deleted file mode 100644 (file)
index e5ab5c4..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
-
-@ignore
-    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
-
-    When revising a translation, copy the HEAD committish of the
-    version that you are working on.  See TRANSLATION for details.
-@end ignore
-
-@c \version "2.12.0"
-
-@node Setup
-@chapter Setup
-
-This chapter discusses various post-install configuration options for
-LilyPond and various other programs.  This chapter may be safely treated
-as a reference: only read a section if it applies to you.
-
-@menu
-* Setup for specific Operating Systems::
-* Text editor support::
-* Point and click::
-@end menu
-
-
-@node Setup for specific Operating Systems
-@section Setup for specific Operating Systems
-
-This section explains how to perform additional setup for specific
-operating systems.
-
-@menu
-* Setup for MacOS X::
-@end menu
-
-@node Setup for MacOS X
-@subsection Setup for MacOS X
-
-@subsubheading Using Python scripts on MacOS 10.3 or 10.4
-
-LilyPond binaries for MacOS X do not provide Python, but Python 2.4 or
-newer is required by @command{convert-ly}.  Therefore, if you use MacOS
-10.3 or 10.4, you must install a newer Python version from
-@uref{http://python.org/download/}, then edit the first line of
-@command{convert-ly} and @command{lilypond-book} as follows: if the
-Python binary you just installed is in your @var{PATH}, the first line
-should be
-
-@example
-#!/usr/bin/env python
-@end example
-
-@noindent
-otherwise it should be
-
-@example
-#!@var{/path/to/newly_installed/python}
-@end example
-
-
-@subsubheading MacOS X on the command line
-
-The scripts --- such as @command{lilypond-book}, @command{convert-ly},
-@command{abc2ly}, and even @command{lilypond} itself --- are included
-inside the @code{.app} file for MacOS@tie{}X.  They can be run from
-the command line by invoking them directly, e.g.
-
-@example
-@var{path/to}/LilyPond.app/Contents/Resources/bin/lilypond
-@end example
-
-@noindent
-The same is true of the other scripts in that directory, including
-@command{lilypond-book}, @command{convert-ly}, @command{abc2ly}, etc.
-
-Alternatively, you may create scripts which add the path
-automatically.  Create a directory to store these scripts,
-
-@example
-mkdir -p ~/bin
-cd ~/bin
-@end example
-
-Create a file called @code{lilypond} which contains
-
-@example
-exec @var{path/to}/LilyPond.app/Contents/Resources/bin/lilypond "$@@"
-@end example
-
-Create similar files @code{lilypond-book}, @code{convert-ly}, and
-any other helper programs you use (@code{abc2ly}, @code{midi2ly},
-etc).  Simply replace the @code{bin/lilypond} with
-@code{bin/convert-ly} (or other program name) in the above file.
-
-Make the file executable,
-
-@example
-chmod u+x lilypond
-@end example
-
-Now, add this directory to your path.  Modify (or create)
-a file called @code{.profile} in your home directory such that it contains
-
-@example
-export PATH=$PATH:~/bin
-@end example
-
-@noindent
-This file should end with a blank line.
-
-Note that @var{path/to} will generally be @code{/Applications/}.
-
-
-@node Text editor support
-@section Text editor support
-
-@cindex editors
-@cindex vim
-@cindex emacs
-@cindex modes, editor
-@cindex syntax coloring
-@cindex coloring, syntax
-
-There is support from different text editors for LilyPond.
-
-@menu
-* Emacs mode::
-* Vim mode::
-* jEdit::
-* TexShop::
-* TextMate::
-* LilyKDE::
-@end menu
-
-@node Emacs mode
-@subsection Emacs mode
-
-Emacs has a @file{lilypond-mode}, which provides keyword
-autocompletion, indentation, LilyPond specific parenthesis matching
-and syntax coloring, handy compile short-cuts and reading LilyPond
-manuals using Info.  If @file{lilypond-mode} is not installed on your
-platform, see below.
-
-An Emacs mode for entering music and running LilyPond is contained in
-the source archive in the @file{elisp} directory.  Do @command{make
-install} to install it to @var{elispdir}.  The file @file{lilypond-init.el}
-should be placed to @var{load-path}@file{/site-start.d/} or appended
-to your @file{~/.emacs} or @file{~/.emacs.el}.
-
-As a user, you may want add your source path (e.g. @file{~/site-lisp/}) to
-your @var{load-path} by appending the following line (as modified) to your
-@file{~/.emacs}
-
-@c any reason we do not advise:  (push "~/site-lisp" load-path)
-@example
-(setq load-path (append (list (expand-file-name "~/site-lisp")) load-path))
-@end example
-
-
-@node Vim mode
-@subsection Vim mode
-
-For @uref{http://@/www@/.vim@/.org,VIM}, a @file{vimrc} is supplied,
-along with syntax coloring tools.  A Vim mode for entering music and
-running LilyPond is contained in the source archive in @code{$VIM}
-directory.
-
-The LilyPond file type is detected if the file
-@file{~/.vim/filetype.vim} has the following content
-
-@example
-if exists("did_load_filetypes")
-  finish
-endif
-augroup filetypedetect
-  au! BufNewFile,BufRead *.ly,*.ily           setf lilypond
-augroup END
-@end example
-
-Please include this path by appending the following line to your
-@file{~/.vimrc}
-
-@example
-set runtimepath+=/usr/local/share/lilypond/$@{LILYPOND_VERSION@}/vim/
-@end example
-
-@noindent
-where $@{LILYPOND_VERSION@} is your LilyPond version.  If LilyPond was not
-installed in @file{/usr/local/}, then change this path accordingly.
-
-
-@node jEdit
-@subsection jEdit
-
-Created as a plugin for the @uref{http://@/www@/.jedit@/.org@/,jEdit}
-text editor, LilyPondTool is the most feature-rich text-based tool for
-editing LilyPond scores.  Its features include a Document Wizard with
-lyrics support to set up documents easier, and embedded PDF viewer with
-advanced point-and-click support.  For screenshots, demos and
-installation instructions, visit
-@uref{http://lilypondtool@/.organum@/.hu}
-
-
-@node TexShop
-@subsection TexShop
-
-The @uref{http://@/www@/.uoregon@/.edu/~koch/texshop/index@/.html,TexShop}
-editor for MacOS@tie{}X can be extended to run LilyPond, lilypond-book and
-convert-ly from within the editor, using the extensions available at
-@uref{http://@/www@/.dimi@/.uniud@/.it/vitacolo/freesoftware@/.html}.
-
-
-@node TextMate
-@subsection TextMate
-
-There is a LilyPond bundle for TextMate.  It may be installed by running
-
-@example
-mkdir -p /Library/Application\ Support/TextMate/Bundles
-cd /Library/Application\ Support/TextMate/Bundles
-svn co http://macromates.com/svn/Bundles/trunk/Bundles/Lilypond.tmbundle/
-@end example
-
-
-@node LilyKDE
-@subsection LilyKDE
-
-@uref{http://lilykde.googlecode.com/,LilyKDE} is a plugin for KDE's
-text editor @uref{http://kate-editor.org/,Kate}.  It has a powerful Score
-Wizard to quickly setup a LilyPond document and an embedded PDF viewer.
-
-LilyKDE can use @uref{http://www.volny.cz/smilauer/rumor/,Rumor},
-so music can entered by playing on a MIDI keyboard.
-
-Other features are lyric hyphenation and running LilyPond on multiple files
-at once from within the KDE file manager.
-
-
-@node Point and click
-@section Point and click
-@cindex point and click
-
-
-Point and click lets you find notes in the input by clicking on them
-in the PDF viewer.  This makes it easier to find input that causes
-some error in the sheet music.
-
-When this functionality is active, LilyPond adds hyperlinks to the PDF
-file.  These hyperlinks are sent to the web-browser, which opens a
-text-editor with the cursor in the right place.
-
-To make this chain work, you should configure your PDF viewer to
-follow hyperlinks using the @file{lilypond-invoke-editor} script
-supplied with LilyPond.
-
-For Xpdf on UNIX, the following should be present in
-@file{xpdfrc}@footnote{On UNIX, this file is found either in
-@file{/etc/xpdfrc} or as @file{.xpdfrc} in your home directory.}
-
-@example
-urlCommand     "lilypond-invoke-editor %s"
-@end example
-
-The program @file{lilypond-invoke-editor} is a small helper
-program.  It will invoke an editor for the special @code{textedit}
-URIs, and run a web browser for others.  It tests the environment
-variable @code{EDITOR} for the following patterns,
-
-@table @code
-@item emacs
-  this will invoke
-@example
-emacsclient --no-wait +@var{line}:@var{column} @var{file}
-@end example
-@item vim
-  this will invoke
-@example
-gvim --remote +:@var{line}:norm@var{char} @var{file}
-@end example
-
-@item nedit
-this will invoke
-@example
-  nc -noask +@var{line} @var{file}'
-@end example
-@end table
-
-The environment variable @code{LYEDITOR} is used to override this.  It
-contains the command line to start the editor, where @code{%(file)s},
-@code{%(column)s}, @code{%(line)s} is replaced with the file, column
-and line respectively.  The  setting
-
-@example
-emacsclient --no-wait +%(line)s:%(column)s %(file)s
-@end example
-
-@noindent
-for @code{LYEDITOR} is equivalent to the standard emacsclient
-invocation.
-
-
-@cindex file size, output
-
-The point and click links enlarge the output files significantly.  For
-reducing the size of PDF and PS files, point and click may be switched
-off by issuing
-
-@example
-\pointAndClickOff
-@end example
-
-@noindent
-in a @file{.ly} file.  Point and click may be explicitly enabled with
-
-@example
-\pointAndClickOn
-@end example
-
-Alternately, you may disable point and click with a command-line
-option:
-
-@example
-lilypond -dno-point-and-click file.ly
-@end example
-
-@warning{You should always turn off point and click in any LilyPond
-files to be distributed to avoid including path information about
-your computer in the .pdf file, which can pose a security risk.}
index 228b9227cb6b63eb289b8b7f9888dcb648f2bae3..bd58b7c68749de20261a26254c519e3cfd385f5d 100644 (file)
@@ -41,9 +41,11 @@ structured in order to be easier (or harder) to update.
 @end itemize
 
 @menu
-* General suggestions::
-* Typesetting existing music::
-* Large projects::
+* General suggestions::         
+* Typesetting existing music::  
+* Large projects::              
+* When things don't work::      
+* Make and Makefiles::          
 @end menu
 
 
@@ -129,6 +131,8 @@ variable, it is recommended that the notes are wrapped in
 @example
 \transpose c natural-pitch @{...@}
 @end example
+
+@noindent
 (where @code{natural-pitch} is the open pitch of the instrument) so
 that the music in the variable is effectively in C. You can transpose
 it back again when the variable is used, if required, but you might
@@ -190,4 +194,565 @@ g4\fthenp c'8. e16
 @end itemize
 
 
+@node When things don't work
+@section When things don't work
+
+@menu
+* Common errors::               
+* Troubleshooting (taking it all apart)::  
+@end menu
+
+@node Common errors
+@subsection Common errors
+
+The error conditions described below occur often, yet the cause
+is not obvious or easily found.  Once seen and understood, they
+are easily handled.
+
+
+@menu
+* Music runs off the page::     
+* An extra staff appears::      
+* Apparent error in ../ly/init.ly::  
+* Error message Unbound variable %::  
+* Error message FT_Get_Glyph_Name::  
+@end menu
+
+@node Music runs off the page
+@unnumberedsubsubsec Music runs off the page
+
+Music running off the page over the right margin or appearing
+unduly compressed is almost always due to entering an incorrect
+duration on a note, causing the final note in a measure to extend
+over the bar line.  It is not invalid if the final note in a
+measure does not end on the automatically entered bar line, as the
+note is simply assumed to carry over into the next measure.  But
+if a long sequence of such carry-over measures occurs the music
+can appear compressed or may flow off the page because automatic
+line breaks can be inserted only at the end of complete measures,
+i.e., where all notes end before or at the end of the measure.
+
+@warning{An incorrect duration can cause line breaks to be
+inhibited, leading to a line of highly compressed music or
+music which flows off the page.}
+
+The incorrect duration can be found easily if bar checks are used,
+see @ruser{Bar and bar number checks}.
+
+If you actually intend to have a series of such carry-over measures
+you will need to insert an invisible bar line where you want the
+line to break.  For details, see @ruser{Bar lines}.
+
+
+@node An extra staff appears
+@unnumberedsubsubsec An extra staff appears
+
+If contexts are not created explicitly with @code{\new} they will be
+silently created as soon as a command is encountered which cannot
+be applied to an existing context.  In simple scores the automatic
+creation of contexts is useful, and most of the examples in the
+LilyPond manuals take advantage of this simplification.  But
+occasionally the silent creation of contexts can give rise to
+unexpected new staves or scores.  For example, it might be expected
+that the following code would cause all note heads within the
+following staff to be colored red, but in fact it results in two
+staves with the note heads remaining the default black in the lower
+staff.
+
+@lilypond[quote,verbatim,relative=2]
+\override Staff.NoteHead #'color = #red
+\new Staff { a }
+@end lilypond
+
+This is because a @code{Staff} context does not exist when the
+override is processed, so one is implicitly created and the override
+is applied to it, but then the @code{\new Staff} command creates
+another, separate, staff into which the notes are placed.  The
+correct code to color all note heads red is
+
+@lilypond[quote,verbatim,relative=2]
+\new Staff {
+  \override Staff.NoteHead #'color = #red
+  a
+}
+@end lilypond
+
+As a second example, if a @code{\relative} command is placed inside
+a @code{\repeat} command two staves result, the second offset from
+the first, because the @code{\repeat} command generates two
+@code{\relative} blocks, which each implicitly create @code{Staff}
+and @code{Voice} blocks.
+
+@lilypond[quote,verbatim]
+\repeat unfold 2 \relative { c d e f }
+@end lilypond
+
+The correct way is to reverse the @code{\repeat} and
+@code{\relative} commands, like this:
+
+@lilypond[quote,verbatim]
+\relative {
+  \repeat unfold 2 { c d e f }
+}
+@end lilypond
+
+
+@node Apparent error in ../ly/init.ly
+@unnumberedsubsubsec Apparent error in @code{../ly/init.ly}
+
+Various obscure error messages may appear about syntax errors in
+@code{../ly/init.ly} if the input file is not correctly formed,
+for example, if it does not contain correctly
+matched braces or quote signs.
+
+The most common error is a missing brace, (@code{@}}), at the end of
+a @code{score} block.  Here the solution is obvious: check the
+@code{score} block is correctly terminated.  The correct structure
+of an input file is described in @rlearning{How LilyPond input files work}.
+Using an editor which automatically highlights matching brackets and
+braces is helpful to avoid such errors.
+
+A second common cause is no white space between the last syllable
+of a lyrics block and the terminating brace, (@code{@}}).  Without
+this separation the brace is taken to be part of the syllable.  It
+is always advisable to ensure there is white space before and after
+@emph{every} brace.  For the importance of this when using lyrics,
+see @ruser{Lyrics explained}.
+
+This error message can also appear if a terminating quote sign,
+(@code{"}), is omitted.  In this case an accompanying error message
+@c keep "-matching straight in fancy editors
+should give a line number close to the line in error.  The
+mismatched quote will usually be on the line one or two above.
+
+@node Error message Unbound variable %
+@unnumberedsubsubsec Error message Unbound variable %
+
+This error message will appear at the bottom of the console
+output or log file together with a @qq{GUILE signalled an error ...}
+message every time a Scheme routine is called which (invalidly)
+contains a @emph{LilyPond} rather than a @emph{Scheme} comment.
+
+LilyPond comments begin with a percent sign, (@code{%}), and must
+not be used within Scheme routines.  Scheme comments begin with a
+semi-colon, (@code{;}).
+
+@node Error message FT_Get_Glyph_Name
+@unnumberedsubsubsec Error message FT_Get_Glyph_Name
+
+This error messages appears in the console output or log file if
+an input file contains a non-ASCII character and was not saved in
+UTF-8 encoding.  For details, see @ruser{Text encoding}.
+
+@node Troubleshooting (taking it all apart)
+@subsection Troubleshooting (taking it all apart)
+
+Sooner or later, you will write a file that LilyPond cannot
+compile.  The messages that LilyPond gives may help
+you find the error, but in many cases you need to do some
+investigation to determine the source of the problem.
+
+The most powerful tools for this purpose are the
+single line comment (indicated by @code{%}) and the block
+comment (indicated by @code{%@{ ... %@}}).  If you don't
+know where a problem is, start commenting out huge portions
+of your input file.  After you comment out a section, try
+compiling the file again.  If it works, then the problem
+must exist in the portion you just commented.  If it doesn't
+work, then keep on commenting out material until you have
+something that works.
+
+In an extreme case, you might end up with only
+
+@example
+\score @{
+  <<
+    % \melody
+    % \harmony
+    % \bass
+  >>
+  \layout@{@}
+@}
+@end example
+
+@noindent
+(in other words, a file without any music)
+
+If that happens, don't give up.  Uncomment a bit -- say,
+the bass part -- and see if it works.  If it doesn't work,
+then comment out all of the bass music (but leave
+@code{\bass} in the @code{\score} uncommented.
+
+@example
+bass = \relative c' @{
+%@{
+  c4 c c c
+  d d d d
+%@}
+@}
+@end example
+
+Now start slowly uncommenting more and more of the
+@code{bass} part until you find the problem line.
+
+Another very useful debugging technique is constructing
+@rgeneral{Tiny examples}.
+
+
+@node Make and Makefiles
+@section Make and Makefiles
+
+@cindex makefiles
+@cindex make
+
+Pretty well all the platforms Lilypond can run on support a software
+facility called @code{make}. This software reads a special file called a
+@code{Makefile} that defines what files depend on what others and what
+commands you need to give the operating system to produce one file from
+another. For example the makefile would spell out how to produce
+@code{ballad.pdf} and @code{ballad.midi} from @code{ballad.ly} by
+running Lilypond.
+
+There are times when it is a good idea to create a @code{Makefile}
+for your project, either for your own convenience or
+as a courtesy to others who might have access to your source files.
+This is true for very large projects with many included files and
+different output options (e.g. full score, parts, conductor's
+score, piano reduction, etc.), or for projects that
+require difficult commands to build them (such as
+@code{lilypond-book} projects). Makefiles vary greatly in
+complexity and flexibility, according to the needs and skills of
+the authors. The program GNU Make comes installed on GNU/Linux
+distributions and on MacOS X, and it is also available for Windows.
+
+See the @strong{GNU Make Manual} for full details on using
+@code{make}, as what follows here gives only a glimpse of what it
+can do.
+
+The commands to define rules in a makefile differ
+according to platform; for instance the various forms of Linux and
+MacOS use @code{bash}, while Windows uses @code{cmd}. Note that on
+MacOS X, you need to configure the system to use the command-line
+intepreter. Here are some example makefiles, with versions for both
+Linux/MacOS and Windows.
+
+The first example is for an orchestral work in four
+movements with a directory structure as follows:
+
+@example
+Symphony/
+|-- MIDI/
+|-- Makefile
+|-- Notes/
+|   |-- cello.ily
+|   |-- figures.ily
+|   |-- horn.ily
+|   |-- oboe.ily
+|   |-- trioString.ily
+|   |-- viola.ily
+|   |-- violinOne.ily
+|   `-- violinTwo.ily
+|-- PDF/
+|-- Parts/
+|   |-- symphony-cello.ly
+|   |-- symphony-horn.ly
+|   |-- symphony-oboes.ly
+|   |-- symphony-viola.ly
+|   |-- symphony-violinOne.ly
+|   `-- symphony-violinTwo.ly
+|-- Scores/
+|   |-- symphony.ly
+|   |-- symphonyI.ly
+|   |-- symphonyII.ly
+|   |-- symphonyIII.ly
+|   `-- symphonyIV.ly
+`-- symphonyDefs.ily
+@end example
+
+The @code{.ly} files in the @code{Scores} and
+@code{Parts} directories get their notes from @code{.ily}
+files in the @code{Notes} directory:
+
+@example
+%%% top of file "symphony-cello.ly"
+\include ../definitions.ily
+\include ../Notes/cello.ily
+@end example
+
+The makefile will have targets of @code{score} (entire piece in
+full score), @code{movements} (individual movements in full score),
+and @code{parts} (individual parts for performers). There
+is also a target @code{archive} that will create a tarball of
+the source files, suitable for sharing via web or email. Here is
+the makefile for GNU/Linux or MacOS X. It should be saved with the
+name @code{Makefile} in the top directory of the project:
+
+@warning{When a target or pattern rule is defined, the
+subsequent lines must begin with tabs, not spaces.}
+
+@example
+# the name stem of the output files
+piece = symphony
+# determine how many processors are present
+CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
+# The command to run lilypond
+LILY_CMD = lilypond -ddelete-intermediate-files \
+                    -dno-point-and-click -djob-count=$(CPU_CORES)
+
+# The suffixes used in this Makefile.
+.SUFFIXES: .ly .ily .pdf .midi
+
+# Input and output files are searched in the directories listed in
+# the VPATH variable.  All of them are subdirectories of the current
+# directory (given by the GNU make variable `CURDIR').
+VPATH = \
+  $(CURDIR)/Scores \
+  $(CURDIR)/PDF \
+  $(CURDIR)/Parts \
+  $(CURDIR)/Notes
+
+# The pattern rule to create PDF and MIDI files from a LY input file.
+# The .pdf output files are put into the `PDF' subdirectory, and the
+# .midi files go into the `MIDI' subdirectory.
+%.pdf %.midi: %.ly
+        $(LILY_CMD) $<; \           # this line begins with a tab
+        if test -f "$*.pdf"; then \
+            mv "$*.pdf" PDF/; \
+        fi; \
+        if test -f "$*.midi"; then \
+            mv "$*.midi" MIDI/; \
+        fi
+
+notes = \
+  cello.ily \
+  horn.ily \
+  oboe.ily \
+  viola.ily \
+  violinOne.ily \
+  violinTwo.ily
+
+# The dependencies of the movements.
+$(piece)I.pdf: $(piece)I.ly $(notes)
+$(piece)II.pdf: $(piece)II.ly $(notes)
+$(piece)III.pdf: $(piece)III.ly $(notes)
+$(piece)IV.pdf: $(piece)IV.ly $(notes)
+
+# The dependencies of the full score.
+$(piece).pdf: $(piece).ly $(notes)
+
+# The dependencies of the parts.
+$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
+$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
+$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
+$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
+$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
+$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
+
+# Type `make score' to generate the full score of all four
+# movements as one file.
+.PHONY: score
+score: $(piece).pdf
+
+# Type `make parts' to generate all parts.
+# Type `make foo.pdf' to generate the part for instrument `foo'.
+# Example: `make symphony-cello.pdf'.
+.PHONY: parts
+parts: $(piece)-cello.pdf \
+       $(piece)-violinOne.pdf \
+       $(piece)-violinTwo.pdf \
+       $(piece)-viola.pdf \
+       $(piece)-oboes.pdf \
+       $(piece)-horn.pdf
+
+# Type `make movements' to generate files for the
+# four movements separately.
+.PHONY: movements
+movements: $(piece)I.pdf \
+           $(piece)II.pdf \
+           $(piece)III.pdf \
+           $(piece)IV.pdf
+
+all: score parts movements
+
+archive:
+        tar -cvvf stamitz.tar \       # this line begins with a tab
+        --exclude=*pdf --exclude=*~ \
+        --exclude=*midi --exclude=*.tar \
+        ../Stamitz/*
+@end example
+
+
+There are special complications on the Windows platform. After
+downloading and installing GNU Make for Windows, you must set the
+correct path in the system's environment variables so that the
+DOS shell can find the Make program. To do this, right-click on
+"My Computer," then choose @code{Properties} and
+@code{Advanced}. Click @code{Environment Variables}, and then
+in the @code{System Variables} pane, highlight @code{Path}, click
+@code{edit}, and add the path to the GNU Make executable file, which
+ will look something like this:
+
+@example
+C:\Program Files\GnuWin32\bin
+@end example
+
+The makefile itself has to be altered to handle different shell
+commands and to deal with spaces that are present
+in some default system directories. The @code{archive} target
+is eliminated since Windows does not have the @code{tar} command,
+and Windows also has a different default extension for midi files.
+
+
+@example
+## WINDOWS VERSION
+##
+piece = symphony
+LILY_CMD = lilypond -ddelete-intermediate-files \
+                    -dno-point-and-click \
+                    -djob-count=$(NUMBER_OF_PROCESSORS)
+
+#get the 8.3 name of CURDIR (workaround for spaces in PATH)
+workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
+          do @@echo %%~sb)
+
+.SUFFIXES: .ly .ily .pdf .mid
+
+VPATH = \
+  $(workdir)/Scores \
+  $(workdir)/PDF \
+  $(workdir)/Parts \
+  $(workdir)/Notes
+
+%.pdf %.mid: %.ly
+        $(LILY_CMD) $<      # this line begins with a tab
+        if exist "$*.pdf"  move /Y "$*.pdf"  PDF/ # begin with tab
+        if exist "$*.mid" move /Y "$*.mid" MIDI/  # begin with tab
+
+notes = \
+  cello.ily \
+  figures.ily \
+  horn.ily \
+  oboe.ily \
+  trioString.ily \
+  viola.ily \
+  violinOne.ily \
+  violinTwo.ily
+
+$(piece)I.pdf: $(piece)I.ly $(notes)
+$(piece)II.pdf: $(piece)II.ly $(notes)
+$(piece)III.pdf: $(piece)III.ly $(notes)
+$(piece)IV.pdf: $(piece)IV.ly $(notes)
+
+$(piece).pdf: $(piece).ly $(notes)
+
+$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
+$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
+$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
+$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
+$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
+$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
+
+.PHONY: score
+score: $(piece).pdf
+
+.PHONY: parts
+parts: $(piece)-cello.pdf \
+       $(piece)-violinOne.pdf \
+       $(piece)-violinTwo.pdf \
+       $(piece)-viola.pdf \
+       $(piece)-oboes.pdf \
+       $(piece)-horn.pdf
+
+.PHONY: movements
+movements: $(piece)I.pdf \
+           $(piece)II.pdf \
+           $(piece)III.pdf \
+           $(piece)IV.pdf
+
+all: score parts movements
+@end example
+
+
+The next Makefile is for a @command{lilypond-book} document done in
+LaTeX. This project has an index, which requires that the
+@command{latex} command be run twice to update links. Output files are
+all stored in the @code{out} directory for .pdf output and in the
+@code{htmlout} directory for the html output.
+
+@example
+SHELL=/bin/sh
+FILE=myproject
+OUTDIR=out
+WEBDIR=htmlout
+VIEWER=acroread
+BROWSER=firefox
+LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
+LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
+PDF=cd $(OUTDIR) && pdflatex $(FILE)
+HTML=cd $(WEBDIR) && latex2html $(FILE)
+INDEX=cd $(OUTDIR) && makeindex $(FILE)
+PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
+
+all: pdf web keep
+
+pdf:
+        $(LILYBOOK_PDF)  # begin with tab
+        $(PDF)           # begin with tab
+        $(INDEX)         # begin with tab
+        $(PDF)           # begin with tab
+        $(PREVIEW)       # begin with tab
+
+web:
+        $(LILYBOOK_HTML) # begin with tab
+        $(HTML)          # begin with tab
+        cp -R $(WEBDIR)/$(FILE)/ ./  # begin with tab
+        $(BROWSER) $(FILE)/$(FILE).html &  # begin with tab
+
+keep: pdf
+        cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf  # begin with tab
+
+clean:
+        rm -rf $(OUTDIR) # begin with tab
+
+web-clean:
+        rm -rf $(WEBDIR) # begin with tab
+
+archive:
+        tar -cvvf myproject.tar \ # begin this line with tab
+        --exclude=out/* \
+        --exclude=htmlout/* \
+        --exclude=myproject/* \
+        --exclude=*midi \
+        --exclude=*pdf \
+        --exclude=*~ \
+        ../MyProject/*
+@end example
+
+TODO: make this thing work on Windows
+
+The previous makefile does not work on Windows. An alternative
+for Windows users would be to create a simple batch file
+containing the build commands. This will not
+keep track of dependencies the way a makefile does, but it at
+least reduces the build process to a single command. Save the
+following code as @command{build.bat} or @command{build.cmd}.
+The batch file can be run at the DOS prompt or by simply
+double-clicking its icon.
+
+@example
+lilypond-book --output=out --pdf myproject.lytex
+cd out
+pdflatex myproject
+makeindex myproject
+pdflatex myproject
+cd ..
+copy out\myproject.pdf MyProject.pdf
+@end example
+
 
+@seealso
+Application Usage:
+FIXME
+@c @rprogram{Setup for MacOS X},
+@rprogram{Command-line usage},
+@rprogram{lilypond-book}
diff --git a/Documentation/application/working.itely b/Documentation/application/working.itely
deleted file mode 100644 (file)
index f850455..0000000
+++ /dev/null
@@ -1,588 +0,0 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
-
-@ignore
-    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
-
-    When revising a translation, copy the HEAD committish of the
-    version that you are working on.  See TRANSLATION for details.
-@end ignore
-
-@c \version "2.12.0"
-
-@node Working on LilyPond projects
-@chapter Working on LilyPond projects
-
-This section explains how to solve or avoid certain common
-problems.  If you have programming experience, many of these
-tips may seem obvious, but it is still advisable to read
-this chapter.
-
-
-@menu
-* When things don't work::
-* Make and Makefiles::
-@end menu
-
-
-@node When things don't work
-@section When things don't work
-
-@menu
-* Common errors::
-* Troubleshooting (taking it all apart)::
-@end menu
-
-@node Common errors
-@subsection Common errors
-
-The error conditions described below occur often, yet the cause
-is not obvious or easily found.  Once seen and understood, they
-are easily handled.
-
-
-@menu
-* Music runs off the page::
-* An extra staff appears::
-* Apparent error in ../ly/init.ly::
-* Error message Unbound variable %::
-* Error message FT_Get_Glyph_Name::
-@end menu
-
-@node Music runs off the page
-@unnumberedsubsubsec Music runs off the page
-
-Music running off the page over the right margin or appearing
-unduly compressed is almost always due to entering an incorrect
-duration on a note, causing the final note in a measure to extend
-over the bar line.  It is not invalid if the final note in a
-measure does not end on the automatically entered bar line, as the
-note is simply assumed to carry over into the next measure.  But
-if a long sequence of such carry-over measures occurs the music
-can appear compressed or may flow off the page because automatic
-line breaks can be inserted only at the end of complete measures,
-i.e., where all notes end before or at the end of the measure.
-
-@warning{An incorrect duration can cause line breaks to be
-inhibited, leading to a line of highly compressed music or
-music which flows off the page.}
-
-The incorrect duration can be found easily if bar checks are used,
-see @ruser{Bar and bar number checks}.
-
-If you actually intend to have a series of such carry-over measures
-you will need to insert an invisible bar line where you want the
-line to break.  For details, see @ruser{Bar lines}.
-
-
-@node An extra staff appears
-@unnumberedsubsubsec An extra staff appears
-
-If contexts are not created explicitly with @code{\new} they will be
-silently created as soon as a command is encountered which cannot
-be applied to an existing context.  In simple scores the automatic
-creation of contexts is useful, and most of the examples in the
-LilyPond manuals take advantage of this simplification.  But
-occasionally the silent creation of contexts can give rise to
-unexpected new staves or scores.  For example, it might be expected
-that the following code would cause all note heads within the
-following staff to be colored red, but in fact it results in two
-staves with the note heads remaining the default black in the lower
-staff.
-
-@lilypond[quote,verbatim,relative=2]
-\override Staff.NoteHead #'color = #red
-\new Staff { a }
-@end lilypond
-
-This is because a @code{Staff} context does not exist when the
-override is processed, so one is implicitly created and the override
-is applied to it, but then the @code{\new Staff} command creates
-another, separate, staff into which the notes are placed.  The
-correct code to color all note heads red is
-
-@lilypond[quote,verbatim,relative=2]
-\new Staff {
-  \override Staff.NoteHead #'color = #red
-  a
-}
-@end lilypond
-
-As a second example, if a @code{\relative} command is placed inside
-a @code{\repeat} command two staves result, the second offset from
-the first, because the @code{\repeat} command generates two
-@code{\relative} blocks, which each implicitly create @code{Staff}
-and @code{Voice} blocks.
-
-@lilypond[quote,verbatim]
-\repeat unfold 2 \relative { c d e f }
-@end lilypond
-
-The correct way is to reverse the @code{\repeat} and
-@code{\relative} commands, like this:
-
-@lilypond[quote,verbatim]
-\relative {
-  \repeat unfold 2 { c d e f }
-}
-@end lilypond
-
-
-@node Apparent error in ../ly/init.ly
-@unnumberedsubsubsec Apparent error in @code{../ly/init.ly}
-
-Various obscure error messages may appear about syntax errors in
-@code{../ly/init.ly} if the input file is not correctly formed,
-for example, if it does not contain correctly
-matched braces or quote signs.
-
-The most common error is a missing brace, (@code{@}}), at the end of
-a @code{score} block.  Here the solution is obvious: check the
-@code{score} block is correctly terminated.  The correct structure
-of an input file is described in @rlearning{How LilyPond input files work}.
-Using an editor which automatically highlights matching brackets and
-braces is helpful to avoid such errors.
-
-A second common cause is no white space between the last syllable
-of a lyrics block and the terminating brace, (@code{@}}).  Without
-this separation the brace is taken to be part of the syllable.  It
-is always advisable to ensure there is white space before and after
-@emph{every} brace.  For the importance of this when using lyrics,
-see @ruser{Lyrics explained}.
-
-This error message can also appear if a terminating quote sign,
-(@code{"}), is omitted.  In this case an accompanying error message
-@c keep "-matching straight in fancy editors
-should give a line number close to the line in error.  The
-mismatched quote will usually be on the line one or two above.
-
-@node Error message Unbound variable %
-@unnumberedsubsubsec Error message Unbound variable %
-
-This error message will appear at the bottom of the console
-output or log file together with a @qq{GUILE signalled an error ...}
-message every time a Scheme routine is called which (invalidly)
-contains a @emph{LilyPond} rather than a @emph{Scheme} comment.
-
-LilyPond comments begin with a percent sign, (@code{%}), and must
-not be used within Scheme routines.  Scheme comments begin with a
-semi-colon, (@code{;}).
-
-@node Error message FT_Get_Glyph_Name
-@unnumberedsubsubsec Error message FT_Get_Glyph_Name
-
-This error messages appears in the console output or log file if
-an input file contains a non-ASCII character and was not saved in
-UTF-8 encoding.  For details, see @ruser{Text encoding}.
-
-@node Troubleshooting (taking it all apart)
-@subsection Troubleshooting (taking it all apart)
-
-Sooner or later, you will write a file that LilyPond cannot
-compile.  The messages that LilyPond gives may help
-you find the error, but in many cases you need to do some
-investigation to determine the source of the problem.
-
-The most powerful tools for this purpose are the
-single line comment (indicated by @code{%}) and the block
-comment (indicated by @code{%@{ ... %@}}).  If you don't
-know where a problem is, start commenting out huge portions
-of your input file.  After you comment out a section, try
-compiling the file again.  If it works, then the problem
-must exist in the portion you just commented.  If it doesn't
-work, then keep on commenting out material until you have
-something that works.
-
-In an extreme case, you might end up with only
-
-@example
-\score @{
-  <<
-    % \melody
-    % \harmony
-    % \bass
-  >>
-  \layout@{@}
-@}
-@end example
-
-@noindent
-(in other words, a file without any music)
-
-If that happens, don't give up.  Uncomment a bit -- say,
-the bass part -- and see if it works.  If it doesn't work,
-then comment out all of the bass music (but leave
-@code{\bass} in the @code{\score} uncommented.
-
-@example
-bass = \relative c' @{
-%@{
-  c4 c c c
-  d d d d
-%@}
-@}
-@end example
-
-Now start slowly uncommenting more and more of the
-@code{bass} part until you find the problem line.
-
-Another very useful debugging technique is constructing
-@rgeneral{Tiny examples}.
-
-
-@node Make and Makefiles
-@section Make and Makefiles
-
-@cindex makefiles
-@cindex make
-
-Pretty well all the platforms Lilypond can run on support a software
-facility called @code{make}. This software reads a special file called a
-@code{Makefile} that defines what files depend on what others and what
-commands you need to give the operating system to produce one file from
-another. For example the makefile would spell out how to produce
-@code{ballad.pdf} and @code{ballad.midi} from @code{ballad.ly} by
-running Lilypond.
-
-There are times when it is a good idea to create a @code{Makefile}
-for your project, either for your own convenience or
-as a courtesy to others who might have access to your source files.
-This is true for very large projects with many included files and
-different output options (e.g. full score, parts, conductor's
-score, piano reduction, etc.), or for projects that
-require difficult commands to build them (such as
-@code{lilypond-book} projects). Makefiles vary greatly in
-complexity and flexibility, according to the needs and skills of
-the authors. The program GNU Make comes installed on GNU/Linux
-distributions and on MacOS X, and it is also available for Windows.
-
-See the @strong{GNU Make Manual} for full details on using
-@code{make}, as what follows here gives only a glimpse of what it
-can do.
-
-The commands to define rules in a makefile differ
-according to platform; for instance the various forms of Linux and
-MacOS use @code{bash}, while Windows uses @code{cmd}. Note that on
-MacOS X, you need to configure the system to use the command-line
-intepreter. Here are some example makefiles, with versions for both
-Linux/MacOS and Windows.
-
-The first example is for an orchestral work in four
-movements with a directory structure as follows:
-
-@example
-Symphony/
-|-- MIDI/
-|-- Makefile
-|-- Notes/
-|   |-- cello.ily
-|   |-- figures.ily
-|   |-- horn.ily
-|   |-- oboe.ily
-|   |-- trioString.ily
-|   |-- viola.ily
-|   |-- violinOne.ily
-|   `-- violinTwo.ily
-|-- PDF/
-|-- Parts/
-|   |-- symphony-cello.ly
-|   |-- symphony-horn.ly
-|   |-- symphony-oboes.ly
-|   |-- symphony-viola.ly
-|   |-- symphony-violinOne.ly
-|   `-- symphony-violinTwo.ly
-|-- Scores/
-|   |-- symphony.ly
-|   |-- symphonyI.ly
-|   |-- symphonyII.ly
-|   |-- symphonyIII.ly
-|   `-- symphonyIV.ly
-`-- symphonyDefs.ily
-@end example
-
-The @code{.ly} files in the @code{Scores} and
-@code{Parts} directories get their notes from @code{.ily}
-files in the @code{Notes} directory:
-
-@example
-%%% top of file "symphony-cello.ly"
-\include ../definitions.ily
-\include ../Notes/cello.ily
-@end example
-
-The makefile will have targets of @code{score} (entire piece in
-full score), @code{movements} (individual movements in full score),
-and @code{parts} (individual parts for performers). There
-is also a target @code{archive} that will create a tarball of
-the source files, suitable for sharing via web or email. Here is
-the makefile for GNU/Linux or MacOS X. It should be saved with the
-name @code{Makefile} in the top directory of the project:
-
-@warning{When a target or pattern rule is defined, the
-subsequent lines must begin with tabs, not spaces.}
-
-@example
-# the name stem of the output files
-piece = symphony
-# determine how many processors are present
-CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
-# The command to run lilypond
-LILY_CMD = lilypond -ddelete-intermediate-files \
-                    -dno-point-and-click -djob-count=$(CPU_CORES)
-
-# The suffixes used in this Makefile.
-.SUFFIXES: .ly .ily .pdf .midi
-
-# Input and output files are searched in the directories listed in
-# the VPATH variable.  All of them are subdirectories of the current
-# directory (given by the GNU make variable `CURDIR').
-VPATH = \
-  $(CURDIR)/Scores \
-  $(CURDIR)/PDF \
-  $(CURDIR)/Parts \
-  $(CURDIR)/Notes
-
-# The pattern rule to create PDF and MIDI files from a LY input file.
-# The .pdf output files are put into the `PDF' subdirectory, and the
-# .midi files go into the `MIDI' subdirectory.
-%.pdf %.midi: %.ly
-        $(LILY_CMD) $<; \           # this line begins with a tab
-        if test -f "$*.pdf"; then \
-            mv "$*.pdf" PDF/; \
-        fi; \
-        if test -f "$*.midi"; then \
-            mv "$*.midi" MIDI/; \
-        fi
-
-notes = \
-  cello.ily \
-  horn.ily \
-  oboe.ily \
-  viola.ily \
-  violinOne.ily \
-  violinTwo.ily
-
-# The dependencies of the movements.
-$(piece)I.pdf: $(piece)I.ly $(notes)
-$(piece)II.pdf: $(piece)II.ly $(notes)
-$(piece)III.pdf: $(piece)III.ly $(notes)
-$(piece)IV.pdf: $(piece)IV.ly $(notes)
-
-# The dependencies of the full score.
-$(piece).pdf: $(piece).ly $(notes)
-
-# The dependencies of the parts.
-$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
-$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
-$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
-$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
-$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
-$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
-
-# Type `make score' to generate the full score of all four
-# movements as one file.
-.PHONY: score
-score: $(piece).pdf
-
-# Type `make parts' to generate all parts.
-# Type `make foo.pdf' to generate the part for instrument `foo'.
-# Example: `make symphony-cello.pdf'.
-.PHONY: parts
-parts: $(piece)-cello.pdf \
-       $(piece)-violinOne.pdf \
-       $(piece)-violinTwo.pdf \
-       $(piece)-viola.pdf \
-       $(piece)-oboes.pdf \
-       $(piece)-horn.pdf
-
-# Type `make movements' to generate files for the
-# four movements separately.
-.PHONY: movements
-movements: $(piece)I.pdf \
-           $(piece)II.pdf \
-           $(piece)III.pdf \
-           $(piece)IV.pdf
-
-all: score parts movements
-
-archive:
-        tar -cvvf stamitz.tar \       # this line begins with a tab
-        --exclude=*pdf --exclude=*~ \
-        --exclude=*midi --exclude=*.tar \
-        ../Stamitz/*
-@end example
-
-
-There are special complications on the Windows platform. After
-downloading and installing GNU Make for Windows, you must set the
-correct path in the system's environment variables so that the
-DOS shell can find the Make program. To do this, right-click on
-"My Computer," then choose @code{Properties} and
-@code{Advanced}. Click @code{Environment Variables}, and then
-in the @code{System Variables} pane, highlight @code{Path}, click
-@code{edit}, and add the path to the GNU Make executable file, which
- will look something like this:
-
-@example
-C:\Program Files\GnuWin32\bin
-@end example
-
-The makefile itself has to be altered to handle different shell
-commands and to deal with spaces that are present
-in some default system directories. The @code{archive} target
-is eliminated since Windows does not have the @code{tar} command,
-and Windows also has a different default extension for midi files.
-
-
-@example
-## WINDOWS VERSION
-##
-piece = symphony
-LILY_CMD = lilypond -ddelete-intermediate-files \
-                    -dno-point-and-click \
-                    -djob-count=$(NUMBER_OF_PROCESSORS)
-
-#get the 8.3 name of CURDIR (workaround for spaces in PATH)
-workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
-          do @@echo %%~sb)
-
-.SUFFIXES: .ly .ily .pdf .mid
-
-VPATH = \
-  $(workdir)/Scores \
-  $(workdir)/PDF \
-  $(workdir)/Parts \
-  $(workdir)/Notes
-
-%.pdf %.mid: %.ly
-        $(LILY_CMD) $<      # this line begins with a tab
-        if exist "$*.pdf"  move /Y "$*.pdf"  PDF/ # begin with tab
-        if exist "$*.mid" move /Y "$*.mid" MIDI/  # begin with tab
-
-notes = \
-  cello.ily \
-  figures.ily \
-  horn.ily \
-  oboe.ily \
-  trioString.ily \
-  viola.ily \
-  violinOne.ily \
-  violinTwo.ily
-
-$(piece)I.pdf: $(piece)I.ly $(notes)
-$(piece)II.pdf: $(piece)II.ly $(notes)
-$(piece)III.pdf: $(piece)III.ly $(notes)
-$(piece)IV.pdf: $(piece)IV.ly $(notes)
-
-$(piece).pdf: $(piece).ly $(notes)
-
-$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
-$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
-$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
-$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
-$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
-$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
-
-.PHONY: score
-score: $(piece).pdf
-
-.PHONY: parts
-parts: $(piece)-cello.pdf \
-       $(piece)-violinOne.pdf \
-       $(piece)-violinTwo.pdf \
-       $(piece)-viola.pdf \
-       $(piece)-oboes.pdf \
-       $(piece)-horn.pdf
-
-.PHONY: movements
-movements: $(piece)I.pdf \
-           $(piece)II.pdf \
-           $(piece)III.pdf \
-           $(piece)IV.pdf
-
-all: score parts movements
-@end example
-
-
-The next Makefile is for a @command{lilypond-book} document done in
-LaTeX. This project has an index, which requires that the
-@command{latex} command be run twice to update links. Output files are
-all stored in the @code{out} directory for .pdf output and in the
-@code{htmlout} directory for the html output.
-
-@example
-SHELL=/bin/sh
-FILE=myproject
-OUTDIR=out
-WEBDIR=htmlout
-VIEWER=acroread
-BROWSER=firefox
-LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
-LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
-PDF=cd $(OUTDIR) && pdflatex $(FILE)
-HTML=cd $(WEBDIR) && latex2html $(FILE)
-INDEX=cd $(OUTDIR) && makeindex $(FILE)
-PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
-
-all: pdf web keep
-
-pdf:
-        $(LILYBOOK_PDF)  # begin with tab
-        $(PDF)           # begin with tab
-        $(INDEX)         # begin with tab
-        $(PDF)           # begin with tab
-        $(PREVIEW)       # begin with tab
-
-web:
-        $(LILYBOOK_HTML) # begin with tab
-        $(HTML)          # begin with tab
-        cp -R $(WEBDIR)/$(FILE)/ ./  # begin with tab
-        $(BROWSER) $(FILE)/$(FILE).html &  # begin with tab
-
-keep: pdf
-        cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf  # begin with tab
-
-clean:
-        rm -rf $(OUTDIR) # begin with tab
-
-web-clean:
-        rm -rf $(WEBDIR) # begin with tab
-
-archive:
-        tar -cvvf myproject.tar \ # begin this line with tab
-        --exclude=out/* \
-        --exclude=htmlout/* \
-        --exclude=myproject/* \
-        --exclude=*midi \
-        --exclude=*pdf \
-        --exclude=*~ \
-        ../MyProject/*
-@end example
-
-TODO: make this thing work on Windows
-
-The previous makefile does not work on Windows. An alternative
-for Windows users would be to create a simple batch file
-containing the build commands. This will not
-keep track of dependencies the way a makefile does, but it at
-least reduces the build process to a single command. Save the
-following code as @command{build.bat} or @command{build.cmd}.
-The batch file can be run at the DOS prompt or by simply
-double-clicking its icon.
-
-@example
-lilypond-book --output=out --pdf myproject.lytex
-cd out
-pdflatex myproject
-makeindex myproject
-pdflatex myproject
-cd ..
-copy out\myproject.pdf MyProject.pdf
-@end example
-
-
-@seealso
-Application Usage:
-FIXME
-@c @rprogram{Setup for MacOS X},
-@rprogram{Command-line usage},
-@rprogram{lilypond-book}
index ec1954e12ade0315dc26f72310008ce25cd9cbe2..62ffc2b30b2c9cb798b25870ce41d8db472ecf09 100644 (file)
@@ -5,98 +5,37 @@
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
+
 @setfilename lilypond-contributor.info
-@settitle GNU LilyPond Contributor's Guide
+@settitle LilyPond Contributor's Guide
 @documentencoding UTF-8
 @documentlanguage en
 
+@macro manualIntro
+This manual documents contributing to LilyPond version
+@version{}.  It discusses technical issues and policies that
+contributors should follow.
+@end macro
+
 @include macros.itexi
 
-@afourpaper
 
-@ifnottex
-@node Top
-@top GNU LilyPond --- Contributor's Guide
-@chapheading The music typesetter
-@end ifnottex
+@c don't remove this comment.
+@ignore
+@omfcreator LilyPond Development Team
+@omfdescription Contributor's Guide of the LilyPond music engraving system
+@omftype program usage
+@omfcategory Applications|Publishing
+@omflanguage English
+@end ignore
 
 
-@ifhtml
-@ifclear bigpage
-This document is also available as a
-@uref{source/Documentation/contributor.pdf,PDF} and as
-@c FIXME: update @uref{} stuff.
-@uref{source/Documentation/contributor-big-page.html,one big page}.
-@end ifclear
-@ifset bigpage
-This document is also available as a
-@uref{source/Documentation/devel/contributor.pdf,PDF} and as a
-@uref{source/Documentation/devel/contributor/index.html,HTML indexed multiple pages}.
-@end ifset
-@end ifhtml
-
-
-@iftex
-@exampleindent 0
-@finalout
-
-@titlepage
-@title LilyPond
-@subtitle The music typesetter
-@titlefont{Contributor's Guide}
-@author The LilyPond development team
-
-Copyright @copyright{} 1999--2008 by the authors
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-
-@vskip 20pt
-
-For LilyPond version
-@end titlepage
-@end iftex
-
-@copying
-Copyright @copyright{} 1999--2008 by the authors
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end copying
+@lilyTitlePage{Contributor's Guide}
 
-@ifnottex
-This file documents contributing to GNU LilyPond.
-
-Copyright 1999--2008 by the authors
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end ifnottex
 
+@c TOC -- non-tex
 @ifnottex
 
-More information can be found at
-@uref{http://@/www@/.lilypond@/.org/}.  The website contains
-on-line copies of this and other documentation.
-
 @menu
 * Starting with git::
 * Compiling LilyPond::
@@ -107,11 +46,18 @@ on-line copies of this and other documentation.
 * Regression tests::
 * Programming work::
 * Release work::
+
+Appendices
+
+* GNU Free Documentation License:: License of this document.
 @end menu
+
+@docMain
 @end ifnottex
 
 @contents
 
+
 @include contributor/git-starting.itexi
 @include contributor/compiling.itexi
 @include contributor/doc-work.itexi
@@ -122,5 +68,7 @@ on-line copies of this and other documentation.
 @include contributor/programming-work.itexi
 @include contributor/release-work.itexi
 
+@include fdl.itexi
+
 @bye
 
index 1c9cebd37aa4e5019bfe27be248d312f47fc36a7..98ac3043ef920bc8072519c48281ece54f8b7ab2 100644 (file)
@@ -185,6 +185,8 @@ points into your home directory, e.g.
 ./configure --prefix=$HOME/usr
 @end example
 
+If you encounter any problems, please see @ref{Problems}.
+
 
 @unnumberedsubsubsec Compiling for multiple platforms
 
@@ -395,7 +397,7 @@ export LD_LIBRARY_PATH=/usr/lib
 exec /usr/bin/pngtopnm "$@"
 @end verbatim
 
-On MacOS@tie{}X, I use this:
+On MacOS X, I use this:
 
 @verbatim
 export DYLD_LIBRARY_PATH=/sw/lib
@@ -453,8 +455,8 @@ For checking the coverage of the test suite, do the following
 @node Problems
 @subsection Problems
 
-For help and questions use @email{lilypond-user@@gnu.org}.  Send bug
-reports to @email{bug-lilypond@@gnu.org}.
+For help and questions use @email{lilypond-user@@gnu.org}.  Send
+bug reports to @email{bug-lilypond@@gnu.org}.
 
 Bugs that are not fault of LilyPond are documented here.
 
@@ -473,6 +475,59 @@ $ make
 @end example
 
 
+@unnumberedsubsubsec Compiling on MacOS@tie{}X
+
+Here are special instructions for compiling under MacOS@tie{}X.
+These instructions assume that dependencies are installed using
+@uref{http://www.macports.org/, MacPorts.} The instructions have
+been tested using OS X 10.5 (Leopard).
+
+First, install the relevant dependencies using MacPorts.
+
+Next, add the following to your relevant shell initialization
+files. This is @code{~/.profile} by default. You should create
+this file if it does not exist.
+
+@example
+export PATH=/opt/local/bin:/opt/local/sbin:$PATH
+export DYLD_LIBRARY_PATH=/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources:\
+/opt/local/lib:$DYLD_LIBRARY_PATH
+@end example
+
+Now you must edit the generated @code{config.make} file.  Change
+
+@example
+FLEXLEXER_FILE = /usr/include/FlexLexer.h
+@end example
+
+@noindent
+to:
+
+@example
+FLEXLEXER_FILE = /opt/local/include/FlexLexer.h
+@end example
+
+At this point, you should verify that you have the appropriate
+fonts installed with your ghostscript installation. Check @code{ls
+/opt/local/share/ghostscript/fonts} for: 'c0590*' files (.pfb,
+.pfb and .afm).  If you don't have them, run the following
+commands to grab them from the ghostscript SVN server and install
+them in the appropriate location:
+
+@example
+svn export http://svn.ghostscript.com/ghostscript/tags/urw-fonts-1.0.7pre44/
+sudo mv urw-fonts-1.0.7pre44/* /opt/local/share/ghostscript/fonts/
+rm -rf urw-fonts-1.07pre44
+@end example
+
+Now run the @code{./configure} script. To avoid complications with
+automatic font detection, add
+
+@example
+--with-ncsb-dir=/opt/local/share/ghostscript/fonts
+@end example
+
+
 @unnumberedsubsubsec Solaris
 
 Solaris7, ./configure
@@ -508,7 +563,7 @@ for your hierarchy.)
 
 @unnumberedsubsubsec International fonts
 
-On MacOS@tie{}X, all fonts are installed by default.  However, finding all
+On Mac OS X, all fonts are installed by default.  However, finding all
 system fonts requires a bit of configuration; see
 @uref{http://lists.gnu.org/archive/html/lilypond-user/2007-03/msg00472.html,
 this post} on the @code{lilypond-user} mailing list.
@@ -531,4 +586,3 @@ Debian GNU/Linux
         ttf-kochi-gothic ttf-kochi-mincho \
         xfonts-bolkhov-75dpi xfonts-cronyx-100dpi xfonts-cronyx-75dpi
 @end verbatim
-
index e485e274bd04e6a32c7f3ecf42f0804e4fe3b3e5..0a2c0923c12a30272622ebdf017c13be071ed653 100644 (file)
@@ -1044,7 +1044,6 @@ would be ideal if every significant known issue had a workaround to avoid
 the difficulty.
 
 @seealso
-
 @ref{Adding and editing snippets}.
 
 
@@ -1427,7 +1426,6 @@ up-to-dateness percentages for each translated file, and update word
 counts of documentation files in this Guide.
 
 @seealso
-
 @ref{Maintaining without updating translations}.
 
 
@@ -1512,7 +1510,6 @@ Use this command with caution, and keep in mind it will not be really
 useful until translations are stabilized after the end of GDP and GOP.
 
 @seealso
-
 @ref{Maintaining without updating translations},
 @ref{Adding and editing snippets}.
 
index f77504bafe5d3da04cd1f48fad23e863658065a8..0040bece47f39e2442bc0d1694a11224eab03e76 100644 (file)
@@ -5,11 +5,18 @@
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
+
 @setfilename lilypond-essay.info
-@settitle GNU LilyPond Notation Reference
+@settitle LilyPond Notation Reference
 @documentencoding UTF-8
 @documentlanguage en
 
+@macro manualIntro
+This essay discusses automatic music engraving functions within
+LilyPond version @version{}.
+@end macro
+
+@c TODO: we shouldn't need this!
 @set web
 @include macros.itexi
 
 @omflanguage English
 @end ignore
 
-@ifnottex
-@node Top
-@top Essay on automated music engraving
-@end ifnottex
 
+@lilyTitlePage{Essay on automated music engraving}
 
-@ifhtml
-@ifclear bigpage
-This document is also available as a
-@uref{source/Documentation/essay.pdf,PDF} and as
-@uref{source/Documentation/essay-big-page.html,one big page}.
-@end ifclear
-@ifset bigpage
-This document is also available as a
-@uref{source/Documentation/essay.pdf,PDF} and as a
-@uref{source/Documentation/essay/index.html,HTML indexed multiple pages}.
-@end ifset
-@end ifhtml
-
-@finalout
-
-@titlepage
-@title LilyPond
-@subtitle The music typesetter
-@titlefont{Essay on automated music engraving}
-@author Han-Wen Nienhuys and Jan Nieuwenhuizen
-
-Copyright @copyright{} ???? by the authors
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end titlepage
-
-@copying
-Copyright @copyright{} ???? by the authors
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end copying
 
 @ifnottex
-Copyright ???? by the authors
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end ifnottex
 
 @menu
 * Music engraving::
@@ -96,6 +44,10 @@ Free Documentation License''.
 * LilyPond index::
 @end menu
 
+@docMain
+@end ifnottex
+
+
 @contents
 
 @include essay/engraving.itely
index ace6cc1c08f87fd97d1c62e6c4cc121b47cdde95..d75e546cff38317eff3f8fe5458a14238f02fea2 100644 (file)
@@ -77,14 +77,15 @@ several of those aspects that we have tried to imitate in LilyPond.
 @node Music Fonts
 @unnumberedsubsec Music Fonts
 
-The images below illustrate the difference between traditional engraving
-and typical computer output. The left picture shows a scan of a flat
-symbol from a hand-engraved Bärenreiter edition, while the right picture
-depicts a symbol from an edition of the same music published in 2000.
-Although both images are printed in the shame shade of ink, the earlier
-version looks darker: the staff lines are heavier, and the Bärenreiter
-flat has a bold, almost voluptuous rounded look. The right scan, on the
-other hand, has thinner lines and a straight layout with sharp corners.
+The images below illustrate some differences between traditional
+engraving and typical computer output. The left picture shows a scan of
+a flat symbol from a hand-engraved Bärenreiter edition, while the right
+picture depicts a symbol from an edition of the same music published in
+2000. Although both images are printed in the shame shade of ink, the
+earlier version looks darker: the staff lines are heavier, and the
+Bärenreiter flat has a bold, almost voluptuous rounded look. The right
+scan, on the other hand, has thinner lines and a straight layout with
+sharp corners.
 
 @multitable @columnfractions .25 .25 .25 .25
 @item @tab
@@ -269,27 +270,60 @@ more space is needed to keep it from feeling crowded:
 @node Ledger Lines
 @unnumberedsubsec Ledger Lines
 
-@ifnotinfo
+@cindex ledger lines
+@cindex collisions
+
+Ledger lines present a typographical challenge: they make it more
+difficult to space musical symbols close together and they must be clear
+enough to identify the pitch at a glance. In the example below, we see
+that ledger lines should be thicker than normal staff lines and that an
+expert engraver will shorten a ledger line to allow closer spacing with
+accidentals. We have included this feature in LilyPond's engraving.
+
+@multitable @columnfractions .25 .25 .25 .25
+@item @tab
+
 @iftex
-@image{pictures/baer-ledger,4cm}
+@image{pictures/baer-ledger,3cm}
 @end iftex
 @ifnottex
-@image{pictures/baer-ledger,,,png}
+@sourceimage{baer-ledger,,,png}
 @end ifnottex
-@end ifnotinfo
-@ifinfo
-@image{lilypond/pictures/baer-ledger,,,,png}
-@end ifinfo
+
+@tab
+
+@iftex
+@image{pictures/lily-ledger,3cm}
+@end iftex
+@ifnottex
+@sourceimage{lily-ledger,,,png}
+@end ifnottex
+
+@end multitable
 
 @node Slurs
 @unnumberedsubsec Slurs
 
+slur-tilt example
+
 @node Why work so hard?
 @unnumberedsubsec Why work so hard?
 
 Musicians are usually more absorbed with performing than with
 studying the looks of a piece of music, so nitpicking
-typographical details may seem academic.  But it is not.  In
+typographical details may seem academic.  But it is not.
+
+Sheet music is performance material: everything is done to aid the
+musician in letting him perform better. Music often is far away from its
+reader--it might be on a music stand. To make it clearly readable,
+traditionally printed sheet music always uses bold symbols, on heavy
+staff lines, and is printed on large sheets of paper. This "strong" look
+is also present in the horizontal spacing. To minimize the number of
+page breaks, (hand-engraved) sheet music is spaced very tightly. Yet, by
+a careful distribution of white space, the feeling of balance is
+retained, and a clutter of symbols is avoided. (1.8)
+
+In
 larger pieces with monotonous rhythms, spacing corrections lead to
 subtle variations in the layout of every line, giving each one a
 distinct visual signature.  Without this signature all lines would
@@ -342,31 +376,21 @@ to see and love to play from.
 
 Bärenreiter:
 
-@ifnotinfo
 @iftex
-@image{pictures/baer-sarabande,16cm}
+@image{pictures/baer-sarabande-hires,16cm}
 @end iftex
 @ifnottex
-@image{pictures/baer-sarabande,,,png}
+@sourceimage{baer-sarabande,,,png}
 @end ifnottex
-@end ifnotinfo
-@ifinfo
-@image{lilypond/pictures/baer-sarabande,,,,png}
-@end ifinfo
 
 LilyPond 1.4:
 
-@ifnotinfo
 @iftex
 @image{pictures/lily14-sarabande,16cm}
 @end iftex
 @ifnottex
-@image{pictures/lily14-sarabande,,,png}
+@sourceimage{lily14-sarabande,,,png}
 @end ifnottex
-@end ifnotinfo
-@ifinfo
-@image{lilypond/pictures/lily14-sarabande,,,,png}
-@end ifinfo
 
 LilyPond @version{}:
 
index ea18b72982149efa1bbe76cf10448ed2fab2373f..e7fba07a2f3c7f1b84d8c400da3c3d5aa2b9dd71 100644 (file)
@@ -417,6 +417,18 @@ urge you to use the stable @ref{Download}, and read the stable
 
 @divEnd
 
+@divClass{column-center-top}
+@subheading Release numbers
+
+There are two sets of releases for LilyPond: stable releases, and
+unstable development releases.  Stable versions have an
+even-numbered @q{minor} version number (e.g., 2.8, 2.10, 2.12).
+Development versions have an odd-numbered @q{minor} version number
+(e.g., 2.7, 2.9, 2.11).
+
+@divEnd
+
+
 @divClass{column-left-bottom}
 @subheading Download
 
@@ -496,7 +508,7 @@ Internals:
 @divEnd
 
 
-@divClass{column-right-bottom}
+@divClass{column-right-top}
 @subheading Contributors' Guide
 
 LilyPond development is a fairly complicated matter.  LilyPond is
@@ -525,10 +537,29 @@ GNU info format for documentation.  FIXME, link broken.
 
 @end itemize
 @divEnd
-
 @divEnd
 
+@divClass{column-right-bottom}
+@subheading Regression tests
 
+@divClass{keep-bullets}
+@itemize
+
+@item @uref{../../input/regression/collated-files.html, Regression tests}:
+This releases' tests.  (also in
+@uref{../../input/regression/collated-files.pdf, pdf})
+
+@item @uref{../../input/regression/musicxml/collated-files.html,
+MusicXML Regression tests}:
+This releases' MusicXML tests.  (also in
+@uref{../../input/regression/musicxml/collated-files.pdf, pdf})
+
+@item @uref{http://lilypond.org/test, Archive of regression tests}:
+Comparisons beteween versions.
+
+@end itemize
+@divEnd
+@divEnd
 
 @node Authors
 @unnumberedsec Authors 
index 47d546bc15840d80044195ad510a0994ddb003b9..2cb00eaa6b4ca4985e431c063538e31a489d5232 100644 (file)
@@ -495,7 +495,7 @@ site}.
 @divClass{column-right-bottom}
 @subheading Compiling instructions
 
-Instructions are listed in @@ref@{FIXME development-install@}.
+Instructions are listed in @rcontrib{Compiling LilyPond}.
 
 @divEnd
 
index 2d627b6f7e5c75a1e2b99bac580dda15c707832a..2a3610195c54c6db902f2efddbbb8db813e07edd 100644 (file)
@@ -567,12 +567,11 @@ look half as sharp as mine!}
 @imageFloat{orm-finnendahl,jpg, left}
 @subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professor of Composition, Musikhochschule Freiburg
 
-@qq{Although I don't know [LilyPond] very well yet, I'm *very*
-impressed. I used the program to input a motet of Josquin Desprez
-in mensural notation and there's no doubt that lilypond outscores
-all other notation programs easily concerning speed, ease of use
-and look!}
-@divEnd
+@qq{Although I don't know [LilyPond] very well yet, I'm
+@strong{*very} impressed. I used the program to input a motet of
+Josquin Desprez in mensural notation and there's no doubt that
+lilypond outscores all other notation programs easily concerning
+speed, ease of use and look!} @divEnd
 
 
 @divClass{testimonial-item}
@@ -596,9 +595,9 @@ work. I've never seen anything approaching the output that I get
 from Lilypond -- I'm totally confident that my music publishing
 needs will be fulfilled beyond my expectations using this great
 application. [..] basically untweaked Lilypond output [..] looks
-better than most recent "professional" publications I've compared
+better than most recent @q{professional} publications I've compared
 it to (q.v., just about any Warner Bros. score, and even many of
-the most recent by "the old houses"). [..]}
+the most recent by @q{the old houses}). [..]}
 
 @qq{Beat that, Finale/Sibelius/Igor/whatever!!!}
 @divEnd
@@ -827,8 +826,15 @@ FIXME: insert text and a graphic
 @sourceimage{logo-macosx,,,}
 @sourceimage{logo-windows,,,}
 
+Created as a plugin for the
+@uref{http://@/www@/.jedit@/.org@/,jEdit} text editor,
+LilyPondTool is one of the most feature-rich text-based tool for
+editing LilyPond scores.  Its features include a Document Wizard
+with lyrics support to set up documents easier, and embedded PDF
+viewer with advanced point-and-click support.  For screenshots,
+demos, and installation instructions, visit
+@uref{http://lilypondtool@/.organum@/.hu}
 
-FIXME: insert text and a graphic
 
 @divEnd
 
@@ -850,6 +856,52 @@ FIXME: insert text and a graphic
 
 FIXME: insert text and a graphic(s)
 
+@subsubheading TexShop
+
+@sourceimage{logo-macosx,,,}
+
+The
+@uref{http://@/www@/.uoregon@/.edu/~koch/texshop/index@/.html,TexShop}
+editor for MacOS@tie{}X can be extended to run LilyPond,
+lilypond-book and convert-ly from within the editor, using the
+extensions available at
+@uref{http://@/www@/.dimi@/.uniud@/.it/vitacolo/freesoftware@/.html}.
+
+
+@ignore
+TODO: ask somebody to sponsor/check these.  -gp
+
+@subsubheading TextMate
+
+@sourceimage{logo-macosx,,,}
+
+There is a LilyPond bundle for TextMate.  It may be installed by
+running:
+
+@example
+mkdir -p /Library/Application\ Support/TextMate/Bundles
+cd /Library/Application\ Support/TextMate/Bundles
+svn co http://macromates.com/svn/Bundles/trunk/Bundles/Lilypond.tmbundle/
+@end example
+@end ignore
+
+@subsubheading LilyKDE
+
+@sourceimage{logo-linux,,,}
+@sourceimage{logo-freebsd,,,}
+
+@uref{http://lilykde.googlecode.com/,LilyKDE} is a plugin for
+KDE's text editor @uref{http://kate-editor.org/,Kate}.  It has a
+powerful Score Wizard to quickly setup a LilyPond document and an
+embedded PDF viewer.
+
+LilyKDE can use @uref{http://www.volny.cz/smilauer/rumor/,Rumor},
+so music can entered by playing on a MIDI keyboard.
+
+Other features are lyric hyphenation and running LilyPond on
+multiple files at once from within the KDE file manager.
+
+
 @divEnd
 
 
index 3e3f985cb04908b322e710bcdb8464b2eeb6cb14..d1b8be02f5838a62a0c0ab72bc2361a602d8bba3 100644 (file)
@@ -597,7 +597,14 @@ GNU info format for documentation.  FIXME, link broken.
 @node Translated
 @unnumberedsec Translated
 
-blah
+@divClass{column-center-bottom}
+@subheading Translation status
+
+TODO: clean up / prettify
+
+@uref{../translations.html}.
+
+@divEnd
 
 
 @node All
index a9eb18f26fc496f68067cf777bb286fb1f59dc7a..22fe6dd7473541f92397a680ed85768154acc5ea 100644 (file)
@@ -5,17 +5,19 @@
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
+
 @setfilename lilypond-learning.info
-@settitle GNU LilyPond Learning Manual
+@settitle LilyPond Learning Manual
 @documentencoding UTF-8
 @documentlanguage en
 
+@macro manualIntro
+This file provides an introduction to LilyPond version
+@version{}.
+@end macro
+
 @include macros.itexi
-@c  This produces the unified index
-@syncodeindex fn cp
-@syncodeindex vr cp
 
-@afourpaper
 
 @c don't remove this comment.
 @ignore
 @end ignore
 
 
-@copying
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-2006, 2007, 2008, 2009 by the authors.
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end copying
-
-@macro introText
-@cartouche
-This file provides an introduction to GNU LilyPond version
-@version{}.
-
-For more information about how this fits with the other
-documentation, or to read this manual in other formats, see
-@rgeneral{Manuals}.
-@end cartouche
-@end macro
-
-
-@c TITLE PAGE
-@ifnottex
-@node Top
-@top GNU LilyPond --- Learning Manual
-@end ifnottex
-
-@finalout
-
-@titlepage
-@title LilyPond
-@subtitle The music typesetter
-@titlefont{Learning Manual}
-@author The LilyPond development team
-
-@vskip 100pt
-
-@introText{}
-
-@vskip 0pt plus 1filll
-@c @vskip 20pt
-
-@insertcopying{}
-
-For LilyPond version @version{}
-@end titlepage
-
+@lilyTitlePage{Learning Manual}
 
 @c TOC -- non-tex
-
 @ifnottex
-@introText{}
 
 @menu
 * Introduction::                   Basics of typesetting with LilyPond.
@@ -99,22 +48,7 @@ Appendices
 * LilyPond index::
 @end menu
 
-
-@ignore
-@ifhtml
-@ifclear bigpage
-This document is also available as a
-@uref{source/Documentation/learning.pdf,PDF} and as
-@uref{source/Documentation/learning-big-page.html,one big page}.
-@end ifclear
-@ifset bigpage
-This document is also available as a
-@uref{source/Documentation/learning.pdf,PDF} and as
-@uref{source/Documentation/learning/index.html,HTML indexed multiple pages}.
-@end ifset
-@end ifhtml
-@end ignore
-
+@docMain
 @end ifnottex
 
 
index 8097e0bb522e060776296ff8d88b9075aaba1355..d0e7fce17e3f6aab3b87b426ac9fe8c3163309b1 100644 (file)
@@ -2594,24 +2594,10 @@ objects outside it are moved.
 
 The @code{right-padding} property affects the spacing between the
 accidental and the note to which it applies.  It is not often
-required, but the following example shows one situation where it
-is needed.  Suppose we wish to show a chord containing both
-a B-natural and a B-flat.  To avoid ambiguity we would like to
-precede the notes with both a natural and a flat sign.  Here
-are a few attempts to do this:
-
-@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-<b bes>
-<b! bes>
-<b? bes>
-@end lilypond
-
-None work, with the second two showing bad collisions between
-the two signs.
-
-One way of achieving this is to override the accidental stencil
-with a markup containing the natural and flat symbols in the
-order we would like, like this:
+required, but the default spacing may be wrong for certain special
+accidental glyphs or combination of glyphs used in some microtonal
+music.  These have to be entered by overriding the accidental
+stencil with a markup containing the desired symbol(s), like this:
 
 @cindex Accidental, example of overriding
 @cindex text property, example
@@ -2620,13 +2606,20 @@ order we would like, like this:
 @cindex right-padding property, example
 
 @lilypond[quote,ragged-right,verbatim]
-naturalplusflat = \markup { \natural \flat }
+sesquisharp = \markup { \sesquisharp }
 \relative c'' {
+  c
+  % This prints a sesquisharp but the spacing is too small
+  \once \override Accidental
+    #'stencil = #ly:text-interface::print
+  \once \override Accidental #'text = #sesquisharp
+  cis c
+  % This improves the spacing
+  \once \override Score.AccidentalPlacement #'right-padding = #0.6
   \once \override Accidental
     #'stencil = #ly:text-interface::print
-  \once \override Accidental #'text = #naturalplusflat
-  \once \override Score.AccidentalPlacement #'right-padding = #1.5
-  <b bes>
+  \once \override Accidental #'text = #sesquisharp
+  cis
 }
 @end lilypond
 
@@ -2634,9 +2627,9 @@ naturalplusflat = \markup { \natural \flat }
 This necessarily uses an override for the accidental stencil which
 will not be covered until later.  The stencil type must be a
 procedure, here changed to print the contents of the @code{text}
-property of @code{Accidental}, which itself is set to be a natural
-sign followed by a flat sign.  These are then moved further away
-from the note head by overriding @code{right-padding}.
+property of @code{Accidental}, which itself is set to be a
+sesquisharp sign.  This sign is then moved further away from the
+note head by overriding @code{right-padding}.
 
 @noindent
 
index 503e517d7bd7ae57eaca0cf424c7b969acebd611..f9077706e1c280c6c1f8a11025c43cb3a08564c6 100644 (file)
 @end ifnothtml
 
 
+@macro docMain
+@cartouche
+For more information about how this manual fits with the other
+documentation, or to read this manual in other formats, see
+@rgeneral{Manuals}.
+
+If you are missing any manuals, the complete documentation can be
+found at @w{@uref{http://@/www@/.lilypond@/.org/}}.
+@end cartouche
+@end macro
+
+
+@macro lilyTitlePage{TITLE}
+@c  This produces the unified index
+@syncodeindex fn cp
+@syncodeindex vr cp
+
+@afourpaper
+
+@copying
+Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006, 2007, 2008, 2009 by the authors.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end quotation
+@end copying
+
+
+@c TITLE PAGE
+@ifnottex
+@node Top
+@top LilyPond --- \TITLE\
+
+@cartouche
+@manualIntro{}
+@end cartouche
+@end ifnottex
+
+@finalout
+
+@titlepage
+@title LilyPond
+@subtitle The music typesetter
+@titlefont{\TITLE\}
+@author The LilyPond development team
+
+@vskip 60pt
+
+@cartouche
+@manualIntro{}
+@end cartouche
+
+@vskip 40pt
+
+@docMain{}
+
+@vskip 0pt plus 1filll
+
+@insertcopying{}
+
+For LilyPond version @version{}
+@end titlepage
+
+@end macro
+
 
 @c   ***** Headings in a doc subsection *****
 
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
 @c Don't insert an empty line after @predefined!  Right now
 @c it doesn't matter, but a future implementation will probably
 @c add some code which needs this restriction.
 @subsubheading Predefined commands
 @end macro
 
-@c The next macro is a dummy currently since texinfo doesn't
-@c provide a real ragged-right environment yet.
-@c
 @c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
-@c the macro must not be empty.
+@c the next macro must not be empty.
 
 @macro endpredefined
 @c
 @c     @rprogram
 @c     @ruser
 @c     @rchanges
+@c     @rcontrib
 @c
 @c  All these also have a @...named version which allows to specify the
 @c  displayed text for the reference as second argument.
 @ref{\TEXT\,,\DISPLAY\,changes-big-page,Changes}
 @end macro
 
+@macro rcontrib{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,contributor-big-page,Contributor's Guide}
+@end macro
+
+@macro rcontribnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,contributor-big-page,Contributor's Guide}
+@end macro
+
 @macro rgeneral{TEXT}
 @vindex \TEXT\
 @ref{\TEXT\,,,general-big-page,General Information}
 @ref{\TEXT\,,\DISPLAY\,changes,Changes}
 @end macro
 
+@macro rcontrib{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,contributor,Contributor's Guide}
+@end macro
+
+@macro rcontribnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,contributor,Contributor's Guide}
+@end macro
+
 @macro rgeneral{TEXT}
 @vindex \TEXT\
 @ref{\TEXT\,,,general,General Information}
 @ref{\TEXT\,,\DISPLAY\,lilypond-changes,Changes}
 @end macro
 
+@macro rcontrib{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,lilypond-contributor,Contributor's Guide}
+@end macro
+
+@macro rcontribnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,lilypond-contributor,Contributor's Guide}
+@end macro
+
 @macro rgeneral{TEXT}
 @vindex \TEXT\
 @ref{\TEXT\,,,lilypond-general,General Information}
 @ref{\TEXT\,,\DISPLAY\,changes,Changes}
 @end macro
 
+@macro rcontrib{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,contributor,Contributor's Guide}
+@end macro
+
+@macro rcontribnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,contributor,Contributor's Guide}
+@end macro
+
 @macro rgeneral{TEXT}
 @lilyvindex{\TEXT\}
 @ref{\TEXT\,,,general,General Information}
index c3dd9b066d67a896be76bc06b3541c44b4982d7f..bc8d09ec9dcc590af4ef522ec526e3cc23a5e66c 100644 (file)
@@ -178,7 +178,7 @@ Copyright 1999--2009 by the authors
 @c @evenheading @thispage @| @|
 @c @oddheading @| @| @thispage @|
 
-This is the Music Glossary (MG) for GNU LilyPond version @version{}.
+This is the Music Glossary (MG) for LilyPond version @version{}.
 For more information about how this fits with the other
 documentation, see 
 FIXME FIXME FIXME
@@ -652,7 +652,7 @@ No cross-references.
 @node acciaccatura
 @section acciaccatura
 
-ES: ?,
+ES: mordente de una nota,
 I: acciaccatura,
 F: acciaccatura, appoggiature brève,
 D: ?,
@@ -736,7 +736,7 @@ An accidental alters a note by:
 @node adagio
 @section adagio
 
-ES: adagio,
+ES: adagio, lento,
 I: adagio,
 F: adagio, lent,
 D: Adagio, Langsam,
@@ -764,7 +764,7 @@ of sonatas, symphonies, etc.
 @node al niente
 @section al niente
 
-ES: ?,
+ES: al niente,
 I: al niente,
 F: al niente, en mourant,
 D: ?,
@@ -807,7 +807,7 @@ Since one does not crescendo @emph{to} nothing, it is not correct to use
 @node alla breve
 @section alla breve
 
-ES: ?,
+ES: alla breve,
 I: ?,
 F: alla breve, à la brève,
 D: ?,
@@ -838,7 +838,7 @@ is needed.
 @node allegro
 @section allegro
 
-ES: allegro,
+ES: allegro, rápido,
 I: allegro,
 F: allegro, gaiement,
 D: Allegro, Schnell, Fröhlich, Lustig,
@@ -1356,7 +1356,7 @@ A clef setting with middle C on the first top ledger line.
 @node beam
 @section beam
 
-ES: barra
+ES: barra (de corcheas),
 I: coda,
 F: ligature, barre (de croches),
 D: Balken,
@@ -2245,7 +2245,7 @@ A time signature that additively combines two or more unequal meters, e.g.,
 @node concert pitch
 @section concert pitch
 
-ES: en Do, afinación de concierto,
+ES: en Do, tono de concierto,
 I: intonazione reale,
 F: tonalité de concert, en ut,
 D: ?,
@@ -2588,7 +2588,7 @@ No cross-references.
 @node dal niente
 @section dal niente
 
-ES: ?,
+ES: dal niente, de la nada,
 I: dal niente,
 F: partant de rien,
 D: ?,
@@ -2891,7 +2891,7 @@ FI: diminuendo, hiljentyen.
 @node diminution
 @section diminution
 
-ES: ?,
+ES: disminución,
 I: diminuzione,
 F: diminution,
 D: ?,
@@ -2909,7 +2909,7 @@ This is a stub for diminution (@emph{wrt} mensural notation).
 @node direct
 @section direct
 
-ES: ?,
+ES: directo,
 I: ?,
 F: ?,
 D: Weiser, Zeiger,
@@ -2978,7 +2978,7 @@ FI: dissonanssi, dissonoiva intervalli, riitasointi.
 @node divisio
 @section divisio
 
-ES: ?,
+ES: división,
 I: ?,
 F: ?,
 D: ?,
@@ -3013,7 +3013,7 @@ No cross-references.
 @node doit
 @section doit
 
-ES: ?,
+ES: elevación [de tono],
 I: ?,
 F: saut,
 D: ?,
@@ -3212,7 +3212,7 @@ FI: kaksoisylennysmerkki.
 @node double time signature
 @section double time signature
 
-ES: ?,
+ES: compás polimétrico,
 I: ?,
 F: ?,
 D: ?,
@@ -3632,7 +3632,7 @@ Double Bass).
 @node fall
 @section fall
 
-ES: ?,
+ES: caída [de tono],
 I: ?,
 F: chute,
 D: ?,
@@ -3651,7 +3651,7 @@ Indicator for a indeterminately falling pitch bend.  Compare with
 @node feathered beam
 @section feathered beam
 
-ES: barra punteada,
+ES: barra progresiva,
 I: ?,
 F: ligature en soufflet, lien de croches en soufflet,
 D: gespreizter Balken,
@@ -3815,7 +3815,7 @@ g64-"64th" s8
 @node flageolet
 @section flageolet
 
-ES: ?,
+ES: armónico,
 I: ?,
 F: flageolet,
 D: ?,
@@ -3867,7 +3867,7 @@ FI: alennusmerkki.
 @node forte
 @section forte
 
-ES: forte,
+ES: forte, fuerte,
 I: forte,
 F: forte,
 D: forte, laut,
@@ -4272,7 +4272,7 @@ A sequence of chords that terminates a musical phrase or section.
 @node harmonics
 @section harmonics
 
-ES: sonidos del flautín,
+ES: armónicos, sonidos aflautados,
 I: armonici,
 F: flageolet, sons harmoniques,
 D: Flageolett-Töne,
@@ -4528,7 +4528,7 @@ The addition of such two intervals forms an octave.
 @node inversion
 @section inversion
 
-ES: ?,
+ES: inversión,
 I: rivolto,
 F: renversement,
 D: ?,
@@ -4972,7 +4972,7 @@ FI: suuri intervalli.
 @node maxima
 @section maxima
 
-ES: ?,
+ES: máxima,
 I: maxima,
 F: maxima, maxime,
 D: ?,
@@ -5163,7 +5163,7 @@ TODO: add to definition (including summary info on proportional notation)
 
 @c TODO: add languages
 
-ES: ?,
+ES: signo de mensuración,
 I: ?,
 F: signe de mensuration,
 D: ?,
@@ -5484,7 +5484,7 @@ Exact tempo indication (in beats per minute).  Abbreviated @notation{M.M.} or
 @node mezzo
 @section mezzo
 
-ES: ?,
+ES: mezzo,
 I: mezzo,
 F: mezzo,
 D: ?,
@@ -5718,7 +5718,7 @@ No cross-references.
 @node multi-measure rest
 @section multi-measure rest
 
-ES: compases de espera,
+ES: compases de espera, silencio multicompás,
 I: pausa multipla,
 F: pause multiple, mesure à compter,
 NL: meermaats rust,
@@ -5768,7 +5768,7 @@ FI: palautusmerkki.
 
 @c TODO: add definition.
  
-ES: ?,
+ES: tonos vecinos,
 I: ?,
 F: tons voisins,
 D: ?,
@@ -5859,7 +5859,7 @@ indicate the instrument.
 @node note value
 @section note value
 
-ES: valor (duración),
+ES: valor, duración,
 I: valore, durata,
 F: durée, valeur (d'une note),
 D: Notenwert,
@@ -6133,7 +6133,7 @@ Compare: @ref{cue-notes}.
 @node part
 @section part
 
-ES: parte,
+ES: parte, particella,
 I: voce, parte,
 F: partie,
 D: Stimme,
@@ -6278,7 +6278,7 @@ melody.  Phrasing may be indicated by a @notation{slur}.
 @node piano
 @section piano
 
-ES: piano,
+ES: piano, suave,
 I: piano,
 F: piano,
 D: piano, leise,
@@ -6405,7 +6405,7 @@ simultaneously or in alternation.
 @node polymetric time signature
 @section polymetric time signature
 
-ES: compás polimétrico,
+ES: indicación de compás polimétrico,
 I: tempo polimetrico,
 F: ?,
 D: ?,
@@ -6455,7 +6455,7 @@ without changing the bow's direction. It is used for passages of a
 @node presto
 @section presto
 
-ES: presto,
+ES: presto, muy rápido,
 I: presto,
 F: presto, très rapide, enlevé,
 D: Presto, Sehr schnell,
@@ -6620,7 +6620,7 @@ FI: kvartoli.
 @node quality
 @section quality
 
-ES: ?,
+ES: variante [de acorde o intervalo],
 I: qualità (?),
 F: qualité (?),
 D: ?,
@@ -6707,7 +6707,7 @@ except in jazz.
 @node quarter tone
 @section quarter tone
 
-ES: cuarto de tonno,
+ES: cuarto de tono,
 I: quarto di tono,
 F: quart de ton,
 D: Viertelton,
@@ -6725,7 +6725,7 @@ An interval equal to half a semitone.
 @node quintuplet
 @section quintuplet
 
-ES: cinquillo, quintillo.
+ES: cinquillo, quintillo,
 I: quintina,
 F: quintolet,
 D: Quintole,
@@ -6867,7 +6867,7 @@ metrical unit (beat).
 @node ritardando
 @section ritardando
 
-ES: ritardando,
+ES: ritardando, retardando,
 I: ritardando,
 F: ritardando, en ralentissant,
 D: ritardando, langsamer werden,
@@ -6886,7 +6886,7 @@ No cross-references.
 @node ritenuto
 @section ritenuto
 
-ES: ritenuto,
+ES: ritenuto, reteniendo,
 I: ritenuto,
 F: ritenuto, en retenant,
 D: ritenuto,
@@ -7143,7 +7143,7 @@ FI: korotusmerkki.
 @node simile
 @section simile
 
-ES: simile,
+ES: simile, similar,
 I: simile,
 F: simile,
 D: ?,
@@ -7281,7 +7281,7 @@ FI: seksti.
 @node slur
 @section slur
 
-ES: ligadura (de expresión),
+ES: ligadura de expresión,
 I: legatura (di portamento o espressiva),
 F: liaison, coulé,
 D: Bogen (Legatobogen, Phrasierungsbogen),
@@ -7427,7 +7427,7 @@ No cross-references.
 @section staff
 
 UK: stave,
-ES: pentagrama,
+ES: pentagrama, pauta,
 I: pentagramma, rigo (musicale),
 F: portée,
 D: Notensystem, Notenzeile,
@@ -7482,7 +7482,7 @@ whole note.
 @node stringendo
 @section stringendo
 
-ES: ?,
+ES: stringendo, acelerando,
 I: stringendo,
 F: stringendo, en accélérant,
 D: ?,
@@ -7895,7 +7895,7 @@ FI: terssi.
 @node tie
 @section tie
 
-ES: ligadura de prolongación, ligadura de unión,
+ES: ligadura de unión (o de prolongación),
 I: legatura (di valore),
 F: liaison (de tenue),
 D: Haltebogen, Bindebogen,
@@ -8028,7 +8028,7 @@ instrument in B-flat.
 @node transposition
 @section transposition
 
-ES: transporte,
+ES: transporte, transposición,
 I: trasposizione,
 F: transposition,
 D: Transposition,
@@ -8067,7 +8067,7 @@ No cross-references.
 @node treble clef
 @section treble clef
 
-ES: clave de sol,
+ES: clave de sol en segunda,
 I: chiave di violino,
 F: clef de sol,
 D: Violinschlüssel, Sopranschlüssel,
@@ -8197,7 +8197,7 @@ FI: tritonus.
 @node tuning fork
 @section tuning fork
 
-ES: diapasón, horquilla de afinación,
+ES: diapasón [de horquilla],
 I: diapason, corista,
 F: diapason,
 D: Stimmgabel,
@@ -8217,7 +8217,7 @@ standard.  Tuning forks for other pitches are available.
 @node tuplet
 @section tuplet
 
-ES: ?,
+ES: grupo de valoración especial,
 I: gruppi irregolari,
 F: ?,
 D: ?,
index 2489b1a05919d2903ed236d9f69cbf66ad3f3231..185c0b7bd04775ccb2915ee4f3ffdee89d1dcab9 100644 (file)
@@ -5,15 +5,22 @@
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
+
 @setfilename lilypond-notation.info
-@settitle GNU LilyPond Notation Reference
+@settitle LilyPond Notation Reference
 @documentencoding UTF-8
 @documentlanguage en
 
-@include macros.itexi
+@macro manualIntro
+This manual provides a reference for all notation that can be
+produced with LilyPond version @version{}.  It assumes that
+the reader is familiar with the material in the
+@rlearningnamed{Top, Learning Manual}.
+@end macro
 
-@afourpaper
+@include macros.itexi
 
+@c  TODO: all the direntry stuff should be moved to general.texi
 @c  Keep this here, since it pertains to the direntry below.
 @ignore
 Distributions will want to install lilypond.info in postinstall, doing:
@@ -31,8 +38,6 @@ Distributions will want to install lilypond.info in postinstall, doing:
 @c    LilyPond  program.
 @end ignore
 
-
-@c
 @c Info files are no longer installed in a subdirectory, images are
 @c expected to be found in lilypond/ subdirectory.
 @dircategory GNU LilyPond --- the music typesetter
@@ -60,99 +65,11 @@ Distributions will want to install lilypond.info in postinstall, doing:
 @omflanguage English
 @end ignore
 
-@ifnottex
-@node Top
-@top GNU LilyPond --- Notation Reference
-@chapheading The music typesetter
-@c HJJ: Info needs `@top', which is a synonym for `@unnumbered' in TeX.
-@end ifnottex
-
-
-@ifhtml
-@ifclear bigpage
-This document is also available as a
-@uref{source/Documentation/notation.pdf,PDF} and as
-@uref{source/Documentation/notation-big-page.html,one big page}.
-@end ifclear
-@ifset bigpage
-This document is also available as a
-@uref{source/Documentation/notation.pdf,PDF} and as a
-@uref{source/Documentation/notation/index.html,HTML indexed multiple pages}.
-@end ifset
-@end ifhtml
-
-
-@c  This produces the unified index
-@syncodeindex fn cp
-@syncodeindex vr cp
-
-
-@finalout
-
-@titlepage
-@title LilyPond
-@subtitle The music typesetter
-@titlefont{Notation Reference}
-@author The LilyPond development team
-
-Copyright @copyright{} 1999--2009 by the authors
 
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
+@lilyTitlePage{Notation Reference}
 
-@vskip 20pt
-
-For LilyPond version @version{}
-@end titlepage
-
-@copying
-Copyright @copyright{} 1999--2009 by the authors
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end copying
 
 @ifnottex
-This file documents GNU LilyPond.
-
-Copyright 1999--2009 by the authors
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end ifnottex
-
-@ifnottex
-This is the Notation Reference (NR) for GNU LilyPond version @version{}.
-For more information about how this fits with the other
-documentation, see
-FIXME FIXME FIXME 
-@c @rlearning{About the documentation}.
-
-@cindex web site
-@cindex URL
-
-More information can be found at
-@uref{http://@/www@/.lilypond@/.org/}.  The website contains on-line copies
-of this and other documentation.
-
 
 @menu
 * Musical notation::               Notation which is used in
@@ -174,8 +91,9 @@ Appendices
 * LilyPond command index::
 * LilyPond index::
 @end menu
+
+@docMain
 @end ifnottex
-@c * Literature list::                Reference works about music notation.
 
 @contents
 
@@ -190,10 +108,11 @@ Appendices
 @include notation/programming-interface.itely
 
 
-@c @include notation/literature.itely
 @include notation/notation-appendices.itely
 @include notation/cheatsheet.itely
 
+
+
 @node LilyPond grammar
 @appendix LilyPond grammar
 
@@ -202,8 +121,10 @@ output from the parser.
 
 @verbatiminclude ly-grammar.txt
 
+
 @include fdl.itexi
 
+
 @node LilyPond command index
 @appendix LilyPond command index
 
index 7d9f1390ae11386e76ae8a7f221c2be7ee6e827f..f9663d7fee13b612b4648353c2e7323df8a3a486 100644 (file)
@@ -503,6 +503,10 @@ Rests passed to a @code{ChordNames} context will cause the
 
 @snippets
 
+@c Keep index entries with following snippet
+@cindex chords, suppressing repeated
+@funindex chordChanges
+
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
 {showing-chords-at-changes.ly}
 
diff --git a/Documentation/notation/contemporary.itely b/Documentation/notation/contemporary.itely
new file mode 100644 (file)
index 0000000..34dda95
--- /dev/null
@@ -0,0 +1,225 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+@c \version "2.13.4"
+
+
+@node Contemporary music
+@section Contemporary music
+
+From the beginning of the 20th Century there has been a massive
+expansion of compositional style and technique.  New harmonic
+and rhythmic developments, an expansion of the pitch spectrum
+and the development of a wide range of new instrumental
+techniques have been accompanied by a parallel evolution and
+expansion of musical notation.  The purpose of this section is
+to provide references and information relevant to working with
+these new notational techniques.
+
+@menu
+* Pitch and harmony in contemporary music::
+* Contemporary approaches to rhythm::
+* Graphical notation::
+* Contemporary scoring techniques::
+* New instrumental techniques::
+* Further reading and scores of interest::
+@end menu
+
+
+@node Pitch and harmony in contemporary music
+@subsection Pitch and harmony in contemporary music
+
+This section highlights issues that are relevant to notating
+pitch and harmony in contemporary music.
+
+@menu
+* References for pitch and harmony in contemporary music::
+* Microtonal notation::
+* Contemporary key signatures and harmony::
+@end menu
+
+
+@node References for pitch and harmony in contemporary music
+@unnumberedsubsubsec References for pitch and harmony in contemporary music
+
+@itemize
+@item Standard quarter-tone notation is addressed in
+@ref{Note names in other languages}.
+
+@item Non-standard key signatures are addressed in
+@ref{Key signature}.
+
+@item Contemporary practises in displaying accidentals are
+addressed in @ref{Automatic accidentals}.
+
+@end itemize
+
+
+@node Microtonal notation
+@unnumberedsubsubsec Microtonal notation
+
+@ignore
+    Discussion of microtones other than quarter-tones,
+    alternative notations (arrows, slash-flats), etc.
+@end ignore
+
+
+@node Contemporary key signatures and harmony
+@unnumberedsubsubsec Contemporary key signatures and harmony
+
+@ignore
+    Discussion of contemporary key signatures:
+    non-standard, polytonality, etc.
+@end ignore
+
+
+@node Contemporary approaches to rhythm
+@subsection Contemporary approaches to rhythm
+
+This section highlights issues that are relevant to the
+notation of rhythm in contemporary music.
+
+@menu
+* References for contemporary approaches to rhythm::
+* Tuplets in contemporary music::
+* Contemporary time signatures::
+* Extended polymetric notation::
+* Beams in contemporary music::
+* Bar lines in contemporary music::
+@end menu
+
+
+@node References for contemporary approaches to rhythm
+@unnumberedsubsubsec References for contemporary approaches to rhythm
+
+@itemize
+@item Compound time signatures are addressed in @ref{Time signature}.
+
+@item Basic polymetric notation is addressed in
+@ref{Polymetric notation}.
+
+@item Feathered beams are addressed in @ref{Feathered beams}.
+
+@item Mensurstriche barlines (barlines between staves only) are
+addressed in @ref{Grouping staves}.
+
+@end itemize
+
+
+@node Tuplets in contemporary music
+@unnumberedsubsubsec Tuplets in contemporary music
+
+@ignore
+    Extended discussion of modern tuplets, including
+    non-standard ratios, nested tuplets and customising
+    the appearance of tuplets (ratios, note values etc.)
+    Also how to provide an ossia RhythmicStaff to help
+    players break down a complicated tuplet.
+@end ignore
+
+
+@node Contemporary time signatures
+@unnumberedsubsubsec Contemporary time signatures
+
+@ignore
+    Extended discussion of compound time signatures
+    including Graham P.'s work; non-standard time
+    signatures such as 7/10, 5/6; alternative
+    notations such as Orff-esque 4/note, placing a
+    single time signature across multiple staves, or
+    placing time signatures at the top of StaffGroups
+    or systems rather than in the stave.
+@end ignore
+
+
+@node Extended polymetric notation
+@unnumberedsubsubsec Extended polymetric notation
+
+@ignore
+    Extended examples e.g. different instruments
+    or ensembles with independent tempi
+@end ignore
+
+
+@node Beams in contemporary music
+@unnumberedsubsubsec Beams in contemporary music
+
+@ignore
+    Beaming practises, stemlets, Boulez-esque displaying
+    of beamed notes with flags
+@end ignore
+
+
+@node Bar lines in contemporary music
+@unnumberedsubsubsec Bar lines in contemporary music
+
+@ignore
+    Mensurstriche barlines, tick barlines, etc.
+@end ignore
+
+
+@node Graphical notation
+@subsection Graphical notation
+
+
+@node Contemporary scoring techniques
+@subsection Contemporary scoring techniques
+
+
+@node New instrumental techniques
+@subsection New instrumental techniques
+
+
+@node Further reading and scores of interest
+@subsection Further reading and scores of interest
+
+This section suggests books, musical examples and other
+resources useful in studying contemporary musical notation.
+
+@menu
+* Books and articles on contemporary musical notation::
+* Scores and musical examples::
+@end menu
+
+
+@node Books and articles on contemporary musical notation
+@unnumberedsubsubsec Books and articles on contemporary musical notation
+
+@itemize
+@item
+@emph{Music Notation in the Twentieth Century: A Practical Guidebook}
+by Kurt Stone [W. W. Norton, 1980]
+
+@item
+@emph{Music Notation: A Manual of Modern Practice} by Gardner Read
+[Taplinger, 1979]
+
+@item
+@emph{Instrumentation and Orchestration} by Alfred Blatter [Schirmer,
+2nd ed. 1997]
+
+@end itemize
+
+
+@node Scores and musical examples
+@unnumberedsubsubsec Scores and musical examples
+
+@ignore
+    Rough list of composers whose work could be included
+    (in alphabetical order, perhaps with suggested work):
+
+        Pierre Boulez (Le Marteau Sans Maître?)
+        John Cage (Freeman Etudes?)
+        George Crumb (Black Angels?)
+        Brian Ferneyhough (Transit?  Time & Motion Studies?)
+        Ben Johnston (extended just intonation example)
+        György Ligeti (several, including Hamburg Concerto)
+        Krzysztof Penderecki (Threnody to the Victims of Hiroshima?)
+        Karlheinz Stockhausen (Gruppen?)
+@end ignore
+
index b02e6da55362bd0bc37b2dc51fb447e3e0a9d494..7104785c1dbfbc33a4d0cfdf957007f46c0b0ddb 100644 (file)
@@ -37,6 +37,7 @@ mode.  In most cases, relative mode will be more convenient.
 * Relative octave entry::
 * Accidentals::
 * Note names in other languages::
+* Non-Western note names and accidentals::
 @end menu
 
 
@@ -388,9 +389,6 @@ cis
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {preventing-extra-naturals-from-being-automatically-added.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
-{makam-example.ly}
-
 
 @seealso
 Music Glossary:
@@ -573,6 +571,70 @@ Snippets:
 @rlsr{Pitches}.
 
 
+@node Non-Western note names and accidentals
+@unnumberedsubsubsec Non-Western note names and accidentals
+
+Many non-Western musics (and some Western folk and
+traditional musics) employ alternative or extended tuning
+systems that do not fit readily into standard classical
+notation.
+
+In some cases standard notation is still used, with the
+pitch differences being implicit.  For example, Arabic
+music is notated with standard semitone and quarter-tone
+accidentals, with the precise pitch alterations being
+determined by context.  Others require extended or unique
+notations.
+
+@notation{Turkish classical music}, or Ottoman music,
+employs melodic forms known as @notation{makamlar}, whose
+intervals are based on 1/9 divisions of the whole tone.
+From a modern notational point of view, it is convenient
+to use the standard Western staff notes (c, d, e, ...)
+with special accidentals unique to Turkish music.  These
+accidentals are defined in @file{makam.ly} (to locate this
+file on your system, see
+@rlearning{Other sources of information}).  The following
+table gives their names, the accidental suffix that must
+be added to notes, and their pitch alteration as a
+fraction of one whole tone.
+
+@c TODO: can we include the actual accidentals in this table?
+@quotation
+@multitable {@b{büyük mücenneb (sharp)}} {@b{suffix}} {@b{pitch alteration}}
+@headitem Accidental name
+  @tab suffix @tab pitch alteration
+
+@item büyük mücenneb (sharp)
+  @tab -bm @tab +8/9
+@item kücük mücenneb (sharp)
+  @tab -k @tab +5/9
+@item bakiye (sharp)
+  @tab -b @tab +4/9
+@item koma (sharp)
+  @tab -c @tab +1/9
+
+@item koma (flat)
+  @tab -fc @tab -1/9
+@item bakiye (flat)
+  @tab -fb @tab -4/9
+@item kücük mücenneb (flat)
+  @tab -fk @tab -5/9
+@item büyük mücenneb (flat)
+  @tab -fbm @tab -8/9
+@end multitable
+@end quotation
+
+For further information on Turkish classical music and
+makamlar, see @ref{Turkish classical music}.
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{makam-example.ly}
+
+
 @node Changing multiple pitches
 @subsection Changing multiple pitches
 
index e98730ce35b888968920edb6610ed5f985c6ff69..c713f77dc6ee1a6378e3565213829ae293b3fc2c 100644 (file)
@@ -22,6 +22,7 @@ types of instrument or in specific styles.
 * Percussion::
 * Wind instruments::
 * Chord notation::
+* Contemporary music::
 * Ancient notation::
 * World music::
 @end menu
@@ -33,6 +34,7 @@ types of instrument or in specific styles.
 @include notation/percussion.itely
 @include notation/wind.itely
 @include notation/chords.itely
+@include notation/contemporary.itely
 @include notation/ancient.itely
 @include notation/world.itely
 
index 0d7d5a501397898770135fb138c04342c6dca7cc..b1efe869d450783f4b56c2046b11f607f4942b43 100644 (file)
@@ -16,6 +16,7 @@ that are relevant to traditions outside the Western tradition.
 
 @menu
 * Arabic music::
+* Turkish classical music::
 @end menu
 
 @node Arabic music
@@ -30,7 +31,7 @@ music.
 * Arabic key signatures::
 * Arabic time signatures::
 * Arabic music example::
-* Further reading::
+* Further reading for Arabic music::
 @end menu
 
 
@@ -339,8 +340,8 @@ Snippets:
 @rlsr{World music}.
 
 
-@node Further reading
-@unnumberedsubsubsec Further reading
+@node Further reading for Arabic music
+@unnumberedsubsubsec Further reading for Arabic music
 
 @enumerate
 
@@ -381,3 +382,69 @@ George Farah
 Ibrahim Ali Darwish Al-masri
 @end itemize
 @end enumerate
+
+
+@node Turkish classical music
+@subsection Turkish classical music
+
+This section highlights issues that are relevant to notating Turkish
+classical music.
+
+@menu
+* References for Turkish classical music::
+* Turkish note names::
+@end menu
+
+
+@node References for Turkish classical music
+@unnumberedsubsubsec References for Turkish classical music
+
+@cindex Turkish music
+@cindex Ottoman music
+@cindex comma intervals
+@cindex makam
+@cindex makamlar
+
+Turkish classical music developed in the Ottoman Empire in a
+period roughly contemporaneous with classical music in Europe,
+and has continued on into the 20th and 21st centuries as a
+vibrant and distinct tradition with its own compositional
+forms, theory and performance styles.  Among its striking
+features is the use of microtonal intervals based on @q{commas}
+of 1/9 of a tone, from which are constructed the melodic
+forms known as @notation{makam} (plural @notation{makamlar}).
+
+Some issues relevant to Turkish classical music are covered
+elsewhere:
+
+@itemize
+@item Note names and accidentals are provided in
+@ref{Non-Western note names and accidentals}.
+
+@end itemize
+
+
+@node Turkish note names
+@unnumberedsubsubsec Turkish note names
+
+@cindex Turkish note names
+@cindex makam
+@cindex makamlar
+
+Pitches in Turkish classical music traditionally have unique
+names, and the basis of pitch on 1/9-tone divisions means
+makamlar employ a completely different set of intervals from
+Western scales and modes: @notation{koma} (1/9 of a tone),
+@notation{eksik bakiye} (3/9), @notation{bakiye} (4/9),
+@notation{kücük mücenneb} (5/9), @notation{büyük mücenneb}
+(8/9), @notation{tanîni} (a whole tone) and
+@notation{artık ikili} (12/9 or 13/9 of a tone).
+
+From a modern notational point of view it is convenient to
+use the standard Western staff notes (c, d, e, ...) with
+special accidentals that raise or lower notes by intervals
+of 1/9, 4/9, 5/9 and 8/9 of a tone.  These accidentals are
+defined in the file @file{makam.ly} (to locate this file on
+your system, see @rlearning{Other sources of information}).
+A more detailed description is provided in
+@ref{Non-Western note names and accidentals}.
index ccf81967175d9ee6e65c1fbfeb988d585c5b0dd8..c198aeae802cee7535b1a3968d0c738fd6098374 100644 (file)
Binary files a/Documentation/pictures/baer-ledger.png and b/Documentation/pictures/baer-ledger.png differ
diff --git a/Documentation/pictures/baer-sarabande-hires.png b/Documentation/pictures/baer-sarabande-hires.png
new file mode 100644 (file)
index 0000000..06be513
Binary files /dev/null and b/Documentation/pictures/baer-sarabande-hires.png differ
diff --git a/Documentation/pictures/baer-sarabande-original.jpg b/Documentation/pictures/baer-sarabande-original.jpg
new file mode 100644 (file)
index 0000000..ceedd4a
Binary files /dev/null and b/Documentation/pictures/baer-sarabande-original.jpg differ
index ae65e6e9f78d437806edc7dbc2593093270c4219..ec09b52e30410432a61163f4607fc3d70590464e 100644 (file)
Binary files a/Documentation/pictures/baer-sarabande.png and b/Documentation/pictures/baer-sarabande.png differ
index 3e2b7cec5999ed84684684647c97066b0b62611e..ecbc288c752aad78b929109c315ec32ba2576232 100644 (file)
@@ -1,41 +1,11 @@
 \input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+
 @setfilename lilypond-snippets.info
 @settitle LilyPond snippets
 @documentencoding UTF-8
 @documentlanguage en
 
-@iftex
-@afourpaper
-@end iftex
-
-@c This disables @lydoctitle definition in common-macros.itexi
-@set snippets-sections
-
-@include macros.itexi
-
-@ifnothtml
-@macro lydoctitle{TEXT}
-@unnumberedsec \TEXT\
-@end macro
-@end ifnothtml
-
-@ifhtml
-@macro lydoctitle{TEXT}
-@node \TEXT\
-@unnumberedsec \TEXT\
-@end macro
-@end ifhtml
-
-@finalout
-
-@titlepage
-@title LilyPond
-@subtitle The music typesetter
-@titlefont{Snippets}
-@author LilyPond Snippet Repository contributors
-
-@vskip 20pt
-
+@macro manualIntro
 This document shows a selected set of LilyPond snippets from the
 @uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
 (LSR). It is in the public domain.
@@ -46,8 +16,8 @@ LSR web site and database, and the University of Milano for hosting LSR.
 Please note that this document is not an exact subset of LSR: some
 snippets come from @file{input/new} LilyPond sources directory, and
 snippets from LSR are converted through @command{convert-ly}, as LSR is
-based on a stable LilyPond version, and this document is for version
-@c @value{version}.
+based on a stable LilyPond version, and this document is for
+version @version{}.
 
 Snippets are grouped by tags; tags listed in the table of contents match
 a section of LilyPond notation manual.  Snippets may have several tags,
@@ -56,48 +26,32 @@ and not all LSR tags may appear in this document.
 In the HTML version of this document, you can click on the file name
 or figure for each example to see the corresponding input file.
 
-@end titlepage
+@end macro
 
-@iftex
-@contents
-@end iftex
+@c This disables @lydoctitle definition in common-macros.itexi
+@set snippets-sections
 
-@ifnottex
-@node Top
-@top GNU LilyPond --- Snippets List
+@include macros.itexi
+
+@ifnothtml
+@macro lydoctitle{TEXT}
+@unnumberedsec \TEXT\
+@end macro
+@end ifnothtml
 
 @ifhtml
-@ifclear bigpage
-This document is also available as a
-@uref{source/Documentation/snippets.pdf,PDF} and as
-@uref{source/Documentation/snippets-big-page.html,one big page}.
-@end ifclear
-@ifset bigpage
-This document is also available as a
-@uref{source/Documentation/snippets.pdf,PDF} and as
-@uref{source/Documentation/snippets/index.html,HTML indexed multiple pages}.
-@end ifset
+@macro lydoctitle{TEXT}
+@node \TEXT\
+@unnumberedsec \TEXT\
+@end macro
 @end ifhtml
 
-This document shows a selected set of LilyPond snippets from the
-@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
-(LSR). It is in the public domain.
-
-Please note that it is not an exact subset of LSR: some snippets come
-from @file{Documentation/snippets/new} LilyPond sources directory, and
-snippets from LSR are converted through @command{convert-ly}, as LSR is
-based on a stable LilyPond version, and this document is for version
-@version{}.
 
-Snippets are grouped by tags; tags listed in the table of contents match
-a section of LilyPond notation manual.  Snippets may have several tags,
-and not all LSR tags may appear in this document.
+@lilyTitlePage{Snippets}
 
-In the HTML version of this document, you can click on the file name
-or figure for each example to see the corresponding input file.
-@end ifnottex
 
 @c maybe generate/update @menu and @includes automatically? --jm
+@ifnottex
 @menu
 Musical notation
 * Pitches::
@@ -130,6 +84,9 @@ Other collections
 * Templates::
 @end menu
 
+@docMain
+@end ifnottex
+
 @contents
 
 
index 123684cabda18df890a7a287337cd8badbe8f51a..84702bca88d584adc1f41e27aecc1946df72415d 100644 (file)
@@ -234,6 +234,14 @@ grand-replace:
        $(MAKE) -C scripts/build
        PATH=$(buildscript-dir):$(PATH) $(buildscript-dir)/grand-replace
 
+
+################################################################
+# website (without the rest of the docs)
+web-gop:
+       touch Documentation/general.texi
+       cd Documentation && make out=www out-www/general/index.html
+
+
 ################################################################
 # testing
 
diff --git a/input/regression/full-measure-rest-fermata.ly b/input/regression/full-measure-rest-fermata.ly
new file mode 100644 (file)
index 0000000..71c62cf
--- /dev/null
@@ -0,0 +1,25 @@
+\version "2.12.4"
+
+\header{
+  texidoc="
+Fermata over full-measure rests should invert when below and
+be closer to the staff than other articulations."
+}
+\layout {
+  ragged-right = ##t
+}
+\relative c'' {
+  R1
+  a1^"should be lower"
+  R1^"should be higher"
+  \break
+  R1
+  R1^"should be lower"
+  a1^"should be higher"
+  \break
+  a1^"should be above fermata"
+  R1^\fermataMarkup
+  \break
+  a1_"should be below fermata"
+  R1_\fermataMarkup
+}
diff --git a/input/regression/page-spacing-system-count-overfull.ly b/input/regression/page-spacing-system-count-overfull.ly
new file mode 100644 (file)
index 0000000..a530c8d
--- /dev/null
@@ -0,0 +1,14 @@
+\version "2.13.4"
+
+\header {
+  texidoc = "Page breaking doesn't crash when the line-breaking
+is invalid."
+}
+
+\book {
+  \paper {
+    system-count = #1
+  }
+
+  \repeat unfold 20 { c d e f }
+}
diff --git a/input/regression/warn-unterminated-span-dynamic.ly b/input/regression/warn-unterminated-span-dynamic.ly
new file mode 100644 (file)
index 0000000..ca5a66a
--- /dev/null
@@ -0,0 +1,20 @@
+\version "2.13.4"
+
+#(ly:set-option 'warning-as-error #f)
+
+\header {
+  texidoc = "A warning is printed if a dynamic spanner is
+unterminated."
+}
+
+<<
+  \new Staff {
+    % warning expected: unterminated crescendo
+    c'1\<
+  }
+  \new Staff {
+    % warning expected: unterminated decrescendo
+    c'1\>
+  }
+>>
+
index 98722c53db4d1fc9f4a11b26423512e470cbabd3..f0f96164df8991993a52cbde3cdec4327dcb8021 100644 (file)
@@ -174,10 +174,13 @@ Constrained_breaking::solve (vsize start, vsize end, vsize sys_count)
             {
               if (brk != end_brk)
                 {
-                  warning (_ ("cannot find line breaking that satisfies constraints" ));
+                 brk = st.at (brk, sys).prev_;
+                 sys--;
+                  warning (_ ("cannot find line breaking that satisfies constraints"));
                   ret.push_back (space_line (brk, end_brk));
                 }
-              /* build up the good solution */
+
+              /* build up the good part of the solution */
               for (vsize cur_sys = sys; cur_sys != VPOS; cur_sys--)
                 {
                  vsize prev_brk = st.at (brk, cur_sys).prev_;
@@ -237,16 +240,52 @@ Constrained_breaking::best_solution (vsize start, vsize end)
 std::vector<Line_details>
 Constrained_breaking::line_details (vsize start, vsize end, vsize sys_count)
 {
-  vsize brk = prepare_solution (start, end, sys_count);
+  vsize end_brk = prepare_solution (start, end, sys_count);
   Matrix<Constrained_break_node> const &st = state_[start];
   vector<Line_details> ret;
 
-  for (int sys = sys_count-1; sys >= 0 && brk != VPOS; sys--)
+  /* This loop structure is C&Ped from solve(). */
+  /* find the first solution that satisfies constraints */
+  for (vsize sys = sys_count-1; sys != VPOS; sys--)
     {
-      ret.push_back (st.at (brk, sys).details_);
-      brk = st.at (brk, sys).prev_;
+      for (vsize brk = end_brk; brk != VPOS; brk--)
+        {
+          if (!isinf (st.at (brk, sys).details_.force_))
+            {
+              if (brk != end_brk)
+               {
+                 /*
+                   During initialize(), we only fill out a
+                   Line_details for lines that are valid (ie. not too
+                   long), otherwise line breaking becomes O(n^3).
+                   In case sys_count is such that no valid solution
+                   is found, we need to fill in the Line_details.
+                 */
+                 Line_details details;
+                 brk = st.at (brk, sys).prev_;
+                 sys--;
+                 fill_line_details (&details, brk, end_brk);
+                 ret.push_back (details);
+               }
+
+              /* build up the good part of the solution */
+              for (vsize cur_sys = sys; cur_sys != VPOS; cur_sys--)
+                {
+                 vsize prev_brk = st.at (brk, cur_sys).prev_;
+                  assert (brk != VPOS);
+                  ret.push_back (st.at (brk, cur_sys).details_);
+                  brk = prev_brk;
+                }
+              reverse (ret);
+              return ret;
+            }
+        }
     }
-  reverse (ret);
+
+  /* if we get to here, just put everything on one line */
+  Line_details details;
+  fill_line_details (&details, 0, end_brk);
+  ret.push_back (details);
   return ret;
 }
 
@@ -331,18 +370,28 @@ Constrained_breaking::initialize ()
 
   ragged_right_ = to_boolean (pscore_->layout ()->c_variable ("ragged-right"));
   ragged_last_ = to_boolean (pscore_->layout ()->c_variable ("ragged-last"));
-      
+  /* NOTE: currently, we aren't using the space_ field of a
+     Line_details for anything.  That's because the approximations
+     used for scoring a page configuration don't actually space things
+     properly (for speed reasong) using springs anchored at the staff
+     refpoints.  Rather, the "space" is placed between the extent
+     boxes.  To get a good result, therefore, the "space" value for
+     page breaking needs to be much smaller than the "space" value for
+     page layout.  Currently, we just make it zero always.
+  */
+  between_system_space_ = 0;
+  between_system_padding_ = 0;
+
   Output_def *l = pscore_->layout ();
-  System *sys = pscore_->root_system ();
 
-  // TODO: add support for minimum-distance and stretchability here and
-  // to the page-breaker.
   SCM spacing_spec = l->c_variable ("between-system-spacing");
   SCM page_breaking_spacing_spec = l->c_variable ("page-breaking-between-system-spacing");
-  Real space = 0;
-  Real padding = 0;
-  Page_layout_problem::read_spacing_spec (spacing_spec, &padding, ly_symbol2scm ("padding"));
-  Page_layout_problem::read_spacing_spec (page_breaking_spacing_spec, &padding, ly_symbol2scm ("padding"));
+  Page_layout_problem::read_spacing_spec (spacing_spec,
+                                         &between_system_padding_,
+                                         ly_symbol2scm ("padding"));
+  Page_layout_problem::read_spacing_spec (page_breaking_spacing_spec,
+                                         &between_system_padding_,
+                                         ly_symbol2scm ("padding"));
 
   Interval first_line = line_dimensions_int (pscore_->layout (), 0);
   Interval other_lines = line_dimensions_int (pscore_->layout (), 1);
@@ -358,9 +407,6 @@ Constrained_breaking::initialize ()
     {
       for (vsize j = i + 1; j < breaks_.size (); j++)
        {
-         int start = Paper_column::get_rank (all_[breaks_[i]]);
-         int end = Paper_column::get_rank (all_[breaks_[j]]);
-         Interval extent = sys->pure_height (sys, start, end);
          bool last = j == breaks_.size () - 1;
          bool ragged = ragged_right_ || (last && ragged_last_);
          Line_details &line = lines_.at (j, i);
@@ -371,35 +417,7 @@ Constrained_breaking::initialize ()
          if (isinf (line.force_))
            break;
 
-         Grob *c = all_[breaks_[j]];
-         line.last_column_ = c;
-         line.break_penalty_ = robust_scm2double (c->get_property ("line-break-penalty"), 0);
-         line.page_penalty_ = robust_scm2double (c->get_property ("page-break-penalty"), 0);
-         line.turn_penalty_ = robust_scm2double (c->get_property ("page-turn-penalty"), 0);
-         line.break_permission_ = c->get_property ("line-break-permission");
-         line.page_permission_ = c->get_property ("page-break-permission");
-         line.turn_permission_ = c->get_property ("page-turn-permission");
-         
-         /* turn permission should always be stricter than page permission
-            and page permission should always be stricter than line permission */
-         line.page_permission_ = min_permission (line.break_permission_,
-                                                 line.page_permission_);
-         line.turn_permission_ = min_permission (line.page_permission_,
-                                                 line.turn_permission_);
-
-         // TODO: see the hack regarding begin_of_line and
-         // rest_of_line extents in align-interface.  Perhaps we
-         // should do the same thing here so that the effect extends
-         // between systems as well as within systems.  It isn't as
-         // crucial here, however, because the effect is largest when
-         // dealing with large systems.
-         line.extent_ = (extent.is_empty ()
-                         || isnan (extent[LEFT])
-                         || isnan (extent[RIGHT]))
-           ? Interval (0, 0) : extent;
-         line.padding_ = padding;
-         line.space_ = space;
-         line.inverse_hooke_ = extent.length () + space;
+         fill_line_details (&line, i, j);
        }
     }
 
@@ -415,6 +433,49 @@ Constrained_breaking::initialize ()
   state_.resize (start_.size ());
 }
 
+/*
+  Fills out all of the information contained in a Line_details,
+  except for information about horizontal spacing.
+*/
+void
+Constrained_breaking::fill_line_details (Line_details *const out, vsize start, vsize end)
+{
+  int start_rank = Paper_column::get_rank (all_[breaks_[start]]);
+  int end_rank = Paper_column::get_rank (all_[breaks_[end]]);
+  System *sys = pscore_->root_system ();
+  Interval extent = sys->pure_height (sys, start_rank, end_rank);
+
+  Grob *c = all_[breaks_[end]];
+  out->last_column_ = c;
+  out->break_penalty_ = robust_scm2double (c->get_property ("line-break-penalty"), 0);
+  out->page_penalty_ = robust_scm2double (c->get_property ("page-break-penalty"), 0);
+  out->turn_penalty_ = robust_scm2double (c->get_property ("page-turn-penalty"), 0);
+  out->break_permission_ = c->get_property ("line-break-permission");
+  out->page_permission_ = c->get_property ("page-break-permission");
+  out->turn_permission_ = c->get_property ("page-turn-permission");
+
+  /* turn permission should always be stricter than page permission
+     and page permission should always be stricter than line permission */
+  out->page_permission_ = min_permission (out->break_permission_,
+                                         out->page_permission_);
+  out->turn_permission_ = min_permission (out->page_permission_,
+                                         out->turn_permission_);
+
+  // TODO: see the hack regarding begin_of_line and
+  // rest_of_line extents in align-interface.  Perhaps we
+  // should do the same thing here so that the effect extends
+  // between systems as well as within systems.  It isn't as
+  // crucial here, however, because the effect is largest when
+  // dealing with large systems.
+  out->extent_ = (extent.is_empty ()
+                 || isnan (extent[LEFT])
+                 || isnan (extent[RIGHT]))
+    ? Interval (0, 0) : extent;
+  out->padding_ = between_system_padding_;
+  out->space_ = between_system_space_;
+  out->inverse_hooke_ = extent.length () + between_system_space_;
+}
+
 Real
 Constrained_breaking::combine_demerits (Real force, Real prev_force)
 {
index 8378a959e297777ed9ae612e4f85128504528b14..4767902da9a4203b384bb5fe04fa256c1ddadbe7 100644 (file)
@@ -130,6 +130,8 @@ private:
   vsize systems_;
   bool ragged_right_;
   bool ragged_last_;
+  Real between_system_space_;
+  Real between_system_padding_;
 
   /* the (i,j)th entry is the configuration for breaking between
     columns i and j */
@@ -153,6 +155,7 @@ private:
 
   Real combine_demerits (Real force, Real prev_force);
 
-  bool calc_subproblem(vsize start, vsize systems, vsize max_break_index);
+  bool calc_subproblem (vsize start, vsize systems, vsize max_break_index);
+  void fill_line_details (Line_details *const, vsize, vsize);
 };
 #endif /* CONSTRAINED_BREAKING_HH */
index 54aa8a8c6df363dca7a4ec59dfd95c0d2967cf53..235dc178d912c2f41d2863d914a14eed2209692b 100644 (file)
@@ -32,8 +32,11 @@ class New_dynamic_engraver : public Engraver
 protected:
   virtual void process_music ();
   virtual void stop_translation_timestep ();
+  virtual void finalize ();
+
 private:
   SCM get_property_setting (Stream_event *evt, char const *evprop, char const *ctxprop);
+  string get_spanner_type (Stream_event *ev);
 
   Drul_array<Stream_event *> accepted_spanevents_drul_;
   Spanner *current_spanner_;
@@ -85,7 +88,7 @@ New_dynamic_engraver::process_music ()
   if (current_spanner_
       && (accepted_spanevents_drul_[STOP] || script_event_ || accepted_spanevents_drul_[START]))
     {
-      Stream_eventender = accepted_spanevents_drul_[STOP];
+      Stream_event *ender = accepted_spanevents_drul_[STOP];
       if (!ender)
        ender = script_event_;
 
@@ -101,20 +104,8 @@ New_dynamic_engraver::process_music ()
   if (accepted_spanevents_drul_[START])
     {
       current_span_event_ = accepted_spanevents_drul_[START];
-      
-      SCM start_sym = current_span_event_->get_property ("class");
-      string start_type;
-         
-      if (start_sym == ly_symbol2scm ("decrescendo-event"))
-       start_type = "decrescendo";
-      else if (start_sym == ly_symbol2scm ("crescendo-event"))
-       start_type = "crescendo";
-      else
-       {
-         programming_error ("unknown dynamic spanner type");
-         return;
-       }
-      
+
+      string start_type = get_spanner_type (current_span_event_);
       SCM cresc_type = get_property_setting (current_span_event_, "span-type",
                                        (start_type + "Spanner").c_str ());
 
@@ -135,7 +126,6 @@ New_dynamic_engraver::process_music ()
        {
          if (cresc_type != ly_symbol2scm ("hairpin"))
            {
-             // Fixme: should put value in error message.
              string as_string = ly_scm_write_string (cresc_type);
              current_span_event_
                ->origin()->warning (_f ("unknown crescendo style: %s\ndefaulting to hairpin.", as_string.c_str()));
@@ -197,6 +187,38 @@ New_dynamic_engraver::stop_translation_timestep ()
   finished_spanner_ = 0;
 }
 
+void
+New_dynamic_engraver::finalize ()
+{
+  if (current_spanner_
+      && !current_spanner_->is_live ())
+    current_spanner_ = 0;
+  if (current_spanner_)
+    {
+      current_span_event_
+       ->origin ()->warning (_f ("unterminated %s",
+                                 get_spanner_type (current_span_event_)
+                                 .c_str ()));
+      current_spanner_->suicide ();
+      current_spanner_ = 0;
+    }
+}
+
+string
+New_dynamic_engraver::get_spanner_type (Stream_event *ev)
+{
+  string type;
+  SCM start_sym = ev->get_property ("class");
+
+  if (start_sym == ly_symbol2scm ("decrescendo-event"))
+    type = "decrescendo";
+  else if (start_sym == ly_symbol2scm ("crescendo-event"))
+    type = "crescendo";
+  else
+    programming_error ("unknown dynamic spanner type");
+  return type;
+}
+
 void
 New_dynamic_engraver::acknowledge_note_column (Grob_info info)
 {
index 14ceadf438a530c5e851e5754164b1ee1918d218..b32a77004951573311a4473012f3ebe21af28bbe 100644 (file)
@@ -356,7 +356,12 @@ Pango_font::text_stencil (string str,
   if (ly_is_module (mod))
     {
       SCM utf8_string = ly_module_lookup (mod, ly_symbol2scm ("utf-8-string"));
-      if (utf8_string != SCM_BOOL_F)
+      /*
+       has_utf8_string should only be true when utf8_string is a
+       variable that is bound to a *named* procedure.
+      */
+      if (utf8_string != SCM_BOOL_F
+         && scm_procedure_name (SCM_VARIABLE_REF (utf8_string)) != SCM_BOOL_F)
        has_utf8_string = true;
     }
 
index 1ab7d5e5d9d86db0fbe2728196af2ea6d0061f1c..2880bffb2f2d61135c8e646014ca36a7fd771fde 100644 (file)
@@ -172,11 +172,13 @@ endincipit = \context Staff {
 
 fermataMarkup =
 #(make-music 'MultiMeasureTextEvent
-   ; Set the 'text based on the 'direction
-   'tweaks (list (cons 'text (lambda (grob)
-       (if (eq? (ly:grob-property grob 'direction) DOWN)
-          (markup #:musicglyph "scripts.dfermata")
-          (markup #:musicglyph "scripts.ufermata"))))))
+   'tweaks (list
+             ; Set the 'text based on the 'direction
+             (cons 'text (lambda (grob)
+               (if (eq? (ly:grob-property grob 'direction) DOWN)
+                (markup #:musicglyph "scripts.dfermata")
+                (markup #:musicglyph "scripts.ufermata"))))
+             (cons 'outside-staff-priority 40)))
 
 
 %% font sizes
index 8edc74bc82c68fad71b1cde74bf918ef293c99e1..c4729b4203cef4d64d7501630a9c2b29cba749f8 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,5 +1,5 @@
 # nl.po -- GNU LilyPond's dutch language file
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Jan Nieuwenhuizen <janneke@gnu.org>, Han-Wen Nienhuys <hanwen@cs.uu.nl>.
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Jan Nieuwenhuizen <janneke@gnu.org>, Han-Wen Nienhuys <hanwen@xs4all.nl>.
 # Jan Nieuwenhuizen <janneke@gnu.org>, 1998.
 # Han-Wen Nienhuys <hanwen@cs.uu.nl>, 1998.
 #
@@ -9,10 +9,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.11.22\n"
+"Project-Id-Version: lilypond 2.13.4\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
 "POT-Creation-Date: 2007-04-28 12:03+0200\n"
-"PO-Revision-Date: 2007-05-29 15:01+0200\n"
+"PO-Revision-Date: 2009-09-06 15:01+0200\n"
 "Last-Translator: Jan Nieuwenhuizen <janneke@gnu.org>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
 "MIME-Version: 1.0\n"
@@ -1474,9 +1474,7 @@ msgstr "FreeType gezicht heeft geen PostScript fontnaam"
 
 #: paper-column-engraver.cc:199
 msgid "forced break was overridden by some other event, should you be using bar checks?"
-msgstr ""
-"geforceerde breuk werd opgeheft door andere gebeurtenis, zou je maatcontrole\n"
-"moeten gebruiken?"
+msgstr "geforceerde breuk werd opgeheven door andere gebeurtenis, misschien moet je maatcontrole gebruiken?"
 
 #: paper-outputter-scheme.cc:30
 #, c-format