From: Han-Wen Nienhuys Date: Sun, 7 Nov 2004 23:16:07 +0000 (+0000) Subject: (process): add comparison for X-Git-Tag: release/2.4.2~2 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=a67f4eb0f3279694610ef38846314ab9297612e8;p=lilypond.git (process): add comparison for stop-moment as well. --- diff --git a/ChangeLog b/ChangeLog index 7aed75b7a7..cfc764a313 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,121 @@ +2004-11-08 Han-Wen Nienhuys + + * lily/quote-iterator.cc (process): add comparison for + stop-moment as well. + +2004-11-04 Han-Wen Nienhuys + + * VERSION (PACKAGE_NAME): release 2.4.1 + + * input/regression/new-slur.ly: mention forcing. + +2004-11-04 Heikki Junes + + * Documentation/user/lilypond.tely: changes 2.3.x to 2.5.x. + +2004-11-04 Jan Nieuwenhuizen + + * Documentation/topdocs/INSTALL.texi (Top): Remove geometry. + +2004-11-03 Jan Nieuwenhuizen + + * Documentation/topdocs/INSTALL.texi (Top): Fix geometry url (dax). + + * lily/lily-parser.cc (LY_DEFINE): Remove "Now " from message. + + * lily/main.cc (main): Invoke identify. + + * scm/lily.scm (postscript->pdf): Remove progress newline. + Write progress to stderr. + + * lily/paper-book.cc (output): Remove progress newline. + + * scm/framework-tex.scm (convert-to-dvi, convert-to-ps): Call + gettext on user messages, and remove whitespace. + + * lily/paper-outputter.cc (get_paper_outputter): Add progress newline. + + * scripts/lilypond-latex.py (program_name): Bugfix: use only basename of + argv[0] (Thomas Scharkowski). + + * configure.in: Bugfix: add REQUIRED parameter to STEPMAKE_TEXMF + call (carlyannehorse). Also check for mf and mf-nowin. Add check + for ec-fonts-mtraced. + + * GNUmakefile.in (builddir-exec): Add symlink tex/out. Fixes + --srcdir build (Bertalan). + + * stepmake/aclocal.m4 (STEPMAKE_GUILE_DEVEL): Check for guile + headers and library too (Laura Conrad). + + * Documentation/topdocs/INSTALL.texi (Top): Mention development + package for guile too (Laura Conrad). + + * lily/main.cc (usage): Typo. + +2004-11-02 Werner Lemberg + + * Documentation/user/notation.ly: More fixes to improve appearance. + + * tex/texinfo.tex: Updated from texinfo CVS -- this version provides + better output for multicolumn tables. + +2004-11-01 Mats Bengtsson + + * lily/main.cc (dir_info): Fixed typo in the printouts. + +2004-11-01 Werner Lemberg + + * buildscripts/mf-to-table.py (write_fontlist): Improve formatting + of output. + Set `per_line' to 2; replace hard-coded value with it. + + * Documentation/user/*: Many fixes to improve appearance of + printed manual. + +2004-11-01 Werner Lemberg + + * Documentation/user/changing-defaults.itely, + Documentation/user/notation.ly, + Documentation/user/programming-interface.itely: Use @/. + Fix formatting of some lilypond snippets and tables. + + * scripts/lilypond-book.py (compose_ly): Provide useful default + for LINEWIDTH in `override'. + +2004-10-31 Graham Percival + + * Documentation/user/invoking.itely: change "3.0" -> "2.4" + +2004-10-31 Werner Lemberg + + Resetting @exampleindent to `5' gives ugly results with texinfo's + DVI output. Use `@format @exampleindent 0 ... @end format' instead + (if not quoting) to change @exampleindent only locally. + + * scripts/lilypond-book.py (NOQUOTE): New variable. + (output) [LATEX]: Remove AFTER and BEFORE. + [TEXINFO]: Remove AFTER and BEFORE. + Fix QUOTE and VERBATIM pattern. + Add NOQUOTE pattern. + (Lilypond_snippet) [output_info, output_latex]: Don't handle AFTER + and BEFORE. + [output_texinfo]: Use NOQUOTE. + +2004-10-31 Graham Percival + + * Documentation/user/changing-defaults.itely: clarify paper + size commands with correct info. + + * Documentation/user/lilypond-book.itely: add more docs for + filename extensions. + +2004-10-31 Han-Wen Nienhuys + + * VERSION (PATCH_LEVEL): Branch lilypond_2_4, release 2.4.0 + (PATCH_LEVEL): start 2.5.0. + + 2004-10-31 Han-Wen Nienhuys * Documentation/user/preface.itely (Notes for version 2.4): @@ -81,6 +199,7 @@ (ly_options): Remove NOINDENT and EXAMPLEINDENT patterns. (compose_ly): Use `no_options' and `simple_options'. Fix logic of option handling. + Handle `linewidth' option without parameter. 2004-10-29 Han-Wen Nienhuys diff --git a/Documentation/topdocs/INSTALL.texi b/Documentation/topdocs/INSTALL.texi index 08aba505d4..3efc398862 100644 --- a/Documentation/topdocs/INSTALL.texi +++ b/Documentation/topdocs/INSTALL.texi @@ -76,6 +76,8 @@ newer), work. @item @uref{http://www.gnu.org/software/guile/guile.html,GUILE} (version 1.6.0 or newer). +If you are installing a binary packages, you may need to install +guile-devel or guile-dev or libguile-dev too. @item @uref{http://www.gnu.org/software/flex/,Flex} (version 2.5.4a or newer). @@ -90,17 +92,11 @@ lexer-gcc-3.1.sh in the source directory. Also, @TeX{}'s libkpathsea is used to find the fonts (@file{.mf}, @file{.afm}, @file{.tfm}). Make sure you have tetex 1.0 or newer -(1.0.6 is known to work). You may need to install a tetex-devel (or -tetex-dev or libkpathsea-dev) package too. +(1.0.6 is known to work). If you are installing binary packages, you +may need to install tetex-devel, tetex-dev or libkpathsea-dev too. @item @uref{ftp://ftp.gnu.org/gnu/texinfo/,Texinfo} (version 4.7 or newer). -@item The -@uref{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry,geometry -package for LaTeX}. - - This package is normally included with the @TeX{} distribution. - @item kpathsea, a library for searching (@TeX{}) files. @item diff --git a/Documentation/user/changing-defaults.itely b/Documentation/user/changing-defaults.itely index 80474eed89..8d9693e1c2 100644 --- a/Documentation/user/changing-defaults.itely +++ b/Documentation/user/changing-defaults.itely @@ -18,7 +18,7 @@ The controls available for tuning are described in a separate document, the @internalsref{Program reference} manual. That manual lists all different variables, functions and options available in LilyPond. It is written as a HTML document, which is available -@uref{http://lilypond.org/doc/Documentation/user/out-www/lilypond-internals/,on-line}, +@uref{http://@/lilypond@/.org/@/doc/@/Documentation/@/user/@/out@/-www/@/lilypond@/-internals/,on@/-line}, but is also included with the LilyPond documentation package. There are three areas where the default settings may be changed: @@ -1076,7 +1076,7 @@ are. We have been talking of `the' @code{Fingering} object, but actually it does not amount to much. The initialization file -@file{scm/define-grobs.scm} shows the soul of the `object', +@file{scm/@/define@/-grobs@/.scm} shows the soul of the `object', @verbatim (Fingering @@ -1406,7 +1406,7 @@ directions. @seealso -Init files: @file{ly/declarations-init.ly} contains hints how new +Init files: @file{ly/@/declarations@/-init@/.ly} contains hints how new fonts may be added to LilyPond. @@ -1497,7 +1497,7 @@ objects can be moved with layout properties such as @code{padding} and @seealso -Init files: @file{scm/new-markup.scm}. +Init files: @file{scm/@/new@/-markup@/.scm}. @refbugs @@ -2087,7 +2087,12 @@ The header block for a book supports the following This is a demonstration of the fields available, -@lilypond[verbatim] +@lilypond[verbatim,linewidth=11.0\cm] +\paper { + linewidth = 11.0\cm + vsize = 10.0\cm +} + \book { \header { title = "Title," @@ -2116,9 +2121,6 @@ This is a demonstration of the fields available, } { c'1 } } - \paper { - linewidth = 8.0 \cm - } } @end lilypond @@ -2135,7 +2137,7 @@ A more advanced option is to change the Scheme functions @code{make-book-title} and @code{make-score-title} functions, defined in the @code{\paper} of the @code{\book} block. These functions create a block of titling, given the information in the -@code{\header}. The init file @file{ly/titling.scm} shows how the +@code{\header}. The init file @file{ly/@/titling@/.scm} shows how the default format is created, and it may be used as a template for different styles. @@ -2179,12 +2181,12 @@ Page breaks are computed by the @code{page-breaking} function in the To change the paper size, there are two equal commands, @example #(set-default-paper-size "a4") - \layout@{ + \paper@{ #(set-paper-size "a4") @} @end example -The first command sets the size of all pages. The second command sets the size of the pages that the @code{\layout} block applies to -- if the @code{\layout} block is at the top of the file, then it will apply to all pages. If the @code{\layout} block is inside a @code{\score}, then the paper size will only apply to that score. +The first command sets the size of all pages. The second command sets the size of the pages that the @code{\paper} block applies to -- if the @code{\paper} block is at the top of the file, then it will apply to all pages. If the @code{\paper} block is inside a @code{\score}, then the paper size will only apply to that score. The following paper sizes are supported. @@ -2318,7 +2320,7 @@ can.} The header and footer are created by the functions @code{make-footer} and @code{make-header}, defined in @code{\paper}. The default -implementations are in @file{scm/page-layout.scm}. +implementations are in @file{scm/@/page@/-layout@/.scm}. The following settings influence the header and footer layout. @@ -2336,7 +2338,7 @@ page given the system to put on it. @seealso -Examples: @inputfileref{input/test,page-breaks.ly} +Examples: @inputfileref{input/@/test,page@/-breaks@/.ly} @refbugs @@ -2386,7 +2388,7 @@ toplevel scores, and combined as a single @code{\book}. This behavior can be changed by setting the variable @code{toplevel-score-handler} at toplevel. The default handler is -defined in the init file @file{scm/lily.scm}. +defined in the init file @file{scm/@/lily@/.scm}. @item A @code{\book} block logically combines multiple movements @@ -2396,7 +2398,7 @@ concatenated.. This behavior can be changed by setting the variable @code{toplevel-book-handler} at toplevel. The default handler is -defined in the init file @file{scm/lily.scm}. +defined in the init file @file{scm/@/lily@/.scm}. @item A compound music expression, such as @@ -2410,7 +2412,7 @@ expressions. This behavior can be changed by setting the variable @code{toplevel-music-handler} at toplevel. The default handler is -defined in the init file @file{scm/lily.scm}. +defined in the init file @file{scm/@/lily@/.scm}. @end itemize diff --git a/Documentation/user/cheatsheet.itely b/Documentation/user/cheatsheet.itely index 567ba04554..6f9d9a0908 100644 --- a/Documentation/user/cheatsheet.itely +++ b/Documentation/user/cheatsheet.itely @@ -6,7 +6,7 @@ @appendix Cheat sheet -@multitable @columnfractions .3 .3 .4 +@multitable @columnfractions .35 .3 .35 @item @b{Syntax} @tab @b{Description} diff --git a/Documentation/user/converters.itely b/Documentation/user/converters.itely index 9625d7cce6..bd1e01ae0e 100644 --- a/Documentation/user/converters.itely +++ b/Documentation/user/converters.itely @@ -7,7 +7,7 @@ Music can be entered also by importing it from other formats. This chapter documents the tools included in the distribution to do so. There are other tools that produce LilyPond input, for example GUI sequencers and XML converters. Refer to the -@uref{http://lilypond.org,website} for more details. +@uref{http://@/lilypond@/.org,website} for more details. @@ -184,9 +184,9 @@ confuse etf2ly. Sequences of grace notes are ended improperly. @cindex ABC -ABC is a fairly simple ASCII based format. It is described at the ABC site: +ABC is a fairly simple ASCII based format. It is described at the ABC site: @quotation -@uref{http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt}. +@uref{http://@/www@/.gre@/.ac@/.uk/@/~c.walshaw/@/abc2mtex/@/abc@/.txt}. @end quotation abc2ly translates from ABC to LilyPond. It is invoked as follows: @@ -287,14 +287,14 @@ LilyPond itself does not come with support for other formats, but there are also external tools that generate LilyPond files. These tools include -http://denemo.sourceforge.net/ +@uref{http://@/denemo@/.sourceforge@/.net/,Denemo}. @itemize @bullet -@item @uref{http://www.nongnu.org/xml2ly/, xml2ly}, that imports -@uref{http://www.musicxml.com/,MusicXML} +@item @uref{http://@/www@/.nongnu@/.org/@/xml2ly/, xml2ly}, that imports +@uref{http://@/www@/.musicxml@/.com/,MusicXML} @item -@uref{http://rnvs.informatik.tu-chemnitz.de/~jan/noteedit/noteedit.html,NoteEdit} +@uref{http://@/rnvs@/.informatik@/.tu@/-chemnitz@/.de/@/~jan/@/noteedit/@/noteedit@/.html,NoteEdit} which imports MusicXML -@item @uref{http://www.all-day-breakfast.com/rosegarden/,Rosegarden}, +@item @uref{http://@/www@/.all@/-day@/-breakfast@/.com/@/rosegarden/,Rosegarden}, which imports MIDI @end itemize diff --git a/Documentation/user/dummy-interfaces.itexi b/Documentation/user/dummy-interfaces.itexi index 65772d0137..9e2dc6e976 100644 --- a/Documentation/user/dummy-interfaces.itexi +++ b/Documentation/user/dummy-interfaces.itexi @@ -3,4 +3,4 @@ @unnumbered Full Grob interface list The automatic documentation failed to build. -Visit @uref{http://www.cs.uu.nl/~hanwen/lilypond/Documentation,lilypond online} +Visit @uref{http://@/www@/.cs@/.uu@/.nl/@/~hanwen/@/lilypond/@/Documentation,lilypond online} diff --git a/Documentation/user/examples.itely b/Documentation/user/examples.itely index 870da2a206..97d3aead40 100644 --- a/Documentation/user/examples.itely +++ b/Documentation/user/examples.itely @@ -75,7 +75,7 @@ The first example gives you a staff with notes, suitable for a solo instrument or a melodic fragment. Cut and paste this into a file, add notes, and you're finished! -@lilypond[verbatim,raggedright] +@lilypond[quote,verbatim,raggedright] \version "2.3.22" melody = \relative c' { \clef treble @@ -100,7 +100,7 @@ automatic beaming, which is common for vocal parts. If you want to use automatic beaming, you'll have to change or comment out the relevant line. -@lilypond[verbatim,raggedright] +@lilypond[quote,verbatim,raggedright] \version "2.3.22" melody = \relative c' { \clef treble @@ -131,7 +131,7 @@ text = \lyricmode { Want to prepare a lead sheet with a melody and chords? Look no further! -@lilypond[verbatim,raggedright] +@lilypond[quote,verbatim,raggedright] \version "2.3.22" melody = \relative c' { \clef treble @@ -164,7 +164,7 @@ harmonies = \chordmode { This template allows you to prepare a song with melody, words, and chords. -@lilypond[verbatim,raggedright] +@lilypond[quote,verbatim,raggedright] \version "2.3.22" melody = \relative c' { \clef treble @@ -205,7 +205,7 @@ harmonies = \chordmode { Here is a simple piano staff. -@lilypond[verbatim,raggedright] +@lilypond[quote,verbatim,raggedright] \version "2.3.22" upper = \relative c'' { \clef treble @@ -239,7 +239,7 @@ lower = \relative c { Here is a typical song format: one staff with the melody and lyrics, with piano accompaniment underneath. -@lilypond[verbatim,raggedright] +@lilypond[quote,verbatim,raggedright] \version "2.3.22" melody = \relative c'' { \clef treble @@ -295,7 +295,7 @@ lower = \relative c { Instead of having a full staff for the melody and lyrics, you can place the lyrics between the piano staff (and omit the separate melody staff). -@lilypond[verbatim,raggedright] +@lilypond[quote,verbatim,raggedright] \version "2.3.22" upper = \relative c'' { \clef treble @@ -343,7 +343,7 @@ staffs. This requires a bit of tweaking to implement, but since the template is right here, you don't have to do the tweaking yourself. -@lilypond[verbatim,raggedright] +@lilypond[quote,verbatim,raggedright] \version "2.3.22" upper = \relative c'' { \clef treble @@ -435,7 +435,7 @@ pedal = { This template demonstrates a string quartet. It also uses a @code{\global} section for time and key signatures. -@lilypond[verbatim,raggedright] +@lilypond[quote,verbatim,raggedright] \version "2.3.22" global = { \time 4/4 @@ -491,7 +491,7 @@ it's often useful to include a section which is included in all parts. For example, the time signature and key signatures are almost always the same for all parts. -@lilypond[verbatim,raggedright] +@lilypond[quote,verbatim,raggedright] \version "2.3.22" global = { \key c \major @@ -530,15 +530,19 @@ bassWords = \lyricmode { \context ChoirStaff << \context Lyrics = sopranos { s1 } \context Staff = women << - \context Voice = sopranos { \voiceOne << \global \sopMusic >> } - \context Voice = altos { \voiceTwo << \global \altoMusic >> } + \context Voice = + sopranos { \voiceOne << \global \sopMusic >> } + \context Voice = + altos { \voiceTwo << \global \altoMusic >> } >> \context Lyrics = altos { s1 } \context Lyrics = tenors { s1 } \context Staff = men << \clef bass - \context Voice = tenors { \voiceOne <<\global \tenorMusic >> } - \context Voice = basses { \voiceTwo <<\global \bassMusic >> } + \context Voice = + tenors { \voiceOne <<\global \tenorMusic >> } + \context Voice = + basses { \voiceTwo <<\global \bassMusic >> } >> \context Lyrics = basses { s1 } \context Lyrics = sopranos \lyricsto sopranos \sopWords @@ -549,7 +553,8 @@ bassWords = \lyricmode { \layout { \context { - % a little smaller so lyrics can be closer to the staff. + % a little smaller so lyrics + % can be closer to the staff \Staff minimumVerticalExtent = #'(-3 . 3) } } @@ -571,217 +576,223 @@ mensural music; in fact, the meter often changed after every few notes. As a compromise, bar lines are often printed between the staves rather than on the staves. -@lilypond[verbatim,linewidth=11.0\cm] +@lilypond[quote,verbatim,linewidth=11.0\cm] \version "2.3.22" global = { - % incipit - \once \override Score.SystemStartBracket #'transparent = ##t - \key f \major - \time 2/2 - \once \override Staff.TimeSignature #'style = #'neomensural - \override Voice.NoteHead #'style = #'neomensural - \override Voice.Rest #'style = #'neomensural - \set Staff.printKeyCancellation = ##f - \cadenzaOn % turn off bar lines - \skip 1*10 - \once \override Staff.BarLine #'transparent = ##f - \bar "||" - \skip 1*1 % need this extra \skip such that clef change comes - % after bar line - \bar "" - - % main - \cadenzaOff % turn bar lines on again - \once \override Staff.Clef #'full-size-change = ##t - \set Staff.forceClef = ##t - \key g \major - \time 4/4 - \override Voice.NoteHead #'style = #'default - \override Voice.Rest #'style = #'default + % incipit + \once \override Score.SystemStartBracket #'transparent = ##t + \key f \major + \time 2/2 + \once \override Staff.TimeSignature #'style = #'neomensural + \override Voice.NoteHead #'style = #'neomensural + \override Voice.Rest #'style = #'neomensural + \set Staff.printKeyCancellation = ##f + \cadenzaOn % turn off bar lines + \skip 1*10 + \once \override Staff.BarLine #'transparent = ##f + \bar "||" + \skip 1*1 % need this extra \skip such that clef change comes + % after bar line + \bar "" + + % main + \cadenzaOff % turn bar lines on again + \once \override Staff.Clef #'full-size-change = ##t + \set Staff.forceClef = ##t + \key g \major + \time 4/4 + \override Voice.NoteHead #'style = #'default + \override Voice.Rest #'style = #'default - % FIXME: setting printKeyCancellation back to #t must not - % occur in the first bar after the incipit. Dto. for forceClef. - % Therefore, we need an extra \skip. - \skip 1*1 - \set Staff.printKeyCancellation = ##t - \set Staff.forceClef = ##f + % FIXME: setting printKeyCancellation back to #t must not + % occur in the first bar after the incipit. Dto. for forceClef. + % Therefore, we need an extra \skip. + \skip 1*1 + \set Staff.printKeyCancellation = ##t + \set Staff.forceClef = ##f - \skip 1*5 + \skip 1*5 - % last bar contains a brevis (i.e. spans 2 bars); - % therefore do not draw this particular bar - \cadenzaOn - \skip 1*2 - \cadenzaOff + % last bar contains a brevis (i.e. spans 2 bars); + % therefore do not draw this particular bar + \cadenzaOn + \skip 1*2 + \cadenzaOff - % let finis bar go through all staves - \override Staff.BarLine #'transparent = ##f + % let finis bar go through all staves + \override Staff.BarLine #'transparent = ##f - % finis bar - \bar "|." + % finis bar + \bar "|." } discantusNotes = { - \transpose c' c'' { - \set Staff.instrument = "Discantus " - - % incipit - \clef "neomensural-c1" - c'1. s2 % two bars - \skip 1*8 % eight bars - \skip 1*1 % one bar - - % main - \clef "treble" - d'2. d'4 | - b e' d'2 | - c'4 e'4.( d'8 c' b | - a4) b a2 | - b4.( c'8 d'4) c'4 | - \once \override NoteHead #'transparent = ##t c'1 | - b\breve | - } + \transpose c' c'' { + \set Staff.instrument = "Discantus " + + % incipit + \clef "neomensural-c1" + c'1. s2 % two bars + \skip 1*8 % eight bars + \skip 1*1 % one bar + + % main + \clef "treble" + d'2. d'4 | + b e' d'2 | + c'4 e'4.( d'8 c' b | + a4) b a2 | + b4.( c'8 d'4) c'4 | + \once \override NoteHead #'transparent = ##t c'1 | + b\breve | + } } discantusLyrics = \lyricmode { - % incipit - IV- + % incipit + IV- - % main - Ju -- bi -- | - la -- te De -- | - o, om -- - nis ter -- | - ra, __ om- | - "..." | - -us. | + % main + Ju -- bi -- | + la -- te De -- | + o, om -- + nis ter -- | + ra, __ om- | + "..." | + -us. | } altusNotes = { - \transpose c' c'' { - \set Staff.instrument = "Altus " - - % incipit - \clef "neomensural-c3" - r1 % one bar - f1. s2 % two bars - \skip 1*7 % seven bars - \skip 1*1 % one bar - - % main - \clef "treble" - r2 g2. e4 fis g | % two bars - a2 g4 e | - fis g4.( fis16 e fis4) | - g1 | - \once \override NoteHead #'transparent = ##t g1 | - g\breve | - } + \transpose c' c'' { + \set Staff.instrument = "Altus " + + % incipit + \clef "neomensural-c3" + r1 % one bar + f1. s2 % two bars + \skip 1*7 % seven bars + \skip 1*1 % one bar + + % main + \clef "treble" + r2 g2. e4 fis g | % two bars + a2 g4 e | + fis g4.( fis16 e fis4) | + g1 | + \once \override NoteHead #'transparent = ##t g1 | + g\breve | + } } altusLyrics = \lyricmode { - % incipit - IV- + % incipit + IV- - % main - Ju -- bi -- la -- te | % two bars - De -- o, om -- | - nis ter -- ra, | - "..." | - -us. | + % main + Ju -- bi -- la -- te | % two bars + De -- o, om -- | + nis ter -- ra, | + "..." | + -us. | } tenorNotes = { - \transpose c' c' { - \set Staff.instrument = "Tenor " - - % incipit - \clef "neomensural-c4" - r\longa % four bars - r\breve % two bars - r1 % one bar - c'1. s2 % two bars - \skip 1*1 % one bar - \skip 1*1 % one bar - - % main - \clef "treble_8" - R1 | - R1 | - R1 | - r2 d'2. d'4 b e' | % two bars - \once \override NoteHead #'transparent = ##t e'1 | - d'\breve | - } + \transpose c' c' { + \set Staff.instrument = "Tenor " + + % incipit + \clef "neomensural-c4" + r\longa % four bars + r\breve % two bars + r1 % one bar + c'1. s2 % two bars + \skip 1*1 % one bar + \skip 1*1 % one bar + + % main + \clef "treble_8" + R1 | + R1 | + R1 | + r2 d'2. d'4 b e' | % two bars + \once \override NoteHead #'transparent = ##t e'1 | + d'\breve | + } } tenorLyrics = \lyricmode { - % incipit - IV- + % incipit + IV- - % main - Ju -- bi -- la -- te | % two bars - "..." | - -us. | + % main + Ju -- bi -- la -- te | % two bars + "..." | + -us. | } bassusNotes = { - \transpose c' c' { - \set Staff.instrument = "Bassus " - - % incipit - \clef "bass" - r\maxima % eight bars - f1. s2 % two bars - \skip 1*1 % one bar - - % main - \clef "bass" - R1 | - R1 | - R1 | - R1 | - g2. e4 | - \once \override NoteHead #'transparent = ##t e1 | - g\breve | - } + \transpose c' c' { + \set Staff.instrument = "Bassus " + + % incipit + \clef "bass" + r\maxima % eight bars + f1. s2 % two bars + \skip 1*1 % one bar + + % main + \clef "bass" + R1 | + R1 | + R1 | + R1 | + g2. e4 | + \once \override NoteHead #'transparent = ##t e1 | + g\breve | + } } bassusLyrics = \lyricmode { - % incipit - IV- + % incipit + IV- - % main - Ju -- bi- | - "..." | - -us. | + % main + Ju -- bi- | + "..." | + -us. | } \score { - \context StaffGroup = choirStaff << - \context Voice = discantusNotes << \global \discantusNotes >> - \context Lyrics = discantusLyrics - \lyricsto discantusNotes { \discantusLyrics } - \context Voice = altusNotes << \global \altusNotes >> - \context Lyrics = altusLyrics \lyricsto altusNotes { \altusLyrics } - \context Voice = tenorNotes << \global \tenorNotes >> - \context Lyrics = tenorLyrics \lyricsto tenorNotes { \tenorLyrics } - \context Voice = bassusNotes << \global \bassusNotes >> - \context Lyrics = bassusLyrics - \lyricsto bassusNotes { \bassusLyrics } - >> - \layout { - \context { - \Score - \override BarLine #'transparent = ##t - \remove "System_start_delimiter_engraver" - } - \context { - \Voice - \override Slur #'transparent = ##t - } - } + \context StaffGroup = choirStaff << + \context Voice = + discantusNotes << \global \discantusNotes >> + \context Lyrics = + discantusLyrics \lyricsto discantusNotes { \discantusLyrics } + \context Voice = + altusNotes << \global \altusNotes >> + \context Lyrics = + altusLyrics \lyricsto altusNotes { \altusLyrics } + \context Voice = + tenorNotes << \global \tenorNotes >> + \context Lyrics = + tenorLyrics \lyricsto tenorNotes { \tenorLyrics } + \context Voice = + bassusNotes << \global \bassusNotes >> + \context Lyrics = + bassusLyrics \lyricsto bassusNotes { \bassusLyrics } + >> + \layout { + \context { + \Score + \override BarLine #'transparent = ##t + \remove "System_start_delimiter_engraver" + } + \context { + \Voice + \override Slur #'transparent = ##t + } + } } @end lilypond @@ -805,7 +816,7 @@ is within a @code{\transpose} section. @c FIXME: produces a warning ; key change merge. @c The `linewidth' argument is for the \header. -@lilypond[verbatim,raggedright,linewidth] +@lilypond[quote,verbatim,raggedright,linewidth] \version "2.3.22" \header { title = "Song" @@ -813,8 +824,10 @@ is within a @code{\transpose} section. composer = "Me" meter = "moderato" piece = "Swing" - tagline = "LilyPond example file by Amelie Zapf, Berlin 07/07/2003" - texidoc = "Jazz tune for combo (horns, guitar, piano, bass, drums)." + tagline = "LilyPond example file by Amelie Zapf, + Berlin 07/07/2003" + texidoc = "Jazz tune for combo + (horns, guitar, piano, bass, drums)." } #(set-global-staff-size 16) @@ -823,14 +836,14 @@ is within a @code{\transpose} section. %%%%%%%%%%%% Some macros %%%%%%%%%%%%%%%%%%% sl = { - \override NoteHead #'style = #'slash - \override Stem #'transparent = ##t + \override NoteHead #'style = #'slash + \override Stem #'transparent = ##t } nsl = { - \revert NoteHead #'style - \revert Stem #'transparent + \revert NoteHead #'style + \revert Stem #'transparent } -cr = \override NoteHead #'style = #'cross +cr = \override NoteHead #'style = #'cross ncr = \revert NoteHead #'style %% insert chord name style stuff here. @@ -840,223 +853,220 @@ jzchords = { } %%%%%%%%%%%% Keys'n'thangs %%%%%%%%%%%%%%%%% -global = { - \time 4/4 +global = { + \time 4/4 } -Key = { \key c \major } +Key = { \key c \major } % ############ Horns ############ + % ------ Trumpet ------ trpt = \transpose c d \relative c'' { - \Key - c1 c c + \Key + c1 c c +} +trpharmony = \transpose c' d { + \jzchords } - -trpharmony = \transpose c' d { \jzchords } trumpet = { - \global - \set Staff.instrument = #"Trumpet" - \clef treble - \context Staff << - \trpt - >> + \global + \set Staff.instrument = #"Trumpet" + \clef treble + \context Staff << + \trpt + >> } % ------ Alto Saxophone ------ alto = \transpose c a \relative c' { - \Key - c1 c c + \Key + c1 c c +} +altoharmony = \transpose c' a { + \jzchords } - -altoharmony = \transpose c' a { \jzchords } altosax = { - \global - \set Staff.instrument = #"Alto Sax" - \clef treble - \context Staff << - \alto - >> + \global + \set Staff.instrument = #"Alto Sax" + \clef treble + \context Staff << + \alto + >> } % ------ Baritone Saxophone ------ bari = \transpose c a' \relative c { - \Key - c1 c \sl d4^"Solo" d d d \nsl + \Key + c1 c \sl d4^"Solo" d d d \nsl +} +bariharmony = \transpose c' a \chordmode { + \jzchords s1 s d2:maj e:m7 } - -bariharmony = \transpose c' a \chordmode { \jzchords s1 s d2:maj e:m7 } barisax = { - \global - \set Staff.instrument = #"Bari Sax" - \clef treble - \context Staff << - \bari - >> + \global + \set Staff.instrument = #"Bari Sax" + \clef treble + \context Staff << + \bari + >> } + % ------ Trombone ------ tbone = \relative c { - \Key - c1 c c + \Key + c1 c c +} +tboneharmony = \chordmode { + \jzchords } - -tboneharmony = \chordmode { \jzchords } trombone = { - \global - \set Staff.instrument = #"Trombone" - \clef bass - \context Staff << - \tbone - >> + \global + \set Staff.instrument = #"Trombone" + \clef bass + \context Staff << + \tbone + >> } + % ############ Rhythm Section ############# + % ------ Guitar ------ gtr = \relative c'' { - \Key - c1 \sl b4 b b b \nsl c1 + \Key + c1 \sl b4 b b b \nsl c1 } - -gtrharmony = \chordmode { \jzchords - s1 c2:min7+ d2:maj9 +gtrharmony = \chordmode { + \jzchords + s1 c2:min7+ d2:maj9 } - guitar = { - \global - \set Staff.instrument = #"Guitar" - \clef treble - \context Staff << - \gtr - >> + \global + \set Staff.instrument = #"Guitar" + \clef treble + \context Staff << + \gtr + >> } %% ------ Piano ------ -rhUpper = \relative c'' { - \voiceOne - \Key - c1 c c +rhUpper = \relative c'' { + \voiceOne + \Key + c1 c c } - -rhLower = \relative c' { - \voiceTwo - \Key - e1 e e +rhLower = \relative c' { + \voiceTwo + \Key + e1 e e } -lhUpper = \relative c' { - \voiceOne - \Key - g1 g g +lhUpper = \relative c' { + \voiceOne + \Key + g1 g g } - -lhLower = \relative c { - \voiceTwo - \Key - c1 c c +lhLower = \relative c { + \voiceTwo + \Key + c1 c c } PianoRH = { - \clef treble - \global - \set Staff.midiInstrument = "acoustic grand" - \context Staff << - \context Voice = one \rhUpper - \context Voice = two \rhLower - >> + \clef treble + \global + \set Staff.midiInstrument = "acoustic grand" + \context Staff << + \context Voice = one \rhUpper + \context Voice = two \rhLower + >> } - PianoLH = { - \clef bass - \global - \set Staff.midiInstrument = "acoustic grand" - \context Staff << - \context Voice = one \lhUpper - \context Voice = two \lhLower - >> + \clef bass + \global + \set Staff.midiInstrument = "acoustic grand" + \context Staff << + \context Voice = one \lhUpper + \context Voice = two \lhLower + >> } piano = { - \context PianoStaff << - \set PianoStaff.instrument = #"Piano" - \context Staff = upper \PianoRH - \context Staff = lower \PianoLH - >> + \context PianoStaff << + \set PianoStaff.instrument = #"Piano" + \context Staff = upper \PianoRH + \context Staff = lower \PianoLH + >> } % ------ Bass Guitar ------ -bass = \relative c { - \Key - c1 c c +Bass = \relative c { + \Key + c1 c c } - bass = { - \global - \set Staff.instrument = #"Bass" - \clef bass - \context Staff << - \bass - >> + \global + \set Staff.instrument = #"Bass" + \clef bass + \context Staff << + \Bass + >> } - % ------ Drums ------ - +% ------ Drums ------ up = \drummode { - hh4 4 hh hh 4 - hh4 4 - hh4 4 - hh4 4 + hh4 4 hh hh 4 + hh4 4 + hh4 4 + hh4 4 } down = \drummode { - bd4 s bd s bd s bd s bd s bd s + bd4 s bd s bd s bd s bd s bd s } drumContents = { - \global - << - \set DrumStaff.instrument = #"Drums" - \new DrumVoice { \voiceOne \up } - \new DrumVoice { \voiceTwo \down } - >> + \global + << + \set DrumStaff.instrument = #"Drums" + \new DrumVoice { \voiceOne \up } + \new DrumVoice { \voiceTwo \down } + >> } %%%%%%%%% It All Goes Together Here %%%%%%%%%%%%%%%%%%%%%% \score { -<< - \context StaffGroup = horns << - \context Staff = trumpet \trumpet - - \context Staff = altosax \altosax - - \context ChordNames = barichords \bariharmony - - \context Staff = barisax \barisax - - \context Staff = trombone \trombone - >> + << + \context StaffGroup = horns << + \context Staff = trumpet \trumpet + \context Staff = altosax \altosax + \context ChordNames = barichords \bariharmony + \context Staff = barisax \barisax + \context Staff = trombone \trombone + >> - \context StaffGroup = rhythm << - \context ChordNames = chords \gtrharmony - \context Staff = guitar \guitar - \context PianoStaff = piano \piano + \context StaffGroup = rhythm << + \context ChordNames = chords \gtrharmony + \context Staff = guitar \guitar + \context PianoStaff = piano \piano + \context Staff = bass \bass + \new DrumStaff { \drumContents } + >> + >> - \context Staff = bass \bass + \layout { + \context { \RemoveEmptyStaffContext } + \context { + \Score + \override BarNumber #'padding = #3 + \override RehearsalMark #'padding = #2 + skipBars = ##t + } + } - \new DrumStaff { \drumContents } - >> ->> - \layout { - \context { \RemoveEmptyStaffContext } - \context { - \Score - \override BarNumber #'padding = #3 - \override RehearsalMark #'padding = #2 - skipBars = ##t - } - } - \midi { \tempo 4 = 75 } + \midi { \tempo 4 = 75 } } - @end lilypond @node Other templates @@ -1072,51 +1082,51 @@ violin concerto as TchaikovskyPI, whereas perhaps you wish to print "Petr Tchaikowski" on your music. @ The `linewidth' is for \header. -@lilypond[verbatim,raggedright,linewidth] +@lilypond[quote,verbatim,raggedright,linewidth] \version "2.3.22" \header { - dedication = "dedication" - title = "Title" - subtitle = "Subtitle" - subsubtitle = "Subsubtitle" - composer = "Composer (xxxx-yyyy)" - opus = "Opus 0" - piece = "Piece I" - instrument = "Instrument" - arranger = "Arranger" - poet = "Poet" - texttranslator = "Translator" - copyright = "public domain" - -% These are headers used by the Mutopia Project http://www.mutopiaproject.org/ - mutopiatitle = "" - mutopiacomposer = "" - mutopiapoet = "" - mutopiainstrument = "" - date = "composer's dates" - source = "urtext " - maintainer = "your name here" - maintainerEmail = "your email here" - maintainerWeb = "your home page" - lastupdated = "2004/Aug/26" + dedication = "dedication" + title = "Title" + subtitle = "Subtitle" + subsubtitle = "Subsubtitle" + composer = "Composer (xxxx-yyyy)" + opus = "Opus 0" + piece = "Piece I" + instrument = "Instrument" + arranger = "Arranger" + poet = "Poet" + texttranslator = "Translator" + copyright = "public domain" + + % These are headers used by the Mutopia Project + % http://www.mutopiaproject.org/ + mutopiatitle = "" + mutopiacomposer = "" + mutopiapoet = "" + mutopiainstrument = "" + date = "composer's dates" + source = "urtext " + maintainer = "your name here" + maintainerEmail = "your email here" + maintainerWeb = "your home page" + lastupdated = "2004/Aug/26" } \score { - \header { - piece = "piece1" - opus = "opus1" - } - { c'4 } + \header { + piece = "piece1" + opus = "opus1" + } + { c'4 } } \score { - \header { - piece = "piece2" - opus = "opus2" - } - { c'4 } + \header { + piece = "piece2" + opus = "opus2" + } + { c'4 } } - @end lilypond @subsection Gregorian template @@ -1126,26 +1136,25 @@ music. Gregorian music has no measure, no stems; it uses only half and quarter notes, and two types of barlines, a short one indicating a rest, and a second one indicating a breath mark. -@lilypond[verbatim,raggedright] +@lilypond[quote,verbatim,raggedright] barOne = { \once \override Staff.BarLine #'bar-size = #2 - \bar "|" } + \bar "|" } barTwo = { \once \override Staff.BarLine #'extra-offset = #'(0 . 2) - \once \override Staff.BarLine #'bar-size = #2 - \bar "|" } + \once \override Staff.BarLine #'bar-size = #2 + \bar "|" } chant = \relative c' { - \set Score.timing = ##f - \override Staff.Stem #'transparent = ##t + \set Score.timing = ##f + \override Staff.Stem #'transparent = ##t - f4 a2 \barTwo - g4 a2 f2 \barOne - g4( f) f( g) a2 + f4 a2 \barTwo + g4 a2 f2 \barOne + g4( f) f( g) a2 } \score { - \chant - \layout{ } - \midi { \tempo 4=60 } + \chant + \layout{ } + \midi { \tempo 4=60 } } - @end lilypond @subsection Bagpipe music @@ -1158,8 +1167,7 @@ completely. This template defines a large number of small segments TODO - replace Bagpipe template with Andrew McNabb's work? -@lilypond[verbatim] - +@lilypond[quote,verbatim] taor = { \grace { g32[ d' g e'] } } grip = { \grace { g32[ b g ] } } thrd = { \grace { g32[ d' c'] } } @@ -1185,41 +1193,39 @@ gdcg = { \grace { g'32[ d' c'] } } gcdg = { \grace { g'32[ c' d'] } } \transpose a a' { - #(add-grace-property 'Voice 'Stem 'length 6) - \time 6/8 \partial 4 - \tieUp - \slurUp - - f'4 | - \gg f'4 e'8 \thrd d'4. | - \eg a4.(a4) d'8 | - \gg d'4 f'8 \dble e'4. ( | \noBreak - e'8) d'4 \gg d'4 e'8 | - - \break - \time 9/8 - \dblf f'2.( f'4) d'8 | - \time 6/8 - \dblg g'4 a'8 \gg a'4. | - \thrd d'4.( d'4) \eg a8 | - \time 9/8 - \dble e'4 \lag e'8 \gg e'16[ d'8. e'8] \gg f'4 g'8 | - - \break - \time 6/8 - \gg f'4 e'8 \thrd d'4. | - \eg a4.( a4) d'8 | - \dblg g'4 a'8 \gg a'4. | - \thrd d'4.( d'4) f'8 | - - \break - \dblg g'4 e'8( e'8) \dblf f'8.[ e'16] | - \thrd d'4.( d'4) \cg d'8 | - \gg c'4 e'8 \thrd d'4.( | - d'4.) \gdcg d'4. - + #(add-grace-property 'Voice 'Stem 'length 6) + \time 6/8 \partial 4 + \tieUp + \slurUp + + f'4 | + \gg f'4 e'8 \thrd d'4. | + \eg a4.(a4) d'8 | + \gg d'4 f'8 \dble e'4. ( | \noBreak + e'8) d'4 \gg d'4 e'8 | + + \break + \time 9/8 + \dblf f'2.( f'4) d'8 | + \time 6/8 + \dblg g'4 a'8 \gg a'4. | + \thrd d'4.( d'4) \eg a8 | + \time 9/8 + \dble e'4 \lag e'8 \gg e'16[ d'8. e'8] \gg f'4 g'8 | + + \break + \time 6/8 + \gg f'4 e'8 \thrd d'4. | + \eg a4.( a4) d'8 | + \dblg g'4 a'8 \gg a'4. | + \thrd d'4.( d'4) f'8 | + + \break + \dblg g'4 e'8( e'8) \dblf f'8.[ e'16] | + \thrd d'4.( d'4) \cg d'8 | + \gg c'4 e'8 \thrd d'4.( | + d'4.) \gdcg d'4. } - @end lilypond diff --git a/Documentation/user/introduction.itely b/Documentation/user/introduction.itely index 153fc82da3..108340284c 100644 --- a/Documentation/user/introduction.itely +++ b/Documentation/user/introduction.itely @@ -127,12 +127,12 @@ The fragment only uses quarter notes: notes that are played in a constant rhythm. The spacing should reflect that. Unfortunately, the eye deceives us a little; not only does it notice the distance between note heads, it also takes into account the distance between -consecutive stems. As a result, the notes of an up-stem/down-stem +consecutive stems. As a result, the notes of an up-stem/@/down-stem combination should be put farther apart, and the notes of a down-up combination should be put closer together, all depending on the combined vertical positions of the notes. The first two measures are printed with this correction, the last two measures without. The notes -in the last two measures form down-stem/up-stem clumps of notes. +in the last two measures form down-stem/@/up-stem clumps of notes. @cindex typography @@ -798,12 +798,13 @@ The location of the documentation files that are mentioned here can vary from system to system. On occasion, this manual refers to initialization and example files. Throughout this manual, we refer to input files relative to the top-directory of the source archive. For -example, @file{input/test/bla.ly} may refer to the file -@file{lilypond-2.3.14/input/test/bla.ly}. On binary packages for the -Unix platform, the documentation and examples can typically be found -somewhere below @file{/usr/share/doc/lilypond/}. Initialization files, -for example @file{scm/lily.scm}, or @file{ly/engraver-init.ly}, are -usually found in the directory @file{/usr/share/lilypond/}. +example, @file{input/@/test/@/bla@/.ly} may refer to the file +@file{lilypond@/-2.3.14/@/input/@/test/@/bla@/.ly}. On binary packages +for the Unix platform, the documentation and examples can typically be +found somewhere below @file{/usr/@/share/@/doc/@/lilypond/}. +Initialization files, for example @file{scm/@/lily@/.scm}, or +@file{ly/@/engraver@/-init@/.ly}, are usually found in the directory +@file{/usr/@/share/@/lilypond/}. @cindex adjusting output @cindex variables @@ -817,7 +818,7 @@ usually found in the directory @file{/usr/share/lilypond/}. Finally, this and all other manuals, are available online both as PDF files and HTML from the web site, which can be found at -@uref{http://www.lilypond.org/}. +@uref{http://@/www@/.lilypond@/.org/}. @cindex website @cindex URL diff --git a/Documentation/user/invoking.itely b/Documentation/user/invoking.itely index 7e78888c54..d3feb6b4a7 100644 --- a/Documentation/user/invoking.itely +++ b/Documentation/user/invoking.itely @@ -4,13 +4,13 @@ This chapter details the technicalities of running LilyPond. - + @menu -* Invoking lilypond:: -* Error messages:: -* Reporting bugs:: -* Editor support:: -* Invoking lilypond-latex:: +* Invoking lilypond:: +* Error messages:: +* Reporting bugs:: +* Editor support:: +* Invoking lilypond-latex:: @end menu @node Invoking lilypond @@ -24,7 +24,7 @@ This chapter details the technicalities of running LilyPond. The @code{lilypond} may be called as follows from the command line. @example - lilypond [@var{option}]@dots{} @var{file}@dots{} +lilypond [@var{option}]@dots{} @var{file}@dots{} @end example @@ -71,52 +71,64 @@ There are other output options, but they are intended for developers. @item -h,--help Show a summary of usage. + @item --include, -I=@var{directory} Add @var{directory} to the search path for input files. @cindex file searching @cindex search path + @item -i,--init=@var{file} Set init file to @var{file} (default: @file{init.ly}). + @item -o,--output=@var{FILE} - Set the default output file to @var{FILE}. +Set the default output file to @var{FILE}. + @item --ps - Generate PostScript. +Generate PostScript. + @item --dvi - Generate DVI files. In this case, the @TeX{} backend should be - specified, i.e. @code{-f tex}. +Generate DVI files. In this case, the @TeX{} backend should be +specified, i.e. @code{-f tex}. + @item --png - Generate pictures of each page, in PNG format. This implies @code{--ps}. +Generate pictures of each page, in PNG format. This implies @code{--ps}. + @item --pdf - Generate PDF. This implies @code{--ps}. +Generate PDF. This implies @code{--ps}. + @item --preview - Generate an output file containing the titles and the first system +Generate an output file containing the titles and the first system + @item --no-pages - Do not generate the full pages. Useful in combination with +Do not generate the full pages. Useful in combination with @code{--preview}. + @item -s,--safe -Do not trust the @code{.ly} input. +Do not trust the @code{.ly} input. When LilyPond formatting is available through a web server, the @code{--safe} @b{MUST} be passed. This will prevent inline Scheme -code from wreaking havoc, for example +code from wreaking havoc, for example +@quotation @verbatim - #(system "rm -rf /") - { - c4^#(ly:export (ly:gulp-file "/etc/passwd")) - } +#(system "rm -rf /") +{ + c4^#(ly:export (ly:gulp-file "/etc/passwd")) +} @end verbatim +@end quotation The @code{--safe} option works by evaluating in-line Scheme expressions in a special safe module. This safe module is derived from GUILE @file{safe-r5rs} module, but adds a number of functions of the -LilyPond API. These functions are listed in @file{scm/safe-lily.scm}. +LilyPond API. These functions are listed in @file{scm/@/safe@/-lily@/.scm}. In addition, @code{--safe} disallows @code{\include} directives and disables the use of backslashes in @TeX{} strings. In @code{--safe} mode, it is not possible to import LilyPond variables -into Scheme. +into Scheme. @code{--safe} does @emph{not} detect resource overuse. It is still possible to make the program hang indefinitely, for example by feeding @@ -131,21 +143,21 @@ Be verbose: show full paths of all files read, and give timing information. @item -w,--warranty -Show the warranty with which GNU LilyPond comes. (It comes with +Show the warranty with which GNU LilyPond comes. (It comes with @strong{NO WARRANTY}!) @end table -@section Environment variables +@section Environment variables For processing both the @TeX{} and the PostScript output, the appropriate environment variables must be set. The following scripts do this: @itemize @bullet -@item @file{buildscripts/out/lilypond-profile} +@item @file{buildscripts/@/out/@/lilypond@/-profile} (for SH shells) -@item @file{buildscripts/out/lilypond-login} (for C-shells) +@item @file{buildscripts/@/out/@/lilypond@/-login} (for C-shells) @end itemize They should normally be sourced as part of the login process. If these @@ -157,13 +169,13 @@ run it yourself. If you use sh, bash, or a similar shell, then add the following to your @file{.profile}: @example - . @var{/the/path/to/}lilypond-profile +. @var{/the/path/to/}lilypond-profile @end example If you use csh, tcsh or a similar shell, then add the following to your @file{~/.login}: @example - source @var{/the/path/to/}lilypond-login +source @var{/the/path/to/}lilypond-login @end example Of course, in both cases, you should substitute the proper location of @@ -172,7 +184,7 @@ either script. These scripts set the following variables: @table @code @item TEXMF - To make sure that @TeX{} and lilypond find data files (among +To make sure that @TeX{} and lilypond find data files (among others @file{.tex}, @file{.mf} and @file{.tfm}), you have to set @code{TEXMF} to point to the lilypond data file tree. A typical setting would be @@ -211,7 +223,7 @@ Different error messages can appear while compiling a file: @cindex warning @item Warning - Something looks suspect. If you are requesting something out of the +Something looks suspect. If you are requesting something out of the ordinary then you will understand the message, and can ignore it. However, warnings usually indicate that something is wrong with the input file. @@ -257,16 +269,16 @@ be linked to some part of the input file, then error messages have the following form @example - @var{filename}:@var{lineno}:@var{columnno}: @var{message} - @var{offending input line} -@end example +@var{filename}:@var{lineno}:@var{columnno}: @var{message} +@var{offending input line} +@end example A line-break is inserted in offending line to indicate the column -where the error was found. For example, +where the error was found. For example, @example test.ly:2:19: error: not a duration: 5: - @{ c'4 e'5 + @{ c'4 e'5 g' @} @end example @@ -291,31 +303,30 @@ problem. Don't forget to tell which version of LilyPond you use! Send the report to @email{bug-lilypond@@gnu.org}. When you've found a bug, have a look at our -@uref{http://@/lilypond.org/@/doc/@/v2.3/@/bugs/,bug database} to see if it -has already been reported. You could also try doing a few searches +@uref{http://@/lilypond@/.org/@/doc/@/v2.3/@/bugs/,bug database} to see if +it has already been reported. You could also try doing a few searches on the mailing list for the bug. Sometimes the bug will have already been reported and a fix or workaround is already known. Here is an example of a good bug report: -@verbatim - -It seems that placement of accidentals is broken. In the +@example +It seems that placement of accidentals is broken. In the following example, the accidental touches the note head. Using Mac OSX 10.3.5, fink package lilypond-unstable \version "2.3.22" -\relative c''{ +\relative c''@{ a4 b cis d -} -@end verbatim +@} +@end example -@lilypond +@lilypond[quote] \version "2.3.22" \relative c''{ - \override Accidental #'extra-offset = #'(1.0 . 0) - a4 b cis d + \override Accidental #'extra-offset = #'(1.0 . 0) + a4 b cis d } @end lilypond @@ -325,7 +336,7 @@ Using Mac OSX 10.3.5, fink package lilypond-unstable @cindex editors @cindex vim @cindex emacs -@cindex modes, editor +@cindex modes, editor @cindex syntax coloring @cindex coloring, syntax @@ -347,8 +358,8 @@ installation instructions. @item VIM -For @uref{http://www.vim.org,VIM}, a @file{vimrc} is supplied, along with -syntax coloring tools. For more information, refer to the +For @uref{http://@/www@/.vim@/.org,VIM}, a @file{vimrc} is supplied, along +with syntax coloring tools. For more information, refer to the @ifhtml @uref{../../../topdocs/out-www/INSTALL.html,installation instructions}. @end ifhtml @@ -359,7 +370,7 @@ installation instructions. @item JEdit -The @uref{http://www.jedit.org/,jEdit} editor has a LilyPond plugin. +The @uref{http://@/www@/.jedit@/.org/,jEdit} editor has a LilyPond plugin. This plugin includes a DVI viewer, integrated help and viewing via GhostScript. It can be installed by doing @key{Plugins > Plugin Manager}, and selecting @code{LilyTool} from the @key{Install} tab. @@ -375,7 +386,7 @@ of a symbol in the graphical output. See @ref{Point and click}. @node Invoking lilypond-latex @section Invoking lilypond-latex -Before LilyPond 3.0, the @code{lilypond} program only generated music +Before LilyPond 2.4, the @code{lilypond} program only generated music notation. Titles and page layout was done in a separate wrapper program. For compatibility with older files, this wrapper program has been retained as @code{lilypond-latex}. It uses the LilyPond program @@ -386,7 +397,7 @@ La@TeX{} options or formatting codes in markup texts. The @code{lilypond-latex} wrapper is invoked from the command-line as follows @example - @code{lilypond-latex} [@var{option}]@dots{} @var{file}@dots{} +@code{lilypond-latex} [@var{option}]@dots{} @var{file}@dots{} @end example To have @code{lilypond-latex} read from stdin, use a dash @code{-} for @@ -396,18 +407,23 @@ To have @code{lilypond-latex} read from stdin, use a dash @code{-} for @table @code @item -k,--keep - Keep the temporary directory with all output -files. The temporary directory is created in the current directory as @code{@code{lilypond}.dir}. +Keep the temporary directory with all output files. The temporary +directory is created in the current directory as @code{@code{lilypond}.dir}. + @item -h,--help - Print usage help. +Print usage help. + @item -I,--include=@var{dir} - Add @var{dir} to LilyPond's include path. +Add @var{dir} to LilyPond's include path. + @item -o,--output=@var{file} - Generate output to @var{file}. The extension of @var{file} is ignored. +Generate output to @var{file}. The extension of @var{file} is ignored. + @item --png - Also generate pictures of each page, in PNG format. +Also generate pictures of each page, in PNG format. + @item --preview - Also generate a picture of the first system of the score. +Also generate a picture of the first system of the score. @cindex preview @cindex picture @@ -415,27 +431,30 @@ files. The temporary directory is created in the current directory as @code{@co @cindex pixmap @cindex thumbnail @cindex screen shot - + @item -s,--set=@var{key}=@var{val} - Add @var{key}= @var{val} to the settings, overriding those specified +Add @var{key}= @var{val} to the settings, overriding those specified in the files. Possible keys: @code{language}, @code{latexheaders}, @code{latexpackages}, @code{latexoptions}, @code{papersize}, @code{linewidth}, @code{orientation}, @code{textheight}. + @item -v,--version Show version information. + @item -V,--verbose Be verbose. This prints out commands as they are executed, and more information about the formatting process is printed. + @item --debug Print even more information. This is useful when generating bug reports. + @item -w,--warranty -Show the warranty with which GNU LilyPond comes. (It comes with +Show the warranty with which GNU LilyPond comes. (It comes with @strong{NO WARRANTY}!) @end table - @subsection Additional parameters The @code{lilypond} program responds to several parameters specified @@ -444,48 +463,45 @@ by supplying a @code{--set} command line option. @table @code @item language - Specify La@TeX{} language: the @code{babel} package will be +Specify La@TeX{} language: the @code{babel} package will be included. Default: unset. - Read from the @code{\header} block. +Read from the @code{\header} block. @item latexheaders - Specify additional La@TeX{} headers file. - Normally read from the @code{\header} block. Default value: empty. +Specify additional La@TeX{} headers file. +Normally read from the @code{\header} block. Default value: empty. @item latexpackages - Specify additional La@TeX{} packages file. This works cumulative, +Specify additional La@TeX{} packages file. This works cumulative, so you can add multiple packages using multiple @code{-s=latexpackages} options. - Normally read from the @code{\header} block. Default value: +Normally read from the @code{\header} block. Default value: @code{geometry}. @item latexoptions - Specify additional options for the La@TeX{} +Specify additional options for the La@TeX{} @code{\documentclass}. You can put any valid value here. This was designed to allow @code{lilypond} to produce output for double-sided paper, with balanced margins and page numbers on alternating sides. To achieve this specify @code{twoside}. @item orientation - Set orientation. Choices are @code{portrait} or @code{landscape}. Is +Set orientation. Choices are @code{portrait} or @code{landscape}. Is read from the @code{\layout} block, if set. - + @item textheight - The vertical extension of the music on the page. It is normally - calculated automatically, based on the paper size. +The vertical extension of the music on the page. It is normally +calculated automatically, based on the paper size. @item linewidth - The music line width. It is normally read from the @code{\layout} +The music line width. It is normally read from the @code{\layout} block. @item papersize - The paper size (as a name, e.g. @code{a4}). It is normally read from +The paper size (as a name, e.g. @code{a4}). It is normally read from the @code{\layout} block. - + @item fontenc - The font encoding, should be set identical to the @code{font-encoding} - property in the score. +The font encoding, should be set identical to the @code{font-encoding} +property in the score. @end table - - - diff --git a/Documentation/user/lilypond-book.itely b/Documentation/user/lilypond-book.itely index 56a3a013c1..a544ad1a68 100644 --- a/Documentation/user/lilypond-book.itely +++ b/Documentation/user/lilypond-book.itely @@ -551,8 +551,12 @@ You can use any filename extension, but if you do not use the recommended extension, you may need to manually specify what output format you want. See @ref{Invoking lilypond-book} for details. -@code{Lilypond-book} automatically selects the output format based -on the filename. +@code{lilypond-book} automatically selects the output format based +on the filename. For example, running @code{lilypond-book myfile.lytex} +will make @code{lilypond-book} produce latex output. If the file +was merely @code{myfile}, then @code{lilypond-book} would not know +which output format to produce (unless you specified it with +@code{-f=latex}. @table @code diff --git a/Documentation/user/lilypond.tely b/Documentation/user/lilypond.tely index 9430a7b369..92e9c8d3c5 100644 --- a/Documentation/user/lilypond.tely +++ b/Documentation/user/lilypond.tely @@ -155,7 +155,7 @@ Copyright 1999--2004 by the authors @top GNU LilyPond --- The music typesetter @c HJJ: Info needs `@top', which is a synonym for `@unnumbered' in TeX. -This is the user manual for GNU LilyPond 2.3.x series. +This is the user manual for GNU LilyPond 2.5.x series. @ifhtml (See the bottom of this page for the exact version number). @end ifhtml @@ -163,8 +163,8 @@ This is the user manual for GNU LilyPond 2.3.x series. @cindex web site A further source of information is the website, which can be found at -@uref{http://www.lilypond.org/}. The website contains on-line copies of -this and other documentation. +@uref{http://@/www@/.lilypond@/.org/}. The website contains on-line copies +of this and other documentation. @include dedication.itely diff --git a/Documentation/user/literature.itely b/Documentation/user/literature.itely index b561b48b9b..143d8c0596 100644 --- a/Documentation/user/literature.itely +++ b/Documentation/user/literature.itely @@ -58,5 +58,5 @@ practices. @end table The source archive includes a more elaborate Bib@TeX{} bibliography of -over 100 entries in @file{Documentation/bibliography/}. It is also +over 100 entries in @file{Documentation/@/bibliography/}. It is also available online from the website. diff --git a/Documentation/user/notation.itely b/Documentation/user/notation.itely index c91e4f17da..74b141709f 100644 --- a/Documentation/user/notation.itely +++ b/Documentation/user/notation.itely @@ -13,24 +13,24 @@ by LilyPond. It is intended as a reference for users that are already somewhat familiar with LilyPond. @menu -* Note entry:: -* Easier music entry:: -* Staff notation:: -* Polyphony:: -* Beaming:: -* Accidentals:: -* Expressive marks:: -* Repeats:: -* Rhythmic music:: -* Piano music:: -* Vocal music:: -* Other instrument specific notation:: -* Tablatures:: -* Popular music:: -* Orchestral music:: -* Ancient notation:: -* Contemporary notation:: -* Educational use:: +* Note entry:: +* Easier music entry:: +* Staff notation:: +* Polyphony:: +* Beaming:: +* Accidentals:: +* Expressive marks:: +* Repeats:: +* Rhythmic music:: +* Piano music:: +* Vocal music:: +* Other instrument specific notation:: +* Tablatures:: +* Popular music:: +* Orchestral music:: +* Ancient notation:: +* Contemporary notation:: +* Educational use:: @end menu @c FIXME: Note entry vs Music entry at top level menu is confusing. @@ -43,19 +43,19 @@ This section is about basic notation elements notes, rests and related constructs, such as stems, tuplets and ties. @menu -* Notes:: -* Pitches:: -* Chromatic alterations:: -* Micro tones:: -* Chords:: -* Rests:: -* Skips:: -* Durations:: -* Augmentation dots:: -* Scaling durations:: -* Stems:: -* Ties:: -* Tuplets:: +* Notes:: +* Pitches:: +* Chromatic alterations:: +* Micro tones:: +* Chords:: +* Rests:: +* Skips:: +* Durations:: +* Augmentation dots:: +* Scaling durations:: +* Stems:: +* Ties:: +* Tuplets:: @end menu @@ -85,7 +85,7 @@ names. The notes are specified by the letters @code{a} through to @code{b}. The pitch @code{c} is an octave below middle C and the letters span the octave above that C -@lilypond[fragment,verbatim,noindent] +@lilypond[quote,fragment,verbatim] \clef bass a,4 b, c d e f g a b c' d' e' \clef treble f' g' a' b' c'' @end lilypond @@ -103,7 +103,7 @@ names are the Dutch note names. In Dutch, @code{aes} is contracted to ceses4 ces c -cis +cis cisis @end lilypond @@ -114,7 +114,7 @@ and the note names they define are @anchor{note name} @anchor{note names} -@example +@example Note Names sharp flat nederlands.ly c d e f g a bes b -is -es english.ly c d e f g a bf b -s/-sharp -f/-flat @@ -123,10 +123,9 @@ deutsch.ly c d e f g a b h -is -es norsk.ly c d e f g a b h -iss/-is -ess/-es svenska.ly c d e f g a b h -iss -ess italiano.ly do re mi fa sol la sib si -d -b -catalan.ly do re mi fa sol la sib si -d/-s -b -espanol.ly do re mi fa sol la sib si -s -b - -@end example +catalan.ly do re mi fa sol la sib si -d/-s -b +espanol.ly do re mi fa sol la sib si -s -b +@end example @cindex @code{'} @cindex @code{,} @@ -147,7 +146,7 @@ c' c'' es' g' as' gisis' ais' Notes can be hidden and unhidden with the following commands @cindex @code{\hideNotes} -@code{\hideNotes}, +@code{\hideNotes}, @cindex @code{\unHideNotes} @code{\unHideNotes}. @@ -197,7 +196,7 @@ Half-flats and half-sharps are formed by adding @code{-eh} and { ceseh ceh cih cisih } @end lilypond -Micro tones are also exported to the MIDI file +Micro tones are also exported to the MIDI file @refbugs @@ -285,7 +284,7 @@ The @code{s} skip command does create @internalsref{Staff} and commands. For example, the following results in an empty staff. @lilypond[quote,raggedright,verbatim] -{ s4 } +{ s4 } @end lilypond The fragment @code{@{ \skip 4 @} } would produce an empty page. @@ -313,29 +312,29 @@ a half note is entered using a @code{2} (since it is a 1/2 note). For notes longer than a whole you must use the variables @code{\longa} and @code{\breve} -@example -c'\breve +@example +c'\breve c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64 -r\longa r\breve -r1 r2 r4 r8 r16 r32 r64 r64 -@end example +r\longa r\breve +r1 r2 r4 r8 r16 r32 r64 r64 +@end example -@lilypond[quote,noindent] +@lilypond[quote] \score { \relative c'' { a\breve*1/2 \autoBeamOff - a1 a2 a4 a8 a16 a32 a64 a64 + a1 a2 a4 a8 a16 a32 a64 a64 \bar "empty" \break r\longa*1/4 r\breve *1/2 - r1 r2 r4 r8 r16 r32 r64 r64 + r1 r2 r4 r8 r16 r32 r64 r64 } \layout { raggedright = ##t \context { \Staff \remove "Clef_engraver" - \override StaffSymbol #'transparent = ##t + \override StaffSymbol #'transparent = ##t \override TimeSignature #'transparent = ##t \override BarLine #'transparent = ##t \consists "Pitch_squash_engraver" @@ -348,9 +347,7 @@ If the duration is omitted then it is set to the previously entered duration. The default for the first note is a quarter note. @lilypond[quote,raggedright,verbatim,fragment] -{ -a a a2 a a4 a a1 a -} +{ a a a2 a a4 a a1 a } @end lilypond @@ -373,15 +370,15 @@ situations. The following commands may be used to force a particular direction manually @cindex @code{\dotsUp} -@code{\dotsUp}, +@code{\dotsUp}, @cindex @code{\dotsDown} -@code{\dotsDown}, +@code{\dotsDown}, @cindex @code{\dotsNeutral} @code{\dotsNeutral}. @seealso -Program reference: @internalsref{Dots}, and @internalsref{DotColumn}. +Program reference: @internalsref{Dots}, and @internalsref{DotColumn}. @node Scaling durations @subsection Scaling durations @@ -416,11 +413,11 @@ made invisible. @refcommands @cindex @code{\stemUp} -@code{\stemUp}, +@code{\stemUp}, @cindex @code{\stemDown} -@code{\stemDown}, +@code{\stemDown}, @cindex @code{\stemNeutral} -@code{\stemNeutral}. +@code{\stemNeutral}. @node Ties @@ -457,7 +454,7 @@ values should be aligned to subdivisions of the measure, eg. @lilypond[fragment,quote,raggedright] \relative { - r8 c8 ~ c2 r4 | r8^"not" c2 ~ c8 r4 + r8 c8 ~ c2 r4 | r8^"not" c2 ~ c8 r4 } @end lilypond @@ -470,17 +467,17 @@ lines. @cindex @code{\tieUp} -@code{\tieUp}, +@code{\tieUp}, @cindex @code{\tieDown} -@code{\tieDown}, +@code{\tieDown}, @cindex @code{\tieNeutral} -@code{\tieNeutral}, +@code{\tieNeutral}, @cindex @code{\tieDotted} -@code{\tieDotted}, +@code{\tieDotted}, @cindex @code{\tieSolid} @code{\tieSolid}. -@seealso +@seealso In this manual: @ref{Automatic note splitting}. @@ -492,7 +489,7 @@ Program reference: @internalsref{TieEvent}, @internalsref{Tie}. Switching staves when a tie is active will not produce a slanted tie. Formatting of ties is a difficult subject. The results are often not -optimal. +optimal. @node Tuplets @subsection Tuplets @@ -539,15 +536,15 @@ instead. @cindex @code{tupletNumberFormatFunction} -@cindex tuplet formatting +@cindex tuplet formatting @refcommands @cindex @code{\tupletUp} -@code{\tupletUp}, +@code{\tupletUp}, @cindex @code{\tupletDown} -@code{\tupletDown}, +@code{\tupletDown}, @cindex @code{\tupletNeutral} @code{\tupletNeutral}. @@ -559,13 +556,13 @@ User manual: @ref{Changing context properties on the fly} for the Program reference: @internalsref{TupletBracket}, and @internalsref{TimeScaledMusic}. -Examples: @inputfileref{input/regression,tuplet-nest.ly}. +Examples: @inputfileref{input/@/regression,tuplet@/-nest@/.ly}. @refbugs Nested tuplets are not formatted automatically. In this case, outer tuplet brackets should be moved manually, which is demonstrated in -@inputfileref{input/regression,tuplet-nest.ly}. +@inputfileref{input/@/regression,tuplet@/-nest@/.ly}. @@ -584,11 +581,11 @@ website for more information. @menu -* Relative octaves:: -* Octave check:: -* Bar check:: -* Skipping corrected music:: -* Automatic note splitting:: +* Relative octaves:: +* Octave check:: +* Bar check:: +* Skipping corrected music:: +* Automatic note splitting:: @end menu @@ -607,13 +604,16 @@ larger: a single error puts the rest of the piece off by one octave @cindex @code{\relative} @example - \relative @var{startpitch} @var{musicexpr} +\relative @var{startpitch} @var{musicexpr} @end example + +@noindent or + @example - \relative @var{musicexpr} +\relative @var{musicexpr} @end example - + The octave of notes that appear in @var{musicexpr} are calculated as follows: if no octave changing marks are used, the basic interval between this and the last note is always taken to be a fourth or @@ -632,7 +632,7 @@ is specified, then middle C is used as a start. Here is the relative mode shown in action @lilypond[quote,fragment,raggedright,verbatim] \relative c'' { - b c d c b c bes a + b c d c b c bes a } @end lilypond @@ -648,7 +648,7 @@ to determine the first note of the next chord @lilypond[quote,raggedright,fragment,verbatim] \relative c' { - c + c } @@ -670,7 +670,7 @@ Octave checks make octave errors easier to correct: a note may be followed by @code{=}@var{quotes} which indicates what its absolute octave should be. In the following example, @example -\relative c'' @{ c='' b=' d,='' @} +\relative c'' @{ c='' b=' d,='' @} @end example @noindent @@ -714,11 +714,11 @@ is a @code{a'}, above middle C. That means that the @code{\octave} check passes successfully, so the check could be deleted without changing the output of the piece. -@lilypond[quote,raggedright,verbatim,fragment] +@lilypond[quote,raggedright,verbatim,fragment] \relative c' { e \octave b - a + a } @end lilypond @@ -736,16 +736,16 @@ during interpretation, it should fall on a measure boundary. If it does not, a warning is printed. In the next example, the second bar check will signal an error @example -\time 3/4 c2 e4 | g2 | +\time 3/4 c2 e4 | g2 | @end example -Bar checks can also be used in lyrics, for example +Bar checks can also be used in lyrics, for example @example \lyricmode @{ \time 2/4 Twin -- kle | Twin -- kle -@} +@} @end example @@ -768,7 +768,7 @@ by assigning a music expression to @code{pipeSymbol}, pipeSymbol = \bar "||" { c'2 c' | c'2 c } -@end lilypond +@end lilypond @node Skipping corrected music @@ -806,7 +806,7 @@ In the following examples, notes crossing the bar line are split and tied. \remove "Note_heads_engraver" \consists "Completion_heads_engraver" } { - c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 + c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 } @end lilypond @@ -823,7 +823,7 @@ not insert tuplets. @seealso -Examples: @inputfileref{input/regression,completion-heads.ly}. +Examples: @inputfileref{input/@/regression,completion@/-heads@/.ly}. @noindent @@ -839,16 +839,16 @@ such as key signatures, clefs and time signatures. @cindex Staff notation @menu -* Staff symbol:: -* Key signature:: -* Clef:: -* Ottava brackets:: -* Time signature:: -* Partial measures:: -* Unmetered music:: -* Bar lines:: -* Time administration:: -* Controlling formatting of prefatory matter:: +* Staff symbol:: +* Key signature:: +* Clef:: +* Ottava brackets:: +* Time signature:: +* Partial measures:: +* Unmetered music:: +* Bar lines:: +* Time administration:: +* Controlling formatting of prefatory matter:: @end menu @node Staff symbol @@ -859,20 +859,20 @@ such as key signatures, clefs and time signatures. Notes, dynamic signs, etc. are grouped with a set of horizontal lines, into a staff (plural `staves'). In our system, these lines are drawn using a separate layout object called -staff symbol. +staff symbol. @cindex staff lines, setting number of @cindex staff lines, setting thickness of -@cindex thickness of staff lines, setting -@cindex number of staff lines, setting +@cindex thickness of staff lines, setting +@cindex number of staff lines, setting @seealso Program reference: @internalsref{StaffSymbol}. -Examples: @inputfileref{input/test,staff-lines.ly}, -@inputfileref{input/test,staff-size.ly}. +Examples: @inputfileref{input/@/test,staff@/-lines@/.ly}, +@inputfileref{input/@/test,staff@/-size@/.ly}. @refbugs @@ -894,7 +894,7 @@ staff. Setting or changing the key signature is done with the @code{\key} command @example - @code{\key} @var{pitch} @var{type} +@code{\key} @var{pitch} @var{type} @end example @cindex @code{\minor} @@ -951,11 +951,11 @@ Supported clef-names include @item treble, violin, G, G2 G clef on 2nd line @item alto, C -@cindex alto clef +@cindex alto clef C clef on 3rd line @item tenor -@cindex tenor clef - C clef on 4th line. +@cindex tenor clef + C clef on 4th line. @item bass, F @cindex bass clef F clef on 4th line @@ -990,7 +990,7 @@ must be enclosed in quotes when it contains underscores or digits. For example, -@cindex choral tenor clef +@cindex choral tenor clef @lilypond[quote,raggedright,verbatim,fragment,relative=1] \clef "G_8" c4 @end lilypond @@ -1001,7 +1001,7 @@ This command is equivalent to setting @code{clefGlyph}, when any of these properties are changed. The following example shows possibilities when setting properties manually. -@lilypond[raggedright,verbatim] +@lilypond[quote,raggedright,verbatim] { \set Staff.clefGlyph = #"clefs-F" \set Staff.clefPosition = #2 @@ -1010,9 +1010,9 @@ possibilities when setting properties manually. c'4 \set Staff.clefGlyph = #"clefs-C" c'4 - \set Staff.clefOctavation = #7 + \set Staff.clefOctavation = #7 c'4 - \set Staff.clefOctavation = #0 + \set Staff.clefOctavation = #0 \set Staff.clefPosition = #0 c'4 \clef "bass" @@ -1042,7 +1042,7 @@ the staff. They are created by invoking the function \relative c''' { a2 b #(set-octavation 1) - a b + a b #(set-octavation 0) a b } @@ -1066,8 +1066,8 @@ The @code{set-octavation} function also takes -1 (for 8va bassa) and 2 Program reference: @internalsref{OttavaBracket}. -Examples: @inputfileref{input/regression,ottava.ly}, -@inputfileref{input/regression,ottava-broken.ly}. +Examples: @inputfileref{input/@/regression,ottava@/.ly}, +@inputfileref{input/@/regression,ottava@/-broken@/.ly}. @refbugs @@ -1091,7 +1091,7 @@ staff. The time signature is set or changed by the @code{\time} command @lilypond[quote,raggedright,fragment,verbatim] -\time 2/4 c'2 \time 3/4 c'2. +\time 2/4 c'2 \time 3/4 c'2. @end lilypond The symbol that is printed can be customized with the @code{style} @@ -1132,7 +1132,7 @@ measure is subdivided in 2, 2, 2 and 3. This is passed to \score { \relative c'' { #(set-time-signature 9 8 '(2 2 2 3)) - g8[ g] d[ d] g[ g] a8[( bes g]) | + g8[ g] d[ d] g[ g] a8[( bes g]) | #(set-time-signature 5 8 '(3 2)) a4. g4 } @@ -1170,13 +1170,13 @@ Partial measures, for example in upsteps, are entered using the \partial 16*5 c16 cis d dis e | a2. c,4 | b2 @end lilypond -The syntax for this command is +The syntax for this command is @example - \partial @var{duration} +\partial @var{duration} @end example This is internally translated into @example - \set Timing.measurePosition = -@var{length of duration} +\set Timing.measurePosition = -@var{length of duration} @end example @cindex @code{|} The property @code{measurePosition} contains a rational number @@ -1190,10 +1190,10 @@ the @code{\partial} should follow the grace notes @lilypond[verbatim,quote,raggedright,relative,fragment] { - \grace f16 + \grace f16 \partial 4 g4 - a2 g2 + a2 g2 } @end lilypond @@ -1209,7 +1209,7 @@ music (e.g. cadenzas), this is not desirable. By setting off. Empty bar lines, @example - \bar "" +\bar "" @end example @noindent @@ -1218,7 +1218,7 @@ indicate where line breaks can occur. @refcommands @cindex @code{\cadenzaOn} -@code{\cadenzaOn}, +@code{\cadenzaOn}, @cindex @code{\cadenzaOff} @code{\cadenzaOff}. @@ -1249,8 +1249,8 @@ The following bar types are available For allowing line breaks, there is a special command, @example - \bar "" -@end example +\bar "" +@end example This will insert an invisible bar line, and allow line breaks at this point. @@ -1293,7 +1293,7 @@ You are encouraged to use @code{\repeat} for repetitions. See @seealso -In this manual: @ref{Repeats}, @ref{System start delimiters} +In this manual: @ref{Repeats}, @ref{System start delimiters}. Program reference: @internalsref{BarLine} (created at @@ -1304,7 +1304,7 @@ Program reference: @internalsref{BarLine} (created at -Examples: @inputfileref{input/test,bar-lines.ly}, +Examples: @inputfileref{input/@/test,bar@/-lines@/.ly}, @node Time administration @@ -1316,34 +1316,37 @@ The bookkeeping deals with the following variables @table @code @item currentBarNumber - the measure number +The measure number. + @item measureLength - the length of the measures in the current time signature. For a 4/4 - time this is 1, and for 6/8 it is 3/4. +The length of the measures in the current time signature. For a 4/4 +time this is@tie{}1, and for 6/8 it is 3/4. + @item measurePosition - the point within the measure where we currently are. This quantity - is reset to 0 whenever it exceeds @code{measureLength}. When that happens, - @code{currentBarNumber} is incremented. +The point within the measure where we currently are. This quantity +is reset to@tie{}0 whenever it exceeds @code{measureLength}. When that +happens, @code{currentBarNumber} is incremented. + @item timing - if set to true, the above variables are updated for every time - step. When set to false, the engraver stays in the current measure - indefinitely. +If set to true, the above variables are updated for every time +step. When set to false, the engraver stays in the current measure +indefinitely. @end table Timing can be changed by setting any of these variables explicitly. In the next example, the 4/4 time signature is printed, but @code{measureLength} is set to 5/4. After a while, the measure is shortened by 1/8, by setting @code{measurePosition} to -3/8 at 2/4 in -the measure, so the next bar line will fall at 2/4 + 3/8. +the measure, so the next bar line will fall at 2/4 + 3/8. -@lilypond[raggedright,verbatim,relative,fragment] - \set Score.measureLength = #(ly:make-moment 5 4) - c1 c4 - c1 c4 - c4 c4 - \set Score.measurePosition = #(ly:make-moment -3 8) - b8 b b - c4 c1 +@lilypond[quote,raggedright,verbatim,relative,fragment] +\set Score.measureLength = #(ly:make-moment 5 4) +c1 c4 +c1 c4 +c4 c4 +\set Score.measurePosition = #(ly:make-moment -3 8) +b8 b b +c4 c1 @end lilypond @@ -1353,31 +1356,32 @@ the measure, so the next bar line will fall at 2/4 + 3/8. TODO Somebody needs to explain this example, but I don't know what they're trying to do, so it won't be me. -gp -@lilypond[verbatim] +@lilypond[quote,verbatim] \transpose c c' { - \override Staff.Clef #'break-visibility = #end-of-line-visible - \override Staff.KeySignature #'break-visibility = #end-of-line-visible - \set Staff.explicitClefVisibility = #end-of-line-visible - \set Staff.explicitKeySignatureVisibility = #end-of-line-visible - - % We want the time sig to take space, otherwise there is not - % enough white at the start of the line. - % - - \override Staff.TimeSignature #'transparent = ##t - \set Score.defaultBarType = #"empty" - - c1 d e f g a b c - \key d \major - \break - - % see above. - \time 4/4 - - d e fis g a b cis d - \key g \major - \break - \time 4/4 + \override Staff.Clef + #'break-visibility = #end-of-line-visible + \override Staff.KeySignature + #'break-visibility = #end-of-line-visible + \set Staff.explicitClefVisibility = #end-of-line-visible + \set Staff.explicitKeySignatureVisibility = #end-of-line-visible + + % We want the time sig to take space, otherwise there is not + % enough white at the start of the line. + + \override Staff.TimeSignature #'transparent = ##t + \set Score.defaultBarType = #"empty" + + c1 d e f g a b c + \key d \major + \break + + % see above. + \time 4/4 + + d e fis g a b cis d + \key g \major + \break + \time 4/4 } @end lilypond @@ -1429,7 +1433,7 @@ a stem directions and horizontal shift for each part \relative c'' \context Staff << \new Voice { \voiceOne cis2 b } - \new Voice { \voiceThree b4 ais ~ ais4 gis4 } + \new Voice { \voiceThree b4 ais ~ ais4 gis4 } \new Voice { \voiceTwo fis4~ fis4 f ~ f } >> @end lilypond @@ -1443,8 +1447,8 @@ when the object property @code{merge-differently-dotted} is set in the @internalsref{NoteCollision} object, they are merged @lilypond[quote,verbatim,fragment,raggedright,relative=2] \context Voice << { - g8 g8 - \override Staff.NoteCollision + g8 g8 + \override Staff.NoteCollision #'merge-differently-dotted = ##t g8 g8 } \\ { g8.[ f16] g8.[ f16] } >> @@ -1473,24 +1477,24 @@ for example @cindex @code{\oneVoice} -@code{\oneVoice}, +@code{\oneVoice}, @cindex @code{\voiceOne} -@code{\voiceOne}, +@code{\voiceOne}, @cindex @code{\voiceTwo} -@code{\voiceTwo}, +@code{\voiceTwo}, @cindex @code{\voiceThree} -@code{\voiceThree}, +@code{\voiceThree}, @cindex @code{\voiceFour} @code{\voiceFour}. @cindex @code{\shiftOn} -@code{\shiftOn}, +@code{\shiftOn}, @cindex @code{\shiftOnn} -@code{\shiftOnn}, +@code{\shiftOnn}, @cindex @code{\shiftOnnn} -@code{\shiftOnnn}, +@code{\shiftOnnn}, @cindex @code{\shiftOff} @code{\shiftOff}: these commands specify in what chords of the current voice should be shifted. The outer voices (normally: voice one and @@ -1503,7 +1507,7 @@ When LilyPond cannot cope, the @code{force-hshift} property of the @internalsref{NoteColumn} object and pitched rests can be used to override typesetting decisions. -@lilypond[verbatim,raggedright] +@lilypond[quote,verbatim,raggedright] \relative << { @@ -1512,7 +1516,7 @@ be used to override typesetting decisions. \once \override NoteColumn #'force-hshift = #1.7 -} >> +} >> @end lilypond @@ -1522,7 +1526,7 @@ be used to override typesetting decisions. Program reference: the objects responsible for resolving collisions are @internalsref{NoteCollision} and @internalsref{RestCollision}. -Examples: +Examples: @inputfileref{input/@/regression,collision@/-dots@/.ly}, @inputfileref{input/@/regression,collision@/-head-chords@/.ly}, @inputfileref{input/@/regression,collision@/-heads@/.ly}, @@ -1553,9 +1557,9 @@ grouped. @cindex Automatic beams @menu * Automatic beams:: -* Manual beams:: -* Setting automatic beam behavior:: -* Beam formatting:: +* Manual beams:: +* Setting automatic beam behavior:: +* Beam formatting:: @end menu @node Automatic beams @@ -1581,7 +1585,7 @@ from being beamed @seealso -Program reference: @internalsref{Beam}. +Program reference: @internalsref{Beam}. @node Manual beams @@ -1626,7 +1630,7 @@ all 16th or shorter beams at beat positions, as defined by the @code{beatLength} property. -@lilypond[fragment,quote,relative=2,verbatim,noindent] +@lilypond[fragment,quote,relative=2,verbatim] c16[ c c c c c c c] \set subdivideBeams = ##t c16[ c c c c c c c] @@ -1669,7 +1673,7 @@ texts and accidentals. @node Setting automatic beam behavior -@subsection Setting automatic beam behavior +@subsection Setting automatic beam behavior @cindex @code{autoBeamSettings} @cindex @code{(end * * * *)} @@ -1683,14 +1687,14 @@ In normal time signatures, automatic beams can start on any note but can only end in a few positions within the measure: beams can end on a beat, or at durations specified by the properties in @code{autoBeamSettings}. The defaults for @code{autoBeamSettings} -are defined in @file{scm/auto-beam.scm}. +are defined in @file{scm/@/auto@/-beam@/.scm}. The value of @code{autoBeamSettings} is changed with two functions, @example - #(override-auto-beam-setting - '(@var{be} @var{p} @var{q} @var{n} @var{m}) @var{a} @var{b} - [@var{context}]) - #(revert-auto-beam-setting '(@var{be} @var{p} @var{q} @var{n} @var{m})) +#(override-auto-beam-setting + '(@var{be} @var{p} @var{q} @var{n} @var{m}) @var{a} @var{b} + [@var{context}]) +#(revert-auto-beam-setting '(@var{be} @var{p} @var{q} @var{n} @var{m})) @end example Here, @var{be} is the symbol @code{begin} or @code{end}, and @var{context} is an optional context (default: @code{'Voice}). It @@ -1706,7 +1710,7 @@ also possible to adjust settings at higher contexts, by adding a For example, if automatic beams should end on every quarter note, use the following @example - #(override-auto-beam-setting '(end * * * *) 1 4 'Staff) +#(override-auto-beam-setting '(end * * * *) 1 4 'Staff) @end example Since the duration of a quarter note is 1/4 of a whole note, it is entered as @code{(ly:make-moment 1 4)}. @@ -1714,7 +1718,7 @@ entered as @code{(ly:make-moment 1 4)}. The same syntax can be used to specify beam starting points. In this example, automatic beams can only end on a dotted quarter note @example - #(override-auto-beam-setting '(end * * * *) 3 8) +#(override-auto-beam-setting '(end * * * *) 3 8) @end example In 4/4 time signature, this means that automatic beams could end only on 3/8 and on the fourth beat of the measure (after 3/4, that is 2 times @@ -1725,7 +1729,7 @@ should only be applied in @var{N}/@var{M} time signature is formed by replacing the second asterisks by @var{N} and @var{M}. For example, a rule for 6/8 time exclusively looks like @example - #(override-auto-beam-setting '(begin * * 6 8) @dots{}) +#(override-auto-beam-setting '(begin * * 6 8) @dots{}) @end example If a rule should be to applied only to certain types of beams, use the @@ -1746,7 +1750,7 @@ beaming should be switched off. This is done by setting @refcommands @cindex @code{\autoBeamOff} -@code{\autoBeamOff}, +@code{\autoBeamOff}, @cindex @code{\autoBeamOn} @code{\autoBeamOn}. @@ -1789,14 +1793,15 @@ down. However, this behaviour can be altered with the @lilypond[quote,raggedright,relative=2,fragment,verbatim] { - b8[ b] + b8[ b] \override Beam #'neutral-direction = #-1 - b[ b] + b[ b] \override Beam #'neutral-direction = #1 - b[ b] + b[ b] } @end lilypond + @node Accidentals @section Accidentals @@ -1853,7 +1858,7 @@ voices, which is often an unwanted result The @code{voice} option should be used if the voices are to be read solely by individual musicians. If the staff is to be -used by one musician (e.g. a conductor) then +used by one musician (e.g. a conductor) then @code{modern} or @code{modern-cautionary} should be used instead. @@ -1921,7 +1926,7 @@ This is sort of the opposite of @code{no-reset}: Accidentals are not remembered at all---and hence all accidentals are typeset relative to the key signature, regardless of what was before in the music - + @lilypond[quote,raggedright,fragment,verbatim,relative=1] #(set-accidental-style 'forget) \key d\major c4 c cis cis d d dis dis @@ -1960,19 +1965,19 @@ Expressive marks help musicians to bring more to the music than simple notes and rhythms. @menu -* Slurs:: -* Phrasing slurs:: -* Breath marks:: -* Metronome marks:: -* Text scripts:: -* Text spanners:: -* Analysis brackets:: -* Articulations:: -* Running trills:: -* Fingering instructions:: -* Grace notes:: -* Glissando:: -* Dynamics:: +* Slurs:: +* Phrasing slurs:: +* Breath marks:: +* Metronome marks:: +* Text scripts:: +* Text spanners:: +* Analysis brackets:: +* Articulations:: +* Running trills:: +* Fingering instructions:: +* Grace notes:: +* Glissando:: +* Dynamics:: @end menu @node Slurs @@ -1983,47 +1988,47 @@ A slur indicates that notes are to be played bound or @emph{legato}. They are entered using parentheses @lilypond[quote,raggedright,relative=2,fragment,verbatim] - f( g a) a8 b( a4 g2 f4) - 2( 2) +f( g a) a8 b( a4 g2 f4) +2( 2) @end lilypond The direction of a slur can be set with the generic commands @example - \override Slur #'direction = #UP - \slurUp % shortcut for the previous line +\override Slur #'direction = #UP +\slurUp % shortcut for the previous line @end example @noindent However, there is a convenient shorthand for forcing slur directions. By adding @code{_} or @code{^} before the opening -parentheses, the direction is also set. For example, +parentheses, the direction is also set. For example, @lilypond[relative=2,raggedright,quote,verbatim,fragment] - c4_( c) c^( c) +c4_( c) c^( c) @end lilypond Some composers write two slurs when they want legato chords. This can be achieved in LilyPond by setting @code{doubleSlurs}, @lilypond[verbatim,raggedright,relative,fragment,quote] - \set doubleSlurs = ##t - 4 ( ) -@end lilypond +\set doubleSlurs = ##t +4 ( ) +@end lilypond + - @refcommands @cindex @code{\slurUp} -@code{\slurUp}, +@code{\slurUp}, @cindex @code{\slurDown} -@code{\slurDown}, +@code{\slurDown}, @cindex @code{\slurNeutral} -@code{\slurNeutral}, +@code{\slurNeutral}, @cindex @code{\slurDotted} -@code{\slurDotted}, +@code{\slurDotted}, @cindex @code{\slurSolid} @code{\slurSolid}. @@ -2043,7 +2048,7 @@ indicate a musical sentence. It is written using @code{\(} and @code{\)} respectively @lilypond[quote,raggedright,fragment,verbatim,relative=1] - \time 6/4 c'\( d( e) f( e) d\) +\time 6/4 c'\( d( e) f( e) d\) @end lilypond Typographically, the phrasing slur behaves almost exactly like a @@ -2058,9 +2063,9 @@ will only affect normal slurs and not phrasing slurs. @refcommands @cindex @code{\phrasingSlurUp} -@code{\phrasingSlurUp}, +@code{\phrasingSlurUp}, @cindex @code{\phrasingSlurDown} -@code{\phrasingSlurDown}, +@code{\phrasingSlurDown}, @cindex @code{\phrasingSlurNeutral} @code{\phrasingSlurNeutral}. @@ -2080,26 +2085,26 @@ Breath marks are entered using @code{\breathe} @lilypond[quote,raggedright,fragment,relative=1,verbatim] - c'4 \breathe d4 +c'4 \breathe d4 @end lilypond The glyph of the breath mark can be tuned by overriding the @code{text} property of the @code{BreathingSign} layout object with any markup text. For example, @lilypond[quote,raggedright,fragment,verbatim,relative=1] - c'4 - \override BreathingSign #'text - = #(make-musicglyph-markup "scripts-rvarcomma") - \breathe - d4 +c'4 +\override BreathingSign #'text + = #(make-musicglyph-markup "scripts-rvarcomma") +\breathe +d4 @end lilypond -@seealso +@seealso Program reference: @internalsref{BreathingSign}, @internalsref{BreathingSignEvent}. -Examples: @inputfileref{input/regression,breathing-sign.ly}. +Examples: @inputfileref{input/@/regression,breathing@/-sign@/.ly}. @node Metronome marks @@ -2110,21 +2115,21 @@ Examples: @inputfileref{input/regression,breathing-sign.ly}. @cindex metronome marking Metronome settings can be entered as follows -@example - \tempo @var{duration} = @var{per-minute} +@example +\tempo @var{duration} = @var{per-minute} @end example In the MIDI output, they are interpreted as a tempo change. In the layout output, a metronome marking is printed @cindex @code{\tempo} @lilypond[quote,raggedright,verbatim,fragment] - \tempo 8.=120 c''1 +\tempo 8.=120 c''1 @end lilypond @seealso Program reference: @internalsref{MetronomeChangeEvent}. - + @node Text scripts @subsection Text scripts @@ -2140,23 +2145,23 @@ note spacing, but by using the command @code{\fatText}, the widths will be taken into account @c @lilypond[quote,fragment,raggedright,verbatim,relative=1] - c4^"longtext" \fatText c4_"longlongtext" c4 +c4^"longtext" \fatText c4_"longlongtext" c4 @end lilypond More complex formatting may also be added to a note by using the markup command, @lilypond[fragment,raggedright,verbatim,quote] - c'4^\markup { bla \bold bla } +c'4^\markup { bla \bold bla } @end lilypond The @code{\markup} is described in more detail in @ref{Text markup}. - + @refcommands @cindex @code{\fatText} -@code{\fatText}, +@code{\fatText}, @cindex @code{\emptyText} @code{\emptyText}. @@ -2181,10 +2186,10 @@ The string to be printed, as well as the style, is set through object properties @lilypond[quote,raggedright,fragment,relative=1,verbatim] - c1 - \override TextSpanner #'direction = #-1 - \override TextSpanner #'edge-text = #'("rall " . "") - c2\startTextSpan b c\stopTextSpan a +c1 +\override TextSpanner #'direction = #-1 +\override TextSpanner #'edge-text = #'("rall " . "") +c2\startTextSpan b c\stopTextSpan a @end lilypond @@ -2193,7 +2198,7 @@ properties Internals @internalsref{TextSpanEvent}, @internalsref{TextSpanner}. -Examples: @inputfileref{input/regression,text-spanner.ly}. +Examples: @inputfileref{input/@/regression,text@/-spanner@/.ly}. @node Analysis brackets @@ -2211,7 +2216,7 @@ to @internalsref{Staff} context. A bracket is started with @lilypond[quote,raggedright,verbatim] \score { - \relative c'' { + \relative c'' { c4\startGroup\startGroup c4\stopGroup c4\startGroup @@ -2228,7 +2233,7 @@ to @internalsref{Staff} context. A bracket is started with Program reference: @internalsref{HorizontalBracket}, @internalsref{NoteGroupingEvent}. -Examples: @inputfileref{input/regression,note-group-bracket.ly}. +Examples: @inputfileref{input/@/regression,note@/-group@/-bracket@/.ly}. @node Articulations @@ -2247,7 +2252,7 @@ articulation. They are demonstrated here @lilypondfile[quote,raggedright]{script-abbreviations.ly} The meanings of these shorthands can be changed. See -@file{ly/script-init.ly} for examples. +@file{ly/@/script@/-init@/.ly} for examples. The script is automatically placed, but the direction can be forced as @@ -2256,7 +2261,7 @@ below the staff, and @code{^} will place them above. @lilypond[quote,raggedright,fragment,verbatim] - c''4^^ c''4_^ +c''4^^ c''4_^ @end lilypond Other symbols can be added using the syntax @@ -2265,7 +2270,7 @@ can be forced up or down using @code{^} and @code{_}, e.g. @lilypond[quote,raggedright,verbatim,fragment,relative=2] - c\fermata c^\fermata c_\fermata +c\fermata c^\fermata c_\fermata @end lilypond @@ -2315,11 +2320,11 @@ they are entered decides which one comes first. @lilypond[verbatim,relative=3,raggedright,fragment,quote] - \once \override TextScript #'script-priority = #-100 - a4^\prall^\markup { \sharp } - - \once \override Script #'script-priority = #-100 - a4^\prall^\markup { \sharp } +\once \override TextScript #'script-priority = #-100 +a4^\prall^\markup { \sharp } + +\once \override Script #'script-priority = #-100 +a4^\prall^\markup { \sharp } @end lilypond @@ -2369,13 +2374,13 @@ Program reference: @internalsref{TrillSpanner}, Fingering instructions can be entered using @example - @var{note}-@var{digit} +@var{note}-@var{digit} @end example For finger changes, use markup texts @c @lilypond[quote,verbatim,raggedright,fragment,relative=1] - c4-1 c-2 c-3 c-4 - c^\markup { \finger "2-3" } +c4-1 c-2 c-3 c-4 +c^\markup { \finger "2-3" } @end lilypond @cindex finger change @@ -2387,13 +2392,13 @@ You can use the thumb-script to indicate that a note should be played with the thumb (e.g. in cello music) @lilypond[quote,verbatim,raggedright,fragment,relative=2] - 8 +8 @end lilypond Fingerings for chords can also be added to individual notes of the chord by adding them after the pitches @lilypond[quote,verbatim,raggedright,fragment,relative=2] - < c-1 e-2 g-3 b-5 >4 +< c-1 e-2 g-3 b-5 >4 @end lilypond @noindent @@ -2401,26 +2406,26 @@ In this case, setting @code{fingeringOrientations} will put fingerings next to note heads @lilypond[quote,verbatim,raggedright,fragment,relative=1] - \set fingeringOrientations = #'(left down) - 4 - \set fingeringOrientations = #'(up right down) - 4 +\set fingeringOrientations = #'(left down) + 4 +\set fingeringOrientations = #'(up right down) + 4 @end lilypond Using this feature, it is also possible to put fingering instructions very close to note heads in monophonic music, @lilypond[verbatim,raggedright,quote,fragment] - \set fingeringOrientations = #'(right) - 4 +\set fingeringOrientations = #'(right) +4 @end lilypond - + @seealso Program reference: @internalsref{FingerEvent}, and @internalsref{Fingering}. -Examples: @inputfileref{input/regression,finger-chords.ly}. +Examples: @inputfileref{input/@/regression,finger@/-chords@/.ly}. @@ -2448,8 +2453,8 @@ are entered with the commands @code{\acciaccatura} and @cindex acciaccatura @lilypond[quote,raggedright,relative=2,verbatim,fragment] - b4 \acciaccatura d8 c4 \appoggiatura e8 d4 - \acciaccatura { g16[ f] } e4 +b4 \acciaccatura d8 c4 \appoggiatura e8 d4 +\acciaccatura { g16[ f] } e4 @end lilypond Both are special forms of the @code{\grace} command. By prefixing this @@ -2457,8 +2462,8 @@ keyword to a music expression, a new one is formed, which will be printed in a smaller font and takes up no logical time in a measure. @lilypond[quote,raggedright,relative=2,verbatim,fragment] - c4 \grace c16 c4 - \grace { c16[ d16] } c2 c4 +c4 \grace c16 c4 +\grace { c16[ d16] } c2 c4 @end lilypond @noindent @@ -2472,13 +2477,13 @@ example is shown here with timing tuples @lilypond[quote,raggedright] << - \relative c''{ + \relative c''{ c4 \grace c16 c4 \grace { - c16[ d16] } c2 c4 + c16[ d16] } c2 c4 } \new Lyrics \lyricmode { \override LyricText #'font-family = #'typewriter - + \markup { (0,0) } 4 \grace { \markup { ( \fraction 1 4 , \fraction -1 16 ) } 16 } @@ -2486,7 +2491,7 @@ example is shown here with timing tuples \grace { \markup { (\fraction 2 4 , \fraction "-1" 8 ) } 16 \markup { (\fraction 2 4 , \fraction "-1" 16 ) } 16 - } + } \markup { ( \fraction 2 4 , 0 ) } } >> @@ -2497,7 +2502,7 @@ The placement of grace notes is synchronized between different staves. In the following example, there are two sixteenth graces notes for every eighth grace note -@lilypond[quote,raggedright,relative=2,verbatim,fragment] +@lilypond[quote,raggedright,relative=2,verbatim,fragment] << \new Staff { e4 \grace { c16[ d e f] } e4 } \new Staff { c4 \grace { g8[ b] } c4 } >> @end lilypond @@ -2545,8 +2550,8 @@ point up. @example \new Staff @{ - #(add-grace-property 'Voice 'Stem 'direction '()) - @dots{} + #(add-grace-property 'Voice 'Stem 'direction '()) + @dots{} @} @end example @@ -2555,7 +2560,7 @@ Another option is to change the variables @code{startGraceMusic}, @code{stopGraceMusic}, @code{startAcciaccaturaMusic}, @code{stopAcciaccaturaMusic}, @code{startAppoggiaturaMusic}, @code{stopAppoggiaturaMusic}. More information is in the file -@file{ly/grace-init.ly}. +@file{ly/@/grace@/-init@/.ly}. @seealso @@ -2581,7 +2586,7 @@ care when you mix staves with grace notes and staves without, for example, This can be remedied by inserting grace skips, for the above example @example -\new Staff @{ c4 \bar "|:" \grace s16 d4 @} +\new Staff @{ c4 \bar "|:" \grace s16 d4 @} @end example Grace sections should only be used within sequential music @@ -2591,12 +2596,12 @@ and might produce crashes or other errors. @node Glissando @subsection Glissando -@cindex Glissando +@cindex Glissando @cindex @code{\glissando} A glissando is a smooth change in pitch. It is denoted by a line or a -wavy line between two notes. It is requested by attaching +wavy line between two notes. It is requested by attaching @code{\glissando} to a note @lilypond[quote,raggedright,fragment,relative=2,verbatim] @@ -2607,9 +2612,9 @@ c\glissando c' Program reference: @internalsref{Glissando}, and @internalsref{GlissandoEvent}. -Example files: @file{input/regression/glissando.ly}. +Example files: @file{input/@/regression/@/glissando@/.ly}. + - @refbugs @@ -2647,8 +2652,8 @@ Absolute dynamic marks are specified using a command after a note @code{\sp}, @code{\spp}, @code{\sfz}, and @code{\rfz} @lilypond[quote,verbatim,raggedright,fragment,relative=2] - c\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff - c2\fp c\sf c\sff c\sp c\spp c\sfz c\rfz +c\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff +c2\fp c\sf c\sff c\sp c\spp c\sfz c\rfz @end lilypond @cindex @code{\<} @@ -2660,28 +2665,28 @@ Absolute dynamic marks are specified using a command after a note A crescendo mark is started with @code{\<} and terminated with @code{\!}. A decrescendo is started with @code{\>} and also terminated with @code{\!}. Because these marks are bound to notes, if you must -use spacer notes if multiple marks are needed during one note +use spacer notes if multiple marks are needed during one note @lilypond[quote,raggedright,fragment,verbatim,relative=2] - c\< c\! d\> e\! - << f1 { s4 s4\< s4\! \> s4\! } >> +c\< c\! d\> e\! +<< f1 { s4 s4\< s4\! \> s4\! } >> @end lilypond This may give rise to very short hairpins. Use @code{minimum-length} in @internalsref{Voice}.@internalsref{Hairpin} to lengthen them, for example @example - \override Staff.Hairpin #'minimum-length = #5 +\override Staff.Hairpin #'minimum-length = #5 @end example You can also use a text saying @emph{cresc.} instead of hairpins. Here is an example how to do it @lilypond[quote,raggedright,fragment,relative=2,verbatim] - \setTextCresc - c \< d e f\! - \setHairpinCresc - e\> d c b\! +\setTextCresc +c \< d e f\! +\setHairpinCresc +e\> d c b\! @end lilypond @cindex crescendo @@ -2689,9 +2694,9 @@ is an example how to do it You can also supply your own texts @lilypond[quote,raggedright,fragment,relative=1,verbatim] - \set crescendoText = \markup { \italic "cresc. poco" } - \set crescendoSpanner = #'dashed-line - a'2\< a a a\!\mf +\set crescendoText = \markup { \italic "cresc. poco" } +\set crescendoSpanner = #'dashed-line +a'2\< a a a\!\mf @end lilypond @cindex diminuendo @@ -2700,9 +2705,9 @@ You can also supply your own texts @refcommands @cindex @code{\dynamicUp} -@code{\dynamicUp}, +@code{\dynamicUp}, @cindex @code{\dynamicDown} -@code{\dynamicDown}, +@code{\dynamicDown}, @cindex @code{\dynamicNeutral} @code{\dynamicNeutral}. @@ -2727,12 +2732,12 @@ for repetitions. @menu * Repeat types:: -* Repeat syntax:: -* Repeats and MIDI:: -* Manual repeat commands:: -* Tremolo repeats:: -* Tremolo subdivisions:: -* Measure repeats:: +* Repeat syntax:: +* Repeats and MIDI:: +* Manual repeat commands:: +* Tremolo repeats:: +* Tremolo subdivisions:: +* Measure repeats:: @end menu @node Repeat types @@ -2758,7 +2763,7 @@ for repeats with alternatives. These are not played in MIDI output by default. @item fold Alternative endings are written stacked. This has limited use but may be used to typeset two lines of lyrics in songs with repeats, see -@inputfileref{input,star-spangled-banner.ly}. +@inputfileref{input,star-spangled-banner@/.ly}. @end ignore @c tremolo, beamed @@ -2769,7 +2774,7 @@ Make tremolo beams. These are not played in MIDI output by default. Make beat or measure repeats. These look like percent signs. These are not played in MIDI output by default. -@end table +@end table @node Repeat syntax @subsection Repeat syntax @@ -2779,15 +2784,15 @@ LilyPond has one syntactic construct for specifying different types of repeats. The syntax is @example - \repeat @var{variant} @var{repeatcount} @var{repeatbody} +\repeat @var{variant} @var{repeatcount} @var{repeatbody} @end example If you have alternative endings, you may add @cindex @code{\alternative} @example - \alternative @code{@{} @var{alternative1} - @var{alternative2} - @var{alternative3} @dots{} @code{@}} +\alternative @{ @var{alternative1} + @var{alternative2} + @var{alternative3} @dots{} @} @end example where each @var{alternative} is a music expression. If you do not give enough alternatives for all of the repeats, the first alternative @@ -2803,7 +2808,7 @@ c1 With alternative endings @lilypond[quote,raggedright,fragment,verbatim,relative=2] c1 -\repeat volta 2 {c4 d e f} +\repeat volta 2 {c4 d e f} \alternative { {d2 d} {f f,} } @end lilypond @@ -2818,21 +2823,21 @@ c1 It is possible to shorten volta brackets by setting @code{voltaSpannerDuration}. In the next example, the -bracket only lasts one measure, which is a duration of 3/4. +bracket only lasts one measure, which is a duration of 3/4. @lilypond[verbatim,raggedright,quote] \relative c''{ - \time 3/4 - c c c - \set Staff.voltaSpannerDuration = #(ly:make-moment 3 4) - \repeat "volta" 5 { d d d } - \alternative { { e e e f f f } - { g g g } } + \time 3/4 + c c c + \set Staff.voltaSpannerDuration = #(ly:make-moment 3 4) + \repeat "volta" 5 { d d d } + \alternative { { e e e f f f } + { g g g } } } @end lilypond - + @seealso @@ -2840,19 +2845,19 @@ Examples: Brackets for the repeat are normally only printed over the topmost staff. This can be adjusted by setting the @code{voltaOnThisStaff} -property @inputfileref{input/regression,volta-multi-staff.ly}, -@inputfileref{input/regression,volta-chord-names.ly} +property @inputfileref{input/@/regression,volta@/-multi@/-staff@/.ly}, +@inputfileref{input/@/regression,volta@/-chord@/-names@/.ly} @refbugs A nested repeat like -@example +@example \repeat @dots{} \repeat @dots{} -\alternative -@end example +\alternative +@end example @noindent is ambiguous, since it is is not clear to which @code{\repeat} the @@ -2881,11 +2886,11 @@ in the MIDI output. This is achieved by applying the @code{\unfoldrepeats} music function. This functions changes all repeats to unfold repeats. -@lilypond[verbatim,raggedright,fragment] +@lilypond[quote,verbatim,fragment,linewidth=8.0\cm] \unfoldrepeats { \repeat tremolo 8 {c'32 e' } \repeat percent 2 { c''8 d'' } - \repeat volta 2 {c'4 d' e' f'} + \repeat volta 2 {c'4 d' e' f'} \alternative { { g' a' a' g' } {f' e' d' c' } @@ -2900,14 +2905,14 @@ unfolded repeats) and one for notation (with volta, tremolo, and percent repeats). For example, @example - \score @{ - @var{..music..} - \layout @{ .. @} - @} - \score @{ - \unfoldrepeats @var{..music..} - \midi @{ .. @} - @} +\score @{ + @var{..music..} + \layout @{ .. @} +@} +\score @{ + \unfoldrepeats @var{..music..} + \midi @{ .. @} +@} @end example @node Manual repeat commands @@ -2916,21 +2921,23 @@ percent repeats). For example, @cindex @code{repeatCommands} The property @code{repeatCommands} can be used to control the layout of -repeats. Its value is a Scheme list of repeat commands, where each repeat -command can be +repeats. Its value is a Scheme list of repeat commands. @table @asis -@item @code{start-repeat}, - which prints a @code{|:} bar line; -@item @code{end-repeat}, - which prints a @code{:|} bar line; -@item @code{(volta @var{text})}, - which prints a volta bracket saying @var{text}: The text can be specified as +@item @code{start-repeat} +Print a @code{|:} bar line. + +@item @code{end-repeat} +Print a @code{:|} bar line. + +@item @code{(volta @var{text})} +Print a volta bracket saying @var{text}: The text can be specified as a text string or as a markup text, see @ref{Text markup}. Do not forget to change the font, as the default number font does not contain alphabetic characters; -@item @code{(volta #f)}, which - stops a running volta bracket. + +@item @code{(volta #f)} +Stop a running volta bracket. @end table @lilypond[quote,raggedright,verbatim,fragment,relative=2] @@ -2959,7 +2966,7 @@ style @lilypond[quote,verbatim,raggedright] \new Voice \relative c' { \repeat "tremolo" 8 { c16 d16 } - \repeat "tremolo" 4 { c16 d16 } + \repeat "tremolo" 4 { c16 d16 } \repeat "tremolo" 2 { c16 d16 } } @end lilypond @@ -2967,7 +2974,7 @@ style Tremolo marks can also be put on a single note. In this case, the note should not be surrounded by braces. @lilypond[quote,verbatim,raggedright] - \repeat "tremolo" 4 c'16 +\repeat "tremolo" 4 c'16 @end lilypond Similar output is obtained using the tremolo subdivision, described in @@ -2981,8 +2988,8 @@ Program reference: tremolo beams are @internalsref{Beam} objects. Single stem tremolos are @internalsref{StemTremolo} objects. The music expression is @internalsref{TremoloEvent}. -Example files: @inputfileref{input/regression,chord-tremolo.ly}, -@inputfileref{input/regression,stem-tremolo.ly}. +Example files: @inputfileref{input/@/regression,chord@/-tremolo@/.ly}, +@inputfileref{input/@/regression,stem@/-tremolo@/.ly}. @node Tremolo subdivisions @subsection Tremolo subdivisions @@ -2997,11 +3004,12 @@ length is omitted, the last value (stored in @code{tremoloFlags}) is used @lilypond[quote,raggedright,verbatim,fragment] - c'2:8 c':32 | c': c': | +c'2:8 c':32 | c': c': | @end lilypond -@c [TODO : stok is te kort bij 32en] -@c somebody want to translate that into English? :) +@c [TODO: stok is te kort bij 32en] +@c somebody want to translate that into English? +@c `Stem is too short for 32nds' (wl) @refbugs @@ -3046,9 +3054,9 @@ Rhythmic music is primarily used for percussion and drum notation, but it can also be used to show the rhythms of melodies. @menu -* Showing melody rhythms:: -* Entering percussion:: -* Percussion staves:: +* Showing melody rhythms:: +* Entering percussion:: +* Percussion staves:: @end menu @@ -3070,7 +3078,7 @@ staff are squashed, and the staff itself has a single line Program reference: @internalsref{RhythmicStaff}. -Examples: @inputfileref{input/regression,rhythmic-staff.ly}. +Examples: @inputfileref{input/@/regression,rhythmic@/-staff@/.ly}. @node Entering percussion @@ -3092,7 +3100,7 @@ in input files @end lilypond The complete list of drum names is in the init file -@file{ly/drumpitch-init.ly}. +@file{ly/@/drumpitch@/-init@/.ly}. @c TODO: properly document this. @seealso @@ -3117,16 +3125,16 @@ To typeset the music, the notes must be interpreted in a up = \drummode { crashcymbal4 hihat8 halfopenhihat hh hh hh openhihat } down = \drummode { bassdrum4 snare8 bd r bd sn4 } \new DrumStaff << - \new DrumVoice { \voiceOne \up } - \new DrumVoice { \voiceTwo \down } + \new DrumVoice { \voiceOne \up } + \new DrumVoice { \voiceTwo \down } >> @end lilypond The above example shows verbose polyphonic notation. The short polyphonic notation, described in @ref{Polyphony}, can also be used if -the @internalsref{DrumVoices} are instantiated by hand first. For example, +the @internalsref{DrumVoices} are instantiated by hand first. For example, -@lilypond[quote,raggedright,fragment,verbatim] +@lilypond[quote,raggedright,fragment,verbatim] \new DrumStaff << \context DrumVoice = "1" { s1 *2 } \context DrumVoice = "2" { s1 *2 } @@ -3137,7 +3145,7 @@ the @internalsref{DrumVoices} are instantiated by hand first. For example, \\ { bd4 sn4 bd4 sn4 } >> - } + } >> @end lilypond @@ -3150,28 +3158,31 @@ The following variables have been predefined @item drums-style This is the default. It typesets a typical drum kit on a five-line staff -@lilypond[quote,raggedright,noindent] -nam = \lyricmode { cymc cyms cymr hh hhc hho hhho hhp cb hc - bd sn ss tomh tommh tomml toml tomfh tomfl } -mus = \drummode { cymc cyms cymr hh | hhc hho hhho hhp | \break cb hc - bd sn ss tomh tommh tomml toml tomfh tomfl s16 } +@lilypond[quote,linewidth=10.0\cm] +nam = \lyricmode { + cymc cyms cymr hh hhc hho hhho hhp + cb hc bd sn ss tomh tommh tomml toml tomfh tomfl } +mus = \drummode { + cymc cyms cymr hh hhc hho hhho hhp \break + cb hc bd sn ss tomh tommh tomml toml tomfh tomfl s16 } \score { - << \new DrumStaff\with { - \remove Bar_engraver - \remove Time_signature_engraver - \override Stem #'transparent = ##t - \override Stem #'Y-extent-callback = ##f - minimumVerticalExtent = #'(-4.0 . 5.0) - } \mus - \context Lyrics \nam - >> - \layout { - %% need to do this, because of indented @itemize - linewidth= 9 \cm - \context { \Score - \override LyricText #'font-family = #'typewriter - \override BarNumber #'transparent =##T -}}} + << \new DrumStaff \with { + \remove Bar_engraver + \remove Time_signature_engraver + \override Stem #'transparent = ##t + \override Stem #'Y-extent-callback = ##f + minimumVerticalExtent = #'(-4.0 . 5.0) + } \mus + \context Lyrics \nam + >> + \layout { + \context { + \Score + \override LyricText #'font-family = #'typewriter + \override BarNumber #'transparent =##T + } + } +} @end lilypond The drum scheme supports six different toms. When there fewer toms, simply @@ -3184,90 +3195,98 @@ This typesets timbales on a two line staff @lilypond[quote,raggedright] nam = \lyricmode { timh ssh timl ssl cb } -mus = \drummode { timh ssh timl ssl cb s16 } +mus = \drummode { timh ssh timl ssl cb s16 } << - \context DrumStaff \with { - \remove Bar_engraver - \remove Time_signature_engraver - \override Stem #'transparent = ##t - \override Stem #'Y-extent-callback = ##f - \override StaffSymbol #'line-count = #2 - \override StaffSymbol #'staff-space = #2 - minimumVerticalExtent = #'(-3.0 . 4.0) - drumStyleTable = #timbales-style - } \mus - \context Lyrics { - \override LyricText #'font-family = #'typewriter - - \nam } + \context DrumStaff \with { + \remove Bar_engraver + \remove Time_signature_engraver + \override Stem #'transparent = ##t + \override Stem #'Y-extent-callback = ##f + \override StaffSymbol #'line-count = #2 + \override StaffSymbol #'staff-space = #2 + minimumVerticalExtent = #'(-3.0 . 4.0) + drumStyleTable = #timbales-style + } \mus + \context Lyrics { + \override LyricText #'font-family = #'typewriter + \nam + } >> @end lilypond + @item congas-style This typesets congas on a two line staff @lilypond[quote,raggedright] nam = \lyricmode { cgh cgho cghm ssh cgl cglo cglm ssl } -mus = \drummode { cgh cgho cghm ssh cgl cglo cglm ssl s16 } +mus = \drummode { cgh cgho cghm ssh cgl cglo cglm ssl s16 } + << - \context DrumStaff\with { - \remove Bar_engraver - \remove Time_signature_engraver - drumStyleTable = #congas-style - \override StaffSymbol #'line-count = #2 - - %% this sucks; it will lengthen stems. - \override StaffSymbol #'staff-space = #2 - \override Stem #'transparent = ##t - \override Stem #'Y-extent-callback = ##f - } \mus - \context Lyrics { - \override LyricText #'font-family = #'typewriter -\nam } + \context DrumStaff \with { + \remove Bar_engraver + \remove Time_signature_engraver + drumStyleTable = #congas-style + \override StaffSymbol #'line-count = #2 + + %% this sucks; it will lengthen stems. + \override StaffSymbol #'staff-space = #2 + \override Stem #'transparent = ##t + \override Stem #'Y-extent-callback = ##f + } \mus + \context Lyrics { + \override LyricText #'font-family = #'typewriter + \nam + } >> @end lilypond + @item bongos-style This typesets bongos on a two line staff @lilypond[quote,raggedright] nam = \lyricmode { boh boho bohm ssh bol bolo bolm ssl } -mus = \drummode { boh boho bohm ssh bol bolo bolm ssl s16 } +mus = \drummode { boh boho bohm ssh bol bolo bolm ssl s16 } + << - \context DrumStaff\with { - \remove Bar_engraver - \remove Time_signature_engraver - \override StaffSymbol #'line-count = #2 - drumStyleTable = #bongos-style - - %% this sucks; it will lengthen stems. - \override StaffSymbol #'staff-space = #2 - \override Stem #'transparent = ##t - \override Stem #'Y-extent-callback = ##f - } \mus - \context Lyrics { - \override LyricText #'font-family = #'typewriter -\nam } + \context DrumStaff\with { + \remove Bar_engraver + \remove Time_signature_engraver + \override StaffSymbol #'line-count = #2 + drumStyleTable = #bongos-style + + %% this sucks; it will lengthen stems. + \override StaffSymbol #'staff-space = #2 + \override Stem #'transparent = ##t + \override Stem #'Y-extent-callback = ##f + } \mus + \context Lyrics { + \override LyricText #'font-family = #'typewriter + \nam + } >> @end lilypond @item percussion-style -to typeset all kinds of simple percussion on one line staves +To typeset all kinds of simple percussion on one line staves. + @lilypond[quote,raggedright] nam = \lyricmode { tri trio trim gui guis guil cb cl tamb cab mar hc } -mus = \drummode { tri trio trim gui guis guil cb cl tamb cab mar hc s16 } +mus = \drummode { tri trio trim gui guis guil cb cl tamb cab mar hc s16 } + << - \context DrumStaff\with{ - \remove Bar_engraver - drumStyleTable = #percussion-style - \override StaffSymbol #'line-count = #1 - \remove Time_signature_engraver - \override Stem #'transparent = ##t - \override Stem #'Y-extent-callback = ##f - } \mus - \context Lyrics { - \override LyricText #'font-family = #'typewriter - \nam - } + \context DrumStaff\with{ + \remove Bar_engraver + drumStyleTable = #percussion-style + \override StaffSymbol #'line-count = #1 + \remove Time_signature_engraver + \override Stem #'transparent = ##t + \override Stem #'Y-extent-callback = ##f + } \mus + \context Lyrics { + \override LyricText #'font-family = #'typewriter + \nam + } >> @end lilypond @end table @@ -3277,26 +3296,25 @@ list at the top of your file @lilypond[quote,raggedright,verbatim] #(define mydrums '( - (bassdrum default #f -1) - (snare default #f 0) - (hihat cross #f 1) - (pedalhihat xcircle "stopped" 2) - (lowtom diamond #f 3))) + (bassdrum default #f -1) + (snare default #f 0) + (hihat cross #f 1) + (pedalhihat xcircle "stopped" 2) + (lowtom diamond #f 3))) up = \drummode { hh8 hh hh hh hhp4 hhp } down = \drummode { bd4 sn bd toml8 toml } \new DrumStaff << - \set DrumStaff.drumStyleTable - = #(alist->hash-table mydrums) - \new DrumVoice { \voiceOne \up } - \new DrumVoice { \voiceTwo \down } + \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) + \new DrumVoice { \voiceOne \up } + \new DrumVoice { \voiceTwo \down } >> @end lilypond @seealso -Init files: @file{ly/drumpitch-init.ly}. +Init files: @file{ly/@/drumpitch@/-init@/.ly}. Program reference: @internalsref{DrumStaff}, @internalsref{DrumVoice}. @@ -3317,13 +3335,13 @@ handle this cross-staffing behavior. In this section we discuss the @menu -* Automatic staff changes:: -* Manual staff switches:: -* Pedals:: -* Arpeggio:: -* Staff switch lines:: -* Cross staff stems:: -@end menu +* Automatic staff changes:: +* Manual staff switches:: +* Pedals:: +* Arpeggio:: +* Staff switch lines:: +* Cross staff stems:: +@end menu @refbugs @@ -3337,7 +3355,7 @@ Dynamics are not centered, but workarounds do exist. See the The distance between the two staves is the same for all systems in the score. It is possible to override this per system, but it does require an arcane command incantation. See -@inputfileref{input/test,piano-staff-distance.ly}. +@inputfileref{input/@/test,piano@/-staff@/-distance@/.ly}. @node Automatic staff changes @@ -3349,7 +3367,7 @@ staff. The syntax for this is @quotation @example - \autochange @dots{}@var{music}@dots{} +\autochange @dots{}@var{music}@dots{} @end example @end quotation @@ -3372,7 +3390,7 @@ no effect on the pitches of @var{music}, so, if necessary, put The autochanger switches on basis of pitch (middle C is the turning point), and it looks ahead skipping over rests to switch in advance. Here is a practical example - + @lilypond[quote,verbatim,raggedright] \context PianoStaff \autochange \relative c' @@ -3396,7 +3414,7 @@ The staff switches may not end up in optimal places. For high quality output, staff switches should be specified manually. -@code{\autochange} cannot be inside @code{\times}. +@code{\autochange} cannot be inside @code{\times}. Internally, the @code{\partcombine} interprets both arguments as @code{Voice}s named @code{one} and @code{two}, and then decides when @@ -3432,7 +3450,7 @@ usually the setup for a score will start with a setup of the staves, \skip 1 * 10 %@emph{idem} @} >> -@end example +@end example and the @context{Voice} is inserted afterwards @@ -3457,7 +3475,7 @@ Piano pedal instruction can be expressed by attaching note or chord @lilypond[quote,raggedright,fragment,verbatim] - c'4\sustainDown c'4\sustainUp +c'4\sustainDown c'4\sustainUp @end lilypond What is printed can be modified by setting @code{pedal@var{X}Strings}, @@ -3470,10 +3488,10 @@ Pedals can also be indicated by a sequence of brackets, by setting the @code{pedalSustainStyle} property to bracket objects @lilypond[quote,raggedright,fragment,verbatim,relative=2] - \set Staff.pedalSustainStyle = #'bracket - c\sustainDown d e - b\sustainUp\sustainDown - b g \sustainUp a \sustainDown \bar "|." +\set Staff.pedalSustainStyle = #'bracket +c\sustainDown d e +b\sustainUp\sustainDown +b g \sustainUp a \sustainDown \bar "|." @end lilypond A third style of pedal notation is a mixture of text and brackets, @@ -3481,10 +3499,10 @@ obtained by setting the @code{pedalSustainStyle} style property to @code{mixed} @lilypond[quote,raggedright,fragment,verbatim,relative=2] - \set Staff.pedalSustainStyle = #'mixed - c\sustainDown d e - b\sustainUp\sustainDown - b g \sustainUp a \sustainDown \bar "|." +\set Staff.pedalSustainStyle = #'mixed +c\sustainDown d e +b\sustainUp\sustainDown +b g \sustainUp a \sustainDown \bar "|." @end lilypond The default `*Ped.' style for sustain and damper pedals corresponds to @@ -3492,7 +3510,7 @@ style @code{#'text}. The sostenuto pedal uses @code{mixed} style by default. @lilypond[quote,raggedright,fragment,verbatim,relative=2] - c\sostenutoDown d e c, f g a\sostenutoUp +c\sostenutoDown d e c, f g a\sostenutoUp @end lilypond For fine-tuning of the appearance of a pedal bracket, the properties @@ -3502,8 +3520,8 @@ For fine-tuning of the appearance of a pedal bracket, the properties bracket may be extended to the right edge of the note head @lilypond[quote,raggedright,fragment,verbatim,relative=2] - \override Staff.PianoPedalBracket #'shorten-pair = #'(0 . -1.0) - c\sostenutoDown d e c, f g a\sostenutoUp +\override Staff.PianoPedalBracket #'shorten-pair = #'(0 . -1.0) +c\sostenutoDown d e c, f g a\sostenutoUp @end lilypond @node Arpeggio @@ -3518,7 +3536,7 @@ You can specify an arpeggio sign on a chord by attaching an @lilypond[quote,raggedright,fragment,relative=1,verbatim] - \arpeggio +\arpeggio @end lilypond When an arpeggio crosses staves, you attach an arpeggio to the chords @@ -3528,8 +3546,8 @@ in both staves, and set @lilypond[quote,raggedright,fragment,relative=1,verbatim] \context PianoStaff << \set PianoStaff.connectArpeggios = ##t - \new Staff { \arpeggio } - \new Staff { \clef bass \arpeggio } + \new Staff { \arpeggio } + \new Staff { \clef bass \arpeggio } >> @end lilypond @@ -3551,8 +3569,8 @@ arpeggiate the chord @c todo: ugh, lousy typography. Look for real example. --hwn @lilypond[quote,raggedright,fragment,relative=1,verbatim] - \arpeggioBracket - \arpeggio +\arpeggioBracket +\arpeggio @end lilypond @refcommands @@ -3601,7 +3619,7 @@ can be printed automatically. This is switched on by setting b2 a } \context Staff=two { \clef bass \skip 1*2 } ->> +>> @end lilypond @seealso @@ -3611,7 +3629,7 @@ Program reference: @internalsref{VoiceFollower}. @refcommands @cindex @code{\showStaffSwitch} -@code{\showStaffSwitch}, +@code{\showStaffSwitch}, @cindex @code{\hideStaffSwitch} @code{\hideStaffSwitch}. @@ -3648,28 +3666,31 @@ There are three different issues when printing vocal music @itemize @bullet @item - Song texts must be entered as texts, not notes. For example, the -input @code{d} should be interpreted as a one letter syllable, not the note D. +Song texts must be entered as texts, not notes. For example, the +input@tie{}@code{d} should be interpreted as a one letter syllable, not the +note@tie{}D. + @item - Song texts must be printed as text, not as notes. +Song texts must be printed as text, not as notes. + @item - Song texts must be aligned with the notes of their melody +Song texts must be aligned with the notes of their melody @end itemize The simplest solution to printing music uses the @code{\addlyrics} function to solve all these problems at once. However, these three functions can be controlled separately, which is necessary -for complex vocal music. +for complex vocal music. @menu -* Setting simple songs:: -* Entering lyrics:: -* Hyphens and extenders:: -* The Lyrics context:: -* Flexibility in alignment:: -* More stanzas:: -* Ambitus:: +* Setting simple songs:: +* Entering lyrics:: +* Hyphens and extenders:: +* The Lyrics context:: +* Flexibility in alignment:: +* More stanzas:: +* Ambitus:: @end menu @node Setting simple songs @@ -3678,27 +3699,27 @@ for complex vocal music. The easiest way to add lyrics to a melody is to append @cindex \addlyrics @example - \addlyrics @{ @var{the lyrics} @} +\addlyrics @{ @var{the lyrics} @} @end example @noindent to a melody. Here is an example, @lilypond[raggedright,verbatim,fragment,quote] - \time 3/4 - \relative { c2 e4 g2. } - \addlyrics { play the game } +\time 3/4 +\relative { c2 e4 g2. } +\addlyrics { play the game } @end lilypond More stanzas can be added by adding more -@code{\addlyrics} sections +@code{\addlyrics} sections @lilypond[raggedright,verbatim,fragment,quote] - \time 3/4 - \relative { c2 e4 g2. } - \addlyrics { play the game } - \addlyrics { speel het spel } - \addlyrics { joue le jeu } +\time 3/4 +\relative { c2 e4 g2. } +\addlyrics { play the game } +\addlyrics { speel het spel } +\addlyrics { joue le jeu } @end lilypond @c TODO - this isn't such a great place for this note, but I can't @@ -3712,15 +3733,16 @@ fancy things, in which case you should investigate @code{\lyricsto} or @code{\lyricmode}. @example - @{ MUSIC @} - \addlyrics @{ LYRICS @} +@{ MUSIC @} +\addlyrics @{ LYRICS @} @end example +@noindent is the same as @example - \context Voice = blah @{ music @} - \lyricsto "blah" \lyricsmode \new lyrics @{ LYRICS @} +\context Voice = blah @{ music @} +\lyricsto "blah" \lyricsmode \new lyrics @{ LYRICS @} @end example @@ -3739,7 +3761,7 @@ with punctuation and accents, and the input @code{d} is not parsed as a pitch, but rather as a one letter syllable. Syllables are entered like notes, but with pitches replaced by text. For example, @example - \lyricmode @{ Twin-4 kle4 twin- kle litt- le star2 @} +\lyricmode @{ Twin-4 kle4 twin- kle litt- le star2 @} @end example @@ -3750,7 +3772,7 @@ is that a word can end with @code{@}}. The following example is usually a mistake in the input file. The syllable includes a @code{@}}, so the opening brace is not balanced @example - \lyricmode @{ twinkle@} +\lyricmode @{ twinkle @} @end example @cindex @code{\property}, in @code{\lyricmode} @@ -3759,7 +3781,7 @@ Similarly, a period which follows an alphabetic sequence is included in the resulting string. As a consequence, spaces must be inserted around property commands @example - \override Score . LyricText #'font-shape = #'italic +\override Score . LyricText #'font-shape = #'italic @end example @cindex @code{_} @@ -3773,13 +3795,13 @@ specify words that cannot be written with the above rules. The following example incorporates double quotes @example - \lyricmode @{ He said: "\"Let" my peo ple "go\"" @} +\lyricmode @{ He said: "\"Let" my peo ple "go\"" @} @end example This example is slightly academic, since it gives better looking results to use single quotes, @code{``} and @code{''} @example - \lyricmode @{ He said: ``Let my peo ple go'' @} +\lyricmode @{ He said: ``Let my peo ple go'' @} @end example @@ -3824,11 +3846,11 @@ next one. Such a line is called an extender line, and it is entered as @seealso -Program reference: @internalsref{HyphenEvent}, +Program reference: @internalsref{HyphenEvent}, @internalsref{ExtenderEvent}, @internalsref{LyricHyphen}, and @internalsref{LyricExtender} -Examples: @inputfileref{input/test,lyric-hyphen-retain.ly}. +Examples: @inputfileref{input/@/test,lyric@/-hyphen@/-retain@/.ly}. @@ -3838,7 +3860,7 @@ Examples: @inputfileref{input/test,lyric-hyphen-retain.ly}. Lyrics are printed by interpreting them in a @internalsref{Lyrics} context @example - \context Lyrics \lyricmode @dots{} +\context Lyrics \lyricmode @dots{} @end example @cindex automatic syllable durations @@ -3851,7 +3873,7 @@ automatically. In this case, it is no longer necessary to enter the correct duration for each syllable. This is achieved by combining the melody and the lyrics with the @code{\lyricsto} expression @example -\lyricsto @var{name} \new Lyrics @dots{} +\lyricsto @var{name} \new Lyrics @dots{} @end example This aligns the lyrics to the @@ -3865,7 +3887,7 @@ then the lyrics are specified with @code{\lyricsto}. The command For different or more complex orderings, the best way is to setup the hierarchy of staves and lyrics first, e.g. @example -\context ChoirStaff << +\context ChoirStaff << \context Lyrics = sopranoLyrics @{ s1 @} \context Voice = soprano @{ @emph{music} @} \context Lyrics = tenorLyrics @{ s1 @} @@ -3874,8 +3896,8 @@ hierarchy of staves and lyrics first, e.g. @end example and then combine the appropriate melodies and lyric lines @example - \lyricsto "soprano" \context Lyrics = sopranoLyrics - @emph{the lyrics} +\lyricsto "soprano" \context Lyrics = sopranoLyrics + @emph{the lyrics} @end example @noindent @@ -3887,7 +3909,7 @@ The final input would resemble \lyricsto "alto" @emph{etc} @emph{etc} >> -@end example +@end example The @code{\lyricsto} command detects melismata: it only puts one @@ -3901,13 +3923,13 @@ last one, e.g. \context Voice = "lala" { \time 3/4 f4 g8 - \melisma + \melisma f e f \melismaEnd e2 } \lyricsto "lala" \new Lyrics { - la di __ daah + la di __ daah } >> @end lilypond @@ -3930,17 +3952,17 @@ information. Lyrics can also be entered without @code{\lyricsto}. In this case the durations of each syllable must be entered explicitly, for example, -@verbatim - play2 the4 game2. - sink2 or4 swim2. -@end verbatim +@example +play2 the4 game2. +sink2 or4 swim2. +@end example The alignment to a melody can be specified with the @code{associatedVoice} property, -@verbatim - \set associatedVoice = #"lala" -@end verbatim +@example +\set associatedVoice = #"lala" +@end example @noindent The value of the property (here: @code{"lala"}) should be the name of @@ -3953,7 +3975,7 @@ Here is an example demonstrating manual lyric durations, << \context Voice = melody { \time 3/4 c2 e4 g2. - } + } \new Lyrics \lyricmode { \set associatedVoice = #"melody" play2 the4 game2. @@ -3979,11 +4001,11 @@ Program reference: @internalsref{LyricCombineMusic}, @internalsref{Lyrics}, @internalsref{Melisma_translator}. Examples: @ref{Small ensembles}, -@inputfileref{input/regression,lyric-combine-new.ly}, -@c TODO: make separate section for melismata -@inputfileref{input/test,lyrics-melisma-variants.ly}. -@inputfileref{input/test,lyrics-melisma-faster.ly}. - +@inputfileref{input/@/regression,lyric@/-combine@/-new@/.ly}, +@c TODO: make separate section for melismata +@inputfileref{input/@/test,lyrics@/-melisma@/-variants@/.ly}. +@inputfileref{input/@/test,lyrics@/-melisma@/-faster@/.ly}. + @refbugs Melismata are not detected automatically, and extender lines must be @@ -4012,7 +4034,7 @@ in the text, as shown here, @lilypond[verbatim,raggedright,quote] << \relative \context Voice = "lahlah" { - \set Staff.autoBeaming = ##f + \set Staff.autoBeaming = ##f c4 \slurDotted f8.[( g16]) @@ -4049,13 +4071,12 @@ For example, More complex variations in text underlay are possible. It is possible to switch the melody for a line of lyrics during the text. This is -done by setting the @code{associatedVoice} property. In the example +done by setting the @code{associatedVoice} property. In the example @lilypond[raggedright,quote] - << \relative \context Voice = "lahlah" { - \set Staff.autoBeaming = ##f + \set Staff.autoBeaming = ##f c4 << \context Voice = alternative { @@ -4078,7 +4099,7 @@ done by setting the @code{associatedVoice} property. In the example } \new Lyrics \lyricsto "lahlah" { % Tricky: need to set associatedVoice - % one syllable too soon! + % one syllable too soon! \set associatedVoice = alternative % applies to "ran" Ty -- ran -- @@ -4091,18 +4112,18 @@ done by setting the @code{associatedVoice} property. In the example @noindent the text for the first stanza is set to a melody called ``lahlah'', -@verbatim -\new Lyrics \lyricsto "lahlah" { +@example +\new Lyrics \lyricsto "lahlah" @{ Ju -- ras -- sic Park -} -@end verbatim +@} +@end example The second stanza initially is set to the @code{lahlah} context, but for the syllable ``ran'', it switches to a different melody. This is achieved with @example - \set associatedVoice = alternative +\set associatedVoice = alternative @end example @noindent @@ -4112,16 +4133,16 @@ containing the triplet. Again, the command must be one syllable too early, before ``Ty'' in this case. -@verbatim -\new Lyrics \lyricsto "lahlah" { +@example +\new Lyrics \lyricsto "lahlah" @{ \set associatedVoice = alternative % applies to "ran" Ty -- - ran -- + ran -- no -- \set associatedVoice = lahlah % applies to "rus" sau -- rus Rex -} -@end verbatim +@} +@end example @noindent The underlay is switched back to the starting situation by assigning @@ -4138,7 +4159,7 @@ The underlay is switched back to the starting situation by assigning @cindex stanza number @cindex singer's names -@cindex name of singer +@cindex name of singer Stanza numbers can be added by setting @code{stanza}, e.g. @@ -4197,12 +4218,12 @@ minimum and maximum pitch. To print such ambits, add the for example, @example - \layout @{ - \context @{ - \Voice - \consists Ambitus_engraver - @} +\layout @{ + \context @{ + \Voice + \consists Ambitus_engraver @} +@} @end example This results in the following output @@ -4248,14 +4269,14 @@ rather than to the @internalsref{Voice} context. Here is an example, This example uses one advanced feature, @example - \override Ambitus #'X-offset-callbacks - = #(list (lambda (grob axis) -1.0)) +\override Ambitus #'X-offset-callbacks + = #(list (lambda (grob axis) -1.0)) @end example @noindent This code moves the ambitus to the left. The same effect could have been achieved with @code{extra-offset}, but then the formatting system -would not reserve space for the moved object. +would not reserve space for the moved object. @seealso @@ -4263,7 +4284,7 @@ Program reference: @internalsref{Ambitus}, @internalsref{AmbitusLine}, @internalsref{AmbitusNoteHead}, @internalsref{AmbitusAccidental}. -Examples: @inputfileref{input/regression,ambitus.ly}. +Examples: @inputfileref{input/@/regression,ambitus@/.ly}. @refbugs @@ -4277,7 +4298,7 @@ This section includes extra information for writing string music, and may include extra information for other instruments in the future. @menu -* Harmonic notes:: +* Harmonic notes:: @end menu @node Harmonic notes, , Other instrument specific notation, Other instrument specific notation @@ -4287,11 +4308,11 @@ include extra information for other instruments in the future. @cindex harmonics Artificial harmonics are notated with a different notehead style. They -are entered by +are entered by marking the harmonic pitch with @code{\harmonic}. @lilypond[raggedright,verbatim,quote,fragment] - 4 +4 @end lilypond @@ -4307,8 +4328,8 @@ indicating on which string and fret a note must be played. LilyPond offers limited support for tablature. @menu -* Tablatures basic:: -* Non-guitar tablatures:: +* Tablatures basic:: +* Non-guitar tablatures:: @end menu @node Tablatures basic, Non-guitar tablatures, Tablatures, Tablatures @@ -4323,7 +4344,7 @@ are printed as tablature, by using @internalsref{TabStaff} and @internalsref{TabVoice} contexts @lilypond[quote,raggedright,fragment,verbatim] - \context TabStaff { +\context TabStaff { a,4\5 c'\2 a\3 e'\1 e\4 c'\2 a\3 e'\1 } @@ -4342,7 +4363,7 @@ e16 fis gis a b4 \set TabStaff.minimumFret = #8 e16 fis gis a b4 @end example -@lilypond[quote,noindent,raggedright] +@lilypond[quote,raggedright] frag = { \key e \major e16 fis gis a b4 @@ -4372,7 +4393,7 @@ chord. @cindex Non-guitar tablatures You can change the number of strings, by setting the number of lines -in the @internalsref{TabStaff}. +in the @internalsref{TabStaff}. You can change the tuning of the strings. A string tuning is given as a Scheme list with one integer number for each string, the number @@ -4383,13 +4404,12 @@ by default middle C, in string order. In the next example, @code{stringTunings} is set for the pitches e, a, d, and g @lilypond[quote,raggedright,fragment,verbatim] - \context TabStaff << - \set TabStaff.stringTunings = #'(-5 -10 -15 -20) - - { - a,4 c' a e' e c' a e' - } - >> +\context TabStaff << + \set TabStaff.stringTunings = #'(-5 -10 -15 -20) + { + a,4 c' a e' e c' a e' + } +>> @end lilypond @refbugs @@ -4402,16 +4422,16 @@ Program reference: @internalsref{Tab_note_heads_engraver}. @node Popular music, Orchestral music, Tablatures, Notation manual -@section Popular music +@section Popular music This section discusses issues that arise when writing popular music. @menu -* Chord names:: -* Chords mode:: -* Printing chord names:: -* Fret diagrams:: -* Improvisation:: +* Chord names:: +* Chords mode:: +* Printing chord names:: +* Fret diagrams:: +* Improvisation:: @end menu @node Chord names, Chords mode, Popular music, Popular music @@ -4435,7 +4455,7 @@ twoWays = \transpose c c' { } << \context ChordNames \twoWays - \context Voice \twoWays >> + \context Voice \twoWays >> @end lilypond This example also shows that the chord printing routines do not try to @@ -4445,8 +4465,8 @@ an inversion. @c this menu isn't needed. @ignore @menu -* Chords mode:: -* Printing chord names:: +* Chords mode:: +* Printing chord names:: @end menu @end ignore @@ -4459,7 +4479,7 @@ names. A chord is entered by the root, which is entered like a normal pitch @lilypond[quote,raggedright,fragment,verbatim] - \chordmode { es4. d8 c2 } +\chordmode { es4. d8 c2 } @end lilypond @noindent @@ -4472,13 +4492,13 @@ Other chords may be entered by suffixing a colon and introducing a modifier (which may include a number if desired) @c @lilypond[quote,fragment,verbatim] - \chordmode { e1:m e1:7 e1:m7 } +\chordmode { e1:m e1:7 e1:m7 } @end lilypond The first number following the root is taken to be the `type' of the chord, thirds are added to the root until it reaches the specified number @lilypond[quote,fragment,verbatim] - \chordmode { c:3 c:5 c:6 c:7 c:8 c:9 c:10 c:11 } +\chordmode { c:3 c:5 c:6 c:7 c:8 c:9 c:10 c:11 } @end lilypond @cindex root of chord @@ -4490,42 +4510,48 @@ to a chord. Additions are added after the number following the colon, and are separated by dots @c @lilypond[quote,verbatim,fragment] - \chordmode { c:5.6 c:3.7.8 c:3.6.13 } +\chordmode { c:5.6 c:3.7.8 c:3.6.13 } @end lilypond Chord steps can be altered by suffixing a @code{-} or @code{+} sign to the number @lilypond[quote,verbatim,fragment] - \chordmode { c:7+ c:5+.3- c:3-.5-.7- } +\chordmode { c:7+ c:5+.3- c:3-.5-.7- } @end lilypond Removals are specified similarly, and are introduced by a caret. They must come after the additions @lilypond[quote,verbatim,fragment] - \chordmode { c^3 c:7^5 c:9^3.5 } +\chordmode { c^3 c:7^5 c:9^3.5 } @end lilypond Modifiers can be used to change pitches. The following modifiers are supported + @table @code @item m - is the minor chord. This modifier lowers the 3rd and (if present) the 7th step. +The minor chord. This modifier lowers the 3rd and (if present) the 7th step. + @item dim - is the diminished chord. This modifier lowers the 3rd, 5th and (if present) - the 7th step. +The diminished chord. This modifier lowers the 3rd, 5th and (if present) +the 7th step. + @item aug - is the augmented chord. This modifier raises the 5th step. +The augmented chord. This modifier raises the 5th step. + @item maj - is the major 7th chord. This modifier raises the 7th step if present. +The major 7th chord. This modifier raises the 7th step if present. + @item sus - is the suspended 4th or 2nd. This modifier removes the 3rd +The suspended 4th or 2nd. This modifier removes the 3rd step. Append either @code{2} or @code{4} to add the 2nd or 4th step to the chord. @end table + Modifiers can be mixed with additions @lilypond[quote,verbatim,fragment] - \chordmode { c:sus4 c:7sus4 c:dim7 c:m6 } + \chordmode { c:sus4 c:7sus4 c:dim7 c:m6 } @end lilypond -@cindex modifiers, in chords. +@cindex modifiers, in chords. @cindex @code{aug} @cindex @code{dim} @cindex @code{maj} @@ -4537,7 +4563,7 @@ unaltered 3, the 11 is removed in this case (unless it is added explicitly) @c @lilypond[quote,raggedright,fragment,verbatim] - \chordmode { c:13 c:13.11 c:m13 } +\chordmode { c:13 c:13.11 c:m13 } @end lilypond @cindex @code{/} @@ -4546,7 +4572,7 @@ An inversion (putting one pitch of the chord on the bottom), as well as bass notes, can be specified by appending @code{/}@var{pitch} to the chord @lilypond[quote,raggedright,fragment,verbatim] - \chordmode { c1 c/g c/f } +\chordmode { c1 c/g c/f } @end lilypond @cindex @code{/+} @@ -4601,7 +4627,6 @@ You can make the chord changes stand out by setting display chord names when there is a change in the chords scheme and at the start of a new line -@c originally this had linewidth=9\cm, but I though that raggedright would be better @lilypond[quote,verbatim,raggedright] harmonies = \chordmode { c1:m c:m \break c:m c:m d @@ -4625,10 +4650,10 @@ for showing repeats. voltaOnThisStaff = ##t \consists Bar_engraver \consists "Volta_engraver" -} +} \repeat volta 2 \chordmode { f1:maj f:7 bes:7 - c:maj + c:maj } \alternative { es e } @@ -4644,16 +4669,16 @@ following properties @item chordNameExceptions This is a list that contains the chords that have special formatting. -The exceptions list should be encoded as encoded as -@verbatim - @{ 1 \markup @{ \\super \"7\" \"wahh\" @} @} -@end verbatim +The exceptions list should be encoded as +@example +@{ 1 \markup @{ \super "7" "wahh" @} @} +@end example To get this information into @code{chordNameExceptions} takes a little manoeuvring. The following code transforms @code{chExceptionMusic} (which is a sequential music) into a list of exceptions. @example - (sequential-music-to-chord-exceptions chExceptionMusic #t) +(sequential-music-to-chord-exceptions chExceptionMusic #t) @end example Then, @example @@ -4662,10 +4687,10 @@ Then, ignatzekExceptions) @end example adds the new exceptions to the default ones, which are defined in -@file{ly/chord-modifier-init.ly}. +@file{ly/@/chord@/-modifier@/-init@/.ly}. For an example of tuning this property, see also -@inputfileref{input/regression,chord-name-exceptions.ly}. +@inputfileref{input/@/regression,chord@/-name@/-exceptions@/.ly}. @cindex exceptions, chord names. @@ -4674,7 +4699,7 @@ For an example of tuning this property, see also This property contains the markup object used for the 7th step, when it is major. Predefined options are @code{whiteTriangleMarkup} and @code{blackTriangleMarkup}. See -@inputfileref{input/regression,chord-name-major7.ly} for an example. +@inputfileref{input/@/regression,chord@/-name@/-major7@/.ly} for an example. @cindex @code{chordNameSeparator} @item chordNameSeparator @@ -4716,17 +4741,17 @@ There are also two other chord name schemes implemented: an alternate Jazz chord notation, and a systematic scheme called Banter chords. The alternate jazz notation is also shown on the chart in @ref{Chord name chart}. Turning on these styles is described in the input file -@inputfileref{input/test,chord-names-jazz.ly}. +@inputfileref{input/@/test,chord@/-names@/-jazz@/.ly}. @cindex Banter @cindex jazz chords -@cindex chords, jazz +@cindex chords, jazz @refcommands @cindex @code{\germanChords} -@code{\germanChords}, +@code{\germanChords}, @cindex @code{\semiGermanChords} @code{\semiGermanChords}. @@ -4735,13 +4760,14 @@ chart}. Turning on these styles is described in the input file @seealso -Examples: @inputfileref{input/regression,chord-name-major7.ly}, -@inputfileref{input/regression,chord-name-exceptions.ly}, -@inputfileref{input/test,chord-names-jazz.ly}, -@inputfileref{input/test,chords-without-melody.ly}. +Examples: @inputfileref{input/@/regression,chord@/-name@/-major7@/.ly}, +@inputfileref{input/@/regression,chord@/-name@/-exceptions@/.ly}, +@inputfileref{input/@/test,chord@/-names@/-jazz@/.ly}, +@inputfileref{input/@/test,chords@/-without@/-melody@/.ly}. -Init files: @file{scm/chords-ignatzek.scm}, and @file{scm/chord-entry.scm}. +Init files: @file{scm/@/chords@/-ignatzek@/.scm}, and +@file{scm/@/chord@/-entry@/.scm}. @refbugs @@ -4764,6 +4790,7 @@ following example @lilypond[verbatim, raggedright, quote] \context Voice { d' ^\markup \fret-diagram #"6-x;5-x;4-o;3-2;2-3;1-2;" + d' d' d' fis' ^\markup \override #'(size . 0.75) { \override #'(finger-code . below-string) { \fret-diagram-verbose #'((place-fret 6 2 1) (barre 6 1 2) @@ -4772,6 +4799,7 @@ following example (place-fret 1 2 1)) } } + fis' fis' fis' c' ^\markup \override #'(dot-radius . 0.35) { \override #'(finger-code . in-dot) { \override #'(dot-color . white) { @@ -4779,6 +4807,7 @@ following example } } } + c' c' c' } @end lilypond @@ -4786,16 +4815,16 @@ following example There are three different fret-diagram markup interfaces: standard, terse, and verbose. The three interfaces produce equivalent markups, but have varying amounts of information in the markup string. Details about the -markup interfaces are found at @ref{Overview of text markup commands}. +markup interfaces are found at @ref{Overview of text markup commands}. You can set a number of graphical properties according to your preference. -Details about the property interface to fret diagrams are found at +Details about the property interface to fret diagrams are found at @internalsref{fret-diagram-interface}. @seealso -Examples: @inputfileref{input/test,fret-diagram.ly} +Examples: @inputfileref{input/@/test,fret@/-diagram@/.ly} @node Improvisation @@ -4807,8 +4836,8 @@ to the @internalsref{Staff} or @internalsref{Voice} context. Then, the following command @example - \set squashedPosition = #0 - \override NoteHead #'style = #'slash +\set squashedPosition = #0 +\override NoteHead #'style = #'slash @end example @noindent @@ -4843,19 +4872,19 @@ some common problems in orchestral music. @menu -* System start delimiters:: -* Aligning to cadenzas:: -* Rehearsal marks:: -* Bar numbers:: -* Instrument names:: -* Transpose:: -* Instrument transpositions:: -* Multi measure rests:: -* Automatic part combining:: -* Hiding staves:: -* Different editions from one source:: -* Quoting other voices:: -* Formatting cue notes:: +* System start delimiters:: +* Aligning to cadenzas:: +* Rehearsal marks:: +* Bar numbers:: +* Instrument names:: +* Transpose:: +* Instrument transpositions:: +* Multi measure rests:: +* Automatic part combining:: +* Hiding staves:: +* Different editions from one source:: +* Quoting other voices:: +* Formatting cue notes:: @end menu @node System start delimiters @@ -4873,7 +4902,7 @@ connected. This is done with the @internalsref{GrandStaff} context. \new Staff { c1 c } \new Staff { c c } >> -@end lilypond +@end lilypond @item The group is started with a bracket, and bar lines are connected. This is done with the @@ -4885,7 +4914,7 @@ connected. This is done with the @internalsref{GrandStaff} context. \new Staff { c1 c } \new Staff { c c } >> -@end lilypond +@end lilypond @item The group is started with a vertical line. Bar lines are not @@ -4896,7 +4925,7 @@ connected. This is the default for the score. \new Staff { c1 c } \new Staff { c c } >> -@end lilypond +@end lilypond @end itemize @@ -4922,22 +4951,22 @@ in every context, and that type is determined by the property In an orchestral context, cadenzas present a special problem: when constructing a score that includes a cadenza, all other instruments should skip just as many notes as the length of the -cadenza, otherwise they will start too soon or too late. +cadenza, otherwise they will start too soon or too late. A solution to this problem are the functions @code{mmrest-of-length} and @code{skip-of-length}. These Scheme functions take a piece music as argument, and generate a @code{\skip} or multi rest, exactly as long as the piece. The use of @code{mmrest-of-length} is demonstrated -in the following example. +in the following example. @lilypond[verbatim,raggedright,quote] cadenza = \relative c' { c4 d8 << { e f g } \\ { d4. } >> g4 f2 g4 g } - + \new GrandStaff << - \new Staff { \cadenza c'4 } + \new Staff { \cadenza c'4 } \new Staff { #(ly:export (mmrest-of-length cadenza)) c'4 @@ -4957,12 +4986,12 @@ cadenza = \relative c' { To print a rehearsal mark, use the @code{\mark} command -@lilypond[quote,raggedright,fragment,verbatim,relative=1] - c1 \mark \default - c1 \mark \default - c1 \mark #8 - c1 \mark \default - c1 \mark \default +@lilypond[quote,raggedright,fragment,verbatim,relative=2] +c1 \mark \default +c1 \mark \default +c1 \mark #8 +c1 \mark \default +c1 \mark \default @end lilypond @noindent @@ -4979,24 +5008,22 @@ The style is defined by the property @code{markFormatter}. It is a function taking the current mark (an integer) and the current context as argument. It should return a markup object. In the following example, @code{markFormatter} is set to a canned procedure. After a -few measures, it is set to function that produces a boxed number. +few measures, it is set to function that produces a boxed number. -@c fragproblem? -gp -@lilypond[quote,raggedright,verbatim,relative=2] -{ - \set Score.markFormatter = #format-mark-numbers - c1 \mark \default - c1 \mark \default - \set Score.markFormatter - = #(lambda (mark context) - (make-bold-markup - (make-box-markup (number->string mark)))) - c1 \mark \default - c1 \mark \default -} +@lilypond[fragment,quote,raggedright,verbatim,relative=2] +\set Score.markFormatter = #format-mark-numbers +c1 \mark \default +c1 \mark \default +\set Score.markFormatter + = #(lambda (mark context) + (make-bold-markup + (make-box-markup (number->string mark)))) +c1 \mark \default +c1 \mark \default +c1 @end lilypond -The file @file{scm/translation-functions.scm} contains the definitions +The file @file{scm/@/translation@/-functions@/.scm} contains the definitions of @code{format-mark-numbers} (the default format) and @code{format-mark-letters}. These can be used as inspiration for other formatting functions. @@ -5011,39 +5038,36 @@ The @code{\mark} command can also be used to put signs like coda, segno and fermatas on a bar line. Use @code{\markup} to to access the appropriate symbol -@c fragproblem? -gp -@lilypond[quote,raggedright,verbatim,relative=2] -{ - c1 \mark \markup { \musicglyph #"scripts-ufermata" } - c1 -} +@lilypond[fragment,quote,raggedright,verbatim,relative=2] +c1 \mark \markup { \musicglyph #"scripts-ufermata" } +c1 @end lilypond In the case of a line break, marks must also be printed at the end of the line, and not at the beginning. Use the following to force that behavior @example - \override Score.RehearsalMark - #'break-visibility = #begin-of-line-invisible +\override Score.RehearsalMark + #'break-visibility = #begin-of-line-invisible @end example @cindex fermatas @cindex coda @cindex segno -@cindex bar lines, putting symbols on +@cindex bar lines, putting symbols on @seealso Program reference: @internalsref{MarkEvent}, @internalsref{RehearsalMark}. -Init files: @file{scm/translation-functions.scm} contains the +Init files: @file{scm/@/translation@/-functions@/.scm} contains the definition of @code{format-mark-numbers} and @code{format-mark-letters}. They can be used as inspiration for other formatting functions. -Examples: @inputfileref{input/regression,rehearsal-mark-letter.ly}, +Examples: @inputfileref{input/@/regression,rehearsal@/-mark@/-letter@/.ly}, -@inputfileref{input/regression,rehearsal-mark-number.ly}. +@inputfileref{input/@/regression,rehearsal@/-mark@/-number@/.ly}. @node Bar numbers @@ -5061,15 +5085,14 @@ is normally updated automatically for every measure. Bar numbers can be typeset at regular intervals instead of at the beginning of each line. This is illustrated in the following example, whose source is available as -@inputfileref{input/test,bar-number-regular-interval.ly} +@inputfileref{input/@/test,bar@/-number@/-regular@/-interval@/.ly} @lilypondfile[raggedright,quote]{bar-number-regular-interval.ly} Bar numbers can be manually changed by setting the @code{Staff.currentBarNumber} property -@c fragproblem? -gp -@lilypond[raggedright,quote] +@lilypond[verbatim,raggedright,quote] \relative c' { \repeat unfold 4 {c4 c c c} \break \set Score.currentBarNumber = #50 @@ -5081,8 +5104,9 @@ Bar numbers can be manually changed by setting the Program reference: @internalsref{BarNumber}. -Examples: @inputfileref{input/test,bar-number-every-five-reset.ly}, -and @inputfileref{input/test,bar-number-regular-interval.ly}. +Examples: +@inputfileref{input/@/test,bar@/-number@/-every@/-five@/-reset@/.ly}, +and @inputfileref{input/@/test,bar@/-number@/-regular@/-interval@/.ly}. @refbugs @@ -5103,21 +5127,21 @@ the start of the staff. For the first start, @code{instrument} is used, for the next ones @code{instr} is used. @lilypond[quote,verbatim,raggedright,relative=1,fragment] - \set Staff.instrument = "Ploink " - \set Staff.instr = "Plk " - c1 - \break - c'' +\set Staff.instrument = "Ploink " +\set Staff.instr = "Plk " +c1 +\break +c'' @end lilypond You can also use markup texts to construct more complicated instrument names, for example @lilypond[quote,fragment,verbatim,raggedright] - \set Staff.instrument = \markup { - \column < "Clarinetti" { "in B" - \smaller \flat } > } -{ c''1 } +\set Staff.instrument = \markup { + \column < "Clarinetti" + { "in B" \smaller \flat } > } +c''1 @end lilypond For longer instrument names, it may be useful to increase the @@ -5142,7 +5166,7 @@ the name to avoid a collision. A music expression can be transposed with @code{\transpose}. The syntax is @example - \transpose @var{from} @var{to} @var{musicexpr} +\transpose @var{from} @var{to} @var{musicexpr} @end example This means that @var{musicexpr} is transposed by the interval between @@ -5154,7 +5178,7 @@ For example, consider a piece written in the key of D major. If this piece is a little too low for its performer, it can be transposed up to E major with @example - \transpose d e @dots{} +\transpose d e @dots{} @end example Consider a part written for violin (a C instrument). If @@ -5162,8 +5186,8 @@ this part is to be played on the A clarinet, the following transposition will produce the appropriate part @example - \transpose a c @dots{} -@end example +\transpose a c @dots{} +@end example @code{\transpose} distinguishes between enharmonic pitches: both @code{\transpose c cis} or @code{\transpose c des} will transpose up @@ -5203,7 +5227,7 @@ E-flat), horn (F) and trumpet (B-flat, C, D and E-flat). The transposition is entered after the keyword @code{\transposition} @example - \transposition bes %% B-flat clarinet +\transposition bes %% B-flat clarinet @end example @noindent @@ -5213,18 +5237,18 @@ affect how notes are printed in the current staff. The pitch to use for @code{\transposition} should correspond to the transposition of the notes. For example, when entering a score in -concert pitch, typically all voices are entered in C, so +concert pitch, typically all voices are entered in C, so they should be entered as @example - clarinet = @{ - \transposition c' - ... - @} - saxophone = @{ - \transposition c' - .. - @} +clarinet = @{ + \transposition c' + ... +@} +saxophone = @{ + \transposition c' + ... +@} @end example The command @code{\transposition} should be used when the music is @@ -5234,14 +5258,14 @@ during a piece. When copying the notes from the part, use @code{\transposition}, e.g. @example - \transposition d' - c'4^"in D" - ... - \transposition g' - c'4^"in G" - ... +\transposition d' +c'4^"in D" +... +\transposition g' +c'4^"in G" +... @end example - + @cindex transposition, MIDI @@ -5263,8 +5287,8 @@ multimeasure rest. This expansion is controlled by the property be expanded, and the appropriate number is added automatically @lilypond[quote,raggedright,fragment,verbatim] - \time 4/4 r1 | R1 | R1*2 - \set Score.skipBars = ##t R1*17 R1*4 +\time 4/4 r1 | R1 | R1*2 +\set Score.skipBars = ##t R1*17 R1*4 @end lilypond The @code{1} in @code{R1} is similar to the duration notation used for @@ -5272,13 +5296,13 @@ notes. Hence, for time signatures other than 4/4, you must enter other durations. This can be done with augmentation dots or fractions @lilypond[quote,raggedright,fragment,verbatim] - \set Score.skipBars = ##t - \time 3/4 - R2. | R2.*2 - \time 13/8 - R1*13/8 - R1*13/8*12 | - \time 10/8 R4*5*4 | +\set Score.skipBars = ##t +\time 3/4 +R2. | R2.*2 +\time 13/8 +R1*13/8 +R1*13/8*12 | +\time 10/8 R4*5*4 | @end lilypond An @code{R} spanning a single measure is printed as either a whole rest @@ -5289,10 +5313,10 @@ If there are only a few measures of rest, LilyPond prints ``church rests'' rest, use @code{MultiMeasureRest.expand-limit}. @lilypond[quote,raggedright,fragment,verbatim] - \set Score.skipBars = ##t - R1*2 | R1*5 | R1*9 - \override MultiMeasureRest #'expand-limit = 1 - R1*2 | R1*5 | R1*9 +\set Score.skipBars = ##t +R1*2 | R1*5 | R1*9 +\override MultiMeasureRest #'expand-limit = 1 +R1*2 | R1*5 | R1*9 @end lilypond @@ -5301,28 +5325,28 @@ rest, use @code{MultiMeasureRest.expand-limit}. @cindex fermata on multi-measure rest Texts can be added to multi-measure rests by using the -@var{note}-@code{markup} syntax (see @ref{Text markup}). +@var{note}-@code{markup} syntax (see @ref{Text markup}). A variable (@code{\fermataMarkup}) is provided for adding fermatas @lilypond[quote,raggedright,verbatim,fragment] - \set Score.skipBars = ##t - \time 3/4 - R2.*10^\markup { "Ad lib" } - R2.^\fermataMarkup +\set Score.skipBars = ##t +\time 3/4 +R2.*10^\markup { \italic "ad lib." } +R2.^\fermataMarkup @end lilypond If you want to have a text on the left end of a multi-measure rest, attach the text to a zero-length skip note, i.e. @example - s1*0^"Allegro" - R1*4 +s1*0^"Allegro" +R1*4 @end example -@cindex whole rests for a full measure +@cindex whole rests for a full measure @seealso @@ -5349,7 +5373,7 @@ collisions. Be careful when entering multimeasure rests followed by whole notes. The following will enter two notes lasting four measures each @example - R1*4 cis cis +R1*4 cis cis @end example When @code{skipBars} is set, the result will look OK, but the bar numbering will be off. @@ -5370,7 +5394,7 @@ voices, and stem directions are set automatically. Also, solo and The syntax for part combining is @example - \partcombine @var{musicexpr1} @var{musicexpr2} +\partcombine @var{musicexpr1} @var{musicexpr2} @end example @@ -5432,9 +5456,9 @@ When @code{printPartCombineTexts} is set, when the two voices play the same notes on and off, the part combiner may typeset @code{a2} more than once in a measure. -@code{\partcombine} cannot be inside @code{\times}. +@code{\partcombine} cannot be inside @code{\times}. -@code{\partcombine} cannot be inside @code{\relative}. +@code{\partcombine} cannot be inside @code{\relative}. Internally, the @code{\partcombine} interprets both arguments as @code{Voice}s named @code{one} and @code{two}, and then decides when @@ -5450,7 +5474,7 @@ will be ignored. In orchestral scores, staff lines that only have rests are usually removed. This saves some space. This style is called `French Score'. -For @internalsref{Lyrics}, +For @internalsref{Lyrics}, @internalsref{ChordNames} and @internalsref{FiguredBass}, this is switched on by default. When these line of these contexts turn out empty after the line-breaking process, they are removed. @@ -5481,7 +5505,7 @@ removed from the first system too, set @code{remove-first} to false in Another application is making ossia sections, i.e. alternative melodies on a separate piece of staff, with help of a Frenched -staff. See @inputfileref{input/test,ossia.ly} for an example. +staff. See @inputfileref{input/@/test,ossia@/.ly} for an example. @node Different editions from one source @@ -5495,27 +5519,27 @@ In the following example, we see two versions of a piece of music, one for the full score, and one with cue notes for the instrumental part @example - c1 - << - \tag #'part << - R1 \\ - @{ - \set fontSize = #-1 - c4_"cue" f2 g4 @} - >> - \tag #'score R1 +c1 +<< + \tag #'part << + R1 \\ + @{ + \set fontSize = #-1 + c4_"cue" f2 g4 @} >> - c1 + \tag #'score R1 +>> +c1 @end example The same can be applied to articulations, texts, etc.: they are made by prepending @example - -\tag #@var{your-tag} +-\tag #@var{your-tag} @end example -to an articulation, for example, +to an articulation, for example, @example - c1-\tag #'part ^4 +c1-\tag #'part ^4 @end example This defines a note with a conditional fingering indication. @@ -5537,14 +5561,14 @@ would yield The argument of the @code{\tag} command should be a symbol, or a list of symbols, for example, @example - \tag #'(original-part transposed-part) @dots{} +\tag #'(original-part transposed-part) @dots{} @end example @seealso -Examples: @inputfileref{input/regression,tag-filter.ly}. +Examples: @inputfileref{input/@/regression,tag@/-filter@/.ly}. @refbugs @@ -5559,7 +5583,7 @@ directly. Before a part can be quoted, it must be marked especially as quotable. This is done with code @code{\addquote} command. @example - \addquote @var{name} @var{music} +\addquote @var{name} @var{music} @end example @@ -5567,11 +5591,11 @@ quotable. This is done with code @code{\addquote} command. Here, @var{name} is an identifying string. The @var{music} is any kind of music. This is an example of @code{\addquote} -@verbatim -\addquote clarinet \relative c' { +@example +\addquote clarinet \relative c' @{ f4 fis g gis -} -@end verbatim +@} +@end example This command must be entered at toplevel, i.e. outside any music blocks. @@ -5580,12 +5604,12 @@ After calling @code{\addquote}, the quotation may then be done with @code{\quote}, @example - \quote @var{name} @var{duration} +\quote @var{name} @var{duration} @end example During a part, a piece of music can be quoted with the @code{\quote} -command. - +command. + @example \quote clarinet 2. @end example @@ -5597,7 +5621,7 @@ More precisely, it takes the current time-step of the part being printed, and extracts the notes at the corresponding point of the @code{\addquote}d voice. Therefore, the argument to @code{\addquote} should be the entire part of the voice to be quoted, including any -rests at the beginning. +rests at the beginning. Quotations take into account the transposition of both source and target instruments, if they are specified using the @code{\transposition} command. @@ -5620,12 +5644,13 @@ rests of the cued voice end up in the @code{\quote}. Setting @example - \set Staff.quotedEventTypes = #'(note-event articulation-event dynamic-event) +\set Staff.quotedEventTypes = + #'(note-event articulation-event dynamic-event) @end example @noindent will quote notes (but no rests), together with scripts and dynamics. - + @refbugs Only the contents of the first @internalsref{Voice} occurring in an @@ -5639,8 +5664,8 @@ Quoting grace notes is broken and can even cause LilyPond to crash. In this manual: @ref{Instrument transpositions}. -Examples: @inputfileref{input/regression,quote.ly} -@inputfileref{input/regression,quote-transposition.ly} +Examples: @inputfileref{input/@/regression,quote@/.ly} +@inputfileref{input/@/regression,quote@/-transposition@/.ly} Program reference: @internalsref{QuoteMusic}. @@ -5656,7 +5681,7 @@ Here is an example of formatted cue notes @lilypond[raggedright,verbatim] smaller = { - \set fontSize = #-1 + \set fontSize = #-2 \override Stem #'length = #5.5 \override Beam #'thickness = #0.384 \override Beam #'space-function = @@ -5703,7 +5728,7 @@ the instrument, in this case ``Horn.'' Of course, the cue part is marked with the instrument playing the cue. @end itemize -@c really? Are you sure about that last point? I'll check after 3.0 -gp +@c really? Are you sure about that last point? I'll check after 3.0 -gp @node Ancient notation @@ -5787,19 +5812,19 @@ up during the baroque period. Here are all suptopics at a glance: @menu -* Ancient note heads:: -* Ancient accidentals:: -* Ancient rests:: -* Ancient clefs:: -* Ancient flags:: -* Ancient time signatures:: -* Ancient articulations:: -* Custodes:: -* Divisiones:: -* Ligatures:: -* Gregorian Chant contexts:: -* Mensural contexts:: -* Figured bass:: +* Ancient note heads:: +* Ancient accidentals:: +* Ancient rests:: +* Ancient clefs:: +* Ancient flags:: +* Ancient time signatures:: +* Ancient articulations:: +* Custodes:: +* Divisiones:: +* Ligatures:: +* Gregorian Chant contexts:: +* Mensural contexts:: +* Figured bass:: @end menu @@ -5825,9 +5850,9 @@ heads that mimic the look of note heads in historic printings of the The following example demonstrates the @code{neomensural} style @lilypond[quote,fragment,raggedright,verbatim] - \set Score.skipBars = ##t - \override NoteHead #'style = #'neomensural - a'\longa a'\breve a'1 a'2 a'4 a'8 a'16 +\set Score.skipBars = ##t +\override NoteHead #'style = #'neomensural +a'\longa a'\breve a'1 a'2 a'4 a'8 a'16 @end lilypond When typesetting a piece in Gregorian Chant notation, the @@ -5841,7 +5866,7 @@ engravers work. @seealso -Examples: @inputfileref{input/regression,note-head-style.ly} gives an +Examples: @inputfileref{input/@/regression,note@/-head@/-style@/.ly} gives an overview over all available note head styles. @@ -5861,7 +5886,7 @@ select ancient accidentals. Supported styles are \fatText s^\markup { \column < - "vaticana" + "vaticana" { " " \musicglyph #"accidentals-vaticana-1" " " \musicglyph #"accidentals-vaticana0" } > @@ -5897,7 +5922,7 @@ select ancient accidentals. Supported styles are As shown, not all accidentals are supported by each style. When trying to access an unsupported accidental, LilyPond will switch to a different style, as demonstrated in -@inputfileref{input/test,ancient-accidentals.ly}. +@inputfileref{input/@/test,ancient@/-accidentals@/.ly}. Similarly to local accidentals, the style of the key signature can be controlled by the @code{style} property of the @@ -5912,7 +5937,7 @@ the use of key signatures. Program reference: @internalsref{KeySignature}. -Examples: @inputfileref{input/test,ancient-accidentals.ly}. +Examples: @inputfileref{input/@/test,ancient@/-accidentals@/.ly}. @node Ancient rests @subsection Ancient rests @@ -5932,14 +5957,14 @@ in historic prints of the 16th century. The following example demonstrates the @code{neomensural} style @lilypond[quote,fragment,raggedright,verbatim] - \set Score.skipBars = ##t - \override Rest #'style = #'neomensural - r\longa r\breve r1 r2 r4 r8 r16 +\set Score.skipBars = ##t +\override Rest #'style = #'neomensural +r\longa r\breve r1 r2 r4 r8 r16 @end lilypond There are no 32th and 64th rests specifically for the mensural or neo-mensural style. Instead, the rests from the default style will be -taken. See @inputfileref{input/test,rests.ly} for a chart of all +taken. See @inputfileref{input/@/test,rests@/.ly} for a chart of all rests. There are no rests in Gregorian Chant notation; instead, it uses @@ -5967,128 +5992,153 @@ arbitrary line, as described in @ref{Clef}. The note printed to the right side of each clef in the example column denotes the @code{c'} with respect to that clef. -@multitable @columnfractions .4 .4 .2 - +@multitable @columnfractions .4 .4 .2 @item -@b{Description} @tab -@b{Supported Clefs} @tab +@b{Description} +@tab +@b{Supported Clefs} +@tab @b{Example} @item -modern style mensural C clef @tab -@code{neomensural-c1}, @code{neomensural-c2}, -@code{neomensural-c3}, @code{neomensural-c4} @tab -@lilypond[fragment,raggedright,quote,relative=1,notime] +modern style mensural C clef +@tab +@code{neomensural-c1}, @code{neomensural-c2},@* +@code{neomensural-c3}, @code{neomensural-c4} +@tab +@lilypond[fragment,relative=1,notime] \clef "neomensural-c2" c @end lilypond @item petrucci style mensural C clefs, for use on different staff lines -(the examples shows the 2nd staff line C clef). - +(the examples shows the 2nd staff line C clef) @tab -@code{petrucci-c1} -@code{petrucci-c2} -@code{petrucci-c3} -@code{petrucci-c4} +@code{petrucci-c1}, @code{petrucci-c2},@* +@code{petrucci-c3}, @code{petrucci-c4},@* @code{petrucci-c5} - @tab -@lilypond[fragment,quote,relative=1,notime,indent=0.0\mm] +@lilypond[fragment,relative=1,notime] \clef "petrucci-c2" c @end lilypond @item -petrucci style mensural F clef @tab -@code{petrucci-f} @tab -@lilypond[fragment,quote,relative=1,notime,indent=0.0\mm] +petrucci style mensural F clef +@tab +@code{petrucci-f} +@tab +@lilypond[fragment,relative=1,notime] \clef "petrucci-f" c @end lilypond @item -petrucci style mensural G clef @tab -@code{petrucci-g} @tab -@lilypond[fragment,quote,relative=1,notime,indent=0.0\mm] +petrucci style mensural G clef +@tab +@code{petrucci-g} +@tab +@lilypond[fragment,relative=1,notime] \clef "petrucci-g" c @end lilypond @item -historic style mensural C clef @tab -@code{mensural-c1}, @code{mensural-c2}, @code{mensural-c3}, -@code{mensural-c4} @tab -@lilypond[fragment,quote,relative=1,notime,indent=0.0\mm] +historic style mensural C clef +@tab +@code{mensural-c1}, @code{mensural-c2},@* +@code{mensural-c3}, @code{mensural-c4} +@tab +@lilypond[fragment,relative=1,notime] \clef "mensural-c2" c @end lilypond @item -historic style mensural F clef @tab -@code{mensural-f} @tab -@lilypond[fragment,quote,relative=1,notime,indent=0.0\mm] +historic style mensural F clef +@tab +@code{mensural-f} +@tab +@lilypond[fragment,relative=1,notime] \clef "mensural-f" c @end lilypond @item -historic style mensural G clef @tab -@code{mensural-g} @tab -@lilypond[fragment,quote,relative=1,notime,indent=0.0\mm] +historic style mensural G clef +@tab +@code{mensural-g} +@tab +@lilypond[fragment,relative=1,notime] \clef "mensural-g" c @end lilypond @item -Editio Vaticana style do clef @tab -@code{vaticana-do1}, @code{vaticana-do2}, @code{vaticana-do3} @tab -@lilypond[fragment,quote,relative=1,notime,indent=0.0\mm] +Editio Vaticana style do clef +@tab +@code{vaticana-do1}, @code{vaticana-do2},@* +@code{vaticana-do3} +@tab +@lilypond[fragment,relative=1,notime] \override Staff.StaffSymbol #'line-count = #4 \clef "vaticana-do2" c @end lilypond @item -Editio Vaticana style fa clef @tab -@code{vaticana-fa1}, @code{vaticana-fa2} @tab -@lilypond[quote,relative=1,notime,indent=0.0\mm,fragment] +Editio Vaticana style fa clef +@tab +@code{vaticana-fa1}, @code{vaticana-fa2} +@tab +@lilypond[fragment,relative=1,notime] \override Staff.StaffSymbol #'line-count = #4 \clef "vaticana-fa2" c @end lilypond @item -Editio Medicaea style do clef @tab -@code{medicaea-do1}, @code{medicaea-do2}, @code{medicaea-do3} @tab -@lilypond[fragment,quote,relative=1,notime,indent=0.0\mm] +Editio Medicaea style do clef +@tab +@code{medicaea-do1}, @code{medicaea-do2},@* +@code{medicaea-do3} +@tab +@lilypond[fragment,relative=1,notime] \override Staff.StaffSymbol #'line-count = #4 \clef "medicaea-do2" c @end lilypond @item -Editio Medicaea style fa clef @tab -@code{medicaea-fa1}, @code{medicaea-fa2} @tab -@lilypond[fragment,quote,relative=1,notime,indent=0.0\mm] +Editio Medicaea style fa clef +@tab +@code{medicaea-fa1}, @code{medicaea-fa2} +@tab +@lilypond[fragment,relative=1,notime] \override Staff.StaffSymbol #'line-count = #4 \clef "medicaea-fa2" c @end lilypond @item -historic style hufnagel do clef @tab -@code{hufnagel-do1}, @code{hufnagel-do2}, @code{hufnagel-do3} @tab -@lilypond[fragment,quote,relative=1,notime,indent=0.0\mm] +historic style hufnagel do clef +@tab +@code{hufnagel-do1}, @code{hufnagel-do2},@* +@code{hufnagel-do3} +@tab +@lilypond[fragment,relative=1,notime] \override Staff.StaffSymbol #'line-count = #4 \clef "hufnagel-do2" c @end lilypond @item -historic style hufnagel fa clef @tab -@code{hufnagel-fa1}, @code{hufnagel-fa2} @tab -@lilypond[fragment,quote,relative=1,notime,indent=0.0\mm] +historic style hufnagel fa clef +@tab +@code{hufnagel-fa1}, @code{hufnagel-fa2} +@tab +@lilypond[fragment,relative=1,notime] \override Staff.StaffSymbol #'line-count = #4 \clef "hufnagel-fa2" c @end lilypond @item -historic style hufnagel combined do/fa clef @tab -@code{hufnagel-do-fa} @tab -@lilypond[fragment,quote,relative=1,notime,indent=0.0\mm] +historic style hufnagel combined do/fa clef +@tab +@code{hufnagel-do-fa} +@tab +@lilypond[fragment,relative=1,notime] \clef "hufnagel-do-fa" c @end lilypond - @end multitable @@ -6128,12 +6178,12 @@ select ancient flags. Besides the @code{default} flag style, only @code{mensural} style is supported @lilypond[quote,fragment,raggedright,verbatim] - \override Stem #'flag-style = #'mensural - \override Stem #'thickness = #1.0 - \override NoteHead #'style = #'mensural - \autoBeamOff - c'8 d'8 e'8 f'8 c'16 d'16 e'16 f'16 c'32 d'32 e'32 f'32 s8 - c''8 d''8 e''8 f''8 c''16 d''16 e''16 f''16 c''32 d''32 e''32 f''32 +\override Stem #'flag-style = #'mensural +\override Stem #'thickness = #1.0 +\override NoteHead #'style = #'mensural +\autoBeamOff +c'8 d'8 e'8 f'8 c'16 d'16 e'16 f'16 c'32 d'32 e'32 f'32 s8 +c''8 d''8 e''8 f''8 c''16 d''16 e''16 f''16 c''32 d''32 e''32 f''32 @end lilypond Note that the innermost flare of each mensural flag always is @@ -6225,14 +6275,14 @@ The following examples shows the differences in style, \time 2/2 c1^\markup { \hspace #-2.0 \typewriter default } - \override Staff.TimeSignature #'style = #'numbered + \override Staff.TimeSignature #'style = #'numbered \time 2/2 c1^\markup { \hspace #-2.0 \typewriter numbered } \override Staff.TimeSignature #'style = #'mensural \time 2/2 c1^\markup { \hspace #-2.0 \typewriter mensural } - + \override Staff.TimeSignature #'style = #'neomensural \time 2/2 c1^\markup { \hspace #-2.0 \typewriter neomensural } @@ -6254,13 +6304,13 @@ example, the ratio of 1 brevis = 3 semibrevis (tempus perfectum) must be made by hand, by setting @example - breveTP = #(ly:make-duration -1 0 3 2) - @dots{} - @{ c\breveTP f1 @} +breveTP = #(ly:make-duration -1 0 3 2) +@dots{} +@{ c\breveTP f1 @} @end example @noindent -This sets @code{breveTP} to 3/2 times 2 = 3 times a whole note. +This sets @code{breveTP} to 3/2 times 2 = 3 times a whole note. The @code{old6/8alt} symbol (an alternate symbol for 6/8) is not addressable with @code{\time}. Use a @code{\markup} instead @@ -6275,7 +6325,7 @@ In addition to the standard articulation signs described in section provided. These are specifically designed for use with notation in Editio Vaticana style. -@lilypond[quote,raggedright,verbatim,noindent] +@lilypond[quote,raggedright,verbatim] \include "gregorian-init.ly" \score { \context VaticanaVoice { @@ -6350,7 +6400,7 @@ supported are @code{vaticana}, @code{medicaea}, @code{hufnagel} and @lilypond[quote,raggedright,fragment] \new Lyrics \lyricmode { \markup { \column < - \typewriter "vaticana" + \typewriter "vaticana" { " " \musicglyph #"custodes-vaticana-u0" } > } \markup { \column < @@ -6366,14 +6416,13 @@ supported are @code{vaticana}, @code{medicaea}, @code{hufnagel} and { " " \musicglyph #"custodes-mensural-u0" } >} } - @end lilypond @seealso Program reference: @internalsref{Custos}. -Examples: @inputfileref{input/regression,custos.ly}. +Examples: @inputfileref{input/@/regression,custos@/.ly}. @node Divisiones @@ -6393,12 +6442,12 @@ only marks the end of a chant, but is also frequently used within a single antiphonal/responsorial chant to mark the end of each section. -To use divisiones, include the file @code{gregorian-init.ly}. It +To use divisiones, include the file @file{gregorian@/-init@/.ly}. It contains definitions that you can apply by just inserting @code{\divisioMinima}, @code{\divisioMaior}, @code{\divisioMaxima}, and @code{\finalis} at proper places in the input. Some editions use @emph{virgula} or @emph{caesura} instead of divisio minima. -Therefore, @code{gregorian-init.ly} also defines @code{\virgula} and +Therefore, @file{gregorian@/-init@/.ly} also defines @code{\virgula} and @code{\caesura} @lilypondfile[quote,raggedright]{divisiones.ly} @@ -6424,7 +6473,7 @@ In this manual: @ref{Breath marks}. Program reference: @internalsref{BreathingSign}, @internalsref{BreathingSignEvent}. -Examples: @inputfileref{input/test,divisiones.ly}. +Examples: @inputfileref{input/@/test,divisiones@/.ly}. @node Ligatures @subsection Ligatures @@ -6473,8 +6522,8 @@ Augmentum dots within ligatures are not handled correctly. @menu -* White mensural ligatures:: -* Gregorian square neumes ligatures:: +* White mensural ligatures:: +* Gregorian square neumes ligatures:: @end menu @node White mensural ligatures @@ -6483,7 +6532,7 @@ Augmentum dots within ligatures are not handled correctly. @cindex Mensural ligatures @cindex White mensural ligatures -There is limited support for white mensural ligatures. +There is limited support for white mensural ligatures. To engrave white mensural ligatures, in the layout block the @internalsref{Mensural_ligature_engraver} has to be put into the @@ -6511,14 +6560,14 @@ automatic transcription of the ligatures. For example, @example - \set Score.timing = ##f - \set Score.defaultBarType = "empty" - \override NoteHead #'style = #'neomensural - \override Staff.TimeSignature #'style = #'neomensural - \clef "petrucci-g" - \[ g\longa c\breve a\breve f\breve d'\longa \] - s4 - \[ e1 f1 a\breve g\longa \] +\set Score.timing = ##f +\set Score.defaultBarType = "empty" +\override NoteHead #'style = #'neomensural +\override Staff.TimeSignature #'style = #'neomensural +\clef "petrucci-g" +\[ g\longa c\breve a\breve f\breve d'\longa \] +s4 +\[ e1 f1 a\breve g\longa \] @end example @lilypond[quote,raggedright] \score { @@ -6584,10 +6633,19 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @multitable @columnfractions .4 .2 .2 .2 @item -@b{Neuma aut@*Neumarum Elementa} @tab -@b{Figurae@*Rectae} @tab -@b{Figurae@*Liquescentes Auctae} @tab -@b{Figurae@*Liquescentes Deminutae} +@b{Neuma aut@* +Neumarum Elementa} +@tab +@b{Figurae@* +Rectae} +@tab +@b{Figurae@* +Liquescentes@* +Auctae} +@tab +@b{Figurae@* +Liquescentes@* +Deminutae} @c TODO: \layout block is identical in all of the below examples. @c Therefore, it should somehow be included rather than duplicated all @@ -6602,7 +6660,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{1. Punctum} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.5\cm] +@lilypond[staffsize=26,linewidth=1.5\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6617,7 +6675,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=2.5\cm] +@lilypond[staffsize=26,linewidth=2.5\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6636,7 +6694,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6650,7 +6708,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{2. Virga} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6666,7 +6724,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{3. Apostropha vel Stropha} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6677,7 +6735,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6692,7 +6750,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{4. Oriscus} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6708,7 +6766,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{5. Clivis vel Flexa} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6719,7 +6777,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=2.0\cm] +@lilypond[staffsize=26,linewidth=2.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6734,7 +6792,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6748,7 +6806,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{6. Podatus vel Pes} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6759,7 +6817,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=2.0\cm] +@lilypond[staffsize=26,linewidth=2.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6774,7 +6832,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6788,7 +6846,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{7. Pes Quassus} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6799,7 +6857,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6814,7 +6872,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{8. Quilisma Pes} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6825,7 +6883,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6840,7 +6898,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{9. Podatus Initio Debilis} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6851,7 +6909,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6866,7 +6924,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{10. Torculus} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6877,7 +6935,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6888,7 +6946,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6902,7 +6960,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{11. Torculus Initio Debilis} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6913,7 +6971,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6924,7 +6982,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6938,7 +6996,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{12. Porrectus} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6949,7 +7007,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6960,7 +7018,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6974,7 +7032,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{13. Climacus} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6986,7 +7044,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published } @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -6997,7 +7055,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -7011,7 +7069,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{14. Scandicus} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -7022,7 +7080,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -7033,7 +7091,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -7047,7 +7105,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{15. Salicus} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -7058,7 +7116,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published \layout { \neumeDemoLayout }} @end lilypond @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -7073,7 +7131,7 @@ volume of the Antiphonale Romanum (@emph{Liber Hymnarius}), published @item @code{16. Trigonus} @tab -@lilypond[quote,noindent,staffsize=26,linewidth=1.0\cm] +@lilypond[staffsize=26,linewidth=1.0\cm] \include "gregorian-init.ly" \score { \transpose c c' { @@ -7110,223 +7168,321 @@ above table it refers. The second column gives the name of the ligature. The third column shows the code fragment that produces this ligature, using @code{g}, @code{a} and @code{b} as example pitches. -@multitable @columnfractions .1 .4 .5 - +@multitable @columnfractions .02 .31 .67 @item -@b{#} @tab -@b{Name} @tab +@b{#} +@tab +@b{Name} +@tab @b{Input Language} @item -a @tab -Punctum @tab +a +@tab +Punctum +@tab @code{\[ b \]} @item -b @tab -Punctum Inclinatum @tab +b +@tab +Punctum Inclinatum +@tab @code{\[ \inclinatum b \]} @item -c @tab -Punctum Auctum Ascendens @tab +c +@tab +Punctum Auctum@* +Ascendens +@tab @code{\[ \auctum \ascendens b \]} @item -d @tab -Punctum Auctum Descendens @tab +d +@tab +Punctum Auctum@* +Descendens +@tab @code{\[ \auctum \descendens b \]} @item -e @tab -Punctum Inclinatum Auctum @tab +e +@tab +Punctum Inclinatum@* +Auctum +@tab @code{\[ \inclinatum \auctum b \]} @item -f @tab -Punctum Inclinatum Parvum @tab +f +@tab +Punctum Inclinatum@* +Parvum @tab @code{\[ \inclinatum \deminutum b \]} @item -g @tab -Virga @tab +g +@tab +Virga +@tab @code{\[ \virga b \]} @item -h @tab -Stropha @tab +h +@tab +Stropha +@tab @code{\[ \stropha b \]} @item -i @tab -Stropha Aucta @tab +i +@tab +Stropha Aucta +@tab @code{\[ \stropha \auctum b \]} @item -j @tab -Oriscus @tab +j +@tab +Oriscus +@tab @code{\[ \oriscus b \]} @item -k @tab -Clivis vel Flexa @tab +k +@tab +Clivis vel Flexa +@tab @code{\[ b \flexa g \]} @item -l @tab -Clivis Aucta Descendens @tab +l +@tab +Clivis Aucta@* +Descendens +@tab @code{\[ b \flexa \auctum \descendens g \]} @item -m @tab -Clivis Aucta Ascendens @tab +m +@tab +Clivis Aucta@* +Ascendens +@tab @code{\[ b \flexa \auctum \ascendens g \]} @item -n @tab -Cephalicus @tab +n +@tab +Cephalicus +@tab @code{\[ b \flexa \deminutum g \]} @item -o @tab -Podatus vel Pes @tab +o +@tab +Podatus vel Pes +@tab @code{\[ g \pes b \]} @item -p @tab -Pes Auctus Descendens @tab +p +@tab +Pes Auctus@* +Descendens +@tab @code{\[ g \pes \auctum \descendens b \]} @item -q @tab -Pes Auctus Ascendens @tab +q +@tab +Pes Auctus@* +Ascendens +@tab @code{\[ g \pes \auctum \ascendens b \]} @item -r @tab -Epiphonus @tab +r +@tab +Epiphonus +@tab @code{\[ g \pes \deminutum b \]} @item -s @tab -Pes Quassus @tab +s +@tab +Pes Quassus +@tab @code{\[ \oriscus g \pes \virga b \]} @item -t @tab -Pes Quassus Auctus Descendens @tab +t +@tab +Pes Quassus@* +Auctus Descendens @tab @code{\[ \oriscus g \pes \auctum \descendens b \]} @item -u @tab -Quilisma Pes @tab +u +@tab +Quilisma Pes +@tab @code{\[ \quilisma g \pes b \]} @item -v @tab -Quilisma Pes Auctus Descendens @tab +v +@tab +Quilisma Pes@* +Auctus Descendens +@tab @code{\[ \quilisma g \pes \auctum \descendens b \]} @item -w @tab -Pes Initio Debilis @tab +w +@tab +Pes Initio Debilis +@tab @code{\[ \deminutum g \pes b \]} @item -x @tab -Pes Auctus Descendens Initio Debilis @tab +x +@tab +Pes Auctus Descendens@* +Initio Debilis +@tab @code{\[ \deminutum g \pes \auctum \descendens b \]} @item -y @tab -Torculus @tab +y +@tab +Torculus +@tab @code{\[ a \pes b \flexa g \]} @item -z @tab -Torculus Auctus Descendens @tab +z +@tab +Torculus Auctus@* +Descendens +@tab @code{\[ a \pes b \flexa \auctum \descendens g \]} @item -A @tab -Torculus Deminutus @tab +A +@tab +Torculus Deminutus +@tab @code{\[ a \pes b \flexa \deminutum g \]} @item -B @tab -Torculus Initio Debilis @tab +B +@tab +Torculus Initio Debilis +@tab @code{\[ \deminutum a \pes b \flexa g \]} @item -C @tab -Torculus Auctus Descendens Initio Debilis @tab +C +@tab +Torculus Auctus@* +Descendens Initio Debilis +@tab @code{\[ \deminutum a \pes b \flexa \auctum \descendens g \]} @item -D @tab -Torculus Deminutus Initio Debilis @tab +D +@tab +Torculus Deminutus@* +Initio Debilis +@tab @code{\[ \deminutum a \pes b \flexa \deminutum g \]} @item -E @tab -Porrectus @tab +E +@tab +Porrectus +@tab @code{\[ a \flexa g \pes b \]} @item -F @tab -Porrectus Auctus Descendens @tab +F +@tab +Porrectus Auctus@* +Descendens +@tab @code{\[ a \flexa g \pes \auctum \descendens b \]} @item -G @tab -Porrectus Deminutus @tab +G +@tab +Porrectus Deminutus +@tab @code{\[ a \flexa g \pes \deminutum b \]} @item -H @tab -Climacus @tab +H +@tab +Climacus +@tab @code{\[ \virga b \inclinatum a \inclinatum g \]} @item -I @tab -Climacus Auctus @tab +I +@tab +Climacus Auctus +@tab @code{\[ \virga b \inclinatum a \inclinatum \auctum g \]} @item -J @tab -Climacus Deminutus @tab +J +@tab +Climacus Deminutus +@tab @code{\[ \virga b \inclinatum a \inclinatum \deminutum g \]} @item -K @tab -Scandicus @tab +K +@tab +Scandicus +@tab @code{\[ g \pes a \virga b \]} @item -L @tab -Scandicus Auctus Descendens @tab +L +@tab +Scandicus Auctus@* +Descendens +@tab @code{\[ g \pes a \pes \auctum \descendens b \]} @item -M @tab -Scandicus Deminutus @tab +M +@tab +Scandicus Deminutus +@tab @code{\[ g \pes a \pes \deminutum b \]} @item -N @tab -Salicus @tab +N +@tab +Salicus +@tab @code{\[ g \oriscus a \pes \virga b \]} @item -O @tab -Salicus Auctus Descendens @tab +O +@tab +Salicus Auctus Descendens +@tab @code{\[ g \oriscus a \pes \auctum \descendens b \]} @item -P @tab -Trigonus @tab +P +@tab +Trigonus +@tab @code{\[ \stropha b \stropha b \stropha a \]} - @end multitable @refcommands @@ -7377,7 +7533,7 @@ initialize all relevant context properties and grob properties to proper values, so you can immediately go ahead entering the chant, as the following excerpt demonstrates -@lilypond[quote,raggedright,verbatim,noindent] +@lilypond[quote,raggedright,verbatim] \include "gregorian-init.ly" \score { << @@ -7412,17 +7568,17 @@ style. These contexts initialize all relevant context properties and grob properties to proper values, so you can immediately go ahead entering the chant, as the following excerpt demonstrates -@lilypond[quote,raggedright,verbatim,noindent] +@lilypond[quote,raggedright,verbatim] \score { << \context MensuralVoice = "discantus" \transpose c c' { \override Score.BarNumber #'transparent = ##t { - c'1\melisma bes a g\melismaEnd - f\breve - \[ f1\melisma a c'\breve d'\melismaEnd \] - c'\longa - c'\breve\melisma a1 g1\melismaEnd - fis\longa^\signumcongruentiae + c'1\melisma bes a g\melismaEnd + f\breve + \[ f1\melisma a c'\breve d'\melismaEnd \] + c'\longa + c'\breve\melisma a1 g1\melismaEnd + fis\longa^\signumcongruentiae } } \lyricsto "discantus" \new Lyrics { @@ -7475,19 +7631,19 @@ to the numbers <4- 6+ 7!> @end example @lilypond[quote,raggedright,fragment] - \context FiguredBass - \figuremode { <4- 6+ 7!> } +\context FiguredBass +\figuremode { <4- 6+ 7!> } @end lilypond Spaces or dashes may be inserted by using @code{_}. Brackets are introduced with @code{[} and @code{]} @example -< [4 6] 8 [_! 12]> +< [4 6] 8 [_! 12] > @end example @lilypond[quote,raggedright,fragment] - \context FiguredBass - \figuremode { < [4 6] 8 [_! 12]> } +\context FiguredBass +\figuremode { < [4 6] 8 [_! 12] > } @end lilypond Although the support for figured bass may superficially resemble chord @@ -7502,7 +7658,7 @@ vertical spacing of the figures may be set with @code{baseline-skip}. @seealso -Program reference: @internalsref{BassFigureEvent} music, @internalsref{BassFigure} object, +Program reference: @internalsref{BassFigureEvent} music, @internalsref{BassFigure} object, and @internalsref{FiguredBass} context. @refbugs @@ -7523,10 +7679,10 @@ LilyPond is limited. @menu -* Polymetric notation:: -* Clusters:: -* Special fermatas:: -* Feathered beams:: +* Polymetric notation:: +* Clusters:: +* Special fermatas:: +* Feathered beams:: @end menu @node Polymetric notation @@ -7538,12 +7694,11 @@ created with a markup text. This markup text is inserted in the @internalsref{TimeSignature} grob. @lilypond[verbatim,raggedright] - % create 2/4 + 5/8 tsMarkup =\markup { - \number { + \number { \column < "2" "4" > - \musicglyph #"scripts-stopped" + \musicglyph #"scripts-stopped" \bracket \column < "5" "8" > } } @@ -7560,37 +7715,37 @@ Each staff can also have its own time signature. This is done by moving the @internalsref{Timing_engraver} to @internalsref{Staff} context. -@verbatim -\layout{ - \context{ \Score \remove "Timing_engraver" } - \context{ \Staff \consists "Timing_engraver" } -} -@end verbatim +@example +\layout @{ + \context @{ \Score \remove "Timing_engraver" @} + \context @{ \Staff \consists "Timing_engraver" @} +@} +@end example Now, each staff has its own time signature. -@verbatim +@example << - \new Staff { + \new Staff @{ \time 3/4 c4 c c | c c c | - } - \new Staff { + @} + \new Staff @{ \time 2/4 c4 c | c c | c c - } - \new Staff { + @} + \new Staff @{ \time 3/8 c4. c8 c c c4. c8 c c - } + @} >> -@end verbatim +@end example @lilypond[quote,raggedright] \layout{ \context{ \Score \remove "Timing_engraver" } \context{ \Staff \consists "Timing_engraver" } -} +} \relative c' << \new Staff { @@ -7621,11 +7776,11 @@ The latter is done with @code{\compressmusic}, which is similar to In this example, music with the time signatures of 3/4, 9/8 and 10/8 are -used in parallel. In the second staff, shown durations are multiplied by -2/3, so that 2/3 * 9/8 = 3/4, and in the third staff, shown durations are +used in parallel. In the second staff, shown durations are multiplied by +2/3, so that 2/3 * 9/8 = 3/4, and in the third staff, shown durations are multiplied by 3/5, so that 3/5 * 10/8 = 3/4. -@lilypond[raggedright,verbatim,fragment] +@lilypond[quote,raggedright,verbatim,fragment] \relative c' { << \new Staff { \time 3/4 @@ -7670,11 +7825,11 @@ applying the function @code{makeClusters} to a sequence of chords, e.g. @c @lilypond[quote,raggedright,relative=2,fragment,verbatim] - \makeClusters { } +\makeClusters { } @end lilypond The following example (from -@inputfileref{input/regression,cluster.ly}) shows what the result +@inputfileref{input/@/regression,cluster@/.ly}) shows what the result looks like @lilypondfile[raggedright,quote]{cluster.ly} @@ -7690,7 +7845,7 @@ Program reference: @internalsref{ClusterSpanner}, @internalsref{Cluster_spanner_engraver}, and @internalsref{ClusterNoteEvent}. -Examples: @inputfileref{input/regression,cluster.ly}. +Examples: @inputfileref{input/@/regression,cluster@/.ly}. @refbugs @@ -7757,7 +7912,7 @@ forcing two beams to overlap. Here is an example, } \new Voice { \stemUp - \once \override Voice.Beam #'positions = #'(0 . -0.5) + \once \override Voice.Beam #'positions = #'(0 . -0.5) c[ c c c c] } >> @@ -7772,10 +7927,10 @@ With the amount of control that LilyPond offers, one can make great teaching tools in addition to great musical scores. @menu -* Balloon help:: -* Blank music sheet:: -* Hidden notes:: -* Easy Notation note heads:: +* Balloon help:: +* Blank music sheet:: +* Hidden notes:: +* Easy Notation note heads:: @end menu @node Balloon help @@ -7797,8 +7952,8 @@ The following example demonstrates its use. @noindent The function @code{add-balloon-text} takes the name of a grob, the -label to print, and the position where to put the label relative to -the object. In the above example, the text ``heads or tails?'' ends +label to print, and the position where to put the label relative to +the object. In the above example, the text ``heads or tails?'' ends 3 spaces below and 1 space to the right of the marked head. @cindex balloon @@ -7808,7 +7963,7 @@ the object. In the above example, the text ``heads or tails?'' ends Program reference: @internalsref{text-balloon-interface}. -Examples: @inputfileref{input/regression,balloon.ly}. +Examples: @inputfileref{input/@/regression,balloon@/.ly}. @@ -7820,9 +7975,9 @@ A blank music sheet can be produced also by using invisible notes, and removing @code{Bar_number_engraver}. -@lilypond[] +@lilypond[quote,verbatim] emptymusic = { - \repeat unfold 2 % Change this for more lines. + \repeat unfold 2 % Change this for more lines. { s1\break } \bar "|." } @@ -7848,11 +8003,11 @@ Hidden (or invisible or transparent) notes can be useful in preparing theory or composition exercises. @lilypond[quote,raggedright,verbatim,relative=2,fragment] - c4 d4 - \hideNotes - e4 f4 - \unHideNotes - g4 a +c4 d4 +\hideNotes +e4 f4 +\unHideNotes +g4 a @end lilypond Hidden notes are also great for performing weird tricks. For example, @@ -7862,13 +8017,13 @@ when doing pizzicato to indicate that the note should ring for as long as possible. @lilypond[quote,raggedright,verbatim,relative=0,fragment] - \clef bass - << { - c4^"pizz"( \hideNotes c) - \unHideNotes c( \hideNotes c) - } { - s4 r s r - } >> +\clef bass +<< { + c4^"pizz"( \hideNotes c) + \unHideNotes c( \hideNotes c) +} { + s4 r s r +} >> @end lilypond diff --git a/Documentation/user/point-and-click.itely b/Documentation/user/point-and-click.itely index b201ab5e0e..0275dc00b8 100644 --- a/Documentation/user/point-and-click.itely +++ b/Documentation/user/point-and-click.itely @@ -20,13 +20,14 @@ The most obvious choice is Xdvi@footnote{KDVI also provides src specials, but does not use the kpathsea library, so it cannot find LilyPond font and PostScript library files.}, version 22.36 or newer. It is available from -@uref{ftp://ftp.math.berkeley.edu/pub/Software/TeX/xdvi.tar.gz,ftp.math.berkeley.edu}. +@uref{ftp://@/ftp@/.math@/.berkeley@/.edu/@/pub/@/Software/@/TeX/@/xdvi@/.tar@/.gz, +ftp@/.math@/.berkeley@/.edu}. Most @TeX{} distributions ship with xdvik, which is always a few versions behind the official Xdvi. To find out which Xdvi you are running, try @code{xdvi -version} or @code{xdvi.bin -version}. -@item an editor with a client/server interface (or a lightweight GUI +@item an editor with a client/@/server interface (or a lightweight GUI editor): @@ -34,8 +35,8 @@ editor): @itemize @bullet @item Emacs. Emacs is an extensible text-editor. It is available from -@uref{http://www.gnu.org/software/emacs/}. You need version 21 to use -column location. +@uref{http://@/www@/.gnu@/.org/@/software/@/emacs/}. You need version 21 +to use column location. @c move this elsewhere? @@ -50,12 +51,12 @@ column location. @cindex XEmacs @item NEdit. NEdit runs under Windows, and Unix. - It is available from @uref{http://www.nedit.org}. +It is available from @uref{http://@/www@/.nedit@/.org}. @cindex NEdit @item GVim. GVim is a GUI variant of VIM, the popular VI -clone. It is available from @uref{http://www.vim.org}. +clone. It is available from @uref{http://@/www@/.vim@/.org}. @cindex GVim @cindex Vim @@ -91,7 +92,7 @@ insert one line, all following locations will be off by a line. @cindex Emacs For using point-and-click with Emacs, add the following -In your Emacs startup file (usually @file{~/.emacs}): +In your Emacs startup file (usually @file{~/@/.emacs}): @example (server-start) @end example diff --git a/Documentation/user/programming-interface.itely b/Documentation/user/programming-interface.itely index 672b0582f2..fc91a4db3f 100644 --- a/Documentation/user/programming-interface.itely +++ b/Documentation/user/programming-interface.itely @@ -212,7 +212,7 @@ functions: Examples of the use of @code{\applymusic} are in the next section. @seealso -@file{ly/music-functions-init.ly}. +@file{ly/@/music@/-functions@/-init@/.ly}. @node Manipulating music expressions @subsection Manipulating music expressions @@ -276,7 +276,7 @@ children. @end example A slightly more elaborate example is in -@inputfileref{input/test,reverse-music.ly}. +@inputfileref{input/@/test,reverse@/-music@/.ly}. Some of the input syntax is also implemented as recursive music functions. For example, the syntax for polyphony @@ -293,10 +293,10 @@ above by the internal equivalent of @end example Other applications of @code{\applymusic} are writing out repeats -automatically (@inputfileref{input/test,unfold-all-repeats.ly}), -saving keystrokes (@inputfileref{input/test,music-box.ly}) and +automatically (@inputfileref{input/@/test,unfold@/-all@/-repeats@/.ly}), +saving keystrokes (@inputfileref{input/@/test,music@/-box@/.ly}) and exporting LilyPond input to other formats -(@inputfileref{input/test,to-xml.ly}) +(@inputfileref{input/@/test,to@/-xml@/.ly}) @cindex internal storage @cindex @code{\displayMusic} @@ -306,10 +306,10 @@ music function @code{\displayMusic} @seealso -@file{scm/music-functions.scm}, @file{scm/music-types.scm}, -@inputfileref{input/test,add-staccato.ly}, -@inputfileref{input/test,unfold-all-repeats.ly}, and -@inputfileref{input/test,music-box.ly}. +@file{scm/@/music@/-functions@/.scm}, @file{scm/@/music@/-types@/.scm}, +@inputfileref{input/@/test,add@/-staccato@/.ly}, +@inputfileref{input/@/test,unfold@/-all@/-repeats@/.ly}, and +@inputfileref{input/@/test,music@/-box@/.ly}. @node Using LilyPond syntax inside Scheme @@ -514,7 +514,7 @@ raise markup is called as The @code{raise-markup} first creates the stencil for the @code{foo} string, and then it raises that Stencil by 0.5 staff space. This is a rather simple example; more complex examples are in the rest of this -section, and in @file{scm/define-markup-commands.scm}. +section, and in @file{scm/@/define@/-markup@/-commands@/.scm}. @node Markup command definition @subsection Markup command definition diff --git a/Documentation/user/scheme-tutorial.itely b/Documentation/user/scheme-tutorial.itely index bc3c2b3250..2534ef2633 100644 --- a/Documentation/user/scheme-tutorial.itely +++ b/Documentation/user/scheme-tutorial.itely @@ -15,7 +15,7 @@ LilyPond uses the Scheme programming language, both as part of the input syntax, and as internal mechanism to glue together modules of the program. This section is a very brief overview of entering data in Scheme.@footnote{If you want to know more about Scheme, see -@uref{http://www.schemers.org}.} +@uref{http://@/www@/.schemers@/.org}.} The most basic thing of a language is data: numbers, character strings, lists, etc. Here is a list of data types that are relevant to diff --git a/Documentation/user/sound-output.itexi b/Documentation/user/sound-output.itexi index cd219f33b8..b99d925af9 100644 --- a/Documentation/user/sound-output.itexi +++ b/Documentation/user/sound-output.itexi @@ -27,7 +27,7 @@ settings. Therefore the midi file should not have more than 15 staves Not all midi players correctly handle tempo change in the midi output. Players that are known to work include -@uref{http://timidity.sourceforge.net/,timidity}. +@uref{http://@/timidity@/.sourceforge@/.net/,timidity}. @@ -110,7 +110,7 @@ inserted, for example Context definitions follow precisely the same syntax as within the \layout block. Translation modules for sound are called performers. -The contexts for MIDI output are defined in @file{ly/performer-init.ly}. +The contexts for MIDI output are defined in @file{ly/@/performer@/-init@/.ly}. @node MIDI instrument names diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index 294ccbdb8a..5285d6baa8 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -24,7 +24,7 @@ LilyPond input that was used to generate that image. Try it on this image @lilypond[fragment,quote,raggedright,relative=2] - c-\markup { \bold \huge { Click here. } } +c-\markup { \bold \huge { Click here. } } @end lilypond @end ifhtml @@ -68,14 +68,14 @@ of music, a scale. A note can be entered by typing its name, from @samp{a} through @samp{g}. So, if you enter @example - c d e f g a b +c d e f g a b @end example @noindent the result looks like this @lilypond[fragment,quote,notime,relative=1] - c d e f g a b +c d e f g a b @end lilypond The duration of a note is specified by a number after the note name. @@ -88,9 +88,9 @@ a1 a2 a4 a16 a32 @c FIXME: have NOTIME also remove Score.timing? @lilypond[fragment,quote,notime,relative=2] - \set Score.timing = ##f - \set Staff.autoBeaming = ##f - { a1 a2 a4 a16 a32 s16_" " } +\set Score.timing = ##f +\set Staff.autoBeaming = ##f +{ a1 a2 a4 a16 a32 s16_" " } @end lilypond If you do not specify a @rglos{duration}, the duration last entered is @@ -98,12 +98,12 @@ used for the next notes. The duration of the first note in input defaults to a quarter @example - a a8 a a2 a +a a8 a a2 a @end example @lilypond[fragment,quote,notime,relative=2] - \set Score.timing = ##f - { a a8 a a2 a s16_" " } +\set Score.timing = ##f +{ a a8 a a2 a s16_" " } @end lilypond @@ -111,64 +111,64 @@ Rests are entered just like notes, but with the name @samp{r} @cindex rests @example - r2 r4 r8 r16 +r2 r4 r8 r16 @end example @lilypond[fragment,quote,notime] - \set Score.timing = ##f - r2 r4 r8 r16 s16_" " +\set Score.timing = ##f +r2 r4 r8 r16 s16_" " @end lilypond Add a dot @samp{.} after the duration to get a @rglos{dotted note} @example - a2. a4 a8. a16 +a2. a4 a8. a16 @end example @lilypond[fragment,quote,notime,relative=1] - \set Score.timing = ##f - { a2. a4 a8. a16 s16_" " } +\set Score.timing = ##f +{ a2. a4 a8. a16 s16_" " } @end lilypond The @rglos{meter} (or @rglos{time signature}) can be set with the @code{\time} command @example - \time 3/4 - \time 6/8 - \time 4/4 +\time 3/4 +\time 6/8 +\time 4/4 @end example @c A clef here may lead to confusion, remove it. @lilypond[fragment,quote] - \override Staff.Clef #'transparent = ##t - \time 3/4 - s4_" " - \time 6/8 - s4_" " - \time 4/4 - s16_" " +\override Staff.Clef #'transparent = ##t +\time 3/4 +s4_" " +\time 6/8 +s4_" " +\time 4/4 +s16_" " @end lilypond The @rglos{clef} can be set using the @code{\clef} command @example - \clef treble - \clef bass - \clef alto - \clef tenor +\clef treble +\clef bass +\clef alto +\clef tenor @end example @lilypond[fragment,quote,notime] - \set Score.timing = ##f - \clef treble - s4_" " - \clef bass - s4_" " - \clef alto - s4_" " - \clef tenor - s16_" " +\set Score.timing = ##f +\clef treble +s4_" " +\clef bass +s4_" " +\clef alto +s4_" " +\clef tenor +s16_" " @end lilypond @@ -176,10 +176,10 @@ Remember to enclose the notes and commands in curly braces @code{@{@tie{}@dots{}@tie{}@}} to convert it to printable output. @lilypond[fragment,quote,noindent,linewidth=55\staffspace] - \time 3/4 - \clef bass - c2 e4 g2. - f4 e d c2 r4 +\time 3/4 +\clef bass +c2 e4 g2. +f4 e d c2 r4 @end lilypond For more elaborate information on @@ -222,7 +222,7 @@ the file @file{INSTALL.txt}.} In your text editor, enter the following input and save the file as @file{test.ly} @example - @{ c'4 e' g' @} +@{ c'4 e' g' @} @end example @noindent @@ -236,15 +236,17 @@ lilypond test.ly You will see something resembling @example -lilypond (GNU LilyPond) 2.2.0 -Running lilypond... -Now processing `/home/fred/ly/test.ly' +lilypond test.ly +GNU LilyPond 2.5.0 +Processing `test.ly' Parsing... -Interpreting music...[1] -@emph{... more interesting stuff ... } -DVI output to `test.dvi'... -PDF output to `test.pdf'... -PS output to `test.ps'... +Interpreting music... [1] +Preprocessing graphical objects... +Calculating line breaks... [2] +Layout output to `test.tex'... +Converting to `test.dvi'... +Converting to `test.ps'... +Converting to `test.pdf'... @end example @cindex DVI file @@ -263,8 +265,8 @@ printing. } which you can print or with the standard facilities of your operating system.@footnote{If your system does not have any tools installed, you can try -@uref{http://www.cs.wisc.edu/~ghost/,Ghostscript}, a freely available -package for viewing and printing PDF and PostScript files.} +@uref{http://@/www@/.cs@/.wisc@/.edu/@/~ghost/,Ghostscript}, a freely +available package for viewing and printing PDF and PostScript files.} On Windows, start up a text-editor@footnote{Any simple or programmer-oriented editor will do, for example Notepad. Do not use a @@ -272,7 +274,7 @@ word processor, since these insert formatting codes that will confuse LilyPond.} and enter @example - @{ c'4 e' g' @} +@{ c'4 e' g' @} @end example Save it on the desktop as @file{test.ly} and make sure that it is not @@ -291,12 +293,12 @@ derived from note naming conventions in Nordic and Germanic languages, like German and Dutch.} @example - cis1 ees fisis aeses +cis1 ees fisis aeses @end example @lilypond[fragment,quote,notime] - \set Score.timing = ##f - \transpose c c' { cis1 ees fisis aeses s16_" " } +\set Score.timing = ##f +\transpose c c' { cis1 ees fisis aeses s16_" " } @end lilypond @cindex key signature, setting @@ -304,17 +306,17 @@ The key signature is set with the command @code{\key}, followed by a pitch and @code{\major} or @code{\minor} @example - \key d \major - g1 - \key c \minor - g +\key d \major +g1 +\key c \minor +g @end example @lilypond[fragment,quote,notime,fragment] - \key d \major - g'1 - \key c \minor - g' +\key d \major +g'1 +\key c \minor +g' @end lilypond @noindent @@ -336,16 +338,16 @@ not be added automatically, and you must enter what you want to hear. In this example @lilypond[quote,notime,fragment] - \key d \major - d' cis' fis' +\key d \major +d' cis' fis' @end lilypond @noindent no note has an explicit accidental, but you still must enter @example - \key d \major - d cis fis +\key d \major +d cis fis @end example @noindent @@ -354,8 +356,8 @@ staff.' Rather, it means: `a note with pitch D-natural.' In the key of A-flat major, it does get an accidental @lilypond[quote,notime,fragment,relative=1,verbatim] - \key as \major - d +\key as \major +d @end lilypond Adding all alterations explicitly might require a little more effort @@ -385,7 +387,7 @@ A tie is created by appending a tilde @samp{~} to the first note being tied @lilypond[quote,notime,fragment,verbatim,relative=3] - g4~ g a2~ a4 +g4~ g a2~ a4 @end lilypond For more information on Ties see @ref{Ties}. @@ -399,7 +401,7 @@ For more information on Ties see @ref{Ties}. Beams are drawn automatically @lilypond[quote,fragment,relative=2,verbatim] - a8 ais d es r d +a8 ais d es r d @end lilypond @noindent @@ -408,7 +410,7 @@ hand. Mark the first note to be beamed with @samp{[} and the last one with @samp{]}. @lilypond[quote,fragment,relative=2,verbatim] - a8[ ais] d[ es r d] +a8[ ais] d[ es r d] @end lilypond For more information on beams, see @ref{Beaming}. @@ -462,10 +464,10 @@ c'4 c'' c''' \clef bass c c, An example of the use of quotes is in the following Mozart fragment @lilypond[quote,raggedright,fragment,verbatim] - \key a \major - \time 6/8 - cis''8. d''16 cis''8 e''4 e''8 - b'8. cis''16 b'8 d''4 d''8 +\key a \major +\time 6/8 +cis''8. d''16 cis''8 e''4 e''8 +b'8. cis''16 b'8 d''4 d''8 @end lilypond @noindent @@ -536,14 +538,14 @@ expression}. We have already seen in the previous examples; a single note is a music expression @lilypond[fragment,quote,verbatim,relative=3] - a4 +a4 @end lilypond Enclosing group of notes in braces creates a new music expression @lilypond[fragment,quote,verbatim,relative=3] - { a4 g4 } +{ a4 g4 } @end lilypond Putting a bunch of music expressions (notes) in braces, means that @@ -553,7 +555,7 @@ Here, the expression from the previous example is combined with two notes @lilypond[fragment,quote,verbatim,relative=3] - { { a4 g } f g } +{ { a4 g } f g } @end lilypond This technique is useful for non-monophonic music. To enter music @@ -700,7 +702,7 @@ Common accents can be added to a note using a dash (@samp{-}) and a single character @lilypond[fragment,quote,verbatim,relative=2] - c-. c-- c-> c-^ c-+ c-_ +c-. c-- c-> c-^ c-+ c-_ @end lilypond @cindex fingering @@ -708,7 +710,7 @@ Similarly, fingering indications can be added to a note using a dash (@samp{-}) and the digit to be printed @lilypond[fragment,quote,verbatim,relative=2] - c-3 e-5 b-2 a-1 +c-3 e-5 b-2 a-1 @end lilypond Articulations and fingerings are usually placed automatically, but you @@ -717,14 +719,14 @@ also use multiple articulations on the same note. In most cases, it is best to let LilyPond determine the articulation directions. @lilypond[fragment,quote,verbatim,relative=2] - c_-^1 d^. f^4_2-> e^-_+ +c_-^1 d^. f^4_2-> e^-_+ @end lilypond Dynamic signs are made by adding the markings (with a backslash) to the note @lilypond[fragment,quote,verbatim,relative=2] - c\ff c\mf +c\ff c\mf @end lilypond @cindex dynamics @@ -736,7 +738,7 @@ Crescendi and decrescendi are started with the commands @code{\<} and crescendo, or the command @code{\!} can be used @lilypond[fragment,quote,verbatim,relative=2] - c2\< c2\ff\> c2 c2\! +c2\< c2\ff\> c2 c2\! @end lilypond @@ -748,7 +750,7 @@ articulation. The starting note and ending note are marked with @samp{(} and @samp{)}, respectively @lilypond[fragment,quote,fragment,relative=2,verbatim] - d4( c16) cis( d e c cis d) e( d4) +d4( c16) cis( d e c cis d) e( d4) @end lilypond @cindex slurs versus ties @@ -759,7 +761,7 @@ and can be used on larger groups of notes. Slurs and ties can be nested @lilypond[quote,fragment,relative=2] - c2~( c8 fis fis4 ~ fis2 g2) +c2~( c8 fis fis4 ~ fis2 g2) @end lilypond @cindex phrasing slurs @@ -768,7 +770,7 @@ Slurs to indicate phrasing can be entered with @code{\(} and same time. @lilypond[quote,fragment,relative=2,verbatim] - a8(\( ais b c) cis2 b'2 a4 cis, c\) +a8(\( ais b c) cis2 b'2 a4 cis, c\) @end lilypond @@ -798,7 +800,7 @@ Chords can be made by surrounding pitches with angle brackets. Angle brackets are the symbols @samp{<} and @samp{>}. @lilypond[quote,relative=1,fragment,verbatim] - r4 4 8 +r4 4 8 @end lilypond @@ -806,16 +808,16 @@ You can combine markings like beams and ties with chords. They must be placed outside the angled brackets @lilypond[quote,relative=1,fragment,verbatim] - r4 8[ ]~ +r4 8[ ]~ @end lilypond @example - r4 8\>( \!) +r4 8\>( \!) @end example @lilypond[quote,relative=1,fragment] - \slurUp - r4 8\>( \!) +\slurUp +r4 8\>( \!) @end lilypond @@ -830,8 +832,8 @@ is followed by a duration: @code{\partial 4} is a quarter note upstep and @code{\partial 8} an eighth note @lilypond[quote,relative=2,verbatim,fragment] - \partial 8 - f8 c2 d e +\partial 8 +f8 c2 d e @end lilypond @cindex tuplets @@ -842,8 +844,8 @@ of music is multiplied by the fraction. Triplets make notes occupy 2/3 of their notated duration, so a triplet has 2/3 as its fraction @lilypond[quote,relative=1,verbatim,fragment] - \times 2/3 { f8 g a } - \times 2/3 { c r c } +\times 2/3 { f8 g a } +\times 2/3 { c r c } @end lilypond @cindex grace notes @@ -854,8 +856,8 @@ keyword @code{\appoggiatura} or @code{\acciaccatura} @cindex acciaccatura @lilypond[quote,relative=2,verbatim,fragment] - c4 \appoggiatura b16 c4 - c4 \acciaccatura b16 c4 +c4 \appoggiatura b16 c4 +c4 \acciaccatura b16 c4 @end lilypond @noindent @@ -912,7 +914,7 @@ statement marks for which version of LilyPond the file was written. To mark a file for version 2.4.0, use @example - \version "2.4.0" +\version "2.4.0" @end example @noindent @@ -1013,7 +1015,7 @@ In popular music, it is common to denote accompaniment with chord names. Such chords can be entered like notes, @lilypond[quote,verbatim,raggedright] - \chordmode { c2 f4. g8 } +\chordmode { c2 f4. g8 } @end lilypond @noindent @@ -1024,7 +1026,7 @@ Other chords can be created by adding modifiers after a colon. The following example shows a few common modifiers @lilypond[quote,verbatim,raggedright] - \chordmode { c2 f4:m g4:maj7 gis1:dim7 } +\chordmode { c2 f4:m g4:maj7 gis1:dim7 } @end lilypond For lead sheets, chords are not printed on staves, but as names on a @@ -1034,7 +1036,7 @@ but renders the notes in a @code{ChordNames} context, with the following result. @lilypond[quote,verbatim,raggedright] - \chords { c2 f4.:m g4.:maj7 gis8:dim7 } +\chords { c2 f4.:m g4.:maj7 gis8:dim7 } @end lilypond @cindex lead sheet @@ -1159,7 +1161,7 @@ but now this entire expression must be interpreted as a @code{PianoStaff} @example - \new PianoStaff << \new Staff @dots{} >> +\new PianoStaff << \new Staff @dots{} >> @end example Here is a small example @@ -1186,7 +1188,7 @@ By using variables, also known as identifiers, it is possible to break up complex music expressions. An identifier is assigned as follows @example - namedMusic = @{ @dots{} @} +namedMusic = @{ @dots{} @} @end example @noindent @@ -1210,20 +1212,20 @@ It is possible to use variables for many other types of objects in the input. For example, @example - width = 4.5\cm - name = "Wendy" - aFivePaper = \paper @{ paperheight = 21.0 \cm @} +width = 4.5\cm +name = "Wendy" +aFivePaper = \paper @{ paperheight = 21.0 \cm @} @end example Depending on its contents, the identifier can be used in different places. The following example uses the above variables @example - \paper @{ - \aFivePaper - linewidth = \width - @} - @{ c4^\name @} +\paper @{ + \aFivePaper + linewidth = \width +@} +@{ c4^\name @} @end example More information on the possible uses of identifiers is in the @@ -1242,7 +1244,7 @@ both the part and the score. It is convenient to define the notes in a special file. For example, suppose that the file @file{horn-music.ly} contains the following part -of a horn/bassoon duo +of a horn/@/bassoon duo @example hornNotes = \relative c @{ @@ -1281,10 +1283,10 @@ tuning of a normal French Horn in@tie{}F. The transposition can be seen in the following output @lilypond[quote,raggedright] - \transpose f c' \relative c { - \time 2/4 - r4 f8 a cis4 f e d - } +\transpose f c' \relative c { + \time 2/4 + r4 f8 a cis4 f e d +} @end lilypond In ensemble pieces, one of the voices often does not play for many @@ -1295,14 +1297,14 @@ duration, longer rests can be constructed. For example, this rest takes 3@tie{}measures in 2/4 time @example - R2*3 +R2*3 @end example When printing the part, multi-rests must be condensed. This is done by setting a run-time variable @example - \set Score.skipBars = ##t +\set Score.skipBars = ##t @end example @noindent @@ -1338,17 +1340,17 @@ that the other voice is in @code{bassoonNotes} in the file leading to @lilypond[quote,raggedright] - \relative c << - \new Staff { - \time 2/4 R2*3 - r4 f8 a cis4 f e d - } - \new Staff { - \clef bass - r4 d,8 f | gis4 c | b bes | - a8 e f4 | g d | gis f - } - >> +\relative c << + \new Staff { + \time 2/4 R2*3 + r4 f8 a cis4 f e d + } + \new Staff { + \clef bass + r4 d,8 f | gis4 c | b bes | + a8 e f4 | g d | gis f + } +>> @end lilypond More in-depth information on preparing parts and scores can be found diff --git a/GNUmakefile.in b/GNUmakefile.in index d4e8ae5ebe..8ede7e6cda 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -114,7 +114,8 @@ $(builddir)/share/lilypond-force: ln -s $(abs-srcdir)/scm cd $(builddir)/share/lilypond/tex && \ ln -s $(abs-srcdir)/tex source && \ - ln -s ../../../mf/$(outconfbase) generate + ln -s ../../../tex/$(outconfbase) tex-out && \ + ln -s ../../../mf/$(outconfbase) mf-out cd $(builddir)/share/lilypond/fonts && \ ln -s $(abs-srcdir)/mf source && \ ln -s ../../../mf/$(outconfbase) afm && \ diff --git a/SConstruct b/SConstruct index 5adfcb3058..f3067fd56f 100644 --- a/SConstruct +++ b/SConstruct @@ -367,6 +367,8 @@ def configure (target, source, env): cpppath = [] if env.has_key ('CPPPATH'): cpppath = env['CPPPATH'] + + ## FIXME: linkage, check for libguile.h and scm_boot_guile #this could happen after flower... env.ParseConfig ('guile-config compile') @@ -674,7 +676,8 @@ def symlink_tree (target, source, env): ('mf', 'share/lilypond/fonts/tfm'), ('mf', 'share/lilypond/fonts/type1'), ('#tex', 'share/lilypond/tex/source'), - ('mf', 'share/lilypond/tex/generate'), + ('tex', 'share/lilypond/tex/tex-out'), + ('mf', 'share/lilypond/tex/mf-out'), ('#ly', 'share/lilypond/ly'), ('#scm', 'share/lilypond/scm'), ('#ps', 'share/lilypond/ps'), diff --git a/THANKS b/THANKS index 9bbfc1ff24..cb56967f8c 100644 --- a/THANKS +++ b/THANKS @@ -19,6 +19,7 @@ Guy Gascoigne-Piggford Heikki Junes Hendrik Maryns Kristof Bastiaensen +Lisa Opus Goldstein Mats Bengtsson Michael Welsh Duggan Peter Lutek diff --git a/VERSION b/VERSION index e6ca421457..d9361ffac8 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=2 MINOR_VERSION=4 -PATCH_LEVEL=0 +PATCH_LEVEL=1 MY_PATCH_LEVEL= diff --git a/buildscripts/mf-to-table.py b/buildscripts/mf-to-table.py index 7e74af991a..6dc4c268a7 100644 --- a/buildscripts/mf-to-table.py +++ b/buildscripts/mf-to-table.py @@ -1,9 +1,9 @@ #!@PYTHON@ -# mf-to-table.py -- convert spacing info in MF logs .afm and .tex -# +# mf-to-table.py -- convert spacing info in MF logs .afm and .tex +# # source file of the GNU LilyPond music typesetter -# +# # (c) 1997--2004 Han-Wen Nienhuys import os @@ -18,8 +18,8 @@ postfixes = ['log', 'dvi', '2602gf', 'tfm'] def read_log_file (fn): str = open (fn).read () - str = re.sub ('\n', '', str) - str = re.sub ('[\t ]+', ' ', str) + str = re.sub ('\n', '', str) + str = re.sub ('[\t ]+', ' ', str) deps = [] autolines = [] @@ -37,14 +37,13 @@ def read_log_file (fn): return (autolines, deps) - class Char_metric: def __init__ (self): pass def tfm_checksum (fn): - sys.stderr.write ("Reading checksum from `%s'\n" % fn) + sys.stderr.write ("Reading checksum from `%s'\n" % fn) s = open (fn).read () s = s[ 12 * 2 : ] cs_bytes = s[:4] @@ -57,8 +56,10 @@ def tfm_checksum (fn): return cs + ## ugh. What's font_family supposed to be? It's not an afm thing. font_family = 'feta' + def parse_logfile (fn): (autolines, deps) = read_log_file (fn) charmetrics = [] @@ -66,7 +67,7 @@ def parse_logfile (fn): group = '' for l in autolines: - tags = string.split(l, '@:') + tags = string.split (l, '@:') if tags[0] == 'group': group = tags[1] elif tags[0] == 'puorg': @@ -76,17 +77,17 @@ def parse_logfile (fn): if group: name = group + '-' + name m = { - 'description': tags[1], - 'name': name, + 'description': tags[1], + 'name': name, 'tex': tags[10], 'code': string.atoi (tags[2]), - 'breapth':string.atof (tags[3]), + 'breapth': string.atof (tags[3]), 'width': string.atof (tags[4]), - 'depth':string.atof (tags[5]), - 'height':string.atof (tags[6]), + 'depth': string.atof (tags[5]), + 'height': string.atof (tags[6]), 'wx': string.atof (tags[7]), - 'wy':string.atof (tags[8]), - } + 'wy': string.atof (tags[8]), + } charmetrics.append (m) elif tags[0] == 'font': global font_family @@ -94,10 +95,9 @@ def parse_logfile (fn): # To omit 'GNU' (foundry) from font name proper: # name = tags[2:] #urg - if 0: #testing + if 0: # testing tags.append ('Regular') - encoding = re.sub (' ','-', tags[5]) tags = tags[:-1] name = tags[1:] @@ -108,93 +108,99 @@ def parse_logfile (fn): '-') if 1: global_info['Weight'] = tags[4] - else: #testing + else: # testing global_info['Weight'] = tags[-1] - + global_info['FontBBox'] = '0 0 1000 1000' global_info['Ascender'] = '0' global_info['Descender'] = '0' global_info['EncodingScheme'] = encoding - - return (global_info, charmetrics, deps) + return (global_info, charmetrics, deps) -def write_afm_char_metric(file, charmetric): +def write_afm_char_metric (file, charmetric): f = 1000; tup = (charmetric['code'], - charmetric['name'], - -charmetric['breapth'] *f, - -charmetric['depth']*f, - charmetric['width']*f, - charmetric['height']*f, + charmetric['name'], + -charmetric['breapth'] * f, + -charmetric['depth'] * f, + charmetric['width'] * f, + charmetric['height'] * f, charmetric['wx'] * f, charmetric['wy'] * f) - + file.write ('C %d ; N %s ; B %d %d %d %d ; W %d %d ;\n'% tup) + def write_afm_header (file): file.write ("StartFontMetrics 2.0\n") file.write ("Comment Automatically generated by mf-to-table.py\n") + def write_afm_metric (file, global_info, charmetrics): - for (k,v) in global_info.items(): - file.write ("%s %s\n" % (k,v)) + for (k, v) in global_info.items(): + file.write ("%s %s\n" % (k, v)) file.write ('StartCharMetrics %d\n' % len(charmetrics )) for m in charmetrics: - write_afm_char_metric (file,m) + write_afm_char_metric (file, m) file.write ('EndCharMetrics\n') file.write ('EndFontMetrics\n') def write_tex_defs (file, global_info, charmetrics): - ##nm = global_info['FontFamily'] + ## nm = global_info['FontFamily'] nm = font_family for m in charmetrics: - file.write (r'''\gdef\%s%s{\char%d}%%%s''' % (nm, m['tex'], m['code'],'\n')) + file.write (r'''\gdef\%s%s{\char%d}%%%s''' % \ + (nm, m['tex'], m['code'],'\n')) file.write ('\\endinput\n') + def write_ps_encoding (name, file, global_info, charmetrics): encs = ['.notdef'] * 256 for m in charmetrics: encs[m['code']] = m['tex'] file.write ('/%s [\n' % name) - for m in range(0,256): + for m in range (0, 256): file.write (' /%s %% %d\n' % (encs[m], m)) file.write ('] def\n') - + + def write_fontlist (file, global_info, charmetrics): - ##nm = global_info['FontFamily'] + ## nm = global_info['FontFamily'] nm = font_family - per_line = 3 - file.write (r""" -%% LilyPond file to list all font symbols and the corresponding names + per_line = 2 + file.write ( +r"""%% LilyPond file to list all font symbols and the corresponding names %% Automatically generated by mf-to-table.py -\score { \lyrics { \time %d/8 -""" % (2*per_line+1)) + +\score { + \lyrics { \time %d/8 +""" % (2 * per_line + 1)) count = 0 for m in charmetrics: - count += 1 - -## \musicglyph and \markup require "_" to be escaped differently: - - scm_string = re.sub('_', r'_', m['name']) + ## \musicglyph and \markup require "_" to be escaped + ## differently + scm_string = re.sub ('_', r'_', m['name']) tex_string = re.sub ('_', r'\\_' , m['name']) - -## prevent TeX from interpreting "--" as long dash: - tex_string=re.sub('--','-{}-', tex_string) - file.write (' \\markup { \\raise #0.75 \\vcenter \\musicglyph #"%s" \\typewriter " %s" } 4 \n' % (scm_string, tex_string)) + ## prevent TeX from interpreting "--" as long dash + tex_string = re.sub ('--','-{}-', tex_string) - if (count % 3) ==0: - file.write ('\skip 8 \\break\n') - file.write (r""" -} - \layout{ + file.write (''' \\markup { \\raise #0.75 \\vcenter + \\musicglyph #"%s" + \\typewriter " %s" } 4\n''' % (scm_string, tex_string)) + + if (count % per_line) == 0: + file.write (' \\skip 8 \\break\n') + file.write (r""" } + + \layout { interscoreline = 1.0 indent = 0.0 \cm \context { @@ -203,16 +209,15 @@ def write_fontlist (file, global_info, charmetrics): minimumVerticalExtent = ##f } \context { - \Score - \remove "Bar_number_engraver" - } - } - } + \Score + \remove "Bar_number_engraver" + } + } +} """) + def write_deps (file, deps, targets): - - for t in targets: t = re.sub ( '^\\./', '', t) file.write ('%s '% t) @@ -221,8 +226,10 @@ def write_deps (file, deps, targets): file.write ('%s ' % d) file.write ('\n') -def help(): - sys.stdout.write(r"""Usage: mf-to-table [OPTIONS] LOGFILEs + +def help (): + sys.stdout.write(r"""Usage: mf-to-table [OPTIONS] LOGFILEs + Generate feta metrics table from preparated feta log. Options: @@ -234,16 +241,15 @@ Options: -p, --package=DIR specify package -t, --tex=FILE name output tex chardefs - """ -) - sys.exit (0) - + """) + sys.exit (0) -(options, files) = getopt.getopt( - sys.argv[1:], 'a:d:hl:o:p:t:', - ['enc=', 'afm=', 'outdir=', 'dep=', 'tex=', 'ly=', 'debug', 'help', 'package=']) - +(options, files) = \ + getopt.getopt (sys.argv[1:], + 'a:d:hl:o:p:t:', + ['enc=', 'afm=', 'outdir=', 'dep=', + 'tex=', 'ly=', 'debug', 'help', 'package=']) enc_nm = '' texfile_nm = '' @@ -289,14 +295,14 @@ for filenm in files: afm.write ("Comment DesignSize %.2f\n" % g['DesignSize']) del g['DesignSize'] - + write_afm_metric (afm, g, m) write_tex_defs (open (texfile_nm, 'w'), g, m) enc_name = 'FetaEncoding' - if re.search ('parmesan', filenm) : + if re.search ('parmesan', filenm): enc_name = 'ParmesanEncoding' - elif re.search ('feta-brace', filenm) : + elif re.search ('feta-brace', filenm): enc_name = 'FetaBraceEncoding' write_ps_encoding (enc_name, open (enc_nm, 'w'), g, m) @@ -307,6 +313,3 @@ for filenm in files: texfile_nm, afmfile_nm]) if lyfile_nm: write_fontlist (open (lyfile_nm, 'w'), g, m) - - - diff --git a/configure.in b/configure.in index 27e838d06e..0f6f4aadce 100644 --- a/configure.in +++ b/configure.in @@ -46,7 +46,7 @@ AC_LANG_C STEPMAKE_LOCALE STEPMAKE_GETTEXT STEPMAKE_MSGFMT(REQUIRED) -STEPMAKE_TEXMF +STEPMAKE_TEXMF(REQUIRED) STEPMAKE_TEXMF_DIRS STEPMAKE_GUILE_DEVEL(REQUIRED, 1.6) STEPMAKE_KPATHSEA @@ -63,6 +63,15 @@ AC_FUNC_MEMCMP AC_FUNC_VPRINTF AC_CHECK_FUNCS([gettext isinf memmem snprintf vsnprintf gettext]) +AC_MSG_CHECKING([for ec-fonts-mftraced]) +ecb10=`kpsewhich ecb10.pfa 2>/dev/null` +if test -n "$ecb10"; then + AC_MSG_RESULT([$ecb10]) +else + AC_MSG_RESULT(no) + STEPMAKE_ADD_ENTRY(REQUIRED, 'package ec-fonts-mftraced') +fi + # This is developer only anyway, help pkgconfig a bit export PKG_CONFIG_PATH diff --git a/input/regression/new-slur.ly b/input/regression/new-slur.ly index f66966d0ae..67193f4a0c 100644 --- a/input/regression/new-slur.ly +++ b/input/regression/new-slur.ly @@ -68,10 +68,8 @@ \clef treble \new Voice { \slurDown - c=''4( d, c') s4 - } - \new Voice \relative c'' { - \slurDown f2( d4 f | g c a f | d c f2 | f1) | + c=''4(^"slurs forced down" d, c') s4 + f=''2( d4 f | g c a f | d c f2 | f1) | } % \override Slur #'excentricity = #-2 diff --git a/lily/lexer.ll b/lily/lexer.ll index 391d2d5141..dc55cdb1bb 100644 --- a/lily/lexer.ll +++ b/lily/lexer.ll @@ -28,10 +28,13 @@ /* Flex >= 2.5.29 fix; FlexLexer.h's multiple include bracing breaks when building the actual lexer. */ + #define LEXER_CC #include + using namespace std; + #include "music-function.hh" #include "source-file.hh" #include "parse-scm.hh" diff --git a/lily/lily-parser.cc b/lily/lily-parser.cc index 355791e719..253cae0467 100644 --- a/lily/lily-parser.cc +++ b/lily/lily-parser.cc @@ -281,7 +281,7 @@ LY_DEFINE (ly_parse_file, "ly:parse-file", Sources sources; sources.set_path (&global_path); - progress_indication (_f ("Now processing `%s'", file_name.to_str0 ())); + progress_indication (_f ("Processing `%s'", file_name.to_str0 ())); progress_indication ("\n"); Lily_parser *parser = new Lily_parser (&sources); diff --git a/lily/main.cc b/lily/main.cc index 46dcf7e979..30f2c6c13b 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -125,7 +125,7 @@ static Getopt_long *option_parser = 0; static Long_option_init options_static[] = { {_i ("EXPR"), "evaluate", 'e', - _i ("set options, use -e '(ly:option-usage)' for help")}, + _i ("set option, use -e '(ly:option-usage)' for help")}, /* Bug in option parser: --output=foe is taken as an abbreviation for --output-format. */ {_i ("EXT"), "format", 'f', _i ("select back-end to use")}, @@ -154,7 +154,7 @@ dir_info (FILE *out) { fputs ("\n", out); fprintf (out, "LILYPOND_DATADIR=\"%s\"\n", LILYPOND_DATADIR); - fprintf (out, "LOCAL_LILYPOND_DATADIR=\%s\"\n", LOCAL_LILYPOND_DATADIR); + fprintf (out, "LOCAL_LILYPOND_DATADIR=\"\%s\"\n", LOCAL_LILYPOND_DATADIR); fprintf (out, "LOCALEDIR=\"%s\"\n", LOCALEDIR); char *lilypond_prefix = getenv ("LILYPONDPREFIX"); @@ -175,13 +175,13 @@ static void identify (FILE *out) { fputs (gnu_lilypond_version_string ().to_str0 (), out); + fputs ("\n", out); } static void notice () { identify (stdout); - printf ("\n"); printf (_f (NOTICE, PROGRAM_NAME).to_str0 ()); printf ("\n"); copyright (); @@ -191,7 +191,7 @@ static void usage () { /* No version number or newline here. It confuses help2man. */ - printf (_f ("Usage: %s [OPTIONS]... FILE...", PROGRAM_NAME).to_str0 ()); + printf (_f ("Usage: %s [OPTION]... FILE...", PROGRAM_NAME).to_str0 ()); printf ("\n\n"); printf (_ ("Typeset music and/or produce MIDI from FILE.").to_str0 ()); printf ("\n\n"); @@ -309,7 +309,6 @@ main_with_guile (void *, int, char **) ly_c_init_guile (); call_constructors (); - progress_indication ("\n"); determine_output_options (); all_fonts_global = new All_font_metrics (global_path.to_string ()); @@ -454,6 +453,7 @@ parse_argv (int argc, char **argv) if (help_b) { + identify (stdout); usage (); if (verbose_global_b) dir_info (stdout); @@ -464,9 +464,10 @@ parse_argv (int argc, char **argv) int main (int argc, char **argv) { - setup_localisation (); + setup_localisation (); setup_paths (); parse_argv (argc, argv); + identify (stderr); initialize_kpathsea (argv[0]); scm_boot_guile (argc, argv, main_with_guile, 0); diff --git a/lily/paper-book.cc b/lily/paper-book.cc index f7ead445a9..08367608b3 100644 --- a/lily/paper-book.cc +++ b/lily/paper-book.cc @@ -127,10 +127,10 @@ Paper_book::post_processing (SCM module, {make_ps, "convert-to-ps"}, {make_pdf, "convert-to-pdf"}, {make_png, "convert-to-png"}, - {0,0} + {0, 0}, }; - for (int i= 0; settings[i].func_name_; i++) + for (int i = 0; settings[i].func_name_; i++) { if (settings[i].do_it_) { @@ -139,7 +139,7 @@ Paper_book::post_processing (SCM module, { func = scm_variable_ref (func); if (ly_c_procedure_p (func)) - scm_call_2 (func, self_scm(), file_name); + scm_call_2 (func, self_scm (), file_name); } } } @@ -207,9 +207,8 @@ Paper_book::output (String outname) post_processing (mod, scm_makfrom0str (file_name.to_str0 ())); } - - progress_indication ("\n"); } + progress_indication ("\n"); } void diff --git a/lily/paper-outputter.cc b/lily/paper-outputter.cc index 43c6e842b9..0a28aa242e 100644 --- a/lily/paper-outputter.cc +++ b/lily/paper-outputter.cc @@ -115,6 +115,7 @@ get_paper_outputter (String outname, String f) { progress_indication (_f ("Layout output to `%s'...", outname == "-" ? String ("") : outname)); + progress_indication ("\n"); return new Paper_outputter (outname, f); } diff --git a/lily/performance.cc b/lily/performance.cc index 379e024793..65e091bf69 100644 --- a/lily/performance.cc +++ b/lily/performance.cc @@ -47,9 +47,9 @@ Performance::output (Midi_stream& midi_stream) midi_stream << Midi_header (1, tracks_i, clocks_per_4_i); output_header_track (midi_stream); progress_indication ("\n"); - progress_indication (_ ("Track ... ")); + progress_indication (_ ("Track...") + " "); int channel = 0; - for (int i =0; i < audio_staffs_.size (); i++) + for (int i = 0; i < audio_staffs_.size (); i++) { Audio_staff *s = audio_staffs_[i]; if (verbose_global_b) diff --git a/lily/quote-iterator.cc b/lily/quote-iterator.cc index 3b676a4cd5..2795b99cf8 100644 --- a/lily/quote-iterator.cc +++ b/lily/quote-iterator.cc @@ -24,6 +24,7 @@ public: Moment vector_moment (int idx) const; Moment start_moment_; + Moment stop_moment_; SCM event_vector_; int event_idx_; int end_idx_ ; @@ -111,15 +112,16 @@ Quote_iterator::construct_children () set_translator (get_outlet ()->get_default_interpreter ()); Moment now = get_outlet ()->now_mom (); - Moment stop = now + unsmob_duration (dur)->get_length (); + start_moment_ = now; + stop_moment_ = now + unsmob_duration (dur)->get_length (); event_vector_ = get_music ()->get_property ("quoted-events"); if (ly_c_vector_p (event_vector_)) { event_idx_ = binsearch_scm_vector (event_vector_, now.smobbed_copy (), &moment_less); - end_idx_ = binsearch_scm_vector (event_vector_, stop.smobbed_copy (), &moment_less); + end_idx_ = binsearch_scm_vector (event_vector_, stop_moment_.smobbed_copy (), &moment_less); } else { @@ -131,7 +133,10 @@ Quote_iterator::construct_children () bool Quote_iterator::ok () const { - return ly_c_vector_p (event_vector_) && (event_idx_ <= end_idx_); + return + ly_c_vector_p (event_vector_) + && (event_idx_ <= end_idx_) + && vector_moment (event_idx_).main_part_ < stop_moment_.main_part_; } Moment @@ -164,7 +169,9 @@ Quote_iterator::process (Moment m) event_idx_++; } - if (event_idx_ <= end_idx_) + if (event_idx_ <= end_idx_ + && vector_moment (event_idx_).main_part_ < stop_moment_.main_part_; + ) { SCM entry = SCM_VECTOR_REF (event_vector_, event_idx_); Pitch * quote_pitch = unsmob_pitch (scm_cdar (entry)); @@ -208,8 +215,8 @@ Quote_iterator::process (Moment m) mus->origin ()->warning (_f ("In quotation: junking event %s", mus->name ())); } } + event_idx_ ++; } - event_idx_ ++; } IMPLEMENT_CTOR_CALLBACK (Quote_iterator); diff --git a/scm/framework-tex.scm b/scm/framework-tex.scm index 20a04f5a16..a7ecaae996 100644 --- a/scm/framework-tex.scm +++ b/scm/framework-tex.scm @@ -288,17 +288,16 @@ (if (ly:get-option 'verbose) " " - " 2>&1 1>& /dev/null ") - ))) + " 2>&1 1>& /dev/null ")))) (if (ly:get-option 'verbose) (begin (newline (current-error-port)) - - (display (format #f (_ "Invoking ~S") cmd) (current-error-port)) + (format (current-error-port) (_ "Invoking ~S") cmd) (newline (current-error-port))) - (display (format #f "Converting to `~a.ps'...\n" base) (current-error-port)) - ) + (begin + (format (current-error-port) (_ "Converting to `~a.ps'...") base) + (newline (current-error-port)))) (system cmd))) (define-public (convert-to-dvi book name) @@ -313,16 +312,16 @@ "latex \\\\nonstopmode \\\\input " name (if (ly:get-option 'verbose) " " - " 2>&1 1>& /dev/null ") - - ))) + " 2>&1 1>& /dev/null ")))) (setenv "extra_mem_top" (number->string (max curr-extra-mem 1024000))) (if (ly:get-option 'verbose) (begin (newline (current-error-port)) - (display (format #f (_ "Invoking ~S") cmd) (current-error-port)) + (format (current-error-port) (_ "Invoking ~S") cmd) (newline (current-error-port))) - (format (current-error-port) "Converting to `~a.dvi'...\n" base)) + (begin + (format (current-error-port) (_ "Converting to `~a.dvi'...") base) + (newline (current-error-port)))) ;; fixme: set in environment? (if (ly:get-option 'safe) diff --git a/scm/lily.scm b/scm/lily.scm index 01de0a300a..82bbfaa384 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -563,29 +563,19 @@ possibly turned off." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-public (ly:system command) - (let* - ((status 0)) - + (let* ((status 0)) (if (ly:get-option 'verbose) - (display (format (_ "Invoking `~a'...\n") command) (current-error-port))) - + (format (current-error-port) (_ "Invoking `~a'...\n") command)) (set! status (system command)) - - (if (> status 0) - (display (format (_ "Error invoking `~a'. Return value ~a") - command status))) - )) + (format (current-error-port) (_ "Error invoking `~a'. Return value ~a") + command status)))) (define-public (postscript->pdf papersizename name) (let* ((cmd (string-append "ps2pdf -sPAPERSIZE=" papersizename " " name)) (output-name (regexp-substitute/global #f "\\.ps" name 'pre ".pdf" 'post))) - - (newline (current-error-port)) - (display (format (_ "Converting to `~a'...") output-name) - (current-error-port)) - + (format (current-error-port) (_ "Converting to `~a'...") output-name) (ly:system cmd))) (define-public (postscript->png resolution name) diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py index c08b25915a..ae8fe5134e 100644 --- a/scripts/lilypond-book.py +++ b/scripts/lilypond-book.py @@ -125,6 +125,7 @@ LAYOUT = 'layout' LINEWIDTH = 'linewidth' NOFRAGMENT = 'nofragment' NOINDENT = 'noindent' +NOQUOTE = 'noquote' NOTES = 'body' NOTIME = 'notime' OUTPUT = 'output' @@ -139,7 +140,8 @@ TEXIDOC = 'texidoc' TEXINFO = 'texinfo' VERBATIM = 'verbatim' -# NOTIME has no opposite so it isn't part of this dictionary +# NOTIME has no opposite so it isn't part of this dictionary. +# NOQUOTE is used internally only. no_options = { NOFRAGMENT: FRAGMENT, NOINDENT: INDENT, @@ -431,16 +433,13 @@ output = { %(str)s ''', + VERBATIM: r'''
 %(verb)s
''', }, ## LATEX: { - AFTER: '', - - BEFORE: '', - OUTPUT: r'''{%% \parindent 0pt \catcode`\@=12 @@ -482,10 +481,6 @@ output = { %(code)s @lilypond''', - AFTER: '', - - BEFORE: '', - OUTPUT: r'''@noindent @image{%(base)s,,,[image of music],%(ext)s}''', @@ -493,15 +488,16 @@ output = { ''', QUOTE: r'''@quotation -%(str)s -@end quotation +%(str)s@end quotation +''', + + NOQUOTE: r'''@format +%(str)s@end format ''', - # FIXME: @exampleindent 5 is the default... VERBATIM: r'''@exampleindent 0 @example %(verb)s@end example -@exampleindent 5 ''', }, } @@ -629,10 +625,28 @@ def compose_ly (code, options, type): # defaults relative = 1 override = {} - # FIXME: Where to get sane value for exampleindent? - # In texinfo.tex, its maximum value is 0.4in, so we use that. + # The concept of the `exampleindent' option is broken. It is not + # possible to get a sane value for @exampleindent at all without + # processing the document itself. Saying + # + # @exampleindent 0 + # @example + # ... + # @end example + # @exampleindent 5 + # + # causes ugly results with the DVI backend of texinfo since the + # default value for @exampleindent isn't 5em but 0.4in (or a smaller + # value). Executing the above code changes the environment + # indentation to an unknown value because we don't know the amount + # of 1em in advance since it is font-dependent. Modifying + # @exampleindent in the middle of a document is simply not + # supported within texinfo. + # + # To set @exampleindent locally to zero, we use the @format + # environment for non-quoted snippets. override[EXAMPLEINDENT] = r'0.4\in' - override[LINEWIDTH] = None + override[LINEWIDTH] = texinfo_linewidths['@smallbook'] override.update (default_ly_options) option_list = [] @@ -912,15 +926,13 @@ class Lilypond_snippet (Snippet): def output_info (self): str = self.output_print_filename (HTML) - str = output[TEXINFO][BEFORE] % vars () for image in self.get_images (): (base, ext) = os.path.splitext (image) - # URG, makeinfo implicitely prepends dot to ext + # URG, makeinfo implicitly prepends dot to ext # specifying no extension is most robust ext = '' str += output[TEXINFO][OUTPUT] % vars () - str += output[TEXINFO][AFTER] % vars () return str def output_latex (self): @@ -934,9 +946,7 @@ class Lilypond_snippet (Snippet): if QUOTE in self.options: str = output[LATEX][QUOTE] % vars () - str += (output[LATEX][BEFORE] - + (output[LATEX][OUTPUT] % vars ()) - + output[LATEX][AFTER]) + str += (output[LATEX][OUTPUT] % vars ()) return str def output_print_filename (self,format): @@ -963,6 +973,8 @@ class Lilypond_snippet (Snippet): if VERBATIM in self.options: verb = verbatim_texinfo (self.substring ('code')) str += (output[TEXINFO][VERBATIM] % vars ()) + if not QUOTE in self.options: + str = output[TEXINFO][NOQUOTE] % vars() str += ('@ifinfo\n' + self.output_info () + '\n@end ifinfo\n') str += ('@tex\n' + self.output_latex () + '\n@end tex\n') diff --git a/scripts/lilypond-latex.py b/scripts/lilypond-latex.py index 6819166da1..54f648aa9f 100644 --- a/scripts/lilypond-latex.py +++ b/scripts/lilypond-latex.py @@ -82,7 +82,7 @@ global _;_=ly._ global re;re = ly.re # lilylib globals -program_name = sys.argv[0] +program_name = os.path.split (sys.argv[0])[1] program_version = '@TOPLEVEL_VERSION@' # input without \book, use classic latex definitions classic_p = 0 diff --git a/stepmake/aclocal.m4 b/stepmake/aclocal.m4 index a91e4276c7..bf7f7f5b88 100644 --- a/stepmake/aclocal.m4 +++ b/stepmake/aclocal.m4 @@ -514,6 +514,20 @@ AC_DEFUN(STEPMAKE_GUILE_DEVEL, [ GUILE_PATCH_LEVEL=`expr $guile_version : '[0-9]*\.[0-9]*\.\([0-9]*\)'` changequote([, ])dnl STEPMAKE_GUILE_FLAGS + save_CPPFLAGS="$CPPFLAGS" + save_LIBS="$LIBS" + CPPFLAGS="$GUILE_CFLAGS $CPPFLAGS" + LIBS="$GUILE_LDFLAGS $LIBS" + AC_CHECK_HEADERS([libguile.h]) + AC_CHECK_LIB(guile, scm_boot_guile) + AC_CHECK_FUNCS(scm_boot_guile,,libguile_b=no) + if test "$libguile_b" = "no"; then + warn='libguile (libguile-dev, guile-devel or guile-dev + package).' + STEPMAKE_ADD_ENTRY(REQUIRED, $warn) + fi + CPPFLAGS="$save_CPPFLAGS" + LIBS="$save_LIBS" AC_DEFINE_UNQUOTED(GUILE_MAJOR_VERSION, $GUILE_MAJOR_VERSION) AC_DEFINE_UNQUOTED(GUILE_MINOR_VERSION, $GUILE_MINOR_VERSION) AC_DEFINE_UNQUOTED(GUILE_PATCH_LEVEL, $GUILE_PATCH_LEVEL) @@ -989,7 +1003,7 @@ AC_DEFUN(STEPMAKE_TEXMF_DIRS, [ AC_DEFUN(STEPMAKE_TEXMF, [ # urg, never know what names these teTeX guys will think up - STEPMAKE_PROGS(METAFONT, mf mfont, $1) + STEPMAKE_PROGS(METAFONT, mf-nowin mf mfw mfont, $1) STEPMAKE_PROGS(INIMETAFONT, inimf inimfont, $1) AC_MSG_CHECKING(for working metafont mode) diff --git a/tex/texinfo.tex b/tex/texinfo.tex index cf260906e1..47372211d5 100644 --- a/tex/texinfo.tex +++ b/tex/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2004-02-25.17} +\def\texinfoversion{2004-10-31.06} % % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software @@ -27,7 +27,7 @@ % As a special exception, when this file is read by TeX when processing % a Texinfo source document, you may use the result without % restriction. (This has been our intent since Texinfo was invented.) -% +% % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: % http://www.gnu.org/software/texinfo/ (the Texinfo home page), or @@ -55,7 +55,7 @@ % It is possible to adapt texinfo.tex for other languages, to some % extent. You can get the existing language-specific files from the % full Texinfo distribution. -% +% % The GNU Texinfo home page is http://www.gnu.org/software/texinfo. @@ -175,10 +175,12 @@ % Hyphenation fixes. \hyphenation{ - Flor-i-da Ghost-script Ghost-view Mac-OS ap-pen-dix bit-map bit-maps + Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script + ap-pen-dix bit-map bit-maps data-base data-bases eshell fall-ing half-way long-est man-u-script man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm - par-a-digms rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + spell-ing spell-ings stand-alone strong-est time-stamp time-stamps which-ever white-space wide-spread wrap-around } @@ -442,7 +444,7 @@ \def\finishparsearg#1 \ArgTerm{\expandafter\next\expandafter{#1}} % \parseargdef\foo{...} -% is roughly equivalent to +% is roughly equivalent to % \def\foo{\parsearg\Xfoo} % \def\Xfoo#1{...} % @@ -479,16 +481,16 @@ \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} % Define the framework for environments in texinfo.tex. It's used like this: -% +% % \envdef\foo{...} % \def\Efoo{...} -% +% % It's the responsibility of \envdef to insert \begingroup before the % actual body; @end closes the group after calling \Efoo. \envdef also % defines \thisenv, so the current environment is known; @end checks % whether the environment name matches. The \checkenv macro can also be % used to check whether the current environment is the one expected. -% +% % Non-false conditionals (@iftex, @ifset) don't fit into this, so they % are not treated as enviroments; they don't open a group. (The % implementation of @end takes care not to call \endgroup in this @@ -605,15 +607,15 @@ % The \TeX{} logo, as in plain, but resetting the spacing so that a % period following counts as ending a sentence. (Idea found in latex.) -% -\edef\TeX{\TeX \spacefactor=3000 } +% +\edef\TeX{\TeX \spacefactor=1000 } % @LaTeX{} logo. Not quite the same results as the definition in % latex.ltx, since we use a different font for the raised A; it's most % convenient for us to use an explicitly smaller font, rather than using % the \scriptstyle font (since we don't reset \scriptstyle and % \scriptscriptstyle). -% +% \def\LaTeX{% L\kern-.36em {\setbox0=\hbox{T}% @@ -1094,7 +1096,7 @@ where each line of input produces a line of output.} % @comma{} is so commas can be inserted into text without messing up % Texinfo's parsing. -% +% \let\comma = , % @refill is a no-op. @@ -1160,16 +1162,21 @@ where each line of input produces a line of output.} \newif\ifpdf \newif\ifpdfmakepagedest +% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 +% can be set). So we test for \relax and 0 as well as \undefined, +% borrowed from ifpdf.sty. \ifx\pdfoutput\undefined - \pdffalse - \let\pdfmkdest = \gobble - \let\pdfurl = \gobble - \let\endlink = \relax - \let\linkcolor = \relax - \let\pdfmakeoutlines = \relax \else - \pdftrue - \pdfoutput = 1 + \ifx\pdfoutput\relax + \else + \ifcase\pdfoutput + \else + \pdftrue + \fi + \fi +\fi +% +\ifpdf \input pdfcolor \pdfcatalog{/PageMode /UseOutlines}% \def\dopdfimage#1#2#3{% @@ -1214,7 +1221,7 @@ where each line of input produces a line of output.} % of subentries (or empty, for subsubsections). #3 is the node % text, which might be empty if this toc entry had no % corresponding node. #4 is the page number. - % + % \def\dopdfoutline#1#2#3#4{% % Generate a link to the node text if that exists; else, use the % page number. We could generate a destination for the section @@ -1234,21 +1241,21 @@ where each line of input produces a line of output.} % % Read toc silently, to get counts of subentries for \pdfoutline. \def\numchapentry##1##2##3##4{% - \def\thischapnum{##2}% - \let\thissecnum\empty - \let\thissubsecnum\empty + \def\thischapnum{##2}% + \let\thissecnum\empty + \let\thissubsecnum\empty }% \def\numsecentry##1##2##3##4{% - \advancenumber{chap\thischapnum}% - \def\thissecnum{##2}% - \let\thissubsecnum\empty + \advancenumber{chap\thischapnum}% + \def\thissecnum{##2}% + \let\thissubsecnum\empty }% \def\numsubsecentry##1##2##3##4{% - \advancenumber{sec\thissecnum}% - \def\thissubsecnum{##2}% + \advancenumber{sec\thissecnum}% + \def\thissubsecnum{##2}% }% \def\numsubsubsecentry##1##2##3##4{% - \advancenumber{subsec\thissubsecnum}% + \advancenumber{subsec\thissubsecnum}% }% \let\thischapnum\empty \let\thissecnum\empty @@ -1269,7 +1276,7 @@ where each line of input produces a line of output.} % Read toc second time, this time actually producing the outlines. % The `-' means take the \expnumber as the absolute number of % subentries, which we calculated on our first read of the .toc above. - % + % % We use the node names as the destinations. \def\numchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% @@ -1285,7 +1292,7 @@ where each line of input produces a line of output.} % since the encoding is unknown. For example, the eogonek from % Latin 2 (0xea) gets translated to a | character. Info from % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. - % + % % xx to do this right, we have to translate 8-bit characters to % their "best" equivalent, based on the @documentencoding. Right % now, I guess we'll just let the pdf reader have its way. @@ -1372,7 +1379,13 @@ where each line of input produces a line of output.} \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} \linkcolor #1\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} -\fi % \ifx\pdfoutput +\else + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\linkcolor = \relax + \let\pdfmakeoutlines = \relax +\fi % \ifx\pdfoutput \message{fonts,} @@ -1380,14 +1393,14 @@ where each line of input produces a line of output.} % Change the current font style to #1, remembering it in \curfontstyle. % For now, we do not accumulate font styles: @b{@i{foo}} prints foo in % italics, not bold italics. -% +% \def\setfontstyle#1{% \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. \csname ten#1\endcsname % change the current font } % Select #1 fonts with the current style. -% +% \def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} \def\rm{\fam=0 \setfontstyle{rm}} @@ -1583,13 +1596,13 @@ where each line of input produces a line of output.} % of just \STYLE. We do this because \STYLE needs to also set the % current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire % \tenSTYLE to set the current font. -% +% % Each font-changing command also sets the names \lsize (one size lower) % and \lllsize (three sizes lower). These relative commands are used in % the LaTeX logo and acronyms. -% +% % This all needs generalizing, badly. -% +% \def\textfonts{% \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc @@ -1702,6 +1715,7 @@ where each line of input produces a line of output.} \def\cite#1{{\sl #1}\futurelet\next\smartitalicx} \let\i=\smartitalic +\let\slanted=\smartslanted \let\var=\smartslanted \let\dfn=\smartslanted \let\emph=\smartitalic @@ -1838,8 +1852,8 @@ where each line of input produces a line of output.} \else{\tclose{\kbdfont\look}}\fi \else{\tclose{\kbdfont\look}}\fi} -% For @url, @env, @command quotes seem unnecessary, so use \code. -\let\url=\code +% For @indicateurl, @env, @command quotes seem unnecessary, so use \code. +\let\indicateurl=\code \let\env=\code \let\command=\code @@ -1871,6 +1885,10 @@ where each line of input produces a line of output.} \endlink \endgroup} +% @url synonym for @uref, since that's how everyone uses it. +% +\let\url=\uref + % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. % @@ -1912,6 +1930,10 @@ where each line of input produces a line of output.} \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font +% @acronym for "FBI", "NATO", and the like. +% We print this one point size smaller, since it's intended for +% all-uppercase. +% \def\acronym#1{\doacronym #1,,\finish} \def\doacronym#1,#2,#3\finish{% {\selectfonts\lsize #1}% @@ -1921,8 +1943,20 @@ where each line of input produces a line of output.} \fi } -% @pounds{} is a sterling sign, which is in the CM italic font. +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. % +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\frenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi +} + +% @pounds{} is a sterling sign, which Knuth put in the CM italic font. +% \def\pounds{{\it\$}} % @registeredsymbol - R in a circle. The font for the R should really @@ -1935,6 +1969,14 @@ where each line of input produces a line of output.} }$% } +% Laurent Siebenmann reports \Orb undefined with: +% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 +% so we'll define it if necessary. +% +\ifx\Orb\undefined +\def\Orb{\mathhexbox20D} +\fi + \message{page headings,} @@ -1970,7 +2012,7 @@ where each line of input produces a line of output.} \let\oldpage = \page \def\page{% \iffinishedtitlepage\else - \finishtitlepage + \finishtitlepage \fi \let\page = \oldpage \page @@ -1980,7 +2022,7 @@ where each line of input produces a line of output.} \def\Etitlepage{% \iffinishedtitlepage\else - \finishtitlepage + \finishtitlepage \fi % It is important to do the page break before ending the group, % because the headline and footline are only empty inside the group. @@ -2020,7 +2062,7 @@ where each line of input produces a line of output.} \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines - \let\tt=\authortt} + \let\tt=\authortt} \parseargdef\title{% \checkenv\titlepage @@ -2037,7 +2079,7 @@ where each line of input produces a line of output.} % @author should come last, but may come many times. % It can also be used inside @quotation. -% +% \parseargdef\author{% \def\temp{\quotation}% \ifx\thisenv\temp @@ -2240,17 +2282,13 @@ where each line of input produces a line of output.} % \parskip glue -- logically it's part of the @item we just started. \nobreak \vskip-\parskip % - % Stop a page break at the \parskip glue coming up. (Unfortunately - % we can't prevent a possible page break at the following - % \baselineskip glue.) However, if what follows is an environment - % such as @example, there will be no \parskip glue; then - % the negative vskip we just would cause the example and the item to - % crash together. So we use this bizarre value of 10001 as a signal - % to \aboveenvbreak to insert \parskip glue after all. - % (Possibly there are other commands that could be followed by - % @example which need the same treatment, but not section titles; or - % maybe section titles are the only special case and they should be - % penalty 10001...) + % Stop a page break at the \parskip glue coming up. However, if + % what follows is an environment such as @example, there will be no + % \parskip glue; then the negative vskip we just inserted would + % cause the example and the item to crash together. So we use this + % bizarre value of 10001 as a signal to \aboveenvbreak to insert + % \parskip glue after all. Section titles are handled this way also. + % \penalty 10001 \endgroup \itemxneedsnegativevskipfalse @@ -2276,15 +2314,26 @@ where each line of input produces a line of output.} % @table, @ftable, @vtable. \envdef\table{% \let\itemindex\gobble - \tablex + \tablecheck{table}% } \envdef\ftable{% \def\itemindex ##1{\doind {fn}{\code{##1}}}% - \tablex + \tablecheck{ftable}% } \envdef\vtable{% \def\itemindex ##1{\doind {vr}{\code{##1}}}% - \tablex + \tablecheck{vtable}% +} +\def\tablecheck#1{% + \ifnum \the\catcode`\^^M=\active + \endgroup + \errmessage{This command won't work in this context; perhaps the problem is + that we are \inenvironment\thisenv}% + \def\next{\doignore{#1}}% + \else + \let\next\tablex + \fi + \next } \def\tablex#1{% \def\itemindicate{#1}% @@ -2537,7 +2586,7 @@ where each line of input produces a line of output.} % #1 is the @columnfraction, usually a decimal number like .5, but might % be just 1. We just use it, whatever it is. -% +% \def\pickupwholefraction#1 {% \global\advance\colcount by 1 \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% @@ -2583,7 +2632,7 @@ where each line of input produces a line of output.} % A \tab used to include \hskip1sp. But then the space in a template % line is not enough. That is bad. So let's go back to just `&' until % we encounter the problem it was intended to solve again. -% --karl, nathan@acm.org, 20apr99. +% --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% % @multitable ... @end multitable definitions: @@ -2595,7 +2644,10 @@ where each line of input produces a line of output.} \startsavinginserts % % @item within a multitable starts a normal row. - \let\item\crcr + % We use \def instead of \let so that if one of the multitable entries + % contains an @itemize, we don't choke on the \item (seen as \crcr aka + % \endtemplate) expanding \doitemize. + \def\item{\crcr}% % \tolerance=9500 \hbadness=9500 @@ -2613,9 +2665,9 @@ where each line of input produces a line of output.} \checkinserts % Keeps underfull box messages off when table breaks over pages. %\filbreak - % Maybe so, but it also creates really weird page breaks when the - % table breaks over pages. Wouldn't \vfil be better? Wait until the - % problem manifests itself, so it can be fixed for real --karl. + % Maybe so, but it also creates really weird page breaks when the + % table breaks over pages. Wouldn't \vfil be better? Wait until the + % problem manifests itself, so it can be fixed for real --karl. }% }% % @@ -2651,14 +2703,14 @@ where each line of input produces a line of output.} % Make sure we don't inherit \rightskip from the outer environment. \rightskip=0pt \ifnum\colcount=1 - % The first column will be indented with the surrounding text. - \advance\hsize by\leftskip + % The first column will be indented with the surrounding text. + \advance\hsize by\leftskip \else - \ifsetpercent \else - % If user has not set preamble in terms of percent of \hsize - % we will advance \hsize by \multitablecolspace. - \advance\hsize by \multitablecolspace - \fi + \ifsetpercent \else + % If user has not set preamble in terms of percent of \hsize + % we will advance \hsize by \multitablecolspace. + \advance\hsize by \multitablecolspace + \fi % In either case we will make \leftskip=\multitablecolspace: \leftskip=\multitablecolspace \fi @@ -2680,19 +2732,17 @@ where each line of input produces a line of output.} \global\setpercentfalse } -\def\setmultitablespacing{% test to see if user has set \multitablelinespace. -% If so, do nothing. If not, give it an appropriate dimension based on -% current baselineskip. +\def\setmultitablespacing{% + \def\multistrut{\strut}% just use the standard line spacing + % + % Compute \multitablelinespace (if not defined by user) for use in + % \multitableparskip calculation. We used define \multistrut based on + % this, but (ironically) that caused the spacing to be off. + % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. \ifdim\multitablelinespace=0pt \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip \global\advance\multitablelinespace by-\ht0 -%% strut to put in table in case some entry doesn't have descenders, -%% to keep lines equally spaced -\let\multistrut = \strut -\else -%% FIXME: what is \box0 supposed to be? -\gdef\multistrut{\vrule height\multitablelinespace depth\dp0 -width0pt\relax} \fi +\fi %% Test to see if parskip is larger than space between lines of %% table. If not, do nothing. %% If so, set to same dimension as multitablelinespace. @@ -2761,14 +2811,14 @@ width0pt\relax} \fi \doignorecount = 0 % % Swallow text until we reach the matching `@end #1'. - \dodoignore {#1}% + \dodoignore{#1}% } { \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. \obeylines % % \gdef\dodoignore#1{% - % #1 contains the string `ifinfo'. + % #1 contains the command name as a string, e.g., `ifinfo'. % % Define a command to find the next `@end #1', which must be on a line % by itself. @@ -2786,22 +2836,22 @@ width0pt\relax} \fi \def\doignoreyyy#1{% \def\temp{#1}% - \ifx\temp\empty % Nothing found. + \ifx\temp\empty % Nothing found. \let\next\doignoretextzzz - \else % Found a nested condition, ... + \else % Found a nested condition, ... \advance\doignorecount by 1 - \let\next\doignoretextyyy % ..., look for another. + \let\next\doignoretextyyy % ..., look for another. % If we're here, #1 ends with ^^M\ifinfo (for example). \fi \next #1% the token \_STOP_ is present just after this macro. } % We have to swallow the remaining "\_STOP_". -% +% \def\doignoretextzzz#1{% - \ifnum\doignorecount = 0 % We have just found the outermost @end. + \ifnum\doignorecount = 0 % We have just found the outermost @end. \let\next\enddoignore - \else % Still inside a nested condition. + \else % Still inside a nested condition. \advance\doignorecount by -1 \let\next\doignoretext % Look for the next @end. \fi @@ -3037,6 +3087,7 @@ width0pt\relax} \fi \def\definedummyletter##1{% \expandafter\def\csname ##1\endcsname{\realbackslash ##1}% }% + \let\definedummyaccent\definedummyletter % % Do the redefinitions. \commondummies @@ -3059,6 +3110,7 @@ width0pt\relax} \fi \def\definedummyletter##1{% \expandafter\def\csname ##1\endcsname{@##1}% }% + \let\definedummyaccent\definedummyletter % % Do the redefinitions. \commondummies @@ -3107,6 +3159,7 @@ width0pt\relax} \fi % % Assorted special characters. \definedummyword{bullet}% + \definedummyword{comma}% \definedummyword{copyright}% \definedummyword{registeredsymbol}% \definedummyword{dots}% @@ -3139,18 +3192,18 @@ width0pt\relax} \fi \gdef\commondummiesnofonts{% % Control letters and accents. \definedummyletter{!}% - \definedummyletter{"}% - \definedummyletter{'}% + \definedummyaccent{"}% + \definedummyaccent{'}% \definedummyletter{*}% - \definedummyletter{,}% + \definedummyaccent{,}% \definedummyletter{.}% \definedummyletter{/}% \definedummyletter{:}% - \definedummyletter{=}% + \definedummyaccent{=}% \definedummyletter{?}% - \definedummyletter{^}% - \definedummyletter{`}% - \definedummyletter{~}% + \definedummyaccent{^}% + \definedummyaccent{`}% + \definedummyaccent{~}% \definedummyword{u}% \definedummyword{v}% \definedummyword{H}% @@ -3198,10 +3251,16 @@ width0pt\relax} \fi % would be for a given command (usually its argument). % \def\indexnofonts{% - \def\definedummyword##1{% + % Accent commands should become @asis. + \def\definedummyaccent##1{% \expandafter\let\csname ##1\endcsname\asis }% - \let\definedummyletter=\definedummyword + % We can just ignore other control letters. + \def\definedummyletter##1{% + \expandafter\def\csname ##1\endcsname{}% + }% + % Hopefully, all control words can become @asis. + \let\definedummyword\definedummyaccent % \commondummiesnofonts % @@ -3238,6 +3297,7 @@ width0pt\relax} \fi % Assorted special characters. % (The following {} will end up in the sort string, but that's ok.) \def\bullet{bullet}% + \def\comma{,}% \def\copyright{copyright}% \def\registeredsymbol{R}% \def\dots{...}% @@ -3250,6 +3310,9 @@ width0pt\relax} \fi \def\point{.}% \def\print{-|}% \def\result{=>}% + % + % Don't write macro names. + \emptyusermacros } \let\indexbackslash=0 %overridden during \printindex. @@ -3370,17 +3433,18 @@ width0pt\relax} \fi \dosubindwrite % \ifx\lastskipmacro\zeroskipmacro - % if \lastskip was zero, perhaps the last item was a - % penalty, and perhaps it was >=10000, e.g., a \nobreak. - % In that case, we want to re-insert the penalty; since we - % just inserted a non-discardable item, any following glue - % (such as a \parskip) would be a breakpoint. For example: + % If \lastskip was zero, perhaps the last item was a penalty, and + % perhaps it was >=10000, e.g., a \nobreak. In that case, we want + % to re-insert the same penalty (values >10000 are used for various + % signals); since we just inserted a non-discardable item, any + % following glue (such as a \parskip) would be a breakpoint. For example: + % % @deffn deffn-whatever % @vindex index-whatever % Description. % would allow a break between the index-whatever whatsit % and the "Description." paragraph. - \ifnum\count255>9999 \nobreak \fi + \ifnum\count255>9999 \penalty\count255 \fi \else % On the other hand, if we had a nonzero \lastskip, % this make-up glue would be preceded by a non-discardable item @@ -3478,7 +3542,10 @@ width0pt\relax} \fi \removelastskip % % We like breaks before the index initials, so insert a bonus. - \penalty -300 + \nobreak + \vskip 0pt plus 3\baselineskip + \penalty 0 + \vskip 0pt plus -3\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column @@ -3488,10 +3555,9 @@ width0pt\relax} \fi % No shrink because it confuses \balancecolumns. \vskip 1.67\baselineskip plus .5\baselineskip \leftline{\secbf #1}% - \vskip .33\baselineskip plus .1\baselineskip - % % Do our best not to break after the initial. \nobreak + \vskip .33\baselineskip plus .1\baselineskip }} % \entry typesets a paragraph consisting of the text (#1), dot leaders, and @@ -3499,11 +3565,11 @@ width0pt\relax} \fi % and table of contents entries. The paragraph is indented by \leftskip. % % A straightforward implementation would start like this: -% \def\entry#1#2{... +% \def\entry#1#2{... % But this frozes the catcodes in the argument, and can cause problems to % @code, which sets - active. This problem was fixed by a kludge--- % ``-'' was active throughout whole index, but this isn't really right. -% +% % The right solution is to prevent \entry from swallowing the whole text. % --kasal, 21nov03 \def\entry{% @@ -3574,10 +3640,10 @@ width0pt\relax} \fi % part of (the primitive) \par. Without it, a spurious underfull % \hbox ensues. \ifpdf - \pdfgettoks#1.% - \ \the\toksA + \pdfgettoks#1.% + \ \the\toksA \else - \ #1% + \ #1% \fi \fi \par @@ -3769,7 +3835,7 @@ width0pt\relax} \fi % We do the following ugly conditional instead of the above simple % construct for the sake of pdftex, which needs the actual % letter in the expansion, not just typeset. -% +% \def\appendixletter{% \ifnum\appendixno=`A A% \else\ifnum\appendixno=`B B% @@ -3861,7 +3927,7 @@ width0pt\relax} \fi \edef\chapheadtype{\headtype}% \else \if \headtype A\if \chapheadtype N% - \errmessage{@appendix... within a non-appendix chapter}% + \errmessage{@appendix... within a non-appendix chapter}% \fi\fi \fi % Check for numbered within unnumbered: @@ -3874,7 +3940,7 @@ width0pt\relax} \fi % Now print the heading: \if \headtype U% \ifcase\absseclevel - \unnumberedzzz{#3}% + \unnumberedzzz{#3}% \or \unnumberedseczzz{#3}% \or \unnumberedsubseczzz{#3}% \or \unnumberedsubsubseczzz{#3}% @@ -3882,14 +3948,14 @@ width0pt\relax} \fi \else \if \headtype A% \ifcase\absseclevel - \appendixzzz{#3}% + \appendixzzz{#3}% \or \appendixsectionzzz{#3}% \or \appendixsubseczzz{#3}% \or \appendixsubsubseczzz{#3}% \fi \else \ifcase\absseclevel - \chapterzzz{#3}% + \chapterzzz{#3}% \or \seczzz{#3}% \or \numberedsubseczzz{#3}% \or \numberedsubsubseczzz{#3}% @@ -3906,11 +3972,11 @@ width0pt\relax} \fi % @chapter, @appendix, @unnumbered. Increment top-level counter, reset % all lower-level sectioning counters to zero. -% +% % Also set \chaplevelprefix, which we prepend to @float sequence numbers % (e.g., figures), q.v. By default (before any chapter), that is empty. \let\chaplevelprefix = \empty -% +% \outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz#1{% % section resetting is \global in case the chapter is in a group, such @@ -3984,7 +4050,7 @@ width0pt\relax} \fi \outer\parseargdef\centerchap{% % Well, we could do the following in a group, but that would break % an assumption that \chapmacro is called at the outermost level. - % Thus we are safer this way: --kasal, 24feb04 + % Thus we are safer this way: --kasal, 24feb04 \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax @@ -4134,10 +4200,10 @@ width0pt\relax} \fi \CHAPPAGon % Chapter opening. -% +% % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. -% +% % To test against our argument. \def\Ynothingkeyword{Ynothing} \def\Yomitfromtockeyword{Yomitfromtoc} @@ -4213,7 +4279,7 @@ width0pt\relax} \fi % I don't think this chapter style is supported any more, so I'm not % updating it with the new noderef stuff. We'll see. --karl, 11aug03. -% +% \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} % \def\unnchfopen #1{% @@ -4237,7 +4303,7 @@ width0pt\relax} \fi % Section titles. These macros combine the section number parts and % call the generic \sectionheading to do the printing. -% +% \newskip\secheadingskip \def\secheadingbreak{\dobreak \secheadingskip{-1000}} @@ -4251,11 +4317,11 @@ width0pt\relax} \fi % Print any size, any type, section title. -% +% % #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the % section number. -% +% \def\sectionheading#1#2#3#4{% {% % Switch to the right set of fonts. @@ -4312,14 +4378,14 @@ width0pt\relax} \fi % glue accumulate. (Not a breakpoint because it's preceded by a % discardable item.) \vskip-\parskip - % - % This \nobreak is purely so the last item on the list is a \penalty - % of 10000. This is so other code, for instance \parsebodycommon, can - % check for and avoid allowing breakpoints. Otherwise, it would - % insert a valid breakpoint between: + % + % This is purely so the last item on the list is a known \penalty > + % 10000. This is so \startdefun can avoid allowing breakpoints after + % section headings. Otherwise, it would insert a valid breakpoint between: + % % @section sec-whatever % @deffn def-whatever - \nobreak + \penalty 10001 } @@ -4328,14 +4394,14 @@ width0pt\relax} \fi \newwrite\tocfile % Write an entry to the toc file, opening it if necessary. -% Called from @chapter, etc. -% +% Called from @chapter, etc. +% % Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} % We append the current node name (if any) and page number as additional % arguments for the \{chap,sec,...}entry macros which will eventually % read this. The node name is used in the pdf outlines as the % destination to jump to. -% +% % We open the .toc file for writing here instead of at @setfilename (or % any other fixed time) so that @contents can be anywhere in the document. % But if #1 is `omit', then we don't do anything. This is used for the @@ -4466,7 +4532,7 @@ width0pt\relax} \fi % But use \hss just in case. % (This space doesn't include the extra space that gets added after % the label; that gets put in by \shortchapentry above.) - % + % % We'd like to right-justify chapter numbers, but that looks strange % with appendix letters. And right-justifying numbers and % left-justifying letters looks strange when there is less than 10 @@ -4491,7 +4557,7 @@ width0pt\relax} \fi % Appendices, in the main contents. % Need the word Appendix, and a fixed-size box. -% +% \def\appendixbox#1{% % We use M since it's probably the widest letter. \setbox0 = \hbox{\putwordAppendix{} M}% @@ -4664,7 +4730,8 @@ width0pt\relax} \fi % start of the next paragraph will insert \parskip. % \def\aboveenvbreak{{% - % =10000 instead of <10000 because of a special case in \itemzzz, q.v. + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf @@ -4712,9 +4779,9 @@ width0pt\relax} \fi \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip \cartouter=\hsize - \advance\cartouter by 18.4pt % allow for 3pt kerns on either - % side, and for 6pt waste from - % each corner char, and rule thickness + \advance\cartouter by 18.4pt % allow for 3pt kerns on either + % side, and for 6pt waste from + % each corner char, and rule thickness \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. \let\nonarrowing=\comment @@ -4722,23 +4789,23 @@ width0pt\relax} \fi \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup - \hskip\lskip - \vrule\kern3pt - \vbox\bgroup - \kern3pt - \hsize=\cartinner - \baselineskip=\normbskip - \lineskip=\normlskip - \parskip=\normpskip - \vskip -\parskip - \comment % For explanation, see the end of \def\group. + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \kern3pt + \hsize=\cartinner + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip + \comment % For explanation, see the end of \def\group. } \def\Ecartouche{% \ifhmode\par\fi - \kern3pt - \egroup - \kern3pt\vrule - \hskip\rskip + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip \egroup \cartbot \egroup @@ -4868,7 +4935,7 @@ width0pt\relax} \fi % We have retained a nonzero parskip for the environment, since we're % doing normal filling. -% +% \def\Equotation{% \par \ifx\quotationauthor\undefined\else @@ -5025,8 +5092,7 @@ width0pt\relax} \fi } % @copying ... @end copying. -% Save the text away for @insertcopying later. Many commands won't be -% allowed in this context, but that's ok. +% Save the text away for @insertcopying later. % % We save the uninterpreted tokens, rather than creating a box. % Saving the text in a box would be much easier, but then all the @@ -5035,62 +5101,14 @@ width0pt\relax} \fi % file; b) letting users define the frontmatter in as flexible order as % possible is very desirable. % -\def\copying{\begingroup - % Define a command to swallow text until we reach `@end copying'. - % \ is the escape char in this texinfo.tex file, so it is the - % delimiter for the command; @ will be the escape char when we read - % it, but that doesn't matter. - \long\def\docopying##1\end copying{\gdef\copyingtext{##1}\enddocopying}% - % - % We must preserve ^^M's in the input file; see \insertcopying below. - \catcode`\^^M = \active - \docopying -} - -% What we do to finish off the copying text. -% -\def\enddocopying{\endgroup\ignorespaces} - -% @insertcopying. Here we must play games with ^^M's. On the one hand, -% we need them to delimit commands such as `@end quotation', so they -% must be active. On the other hand, we certainly don't want every -% end-of-line to be a \par, as would happen with the normal active -% definition of ^^M. On the third hand, two ^^M's in a row should still -% generate a \par. -% -% Our approach is to make ^^M insert a space and a penalty1 normally; -% then it can also check if \lastpenalty=1. If it does, then manually -% do \par. -% -% This messes up the normal definitions of @c[omment], so we redefine -% it. Similarly for @ignore. (These commands are used in the gcc -% manual for man page generation.) -% -% Seems pretty fragile, most line-oriented commands will presumably -% fail, but for the limited use of getting the copying text (which -% should be quite simple) inserted, we can hope it's ok. -% -{\catcode`\^^M=\active % -\gdef\insertcopying{\begingroup % - \parindent = 0pt % looks wrong on title page - \def^^M{% - \ifnum \lastpenalty=1 % - \par % - \else % - \space \penalty 1 % - \fi % - }% - % - % Fix @c[omment] for catcode 13 ^^M's. - \def\c##1^^M{\ignorespaces}% - \let\comment = \c % - % - % Don't bother jumping through all the hoops that \doignore does, it - % would be very hard since the catcodes are already set. - \long\def\ignore##1\end ignore{\ignorespaces}% - % - \copyingtext % -\endgroup}% +\def\copying{\checkenv{}\begingroup\scanargctxt\docopying} +\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +% +\def\insertcopying{% + \begingroup + \parindent = 0pt % paragraph indentation looks wrong on title page + \scanexp\copyingtext + \endgroup } \message{defuns,} @@ -5108,10 +5126,11 @@ width0pt\relax} \fi % If there are two @def commands in a row, we'll have a \nobreak, % which is there to keep the function description together with its % header. But if there's nothing but headers, we need to allow a - % break somewhere. Check for penalty 10002 (inserted by - % \defargscommonending) instead of 10000, since the sectioning - % commands insert a \penalty10000, and we don't want to allow a break - % between a section heading and a defun. + % break somewhere. Check specifically for penalty 10002, inserted + % by \defargscommonending, instead of 10000, since the sectioning + % commands also insert a nobreak penalty, and we don't want to allow + % a break between a section heading and a defun. + % \ifnum\lastpenalty=10002 \penalty2000 \fi % % Similarly, after a section heading, do not allow a break. @@ -5271,7 +5290,7 @@ width0pt\relax} \fi % #1 is the category, such as "Function". % #2 is the return type, if any. % #3 is the function name. -% +% % We are followed by (but not passed) the arguments, if any. % \def\defname#1#2#3{% @@ -5329,9 +5348,9 @@ width0pt\relax} \fi % tt for the name. This is because literal text is sometimes needed in % the argument list (groff manual), and ttsl and tt are not very % distinguishable. Prevent hyphenation at `-' chars. -% +% \def\defunargs#1{% - % use sl by default (not ttsl), + % use sl by default (not ttsl), % tt for the names. \df \sl \hyphenchar\font=0 % @@ -5435,7 +5454,7 @@ width0pt\relax} \fi \ifx\eTeXversion\undefined \newwrite\macscribble \def\scantokens#1{% - \toks0={#1\endinput}% + \toks0={#1}% \immediate\openout\macscribble=\jobname.tmp \immediate\write\macscribble{\the\toks0}% \immediate\closeout\macscribble @@ -5448,18 +5467,27 @@ width0pt\relax} \fi \newlinechar`\^^M \let\xeatspaces\eatspaces % Undo catcode changes of \startcontents and \doprintindex - \catcode`\@=0 \catcode`\\=\other \escapechar=`\@ + % When called from @insertcopying or (short)caption, we need active + % backslash to get it printed correctly. Previously, we had + % \catcode`\\=\other instead. We'll see whether a problem appears + % with macro expansion. --kasal, 19aug04 + \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ % ... and \example \spaceisspace % % Append \endinput to make sure that TeX does not see the ending newline. % % I've verified that it is necessary both for e-TeX and for ordinary TeX - % --kasal, 29nov03 + % --kasal, 29nov03 \scantokens{#1\endinput}% \endgroup } +\def\scanexp#1{% + \edef\temp{\noexpand\scanmacro{#1}}% + \temp +} + \newcount\paramno % Count of parameters \newtoks\macname % Macro name \newif\ifrecursive % Is it recursive? @@ -5467,13 +5495,15 @@ width0pt\relax} \fi % \do\macro1\do\macro2... % Utility routines. -% This does \let #1 = #2, except with \csnames. +% This does \let #1 = #2, with \csnames; that is, +% \let \csname#1\endcsname = \csname#2\endcsname +% (except of course we have to play expansion games). +% \def\cslet#1#2{% -\expandafter\expandafter -\expandafter\let -\expandafter\expandafter -\csname#1\endcsname -\csname#2\endcsname} + \expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname +} % Trim leading and trailing spaces off a string. % Concepts from aro-bend problem 15 (see CTAN). @@ -5500,30 +5530,36 @@ width0pt\relax} \fi % done by making ^^M (\endlinechar) catcode 12 when reading the macro % body, and then making it the \newlinechar in \scanmacro. -\def\macrobodyctxt{% - \catcode`\~=\other +\def\scanctxt{% + \catcode`\"=\other + \catcode`\+=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\@=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\+=\other + \catcode`\~=\other +} + +\def\scanargctxt{% + \scanctxt + \catcode`\\=\other + \catcode`\^^M=\other +} + +\def\macrobodyctxt{% + \scanctxt \catcode`\{=\other \catcode`\}=\other - \catcode`\@=\other \catcode`\^^M=\other - \usembodybackslash} + \usembodybackslash +} \def\macroargctxt{% - \catcode`\~=\other - \catcode`\^=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\+=\other - \catcode`\@=\other - \catcode`\\=\other} + \scanctxt + \catcode`\\=\other +} % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N @@ -5705,11 +5741,25 @@ width0pt\relax} \fi \expandafter\parsearg \fi \next} -% We mant to disable all macros during \shipout so that they are not +% We want to disable all macros during \shipout so that they are not % expanded by \write. \def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% \edef\next{\macrolist}\expandafter\endgroup\next} +% For \indexnofonts, we need to get rid of all macros, leaving only the +% arguments (if present). Of course this is not nearly correct, but it +% is the best we can do for now. makeinfo does not expand macros in the +% argument to @deffn, which ends up writing an index entry, and texindex +% isn't prepared for an index sort entry that starts with \. +% +% Since macro invocations are followed by braces, we can just redefine them +% to take a single TeX argument. The case of a macro invocation that +% goes to end-of-line is not handled. +% +\def\emptyusermacros{\begingroup + \def\do##1{\let\noexpand##1=\noexpand\asis}% + \edef\next{\macrolist}\expandafter\endgroup\next} + % @alias. % We need some trickery to remove the optional spaces around the equal @@ -5738,15 +5788,24 @@ width0pt\relax} \fi node \samp{\ignorespaces#1{}}} % @node's only job in TeX is to define \lastnode, which is used in -% cross-references. -\parseargdef\node{\checkenv{}\nodexxx #1,\finishnodeparse} -\def\nodexxx#1,#2\finishnodeparse{\gdef\lastnode{#1}} +% cross-references. The @node line might or might not have commas, and +% might or might not have spaces before the first comma, like: +% @node foo , bar , ... +% We don't want such trailing spaces in the node name. +% +\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} +% +% also remove a trailing comma, in case of something like this: +% @node Help-Cross, , , Cross-refs +\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} + \let\nwnode=\node \let\lastnode=\empty % Write a cross-reference definition for the current node. #1 is the % type (Ynumbered, Yappendix, Ynothing). -% +% \def\donoderef#1{% \ifx\lastnode\empty\else \setref{\lastnode}{#1}% @@ -5769,11 +5828,11 @@ width0pt\relax} \fi % 2) NAME-snt - section number and type, passed as the SNT arg, or % empty for anchors. % 3) NAME-pg - the page number. -% +% % This is called from \donoderef, \anchor, and \dofloat. In the case of % floats, there is an additional part, which is not written here: % 4) NAME-lof - the text as it should appear in a @listoffloats. -% +% \def\setref#1#2{% \pdfmkdest{#1}% \iflinks @@ -5782,8 +5841,8 @@ width0pt\relax} \fi \turnoffactive \otherbackslash \edef\writexrdef##1##2{% - \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef - ##1}{##2}}% these are parameters of \writexrdef + \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef + ##1}{##2}}% these are parameters of \writexrdef }% \toks0 = \expandafter{\thissection}% \immediate \writexrdef{title}{\the\toks0 }% @@ -5868,13 +5927,13 @@ width0pt\relax} \fi \fi % % if the user also gave the printed manual name (fifth arg), append - % "in MANUALNAME". + % "in MANUALNAME". \ifdim \wd1 > 0pt \space \putwordin{} \cite{\printedmanual}% \fi \else % node/anchor (non-float) references. - % + % % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not % insert empty discretionaries after hyphens, which means that it will % not find a line break at a hyphen in a node names. Since some manuals @@ -5985,7 +6044,7 @@ width0pt\relax} \fi % it was a float, and we have the (safe) float type in \iffloattype. \expandafter\let\expandafter\floatlist \csname floatlist\iffloattype\endcsname - % + % % Is this the first time we've seen this float type? \expandafter\ifx\floatlist\relax \toks0 = {\do}% yes, so just \do @@ -6001,7 +6060,7 @@ width0pt\relax} \fi } % Read the last existing aux file, if any. No error if none exists. -% +% \def\tryauxfile{% \openin 1 \jobname.aux \ifeof 1 \else @@ -6306,22 +6365,25 @@ width0pt\relax} \fi \endgroup} -% @float FLOATTYPE,LOC ... @end float for displayed figures, tables, etc. -% We don't actually implement floating yet, we just plop the float "here". -% But it seemed the best name for the future. -% -\envparseargdef\float{\dofloat #1,,,\finish} +% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, +% etc. We don't actually implement floating yet, we always include the +% float "here". But it seemed the best name for the future. +% +\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} + +% There may be a space before second and/or third parameter; delete it. +\def\eatcommaspace#1, {#1,} % #1 is the optional FLOATTYPE, the text label for this float, typically % "Figure", "Table", "Example", etc. Can't contain commas. If omitted, % this float will not be numbered and cannot be referred to. -% +% % #2 is the optional xref label. Also must be present for the float to % be referable. -% +% % #3 is the optional positioning argument; for now, it is ignored. It % will somehow specify the positions allowed to float to (here, top, bottom). -% +% % We keep a separate counter for each FLOATTYPE, which we reset at each % chapter-level command. \let\resetallfloatnos=\empty @@ -6331,6 +6393,10 @@ width0pt\relax} \fi \let\thisshortcaption=\empty % % don't lose footnotes inside @float. + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % \startsavinginserts % % We can't be used inside a paragraph. @@ -6357,7 +6423,7 @@ width0pt\relax} \fi \ifx\floatlabel\empty \else % We want each FLOATTYPE to be numbered separately (Figure 1, % Table 1, Figure 2, ...). (And if no label, no number.) - % + % \expandafter\getfloatno\csname\safefloattype floatno\endcsname \global\advance\floatno by 1 % @@ -6367,7 +6433,7 @@ width0pt\relax} \fi % labels (which have a completely different output format) from % node and anchor labels. And \xrdef uses it to construct the % lists of floats. - % + % \edef\thissection{\floatmagic=\safefloattype}% \setref{\floatlabel}{Yfloat}% }% @@ -6411,11 +6477,11 @@ width0pt\relax} \fi % \ifx\thiscaption\empty \else \ifx\floatident\empty \else - \appendtomacro\captionline{: }% had ident, so need a colon between + \appendtomacro\captionline{: }% had ident, so need a colon between \fi % % caption text. - \appendtomacro\captionline\thiscaption + \appendtomacro\captionline{\scanexp\thiscaption}% \fi % % If we have anything to print, print it, with space before. @@ -6423,6 +6489,9 @@ width0pt\relax} \fi \ifx\captionline\empty \else \vskip.5\parskip \captionline + % + % Space below caption. + \vskip\parskip \fi % % If have an xref label, write the list of floats info. Do this @@ -6433,37 +6502,44 @@ width0pt\relax} \fi % caption if specified, else the full caption if specified, else nothing. {% \atdummies \turnoffactive \otherbackslash - \immediate\write\auxfile{@xrdef{\floatlabel-lof}{% - \floatident - \ifx\thisshortcaption\empty - \ifx\thiscaption\empty \else : \thiscaption \fi - \else - : \thisshortcaption - \fi - }}% + % since we read the caption text in the macro world, where ^^M + % is turned into a normal character, we have to scan it back, so + % we don't write the literal three characters "^^M" into the aux file. + \scanexp{% + \xdef\noexpand\gtemp{% + \ifx\thisshortcaption\empty + \thiscaption + \else + \thisshortcaption + \fi + }% + }% + \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident + \ifx\gtemp\empty \else : \gtemp \fi}}% }% \fi - % - % Space below caption, if we printed anything. - \ifx\printedsomething\empty \else \vskip\parskip \fi \egroup % end of \vtop + % + % place the captured inserts + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % \checkinserts } % Append the tokens #2 to the definition of macro #1, not expanding either. -% -\newtoks\appendtomacroAtoks -\newtoks\appendtomacroBtoks +% \def\appendtomacro#1#2{% - \appendtomacroAtoks = \expandafter{#1}% - \appendtomacroBtoks = {#2}% - \edef#1{\the\appendtomacroAtoks \the\appendtomacroBtoks}% + \expandafter\def\expandafter#1\expandafter{#1#2}% } -% @caption, @shortcaption are easy. -% -\long\def\caption#1{\checkenv\float \def\thiscaption{#1}} -\def\shortcaption#1{\checkenv\float \def\thisshortcaption{#1}} +% @caption, @shortcaption +% +\def\caption{\docaption\thiscaption} +\def\shortcaption{\docaption\thisshortcaption} +\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} +\def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are % going to use. Create it if it doesn't exist and assign it to \floatno. @@ -6482,7 +6558,7 @@ width0pt\relax} \fi % \setref calls this to get the XREFLABEL-snt value. We want an @xref % to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we % first read the @float command. -% +% \def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% % Magic string used for the XREFLABEL-title value, so \xrefX can @@ -6492,12 +6568,12 @@ width0pt\relax} \fi % #1 is the control sequence we are passed; we expand into a conditional % which is true if #1 represents a float ref. That is, the magic % \thissection value which we \setref above. -% +% \def\iffloat#1{\expandafter\doiffloat#1==\finish} % % #1 is (maybe) the \floatmagic string. If so, #2 will be the % (safe) float type for this float. We set \iffloattype to #2. -% +% \def\doiffloat#1=#2=#3\finish{% \def\temp{#1}% \def\iffloattype{#2}% @@ -6505,7 +6581,7 @@ width0pt\relax} \fi } % @listoffloats FLOATTYPE - print a list of floats like a table of contents. -% +% \parseargdef\listoffloats{% \def\floattype{#1}% floattype {% @@ -6535,10 +6611,10 @@ width0pt\relax} \fi % xref label, in the form LABEL-title, which is how we save it in the % aux file. We strip off the -title and look up \XRLABEL-lof, which % has the text we're supposed to typeset here. -% +% % Figures without xref labels will not be included in the list (since % they won't appear in the aux file). -% +% \def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} \def\listoffloatsdoentry#1-title\finish{{% % Can't fully expand XR#1-lof because it can contain anything. Just